一.简介

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

Laravel的本地化的更多相关文章

  1. Laravel 本地化定义

    1.配置本地化语言Laravel 的本地化语言配置项位于config/app.php: [php] view plain copy 'locale' => 'zh',//当前语言 'fallba ...

  2. Laravel 5.4的本地化

    简介 Laravel 的本地化功能提供方便的方法来获取多语言的字符串,让你的网站可以简单的支持多语言. 语言包存放在 resources/lang 目录下的文件里.在此目录中应该有应用对应支持的语言并 ...

  3. laravel5.2总结--本地化以及常量的使用

    1.本地化 Laravel 的本地化功能提供方便的方法来获取多语言的字符串,让你的网站可以简单的支持多语言. 语言包存放在 resources/lang 文件夹的文件里.每一个子目录应该对应一种语言 ...

  4. PHP Laravel 本地化语言支持

        That`s it. 我发如今网上Laravel的学习资料实在是太少了.好多东西须要自己去弄.去理解. 我的方法另一个,就是去github上面下载老外写的Laravel站点,然后拿下来自己执行 ...

  5. Laravel Vuejs 实战:开发知乎 (3)本地化和自定义消息

    1.本地化 由于所有blade默认采用的是 _('')方式输出标签文本,所以可以安装一个语言包,直接指定本地语言为zh_CN即可: 安装 https://github.com/caouecs/Lara ...

  6. Laravel 验证中文本地化

    1.使用bootsrap好看的提示样式 但是会提示英文 2.将提示中文本地化 2.1.在/resouce/lang下创建文件夹:zh 2.2.已经有小伙伴做好了翻译 https://gist.gith ...

  7. Laravel Model Factory(模型工厂)的用法以及数据本地化

    Model Factory的位置 生成数据方法:make是生成数据,create是生成数据并保存到数据库 本地化方法 这样便生成了中文数据 整理自www.laravist.com视频教程

  8. laravel表单中文错误提示本地化

    <?php return [ /* |-------------------------------------------------------------------------- | V ...

  9. laravel 登录+中间件拦截+红柚小说网小说采集+图片本地化

    .......................登录界面 <!doctype html> <html lang="en"> <head> < ...

随机推荐

  1. HDU1556---树状数组 | 线段树 |*

    输入n,紧接n行,每行a,b n个气球,a,b表示从第a到第b个气球涂一次色,输出每个球最终的涂几次色 暴力超时,优化数据结构 1.树状数组 #include<iostream> #inc ...

  2. 使用 Python 开始你的机器学习之旅【转】

    转自:https://linux.cn/article-8582-1.html 编译自:https://opensource.com/article/17/5/python-machine-learn ...

  3. 有个人想上一个n级的台阶,每次只能迈1级或者迈2级台阶,问:这个人有多少种方法可以把台阶走完?

    有个人想上一个n级的台阶,每次只能迈1级或者迈2级台阶,问:这个人有多少种方法可以把台阶走完? 相关问题: (1)有个人想上一个n级的台阶,每次只能迈1级或者迈2级台阶,问:这个人有多少种方法可以把台 ...

  4. Scala学习随笔——深入类和对象

    函数化对象(又称方程化对象)指的是所定义的类或对象不包含任何可以修改的状态. 本篇随笔就是着重记录函数化对象.定义了一个有理数类定义的几个不同版本,以介绍 Scala 类定义的几个特性:类参数和构造函 ...

  5. 使用windos电脑模拟搭建集群(四)web环境 linux+nginx+jdk+tomcat

    1.使用ansible的playbook自动安装两台web主机的nginx 1.配置模块 主机清单 2.创建 playbook目录并编写安装nginx的playbook mkdir -p playbo ...

  6. inotify+rsync实现实时同步并邮件通知

    服务器之间文件实时同步,监控文件的变化,发送邮件通知,并实时同步文件. 由于人工同步多台服务器的文件比较吃力,可以借助这样一套软件,自动化的实现这样的工作. 并且可以事实监控变化发送邮件给系统管理人员 ...

  7. JDK7集合框架源码阅读(七) ArrayDeque

    基于版本jdk1.7.0_80 java.util.ArrayDeque 代码如下 /* * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to li ...

  8. (3)C#基本语法

    1.C#标识符 标识符是用来识别类.变量.函数或任何其它用户定义的项目. 在 C# 中,类的命名必须遵循如下基本规则: 标识符必须以字母开头,后面可以跟一系列的字母.数字.下划线.标识符中的第一个字符 ...

  9. Python的Web编程[0] -> Web客户端[1] -> Web 页面解析

     Web页面解析 / Web page parsing 1 HTMLParser解析 下面介绍一种基本的Web页面HTML解析的方式,主要是利用Python自带的html.parser模块进行解析.其 ...

  10. 小谈android/Linux rootkit(基于LKM)

    最近又学习了一下,感觉还有好多东西不知道,以后积累多一点再从新写一个. 在android上捣鼓了一下linux的内核rootkit,虽然中途遇到了无数坑,至今也没有完全写完,打算先好好啃一段时间lin ...