/******************************************************************************* This file uses the following conventions: - End of line character: char(10) (Unix style) - Encoding: UTF-8 (without Byte Order Mark) - Tabs: not supported - Word-wrap: not recommended DO NOT EDIT THIS FILE UNLESS INSTRUCTED The contents of this file are volatile and will change with each release. Any change you make below will be lost whenever you upgrade. If you want to make changes and preserve them between versions, add them to [[Options/Config_script]] However, the syntax itself is volatile, and future commands may be changed or deleted. There will be no backward compatibility. *******************************************************************************/ app.scripts.fail_if_unhandled = 'n'; /******************************************************************************* gui (bootup) ******************************************************************************** these values should be declared early (at the top of the file) ------------------------------------------------------------------------------*/ app.gui { kit = 'swt'; // 'swt' is the only supported value; should only be set once browser_type = 'mozilla'; // 'mozilla' or 'webkit' xul_runner_path = '~{<>bin_plat_dir<>}xulrunner'; // path should be set to xulrunner location; '~{<>bin_plat_dir<>}xulrunner' defaults to '/xowa/bin/platform_name/xulrunner' (EX: on Windows 'C:\xowa\bin\windows\xulrunner') } /******************************************************************************* files: apps ******************************************************************************** defines which apps open which files moved to /xowa/user/[USER]/app/cfg/os.gfs; DATE:2017-01-01 ------------------------------------------------------------------------------*/ app.scripts.run_file_by_type('xowa.user.os'); /******************************************************************************* files: ext_rules ******************************************************************************** - view_max: max size of file to be automatically downloaded when viewing page for most cases, alternate between 1 GB (always download) and 0 GB (never download) with the rules below, images are downloaded, but ogg, oga, ogv are not if you set oga, ogg, and ogv to 1 GB, then files of that type will be automatically downloaded when viewing the page. this will probably be a hindrance. - make_max: max size of file to be made during offline image building same as view max: use 1 GB and 0 GB these only apply to the offline image building process. they have no effect when viewing wiki articles. ------------------------------------------------------------------------------*/ app.files.ext_rules.set('img_only') { set('png' ) {make_max = '1 GB'; view_max = '1 GB';} set('jpg' ) {make_max = '1 GB'; view_max = '1 GB';} set('jpeg') {make_max = '1 GB'; view_max = '1 GB';} set('gif' ) {make_max = '1 GB'; view_max = '1 GB';} set('tif' ) {make_max = '1 GB'; view_max = '1 GB';} set('tiff') {make_max = '1 GB'; view_max = '1 GB';} set('svg' ) {make_max = '1 GB'; view_max = '1 GB';} set('djvu') {make_max = '0 GB'; view_max = '0 GB';} set('pdf' ) {make_max = '0 GB'; view_max = '0 GB';} set('mid' ) {make_max = '0 GB'; view_max = '0 GB';} set('oga' ) {make_max = '0 GB'; view_max = '0 GB';} set('ogg' ) {make_max = '0 GB'; view_max = '0 GB';} set('ogv' ) {make_max = '0 GB'; view_max = '0 GB';} set('webm') {make_max = '0 GB'; view_max = '0 GB';} set('' ) {make_max = '0 GB'; view_max = '0 GB';} // '' indicates all other files } /******************************************************************************* miscellaneous ******************************************************************************** ------------------------------------------------------------------------------*/ app.log { archive_dirs_max = 8; } app.sys_cfg.free_mem_when = '10 MB'; // empties cache when free memory is less than stated amount app.gui.html { auto_focus_id = ''; // id to auto-focus when page first loads; set to '' for no auto-focus or ' first_anchor' to focus first anchor (the non-conventional leading space is to create a unique key that would not collide with any valid ids) } /******************************************************************************* wiki init: commons ******************************************************************************** note that commons must always be set up (since other wikis refer to its repo) ------------------------------------------------------------------------------*/ /* defines repos across the application (app.files.repos) - each repo is defined with three arguments 1) key user-defined key EX: src_http_commons 2) path path to images EX: https://upload.wikimedia.org/wikipedia/commons/ 3) wiki_key name of wiki which has info on the file in its "File" namespace EX: commons.wikimedia.org - other attributes can be set on a repo fsys_: 'wnt' signifies that *, " and other invalid windows file characters in the wikimedia file name are replaced with _; necessary for windows; optional for other os's ext_rules: key to ext_rule set; see section below tarball: 'y' means that files are coming from extracted Wikimedia tarball on local hard-drive (as opposed to the online Wikimedia servers) */ app.files.repos { set('src_http_commons', 'https://upload.wikimedia.org/wikipedia/commons/' , 'commons.wikimedia.org' ).tid_('comm').ext_rules_('img_only'); //set('src_http_commons', 'W:\wikipedia\commons\' , 'commons.wikimedia.org').fsys_('wnt').tarball_('y').ext_rules_('img_only'); set('trg_file_commons', 'commons.wikimedia.org' , 'commons.wikimedia.org' ).tid_('comm').fsys_('wnt').primary_('y'); } /* defines repo-pairs for a wiki. (app.wikis.get('~{wiki_key}').files.repos) - each repo-pair is defined with two arguments 1) source_key repo_key indicating where the files are 2) target_get repo_key indicating where the files should be copied to */ app.wikis.get('commons.wikimedia.org').files.repos { add('src_http_commons', 'trg_file_commons'); } //app.wikis.get('en.wikipedia.org').files.cfg_download.redownload_('missing'); /******************************************************************************* dynamic wiki script: all wikis ******************************************************************************** builds a script that runs when a wiki is first initialized. Note that initialization occurs when the first article is retrieved from a wiki (i.e.: wiki initialization does not occur at application startup.) ------------------------------------------------------------------------------*/ app.wikis.scripts.set ( 'all_wikis' // user-defined key , 'wikipedia~wiktionary~wikisource~wikibooks~wikiversity~wikiquote~wikinews~wikivoyage~wikimedia~commons~meta~species~wikidata~wikimediafoundation~mediawiki~incubator~home~other' , /* actual script which is executed when a wiki initializes. Note the following parameter placeholders ~{wiki_key} name of the wiki EX: 'en.wikipedia.org' ~{wiki_type_name} type name of wiki EX: 'wikipedia' ~{wiki_lang} lang key of the wiki EX: 'en' */ <:[' app.wikis.get('~{wiki_key}') { files.cfg_download { // enabled = 'n'; // y=file download enabled; n=file download disabled redownload = 'none'; // none=never redownload file; missing=redownload file if file was missing before; all=redownload all files } user.name = 'Anonymous'; // set name for wiki user (appears in upper left hand corner of screen) } app.wikis.get('~{wiki_key}').html.portal { div_personal = <:["

~{<>msgs.get('personaltools');<>}

"]:> ; div_ns = <:["

~{<>msgs.get('namespaces');<>}

~{portal_div_vnts}
"]:> ; div_view = <:["

~{<>msgs.get('views');<>}

"]:> ; div_logo = <:["

"]:> ; div_home = <:["

XOWA

"]:> ; div_sync = <:["

~{<>app.user.msgs.get('xowa-portal-sync');<>}

"]:> ; div_wikis = <:["

~{toggle_btn}

~{<>app.gui.html.portal.wikis.itms_as_html;<>}
"]:> ; } app.wikis.get('~{wiki_key}').html.article { page_read = <:[" ~{page_name} - XOWA ~{html_css_night_tag}~{xowa_head}
~{page_indicators}~{page_pgbnr} ~{page_heading}
From XOWA: the free, open-source, offline wiki application
~{page_content_sub}
~{page_jumpto}
~{page_data}
~{page_langs}
~{portal_div_footer}
~{portal_div_personal} ~{portal_div_ns} ~{portal_div_view}
~{portal_div_logo} ~{portal_div_home} ~{portal_sidebar} ~{portal_div_xtn} ~{portal_div_admin} ~{portal_div_wikis}
"]:> ; page_edit = <:[" ~{page_name} - XOWA ~{html_css_night_tag}~{xowa_head}
~{page_indicators}~{page_pgbnr}
~{page_heading}
From XOWA: the free, open-source, offline wiki application
~{page_content_sub}
~{portal_div_footer}
~{portal_div_personal} ~{portal_div_ns} ~{portal_div_view}
~{portal_div_logo} ~{portal_div_home} ~{portal_sidebar} ~{portal_div_xtn} ~{portal_div_admin} ~{portal_div_wikis}
"]:> ; page_html = <:[" ~{page_name} - XOWA ~{html_css_night_tag}~{xowa_head}
~{page_indicators}~{page_heading}
From XOWA: the free, open-source, offline wiki application
 
~{portal_div_footer}
~{portal_div_personal} ~{portal_div_ns} ~{portal_div_view}
~{portal_div_logo} ~{portal_div_home} ~{portal_sidebar} ~{portal_div_xtn} ~{portal_div_admin} ~{portal_div_wikis}
"]:> ; } ']:> ); /******************************************************************************* dynamic wiki script: home wiki ******************************************************************************** ------------------------------------------------------------------------------*/ app.wikis.scripts.set ( 'home_wiki' // user-defined key , 'home' , <:[' app.wikis.get('~{wiki_key}').html.portal .div_personal_( <:["

~{<>app.user.msgs.get('personaltools');<>}

"]:> ) ; app.wikis.get('~{wiki_key}').data_mgr { create_enabled = 'y'; // NOTE: do NOT enable create on any other wiki; it will break the wiki update_modified_on_enabled = 'y'; } app.wikis.get('~{wiki_key}') { html.modules.get('top_icon').enabled = 'y'; } ']:> ); /******************************************************************************* dynamic wiki script: ordinary wikis ******************************************************************************** ------------------------------------------------------------------------------*/ app.wikis.scripts.set ( 'ordinary_wikis' , 'wikipedia~wiktionary~wikisource~wikibooks~wikiversity~wikiquote~wikinews~wikivoyage~commons~wikidata~wikimedia~wikimediafoundation~incubator~mediawiki~home~other' // list of wiki type names; note that every wiki type is listed except for 'meta', 'species', 'home'; 'meta' and 'species' are set below , " app.files.repos { set('src_http_~{wiki_key}', 'https://upload.wikimedia.org/~{wiki_type_name}/~{wiki_lang}/' , '~{wiki_key}') .tid_('self').ext_rules_('img_only'); set('trg_file_~{wiki_key}', '~{wiki_key}' , '~{wiki_key}') .tid_('self').fsys_('wnt').primary_('y'); set('src_http_math' , 'https://wikimedia.org/api/rest_v1/media/math/render/svg/' , 'wikimedia.org/math').tid_('math'); set('trg_file_math' , 'math' , 'wikimedia.org/math').tid_('math').fsys_('wnt'); //set('src_http_~{wiki_key}', 'W:\~{wiki_type_name}\~{wiki_lang}\' , '~{wiki_key}').fsys_('wnt').tarball_('y').ext_rules_('img_only'); } app.wikis.get('~{wiki_key}').files.repos { add('src_http_commons' , 'trg_file_commons'); add('src_http_~{wiki_key}' , 'trg_file_~{wiki_key}'); add('src_http_math' , 'trg_file_math').repo_id_(2); } app.wikis.get('~{wiki_key}').commons_wiki = 'commons.wikimedia.org'; // name of commons wiki; for files, xowa checks current wiki and then commons wiki "); /******************************************************************************* dynamic wiki script: wikinews ******************************************************************************** ------------------------------------------------------------------------------*/ app.wikis.scripts.set ( 'wikinews_script' , 'wikinews' , " app.files.repos { set('src_http_~{wiki_key}', 'https://upload.wikimedia.org/~{wiki_type_name}/~{wiki_lang}/' , '~{wiki_key}').ext_rules_('img_only'); set('trg_file_~{wiki_key}', '~{wiki_key}' , '~{wiki_key}').fsys_('wnt').primary_('y') } app.wikis.get('~{wiki_key}').files.repos.clear { add('src_http_~{wiki_key}' , 'trg_file_~{wiki_key}').repo_id_(1); add('src_http_commons' , 'trg_file_commons').repo_id_(0); } " ) ; /******************************************************************************* dynamic wiki script: wikivoyage ******************************************************************************** ------------------------------------------------------------------------------*/ app.wikis.scripts.set ( 'wikivoyage_script' , 'wikivoyage~home' , " app.wikis.get('~{wiki_key}').xtns.get('Listings').enabled = 'y'; app.wikis.get('~{wiki_key}').xtns.get('Insider').enabled = 'y'; app.wikis.get('~{wiki_key}').xtns.get('RelatedSites') { enabled = 'y'; sites { set_many('commons|wikipedia|dmoz'); } } " ); /******************************************************************************* dynamic wiki script: meta ******************************************************************************** ------------------------------------------------------------------------------*/ app.wikis.scripts.set ( 'meta_wiki' , 'meta' , " app.files.repos { set('trg_file_meta' , 'meta.wikimedia.org' , 'meta.wikimedia.org' ).fsys_('wnt'); } app.wikis.get('meta.wikimedia.org').files.repos { add('src_http_commons', 'trg_file_commons'); } " ) ; /******************************************************************************* dynamic wiki script: species ******************************************************************************** ------------------------------------------------------------------------------*/ app.wikis.scripts.set ( 'species_wiki' , 'species' , " app.files.repos { set('trg_file_species', 'species.wikimedia.org' , 'species.wikimedia.org' ).fsys_('wnt').primary_('y'); } app.wikis.get('species.wikimedia.org').files.repos { add('src_http_commons', 'trg_file_commons'); } " ) ; /******************************************************************************* dynamic wiki script: wikimediafoundation ******************************************************************************** ------------------------------------------------------------------------------*/ app.wikis.scripts.set ( 'wikimediafoundation_wiki' , 'wikimediafoundation' , // set wmf location to "/wikipedia/foundation/" not "/wikimediafoundation/en/" " app.files.repos { set('src_http_~{wiki_key}', 'https://upload.wikimedia.org/wikipedia/foundation/' , '~{wiki_key}').ext_rules_('img_only'); set('trg_file_~{wiki_key}', '~{wiki_key}' , '~{wiki_key}').fsys_('wnt').primary_('y') } app.wikis.get('~{wiki_key}').files.repos.clear { add('src_http_~{wiki_key}' , 'trg_file_~{wiki_key}').repo_id_(1); add('src_http_commons' , 'trg_file_commons').repo_id_(0); } " ) ; /******************************************************************************* url_aliases: shortcuts for url bar; see [[Help:Address_bar/Shortcuts]] *******************************************************************************/ // OBSOLETED: DATE:2017-03-27 // app.gui.win_opts.search_box_fmt = 'Special:AllPages?from=~{search}&namespace=0&hideredirects=0'; /******************************************************************************* xwikis: aliases by lang ******************************************************************************** this section has two primary functions 1) assigns a display name to the language codes; for example 'en' is English note that the name is in English. For example, 'fr' is French, not Français 2) groups the languages by tiers note that the tiers roughly follow the groups on English Wikipedia's Main Page ------------------------------------------------------------------------------*/ app.xwiki_langs_load( " 0|Tier 0 1|de|German 1|en|English 1|es|Spanish 1|fr|French 1|it|Italian 1|ja|Japanese 1|nl|Dutch 1|pl|Polish 1|pt|Portuguese 1|ru|Russian 0|Tier 1 1|ar|Arabic 1|ca|Catalan 1|cs|Czech 1|da|Danish 1|eo|Esperanto 1|fa|Persian 1|fi|Finnish 1|hu|Hungarian 1|id|Indonesian 1|kk|Kazakh 1|ko|Korean 1|lt|Lithuanian 1|no|Norwegian 1|ro|Romanian 1|sk|Slovak 1|sr|Serbian 1|sv|Swedish 1|tr|Turkish 1|uk|Ukrainian 1|vi|Vietnamese 1|zh|Chinese (Zhōng Wén) 0|Tier 2 1|bg|Bulgarian 1|el|Greek 1|et|Estonian 1|eu|Basque 1|gl|Galician 1|he|Hebrew 1|hr|Croatian 1|ms|Malay 1|nn|Norwegian (Nynorsk) 1|sh|Serbocroatian 1|simple|Simple English 1|sl|Slovenian 1|th|Thai 1|vo|Volapük 0|Tier 3 1|hi|Hindi 1|ia|Interlingua (IALA) 1|la|Latin 0|Others 1|aa|Afar 1|ab|Abkhaz 1|ace|Aceh 1|af|Afrikaans 1|ak|Akan 1|aln|Gheg Albanian 1|als|Alemannic 1|am|Amharic 1|an|Aragonese 1|ang|Old English 1|arc|Aramaic 1|arn|Mapudungu 1|ary|Moroccan Spoken 1|arz|Egyptian Spoken 1|as|Assamese 1|ast|Asturian 1|av|Avar 1|avk|Kotava 1|ay|Aymara 1|az|Azerbaijani 1|ba|Bashkir 1|bar|Bavarian 1|bat-smg|Samogitian 1|bcc|Southern Balochi 1|bcl|Bikol 1|be|Belarusian (norm...) 1|be-tarask|Belarusian (Tara...) 1|be-x-old|Belarusian (Tara orth...) 1|bh|Bhojpuri 1|bi|Bislama 1|bjn|Banjarese 1|bm|Bambara 1|bn|Bengali 1|bo|Tibetan 1|bpy|Bishnupriya Manipuri 1|bqi|Bakthiari 1|br|Breton 1|bs|Bosnian 1|bug|Bugis 1|bxr|Buryat 1|cbk-zam|Zamboanga Chavacano 1|cdo|Min Dong 1|ce|Chechen 1|ceb|Cebuano 1|ch|Chamorro 1|cho|Choctaw 1|chr|Cherokee 1|chy|Cheyenne 1|ckb|Sorani 1|co|Corsican 1|cps|Capiznon 1|cr|Cree 1|crh|Crimean Tatar 1|crh-cyrl|Crimean Tatar (Cyrillic) 1|crh-latn|Crimean Tatar (Latin) 1|csb|Cassubian 1|cu|Old Church Slavonic 1|cv|Chuvash 1|cy|Welsh 1|de-at|Austrian German 1|de-ch|Swiss Standard German 1|de-formal|German - formal 1|diq|Zazaki 1|dsb|Lower Sorbian 1|dv|Dhivehi 1|dz|Bhutani 1|ee|Éwé 1|eml|Emiliano-Romagnolo 1|en-gb|British English 1|ext|Extremaduran 1|ff|Fulfulde 1|fiu-vro|Võro 1|fj|Fijian 1|fo|Faroese 1|frc|Cajun French 1|frp|Arpitan 1|frr|North Frisian 1|fur|Friulian 1|fy|Frisian 1|ga|Irish 1|gag|Gagauz 1|gan|Gan 1|gan-hans|Gan (Simplified Han) 1|gan-hant|Gan (Traditional Han) 1|gd|Scots Gaelic 1|glk|Gilaki 1|gn|Guaraní 1|got|Gothic 1|grc|Ancient Greek 1|gsw|Alemannic 1|gu|Gujarati 1|gv|Manx 1|ha|Hausa 1|hak|Hakka 1|haw|Hawaiian 1|hif|Fijian Hindi 1|hif-latn|Fiji Hindi (latin) 1|hil|Hiligaynon 1|ho|Hiri Motu 1|hsb|Upper Sorbian 1|ht|Haitian Creole 1|hy|Armenian 1|hz|Herero 1|ie|Interlingue (Occidental) 1|ig|Igbo 1|ii|Sichuan Yi 1|ik|Inupiak 1|ike-cans|Inuktitut 1|ike-latn|Inuktitut (Latin script) 1|ilo|Ilokano 1|inh|Ingush 1|io|Ido 1|is|Icelandic 1|iu|Inuktitut 1|jbo|Lojban 1|jut|Jutish 1|jv|Javanese 1|ka|Georgian 1|kaa|Karakalpak 1|kab|Kabyle 1|kbd|Kabardian 1|kbd-cyrl|Kabardian (Cyrillic) 1|kg|Kongo 1|ki|Gikuyu 1|kiu|Kirmanjki 1|kj|Kwanyama 1|kk-arab|Kazakh Arabic 1|kk-cn|Kazakh (China) 1|kk-cyrl|Kazakh Cyrillic 1|kk-kz|Kazakh (Kazakhstan) 1|kk-latn|Kazakh Latin 1|kk-tr|Kazakh (Turkey) 1|kl|Inuktitut, Greenlandic 1|km|Khmer, Central 1|kn|Kannada 1|ko-kp|Korean (DPRK) 1|koi|Komi-Permyak 1|kr|Kanuri, Central 1|krc|Karachay-Balkar 1|kri|Krio 1|krj|Kinaray-a 1|ks|Kashmiri 1|ksh|Ripuarian 1|ku|Kurdish 1|ku-arab|Northern Kurdish 1|ku-latn|Northern Kurdish (Latin) 1|kv|Komi-Zyrian (Cyrillic) 1|kw|Cornish 1|ky|Kirghiz 1|lad|Ladino 1|lb|Luxemburguish 1|lbe|Lak 1|lez|Lezgi 1|lfn|Lingua Franca Nova 1|lg|Ganda 1|li|Limburgian 1|lij|Ligurian 1|lmo|Lombard 1|ln|Lingala 1|lo|Laotian 1|loz|Lozi 1|ltg|Latgalian 1|lv|Latvian 1|lzh|Literary Chinese 1|lzz|Laz 1|mai|Maithili 1|map-bms|Banyumasan 1|mdf|Moksha 1|mg|Malagasy 1|mh|Marshallese 1|mhr|Eastern Mari 1|mi|Maori 1|min|Minangkabau 1|mk|Macedonian 1|ml|Malayalam 1|mn|Halh Mongolian (Cyrillic) 1|mo|Moldovan 1|mr|Marathi 1|mrj|Hill Mari 1|mt|Maltese 1|mus|Muskogee/Creek 1|mwl|Mirandese 1|my|Burmese 1|myv|Erzya 1|mzn|Mazanderani 1|na|Nauruan 1|nah|Nahuatl 1|nan|Min-nan 1|nap|Neapolitan 1|nb|Norwegian (Bokmal) 1|nds|Low German 1|nds-nl|Dutch Low Saxon 1|ne|Nepali 1|new|Newar / Nepal Bhasa 1|ng|Ndonga 1|niu|Niuean 1|nl-informal|Dutch (informal) 1|nov|Novial 1|nrm|Norman 1|nso|Northern Sotho 1|nv|Navajo 1|ny|Chichewa 1|oc|Occitan 1|om|Oromo 1|or|Oriya 1|os|Ossetic 1|pa|Punjabi 1|pag|Pangasinan 1|pam|Pampanga 1|pap|Papiamentu 1|pcd|Picard 1|pdc|Pennsylvania German 1|pdt|Plautdietsch 1|pfl|Palatinate German 1|pi|Pali 1|pih|Norfuk/Pitcairn 1|pms|Piedmontese 1|pnb|Western Punjabi 1|pnt|Pontic Greek 1|prg|Prussian 1|ps|Pashto 1|pt-br|Brazilian Portuguese 1|qu|Quechua 1|rgn|Romagnol 1|rif|Tarifit 1|rm|Raeto-Romance 1|rmy|Vlax Romany 1|rn|Kirundi 1|roa-rup|Aromanian 1|roa-tara|Tarantino 1|rue|Rusyn 1|ruq|Megleno-Romanian 1|ruq-cyrl|Megleno-Romanian (Cyrillic) 1|ruq-latn|Megleno-Romanian (Latin) 1|rw|Kinyarwanda 1|sa|Sanskrit 1|sah|Sakha 1|sc|Sardinian 1|scn|Sicilian 1|sco|Scots 1|sd|Sindhi 1|sdc|Sassarese 1|se|Northern Sami 1|sei|Seri 1|sg|Sango/Sangho 1|sgs|Samogitian 1|shi|Tachelhit 1|si|Sinhalese 1|sli|Lower Selisian 1|sm|Samoan 1|sma|Southern Sami 1|sn|Shona 1|so|Somali 1|sq|Albanian 1|sr-ec|Serbian Cyrillic 1|sr-el|Serbian Latin 1|srn|Sranan Tongo 1|ss|Swati 1|st|Southern Sotho 1|stq|Saterland Frisian 1|su|Sundanese 1|sw|Swahili 1|szl|Silesian 1|ta|Tamil 1|tcy|Tulu 1|te|Telugu 1|tet|Tetun 1|tg|Tajiki 1|tg-cyrl|Tajiki (Cyrllic) 1|tg-latn|Tajiki (Latin) 1|ti|Tigrinya 1|tk|Turkmen 1|tl|Tagalog 1|tn|Setswana 1|to|Tonga 1|tokipona|Toki Pona 1|tp|Toki Pona (non-standard) 1|tpi|Tok Pisin 1|ts|Tsonga 1|tt|Tatar 1|tt-cyrl|Tatar (Cyrillic script) 1|tt-latn|Tatar (Latin script) 1|tum|Tumbuka 1|tw|Twi 1|ty|Tahitian 1|tyv|Tyvan 1|udm|Udmurt 1|ug|Uyghur 1|ug-arab|Uyghur (Arabic script) 1|ug-latn|Uyghur (Latin script) 1|ur|Urdu 1|uz|Uzbek 1|ve|Venda 1|vec|Venetian 1|vep|Veps 1|vls|West Flemish 1|vmf|Upper Franconian 1|vot|Vod 1|vro|Võro 1|wa|Walloon 1|war|Waray-Waray 1|wo|Wolof 1|wuu|Wu Chinese 1|xal|Kalmyk-Oirat 1|xh|Xhosan 1|xmf|Mingrelian 1|yi|Yiddish 1|yo|Yoruba 1|yue|Cantonese 1|za|Zhuang 1|zea|Zeeuws/Zeaws 1|zh-classical|Classical Chinese 1|zh-cn|Chinese (PRC) 1|zh-hans|Mandarin Chinese (Simplified) 1|zh-hant|Mandarin Chinese (Traditional) 1|zh-hk|Chinese (Hong Kong) 1|zh-min-nan|Min-nan 1|zh-mo|Chinese (Macau) 1|zh-my|Chinese (Malaysia) 1|zh-sg|Chinese (Singapore) 1|zh-tw|Chinese (Taiwan) 1|zh-yue|Cantonese 1|zu|Zulu " );