尝试解决这个问题,但我不知道这类事情的最佳做法是什么。
我正在使用3种语言的网站上工作:英语,法语和荷兰人。网站上有类别,3种语言的类别名称不同。
例如:
星星 - >英
Sterren - >荷兰
星星 - >法国
所以我在考虑将它们添加到数据库中。如果需要,我也可以在以后添加更多类别。
现在我正面临着如何做到这一点的问题。我的解决方案是:
**Cat_lang (category languages)**
cat_lang_id
language
**Categories**
categories_id
cat_lang_id
cat_title
使用cat_lang_id我可以链接两个表以获得我需要的语言。
这是解决此问题的最佳方法吗?
提前致谢。
答案 0 :(得分:0)
这是一个灵活而合理的解决方案。您可以在大型ERP系统中看到相同类型的设计,这些系统必须处理数十种语言,并且可以随时添加更多语言。
答案 1 :(得分:0)
为了让您以后可以更轻松地扩展您的网站,我不推荐使用 cat_lang 表。坚持使用包含 language_id 和 language_name 的语言表,并让您的类别表指向它。这样做可以让您在数据库中包含其他实体类型(例如文章)也包含多种语言。
答案 2 :(得分:0)
如果我使用多种语言编写网站,我会使用Zend_Translate进行翻译。基本上,您创建一个Zend_Translate对象,该对象读入数据文件。然后你在该对象上调用translate()给它英文版本,它将以正确的语言提供翻译。 Zend_Translate将扫描您的源并查找所请求翻译的所有引用,这些翻译将生成可以手动翻译的文件。
您将拥有的不仅仅是要翻译的类别名称,因此我建议您在翻译文件中阅读此类方法。
答案 3 :(得分:0)
如果您没有计划大规模网站并且您不打算增加到100种语言,那么您可以做一个更简单且“不太好”的解决方案,即只有1个类别的表,硬编码category_name中的语言代码,例如:
**Categories**
categories_id
cat_title_fr
cat_title_en
cat_title_de
然后在你的代码中,你使用include在每个页面的开头设置一个$ language_code变量,你甚至可以分析$_SERVER
变量中的域名来指定正确的语言默认选择你的那个喜欢(如果你将变量留空,你的查询将不会返回任何文本)。
并按照以下方式生成查询:
mysql_query("SELECT cat_title_".$lang." FROM categories;");
是的,它很脏,因为您在数据库结构中对语言进行了硬编码,但如果您只使用名称的翻译在每种语言中使用完全相同的类别,则实现起来很简单。
除了添加语言之外,你只需要在表格中添加一个带有新翻译的字段,例如西班牙语就是
cat_title_es