云客Drupal源码分析之国际化Internationalization:核心翻译系统
各位《云客drupal源码分析》系列的读者:
本系列一直以每周一篇的速度进行博客原创更新,希望帮助大家理解drupal底层原理,并缩短学习时间,但自《插件系统(上)》主题开始博客仅发布前言和目录,这是因为云客在思考一个问题:drupal在国外如此流行但在国内却很小众,一个重要原因应该是中文资料的缺乏,我们是否能够找到一种方式来激发中文资料的出产?此时同是积极推动者的晴空提出能否用付费阅读的方式来鼓励更多作者?并建立了一个付费阅读drupal资料的网站,个人觉得也许这能激发高质量原创内容的出产,学习者支付很少费用可以节省大量学习时间是划算的,作者也能分配精力去开发高质量内容而得到报酬,drupal普及开了对大家都有益处,为了支持晴空的这个项目,云客决定将从《插件系统(上)》主题开始后续内容全部放在这个网站上收费阅读,读者只需要付很少费用即可,云客在这里承诺该系列得到的所有订阅费用全部捐献给drupal深圳社区,用以组织活动等等,发展社区需要大家贡献力量,该网站已于2017年3月29日上线,请移步:http://nowicode.com/ 阅读本篇完整版
我是云客,【云游天下,做客四方】,联系方式见主页,欢迎转载,但须注明出处
****************************************以下为前言和目录,请移步:http://nowicode.com/ 阅读本篇完整版*******************************
前言:
在开始新系统的学习前,建议先闭上眼睛想一下如果是自己来设计,会怎么实现呢,这会很有趣,而且对后面的学习大有帮助,也可避免出现填鸭式教育学习的饱腹感导致的情绪上的波动甚至厌烦,比如翻译系统我们就可以这样思考:网站中有许多文本,短的如菜单文本、长的有整篇文章、中长的有功能提示说明等,各文本属性又不同,有的属于系统界面,有的属于内容,而且来源也不同,有的是系统自带,有的是用户提交,怎么储存翻译结果呢?又怎么识别不同翻译指的是同一文本内容呢?当用户首选语言没有对应的翻译时如果能提供次选语言总比什么都不提供好,这就需要用户给出语言偏好排序的设置,有些文本是带数字的,文本本身不会变化,只是数字会变化,不可能每一个数字都去储存一次,那么数字应该作为参数传递给翻译系统,在英语中由数字原因还出现了名词的单复数形式需要进一步判断,有些内容是不需要翻译的,比如人名,如何应对?有些语言是从左到右书写阅读的,有些则相反,如果要求完美甚至还出现单位转换,比如英寸转化为米等等,我们带着这些问题来看看drupal是如何实现的。
在drupal中,通常以英语作为基础语言,这也导致通常所讲的“源字符串”是指英语,(源字符串是指t($str)函数的参数),但系统并未限制源字符串必须是英语,它可以是任意语言,但通常我们假设它是英语。翻译系统由翻译管理器掌管,它提供统一的使用接口,在内部它调用翻译器来进行翻译,可以向它注册多个不同优先级的翻译器,有许多概念如下:
语言代码:
每种语言都有唯一对应的语言代码,比如英语:en、简体中文:zh-hans、繁体中文:zh-hant,语言代码由标准化组织定义,见rfc5646文档和https://www.w
翻译上下文:
翻译的核心:翻译管理器TranslationManager:
T函数:
单复数的翻译:
翻译器Translators:
核心提供的翻译器string_translator.custom_strings:
系统主要翻译器string_translator.locale.lookup:
字符串翻译特征StringTranslationTrait:
可选翻译模块:
补充:
云客Drupal源码分析之国际化Internationalization:核心翻译系统相关推荐
- 云客Drupal源码分析之前端js中的翻译
从本主题开始<云客Drupal源码分析>系列将连续发布和前端js相关的内容,如果您对JavaScript还不熟悉或者需要来一次系统性的整理回顾,在此云客为您准备了以下资料: <PHP ...
- 云客Drupal源码分析之Session进阶
在本系列之前写过<云客Drupal源码分析之Session系统>,但那部分仅仅讲到了drupal会话的基础:Symfony的Session组件 至于drupal怎么去使用这个基础就是本主题 ...
- 云客Drupal源码分析之数据库Schema及创建数据表
本主题是<云客Drupal源码分析之数据库系统及其使用>的补充,便于查询,所以独立成一个主题 讲解数据库系统如何操作Schema(创建修改数据库.数据表.字段:判断它们的存在性等等),以及 ...
- 云客Drupal源码分析之配置系统Configuration(一)
各位<云客drupal源码分析>系列的读者: 本系列一直以每周一篇的速度进行博客原创更新,希望帮助大家理解drupal8底层原理,并缩短学习时间,但自<插件系统(上)>主题开始 ...
- 云客Drupal源码分析之节点实体访问控制处理器
以下内容仅是一个预览,完整内容请见文尾: 本篇讲解节点实体的访问控制,总结了访问检查链,对"域"."授权id"进行了清晰论述(该知识点可能是中文资料第一次提及, ...
- 云客Drupal源码分析之类型化数据Typed Data API
各位<云客drupal源码分析>系列的读者: 本系列一直以每周一篇的速度进行博客原创更新,希望帮助大家理解drupal底层原理,并缩短学习时间,但自<插件系统(上)>主题开始博 ...
- 云客Drupal源码分析之插件系统(上)
各位<云客drupal源码分析>系列的读者: 本系列一直以每周一篇的速度进行博客原创更新,希望帮助大家理解drupal底层原理,并缩短学习时间,但自<插件系统(上)>主题开始博 ...
- 云客Drupal源码分析之前言
Drupal是一个非常优秀的网站系统,可以说她是一个网站应用开发框架,也可以说是一个cms,她在世界范围内被广泛使用,最为人所知的是美国白宫.联合国等知名机构的官方网站使用了她,随着Drupal8的来 ...
- 云客Drupal源码分析之实体表单显示EntityFormDisplay
以下内容仅是一个预览,完整内容请见文尾: 实体的显示分为表单显示和视图显示,前者用于不同情况下的信息输入,后者用于不同情况下的信息展示,本篇很多内容不止用于本篇所讲的表单主题,也是学习drupal视图 ...
最新文章
- sql isnull函数的使用(转载)
- 【网摘】GTK中文显示解决方案
- 图像中添加二项式分布噪声
- 二叉树链表结构表示法
- vaniglia 源码学习 (六)
- Consider static factory methods instead of constructor
- python 课程设计 夏敏捷_Python课程设计(微课视频版21世纪高等学校通识教育规划教材)/计算机技术入门丛书...
- 51nod-1562:玻璃切割(O(n)模拟)
- imx6 android power off
- linux系统Nginx下limit_req模块burst参数超详细解析
- 安防网络摄像机推送到RTMP流媒体服务器方案
- OSChina 周三乱弹 —— 致力于做一名优秀的女程序员鼓励师
- php短信接口开发demo,php短信接口DEMO-云信互联PaaS平台
- 蓝牙文件传输之obex层之上的分析【Android源码解析】
- 外地人如何买房落户武汉 武汉户口全解读
- 关系型数据库设计原则
- 本Blog独立站点米豆网开通了
- 左(下)上三角、右上(下)三角输出、正(倒)三角,C语言
- 万年历农历法定节假日数据查询工具
- 横向TableVIew的实现