mirror of
https://gitee.com/wot-design-uni/wot-design-uni.git
synced 2025-12-06 09:08:51 +08:00
106 lines
4.0 KiB
TypeScript
106 lines
4.0 KiB
TypeScript
import { useTranslate } from '@/uni_modules/wot-design-uni/components/composables/useTranslate'
|
||
import Locale from '@/uni_modules/wot-design-uni/locale'
|
||
import enUS from '@/uni_modules/wot-design-uni/locale/lang/en-US'
|
||
|
||
describe('useTranslate', () => {
|
||
beforeEach(() => {
|
||
Locale.use('zh-CN')
|
||
})
|
||
|
||
it('should translate basic messages in Chinese', () => {
|
||
const { translate: calendarTranslate } = useTranslate('calendar')
|
||
const { translate: pickerTranslate } = useTranslate('picker')
|
||
|
||
expect(calendarTranslate('placeholder')).toBe('请选择')
|
||
expect(pickerTranslate('cancel')).toBe('取消')
|
||
})
|
||
|
||
it('should switch to English translations', () => {
|
||
const { translate } = useTranslate('calendar')
|
||
expect(translate('confirm')).toBe('确定')
|
||
|
||
Locale.use('en-US', enUS)
|
||
expect(translate('confirm')).toBe('OK')
|
||
})
|
||
|
||
it('should handle function messages with parameters', () => {
|
||
const { translate } = useTranslate('calendarView')
|
||
expect(translate('rangePrompt', 7)).toBe('选择天数不能超过7天')
|
||
expect(translate('hour', 10)).toBe('10时')
|
||
expect(translate('minute', 30)).toBe('30分')
|
||
expect(translate('second', 45)).toBe('45秒')
|
||
|
||
Locale.use('en-US', enUS)
|
||
expect(translate('rangePrompt', 7)).toBe('The number of selected days cannot exceed 7 days')
|
||
expect(translate('hour', 10)).toBe('10')
|
||
expect(translate('minute', 30)).toBe('30')
|
||
expect(translate('second', 45)).toBe('45')
|
||
})
|
||
|
||
it('should handle nested object translations', () => {
|
||
const { translate } = useTranslate('calendarView')
|
||
expect(translate('weeks.mon')).toBe('一')
|
||
expect(translate('weeks.sun')).toBe('日')
|
||
|
||
Locale.use('en-US', enUS)
|
||
expect(translate('weeks.mon')).toBe('Mon')
|
||
expect(translate('weeks.sun')).toBe('Sun')
|
||
})
|
||
|
||
it('should handle pagination translations', () => {
|
||
const { translate } = useTranslate('pagination')
|
||
expect(translate('prev')).toBe('上一页')
|
||
expect(translate('next')).toBe('下一页')
|
||
expect(translate('total', 100)).toBe('当前数据:100条')
|
||
|
||
Locale.use('en-US', enUS)
|
||
expect(translate('prev')).toBe('Previous')
|
||
expect(translate('next')).toBe('Next')
|
||
expect(translate('total', 100)).toBe('Total: 100')
|
||
})
|
||
|
||
it('should handle date formats', () => {
|
||
const { translate } = useTranslate('calendar')
|
||
expect(translate('timeFormat')).toBe('YY年MM月DD日 HH:mm:ss')
|
||
expect(translate('dateFormat')).toBe('YYYY年MM月DD日')
|
||
expect(translate('weekFormat', 2023, 1)).toBe('2023 第 1 周')
|
||
|
||
Locale.use('en-US', enUS)
|
||
expect(translate('timeFormat')).toBe('YY-MM-DD HH:mm:ss')
|
||
expect(translate('dateFormat')).toBe('YYYY-MM-DD')
|
||
expect(translate('weekFormat', 2023, 1)).toBe('2023 W1')
|
||
})
|
||
|
||
it('should handle form related translations', () => {
|
||
const { translate } = useTranslate('messageBox')
|
||
expect(translate('confirm')).toBe('确定')
|
||
expect(translate('cancel')).toBe('取消')
|
||
expect(translate('inputPlaceholder')).toBe('请输入')
|
||
|
||
Locale.use('en-US', enUS)
|
||
expect(translate('confirm')).toBe('OK')
|
||
expect(translate('cancel')).toBe('Cancel')
|
||
expect(translate('inputPlaceholder')).toBe('Please input information')
|
||
})
|
||
|
||
it('should fallback to key path when translation missing', () => {
|
||
const { translate } = useTranslate('nonexistent')
|
||
expect(translate('key')).toBe('nonexistent.key')
|
||
})
|
||
|
||
it('should handle component specific messages', () => {
|
||
const { translate: uploadTranslate } = useTranslate('upload')
|
||
const { translate: searchTranslate } = useTranslate('search')
|
||
const { translate: signatureTranslate } = useTranslate('signature')
|
||
|
||
expect(uploadTranslate('error')).toBe('上传失败')
|
||
expect(searchTranslate('search')).toBe('搜索')
|
||
expect(signatureTranslate('confirmText')).toBe('确认')
|
||
|
||
Locale.use('en-US', enUS)
|
||
expect(uploadTranslate('error')).toBe('Failed to upload')
|
||
expect(searchTranslate('search')).toBe('Search')
|
||
expect(signatureTranslate('confirmText')).toBe('OK')
|
||
})
|
||
})
|