laravel 安装语言包
安装 laravel 语言包( https://laravel-lang.com )composer require laravel-lang/lang
安装完成后,会在项目根目录或者 resources 目录下生成 lang 语言包
添加语言包php artisan lang:add zh_CN
php artisan lang:add en
更新已添加的语言包php artisan lang:update
修改配置文件 config/app.php
'locale' => 'zh_CN',  // 默认语言'fallback_locale' => 'en', //备用语言
相关方法App::setLocale('en');App::currentLocale();App::isLocale('en')
使用短键
lang/en/messages.php
<?php
return [
    'welcome' => 'Welcome to our application!', //一般用法     echo __('messages.welcome');
    'welcome.name' => 'Welcome, :name',         //传参数       echo __('messages.welcome.name', ['name' => 'tom']);
    'welcome.ucfirst' => 'Welcome, :Name',      //首字母大写   echo __('messages.welcome.ucfirst', ['name' => 'tom']);
    'welcome.upper' => 'Welcome, :NAME',        //转大写      echo __('messages.welcome.upper', ['name' => 'tom']);
    // 复数 trans_choice('messages.apples', $count); 原理是根据 | 分割成数组,传入数量,判断符合哪个条件区间,就返回哪句翻译
    'apples' => 'There is one apple|There are many apples',  //单复数,数量大于1为复数, 要切换到支持复数的语言,参考 Illuminate\Translation\MessageSelector::getPluralIndex()
    'apples.count' => '{0} There are none|[1,19] There are some|[20,*] There are many', // trans_choice('messages.apples.count', 10)
    'minutes_ago' => '{1} :value minute ago|[2,*] :value minutes ago', //传入参数 echo trans_choice('messages.minutes_ago', 5, ['value' => 5]);
];
使用翻译字符串作为键
lang/en.json{    "我爱编程": "I love programming."}//使用方式echo __('我爱编程');
注册在 AppServiceProvider::boot() 中
public function boot(): void
{
    // 设置其他复数语言
    Illuminate\Support\Pluralizer::useLanguage('spanish');
    // 将对象作为参数传时,如 trans('messages.price', ['money' => (new Money)]),会调用 Money 对象的 __toString(),你也可以调用 Lang::stringable() 注册自定义格式处理程序
    Illuminate\Support\Facades\Lang::stringable(function (Money $money) {
        return $money->formatTo('en_GB');
    });
}
测试代码
Route::any('/test', function (){
    App::setLocale('en');
    echo __('messages.welcome');
    echo __('messages.welcome.name', ['name' => 'tom']);
    echo __('messages.welcome.ucfirst', ['name' => 'tom']);
    echo __('messages.welcome.upper', ['name' => 'tom']);
    echo trans_choice('messages.apples.count', 10);
    echo trans_choice('messages.minutes_ago', 5, ['value' => 5]);
});
 
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号