{"id":13366795,"url":"https://github.com/nicksnyder/Go-i18n","last_synced_at":"2025-03-12T18:31:29.645Z","repository":{"id":2228322,"uuid":"3180553","full_name":"nicksnyder/go-i18n","owner":"nicksnyder","description":"Translate your Go program into multiple languages.","archived":false,"fork":false,"pushed_at":"2024-10-14T03:16:47.000Z","size":460,"stargazers_count":2997,"open_issues_count":11,"forks_count":275,"subscribers_count":30,"default_branch":"main","last_synced_at":"2024-10-29T15:00:54.122Z","etag":null,"topics":["cldr","go","i18n","translation","translation-files"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nicksnyder.png","metadata":{"files":{"readme":".github/README.uk-UA.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2012-01-14T21:44:37.000Z","updated_at":"2024-10-29T09:45:12.000Z","dependencies_parsed_at":"2023-07-05T16:15:22.595Z","dependency_job_id":"58e74f71-2ee8-48bf-9c1e-9281027205f7","html_url":"https://github.com/nicksnyder/go-i18n","commit_stats":{"total_commits":356,"total_committers":54,"mean_commits":6.592592592592593,"dds":0.4044943820224719,"last_synced_commit":"b42d9bd0c568eebf5ce123ec94b9b13438f46855"},"previous_names":[],"tags_count":38,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nicksnyder%2Fgo-i18n","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nicksnyder%2Fgo-i18n/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nicksnyder%2Fgo-i18n/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nicksnyder%2Fgo-i18n/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nicksnyder","download_url":"https://codeload.github.com/nicksnyder/go-i18n/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243271312,"owners_count":20264435,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cldr","go","i18n","translation","translation-files"],"created_at":"2024-07-30T00:01:32.027Z","updated_at":"2025-03-12T18:31:29.638Z","avatar_url":"https://github.com/nicksnyder.png","language":"Go","funding_links":[],"categories":["自然语言处理"],"sub_categories":["高级控制台界面"],"readme":"# go-i18n\n![Build status](https://github.com/nicksnyder/go-i18n/workflows/Build/badge.svg) [![Report card](https://goreportcard.com/badge/github.com/nicksnyder/go-i18n/v2)](https://goreportcard.com/report/github.com/nicksnyder/go-i18n/v2) [![codecov](https://codecov.io/gh/nicksnyder/go-i18n/graph/badge.svg?token=A9aMfR9vxG)](https://codecov.io/gh/nicksnyder/go-i18n) [![Sourcegraph](https://sourcegraph.com/github.com/nicksnyder/go-i18n/-/badge.svg)](https://sourcegraph.com/github.com/nicksnyder/go-i18n?badge)\n\ngo-i18n — це Go [пакет](#package-i18n) та [інструмент](#command-goi18n), які допомагають перекладати Go програми на різні мови.\n\n- Підтримує [множинні форми](http://cldr.unicode.org/index/cldr-spec/plural-rules) для всіх 200+ мов у [Unicode Common Locale Data Repository (CLDR)](https://www.unicode.org/cldr/charts/28/supplemental/language_plural_rules.html).\n  - Код і тести [автоматично генеруються](https://github.com/nicksnyder/go-i18n/tree/main/internal/plural/codegen) з даних [CLDR](http://cldr.unicode.org/index/downloads).\n- Підтримує рядки з іменованими змінними, використовуючи синтаксис [text/template](http://golang.org/pkg/text/template/).\n- Підтримує файли повідомлень у будь-якому форматі (наприклад, JSON, TOML, YAML).\n\n## Пакет i18n\n\n[![Go Reference](https://pkg.go.dev/badge/github.com/nicksnyder/go-i18n/v2/i18n.svg)](https://pkg.go.dev/github.com/nicksnyder/go-i18n/v2/i18n)\n\nПакет i18n забезпечує підтримку пошуку повідомлень відповідно до набору мовних уподобань.\n\n```go\nimport \"github.com/nicksnyder/go-i18n/v2/i18n\"\n```\n\nСтворіть Bundle, який використовуватимете протягом усього терміну служби вашої програми.\n\n```go\nbundle := i18n.NewBundle(language.English)\n```\n\nЗавантажуйте переклади у ваш пакет під час ініціалізації.\n\n```go\nbundle.RegisterUnmarshalFunc(\"toml\", toml.Unmarshal)\nbundle.LoadMessageFile(\"es.toml\")\n```\n\n```go\n// Якщо використовуєте go:embed\n//go:embed locale.*.toml\nvar LocaleFS embed.FS\n\nbundle.RegisterUnmarshalFunc(\"toml\", toml.Unmarshal)\nbundle.LoadMessageFileFS(LocaleFS, \"locale.es.toml\")\n```\n\nСтворіть Localizer, який використовуватимете для набору мовних уподобань.\n\n```go\nfunc(w http.ResponseWriter, r *http.Request) {\n    lang := r.FormValue(\"lang\")\n    accept := r.Header.Get(\"Accept-Language\")\n    localizer := i18n.NewLocalizer(bundle, lang, accept)\n}\n```\n\nВикористовуйте Localizer для пошуку повідомлень.\n\n```go\nlocalizer.Localize(\u0026i18n.LocalizeConfig{\n    DefaultMessage: \u0026i18n.Message{\n        ID: \"PersonCats\",\n        One: \"{{.Name}} has {{.Count}} cat.\",\n        Other: \"{{.Name}} has {{.Count}} cats.\",\n    },\n    TemplateData: map[string]interface{}{\n        \"Name\": \"Nick\",\n        \"Count\": 2,\n    },\n    PluralCount: 2,\n}) // Nick has 2 cats.\n```\n\n## Команда goi18n\n\n[![Go Reference](https://pkg.go.dev/badge/github.com/nicksnyder/go-i18n/v2/goi18n.svg)](https://pkg.go.dev/github.com/nicksnyder/go-i18n/v2/goi18n)\n\nКоманда goi18n управляє файлами повідомлень, що використовуються пакетом i18n.\n\n```\ngo install -v github.com/nicksnyder/go-i18n/v2/goi18n@latest\ngoi18n -help\n```\n\n### Витяг повідомлень\n\nВикористовуйте команду `goi18n extract`, щоб витягнути всі літерали структури i18n.Message із Go-файлів у файл повідомлень для перекладу.\n\n```toml\n# active.en.toml\n[PersonCats]\ndescription = \"The number of cats a person has\"\none = \"{{.Name}} has {{.Count}} cat.\"\nother = \"{{.Name}} has {{.Count}} cats.\"\n```\n\n### Переклад нової мови\n\n1. Створіть порожній файл повідомлень для мови, яку ви хочете додати (наприклад, translate.uk.toml).\n2. Виконайте команду `goi18n merge active.en.toml translate.es.toml`, щоб заповнити `translate.es.toml` повідомленнями для перекладу.\n\n   ```toml\n   # translate.uk.toml\n   [HelloPerson]\n   hash = \"sha1-5b49bfdad81fedaeefb224b0ffc2acc58b09cff5\"\n   other = \"Hello {{.Name}}\"\n   ```\n\n3. Після перекладу файлу `translate.es.toml` перейменуйте його на `active.es.toml`.\n\n   ```toml\n   # active.uk.toml\n   [HelloPerson]\n   hash = \"sha1-5b49bfdad81fedaeefb224b0ffc2acc58b09cff5\"\n   other = \"Вітаю {{.Name}}\"\n   ```\n\n4. Завантажте файл `active.es.toml` у свій пакет.\n\n   ```go\n   bundle.RegisterUnmarshalFunc(\"toml\", toml.Unmarshal)\n   bundle.LoadMessageFile(\"active.es.toml\")\n   ```\n\n### Переклад нових повідомлень\n\nЯкщо ви додали нові повідомлення до своєї програми:\n\n1.\tВиконайте `goi18n extract`, щоб оновити файл `active.en.toml` новими повідомленнями.\n2.\tВиконайте `goi18n merge active.*.toml`, щоб згенерувати оновлені файли `translate.*.toml`.\n3.\tПерекладіть усі повідомлення у файлах `translate.*.toml`.\n4.\tВиконайте `goi18n merge active.*.toml translate.*.toml`, щоб об’єднати перекладені повідомлення з активними файлами повідомлень.\n\n## Для отримання додаткової інформації та прикладів:\n\n- Ознайомтеся з [документацією](https://pkg.go.dev/github.com/nicksnyder/go-i18n/v2).\n- Подивіться [приклади коду](https://github.com/nicksnyder/go-i18n/blob/main/i18n/example_test.go) та [тести](https://github.com/nicksnyder/go-i18n/blob/main/i18n/localizer_test.go).\n- Перегляньте приклад [додатку](https://github.com/nicksnyder/go-i18n/tree/main/example).\n\n## Переклади цього документа\n\nПереклади цього документа, зроблені спільнотою, можна знайти в папці [.github](.github).\n\nЦі переклади підтримуються спільнотою і не підтримуються автором цього проєкту.  \nНемає гарантії, що вони є точними або актуальними.\n\n## Ліцензія\n\ngo-i18n доступний під ліцензією MIT. Див. файл [LICENSE](LICENSE) для отримання додаткової інформації.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnicksnyder%2FGo-i18n","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnicksnyder%2FGo-i18n","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnicksnyder%2FGo-i18n/lists"}