如何在laravel中翻译用户输入

0pizxfdo  于 2022-11-18  发布在  其他
关注(0)|答案(1)|浏览(131)

我有一个网站,是与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>

然而,当用户使用网站表单将数据插入数据库时,网站会准确地显示用户插入的内容,网站是否有办法翻译用户输入的内容?

3yhwsihp

3yhwsihp1#

经过太多的研究,我得到了一个免费的解决方案,翻译来自数据库的数据,我会分享它,以防有人来这里以后。
首先,使用谷歌工具进行翻译。

<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>

但是,这将翻译整个页面,而您并不希望这样,您希望它只翻译来自数据库的数据。
你可以使用两个类translate和notranslate。2其中类为“translate”的元素将被翻译,类为“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
我把整个主体都做成了notranslate类,并且我把translate类添加到包含来自数据库的数据的元素中。
为了在应用语言改变时改变文本语言,我这样做了

<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本地化,这里是详细信息https://laravel.com/docs/8.x/localization
希望这能对外面的人有所帮助。

相关问题