问题标签 [php-gettext]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
267 浏览

gettext - php gettext 和 poedit - 使用或不使用构造函数会更快

我将一些属性及其选项存储在类 Attributes 中。

为什么我将它们保存在代码中而不是数据库中是另一回事。现在我对 poedit 有疑问,因为它无法读取动态翻译。我现在有两个选择:

a) 将所有数组值放入一个转储文件。此文件将仅由 poedit 解析器使用:

通过这种方式,我可以通过以下方式调用视图中的翻译:

b)我可以使用构造函数并从那里调用 gettext 。

通过这种方式,我可以通过以下方式调用视图中的翻译:

现在我的问题:

假设将有大约 10 个这样的属性,平均有 40 个选项,所以这总共有 400 个数组对。以这种方式使用构造会以任何方式减慢应用程序吗?因为这意味着每次我调用构造函数时,都会为所有数组值调用 gettext,即使此属性值未显示在视图中。如果我不使用构造函数,那么只会为实际使用的单个属性值调用 gettext。

我做了ab测试,但很惊讶,因为没有任何区别。但我担心我一定会遗漏一些东西,因为我的感觉会说以这种方式调用构造函数会减慢速度。

0 投票
2 回答
1053 浏览

php - 使用 Gettext() 实现 PHP Web 应用程序国际化;

我目前正在开发一个需要提供法语和英语版本的 PHP Web 应用程序。我环顾四周,发现 Gettext() 功能提供了最佳性能。

我用命令生成了我的 .pot 文件

并成功生成了一个 .pot 文件。我使用 PoEdit 生成 messages.po 文件并创建了 messages.mo

这是我的服务器文件:

我在 php 文件中设置语言环境,如下所示:

但我只看到标签而不是翻译......我尝试使用'fr_FR'而不是'fr_FR.UTF-8'和各种字符串,但它不起作用。

我错过了什么吗?我的服务器是带有 Apache 和 php5 的 Ubuntu 12.04 服务器

0 投票
2 回答
1572 浏览

php - php-gettext 在生产服务器中不起作用。(Ubuntu)

我在 PHP 中遇到 gettext 问题;我有两台服务器,一台是本地的(我在其中开发)在 Windows 中(使用 vs.php)和工作查找,另一台在 Amazon EC2(Ubuntu 12.04 更新)中,这是生产服务器,在此服务器中相同的代码不要'没有找到。

这是我的代码:

我用这个初始化gettext。

我项目中的所有文件都以 UTF-8(西班牙语)编码,并且 .mo 和 .po 是用 poedit 生成的。

我尝试重新加载 apache 服务但没有用。

任何想法?

0 投票
6 回答
19979 浏览

php - 如何在不重新启动 Apache 或更改域的情况下清除 php 的 gettext 缓存?

这是php 手册中的一小段代码:

它将输出文件中定义的你domain.mo,但问题是只要 Apache 正在运行,gettext()总是返回缓存的结果。

如果我将 Hello 的翻译更改您好domain.mo仍然会输出您好

但是,可以通过将和的domain参数更改为新名称来解决此问题。喜欢从到。但是每次更新文件时编辑php文件真的很痛苦。bindtextdomain()textdomain()"domain""domain2".mo

有没有更好的方法来做到这一点,比如删除一些文件夹或调用一些 php 函数来完成这项工作?这样我就可以为此目的编写一个小脚本。

0 投票
1 回答
109 浏览

php - 从 php 中的文本文件中查找字符串

我有一个文本文件,我在其中写了不同的行。每行包含不同的字符串值,用分号分隔;. 我正在尝试从行中获取第一个和第二个字符串,但是我不知道如何。有什么解决办法吗?

PHP - 现在,我正在打印整行。

文本文件

0 投票
3 回答
4668 浏览

php - 无需安装语言环境即可使用 PHP Gettext

