Symfony2多语言网站数据分发

时间:2013-01-09 06:46:14

标签: symfony-2.1

我使用website.com/_locale/xxxxxxxx路由在Symfony2中创建了一个网站,将静态数据转换为两种语言。这个实现成功,但我希望更进一步。我想为其他几个国家运营这个网站,为了将这些国家(使用不同语言)管理到一个网站,需要进行适当的转换。

假设我有一个商店实体。创建的每个对象都有一些变量,如地址,业务类型,设备等。这允许用户使用他自己的语言创建条目,但所有条目将在表格中混合。该表将包含意大利语,英语,西班牙语数据,当有人从其他位置进入网站时,我们不幸要查看其他语言的数据。

我希望用户能够用两种语言创建一个新的商店:英语和他自己的。我想到的解决方案是:

  • 我将在同一个表中创建一个新列,例如“original_language”,每个条目都将存储一个区域设置:en_US,es_SP等。当网站想要检索一行时,将搜索一个表将有数千个条目
  • 我将用另一种语言创建另一个表格,它将成为原始表格的镜像。这意味着我将拥有Shops表/实体,Shops_it,Shops_es,Shops_br等。不幸的是,这个解决方案需要我在其他链接表之间创建几个表和关系。
  • 我将在每个字段的同一行中创建另一列。 Shops.description,Shops.address等也将包括Shops.description_en,Shops.description_br,Shops.address_en,Shops.address_br等。

什么是最安全,最快捷,更专业的方式来做我想要的事情?

2 个答案:

答案 0 :(得分:1)

使用[DoctrineExtensions][1] lib来翻译你的列(它使用类似EAV的结构进行翻译)或者为翻译实体编写1-n关系,拥有“基础”实体和“翻译” “一个。您可以使用集合的indexBy属性来提取和逻辑更容易处理。

答案 1 :(得分:1)

如Ocramius建议的那样,使用Doctrine translatable extension