2010-05-25 17 views
6

Tengo un sitio web que actualmente está en inglés. Es un juego en línea, por lo que tiene un montón de páginas diferentes con texto estático, así como mucho contenido en una base de datos.¿Cómo se manejan las localizaciones dinámicas de sitios?

Estoy tratando de expandirme más globalmente y me estoy preparando para lanzar algunas localizaciones del sitio. Sin embargo, no estoy seguro de cuál es la mejor manera de configurarlo para que sea más fácil de administrar y más fácil de usar para los usuarios.

¿Debería estar almacenando los textos traducidos en una base de datos, o debería hacerse de una manera completamente diferente? Si es importante, el sitio está escrito en PHP y usa MySQL.

Respuesta

1

En mi experiencia haciendo todas las traducciones de forma manual puede ser una verdadera pesadilla! % -)

Creo que debe centrar su traducción en el sitio de comandos del tablero como el menú de navegación y todas las demás configuraciones de perfil de usuario, y los botones del sitio y cosas por el estilo.

hacer esto mediante la inclusión en sus páginas de archivo como este:

include "./includes/languages/english.php"; 

en un archivo llamado ej .: english.php puso como esta ex

define('LAN_USER_LOGIN' , 'User Logged In'); 
define('LAN_USER_LOGOUT' , 'User Logged Out'); 
..... 

y así sucesivamente italian.php, español .php, french.php ect ... y en cada uno de estos archivos tienen las mismas variables definidas pero traducidas!

¡entonces usted puede dejar que el usuario elija de una lista de países! muchas maneras de hacer esto por cierto!

una forma puede ser mediante el uso de la sesión

// if the user haven't selected a language before!! 
if (empty($_SESSION['language'])) { 
$_SESSION['language'] = "EN"; 
} else { 
$_SESSION['language'] = YOUR_LANG ; 
} 

para el resto del contenido recomiendo a utilizar herramientas como

http://code.google.com/intl/it-IT/apis/ajaxlanguage/


NOTA: recomiendo usted no usa un sistema de reconocimiento automático , porque puede resultar en una experiencia muy molesta, especialmente si estás viendo el sitio desde otro país. o simplemente desea elegir, ¡deje brevemente al usuario la elección final! ;-)

¡utilice el reconocimiento automático para fines de registro de autocompletado! ;-)

Espero que esta ayuda!

1

Sugiero utilizar un almacenamiento centralizado (esta podría ser una tabla de base de datos MySQL, con una columna de "idioma" que almacena el idioma de la traducción). Esto también podría ser archivos XML, un archivo por idioma.

Si usted está buscando para formatos de archivos, incluso más posibles, mira esta página de documentación de Zend Framework: http://framework.zend.com/manual/en/zend.translate.adapter.html

Para la traducción me sea crear una clase de función personalizada o la costumbre, si no está utilizando un marco eso ya incluye la traducción.

Otra opción es usar funciones estándar de PHP. Solo busca la función "_()". Aunque no he trabajado con estas funciones y las acabo de encontrar, no estoy seguro de qué tan bien funcionen.

1

Recomendaría usar gettext con un marco que integra (por ejemplo, Zend) y el almacenamiento en el formato de archivo .po. El formato .po tiene editores que hacen que la traducción funcione de manera justa. También es bastante portátil (por lo tanto, el nombre) y podría moverse con usted a otros juegos.

1

Utilizamos un enfoque mixto con el marco de Zend. El contenido de la página (páginas WYSIWYG) se almacena en el DB (un registro por idioma, los datos no localizados se separan de los datos localizados y se almacenan en diferentes tablas vinculadas), pero las etiquetas de campo y los mensajes estándar de error/retroalimentación se almacenan en XML o gettext files (un archivo por idioma).

1

Utilizamos un enfoque mixto:

  • base de datos de CMS páginas traducciones
  • XML para traducciones de las palabras/frases (textos estáticos, etiquetas, mensajes de error, etc.)

Para base de datos generalmente utilizamos 2 tablas: 1 para contenido principal, otras traducciones de formularios, para que podamos elegir qué hacer si la traducción no está disponible: mostrar el contenido en su idioma original u ocultarlo.

Para XML, utilizamos XLIFF formato, que puede ser fácilmente con el apoyo de muchos marcos y softwares

Cuestiones relacionadas