我读过Joel关于Unicode的文章,我觉得从字符集的角度来看,我至少掌握了国际化的基本知识.除了阅读这个问题之外,我还做了一些关于设计考虑的国际化研究,但是我不禁怀疑还有更多我不知道或者不知道的东西.不知道要问.
我学到的一些东西:
我在哪里:
我想更多地了解:
编辑:我添加了赏金,因为我想从经验中获得更多真实世界的例子.
我将开展一个项目,在这个项目中,需要调整一个相当大的Web应用程序来处理多种语言.事情是用手工制作的PHP代码运行的,但它非常干净.
我想知道最好的方法是什么?
自己做点什么,试着适应实际的架构.
使用将为我管理i18n的框架(例如,Symfony)重写其中的一部分?
对于选项1,我应该在哪里存储i18n数据?*.po,xliff,纯DB?
我想到了另一种选择:仅将Symfony用于翻译,而是将控制器设置为加载网站.快,但很脏.另一方面,它允许我们进行下一次修改,慢慢地移动到完整的Symfony:这个网站真的是一个很好的候选人.
但也许有一些独立的翻译引擎可以比整个Web框架更好地完成工作.这有点像用火箭筒杀死一只苍蝇......
首先,我知道有很多关于多语言功能的答案,我找不到我想要的答案.
我想到了三种可以使用的方法.每次我向Web表单界面添加新值时,我都需要使用PHP创建语言文件.
前两个类似 - 在特定语言文件中使用数组或定义,并在运行开始时包含它.但在这种情况下,我可能会加载数千个定义或数组,只是为了在每个页面中使用一些.
第三种方法是创建每次使用关键字或完整短语调用的函数,并使用IF-s或switch选择正确的术语(如果不匹配则返回调用的键).
最好的方法是什么?我决定做一些测试.我尝试了三种不同的方法,并测量了它所花费的时间和内存:
我定义了一个数组(22个值),并从1到1,000,000运行它 - 检查调用值 - 三个中的一个,通过使用%运算符选择要使用的内容并将其设置在变量上
我使用相同的数组(22个值)并使用函数调用它 - return $arr[$string];(只是为了方便的工作方式和能够根据需要将其更改为不同的方式)
我创建了一个包含字符串列表的函数,并使用switch- > case我选择了返回的字符串
那么,现在问题是什么是正确的选择 - 更喜欢时间或更喜欢记忆.
如果站点很大并且需要大量内存 - 我无法更改它,因为它是使用数组构建的 - 如果它与函数一起工作,我总是可以改变它.