最近我一直在为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 源(所以我有干净的依赖项)。
任何指针表示赞赏。