Szukam porady, jak obsługiwać tabele, które muszą mieć pola, które muszą być przetłumaczone na n języków. Przeczytałem, że najlepszym sposobem jest posiadanie jednego stołu bazowego, w którym znajdują się wszystkie pola, które nie są specyficzne dla danego języka, oraz jedna tabela zawierająca wszystkie pola z tłumaczeniami.Doctrine 2 - najlepsze praktyki dla i18n?
Przykład:
PRODUCT PRODUCT_TRANSLATIONS +--------------+ +----------------------+ | id | | id | +--------------+ +----------------------+ | category_id | | product_id | +--------------+ +----------------------+ | price | | language_id | +--------------+ +----------------------+ | name | +----------------------+ | description | +----------------------+
Więc będziemy mieli PRODUKT tabela bazowa, która przechowuje wszystkie dane meta oraz tabelę PRODUCT_TRANSLATIONS gdzie wszystkie dane są przechowywane, które muszą być tłumaczone na wiele języków. Tabela PRODUKT ma związek OneToany z tabelą PRODUCT_TRANSLATIONS.
Jaka byłaby doktryna - sposób radzenia sobie z takim scenariuszem? Jeśli zapytam o tabelę produktów, wszystkie tłumaczenia zostaną dołączone do tej tabeli. Ale przez większość czasu chcę mieć tylko jedno tłumaczenie dla danego identyfikatora produktu. Mogłabym użyć klasy repozytorium, aby napisać własne metody pobierania, aby ograniczyć zestaw wyników tylko do jednego języka, ale będę miał wiele tabel, które mają pola, które muszą być przetłumaczone. Założę się, że istnieje bardziej ogólne rozwiązanie tego problemu. Innym problemem jest to, że jeśli zapytam o jeden obiekt związany z innym obiektem, otrzymam wszystkie tłumaczenia dla tego drugiego obiektu.
Btw: Jestem świadomy możliwości rozszerzenia Translatable przez Gediminasa, ale nie podoba mi się to, że wszystkie tłumaczenia są przechowywane w jednej tabeli.
Poszukuję więc najlepszych praktyk w zakresie internacjonalizacji. Każda myśl na ten temat jest bardzo ceniona.
Znaleziono rozwiązanie? Szukam tego samego. –