1
0
mirror of https://github.com/gnosygnu/xowa.git synced 2025-05-30 14:04:56 +00:00

Dev: Convert file-names with underscores to keys; EX: En_gb -> en-gb [#349]

This commit is contained in:
gnosygnu 2019-02-01 22:46:38 -05:00
parent 6b5c014e75
commit 5daf74516a
4 changed files with 18 additions and 9 deletions

View File

@ -36,10 +36,10 @@ public class Xol_name_mgr {
* @return String Language name or empty
* @since 1.20
*/
public String fetchLanguageName(String code, String inLanguage, String include) {
public String fetchLanguageName(String code, String inLanguage, String include, byte[] page_url) {
code = String_.Lower(code);
if (include == null) include = "all";
Ordered_hash array = fetchLanguageNames(inLanguage, include);
Ordered_hash array = fetchLanguageNames(inLanguage, include, page_url);
Keyval rv = (Keyval)array.Get_by(code);
return rv == null ? "" : rv.Val_to_str_or_null();
}
@ -59,7 +59,7 @@ public class Xol_name_mgr {
private Ordered_hash lang_names_cached;
private Ordered_hash lang_files_cached;
public Ordered_hash fetchLanguageNames(String inLanguage, String include_str) {
public Ordered_hash fetchLanguageNames(String inLanguage, String include_str, byte[] page_url) {
if (inLanguage == null) inLanguage = "null";
String cacheKey = inLanguage + ":" + include_str;
if (languageNameCache == null)
@ -70,6 +70,9 @@ public class Xol_name_mgr {
byte include = include_byte == null ? fetchLanguageNamesUncached__all : include_byte.Val();
Cldr_name_file cldr_file = cldr_loader.Load_or_empty(inLanguage);
if (cldr_file == Cldr_name_file.Empty) {
Gfo_usr_dlg_.Instance.Warn_many("", "", "lang does not have a cldrName file; lang=~{0} page=~{1}", inLanguage, page_url);
}
if (lang_names_cached == null)
lang_names_cached = name_loader.Load_as_hash();

View File

@ -109,6 +109,7 @@ public class Cldr_name_loader {
continue;
}
name = String_.Lower(name);
name = String_.Replace(name, "_", "-"); // CldrNamesEn_gb.json should have a key of "en-gb", not en_gb; ISSUE#:349; DATE:2019-02-01
rv.Add_if_dupe_use_1st(name, url);
}
return rv;

View File

@ -19,8 +19,13 @@ public class Cldr_name_loader_tst {
private final Cldr_name_loader_fxt fxt = new Cldr_name_loader_fxt();
@Test public void Load_file_is_null() {
fxt.Init__file("CldrNamesEn.json", "{}");
fxt.Test__load_file_is_null(Bool_.N, "En");
fxt.Test__load_file_is_null(Bool_.N, "en"); // NOTE: scrib will pass "en", but earlier implementation was trying to read CldrNamesen.json which failed on LNX; DATE:2018-10-14
fxt.Test__load_file_is_empty(Bool_.N, "En");
fxt.Test__load_file_is_empty(Bool_.N, "en"); // NOTE: scrib will pass "en", but earlier implementation was trying to read CldrNamesen.json which failed on LNX; DATE:2018-10-14
}
@Test public void Hyphen() {
fxt.Init__file("CldrNamesEn_gb.json", "{}");
fxt.Test__load_file_is_empty(Bool_.N, "en-gb");
fxt.Test__load_file_is_empty(Bool_.Y, "en_gb");
}
}
class Cldr_name_loader_fxt {
@ -30,8 +35,8 @@ class Cldr_name_loader_fxt {
public void Init__file(String fil_name, String txt) {
Io_mgr.Instance.SaveFilStr(Io_url_.new_fil_(Dir_name + fil_name), txt);
}
public void Test__load_file_is_null(boolean expd, String lang_key) {
public void Test__load_file_is_empty(boolean expd, String lang_key) {
Cldr_name_file name_file = name_loader.Load_or_empty(lang_key);
Gftest.Eq__bool(expd, name_file == null);
Gftest.Eq__bool(expd, name_file == Cldr_name_file.Empty);
}
}

View File

@ -133,7 +133,7 @@ public class Scrib_lib_language implements Scrib_lib {
String lang_code = args.Pull_str(0);
String inLanguage = args.Cast_str_or_null(1);
String include = args.Cast_str_or(2, null);
String rv = core.App().Lang_mgr().Name_mgr().fetchLanguageName(lang_code, inLanguage, include);
String rv = core.App().Lang_mgr().Name_mgr().fetchLanguageName(lang_code, inLanguage, include, core.Page().Url_bry_safe());
return rslt.Init_obj(rv);
/*
byte[] lang_code = args.Pull_bry(0);
@ -148,7 +148,7 @@ public class Scrib_lib_language implements Scrib_lib {
public boolean FetchLanguageNames(Scrib_proc_args args, Scrib_proc_rslt rslt) {
String lang_code = args.Cast_str_or_null(0);
String include = args.Cast_str_or(1, "mw");
Ordered_hash hash = core.App().Lang_mgr().Name_mgr().fetchLanguageNames(lang_code, include);
Ordered_hash hash = core.App().Lang_mgr().Name_mgr().fetchLanguageNames(lang_code, include, core.Page().Url_bry_safe());
return rslt.Init_obj((Keyval[])hash.To_ary(Keyval.class));
}
public boolean GetFallbacksFor(Scrib_proc_args args, Scrib_proc_rslt rslt) {