What is the Universal Language Selector
Universal Language Selector is a MediaWiki extension that allows users to change language settings and configurations as per their preference. It uses the jQuery libraries from Project Milkshake.
What are the language settings that I can modify using ULS
Universal Language Selector offers the following features on Wikimedia wikis:
- User interface language selection for logged in users.
- Web fonts
- Input methods
How does Universal Language Selector determine which languages I may understand
ULS queries a service that determines your originating country based on your IP address. This is inaccurate in some cases. Based on the country code, most often spoken languages are suggested for you.
The "common languages" for a country are hard to determine as well. For this reason, they come from the Milkshake libraries which we aim to maintain with other interested software projects beyond MediaWiki/Wikimedia. Essentially, however, most of the data for it comes from Unicode (see CLDR for more info) and can be seen on the Territory-Language Information table. If you have suggestions to improve the languages currently suggested to you by ULS, first check if that table has the best data; if it can be improved, click "add new" for your country/language and propose changes. Unicode maintainers are helpful and no registration is required.
Keep in mind the CLDR definitions and remember to mention reliable sources for the specific data you propose, like for instance an official statistics bureau or a scientific survey (for literacy figures), or national and local laws (to prove a language can be used to communicate with a national/local administration).
Where is Universal Language Selector available
The current planning is to make Universal Language Selector available on all Wikimedia wikis as soon as possible. Check the deployment planning for details.
How can I use Universal Language Selector
On projects with language versions (Wikipedia, Wikibooks, Wikiversity, Wiktionary, Wikiquote, Wikivoyage, Wikinews, Wikisource) Universal Language Selector is visible as a cog icon in the menu area for interlanguage links. In Wikimedia projects without language versions (for example Wikimedia Commons, Meta-Wiki, Wikispecies and this wiki mediawiki.org), ULS is available as an icon in the personal toolbar at the top of the page.
Click the icon, make settings and confirm them to have the settings remain active.
A small keyboard icon will appear for all fields that allow text input. Select it to make changes to the settings.
See "Location for the Selector" to learn more about the choice of the location.
How can I change the Display language
The language used to display the MediaWiki interface messages can be changed using the Language Settings panel of ULS.
On Wikimedia projects, this feature is only available for logged-in users.
After logging in, you can open the Language Settings panel [on the sidebar or at the top] and navigate to the Language tab of the Display settings.
For quick selection, ULS will display a list of possible languages based on your location. You can click to select the language of your choice.
If the language you are looking for is not on the panel, you can click on the '...' button to open the longer list of languages to search and select.
A small popup (technically called "undo popover" or "tipsy") will also appear when ULS changes the language compared to your previous setting, so that you can more easily change again. In some cases, a tooltip is displayed instead.
Do I need to be logged in to be able to change the Display language
Yes. The display language can only be changed by logged-in users.
If I change the Display language, will this change the language of the content on the page I am viewing
No. ULS does not change the language of the content on the page. It can be used to only change the interface language of MediaWiki (sometimes called "display language" in this FAQ).
However, the Translate extension, where installed, may be configured to redirect the user to existing translations of a page in some cases where ULS has changed interface language.
I see boxes in the text when I select my language
We call these boxes 'tofu' and this occurs when there are no fonts for the language that has been selected.
You can install a local font on your system to correct this situation.
But to prevent a similar problem in future we would like to ensure that our web-fonts library has fonts for your language.
Please let us know, preferably through https://phabricator.wikimedia.org
Can I change the font for the language
Font for a language can be changed by the user from the 'Font' tab within the Display settings.
Anonymous users can change the font only for the language that is in use.
Logged-in users can change the font for all languages.
How do you decide a default font for a language or script?
A default font will be set if a language or script has a problematic support history on a wide range of desktop computers and other devices. Even though most modern operating systems provide options to support a language or script well, this may require a user to take action first, such as installing software or changing the operating system settings. Our experience shows that a lot of users don't do this and give up, and we want to provide a quick and automatic way to make the text readable.
Universal Language Selector only provides freely licensed fonts. We choose default fonts based on popularity of the fonts (eg: default font for a script in Linux distributions, widely used in portals in the language, etc.) and based on input from potential users. If the default font has a bug that prevents users from using it, we will try to use an alternate font if available. For this a valid bug report is needed in Phabricator with high impact.
What if the default font chosen is not the best one for the language? Can this be changed?
Actions on Universal Language Selector now has event logging, see the queries and data. This will allow developers to analyze user behavior and changes in settings. Based on user behavior and other metrics, certain future changes may surface.
This means that the input tool and font support in WMFs tools need to be integrated with the eventlogging system. Any change in default input method or fonts must be supported by the usage statistics: out of FontA, FontB, for a language LANG, if FontA is usage is greater than FontB, FontB should be the default font for LANG. If system font is mostly preferred for that LANG, then by default we need to disable the webfont. The same logic applies for input methods.
Can I disable the default font that ULS has chosen for my language?
The default font setting can be disabled in the settings.
If the language is well supported by Grade A browsers and operating systems, default option for fonts, input methods may be the ones provided by the system. Well supported means, the browsers and operating systems provide a bug free font and input method for that language by default (bundled with OS, not requiring special steps to install).
There does not seem to be a font for my language. How can I request for a new font to be included in ULS
You can file a bug on Phabricator requesting for a font to be added for your language.
It is expected that you will also provide suggestions about the fonts and point us to where we can find them.
It is advisable to also seek consensus from other members of your language community about inclusion of the new font.
What information will be necessary for a new font to be included into ULS
- The name of the font
- URL to the source of the font
- License for the font that allows it to be freely used, distributed and modified.
This information can be mentioned in Phabricator when requesting for a font to be included.
I would like to write in a different language. How can I change the settings to do so
- Sidebar: You can go to the 'Input Settings' section in the Language Settings panel and select a language displayed on the buttons or from the 'Language Selection' popup.
- Keyboard menu: The languages are displayed as a list and a selection can be made from here.
I have chosen a language, but I still cannot write in that language. What could be wrong
When you select a language, you will be presented with a list of input methods for that language. If no input methods exist within ULS for that language the native keyboard on your local computer will be used for input. If input methods are not available through either of the two options, then you will not be able to write in the selected language.
I would like to change the keyboard for the language that I have chosen. How can I do that
The input method/keyboard options within ULS for a language are displayed as a list in both the Language Settings panel as well as in the keyboard menu from a text input box.
A default keyboard is selected for each language. To use a different keyboard, you can make a selection from this list.
I have a keyboard on my computer and I do not want to use the keyboard in ULS. Can I disable the ULS keyboard completely
The ULS input methods can be disabled in 2 ways:
- From the sidebar: by clicking on the "Use native keyboard" button within the input settings option in the Language Settings panel
- From the Keyboard menu: by clicking on "Use native keyboard" from the keyboard menu that is displayed when the user clicks on the keyboard icon from an input field (like the search field)
Can I disable the ULS keyboard for only 1 language, without disabling the ULS keyboard completely
Yes. To do so, please select 'Use Native Keyboard' from the drop-down menu that is displayed in the list of keyboards available for that language.
How do you decide what is the order of input methods?
We assess this for each language separately. Preferably it is the most practical and useful for that language, according to a consultation with potential users, to be the first one. If the default input method has a bug that prevents users from using it, it will be disabled as preferred or default input method. For this a valid bug report is needed in Phabricator with high impact. Until the bug is resolved, the next available input method will be presented on top of the list.
What if the default input method is not the best one for the language? Can this be changed?
Can I set all the Language Settings from within my user preference page
Yes. To configure the language settings, navigate to your user preference page and click on the "More language settings" option in the "Internationalisation" section under the "User profile" tab.
Why can anonymous users not use Universal Language Selector to change their interface language
This option is disabled on Wikimedia wikis, because the Wikimedia cache infrastructure currently does not support this. We are looking into making this possible in the future. There is no timeline for this. See Allow setting the UI to a language other than English for anonymous users in Phabricator.
How can I disable Universal Language Selector
Only part of the functionality can be disabled.
Input methods can be completely disabled by clicking the keyboard icon and clicking "Disable input tools".
Input methods can also be disabled per input element by adding
Web fonts can only be disabled per language in the settings.
Can I translate the interface of Universal Language Selector in my language
Yes! You can do this at translatewiki.net. Complete translation of the following two message groups once you are a registered translator:
Where can I report a problem
Please report problems and suggestions in Phabricator. Please ensure to report as much detail as you can.
What fonts are included?
An up-to-date list is in the fonts directory of Wikimedia’s Git repository (each folder has metadata in the file font.ini). Here is the list, as of 2013-11-22 (v1.4.0-Snapshot):
|Font||CSS font-family name||For languages (* denotes default font)||Additional support|
|AbyssinicaSIL 1.200||AbyssinicaSIL||Amharic (am*), Tigrinya (ti*), Ge‘ez (gez*), Tigre (tig*)||Ethiopic/Ge‘ez script (Ethi)|
|Akkadian 2.56||Akkadian||Akkadian (akk*), Sumerian (sux*)|
|Alef 1.0||Alef, 'Alef Bold'||Hebrew (he), Yiddish (yi), Old Hebrew (hbo)|
|amiri 1.0.2||Amiri, 'Amiri Bold', 'Amiri Italic', 'Amiri Bold Italic'||Arabic (ar), Standard Arabic (arb), Persian (fa)|
|AnjaliOldLipi .0.730||AnjaliOldLipi||Malayalam (ml)||Malayalam script (Mlym)|
|Autonym v 20131118||Autonym||multiple languages (mul)|
|CharisSIL 4.011||CharisSIL||Min Dong (cdo), Min Nan (nan)||Latin script (Latn)|
|DoulosSIL 4.112||'Doulos Sil'||Min Nan (nan)|
|EastSyriacAdiabene 1.21||'East Syriac Adiabene'||Syriac (syc), Imperial Aramaic (arc)|
|EstrangeloEdessa 1.21||'Estrangelo Edessa'||Syriac (syc*), Imperial Aramaic (arc*)|
|FreeFontThana 1.0||FreeFont-Thaana, 'FreeFont-Thaana Bold]||Maldivian (dv*)|
|GentiumPlus 1.510||GentiumPlus, 'GentiumPlus Italic'||Greek (grc)||Greek script (Grek), Latin (Latn), Cyrillic (Cyrl), IPA (und-fonipa)|
|Gubbi 1.3||Gubbi||Kannada (kn), Tulu (tcy)|
|Hanuman 1.0||Hanuman, 'Hanuman Bold'||Khmer (km)|
|IranianSans 1.0||'Iranian Sans'||Persian (fa)||Arabic script (Arab)|
|Jomolhari 0.003||Jomolhari||Tibetan (bo*, bod*), Dzongkha (dz*), Sino-Tibetan (adx*), Dolpo (dre*), goe*, Humla (hut*), Nubri (kte*), Khams Tibetan (khg*), Khamba (kbg*), Lhomi (lhm*), Ladakhi (lbj*), Lowa (loy*), Lunanakha (luk*), Layakha (lya*), Mukha-Dora (muk*), Walungge (ola*), Old Tibetan (otb*), Tichurong (tcn*), Thudam (thw*), Tseku (tsk*), Classical Tibetan (xct*), Zangskari (zau*)|
|Junicode 2013-01-17||Junicode, 'Junicode Italic', 'Junicode Bold', 'Junicode Bold Italic'||Old English (ang)|
|KhmerOS 1.10||KhmerOS||Khmer (km)|
|KhmerOSbattambang 1.10||KhmerOSbattambang||Khmer (km*)||Khmer script (Khmr)|
|LinuxLibertine 5.3.0||'Linux Libertine', 'Linux Libertine Bold', 'Linux Libertine Italic', 'Linux Libertine Bold Italic'||–|
|lklug 0.6||lklug||Sinhalese (si)|
|LohitAssamese 2.5.3||'Lohit Assamese'||Assamese (as)||Bengali (bn), Bishnupriya Manipuri (bpy) in Assamese script|
|LohitBengali (default) 2.5.3||'Lohit Bengali'||Bengali (bn), Bishnupriya Manipuri (bpy)||Assamese (as) in Bengali script (Beng)|
|LohitDevanagari 2.5.3||'Lohit Devanagari'||Bhojpuri (bh*, bho*), Hindi (hi*), Konkani (kok*), Goan Konkani (gom*), Maithili (mai*), Sanskrit (sa*)||Marathi (mr), Ahirani (ahr) in Devanagari script (Deva)|
|LohitGujarati 2.5.3||'Lohit Gujarati'||Gujarati (gu*)||Gujarati script (Gujr)|
|LohitKannada 2.5.3||'Lohit Kannada'||Kannada (kn*), Tulu (tcy*)||Kannada script (Knda)|
|LohitMarathi 2.5.3||'Lohit Marathi'||Ahirani (ahr*), Marathi (mr*)|
|LohitNepali 2.5.3||'Lohit Nepali'||Nepali (ne*)|
|LohitOriya 2.5.3||'Lohit Oriya'||Oriya (or*)||Oriya script (Orya)|
|LohitPunjabi 2.5.3||'Lohit Punjabi'||Punjabi (pa*)||Gurmukhi script (Guru)|
|LohitTamil 2.5.3||'Lohit Tamil'||Tamil (ta)||Tamil script (Taml)|
|LohitTamilClassical 2.5.3||'Lohit Tamil Classical'||Tamil (ta)||Tamil script (Taml)|
|LohitTelugu 2.5.3||'Lohit Telugu'||Telugu (te*)||Telugu script (Telu)|
|madan 2||Madan||Nepali (ne)||Hindi (hi), Marathi (mr), Maithili (mai), Bhojpuri (bh, bho), Goan Konkani (gom), Ahirani (ahr) in Devanagari script (Deva)|
|Meera 6.0||Meera||Malayalam (ml)||Malayalam script (Mlym)|
|MiriamCLM 0.130||'Miriam CLM'||Hebrew (he)||Hebrew script (Hebr)|
|Myanmar3 3.0||Myanmar3||Burmese (my)||Myanmar (Burmese) script (Mymr)|
|NafeesWeb 1.2||NafeesWeb||Urdu (ur)|
|Nazli 0.4||Nazli||Persian (fa)|
|Nokora 1.10||'Nokora Regular', 'Nokora Bold'||Khmer (km)|
|NuosuSIL 2.1.1||'Nuosu SIL'||Sichuan Yi (ii*)|
|OpenDyslexic 2.1.0+git060dc841||OpenDyslexic, 'OpenDyslexic Bold', 'OpenDyslexic Italic', 'OpenDyslexic BoldItalic'||Afrikaans (af), [unknown] (bk), Catalan (ca), Welsh (cy), Danish (da), German (de), English (en), Spanish (es), Estonian (et), Finnish (fi), Faroese (fo), French (fr), West Frisian (fy), Irish (ga), Scottish Gaelic (gd), Galician (gl), Hungarian (hu), Indonesian (id), Icelandic (is), Italian (it), Luxembourgish (lb), Limburgish (li), Māori (mi), Malay (ms), Norwegian Bokmål (nb), Dutch (nl), Occitan (oc), Polish (pl), Portuguese (pt), Albanian (sq), Swedish (sv), Swahili (sw), Tagalog (tl), Turkish (tr), Walloon (wa)|
|OskiEast 2.200||OskiEast, 'OskiEast Bold', 'OskiEast Italic', 'OskiEast Bold Italic'||Cree (cr*), Inuktitut (iu)|
|Padauk 2.8||Padauk||Burmese (my)||Myanmar (Burmese) script (Mymr)|
|Pagul 1.0||Pagul||Saurashtra (saz*)||Saurashtra script (Saur)|
|Pangururan 1.0.5||Pangururan||Batak Toba (bbc), Batak btk|
|Phetsarath 1.01||Phetsarath, Phetsarath-Bold||Lao (lo*)|
|Saab 0.91||Saab||Punjabi (pa)||Gurmukhi script (Guru)|
|saweri 2||Saweri||Buginese (bug*), Makassar (mak*)|
|SertoUrhoy 1.20||SertoUrhoy||Syriac (syc), Imperial Aramaic (arc)|
|Shapour 001.000||Shapour||Pahlavi Middle Persian (pal*)|
|SiyamRupali 1.070||'Siyam Rupali'||Bengali (bn*), Bishnupriya Manipuri (bpy*)|
|Suwannaphum 2.00||Suwannaphum||Khmer (km)|
|TaameyFrankCLM 0.110||'Taamey Frank CLM'||Old Hebrew (hbo*), Hebrew (he)||Hebrew script (Hebr)|
|TharLon 1.003||TharLon||Burmese (my*)|
|Thendral 1.0||Thendral||Tamil (ta)||Tamil script (Taml)|
|Thenee 1.0||Thenee||Tamil (ta)||Tamil script (Taml)|
|TuladhaJejeg 2.0.1||'Tuladha Jejeg'||Javanese (jv), Javanese in Javanese script (jv-Java*)|
|UnifrakturMaguntia 2012-10-19||UnifrakturMaguntia||–||Latin fraktur script (Latf)|
|utkal 0.13||Utkal||Oriya (or)||Oriya script (Orya)|
|Xerxes 1.301||Xerxes||Old Persian (peo*)|
Are there metrics and statistics on the usage and impact?
Yes. We identified some metrics for the Universal Language Selector and we are now collecting aggregated data with EventLogging for a number of actions performed with ULS: see the queries for ULS usage statistics and some data linked from that page.