我目前正在使用PHP和MySQL构建一个多语言网站,并且想知道关于本地化的最佳方法是关于我的数据模型。每个表格都包含需要翻译的字段(例如,name
,description
....)以多种语言。使用mysql/PHP进行本地化
第一个想法是要建立一个字段为每种语言(例如name_en
,name_de
,name_fr
),使用变量(例如$entry['name_' . LANGUAGE]
)从PHP检索适当的字段。虽然它可以工作,但这种方法在我看来有许多缺点:
- 您需要尽可能多地发生每个字段(因为您可以使用en-US,en-CA,en-GB ...) )
- 如果您添加或删除的语言,你需要改变
- 如果你有翻译领域,他们仍然不显得很优化的每个条目创建的数据库结构
第二个想法是创建可用于存储数据库中任何表格的任何字段的翻译的翻译表:
---------------- translation ---------------- id INT table_name VARCHAR field_name VARCHAR value VARCHAR language_id VARCHAR
table_name
和field_name
将允许标识翻译是关于哪个表和哪个字段,而language_id
将指示翻译如果是哪种语言。这个想法是创建模型,根据用户选择的语言,用相应的翻译来替换可翻译字段的值(例如name
,description
)。
您可以看到这种方法的缺点吗?你有建议吗?
谢谢。
此问题已被提问。建议你通过SO进行搜索。看看http://stackoverflow.com/questions/6242478/php-translation-frontend-similar-to-rosetta/6244655#6244655这里http://stackoverflow.com/questions/6000541/multi-language-php-application -best-practice/6000874#6000874 – PurplePilot
正如你从给出的答案中可以看到的那样,仍然有讨论的空间。 – Max