语言区域回退

Lookup API 实现了自动语言匹配和语言区域回退。这些机制适用于调用 C++ 函数 intl::Lookup::New 的树内使用

语言区域回退是指按照确定性模式,从更具体的资源“回退”到更宽泛的资源,从而搜索翻译后的内容、语言区域数据或其他资源。

举一个简单的回退示例:如果没有特定于 en-US 的消息可供系统使用,那么针对具有 en-US 语言区域的消息的查询请求会回退到使用来自该语言区域 en 的消息。

回退并非总是简单明了。举一个简单的例子,en-US 会回退到 en,但 en-IN 会回退到 en-GB回退关系是在 CLDR 中定义的,Fuchsia 的本地化子系统使用此信息来选择正确的回退本地化。

Fuchsia 的本地化消息查询有两个级别的回退:

  1. 语言匹配。 用户可以按照偏好设置的顺序指定最多 10 个首选语言区域。此属性作为 fuchsia.intl.Profile 类型的一部分受支持。

    此设置可以在构建 Lookup 时移交给 Lookup API

    auto lookup = intl::Lookup::New({"es", "en-US"});
    

    此示例显示,用户设置了偏好设置以查看语言区域 es 中的消息,并回退到 en-US。语言区域信息应该在运行时通常来自 fuchsia.intl.Profile

  2. 后备。 即使用户未明确请求,查询库也会自动从更具体的语言区域回退到不太具体的语言区域。在前面的示例中:

    auto lookup = intl::Lookup::New({"es", "en-US"});
    

    此示例还定义了,如果 en-US 不可用,语言区域应回退到 en。通过这种方法,我们可以为可能不需要全球覆盖,同时仍然涵盖最常见的语言区域的产品提供一组大多数常规语言区域。

这两种方法的组合使用自动规则来查找可用的最佳匹配语言区域,但还允许库调用方指定要使用的首选语言区域的精细顺序。

后续工作

如需详细了解与回退相关的计划但尚未实现的功能,请参阅未来工作部分。