show language name in current language
This commit is contained in:
+7
-6
@@ -62,10 +62,6 @@ import {
|
||||
import logger from './logger.js';
|
||||
import services from './services.js';
|
||||
|
||||
function getAllLanguageInfos() {
|
||||
return allLanguages;
|
||||
}
|
||||
|
||||
function getAllLanguageInfoArray(translateFn, includeSystemDefault) {
|
||||
const ret = [];
|
||||
|
||||
@@ -75,10 +71,16 @@ function getAllLanguageInfoArray(translateFn, includeSystemDefault) {
|
||||
}
|
||||
|
||||
const languageInfo = allLanguages[languageTag];
|
||||
let displayName = languageInfo.displayName;
|
||||
let languageNameInCurrentLanguage = translateFn(`language.${languageInfo.name}`);
|
||||
|
||||
if (languageNameInCurrentLanguage && languageNameInCurrentLanguage !== displayName) {
|
||||
displayName = `${languageNameInCurrentLanguage} (${displayName})`;
|
||||
}
|
||||
|
||||
ret.push({
|
||||
languageTag: languageTag,
|
||||
displayName: languageInfo.displayName
|
||||
displayName: displayName
|
||||
});
|
||||
}
|
||||
|
||||
@@ -1537,7 +1539,6 @@ export function translateError(message, translateFn) {
|
||||
|
||||
export function i18nFunctions(i18nGlobal) {
|
||||
return {
|
||||
getAllLanguageInfos: getAllLanguageInfos,
|
||||
getAllLanguageInfoArray: (includeSystemDefault) => getAllLanguageInfoArray(i18nGlobal.t, includeSystemDefault),
|
||||
getLanguageInfo: getLanguageInfo,
|
||||
getDefaultLanguage: getDefaultLanguage,
|
||||
|
||||
@@ -4,6 +4,10 @@
|
||||
"title": "ezBookkeeping"
|
||||
}
|
||||
},
|
||||
"language": {
|
||||
"English": "English",
|
||||
"Simplified Chinese": "Simplified Chinese"
|
||||
},
|
||||
"default": {
|
||||
"currency": "USD",
|
||||
"firstDayOfWeek": "Sunday",
|
||||
|
||||
@@ -4,6 +4,10 @@
|
||||
"title": "ezBookkeeping"
|
||||
}
|
||||
},
|
||||
"language": {
|
||||
"English": "英语",
|
||||
"Simplified Chinese": "简体中文"
|
||||
},
|
||||
"default": {
|
||||
"currency": "CNY",
|
||||
"firstDayOfWeek": "Monday",
|
||||
|
||||
@@ -74,10 +74,10 @@
|
||||
v-bind="props">{{ currentLanguageName }}</v-btn>
|
||||
</template>
|
||||
<v-list>
|
||||
<v-list-item v-for="(lang, locale) in allLanguages" :key="locale">
|
||||
<v-list-item v-for="lang in allLanguages" :key="lang.languageTag">
|
||||
<v-list-item-title
|
||||
class="cursor-pointer"
|
||||
@click="changeLanguage(locale)">
|
||||
@click="changeLanguage(lang.languageTag)">
|
||||
{{ lang.displayName }}
|
||||
</v-list-item-title>
|
||||
</v-list-item>
|
||||
@@ -137,7 +137,7 @@ export default {
|
||||
return 'v' + this.$version;
|
||||
},
|
||||
allLanguages() {
|
||||
return this.$locale.getAllLanguageInfos();
|
||||
return this.$locale.getAllLanguageInfoArray(false);
|
||||
},
|
||||
isDarkMode() {
|
||||
return this.globalTheme.global.name.value === 'dark';
|
||||
|
||||
@@ -135,10 +135,10 @@
|
||||
v-bind="props">{{ currentLanguageName }}</v-btn>
|
||||
</template>
|
||||
<v-list>
|
||||
<v-list-item v-for="(lang, locale) in allLanguages" :key="locale">
|
||||
<v-list-item v-for="lang in allLanguages" :key="lang.languageTag">
|
||||
<v-list-item-title
|
||||
class="cursor-pointer"
|
||||
@click="changeLanguage(locale)">
|
||||
@click="changeLanguage(lang.languageTag)">
|
||||
{{ lang.displayName }}
|
||||
</v-list-item-title>
|
||||
</v-list-item>
|
||||
@@ -216,7 +216,7 @@ export default {
|
||||
return 'v' + this.$version;
|
||||
},
|
||||
allLanguages() {
|
||||
return this.$locale.getAllLanguageInfos();
|
||||
return this.$locale.getAllLanguageInfoArray(false);
|
||||
},
|
||||
isUserRegistrationEnabled() {
|
||||
return isUserRegistrationEnabled();
|
||||
|
||||
@@ -99,10 +99,10 @@
|
||||
v-bind="props">{{ currentLanguageName }}</v-btn>
|
||||
</template>
|
||||
<v-list>
|
||||
<v-list-item v-for="(lang, locale) in allLanguages" :key="locale">
|
||||
<v-list-item v-for="lang in allLanguages" :key="lang.languageTag">
|
||||
<v-list-item-title
|
||||
class="cursor-pointer"
|
||||
@click="changeLanguage(locale)">
|
||||
@click="changeLanguage(lang.languageTag)">
|
||||
{{ lang.displayName }}
|
||||
</v-list-item-title>
|
||||
</v-list-item>
|
||||
@@ -183,7 +183,7 @@ export default {
|
||||
return 'v' + this.$version;
|
||||
},
|
||||
allLanguages() {
|
||||
return this.$locale.getAllLanguageInfos();
|
||||
return this.$locale.getAllLanguageInfoArray(false);
|
||||
},
|
||||
isDarkMode() {
|
||||
return this.globalTheme.global.name.value === 'dark';
|
||||
|
||||
@@ -75,10 +75,10 @@
|
||||
v-bind="props">{{ currentLanguageName }}</v-btn>
|
||||
</template>
|
||||
<v-list>
|
||||
<v-list-item v-for="(lang, locale) in allLanguages" :key="locale">
|
||||
<v-list-item v-for="lang in allLanguages" :key="lang.languageTag">
|
||||
<v-list-item-title
|
||||
class="cursor-pointer"
|
||||
@click="changeLanguage(locale)">
|
||||
@click="changeLanguage(lang.languageTag)">
|
||||
{{ lang.displayName }}
|
||||
</v-list-item-title>
|
||||
</v-list-item>
|
||||
@@ -138,7 +138,7 @@ export default {
|
||||
return 'v' + this.$version;
|
||||
},
|
||||
allLanguages() {
|
||||
return this.$locale.getAllLanguageInfos();
|
||||
return this.$locale.getAllLanguageInfoArray(false);
|
||||
},
|
||||
isWebAuthnAvailable() {
|
||||
return this.settingsStore.appSettings.applicationLockWebAuthn
|
||||
|
||||
@@ -78,10 +78,10 @@
|
||||
v-bind="props">{{ currentLanguageName }}</v-btn>
|
||||
</template>
|
||||
<v-list>
|
||||
<v-list-item v-for="(lang, locale) in allLanguages" :key="locale">
|
||||
<v-list-item v-for="lang in allLanguages" :key="lang.languageTag">
|
||||
<v-list-item-title
|
||||
class="cursor-pointer"
|
||||
@click="changeLanguage(locale)">
|
||||
@click="changeLanguage(lang.languageTag)">
|
||||
{{ lang.displayName }}
|
||||
</v-list-item-title>
|
||||
</v-list-item>
|
||||
@@ -150,7 +150,7 @@ export default {
|
||||
return 'v' + this.$version;
|
||||
},
|
||||
allLanguages() {
|
||||
return this.$locale.getAllLanguageInfos();
|
||||
return this.$locale.getAllLanguageInfoArray(false);
|
||||
},
|
||||
isDarkMode() {
|
||||
return this.globalTheme.global.name.value === 'dark';
|
||||
|
||||
@@ -17,8 +17,8 @@
|
||||
v-bind="props">{{ currentLanguageName }}</v-btn>
|
||||
</template>
|
||||
<v-list>
|
||||
<v-list-item :key="locale" :value="locale" v-for="(lang, locale) in allLanguages">
|
||||
<v-list-item-title class="cursor-pointer" @click="currentLocale = locale">
|
||||
<v-list-item :key="lang.languageTag" :value="lang.languageTag" v-for="lang in allLanguages">
|
||||
<v-list-item-title class="cursor-pointer" @click="currentLocale = lang.languageTag">
|
||||
{{ lang.displayName }}
|
||||
</v-list-item-title>
|
||||
</v-list-item>
|
||||
@@ -110,7 +110,7 @@ export default {
|
||||
}
|
||||
},
|
||||
allLanguages() {
|
||||
return this.$locale.getAllLanguageInfos();
|
||||
return this.$locale.getAllLanguageInfoArray(false);
|
||||
},
|
||||
allPresetCategories() {
|
||||
return this.$locale.getAllTransactionDefaultCategories(this.categoryType, this.currentLocale);
|
||||
|
||||
@@ -77,12 +77,12 @@
|
||||
<f7-list-item
|
||||
link="#" no-chevron popover-close
|
||||
:title="lang.displayName"
|
||||
:key="locale"
|
||||
v-for="(lang, locale) in allLanguages"
|
||||
@click="changeLanguage(locale)"
|
||||
:key="lang.languageTag"
|
||||
v-for="lang in allLanguages"
|
||||
@click="changeLanguage(lang.languageTag)"
|
||||
>
|
||||
<template #after>
|
||||
<f7-icon class="list-item-checked-icon" f7="checkmark_alt" v-if="currentLanguageCode === locale"></f7-icon>
|
||||
<f7-icon class="list-item-checked-icon" f7="checkmark_alt" v-if="currentLanguageCode === lang.languageTag"></f7-icon>
|
||||
</template>
|
||||
</f7-list-item>
|
||||
</f7-list>
|
||||
@@ -231,7 +231,7 @@ export default {
|
||||
return getDesktopVersionPath();
|
||||
},
|
||||
allLanguages() {
|
||||
return this.$locale.getAllLanguageInfos();
|
||||
return this.$locale.getAllLanguageInfoArray(false);
|
||||
},
|
||||
isUserRegistrationEnabled() {
|
||||
return isUserRegistrationEnabled();
|
||||
|
||||
@@ -66,9 +66,9 @@
|
||||
smart-select :smart-select-params="{ openIn: 'popup', popupPush: true, closeOnSelect: true, scrollToSelectedItem: true, searchbar: true, searchbarPlaceholder: $t('Language'), searchbarDisableText: $t('Cancel'), appendSearchbarNotFound: $t('No results'), pageTitle: $t('Language'), popupCloseLinkText: $t('Done') }"
|
||||
>
|
||||
<select v-model="currentLocale">
|
||||
<option :value="languageTag"
|
||||
:key="languageTag"
|
||||
v-for="(lang, languageTag) in allLanguages">{{ lang.displayName }}</option>
|
||||
<option :value="lang.languageTag"
|
||||
:key="lang.languageTag"
|
||||
v-for="lang in allLanguages">{{ lang.displayName }}</option>
|
||||
</select>
|
||||
</f7-list-item>
|
||||
|
||||
@@ -163,7 +163,8 @@
|
||||
</f7-actions-group>
|
||||
</f7-actions>
|
||||
|
||||
<list-item-selection-sheet value-type="index"
|
||||
<list-item-selection-sheet value-type="item"
|
||||
value-field="languageTag"
|
||||
title-field="displayName"
|
||||
:items="allLanguages"
|
||||
v-model:show="showPresetCategoriesChangeLocaleSheet"
|
||||
@@ -205,7 +206,7 @@ export default {
|
||||
computed: {
|
||||
...mapStores(useRootStore, useSettingsStore, useTransactionCategoriesStore, useExchangeRatesStore),
|
||||
allLanguages() {
|
||||
return this.$locale.getAllLanguageInfos();
|
||||
return this.$locale.getAllLanguageInfoArray(false);
|
||||
},
|
||||
allCurrencies() {
|
||||
return this.$locale.getAllCurrencies();
|
||||
|
||||
@@ -51,12 +51,12 @@
|
||||
<f7-list-item
|
||||
link="#" no-chevron popover-close
|
||||
:title="lang.displayName"
|
||||
:key="locale"
|
||||
v-for="(lang, locale) in allLanguages"
|
||||
@click="changeLanguage(locale)"
|
||||
:key="lang.languageTag"
|
||||
v-for="lang in allLanguages"
|
||||
@click="changeLanguage(lang.languageTag)"
|
||||
>
|
||||
<template #after>
|
||||
<f7-icon class="list-item-checked-icon" f7="checkmark_alt" v-if="currentLanguageCode === locale"></f7-icon>
|
||||
<f7-icon class="list-item-checked-icon" f7="checkmark_alt" v-if="currentLanguageCode === lang.languageTag"></f7-icon>
|
||||
</template>
|
||||
</f7-list-item>
|
||||
</f7-list>
|
||||
@@ -97,7 +97,7 @@ export default {
|
||||
return 'v' + this.$version;
|
||||
},
|
||||
allLanguages() {
|
||||
return this.$locale.getAllLanguageInfos();
|
||||
return this.$locale.getAllLanguageInfoArray(false);
|
||||
},
|
||||
isWebAuthnAvailable() {
|
||||
return this.settingsStore.appSettings.applicationLockWebAuthn
|
||||
|
||||
@@ -45,7 +45,8 @@
|
||||
</f7-actions-group>
|
||||
</f7-actions>
|
||||
|
||||
<list-item-selection-sheet value-type="index"
|
||||
<list-item-selection-sheet value-type="item"
|
||||
value-field="languageTag"
|
||||
title-field="displayName"
|
||||
:items="allLanguages"
|
||||
v-model:show="showChangeLocaleSheet"
|
||||
@@ -81,7 +82,7 @@ export default {
|
||||
computed: {
|
||||
...mapStores(useTransactionCategoriesStore),
|
||||
allLanguages() {
|
||||
return this.$locale.getAllLanguageInfos();
|
||||
return this.$locale.getAllLanguageInfoArray(false);
|
||||
},
|
||||
allPresetCategories() {
|
||||
return this.$locale.getAllTransactionDefaultCategories(this.categoryType, this.currentLocale);
|
||||
|
||||
Reference in New Issue
Block a user