国际化

This commit is contained in:
John
2024-03-09 02:34:09 +08:00
parent e702b1bc7f
commit 304421281f
7 changed files with 203 additions and 15 deletions

View File

@@ -22,7 +22,7 @@ if (!lang) {
getDefaultLocal().then(res => {
console.log('res', res)
if (res === 'gu_IN') {
localStorage.setItem('lang', 'id')
localStorage.setItem('lang', 'hi')
} else {
localStorage.setItem('lang', 'zh')
}

144
src/lang/hi-IN.ts Normal file
View File

@@ -0,0 +1,144 @@
// zh_cn.js 文件
export default {
app: {
home: 'होम',
serveList: 'वॉलेट',
message: 'सेवा',
my: 'मी',
yuan: 'रुपया',
second: 'सेकंड',
month: 'माह',
prompt: 'गुनाह',
tips: 'आशा चाहिए',
enterLogout: 'आप वादा लौट गाई जानाचा है?',
enterWithdrawal: 'आप वादा वितरण करनाचा है?',
withdrawal: 'वितरण',
info: 'जानकारी',
success: 'सफल',
withdrawalAmount: 'वितरण की राशि',
pleaseWithdrawalAmount: 'वितरण की राशि',
submit: 'भेजा',
submittedSuccessfully: 'सफल भेजा',
submitApplication: 'इंटरनेट प्राप्त करना',
bankCardAbnormality: 'बैंक कार्ड अनुद्वर्य',
receivedSuccessfully: 'सफल प्राप्त हो गए',
phoneNumber: 'फोन नंबर',
verificationCode: 'वेर्फिकेशन कोड',
confirm: 'पुष्ता करें',
enter: 'उपलब्ध करें',
select: 'चूना',
send: 'भेजा',
login: 'लौट गई',
account: 'कांト',
logout: 'बाजार',
register: 'रजिस्टर',
password: 'पासवर्ड',
forgotPassword: 'पासवर्ड और सिखाया नहीं आया?',
passwordPlaceholder: '6-16 दिगित पासवर्ड बनाना',
passwordPlaceholder1: 'पहले बार पासवर्ड दर्ज करें',
next: 'अगले',
update: 'सुनिश्चित करें',
noData: 'कुछ प्राप्त नहीं है',
none: 'कुछ नहीं है',
contract: 'संगठन',
loan: 'लोन',
totalLoan: 'संकल्प की लोन',
complete: 'सुनिश्चित',
noComplete: 'सुनिश्चित नहीं है',
signature: 'सिग्नेटूर',
identityInformation: 'आदारित जानकारी',
information: 'जानकारी',
signatureInformation: 'सिग्नेटूर जानकारी',
receivingBank: 'प्राप्त करेंगे बैंक',
rwmljndzlxx: 'हमें आपकी जानकारी पता होंगे',
upPNGOrJPG: 'कई jpg या png टाइम आईए।',
},
home: {
productDetails: 'संग्रह विवरण',
minimumDailyInterestRate: 'सडर दिन के लिए Nischit Raatā',
borrowingLimit: 'लोन की लिミट',
installmentPeriod: 'ईमेंट समय',
optional: 'सेटा',
applicationAmount: 'इंटरनेट की राशि',
loanTerm: 'लोन की समय',
repaymentPerInstallment: 'ईमेंट के लिए पुनर्णाम',
dailyInterestRate: 'दिन की raatā',
totalInterest: 'सामान्य लियENT',
successfulBorrowing: 'सफल लोन',
enterAgreement: 'मु<E0A4AE><E0A581><EFBFBD> प्राग्रही प्राप्त को सुनिश्चित पसंद आया है',
authAgreement: 'संग्राहक प्राप्त पत्र',
serviceAgreement: 'सेवा प्रामाण',
lawAgreement: 'अधिकारी प्रामाण',
loansAgreement: 'लोन के लिए प्रामाण',
immediateBorrowing: 'बिहारी लोन',
pleaseFillInYourPersonalInformationFirst: 'पहले आपकी प्रोफेशनल जानकारी ओपन करें।',
pleaseEnterAgreement: 'प्रामाणों को प्राप्त करें।',
},
my: {
userInfo: 'मी की जानकारी',
loan: 'मी की लोन',
repayment: 'मी की पुनर्णाम',
legalLiability: 'अधिकारी प्रावृत्ति',
uploadPassword: 'पासवर्ड संगेत',
logout: 'बाजार',
language: 'भेजिए',
},
serveList: {
loan: 'मी की लोन',
balance: 'बाラंस',
amountToBeRepaid: 'पुनर्णाया जरूरी की राशि',
immediateWithdrawal: 'बिहारी वितरण',
financialSecurity: 'बैंक की तरह की फिंसीफेक्शि'
},
borrowInfo: {
applicationTime: 'इंटरनेट की समय',
loanDetails: 'लोन की विवरण',
loanInfo: 'लोन की जानकारी',
loanNo: 'लोन की क्रEDIT नंबर',
loanAmount: 'लोन की राशि',
loanCycle: 'लोन की समय',
withdrawalBank: 'वितरण करनेवाला बैंक',
repaymentPerInstallment: 'ईमेंट के लिए पुनर्णाम',
describe: 'विवरण',
receivingAccount: 'प्राप्त करेंगी अカウント',
usageOfLoan: 'लोन की प्यारी',
loans: 'इंटरनेट करनेवाले लोन',
enterSubmitApplication: 'आप वादा इंटरनेट करनाचा है?',
},
userInfo: {
realPrompt: 'सच और मुख्य जानकारी, आपको वैसे पसंद आएगी।',
idCardPrompt: 'आपकी आदारीत पत्र की जानकारी आवश्यक है, और उन्होंने सुनिश्चित होना चاहिए।',
photographPrompt: 'आपकी फोटोग्राफी की प्रमानित होते हैं।',
name: 'नम',
idCard: 'आदारीत पत्र',
idCardUp1: 'क्लɪक करें, आपकी आदारीत पत्र को दौरे दें।',
idCardUp2: 'क्लɪk करें, आपकी आदारीत पत्र को दौरे दें।',
idCardUp3: 'क्लिक करें, आपकी आदारीत пत्र को दौरे दें।',
shootingRequirements: 'टैयरिंग के में requirements',
standardShooting: 'सेंडर्ड टैयरिंग',
missingBorder: 'संगर्ष मिस्सिंग',
outOfFocus: 'बहुत सुनिश्चित',
flashStrongly: 'फ्लASH बहुत सुनिश्चित',
unitName: 'यूनिट नाम',
position: 'पोष्ट',
workTelephone: 'कम करेंगी टेलेфोн',
workingAge: 'कार्य कयार',
monthlyPay: 'महिनावारी आज्ञा',
unitAddress: 'एकाइ पता',
addressInfo: 'विस्तृत पता',
currentResidentialAddress: 'मौजूदा रिस्टेसियल पता',
directFamilyContactPerson: 'सीधा परिवार संपर्क व्यक्ति',
relationship: 'संबंध',
parents: 'पेरेन्ट',
spouse: 'स्त्री',
children: 'बच्चे',
grandparents: 'आज्ञापिता',
bankOfDeposit: 'बैंक खोल रहा है',
bankCardNumber: 'बैंक कार्ड क्रमांक'
},
language: {
zh: '中文',
id: 'Bahasa indonesia',
hi: 'हिंदी'
}
};

View File

@@ -136,5 +136,10 @@ export default {
grandparents: 'Dari Orang Tua Kandung',
bankOfDeposit: 'Bank Penyedia Rekening',
bankCard: 'Nomor Kartu Bank',
},
language: {
zh: '中文',
id: 'Bahasa indonesia',
hi: 'हिंदी'
}
}

View File

@@ -2,8 +2,10 @@ import { createI18n } from 'vue-i18n';
import {Locale} from 'vant'
import zhCN from 'vant/lib/locale/lang/zh-CN'
import idId from 'vant/lib/locale/lang/id-ID'
import hiIN from 'vant/lib/locale/lang/hi-IN'
import zhLocale from './zh_cn'
import idLocale from './id_ID'
import hiLocale from './hi-IN'
import type { App } from 'vue';
@@ -15,16 +17,21 @@ const messages = {
id: {
...idId,
...idLocale
},
hi: {
...hiIN,
...hiLocale
}
}
const language = (navigator.language || 'zh').toLocaleLowerCase(); // 这是获取浏览器的语言
const defLanguage = localStorage.getItem('lang'); // 这是获取浏览器的语言
console.log('当前的环境语言是:', language)
console.log('当前的后台语言是:', localStorage.getItem('lang'))
const i18n = createI18n({
allowComposition: true,
locale: localStorage.getItem('lang') || language.split('-')[0] || 'zh', // 设置默认语言
locale: defLanguage || language.split('-')[0] || 'zh', // 设置默认语言
fallbackLocale: 'zh', // 设置备用语言
messages: messages // 设置资源文件对象
})
@@ -32,9 +39,13 @@ const i18n = createI18n({
// 更新vant组件库本身的语言变化支持国际化
export function vantLocales (app: App<Element>) {
app.use(i18n)
if (language === 'id') {
Locale.use(language, idId)
const lan = defLanguage || language.split('-')[0] || 'zh'
if (lan === 'hi') {
Locale.use(lan, hiIN)
console.log('========================', lan)
} else if (lan === 'id') {
Locale.use(lan, idId)
} else {
Locale.use(language, zhCN)
Locale.use(lan, zhCN)
}
}

View File

@@ -136,6 +136,11 @@ export default {
grandparents: '祖父母',
bankOfDeposit: '开户银行',
bankCard: '银行卡号',
},
language: {
zh: '中文',
id: 'Bahasa indonesia',
hi: 'हिंदी'
}
}

View File

@@ -1,6 +1,6 @@
<template>
<j-nav-bar/>
<div ref="root" class="frame" style="height: calc(100vh - 50px - 46px)">
<!-- <j-nav-bar/>-->
<div ref="root" class="frame" style="height: calc(100vh - 50px)">
<iframe :src="iframeSrc" class="frame-iframe" ref="frameRef"></iframe>
</div>
</template>

View File

@@ -82,11 +82,19 @@
</template>
</van-cell>
</div>
<van-popup v-model:show="showPicker" round position="bottom">
<van-picker
:columns="columns"
@confirm="onConfirm"
@cancel="onCancel"
/>
</van-popup>
</div>
</template>
<script setup lang="ts">
import {showConfirmDialog} from "vant";
import { showConfirmDialog, showToast } from 'vant';
import {getAssetsImages} from "@/utils";
import {useUserStore} from "@/store/modules/user";
import {useRouter} from "vue-router";
@@ -141,14 +149,29 @@ const checkLanguage = () => {
// }
// location.reload()
// })
const lang = localStorage.getItem('lang')
if (lang === 'zh') {
localStorage.setItem('lang', 'id')
} else {
localStorage.setItem('lang', 'zh')
}
location.reload()
showPicker.value = true
}
const showPicker = ref(false)
const columns = [
{ text: '中文', value: 'zh' },
{ text: '印地语', value: 'hi' },
{ text: '印尼语', value: 'id' },
// { text: t('language.zh'), value: 'zh' },
// { text: t('language.hi'), value: 'hi' },
// { text: t('language.id'), value: 'id' },
];
const onConfirm = ({ selectedValues }) => {
showToast(`当前值: ${selectedValues.join(',')}`);
// const lang = localStorage.getItem('lang')
// if (lang === 'zh') {
// } else {
// localStorage.setItem('lang', 'zh')
// }
localStorage.setItem('lang', selectedValues)
location.reload()
};
const onCancel = () => showToast('取消');
const customerInfo = reactive({