¿Dónde puedo encontrar información sobre mejores prácticas en localización?

Localicé este juego: Metajets en inglés, francés, español y alemán. Desafortunadamente, solo sé inglés, español y alemán, y estoy lejos de ser perfecto en español y alemán, por lo que tuve que confiar un poco en los traductores.

Te diré lo que aprendí. Probablemente no te gustará.

En primer lugar, deja de preocuparte sobre dónde vas a almacenar las cadenas . No importa, ok? Simplemente hazlo. Eso es algo complicado. No hace ninguna diferencia. Nada de eso importa. Aquí no es donde radica el problema.

Sus verdaderos desafíos serán la gramática y el uso. Incluso sin nada realmente sofisticado, como lo que se encontrará con un juego de aventuras que tiene nombres de objetos utilizados de diferentes maneras, tendrá que lidiar con el orden y el énfasis, que difiere de un idioma a otro. Nada en su pequeño sistema de localización lo ayudará, y de hecho probablemente lo dificultará en comparación con una solución ad hoc .

Es absolutamente necesario algún tipo de forma aproximada para representar la gramática. No necesita ser terriblemente elegante, pero tiene que estar allí. Tal vez algo como SNOBOL o un simple LISP o incluso alguna forma de representar expresiones regulares. No tiene que ser un sistema gramatical completo. Algún tipo de forma de hacer ajustes y cambios simples de orden y morfofonémicos basados ​​en cálculos simples. No lo necesitará mucho, pero lo necesitará. No importa lo que sea, requerirá algún tipo de estructura mayor que una cadena, aunque puede codificarse en cadenas.

Todos los desarrolladores de monoglot con los que trabajes no entenderán por qué, odiarán tus agallas y se opondrán brutalmente a ti. En serio, tengo 51 años. He trabajado con científicos, políticos, empleados del gobierno y departamentos de recursos humanos, y el proyecto mencionado es el único momento en mi vida profesional en el que realmente he querido romper el cuello de otro geek como un hueso de pollo. .

Suscribiéndome a esto porque tengo curiosidad por lo que la comunidad tiene que decir.

Aquí hay varias opciones que se me ocurrieron con sus pros y sus contras:

1) Almacene cadenas de idioma en archivos planos, csv o XML.

Pro: muy fácil de escribir e implementar, bastante portátil si tiene que cambiar entornos

Con: rendimiento … golpe de disco adicional cada vez para todo el archivo cuando todo lo que pueda necesitar es una cadena o dos. Se puede mitigar manteniendo el archivo en una partición virtual en memoria. Otra estafa, difícil de actualizar sin acceso directo a los archivos

2) Almacenar cadenas de idioma en una base de datos relacional.

Pro: puede integrarse perfectamente con cualquier otra base de datos que esté utilizando para su aplicación. Puede facilitar la actualización de cadenas.

Con: el rendimiento afectado si tiene una indexación deficiente, puede mitigarse nuevamente manteniendo las tablas relevantes en la memoria.

3) Almacene cadenas de idioma en una tienda de clave / valor como Redis

Pro: todos los beneficios del # 2, más un poco más fácil de mantener en la memoria y hacer una copia de seguridad en el disco (ya que un sistema como Redis maneja esto automáticamente)

Con: podría tener que ejecutar un sistema heterogéneo de Redis + cualquier otra base de datos relacional que esté ejecutando. Puede consumir una cantidad decente de memoria si tiene muchas cadenas y muchos idiomas.

Personalmente, iría con el # 3. ¿Qué piensa la comunidad quora? ¿Algo mejor que los tres que he mencionado?