困惑于语言与;文化! :(

时间:2010-07-15 11:03:06

标签: localization symfony1 doctrine internationalization

我反复混淆语言和语言Symfony的文化。 - 我将文化设置为(en_US)我认为是正确的 - 但是为语言创建了翻译文件(en) - 另外,在数据库中使用翻译时,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]

此类由其他几个类引用。 当我尝试将名称打印为$ refObj-> Option-> Name时,我什么也得不到。当我检查查询时,我发现总共会触发3个查询。

1) to get refObj
2) to get Option
3) to get Translation

但真正的问题是,对于3,查询中没有语言参数。

  
    
      

我想知道如何获得翻译后的名字? sf_culture的当前值:en_US

             

是否有其他方法可以根据用户的语言访问“名称”?       或者我是否需要在每个模型上编写自定义查询?

             

问题是因为自动增量为OFF,还是因为Im使用了包?

    
  

非常感谢!

1 个答案:

答案 0 :(得分:0)

发现这个:一个非常乏味的&昂贵的方法,但有效:

$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');
相关问题