framework - yii2 last version
Yii y PHP Gettext (2)
Quiero hacer mi aplicación yii en varios idiomas. Para hacer esto, quiero usar gettext (porque es mucho más simple que los mensajes yii).
Para esto utilicé esta extensión yii , configuré los archivos PO, hice las traducciones, etc.
El gran problema: no pasó nada. Nada fue traducido.
¡Puedo aconsejarte esta increíble extensión multilenguaje!
Para usar gettext sin ninguna extensión, siga esos pasos. En config/main.php
establece el idioma de destino de esta manera:
''language'' = ''ru'',
Establecer el componente de messages
para usar CGettextMessageSource
:
''messages'' => array(
''class'' => ''CGettextMessageSource'',
),
Cree el archivo messages.po
en la carpeta protected/messages/ru
(nota: el nombre de la carpeta es el mismo que el código de idioma). Si se usa poedit, el archivo messages.po
debe tener encabezados apropiados. Ejemplo:
msgid ""
msgstr ""
"Project-Id-Version: FOO BAR 1.0/n"
"Report-Msgid-Bugs-To: /n"
"POT-Creation-Date: 2011-11-11 11:11+0300/n"
"PO-Revision-Date: /n"
"Language: ru/n"
"MIME-Version: 1.0/n"
"Content-Type: text/plain; charset=UTF-8/n"
"Content-Transfer-Encoding: 8bit/n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;/n"
"X-Poedit-SourceCharset: utf-8/n"
"X-Poedit-Basepath: ./n"
"X-Poedit-KeywordsList: _ngettext:1,2;t:1c,2/n"
"X-Poedit-SearchPath-0: ../../n"
Nota t:1c,2
. Esto significa que el primer parámetro de la función Yii::app()
se usará como contexto (ver msgctx ) y el segundo como cadena real para traducir. ¡Sin esto tu i18n no funcionará!
Ahora solo abra messages.po
en poedit → Update
→ hacer traducciones → Save
. Y Yii creará y usará el archivo messages.mo
.
Para su cadena de plurales de lenguaje, vea la ayuda de gettext .