采用i18n方案,解决多产品集成平台的文案冲突

黄鹏宇 188 2023-09-04

现状

目前的商服平台,加载了扫码点单和慧加油两个产品,对于公共页面的文案势必会因为产品不同而产生个性需求,如下:
image-1693792495719

对于慧加油,此处标题为周油量交易情况,对于慧点单为周菜品交易情况。
目前的做法是,在每个页面里,采用硬编码,采用三元运算符修改文案

{{openHuiJiaYou? '周油品交易情况':"周菜品交易情况"}}

当前的弊端

  1. 对于同时开通两个产品的商户,逻辑复杂
  2. 重复代码多
  3. 如果再添加新的产品,则又需要全局修改文案

优雅的解决方案

  1. 借用i18n方案,在入口判断商户开通产品情况,在具体页面中写入类似$t('search')的动态字符串。
  2. 解决同时开通多个产品的情况,目前想到的方法如下,产品名按字母序,加分隔符,如下:
["DianDan","HuiJiaYou","xxx","DianDan|HuiJiaYou","HuiJiaYou|xxx","DianDan|xxx","DianDan|HuiJiaYou|xxx"]
  1. 全局暴露xx个变量,openDianDan,openHuiJiaYou…(注意不是only Open),用于一些逻辑判断。
  2. 对于公共部分,写在fallbackLocale里(找不到对应文案的兜底方案)

规定

  1. 产品名:慧点单 DianDan 慧加油 HuiJiaYou