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