diff --git a/100_core/src/gplx/core/consoles/Console_adp__sys.java b/100_core/src/gplx/core/consoles/Console_adp__sys.java index f4e094431..ff09e193c 100644 --- a/100_core/src/gplx/core/consoles/Console_adp__sys.java +++ b/100_core/src/gplx/core/consoles/Console_adp__sys.java @@ -34,7 +34,7 @@ public class Console_adp__sys implements Console_adp { Clear_tmp(); if (String_.Has(s, "\r")) s = String_.Replace(s, "\r", " "); if (String_.Has(s, "\n")) s = String_.Replace(s, "\n", " "); - if (String_.Len(s) >= chars_per_line_max) s = String_.Mid(s, 0, chars_per_line_max - String_.Len("...") - 1) + "..."; // NOTE: >= and -1 needed b/c line needs to be 1 less than max; ex: default cmd is 80 width, but writing 80 chars will automatically create lineBreak +// if (String_.Len(s) >= chars_per_line_max) s = String_.Mid(s, 0, chars_per_line_max - String_.Len("...") - 1) + "..."; // NOTE: >= and -1 needed b/c line needs to be 1 less than max; ex: default cmd is 80 width, but writing 80 chars will automatically create lineBreak tmp_txt = s; Write_str_lang(s); } diff --git a/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_json_parser_tst.java b/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_json_parser_tst.java index 35d6d5498..a0e83a363 100644 --- a/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_json_parser_tst.java +++ b/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_json_parser_tst.java @@ -351,18 +351,20 @@ public class Site_json_parser_tst { ( "{ 'languages':" , " [ " , " { 'code': 'aa'" + , " , 'bcp47': 'aa-bcp47'" , " , '*': 'Qaf\u00e1r af'" , " }" , " , " , " { 'code': 'ab'" + , " , 'bcp47': 'ab-bcp47'" , " , '*': '\u0410\u04a7\u0441\u0448\u04d9\u0430'" , " }" , " ]" , "}" )); fxt.Test_language - ( fxt.Make_language("aa" , "Qafár af") - , fxt.Make_language("ab" , "Аҧсшәа") + ( fxt.Make_language("aa" , "aa-bcp47", "Qafár af") + , fxt.Make_language("ab" , "ab-bcp47", "Аҧсшәа") ); } // @Test public void Smoke() { @@ -409,7 +411,7 @@ class Site_json_parser_fxt { public Site_skin_itm Make_skin(String code, boolean dflt, String name, boolean unusable) {return new Site_skin_itm(Bry_.new_u8_safe(code), dflt, Bry_.new_u8_safe(name), unusable);} public Site_magicword_itm Make_magicword(String name, boolean case_match, String... aliases) {return new Site_magicword_itm(Bry_.new_u8_safe(name), case_match, Bry_.Ary(aliases));} public Site_showhook_itm Make_showhook(String name, String scribunto, String... subscribers) {return new Site_showhook_itm(Bry_.new_u8_safe(name), Bry_.new_u8_safe(scribunto), Bry_.Ary(subscribers));} - public Site_language_itm Make_language(String code, String name) {return new Site_language_itm(Bry_.new_u8_safe(code), Bry_.new_u8_safe(name));} + public Site_language_itm Make_language(String code, String bcp47, String name) {return new Site_language_itm(Bry_.new_u8_safe(code), Bry_.new_u8(bcp47), Bry_.new_u8_safe(name));} public void Test_general(Keyval... expd) {Tfds.Eq_ary_str(expd, (Keyval[])site_meta.General_list().To_ary(Keyval.class));} public void Test_namespace(Site_namespace_itm... expd) {Tfds.Eq_ary_str(expd, (Site_namespace_itm[])site_meta.Namespace_list().To_ary(Site_namespace_itm.class));} public void Test_statistic(Site_statistic_itm expd) {Tfds.Eq_str_intf(expd, site_meta.Statistic_itm());} diff --git a/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_language_itm.java b/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_language_itm.java index c218ba0ac..d9a725fc7 100644 --- a/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_language_itm.java +++ b/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_language_itm.java @@ -15,8 +15,13 @@ Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt */ package gplx.xowa.bldrs.wms.sites; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wms.*; class Site_language_itm implements To_str_able { - public Site_language_itm(byte[] code, byte[] name) {this.code = code; this.name = name;} - public byte[] Code() {return code;} private final byte[] code; - public byte[] Name() {return name;} private final byte[] name; - public String To_str() {return String_.Concat_with_obj("|", code, name);} + public Site_language_itm(byte[] code, byte[] bcp47, byte[] name) { + this.code = code; + this.bcp47 = bcp47; + this.name = name; + } + public byte[] Code() {return code;} private final byte[] code; + public byte[] Bcp47() {return bcp47;} private final byte[] bcp47; + public byte[] Name() {return name;} private final byte[] name; + public String To_str() {return String_.Concat_with_obj("|", code, bcp47, name);} } diff --git a/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_language_tbl.java b/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_language_tbl.java index 703aeaeaa..5a5da74ab 100644 --- a/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_language_tbl.java +++ b/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_language_tbl.java @@ -17,7 +17,7 @@ package gplx.xowa.bldrs.wms.sites; import gplx.*; import gplx.xowa.*; import gpl import gplx.dbs.*; class Site_language_tbl implements Db_tbl { private final Dbmeta_fld_list flds = new Dbmeta_fld_list(); - private final String fld_site_abrv, fld_code, fld_name; + private final String fld_site_abrv, fld_code, fld_name, fld_bcp47; private final Db_conn conn; private Db_stmt stmt_select, stmt_insert, stmt_delete; public Site_language_tbl(Db_conn conn) { @@ -25,10 +25,11 @@ class Site_language_tbl implements Db_tbl { this.fld_site_abrv = flds.Add_str("site_abrv", 255); this.fld_code = flds.Add_str("code", 255); this.fld_name = flds.Add_str("name", 255); + this.fld_bcp47 = flds.Add_str("bcp47", 255); conn.Rls_reg(this); } public String Tbl_name() {return tbl_name;} private static final String tbl_name = "site_language"; - public void Create_tbl() {conn.Meta_tbl_create(Dbmeta_tbl_itm.New(tbl_name, flds, Dbmeta_idx_itm.new_unique_by_name(tbl_name, Dbmeta_idx_itm.Bld_idx_name(tbl_name, "main"), fld_site_abrv, fld_code)));} + public void Create_tbl() {conn.Meta_tbl_create(Dbmeta_tbl_itm.New(tbl_name, flds, Dbmeta_idx_itm.new_unique_by_name(tbl_name, Dbmeta_idx_itm.Bld_idx_name(tbl_name, "main"), fld_site_abrv, fld_code, fld_bcp47)));} public void Delete_all() {conn.Stmt_delete(tbl_name, Dbmeta_fld_itm.Str_ary_empty).Exec_delete();} public void Rls() { stmt_select = Db_stmt_.Rls(stmt_select); @@ -44,6 +45,7 @@ class Site_language_tbl implements Db_tbl { Site_language_itm itm = new Site_language_itm ( rdr.Read_bry_by_str(fld_code) , rdr.Read_bry_by_str(fld_name) + , rdr.Read_bry_by_str(fld_bcp47) ); list.Add(itm.Code(), itm); } @@ -57,14 +59,15 @@ class Site_language_tbl implements Db_tbl { int len = list.Count(); for (int i = 0; i < len; ++i) { Site_language_itm itm = (Site_language_itm)list.Get_at(i); - Insert(site_abrv, itm.Code(), itm.Name()); + Insert(site_abrv, itm.Code(), itm.Name(), itm.Bcp47()); } } - private void Insert(byte[] site_abrv, byte[] code, byte[] name) { + private void Insert(byte[] site_abrv, byte[] code, byte[] name, byte[] bcp47) { stmt_insert.Clear() .Val_bry_as_str(fld_site_abrv , site_abrv) .Val_bry_as_str(fld_code , code) .Val_bry_as_str(fld_name , name) + .Val_bry_as_str(fld_bcp47 , bcp47) .Exec_insert(); } } diff --git a/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_meta_parser__general.java b/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_meta_parser__general.java index 74b09395e..bf4699de6 100644 --- a/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_meta_parser__general.java +++ b/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_meta_parser__general.java @@ -252,7 +252,7 @@ class Site_meta_parser__showhook extends Json_parser__list_nde__base { class Site_meta_parser__language extends Json_parser__list_nde__base { private Ordered_hash list; public Site_meta_parser__language() { - this.Ctor("code", "*"); + this.Ctor("code", "bcp47", "*"); } public void Parse(String context, Ordered_hash list, Json_ary nde) { this.list = list; @@ -260,6 +260,6 @@ class Site_meta_parser__language extends Json_parser__list_nde__base { } @Override protected void Parse_hook_nde(Json_nde sub, Json_kv[] atrs) { byte[] key = Kv__bry(atrs, 0); - list.Add(key, new Site_language_itm(key, Kv__bry(atrs, 1))); + list.Add(key, new Site_language_itm(key, Kv__bry(atrs, 1), Kv__bry(atrs, 2))); } } diff --git a/400_xowa/src/gplx/xowa/wikis/domains/Xow_domain_regy.java b/400_xowa/src/gplx/xowa/wikis/domains/Xow_domain_regy.java index ed90908cf..9b2d0ed37 100644 --- a/400_xowa/src/gplx/xowa/wikis/domains/Xow_domain_regy.java +++ b/400_xowa/src/gplx/xowa/wikis/domains/Xow_domain_regy.java @@ -391,6 +391,7 @@ public class Xow_domain_regy { , "bm.wikibooks.org" , "bm.wikiquote.org" , "bn.wikipedia.org" +, "bn.wikivoyage.org" , "bn.wiktionary.org" , "bn.wikisource.org" , "bn.wikibooks.org" @@ -613,8 +614,6 @@ public class Xow_domain_regy { , "mn.wikipedia.org" , "mn.wiktionary.org" , "mn.wikibooks.org" -, "mo.wikipedia.org" -, "mo.wiktionary.org" , "mr.wikipedia.org" , "mr.wiktionary.org" , "mr.wikisource.org" @@ -839,28 +838,34 @@ public class Xow_domain_regy { , "zu.wikipedia.org" , "zu.wiktionary.org" , "zu.wikibooks.org" -, "gom.wikipedia.org" -, "lrc.wikipedia.org" , "azb.wikipedia.org" -, "ady.wikipedia.org" -, "jam.wikipedia.org" -, "tcy.wikipedia.org" -, "olo.wikipedia.org" -, "dty.wikipedia.org" -, "pa.wikisource.org" , "atj.wikipedia.org" -, "kbp.wikipedia.org" , "din.wikipedia.org" +, "dty.wikipedia.org" +, "eu.wikisource.org" +, "gom.wikipedia.org" +, "gor.wikipedia.org" , "hi.wikiversity.org" , "hi.wikivoyage.org" , "hif.wiktionary.org" , "inh.wikipedia.org" +, "jam.wikipedia.org" +, "kbp.wikipedia.org" +, "lrc.wikipedia.org" , "lfn.wikipedia.org" -, "gor.wikipedia.org" -, "eu.wikisource.org" +, "olo.wikipedia.org" +, "pa.wikisource.org" +, "pms.wikisource.org" +, "ps.wikivoyage.org" +, "sat.wikipedia.org" +, "sah.wikiquote.org" +, "tcy.wikipedia.org" +, "zh.wikiversity.org" }; //, "als.wikisource.org" //, "als.wikinews.org" +//, "mo.wikipedia.org" +//, "mo.wiktionary.org" //, "nds.wikinews.org" //, "ba.wiktionary.org" //, "tokipona.wikibooks.org" 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 50b9179d8..e95151b06 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 @@ -82,7 +82,9 @@ public class Cldr_name_loader { } } private static Hash_adp Make_urls_hash(Io_url[] urls) { - // filenames will have format of CldrNamesEn.json; build a hash of (en, "CldrNamesEn.json"); needed for case-sensitive file-systems; DATE:2018-10-14 + // filenames will have format of "CldrNamesEn.json" but scrib will pass in "en"; + // this is not an issue for case-insensitive file-systems (WNT), but fails for case-sensitive ones (LNX) + // build a hash of ("en", "CldrNamesEn.json"); DATE:2018-10-14 Hash_adp rv = Hash_adp_.New(); for (Io_url url : urls) { String name = url.NameAndExt();