1

最近我一直在为Symfony可用的sfDoctrineGuardPlugin苦苦挣扎。问题在于插件的翻译。

sfDoctrineGuardPlugin 背后的人显然考虑过 i18n,因为他们在项目的正确目录中提供了一些翻译。然而,问题在于并非所有文本元素都被翻译。更具体地说,登录/登录表单仅被部分翻译。

我添加了一个挪威语的翻译文件(为了简单起见),将它放在插件 i18n 目录中。我会在所有项目都正确翻译后立即将其移出,但那是另一回事了。

我的登录表单(sfDoctrineGuardPlugin 的默认表单)在渲染时看起来像这样(为简单起见,删除了样式):

呈现的登录表单

如您所见,标题元素和登录按钮已被翻译,但用户名/电子邮件和密码字段没有。

在 sfDoctrineGuardPlugin/lib/form/doctrine/base/BasesfGuardFormSignin.class.php 中存在以下代码:

if (sfConfig::get('app_sf_guard_plugin_allow_login_with_email', true))
{
  $this->widgetSchema['username']->setLabel('Username or E-Mail');
}

这是未翻译的文本元素之一。在我的 sg_guard.nb.xml 中,我已经翻译了所有可以在 sfDoctrineGuardPlugins svn-repository 的示例翻译中找到的字符串。对于上述标签,我有以下内容:

<trans-unit>
  <source>Username or E-Mail</source>
  <target>Brukernavn eller epost</target>
</trans-unit>

我的猜测是使用 setLabel 两个部分确保 i18n 系统无法将我的翻译插入它应该插入的位置。

sfDoctrineGuardPlugin 是否设置为从 sf_guard.XX.xml 以外的其他目录替换文本?

为翻译工作做了哪些工作?如果可以避免的话,我真的不想修改 sfDoctrineGuardPlugin 源(所以我有干净的依赖项)。

任何指针表示赞赏。

4

1 回答 1

1

我不确定确切的原因,但是如果您将翻译从插件文件夹中移到应用程序翻译文件夹中,那么一切都应该是魅力所在。

至少我的 symfony 1.4.11 应用程序就是这种情况。

此致。

于 2011-05-12T20:23:36.323 回答