История коммитов

.
fix(i18n): repair broken placeholders in translations
Fix placeholders that were corrupted by translators across ar, az, id, lt, pl, ro, uk and uz locales.

- Flood validator: restore %value% (replaced by Laminas via str_replace, not sprintf) where it had been rewritten as %d, so the wait time is substituted instead of printed literally (ar, ro, uk, uz).
- Remove stray %s/%d placeholders absent from the msgid: Comments.php concatenates the flood delay after the string, so these were rendered literally (az, ro, ar).
- Restore literal macro tokens #user_name#, #name#, #description# that had been translated, which broke code-side substitution (az, id).
- Fix spaced (% s) and dropped placeholders, restoring the file size limit and wait time in messages (lt, pl, uz).
- Retranslate "You have a ban" in az and ar, where the existing text belonged to a different string; marked fuzzy for review.
.
i18n: update translations
.
docs: bump docs submodule with manual Crowdin sync clarification
.
docs(agents): document manual Crowdin workflow for translations
- Remove the claim about automatic two-way Crowdin sync; syncing is CLI-only

- Add Crowdin makefile commands and the sources-before-translations rule

- Require registering a new module domain in both translate.xml.dist and crowdin.yml

- Warn against reformatting .po files when editing msgstr
.
chore(crowdin): add makefile targets for uploading translations
- crowdin-upload now uploads sources explicitly

- Add crowdin-upload-translations and crowdin-upload-all targets
.
i18n(uk): translate remaining Ukrainian strings; add consent and collections locales
- Translate 228 untranslated msgids across module and system uk.po files

- Add missing uk.po for the consent module

- Register collections domain in translate.xml.dist and crowdin.yml; add collections.pot and uk/ru locales

