Skip to content

Latest commit

 

History

History
145 lines (105 loc) · 6.83 KB

README.uk-UA.md

File metadata and controls

145 lines (105 loc) · 6.83 KB

go-i18n

Build status Report card codecov Sourcegraph

go-i18n — це Go пакет та інструмент, які допомагають перекладати Go програми на різні мови.

Пакет i18n

Go Reference

Пакет i18n забезпечує підтримку пошуку повідомлень відповідно до набору мовних уподобань.

import "github.com/nicksnyder/go-i18n/v2/i18n"

Створіть Bundle, який використовуватимете протягом усього терміну служби вашої програми.

bundle := i18n.NewBundle(language.English)

Завантажуйте переклади у ваш пакет під час ініціалізації.

bundle.RegisterUnmarshalFunc("toml", toml.Unmarshal)
bundle.LoadMessageFile("es.toml")
// Якщо використовуєте go:embed
//go:embed locale.*.toml
var LocaleFS embed.FS

bundle.RegisterUnmarshalFunc("toml", toml.Unmarshal)
bundle.LoadMessageFileFS(LocaleFS, "locale.es.toml")

Створіть Localizer, який використовуватимете для набору мовних уподобань.

func(w http.ResponseWriter, r *http.Request) {
    lang := r.FormValue("lang")
    accept := r.Header.Get("Accept-Language")
    localizer := i18n.NewLocalizer(bundle, lang, accept)
}

Використовуйте Localizer для пошуку повідомлень.

localizer.Localize(&i18n.LocalizeConfig{
    DefaultMessage: &i18n.Message{
        ID: "PersonCats",
        One: "{{.Name}} has {{.Count}} cat.",
        Other: "{{.Name}} has {{.Count}} cats.",
    },
    TemplateData: map[string]interface{}{
        "Name": "Nick",
        "Count": 2,
    },
    PluralCount: 2,
}) // Nick has 2 cats.

Команда goi18n

Go Reference

Команда goi18n управляє файлами повідомлень, що використовуються пакетом i18n.

go install -v github.com/nicksnyder/go-i18n/v2/goi18n@latest
goi18n -help

Витяг повідомлень

Використовуйте команду goi18n extract, щоб витягнути всі літерали структури i18n.Message із Go-файлів у файл повідомлень для перекладу.

# active.en.toml
[PersonCats]
description = "The number of cats a person has"
one = "{{.Name}} has {{.Count}} cat."
other = "{{.Name}} has {{.Count}} cats."

Переклад нової мови

  1. Створіть порожній файл повідомлень для мови, яку ви хочете додати (наприклад, translate.uk.toml).

  2. Виконайте команду goi18n merge active.en.toml translate.es.toml, щоб заповнити translate.es.toml повідомленнями для перекладу.

    # translate.uk.toml
    [HelloPerson]
    hash = "sha1-5b49bfdad81fedaeefb224b0ffc2acc58b09cff5"
    other = "Hello {{.Name}}"
  3. Після перекладу файлу translate.es.toml перейменуйте його на active.es.toml.

    # active.uk.toml
    [HelloPerson]
    hash = "sha1-5b49bfdad81fedaeefb224b0ffc2acc58b09cff5"
    other = "Вітаю {{.Name}}"
  4. Завантажте файл active.es.toml у свій пакет.

    bundle.RegisterUnmarshalFunc("toml", toml.Unmarshal)
    bundle.LoadMessageFile("active.es.toml")

Переклад нових повідомлень

Якщо ви додали нові повідомлення до своєї програми:

  1. Виконайте goi18n extract, щоб оновити файл active.en.toml новими повідомленнями.
  2. Виконайте goi18n merge active.*.toml, щоб згенерувати оновлені файли translate.*.toml.
  3. Перекладіть усі повідомлення у файлах translate.*.toml.
  4. Виконайте goi18n merge active.*.toml translate.*.toml, щоб об’єднати перекладені повідомлення з активними файлами повідомлень.

Для отримання додаткової інформації та прикладів:

Переклади цього документа

Переклади цього документа, зроблені спільнотою, можна знайти в папці .github.

Ці переклади підтримуються спільнотою і не підтримуються автором цього проєкту.
Немає гарантії, що вони є точними або актуальними.

Ліцензія

go-i18n доступний під ліцензією MIT. Див. файл LICENSE для отримання додаткової інформації.