mirror of
https://github.com/UpsilonNumworks/Upsilon.git
synced 2026-01-20 09:17:23 +01:00
[apps] Simplify locale lookup by code
This commit is contained in:
@@ -65,9 +65,6 @@ language_preferences = apps/language_preferences.csv
|
||||
SFLAGS += -I$(BUILD_DIR)
|
||||
|
||||
i18n_files += $(addprefix apps/language_,$(addsuffix .universal.i18n, $(EPSILON_I18N)))
|
||||
ifeq ($(EPSILON_GETOPT),1)
|
||||
i18n_files += $(addprefix apps/language_,$(addsuffix _iso6391.universal.i18n, $(EPSILON_I18N)))
|
||||
endif
|
||||
|
||||
i18n_files += $(call i18n_with_universal_for,shared)
|
||||
i18n_files += $(call i18n_with_universal_for,toolbox)
|
||||
@@ -77,7 +74,7 @@ $(eval $(call rule_for, \
|
||||
I18N, \
|
||||
apps/i18n.cpp, \
|
||||
$(i18n_files), \
|
||||
$$(PYTHON) apps/i18n.py --codepoints $(code_points) --countrypreferences $(country_preferences) --languagepreferences $(language_preferences) --header $$(subst .cpp,.h,$$@) --implementation $$@ --locales $$(EPSILON_I18N) --countries $$(EPSILON_COUNTRIES) --files $$^ --generateISO6391locales $$(EPSILON_GETOPT), \
|
||||
$$(PYTHON) apps/i18n.py --codepoints $(code_points) --countrypreferences $(country_preferences) --languagepreferences $(language_preferences) --header $$(subst .cpp,.h,$$@) --implementation $$@ --locales $$(EPSILON_I18N) --countries $$(EPSILON_COUNTRIES) --files $$^, \
|
||||
global \
|
||||
))
|
||||
|
||||
|
||||
17
apps/i18n.py
17
apps/i18n.py
@@ -23,13 +23,9 @@ parser.add_argument('--codepoints', help='the code_points.h file')
|
||||
parser.add_argument('--countrypreferences', help='the country_preferences.csv file')
|
||||
parser.add_argument('--languagepreferences', help='the language_preferences.csv file')
|
||||
parser.add_argument('--files', nargs='+', help='an i18n file')
|
||||
parser.add_argument('--generateISO6391locales', type=int, nargs='+', help='whether to generate the ISO6391 codes for the languages (for instance "en" for english)')
|
||||
|
||||
args = parser.parse_args()
|
||||
|
||||
def generate_ISO6391():
|
||||
return args.generateISO6391locales[0] == 1
|
||||
|
||||
def has_glyph(glyph):
|
||||
return glyph in codepoints
|
||||
|
||||
@@ -196,13 +192,6 @@ def print_header(data, path, locales, countries):
|
||||
lambda arg: arg.upper(),
|
||||
" Message::Language")
|
||||
|
||||
if generate_ISO6391():
|
||||
print_block_from_list(f,
|
||||
"constexpr const Message LanguageISO6391Names[NumberOfLanguages] = {\n",
|
||||
locales,
|
||||
lambda arg: arg.upper(),
|
||||
" Message::LanguageISO6391")
|
||||
|
||||
# Countries enumeration
|
||||
print_block_from_list(f,
|
||||
"enum class Country : uint8_t {\n",
|
||||
@@ -236,6 +225,12 @@ def print_header(data, path, locales, countries):
|
||||
f.write(line[:-2] + "),\n")
|
||||
f.write("};\n\n")
|
||||
|
||||
# Language ISO639-1 codes
|
||||
f.write("constexpr const char * LanguageISO6391Codes[NumberOfLanguages] = {\n");
|
||||
for locale in locales:
|
||||
f.write(" \"" + locale + "\",\n")
|
||||
f.write("};\n\n")
|
||||
|
||||
f.write("}\n\n")
|
||||
f.write("#endif\n")
|
||||
f.close()
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
LanguageISO6391DE = "de"
|
||||
@@ -1 +0,0 @@
|
||||
LanguageISO6391EN = "en"
|
||||
@@ -1 +0,0 @@
|
||||
LanguageISO6391ES = "es"
|
||||
@@ -1 +0,0 @@
|
||||
LanguageISO6391FR = "fr"
|
||||
@@ -1 +0,0 @@
|
||||
LanguageISO6391IT = "it"
|
||||
@@ -1 +0,0 @@
|
||||
LanguageISO6391NL = "nl"
|
||||
@@ -1 +0,0 @@
|
||||
LanguageISO6391PT = "pt"
|
||||
@@ -36,7 +36,7 @@ void ion_main(int argc, const char * const argv[]) {
|
||||
continue;
|
||||
}
|
||||
for (int j = 0; j < I18n::NumberOfLanguages; j++) {
|
||||
if (strcmp(requestedLanguageId, I18n::translate(I18n::LanguageISO6391Names[j])) == 0) {
|
||||
if (strcmp(requestedLanguageId, I18n::LanguageISO6391Codes[j]) == 0) {
|
||||
GlobalPreferences::sharedGlobalPreferences()->setLanguage((I18n::Language)j);
|
||||
GlobalPreferences::sharedGlobalPreferences()->setCountry(I18n::DefaultCountryForLanguage[j]);
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user