Fiberi18n
对 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
签名
名称 | 签名 | 描述 |
---|---|---|
New | New(config ...*fiberi18n.Config) fiber.Handler | 创建一个新的 fiberi18n 中间件处理程序 |
Localize | Localize(ctx *fiber.Ctx, params interface{}) (string, error) | Localize 返回本地化消息。param 是以下类型之一:messageID, *i18n.LocalizeConfig |
MustLocalize | MustLocalize(ctx *fiber.Ctx, params interface{}) string | MustLocalize 与 Localize 类似,但如果发生错误会 panic。param 是以下类型之一:messageID, *i18n.LocalizeConfig |
配置
属性 | 类型 | 描述 | 默认值 |
---|---|---|---|
下一页 | func(c *fiber.Ctx) bool | 当返回 true 时跳过此中间件的函数。 | nil |
RootPath | string | i18n 模板文件夹路径。 | "./example/localize" |
AcceptLanguages | []language.Tag | 可以处理的语言集合。 | []language.Tag{language.Chinese, language.English} |
FormatBundleFile | string | 模板文件类型。 | "yaml" |
DefaultLanguage | language.Tag | 默认返回的语言类型。 | language.English |
Loader | Loader | Loader 接口的实现,定义了如何读取文件。我们提供了 os.ReadFile 和 embed.FS.ReadFile。 | LoaderFunc(os.ReadFile) |
UnmarshalFunc | i18n.UnmarshalFunc | 用于解码模板文件的函数。 | yaml.Unmarshal |
LangHandler | func(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"))
}