Skip to content

正则匹配

自定义 i18n Ally Next 如何在源代码中检测 i18n 键。

工作原理

插件使用正则表达式在代码中查找 t("key") 等 i18n 函数调用。每个框架提供默认的匹配模式,你也可以覆盖或扩展。

覆盖所有模式

替换所有框架提供的匹配模式:

jsonc
// .vscode/settings.json
{
  "i18n-ally-next.regex.usageMatch": [
    "\\Wt\\(\\s*['\"`]({key})['\"`]",
    "\\Wi18n\\.t\\(\\s*['\"`]({key})['\"`]"
  ]
}

追加模式

在默认模式基础上追加额外的匹配模式:

jsonc
{
  "i18n-ally-next.regex.usageMatchAppend": [
    "\\WformatMessage\\(\\s*\\{\\s*id:\\s*['\"`]({key})['\"`]"
  ]
}

模式语法

  • 使用 {key} 作为占位符,会被替换为键的匹配正则
  • 第一个捕获组 ($1) 必须是键
  • 模式使用 gm 标志(全局、多行)
  • 使用 \\W(非单词字符)避免匹配变量名内部

自定义键正则

默认情况下,键匹配 [\\w.-]+(单词字符、点、连字符)。可以覆盖:

jsonc
{
  "i18n-ally-next.regex.key": "[\\w.:-]+"
}

当你的键包含特殊字符(如命名空间的 :)时特别有用。

示例

Vue I18n $t()

jsonc
{
  "i18n-ally-next.regex.usageMatchAppend": [
    "\\$t\\(\\s*['\"`]({key})['\"`]"
  ]
}

React <FormattedMessage id="..." />

jsonc
{
  "i18n-ally-next.regex.usageMatchAppend": [
    "\\Wid=['\"`]({key})['\"`]"
  ]
}

自定义函数 translate()

jsonc
{
  "i18n-ally-next.regex.usageMatchAppend": [
    "\\Wtranslate\\(\\s*['\"`]({key})['\"`]"
  ]
}

Released under the MIT License.