计算机语言phal语言,2.7 PhalApi 2.x 国际化
i18n国际化
一直以来,在项目开发中,都是以硬编码方式返回中文文案或者提示信息的,如:
$rs['msg'] = '用户不存在';
这种写法在根本不需要考虑国际化翻译的项目中是没问题的,但当开发的项目面向的是国际化用户人群时,使用i18n则是很有必要的。
语言设定
在初始化文件./public/init.php中,通过快速函数\PhalApi\SL($language)可以设定当前所使用的语言。例如设置语言为简体中文,可以:
// 翻译语言包设定
\PhalApi\SL('zh_cn');
设定的语言即为语言目录下对应语言的目录名称,例如可以是:de、en、zh_cn、zh_tw等。
$ tree ./language/
./Language/
├── de
├── en
...
├── zh_cn
└── zh_tw
此处,也可以通过客户端传递参数动态选择语言。简单地:
\PhalApi\SL(isset($_GET['lan'] ? $_GET['lan'] : 'zh_cn');
翻译包
翻译包的文件路径为:./language/语言/common.php,例如简体中文zh_cn对应的翻译包文件为:./Language/zh_cn/common.php。此翻译包文件返回的是一个数组,其中键为待翻译的内容,值为翻译后的内容。例如:
return array(
'Hi {name}, welcome to use PhalApi!' => '{name}您好,欢迎使用PhalApi!',
'user not exists' => '用户不存在',
);
对于需要动态替换的参数,可以使用大括号括起来,如名字参数name对应为{name}。除了这种关联数组的方式,还可以使用索引数组的方式来传递动态参数。例如:
return array(
... ...
'I love {0} because {1}' => '我爱{0},因为{1}',
);
通用的翻译写法
当需要进行翻译时,可以使用快速函数\PhalApi\T($msg, $params = array()),第一个参数为待翻译的内容,第二个参数为可选的动态参数。例如前面的文案调整成:
$rs['msg'] = \PhalApi\T('user not exists');
最后显示的内容将是对应翻译包里的翻译内容,如这里对应的是:
// 文件 ./language/zh_cn/common.php
return array(
... ...
'user not exists' => '用户不存在',
);
当翻译中存在动态参数时,根据待翻译中参数的传递方式,可以相应提供对应的动态参数。例如对于关联数组方式,可以:
// 输出:dogstar您好,欢迎使用PhalApi!
echo \PhalApi\T('Hi {name}, welcome to use PhalApi!', array('name' => 'dogstar'));
关联数组方式中参数的对应关系由键名对应,而索引数组方式则要严格按参数出现的顺序对应传值,例如:
// 输出:我爱PhalApi,因为它专注于接口开发
echo \PhalApi\T('I love {0} because {1}', array('PhalApi', '它专注于接口开发'));
若是翻译不存在时怎么办?翻译不存在,有两种情况:一种是指定的语言包不存在;另一种是语言包存在但翻译不存在。无论何种情况,当找不到翻译时,都会返回待翻译时的内容。
扩展:添加翻译包
默认的翻译包存放在项目根目录的language目录下。当需要添加其他路径的翻译包时,例如在进行扩展类库开发时。
对于也拥有翻译包的扩展类库,其翻译包文件可以放在扩展类库本身目录的language子目录中,其结构一样。但由于不在项目根目录下,这时需要手动引入翻译包目录,以便框架可以加载识别。当需要加载其他路径的翻译包时,可以使用PhalApi/Translator::addMessage($path)进行添加,后面添加的翻译包会覆盖前面的翻译包。例如User扩展类库中的:
PhalApi\Translator::addMessage('/path/to/user/language');
这样,就可以添加/path/to/user/language目录下的翻译包了。
计算机语言phal语言,2.7 PhalApi 2.x 国际化相关推荐
- 计算机语言phal语言,[6.1]-基于接口查询语言的SDK包
## 6.1.1 用一句话来描述接口请求 为了给客户端统一接口请求调用的规范性.流畅性和简单易懂,我们特别为此使用了内部领域特定语言: **接口查询语言** (Api Structured Query ...
- 数学模型转化为计算机语言,程序设计语言类课程教学选题方法探讨
<程序设计语言类课程教学选题方法探讨>由会员分享,可在线阅读,更多相关<程序设计语言类课程教学选题方法探讨(6页珍藏版)>请在人人文库网上搜索. 1.程序设计语言类课程教学选题 ...
- vfp语言第 代计算机语言,VFP语言属于第()代计算机语言。A、一B、二C、三D、四...
语言属于第语言[多选题]722 型可见分光光度计与 754 型紫外分光光度计技术参数相同的有( ). 参考答案如下 代计[填空题]已知数列 是首项为3,公比为 的等比数列,记 的前n项和为 ,求[单选 ...
- 过程式计算机语言,Go 语言程序设计——过程式编程(1)
Go 语言可以用于写纯过程式程序,用于写面向对象程序,也可以用于写过程式和面向对象相结合的程序 语句基础 Go 语言需要使用分号 ; 来作为上下文语句的分隔结束符,然而实际的程序中,很少使用分号,那是 ...
- 计算机语言python-Python语言介绍
Python语言介绍 一.计算机的语言介绍 如果我们想操作计算机,要让计算机能听懂我们说的话,但是因为计算机的组成原因,计算机只能理解二进制,所以,如果我们想要操纵计算机完成我们下达的任务,就必须用计 ...
- vhdl计算机语言,vhdl语言编程实例.doc
vhdl语言编程实例 实现各种逻辑功能: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENT ...
- vr计算机语言,虚拟现实语言
虚拟现实语言简称VRML,是新近产生的一种WEB语言,它是一种模拟语言,用来描述一个对象是如何呈现在WEB上的,和HTML一样,VRML也是可以由游览器解释的描述语言,只不过VRML不是描述成一个Pa ...
- spla计算机语言,r语言教程笔记.docx
R编程笔记2 简介 突出特点: [多领域的统计资源]目前在R网站上约有2400个程序包,涵盖了基础统计学.社会学.经济学.生态学.空 间分析.系统发冇分析.生物信息学等诸多方而. [免费] 缺点: [ ...
- 如何在表格中使用计算机语言,易语言表格使用教程.doc
易语言表格使用教程 易语言表格使用教程 篇一:易语言文字教程 大家好,我是你们的新朋友,也是你们学习易语言的好伙伴. 那什么是易语言呢? 易语言是由飞扬工作室出品的 Windows 环境下的全中文实用 ...
最新文章
- Deep learning的一些教程 (转载)
- (20/24) webpack实战技巧:watch实现热打包和添加代码备注
- 字符串加括号问题(矩阵乘法组合问题)C++
- 全球及中国太阳能光热发电市场重点项目规划及发展格局展望报告2021-2027年
- 中国.NET域名注册量近55万个 稳居全球第三位
- Linux下的crontab定时执行任务命令详解
- opencv4 python 版本_Opencv4 with Python3.6
- oc引导windows蓝屏_人人都会遇到系统蓝屏问题,教大家自已排除蓝屏,学会一辈子受用...
- vim grep配置及使用
- PHP 登录DEMO
- 执行带返回参数的存储过程
- java两个return_关于java:调用另一个方法时return语句不起作用
- 【leetcode】714. Best Time to Buy and Sell Stock with Transaction Fee
- 【数学】几何在线画图
- 在硅谷,中国工程师为什么干不过印度人?
- 基于宝塔面板把网站和数据库文件备份到又拍云存储空间图文教程
- python解析HL7协议多方式对比
- 华为手机手机与计算机传输,华为手机怎么和电脑进行互联传输文件
- Android开发酒店预定预约管理系统
- Using the URLconf defined in djangolx.urls, Django tried these URL patterns, in this order: 报错
热门文章
- echarts折线图设置横向基准线/水平线,超过基准线时折线会变色
- CrystalDiskInfo硬盘检测工具 标准版及萌妹版
- 金融数据治理者视角:小微信用体系建设的进化路径
- 【学习笔记】消息队列之MQ的基本概念
- 2021-03-27 : Task05_DIN模型
- KDJ指标底背离分析(图)
- Ubuntu20.04 系统安装USB无线网卡 TL-WDN5200免驱版 安转失败不显示WiFi的一种解决方案
- Axure教程(中级):网易云音乐听歌识曲效果模仿
- 关于Excel中的自定义格式
- 机器人被挠脚心_《fm及机器人系列(tk)》专题