Octobercms:如何翻译闪信?
Octobercms: how to translate flash messages?
我使用 translate.rainlab
插件进行本地化,但不确定如何翻译 ajax 格式的即显消息。
function onMailSend() {
Mail::sendTo('name@example.com', 'contact.form', post());
Flash::success('Message has been sent');
}
translate 插件用于翻译 content 前端,但要在代码内翻译消息,最好使用 locale lang 消息。
假设这是您的站点:http://octdev.local.com/demo/ajax(默认语言设置为 en)
然后您可以创建插件并在 lang/en/lang.php
文件中定义翻译消息
en lang file will be there and default content will be look like this
// lang/en/lang.php
<?php return [
'plugin' => [
'name' => 'TestPlugin',
'description' => ''
]
];
您可以在任何地方访问此消息
\Flash::success(\Lang::get('hardiksatasiya.testplugin::lang.plugin.name'));
hardiksatasiya.testplugin => plugin auther name
. pluginname
lang.plugin.name => worked like array lang
stands for file name (language) then get plugin array
then its key name
so in our case it will out put TestPlugin
现在你可以使用新的 url : http://octdev.local.com/de/demo/ajax 它在 de
所以你可以在你的插件目录中创建新的 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');
}
您可以坚持使用翻译插件的功能,无需使用其他翻译机制。
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" 是默认语言环境中的字符串。
我使用 translate.rainlab
插件进行本地化,但不确定如何翻译 ajax 格式的即显消息。
function onMailSend() {
Mail::sendTo('name@example.com', 'contact.form', post());
Flash::success('Message has been sent');
}
translate 插件用于翻译 content 前端,但要在代码内翻译消息,最好使用 locale lang 消息。
假设这是您的站点:http://octdev.local.com/demo/ajax(默认语言设置为 en)
然后您可以创建插件并在 lang/en/lang.php
文件中定义翻译消息
en lang file will be there and default content will be look like this
// lang/en/lang.php
<?php return [
'plugin' => [
'name' => 'TestPlugin',
'description' => ''
]
];
您可以在任何地方访问此消息
\Flash::success(\Lang::get('hardiksatasiya.testplugin::lang.plugin.name'));
hardiksatasiya.testplugin =>
plugin auther name
.pluginname
lang.plugin.name => worked like array
lang
stands for file name (language) then getplugin array
then its keyname
so in our case it will out put TestPlugin
现在你可以使用新的 url : http://octdev.local.com/de/demo/ajax 它在 de
所以你可以在你的插件目录中创建新的 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');
}
您可以坚持使用翻译插件的功能,无需使用其他翻译机制。
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" 是默认语言环境中的字符串。