traductor traducir tag significado play mundo google espaƱol como activar translation yii2

translation - traducir - translate twitter



Las traducciones en sourceLanguage no funcionan en la aplicaciĆ³n Yii2 (2)

De acuerdo con Samdark en Yii Forum , esto es por diseño. Las traducciones no se realizan, si language = sourceLangage .

Para solucionar esto y forzar las traducciones en este caso, se debe establecer forceTranslation en true .

Por lo tanto, se debe agregar / modificar el componente i18n en la sección de components de la configuración de la aplicación de la manera similar a esta:

''i18n'' => [ ''translations'' => [ ''app'' => [ ''class'' => ''yii/i18n/PhpMessageSource'', ''forceTranslation'' => true ], ], ],

Estoy usando traducciones basadas en palabras clave en mi aplicación Yii2 (sé que esta no es la mejor opción, pero no tengo otra). He preparado @app/messages/pl/app.php y @app/messages/en/app.php archivos con cadenas de traducción utilizando palabras clave, en lugar de oraciones o palabras con todas las funciones:

<?php return [ ''name_english''=>''Name in English'', ''keywords_english''=>''Keywords in English'' ]; ?>

He configurado mi aplicación para usar el idioma polaco como predeterminado:

''language'' => ''pl'', ''sourceLanguage'' => ''en'',

Y estoy invocando la traducción:

Yii::t(''app'', ''keywords_english'');

Todo funciona bien, cuando el lenguaje está configurado en base, polaco ( pl ):

Pero, cuando lo cambio a inglés ( en ; estableciendo Yii::$app->language durante el tiempo de ejecución o cambiando la configuración de la aplicación), la traducción no se realiza y recibo keywords_english :

He puesto die() en el comienzo de los archivos @app/messages/pl/app.php y @app/messages/en/app.php y puedo ver claramente que cuando el idioma está configurado en inglés , el segundo archivo no está siendo incluido por Yii2 (sigue la ejecución de la aplicación), mientras que cuando el idioma es polaco , se incluye el primer archivo y se rompe la aplicación en ese die() .

¿Qué me estoy perdiendo? ¿Por qué Yii2 no está utilizando traducciones del archivo @app/messages/en/app.php , si el idioma está configurado en inglés ( en )?

EDITAR : De manera predeterminada, no estaba alterando la configuración predeterminada del componente i18n en la configuración de mi aplicación porque no lo necesitaba. Los archivos de traducción se almacenan en la posición predeterminada ( @app/messages/<language>/ ) y utilizan la clase predeterminada ( yii/i18n/PhpMessageSource ). Y esto funciona para todos los idiomas excepto sourceLanguage . En algún momento, traté de alterar la configuración:

''i18n'' => [ ''translations'' => [ ''*'' => [ ''class'' => ''yii/i18n/PhpMessageSource'', ''sourceLanguage'' => ''en'', ''basePath'' => ''@app/messages'' ], ], ],

Sin embargo, no trajo ningún cambio (¿por qué debería hacerlo? Aún usa la configuración predeterminada).


Solución:

''translations'' => [ ''app*'' => [ ''class'' => ''yii/i18n/PhpMessageSource'', ''basePath'' => ''@app/messages'', ''sourceLanguage'' => ''en_US'', ''fileMap'' => [ ''app'' => ''app.php'', ], ],

Respuestas por tu comentario:

1) ''sourceLanguage'' => ''en_US'' - Debe usar la configuración regional completa. Debido a que la configuración regional en inglés puede ser en_US , en_US , etc. The format for the language/locale is ll-CC where ll is a two- or three-letter lowercase code for a language according to ISO-639 and CC is the country code according to ISO-3166. de [doc][1]

2) En la categoría de uso clave. Y categoría establecida en Yii::t(''category''...)