翻譯 Firefox OS Apps (下集)

可於此觀看上集

L10n 指令碼

Firefox OS 大多數的預設 Apps,均使用類似下列指令碼的標籤而載入 L10n.js 函式庫:

 

若要在自己的 Apps 中使用此函式庫,則必須將 l10n.js 檔案複製到本端專案並更改來源屬性。

載入完畢後,L10n.js 函式庫隨即具備「navigator.mozL10n」物件,讓用戶端順利進行翻譯作業。

mozL10n 最常用的函式與屬性另列於下。

 

get 函式

「get」函式可針對目前語言而取得已翻譯的字串。此函式將使用 1 組鍵值參數與 1 組選填的 args 參數。鍵值參數將指定語系檔所定義的鍵值。

針對內含參數的字串,則 args 參數可傳送 1 組 JSON 格式的參數。

localize 函式

「localize」函式可添加翻譯屬性,以動態方式建立內容。此函式將使用 id 參數、元素參數、選填的 args 參數。元素參數將指定應翻譯的元素。id 參數則指定 L10n-based 的屬性 id,以利指派至元素。選填的 args 參數則可建立 data-l10n-args 屬性並設定其 JSON 值。

如此將形成下列 HTML:

另可立刻翻譯其他文字。

ready 函式

在目前文件翻譯完畢之後,可用「ready」函式定義回呼 (Callback)。

language 屬性

「language」屬性包含 1 組語言代碼所用的 Getter 與 Setter,且同樣有 1 組 Getter 可支援由右至左 (阿拉伯文與希伯來文) 與由左至右的語言。

L10n_Date 指令碼

針對日期與時間的調整,Gaia 應用程式則透過 l10n_date.js 函式庫而延伸了 L10n.js 的功能。就 l10n.js 函式庫來說,其建置的某些功能並無法相容於所有瀏覽器。你同樣可到 Gaia 的原始碼中找到此函式庫,並使用本文 L10n.js 段落所提過的相同屬性結構。只要是使用此函式庫的 Gaia Apps,均必須透過共享的語系檔集合與 date.ini 檔案,才能匯入特定語言的語系檔。Gaia 的原始碼也提供此 date.ini 檔案;另可至 https://github.com/mozilla-b2g/gaia/tree/master/shared/locales/date directory 找到特定語言的語系檔。針對一個禮拜是以哪天起算、簡短日期的格式、各月份的名稱等,均是透過這些語系檔所定義。若要在自己的 Apps 中使用這些函式庫,則需將所有檔案複製到特定專案中。而 ini 與指令碼檔案均以類似方式載入到 L10n.js 函式庫。

若使用的函式為 L10n_date 函式庫的格式,語系檔中的字串即可使用標準的 C++ 日期/時間格式程式碼。若以此為範例來檢查 Gaia Clock App 的語系檔,則該檔案在 en-US 語言中,應包含下列 dateFormat 的輸入項。

若使用 L10n_Date 函式庫中的 formatLocale 函式,就會回傳:
“Full Weekday Name” “Full Month Name” “Day of the Month” (Thursday January 29)。此語系檔的法文版本將以下列順序定義相同的鍵值:

如此將產生:
“Full Weekday Name” “Day of the Month” “Full Month” (jeudi 25 janvier)。

 

只要納入 L10n_Date 函式庫,mozL10n 物件 (navigator.mozL10n.DateTimeFormat()) 即可使用新的函式。一旦將此物件實體化 (Instantiated) 之後,就有多個可翻譯日期的函式。最好用的函式如下:

localeFormat 函式

「localeFormat」函式將使用 1 組日期物件參數與 1 組格式參數,且將回傳符合指定格式的日期。此函式應搭配 L10N.js 的 get 函式,形成翻譯日期的格式。

 

localeDateString、localeTimeString、localeString 函式

這 3 組函式屬於 localeFormat 函式的變化。localeFormat 函式將根據日期語系檔中的下列鍵值,進而回傳既定的日期格式:

fromNow 函式

「fromNow」函式將使用 1 組日期/時間參數,並回傳 1 組特定語言格式的字串,藉以呈現「目前的日期/時間」與「參數所傳入的日期/時間」的時間差。而此字串將使用日期語系檔中定義的格式。例如:

若是 en-US 語言,將會發出「58 Minutes Ago」的警示。字串另將依照日期語系檔中的「minutes-ago-long」格式而定。

 

 快來加入我們!

若要進一步了解翻譯實例,可參閱 Mozilla 開發者社群網站 (Mozilla Developer Network,MDN) 中的《Creating localizable web applications》一文。

在你翻譯自己的 Firefox OS Apps 之後,會不會想協助 Firefox OS 的翻譯呢?快從這裡取得相關的貢獻資訊

 

原文鏈結:https://hacks.mozilla.org/2013/08/localizing-firefox-os-apps/

 

 

 

您可能也會喜歡

目前找不到相關文章

共 0 則讀者回應

對此文章發表回應

你的電子郵件位址並不會被公開。 必要欄位標記為 *