代码之家  ›  专栏  ›  技术社区  ›  Emilia Qtless

Happyx中的翻译

  •  1
  • Emilia Qtless  · 技术社区  · 1 年前

    我可以在happyx web框架中翻译字符串吗?

    例如

    ...
    get "/":
      if lang == "en":
        return "Hello, world!"
      else:
        return "Bye"
    

    现在我正在尝试使用请求头来检测语言,但我能用其他方法吗?

    1 回复  |  直到 1 年前
        1
  •  1
  •   Ethosa    1 年前

    您可以使用 可翻译字符串 v1.5.0

    以下是示例

    # Declare your translatable strings
    translatable:
      "Hello, world!":  # this string will be used by default
        "ru" -> "Привет"
        "jp" -> "こんにちは"
    
    ...
    
      get "/":
        # In SSR/SSG, language takes from HTTP headers
        # In SPA, language takes from browser
        return translate("Hello, world!")
    
        2
  •  0
  •   Chris Arndt    1 年前

    使用 prologue/i18n 模块,您可以从翻译目录加载翻译。

    i18n example application 在prologue示例存储库中,该存储库演示了如何基于URL查询参数切换翻译。

    它可以归结为以下步骤:

    1. 在应用程序设置中设置可用语言:
    settings = newSettings(..., data = %* {"languages": languages}
    
    1. 加载翻译目录:
    app.loadTranslate(expandFileName("translations/trans.ini"))
    
    1. 在视图中,从 Context 以及从查询参数中选择的翻译:
    languages = ctx.gScope.settings["languages"].getElems().mapIt(it.getStr())
    lang = ctx.request.queryParams.getOrDefault("lang", "en")
    
    1. 使用 translate(ctx: Context, text: string, language: string) 要翻译字符串:
    ctx.translate("Hello World!", lang)
    

    我想,从HTTP头直接在视图中获取语言,或者使用自定义中间件在每个视图的上下文中设置语言,都会相对容易。