相关疑难解决方法(0)

Gettext:消息ID是英文文本是一个好主意吗?

我们正准备将我们的PHP网站翻译成各种语言,PHP中的gettext支持看起来就像是要走的路.

我看到的所有教程都建议使用英文文本作为消息ID,即

gettext("你好!")

但这真的是个好主意吗?假设市场营销人员希望将文本更改为"你好,你们!".那么你不必更新所有语言文件,因为该字符串 - 实际上是消息ID - 已经改变了吗?

拥有某种通用ID(例如"hello.message")和英文翻译文件会更好吗?

php gettext internationalization

39
推荐指数
6
解决办法
6520
查看次数

实现多语言PHP的最佳方法

首先,我知道有很多关于多语言功能的答案,我找不到我想要的答案.

我想到了三种可以使用的方法.每次我向Web表单界面添加新值时,我都需要使用PHP创建语言文件.

前两个类似 - 在特定语言文件中使用数组或定义,并在运行开始时包含它.但在这种情况下,我可能会加载数千个定义或数组,只是为了在每个页面中使用一些.

第三种方法是创建每次使用关键字或完整短语调用的函数,并使用IF-s或switch选择正确的术语(如果不匹配则返回调用的键).

最好的方法是什么?我决定做一些测试.我尝试了三种不同的方法,并测量了它所花费的时间和内存:

  1. 我定义了一个数组(22个值),并从1到1,000,000运行它 - 检查调用值 - 三个中的一个,通过使用%运算符选择要使用的内容并将其设置在变量上

    • 时间:0.476591110229秒
    • 内存:6536字节
  2. 我使用相同的数组(22个值)并使用函数调用它 - return $arr[$string];(只是为了方便的工作方式和能够根据需要将其更改为不同的方式)

    • 时间:0.960635185242秒
    • 内存:6704字节
  3. 我创建了一个包含字符串列表的函数,并使用switch- > case我选择了返回的字符串

    • 时间:1.46953487396秒
    • 内存:848字节

那么,现在问题是什么是正确的选择 - 更喜欢时间或更喜欢记忆.

如果站点很大并且需要大量内存 - 我无法更改它,因为它是使用数组构建的 - 如果它与函数一起工作,我总是可以改变它.

php

12
推荐指数
2
解决办法
2万
查看次数

使用gettext和.po文件时组合键和全文

我正在查看gettext.po创建多语言应用程序的文件.我的理解是.po文件msgid中的来源msgstr是翻译.因此,我看到两种定义方式msgid:

使用全文(例如"My name is %s.\n")具有以下优点:

  • 在打电话时gettext你可以清楚地看到即将翻译的内容
  • 翻译.po文件更容易,因为它们包含要翻译的实际内容

使用my-name %s具有以下优点的密钥(例如):

  • 当源文本很长时(例如关于公司的段落),gettext调用更简洁,使您的视图更清晰
  • 更容易维护多个.po文件和视图,因为密钥不太可能更改(例如,密钥的company-description变化远不如实际的公司描述)

因此我的问题:
有没有一种方法可以使用gettext.po文件,它们可以结合两种方法的优点,即: -
用于gettext调用的密钥用于
翻译者查看需要翻译的全文?

localization gettext internationalization po

8
推荐指数
2
解决办法
1995
查看次数

标签 统计

gettext ×2

internationalization ×2

php ×2

localization ×1

po ×1