Как я могу локализовать строки в cakePhp? У меня не было успеха в онлайн-документации. Спасибо за любую помощь.
Есть несколько шагов:
.po
для этого языка. __()
или __d()
Вот выдержка из одного из моих проектов:
# app/app_controller.php uses ( 'L10n' ); class AppController extends Controller { public function beforeFilter() { /** * Derive the desired locale by reading the subdomain from * the HTTP_HOST server variable. Locale subdomains can use * either the 2 or 3 character ISO code. Information on locale * ISO codes is at http://www.loc.gov/standards/iso639-2/php/code_list.php. */ $this->L10n = new L10n(); /** Auto-detect the request language settings */ $this->L10n->get(); /** * Set the default "domain" for translations. The domain is the * same as the po file name in a given locale directory. eg * __d( 'homepage', 'message_id' ) would look for the * message_id key in homepage.po. Using the __() convenience * function will always look in default.po. */ $this->set( 'domain', 'default' ); } # The rest of your AppController code }
Этот фрагмент задает язык. Все, что вам нужно сделать, это предоставить соответствующие файлы .po
каталоге /app/locale/eng/LC_MESSAGES/
. Думаю, книга CakePHP содержит достаточную информацию об этом .
Если вы решите использовать только один файл .po
, вы обернете свои строки с помощью помощника __()
. Я выбрал несколько файлов .po
, чтобы избежать одного массивного файла, поэтому я использовал помощник __d()
чтобы указать, какой домен (домен == имя файла .po
без расширения .po
).
ОБНОВИТЬ
Я должен добавить, что вам нужно будет использовать поведение « Translate
чтобы помочь вам с содержимым базы данных, которое требует перевода.