代码之家  ›  专栏  ›  技术社区  ›  qwaz

10月CMS:如何翻译flash消息?

  •  2
  • qwaz  · 技术社区  · 7 年前

    我使用 translate.rainlab 本地化插件,但不确定如何翻译ajax表单的flash消息。

    function onMailSend() {
        Mail::sendTo('name@example.com', 'contact.form', post());
        Flash::success('Message has been sent');
    }
    
    2 回复  |  直到 7 年前
        1
  •  3
  •   hlev jldupont    6 年前

    您可以继续使用Translate插件的功能,无需使用其他翻译机制。

    use RainLab\Translate\Models\Message;
    
    function onMailSend() {
        Mail::sendTo('name@example.com', 'contact.form', post());
        Flash::success(Message::trans('Message has been sent'));
    }
    

    这假设“Message has been sent”是默认语言环境中的字符串。

        2
  •  2
  •   Hardik Satasiya    7 年前

    翻译插件用于翻译 所容纳之物 前端,但对于在代码中翻译消息,最好使用locale lang消息。

    假设这是您的站点: http://octdev.local.com/demo/ajax (默认lang设置为en)

    然后您可以在 lang/en/lang.php 可以定义翻译消息的文件

    en-lang文件将在那里,默认内容如下所示

    // lang/en/lang.php
    <?php return [
        'plugin' => [
            'name' => 'TestPlugin',
            'description' => ''
        ]
    ];
    

    您可以在任何地方访问此消息

    \Flash::success(\Lang::get('hardiksatasiya.testplugin::lang.plugin.name'));
    

    哈迪克萨塔西亚。testplugin=> plugin auther name . pluginname

    lang.plugin。名称=>像阵列一样工作 lang 表示文件名(语言),然后获取 plugin array 然后是它的钥匙 name 所以在我们的情况下 测试插件

    现在您可以使用新url: http://octdev.local.com/de/demo/ajax 它在 判定元件

    因此,您可以在插件目录中创建新的lang文件 lang/de/lang.php 并将相同的php代码与翻译后的消息放在一起

    // lang/de/lang.php
    <?php return [
        'plugin' => [
            'name' => 'TestPlugin In de',
            'description' => ''
        ]
    ];
    

    它会起作用的。如果您需要整个文档,可以使用此 参考号: https://octobercms.com/docs/plugin/localization

    使现代化 如果你认为我只需要在一个地方做,你可以这样做(但不是首选方式)

    $locale = \Lang::getLocale();
    switch($locale) {
      case 'en':
         \Flash::success('Message has been sent - EN');
         break;
      case 'de':
         \Flash::success('Message has been sent - DE');
         break;
      default:
         \Flash::success('Message has been sent - default');
    }