我一直在寻找国际化开源项目的选项:

  • 似乎每个人都推荐的 Gettext 显然需要“安装在您的系统上”才能使用语言环境。请参阅 PHP 手册上的此注释,它准确地反映了我的情况。这个SO question也询问了同样的问题。这不适合开源项目,因为我不能相信最终用户在他们的系统上安装了适当的语言环境。此外,您必须安装语言环境才能使用已翻译的字符串(IMO),这非常奇怪。

  • Zend_Translate 有时也推荐使用 gettext,但我没有使用 Zend 框架,所以我认为这不是我的选择。有人说你可以将它从 Zend 框架中分离出来,但我不知道如何。如果有人能告诉我需要哪些文件(我已经下载了 Zend 框架的压缩包)来挑选,我愿意使用 Zend_Translate。

  • 数组。这就是我现在正在做的事情,但这并不理想,因为:

    • 当当前页面不会使用大多数翻译时,它将占用大量内存来定义每个翻译。
    • 我在发现自己复制数组中的键时遇到了问题,这已经变成了 1000 行代码长而且我几乎没有添加任何东西......
    • 这意味着非程序员无法真正翻译,而 POedit 是每个人都希望使用的标准。

我可以.mo在没有 Gettext 或 Zend_Translate 的情况下以某种方式读取文件,还是必须使用 Gettext?如果是这样,我怎样才能使所有语言环境都工作,就像我上面链接的问题一样?

编辑:我现在愿意使用 Zend_Translate。我只需要弄清楚我需要什么文件(如果可以将它们合并到一个文件中那就太好了)——我不想在我的项目中使用整个 Zend 框架。


更新:我很想看看大型开源项目如何处理 i18n:

因此,据我所知,这三个随机项目都没有使用 Zend_Translate,也没有直接使用 gettext。

也许使用语言环境是个好主意,将C语言名称存储在文本域名中,然后从那里开始。


因此,就我所知:

但我仍然只是得到英文字符串,即使我使用 poedit、msgfmt 等来制作适当的文件。我也尝试过重新启动 Apache。

0 投票
1 回答
377 浏览

php - 在 php 项目中使用 gettext - 只翻译一种语言

我正在尝试将网页翻译成多种语言。但是,我只能让 gettext 为西班牙语工作。

我正在使用这段代码:

如果我设置 $lang="es_ES" 字符串被翻译成西班牙语,但如果我设置 $lang="de_DE" 翻译不起作用,我只会看到默认的英文版本。

我认为这可能与我的计算机语言环境有关(我在西班牙语中使用 Windows)。我在 Windows 上工作(使用 Wamp localhost),我不知道我是否需要安装更多的东西,如果是的话,怎么做。

如果我必须这样做,它会在我的在线托管中工作而无需在那里安装任何东西吗?

谢谢!:)

0 投票
2 回答
496 浏览

php-gettext - 如何使用 gettext 和里面的一些复杂变量进行翻译

我们正在使用 Gettext 翻译我们的网站,但最近我们发现我们的翻译团队存在一些问题。

我们有一些字符串,比如......

鲍勃今晚你*三个*红色*气球*

我们得到这样的东西......

问题是我们的翻译团队不知道变量顺序......并且他们很难正确翻译“编码”字符串,他们只能在其中看到 poedit 这个文本

¿ 我们如何处理这些复杂的字符串?

0 投票
1 回答
190 浏览

gettext - 识别标准的 gettext pot 文件

在我的 php 框架 (CakePHP) 中,有一个用于生成 POT 文件的 i18n 工具。文件头生成如下:

我很想知道是否有以下情况:

打破了某种 gettext 标准。如果没有,我想解释一下为什么要把它放在文件的标题中。

0 投票
1 回答
1659 浏览

php - php gettext directory structure on different environments

I'm using gettext for internationalization for my php files. I have two servers; a sandbox server and a release server. in sandbox server a directory like locale/LC_MESSAGES/en does not work and I should use locale/LC_MESSAGES/en_GB instead. But with "en_GB" it doesn't work on my production server and "en" works fine. for some languages like Portuguese I have pt_PT and pt_BR (Brazilian Portuguese). So I prefer to use the "A_B" structure.

I have no idea how gettext detects these folders. Is there a standard way to use the same folder structure?