【发布时间】:2011-09-26 18:07:11
【问题描述】:
首先,我知道有很多关于多语言功能的答案,我没有找到我想要的答案。
我想了三种我可以使用的方法。每次向 Web 表单界面添加新值时,我都需要使用 PHP 创建语言文件。
前两个有点相似 - 在特定语言文件中使用数组或定义,并在运行开始时包含它。 但在这种情况下,我可能会加载数千个定义或数组,只是为了在每个页面中使用一些。
第三种方法是创建每次使用关键字或完整短语调用的函数,并使用IF-s 或switch 选择正确的术语(或如果不匹配则返回调用的键)。
最好的方法是什么? 我决定做一些测试。我尝试了三种不同的方法并测量了它所花费的时间和内存:
-
我定义了一个数组(22 个值)并在其上运行 1 到 1,000,000 - 检查调用值 - 三个中的一个,使用
%运算符选择要使用的内容并将其设置在变量上- 耗时:0.476591110229 秒
- 内存:6536 字节
-
我使用了相同的数组(22 个值)并使用函数 -
return $arr[$string];调用它(只是为了方便的工作方式以及在需要时将其更改为不同方式的能力)- 耗时:0.960635185242 秒
- 内存:6704 字节
-
我创建了一个带有字符串列表的函数并使用
switch-->case我选择了返回字符串- 耗时:1.46953487396 秒
- 内存:848 字节
好吧,现在的问题是什么是正确的选择——更喜欢时间还是更喜欢记忆。
如果网站很大并且会占用大量内存 - 我无法更改它,因为它是用数组构建的 - 如果它与函数一起使用,我总是可以更改它。
【问题讨论】:
-
我以为是我写的 - 但现在我发现我忘记了 - 我不喜欢 gettext,我需要更容易使用的东西,虽然它的工作方式看起来不错- 我没有检查它,但它似乎是我的第三种方式
-
考虑到我的回答下的讨论,我认为补充这个问题很重要:您正在运行什么规模,您正在谈论多少个字符串?您是在谈论翻译界面还是翻译用户输入的内容?这是两件不同的事情......
标签: php