问题标签 [zend-translate]

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 回答
1553 浏览

php - Zend Framework 语言环境和 Zend_Locale、Zend_Translate 和 Zend_Form 形式的翻译问题

我在 Zend_Locale 和 Zend_Translate 方面遇到了一些问题,特别是在 htmlentities 方面。但是还有其他一些奇怪的地方。

首先,在 Zend_Locale 文档中它指出:

Zend Framework 允许使用应用程序范围的语言环境。您只需使用键“Zend_Locale”将 Zend_Locale 实例设置到注册表。然后这个实例将在 Zend Framework 的所有语言环境感知类中使用

这似乎不适用于 Zend_Translate,我假设 Zend_Translate 不是“语言环境感知”类,奇怪的是它不是但没有大问题我只需要显式设置它。下面是我的 Bootstrap 中的 initLocale() 函数:

正如您在此处看到的,我正在使用 Zend_Translate 的数组适配器。我的数组在translation.php 中定义。

与 Zend_Form (http://framework.zend.com/manual/en/zend.form.i18n.html) 文档中的 Zend_Locale 类似,它说向 Zend_Form 添加翻译的最简单方法是在注册表中设置 Zend_Translate 对象使用 'Zend_Translate' 键 - 简单,设置它,任何在数组中具有匹配翻译的表单标签、错误消息等都将被自动翻译。问题是我的法语翻译有很多htmlentities。我可能是错的,但我相信 Zend_Form 的 setLabel 方法会转义文本,因此我的实体会被转换两次。我尝试从翻译中删除所有实体,但这完全失败并给了我一个空白输出。

有没有人有任何想法?用于翻译的 htmlentities 似乎是一个主要的必需品,对吧?

目前我没有自动执行此操作,但我在表单中添加了一个中间函数,它执行以下操作(其中 $this->_translate 是 Zend_Translate 对象):

但这远非理想,因为我必须首先将每个 setLabel 和 errorMessage 包装起来,有点错过 Zend 的语言环境和翻译类的要点。

0 投票
1 回答
1501 浏览

zend-framework - 禁用 Zend_Form_Element 的翻译器,但不是验证器

我有一个Zend_Form_Element_Select对象,大约有 3k 个选择选项。当客户要求我进一步研究优化可能性时,我进行了一些调试跟踪,并注意到Zend_Form_Element_Multi->_translateValueZend_Form_Element_Multi->_translateOption. 我找到了 set 选项$elem->setDisableTranslator(true),它负责处理这些我不需要的翻译。但现在的问题是,错误消息不再被翻译。

我想知道的是,是否有办法不翻译值和选项,而是翻译验证器消息?

我试过这个:

但无济于事。

0 投票
4 回答
1364 浏览

php - 覆盖 gettext .mo 文件

对于我们应用程序中的翻译,我们使用Zend Translate和 gettext 适配器。每个模块中有一个文件夹translations,包含所有语言的 .mo 文件;

  • 大魔
  • nl.mo
  • 恩莫

通过以下addTranslation()方法扫描并添加:

我的应用程序中的字符串使用该_()方法进行翻译,将当前语言作为参数传递(它存储在我的框架的 Language 类中):

现在我需要为特定客户定制荷兰语 (nl) 语言字符串。我不想修改nl.mo文件,因为这会影响其他客户。所以我创建了一个名为nl_kpn.mo(kpn 是客户名称)的文件,并将其切换$this->language为“nl_kpn”。我希望 Zend Transate 将nl.mo作为基本文件,覆盖在nl_kpn.mo. 但不幸的是,正如手册所述,我经历过:

fr_CH 将被降级为 fr

所以所有的字符串仍然来自nl.mo文件,即使$this->language设置为“nl_kpn”。那么如何创建一种更具体的语言版本,覆盖通用的字符串呢?应该有可能吧?因为还有 en_UK 和 en_US,它们是同一语言的不同“方言”。

0 投票
1 回答
1077 浏览

zend-framework - 使用 ZF 的 gettext 适配器翻译路线段

我想在 Zend Framework 中尝试路由翻译,但我使用的是 gettext 适配器,而且大多数教程都有 PHP 翻译适配器,所以我在让它工作时遇到了问题。

在主 Bootstrap.php 中,我有设置路由的方法:

这适用于/about路径。我将粘贴设置 Zend_Translate 的代码,但它基本上*.mo根据当前会话语言加载一个文件:

这,ofc,它被称为prior路由。

我的问题:gettext 可以用作路由的翻译适配器吗,因为我不知道如何@about使用 poEdit 捕获字符串?它可以?万岁!如何?

0 投票
3 回答
2839 浏览

php - 使用 POEdit/xgettext 翻译变量

我正在使用PHPZend Framework和 Zend_Translate(gettext 适配器)。为了编辑翻译,我使用POEdit,它利用xgettext来获取要翻译的字符串。

POEdit (xgettext) 将搜索关键字以查找要翻译的字符串。因此,如果搜索关键字,当文本直接传递给翻译函数时translate,POEdit 将没有问题找到字符串,如:'Text to translate'

但是,在其他情况下,字符串将被传递给 Zend 函数,这些函数将为我进行翻译,调用带有变量作为参数的 translate 函数:

这将导致 POEdit (xgettext) 无法找到要翻译的字符串。在上面的示例中,我希望 POEdit 查找的字符串是'Another text to translate',但由于它没有直接传递给translate函数,因此找不到。

那么,如何解决问题呢?

我当前的解决方案是创建一个虚拟文件,其中包含 POEdit 未找到的所有字符串的长列表:

但是这个解决方案的缺点是更新字符串时,我都需要更改虚拟文件并找到原始字符串。这将使其更难维护。

我想到的另一个解决方案是在调用后将翻译字符串添加到评论中SomeZendFunction(参见上面的示例),但我无法让 xgettext 接受它,因为它忽略了评论。

那么,任何人都知道如何让 xgettext 接受评论中的字符串?或者任何人有任何其他可能更好的解决方案?

谢谢你的帮助!

编辑:

我不知道为什么我被否决了。但我试图澄清这个问题。

0 投票
1 回答
651 浏览

zend-framework - Zend_Form 中多选项的自动翻译会破坏排序顺序

我有以下问题。我创建了一个 Zend_Select 元素并在一个数组中添加了多选项。Zend 自动翻译选项,之后我的多选项排序不正确。

现在,我唯一的选择似乎是:

有谁知道更好的方法来做到这一点?

0 投票
1 回答
398 浏览

zend-framework - 禁用特殊控制器的翻译

是否有可能禁用控制器的语言翻译器?此示例控制器仅提供图像。

TIA 马特

0 投票
1 回答
202 浏览

zend-framework - Zend 框架 - 翻译的 url 中的重复

我有这些网址

使用可穿越的路线并像魅力一样工作。但问题是,你什么时候写

它也可以。

一般来说,当你有

到 someController 的哪条路线仍然有效

因为它确实是控制器的名称。

如何解决这个重复的内容问题?

0 投票
1 回答
557 浏览

zend-framework - 用于 poEdit 的表单中 addMultiOption 文本的 ZEND 翻译

我不知道为什么翻译不能与 Zend_Form 一起使用。我希望能够翻译选择的选项。现在我有这样的事情:

我的表单类:

在我的引导文件中,我有这样的东西:

它适用于我调用它的控制器、phtml 文件和插件

在插件中

但这些方法在形式上是行不通的。它抛出异常:

警告:表单捕获的异常:没有为键“翻译”注册条目堆栈跟踪:#0

0 投票
2 回答
4035 浏览

php - ZF语言和翻译

我需要一个在 ZF 内使用语言和翻译的良好工作示例。

我的需求如下:如果没有选择语言,'en'应该是默认的。(在页面顶部有一个语言选择器。)语言应该存储在会话中。翻译应通过 csv 文件完成。我想让语言在 url 中不可见,所以如果可能的话,我不需要重新配置路由。

我找到了一些教程,但它们并没有真正为我工作......

任何帮助将不胜感激......问候安德里亚