WEB ERP Latin America

TEMPLATE POST

Resumen técnico

¿Cómo se hace?

WebERP utiliza el paquete gettext de GNU para traducciones de idiomas. Para utilizar la biblioteca gettext, que debe instalarse en su servidor web, PHP debe compilarse con funciones gettext. Sin embargo, desde la versión 3.01 gracias a Briain Gómez y los autores de PHP-GETTEXT Danilo Segan y Nico Kaiser, su clase php para permitir que las traducciones funcionen (aunque más lentamente que las funciones de la biblioteca de gettext) se incluyeron con webERP para que las traducciones sigan funcionando incluso aunque gettext no esté instalado.

Los archivos de traducción gettext se guardan en el directorio regional, en este directorio hay subdirectorios para cada configuración regional, un código de cinco caracteres que representa el idioma que se utilizará. Por ejemplo en inglés un guión y luego otro código de dos caracteres en mayúsculas para la versión local del idioma, por ejemplo los Estados Unidos para EE.UU., - por lo que el código de configuración regional completa se convierte en en_US. Para el inglés de la gran variedad Bretanica: el código de configuración regional completa es en_GB (este es el idioma predeterminado en el que se escribe webERP). La configuración regional de este código debe ser instalado en el servidor web. Todas las regionales instaladas pueden ser inspeccionadas usando la línea de comandos #locale (a en un servidor web de linux).

Será necesario crear nuevos directorios si un traductor desea tener una versión local para su idioma. En el directorio de configuración local, el directorio del código de abreviatura de configuración local de cinco caracteres, hay otro subdirectorio llamado LC_MESSAGES:- aquí es donde existen los archivos de traducción. Hay dos archivos en cada uno de estos directorios:

1.    messages.po. Este archivo contiene todas las cadenas a traducir. Este es el único archivo de preocupación para los traductores.
2.    messages.mo. Este es un archivo de traducción de búsqueda de máquina binaria utilizado por gettext. El archivo .mo se genera automáticamente por una utilidad gettext (msgfmt.exe o msgfmten *nix) usando el archivo messages.po (la sintaxis de una ventana de comandos es msgfmt.exe messages.po). El esfuerzo principal es necesario para obtener el archivo .po - el archivo .mo es fácilmente creado por el administrador del proyecto webERP si es necesario.

Cualquier editor de texto puede ser usado para editar el archivo .po (GNU Emacs contiene funcionalidad específica para editar el archivo .po; hay un PO-Mode especial) - también hay una utilidad llamada Poedit - GettextTranslationsEditor que a menudo es recomendada por los traductores.

Comprensión del archivo messages.po

La traducción se realiza mediante la traducción de las cadenas en el archivo messages.po en el otro idioma. Es importante trabajar en el archivo messages.po más reciente del directorio locale/en_GB-utf8/LC_MESSAGES/ en el SVN. Esto se puede descargar desde el repositorio de subversión.

El messages.po se compone de secciones

Por ejemplo, para un archivo de traducción al francés.

#: AccountGroups.php: 8 index.php: 890
msgid= "An example string in English that needs to be translated"
msgstr = "Une Chaîned'exempleenespagnol qui doitêtretraduite"

La línea #: AccountGroups.php: 8 index.php: 890
Significa que la cadena siguiente se utiliza en el comado AccountGroups.php en la línea 8 y en el comado index.php en la linea 890. Podría ser útil para entender el contexto de donde se utiliza la secuencia de comandos. Las cadenas que se utilizan varias veces durante la aplicación sólo necesitan ser traducidas una vez. En algunos casos, la línea # que muestra dónde se utiliza la cadena puede ser una lista bastante extensa de comandos.

msgid "una cadena de ejemplo en Inglés que necesita ser traducida"
Esta línea es la cadena de inglés que ha de ser sustituida por el texto en msgstr. Si el valor de msgstr está vacío - "".gettext devolverá la cadena en inglés.

