1
This commit is contained in:
@@ -0,0 +1,244 @@
|
||||
/**
|
||||
* Vue I18n UTS 使用示例
|
||||
* 展示如何在UniApp-X中使用移植的vue-i18n库
|
||||
*/
|
||||
import { createI18n} from '@/uni_modules/x-vuei18n-s'
|
||||
import { Tmui4xI18n,NumberFormat,DateTimeFormat} from '@/uni_modules/x-vuei18n-s/interface.uts'
|
||||
// 示例:创建简单的i18n实例
|
||||
export function createExampleI18n():Tmui4xI18n{
|
||||
// 准备消息数据
|
||||
const messages: UTSJSONObject = {}
|
||||
|
||||
// 中文消息
|
||||
const zhMessages: UTSJSONObject = {
|
||||
'hello': '你好',
|
||||
'welcome': '欢迎使用UniApp-X',
|
||||
'user': {
|
||||
'name': '用户名',
|
||||
'age': '年龄',
|
||||
'profile': '个人资料'
|
||||
},
|
||||
'items': {
|
||||
'apple': '苹果 | 苹果们',
|
||||
'apple2': '苹果 | 苹果们 | 复杂嵌套{count}',
|
||||
'book': '书 | 书们'
|
||||
},
|
||||
'greeting': '你好,{name}!',
|
||||
'greetingList': '你好,{0}!',
|
||||
'itemCount': '你有 {count} 个项目'
|
||||
}
|
||||
|
||||
// 英文消息
|
||||
const enMessages: UTSJSONObject = {
|
||||
'hello': 'Hello',
|
||||
'welcome': 'Welcome to UniApp-X',
|
||||
'user': {
|
||||
'name': 'Username',
|
||||
'age': 'Age',
|
||||
'profile': 'Profile'
|
||||
},
|
||||
'items': {
|
||||
'apple': 'apple | apples',
|
||||
'apple2': 'apple | apples | apples{count}',
|
||||
'book': 'book | books'
|
||||
},
|
||||
'greeting': 'Hello, {name}!',
|
||||
'greetingList': 'Hello, {0}!',
|
||||
'itemCount': 'You have {count} items'
|
||||
}
|
||||
|
||||
messages.set('zh-Hans', zhMessages)
|
||||
messages.set('en', enMessages)
|
||||
|
||||
// 创建i18n实例
|
||||
const i18n = createI18n({locale:'zh-Hans',messages})
|
||||
|
||||
return i18n
|
||||
}
|
||||
|
||||
// 示例:基本翻译功能
|
||||
export function basicTranslationExample() {
|
||||
const i18n = createExampleI18n()
|
||||
|
||||
console.log('=== 基本翻译示例 ===')
|
||||
|
||||
// 简单翻译
|
||||
console.log(i18n.t('hello')) // 输出: 你好
|
||||
console.log(i18n.t('welcome')) // 输出: 欢迎使用UniApp-X
|
||||
|
||||
// 嵌套路径翻译
|
||||
console.log(i18n.t('user.name')) // 输出: 用户名
|
||||
console.log(i18n.t('user.profile')) // 输出: 个人资料
|
||||
|
||||
// 切换语言
|
||||
i18n.setLocale('en')
|
||||
console.log(i18n.t('hello')) // 输出: Hello
|
||||
console.log(i18n.t('user.name')) // 输出: Username
|
||||
|
||||
|
||||
// 切换回中文
|
||||
i18n.setLocale('zh-Hans')
|
||||
}
|
||||
|
||||
// 示例:参数插值
|
||||
export function interpolationExample() {
|
||||
const i18n = createExampleI18n()
|
||||
|
||||
console.log('=== 参数插值示例 ===')
|
||||
|
||||
// 命名参数
|
||||
const namedParams: UTSJSONObject = { 'name': '张三' }
|
||||
console.log(i18n.t('greeting', namedParams),'----') // 输出: 你好,张三!
|
||||
|
||||
// 列表参数
|
||||
const listParams = ['李四']
|
||||
console.log(i18n.t('greetingList', listParams)) // 输出: 你好,李四!
|
||||
|
||||
// 数字参数
|
||||
const countParams: UTSJSONObject = { 'count': 5 }
|
||||
console.log(i18n.t('itemCount', countParams)) // 输出: 你有 5 个项目
|
||||
}
|
||||
|
||||
// 示例:复数处理
|
||||
export function pluralExample() {
|
||||
const i18n = createExampleI18n()
|
||||
|
||||
console.log('=== 复数处理示例 ===')
|
||||
|
||||
// 单数
|
||||
console.log(i18n.t('items.apple', 0)) // 输出: 苹果
|
||||
|
||||
// 复数
|
||||
console.log(i18n.t('items.apple', 1)) // 输出: 苹果们
|
||||
console.log(i18n.t('items.apple2', 2,{count:8})) // 输出: 复杂嵌套8
|
||||
|
||||
|
||||
// 切换到英文测试复数
|
||||
i18n.setLocale('en')
|
||||
console.log(i18n.t('items.apple', 0)) // 输出: apple
|
||||
console.log(i18n.t('items.apple', 1)) // 输出: apples
|
||||
console.log(i18n.t('items.apple2', 2,{count:8})) // 输出: apples8
|
||||
i18n.setLocale('zh-Hans')
|
||||
}
|
||||
|
||||
// 示例:数字格式化
|
||||
export function numberFormatExample() {
|
||||
const i18n = createExampleI18n()
|
||||
|
||||
console.log('=== 数字格式化示例 中文 ===')
|
||||
|
||||
// 基本数字格式化
|
||||
console.log(i18n.n(1234)) // 输出: 1,234.56
|
||||
console.log(i18n.n(1234567.89)) // 输出: 1,234,567.89
|
||||
|
||||
// 货币格式化
|
||||
const currencyOptions:NumberFormat = {
|
||||
style: 'currency',
|
||||
currency: 'CNY',
|
||||
useGrouping:true
|
||||
}
|
||||
console.log(i18n.n(1234.56,null, currencyOptions)) // 输出: ¥1,234.56
|
||||
|
||||
// 百分比格式化
|
||||
const percentOptions:NumberFormat = {
|
||||
style: 'percent'
|
||||
}
|
||||
console.log(i18n.n(0.1234,null, percentOptions)) // 输出: 12.34%
|
||||
|
||||
|
||||
console.log('=== 货币式化示例 英文 ===')
|
||||
// 货币格式化
|
||||
const currencyOptionsEn:NumberFormat = {
|
||||
style: 'currency',
|
||||
currency: 'USD',
|
||||
useGrouping:true
|
||||
}
|
||||
console.log(i18n.n(1234.56,null, currencyOptionsEn))
|
||||
|
||||
|
||||
}
|
||||
|
||||
// 示例:日期时间格式化
|
||||
export function dateTimeFormatExample() {
|
||||
const i18n = createExampleI18n()
|
||||
|
||||
console.log('=== 日期时间格式化示例 ===')
|
||||
|
||||
const now = new Date()
|
||||
|
||||
// 基本日期格式化
|
||||
console.log(i18n.d(now)) // 输出: 2024年01月01日 12:00:00
|
||||
|
||||
// 自定义格式
|
||||
const dateOptions:DateTimeFormat = {
|
||||
year: 'numeric',
|
||||
month: 'long',
|
||||
day: 'numeric',
|
||||
dateSeparator:'',
|
||||
local:'en'
|
||||
}
|
||||
console.log(i18n.d(now,null, dateOptions)) // 输出: 2024年一月1日
|
||||
|
||||
// 时间格式
|
||||
const timeOptions:DateTimeFormat = {
|
||||
year: '',
|
||||
month: '',
|
||||
day: '',
|
||||
hour: '2-digit',
|
||||
minute: '2-digit',
|
||||
second: '2-digit'
|
||||
}
|
||||
console.log(i18n.d(now,null, timeOptions)) // 输出: 12:00:00
|
||||
}
|
||||
|
||||
// 示例:检查翻译键是否存在
|
||||
export function translationExistsExample() {
|
||||
const i18n = createExampleI18n()
|
||||
|
||||
console.log('=== 翻译键存在检查示例 ===')
|
||||
|
||||
console.log(i18n.te('hello')) // 输出: true
|
||||
console.log(i18n.te('user.name')) // 输出: true
|
||||
console.log(i18n.te('nonexistent.key')) // 输出: false
|
||||
|
||||
// 检查特定语言的键
|
||||
console.log(i18n.te('hello', 'en')) // 输出: true
|
||||
console.log(i18n.te('hello', 'fr-FR')) // 输出: false
|
||||
}
|
||||
|
||||
// 示例:动态添加翻译
|
||||
export function dynamicTranslationExample() {
|
||||
const i18n = createExampleI18n()
|
||||
|
||||
console.log('=== 动态翻译示例 ===')
|
||||
|
||||
// 添加新的翻译
|
||||
const newMessages: UTSJSONObject = {
|
||||
'goodbye': '再见',
|
||||
'settings': {
|
||||
'language': '语言设置',
|
||||
'theme': '主题设置'
|
||||
}
|
||||
}
|
||||
|
||||
i18n.mergeLocaleMessage('zh-Hans', newMessages)
|
||||
console.log(i18n.t('goodbye')) // 输出: 再见
|
||||
console.log(i18n.t('settings.language')) // 输出: 语言设置
|
||||
|
||||
console.log('可用语言:', i18n.availableLocales()) // 输出: ['zh-CN', 'en-US']
|
||||
}
|
||||
|
||||
// 运行所有示例
|
||||
export function runAllExamples() {
|
||||
console.log('Vue I18n UTS 库示例开始运行...')
|
||||
// createExampleI18n()
|
||||
basicTranslationExample()
|
||||
interpolationExample()
|
||||
pluralExample()
|
||||
numberFormatExample()
|
||||
dateTimeFormatExample()
|
||||
translationExistsExample()
|
||||
dynamicTranslationExample()
|
||||
|
||||
console.log('Vue I18n UTS 库示例运行完成!')
|
||||
}
|
||||
Reference in New Issue
Block a user