Laravel:ServiceProvider 中的 mcamara/laravel 本地化

问题描述 投票:0回答:1

以下有不同的结果

echo '<pre>'.print_r(app()->getLocale(), true).'</pre>';
echo '<pre>'.print_r(app()->currentLocale(), true).'</pre>';
echo '<pre>'.print_r(LaravelLocalization::getCurrentLocaleRegional(), true).'</pre>';
echo '<pre>'.print_r(LaravelLocalization::getCurrentLocale(), true).'</pre>';
echo '<pre>'.print_r(LaravelLocalization::getCurrentLocaleName(), true).'</pre>';
echo '<pre>'.print_r(LaravelLocalization::getCurrentLocaleNative(), true).'</pre>';

访问我的http://example.test/en/admin/dashboard

在应用程序\Providers\AppServiceProvider.php中

public function boot(): void
{
    $languages = (new \App\Repositories\LanguageRepository)->newModel()->active()->get();
    view()->share('languages', $languages);

    //put those lines here
    echo ... 

结果是
zh
zh
zh_TW
zh_汉特
中文(繁体)
繁体中文

在仪表板.blade.php中

{{ app()->getLocale() }}<BR>
{{ LaravelLocalization::getCurrentLocale() }}<BR>
{{ LaravelLocalization::getCurrentLocaleName() }}<BR>
{{ LaravelLocalization::getCurrentLocaleNative() }}<BR>
{{ LaravelLocalization::getCurrentLocaleRegional() }}<BR>

结果是
zh
zh_CN
英语
英语
zh_CN

这是同一页面。我找不到哪里出了问题。

laravellocalization.php

<?php

return [
    'supportedLocales' => [
        'en'          => ['name' => 'English',                'script' => 'Latn', 'native' => 'English', 'regional' => 'en_GB'],
        'zh_Hant'     => ['name' => 'Chinese (Traditional)',  'script' => 'Hant', 'native' => '繁體中文', 'regional' => 'zh_TW'],
        'zh_Hans'     => ['name' => 'Chinese (Simplified)',   'script' => 'Hans', 'native' => '简体中文', 'regional' => 'zh_CN'],

    ],

    'localesMapping' => [
        'en' => 'en',
        'zh_Hant' => 'zh-Hant',
        'zh_Hans' => 'zh-Hans'
    ],

web.php

Route::group(  
    [  
    'prefix' => LaravelLocalization::setLocale(),  
    'middleware' => [ 'localeSessionRedirect', 'localizationRedirect', 'localeViewPath' ],
    'as' => 'lang.'
    ], function()  
{
    Route::group([
        'middleware' => ['auth:admin'],
    ], function ()
    {
        Route::get('', 'DashboardController@index')->name('dashboard');

为什么是 en,但是 zh_Hant ?

php laravel
1个回答
0
投票

因为你太菜鸟了 不更新技术的原始人不应该伤害编程圈的人。

© www.soinside.com 2019 - 2024. All rights reserved.