Drupal专业开发指南 第18章 Drupal的本地化及中文化(1)

译者:葛红儒          Eskalate科技公司

Drupal的开发和使用,都是通过一个国际化的社区完成的。因此,Drupal默认支持本地化。本地化是将用户接口的文本替换为用户本地的翻译过的文本。在本章,我们将看一下如何启用本地化,以及如何有选择的将Drupal的内置的字符串替换为我们自己的。然后,我们看一个完全的翻译,并学习如何创建,导入,和导出它们。

 

启用本地模块(Locale Module

 

当你初次安装Drupal时,大多数模块(甚至包括核心模块比如说本地化模块)默认是禁用的。这与Drupal的哲学,仅当需要的时候才启用相应的功能,相一致。你可以在Administer Site building Modules下面启用本地化模块。本章的例子都假定本地化模块已启用。

 

使用t()函数来翻译字符串

 

Drupal中所有的字符串都应该使用t()函数封装;它是Drupal的翻译函数,由于经常使用,为了方便,所以将其函数简写为“t”。t()函数看起来如下所示:

function t($string, $args = 0) {

global $locale;

if (function_exists('locale') && $locale != 'en') {

// Translate the string.

$string = locale($string);

}

if (!$args) {

return $string;

}

...

}

 

除翻译以外,t()函数对字符串中的占位符中的插入值也进行了处理。这些值一般为用户提供的输入,在展示它们以前,必须对它们进行文本转换。

 

t('Hello, my name is %name.', array('%name' => 'John');

Hello, my name is John.

 

文本中待插入的位置由占位符表示,而待插入的文本是一个带键的数组。这一文本转换处理过程对于Drupal的安全性非常重要(参看第20章以获得更多信息)。图18-1向你展示了t()函数如何处理翻译的;图20-1向你展示了t()函数如何处理占位符的。

18-1. t()函数时如何处理翻译和占位符的插入的

 

将内置字符串替换为定制的字符串

 

假定你对单词”blog”感到别扭,你想将其替换为“journal”而不修改任何代码。你可以使用本地化模块来修改它。方法是,添加一个语言让它仅包含我们想替换的字符串。首先,让我们添加一个定制的语言来持有我们定制的字符串。图18-2展示了这样做的后台接口页面。我们将新加语言叫做“English-custom”,并使用”en-US”来作为语言代码。

 

提示 如果你打算为你的站点同时启用多个语言并允许用户选择一个语言时,你所启用的语言的名字将出现在用户的帐号设置页面(如图18-4)。因此,为语言起一个具有描述性的名字就很重要了(“English-custom”的描述性就不强)。如果你不觉得冗余的话,我们也可以使用“English(blog replaced with journal)”。

18-2 为特定字符串的翻译添加一个定制的语言

 

现在启用你新加的语言并将其设为默认选项,如图18-3所示:

 

18-3启用新加的语言并将其设为默认选项

 

注意 如果你启用了多个语言,那么每一个用户在他/她的帐户页面都会出现一个选择语言的选项,如下图所示。如果你不想让用户选择他们自己的语言,那么仅启用一个语言即可。

在“我的帐号”页面的用户接口上,用户可以对语言进行选择(如果启用了多个语言)

 

 

我们将原来的语言“英语”禁用,这样用户就不用选择了。如图18-4所示。不要担心,如果找不到字符串的翻译版本,Drupal将使用原来的字符串,所以禁用英语并不会是我们的站点变成空白站点。

18-4. 禁用所有的语言,除了默认语言

 

注意列“已翻译(Tanslated)”下面的数字增加了。这是由于Drupal使用了即时翻译。当一个页面载入后,每一个字符串都被t()lacale()函数处理,在这里,如果字符串在表locales_sourcelocales_target中不存在的话,字符串将被添加到这两个表中。图18-4中“已翻译”列下面的值说明有357个字符串使用了t()函数并且可被翻译。我们将使用本地化模块的后台接口来翻译一些字符串。

 

提示当使用后台接口来翻译字符串时,在翻译以前要访问一下包含了你想翻译字符串的页面;这将确保字符串使用了t()函数并且可被翻译。

 

点击“Manage strings”标签以后,我们看到一个搜索接口,它允许我们查找要翻译的字符串。让我们搜索到目前为止可用的357个字符串。搜索接口如图18-5所示。

18-5 用于展示可翻译字符串的搜索接口

 

 

选择我们的语言(English-custom),搜索所有的字符串,将搜索输入框置为空,点击搜索按钮,将得到所有的可翻译的字符串。如图18-6所示,每个字符串在其右边都有一个编辑操作。第一个字符串是”Save configuration”.通过点击编辑链接,让我们将其改为“Save your configuration

18-6 一列可翻译的字符串和它们的状态

 

当我们编辑完该字符串以后,注意该行中的”Locales”列里面的删除线没有了,这意味着该字符串已经被翻译了,如图18-7所示。

18-7. 编辑完”Save configuration”以后的一列可翻译的字符串

 

注意这里显示的是原始的字符串,而不是翻译后的,如果我们返回“Manage Languages(管理语言)”接口页面,如图18-8所示,我们不仅看到357个字符串中的一个已被翻译,而下面的按钮也说明了所做的修改。

18-8 管理语言页面的截图展示了本地化的按钮文本

 

现在你已经学会了如何修改字符串,我们可以继续将所有出现”blog”的地方替换为”journal”。在启用了日志模块以后,访问日志相关的页面(比如 /node/add/blogblog/1)我们将看到, 等待翻译的可翻译字符串。在”Manage strings(管理字符串)”标签下面的搜索功能是大小写敏感的,所以对“blog“和”Blog”分别搜索将为我们展示所有的情况,并让我们将它们替换为”joiurnal“和”Journal”

 

警告 我们这里介绍的方法适用于可接触的Drupal站点和对于特定接口元素的字符串替换,但是它不是完全的。例如,一个包含了”blog”的模块没有被启用,我们就没有对这些字符串进行翻译。一个更完全的方法在本章的“开始一个新翻译“一节中介绍。

 

这个修改看起来很不错,但是创建一个新的日志的url仍然是

http://example.com/?q=node/add/blog, 这让人仍然有点困惑;难道不可以适用http://example.com/?q=node/add/journal来替换么?当然可以。我们可以这样很快的解决这个问题:启用路径模块(path module),将node/add/blog作为系统存在的路径,为其添加一个别名node/add/journal。转眼间,所有的“blog“消失了,这样当你使用站点时感觉就很舒心了。

 
 
以下是对提供的参考资料的总结,按照要求结构化多个要点分条输出: 4G/5G无线网络优化与网规案例分析: NSA站点下终端掉4G问题:部分用户反馈NSA终端频繁掉4G,主要因终端主动发起SCGfail导致。分析显示,在信号较好的环境下,终端可能因节能、过热保护等原因主动释放连接。解决方案建议终端侧进行分析处理,尝试关闭节电开关等。 RSSI算法识别天馈遮挡:通过计算RSSI平均值及差值识别天馈遮挡,差值大于3dB则认定有遮挡。不同设备分组规则不同,如64T和32T。此方法可有效帮助现场人员识别因环境变化引起的网络问题。 5G 160M组网小区CA不生效:某5G站点开启100M+60M CA功能后,测试发现UE无法正常使用CA功能。问题原因在于CA频点集标识配置错误,修正后测试正常。 5G网络优化与策略: CCE映射方式优化:针对诺基亚站点覆盖农村区域,通过优化CCE资源映射方式(交织、非交织),提升RRC连接建立成功率和无线接通率。非交织方式相比交织方式有显著提升。 5G AAU两扇区组网:与三扇区组网相比,AAU两扇区组网在RSRP、SINR、下载速率和上传速率上表现不同,需根据具体场景选择适合的组网方式。 5G语音解决方案:包括沿用4G语音解决方案、EPS Fallback方案和VoNR方案。不同方案适用于不同的5G组网策略,如NSA和SA,并影响语音连续性和网络覆盖。 4G网络优化与资源利用: 4G室分设备利旧:面对4G网络投资压减与资源需求矛盾,提出利旧多维度调优策略,包括资源整合、统筹调配既有资源,以满足新增需求和提质增效。 宏站RRU设备1托N射灯:针对5G深度覆盖需求,研究使用宏站AAU结合1托N射灯方案,快速便捷地开通5G站点,提升深度覆盖能力。 基站与流程管理: 爱立信LTE基站邻区添加流程:未提供具体内容,但通常涉及邻区规划、参数配置、测试验证等步骤,以确保基站间顺畅切换和覆盖连续性。 网络规划与策略: 新高铁跨海大桥覆盖方案试点:虽未提供详细内容,但可推测涉及高铁跨海大桥区域的4G/5G网络覆盖规划,需考虑信号穿透、移动性管理、网络容量等因素。 总结: 提供的参考资料涵盖了4G/5G无线网络优化、网规案例分析、网络优化策略、资源利用、基站管理等多个方面。 通过具体案例分析,展示了无线网络优化的常见问题及解决方案,如NSA终端掉4G、RSSI识别天馈遮挡、CA不生效等。 强调了5G网络优化与策略的重要性,包括CCE映射方式优化、5G语音解决方案、AAU扇区组网选择等。 提出了4G网络优化与资源利用的策略,如室分设备利旧、宏站RRU设备1托N射灯等。 基站与流程管理方面,提到了爱立信LTE基站邻区添加流程,但未给出具体细节。 新高铁跨海大桥覆盖方案试点展示了特殊场景下的网络规划需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值