|
|
|
@ -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)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|