【问题标题】:select by default ScalaI18N messages file默认选择 ScalaI18N 消息文件
【发布时间】:2014-06-26 18:55:38
【问题描述】:

我想在带有 scala 2.1 的 play framework 2.2 中为 i18n 选择默认消息文件
控制器

def check = Action { implicit request =>
    val browserLang = request.acceptLanguages(0).code.toString.splitAt(2)._1
    var translated  =Messages("amount")(Lang(browserLang))
    Ok(write(Map("result" -> "success", "lang" -> browserLang,"amount"->translated)))
  }

application.conf

application.langs="en,fr,ru"

共有三个消息文件

  1. messages.cn
  2. messages.fr
  3. messages.ru

但是如果browserLang 的值是de,pt,es 等等。
对于这些情况,我希望默认情况下应该选择 messages.en

有没有办法设置默认消息文件或其他任何东西?

【问题讨论】:

    标签: scala playframework internationalization


    【解决方案1】:

    documentation中所述:

    默认的 conf/messages 文件匹配所有语言。

    因此,您应该将 messages.en 重命名为 messages,以便将其用作默认值。语言特定文件中缺少的任何键都将回退到conf/messages

    【讨论】:

    • 实际上只是用conf/messagesconf/messages.en 尝试过。当我从messages.en 中删除密钥时,我得到了来自messages 的密钥/值。所以你必须做一些不同的事情。
    • 我删除了我的 messages.en 并创建了 messages 与关键字 amount=sum 相同,但它给我 amount 时不起作用
    • 那么问题一定出在你没有展示的东西上,因为文档中的方法显然有效。 val browserLang = request.acceptLanguages(0).code.toString.splitAt(2)._1 也完全没有必要,因为 request.acceptLanguages 已经是 Seq[Lang]
    猜你喜欢
    • 2020-12-09
    • 1970-01-01
    • 2012-11-13
    • 1970-01-01
    • 2016-08-20
    • 2017-03-11
    • 1970-01-01
    • 1970-01-01
    • 2021-03-27
    相关资源
    最近更新 更多