如何让i18n-ally适配Kaisermann/svelte-i18n的参数格式要求?
解决i18n-ally适配Kaisermann/svelte-i18n的变量格式问题
可以通过自定义i18n-ally的配置,让它生成符合Kaisermann/svelte-i18n要求的带变量格式,具体操作如下:
- 修改i18n-ally配置
在项目的.vscode/settings.json文件中添加或更新以下配置项:
{ // 自定义提取文本后的代码模板,适配svelte-i18n的values参数结构 "i18n-ally.extract.keygen.template": "{$_('{{key}}', {values: {{values}}})}", // 指定变量以对象形式生成,对应values中的键值对 "i18n-ally.extract.keygen.variableStyle": "object", // 设置解析原文变量的格式为双花括号,匹配svelte-i18n的占位符规则 "i18n-ally.parser.variableStyle": "double-braces" }
配置项说明
extract.keygen.template:直接定义生成的代码结构,强制使用{values: ...}的参数形式,完全贴合svelte-i18n的调用规范extract.keygen.variableStyle:将多个变量打包成对象,避免生成逗号分隔的零散参数parser.variableStyle:让i18n-ally正确识别原文中{{foo}}这类占位符,生成对应的键值对
效果验证
当提取带变量的文本(比如<p>hello {{foo}} {{bar}}</p>)时,i18n-ally会自动生成:- 代码端:
<p>{$_('hello', {values: { foo: foo, bar: bar }})}</p> - 语言文件(en.json):
"hello": "hello {{foo}} {{bar}}"
- 代码端:
完全符合Kaisermann/svelte-i18n的要求。
内容的提问来源于stack exchange,提问作者Argle
相关产品推荐
相关产品推荐

