【问题标题】:Categories in different languages (PHP)不同语言的类别 (PHP)
【发布时间】:2010-12-07 21:59:40
【问题描述】:

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

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

例如:

星星 -> 英文

斯特伦 -> 荷兰语

星星 -> 法语

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

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

**Cat_lang (category languages)**

cat_lang_id

language

**Categories**

categories_id

cat_lang_id

cat_title

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

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

提前致谢。

【问题讨论】:

    标签: php mysql


    【解决方案1】:

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

    【讨论】:

    • 这也是个好主意。目前我正在使用 PHP 文件来翻译变量,但也许我稍后会需要 Languages 表。感谢您的建议!
    • 再次感谢您的回答。如果 Zend Translate 不适合我,我会记住这一点。 :)
    【解决方案2】:

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

    【讨论】:

    • 谢谢罗杰。我马上就开始工作!非常感谢。
    【解决方案3】:

    如果我正在做一个多语言的网站,我会使用Zend_Translate 进行翻译。基本上,您创建一个 Zend_Translate 对象,它读取数据文件。然后你调用那个对象来 translate() 给它英文版本,它会用正确的语言给出翻译。 Zend_Translate 将扫描您的源文件并查找所有对请求翻译的引用,这将生成可以手动翻译的文件。

    您要翻译的不仅仅是类别名称,所以我建议您采用这样的方法,您只需在翻译文件中阅读。

    【讨论】:

    • 感谢乔恩·斯奈德的建议。我以前从未使用过框架,因为我喜欢编写自己的代码,所以我可以理解我在做什么。但是这个翻译让我很生气,所以我去看看zend_translate。再次感谢。
    【解决方案4】:

    如果您不打算建立一个大规模的网站,也不打算将语言增加到 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
    

    【讨论】:

    • 感谢您的建议。下次我会记住这一点。非常感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多