2010-01-08 75 views
0

我的應用程序需要使用地理數據來顯示位置名稱。我一般非常熟悉大規模複雜地理數據(例如Geonames.org),但與可能的MySQL實現不太相關。在MySQL中存儲多語言地理數據

我有四層,其中包括用於每個緯度/經度數據的自定義數據集: - 洲(約10) - 國家(約200) - 地區/國家(約100) - 城市(約10K )

與所有其他表格的關係,我正確地引用了四個標準化的位置名稱表,允許我將它們與其餘數據分開展開。

到目前爲止這麼好......用英語!

但是,我希望將其他語言添加到我的應用程序中,這意味着某些位置名稱還需要翻譯(例如,倫敦>倫敦>倫德爾等)。它不會是OTT,可能是6種語言,也不會更多。 UTF-8將是必要的。

我將使用Symfony框架的文化來處理界面翻譯,但我不知道如何處理位置名稱,因爲它們不屬於大量的XML文件。到目前爲止,我想到的解決方案是在「語言」的每個位置表中添加一列,以便系統識別位置名稱所在的語言。

如果有人有更清潔的解決方案的經驗或任何好的指針,我將不勝感激。謝謝。

編輯: 在進一步挖掘後,找到一個symfony輔助的解決方案。如果有人發現這個問題,請參考:http://www.symfony-project.org/book/1_0/13-I18n-and-L10n

回答

2

我不熟悉Symfony在該部門的特定功能中提供什麼。但是對於一個獨立於框架的方法,如何讓locality表中的一個數據庫列保留缺省名稱以進行快速查找 - 取決於您的偏好,本地(哥本哈根)的英文名稱或本地名稱(København)以及a 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 2010-01-08 13:06:43

+0

好吧...我想我會採用列方法。似乎在我運行場景時會產生更簡單的查詢。再次感謝。 – Tom 2010-01-08 13:51:08