forked from AkkomaGang/akkoma-fe
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.
This commit is contained in:
parent
fe78ed78fd
commit
11c7355749
3 changed files with 26 additions and 15 deletions
|
@ -14,6 +14,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
- Don't filter own posts when they hit your wordfilter
|
- Don't filter own posts when they hit your wordfilter
|
||||||
|
- Language picker now uses native language names
|
||||||
|
|
||||||
## [2.2.2] - 2020-12-22
|
## [2.2.2] - 2020-12-22
|
||||||
### Added
|
### Added
|
||||||
|
|
|
@ -12,11 +12,11 @@
|
||||||
v-model="language"
|
v-model="language"
|
||||||
>
|
>
|
||||||
<option
|
<option
|
||||||
v-for="(langCode, i) in languageCodes"
|
v-for="lang in languages"
|
||||||
:key="langCode"
|
:key="lang.code"
|
||||||
:value="langCode"
|
:value="lang.code"
|
||||||
>
|
>
|
||||||
{{ languageNames[i] }}
|
{{ lang.name }}
|
||||||
</option>
|
</option>
|
||||||
</select>
|
</select>
|
||||||
<FAIcon
|
<FAIcon
|
||||||
|
@ -29,6 +29,7 @@
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import languagesObject from '../../i18n/messages'
|
import languagesObject from '../../i18n/messages'
|
||||||
|
import localeService from '../../services/locale/locale.service.js'
|
||||||
import ISO6391 from 'iso-639-1'
|
import ISO6391 from 'iso-639-1'
|
||||||
import _ from 'lodash'
|
import _ from 'lodash'
|
||||||
import { library } from '@fortawesome/fontawesome-svg-core'
|
import { library } from '@fortawesome/fontawesome-svg-core'
|
||||||
|
@ -42,12 +43,8 @@ library.add(
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
computed: {
|
computed: {
|
||||||
languageCodes () {
|
languages () {
|
||||||
return languagesObject.languages
|
return _.map(languagesObject.languages, (code) => ({ code: code, name: this.getLanguageName(code) })).sort((a, b) => a.name.localeCompare(b.name))
|
||||||
},
|
|
||||||
|
|
||||||
languageNames () {
|
|
||||||
return _.map(this.languageCodes, this.getLanguageName)
|
|
||||||
},
|
},
|
||||||
|
|
||||||
language: {
|
language: {
|
||||||
|
@ -61,12 +58,13 @@ export default {
|
||||||
methods: {
|
methods: {
|
||||||
getLanguageName (code) {
|
getLanguageName (code) {
|
||||||
const specialLanguageNames = {
|
const specialLanguageNames = {
|
||||||
'ja': 'Japanese (日本語)',
|
'ja_easy': 'やさしいにほんご',
|
||||||
'ja_easy': 'Japanese (やさしいにほんご)',
|
'zh': '简体中文',
|
||||||
'zh': 'Simplified Chinese (简体中文)',
|
'zh_Hant': '繁體中文'
|
||||||
'zh_Hant': 'Traditional Chinese (繁體中文)'
|
|
||||||
}
|
}
|
||||||
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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
12
src/services/locale/locale.service.js
Normal file
12
src/services/locale/locale.service.js
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
const specialLanguageCodes = {
|
||||||
|
'ja_easy': 'ja',
|
||||||
|
'zh_Hant': 'zh-HANT'
|
||||||
|
}
|
||||||
|
|
||||||
|
const internalToBrowserLocale = code => specialLanguageCodes[code] || code
|
||||||
|
|
||||||
|
const localeService = {
|
||||||
|
internalToBrowserLocale
|
||||||
|
}
|
||||||
|
|
||||||
|
export default localeService
|
Loading…
Reference in a new issue