訊息翻譯
Fuchsia 本地化提供的首要功能是「訊息」
翻譯工作概念上來說,這讓程式能夠顯示
顯示向使用者顯示的訊息。方法是使用
依據語言代碼區分的格式設定工具。計畫必須保持
「本地化內容」儲存使用者本地化偏好設定的位置時間
在程式執行過程中,會出現一則「Hello」訊息
世界!」需要以使用者的母語 (例如
西班牙文範例會在歐洲西班牙文編碼為「es」、「es-419」
也就是美洲地區所用的 西班牙文 這個程式語言
提供抽象 [Lookup]
服務,其中包含原始訊息和
所需的翻譯概念上,這會影響程式碼中的一行
符合以下一般模式:
[Lookup].String({locale-ids=["es-419"]}, MSG_Hello_World) ⇒ (yields the translation)
在上述範例中,[Lookup]
可以是任何類型的可呼叫端點:
可能是程式庫公開的函式,也可能是
會擷取的 RPC 虛設常式
並透過網路傳送翻譯「擷取
翻譯的訊息」此處稱為 String
,以區分它
可能的呼叫,例如 StringArray
等。
請注意,訊息可能比文字複雜 通常不是計劃作者直接處理它們,而是 透過訊息 ID 傳送
還有兩點要注意:
- 語言識別碼指定為 Unicode 語言代碼
編號 (因此
範例中的具名參數
locale-ids
) 和多個這類語言代碼 ID 可以一次提供這是因為使用者可能不只一個 並依偏好使用語言階層 如此一來,本地化系統就能選擇最適合的訊息 可能會為單一工作階段提供多種語言版本。 - 在程式碼中,訊息不會指定為字串表示的字串。
這些郵件會由專屬訊息 ID 提供。這個例子
以上,這個名稱任意命名為
MSG_Hello_World
。學校 考量到字串是否應內部化或外部化 我們選擇了第二種我們的主要理由是 不會有語言問題,這導致翻譯工具鍊 較易於維護,而且還能更輕鬆地大規模翻譯 管理。
上方範例出現了兩個主要問題:
[Lookup]
服務的具體介面 程式設計師選擇的語言?此外,- 翻譯人員如何在我的程式中 使用嗎?
我們會在討論 Lookup API 時依序回答這些問題。