update cli templates
This commit is contained in:
parent
af148a30cd
commit
ccad9d45c3
@ -4,8 +4,10 @@
|
|||||||
"version": "0.0.0",
|
"version": "0.0.0",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "vite",
|
"dev": "vite",
|
||||||
|
"dev:clean":"vite --force",
|
||||||
"build": "vite build",
|
"build": "vite build",
|
||||||
"preview": "vite preview"
|
"preview": "vite preview",
|
||||||
|
"go":"pnpm voerkai18n extract && pnpm voerkai18n compile && vite"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@voerkai18n/cli": "workspace:^1.0.11",
|
"@voerkai18n/cli": "workspace:^1.0.11",
|
||||||
|
@ -25,6 +25,7 @@ export default {
|
|||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
language: this.i18n.activeLanguage,
|
language: this.i18n.activeLanguage,
|
||||||
|
tabIndex:0
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
watch: {
|
watch: {
|
||||||
@ -41,21 +42,32 @@ export default {
|
|||||||
</script>
|
</script>
|
||||||
<template>
|
<template>
|
||||||
<div>
|
<div>
|
||||||
<img alt="Vue logo" src="./assets/logo.png" />
|
<h1 class="navbar" id="title">
|
||||||
<h1>{{ t("中华人民共和国") }} </h1>
|
VoerkaI18n多语言解决方案
|
||||||
<h2>{{ t("迎接中华民族的伟大复兴") }} </h2>
|
<div class="menu" >
|
||||||
<China :title="t('中华人民共和国')" />
|
<button class="menuitem" :key="lng.name" v-for="lng of i18n.languages" @click="i18n.activeLanguage = lng.name"
|
||||||
<Formatters />
|
|
||||||
<h5>默认语言:{{ i18n.defaultLanguage }}</h5>
|
|
||||||
<h5>当前语言:{{ i18n.activeLanguage.value }}</h5>
|
|
||||||
<button :key="lng.name" v-for="lng of i18n.languages" @click="i18n.activeLanguage = lng.name"
|
|
||||||
style="padding:8px;margin:8px;cursor:pointer"
|
|
||||||
:style="{ 'outline': lng.name === i18n.activeLanguage.value ? '2px red solid' : '' }">{{ lng.title
|
:style="{ 'outline': lng.name === i18n.activeLanguage.value ? '2px red solid' : '' }">{{ lng.title
|
||||||
}}</button>
|
}}</button>
|
||||||
<button @click="i18n.activeLanguage = 'de'" style="padding:8px;margin:8px;cursor:pointer"
|
<button class="menuitem" @click="i18n.activeLanguage = 'de'"
|
||||||
:style="{ 'outline': i18n.activeLanguage.value === 'de' ? '2px red solid' : '' }">德语</button>
|
:style="{ 'outline': i18n.activeLanguage.value === 'de' ? '2px red solid' : '' }">德语</button>
|
||||||
<button @click="i18n.activeLanguage = 'jp'" style="padding:8px;margin:8px;cursor:pointer"
|
<button class="menuitem" @click="i18n.activeLanguage = 'jp'"
|
||||||
:style="{ 'outline': i18n.activeLanguage.value === 'jp' ? '2px red solid' : '' }">日语</button>
|
:style="{ 'outline': i18n.activeLanguage.value === 'jp' ? '2px red solid' : '' }">日语</button>
|
||||||
|
</div>
|
||||||
|
</h1>
|
||||||
|
<span><b>默认语言:</b>{{ i18n.defaultLanguage }} <b>当前语言:</b>{{ i18n.activeLanguage.value }}</span>
|
||||||
|
<div class="tabs">
|
||||||
|
<div class="tab" title="" >
|
||||||
|
<h3>{{ t("中华人民共和国") }} </h3>
|
||||||
|
<h3>{{ t("迎接中华民族的伟大复兴") }} </h3>
|
||||||
|
<China :title="t('中华人民共和国')" />
|
||||||
|
</div>
|
||||||
|
<div class="tab" style="flex:2;font-size:small">
|
||||||
|
<Formatters />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@ -65,8 +77,50 @@ export default {
|
|||||||
font-family: Avenir, Helvetica, Arial, sans-serif;
|
font-family: Avenir, Helvetica, Arial, sans-serif;
|
||||||
-webkit-font-smoothing: antialiased;
|
-webkit-font-smoothing: antialiased;
|
||||||
-moz-osx-font-smoothing: grayscale;
|
-moz-osx-font-smoothing: grayscale;
|
||||||
text-align: center;
|
|
||||||
color: #2c3e50;
|
color: #2c3e50;
|
||||||
margin-top: 60px;
|
margin-top:80px;
|
||||||
|
}
|
||||||
|
.navbar{
|
||||||
|
position: fixed;
|
||||||
|
margin:0;
|
||||||
|
top:0;
|
||||||
|
left:0;
|
||||||
|
width: 100%;
|
||||||
|
height: 48px;
|
||||||
|
background: #298df1;
|
||||||
|
padding: 12px;
|
||||||
|
color:white;
|
||||||
|
text-align: left ;
|
||||||
|
}
|
||||||
|
.navbar>.menu{
|
||||||
|
float:right;
|
||||||
|
top:0;
|
||||||
|
margin:0px;
|
||||||
|
padding-right:20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.navbar>.menu>.menuitem{
|
||||||
|
padding:8px;
|
||||||
|
margin:8px;
|
||||||
|
cursor:pointer;
|
||||||
|
}
|
||||||
|
.tabs{
|
||||||
|
width:100%;
|
||||||
|
padding: 8px;
|
||||||
|
position: relative;
|
||||||
|
display: flex;
|
||||||
|
align-items: flex-start;
|
||||||
|
flex-direction: row;
|
||||||
|
|
||||||
|
}
|
||||||
|
.tabs > .tab{
|
||||||
|
position: relative;
|
||||||
|
padding: 8px;
|
||||||
|
background: #f3f3f3;
|
||||||
|
min-height: 500px;
|
||||||
|
margin:4px;
|
||||||
|
color:rgb(4, 123, 202);
|
||||||
|
flex:1;
|
||||||
|
border-radius: 8px;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
@ -10,7 +10,7 @@ const count = ref(0)
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<div style="padding:16px;border:1px red solid;margin:0 auto;margin-bottom:16px;width:600px;">
|
<div>
|
||||||
<h2>{{ title }}</h2>
|
<h2>{{ title }}</h2>
|
||||||
<h3>{{ t("成立于{}年",1949)}} </h3>
|
<h3>{{ t("成立于{}年",1949)}} </h3>
|
||||||
<h3>{{ t("首都:北京")}} </h3>
|
<h3>{{ t("首都:北京")}} </h3>
|
||||||
|
@ -12,14 +12,16 @@ export default {
|
|||||||
components: { China },
|
components: { China },
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
NOW: null//new Date()
|
NOW: new Date(),
|
||||||
|
datetime:null
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
<template>
|
<template>
|
||||||
<div style="padding:16px;border:1px red solid;line-height:120%;margin:0 auto;margin-bottom:16px;width:600px;text-align:left;">
|
<div class="font-size:6px;">
|
||||||
|
{{t("Hello world!")}}
|
||||||
<table>
|
<table>
|
||||||
<thead>
|
<thead>
|
||||||
<tr style="font-weight:bold;">
|
<tr style="font-weight:bold;">
|
||||||
@ -28,9 +30,17 @@ export default {
|
|||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
|
<tr><td colspan="2" >
|
||||||
|
<select v-model="datetime" >
|
||||||
|
<option default :value="null">空值</option>
|
||||||
|
<option :value="NOW">现在</option>
|
||||||
|
</select>
|
||||||
|
</td></tr>
|
||||||
<tr><td colspan="2" ><b>日期</b></td></tr>
|
<tr><td colspan="2" ><b>日期</b></td></tr>
|
||||||
<tr><td>默认</td><td>{{ t("现在是{ value }", NOW) }}</td></tr>
|
<!-- <tr><td>默认</td><td>{{ t("现在是{ value }", NOW) }}</td></tr> -->
|
||||||
<tr><td>date</td><td>{{ t("现在是{ value | date }", NOW) }}</td></tr>
|
<!-- <tr><td>date</td><td>{{ t("现在是{ value | date }", datetime) }}</td></tr>
|
||||||
|
<tr><td>date|empty</td><td>{{ t("现在是{ value | date | empty }", datetime) }}</td></tr>
|
||||||
|
<tr><td>date|empty('无')</td><td>{{ t("现在是{ value | date | empty('无') }", datetime) }}</td></tr>
|
||||||
<tr><td>shortdate</td><td>{{ t("现在是{ value | shortdate }", NOW) }}</td></tr>
|
<tr><td>shortdate</td><td>{{ t("现在是{ value | shortdate }", NOW) }}</td></tr>
|
||||||
<tr><td>time</td><td>{{ t("现在是{ value | time }", NOW) }}</td></tr>
|
<tr><td>time</td><td>{{ t("现在是{ value | time }", NOW) }}</td></tr>
|
||||||
<tr><td>shorttime</td><td>{{ t("现在是{ value | shorttime }", NOW) }}</td></tr>
|
<tr><td>shorttime</td><td>{{ t("现在是{ value | shorttime }", NOW) }}</td></tr>
|
||||||
@ -50,7 +60,7 @@ export default {
|
|||||||
<tr><td>millisecond</td><td>{{ t("现在是{ value | millisecond }", NOW) }}</td></tr>
|
<tr><td>millisecond</td><td>{{ t("现在是{ value | millisecond }", NOW) }}</td></tr>
|
||||||
<tr><td>timestamp</td><td>{{ t("现在是{ value | timestamp }", NOW) }}</td></tr>
|
<tr><td>timestamp</td><td>{{ t("现在是{ value | timestamp }", NOW) }}</td></tr>
|
||||||
<tr><td colspan="2" ><b>货币</b></td></tr>
|
<tr><td colspan="2" ><b>货币</b></td></tr>
|
||||||
<tr><td>currency-cny</td><td>{{ t("商品价格:{ value | currency('CNY','元整',3)}", 788741) }}</td></tr>
|
<tr><td>currency-cny</td><td>{{ t("商品价格:{ value | currency('CNY','元整',3)}", 788741) }}</td></tr> -->
|
||||||
<tr><td>currency</td><td>{{ t("商品价格:{ value | currency }", 788741) }}</td></tr>
|
<tr><td>currency</td><td>{{ t("商品价格:{ value | currency }", 788741) }}</td></tr>
|
||||||
<tr><td>capitalizeCurrency</td><td>{{ t("商品价格:{ value | capitalizeCurrency }", 788741) }}</td></tr>
|
<tr><td>capitalizeCurrency</td><td>{{ t("商品价格:{ value | capitalizeCurrency }", 788741) }}</td></tr>
|
||||||
<tr><td>capitalizeCurrency</td><td>{{ t("商品价格:{ value | capitalizeCurrency(true) }", 788741.35) }}</td></tr>
|
<tr><td>capitalizeCurrency</td><td>{{ t("商品价格:{ value | capitalizeCurrency(true) }", 788741.35) }}</td></tr>
|
||||||
|
@ -1,32 +1,33 @@
|
|||||||
export default {
|
export default {
|
||||||
"1": "Hello world!",
|
"1": "Hello world!(EN)",
|
||||||
"2": "The People's Republic of China",
|
"2": "The People's Republic of China",
|
||||||
"3": "Welcome the great rejuvenation of the Chinese nation",
|
"3": "Welcome the great rejuvenation of the Chinese nation",
|
||||||
"4": "Founded in {}",
|
"4": "Founded in {}",
|
||||||
"5": "Capital: Beijing",
|
"5": "Capital: Beijing",
|
||||||
"6": "VoerkaI18n多语言解决方案 ",
|
"6": "VoerkaI18n多语言解决方案 ",
|
||||||
"7": "Now is { value | date }",
|
"7": "Now is { value | date }",
|
||||||
"8": "Now is { value | shortdate }",
|
"8": "Now is { value | date | empty }",
|
||||||
"9": "Now is { value | time }",
|
"9": "Now is { value | date | empty('无') }",
|
||||||
"10": "Now is { value | shorttime }",
|
"10": "现在是{ value | shortdate }",
|
||||||
"11": "Now is { value | year }",
|
"11": "现在是{ value | time }",
|
||||||
"12": "Now is { value | month }",
|
"12": "现在是{ value | shorttime }",
|
||||||
"13": "Now is { value | day }",
|
"13": "现在是{ value | year }",
|
||||||
"14": "Now is { value | weekdayValue }",
|
"14": "现在是{ value | month }",
|
||||||
"15": "Now is { value | weekday }",
|
"15": "现在是{ value | day }",
|
||||||
"16": "Now is { value | shortWeekday }",
|
"16": "现在是{ value | weekdayValue }",
|
||||||
"17": "Now is { value | monthName }",
|
"17": "现在是{ value | weekday }",
|
||||||
"18": "Now is { value | shorMonthName }",
|
"18": "现在是{ value | shortWeekday }",
|
||||||
"19": "Now is { value | hour }",
|
"19": "现在是{ value | monthName }",
|
||||||
"20": "Now is { value | hour12 }",
|
"20": "现在是{ value | shorMonthName }",
|
||||||
"21": "Now is { value | minute }",
|
"21": "现在是{ value | hour }",
|
||||||
"22": "Now is { value | second }",
|
"22": "现在是{ value | hour12 }",
|
||||||
"23": "Now is { value | millisecond }",
|
"23": "现在是{ value | minute }",
|
||||||
"24": "Now is { value | timestamp }",
|
"24": "现在是{ value | second }",
|
||||||
"25": "Price: { value | currency }",
|
"25": "现在是{ value | millisecond }",
|
||||||
"26": "Price: { value | capitalizeCurrency }",
|
"26": "现在是{ value | timestamp }",
|
||||||
"27": "Now is { value }",
|
"27": "商品价格:{ value | currency('US ','元整',3)}",
|
||||||
"28": "Price: { value | currency('CNY','元整',3)}",
|
"28": "商品价格:{ value | currency }",
|
||||||
"29": "Price:{ value | capitalizeCurrency(true) }",
|
"29": "商品价格:{ value | capitalizeCurrency }",
|
||||||
"30": "Count: { value | number }"
|
"30": "商品价格:{ value | capitalizeCurrency(true) }",
|
||||||
|
"31": "商品数量:{ value | number }"
|
||||||
}
|
}
|
@ -1,108 +0,0 @@
|
|||||||
/**
|
|
||||||
|
|
||||||
格式化器用来对翻译文本内容中的插值变量进行格式化,
|
|
||||||
比如将一个数字格式化为货币格式,或者将一个日期格式化为友好的日期格式。
|
|
||||||
|
|
||||||
- 以下定义了一些格式化器,在中文场景下,会启用这些格式化器。
|
|
||||||
import dayjs from "dayjs";
|
|
||||||
const formatters = {
|
|
||||||
"*":{ // 在所有语言下生效的格式化器
|
|
||||||
$types:{...}, // 只作用于特定数据类型的默认格式化器
|
|
||||||
.... // 全局格式化器
|
|
||||||
},
|
|
||||||
cn:{
|
|
||||||
// 只作用于特定数据类型的格式化器
|
|
||||||
$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"
|
|
||||||
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
export default{
|
|
||||||
// 在所有语言下生效的格式化器
|
|
||||||
"*":{
|
|
||||||
//[格式化名称]:(value)=>{...},
|
|
||||||
//[格式化名称]:(value,arg)=>{...},
|
|
||||||
},
|
|
||||||
// 在所有语言下只作用于特定数据类型的格式化器
|
|
||||||
$types:{
|
|
||||||
|
|
||||||
},
|
|
||||||
zh:{
|
|
||||||
$types:{
|
|
||||||
// 所有类型的默认格式化器
|
|
||||||
// "*":{
|
|
||||||
|
|
||||||
// },
|
|
||||||
// Date:{
|
|
||||||
|
|
||||||
// },
|
|
||||||
// Number:{
|
|
||||||
|
|
||||||
// },
|
|
||||||
// String:{
|
|
||||||
|
|
||||||
// },
|
|
||||||
// Array:{
|
|
||||||
|
|
||||||
// },
|
|
||||||
// Object:{
|
|
||||||
|
|
||||||
// }
|
|
||||||
}
|
|
||||||
},
|
|
||||||
en:{
|
|
||||||
$types:{
|
|
||||||
// 所有类型的默认格式化器
|
|
||||||
// "*":{
|
|
||||||
|
|
||||||
// },
|
|
||||||
// Date:{
|
|
||||||
|
|
||||||
// },
|
|
||||||
// Number:{
|
|
||||||
|
|
||||||
// },
|
|
||||||
// String:{
|
|
||||||
|
|
||||||
// },
|
|
||||||
// Array:{
|
|
||||||
|
|
||||||
// },
|
|
||||||
// Object:{
|
|
||||||
|
|
||||||
// }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -6,27 +6,28 @@ export default {
|
|||||||
"首都:北京": 5,
|
"首都:北京": 5,
|
||||||
"VoerkaI18n多语言解决方案 ": 6,
|
"VoerkaI18n多语言解决方案 ": 6,
|
||||||
"现在是{ value | date }": 7,
|
"现在是{ value | date }": 7,
|
||||||
"现在是{ value | shortdate }": 8,
|
"现在是{ value | date | empty }": 8,
|
||||||
"现在是{ value | time }": 9,
|
"现在是{ value | date | empty('无') }": 9,
|
||||||
"现在是{ value | shorttime }": 10,
|
"现在是{ value | shortdate }": 10,
|
||||||
"现在是{ value | year }": 11,
|
"现在是{ value | time }": 11,
|
||||||
"现在是{ value | month }": 12,
|
"现在是{ value | shorttime }": 12,
|
||||||
"现在是{ value | day }": 13,
|
"现在是{ value | year }": 13,
|
||||||
"现在是{ value | weekdayValue }": 14,
|
"现在是{ value | month }": 14,
|
||||||
"现在是{ value | weekday }": 15,
|
"现在是{ value | day }": 15,
|
||||||
"现在是{ value | shortWeekday }": 16,
|
"现在是{ value | weekdayValue }": 16,
|
||||||
"现在是{ value | monthName }": 17,
|
"现在是{ value | weekday }": 17,
|
||||||
"现在是{ value | shorMonthName }": 18,
|
"现在是{ value | shortWeekday }": 18,
|
||||||
"现在是{ value | hour }": 19,
|
"现在是{ value | monthName }": 19,
|
||||||
"现在是{ value | hour12 }": 20,
|
"现在是{ value | shorMonthName }": 20,
|
||||||
"现在是{ value | minute }": 21,
|
"现在是{ value | hour }": 21,
|
||||||
"现在是{ value | second }": 22,
|
"现在是{ value | hour12 }": 22,
|
||||||
"现在是{ value | millisecond }": 23,
|
"现在是{ value | minute }": 23,
|
||||||
"现在是{ value | timestamp }": 24,
|
"现在是{ value | second }": 24,
|
||||||
"商品价格:{ value | currency }": 25,
|
"现在是{ value | millisecond }": 25,
|
||||||
"商品价格:{ value | capitalizeCurrency }": 26,
|
"现在是{ value | timestamp }": 26,
|
||||||
"现在是{ value }": 27,
|
"商品价格:{ value | currency('CNY','元整',3)}": 27,
|
||||||
"商品价格:{ value | currency('CNY','元整',3)}": 28,
|
"商品价格:{ value | currency }": 28,
|
||||||
"商品价格:{ value | capitalizeCurrency(true) }": 29,
|
"商品价格:{ value | capitalizeCurrency }": 29,
|
||||||
"商品数量:{ value | number }": 30
|
"商品价格:{ value | capitalizeCurrency(true) }": 30,
|
||||||
|
"商品数量:{ value | number }": 31
|
||||||
}
|
}
|
@ -1,6 +1,7 @@
|
|||||||
|
|
||||||
import messageIds from "./idMap.js" // 语言ID映射文件
|
import messageIds from "./idMap.js" // 语言ID映射文件
|
||||||
import { translate,i18nScope } from "./runtime.js" // 运行时
|
import runtime from "./runtime.js" // 运行时
|
||||||
|
const { translate,i18nScope } = runtime
|
||||||
import defaultFormatters from "./formatters/zh.js" // 默认语言格式化器
|
import defaultFormatters from "./formatters/zh.js" // 默认语言格式化器
|
||||||
const activeFormatters = defaultFormatters // 激活语言格式化器
|
const activeFormatters = defaultFormatters // 激活语言格式化器
|
||||||
|
|
||||||
@ -44,6 +45,7 @@ const loaders = {
|
|||||||
const scope = new i18nScope({
|
const scope = new i18nScope({
|
||||||
...scopeSettings, // languages,defaultLanguage,activeLanguage,namespaces,formatters
|
...scopeSettings, // languages,defaultLanguage,activeLanguage,namespaces,formatters
|
||||||
id : "vueapp", // 当前作用域的id,自动取当前工程的package.json的name
|
id : "vueapp", // 当前作用域的id,自动取当前工程的package.json的name
|
||||||
|
debug : false, // 是否在控制台输出高度信息
|
||||||
default : defaultMessages, // 默认语言包
|
default : defaultMessages, // 默认语言包
|
||||||
messages : activeMessages, // 当前语言包
|
messages : activeMessages, // 当前语言包
|
||||||
idMap : messageIds, // 消息id映射列表
|
idMap : messageIds, // 消息id映射列表
|
||||||
|
@ -1,212 +1,219 @@
|
|||||||
{
|
{
|
||||||
"Hello world!": {
|
"Hello world!": {
|
||||||
"en": "Hello world!",
|
"en": "Hello world!(EN)",
|
||||||
"$file": [
|
"$file": [
|
||||||
"App.vue"
|
"App.vue"
|
||||||
],
|
],
|
||||||
"de": "Hello world!"
|
"de": "Hello world!(DE)"
|
||||||
},
|
},
|
||||||
"中华人民共和国": {
|
"中华人民共和国": {
|
||||||
"en": "The People's Republic of China",
|
"en": "The People's Republic of China",
|
||||||
"$file": [
|
"$file": [
|
||||||
"App.vue"
|
"App.vue"
|
||||||
],
|
],
|
||||||
"de": "中华人民共和国"
|
"de": "中华人民共和国(DE)"
|
||||||
},
|
},
|
||||||
"迎接中华民族的伟大复兴": {
|
"迎接中华民族的伟大复兴": {
|
||||||
"en": "Welcome the great rejuvenation of the Chinese nation",
|
"en": "Welcome the great rejuvenation of the Chinese nation",
|
||||||
"$file": [
|
"$file": [
|
||||||
"App.vue"
|
"App.vue"
|
||||||
],
|
],
|
||||||
"de": "迎接中华民族的伟大复兴"
|
"de": "迎接中华民族的伟大复兴(DE)"
|
||||||
},
|
},
|
||||||
"成立于{}年": {
|
"成立于{}年": {
|
||||||
"en": "Founded in {}",
|
"en": "Founded in {}",
|
||||||
"$file": [
|
"$file": [
|
||||||
"components\\china.vue"
|
"components\\china.vue"
|
||||||
],
|
],
|
||||||
"de": "成立于{}年"
|
"de": "成立于{}年(DE)"
|
||||||
},
|
},
|
||||||
"首都:北京": {
|
"首都:北京": {
|
||||||
"en": "Capital: Beijing",
|
"en": "Capital: Beijing",
|
||||||
"$file": [
|
"$file": [
|
||||||
"components\\china.vue"
|
"components\\china.vue"
|
||||||
],
|
],
|
||||||
"de": "首都:北京"
|
"de": "首都:北京(DE)"
|
||||||
},
|
},
|
||||||
"VoerkaI18n多语言解决方案 ": {
|
"VoerkaI18n多语言解决方案 ": {
|
||||||
"en": "VoerkaI18n多语言解决方案 ",
|
"en": "VoerkaI18n多语言解决方案 ",
|
||||||
"$file": [
|
"$file": [
|
||||||
"App.vue"
|
"App.vue"
|
||||||
],
|
],
|
||||||
"de": "VoerkaI18n多语言解决方案 "
|
"de": "VoerkaI18n多语言解决方案 (DE)"
|
||||||
},
|
},
|
||||||
"现在是{ value | date }": {
|
"现在是{ value | date }": {
|
||||||
"en": "Now is { value | date }",
|
"en": "Now is { value | date }",
|
||||||
"$file": [
|
"$file": [
|
||||||
"components\\formatters.vue"
|
"components\\formatters.vue"
|
||||||
],
|
],
|
||||||
"de": "现在是{ value | date }"
|
"de": "DE Now is { value | date }(DE)"
|
||||||
|
},
|
||||||
|
"现在是{ value | date | empty }": {
|
||||||
|
"en": "Now is { value | date | empty }",
|
||||||
|
"de": "Now is { value | date | empty }(DE)",
|
||||||
|
"$file": [
|
||||||
|
"components\\formatters.vue"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"现在是{ value | date | empty('无') }": {
|
||||||
|
"en": "Now is { value | date | empty('无') }",
|
||||||
|
"de": "Now is { value | date | empty('无') } (DE) ",
|
||||||
|
"$file": [
|
||||||
|
"components\\formatters.vue"
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"现在是{ value | shortdate }": {
|
"现在是{ value | shortdate }": {
|
||||||
"en": "Now is { value | shortdate }",
|
"en": "现在是{ value | shortdate }",
|
||||||
|
"de": "现在是{ value | shortdate }",
|
||||||
"$file": [
|
"$file": [
|
||||||
"components\\formatters.vue"
|
"components\\formatters.vue"
|
||||||
],
|
]
|
||||||
"de": "现在是{ value | shortdate }"
|
|
||||||
},
|
},
|
||||||
"现在是{ value | time }": {
|
"现在是{ value | time }": {
|
||||||
"en": "Now is { value | time }",
|
"en": "现在是{ value | time }",
|
||||||
|
"de": "现在是{ value | time }",
|
||||||
"$file": [
|
"$file": [
|
||||||
"components\\formatters.vue"
|
"components\\formatters.vue"
|
||||||
],
|
]
|
||||||
"de": "现在是{ value | time }"
|
|
||||||
},
|
},
|
||||||
"现在是{ value | shorttime }": {
|
"现在是{ value | shorttime }": {
|
||||||
"en": "Now is { value | shorttime }",
|
"en": "现在是{ value | shorttime }",
|
||||||
|
"de": "现在是{ value | shorttime }",
|
||||||
"$file": [
|
"$file": [
|
||||||
"components\\formatters.vue"
|
"components\\formatters.vue"
|
||||||
],
|
]
|
||||||
"de": "现在是{ value | shorttime }"
|
|
||||||
},
|
},
|
||||||
"现在是{ value | year }": {
|
"现在是{ value | year }": {
|
||||||
"en": "Now is { value | year }",
|
"en": "现在是{ value | year }",
|
||||||
|
"de": "现在是{ value | year }",
|
||||||
"$file": [
|
"$file": [
|
||||||
"components\\formatters.vue"
|
"components\\formatters.vue"
|
||||||
],
|
]
|
||||||
"de": "现在是{ value | year }"
|
|
||||||
},
|
},
|
||||||
"现在是{ value | month }": {
|
"现在是{ value | month }": {
|
||||||
"en": "Now is { value | month }",
|
"en": "现在是{ value | month }",
|
||||||
|
"de": "现在是{ value | month }",
|
||||||
"$file": [
|
"$file": [
|
||||||
"components\\formatters.vue"
|
"components\\formatters.vue"
|
||||||
],
|
]
|
||||||
"de": "现在是{ value | month }"
|
|
||||||
},
|
},
|
||||||
"现在是{ value | day }": {
|
"现在是{ value | day }": {
|
||||||
"en": "Now is { value | day }",
|
"en": "现在是{ value | day }",
|
||||||
|
"de": "现在是{ value | day }",
|
||||||
"$file": [
|
"$file": [
|
||||||
"components\\formatters.vue"
|
"components\\formatters.vue"
|
||||||
],
|
]
|
||||||
"de": "现在是{ value | day }"
|
|
||||||
},
|
},
|
||||||
"现在是{ value | weekdayValue }": {
|
"现在是{ value | weekdayValue }": {
|
||||||
"en": "Now is { value | weekdayValue }",
|
"en": "现在是{ value | weekdayValue }",
|
||||||
|
"de": "现在是{ value | weekdayValue }",
|
||||||
"$file": [
|
"$file": [
|
||||||
"components\\formatters.vue"
|
"components\\formatters.vue"
|
||||||
],
|
]
|
||||||
"de": "现在是{ value | weekdayValue }"
|
|
||||||
},
|
},
|
||||||
"现在是{ value | weekday }": {
|
"现在是{ value | weekday }": {
|
||||||
"en": "Now is { value | weekday }",
|
"en": "现在是{ value | weekday }",
|
||||||
|
"de": "现在是{ value | weekday }",
|
||||||
"$file": [
|
"$file": [
|
||||||
"components\\formatters.vue"
|
"components\\formatters.vue"
|
||||||
],
|
]
|
||||||
"de": "现在是{ value | weekday }"
|
|
||||||
},
|
},
|
||||||
"现在是{ value | shortWeekday }": {
|
"现在是{ value | shortWeekday }": {
|
||||||
"en": "Now is { value | shortWeekday }",
|
"en": "现在是{ value | shortWeekday }",
|
||||||
|
"de": "现在是{ value | shortWeekday }",
|
||||||
"$file": [
|
"$file": [
|
||||||
"components\\formatters.vue"
|
"components\\formatters.vue"
|
||||||
],
|
]
|
||||||
"de": "现在是{ value | shortWeekday }"
|
|
||||||
},
|
},
|
||||||
"现在是{ value | monthName }": {
|
"现在是{ value | monthName }": {
|
||||||
"en": "Now is { value | monthName }",
|
"en": "现在是{ value | monthName }",
|
||||||
|
"de": "现在是{ value | monthName }",
|
||||||
"$file": [
|
"$file": [
|
||||||
"components\\formatters.vue"
|
"components\\formatters.vue"
|
||||||
],
|
]
|
||||||
"de": "现在是{ value | monthName }"
|
|
||||||
},
|
},
|
||||||
"现在是{ value | shorMonthName }": {
|
"现在是{ value | shorMonthName }": {
|
||||||
"en": "Now is { value | shorMonthName }",
|
"en": "现在是{ value | shorMonthName }",
|
||||||
|
"de": "现在是{ value | shorMonthName }",
|
||||||
"$file": [
|
"$file": [
|
||||||
"components\\formatters.vue"
|
"components\\formatters.vue"
|
||||||
],
|
]
|
||||||
"de": "现在是{ value | shorMonthName }"
|
|
||||||
},
|
},
|
||||||
"现在是{ value | hour }": {
|
"现在是{ value | hour }": {
|
||||||
"en": "Now is { value | hour }",
|
"en": "现在是{ value | hour }",
|
||||||
|
"de": "现在是{ value | hour }",
|
||||||
"$file": [
|
"$file": [
|
||||||
"components\\formatters.vue"
|
"components\\formatters.vue"
|
||||||
],
|
]
|
||||||
"de": "现在是{ value | hour }"
|
|
||||||
},
|
},
|
||||||
"现在是{ value | hour12 }": {
|
"现在是{ value | hour12 }": {
|
||||||
"en": "Now is { value | hour12 }",
|
"en": "现在是{ value | hour12 }",
|
||||||
|
"de": "现在是{ value | hour12 }",
|
||||||
"$file": [
|
"$file": [
|
||||||
"components\\formatters.vue"
|
"components\\formatters.vue"
|
||||||
],
|
]
|
||||||
"de": "现在是{ value | hour12 }"
|
|
||||||
},
|
},
|
||||||
"现在是{ value | minute }": {
|
"现在是{ value | minute }": {
|
||||||
"en": "Now is { value | minute }",
|
"en": "现在是{ value | minute }",
|
||||||
|
"de": "现在是{ value | minute }",
|
||||||
"$file": [
|
"$file": [
|
||||||
"components\\formatters.vue"
|
"components\\formatters.vue"
|
||||||
],
|
]
|
||||||
"de": "现在是{ value | minute }"
|
|
||||||
},
|
},
|
||||||
"现在是{ value | second }": {
|
"现在是{ value | second }": {
|
||||||
"en": "Now is { value | second }",
|
"en": "现在是{ value | second }",
|
||||||
|
"de": "现在是{ value | second }",
|
||||||
"$file": [
|
"$file": [
|
||||||
"components\\formatters.vue"
|
"components\\formatters.vue"
|
||||||
],
|
]
|
||||||
"de": "现在是{ value | second }"
|
|
||||||
},
|
},
|
||||||
"现在是{ value | millisecond }": {
|
"现在是{ value | millisecond }": {
|
||||||
"en": "Now is { value | millisecond }",
|
"en": "现在是{ value | millisecond }",
|
||||||
|
"de": "现在是{ value | millisecond }",
|
||||||
"$file": [
|
"$file": [
|
||||||
"components\\formatters.vue"
|
"components\\formatters.vue"
|
||||||
],
|
]
|
||||||
"de": "现在是{ value | millisecond }"
|
|
||||||
},
|
},
|
||||||
"现在是{ value | timestamp }": {
|
"现在是{ value | timestamp }": {
|
||||||
"en": "Now is { value | timestamp }",
|
"en": "现在是{ value | timestamp }",
|
||||||
|
"de": "现在是{ value | timestamp }",
|
||||||
"$file": [
|
"$file": [
|
||||||
"components\\formatters.vue"
|
"components\\formatters.vue"
|
||||||
],
|
]
|
||||||
"de": "现在是{ value | timestamp }"
|
|
||||||
},
|
|
||||||
"商品价格:{ value | currency }": {
|
|
||||||
"en": "Price: { value | currency }",
|
|
||||||
"$file": [
|
|
||||||
"components\\formatters.vue"
|
|
||||||
],
|
|
||||||
"de": "商品价格:{ value | currency }"
|
|
||||||
},
|
|
||||||
"商品价格:{ value | capitalizeCurrency }": {
|
|
||||||
"en": "Price: { value | capitalizeCurrency }",
|
|
||||||
"$file": [
|
|
||||||
"components\\formatters.vue"
|
|
||||||
],
|
|
||||||
"de": "商品价格:{ value | capitalizeCurrency }"
|
|
||||||
},
|
|
||||||
"现在是{ value }": {
|
|
||||||
"en": "Now is { value }",
|
|
||||||
"$file": [
|
|
||||||
"components\\formatters.vue"
|
|
||||||
],
|
|
||||||
"de": "现在是{ value }"
|
|
||||||
},
|
},
|
||||||
"商品价格:{ value | currency('CNY','元整',3)}": {
|
"商品价格:{ value | currency('CNY','元整',3)}": {
|
||||||
"en": "Price: { value | currency('CNY','元整',3)}",
|
"en": "商品价格:{ value | currency('US ','元整',3)}",
|
||||||
|
"de": "商品价格:{ value | currency('CNY','元整',3)}",
|
||||||
"$file": [
|
"$file": [
|
||||||
"components\\formatters.vue"
|
"components\\formatters.vue"
|
||||||
],
|
]
|
||||||
"de": "商品价格:{ value | currency('CNY','元整',3)}"
|
},
|
||||||
|
"商品价格:{ value | currency }": {
|
||||||
|
"en": "商品价格:{ value | currency }",
|
||||||
|
"de": "商品价格:{ value | currency }",
|
||||||
|
"$file": [
|
||||||
|
"components\\formatters.vue"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"商品价格:{ value | capitalizeCurrency }": {
|
||||||
|
"en": "商品价格:{ value | capitalizeCurrency }",
|
||||||
|
"de": "商品价格:{ value | capitalizeCurrency }",
|
||||||
|
"$file": [
|
||||||
|
"components\\formatters.vue"
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"商品价格:{ value | capitalizeCurrency(true) }": {
|
"商品价格:{ value | capitalizeCurrency(true) }": {
|
||||||
"en": "Price:{ value | capitalizeCurrency(true) }",
|
"en": "商品价格:{ value | capitalizeCurrency(true) }",
|
||||||
|
"de": "商品价格:{ value | capitalizeCurrency(true) }",
|
||||||
"$file": [
|
"$file": [
|
||||||
"components\\formatters.vue"
|
"components\\formatters.vue"
|
||||||
],
|
]
|
||||||
"de": "商品价格:{ value | capitalizeCurrency(true) }"
|
|
||||||
},
|
},
|
||||||
"商品数量:{ value | number }": {
|
"商品数量:{ value | number }": {
|
||||||
"en": "Count: { value | number }",
|
"en": "商品数量:{ value | number }",
|
||||||
|
"de": "商品数量:{ value | number }",
|
||||||
"$file": [
|
"$file": [
|
||||||
"components\\formatters.vue"
|
"components\\formatters.vue"
|
||||||
],
|
]
|
||||||
"de": "商品数量:{ value | number }"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,6 +1,7 @@
|
|||||||
{{if moduleType === "esm"}}
|
{{if moduleType === "esm"}}
|
||||||
import messageIds from "./idMap.js" // 语言ID映射文件
|
import messageIds from "./idMap.js" // 语言ID映射文件
|
||||||
{{if inlineRuntime }}import { translate,i18nScope } from "./runtime.js" // 运行时
|
{{if inlineRuntime }}import runtime from "./runtime.js" // 运行时
|
||||||
|
const { translate,i18nScope } = runtime
|
||||||
import defaultFormatters from "./formatters/{{defaultLanguage}}.js" // 默认语言格式化器
|
import defaultFormatters from "./formatters/{{defaultLanguage}}.js" // 默认语言格式化器
|
||||||
{{if defaultLanguage === activeLanguage}}const activeFormatters = defaultFormatters{{else}}import activeFormatters from "./formatters/{{activeLanguage}}.js"{{/if}} // 激活语言格式化器
|
{{if defaultLanguage === activeLanguage}}const activeFormatters = defaultFormatters{{else}}import activeFormatters from "./formatters/{{activeLanguage}}.js"{{/if}} // 激活语言格式化器
|
||||||
{{else}}import { translate,i18nScope } from "@voerkai18n/runtime"
|
{{else}}import { translate,i18nScope } from "@voerkai18n/runtime"
|
||||||
|
@ -15,12 +15,20 @@ import { computed,reactive,ref } from "vue"
|
|||||||
|
|
||||||
function forceUpdate(app){
|
function forceUpdate(app){
|
||||||
function updateComponent(inst){
|
function updateComponent(inst){
|
||||||
if(inst && inst.update) inst.update()
|
if(!inst) return
|
||||||
if(inst.subTree && inst.subTree.children){
|
if(inst.update) inst.update()
|
||||||
|
if(inst.subTree){
|
||||||
|
if(inst.subTree.children){
|
||||||
inst.subTree.children.forEach( vnode=>{
|
inst.subTree.children.forEach( vnode=>{
|
||||||
if(vnode && vnode.component) updateComponent(vnode.component)
|
if(vnode && vnode.component) updateComponent(vnode.component)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
if(inst.subTree.dynamicChildren){
|
||||||
|
inst.subTree.dynamicChildren.forEach( vnode=>{
|
||||||
|
if(vnode && vnode.component) updateComponent(vnode.component)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
try{
|
try{
|
||||||
updateComponent(app._instance.root)
|
updateComponent(app._instance.root)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user