Especificación de los archivos de idioma

From Joomla! Documentation

This page is a translated version of the page Specification of language files and the translation is 100% complete.

Other languages:
English • ‎español • ‎français • ‎Nederlands • ‎português • ‎中文(中国大陆)‎
Split-icon.png
Split Page into Specific Joomla! Versions - J2.5 and 3.x

It has been suggested that this article or section be split into specific version Namespaces. (Discuss). If version split is not obvious, please allow split request to remain for 1 week pending discussions. Proposed since 23 months ago.

Quill icon.png
Content is Incomplete

This article or section is incomplete, which means it may be lacking information. You are welcome to assist in its completion by editing it as well. If this article or section has not been edited in several days, please consider helping complete the content.
This article was last edited by FuzzyBot (talk| contribs) 23 months ago. (Purge)

Esta página explica los cambios en la especificación de los archivos de idioma de la versión 1.5 a la 2.5. Como esta actualmente en desarrollo, no se fusiona de nuevo con la página central de especificaciones.

La especificación 1.5 se describe en Crear un archivo de definición de idioma.

Descripción general de los cambios en Joomla 3.2 Joomla 3.2

Empezando con Joomla! 3.2, en-GB se carga automáticamente en primer lugar, luego las cadenas de idioma xx-XX. Esto es para asegurarnos que siempre hay un valor asignado a la cadena. Lo que evita que en la pantalla se muestre una 'constante' si el archivo ini del idioma xx-XX ini está roto o falta una cadena de traducción.

Descripción general de los cambios en Joomla 2.5 Joomla 2.5

  1. La CLAVE ahora se define:
    1. sin ningún espacio en blanco. Todos los espacios en blanco se convertirá en un carácter de subrayado '_'
    2. Todas las CLAVES del Lado Cliente deben incluir un prefijo de la extensión

Información adicional de una nuevo hilo

