diff options
| author | rinpatch <rinpatch@sdf.org> | 2021-01-20 23:49:34 +0300 |
|---|---|---|
| committer | rinpatch <rinpatch@sdf.org> | 2021-01-21 14:24:16 +0300 |
| commit | 11c7355749b6e0180841dd02604a06dd924dd217 (patch) | |
| tree | 3b6848986b50e51ad730460b50804f1979883ac7 /src/components/interface_language_switcher/interface_language_switcher.vue | |
| parent | fe78ed78fdc95bb5dac4d11136673da4e5e57f4b (diff) | |
Use native language names in the language picker
This seems more intuitive to me and is what I've seen in most other
language pickers.
Diffstat (limited to 'src/components/interface_language_switcher/interface_language_switcher.vue')
| -rw-r--r-- | src/components/interface_language_switcher/interface_language_switcher.vue | 28 |
1 files changed, 13 insertions, 15 deletions
diff --git a/src/components/interface_language_switcher/interface_language_switcher.vue b/src/components/interface_language_switcher/interface_language_switcher.vue index 524ec5e9..dc3bd408 100644 --- a/src/components/interface_language_switcher/interface_language_switcher.vue +++ b/src/components/interface_language_switcher/interface_language_switcher.vue @@ -12,11 +12,11 @@ v-model="language" > <option - v-for="(langCode, i) in languageCodes" - :key="langCode" - :value="langCode" + v-for="lang in languages" + :key="lang.code" + :value="lang.code" > - {{ languageNames[i] }} + {{ lang.name }} </option> </select> <FAIcon @@ -29,6 +29,7 @@ <script> import languagesObject from '../../i18n/messages' +import localeService from '../../services/locale/locale.service.js' import ISO6391 from 'iso-639-1' import _ from 'lodash' import { library } from '@fortawesome/fontawesome-svg-core' @@ -42,12 +43,8 @@ library.add( export default { computed: { - languageCodes () { - return languagesObject.languages - }, - - languageNames () { - return _.map(this.languageCodes, this.getLanguageName) + languages () { + return _.map(languagesObject.languages, (code) => ({ code: code, name: this.getLanguageName(code) })).sort((a, b) => a.name.localeCompare(b.name)) }, language: { @@ -61,12 +58,13 @@ export default { methods: { getLanguageName (code) { const specialLanguageNames = { - 'ja': 'Japanese (日本語)', - 'ja_easy': 'Japanese (やさしいにほんご)', - 'zh': 'Simplified Chinese (简体中文)', - 'zh_Hant': 'Traditional Chinese (繁體中文)' + 'ja_easy': 'やさしいにほんご', + 'zh': '简体中文', + 'zh_Hant': '繁體中文' } - return specialLanguageNames[code] || ISO6391.getName(code) + const languageName = specialLanguageNames[code] || ISO6391.getNativeName(code) + const browserLocale = localeService.internalToBrowserLocale(code) + return languageName.charAt(0).toLocaleUpperCase(browserLocale) + languageName.slice(1) } } } |
