Symfony,sfDoctrineGuardPlugin和翻译(I18N / I10N)

时间:2011-05-12 07:45:39

标签: php symfony1 internationalization symfony-1.4 sfdoctrineguard

最近,我一直在努力使用sfDoctrineGuardPluginSymfony。问题在于插件的翻译。

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

我为挪威语添加了一个翻译文件(为简单起见),将其放在插件i18n目录中。

,一旦我将所有项目正确翻译,我就会将其移出那里。但这是另一个故事。

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

Login form as rendered

正如您所看到的那样,header-element和signin-button被翻译,但用户名/电子邮件和密码的字段却没有。

在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源(所以我有干净的依赖关系)。

任何指针都表示赞赏。

1 个答案:

答案 0 :(得分:1)

我不确定这个的确切原因,但是如果你将翻译从插件文件夹移到应用程序翻译文件夹中,一切都应该像魅力一样。

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

最好的问候。