Lookup API 會實作自動語言比對和語言代碼備用。只要使用會呼叫 C++ 函式 intl::Lookup::New
的樹狀結構內結構,即可使用這些機制
語言代碼備用是指搜尋已翻譯的內容、語言代碼資料或其他資源,方法是透過確定性模式,從更特定的資源「回退」到較通用的資源。
舉例來說,如果系統沒有可用的 en-US
專屬訊息,則使用語言代碼 en-US
的訊息查詢要求會改回使用語言代碼 en
的訊息。
備用項不一定容易,舉例來說,en-US
會改回使用 en
,但 en-IN
會改回使用 en-GB
。備用關係是在 CLDR 中定義,Fuchsia 的本地化子系統會利用這項資訊選取正確的備用本地化版本。
Fuchsia 的本地化訊息查詢具有兩種備用層級:
語言比對。 使用者最多可以按照偏好設定指定 10 個偏好的語言代碼。這屬於
fuchsia.intl.Profile
類型的一部分。可在建構
Lookup
時將這項設定交給 Lookup API:auto lookup = intl::Lookup::New({"es", "en-US"});
本例顯示,使用者設定了偏好設定,查看語言代碼
es
的訊息,而後來會改回en-US
。正常來說,語言代碼資訊應該在執行階段一般來自fuchsia.intl.Profile
。備用廣告。即使使用者未明確要求,查詢庫也會自動從更明確的語言代碼改回較不明確的語言代碼。在上述範例中:
auto lookup = intl::Lookup::New({"es", "en-US"});
此範例也定義了
en-US
無法使用時,語言代碼應改回en
。這種方法可讓我們為可能需要全球涵蓋範圍的產品提供一組大部分的一般語言代碼,但產品仍涵蓋最常見的語言代碼。
這兩種方法的組合使用自動規則,找出最可用的相符語言代碼,但也允許程式庫呼叫端指定較精細的偏好語言代碼順序。
未來的工作
如要進一步瞭解預定但尚未實作與備用項相關的功能,請參閱「未來工作」一節。