0

i18n doctrine オブジェクトから特定の翻訳を取得できないという問題があります。呼び出す$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 }
4

2 に答える 2

1
$this->Translation['fr']->getName()

または:

$translations = $this->getTranslations();
$translations['fr']->getName();
于 2013-02-21T07:47:32.867 に答える
0

これは、他の質問とほぼ同じ問題です。次を使用します。

$object->Translation['fr']->name;
$object->Translation['en']->name;
$object->Translation['it']->name;
// etc ...

他の質問に投稿したコメントを引用します。

->getName()のように、オブジェクトを直接使用している場合に機能します $object->getName()。しかし、Translation リレーションにヒットした場合、getter を使用して値を取得したことはありません。

ちなみに、$object->getName('fr');sf1.0で使えるとは記憶にありませんでした。

于 2013-02-22T16:16:09.337 に答える