From 11c7355749b6e0180841dd02604a06dd924dd217 Mon Sep 17 00:00:00 2001
From: rinpatch <rinpatch@sdf.org>
Date: Wed, 20 Jan 2021 23:49:34 +0300
Subject: 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.
---
 .../interface_language_switcher.vue                | 28 ++++++++++------------
 1 file changed, 13 insertions(+), 15 deletions(-)

(limited to 'src/components/interface_language_switcher/interface_language_switcher.vue')

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)
     }
   }
 }
-- 
cgit v1.2.3-70-g09d2

