当前位置: 首页 > news >正文

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();
}

 

转载于:https://www.cnblogs.com/itfenqing/p/7244451.html

相关文章:

  • File:方法(具体)
  • bzoj 2510 弱题 矩阵乘
  • CentOS的进程管理二
  • 深入浅出iOS事件机制
  • phpStudy配置多站点多域名步骤,及遇到的403错误解决方式
  • 模拟ajax实现网络爬虫——HtmlUnit
  • 关于冰岛足球的段子
  • Hadoop简单介绍
  • 【菜鸟也疯狂UML系列】——概述
  • 最新发布:数据库防火墙技术市场调研报告
  • 《Android应用开发攻略》——1.4 在Eclipse中创建“Hello, World”应用程序
  • HBase最佳实践-集群规划
  • 《规范敏捷交付:企业级敏捷软件交付的方法与实践》——2.5 事实重于巧辩...
  • 技术热点:Android hook技术浅析
  • 基因测序、大数据分析——精准治癌正在成为现实
  • 【Redis学习笔记】2018-06-28 redis命令源码学习1
  • 0x05 Python数据分析,Anaconda八斩刀
  • 2017届校招提前批面试回顾
  • 78. Subsets
  • CSS进阶篇--用CSS开启硬件加速来提高网站性能
  • DOM的那些事
  • eclipse(luna)创建web工程
  • iOS仿今日头条、壁纸应用、筛选分类、三方微博、颜色填充等源码
  • ReactNative开发常用的三方模块
  • 力扣(LeetCode)357
  • 浅析微信支付:申请退款、退款回调接口、查询退款
  • 如何胜任知名企业的商业数据分析师?
  • 提醒我喝水chrome插件开发指南
  • 体验javascript之美-第五课 匿名函数自执行和闭包是一回事儿吗?
  • 小而合理的前端理论:rscss和rsjs
  • 赢得Docker挑战最佳实践
  • 《天龙八部3D》Unity技术方案揭秘
  • 格斗健身潮牌24KiCK获近千万Pre-A轮融资,用户留存高达9个月 ...
  • 湖北分布式智能数据采集方法有哪些?
  • ​LeetCode解法汇总2696. 删除子串后的字符串最小长度
  • ​总结MySQL 的一些知识点:MySQL 选择数据库​
  • (6)STL算法之转换
  • (Matlab)基于蝙蝠算法实现电力系统经济调度
  • (附源码)springboot课程在线考试系统 毕业设计 655127
  • (附源码)springboot优课在线教学系统 毕业设计 081251
  • (更新)A股上市公司华证ESG评级得分稳健性校验ESG得分年均值中位数(2009-2023年.12)
  • (理论篇)httpmoudle和httphandler一览
  • (转)Linux整合apache和tomcat构建Web服务器
  • (转)MVC3 类型“System.Web.Mvc.ModelClientValidationRule”同时存在
  • (转)真正的中国天气api接口xml,json(求加精) ...
  • ****Linux下Mysql的安装和配置
  • **python多态
  • ./mysql.server: 没有那个文件或目录_Linux下安装MySQL出现“ls: /var/lib/mysql/*.pid: 没有那个文件或目录”...
  • .chm格式文件如何阅读
  • .NET I/O 学习笔记:对文件和目录进行解压缩操作
  • .net和jar包windows服务部署
  • .net生成的类,跨工程调用显示注释
  • .net下的富文本编辑器FCKeditor的配置方法
  • .Net小白的大学四年,内含面经
  • .php结尾的域名,【php】php正则截取url中域名后的内容