1

我一直在尝试使用 Zend Translate 向用户显示翻译后的菜单项。

在我将特殊字符引入翻译文件之前,它工作正常。

我在我的引导程序中实例化 Zend_Translate 对象,并将它作为翻译器传递给 Zend_Navigation:

$translate = new Zend_Translate(
    array('adapter' => 'tmx',
          'content' => APPLICATION_PATH .'/languages/translation.tmx',
          'locale' => 'es'
          )
);

$navigation->setUseTranslator($translate);

我使用了几种不同的适配器(数组,tmx)来看看是否有所作为。我最终得到了一个使用 ISO-8859-1 编码的 TMX 文件(否则在引入菜单项“Administrar Applicación”时会引发 XML 解析错误。

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE tmx SYSTEM "tmx14.dtd">
<tmx version="1.4">
    <header creationtoolversion="1.0.0" datatype="tbx" segtype="sentence"
        adminlang="en" srclang="en" o-tmf="unknown"
        creationtool="XYZTool" >
    </header>
    <body>
        <tu tuid='link_signout'>
            <tuv xml:lang="en"><seg>Sign Out</seg></tuv>
            <tuv xml:lang="es"><seg>Salir</seg></tuv>
        </tu>
        <tu tuid='link_signin'>
            <tuv xml:lang="en"><seg>Login</seg></tuv>
            <tuv xml:lang="es"><seg>Acceder</seg></tuv>
        </tu>
        <tu tuid='Manage Application'>
            <tuv xml:lang="en"><seg>Manage Application</seg></tuv>
            <tuv xml:lang="es"><seg>Administrar Applicación</seg></tuv>
        </tu>
    </body>
</tmx>

一旦我在布局中显示菜单:

echo $this->navigation()->menu();

它将很好地显示所有菜单项,除了使用特殊字符的菜单项。它只是空白。

现在 - 如果我在 zend 框架类“菜单”中使用 PHP 的 UTF8 编码,我不想这样做:

Zend_View_Helper_Navigation_Menu 中的第 215 行:

if ($this->getUseTranslator() && $t = $this->getTranslator()) {
    if (is_string($label) && !empty($label)) {
        $label = utf8_encode($t->translate($label));
    }
    if (is_string($title) && !empty($title)) {
        $title = utf8_encode($t->translate($title));
    }
}

然后它工作。菜单项显示正确,一切都很愉快。

问题是,我不想修改库。

在我没有找到的 zend 翻译或 zend 导航中是否有某种编码设置?

请帮忙!

Zend 库版本:1.11

4

1 回答 1

0

我有一个相关的问题:zend 表单没有显示像ñ这样的拉丁字符。尝试将以下内容添加到 bootstrap.php 中的 _initView 函数中:

$view->setEncoding('iso-8859-1');  
于 2011-01-03T09:48:52.563 回答