El esfuerzo de la traducción es editar el archivo messages.po e ingresar la traducción del idioma dentro de las comillas del msgstr. Todo lo que se requiere es tomar el archivo messages.po de la carpeta en_GB-utf8/ LC_MESSAGES y editarlo con traducciones para su idioma.

Haga una copia y edite el archivo proporcionado al ingresar las traducciones para las cadenas etiquetadas msgid en la cadena etiquetada msgstr. Aunque se ha hecho todos los intentos para evitarlo, tenga cuidado con las cadenas html incrustadas, también se requerirá el html en la cadena traducida. También la información del encabezado del archivo de traducción - con los detalles de los traductores para que se le otorgue el reconocimiento adecuado de su contribución.

Es necesario crear una nueva carpeta en webERP/locale/ con la abreviatura de locale para su idioma, tenga en cuenta que webERP requiere las configuraciones regionales utf-8 - algunos ejemplos:

1fr_FR.utf8 - Francés
2.  en_US.utf8 - Inglés de EE.UU.
3.  de_DE.utf8 - Alemán

Digamos que está creando una traducción alemana, para esto necesita crear la carpeta

webERP/locale/de_DE.utf8

Y la carpeta por debajo de esto se llama LC_MESSAGES

webERP/locale/de_DE.utf8/LC_MESSAGES

El conjunto de idiomas

Para permitir que se seleccione el idioma, debe existir en la matriz webERP $LanguagesArray. Esta es una matriz de todos los idiomas disponibles a los que webERP ha traducido y que webERP mantiene en el archivo.

/webERP/includes/LanguagesArray.php

Esta matriz, es clave para el código de configuración regional. Para el idioma de inglés británico el código de configuración regional es en_GB.utf8 - y para cada elemento hay una sub-matriz de los siguientes elementos nombrados para cada clave en la matriz de idiomas.

1.    LanguageName - Escrito en el idioma de destino - para que los hablantes nativos de ese idioma lo reconozcan en la lista.
2.    WindowsLocale - Este es el nombre de la configuración regional bajo el sistema operativo Microsoft Windows - no el sistema ISO.
3.    DecimalPoint - Este es el carácter que el lenguaje utiliza como punto decimal.
4.    ThousandsSeperator - Este es el carácter que el lenguaje utiliza como el separador de miles.

Los caracteres de esta matriz para la configuración regional seleccionada son utilizados por las funciones utilizadas en webERP en el archivo includes/MiscFunctions.phpparalocale_number_format () para mostrar números en un formato apropiado para el idioma seleccionado.

Por ejemplo:
1.    $LanguagesArray['en_GB.utf8'] ['LanguageName'] = 'Inglés Reino Unido';
2.    $LanguagesArray['en_GB.utf8'] ['WindowsLocale'] = 'Inglés-uk';
3.    $LanguagesArray['en_GB.utf8'] ['DecimalPoint'] = '.';
4.    $LanguagesArray['en_GB.utf8'] ['ThousandsSeparator'] = ',';

Sistema de numeración indio

Muchas personas en la India hablan inglés, pero quieren ver números con formato de numeración indio. El sistema de numeración indio utiliza separadores de forma diferente al sistema de numeración árabe; además de los tres dígitos menos significativos de la parte entera, una coma divide cada dos en lugar de cada tres dígitos, así:

    Sistema de numeración árabe: 1.234.567.890
    Sistema de numeración indio: 1, 23, 45, 67,890

Tener un registro en el LanguagesArray.php y una carpeta vacía en ~/locale/en_IN.utf8 nos permite tener un lenguaje en inglés (británico) sin cadenas traducidas ya que no existen cadenas coincidentes en messages.mo-- pero el número formato en el sistema de numeración indio. Ver MiscFunctions.php en el Manual, Nuevos Comandos, Estructura de Directorios.

Categoría: