show language name in current language

This commit is contained in:
MaysWind
2024-10-07 19:58:58 +08:00
parent 368322f906
commit 011020a945
13 changed files with 52 additions and 41 deletions
+7 -6
View File
@@ -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
View File
@@ -4,6 +4,10 @@
"title": "ezBookkeeping"
}
},
"language": {
"English": "English",
"Simplified Chinese": "Simplified Chinese"
},
"default": {
"currency": "USD",
"firstDayOfWeek": "Sunday",
+4
View File
@@ -4,6 +4,10 @@
"title": "ezBookkeeping"
}
},
"language": {
"English": "英语",
"Simplified Chinese": "简体中文"
},
"default": {
"currency": "CNY",
"firstDayOfWeek": "Monday",
+3 -3
View File
@@ -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';
+3 -3
View File
@@ -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();
+3 -3
View File
@@ -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';
+3 -3
View File
@@ -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
+3 -3
View File
@@ -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);
+5 -5
View File
@@ -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();
+6 -5
View File
@@ -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();
+5 -5
View File
@@ -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
+3 -2
View File
@@ -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);