128 lines
3.5 KiB
JavaScript
128 lines
3.5 KiB
JavaScript
/**
|
||
|
||
格式化器用来对翻译文本内容中的插值变量进行格式化,
|
||
比如将一个数字格式化为货币格式,或者将一个日期格式化为友好的日期格式。
|
||
|
||
- 以下定义了一些格式化器,在中文场景下,会启用这些格式化器。
|
||
import dayjs from "dayjs";
|
||
const formatters = {
|
||
"*":{ // 在所有语言下生效的格式化器
|
||
$types:{...}, // 只作用于特定数据类型的默认格式化器
|
||
.... // 全局格式化器
|
||
},
|
||
zh:{
|
||
// 只作用于特定数据类型的格式化器
|
||
$types:{
|
||
Date:(value)=>dayjs(value).format("YYYY年MM月DD日 HH:mm:ss"),
|
||
},
|
||
date:(value)=>dayjs(value).format("YYYY年MM月DD日")
|
||
bjTime:(value)=>"北京时间"+ value,
|
||
[格式化器名称]:(value)=>{...},
|
||
[格式化器名称]:(value)=>{...},
|
||
[格式化器名称]:(value)=>{...},
|
||
},
|
||
en:{
|
||
$types:{
|
||
Date:(value)=>dayjs(value).format("YYYY/MM/DD HH:mm:ss"), // 默认的格式化器
|
||
},
|
||
date:(value)=>dayjs(value).format("YYYY/MM/DD")
|
||
bjTime:(value)=>"BeiJing "+ value,
|
||
[格式化器名称]:(value)=>{...},
|
||
[格式化器名称]:(value)=>{...},
|
||
[格式化器名称]:(value)=>{...},
|
||
}
|
||
}
|
||
- 在翻译函数中使用格式化器的方法,示例如下:
|
||
|
||
t("Now is { value | date | bjTime }",{value: new Date()})
|
||
其等效于:
|
||
t(`Now is ${bjTime(date(value))",{value: new Date()})
|
||
由于value分别经过两个管道符转换,上一个管道符的输出作为下一个管道符的输入,可以多次使用管道符。
|
||
|
||
最终的输出结果:
|
||
中文: "现在是北京时间2022年3月1日"
|
||
英文: "Now is BeiJing 2022/03/01"
|
||
|
||
|
||
*
|
||
*/
|
||
module.exports = {
|
||
// 在所有语言下生效的格式化器
|
||
"*":{
|
||
//[格式化名称]:(value)=>{...},
|
||
//[格式化名称]:(value,arg)=>{...},
|
||
},
|
||
// 在所有语言下只作用于特定数据类型的格式化器
|
||
$types:{
|
||
|
||
},
|
||
zh:{
|
||
$types:{
|
||
// 所有类型的默认格式化器
|
||
// "*":{
|
||
|
||
// },
|
||
// Date:{
|
||
|
||
// },
|
||
// Number:{
|
||
|
||
// },
|
||
// String:{
|
||
|
||
// },
|
||
// Array:{
|
||
|
||
// },
|
||
// Object:{
|
||
|
||
// }
|
||
}
|
||
},
|
||
en:{
|
||
$types:{
|
||
// 所有类型的默认格式化器
|
||
// "*":{
|
||
|
||
// },
|
||
// Date:{
|
||
|
||
// },
|
||
// Number:{
|
||
|
||
// },
|
||
// String:{
|
||
|
||
// },
|
||
// Array:{
|
||
|
||
// },
|
||
// Object:{
|
||
|
||
// }
|
||
}
|
||
},
|
||
jp:{
|
||
$types:{
|
||
// 所有类型的默认格式化器
|
||
// "*":{
|
||
|
||
// },
|
||
// Date:{
|
||
|
||
// },
|
||
// Number:{
|
||
|
||
// },
|
||
// String:{
|
||
|
||
// },
|
||
// Array:{
|
||
|
||
// },
|
||
// Object:{
|
||
|
||
// }
|
||
}
|
||
}
|
||
} |