2010-01-08 3 views
0

Мое приложение должно использовать геоданные для отображения имен местоположений. Я очень хорошо знаком с крупномасштабными сложными геоданными (например, Geonames.org), но не столько с возможной реализацией MySQL.Хранение многоязычных геоданных в MySQL

У меня есть пользовательский набор данных из четырех слоев, в том числе широта/долгота данных для каждого: - Континенты (около 10) - Страны (около 200) - Регионы/Штаты (около 100) - Города (около 10K)

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

До сих пор так хорошо ... на английском!

Однако я хочу добавить другие языки в свое приложение, что означает, что некоторые имена мест также потребуют перевода (например, London> Londres> Londre и т. Д.). Это не будет OTT, возможно, 6 языков и не более. UTF-8 понадобится.

Я буду использовать культуры каркаса Symfony для обработки интерфейсных переводов, но я не уверен, как мне работать с именами местоположений, поскольку они действительно не принадлежат к массивным файлам XML. Решением, которое я имею в виду до сих пор, является добавление столбца в каждую из таблиц местоположения для «языка», чтобы система могла распознавать, на каком языке находится имя места.

Если у кого-то есть опыт более чистого решения или любые хорошие указатели, я был бы благодарен. Благодарю.

EDIT: После дальнейшего копания найдено решение, поддерживающее symfony. В случае, если кто-то найдет этот вопрос, вот ссылка: http://www.symfony-project.org/book/1_0/13-I18n-and-L10n

ответ

2

Я не знаком с тем, что Symfony может предложить в определенных функциях этого отдела. Но для каркасно-независимого подхода, как насчет наличия одного столбца базы данных в таблице локалей, содержащего имя по умолчанию для быстрого поиска - в зависимости от ваших предпочтений, английское название местности (Копенгаген) или местное имя (Копенгаген) и 1: n таблица переводов для остальных, связанных с каждым населенным пунктом:

locality ID | language (ISO 639-1) | UTF-8 translation 

12345  | fin     | Kööpenhamina 
12345  | fra     | Copenhague 
12345  | eng     | Kopenhagen 
12345  | dan     | København 

?

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

Но, конечно, многоколоночный подход легче запросить программным путем, и не нужны никакие табличные отношения - если количество языков чрезвычайно вероятно, чтобы оставаться ограниченными, я, вероятно, склоняюсь к этому из чистой лени. :)

+0

Это аккуратная идея, используя отдельную таблицу только для переводов. – Tom

+0

Хорошо ... Думаю, я пойду с подходом к колонке. Кажется, вы получаете гораздо более простые запросы, когда я просматриваю сценарии. Еще раз спасибо. – Tom

Смежные вопросы