diff --git a/UI/DevScreens.cpp b/UI/DevScreens.cpp index bf007ce07f..b2ca44ea29 100644 --- a/UI/DevScreens.cpp +++ b/UI/DevScreens.cpp @@ -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 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 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 extensions = draw->GetExtensionList(); for (auto &extension : extensions) { gpuExtensions->Add(new TextView(extension))->SetFocusable(true);