【发布时间】:2011-08-23 21:52:22
【问题描述】:
最近我一直在为Symfony 提供的sfDoctrineGuardPlugin 苦苦挣扎。问题在于插件的翻译。
sfDoctrineGuardPlugin 背后的人显然已经想到了 i18n,因为他们在他们的项目中的proper directory 中提供了一些翻译。然而,问题在于并非所有文本元素都被翻译。更具体地说,登录/登录表单仅被部分翻译。
我添加了一个挪威语的翻译文件(为了简单起见),将它放在插件 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 源代码(所以我有干净的依赖项)。
感谢任何指针。
【问题讨论】:
标签: php symfony1 internationalization symfony-1.4 sfdoctrineguard