Путать между языком и культурой!:( - PullRequest
1 голос
/ 15 июля 2010

Я постоянно путаюсь между языком и культурой в 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

Есть ли другой способ получить доступ к имени в соответствии с языком пользователя?Или мне нужно писать пользовательские запросы для каждой модели?

Проблема в том, что автоинкремент выключен или я использую пакет?

Спасибомного! * * 1023

1 Ответ

0 голосов
/ 09 августа 2010

Нашел это: очень утомительный и дорогой метод, но работает:

$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');
...