1
0
mirror of https://github.com/gnosygnu/xowa.git synced 2024-10-27 20:34:16 +00:00

Scribunto.Lang: Return 1st three letters of unknown language codes, not blank

This commit is contained in:
gnosygnu 2017-04-01 08:13:49 -04:00
parent 83c40c8771
commit 8cda46bef9
3 changed files with 16 additions and 3 deletions

View File

@ -133,7 +133,19 @@ public class Scrib_lib_language implements Scrib_lib {
byte[] lang_code = args.Pull_bry(0);
// byte[] trans_code = args.Get_bry_or_null(1); // TODO_OLD: FetchLanguageName("en", "fr") -> Anglais; WHEN: needs global database of languages; cldr
Xol_lang_stub lang_itm = Xol_lang_stub_.Get_by_key_or_null(lang_code);
return rslt.Init_obj(lang_itm == null ? String_.Empty : String_.new_u8(lang_itm.Canonical_name()));
String rv = null;
// unknown item; return 1st three letters; DATE:2017-04-01
if (lang_itm == null) {
int lang_code_len = lang_code.length;
int rv_len = lang_code_len < 3 ? lang_code_len : 3;
rv = String_.new_u8(Bry_.Mid(lang_code, 0, rv_len));
}
// known item; return canonical name
else {
rv = String_.new_u8(lang_itm.Canonical_name());
}
return rslt.Init_obj(rv);
}
public boolean FetchLanguageNames(Scrib_proc_args args, Scrib_proc_rslt rslt) {
// byte[] lang_code = args.Cast_bry_or_null(0);

View File

@ -44,7 +44,8 @@ public class Scrib_lib_language_tst {
@Test public void FetchLanguageName() {
fxt.Test_scrib_proc_str(lib, Scrib_lib_language.Invk_fetchLanguageName, Object_.Ary("en"), "English");
fxt.Test_scrib_proc_str(lib, Scrib_lib_language.Invk_fetchLanguageName, Object_.Ary("fr"), "Français");
fxt.Test_scrib_proc_str(lib, Scrib_lib_language.Invk_fetchLanguageName, Object_.Ary("enx"), "");
fxt.Test_scrib_proc_str(lib, Scrib_lib_language.Invk_fetchLanguageName, Object_.Ary("enx"), "enx");
fxt.Test_scrib_proc_str(lib, Scrib_lib_language.Invk_fetchLanguageName, Object_.Ary("qz"), "qz");
}
@Test public void GetFallbacksFor() {
Xol_lang_itm other_lang = fxt.Core().App().Lang_mgr().Get_by_or_new(Bry_.new_a7("zh"));

View File

@ -23,7 +23,7 @@ public class Wdata_pf_property extends Pf_func_base {
@Override public int Id() {return Xol_kwd_grp_.Id_property;}
@Override public Pf_func New(int id, byte[] name) {return new Wdata_pf_property().Name_(name);}
@Override public void Func_evaluate(Bry_bfr bfr, Xop_ctx ctx, Xot_invk caller, Xot_invk self, byte[] src) {// EX: {{#property:p123|}}
synchronized (this) { // LOCK: must synchronized b/c bfr will later be set as member variable; DATE:2016-07-06
synchronized (this) { // LOCK: must synchronized b/c bfr will later be set as member variable in .Resolve_to_bfr; DATE:2016-07-06
// init
byte[] pid_ttl = Eval_argx(ctx, src, caller, self);
Xop_log_property_wkr property_wkr = ctx.Xtn__wikidata__property_wkr();