From 5daf74516a4eba38c571bd53c6b2501acf55d43d Mon Sep 17 00:00:00 2001 From: gnosygnu Date: Fri, 1 Feb 2019 22:46:38 -0500 Subject: [PATCH] Dev: Convert file-names with underscores to keys; EX: En_gb -> en-gb [#349] --- .../src/gplx/xowa/langs/names/Xol_name_mgr.java | 9 ++++++--- .../src/gplx/xowa/xtns/cldrs/Cldr_name_loader.java | 1 + .../gplx/xowa/xtns/cldrs/Cldr_name_loader_tst.java | 13 +++++++++---- .../xtns/scribunto/libs/Scrib_lib_language.java | 4 ++-- 4 files changed, 18 insertions(+), 9 deletions(-) diff --git a/400_xowa/src/gplx/xowa/langs/names/Xol_name_mgr.java b/400_xowa/src/gplx/xowa/langs/names/Xol_name_mgr.java index 27bee6b33..f507f8081 100644 --- a/400_xowa/src/gplx/xowa/langs/names/Xol_name_mgr.java +++ b/400_xowa/src/gplx/xowa/langs/names/Xol_name_mgr.java @@ -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(); diff --git a/400_xowa/src/gplx/xowa/xtns/cldrs/Cldr_name_loader.java b/400_xowa/src/gplx/xowa/xtns/cldrs/Cldr_name_loader.java index b70770ae1..999f8bc36 100644 --- a/400_xowa/src/gplx/xowa/xtns/cldrs/Cldr_name_loader.java +++ b/400_xowa/src/gplx/xowa/xtns/cldrs/Cldr_name_loader.java @@ -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; diff --git a/400_xowa/src/gplx/xowa/xtns/cldrs/Cldr_name_loader_tst.java b/400_xowa/src/gplx/xowa/xtns/cldrs/Cldr_name_loader_tst.java index ac040a3ac..ced7208b7 100644 --- a/400_xowa/src/gplx/xowa/xtns/cldrs/Cldr_name_loader_tst.java +++ b/400_xowa/src/gplx/xowa/xtns/cldrs/Cldr_name_loader_tst.java @@ -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); } } diff --git a/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_language.java b/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_language.java index 6fff1349b..674df3184 100644 --- a/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_language.java +++ b/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_language.java @@ -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) {