From de4dc62846ab958834a5d6bc2f63fd2eb36d522b Mon Sep 17 00:00:00 2001 From: Prcuvu Date: Sat, 8 Feb 2020 15:46:00 +0800 Subject: [PATCH 1/4] Split Chinese language into Simplified script and Traditional script ArchHooks function modified for Windows. --- Themes/_fallback/Languages/de.ini | 3 ++- Themes/_fallback/Languages/en.ini | 3 ++- Themes/_fallback/Languages/es.ini | 3 ++- Themes/_fallback/Languages/fr.ini | 3 ++- Themes/_fallback/Languages/ja.ini | 3 ++- Themes/_fallback/Languages/nl.ini | 3 ++- Themes/_fallback/Languages/pl.ini | 3 ++- Themes/_fallback/Languages/{zh.ini => zh-Hant.ini} | 3 ++- Themes/legacy/Languages/{zh.ini => zh-Hant.ini} | 0 src/RageUtil.cpp | 4 ++-- src/arch/ArchHooks/ArchHooks_Win32Static.cpp | 14 +++++++++++++- 11 files changed, 31 insertions(+), 11 deletions(-) rename Themes/_fallback/Languages/{zh.ini => zh-Hant.ini} (99%) rename Themes/legacy/Languages/{zh.ini => zh-Hant.ini} (100%) diff --git a/Themes/_fallback/Languages/de.ini b/Themes/_fallback/Languages/de.ini index ce7a5c844a..49e39ae524 100644 --- a/Themes/_fallback/Languages/de.ini +++ b/Themes/_fallback/Languages/de.ini @@ -2594,7 +2594,8 @@ Wolof=Wolof Xhosa=isiXhosa Yiddish=Yiddish Yoruba=Yorùbá -Chinese=中文 +Chinese (Simplified)=简体中文 +Chinese (Traditional)=繁體中文 Zulu=isiZulu [ScreenPlayerOptions] diff --git a/Themes/_fallback/Languages/en.ini b/Themes/_fallback/Languages/en.ini index d9fec0ab49..28e05ce007 100644 --- a/Themes/_fallback/Languages/en.ini +++ b/Themes/_fallback/Languages/en.ini @@ -2645,7 +2645,8 @@ Wolof=Wolof Xhosa=isiXhosa Yiddish=Yiddish Yoruba=Yorùbá -Chinese=中文 +Chinese (Simplified)=简体中文 +Chinese (Traditional)=繁體中文 Zulu=isiZulu [ScreenPlayerOptions] diff --git a/Themes/_fallback/Languages/es.ini b/Themes/_fallback/Languages/es.ini index d48a6102c9..21d79f6e72 100644 --- a/Themes/_fallback/Languages/es.ini +++ b/Themes/_fallback/Languages/es.ini @@ -2564,7 +2564,8 @@ Wolof=Wolof Xhosa=isiXhosa Yiddish=Yiddish Yoruba=Yorùbá -Chinese=中文 +Chinese (Simplified)=简体中文 +Chinese (Traditional)=繁體中文 Zulu=isiZulu [ScreenPlayerOptions] diff --git a/Themes/_fallback/Languages/fr.ini b/Themes/_fallback/Languages/fr.ini index 36d2830bf4..8f293d688d 100644 --- a/Themes/_fallback/Languages/fr.ini +++ b/Themes/_fallback/Languages/fr.ini @@ -2576,7 +2576,8 @@ Wolof=Wolof Xhosa=isiXhosa Yiddish=Yiddish Yoruba=Yorùbá -Chinese=中文 +Chinese (Simplified)=简体中文 +Chinese (Traditional)=繁體中文 Zulu=isiZulu [ScreenPlayerOptions] diff --git a/Themes/_fallback/Languages/ja.ini b/Themes/_fallback/Languages/ja.ini index 8bbd65d2bf..88dfad34be 100644 --- a/Themes/_fallback/Languages/ja.ini +++ b/Themes/_fallback/Languages/ja.ini @@ -2785,7 +2785,8 @@ Wolof=Wolof Xhosa=isiXhosa Yiddish=Yiddish Yoruba=Yorùbá -Chinese=中文 +Chinese (Simplified)=简体中文 +Chinese (Traditional)=繁體中文 Zulu=isiZulu diff --git a/Themes/_fallback/Languages/nl.ini b/Themes/_fallback/Languages/nl.ini index 7165044ed0..25f3c078a2 100644 --- a/Themes/_fallback/Languages/nl.ini +++ b/Themes/_fallback/Languages/nl.ini @@ -2576,7 +2576,8 @@ Wolof=Wolof Xhosa=isiXhosa Yiddish=Yiddish Yoruba=Yorùbá -Chinese=中文 +Chinese (Simplified)=简体中文 +Chinese (Traditional)=繁體中文 Zulu=isiZulu [ScreenPlayerOptions] diff --git a/Themes/_fallback/Languages/pl.ini b/Themes/_fallback/Languages/pl.ini index 0a920f6b57..0903860618 100644 --- a/Themes/_fallback/Languages/pl.ini +++ b/Themes/_fallback/Languages/pl.ini @@ -2551,7 +2551,8 @@ Wolof=Wolof Xhosa=isiXhosa Yiddish=Yiddish Yoruba=Yorùbá -Chinese=中文 +Chinese (Simplified)=简体中文 +Chinese (Traditional)=繁體中文 Zulu=isiZulu [ScreenPlayerOptions] diff --git a/Themes/_fallback/Languages/zh.ini b/Themes/_fallback/Languages/zh-Hant.ini similarity index 99% rename from Themes/_fallback/Languages/zh.ini rename to Themes/_fallback/Languages/zh-Hant.ini index 92ac6f2d91..3e2b83195d 100644 --- a/Themes/_fallback/Languages/zh.ini +++ b/Themes/_fallback/Languages/zh-Hant.ini @@ -2622,7 +2622,8 @@ Wolof=Wolof Xhosa=isiXhosa Yiddish=Yiddish Yoruba=Yorùbá -Chinese=中文 +Chinese (Simplified)=简体中文 +Chinese (Traditional)=繁體中文 Zulu=isiZulu [ScreenPlayerOptions] diff --git a/Themes/legacy/Languages/zh.ini b/Themes/legacy/Languages/zh-Hant.ini similarity index 100% rename from Themes/legacy/Languages/zh.ini rename to Themes/legacy/Languages/zh-Hant.ini diff --git a/src/RageUtil.cpp b/src/RageUtil.cpp index a882ba962c..24f41b32f0 100644 --- a/src/RageUtil.cpp +++ b/src/RageUtil.cpp @@ -547,7 +547,6 @@ RString ConvertI64FormatString( const RString &sStr ) { return sStr; } #endif /* ISO-639-1 codes: http://www.loc.gov/standards/iso639-2/php/code_list.php - * native forms: http://people.w3.org/rishida/names/languages.html * We don't use 3-letter codes, so we don't bother supporting them. */ static const LanguageInfo g_langs[] = { @@ -688,7 +687,8 @@ static const LanguageInfo g_langs[] = {"xh", "Xhosa"}, {"yi", "Yiddish"}, {"yo", "Yoruba"}, - {"zh", "Chinese"}, + {"zh-Hans", "Chinese (Simplified)"}, + {"zh-Hant", "Chinese (Traditional)"}, {"zu", "Zulu"}, }; diff --git a/src/arch/ArchHooks/ArchHooks_Win32Static.cpp b/src/arch/ArchHooks/ArchHooks_Win32Static.cpp index 9e6ce39a6a..369e93d6a6 100644 --- a/src/arch/ArchHooks/ArchHooks_Win32Static.cpp +++ b/src/arch/ArchHooks/ArchHooks_Win32Static.cpp @@ -98,7 +98,19 @@ static RString LangIdToString( LANGID l ) case LANG_ARABIC: return "ar"; case LANG_BULGARIAN: return "bg"; case LANG_CATALAN: return "ca"; - case LANG_CHINESE: return "zh"; + case LANG_CHINESE: + { + switch (SUBLANGID(l)) + { + case SUBLANG_CHINESE_TRADITIONAL: + case SUBLANG_CHINESE_HONGKONG: + case SUBLANG_CHINESE_MACAU: + return "zh-Hant"; + case SUBLANG_CHINESE_SIMPLIFIED: + case SUBLANG_CHINESE_SINGAPORE: + return "zh-Hans"; + } + } case LANG_CZECH: return "cs"; case LANG_DANISH: return "da"; case LANG_GERMAN: return "de"; From d893c84b7bc15229338928f3b092fdcbbd414a70 Mon Sep 17 00:00:00 2001 From: Prcuvu Date: Sat, 8 Feb 2020 16:08:02 +0800 Subject: [PATCH 2/4] ArchHooks modified for Unix --- src/arch/ArchHooks/ArchHooks_Unix.cpp | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/src/arch/ArchHooks/ArchHooks_Unix.cpp b/src/arch/ArchHooks/ArchHooks_Unix.cpp index 8f67a19c2f..ce2e1dfd72 100644 --- a/src/arch/ArchHooks/ArchHooks_Unix.cpp +++ b/src/arch/ArchHooks/ArchHooks_Unix.cpp @@ -179,13 +179,29 @@ RString ArchHooks::GetPreferredLanguage() { RString locale; - if(getenv("LANG")) + if (getenv("LANG")) { locale = getenv("LANG"); - locale = locale.substr(0,2); + RString region = locale.substr(3, 2); + locale = locale.substr(0, 2); + + if (locale == "zh") + { + if (region == "CN" || region == "SG") + { + locale = "zh-Hans"; + } + else if (region == "HK" || region == "TW") + { + locale = "zh-Hant"; + } + } } else + { + LOG->Warn("Unable to determine system language. Using English."); locale = "en"; + } return locale; } From 2baade1dd7a90caacad96a2874dfdb06833ac27c Mon Sep 17 00:00:00 2001 From: Prcuvu Date: Sat, 8 Feb 2020 17:03:27 +0800 Subject: [PATCH 3/4] ArchHooks modified for macOS --- src/arch/ArchHooks/ArchHooks_MacOSX.mm | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/arch/ArchHooks/ArchHooks_MacOSX.mm b/src/arch/ArchHooks/ArchHooks_MacOSX.mm index def9a1b7a5..627c1ba84e 100644 --- a/src/arch/ArchHooks/ArchHooks_MacOSX.mm +++ b/src/arch/ArchHooks/ArchHooks_MacOSX.mm @@ -261,7 +261,14 @@ RString ArchHooks::GetPreferredLanguage() // MacRoman agrees with ASCII in the low-order 7 bits. const char *str = CFStringGetCStringPtr( lang, kCFStringEncodingMacRoman ); if( str ) + { ret = RString( str, 2 ); + if (ret == "zh") + { + ret = RString(str, 7); + ret[2] = '-'; + } + } else LOG->Warn( "Unable to determine system language. Using English." ); } From b38377403ebd7cc3dcad9bd884f9ccc97ec74a29 Mon Sep 17 00:00:00 2001 From: Prcuvu Date: Sat, 8 Feb 2020 17:08:25 +0800 Subject: [PATCH 4/4] Add LOG->Warn on fallback to English, for consistency on all platforms --- src/arch/ArchHooks/ArchHooks_Win32Static.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/arch/ArchHooks/ArchHooks_Win32Static.cpp b/src/arch/ArchHooks/ArchHooks_Win32Static.cpp index 369e93d6a6..6325bc5df0 100644 --- a/src/arch/ArchHooks/ArchHooks_Win32Static.cpp +++ b/src/arch/ArchHooks/ArchHooks_Win32Static.cpp @@ -1,6 +1,7 @@ #include "global.h" #include "ArchHooks.h" #include "RageUtil.h" +#include "RageLog.h" #include "archutils/Win32/SpecialDirs.h" #include "ProductInfo.h" #include "RageFileManager.h" @@ -166,7 +167,7 @@ static RString LangIdToString( LANGID l ) // These aren't present in the VC6 headers. We'll never have translations to these languages anyway. -C //case LANG_MONGOLIAN: return "mn"; //case LANG_GALICIAN: return "gl"; - default: + default: LOG->Warn("Unable to determine system language. Using English."); case LANG_ENGLISH: return "en"; } }