Skip to content

Commit 0968e90

Browse files
committed
Add localization
* Use a custom module that wraps gettext and allows setting the locale. * Add a directory with .po files, and include the corresponding .mo files to avoid requiring everybody to compile them. * Add Russian and Bulgarian localization.
1 parent 5dd6288 commit 0968e90

File tree

22 files changed

+555
-14
lines changed

22 files changed

+555
-14
lines changed

CHANGES.rst

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@ Version 8.2.0
55

66
Unreleased
77

8+
- Allow customizing locales via ``click.set_click_locale`` and ``click.reset_click_locale``
9+
and querying the active locale via ``click.get_click_locale``.
10+
Click now uses its own gettext domain. :issue:`2706`
811
- Drop support for Python 3.7. :pr:`2588`
912
- Use modern packaging metadata with ``pyproject.toml`` instead of ``setup.cfg``.
1013
:pr:`2438`

CONTRIBUTING.rst

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,12 +120,23 @@ First time setup
120120
121121
$ pre-commit install
122122
123+
- If you want to work on translations:
124+
125+
- Install gettext. Windows requires a unix-like environment - see `MinGW gettext`_.
126+
127+
- Compile the translations.
128+
129+
.. code-block:: text
130+
131+
$ bash ./locales/compile.sh
132+
123133
.. _latest version of git: https://git-scm.com/downloads
124134
.. _username: https://docs.github.com/en/github/using-git/setting-your-username-in-git
125135
.. _email: https://docs.github.com/en/github/setting-up-and-managing-your-github-user-account/setting-your-commit-email-address
126136
.. _GitHub account: https://github.com/join
127137
.. _Fork: https://github.com/pallets/click/fork
128138
.. _Clone: https://docs.github.com/en/github/getting-started-with-github/fork-a-repo#step-2-create-a-local-clone-of-your-fork
139+
.. _MinGW gettext: https://gnuwin32.sourceforge.net/packages/gettext.htm
129140

130141

131142
Start coding

locales/bg_BG/LC_MESSAGES/click.po

Lines changed: 180 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,180 @@
1+
msgid ""
2+
msgstr ""
3+
"Content-Type: text/plain; charset=utf-8\n"
4+
"Content-Transfer-Encoding: 8bit\n"
5+
"Language: bg_BG"
6+
"Plural-Forms: nplurals=2; plural=n == 1 ? 0 : 1;"
7+
8+
msgid "{editor}: Editing failed"
9+
msgstr "{editor}: Редактирането се провалили"
10+
11+
msgid "{editor}: Editing failed: {e}"
12+
msgstr "{editor}: Редактирането се провалили: {e}"
13+
14+
msgid "Aborted!"
15+
msgstr "Авария!"
16+
17+
msgid "Show this message and exit."
18+
msgstr "Покажи това съобщение и излез."
19+
20+
msgid "Usage:"
21+
msgstr "Използване:"
22+
23+
msgid "(Deprecated) {text}"
24+
msgstr "(Депрекиран) {text}"
25+
26+
msgid "Options"
27+
msgstr "Опции"
28+
29+
msgid "Got unexpected extra argument ({args})"
30+
msgid_plural "Got unexpected extra arguments ({args})"
31+
msgstr[0] "Получен е неочакван допълнителен аргумент ({args})"
32+
msgstr[1] "Получени са неочаквани допълнителни аргументи ({args})"
33+
34+
msgid "DeprecationWarning: The command {name!r} is deprecated."
35+
msgstr "DeprecationWarning: Командата {name!r} е депрекирана."
36+
37+
msgid "Commands"
38+
msgstr "Команди"
39+
40+
msgid "Missing command."
41+
msgstr "Липсва команда."
42+
43+
msgid "No such command {name!r}."
44+
msgstr "Няма команда {name!r}."
45+
46+
msgid "Argument {name!r} takes {nargs} values but 1 was given."
47+
msgid_plural "Argument {name!r} takes {nargs} values but {len} were given."
48+
msgstr[0] "Аргументът {name!r} приема {nargs} стойности, но е дадена 1."
49+
msgstr[1] "Аргументът {name!r} приема {nargs} стойности, но са дадени {len}."
50+
51+
msgid "env var: {var}"
52+
msgstr "променлива на средата: {var}"
53+
54+
msgid "default: {default}"
55+
msgstr "по подразбиране: {default}"
56+
57+
msgid "required"
58+
msgstr "задължително"
59+
60+
msgid "%(prog)s, version %(version)s"
61+
msgstr "%(prog)s, версия %(version)s"
62+
63+
msgid "Show the version and exit."
64+
msgstr "Покажи версията и излез."
65+
66+
msgid "Error: {message}"
67+
msgstr "Грешка: {message}"
68+
69+
msgid "Try '{command} {option}' for help."
70+
msgstr "Опитайте '{command} {option}' за помощ."
71+
72+
msgid "Invalid value: {message}"
73+
msgstr "Невалидна стойност."
74+
75+
msgid "Invalid value for {param_hint}: {message}"
76+
msgstr "Невалидна стойност за {param_hint}: {message}"
77+
78+
msgid "Missing argument."
79+
msgstr "Липсващ аргумент."
80+
81+
msgid "Missing option."
82+
msgstr "Липсваща опция."
83+
84+
msgid "Missing parameter."
85+
msgstr "Липсващ параметър."
86+
87+
msgid "Missing {param_type}."
88+
msgstr "Липсва {param_type}."
89+
90+
msgid "Missing parameter: {param_name}"
91+
msgstr "Липсващ параметър: {param_name}"
92+
93+
msgid "No such option: {name}"
94+
msgstr "Няма такава опция: {name}."
95+
96+
msgid "Did you mean {possibility}?"
97+
msgid_plural "(Possible options: {possibilities})"
98+
msgstr[0] "Имали сте предвид {possibility}?"
99+
msgstr[1] "(Възможни варианти {possibilities})"
100+
101+
msgid "unknown error"
102+
msgstr "неизвестна грешка"
103+
104+
msgid "Could not open file {filename!r}: {message}"
105+
msgstr "Не можах да отворя файла {filename!r}: {message}"
106+
107+
msgid "Argument {name!r} takes {nargs} values."
108+
msgstr "Аргументът {name!r} приема {nargs} стойности."
109+
110+
msgid "Option {name!r} does not take a value."
111+
msgstr "Опцията {name!r} не приема стойности."
112+
113+
msgid "Option {name!r} requires an argument."
114+
msgid_plural "Option {name!r} requires {nargs} arguments."
115+
msgstr[0] "Опцията {name!r} изисква аргумент."
116+
msgstr[1] "Опцията {name!r} изисква {nargs} аргумента."
117+
118+
msgid "Repeat for confirmation"
119+
msgstr "Повторете за потвърждение"
120+
121+
msgid "Error: The value you entered was invalid."
122+
msgstr "Грешка: Въведената стойност е невалидна."
123+
124+
msgid "Error: The two entered values do not match."
125+
msgstr "Грешка: Двете въведени стойности не съвпадат."
126+
127+
msgid "Error: invalid input."
128+
msgstr "Грешка: невалидна въведена стойност."
129+
130+
msgid "Press any key to continue..."
131+
msgstr "Натиснете произволен клавиш, за да продължите..."
132+
133+
msgid "Choose from:\n\t{choices}"
134+
msgstr "Изберете сред:\n\t{choices}"
135+
136+
msgid "{value!r} is not {choice}."
137+
msgid_plural "{value!r} is not one of {choices}."
138+
msgstr[0] "{value!r} не съвпада с {choice}."
139+
msgstr[1] "{value!r} не е сред {choices}."
140+
141+
msgid "{value!r} does not match the format {format}."
142+
msgid_plural "{value!r} is not one of {choices}."
143+
msgstr[0] "{value!r} няма формат {format}."
144+
msgstr[1] "{value!r} не е сред форматите {formats}."
145+
146+
msgid "{value!r} is not a valid {number_type}."
147+
msgstr "{value!r} не е валидно {number_type}."
148+
149+
msgid "{value!r} is not a valid {range}."
150+
msgstr "{value!r} не в диапазона {range}."
151+
152+
msgid "{value!r} is not a valid boolean."
153+
msgstr "{value!r} не е валидна булева стойност."
154+
155+
msgid "{value!r} is not a valid UUID."
156+
msgstr "{value!r} не е валидно UUID."
157+
158+
msgid "file"
159+
msgstr "файл"
160+
161+
msgid "directory"
162+
msgstr "директория"
163+
164+
msgid "path"
165+
msgstr "път"
166+
167+
msgid "{name} {filename!r} does not exist."
168+
msgstr "{name} {filename!r} не съществува."
169+
170+
msgid "{name} {filename!r} is a file."
171+
msgstr "{name} {filename!r} е файл."
172+
173+
msgid "{name} {filename!r} is a directory."
174+
msgstr "{name} {filename!r} е директория."
175+
176+
msgid "{name} {filename!r} is not writable."
177+
msgstr "не е позволено записването в {name} {filename!r}."
178+
179+
msgid "{name} {filename!r} is not readable."
180+
msgstr "не е позволено четенето от {name} {filename!r}."

locales/compile.sh

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
#!/usr/bin/env bash
2+
3+
for file in locales/*/LC_MESSAGES/click.po; do
4+
locale=$(basename $(dirname $(dirname $file)))
5+
output_dir=src/click/$(dirname $file)
6+
mkdir --parents $output_dir
7+
echo "Building .mo file for ${locale}"
8+
msgfmt --statistics --check-format $file -o $output_dir/click.mo
9+
done

locales/en_US/LC_MESSAGES/click.po

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
msgid ""
2+
msgstr ""
3+
"Content-Type: text/plain; charset=utf-8\n"
4+
"Content-Transfer-Encoding: 8bit\n"
5+
"Language: en_US"
6+
"Plural-Forms: nplurals=2; plural=n == 1 ? 0 : 1;"

0 commit comments

Comments
 (0)