UI: Allow translating system info.

Fixes #10357.
This commit is contained in:
Unknown W. Brackets committed 2017-12-10 10:57:57 -08:00
1 parent 2031b2a4cd
commit c76f2ba310
1 file changed
+56 -59
+56 -59
View File
@@ -337,6 +337,8 @@ void SystemInfoScreen::CreateViews() {
// NOTE: Do not translate this section. It will change a lot and will be impossible to keep up.
I18NCategory *di = GetI18NCategory("Dialog");
I18NCategory *si = GetI18NCategory("SysInfo");
I18NCategory *gr = GetI18NCategory("Graphics");
root_ = new AnchorLayout(new LayoutParams(FILL_PARENT, FILL_PARENT));
ViewGroup *leftColumn = new AnchorLayout(new LinearLayoutParams(1.0f));
@@ -353,81 +355,82 @@ void SystemInfoScreen::CreateViews() {
LinearLayout *deviceSpecs = new LinearLayout(ORIENT_VERTICAL);
deviceSpecs->SetSpacing(0);
deviceSpecsScroll->Add(deviceSpecs);
tabHolder->AddTab("Device Info", deviceSpecsScroll);
tabHolder->AddTab(si->T("Device Info"), deviceSpecsScroll);
deviceSpecs->Add(new ItemHeader("System Information"));
deviceSpecs->Add(new InfoItem("Name", System_GetProperty(SYSPROP_NAME)));
deviceSpecs->Add(new InfoItem("Lang/Region", System_GetProperty(SYSPROP_LANGREGION)));
deviceSpecs->Add(new ItemHeader(si->T("System Information")));
deviceSpecs->Add(new InfoItem(si->T("System Name", "Name"), System_GetProperty(SYSPROP_NAME)));
deviceSpecs->Add(new InfoItem(si->T("Lang/Region"), System_GetProperty(SYSPROP_LANGREGION)));
std::string board = System_GetProperty(SYSPROP_BOARDNAME);
if (!board.empty())
deviceSpecs->Add(new InfoItem("Board", board));
deviceSpecs->Add(new InfoItem("ABI", GetCompilerABI()));
deviceSpecs->Add(new InfoItem(si->T("Board"), board));
deviceSpecs->Add(new InfoItem(si->T("ABI"), GetCompilerABI()));
#ifdef _WIN32
if (IsDebuggerPresent()) {
deviceSpecs->Add(new InfoItem("Debugger Present", "Yes"));
deviceSpecs->Add(new InfoItem(si->T("Debugger Present"), si->T("Yes")));
}
#endif
deviceSpecs->Add(new ItemHeader("CPU Information"));
deviceSpecs->Add(new InfoItem("Name", cpu_info.brand_string));
deviceSpecs->Add(new ItemHeader(si->T("CPU Information")));
deviceSpecs->Add(new InfoItem(si->T("CPU Name", "Name"), cpu_info.brand_string));
#if defined(ARM) || defined(ARM64) || defined(MIPS)
deviceSpecs->Add(new InfoItem("Cores", StringFromInt(cpu_info.num_cores)));
deviceSpecs->Add(new InfoItem(si->T("Cores"), StringFromInt(cpu_info.num_cores)));
#else
int totalThreads = cpu_info.num_cores * cpu_info.logical_cpu_count;
std::string cores = StringFromFormat("%d (%d per core, %d cores)", totalThreads, cpu_info.logical_cpu_count, cpu_info.num_cores);
deviceSpecs->Add(new InfoItem("Threads", cores));
std::string cores = StringFromFormat(si->T("%d (%d per core, %d cores)"), totalThreads, cpu_info.logical_cpu_count, cpu_info.num_cores);
deviceSpecs->Add(new InfoItem(si->T("Threads"), cores));
#endif
deviceSpecs->Add(new ItemHeader("GPU Information"));
deviceSpecs->Add(new ItemHeader(si->T("GPU Information")));
DrawContext *draw = screenManager()->getDrawContext();
deviceSpecs->Add(new InfoItem("3D API", std::string(draw->GetInfoString(InfoField::APINAME))));
deviceSpecs->Add(new InfoItem("Vendor", std::string(draw->GetInfoString(InfoField::VENDORSTRING))));
const char *apiName = gr->T(screenManager()->getDrawContext()->GetInfoString(InfoField::APINAME));
deviceSpecs->Add(new InfoItem(si->T("3D API"), apiName));
deviceSpecs->Add(new InfoItem(si->T("Vendor"), draw->GetInfoString(InfoField::VENDORSTRING)));
std::string vendor = draw->GetInfoString(InfoField::VENDOR);
if (vendor.size())
deviceSpecs->Add(new InfoItem("Vendor (detected)", vendor));
deviceSpecs->Add(new InfoItem("Driver Version", draw->GetInfoString(InfoField::DRIVER)));
deviceSpecs->Add(new InfoItem(si->T("Vendor (detected)"), vendor));
deviceSpecs->Add(new InfoItem(si->T("Driver Version"), draw->GetInfoString(InfoField::DRIVER)));
#ifdef _WIN32
if (g_Config.iGPUBackend != GPU_BACKEND_VULKAN)
deviceSpecs->Add(new InfoItem("Driver Version", System_GetProperty(SYSPROP_GPUDRIVER_VERSION)));
deviceSpecs->Add(new InfoItem(si->T("Driver Version"), System_GetProperty(SYSPROP_GPUDRIVER_VERSION)));
#if !PPSSPP_PLATFORM(UWP)
if (GetGPUBackend() == GPUBackend::DIRECT3D9) {
deviceSpecs->Add(new InfoItem("D3DX Version", StringFromFormat("%d", GetD3DXVersion())));
deviceSpecs->Add(new InfoItem(si->T("D3DX Version"), StringFromFormat("%d", GetD3DXVersion())));
}
#endif
#endif
if (g_Config.iGPUBackend == GPU_BACKEND_OPENGL) {
deviceSpecs->Add(new InfoItem("Core Context", gl_extensions.IsCoreContext ? "Yes" : "No"));
deviceSpecs->Add(new InfoItem(si->T("Core Context"), gl_extensions.IsCoreContext ? si->T("Yes") : si->T("No")));
}
deviceSpecs->Add(new ItemHeader("OS Information"));
deviceSpecs->Add(new InfoItem("Memory Page Size", StringFromFormat("%d bytes", GetMemoryProtectPageSize())));
deviceSpecs->Add(new InfoItem("RW/RX exclusive: ", PlatformIsWXExclusive() ? "Yes" : "No"));
deviceSpecs->Add(new ItemHeader(si->T("OS Information")));
deviceSpecs->Add(new InfoItem(si->T("Memory Page Size"), StringFromFormat(si->T("%d bytes"), GetMemoryProtectPageSize())));
deviceSpecs->Add(new InfoItem(si->T("RW/RX exclusive"), PlatformIsWXExclusive() ? si->T("Yes") : si->T("No")));
#ifdef ANDROID
deviceSpecs->Add(new InfoItem("Sustained perf mode: ", System_GetPropertyBool(SYSPROP_SUPPORTS_SUSTAINED_PERF_MODE) ? "Yes" : "No"));
deviceSpecs->Add(new InfoItem(si->T("Sustained perf mode"), System_GetPropertyBool(SYSPROP_SUPPORTS_SUSTAINED_PERF_MODE) ? si->T("Yes") : si->T("No")));
#endif
const char *build = "Release";
const char *build = si->T("Release");
#ifdef _DEBUG
build = "Debug";
build = si->T("Debug");
#endif
deviceSpecs->Add(new InfoItem("PPSSPP build: ", build));
deviceSpecs->Add(new InfoItem(si->T("PPSSPP build"), build));
#ifdef __ANDROID__
deviceSpecs->Add(new ItemHeader("Audio Information"));
deviceSpecs->Add(new InfoItem("Sample rate", StringFromFormat("%d Hz", System_GetPropertyInt(SYSPROP_AUDIO_SAMPLE_RATE))));
deviceSpecs->Add(new InfoItem("Frames per buffer", StringFromFormat("%d", System_GetPropertyInt(SYSPROP_AUDIO_FRAMES_PER_BUFFER))));
deviceSpecs->Add(new InfoItem("Optimal sample rate", StringFromFormat("%d Hz", System_GetPropertyInt(SYSPROP_AUDIO_OPTIMAL_SAMPLE_RATE))));
deviceSpecs->Add(new InfoItem("Optimal frames per buffer", StringFromFormat("%d", System_GetPropertyInt(SYSPROP_AUDIO_OPTIMAL_FRAMES_PER_BUFFER))));
deviceSpecs->Add(new ItemHeader(si->T("Audio Information")));
deviceSpecs->Add(new InfoItem(si->T("Sample rate"), StringFromFormat("%d Hz", System_GetPropertyInt(SYSPROP_AUDIO_SAMPLE_RATE))));
deviceSpecs->Add(new InfoItem(si->T("Frames per buffer"), StringFromFormat("%d", System_GetPropertyInt(SYSPROP_AUDIO_FRAMES_PER_BUFFER))));
deviceSpecs->Add(new InfoItem(si->T("Optimal sample rate"), StringFromFormat("%d Hz", System_GetPropertyInt(SYSPROP_AUDIO_OPTIMAL_SAMPLE_RATE))));
deviceSpecs->Add(new InfoItem(si->T("Optimal frames per buffer"), StringFromFormat("%d", System_GetPropertyInt(SYSPROP_AUDIO_OPTIMAL_FRAMES_PER_BUFFER))));
deviceSpecs->Add(new ItemHeader("Display Information"));
deviceSpecs->Add(new InfoItem("Native Resolution", StringFromFormat("%dx%d",
deviceSpecs->Add(new ItemHeader(si->T("Display Information")));
deviceSpecs->Add(new InfoItem(si->T("Native Resolution"), StringFromFormat("%dx%d",
System_GetPropertyInt(SYSPROP_DISPLAY_XRES),
System_GetPropertyInt(SYSPROP_DISPLAY_YRES))));
deviceSpecs->Add(new InfoItem("Refresh rate", StringFromFormat("%0.3f Hz", (float)System_GetPropertyInt(SYSPROP_DISPLAY_REFRESH_RATE) / 1000.0f)));
deviceSpecs->Add(new InfoItem(si->T("Refresh rate"), StringFromFormat("%0.3f Hz", (float)System_GetPropertyInt(SYSPROP_DISPLAY_REFRESH_RATE) / 1000.0f)));
#endif
deviceSpecs->Add(new ItemHeader("Version Information"));
deviceSpecs->Add(new ItemHeader(si->T("Version Information")));
std::string apiVersion;
if (GetGPUBackend() == GPUBackend::OPENGL) {
if (gl_extensions.IsGLES) {
@@ -440,33 +443,27 @@ void SystemInfoScreen::CreateViews() {
if (apiVersion.size() > 30)
apiVersion.resize(30);
}
deviceSpecs->Add(new InfoItem("API Version", apiVersion));
deviceSpecs->Add(new InfoItem("Shading Language", draw->GetInfoString(InfoField::SHADELANGVERSION)));
deviceSpecs->Add(new InfoItem(si->T("API Version"), apiVersion));
deviceSpecs->Add(new InfoItem(si->T("Shading Language"), draw->GetInfoString(InfoField::SHADELANGVERSION)));
#ifdef __ANDROID__
std::string moga = System_GetProperty(SYSPROP_MOGA_VERSION);
if (moga.empty()) {
moga = "(none detected)";
moga = si->T("(none detected)");
}
deviceSpecs->Add(new InfoItem("Moga", moga));
#endif
#ifdef __ANDROID__
char temp[256];
sprintf(temp, "%dx%d", System_GetPropertyInt(SYSPROP_DISPLAY_XRES), System_GetPropertyInt(SYSPROP_DISPLAY_YRES));
deviceSpecs->Add(new InfoItem("Display resolution", temp));
#endif
ViewGroup *buildConfigScroll = new ScrollView(ORIENT_VERTICAL, new LinearLayoutParams(FILL_PARENT, FILL_PARENT));
buildConfigScroll->SetTag("DevSystemInfoBuildConfig");
LinearLayout *buildConfig = new LinearLayout(ORIENT_VERTICAL);
buildConfig->SetSpacing(0);
buildConfigScroll->Add(buildConfig);
tabHolder->AddTab("Build Config", buildConfigScroll);
tabHolder->AddTab(si->T("Build Config"), buildConfigScroll);
buildConfig->Add(new ItemHeader("Build Configuration"));
buildConfig->Add(new ItemHeader(si->T("Build Configuration")));
#ifdef JENKINS
buildConfig->Add(new InfoItem("Built by", "Jenkins"));
buildConfig->Add(new InfoItem(si->T("Built by"), "Jenkins"));
#endif
#ifdef _DEBUG
buildConfig->Add(new InfoItem("_DEBUG", ""));
@@ -489,9 +486,9 @@ void SystemInfoScreen::CreateViews() {
cpuExtensions->SetSpacing(0);
cpuExtensionsScroll->Add(cpuExtensions);
tabHolder->AddTab("CPU Extensions", cpuExtensionsScroll);
tabHolder->AddTab(si->T("CPU Extensions"), cpuExtensionsScroll);
cpuExtensions->Add(new ItemHeader("CPU Extensions"));
cpuExtensions->Add(new ItemHeader(si->T("CPU Extensions")));
std::vector<std::string> exts;
SplitString(cpu_info.Summarize(), ',', exts);
for (size_t i = 2; i < exts.size(); i++) {
@@ -505,14 +502,14 @@ void SystemInfoScreen::CreateViews() {
gpuExtensionsScroll->Add(gpuExtensions);
if (g_Config.iGPUBackend == GPU_BACKEND_OPENGL) {
tabHolder->AddTab("OGL Extensions", gpuExtensionsScroll);
tabHolder->AddTab(si->T("OGL Extensions"), gpuExtensionsScroll);
if (!gl_extensions.IsGLES) {
gpuExtensions->Add(new ItemHeader("OpenGL Extensions"));
gpuExtensions->Add(new ItemHeader(si->T("OpenGL Extensions")));
} else if (gl_extensions.GLES3) {
gpuExtensions->Add(new ItemHeader("OpenGL ES 3.0 Extensions"));
gpuExtensions->Add(new ItemHeader(si->T("OpenGL ES 3.0 Extensions")));
} else {
gpuExtensions->Add(new ItemHeader("OpenGL ES 2.0 Extensions"));
gpuExtensions->Add(new ItemHeader(si->T("OpenGL ES 2.0 Extensions")));
}
exts.clear();
SplitString(g_all_gl_extensions, ' ', exts);
@@ -533,23 +530,23 @@ void SystemInfoScreen::CreateViews() {
eglExtensions->SetSpacing(0);
eglExtensionsScroll->Add(eglExtensions);
tabHolder->AddTab("EGL Extensions", eglExtensionsScroll);
tabHolder->AddTab(si->T("EGL Extensions"), eglExtensionsScroll);
eglExtensions->Add(new ItemHeader("EGL Extensions"));
eglExtensions->Add(new ItemHeader(si->T("EGL Extensions")));
for (size_t i = 0; i < exts.size(); i++) {
eglExtensions->Add(new TextView(exts[i]))->SetFocusable(true);
}
}
} else if (g_Config.iGPUBackend == GPU_BACKEND_VULKAN) {
tabHolder->AddTab("Vulkan Features", gpuExtensionsScroll);
tabHolder->AddTab(si->T("Vulkan Features"), gpuExtensionsScroll);
gpuExtensions->Add(new ItemHeader("Vulkan Features"));
gpuExtensions->Add(new ItemHeader(si->T("Vulkan Features")));
std::vector<std::string> features = draw->GetFeatureList();
for (auto &feature : features) {
gpuExtensions->Add(new TextView(feature))->SetFocusable(true);
}
gpuExtensions->Add(new ItemHeader("Vulkan Extensions"));
gpuExtensions->Add(new ItemHeader(si->T("Vulkan Extensions")));
std::vector<std::string> extensions = draw->GetExtensionList();
for (auto &extension : extensions) {
gpuExtensions->Add(new TextView(extension))->SetFocusable(true);