Skip to content

Commit 91c0041

Browse files
dejurinnicksnyder
andauthored
Create README.uk-UA.md (nicksnyder#336)
Co-authored-by: Nick Snyder <nickdsnyder@gmail.com>
1 parent af5be8c commit 91c0041

File tree

1 file changed

+145
-0
lines changed

1 file changed

+145
-0
lines changed

‎.github/README.uk-UA.md‎

Lines changed: 145 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,145 @@
1+
# go-i18n
2+
![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)
3+
4+
go-i18n — це Go [пакет](#package-i18n) та [інструмент](#command-goi18n), які допомагають перекладати Go програми на різні мови.
5+
6+
- Підтримує [множинні форми](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).
7+
- Код і тести [автоматично генеруються](https://github.com/nicksnyder/go-i18n/tree/main/internal/plural/codegen) з даних [CLDR](http://cldr.unicode.org/index/downloads).
8+
- Підтримує рядки з іменованими змінними, використовуючи синтаксис [text/template](http://golang.org/pkg/text/template/).
9+
- Підтримує файли повідомлень у будь-якому форматі (наприклад, JSON, TOML, YAML).
10+
11+
## Пакет i18n
12+
13+
[![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)
14+
15+
Пакет i18n забезпечує підтримку пошуку повідомлень відповідно до набору мовних уподобань.
16+
17+
```go
18+
import "github.com/nicksnyder/go-i18n/v2/i18n"
19+
```
20+
21+
Створіть Bundle, який використовуватимете протягом усього терміну служби вашої програми.
22+
23+
```go
24+
bundle := i18n.NewBundle(language.English)
25+
```
26+
27+
Завантажуйте переклади у ваш пакет під час ініціалізації.
28+
29+
```go
30+
bundle.RegisterUnmarshalFunc("toml", toml.Unmarshal)
31+
bundle.LoadMessageFile("es.toml")
32+
```
33+
34+
```go
35+
// Якщо використовуєте go:embed
36+
//go:embed locale.*.toml
37+
var LocaleFS embed.FS
38+
39+
bundle.RegisterUnmarshalFunc("toml", toml.Unmarshal)
40+
bundle.LoadMessageFileFS(LocaleFS, "locale.es.toml")
41+
```
42+
43+
Створіть Localizer, який використовуватимете для набору мовних уподобань.
44+
45+
```go
46+
func(w http.ResponseWriter, r *http.Request) {
47+
lang := r.FormValue("lang")
48+
accept := r.Header.Get("Accept-Language")
49+
localizer := i18n.NewLocalizer(bundle, lang, accept)
50+
}
51+
```
52+
53+
Використовуйте Localizer для пошуку повідомлень.
54+
55+
```go
56+
localizer.Localize(&i18n.LocalizeConfig{
57+
DefaultMessage: &i18n.Message{
58+
ID: "PersonCats",
59+
One: "{{.Name}} has {{.Count}} cat.",
60+
Other: "{{.Name}} has {{.Count}} cats.",
61+
},
62+
TemplateData: map[string]interface{}{
63+
"Name": "Nick",
64+
"Count": 2,
65+
},
66+
PluralCount: 2,
67+
}) // Nick has 2 cats.
68+
```
69+
70+
## Команда goi18n
71+
72+
[![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)
73+
74+
Команда goi18n управляє файлами повідомлень, що використовуються пакетом i18n.
75+
76+
```
77+
go install -v github.com/nicksnyder/go-i18n/v2/goi18n@latest
78+
goi18n -help
79+
```
80+
81+
### Витяг повідомлень
82+
83+
Використовуйте команду `goi18n extract`, щоб витягнути всі літерали структури i18n.Message із Go-файлів у файл повідомлень для перекладу.
84+
85+
```toml
86+
# active.en.toml
87+
[PersonCats]
88+
description = "The number of cats a person has"
89+
one = "{{.Name}} has {{.Count}} cat."
90+
other = "{{.Name}} has {{.Count}} cats."
91+
```
92+
93+
### Переклад нової мови
94+
95+
1. Створіть порожній файл повідомлень для мови, яку ви хочете додати (наприклад, translate.uk.toml).
96+
2. Виконайте команду `goi18n merge active.en.toml translate.es.toml`, щоб заповнити `translate.es.toml` повідомленнями для перекладу.
97+
98+
```toml
99+
# translate.uk.toml
100+
[HelloPerson]
101+
hash = "sha1-5b49bfdad81fedaeefb224b0ffc2acc58b09cff5"
102+
other = "Hello {{.Name}}"
103+
```
104+
105+
3. ��ісля перекладу файлу `translate.es.toml` перейменуйте його на `active.es.toml`.
106+
107+
```toml
108+
# active.uk.toml
109+
[HelloPerson]
110+
hash = "sha1-5b49bfdad81fedaeefb224b0ffc2acc58b09cff5"
111+
other = "Вітаю {{.Name}}"
112+
```
113+
114+
4. Завантажте файл `active.es.toml` у свій пакет.
115+
116+
```go
117+
bundle.RegisterUnmarshalFunc("toml", toml.Unmarshal)
118+
bundle.LoadMessageFile("active.es.toml")
119+
```
120+
121+
### Переклад нових повідомлень
122+
123+
Якщо ви додали нові повідомлення до своєї програми:
124+
125+
1. Виконайте `goi18n extract`, щоб оновити файл `active.en.toml` новими повідомленнями.
126+
2. Виконайте `goi18n merge active.*.toml`, щоб згенерувати оновлені файли `translate.*.toml`.
127+
3. Перекладіть усі повідомлення у файлах `translate.*.toml`.
128+
4. Виконайте `goi18n merge active.*.toml translate.*.toml`, щоб об’єднати перекладені повідомлення з активними файлами повідомлень.
129+
130+
## Для отримання додаткової інформації та прикладів:
131+
132+
- Ознайомтеся з [документацією](https://pkg.go.dev/github.com/nicksnyder/go-i18n/v2).
133+
- Подивіться [приклади коду](https://github.com/nicksnyder/go-i18n/blob/main/i18n/example_test.go) та [тести](https://github.com/nicksnyder/go-i18n/blob/main/i18n/localizer_test.go).
134+
- Перегляньте приклад [додатку](https://github.com/nicksnyder/go-i18n/tree/main/example).
135+
136+
## Переклади цього документа
137+
138+
Переклади цього документа, зроблені спільнотою, можна знайти в папці [.github](.github).
139+
140+
Ці переклади підтримуються спільнотою і не підтримуються автором цього проєкту.
141+
Немає гарантії, що вони є точними або актуальними.
142+
143+
## Ліцензія
144+
145+
go-i18n доступний під ліцензією MIT. Див. файл [LICENSE](LICENSE) для отримання додаткової інформації.

0 commit comments

Comments
 (0)