【问题标题】:Storing multi-language geodata in MySQL在 MySQL 中存储多语言地理数据
【发布时间】:2010-01-08 12:52:25
【问题描述】:

我的应用程序需要使用地理数据来显示位置名称。我通常对大规模复杂地理数据(例如 Geonames.org)非常熟悉,但对可能的 MySQL 实现不太熟悉。

我有一个四层的自定义数据集,包括每一层的纬度/经度数据: - 大陆(约 10 个) - 国家(约 200 个) - 地区/州(约 100 个) - 城市(约 10K)

关于所有其他表,我正确地引用了四个标准化的位置名称表,允许我将它们与其余数据分开扩展。

到目前为止一切都很好......用英语!

但是,我希望在我的应用程序中添加其他语言,这意味着某些地点名称也需要翻译(例如 London > Londres > Londre 等)。它不会是 OTT,也许是 6 种语言,仅此而已。将需要 UTF-8。

我将使用 Symfony 框架的文化来处理界面翻译,但我不确定我应该如何处理位置名称,因为它们并不真正属于大量 XML 文件。到目前为止,我想到的解决方案是在每个位置表中为“语言”添加一列,以允许系统识别位置名称所使用的语言。

如果有人有更清洁解决方案的经验或任何好的建议,我将不胜感激。谢谢。

编辑: 经过进一步挖掘,找到了一个 symfony 辅助的解决方案。如果有人发现这个问题,请参考:http://www.symfony-project.org/book/1_0/13-I18n-and-L10n

【问题讨论】:

    标签: mysql utf-8 geolocation


    【解决方案1】:

    我不熟悉 Symfony 在该部门的特定职能中必须提供什么。但是对于独立于框架的方法,如何在 locality 表中设置一个数据库列来保存默认名称以便快速查找 - 根据您的偏好,locality 的英文名称 (Kopenhagen) 或本地名称 (København),以及其余的 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
    

    ?

    这将使您可以选择添加无限的语言,并且可能比每次出现新语言时都必须在每个表中添加一列更容易维护。

    但是,当然,多列方法更容易以编程方式查询,并且不需要表关系 - 如果语言的数量极有可能保持有限,我可能会出于纯粹的懒惰而倾向于这种方法。 :)

    【讨论】:

    • 这是一个好主意,仅使用单独的表格进行翻译。
    • 好吧...我想我会采用列方法。当我运行这些场景时,似乎会产生更简单的查询。再次感谢。
    猜你喜欢
    • 1970-01-01
    • 2014-06-15
    • 2015-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多