laravel - 如何获取语言环境(语言)的名称,而不仅仅是语言环境字符串,而是 LARAVEL 中该语言的名称?
问题描述
如何获取语言环境(语言)的名称,而不仅仅是语言环境字符串,而是 LARAVEL 中该语言的名称?
{{ app()->getLocale() }}
解决方案
我通过使用 Laravel 本地化向翻译文件添加条目来解决这个问题。
https://laravel.com/docs/5.7/localization
在AppServiceProvider@boot
:
$language = Settings::get('language'); // Fetch saved language preference
$language = ($language === null) ? config('app.locale','ENG') : $language->value;
App::setLocale($language);
$languages = Cache::rememberForever('languages',
function () {
$walkable = File::directories(App()->basePath() . '/resources/lang');
$output = [];
array_walk($walkable,
function($value) use (&$output) {
$parts = explode('/', $value);
$key = end( $parts );
$require = $value . '/language.php';
if (file_exists($require)) {
$output[$key] = require($require);
}
}
);
return $output;
});
config(['app.languages' => $languages]);
然后我在目录中为每种语言都有一个条目resources/lang/LOCALE_ISO_3 (ENG/SPA/ITA...)/language.php
<?php // Spanish (SPA)
return [
'default' => 'Spanish',
'locale' => 'Español'
];
然后获取可用语言的列表:
dd( config('app.languages') );
结果是:
array:3 [▼
"ENG" => array:2 [▼
"default" => "English"
"locale" => "English"
]
"ITA" => array:2 [▼
"default" => "Italian"
"locale" => "Italiano"
]
"SPA" => array:2 [▼
"default" => "Spanish"
"locale" => "Español"
]
]
要获取当前的活动语言:
dd(trans('language'));
给你:
array:2 [▼
"default" => "English"
"locale" => "English"
]
推荐阅读
- php - 如何为 PHP 应用程序编写 app.yaml 文件
- reactjs - 声明第三方库的定义属性
- wordpress - 链接 2 wp_options
- sql - 如何在 SQLServer 中设计周期时间(营业时间)?
- java - 当我使用 firePropertyChange 更新我的 JList 我的 jtabbedpane 不再更新
- graphql - 我们如何为 Feathersjs + Apollo v2 使用钩子?
- sql - 特殊的 LEFT JOIN
- laravel - 关系的 Laravel 魔术方法返回错误的相关模型
- kubernetes - java.net.UnknownHostException:postgres
- matlab - Matlab 2019 中的 3 维内部收益率