繁体   English   中英

不同语言的类别(PHP)

[英]Categories in different languages (PHP)

试图解决这个问题,但是我不知道这种事情的最佳实践是什么。

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

例如:

星星->英文

斯特伦->荷兰

星星->法语

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

现在,我面临着如何执行此操作的问题。 我的解决方案是:

**Cat_lang (category languages)**

cat_lang_id

language

**Categories**

categories_id

cat_lang_id

cat_title

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

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

提前致谢。

这是一种灵活而合理的解决方案。 您会看到在大型ERP系统中必须处理多种语言的相同类型的设计,并且有可能随时添加更多的语言。

为了使您将来可以更轻松地扩展网站,我不建议您使用cat_lang表。 坚持使用包含language_idlanguage_name语言表,并让您的类别表指向它。 这样,您就可以在数据库中拥有其他实体类型(例如,文章),它们也包含多种语言。

如果我使用多种语言制作网站,则可以使用Zend_Translate进行翻译。 基本上,您创建一个Zend_Translate对象,该对象读取数据文件。 然后,您对该对象进行调用,以使其具有英语版本的translation(),它将以正确的语言提供翻译。 Zend_Translate将扫描您的源代码并找到对所请求翻译的所有引用,这些引用将使文件可以手动翻译。

您将不仅要翻译类别名称,因此我建议您仅在翻译文件中阅读的类似方法。

如果您不打算建立一个大型网站,也不打算增加到100种语言,则可以做一个更简单且“不太好用”的解决方案,即只有一个类别表,您可以在其中硬编码category_name中的语言代码,例如:

**Categories**

categories_id
cat_title_fr
cat_title_en
cat_title_de

然后在代码中使用包含在每个页面的开头设置$ language_code变量,甚至可以分析$_SERVER变量中的域名以分配正确的语言,默认情况下请选择所需的语言(如果您保留变量为空,您的查询将不返回任何文本)。

并生成如下查询:

mysql_query("SELECT cat_title_".$lang." FROM categories;");

是的,这很脏,因为您在数据库结构中对语言进行了硬编码,但是如果每种语言都具有完全相同的类别,而只翻译了名称,则实现起来很简单。

除了添加语言外,您还需要在表中添加新的翻译字段,例如,西班牙语是

cat_title_es

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM