0

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

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

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

  • 我将在同一个表中创建一个新列,例如“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 等。

什么是做我想做的最安全、最快和更专业的方法?

4

2 回答 2

1

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

于 2013-01-09T11:22:40.110 回答
1

正如 Ocramius 建议的那样,使用Doctrine 可翻译扩展

于 2013-01-15T13:48:16.973 回答