Интернационализация пользовательских данных

У меня есть клиент, который хочет хранить данные в базе данных MySQL на нескольких языках (английский, французский и т. д.) и иметь возможность извлекать данные (на том же указанном языке). то есть: у нас есть английское описание продукта (varchar), которое мы намерены переписать на французский язык, а затем на стороне сервера найти описание в нужной нам локали.

Я думал о том, чтобы обернуть данные в XML с языковыми тегами, а затем проанализировать данные?

Каков наилучший способ обеспечить поддержку нескольких языков с точки зрения пользовательских данных? Есть ли там рамки?

J


person Jason S    schedule 18.10.2010    source источник


Ответы (3)


Я думаю, что вы могли бы решить проблему с моделью таблицы Master-Detail:

TABLE Product 
--------------------
ID
ID_MANUFACTURER   
EAN13    
WHATEVER

TABLE Product_I18n
---------------------
ID_PRODUCT
ID_LOCALE
DESC

Когда вам нужно получить доступ к данным в определенной локали, вы должны передать строку локали в запрос, но вам не нужно бороться с локализованной структурой XML...

person Tomas Narros    schedule 18.10.2010
comment
+1. Это лучшая идея для динамических данных, для статических лучше использовать ресурсы. Единственная проблема с этим решением заключается в том, что потребуется JOIN (хотя это может быть скрыто от пользователя с помощью некоторого представления). - person Paweł Dyda; 18.10.2010

Я точно не знаю, существует ли такой механизм, но если бы его не было, я бы хранил данные в формате encoding$encoded_text типа UTF-8$#####.

person Alex Abdugafarov    schedule 18.10.2010
comment
UTF не является решением всех проблем, но вы правы в том, что в этом случае необходимо использовать какой-либо формат преобразования Unicode (будь то UTF-8 или UTF-16) как для хранения, так и для обмена данными. - person Paweł Dyda; 18.10.2010
comment
Хм, на самом деле я имею в виду указать кодировку в начале поля и декодировать весь оставшийся текст, используя ее. - person Alex Abdugafarov; 19.10.2010

Именно для этого предназначен ResourceBundle; большинство людей используют реализацию на основе свойств, но вы можете легко написать реализацию, поддерживаемую базой данных.

person Michael Borgwardt    schedule 18.10.2010