ngx translate是否支持SQL LIKE或字符串开头匹配的键匹配功能
ngx-translate通配匹配及YAML配置实现方案
ngx-translate原生匹配能力说明
ngx-translate原生仅支持翻译键的精确匹配,没有内置SQL LIKE、startsWith类型的模糊匹配逻辑,它的设计目标是处理静态多语言内容,本身不提供规则匹配类的扩展能力,无法直接满足你的通配匹配需求。
YAML原生能力说明
YAML是静态序列化格式,仅提供锚点/别名实现静态内容复用,没有内置通配符匹配、动态规则判断的能力,无法靠原生语法实现470*这类动态匹配需求。
可行实现方案
- 最低改造成本方案:利用ngx-translate的降级键特性
你在调用translate.get()或者使用translate管道时,可以传入按优先级排序的键数组,比如查询型号为4701的配置时,传入参数为['OG.4701', 'OG.470*', 'OG.default'],ngx-translate会按顺序返回第一个存在的键对应的内容。你只需要在YAML中将同系列公共配置定义在OG.470*这个键下即可,示例:'OG': '470*': &OG4700Series config: # 同系列公共配置 '4701': # 4701独有的配置,没有就可以不用定义,自动降级到470*的配置 - 业务层前置规则匹配方案
你可以单独维护一套匹配规则配置,在业务层先完成规则匹配再调用ngx-translate查询配置,无需修改ngx-translate底层逻辑,扩展性更强,示例配置:
业务逻辑中先获取当前机器的vendor和model,遍历matchRules做正则匹配,匹配到对应configKey后再传入ngx-translate获取配置即可。matchRules: - vendor: OG pattern: '^470.*$' configKey: 'OG.470Series' OG: 470Series: &OG4700Series config: # 同系列公共配置 - 自定义ngx-translate解析器方案
你可以实现ngx-translate的TranslateParser接口,重写键匹配逻辑,在精确匹配不到对应键时,自动遍历当前层级的所有键,用前缀匹配、正则匹配等规则查找符合条件的通配键,返回对应内容。这种方案对业务代码侵入最小,但需要熟悉ngx-translate的扩展机制,后续维护成本稍高。
内容的提问来源于stack exchange,提问作者333Matt
相关产品推荐
相关产品推荐

