Visión general de los pasos de implementación del programa internacional

  
 

> Internacionalización (I18N) se refiere a un software que admite extensiones en varios idiomas en la estructura y el mecanismo del diseño. Su diseño de función y código no es específico de un idioma y región específicos. > > Uno: Pasos básicos de implementación > 1 Editar programa de origen > Editar el programa de origen con el editor vim. Nota: para implementar con éxito la internacionalización del programa, el programa de origen debe contener el archivo de encabezado estándar correspondiente. La función principal debe llamar a funciones relacionadas, como la biblioteca libintl, la función setlocale (), bindtextdomain (), textdomain (), etc. > El siguiente programa es un ejemplo simple: > > # incluye < stdio.h > > # include < locale.h > > # include < libintl.h > > # include < stdlib.h > g &g;; #define _ (String) gettext (String) > int main (int argc, char ** argv) > {> setlocale (LC_ALL, "); > bindtextdomain (" gettext ", " . "); > textdomain (" gettext "); > printf ("% s \\ n ", _ (¡un mundo, un sueño! ")); > return 0; >} > > > 2 Compile el programa fuente > Compile el programa fuente con el comando gcc para generar un archivo ejecutable. Después de la ejecución, se pueden mostrar los caracteres de la función de entrada en el programa fuente. Ejemplo de comando: > gcc -o gettext gettext.c > > 3 Crear pot de plantilla de archivo de traducción> Utilice el comando xggetxt para extraer información de traducción del programa fuente y crear un archivo de pot de plantilla de archivo de traducción (plantilla de objeto portátil). Ejemplo de comando: > xgettext --keyword = _ gettext.c -o gettext.pot > > 4 Generar archivos po de objetos portátiles desde pot> Cada idioma tiene su propio archivo de objetos portátil, es decir, po (Portable Objeto) archivo. El archivo se compone de un par de msgid y msgstr, donde msgid representa la información extraída del programa y msgstr representa la traducción. Ejemplo de comando: > cp gettext.pot gettext.po > > 5 Edite los caracteres traducidos en el archivo po, modifique la codificación de los caracteres > edite el archivo po con el editor gedit o vim, traduzca la información relevante y cambie el conjunto de caracteres a UTF -8, de lo contrario no puede ser codificado. Cuando hayas terminado, guarda el archivo. Nota: Si desea implementar varios idiomas, debe copiar los archivos multi-po y traducirlos por separado. Ejemplo de comando: > gedit gettext.po o vim gettext.po > > > > > > > > > > > > > >, gt; Use el comando msgfmt para convertir el archivo po en un archivo binario (MachineObject) para la lectura de la computadora. Ejemplo de comando: > msgfmt gettext.po -o gettext.mo > > > 7 Colocar el archivo mo en la estructura de directorio correcta > mo ubicación de almacenamiento del archivo es la clave para la internacionalización del programa. En general, se debe colocar en el subdirectorio correspondiente bajo la configuración regional de la región correspondiente. Por lo general, la estructura de directorio predeterminada es /usr /locale /share /local, por lo que el mo generado en este ejemplo debe ubicarse en el subdirectorio correspondiente bajo este directorio. Sin embargo, dado que la función setlocale () en el programa está configurada para buscar información de traducción bajo la estructura de directorio actual, solo es necesario crear un directorio local correspondiente en el directorio actual (es decir, el directorio donde se ubica el programa fuente). En este ejemplo, puede crear la siguiente estructura de directorio: > zh_CN /LC_MESSAGES /y en_US /LC_MESSAGES /> Después de crear el directorio, coloque dos archivos mo diferentes en estos dos directorios respectivamente > > 8 Configuración del entorno Variables> Este programa de ejemplo lee la información de LAN de la configuración de LANG del entorno actual, por lo que necesita configurar LANG de la siguiente manera. Nota: Solo se puede establecer una región a la vez. > LANG = zh_CN.UTF-8 > LANG = en_US.UTF-8 > > 9 Ejecute el programa y obtenga el resultado > Ejecute ./gettext en la interfaz del terminal para obtener el resultado que se mostrará. > > 2: Actualización del programa de internacionalización > En el proceso de depuración del programa, es inevitable modificar el programa fuente en consecuencia. ¿Cómo mostrar correctamente la traducción recién modificada después de que se modifique el programa fuente, y usar efectivamente la información de traducción original para mejorar la eficiencia, es decir, cómo "actualizar" el programa de internacionalización? > Utiliza los siguientes pasos para resolver este problema. > > 1 Modificar (agregar, eliminar) el programa fuente > > 2 Ejecute xgettext para generar un nuevo archivo de maceta > Ejemplo de comando: > xgettext --keyword = _ gettext.c -o gettext.pot > > 3 Cambie el nombre del archivo po del programa original para distinguir el archivo po que generará el nuevo archivo pot. ≫ Ejemplo de comando: > mv gettext.po old_gettext.po > > 4 Ejecute msgmerge para comparar y fusionar los archivos pot nuevos y antiguos. Versión de actualización del archivo po > comando ejemplo: > msgmerge old_gettext.po gettext.pot --output-file gettext.po > > 5 Para registrar la diferencia entre los potes antiguos y nuevos, puede usar el comando diff para registrar los dos archivos de potes. Similitudes y diferencias. > Ejemplo de comando: > diff -u old_gettext.po gettext.po > old_gettext.diff > > 6 Después de generar un nuevo archivo po en el paso 4, puede eliminar el archivo po original para evitar interferencias. > Ejemplo de comando: > rm -f old_gettext.po > > 7 Genere un nuevo archivo a partir del archivo po recién generado. > Ejemplo de comando: > msgfmt gettext.po -o gettext.mo > > > 8 se generará nuevamente El archivo mo se coloca bajo la estructura de directorio correcta > > 9Set variable de entorno > > 10 Ejecute el programa para obtener el nuevo resultado > > Tres: Atención a algunos problemas > 1 La función setlocale () en el programa de origen La estructura del directorio del archivo mo debe ser consistente, de lo contrario no se obtendrá el resultado correcto. > > 2 Al editar un archivo po, tenga cuidado de ajustar los caracteres a una codificación portátil UTF-8 para obtener el resultado correcto. De lo contrario, aparecerá una advertencia: > (gettext.po: warning: conjunto de caracteres <quo; CHARSET " no es un nombre de codificación portátil. La conversión de un mensaje a un conjunto de caracteres del usuario puede no funcionar.) ≫ > 3 Configuración de múltiples variables de entorno (Región), copie varias copias de po y edítelas por separado, y coloque los archivos mo generados en el directorio correcto. > > 4 Después de modificar el programa fuente para actualizarlo internacionalmente, se debe eliminar el archivo ejecutable del programa original (antes de la modificación); de lo contrario, no se podrá obtener el resultado del programa modificado> > 4: Parte del programa fuente Explique > > # include < stdio.h > > # include < locale.h > //Defina la función de localización. > # include < libintl.h > //Incluye la biblioteca gettext, que es un conjunto de herramientas y bibliotecas desarrolladas específicamente por GUN para resolver el problema de la internacionalización del programa.

Copyright © Conocimiento de Windows All Rights Reserved