后端一个数据对象中包含十几个英文属性和值,但在前端要用中文给用户展示。
目前我能想到的是后端加一个属性对象,然后传给前端的对象的属性都用该对象描述。 举个例子
原始数据格式
"riskLevel": "low"
修改后的格式
"riskLevel": {
"label": "风险等级",
"value": "low"
}
属性对象
public class Porperty<T> {
private String label;
private T value;
}
请教 V 友还有哪些比较好的方式
1
wzdsfl 184 天前
我们这采取的方案就走一个接口叫 CommonEnum ,把所有的字段/值的中文映射放在这
{ "riskLevel":"风险等级", "low":"低", } |
2
azure233 184 天前
如果字段多或者考虑扩展性的话 写一个字典服务 简单点实现就使用 enum 然后写个接口将 enum 转成 map 返给前端
|
3
steelshadow39 OP @wzdsfl 这样的话,前端传过去 key 是"riskLevel"还是"风险等级"?如果是后者的话,前端会用中文做 key 吗?
|
4
XiLingHost 184 天前
可以考虑单独留个 i18n 接口,传 key 和 lang 进去回 text 回来
|
5
fciasth 184 天前 1
@MapppingColumn(enumName = "riskLevelEnum")
private Byte riskLevel; private String riskLevelName; 自定义注解+切面+反射,每次 response 返回的时候去处理,获取注解上的常量 map ,然后利用反射设置对应的值给中文字段(固定格式,例如:xxxName 或 xxxStr ) |
6
suyuyu 184 天前
我司后台就这样返了 {"风险等级":"low"}
|
7
davin 184 天前 1
根据请求头 Accept-Language = 'zh' 给前端中文的:
{ "riskLevel": { "label": "风险等级", "value": "低" } } 如果 Accept-Language = 'en' 给前端英文的: { "riskLevel": { "label": "Risk Level", "value": "Low" } } 同时方便以后扩展,如果以后有了法文、德文什么的也不怕。 |
8
steelshadow39 OP @davin 学到了,非常感谢
|