如何翻译 laravel 中的用户输入
How to translate user inputs in laravel
我有一个使用 Laravel 开发的网站,它支持使用本地化的多语言。
首先:我创建了语言文件夹及其文件
/resources/lang/en/message.php
<?php
return [
'page_title' => 'Welcome Page',
'welcome_message' => 'Hi, Welcome to this page',
'author_information' => 'My name is Sanjay. This blog is mine and we created this post for you to learn.',
];
/resources/lang/fr/messages.php
<?php
return [
'page_title' => 'Pagina de bienvenida',
'welcome_message' => 'Hola bienvenido a esta pagina',
'author_information' => 'Mi nombre es Sanjay. Este blog es mío y creamos esta publicación para que aprendas.',
];
其次:我在 web.php 文件
中创建了应用程序路由
Route::get('/', [LocalizationController::class, "index"]);
Route::get('change/lang', [LocalizationController::class, "lang_change"])->name('LangChange');
第三:我创建了 LocalizationController 来管理语言更改
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\App;
class LocalizationController extends Controller
{
public function index()
{
return view('language');
}
public function lang_change(Request $request)
{
App::setLocale($request->lang);
session()->put('locale', $request->lang);
return view('language');
}
}
最后:可以使用由 LocalizationController 管理的下拉列表更改语言
<body>
<div class="container">
<div class="row" style="text-align: center;margin-top: 40px;">
<h2>How to Create Multi Language Website in Laravel - Online Web Tutor Blog</h2><br>
<div class="col-md-2 col-md-offset-3 text-right">
<strong>Select Language: </strong>
</div>
<div class="col-md-4">
<select class="form-control Langchange">
<option value="en" {{ session()->get('locale') == 'en' ? 'selected' : '' }}>English</option>
<option value="es" {{ session()->get('locale') == 'es' ? 'selected' : '' }}>Spanish</option>
</select>
</div>
<h1 style="margin-top: 80px;">{{ __('message.page_title') }}</h1>
<h2 style="margin-top: 80px;">{{ __('message.welcome_message') }}</h2>
<h3 style="margin-top: 80px;">{{ __('message.author_information') }}</h3>
</div>
</div>
</body>
<script type="text/javascript">
var url = "{{ route('LangChange') }}";
$(".Langchange").change(function(){
window.location.href = url + "?lang="+ $(this).val();
});
</script>
但是,当用户使用网站表单向数据库中插入数据时,网站会准确显示用户插入的内容,网站有没有办法翻译用户输入?
经过大量研究,我得到了一个免费的解决方案,用于翻译来自数据库的数据,我会分享它以防有人以后来这里。
首先,使用google工具进行翻译。
<div id="google_translate_element"></div>
<script type="text/javascript">
function googleTranslateElementInit() {
new google.translate.TranslateElement({pageLanguage:"en"}, 'google_translate_element');
}
</script>
<script type="text/javascript" src="//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit"></script>
但是,这将翻译整个页面,而您不希望这样,您希望它只翻译来自数据库的数据。
您可以使用两个 classes translate 和 notranslate。其中带有 class“translate”的元素将被翻译,而带有 class“notranslate”的元素将被忽略。
<p class="notranslate"> This Paragraph will remain same because it is using notranslate class.</p>
<p class="translate"> This Paragraph will change because it is using translate class. </p>
此处有更多详细信息https://www.coderepublics.com/howto/how-to-google-translate.php
我把整个body做成了notranslateclass,并且我在包含数据来自数据库的元素中添加了translateclass。
为了在应用语言改变时改变文本语言,我是这样做的
<div id="google_translate_element" style="display:none;"></div>
<script type="text/javascript">
var currentLang = "";
var targetLang = "";
if (document.documentElement.lang === "en") {
currentLang = "ar";
targetLang = "en";
}else{
currentLang = "en";
targetLang = "ar";
}
//In case we write ar, the tenslation that will apply is english, otherwise if it is en
//the translation that will be apllied is arabic
function googleTranslateElementInit() {
setCookie('googtrans', '/'+currentLang +'/'+targetLang,1);
new google.translate.TranslateElement({pageLanguage: currentLang,includedLanguages: 'en,ar',);
}
</script>
<script type="text/javascript" src="//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit"></script>
当然对于其他不是数据来自数据库的部分,我只是简单地使用了laravel Localization
这是详细信息 https://laravel.com/docs/8.x/localization
希望能对外面的人有所帮助。
我有一个使用 Laravel 开发的网站,它支持使用本地化的多语言。
首先:我创建了语言文件夹及其文件 /resources/lang/en/message.php
<?php
return [
'page_title' => 'Welcome Page',
'welcome_message' => 'Hi, Welcome to this page',
'author_information' => 'My name is Sanjay. This blog is mine and we created this post for you to learn.',
];
/resources/lang/fr/messages.php
<?php
return [
'page_title' => 'Pagina de bienvenida',
'welcome_message' => 'Hola bienvenido a esta pagina',
'author_information' => 'Mi nombre es Sanjay. Este blog es mío y creamos esta publicación para que aprendas.',
];
其次:我在 web.php 文件
中创建了应用程序路由Route::get('/', [LocalizationController::class, "index"]);
Route::get('change/lang', [LocalizationController::class, "lang_change"])->name('LangChange');
第三:我创建了 LocalizationController 来管理语言更改
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\App;
class LocalizationController extends Controller
{
public function index()
{
return view('language');
}
public function lang_change(Request $request)
{
App::setLocale($request->lang);
session()->put('locale', $request->lang);
return view('language');
}
}
最后:可以使用由 LocalizationController 管理的下拉列表更改语言
<body>
<div class="container">
<div class="row" style="text-align: center;margin-top: 40px;">
<h2>How to Create Multi Language Website in Laravel - Online Web Tutor Blog</h2><br>
<div class="col-md-2 col-md-offset-3 text-right">
<strong>Select Language: </strong>
</div>
<div class="col-md-4">
<select class="form-control Langchange">
<option value="en" {{ session()->get('locale') == 'en' ? 'selected' : '' }}>English</option>
<option value="es" {{ session()->get('locale') == 'es' ? 'selected' : '' }}>Spanish</option>
</select>
</div>
<h1 style="margin-top: 80px;">{{ __('message.page_title') }}</h1>
<h2 style="margin-top: 80px;">{{ __('message.welcome_message') }}</h2>
<h3 style="margin-top: 80px;">{{ __('message.author_information') }}</h3>
</div>
</div>
</body>
<script type="text/javascript">
var url = "{{ route('LangChange') }}";
$(".Langchange").change(function(){
window.location.href = url + "?lang="+ $(this).val();
});
</script>
但是,当用户使用网站表单向数据库中插入数据时,网站会准确显示用户插入的内容,网站有没有办法翻译用户输入?
经过大量研究,我得到了一个免费的解决方案,用于翻译来自数据库的数据,我会分享它以防有人以后来这里。
首先,使用google工具进行翻译。
<div id="google_translate_element"></div>
<script type="text/javascript">
function googleTranslateElementInit() {
new google.translate.TranslateElement({pageLanguage:"en"}, 'google_translate_element');
}
</script>
<script type="text/javascript" src="//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit"></script>
但是,这将翻译整个页面,而您不希望这样,您希望它只翻译来自数据库的数据。
您可以使用两个 classes translate 和 notranslate。其中带有 class“translate”的元素将被翻译,而带有 class“notranslate”的元素将被忽略。
<p class="notranslate"> This Paragraph will remain same because it is using notranslate class.</p>
<p class="translate"> This Paragraph will change because it is using translate class. </p>
此处有更多详细信息https://www.coderepublics.com/howto/how-to-google-translate.php
我把整个body做成了notranslateclass,并且我在包含数据来自数据库的元素中添加了translateclass。
为了在应用语言改变时改变文本语言,我是这样做的
<div id="google_translate_element" style="display:none;"></div>
<script type="text/javascript">
var currentLang = "";
var targetLang = "";
if (document.documentElement.lang === "en") {
currentLang = "ar";
targetLang = "en";
}else{
currentLang = "en";
targetLang = "ar";
}
//In case we write ar, the tenslation that will apply is english, otherwise if it is en
//the translation that will be apllied is arabic
function googleTranslateElementInit() {
setCookie('googtrans', '/'+currentLang +'/'+targetLang,1);
new google.translate.TranslateElement({pageLanguage: currentLang,includedLanguages: 'en,ar',);
}
</script>
<script type="text/javascript" src="//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit"></script>
当然对于其他不是数据来自数据库的部分,我只是简单地使用了laravel Localization 这是详细信息 https://laravel.com/docs/8.x/localization
希望能对外面的人有所帮助。