訊息翻譯

Fuchsia 本地化提供的首要功能是「訊息」 翻譯工作概念上來說,這讓程式能夠顯示 顯示向使用者顯示的訊息。方法是使用 依據語言代碼區分的格式設定工具。計畫必須保持 「本地化內容」儲存使用者本地化偏好設定的位置時間 在程式執行過程中,會出現一則「Hello」訊息 世界!」需要以使用者的母語 (例如 西班牙文範例會在歐洲西班牙文編碼為「es」、「es-419」 也就是美洲地區所用的 西班牙文 這個程式語言 提供抽象 [Lookup] 服務,其中包含原始訊息和 所需的翻譯概念上,這會影響程式碼中的一行 符合以下一般模式:

[Lookup].String({locale-ids=["es-419"]}, MSG_Hello_World)  (yields the translation)

在上述範例中,[Lookup] 可以是任何類型的可呼叫端點: 可能是程式庫公開的函式,也可能是 會擷取的 RPC 虛設常式 並透過網路傳送翻譯「擷取 翻譯的訊息」此處稱為 String,以區分它 可能的呼叫,例如 StringArray 等。

請注意,訊息可能比文字複雜 通常不是計劃作者直接處理它們,而是 透過訊息 ID 傳送

還有兩點要注意:

  1. 語言識別碼指定為 Unicode 語言代碼 編號 (因此 範例中的具名參數 locale-ids) 和多個這類語言代碼 ID 可以一次提供這是因為使用者可能不只一個 並依偏好使用語言階層 如此一來,本地化系統就能選擇最適合的訊息 可能會為單一工作階段提供多種語言版本。
  2. 在程式碼中,訊息不會指定為字串表示的字串。 這些郵件會由專屬訊息 ID 提供。這個例子 以上,這個名稱任意命名為 MSG_Hello_World。學校 考量到字串是否應內部化或外部化 我們選擇了第二種我們的主要理由是 不會有語言問題,這導致翻譯工具鍊 較易於維護,而且還能更輕鬆地大規模翻譯 管理。

上方範例出現了兩個主要問題:

  1. [Lookup] 服務的具體介面 程式設計師選擇的語言?此外,
  2. 翻譯人員如何在我的程式中 使用嗎?

我們會在討論 Lookup API 時依序回答這些問題。