Revel 消息处理


当前第2页 返回上一页

对于每次请求,框架会查找应用程序配置 (i18n.cookie)。如果找到了,它的值被假定为当前的语言环境。当一个cookie已经发现,所有其他解析方法将被跳过。

  • Accept-Language HTTP 头

    对于每次请求,Revel 会自动解析 HTTP 头信息的 Accept-Language。其中的每个语言环境根据 HTTP 规范在当前Request实例中获取和存储。此信息用来为稍后的消息解析函数确定当前语言环境。

    更多信息请参考 Parsed Accept-Language HTTP header.

  • 默认语言

    当以上所有方法都没有找到可用的客户端语言环境时,框架将使用配置文件中定义的默认语言i18n.default_language

  • 如果有的消息解析失败,则返回一个包含原始消息名的特殊格式的字符串。

    注意: Accept-Language 头信息 总是 被解析并保存到当前 Request中, 即使它已经存在。在这种情况下,头信息中的值即使从未被消息解析功能使用,但是仍可以在需要他们的时候使用。

    检查当前语言环境

    应用程序可以从Request内部使用 Request.Locale 属性访问当前语言环境。例如:

    func (c App) Index() revel.Result {
        currentLocale := c.Request.Locale
        c.Render(currentLocale)
    }

    在模板中, 就可以从 renderArgs 中的 currentLocale 变量中访问当前语言环境。 例如:

        <p>Current preferred locale: {{.currentLocale}}</p>

    解析 Accept-Language HTTP 头信息

    如果程序需要访问 Accept-Language HTTP 头信息, 可以从 Controller 实例的 Request中获取。 AcceptLanguages 字段(AcceptLanguage实例的切片)包含所有从各自的头信息中解析的值, 最合适的值是切片中的第一个。例如:

    func (c App) Index() revel.Result {
        // 获取所有解析到的AcceptLanguage的字符串表示形式
        c.RenderArgs["acceptLanguageHeaderParsed"] = c.Request.AcceptLanguages.String()
        // 返回最合适AcceptLanguage实例
        c.RenderArgs["acceptLanguageHeaderMostQualified"] = c.Request.AcceptLanguages[0]
    
        c.Render()
    }

    更多信息请参考 HTTP 规范.

    解析消息

    消息可以在 控制器 或 模板中解析。

    控制器

    控制器中使用 Message(message string, args ...interface{}) 函数使用当前语言环境解析消息:

    func (c App) Index() revel.Result {
        c.RenderArgs["controllerGreeting"] = c.Message("greeting")
        c.Render()
    }

    模板

    在模板中使用 模板函数 msg 解析当前语言环境的消息。例如:

        <p>Greetings without arguments: {{msg . "greeting"}}</p>
        <p>Greetings: {{msg . "greeting.full.name" "Tommy Lee Jones"}}</p>

    注意: msg 函数的签名是 msg . "message name" "argument" "argument". 如果没有参数, 可以忽略。

    配置

    文件选项描述
    app.confi18n.cookie语言cookie的名称。应使用Revel cookie的前缀,以避免cookie名称冲突。
    app.confi18n.default_language默认的语言环境,在没有首选区域的情况下使用。

    标签:Revel

    返回前面的内容

    相关阅读 >>

    Revel 消息处理

    Revel 模块概要

    Revel 版本控制

    Revel 参数验证

    Revel 部署

    Revel 介绍

    Revel 路由routes

    Revel 过滤器

    Revel session flash

    Revel 常见问题

    更多相关阅读请进入《Revel》频道 >>




    打赏

    取消

    感谢您的支持,我会继续努力的!

    扫码支持
    扫码打赏,您说多少就多少

    打开支付宝扫一扫,即可进行扫码打赏哦

    分享从这里开始,精彩与您同在

    评论

    管理员已关闭评论功能...