求助大佬,我现在需要做一个同时给国内国外提供机械零部件数据服务的网站,网站里面会有零部件的技术参数文件,还有介绍说明,我后台维护数据的时候,是不是每有一种语言,就得加个对应的字段存储数据?我可能有七八种语言的国际化,请问有什么好的解决办法吗?
简单一点
需要国际化的字段,都增加对应的语言列。
id | titlle | title_lang_zh | title_lang_en |
---|---|---|---|
1 | 默认标题 | default title | 默认标题 |
客户端查询的时候,获取到 Accept-Language
Header,把客户端的语言信息拼接到 SQL 字段中去查询:
SELECT `id` title_lang_${locale} FROM ....
这种方式好处是简单,不好的地方就是扩展性不高。添加新的语言支持需要改数据库。
复杂一点
对于需要国际化的内容,专门创建一个独立的内容表。
id | titlle_id |
---|---|
1 | 999 |
id | lang | content |
---|---|---|
999 | zh | 默认标题 |
999 | en | default title |
检索的时候,根据客户端的语言环境,关联检索即可。这种方式可以动态的维护支持的语言。
最后
对于大部分,能让客户端去处理的国际化内容就让客户端去处理。例如对于异常信息的提示,服务器没有必要给出提示的文本信息,给出对应的异常代码即可,客户端根据自己的字典来进行翻译和显示。