“如何进一步汉化FreePBX界面”的版本间的差异

来自最权威最新完整开源SIP,语音通信,融合通信中文技术文档资料,提供详细的Asterisk Freepbx, FreeSBC, 免费会话边界控制器,网关,语音板卡,IPPBX,SBC配置资料-asterisk,freepbx,freesbc 用户手册 界面配置,呼叫路由,IVR, 网关对接,拨号规则,SIP 分机呼叫,pjsip, IVR, 录音, CDR, 队列呼叫,振铃组,CLI 命令中文资料手册
跳转至: 导航搜索
第1行: 第1行:
'''Translating FreePBX Manually'''
+
'''手动汉化FreePBX 中文界面'''
  
FreePBX began including the [http://www.gnu.org/software/gettext/ gettext] package for i18n since version 2.5. This makes translating (localization) to your desired language relatively simple using the following steps: 
+
FreePBX 自从 FreePBX 2.5 以后已经包括了gettext包支持i18n 中文汉化. 用户可以在本地对FreePBX 进行汉化处理,汉化FreePBX 需要经过以下几个步骤:
  
''' Translation files'''
+
'''找到相关汉化文件'''
  
In each modules/&lt;modulename&gt;/i18n directory there is a &lt;modulename&gt;.pot file. This is a template file with all the strings needed for translation. Create a new language directory structure in the i18n directory and copy the &lt;modulename&gt;.pot file to&nbsp;''lang_code''/LC_MESSAGES/&lt;modulename&gt;.po Replace&nbsp;''lang_code''&nbsp;with the proper language code for your translation (hint: see /usr/share/locale<nowiki>/locale.al</nowiki>ias).
+
在每个模块文件夹下面有一个 module_名称/i18n, 这个路径下有各种语言的POT文件,当然包括了zh_CN的文件,具体的文件路径是模块名称/i18n/zh_CN/LC_MESSAGES/模块名称.po 文件。
 +
这些文件支持每个具体的模块界面汉化。
  
'''Note:'''&nbsp;core does not contain an i18n directory as all text for core is located in admin/i18n/''lang_code''/LC_MESSAGES<nowiki>/amp.po</nowiki> - <nowiki>amp.mo</nowiki> and the template file are in admin/i18n.
+
'''注意:'''core 文件夹不包括 i18n路径,主界面的中文汉化包存放在 admin/i18n/''zh_CN''/LC_MESSAGES<nowiki>/amp.po</nowiki> - <nowiki>amp.mo</nowiki>
  
'''Example'''
 
  
You want to translate the backup module to Danish, First check the language code for Danish in <nowiki>locale.al</nowiki>ias. For Danish it is da_DK, then create the directory structure (backup/i18n/da_DK/LC_MESSAGES), then copy the i18n<nowiki>/backup.po</nowiki>t to da_DK/LC_MESSAGES<nowiki>/backup.po</nowiki>.
+
'''对PO文件进行汉化'''
  
'''Translating the File'''
+
举例,我们现在要对backup 模块中的po 文件进行汉化,用户使用POedit工具,在用户电脑打开PO文件,然后文件,用户根据文件中的提示可以一一对应进行汉化。在文件中用户会看到 "msgid" "msgstr" 一对对应的值。"msgid" 是英文的原始条目, "msgstr" 就是中文的含义,这里有一个例子:
 
+
Continuing from our above example, in <nowiki>backup.po</nowiki> you will see several "msgid" and "msgstr" name/value pairs. "msgid" contains the string to be translated and "msgstr" will be where you put your translation for the given "msgid". Here's an example from the core module where we translate "Delete Route %s" to Spanish:
+
  
 
<nowiki>#: amp_conf/htdocs/admin/modules/core/page.routing.php:275</nowiki>
 
<nowiki>#: amp_conf/htdocs/admin/modules/core/page.routing.php:275</nowiki>
第25行: 第23行:
 
msgid "Delete Route %s"
 
msgid "Delete Route %s"
  
msgstr "Agregar Usuario %s"
+
msgstr "删除路由 %s"
  
If you are working in Linux there is a PO-editor called KBabel which you may prefer to use. Otherwise you may also want to check out the cross-platform (Linux/Mac/Windows) editor called&nbsp;[http://www.poedit.net/ Poedit].
+
在linux 环境下的编译工具是 KBabel ,当然用户也可以拷贝到Windows 环境下,使用[http://www.poedit.net/ Poedit]来编辑。
  
'''Compiling your translation file'''
+
'''完成翻译以后,保存编译PO文件'''
  
The .po file needs to be compiled into an .mo file before it can be used. To do this, run:
+
这里的.po 文件需要编译保存成一个.mo 文件,系统才能显示中文,这些:
  
'''''Note:'''''&nbsp;''If you are using KBabel or Poedit, the files are compiled with these programs and you don't have to do the next part''
+
'''注意:''' KBabel或者Poedit 可以点击保存,如果所有语法正确的话,工具会在相应的文件路径下保存一个同样文件名的mo后缀文件。用户可以把这个文件存放回i18n/''zh_CN''/LC_MESSAGES 目录下的 文件夹中。 当然用户也可以在linux 命令进行文件转换:
 
+
msgfmt -v &lt;module&gt;.po -o &lt;module&gt;.mo
+
 
+
For example, you have translated the <nowiki>backup.po</nowiki>, to compile it, run:
+
  
 
msgfmt -v <nowiki>backup.po</nowiki> -o <nowiki>backup.mo</nowiki>
 
msgfmt -v <nowiki>backup.po</nowiki> -o <nowiki>backup.mo</nowiki>
  
You might have some errors to correct, which are usually a result of quoting problems or that you have not updated the header in the .po file. If you have no error and all is good, continue to the next step.
 
  
'''Testing your Translation'''
+
'''测试汉化效果'''
  
To see your translations at work, you need to update FreePBX's code to include your translation. The file that you'll need to edit is located at /var/www/html/admin/views/men<nowiki>u.ph</nowiki>p (on a default CentOS install), and you'll want to look for the code block shown below:
+
为了支持中文界面的显示,我们必须在语言选择界面添加中文选项。打开文件 /var/www/html/admin/views/men<nowiki>u.ph</nowiki>p (默认是CentOS 安装),其他环境可能在不同的路径。
  
 
'''/var/www/html/admin/views<nowiki>/menu.ph</nowiki>p'''  
 
'''/var/www/html/admin/views<nowiki>/menu.ph</nowiki>p'''  
 
+
<pre>
 
<nowiki>if($amp_conf['SHOWLANGUAGE']) {</nowiki>
 
<nowiki>if($amp_conf['SHOWLANGUAGE']) {</nowiki>
  
第61行: 第54行:
 
         $out .= '&lt;li data-lang="bg_BG"&gt;&lt;a href="#"&gt;' . _('Bulgarian') . '&lt;/a&gt;&lt;/li&gt;';
 
         $out .= '&lt;li data-lang="bg_BG"&gt;&lt;a href="#"&gt;' . _('Bulgarian') . '&lt;/a&gt;&lt;/li&gt;';
  
         $out .= '&lt;li data-lang="zh_CN"&gt;&lt;a href="#"&gt;' . _('Chinese') . '&lt;/a&gt;&lt;/li&gt;';
+
         $out .= '&lt;li data-lang="zh_CN"&gt;&lt;a href="#"&gt;' . _('Chinese') . '&lt;/a&gt;&lt;/li&gt;'; // 这里已经支持了中文zh_CN
  
 
         $out .= '&lt;li data-lang="de_DE"&gt;&lt;a href="#"&gt;' . _('German') . '&lt;/a&gt;&lt;/li&gt;';
 
         $out .= '&lt;li data-lang="de_DE"&gt;&lt;a href="#"&gt;' . _('German') . '&lt;/a&gt;&lt;/li&gt;';
第86行: 第79行:
  
 
}
 
}
 
+
</pre>
 
Once you've located the code block, you'll want to add you code to above the line that shows:
 
Once you've located the code block, you'll want to add you code to above the line that shows:
  

2015年11月6日 (五) 08:02的版本

手动汉化FreePBX 中文界面

FreePBX 自从 FreePBX 2.5 以后已经包括了gettext包支持i18n 中文汉化. 用户可以在本地对FreePBX 进行汉化处理,汉化FreePBX 需要经过以下几个步骤:

找到相关汉化文件

在每个模块文件夹下面有一个 module_名称/i18n, 这个路径下有各种语言的POT文件,当然包括了zh_CN的文件,具体的文件路径是模块名称/i18n/zh_CN/LC_MESSAGES/模块名称.po 文件。 这些文件支持每个具体的模块界面汉化。

注意:core 文件夹不包括 i18n路径,主界面的中文汉化包存放在 admin/i18n/zh_CN/LC_MESSAGES/amp.po - amp.mo。


对PO文件进行汉化

举例,我们现在要对backup 模块中的po 文件进行汉化,用户使用POedit工具,在用户电脑打开PO文件,然后文件,用户根据文件中的提示可以一一对应进行汉化。在文件中用户会看到 "msgid" 和 "msgstr" 一对对应的值。"msgid" 是英文的原始条目, "msgstr" 就是中文的含义,这里有一个例子:

#: amp_conf/htdocs/admin/modules/core/page.routing.php:275

#: amp_conf/htdocs/admin/modules/core/page.did.php:141

#, php-format

msgid "Delete Route %s"

msgstr "删除路由 %s"

在linux 环境下的编译工具是 KBabel ,当然用户也可以拷贝到Windows 环境下,使用Poedit来编辑。

完成翻译以后,保存编译PO文件

这里的.po 文件需要编译保存成一个.mo 文件,系统才能显示中文,这些:

注意: KBabel或者Poedit 可以点击保存,如果所有语法正确的话,工具会在相应的文件路径下保存一个同样文件名的mo后缀文件。用户可以把这个文件存放回i18n/zh_CN/LC_MESSAGES 目录下的 文件夹中。 当然用户也可以在linux 命令进行文件转换:

msgfmt -v backup.po -o backup.mo


测试汉化效果

为了支持中文界面的显示,我们必须在语言选择界面添加中文选项。打开文件 /var/www/html/admin/views/menu.php (默认是CentOS 安装),其他环境可能在不同的路径。

/var/www/html/admin/views/menu.php

if($amp_conf['SHOWLANGUAGE']) {

        $out .= '<a id="language-menu-button" '

                . 'class="button-right ui-widget-content ui-state-default">' . _('Language') . '</a>';

        $out .= '<ul id="fpbx_lang" style="display:none;">';

        $out .= '<li data-lang="en_US"><a href="#">'. _('English') . '</a></li>';

        $out .= '<li data-lang="bg_BG"><a href="#">' . _('Bulgarian') . '</a></li>';

        $out .= '<li data-lang="zh_CN"><a href="#">' . _('Chinese') . '</a></li>';  // 这里已经支持了中文zh_CN

        $out .= '<li data-lang="de_DE"><a href="#">' . _('German') . '</a></li>';

        $out .= '<li data-lang="fr_FR"><a href="#">' . _('French') . '</a></li>';

        $out .= '<li data-lang="he_IL"><a href="#">' . _('Hebrew') . '</a></li>';

        $out .= '<li data-lang="hu_HU"><a href="#">' . _('Hungarian') . '</a></li>';

        $out .= '<li data-lang="it_IT"><a href="#">' . _('Italian') . '</a></li>';

        $out .= '<li data-lang="pt_PT"><a href="#">' . _('Portuguese') . '</a></li>';

        $out .= '<li data-lang="pt_BR"><a href="#">' . _('Portuguese (Brasil)') . '</a></li>';

        $out .= '<li data-lang="ru_RU"><a href="#">' . _('Russian') . '</a></li>';

        $out .= '<li data-lang="sv_SE"><a href="#">' . _('Swedish') . '</a></li>';

        $out .= '<li data-lang="es_ES"><a href="#">' . _('Spanish') . '</a></li>';

        $out .= '</ul>';

}

Once you've located the code block, you'll want to add you code to above the line that shows:

       $out .= '</ul>';

For example, if you want to add Danish as the new language, you would add the following live above the code block above:

$out .= '<li data-lang="da_DK"><a href="#">' . _('Danish') . '</a></li>';

Finally you can test your translations by refreshing your browser window and selecting your new language. If everything looks good, zip up your translated <modules>.po and <modules.>mo files and submit them by creating a New Ticket in our bug tracker. For information on how to do that, please see [file:///E:/display/FOP/Bug+Reporting Bug Reporting].

Determining Translation Status

The languagestatus module provides developers insight into the translation status of core modules. To install the module, follow the steps below:

  • Click Admin
  • Choose Module Admin
  • Make sure Unsupported is checked
  • Check for Updates
  • Install languagestatus

The module provides a menu option under Admin called Language Status. If you click on this, you will be greeted with a page that tells you to choose a language. If you do not have the language selection dropdown in the menu, complete the following:

  • Click Settings
  • Choose Advanced Settings
  • Set Show Language setting to True 

Choose a language other than English to see how well core modules are translated.

参与官方中文汉化,请登录: http://wiki.freepbx.org/display/FOP/Translating+FreePBX+with+Weblate