跳到主内容
版本: websocket_v1.x.x

Fiberi18n

Release Discord Test

对 Fiber 的 go-i18n 支持。

注意:需要 Go 1.18 及以上版本

安装

此中间件支持 Fiber v2。

go get -u github.com/gofiber/fiber/v2
go get -u github.com/gofiber/contrib/fiberi18n/v2

签名

名称签名描述
NewNew(config ...*fiberi18n.Config) fiber.Handler创建一个新的 fiberi18n 中间件处理程序
LocalizeLocalize(ctx *fiber.Ctx, params interface{}) (string, error)Localize 返回本地化消息。param 是以下类型之一:messageID, *i18n.LocalizeConfig
MustLocalizeMustLocalize(ctx *fiber.Ctx, params interface{}) stringMustLocalize 与 Localize 类似,但如果发生错误会 panic。param 是以下类型之一:messageID, *i18n.LocalizeConfig

配置

属性类型描述默认值
下一页func(c *fiber.Ctx) bool当返回 true 时跳过此中间件的函数。nil
RootPathstringi18n 模板文件夹路径。"./example/localize"
AcceptLanguages[]language.Tag可以处理的语言集合。[]language.Tag{language.Chinese, language.English}
FormatBundleFilestring模板文件类型。"yaml"
DefaultLanguagelanguage.Tag默认返回的语言类型。language.English
LoaderLoaderLoader 接口的实现,定义了如何读取文件。我们提供了 os.ReadFile 和 embed.FS.ReadFile。LoaderFunc(os.ReadFile)
UnmarshalFunci18n.UnmarshalFunc用于解码模板文件的函数。yaml.Unmarshal
LangHandlerfunc(ctx *fiber.Ctx, defaultLang string) string用于获取 *fiber.Ctx 和 defaultLang 处理的语言类型。从请求头 Accept-Language 或查询参数 lang 中获取。

示例

package main

import (
"log"

"github.com/gofiber/contrib/fiberi18n/v2"
"github.com/gofiber/fiber/v2"
"github.com/nicksnyder/go-i18n/v2/i18n"
"golang.org/x/text/language"
)

func main() {
app := fiber.New()
app.Use(
fiberi18n.New(&fiberi18n.Config{
RootPath: "./example/localize",
AcceptLanguages: []language.Tag{language.Chinese, language.English},
DefaultLanguage: language.Chinese,
}),
)
app.Get("/", func(c *fiber.Ctx) error {
localize, err := fiberi18n.Localize(c, "welcome")
if err != nil {
return c.Status(fiber.StatusInternalServerError).SendString(err.Error())
}
return c.SendString(localize)
})
app.Get("/:name", func(ctx *fiber.Ctx) error {
return ctx.SendString(fiberi18n.MustLocalize(ctx, &i18n.LocalizeConfig{
MessageID: "welcomeWithName",
TemplateData: map[string]string{
"name": ctx.Params("name"),
},
}))
})
log.Fatal(app.Listen(":3000"))
}