publicstaticfinalintDefined_in__unknown=0,Defined_in__lang=1,Defined_in__wiki=2,Defined_in__none=3;// NOTE: unknown not manually used, but is different than none (which means missing?)
privatestaticfinalBtrie_slim_mgrtrie_space=Btrie_slim_mgr.cs()// MW:cache/MessageCache.php|get|Fix for trailing whitespace, removed by textarea|DATE:2014-04-29
caseXol_msg_itm_.Id_pfunc_time_too_long:returnnew_(Xol_msg_itm_.Id_pfunc_time_too_long,"pfunc_time_too_long","Error: too many #time calls");
caseXol_msg_itm_.Id_pfunc_rel2abs_invalid_depth:returnnew_(Xol_msg_itm_.Id_pfunc_rel2abs_invalid_depth,"pfunc_rel2abs_invalid_depth","Error: Invalid depth in path: \"~{0}\" (tried to access a node above the root node)");
caseXol_msg_itm_.Id_pfunc_expr_unrecognised_word:returnnew_(Xol_msg_itm_.Id_pfunc_expr_unrecognised_word,"pfunc_expr_unrecognised_word","Expression error: Unrecognised word \"~{0}\"");
caseXol_msg_itm_.Id_pfunc_expr_division_by_zero:returnnew_(Xol_msg_itm_.Id_pfunc_expr_division_by_zero,"pfunc_expr_division_by_zero","Division by zero");
caseXol_msg_itm_.Id_pfunc_expr_invalid_argument:returnnew_(Xol_msg_itm_.Id_pfunc_expr_invalid_argument,"pfunc_expr_invalid_argument","Invalid argument for ~{0}: < -1 or > 1");
caseXol_msg_itm_.Id_pfunc_expr_invalid_argument_ln:returnnew_(Xol_msg_itm_.Id_pfunc_expr_invalid_argument_ln,"pfunc_expr_invalid_argument_ln","Invalid argument for ln: <= 0");
caseXol_msg_itm_.Id_pfunc_expr_not_a_number:returnnew_(Xol_msg_itm_.Id_pfunc_expr_not_a_number,"pfunc_expr_not_a_number","In ~{0}: result is not a number");
caseXol_msg_itm_.Id_pfunc_string_too_long:returnnew_(Xol_msg_itm_.Id_pfunc_string_too_long,"pfunc_string_too_long","Error: String exceeds ~{0} character limit");
caseXol_msg_itm_.Id_pfunc_convert_dimensionmismatch:returnnew_(Xol_msg_itm_.Id_pfunc_convert_dimensionmismatch,"pfunc-convert-dimensionmismatch","Error: cannot convert between units of \"~{0}\" and \"~{1}\"");
caseXol_msg_itm_.Id_pfunc_convert_unknownunit:returnnew_(Xol_msg_itm_.Id_pfunc_convert_unknownunit,"pfunc-convert-unknownunit","Error: unknown unit \"~{0}\"");
caseXol_msg_itm_.Id_pfunc_convert_invalidcompoundunit:returnnew_(Xol_msg_itm_.Id_pfunc_convert_invalidcompoundunit,"pfunc-convert-invalidcompoundunit","Error: invalid compound unit \"~{0}\"");
caseXol_msg_itm_.Id_pfunc_convert_nounit:returnnew_(Xol_msg_itm_.Id_pfunc_convert_nounit,"pfunc-convert-nounit","Error: no source unit given");
caseXol_msg_itm_.Id_pfunc_convert_doublecompoundunit:returnnew_(Xol_msg_itm_.Id_pfunc_convert_doublecompoundunit,"pfunc-convert-doublecompoundunit","Error: cannot parse double compound units like \"~{0}\"");
caseXol_msg_itm_.Id_portal_lastmodified:returnnew_(Xol_msg_itm_.Id_portal_lastmodified,"lastmodifiedat","This page was last modified on ~{0}, at ~{1}.");
caseXol_msg_itm_.Id_xowa_portal_view_html_tooltip:returnnew_(Xol_msg_itm_.Id_xowa_portal_view_html_tooltip,"tooltip-xowa-portal-view_html","View HTML source for this page");
caseXol_msg_itm_.Id_xowa_portal_bookmarks_add_text:returnnew_(Xol_msg_itm_.Id_xowa_portal_bookmarks_add_text,"xowa-portal-bookmarks-add","Bookmark this page");
caseXol_msg_itm_.Id_xowa_portal_bookmarks_add_tooltip:returnnew_(Xol_msg_itm_.Id_xowa_portal_bookmarks_add_tooltip,"tooltip-xowa-portal-bookmarks-add","Bookmark this page");
caseXol_msg_itm_.Id_xowa_portal_bookmarks_show_text:returnnew_(Xol_msg_itm_.Id_xowa_portal_bookmarks_show_text,"xowa-portal-bookmarks-show","Show all bookmarks");
caseXol_msg_itm_.Id_xowa_portal_bookmarks_show_tooltip:returnnew_(Xol_msg_itm_.Id_xowa_portal_bookmarks_show_tooltip,"tooltip-xowa-portal-bookmarks-show","Show all bookmarks");
caseXol_msg_itm_.Id_xowa_portal_page_history_tooltip:returnnew_(Xol_msg_itm_.Id_xowa_portal_page_history_tooltip,"tooltip-xowa-portal-page_history","View history of opened pages");
caseXol_msg_itm_.Id_page_lang_header:returnnew_(Xol_msg_itm_.Id_page_lang_header,"otherlanguages","In other languages");
caseXol_msg_itm_.Id_xowa_window_go_bwd_btn_tooltip:returnnew_(Xol_msg_itm_.Id_xowa_window_go_bwd_btn_tooltip,"xowa-window-go_bwd_btn-tooltip","Go back one page");
caseXol_msg_itm_.Id_xowa_window_go_fwd_btn_tooltip:returnnew_(Xol_msg_itm_.Id_xowa_window_go_fwd_btn_tooltip,"xowa-window-go_fwd_btn-tooltip","Go forward one page");
caseXol_msg_itm_.Id_xowa_window_url_btn_tooltip:returnnew_(Xol_msg_itm_.Id_xowa_window_url_btn_tooltip,"xowa-window-url_btn-tooltip","Go to the address in the Location Bar");
caseXol_msg_itm_.Id_xowa_window_search_box_tooltip:returnnew_(Xol_msg_itm_.Id_xowa_window_search_box_tooltip,"xowa-window-search_box-tooltip","Search using {{ns:Special}}:XowaSearch");
caseXol_msg_itm_.Id_xowa_window_allpages_box_tooltip:returnnew_(Xol_msg_itm_.Id_xowa_window_allpages_box_tooltip,"xowa-window-allpages_box-tooltip","List using {{ns:Special}}:AllPages");
caseXol_msg_itm_.Id_xowa_window_allpages_btn_tooltip:returnnew_(Xol_msg_itm_.Id_xowa_window_allpages_btn_tooltip,"xowa-window-allpages_btn-tooltip","List all pages");
caseXol_msg_itm_.Id_xowa_window_find_box_tooltip:returnnew_(Xol_msg_itm_.Id_xowa_window_find_box_tooltip,"xowa-window-find_box-tooltip","Enter phrase to find on this page");
caseXol_msg_itm_.Id_xowa_window_find_fwd_btn_tooltip:returnnew_(Xol_msg_itm_.Id_xowa_window_find_fwd_btn_tooltip,"xowa-window-find_fwd_btn-tooltip","Find the next occurrence of the phrase");
caseXol_msg_itm_.Id_xowa_window_find_bwd_btn_tooltip:returnnew_(Xol_msg_itm_.Id_xowa_window_find_bwd_btn_tooltip,"xowa-window-find_bwd_btn-tooltip","Find the previous occurrence of the phrase");
caseXol_msg_itm_.Id_xowa_window_info_box_tooltip:returnnew_(Xol_msg_itm_.Id_xowa_window_info_box_tooltip,"xowa-window-info_box-tooltip","Displays system messages");
caseXol_msg_itm_.Id_ctg_file_header:returnnew_(Xol_msg_itm_.Id_ctg_file_header,"category-media-header","Media in category \"~{0}\"");
caseXol_msg_itm_.Id_ctg_empty:returnnew_(Xol_msg_itm_.Id_ctg_empty,"category-empty","''This category currently contains no pages or media.''");
caseXol_msg_itm_.Id_ctg_subc_count:returnnew_(Xol_msg_itm_.Id_ctg_subc_count,"category-subcat-count","{{PLURAL:~{1}|This category has only the following subcategory.|This category has the following {{PLURAL:~{0}|subcategory|~{0} subcategories}}, out of ~{1} total.}}");
caseXol_msg_itm_.Id_ctg_subc_count_limit:returnnew_(Xol_msg_itm_.Id_ctg_subc_count_limit,"category-subcat-count-limited","This category has the following {{PLURAL:~{0}|subcategory|~{0} subcategories}}.");
caseXol_msg_itm_.Id_ctg_page_count:returnnew_(Xol_msg_itm_.Id_ctg_page_count,"category-article-count","{{PLURAL:~{1}|This category contains only the following page.|The following {{PLURAL:~{0}|page is|~{0} pages are}} in this category, out of ~{1} total.}}");
caseXol_msg_itm_.Id_ctg_page_count_limit:returnnew_(Xol_msg_itm_.Id_ctg_page_count_limit,"category-article-count-limited","The following {{PLURAL:~{0}|page is|~{0} pages are}} in the current category.");
caseXol_msg_itm_.Id_ctg_file_count:returnnew_(Xol_msg_itm_.Id_ctg_file_count,"category-file-count","{{PLURAL:~{1}|This category contains only the following file.|The following {{PLURAL:~{0}|file is|~{0} files are}} in this category, out of ~{1} total.}}");
caseXol_msg_itm_.Id_ctg_file_count_limit:returnnew_(Xol_msg_itm_.Id_ctg_file_count_limit,"category-file-count-limited","The following {{PLURAL:~{0}|file is|~{0} files are}} in the current category.");
caseXol_msg_itm_.Id_search_results_header:returnnew_(Xol_msg_itm_.Id_search_results_header,"showingresultsheader","{{PLURAL:~{4}\u007CResult '''~{0}''' of '''~{2}'''\u007CResults '''~{0} - ~{1}''' of '''~{2}'''}} for '''~{3}'''");
caseXol_msg_itm_.Id_edit_toolbar_ulist_sample:returnnew_(Xol_msg_itm_.Id_edit_toolbar_ulist_sample,"wikieditor-toolbar-tool-ulist-example","Bulleted list item");
caseXol_msg_itm_.Id_edit_toolbar_olist_sample:returnnew_(Xol_msg_itm_.Id_edit_toolbar_olist_sample,"wikieditor-toolbar-tool-olist-example","Numbered list item");
caseXol_msg_itm_.Id_statistics_pages_desc:returnnew_(Xol_msg_itm_.Id_statistics_pages_desc,"statistics-pages-desc","All pages in the wiki, including talk pages, redirects, etc.");
if(o==null){// key not found; likely not a system_id; generate a custom one
rv=newXol_msg_itm(itms_id_next++,key);
Itms_reg(rv);
}
else{
rv=(Xol_msg_itm)o;
}
returnrv;
}Hash_adphash;
publicbyte[]Val_by_id(intid){// NOTE: Val_by_id needs to exist on lang (not wiki_msg_mgr); {{#time}} can pass in lang, and will need to call lang's msg_mgr directly
Xol_msg_itmitm=Itm_by_id_or_null(id);
returnitm==null?null:itm.Val();
}
publicbyte[]Val_by_id(Xowe_wikiwiki,intid){// NOTE: Val_by_id needs to exist on lang (not wiki_msg_mgr); {{#time}} can pass in lang, and will need to call lang's msg_mgr directly
publicstaticStringGet_msg_val_gui_or_empty(Xoa_lang_mgrlang_mgr,Xol_lang_itmlang,byte[]pre,byte[]key,byte[]suf){// get from lang, else get from en; does not use get_msg_val to skip db lookups; should only be used for gui; DATE:2014-05-28
publicstaticStringGet_msg_val_gui_or_null(Xoa_lang_mgrlang_mgr,Xol_lang_itmlang,byte[]pre,byte[]key,byte[]suf){// get from lang, else get from en; does not use get_msg_val to skip db lookups; should only be used for gui; DATE:2014-05-28
?tmp_bfr.Add_byte(Byte_ascii.Lt).Add(msg_key).Add_byte(Byte_ascii.Gt).To_bry_and_clear()// NOTE: do not use key from msg_itm; msg_itms are case-insensitive, and val should match key exactly; EX: missing should return <missing> not <Missing> DATE:2016-08-01
lang=wiki.App().Lang_mgr().Get_by_or_new(lang_itm.Key());// set lang
}
msg_key_sub_root=Bry_.Mid(msg_key,0,slash_pos);// set msg to "a" (discarding "/b")
}
}
Xol_msg_itmmsg_in_wiki=wiki.Msg_mgr().Get_or_null(msg_key);// check wiki; used to be check lang, but Search_mediawiki should never be toggled on lang; DATE:2014-05-13
if(msg_in_wiki!=null)returnmsg_in_wiki;// NOTE: all new msgs will Search_mediawiki once; EX: de.w:{{int:Autosumm-replace}}; DATE:2013-01-25
Xoa_ttlttl=wiki.Ttl_parse(Bry_.Add(ns_bry,msg_key));// ttl="MediaWiki:msg_key"; note that there may be "/lang"; EX:pl.d:Wikislownik:Bar/Archiwum_6 and newarticletext/pl
byte[]rv=null;
if(ttl!=null)
rv=Load_msg_from_db_or_null(wiki,ttl);
if(rv==null){// [[MediaWiki:key]] not found; search for [[MediaWiki:key/fallback]]
if(wiki.Type_is_edit())// NOTE: this check only works when loading pages directly (EX:en.wikipedia.org/wiki/MediaWiki:Sidebar); however, due to way msgs load, wiki is always edit, even if html_dump; DATE:2016-09-17
Xol_msg_itmrv=lang.Msg_mgr().Itm_by_key_or_null(msg_key_sub_root);// NOTE: should always be msg_key_sub_root; EX: "msg/lang" will never be in lang.gfs
if(rv==null){// msg not found; check fallbacks; note that this is different from MW b/c when MW constructs a lang, it automatically adds all fallback msgs to the current lang
fxt.Clear().Test_val_html_accesskey_and_title("test_title",null," title=\"test_title\"");// accesskey is missing
fxt.Clear().Test_val_html_accesskey_and_title("test_title",""," title=\"test_title\"");// accesskey is ""
fxt.Clear().Test_val_html_accesskey_and_title(null,"a"," title=\"\"");// no title; leave blank
}
@TestpublicvoidMissing(){
fxt.Test__get_msg_val("missing","<missing>");// check that key is enclosed in <>
fxt.Test__get_msg_val("Missing","<Missing>");// check that val matches key; used to match 1st case-insensitive variant; EX: "<missing>" b/c "<missing>" was returned above; DATE:2016-08-01
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.