【问题标题】:add languages dynamically in YII [closed]在 YII 中动态添加语言 [关闭]
【发布时间】:2014-06-02 10:44:22
【问题描述】:

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

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

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

谢谢

编辑: 这是客户想要的流程。 (HE 表示客户端)

我正在创建一个徒步旅行网站,来自不同国家/地区的许多观众将在该网站上浏览该网站。所以他想为这些国家添加语言。但他不确定目前需要哪些国家。

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

其实就是这样。并且在前端用户将能够在下拉菜单中选择语言,这应该明显地给出相应的内容。

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

【问题讨论】:

    标签: php mysql database yii relational-database


    【解决方案1】:

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

    请参阅以下 ERD:

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

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

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

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

    Yii 通过在您的配置中设置语言 'language'=>'en-US' 来知道要在数据库中“获取”哪种语言。

    lang_translation 表中的每条记录都与 lang_source 记录相对应,这样您就可以在 lang_translation 中为您想要的每种和任何语言的所有可翻译内容添加lang_source 中的记录。

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

    希望这会有所帮助!

    【讨论】:

      【解决方案2】:

      希望这个答案对您有所帮助。在 main.php 中,我们通过编写指定语言文件夹 '语言' => 'en', 对于每种语言,我们需要单独的文件夹,并且需要在该文件夹上编写特定于该语言的文件。在上面的示例中,“en”是文件夹名称。根据所需语言更改 main.php 上的“语言”值。如果这不是您想要的答案,我很抱歉。

      【讨论】:

      • 是的..我不是在寻找这个答案..我希望没有编码经验的用户从后端创建语言。
      猜你喜欢
      • 2011-01-13
      • 2012-09-17
      • 2018-05-02
      • 1970-01-01
      • 2019-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多