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 国际化相关推荐

  1. 计算机语言phal语言,[6.1]-基于接口查询语言的SDK包

    ## 6.1.1 用一句话来描述接口请求 为了给客户端统一接口请求调用的规范性.流畅性和简单易懂,我们特别为此使用了内部领域特定语言: **接口查询语言** (Api Structured Query ...

  2. 数学模型转化为计算机语言,程序设计语言类课程教学选题方法探讨

    <程序设计语言类课程教学选题方法探讨>由会员分享,可在线阅读,更多相关<程序设计语言类课程教学选题方法探讨(6页珍藏版)>请在人人文库网上搜索. 1.程序设计语言类课程教学选题 ...

  3. vfp语言第 代计算机语言,VFP语言属于第()代计算机语言。A、一B、二C、三D、四...

    语言属于第语言[多选题]722 型可见分光光度计与 754 型紫外分光光度计技术参数相同的有( ). 参考答案如下 代计[填空题]已知数列 是首项为3,公比为 的等比数列,记 的前n项和为 ,求[单选 ...

  4. 过程式计算机语言,Go 语言程序设计——过程式编程(1)

    Go 语言可以用于写纯过程式程序,用于写面向对象程序,也可以用于写过程式和面向对象相结合的程序 语句基础 Go 语言需要使用分号 ; 来作为上下文语句的分隔结束符,然而实际的程序中,很少使用分号,那是 ...

  5. 计算机语言python-Python语言介绍

    Python语言介绍 一.计算机的语言介绍 如果我们想操作计算机,要让计算机能听懂我们说的话,但是因为计算机的组成原因,计算机只能理解二进制,所以,如果我们想要操纵计算机完成我们下达的任务,就必须用计 ...

  6. vhdl计算机语言,vhdl语言编程实例.doc

    vhdl语言编程实例 实现各种逻辑功能: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENT ...

  7. vr计算机语言,虚拟现实语言

    虚拟现实语言简称VRML,是新近产生的一种WEB语言,它是一种模拟语言,用来描述一个对象是如何呈现在WEB上的,和HTML一样,VRML也是可以由游览器解释的描述语言,只不过VRML不是描述成一个Pa ...

  8. spla计算机语言,r语言教程笔记.docx

    R编程笔记2 简介 突出特点: [多领域的统计资源]目前在R网站上约有2400个程序包,涵盖了基础统计学.社会学.经济学.生态学.空 间分析.系统发冇分析.生物信息学等诸多方而. [免费] 缺点: [ ...

  9. 如何在表格中使用计算机语言,易语言表格使用教程.doc

    易语言表格使用教程 易语言表格使用教程 篇一:易语言文字教程 大家好,我是你们的新朋友,也是你们学习易语言的好伙伴. 那什么是易语言呢? 易语言是由飞扬工作室出品的 Windows 环境下的全中文实用 ...

最新文章

  1. Deep learning的一些教程 (转载)
  2. (20/24) webpack实战技巧:watch实现热打包和添加代码备注
  3. 字符串加括号问题(矩阵乘法组合问题)C++
  4. 全球及中国太阳能光热发电市场重点项目规划及发展格局展望报告2021-2027年
  5. 中国.NET域名注册量近55万个 稳居全球第三位
  6. Linux下的crontab定时执行任务命令详解
  7. opencv4 python 版本_Opencv4 with Python3.6
  8. oc引导windows蓝屏_人人都会遇到系统蓝屏问题,教大家自已排除蓝屏,学会一辈子受用...
  9. vim grep配置及使用
  10. PHP 登录DEMO
  11. 执行带返回参数的存储过程
  12. java两个return_关于java:调用另一个方法时return语句不起作用
  13. 【leetcode】714. Best Time to Buy and Sell Stock with Transaction Fee
  14. 【数学】几何在线画图
  15. 在硅谷,中国工程师为什么干不过印度人?
  16. 基于宝塔面板把网站和数据库文件备份到又拍云存储空间图文教程
  17. python解析HL7协议多方式对比
  18. 华为手机手机与计算机传输,华为手机怎么和电脑进行互联传输文件
  19. Android开发酒店预定预约管理系统
  20. Using the URLconf defined in djangolx.urls, Django tried these URL patterns, in this order: 报错

热门文章

  1. echarts折线图设置横向基准线/水平线,超过基准线时折线会变色
  2. CrystalDiskInfo硬盘检测工具 标准版及萌妹版
  3. 金融数据治理者视角:小微信用体系建设的进化路径
  4. 【学习笔记】消息队列之MQ的基本概念
  5. 2021-03-27 : Task05_DIN模型
  6. KDJ指标底背离分析(图)
  7. Ubuntu20.04 系统安装USB无线网卡 TL-WDN5200免驱版 安转失败不显示WiFi的一种解决方案
  8. Axure教程(中级):网易云音乐听歌识曲效果模仿
  9. 关于Excel中的自定义格式
  10. 机器人被挠脚心_《fm及机器人系列(tk)》专题