Localization 把语言和文化搞混了!:(

Localization 把语言和文化搞混了!:(,localization,symfony1,doctrine,internationalization,Localization,Symfony1,Doctrine,Internationalization,在Symfony中,我一再混淆语言和文化。 -我将文化设定为en_US,我想这是正确的 -但是翻译文件是为一种语言创建的 -此外,在数据库中使用翻译时,lang=en 我有一个模型,其定义如下: Option: package: Options tableName: Com_Options actAs: I18n: fields: [name, tooltip] columns: id: type: integer(2) pri

在Symfony中,我一再混淆语言和文化。 -我将文化设定为en_US,我想这是正确的 -但是翻译文件是为一种语言创建的 -此外,在数据库中使用翻译时,lang=en

我有一个模型,其定义如下:

Option:
  package: Options
  tableName: Com_Options
  actAs:
    I18n:
      fields: [name, tooltip]
  columns:
    id:
      type: integer(2)
      primary: true
      notnull: true
      unsigned: true
#      autoincrement: true
    name:
      type: string(50)
      notnull: true
      notblank: true
    tooltip:
      type: string(100)
    sequence:
      type: integer(1)
      unsigned: true
      range: [0,255]
这个类被其他几个类引用。 当我尝试将名称打印为$REOBJ->Option->name时,我什么也得不到。当我检查查询时,我看到总共触发了3个查询

1) to get refObj
2) to get Option
3) to get Translation
但真正的问题是,对于3,查询中没有语言参数

我想知道它将如何得到翻译的名字?sf_文化的当前价值:en_US

是否有其他方式根据用户的语言访问“名称”? 还是需要对每个模型编写自定义查询

问题是因为autoincrement已关闭,还是因为我正在使用软件包


非常感谢!

发现这是一种非常乏味且成本高昂的方法,但有效:

$class->relation->Translation[$lang]->property
如果您希望直接从数据库中读取

$q = Table::getInstance()->createQuery('a')
        ->select('a.id, t.name')
        ->leftJoin('a.Translation t')
        ->where('t.lang = ?', $lang);
return $q->execute(array(), Doctrine::HYDRATE_NONE);
如果使用XLIFF文件,则不需要传递区域性/语言

__('text which is translated in the XLIFF for user\'s culture');
您是否也将sf_默认文化设置为en_US?