i18next-parser 在一般提取中跳过键

发布于 2025-01-09 21:41:22 字数 1465 浏览 0 评论 0原文

我正在使用 React 和 Typescript,使用 i18n 和 i18next 模块进行翻译。我想使用 i18next-parser 提取这些翻译的密钥,并且我已经使用 i18next -c i18next-parser.config.js 命令来完成此操作。问题是,虽然此命令确实检测到所有密钥,但它不会提取所有密钥并将其写入输出文件。

这是提取的结果:

Unique keys: 221 (221 with plurals)
Added keys: 221
Restored keys: 0
Removed keys: 0

但只有 50 个字写入文件。

我已经检查过这不是由于密钥重复或翻译标记格式错误造成的。事实上,如果不是使用通用路径“src/**/*.{js,jsx,ts,tsx}”进行一次提取,而是使用不太通用的路径进行多次提取,那么我最终会得到有一个 189 个密钥文件,其中没有丢失密钥。

因此,我想知道是否有任何配置需要更改,以允许提取使用路径“src/**/*.{js,jsx, ts,tsx}”。

这是我的配置文件:

// i18next-parser.config.js
module.exports = {
  contextSeparator: '_',  
  createOldCatalogs: false,  
  defaultNamespace: 'translation',  
  defaultValue: '',  
  indentation: 2,  
  keepRemoved: false,
  keySeparator: false,
  lexers: {    
    ts: [{ lexer: "JavascriptLexer" }],
    tsx: [{ lexer: "JsxLexer" }],
    js: [{ lexer: "JavascriptLexer" }],
    jsx: [{ lexer: "JsxLexer" }],
    default: ["JavascriptLexer"],
  },  
  locales: ['en','fr'],
  namespaceSeparator: false,
  output: 'src/public/locales/$LOCALE.json',
  pluralSeparator: false,
  input: ['src/**/*.{js,jsx,ts,tsx}', 'src/*.{js,jsx,ts,tsx}'], 
  sort: false,
  skipDefaultValues: false,
  useKeysAsDefaultValue: true,
  verbose: true,
  failOnWarnings: false,
  failOnUpdate: false,
  customValueTemplate: null,
  resetDefaultValueLocale: null,
  i18nextOptions: null
}

I am working with React and Typescript, using the i18n and i18next modules for translations. I wanted to extract the keys for these translations with i18next-parser, and I have done so by using the i18next -c i18next-parser.config.jscommand. The problem is that, although this command does detect all the keys, it does not extract and write all of them to the output file.

This is the outcome of the extraction:

Unique keys: 221 (221 with plurals)
Added keys: 221
Restored keys: 0
Removed keys: 0

But only 50 words are written to the file.

I have checked that this is not due to repetition of keys nor malformed translation tokens. In fact, if rather than doing one extraction with the general path "src/**/*.{js,jsx,ts,tsx}" I undertake several extractions using less general ones, I end up having a 189 key file, where there are no keys missing.

Therefore, I would like to know if there is anything configuration wise to change for allowing the extraction to write all the keys in a project with only one extraction using the path "src/**/*.{js,jsx,ts,tsx}".

Here is my configuration file:

// i18next-parser.config.js
module.exports = {
  contextSeparator: '_',  
  createOldCatalogs: false,  
  defaultNamespace: 'translation',  
  defaultValue: '',  
  indentation: 2,  
  keepRemoved: false,
  keySeparator: false,
  lexers: {    
    ts: [{ lexer: "JavascriptLexer" }],
    tsx: [{ lexer: "JsxLexer" }],
    js: [{ lexer: "JavascriptLexer" }],
    jsx: [{ lexer: "JsxLexer" }],
    default: ["JavascriptLexer"],
  },  
  locales: ['en','fr'],
  namespaceSeparator: false,
  output: 'src/public/locales/$LOCALE.json',
  pluralSeparator: false,
  input: ['src/**/*.{js,jsx,ts,tsx}', 'src/*.{js,jsx,ts,tsx}'], 
  sort: false,
  skipDefaultValues: false,
  useKeysAsDefaultValue: true,
  verbose: true,
  failOnWarnings: false,
  failOnUpdate: false,
  customValueTemplate: null,
  resetDefaultValueLocale: null,
  i18nextOptions: null
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

っ左 2025-01-16 21:41:22

输出参数中缺少变量 $NAMESPACE。因此,JSON 文件会被每个命名空间覆盖,并且仅保留最后一个命名空间中的单词。

这样就会为每个命名空间生成单个 JSON 文件:

output: 'src/public/locales/$LOCALE/$NAMESPACE.json',

Variable $NAMESPACE is missing in the output parameter. So the JSON file is overwritten with every namespace and only words in the last namespace remain.

This way single JSON file is generated for every namespace:

output: 'src/public/locales/$LOCALE/$NAMESPACE.json',
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文