我的应用程序需要使用地理数据来显示位置名称。我一般都非常熟悉大型复杂地理数据(例如Geonames.org),但对可能的MySQL实现并不熟悉。
我有一个四层的自定义数据集,包括每个层的lat / lon数据: - 大陆(约10) - 国家(约200) - 地区/州(约100) - 城市(约10K)
在与所有其他表的关系中,我正确地引用了四个位置名称的规范化表,允许我将这些表与其余数据分开展开。
到目前为止一直很好......用英文!
但是,我希望在我的应用程序中添加其他语言,这意味着某些位置名称也需要翻译(例如伦敦> Londres> Londre等)。它不会是OTT,也许是6种语言而不是更多。需要UTF-8。
我将使用Symfony框架的文化来处理接口转换,但我不确定如何处理位置名称,因为它们并不真正属于大量XML文件。到目前为止,我想到的解决方案是在“语言”的每个位置表中添加一列,以允许系统识别位置名称所使用的语言。
如果有人有清洁解决方案的经验或任何好的指示,我将不胜感激。感谢。
修改 进一步挖掘后,找到了symfony辅助解决方案。如果有人发现此问题,请参考:http://www.symfony-project.org/book/1_0/13-I18n-and-L10n
答案 0 :(得分:2)
我不熟悉Symfony在该部门的特定功能中提供的功能。但是对于一个独立于框架的方法,如何在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
这会使您的选项开放以添加无限制的语言,并且可能比每当新语言出现时向每个表添加列时更容易维护。
但是,当然,多列方法更容易以编程方式查询,并且不需要表关系 - 如果语言的数量极有可能保持有限,我可能会倾向于纯粹的懒惰。 :)