Laravel的本地化
一.简介
Laravel 的本地化功能提供方便的方法来获取多语言的字符串.语言包存放在 resources/lang 文件夹的文件里。在此文件夹内应该有网站对应支持的语言并将其对应到每一个子目录:
/resources
/lang
/en
messages.php
/es
messages.php
语言包简单地返回键值和字符串数组,例如:
return [ 'failed' => 'These credentials do not match our records.',
'throttle' => 'Too many login attempts. Please try again in :seconds seconds.', ];
二.切换语言
1.网站的默认语言保存在 config/app.php 配置文件;
'locale' => 'zh_CN', #指定了了系统使用哪种语言,这将对应resources/lang下的文件夹zh_CN
'fallback_locale' => 'en', #备用语言
2.获得当前使用的语言
return App::getLocale();
三.基本用法
1.获取对应的语言文字
你可以使用 trans 辅助函数来获取语言字符串,trans 函数的第一个参数接受文件名和键值名称,例如,从 resources/lang/messages.php 语言包获取名称为 welcome 的句子:
echo trans('messages.welcome');
当然,若你使用了 Blade 模版引擎, 则可以使用 {{ }} 来输出句子:
{{ trans('messages.welcome') }} @lang('messages.welcome')
如果句子不存在, trans 方法将会返回键值的名称,如上例子会返回 messages.welcome 。
2.变量替换
如果需要,你也可以在语言包中定义占位符,占位符使用 : 开头,例如,你可以自定义一则欢迎消息的占位符:
'welcome' => 'Welcome, :name',
接着,传入替代用的第二个参数给 trans 方法:
echo trans('messages.welcome', ['name' => 'Dayle']);
如果你的占位符使用的是大写,翻译过来的内容也会相应的转换为大写:
'welcome' => 'Welcome, :NAME', // Welcome, DAYLE
'goodbye' => 'Goodbye, :Name', // Goodbye, Dayle
四.重写扩展包的语言
部分扩展包带有自己的语言包,你可以通过在 resources/lang/vendor/{package}/{locale} 放置文件来重写它们,而不是直接修改扩展包的核心文件。
例如,你需要重写 skyrim/hearthfire 扩展包的英文语言包 messages.php,则需要把文件放置在 resources/lang/vendor/hearthfire/en/messages.php。所有没有重写的语句仍将会从扩展包的语言包中被加载。
五.表单验证中文化
1.默认情形下表单验证没有中文语言包,所以为了更好的显示给中文用户提示,代码大致如下
$rule = ['content' => 'required|between:5,1000', 'img' => 'mimes:jpeg,bmp,png,gif|image|max:2048'];
$message = ['content.required' => '内容必须', 'content.between' => '内容在:min - :max个字符之间','img.image' => '图片类型不符', 'img.mimes' => '图片只允许jpg,bmp,png,gif格式', 'img.max' => '上传图片不能大于2M',]; $validator = Validator::make(Input::all(), $rule, $message); if ($validator->fails()) {
return back()->with('error', $validator->messages()->first())->withInput();
}
如果字段一多,将变得冗长繁琐
2.现在我们配置中文语言,减少代码
a.修改config/config.php中的locale为"zh_CN"
b.在resources/lang/下建立文件夹zh_CN
c.复制resources/lang/en下的文件到zh_CN
d.修改zh_CN文件夹下的validation.php下的,改成对应的中文提示;attributes数组则主要是字段提示,如email => '邮箱'
e.这样子代码就可以写成如下所示
$rule = ['content' => 'required|between:5,1000', 'img' => 'mimes:jpeg,bmp,png,gif|image|max:2048'];
$validator = Validator::make(Input::all(), $rule, $message); if ($validator->fails()) {
return back()->with('error', $validator->messages()->first())->withInput();
}
最新文章
- Spring MVC学习笔记——登录和异常处理
- 【leetcode】Search in Rotated Sorted Array (hard)
- PLSQL转义字符
- 【转】Windows Phone 8 开发环境的搭建
- c实现的iOS http下载类。支持自己设定http 头(比如cookie等)
- Android应用程序窗口(Activity)的运行上下文环境(Context)的创建过程分析
- hdu1079 Calendar Game
- [UWP]了解模板化控件(6):使用附加属性
- VS调试快捷键配置更改
- 安卓虚拟机与Hyper-V冲突
- Java连接MySQL数据库三种方法
- STRING DELIMITED BY SIZE
- 开源API测试工具 Hitchhiker v0.10 - 中文版
- ETCD&;Flannel安装
- C调用lua的table里面的函数
- Wordpress安装Redis为网站加速
- JS字典 Dictionary类
- bootstrap学习参考网站
- JSP学习笔记(7)-JSP的文件操作
- Spring RedisTemplate操作-HyperLogLog操作(7)
热门文章
- 51Nod 1048 整数分解为2的幂 V2
- Spring数据访问之JdbcTemplate
- 过河(DP)
- 灰姑娘的水晶鞋(NOIP模拟赛Round 7)
- QT5.3 杂记(转)
- MFC 将 '当前工作路径' 改为 'exe所在路径'(转)
- error C2440: 'static_cast' : cannot convert from 'UINT (__thiscall CStaticLink::* )(CPoint)' to 'LRESULT (__thiscall CWnd::* )(CPoint) (转)
- BS4爬取豆瓣电影
- css之其它技巧和经验列表
- python获取小程序手机号并绑定