Localization¶
Frame ships with a localization manager built on go-i18n.
Quick Start¶
_, svc := frame.NewService(
frame.WithTranslation("./localization", "en", "fr"),
)
msg := svc.LocalizationManager().Translate(ctx, "en", "welcome")
Translation Files¶
Frame expects toml messages:
localization/
messages.en.toml
messages.fr.toml
HTTP and gRPC Language Extraction¶
- HTTP:
Accept-Languageheader andlangquery param. - gRPC:
accept-languagemetadata.
Interceptors available:
localization/interceptors/httpilocalization/interceptors/grpclocalization/interceptors/connect
API¶
localization.NewManager(folder, languages...)Translate(ctx, request, messageID)TranslateWithMap(ctx, request, messageID, variables)TranslateWithMapAndCount(ctx, request, messageID, variables, count)
Best Practices¶
- Always supply a default message ID.
- Keep translations versioned with your service.
- Avoid loading all languages if only a subset is needed.