翻译

跳转至: 导航, 搜索

Moodle语言包的结构

所有Moodle的语言包都可以在lang文件夹下找到,每一种语言都有一个专门的文件夹,文件夹名为该语言的英文缩写,例如:中文的为"zh_cn"。在Moodle 1.6及以上版本中,lang文件夹在moodledata文件夹下,UTF-8语言包将在文件名中表现出来,例如:zh_cn_utf8。默认的英语语言包en_utf8moodle/lang文件夹下,同时还带有一个非UTF-8版本(文件夹名:en),以便于1.5到1.6的升级和早期数据库的移植过程。 所有的主要文件都保存在/xx_utf8文件夹下,后缀名为.php,例如:moodle.php,resource.php。这些文件含有一些短的词组,经常被我们称之为"字符串"。每个字符串都是可修改的,用以提供对不同语言的支持。

例如
$strdueby = get_string("assignmentdueby", "assignment", userdate($date));
如果某个字符串在某种语言中并不存在,那么该字符串的英文版将自动替代。
有一个叫做help的文件夹包含一些HTML文件,它们以弹出式窗口的形式提供关于该页面的帮助。

你可以在install/lang文件夹下找到安装程序的语言包,这些语言包仅仅提供在安装过程中的语言支持。每晚这些文件会在download.moodle.org的服务器上被自动生成,这些文件不允许手动更改。对于翻译人员来说,这是一个不同寻常的体验,因为你对安装脚本的字符串所添加的修改只能在24小时之后才会出现在1.6及以上版本的安装程序中。

创建一个新的语言包

如果Moodle现在尚不支持你所使用的语言,你也许希望帮助我们翻译。如果你确实是这样想的,请联系我们管理翻译的协调人员Koen Roggemans (translation@moodle.org)。同时你也应该去Languages Forum提交相关信息。

首先你要做的是在lang文件夹下建立一个新的文件夹,文件夹名为该语言名的两个字母缩写。你可以在lib/languages.php中找到一些标准的语言命名。如果你是为了创建另一种语言的变种,请使用添加下划线的方式命名文件夹,添加的解释字母也为两个(例如:pt是葡萄牙语的缩写,pt_br是巴西利亚式葡萄牙语的缩写)。如果你在做一个Unicode的版本,请在末尾添加_utf8字样(例如:sr_utf8)。如果是为新的Moodle 1.6及以上版本,或者为Unicode版本的Moodle 1.6创建语言包,则始终应该使用Unicode,并且添加_utf8后缀。

然后,从moodle/lang/en_utf8文件夹下拷贝langconfig.php文件到新建的文件夹下。修改langconfig.php以使设置与你的语言相符。如果有什么问题,请向我们咨询。

好了,现在你已经做好了准备为开始翻译了!你要做的仅仅是添加你的语言所对应的字符串。详细过程如下:

请注意,如果你在配置文件中langcache选项里选择的是“Yes”,那么你新建立的语言不会马上在下拉菜单中出现。

从Moodle 1.6开始,仅使用UTF-8字符集。字符集的设定由langconfig.php文件里一个叫“thischarset”字段控制,但是这个字段是不应该被修改的。所有其他关于你的语言的设置,例如,时间的显示格式、地区等,都在这个文件中。你可以修改它们,但是修改的时候要小心~~

为Moodle 1.9及以上版本创建一个新的语言包或者维护一个已有的语言包

Moodle1.9

在Moodle 1.9及以上版本中,在默认情况下,系统管理员只能编辑本地语言包,而不是主语言包。如果你没有参与到翻译工作中来,那么你只需要编辑本地语言包,并且保证不会通过update/upgrade的方式覆盖了Moodle或者Moodle语言包。

在Moodle 1.9及以上版本中,如果你是一名翻译人员,你应该给与自己权限以维护主语言包。首先,需要以系统管理员的身份登录网站,并且进入Site administration > Users > Define roles。然后修改系统管理员角色,设置允许 "Edit master language packages" 。

编辑一个已有的语言包

最小化定制

如果只是想修改界面上的少量信息,以使你的网站变得美观,那么请不要修改任何一个标准语言包。如果你修改了,那么当你upgrade一个新的Moodle版本的时候,它将会覆盖掉之前的数据。

你需要做的是按照上面提到的方法,做一个新的扩展语言包,在最适合你的语言文件中添加字符串'parentlanguage'(在langconfig.php文件中)。Moodle会自动检查你的语言包中缺失的信息。以下是一个例子:

$string['parentlanguage'] = 'en_utf8';

