¿Cómo construir aplicaciones PHP con soporte para varios idiomas (Inglés, Francés, Chino, etc ..)

StackOverflow https://stackoverflow.com/questions/691218

  •  22-08-2019
  •  | 
  •  

Pregunta

Estoy construyendo una aplicación web que utiliza LAMP y el marco de plantillas Smarty. El sitio web tendrá un montón de contenido estático (página acerca de nosotros, mensajes de error, mensajes de correo electrónico de confirmación etc ...).

La aplicación web debe ser compatible con múltiples idiomas. Es el siguiente enfoque apropiado?

1) Toda copia estática en las páginas de la plantilla de Smarty (páginas html) será reemplazado por llamadas a los plugins sabelotodo como archivo {lang = 'about.xml' getTerm = 'título'} que devuelve una cadena de la etiqueta del título en el idioma apropiado

2) El about.xml archivo es un documento XML en el servidor web que actúa como un diccionario de lengua múltiple. Por lo que tendrá nodos XML como

<term value="title">
   <en>&lt;a href=&quot;http://stackoverflow.com&quot;&rt;Stackoverflow&lt;/a&rt; is a great site</en>
   <fr>&lt;a href=&quot;http://stackoverflow.com&quot;&rt;Stackoverflow&lt;/a&rt; c'est website magnifique</fr>
   <ch>&lt;a href=&quot;http://stackoverflow.com&quot;&rt;Stackoverflow&lt;/a&rt; complex looking chinese characters I don't udnerstand</ch>
</term>
<term value="signupmessage">
   <en>&lt;a href=&quot;http://stackoverflow.com&quot;&rt;Stackoverflow&lt;/a&rt; great deals!</en>
   <fr>&lt;a href=&quot;http://stackoverflow.com&quot;&rt;Stackoverflow&lt;/a&rt; magnifique deals!</fr>
   <ch>&lt;a href=&quot;http://stackoverflow.com&quot;&rt;Stackoverflow&lt;/a&rt; complex looking chinese characters I don't udnerstand</ch>
</term>

3) se http://mywebsite.com/language/index.php La estructura de la URL del sitio web. Para ello, mi servidor web tendrá enlaces simbólicos como ln -s ./en ./ manera que los puntos http://mywebsite.com/en/index.php a la misma página PHP como http://mywebsite.com/fr/index.php, pero voy a comprobar la dirección URL de configuración de idioma. Mi esperanza es que Google indexará las dos versiones del sitio.

Es este un buen enfoque? Xml es el mejor formato para almacenar el contenido de las diferentes lenguas a pesar de que se ha codificado htmlentity etiquetas html? Me paso por alto algo?

¿Fue útil?

Solución

No está seguro acerca de los detalles de su pregunta, pero es posible que desee echar un vistazo a Zend_Translate .

Otros consejos

XML es un formato contenedor y este uso de la misma no es demasiado malo. Tiene la ventaja de ser relativamente legible por humanos a excepción de las entidades HTML. Usted podría tratar de usar las secciones CDATA para eso. Una de las ventajas de la utilización de XML para esto es que se puede utilizar una DTD para validar que todas las lenguas tienen traducciones presentes para todas las claves. Asegúrese de codificar el archivo con UTF-8 o UTF-16 y que probablemente ayuda si se pone la codificación en la parte superior del archivo. Me gustaría recomendar UTF-8.

En cuanto a cómo se cargan los datos XML y que se incorpore a la página, no sé del "sabelotodo", pero el enfoque general suena razonable. El único inconveniente que veo es que usted tiene que liberar todas las traducciones de forma simultánea (difícil evitar este problema).

Una cosa que tener en cuenta es que utilice ch como el código de idioma para chino. Debe utilizar zh . Ese es el código ISO para ello. CH es otra cosa.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top