描述
我有一个Laravel网站是英文的。我也想让它与荷兰语兼容。
我开始我的主页很小,它只包含3句话。
<h1 class="heading">My business WiFi</h1>
<p>Management via this page both your <a>private WiFi</a> as your <a>guest wifi</a>.</p>
<p>Or follow the use of your WiFi via our <a>statistics</a>.</p>
它将呈现这个
My business WiFi
Management via this page both your private WiFi as your guest wifi.
Or follow the use of your WiFi via our statistics.
尝试
我已经安装了这个Laravel包,并完成了该回购中的所有安装步骤。
我的路由、服务提供商、别名、中间件、resources/lang/和laravelocalization.php都已就位。
routes.php
Route::group(['prefix' => LaravelLocalization::setLocale(), 'middleware' => [ 'localeSessionRedirect', 'localizationRedirect','localize'] ], function(){
Route::get('/homepage', 'homepageController@index');
});
更新提供商阵列
Mcamara'LaravelLocalization'LaravelLocalizationServiceProvider::class
更新别名
'LaravelLocalization' => Mcamara'LaravelLocalization'Facades'LaravelLocalization::class
更新$routeMiddleware
'localize' => 'Mcamara'LaravelLocalization'Middleware'LaravelLocalizationRoutes::class,
'localizationRedirect' => 'Mcamara'LaravelLocalization'Middleware'LaravelLocalizationRedirectFilter::class,
'localeSessionRedirect' => 'Mcamara'LaravelLocalization'Middleware'LocaleSessionRedirect::class
/config/laravellocalization.php
<?php
return [
'supportedLocales' => [
'en' => ['name' => 'English','script' => 'Latn', 'native' => 'English'],
'nl' => ['name' => 'Dutch','script' => 'Latn', 'native' => 'Nederlands'],
],
'useAcceptLanguageHeader' => true,
'hideDefaultLocaleInURL' => false,
];
结果
当我访问时
http://site/nl/homepage
或
http://site/en/homepage
http://site/homepage
我看到我的网站加载应该是英文的,这很好。
当我访问其他未声明的站点时,它返回404
。
中国
Ex. http://site/zh/homepage
这很好,因为它按预期工作。
但我的主要目标是,当我登陆时,我想看到我的荷兰语网站
http://site/nl/homepage
我应该在荷兰语中看到以下3句话
My business WiFi
Management via this page both your private WiFi as your guest wifi.
Or follow the use of your WiFi via our statistics.
问题
这是我需要申报/resources/lang/nl/texts.php
的东西吗?
或者这是可以通过库/插件/框架实现的吗?
您需要创建适当的文件,并用转换后的字符串(或数组(填充它们。如果未找到任何已翻译的字符串,Laravel将回退到config('fallback_locale')
。
带
// resources/lang/nl/texts.php
<?php return [
'heading' => 'Mijn zakelijke WiFi',
'line1' => 'Beheer via deze pagina zowel uw <a>private WiFi</a> als uw <a>gast wifi</a>.',
'line2' => 'Of volg het gebruik van uw WiFi via onze <a>statistieken</a>.'
];
和
// resources/lang/en/texts.php
<?php return [
'heading' => 'My business WiFi',
'line1' => 'Management via this page both your <a>private WiFi</a> as your <a>guest wifi</a>.',
'line2' => 'Or follow the use of your WiFi via our <a>statistics</a>.'
];
您可以通过转换函数trans('texts.heading')
、trans_choice('texts.heading', $count)
或特殊的刀片指令@lang('texts.heading')
在任何地方检索这些字符串(预处理文件名(
你的观点可能是这样的:
<h1 class="heading">@lang('texts.heading')</h1>
<p>{!! trans('texts.line1') !!}</p>
<p>{!! trans('texts.line2') !!}</p>
由于翻译后的字符串中有HTML标记,因此必须使用{!! ... !!}
取消对它们的捕获。
为了缓解翻译的痛苦,有一个Laravel翻译经理,伟大的插件由Barry vd。Heuvel。您可以让用户修改这些字符串,并自动捕获未翻译的字符串。
一般来说,如果您需要高质量的翻译,我不会推荐自耦服务。若并没有,那个么就考虑一下javascript库。