对于英语语言包的本地语言而言,"en_utf8_local"这样一个命名是比较合适的,它的上层语言包应该为"en_utf8"或者"en_us_utf8"。(对于Moodle 1.5以及之前的版本,由于老版本没有提供UTF8的支持,所以文件名中没有"_utf8"字样)

需要提醒的是,你必须为你的"en_utf8_local"语言包在moodle.php文件中添加一个'thislanguage'字符串:

$string['thislanguage'] = 'English at OCU';

在Moodle 1.5.x以及更早的版本中,你必须确保每个人都选择使用你的新语言包。他们可以在自己的个人资料里面修改,你也可以使用SQL命令修改所有人的。你可以在Administration > Configuration > Variables设置中限制可以使用的语言,以防止他们修改。

对于Moodle 1.6,最好的方法是新建一个名为"xxxx_local"的语言文件夹,文件名中的“xxxx”为你所要修改的语言包的名字(例如,“es_utf8_local”或“ja_utf8_local”)。这个新的本地语言包将会在主语言包之前被自动检查。本地语言包只需要包含本地的修改(你没有必要为你所要修改的语言拷贝一份完整的副本)。它将不会自动出现在你的语言菜单里,你的用户也不需要修改他们的设置。

上文所述的'parentlanguage'方法在Moodle 1.5中仍然适用。如果你要创建其中一个语言的多个变种,你必须添加'thislanguage'字符串。但是在Moodle 1.6中你只需在langconfig.php中添加就可以了,不用在moodle.php里添加 。

Moodle1.9

在Moodle 1.9及以上版本中,将不再可能由于错误的操作而修改主语言。默认状态下,你对语言包做的所有修改都将添加到xxxx_local中。

翻译Moodle的界面语言文件("string"文件)

  1. 以系统管理员的权限登录Moodle
  2. 进入管理员的语言管理界面Administration >> Configuration >> Language
  3. 在这个页面中你可以从菜单中选择你所需要的语言,然后选择"Compare and Edit Language"。
  1. 你可以看见各个可以修改的文件表单。如果你没有看见这些可以修改的文件表单,你可能需要确保一下这些文件可以被修改──你可能必须修改一下网站目录下的文件修改权限。
  2. 表单由三栏组成,第一栏为字符串的名字,第二栏为该字符串的英文版本,最后一栏是现在所使用语言的翻译。
  3. 修改在各个文件中缺失的字符串(颜色被设置为高亮),别忘了在修改完成之后点击页面下方的"Save changes"按钮。
  4. 空着一些字符串不翻译也是没有问题的──Moodle会自动使用父语言包以代替。你可以在langconfig.php中设置父语言包,如果不设置的话,将默认使用英语作为父语言包。
  5. 一个方便查看所用缺失字符串的方法是:点击"Check for missing strings"按钮。不要让待翻译的字符串完全空着,否则它将不会起作用。

翻译帮助文件

Moodle中有一個内嵌的帮助文件编辑器。这個工具使用en_utf8语言包作为参考语言。我们强烈建议你使用这個编辑器:它会避免可能出现的问题,它会提醒你老版本的翻译,注释出(下拉列表里的星星)哪些文件已经过时,提醒你使用Unicode。 如果你希望用一個非英语的语言作为参考(这不是一個好主意~~),你从参考语言包里拷贝一個帮助文件,然后粘贴到你所使用的语言包里相同的位置。然后使用一個支持Unicode的文本编辑器建立一個空白文本去翻译这個文件,你要确保不要修改文件中任何代码(通常文件里没有代码,只有一些HTML的标签)。(绝对不要使用WORD去写帮助文档!因为它会在文件中生成大量的垃圾資訊!) 不要讓没有翻译过的帮助文件和空的文件存在与你的语言包中。

在写XHTML代码的帮助文件时一定要注意,简单来说,就是要这样:

  • 所有的标签都要被关闭:
    <p>lalala</p>
  • 所有的元素都要被嵌套:
    <p> lalala <em>lalala</em> </p>
  • 所有的元素和属性必须使用小写
  • 所有的属性必须完整,并且置于引号之中:
    <p align="right"> lalala </p>
  • 所有空的元素必须以/>结束:
    <br /> <hr />
    你应该在"/"符号前添加一個额外的空格。
  • 一個<img should have an alt=""(可以为空)必须像其他的元素一样以一個空格和/>结束:
    <img alt="" src="picture.gif" />
  • <?=和<?应该这样写:
    <?php
  • 你不应该使用任何字体标签,
    <p><em> <h1> <h2>
    等,对于语言包文件而言,足矣!

