建议国际化语言包json支技多级对象结构
- Dominant language
- JavaScript
- Stars
- 41.6k
- Forks
- 3.7k
- Avg merge
- 7h 6m
- Merged PRs (30d)
- 6
Description
**新功能描述**
项目中国际化文案较多时不方便管理,当前UniApp中的 pages.json 与 manifest.json 只支持 { "pages.home": "Home" } 这样的结构,希望能支持 { "pages": { "home": "Home" } } 这样的结构,与 vue-i18n 保持一至格式 。
**现状及问题**
项目国际化文案较多时不方便管理
**尝试方案**
```ts
// en.json
{
"pages": {
"home": "Home",
"login": "Login",
}
}
```
```ts
// pages.json
{
"pages": [
{
"path": "pages/home/index",
"style": {
"navigationBarTitleText": "%pages.home%"
}
},
{
"path": "pages/login/index",
"style": {
"navigationBarTitleText": "%pages.login%"
}
}
]
}
```
在页面中不能正常输出国际化标题
希望 uni-i18n 能增加支持,以下代码经测试可行。
```ts
// src/format.ts
function compile(tokens, values) {
// ...
while (index < tokens.length) {
const token = tokens[index];
switch (token.type) {
case 'text':
// ...
case 'named':
if (mode === 'named') {
let text;
if(token.value.indexOf('.')){
text = token.value.split('.').reduce((acc,cur)=>acc[cur], values)
}
text ? compiled.push(text): compiled.push(values[token.value]);
}
else {
if (process.env.NODE_ENV !== 'production') {
console.warn(`Type of token '${token.type}' and format of value '${mode}' don't match!`);
}
}
break;
//...
}
index++;
}
return compiled;
}
```
Contributor guide
Assessment
This issue has not been assessed yet.