翻譯

出自MoodleDocs
跳到:導覽、​搜尋

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的語言包中。

參見