怎么做才是最佳多语言方案?
目前有一个需要,网站要能中英泰三语显示,我有两个问题:
1、网站上的常用文字,怎么才能靠lang文件夹里的文件自由切换,或者有什么别的方法?
2、网站里用户发布的内容也是三语的,用翻译接口吗?(这个问题好像是废话,但是万一大家有不一样的想法呢?)
难道没有大佬
告诉我吗我之前倒是做过中英双文的 其实都会出现问题 比如常用的你可以用
lang
来切换 但用户发布的信息 如果你调翻译api
就会有准确的的问题 :joy: 让用户录入三种语言就又显得麻烦 我觉得可以问问你们产品经理 怎么取舍输入的内容不需要做多语言吧,facebook twitter那些 用户的内容都没做多语言
用户输入内容是固定的吧,输什么语言就是什么语言。只是系统的显示内容,或者提示啦需要跟着语言包切换
1.数据库保存内容的时候使用json,然后把不同语言保存在这个属性中,然后根据网站当前语言取出使用 2.数据库保存lang字段,通过lang字段来保存不同语言,然后不同语言的网站调用lang的对应语言属性 3.翻译
第一个问题,可以由前后端约定好语言类型。比如用户在前台把语言从中文切换成了en,传递参数给你的时候,middleware设置语言格式为en,然后所有的公用语言包方法
__()
或lang()
都会自动获取对应文件夹下的语言包第二个问题,只能后端定义三个字段保存了。
我最近刚接了私单,就是中英文切换,我就是用lang做的,动态的数据我直接在数据库设计上来了一个
type
,前端是中文的,显示出中文文章
(这是经过客户同意的解决方案,客户要求翻译准确,所以API
翻译这个就用不上了。) :see_no_evil: :see_no_evil: :see_no_evil:这个插件借鉴下octobercms-translate
多语言方案
建议可以采用数据库表分开的形式搞
ch_
en_
这种, 毕竟每个语言不相同的数据还是多的,根据域名判断
判断使用哪个表前缀即可,数据就可以在共有控制器
进行数据读取方向的控制,非数据库语言也可以根据表前缀的en_
标识把语言包分开配置。繁体的话可以使用
chinese.js
插件进行辅助。@wongvio
插件放进去,就行了。当然之前你需要做的几件事
之后你可以用这个框架实现
或者参考框架的实现原理自己实现
想了解一下前后端分离的话,api里面的多语言应该如果实现呢,每个接口都带一个language参数来判断是什么语言吗?
@Taurus 我目前的做法是这样,每个请求都在请求头上的 Accept-Language 设置语言标识,中间件判断语言标识切换语言,目前为止没出现什么问题:joy:
也遇到同样的需求了。用了ajax结合翻译接口尝试翻译动态文章内容。会略有延迟,感觉还能接受。 实现方案可以参见 github。