- Regenerate all .lng.php dictionaries
.
chore(i18n): sync homepage translations from Crowdin
.
chore(crowdin): remove legacy git-integration config
.
chore(crowdin): add CLI config and makefile sync targets
Replace git-integration config with a plain Crowdin CLI configuration and add make crowdin-download / crowdin-upload targets that sync the 9.x branch.
.
New Crowdin updates (#259)
* New translations guestbook.pot (German)

[ci skip]

* New translations guestbook.pot (Italian)

[ci skip]

* New translations guestbook.pot (Georgian)

[ci skip]

* New translations guestbook.pot (Lithuanian)

[ci skip]

* New translations guestbook.pot (Polish)

[ci skip]

* New translations guestbook.pot (Russian)

[ci skip]

* New translations guestbook.pot (Turkish)

[ci skip]

* New translations guestbook.pot (Ukrainian)

[ci skip]

* New translations guestbook.pot (Chinese Traditional)

[ci skip]

* New translations guestbook.pot (Vietnamese)

[ci skip]

* New translations guestbook.pot (Portuguese, Brazilian)

[ci skip]

* New translations guestbook.pot (Indonesian)

[ci skip]

* New translations guestbook.pot (Persian)

[ci skip]

* New translations guestbook.pot (Bengali)

[ci skip]

* New translations guestbook.pot (Kazakh)

[ci skip]

* New translations guestbook.pot (Estonian)

[ci skip]

* New translations guestbook.pot (Azerbaijani)

[ci skip]

* New translations guestbook.pot (Kyrgyz)

[ci skip]

* New translations guestbook.pot (Uzbek)

[ci skip]

* New translations guestbook.pot (Turkmen)

[ci skip]

* New translations help.pot (Romanian)

[ci skip]

* New translations help.pot (French)

[ci skip]

* New translations help.pot (Arabic)

[ci skip]

* New translations help.pot (German)

[ci skip]

* New translations help.pot (Italian)

[ci skip]

* New translations help.pot (Georgian)

[ci skip]

* New translations help.pot (Lithuanian)

[ci skip]

* New translations help.pot (Polish)

[ci skip]

* New translations help.pot (Russian)

[ci skip]

* New translations help.pot (Turkish)

[ci skip]

* New translations help.pot (Ukrainian)

[ci skip]

* New translations help.pot (Chinese Traditional)

[ci skip]

* New translations help.pot (Vietnamese)

[ci skip]

* New translations help.pot (Portuguese, Brazilian)

[ci skip]

* New translations help.pot (Indonesian)

[ci skip]

* New translations help.pot (Persian)

[ci skip]

* New translations help.pot (Bengali)

[ci skip]

* New translations help.pot (Kazakh)

[ci skip]

* New translations help.pot (Estonian)

[ci skip]

* New translations help.pot (Azerbaijani)

[ci skip]

* New translations help.pot (Kyrgyz)

[ci skip]

* New translations help.pot (Uzbek)

[ci skip]

* New translations help.pot (Turkmen)

[ci skip]

* New translations library.pot (Romanian)

[ci skip]

* New translations library.pot (French)

[ci skip]

* New translations library.pot (Arabic)

[ci skip]

* New translations library.pot (German)

[ci skip]

* New translations library.pot (Italian)

[ci skip]

* New translations library.pot (Georgian)

[ci skip]

* New translations library.pot (Lithuanian)

[ci skip]

* New translations library.pot (Polish)

[ci skip]

* New translations library.pot (Russian)

[ci skip]

* New translations library.pot (Turkish)

[ci skip]

* New translations library.pot (Ukrainian)

[ci skip]

* New translations library.pot (Chinese Traditional)

[ci skip]

* New translations library.pot (Vietnamese)

[ci skip]

* New translations library.pot (Portuguese, Brazilian)

[ci skip]

* New translations library.pot (Indonesian)

[ci skip]

* New translations library.pot (Persian)

[ci skip]

* New translations library.pot (Bengali)

[ci skip]

* New translations library.pot (Kazakh)

[ci skip]

* New translations library.pot (Estonian)

[ci skip]

* New translations library.pot (Azerbaijani)

[ci skip]

* New translations library.pot (Kyrgyz)

[ci skip]

* New translations library.pot (Uzbek)

[ci skip]

* New translations library.pot (Turkmen)

[ci skip]

* New translations mail.pot (Romanian)

[ci skip]

* New translations mail.pot (French)

[ci skip]

* New translations mail.pot (Arabic)

[ci skip]

* New translations mail.pot (German)

[ci skip]

* New translations mail.pot (Italian)

[ci skip]

* New translations mail.pot (Georgian)

[ci skip]

* New translations mail.pot (Lithuanian)

[ci skip]

* New translations mail.pot (Polish)

[ci skip]

* New translations mail.pot (Russian)

[ci skip]

* New translations mail.pot (Turkish)

[ci skip]

* New translations mail.pot (Ukrainian)

[ci skip]

* New translations mail.pot (Chinese Traditional)

[ci skip]

* New translations mail.pot (Vietnamese)

[ci skip]

* New translations mail.pot (Portuguese, Brazilian)

[ci skip]

* New translations mail.pot (Indonesian)

[ci skip]

* New translations mail.pot (Persian)

[ci skip]

* New translations mail.pot (Bengali)

[ci skip]

* New translations mail.pot (Kazakh)

[ci skip]

* New translations mail.pot (Estonian)

[ci skip]

* New translations mail.pot (Azerbaijani)

[ci skip]

* New translations mail.pot (Kyrgyz)

[ci skip]

* New translations mail.pot (Uzbek)

[ci skip]

* New translations mail.pot (Turkmen)

[ci skip]

* New translations news.pot (Romanian)

[ci skip]

* New translations news.pot (French)

[ci skip]

* New translations news.pot (Arabic)

[ci skip]

* New translations news.pot (German)

[ci skip]

* New translations news.pot (Italian)

[ci skip]

* New translations news.pot (Georgian)

[ci skip]

* New translations news.pot (Lithuanian)

[ci skip]

* New translations news.pot (Polish)

[ci skip]

* New translations news.pot (Russian)

[ci skip]

* New translations news.pot (Turkish)

[ci skip]

* New translations news.pot (Ukrainian)

[ci skip]

* New translations news.pot (Chinese Traditional)

[ci skip]

* New translations news.pot (Vietnamese)

[ci skip]

* New translations news.pot (Portuguese, Brazilian)

[ci skip]

* New translations news.pot (Indonesian)

[ci skip]

* New translations news.pot (Persian)

[ci skip]

* New translations news.pot (Bengali)

[ci skip]

* New translations news.pot (Kazakh)

[ci skip]

* New translations news.pot (Estonian)

[ci skip]

* New translations news.pot (Azerbaijani)

[ci skip]

* New translations news.pot (Kyrgyz)

[ci skip]

* New translations news.pot (Uzbek)

[ci skip]

* New translations news.pot (Turkmen)

[ci skip]

* New translations online.pot (Romanian)

[ci skip]

* New translations online.pot (French)

[ci skip]

* New translations online.pot (Arabic)

[ci skip]

* New translations online.pot (German)

[ci skip]

* New translations online.pot (Italian)

[ci skip]

* New translations online.pot (Georgian)

[ci skip]

* New translations online.pot (Lithuanian)

[ci skip]

* New translations online.pot (Polish)

[ci skip]

* New translations online.pot (Russian)

[ci skip]

* New translations online.pot (Turkish)

[ci skip]

* New translations online.pot (Ukrainian)

[ci skip]

* New translations online.pot (Chinese Traditional)

[ci skip]

* New translations online.pot (Vietnamese)

[ci skip]

* New translations online.pot (Portuguese, Brazilian)

[ci skip]

* New translations online.pot (Indonesian)

[ci skip]

* New translations online.pot (Persian)

[ci skip]

* New translations online.pot (Bengali)

[ci skip]

* New translations online.pot (Kazakh)

[ci skip]

* New translations online.pot (Estonian)

[ci skip]

* New translations online.pot (Azerbaijani)

[ci skip]

* New translations online.pot (Kyrgyz)

[ci skip]

* New translations online.pot (Uzbek)

[ci skip]

* New translations online.pot (Turkmen)

[ci skip]

* New translations profile.pot (Romanian)

[ci skip]

* New translations profile.pot (French)

[ci skip]

* New translations profile.pot (Arabic)

[ci skip]

* New translations profile.pot (German)

[ci skip]

* New translations profile.pot (Italian)

[ci skip]

* New translations profile.pot (Georgian)

[ci skip]

* New translations profile.pot (Lithuanian)

[ci skip]

* New translations profile.pot (Polish)

[ci skip]

* New translations profile.pot (Russian)

[ci skip]

* New translations profile.pot (Turkish)

[ci skip]

* New translations profile.pot (Ukrainian)

[ci skip]

* New translations profile.pot (Chinese Traditional)

[ci skip]

* New translations profile.pot (Vietnamese)

[ci skip]

* New translations profile.pot (Portuguese, Brazilian)

[ci skip]

* New translations profile.pot (Indonesian)

[ci skip]

* New translations profile.pot (Persian)

[ci skip]

* New translations profile.pot (Bengali)

[ci skip]

* New translations profile.pot (Kazakh)

[ci skip]

* New translations profile.pot (Estonian)

[ci skip]

* New translations profile.pot (Azerbaijani)

[ci skip]

* New translations profile.pot (Kyrgyz)

[ci skip]

* New translations profile.pot (Uzbek)

[ci skip]

* New translations profile.pot (Turkmen)

[ci skip]

* New translations registration.pot (Romanian)

[ci skip]

* New translations registration.pot (French)

[ci skip]

* New translations registration.pot (Arabic)

[ci skip]

* New translations registration.pot (German)

[ci skip]

* New translations registration.pot (Italian)

[ci skip]

* New translations registration.pot (Georgian)

[ci skip]

* New translations registration.pot (Lithuanian)

[ci skip]

* New translations registration.pot (Polish)

[ci skip]

* New translations registration.pot (Russian)

[ci skip]

* New translations registration.pot (Turkish)

[ci skip]

* New translations registration.pot (Ukrainian)

[ci skip]

* New translations registration.pot (Chinese Traditional)

[ci skip]

* New translations registration.pot (Vietnamese)

[ci skip]

* New translations registration.pot (Portuguese, Brazilian)

[ci skip]

* New translations registration.pot (Indonesian)

[ci skip]

* New translations registration.pot (Persian)

[ci skip]

* New translations registration.pot (Bengali)

[ci skip]

* New translations registration.pot (Kazakh)

[ci skip]

* New translations registration.pot (Estonian)

[ci skip]

* New translations registration.pot (Azerbaijani)

[ci skip]

* New translations registration.pot (Kyrgyz)

[ci skip]

* New translations registration.pot (Uzbek)

[ci skip]

* New translations registration.pot (Turkmen)

[ci skip]

* New translations notifications.pot (Romanian)

[ci skip]

* New translations notifications.pot (French)

[ci skip]

* New translations notifications.pot (Arabic)

[ci skip]

* New translations notifications.pot (German)

[ci skip]

* New translations notifications.pot (Italian)

[ci skip]

* New translations notifications.pot (Georgian)

[ci skip]

* New translations notifications.pot (Lithuanian)

[ci skip]

* New translations notifications.pot (Polish)

[ci skip]

* New translations notifications.pot (Russian)

[ci skip]

* New translations notifications.pot (Turkish)

[ci skip]

* New translations notifications.pot (Ukrainian)

[ci skip]

* New translations notifications.pot (Chinese Traditional)

[ci skip]

* New translations notifications.pot (Vietnamese)

[ci skip]

* New translations notifications.pot (Portuguese, Brazilian)

[ci skip]

* New translations notifications.pot (Indonesian)

[ci skip]

* New translations notifications.pot (Persian)

[ci skip]

* New translations notifications.pot (Bengali)

[ci skip]

* New translations notifications.pot (Kazakh)

[ci skip]

* New translations notifications.pot (Estonian)

[ci skip]

* New translations notifications.pot (Azerbaijani)

[ci skip]

* New translations notifications.pot (Kyrgyz)

[ci skip]

* New translations notifications.pot (Uzbek)

[ci skip]

* New translations notifications.pot (Turkmen)

[ci skip]

* New translations system.pot (Romanian)

[ci skip]

* New translations system.pot (French)

[ci skip]

* New translations system.pot (Arabic)

[ci skip]

* New translations system.pot (German)

[ci skip]

* New translations system.pot (Italian)

[ci skip]

* New translations system.pot (Georgian)

[ci skip]

* New translations system.pot (Lithuanian)

[ci skip]

* New translations system.pot (Polish)

[ci skip]

* New translations system.pot (Russian)

[ci skip]

* New translations system.pot (Turkish)

[ci skip]

* New translations system.pot (Ukrainian)

[ci skip]

* New translations system.pot (Chinese Traditional)

[ci skip]

* New translations system.pot (Vietnamese)

[ci skip]

* New translations system.pot (Portuguese, Brazilian)

[ci skip]

* New translations system.pot (Indonesian)

[ci skip]

* New translations system.pot (Persian)

[ci skip]

* New translations system.pot (Bengali)

[ci skip]

* New translations system.pot (Kazakh)

[ci skip]

* New translations system.pot (Estonian)

[ci skip]

* New translations system.pot (Azerbaijani)

[ci skip]

* New translations system.pot (Kyrgyz)

[ci skip]

* New translations system.pot (Uzbek)

[ci skip]

* New translations system.pot (Turkmen)

[ci skip]

* New translations install.pot (Romanian)

[ci skip]

* New translations install.pot (French)

[ci skip]

* New translations install.pot (Arabic)

[ci skip]

* New translations install.pot (German)

[ci skip]

* New translations install.pot (Italian)

[ci skip]

* New translations install.pot (Georgian)

[ci skip]

* New translations install.pot (Lithuanian)

[ci skip]

* New translations install.pot (Polish)

[ci skip]

* New translations install.pot (Russian)

[ci skip]

* New translations install.pot (Turkish)

[ci skip]

* New translations install.pot (Ukrainian)

[ci skip]

* New translations install.pot (Chinese Traditional)

[ci skip]

* New translations install.pot (Vietnamese)

[ci skip]

* New translations install.pot (Portuguese, Brazilian)

[ci skip]

* New translations install.pot (Indonesian)

[ci skip]

* New translations install.pot (Persian)

[ci skip]

* New translations install.pot (Bengali)

[ci skip]

* New translations install.pot (Kazakh)

[ci skip]

* New translations install.pot (Estonian)

[ci skip]

* New translations install.pot (Azerbaijani)

[ci skip]

* New translations install.pot (Kyrgyz)

[ci skip]

* New translations install.pot (Uzbek)

[ci skip]

* New translations install.pot (Turkmen)

[ci skip]