不同语言的分类(PHP)

时间:2010-12-07 21:59:40

标签: php mysql

尝试解决这个问题,但我不知道这类事情的最佳做法是什么。

我正在使用3种语言的网站上工作:英语,法语和荷兰人。网站上有类别,3种语言的类别名称不同。

例如:

星星 - >英

Sterren - >荷兰

星星 - >法国

所以我在考虑将它们添加到数据库中。如果需要,我也可以在以后添加更多类别。

现在我正面临着如何做到这一点的问题。我的解决方案是:

**Cat_lang (category languages)**

cat_lang_id

language

**Categories**

categories_id

cat_lang_id

cat_title

使用cat_lang_id我可以链接两个表以获得我需要的语言。

这是解决此问题的最佳方法吗?

提前致谢。

4 个答案:

答案 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