在YII中动态添加语言

时间:2014-06-02 10:44:22

标签: php mysql database yii relational-database

我的客户要求网站需要能够支持他想要的任何语言,即他希望从后端动态添加语言。我知道我们可以通过创建文件和从相应的文件调用来使用消息文件夹,但问题是我们不知道他需要哪种语言。

我对无限语言支持的概念感到非常困惑。我不能'似乎要保存数据库中的所有语言,因为它会在以后每次创建新表并将其链接到每个内容(或文本)时变得模糊。

请帮我描述一下或用数据库结构的ER图。 任何帮助将不胜感激。

由于

编辑: 这是客户想要的流程。 (他的意思是CLient)

我正在创建一个徒步旅行网站,来自不同国家的许多观众将查看该网站。所以他想为这些国家添加语言。但他不确定此刻需要哪些国家。

1) He'll create a language eg Germany. 
2) Goes to add a tour or trekk.
3) Select the language he had created (Germany and others)
4) If the required language is not there he'll go back to language and create it and return to add a tour/trek
实际上,这就是它。在前端用户将能够在下拉列表中选择语言,该语言应该相应地给出相应的内容。

我知道这个问题似乎有些模糊。但我不知道如何开始这个。我需要的是精确的数据库概念。如果仍然不清楚,请提出问题,以便我可以提供更多信息,并可能有助于其他类似的任务。

2 个答案:

答案 0 :(得分:1)

根据您的要求,Yii的国际化应该为您解决问题。我就是这样做的:

请参阅以下ERD: ERD database for internationalization

lang_source:将是您的源语言表(默认为英语,不建议更改它)。

lang_translation:将是存储所有翻译的表格。

注意:注意两个表之间的identifying relationship

每当您有需要翻译的内容时,请使用接受2个参数的Yii::t(),即类别(用于帮助构建可翻译内容)和内容本身(消息)。 示例:<?= Yii::t('myCategory', 'Welcome to my website'); ?>

Yii知道哪种语言可以获取&#39;在数据库中设置配置中的语言'language'=>'en-US'

lang_translation表格中的每条记录都与lang_source条记录相对应,这样您就可以lang_translationlang_source中的所有可翻译内容添加记录你想要的语言。

换句话说,在后端,您可以检查某个语言和消息是否存在记录。如果没有,则需要将该翻译插入lang_translation。这样您就不需要为新语言创建任何表格。

希望这有帮助!

答案 1 :(得分:0)

愿这个答案对你有所帮助。在main.php中,我们通过编写指定语言文件夹 &#39;语言&#39; =&GT; &#39;恩&#39 ;, 对于每种语言,我们需要单独的文件夹,并且需要在该文件夹上编写特定于该语言的文件。在上面的例子中&#39; en&#39;是文件夹名称。更改&#39;语言&#39;的值在main.php上根据所需的语言。如果这不是你想要的答案,我很抱歉。