Php symfony i18n对象(原则)获得特定文化
我遇到了一个问题,无法从我的i18n条令对象中检索特定的翻译。如果我调用Php symfony i18n对象(原则)获得特定文化,php,internationalization,doctrine,symfony-1.4,Php,Internationalization,Doctrine,Symfony 1.4,我遇到了一个问题,无法从我的i18n条令对象中检索特定的翻译。如果我调用$object->getName()我按预期获取当前区域性中的名称。但是,如果我希望在不切换用户文化的情况下检索特定的翻译$object->getName('fr')在本例中,我仍然使用当前文化而不是法语。这$object->getTranslation()->fr->name确实有效。我做错了什么?不是$object->getName($culture)执行此操作的正确方法 以下是我的模式的相关部分,如果有帮助的话: Ob
$object->getName()代码>我按预期获取当前区域性中的名称。但是,如果我希望在不切换用户文化的情况下检索特定的翻译<代码>$object->getName('fr')代码>在本例中,我仍然使用当前文化而不是法语。这$object->getTranslation()->fr->name代码>确实有效。我做错了什么?不是$object->getName($culture)代码>执行此操作的正确方法
以下是我的模式的相关部分,如果有帮助的话:
Object:
actAs:
Timestampable: ~
I18n:
fields: [name, description]
columns:
name: { type: string(255), notnull: true }
description: { type: string(1000) }
user_id: { type: integer }
relations:
User: { class: sfGuardUser, local: user_id, foreign: id, type: one, foreignType: many, foreignAlias: Objects }
或者:
$translations = $this->getTranslations();
$translations['fr']->getName();
这与上的问题几乎相同,请使用:
我引用我对另一个问题的评论:
->getName()
如果您在对象目录上,则可以工作,如
$object->getName()
。但是如果你碰到了翻译关系,我永远不会
使用getter检索值
顺便说一下,我不记得我们可以使用这个$object->getName('fr')代码>与sf1.0兼容。同样是$object->getName('fr');symfony 1.0方式?我的印象是这应该也适用于1.4。好的,我必须有一些设置错误。。。当我尝试您的第一个解决方案时,我得到:未知方法ObjectTranslation::getName。如果我使用->name而不是->getName(),它可以工作。当我尝试您的第二个解决方案时,我得到了:未知记录属性/相关组件“对象”上的“翻译”我以前做这种事情从来没有遇到过任何问题,但我主要在symfony 1.0网站上工作,所以可能我只是错过了一些关键的1.4步骤。$Object->getName('fr')
是我以前一直使用的方法。。。由于某些原因,在我当前的项目中,它不起作用。引用文档中的话,“因此,基本上,您不必直接处理i18n对象,而是在每次对常规对象进行查询时将区域性传递给模型(或者让它猜测)。”顺便说一句,getter对我来说运行良好,我只是无法指定区域性。嗯,我想我不需要使用这种方法。我只是一直认为这是正确的方法。在我当前的场景中,您的解决方案将起作用,$object->getTranslation()->fr->name就像我在问题中提到的。我想只要这样做没有错,我就可以继续。我仍然希望我知道为什么另一种方法不起作用。。。
$translations = $this->getTranslations();
$translations['fr']->getName();
$object->Translation['fr']->name;
$object->Translation['en']->name;
$object->Translation['it']->name;
// etc ...