业务思考|项目国际化处理
最近在做国际化相关的工作,需求是在「English」状态用户的名称和部门的名称显示英文字段,实体中有 name 和 englishName,当用户选择英语时 name 需要被填充 englishName,这种情况不像系统字段的国际化,系统字段的各个语言是固定的,而用户的英文名称是变动的。为了处理用户的不同语言选择需要写很多 if 或者 switch,因此当 VO、DOT、Model 对象多了就会出现很多形式相似的代码,像下面这样。
业务系统会有多处与下面雷同的代码,因为不同的 VO、DTO 需要不同的处理。
public void i18nHandler(UserVO vo, User user){
LanguageEnum language = currentLanguage();
switch (language){
case EN:
String englishName = user.getEnglishName();
if(StringUtils.isNotEmpty(englishName)){
vo.setName(englishName);
}
break;
case JP:
String jpName = user.getJpName();
if(StringUtils.isNotEmpty(jpName)){
vo.setName(jpName);
}
case ZH:
default:
// 缺省默认中文
}
}