【问题标题】:Tower : Localizing with an unanticipated dictionaryTower:使用意料之外的字典进行本地化
【发布时间】:2014-04-30 16:16:25
【问题描述】:

我正在我的 Web 应用程序中使用用于 i18n 和 l10n 的 Tower 库。

我遇到了必须“即时”本地化的问题,即使用意料之外的字典,尤其是意料之外的支持语言环境。

我收到 HTTP 请求,我可以从中按优先顺序提取接受的语言环境,例如:

[:de :en-UK :en :fr-FR :fr]

另一方面,我必须从从数据库中获取的微型词典进行本地化,格式如下: {:fr "En Français" :en "In English" :en-Uk "In English from UK"}

我想在我的程序中做的是从这 2 个元素中找到最匹配的翻译(在示例中,它是 :en-UK;请注意,我可能事先不知道 :de 不可用)。

我还没有找到使用 Tower 库的方法(我想避免重新发明轮子)。

有人知道我会怎么做吗?

提前致谢!

【问题讨论】:

    标签: web clojure localization http-accept-language


    【解决方案1】:

    刚刚在 Tower v2.1.0-SNAPSHOT 中添加了对任意语言环境后备的原生支持,根据此处的讨论:https://github.com/ptaoussanis/tower/issues/43#issuecomment-42014418

    所以现在可以请求像(t [:fr-FR :en-US] :example/foo) 这样的翻译。

    干杯! :-)

    【讨论】:

      【解决方案2】:

      您可以从映射中获取一系列键,获取两个序列共有的所有值,然后根据符合您要求的逻辑选择首选的任何一个。

      【讨论】:

      • 不幸的是,由于语言环境的层次结构,您的建议比听起来更复杂。例如,如果我接受的语言是[:fr-FR, :en],而我的可用语言环境是#{:fr, :en},那么交叉两个序列将排除:fr,尽管这是正确的选择。就是这种复杂的逻辑,让我不想绕过 Tower 库。
      • 你不能先规范化你的数据吗?
      • “标准化”是什么意思?
      • 使数据看起来像您希望的样子。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-21
      • 1970-01-01
      • 1970-01-01
      • 2010-11-16
      相关资源
      最近更新 更多