[英]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_id和language_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.