Fiberi18n


Fiber를 위한 go-i18n 지원.

참고: Go 1.18 이상이 필요합니다

Installation

이 미들웨어는 Fiber v2를 지원합니다.

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

Signatures

이름
시그니처
설명

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와 유사하지만 오류가 발생하면 패닉이 발생합니다. param은 다음 중 하나의 유형입니다: messageID, *i18n.LocalizeConfig

Config

속성
유형
설명
기본값

Next

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에서 검색됩니다.

Examples

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"))
}

Last updated