Files
akmon/uni_modules/ak-i18n/test/index.uts
2026-01-20 08:04:15 +08:00

112 lines
2.9 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import { createI18n } from '@/uni_modules/lime-i18n/index.uts'
// import { createI18n, setLocaleMessage } from '../index.uts'
import zhCN from './locales/zh-CN'
import enUS from './locales/en_US'
const i18n = createI18n({
locale: uni.getStorageSync('uVueI18nLocale').toString().length != 0 ? uni.getStorageSync('uVueI18nLocale') : 'zh-CN', // 默认显示语言
fallbackLocale: 'en-US',
// Key - 在这种情况下,用于规则 `'ru'` 的语言
// Value - 选择正确的复数形式的功能
pluralizationRules: {
/**
* @param choice {number} 输入给$的选择索引 $tc`$tc('path.to.rule', choiceIndex)`
* @param choicesLength {number} 可用选择总数
* @returns 最终选择索引以选择复数单词
*/
'ru': function (choice : number, choicesLength : number) : number {
if (choice == 0) {
return 0;
}
const teen = choice > 10 && choice < 20;
const endsWithOne = (choice % 10) == 1;
if (choicesLength < 4) {
return (!teen && endsWithOne) ? 1 : 2;
}
if (!teen && endsWithOne) {
return 1;
}
if (!teen && (choice % 10) >= 2 && (choice % 10) <= 4) {
return 2;
}
return (choicesLength < 4) ? 2 : 3;
}
},
messages: {
'zh-CN': zhCN,
'en-US': enUS,
'ru': {
car: '0 машин | {n} машина | {n} машины | {n} машин',
banana: 'нет бананов | {n} банан | {n} банана | {n} бананов'
}
},
modifiers: {
snakeCase: (str : string) : string => str.split(' ').join('_')
},
numberFormats: {
'en-US': {
currency: {
style: 'currency', currency: 'USD', notation: 'standard'
},
decimal: {
style: 'decimal', minimumFractionDigits: 2, maximumFractionDigits: 2
},
percent: {
style: 'percent', useGrouping: false
}
},
'zh-CN': {
currency: {
style: 'currency', currency: 'CNY', useGrouping: true, currencyDisplay: 'symbol'
},
decimal: {
style: 'decimal', minimumSignificantDigits: 3, maximumSignificantDigits: 5
},
percent: {
style: 'percent', useGrouping: false
}
}
},
datetimeFormats: {
'en-US': {
short: {
year: 'numeric', month: 'short', day: 'numeric'
},
long: {
year: 'numeric', month: 'short', day: 'numeric',
weekday: 'short', hour: 'numeric', minute: 'numeric'
}
},
'zh-CN': {
short: {
year: 'numeric', month: 'short', day: 'numeric'
},
long: {
year: 'numeric', month: 'short', day: 'numeric',
weekday: 'short', hour: 'numeric', minute: 'numeric', hour12: true
}
}
},
tabBars: {
'en-US': ['home','User Center'],
'zh-CN': ['首页','用户中心'],
}
})
export default i18n
setTimeout(() => {
// console.log('getLocale:::', uni.getLocale())
console.log('getLocale:::',typeof uni.getStorageSync('lllluVueI18nLocale'))
// console.log('i18n install', i18n.global)
// setLocaleMessage('zh-CN', zhCN)
i18n.global.locale.value = 'zh-CN'
}, 5000)