Así, las implicaciones de formato del archivo ini son:

  1. Como se ha mencionado anteriormente, nuestras claves han cambiado. No se permiten espacios. La práctica general será utilizar guiones bajos (_) para el espaciado. También, el plan es usar el espacio de nombres en las cadenas, por lo que se acabaría con algo como COM_EJEMPLO_MICLAVE para tu clave. De acuerdo con el manual de php: Los caracteres {}|&~![()^" no se deben utilizar en las claves. También hay palabras reservadas para las claves: null, yes, no, true, false, on, off, none. Nota : el prefijo COM_EJEMPLO_ no es obligatoria a partir de Joomla 1.6 / 1.7, pero es recomendable seguir esta convención para evitar colisión de nombres con otras extensiones.
  2. La sintaxis del valor también ha cambiado. De acuerdo con el manual de PHP, si un valor en el archivo ini contiene caracteres no alfanuméricos necesita ser encerrado entre comillas dobles ("). Por eso básicamente las referencias a todos nuestros valores tendrán que ser entre comillas, ya que un espacio no es alfanumérico. Si deseas incluir una comilla doble en la cadena, puedes utilizar una entidad html como " o el "_QQ_" predeterminado. Por último, de acuerdo con el manual de PHP, los caracteres {}|&~![()^" tienen un significado especial en el valor.
    Lamentablemente, no puedo desentrañar que el significa concretamente especial - ¿Alguien tiene experiencia en esta área?
    Respuesta de infograf768: Mi conjetura es que no se pueden utilizar si no esentre comillas dobles.
    Nota de nikosdion: Estoy de acuerdo con el comentario de infograf768. Además, todas las cadenas de traducción deberían ser entre comillas dobles.
  3. Los comentarios han cambiado la sintaxis, normalmente usábamos el signo almohadilla (#) y el analizador estándar requiere punto y coma (;).
    Nota de nikosdion: se DEBE utilizar el punto y coma, de lo contrario, los archivos de idioma no se cargan.

Comentario y cadena típicos:

; A comment
COM_KEY_CONSTANT="My value is "_QQ_"great!"_QQ_". I like it"

Nota: Si el formato INI no es válido, los resultados no serán bien definidos. La mayoría de las versiones de PHP cargan el archivo de idioma hasta el punto donde se produce un error, sin embargo, no lanza ningún mensaje de error.

Nota: Sólo caracteres ASCII son compatibles en el lenguaje de las claves.


Actualiza tu archivos de idioma Joomla! 1.5 para que trabajen con Joomla! 2.5

El uso de la analizador ini, nativo de php, de archivos de idioma tiene muchos beneficios, incluyendo un rendimiento mucho más rápido.

Básicamente, tienes dos opciones:

  1. La solución de Eclipse (o cualquier otra Plataforma de Codificación), muy fácil así:
    1. Busca el archivo *.ini en tu proyecto elegido. A continuación, utiliza buscar/reemplazar los siguientes valores automáticamente, reemplaza comillas existentes, agregar comillas a los valores de las cadenas y actualiza los comentarios
    2. Comillas ya no permiten y esto puede ser fácilmente evitado mediante la búsqueda de " y reemplazarlas con '
    3. Poner comillas dobles de cierre al final de la línea si no esta vacía o un comentario. Encontrar ^((?!#).+)\R reemplazar con $1"\R
    4. Poner una comillas de apertura al inicio de la traducción de la cadena, si no está vacío o comentarla. Encontrar ^((?!#).+?\=)(.+)\R reemplazar con $1"$2\R
    5. Ahora cambia el numeral de los comentarios por los nuevos punto y coma. Encontrar ^# y reemplazar con ;
    6. Elimina cualquier cadena ilegal, que pueden impedir que se cargue el archivo. Encontrar ^(null|yes|no|true|false|on|off|none)=(.+)\R y reemplazar con nada.

Nota de nikosdion: he escrito un confiable convertidor de idioma Joomla! 1.5 a Joomla! 1.6, que cumple a estas convenciones. Usted puede encontrar en mi página Snipt

Archivo de idioma convenciones de nomenclatura y precedencia

Todos los archivos de idioma siguen la convención de nomenclatura idioma.extensión.ini. Por ejemplo, para inglés Británico el archivo de traducción de com_foobar se denomina en-GB.com_foobar.ini.

Los archivos de traducción son almacenados dentro del respectivo directorio de idioma de todo el sistema. Por ejemplo, los archivos de idioma del lado Cliente para inglés GB son almacenados dentro de language/en-GB. Así, el archivo de la traducción al inglés GB del lado Cliente del archivo de com_foobar tiene una ruta de acceso completa de language/en-GB/en-GB.com_foobar.ini. Igualmente, en tu Lado Servidor el archivo de traducción tiene una ruta de acceso completa de administrator/language/en-GB/en-GB.com_foobar.ini. Debes especificar los archivos de traducción de todo el sistema en el archivo de manifiesto XML de tu extensión, de lo contrario no se instalarán. Estos archivos de idiomas de todo el sistema se cargan por primera vez por Joomla!. Para colocar los archivos de idioma en el archivo de manifiesto XML, puedes utilizar la misma sintaxis que con Joomla! 1,5, es decir .:

<languages folder="path/to/language">
   <language tag="en-GB">en-GB/en-GB.com_foobar.ini</language>
   <language tag="en-GB">en-GB/en-GB.com_foobar.sys.ini</language>
</languages>

Cada extensión puede tener también sus archivos de traducción "locales", dentro de su propio directorio del Lado Cliente o Servidor. Por ejemplo, puedes tener un lenguaje ini para GB de inglés en administrator/components/com_foobar/language/en-GB/en-GB.com_foobar.ini. Estos archivos "locales" no deben ser mencionados en el archivo de manifiesto XML de la extensión. De hecho, un usuario siempre puede crear un directorio de idioma dentro del directorio de la extensión, crear un sub-directorio llamado como su idioma y dentro de ella crear un archivo de idioma INI con su idioma que desee reemplazar.

La extensión Joomla! también debe especificar un archivo sys.ini que se utiliza

  • a. durante la instalación de la extensión, para permitir la localización de los mensajes de post-instalación,
  • b. para construir el menú de Componentes del administrador,
  • c. para localizar parámetros de componentes y parámetros del menú
  • d. y en el Administrador de extensiones->Gestionar.

Estos siguen una convención de nomenclatura similar a la de los archivos principales de idioma y pueden ser almacenados en el Lado Servidor del sitio. Si solo están almacenados allí, sus cadenas no va a ser utilizadas durante la instalación. Por ejemplo, el archivo sys.ini de com_foobar en GB inglés se almacena en administrator/language/en-GB/en-GB.com_foobar.sys.ini y su variante en administrator/components/com_foobar/language/en-GB/en-GB.com_foobar.sys.ini.

¡IMPORTANTE! Para que el sys.ini se cargue automáticamente después de la instalación DEBE ser almacenado dentro del directorio de la extensión. En otras palabras, el archivo sys.ini de todo el sistema NO se cargará en el momento de la instalación. Si sólo hay UN archivo sys.ini presente en el directorio del idioma de la extensión, será cargado para el uso normal del Lado Servidor.

¡IMPORTANTE! los archivos ini almacenados para todo el sistema SIEMPRE reemplazan los que están almacenados en la carpeta de idioma de la extensión, excepto para el sys.ini en el momento de la instalación. Uno puede por lo tanto tener 2 archivos sys.ini. También usar de diferentes valores para la clave del manifiesto <description>COM_FOOBAR_XML_DESCRIPTION</description> en el archivo sys.ini de la carpeta de idioma de la extensión utilizado en la instalación y el archivo ini proporcionará una pantalla diferente al de la edición de la extensión.

El elemento de menú que se muestra en el menú Componentes siempre viene de la traducción de la clave COM_FOOBAR para un componente denominado com_foobar (es decir, el directorio de instalación de tu componente en mayúsculas). Esto es sustancialmente diferente a la forma que Joomla! 1.5 utiliza los archivos menú.ini para el trabajo!

La mejor manera de envolver tu cabeza alrededor de estos convenios es descargar una extensión popular compatible con Joomla! 1.6 de la JED y analizar sus contenidos, dentro del verdadero espíritu del Software Libre y Open Source.

Cargar cualquier archivo de idioma, en cualquier lugar

Joomla! carga automáticamente los archivos de traducción cuando se tiene acceso a un componente. En orden a la carga arbitraria de archivos de idioma en rus extensiones, puede utilizar el código siguiente:

$language = JFactory::getLanguage();
$language->load('com_yourcomponentname');

Nota de elkuku: O más corto usando encadenamiento PHP 5:

JFactory::getLanguage()->load('com_yourcomponentname');

Otro truco interesante que puedes hacer es cargar arbitrariamente los archivos de idioma, del lado Cliente o Servidor, de cualquier componente y lenguaje. Por ejemplo, es posible que desees cargar el archivo de idioma inglés y mezclarlo con el idioma actual del usuario. Esto significa que las cadenas no traducidas aparecerán en inglés y no se como claves sin traducir. Puedes usar algo como esto para los archivos de idioma del Lado Servidor:

$language = JFactory::getLanguage();
$language->load('com_yourcomponentname', JPATH_ADMINISTRATOR, 'en-GB', true);
$language->load('com_yourcomponentname', JPATH_ADMINISTRATOR, null, true);

Y para cargar los archivos de idioma, del Lado Cliente, usando el mismo truco:

$language = JFactory::getLanguage();
$language->load('com_yourcomponentname', JPATH_SITE, 'en-GB', true);
$language->load('com_yourcomponentname', JPATH_SITE, null, true);

Hilos de discusión relacionados en la lista de correo de desarrollo