任何帮助文件夹下的文件都不应该是doc文件,也不需要html, body, head以及它们的关标签──这些文件包含在help.php文件中。我们的脚本会保证网页的美观。也就是说,没有必要在HTML上创新!请参考英文例子。

在docs文件夹下的文件(包括doc文件和header等)必须使用XHTML。从Moodle 1.6起,这些东西被移到了Wiki中。

在管理员的语言管理页面点击"Check for missing strings",它将会同时显示哪些文件已经丢失。如果你丢失了一些文件,那么Moodle会自动使用父语言包代替。所以不要在你的语言包中剩下没有翻译的帮助文件,否则它不会起作用。

提交你的语言包到Moodle项目

向Moodle共享出你的翻译将会帮助所有使用你所使用的语言的朋友。你翻译的界面将会可以在将来的Moodle版本中使用。请注意,没有必要等到完全翻译完成之后再提交──我们欢迎任何对语言包的提高或者翻译一个新的语言。

你要做的仅仅是将你的新语言打包成一个zip文件,然后发送邮件到translation@moodle.org

我们将反馈给你一些进一步信息。

在提交之前,你可以参照一下条目进行检查:

  • 没有空的文件
  • 在提交文件中没有未翻译的文件或者字符串
  • 帮助文件没有使用WORD程序编辑
  • 在README文件中含有语言包的名字,作者的名字和email地址
  • 语言文件夹应该被正确命名(请在moodle\lib\languages.php中查询)
  • 这个语言包已在一个用于测试的网站上测试过,并且没有出现任何问题
  • 字符串和文件都是符合XHTML的
  • 含有langconfig.php'文件,并且保证其正确
  • 在你的文件中没有字节标志符(如果你使用的是Moodle自带的语言编辑器,那就不会有什么问题)

维护一个标准的语言包

如果你被委派去维护一个Moodle的语言包,最好的办法是使用Moodle CVS,这样的话你可以获得最新的Moodle版本,并且可以方便的直接向Moodle项目"check in"你的修改。

你因该用心来做翻译工作。Moodle 1.6以前的版本需要在你的主代码目录下修改,而现在需要修改的东西在dataroot/lang文件夹下。

  • 保证你总是check out出来最新的Moodle代码。
  • 升级你的网站。当然,你需要用一个非盈利性的服务器来做这个。
  • 在dataroot文件夹下从CVS上check out最新的语言文件夹,在Unix/Linux上的方式如下:
  cd moodledata    (仅仅是个例子)
  cvs -z3 -d:ext:me@cvs.moodle.org:/cvsroot/moodle co lang

或者仅仅checkout一个单独的语言包:(以下使用捷克语作为例子)

  cd moodledata    (for example)
  cvs -z3 -d:ext:me@cvs.moodle.org:/cvsroot/moodle co lang/cs_utf8
  • 不要忘记设置正确的文件系统权限以保证web服务器的一些操作可以修改check-out出来的文件。

在Windows上使用Tortoise来checkout,

   用右键点击dataroot文件夹,点"CVS Checkout"选项,
   CVSROOT field:  :ext:me@cvs.moodle.org:/cvsroot/moodle
   Module: lang
  • 像你在Moodle 1.6之前做的那样使用Moodle GUI来继续编辑语言包。

你只需要到dataroot/lang文件夹里commit一下,就可以将你的修改提交到CVS上。

如果你真得想要继续更新1.5.x以及之前的版本的语言包,你应该将你的语言包文件夹打包成zip文件,然后发邮件到translation@moodle.org。CVS将会把moodle/lang/xx的入口移到lang/xx_utf8。

如果你在设置这些时需要帮助,请联系translation@moodle.org

对于第三方Moodle组件的翻译

第三方Moodlemodules and plugins(组建,模块,过滤器,验证插件……)语言文件的在lang文件夹下的组件和插件文件夹下,例如:moodle/mod/modulename/lang/ln_utf8。当你想要翻译这样一个组件的时候,你在组件或插件文件夹下的lang/en_utf8文件夹下可以找到英文语言文件。翻译这些文件时,请使用支持UTF-8的文本编辑器,并且保存在组件或者插件文件夹下的一个新的、合适的语言文件夹/lang/XX_utf8/filname.php 中。请不要忘记将翻译后的文件发给这个组件维护人员,他的email地址可已在组件或者插件的文件夹中的README文件中找到。这样做可以保证你的劳动成果不会在升级中丢失,同时其他Moodle用户可以用到。

你的这些翻译文件绝对不要放入主Moodle的语言包中。

参见