【问题标题】:Encoding Problem with Zend Navigation using Zend Translate Spanish in XMLTPX File Special Characters在 XMLTPX 文件特殊字符中使用 Zend Translate Spanish 的 Zend Navigation 编码问题
【发布时间】:2010-12-09 18:19:28
【问题描述】:

我一直在尝试使用 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 translate 或 zend navigation 中是否有某种编码设置?

请帮忙!

Zend 库版本:1.11

【问题讨论】:

    标签: php zend-framework special-characters zend-navigation zend-translate


    【解决方案1】:

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

    $view->setEncoding('iso-8859-1');  
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-22
      • 1970-01-01
      • 2011-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多