Estoy buscando algunos consejos sobre cómo manejar tablas que necesitan tener campos que deben traducirse a n idiomas. He leído que el mejor enfoque es tener una tabla base que contenga todos los campos que no son específicos del idioma y una tabla que contenga todos los campos con las traducciones.Doctrine 2: las mejores prácticas para i18n?
Ejemplo:
PRODUCT PRODUCT_TRANSLATIONS +--------------+ +----------------------+ | id | | id | +--------------+ +----------------------+ | category_id | | product_id | +--------------+ +----------------------+ | price | | language_id | +--------------+ +----------------------+ | name | +----------------------+ | description | +----------------------+
Así que vamos a tener el producto de la tabla base que contiene todos los metadatos y una mesa PRODUCT_TRANSLATIONS donde todos los datos se almacena esa necesidad de ser traducido a varios idiomas. La tabla PRODUCT tiene una relación OneToMany con la tabla PRODUCT_TRANSLATIONS.
¿Cuál sería la forma de Doctrine para manejar ese escenario? Si consulto la tabla Productos, obtendré todas las traducciones unidas a esta tabla. Pero la mayoría de las veces solo quiero tener una traducción para una identificación de producto determinada. Podría usar una clase de repositorio para escribir mis propios métodos getter para limitar el conjunto de resultados a un solo idioma, pero tendré muchas tablas que tienen campos que deben traducirse. Apuesto a que hay una solución más genérica para ese problema. Otro problema es que si consulto un objeto que está relacionado con otro objeto, obtendré todas las traducciones para ese segundo objeto.
Por cierto, soy consciente de la extensión de comportamiento traducible de Gediminas, pero no me gusta el hecho de que todas las traducciones estén almacenadas en una sola tabla.
Así que estoy buscando las mejores prácticas en lo que respecta a la internacionalización. Cualquier pensamiento sobre este tema es muy apreciado.
¿Encontró una solución? Estoy buscando lo mismo. –