Add translations for czech language#112
Conversation
new file: czech-language/README.md new file: czech-language/lang/cs/activity.php new file: czech-language/lang/cs/admin/apikey.php new file: czech-language/lang/cs/admin/dashboard.php new file: czech-language/lang/cs/admin/databasehost.php new file: czech-language/lang/cs/admin/egg.php new file: czech-language/lang/cs/admin/health.php new file: czech-language/lang/cs/admin/log.php new file: czech-language/lang/cs/admin/mount.php new file: czech-language/lang/cs/admin/node.php new file: czech-language/lang/cs/admin/plugin.php new file: czech-language/lang/cs/admin/role.php new file: czech-language/lang/cs/admin/server.php new file: czech-language/lang/cs/admin/setting.php new file: czech-language/lang/cs/admin/user.php new file: czech-language/lang/cs/admin/webhook.php new file: czech-language/lang/cs/auth.php new file: czech-language/lang/cs/command/messages.php new file: czech-language/lang/cs/commands.php new file: czech-language/lang/cs/exceptions.php new file: czech-language/lang/cs/installer.php new file: czech-language/lang/cs/mail.php new file: czech-language/lang/cs/notifications.php new file: czech-language/lang/cs/profile.php new file: czech-language/lang/cs/search.php new file: czech-language/lang/cs/server/activity.php new file: czech-language/lang/cs/server/backup.php new file: czech-language/lang/cs/server/console.php new file: czech-language/lang/cs/server/dashboard.php new file: czech-language/lang/cs/server/database.php new file: czech-language/lang/cs/server/file.php new file: czech-language/lang/cs/server/network.php new file: czech-language/lang/cs/server/schedule.php new file: czech-language/lang/cs/server/setting.php new file: czech-language/lang/cs/server/startup.php new file: czech-language/lang/cs/server/user.php new file: czech-language/lang/cs/validation.php new file: czech-language/plugin.json new file: czech-language/src/CzechLanguagePlugin.php
📝 WalkthroughWalkthroughThis PR introduces a complete Czech language localization plugin for the Pelican panel. It adds plugin metadata, a plugin class, a README, and comprehensive translation files organized across admin, server, and core modules covering 30+ domains. Changes
Estimated code review effort🎯 2 (Simple) | ⏱️ ~12 minutes Suggested reviewers
Poem
🚥 Pre-merge checks | ✅ 2 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (2 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
CI is failing due to the However, the original English language files also use double quotes in several places, and the translation works correctly with double quotes as well. Should the plugin translations strictly follow the repository coding standard (single quotes only), or is it acceptable to keep the same quoting style as in the source language files? I just want to make sure I follow the preferred approach before making broader changes. |
|
Translations for the panel itself are managed via Crowdin. Czech does already exist. |
There was a problem hiding this comment.
Actionable comments posted: 15
Note
Due to the large number of review comments, Critical, Major severity comments were prioritized as inline comments.
🟡 Minor comments (29)
czech-language/lang/cs/admin/mount.php-26-26 (1)
26-26:⚠️ Potential issue | 🟡 MinorTrailing period on
all_eggsis inconsistent withall_nodes.🐛 Proposed fix
- 'all_eggs' => 'Všechna vejce.', + 'all_eggs' => 'Všechna vejce',🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@czech-language/lang/cs/admin/mount.php` at line 26, The translation string for the key 'all_eggs' currently ends with a trailing period and should match the punctuation style of 'all_nodes'; update the value for the 'all_eggs' entry in mount.php to remove the final period so it reads 'Všechna vejce' (consistent with 'all_nodes').czech-language/lang/cs/admin/mount.php-5-6 (1)
5-6:⚠️ Potential issue | 🟡 Minor
model_label_pluralis identical tomodel_labeland uses an infinitive verb.Both are set to
'Připojit'(infinitive: "to connect/mount"). A plural resource label in Czech should be a noun form, e.g.,'Připojení'(mounts/connections).🐛 Proposed fix
- 'model_label' => 'Připojit', - 'model_label_plural' => 'Připojit', + 'model_label' => 'Připojení', + 'model_label_plural' => 'Připojení',🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@czech-language/lang/cs/admin/mount.php` around lines 5 - 6, The resource labels currently use an infinitive verb for both keys: change the plural resource label by replacing the value of model_label_plural (currently 'Připojit') with the correct Czech noun form for the plural resource, e.g. 'Připojení', while leaving model_label (singular) unchanged; update the value associated with model_label_plural in the cs/admin/mount.php locale array.czech-language/lang/cs/admin/user.php-22-23 (1)
22-23:⚠️ Potential issue | 🟡 MinorInconsistent "email" orthography within the same file.
The file uses three different forms:
e-mailu(Line 23). Czech orthography standardises on🐛 Proposed fix
- 'password_reset_sent' => 'Email pro obnovení hesla byl odeslán', + 'password_reset_sent' => 'E-mail pro obnovení hesla byl odeslán',🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@czech-language/lang/cs/admin/user.php` around lines 22 - 23, The translation uses inconsistent orthography for "e-mail" — replace the unhyphenated form used in the 'password_reset_sent' value with the standard hyphenated Czech form to match the rest of the file; update the string for the 'password_reset_sent' key to use "e-mail" so it matches 'password_reset_failed' ("Odeslání e-mailu...") and other occurrences like the 'E-mail' entry elsewhere in the file.czech-language/lang/cs/admin/log.php-16-16 (1)
16-16:⚠️ Potential issue | 🟡 MinorMissing sentence-boundary punctuation after
:url.
'Toto nahrajete :file na :url Jste si jisti...'runs two sentences together without a period or comma.🐛 Proposed fix
- 'upload_logs_description' => 'Toto nahrajete :file na :url Jste si jisti, že to chcete udělat?', + 'upload_logs_description' => 'Toto nahrajete :file na :url. Jste si jisti, že to chcete udělat?',🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@czech-language/lang/cs/admin/log.php` at line 16, The string value for key 'upload_logs_description' runs two sentences together; update the translation for 'upload_logs_description' so there is proper sentence-boundary punctuation after the :url placeholder (e.g., insert a period or other appropriate punctuation so it reads ":file na :url. Jste si jisti, že to chcete udělat?"), ensuring the placeholder :url remains unchanged.czech-language/lang/cs/server/setting.php-28-28 (1)
28-28:⚠️ Potential issue | 🟡 Minor
'Paměť Ram'— acronym casing should be'Paměť RAM'.✏️ Proposed fix
- 'memory' => 'Paměť Ram', + 'memory' => 'Paměť RAM',🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@czech-language/lang/cs/server/setting.php` at line 28, The translation value for the 'memory' key uses incorrect casing for the acronym; update the array entry with key 'memory' so its value reads 'Paměť RAM' (replace 'Paměť Ram' with 'Paměť RAM') to use the correct uppercase acronym.czech-language/lang/cs/mail.php-14-14 (1)
14-14:⚠️ Potential issue | 🟡 MinorInconsistent formality register and terminology for "subuser" across related mail templates.
- Line 14 uses informal address ("Byl jsi přidán jako poduživatel") while Line 20 uses formal address ("Byl jste odebrán jako dílčí uživatel"). Both describe the same subuser relationship.
- Pick one register (the formal "vy/jste" form is standard for transactional emails) and one term for "subuser" and apply them consistently.
✏️ Proposed fix (standardising on formal register and "poduživatel")
'added_to_server' => [ - 'body' => 'Byl jsi přidán jako poduživatel pro následující server, díky čemuž budeš moci ovládat server.', + 'body' => 'Byl jste přidán jako poduživatel pro následující server, díky čemuž budete moci ovládat server.', 'server_name' => 'Název serveru: :name', 'action' => 'Zobrazit server', ], 'removed_from_server' => [ - 'body' => 'Byl jste odebrán jako dílčí uživatel pro následující server.', + 'body' => 'Byl jste odebrán jako poduživatel pro následující server.',Also applies to: 20-20
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@czech-language/lang/cs/mail.php` at line 14, Standardize the formality and term for "subuser" in the mail templates: change the informal string entry 'body' that reads "Byl jsi přidán jako poduživatel..." to the formal register (use "Byl jste přidán jako poduživatel...") and update the other related template that currently uses "dílčí uživatel" (and/or "jste" vs "jsi") so both messages use the same formal phrasing "Byl jste ..." and the same term "poduživatel"; locate and edit the 'body' array entries in mail.php to make these two template strings consistent.czech-language/lang/cs/server/backup.php-35-35 (1)
35-35:⚠️ Potential issue | 🟡 MinorMinor grammatical agreement:
'přejmenovaná'→'přejmenována'.In Czech, the short-form past passive participle for a feminine subject ("záloha") is "přejmenována". The long adjective form "přejmenovaná" is used as a prenominal modifier (e.g., "přejmenovaná záloha"), not in predicate position.
✏️ Proposed fix
- 'notification_success' => 'Záloha úspěšně přejmenovaná', + 'notification_success' => 'Záloha úspěšně přejmenována',🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@czech-language/lang/cs/server/backup.php` at line 35, Update the Czech translation string for the key 'notification_success' in the backup.php array: replace the value "Záloha úspěšně přejmenovaná" with the corrected predicate form "Záloha úspěšně přejmenována" so the past passive participle agrees correctly with the noun "záloha" (refer to the 'notification_success' entry in backup.php).czech-language/lang/cs/server/setting.php-39-39 (1)
39-39:⚠️ Potential issue | 🟡 MinorMisleading SFTP username label:
'Přezdívka'(nickname) should be'Uživatelské jméno'.Every other file in this PR (e.g.,
command/messages.phpline 13,server/database.phpline 11) translates "username" as "Uživatelské jméno". Using "Přezdívka" (nickname/alias) here would confuse users filling in their SFTP credentials.✏️ Proposed fix
- 'username' => 'Přezdívka', + 'username' => 'Uživatelské jméno',🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@czech-language/lang/cs/server/setting.php` at line 39, Update the translation value for the 'username' key in the settings array: replace the misleading "Přezdívka" with "Uživatelské jméno" so the 'username' => ... entry in czech-language/lang/cs/server/setting.php matches other translations (e.g., command/messages.php and server/database.php) and correctly reflects SFTP credential labeling.czech-language/lang/cs/admin/dashboard.php-11-11 (1)
11-11:⚠️ Potential issue | 🟡 MinorTypo:
'Inofmace o vývojářích'→'Informace o vývojářích'Transposed letters in "Inofmace".
✏️ Proposed fix
- 'heading' => 'Inofmace o vývojářích', + 'heading' => 'Informace o vývojářích',🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@czech-language/lang/cs/admin/dashboard.php` at line 11, Fix the typo in the dashboard translation: locate the array entry where 'heading' is set to 'Inofmace o vývojářích' (in the cs admin dashboard translation) and change the string to 'Informace o vývojářích' so the heading reads correctly.czech-language/lang/cs/command/messages.php-43-47 (1)
43-47:⚠️ Potential issue | 🟡 MinorTwo small translation inconsistencies in the Mailgun/Mandrill block.
- Line 43:
'Mailgun doména (doména)'— the parenthetical(doména)is a redundant repetition of the same Czech word.- Line 47:
'Mandrill Tajný klíč'— "Tajný" is capitalised mid-phrase, inconsistent with Line 45 ('Mailgun tajný klíč'— lowercase "tajný").✏️ Proposed corrections
- 'ask_mailgun_domain' => 'Mailgun doména (doména)', + 'ask_mailgun_domain' => 'Mailgun doména', 'ask_mailgun_endpoint' => 'Mailgun Endpoint', 'ask_mailgun_secret' => 'Mailgun tajný klíč', - 'ask_mandrill_secret' => 'Mandrill Tajný klíč', + 'ask_mandrill_secret' => 'Mandrill tajný klíč',🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@czech-language/lang/cs/command/messages.php` around lines 43 - 47, Fix two Czech translation inconsistencies in the messages array: update the value for 'ask_mailgun_domain' to remove the redundant parenthetical so it reads simply "Mailgun doména", and change the value for 'ask_mandrill_secret' to use lowercase "tajný" so it matches 'ask_mailgun_secret' (i.e., "Mandrill tajný klíč"). Ensure you edit the strings for keys 'ask_mailgun_domain' and 'ask_mandrill_secret' only.czech-language/lang/cs/server/database.php-15-15 (1)
15-15:⚠️ Potential issue | 🟡 Minor
'Vytvořeno v'reads as "Created in/at" with a dangling preposition — consider'Vytvořeno'or'Datum vytvoření'.As a column/field heading the trailing
v("in/at") is incomplete on its own. The same pattern appears inserver/backup.php(Line 7) and should be corrected there as well.✏️ Proposed fix (both files)
- 'created_at' => 'Vytvořeno v', + 'created_at' => 'Datum vytvoření',🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@czech-language/lang/cs/server/database.php` at line 15, The translation for the 'created_at' key currently reads "'Vytvořeno v'" which leaves a dangling preposition; update the value for the 'created_at' key in czech-language/lang/cs/server/database.php and the same key in czech-language/lang/cs/server/backup.php to a proper heading such as "Vytvořeno" or "Datum vytvoření" (choose one consistent option) so the column/field label is complete and grammatical.czech-language/lang/cs/admin/dashboard.php-34-36 (1)
34-36:⚠️ Potential issue | 🟡 MinorTwo translation errors in the support section.
- Line 34:
'přespěvatelům'→'přispěvatelům'(typo — missing "i").- Line 36:
'Pomocte Přeložit'—'Pomocte'is not valid Czech imperative; it should be'Pomozte'. Additionally,'Přeložit'should not be capitalised.✏️ Proposed fixes
- 'content' => 'Děkujeme za používání Pelican, toto je možné vytvářet jen díky vaší podpoře, přespěvatelům a dalším podporovatelům!', + 'content' => 'Děkujeme za používání Pelican, toto je možné vytvářet jen díky vaší podpoře, přispěvatelům a dalším podporovatelům!', 'extra_note' => 'Vážíme si jaké koliv podpory od kohokoliv.', - 'button_translate' => 'Pomocte Přeložit', + 'button_translate' => 'Pomozte přeložit',🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@czech-language/lang/cs/admin/dashboard.php` around lines 34 - 36, Fix two Czech translation errors in the support block: in the array entry with key 'content' replace the typo "přespěvatelům" with "přispěvatelům", and in the entry with key 'button_translate' change "Pomocte Přeložit" to the correct imperative and casing "Pomozte přeložit".czech-language/lang/cs/admin/dashboard.php-23-24 (1)
23-24:⚠️ Potential issue | 🟡 MinorTypo:
verzy→verze(appears twice)."verzy" is not a valid Czech word; the correct form is "verze".
✏️ Proposed fix
- 'heading' => 'Máte nejnovější verzy panelu', - 'content' => 'Právě používáte verzy :version. Váš panel je aktuální', + 'heading' => 'Máte nejnovější verzi panelu', + 'content' => 'Právě používáte verzi :version. Váš panel je aktuální.',🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@czech-language/lang/cs/admin/dashboard.php` around lines 23 - 24, Replace the misspelled Czech word "verzy" with the correct "verze" in the translation strings: update the 'heading' value ('Máte nejnovější verzy panelu') and the 'content' value ('Právě používáte verzy :version. Váš panel je aktuální') to use "verze" so both read correctly.czech-language/lang/cs/commands.php-18-18 (1)
18-18:⚠️ Potential issue | 🟡 Minor"rozblednuté" is not a valid Czech word.
This appears to be a machine-translation artefact. The intended meaning ("strongly inadvisable / not recommended") should be rendered as
nedoporučovanéornevhodné.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@czech-language/lang/cs/commands.php` at line 18, The Czech translation for the array key 'DB_USERNAME_note' contains an invalid word "rozblednuté"; update that string to use a correct Czech term conveying "strongly inadvisable" such as "nedoporučované" (or "nevhodné") and ensure the sentence grammar remains correct (e.g., "Použití kořenového účtu pro MySQL spojení není pouze velmi nedoporučované, ale tato aplikace také nepovoluje. Pro tento software budete muset vytvořit MySQL uživatele.").czech-language/lang/cs/commands.php-50-50 (1)
50-50:⚠️ Potential issue | 🟡 MinorDuplicate word "JSOU JSOU" in the key-generation warning text.
"JSOU JSOU" ("ARE ARE") is a clear copy-paste duplication. The warning sentence is also grammatically broken — please review and rewrite the full sentence before merge.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@czech-language/lang/cs/commands.php` at line 50, The value for the localization key 'error_already_exist' contains a duplicated word "JSOU JSOU" and a grammatically broken warning; update the string for 'error_already_exist' to remove the duplicate and rewrite the full Czech sentence so it reads clearly and correctly (e.g. warn that generating a new app encryption key will overwrite the existing key and may corrupt all existing encrypted data, and advise not to confirm unless necessary). Ensure you modify the value associated with 'error_already_exist' in the same array entry.czech-language/lang/cs/admin/node.php-105-105 (1)
105-105:⚠️ Potential issue | 🟡 Minor"of" is untranslated in the CPU chart label.
- 'cpu_chart' => 'CPU - :cpu% of :max%', + 'cpu_chart' => 'CPU - :cpu% z :max%',🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@czech-language/lang/cs/admin/node.php` at line 105, The CPU chart label for the translation key 'cpu_chart' contains the English word "of" and should be translated to Czech; update the value for 'cpu_chart' from "CPU - :cpu% of :max%" to use the Czech equivalent (e.g., "CPU - :cpu% z :max%") so the entire label is in Czech.czech-language/lang/cs/admin/apikey.php-26-26 (1)
26-26:⚠️ Potential issue | 🟡 Minor"Přečteno" is the wrong Czech form for a permission label.
Přečtenois a past participle ("has been read"). A permission level label should use the substantive formČtení(reading / read access), consistent with howread_writeis rendered asČtení / zápison Line 27.- 'read' => 'Přečteno', + 'read' => 'Čtení',🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@czech-language/lang/cs/admin/apikey.php` at line 26, Update the Czech translation entry for the permission label key 'read' in the language array (the line currently "'read' => 'Přečteno',") to use the substantive form "Čtení" instead of the past participle; replace the value so it reads "'read' => 'Čtení',", keeping UTF-8 encoding and matching the style used for 'read_write' ("Čtení / zápis").czech-language/lang/cs/admin/node.php-112-113 (1)
112-113:⚠️ Potential issue | 🟡 Minor
create_allocationandprimary_allocationshare the same translation — likely a copy-paste error.These are distinct UI strings.
primary_allocationshould reflect the concept of a primary/default allocation (e.g., "Primární alokace"), not the create action.'create_allocation' => 'Vytvořit alokaci', - 'primary_allocation' => 'Vytvořit alokaci', + 'primary_allocation' => 'Primární alokace',🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@czech-language/lang/cs/admin/node.php` around lines 112 - 113, The two translation keys create_allocation and primary_allocation currently have the same Czech string; update the primary_allocation value to a correct Czech phrase that expresses a primary/default allocation (for example change 'primary_allocation' => 'Primární alokace' or another appropriate translation) so the two keys reflect their different UI meanings; modify the value for the primary_allocation entry in the same array where create_allocation is defined.czech-language/lang/cs/admin/node.php-72-72 (1)
72-72:⚠️ Potential issue | 🟡 MinorMistranslation: "zaměstnání" means "employment/job", not "deploy".
- 'use_for_deploy' => 'Použít pro zaměstnání?', + 'use_for_deploy' => 'Použít pro nasazení?',🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@czech-language/lang/cs/admin/node.php` at line 72, The translation for the 'use_for_deploy' key is incorrect—replace the word "zaměstnání" (which means employment) with the correct Czech term for deploy; update the value for 'use_for_deploy' in node.php to something like "Použít pro nasazení?" (or "Použít pro nasadění?") so the label correctly conveys deployment.czech-language/lang/cs/admin/health.php-41-41 (1)
41-41:⚠️ Potential issue | 🟡 MinorTypo: "verzy" → "verzi".
- 'ok' => 'Máte nejnovější verzy panelu', + 'ok' => 'Máte nejnovější verzi panelu',🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@czech-language/lang/cs/admin/health.php` at line 41, Replace the misspelled Czech word in the translation entry for the 'ok' key: change the string value 'Máte nejnovější verzy panelu' to use the correct word 'verzi' so the entry reads 'Máte nejnovější verzi panelu' (locate the 'ok' => '...' array element in cs/admin/health.php).czech-language/lang/cs/server/console.php-33-33 (1)
33-33:⚠️ Potential issue | 🟡 Minor"Smrt" (noun: "Death") is inconsistent with the surrounding status labels.
All adjacent statuses use verbal/adjectival Czech forms (
Ukončeno,Pozastaveno,Odstranění, etc.).deadshould follow the same pattern:- 'dead' => 'Smrt', + 'dead' => 'Mrtvý',🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@czech-language/lang/cs/server/console.php` at line 33, The 'dead' status uses the noun "Smrt" which is inconsistent with surrounding adjectival/verbal labels; update the array entry for the 'dead' key (currently 'Smrt') to an adjectival/verbal Czech form consistent with others (e.g., replace with "Zemřelý" or another project-standard adjective/verb form) so the status labels are grammatically consistent.czech-language/lang/cs/profile.php-26-27 (1)
26-27:⚠️ Potential issue | 🟡 MinorTrailing spaces in
linkandunlinkvalues.Both string values carry a trailing space that will appear in rendered UI labels.
✂️ Proposed fix
- 'link' => 'Odkaz ', - 'unlink' => 'Odpojit ', + 'link' => 'Odkaz', + 'unlink' => 'Odpojit',🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@czech-language/lang/cs/profile.php` around lines 26 - 27, The 'link' and 'unlink' translation entries in cs/profile.php contain trailing spaces which will show up in the UI; edit the array entries for the keys 'link' and 'unlink' and remove the trailing whitespace from their string values so they read exactly "Odkaz" and "Odpojit" (locate the entries by the 'link' and 'unlink' keys in the profile translations).czech-language/lang/cs/admin/server.php-55-56 (1)
55-56:⚠️ Potential issue | 🟡 Minor
swapmistranslated as "Přepnout paměť" (toggle/switch memory)."Přepnout" means toggle; swap memory should be "odkládací paměť" or simply left as "Swap".
✏️ Proposed fix
- 'swap' => 'Přepnout paměť', - 'swap_limit' => 'Přepnout limit paměti', + 'swap' => 'Odkládací paměť', + 'swap_limit' => 'Limit odkládací paměti',🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@czech-language/lang/cs/admin/server.php` around lines 55 - 56, The 'swap' translation is incorrect: replace the value for the 'swap' key (currently "Přepnout paměť") with a noun like "Swap" or "odkládací paměť" to reflect memory swap rather than a toggle; update the array entry for 'swap' in the same translation map (the 'swap' => ... line) accordingly and leave 'swap_limit' unchanged.czech-language/lang/cs/admin/setting.php-13-13 (1)
13-13:⚠️ Potential issue | 🟡 MinorCapitalization typo:
'OstatnÍ'should be'Ostatní'.✏️ Proposed fix
- 'misc' => 'OstatnÍ', + 'misc' => 'Ostatní',🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@czech-language/lang/cs/admin/setting.php` at line 13, Fix the capitalization typo in the translation entry for the 'misc' key in the settings translations array: replace the incorrect value 'OstatnÍ' with the correct 'Ostatní' in the settings.php file where the 'misc' => 'OstatnÍ' entry appears (look for the 'misc' array key in setting.php).czech-language/lang/cs/notifications.php-16-16 (1)
16-16:⚠️ Potential issue | 🟡 MinorWrong Czech preposition in
user_removedbody — reads "removed to server" instead of "removed from server".
domeans "to"; the preposition for removal from a place must beze.✏️ Proposed fix
- 'body' => 'Byli jste odebráni jako poduživatel do :server.', + 'body' => 'Byli jste odebráni jako poduživatel ze serveru :server.',🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@czech-language/lang/cs/notifications.php` at line 16, The 'user_removed' notification body uses the wrong Czech preposition ("do") and should be changed to "ze" so it reads "Byli jste odebráni jako poduživatel ze :server."; locate the 'user_removed' array entry in notifications.php and update the 'body' string to use "ze" instead of "do" ensuring the placeholder :server remains unchanged.czech-language/lang/cs/admin/egg.php-10-10 (1)
10-10:⚠️ Potential issue | 🟡 Minor
egg_variablestab label was not translated — still reads "Egg Variables" in English.✏️ Proposed fix
- 'egg_variables' => 'Egg Variables', + 'egg_variables' => 'Proměnné vejce',🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@czech-language/lang/cs/admin/egg.php` at line 10, The 'egg_variables' array entry currently uses the English label "Egg Variables"; update the value for the 'egg_variables' key in the cs/admin/egg.php language array to a Czech translation (for example "Proměnné Egg" or another preferred Czech phrasing), ensuring proper string quoting/encoding and leaving the key name 'egg_variables' unchanged so the tab label displays in Czech.README.md-58-59 (1)
58-59:⚠️ Potential issue | 🟡 MinorLanguage Packs list is out of alphabetical order.
The Plugins and Themes sections are sorted alphabetically; Language Packs should follow the same convention. "Czech Language" should appear before "Pirate Language".
📝 Proposed fix
- - [Pirate Language](/pirate-language) - Turns yer site's lingo into pirate talk, matey! - - [Czech Language](/czech-language) - Adds Czech translation + - [Czech Language](/czech-language) - Adds Czech translation + - [Pirate Language](/pirate-language) - Turns yer site's lingo into pirate talk, matey!🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@README.md` around lines 58 - 59, The Language Packs list is not alphabetized: swap the two entries so "Czech Language" comes before "Pirate Language" in the README; update the list lines that contain "[Pirate Language](/pirate-language) - Turns yer site's lingo into pirate talk, matey!" and "[Czech Language](/czech-language) - Adds Czech translation" so they appear in alphabetical order consistent with the other sections.czech-language/lang/cs/server/schedule.php-59-62 (1)
59-62:⚠️ Potential issue | 🟡 MinorPlural keys map to singular Czech forms — UI labels will be grammatically incorrect.
minutes,hours,days, andmonthshold the singular nominative forms (Minuta,Hodina,Den,Měsíc). Where these labels appear alongside a count (e.g. "Every X Minuta"), the result is ungrammatical Czech.🐛 Proposed fix
- 'minutes' => 'Minuta', - 'hours' => 'Hodina', - 'days' => 'Den', - 'months' => 'Měsíc', + 'minutes' => 'Minuty', + 'hours' => 'Hodiny', + 'days' => 'Dny', + 'months' => 'Měsíce',🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@czech-language/lang/cs/server/schedule.php` around lines 59 - 62, The translations for the keys 'minutes', 'hours', 'days', and 'months' in schedule.php are singular and should be changed to plural Czech forms so labels with counts render grammatically correct; update the values for the array entries 'minutes' => 'Minuty', 'hours' => 'Hodiny', 'days' => 'Dny', and 'months' => 'Měsíce' for the keys 'minutes', 'hours', 'days', and 'months' respectively.czech-language/lang/cs/activity.php-78-78 (1)
78-78:⚠️ Potential issue | 🟡 MinorUntranslated English fragments ("to", "Moved/") in the file rename string.
🐛 Proposed fix
- 'rename' => 'Přesunuto / přejmenováno <b>:from</b> to <b>:to</b>|Moved/ přejmenováno <b>:count</b> souborů v <b>:directory</b>', + 'rename' => 'Přesunuto / přejmenováno <b>:from</b> na <b>:to</b>|Přesunuto / přejmenováno <b>:count</b> souborů v <b>:directory</b>',🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@czech-language/lang/cs/activity.php` at line 78, Update the 'rename' translation string in activity.php (the 'rename' array key) to remove the remaining English fragments: replace "to" with the Czech "na" in the singular form and replace "Moved/" with the Czech "Přesunuto" in the plural form so both halves are fully translated (ensure the singular form still contains <b>:from</b> and <b>:to</b> and the plural form contains <b>:count</b> and <b>:directory</b>).
🧹 Nitpick comments (4)
czech-language/lang/cs/server/file.php (2)
54-54: Consider'Přípona'over'Rozšíření'for archive file extension.
'Rozšíření'is widely used for "plugin/extension" (feature extension); the idiomatic Czech term for a file-name suffix/extension is'Přípona'.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@czech-language/lang/cs/server/file.php` at line 54, The translation for the key 'extension' in the localization array uses "Rozšíření" but should use the idiomatic Czech term "Přípona"; update the value for the 'extension' entry in file.php (the associative array mapping including the 'extension' key) to "Přípona" so the label refers to a file-name suffix instead of a plugin/feature extension.
72-76:search_termandsearch_for_termshare the same Czech value.Both keys translate to
'Hledaný výraz'. If the source locale differentiates between a search-term label and a search-term action, consider distinct Czech strings (e.g.,'Výsledky hledání'or'Hledejte výraz'forsearch_for_term).🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@czech-language/lang/cs/server/file.php` around lines 72 - 76, The two translation keys 'search_term' and 'search_for_term' both use the identical Czech string "Hledaný výraz"; update one so they reflect different intents (label vs. action) — for example keep 'search_term' => 'Hledaný výraz' (label) and change 'search_for_term' => 'Hledejte výraz' or 'Výsledky hledání' depending on whether it is an action or results header; edit the values for 'search_term' and 'search_for_term' in the same array to provide distinct, context-appropriate Czech phrases.czech-language/lang/cs/server/startup.php (1)
10-12: Inconsistent Czech/English for "Docker image" within the same file.Line 10 labels the UI field as
'Docker Image'(English), while Lines 11–12 translate the same concept as'Obrázek Dockeru'/'obrázku'(Czech). Choose one and apply it consistently.✏️ Option A — keep the English technical term (common in Czech IT)
'docker_image' => 'Docker Image', - 'notification_docker' => 'Obrázek Dockeru byl aktualizován', - 'notification_docker_body' => 'Restartovat server pro použití nového obrázku.', + 'notification_docker' => 'Docker Image byl aktualizován', + 'notification_docker_body' => 'Restartujte server pro použití nového Docker Image.',🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@czech-language/lang/cs/server/startup.php` around lines 10 - 12, The keys 'docker_image', 'notification_docker', and 'notification_docker_body' are inconsistent: 'docker_image' uses English ("Docker Image") while the notifications use Czech ("Obrázek Dockeru" / "obrázku"); pick one language and make all three entries consistent—either change 'docker_image' value to Czech (e.g., "Obrázek Dockeru" or preferred Czech phrasing) to match 'notification_docker'/'notification_docker_body', or translate the two notification values to the English form to match 'docker_image'; update the strings for the keys docker_image, notification_docker, and notification_docker_body accordingly.czech-language/plugin.json (1)
13-13: Consider specifying apanel_versionconstraint.
"panel_version": nullmeans the plugin declares no minimum/maximum compatible panel version. If the Pelican translation loading API changes, the plugin will silently load against an incompatible panel. Setting a concrete minimum version now (e.g. the version you developed against) will make compatibility expectations explicit.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@czech-language/plugin.json` at line 13, The plugin currently sets "panel_version": null which leaves compatibility unspecified; update the plugin.json "panel_version" key to a concrete semver constraint reflecting the panel version you developed/tested against (for example a minimum like ">=1.2.0" or an explicit range "<=1.x || >=1.2.0" as appropriate) so the Pelican translation loader will enforce compatibility—edit the "panel_version" value in plugin.json (the "panel_version" property) to the chosen semver constraint and commit.
📜 Review details
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (40)
README.mdczech-language/README.mdczech-language/lang/cs/activity.phpczech-language/lang/cs/admin/apikey.phpczech-language/lang/cs/admin/dashboard.phpczech-language/lang/cs/admin/databasehost.phpczech-language/lang/cs/admin/egg.phpczech-language/lang/cs/admin/health.phpczech-language/lang/cs/admin/log.phpczech-language/lang/cs/admin/mount.phpczech-language/lang/cs/admin/node.phpczech-language/lang/cs/admin/plugin.phpczech-language/lang/cs/admin/role.phpczech-language/lang/cs/admin/server.phpczech-language/lang/cs/admin/setting.phpczech-language/lang/cs/admin/user.phpczech-language/lang/cs/admin/webhook.phpczech-language/lang/cs/auth.phpczech-language/lang/cs/command/messages.phpczech-language/lang/cs/commands.phpczech-language/lang/cs/exceptions.phpczech-language/lang/cs/installer.phpczech-language/lang/cs/mail.phpczech-language/lang/cs/notifications.phpczech-language/lang/cs/profile.phpczech-language/lang/cs/search.phpczech-language/lang/cs/server/activity.phpczech-language/lang/cs/server/backup.phpczech-language/lang/cs/server/console.phpczech-language/lang/cs/server/dashboard.phpczech-language/lang/cs/server/database.phpczech-language/lang/cs/server/file.phpczech-language/lang/cs/server/network.phpczech-language/lang/cs/server/schedule.phpczech-language/lang/cs/server/setting.phpczech-language/lang/cs/server/startup.phpczech-language/lang/cs/server/user.phpczech-language/lang/cs/validation.phpczech-language/plugin.jsonczech-language/src/CzechLanguagePlugin.php
🧰 Additional context used
🪛 GitHub Actions: Lint
czech-language/lang/cs/admin/dashboard.php
[error] 1-1: Pint formatting check failed: single_quote style issue detected in file. Run 'vendor/bin/pint --test --range' or fix quotes to pass.
czech-language/lang/cs/commands.php
[error] 1-1: Pint formatting check failed: single_quote style issue detected in file. Run 'vendor/bin/pint --test --range' or fix quotes to pass.
🪛 PHPMD (2.15.0)
czech-language/src/CzechLanguagePlugin.php
[warning] 15-15: Avoid unused parameters such as '$panel'. (undefined)
(UnusedFormalParameter)
[warning] 17-17: Avoid unused parameters such as '$panel'. (undefined)
(UnusedFormalParameter)
🔇 Additional comments (14)
czech-language/lang/cs/server/network.php (1)
1-17: LGTM!Translations are complete and consistent; no placeholder or structural issues.
czech-language/lang/cs/server/activity.php (1)
1-11: LGTM!czech-language/lang/cs/auth.php (1)
1-24: LGTM!czech-language/lang/cs/admin/role.php (1)
1-17: LGTM!czech-language/lang/cs/server/dashboard.php (1)
1-28: LGTM! Translations are clean, consistent, and use correct Czech.czech-language/lang/cs/search.php (1)
1-9: LGTM.czech-language/lang/cs/admin/webhook.php (1)
1-62: LGTM.czech-language/lang/cs/admin/plugin.php (1)
1-61: LGTM.czech-language/lang/cs/exceptions.php (1)
3-64: LGTM! Placeholder names are consistent with English keys, and translations are accurate.czech-language/src/CzechLanguagePlugin.php (2)
10-13: The suggestion to add amake()method is not necessary. A search of the repository shows that none of the 25+ existing plugins implement this pattern—all plugins use only the requiredgetId()method. This is not a convention in this codebase.Likely an incorrect or invalid review comment.
15-17: PHPMD unused-parameter warnings are false positives —$panelis required by thePlugininterface contract and cannot be removed.Both methods being empty is intentional. The
PirateLanguagePluginfollows the identical pattern, and the framework auto-discovers translation files from thelang/directory by convention. No plugins in this codebase use explicit translation loading methods likeloadTranslationsFrom(), confirming that manual registration is not required.czech-language/README.md (1)
1-26: LGTM!The README is well-structured, covering features, installation steps, and contribution guidance clearly.
czech-language/lang/cs/installer.php (1)
1-113: LGTM!All placeholders use correct English names and no broken markup found.
czech-language/lang/cs/server/user.php (1)
1-73: LGTM!Translations are complete, placeholders use correct English keys (
:user), and the permission descriptions include appropriate security caveats for sensitive capabilities.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@czech-language/lang/cs/activity.php`:
- Line 67: The activity translation entry with key 'delete' contains a malformed
HTML tag ("Smazána databáze <b>:name</b><b>") leaving an unclosed <b>; edit the
'delete' value in cs/activity.php to replace the trailing "<b>" with the proper
closing tag "</b>" so the string becomes "Smazána databáze <b>:name</b>".
- Line 92: The 'create' translation entry for the allocation activity uses the
wrong placeholder ':allocace' which prevents substitution; update the 'create'
array value entry (the key 'create' in the allocation/activity translations) to
use ':allocation' instead of ':allocace' so it matches the other allocation
placeholders and the substitution mechanism.
- Line 89: In the 'rename' translation entry in cs/activity.php replace the
incorrect placeholder :z with :from and update the plural variant to use a
capitalized "Přejmenováno" for consistency; locate the array key 'rename' and
change its value so it matches the upstream template (original placeholder :from
and capitalized second plural sentence).
In `@czech-language/lang/cs/admin/dashboard.php`:
- Line 28: The array entry with key 'content' uses a double-quoted string which
triggers the Pint single_quote rule; change it to a single-quoted string and
escape the embedded apostrophe inside the Czech text so the value for 'content'
uses single quotes (update the string where 'content' => "Vypadá to že
nemáš..."), ensuring no other characters are changed.
In `@czech-language/lang/cs/admin/databasehost.php`:
- Around line 63-72: In the 'allow_external_access' string replace the corrupted
artifacts: change every "my. nf" to "my.cnf", change "/etc -iname my.cnf" to
"find /etc -iname my.cnf", change "bind-address=0. .0." to
"bind-address=0.0.0.0", and change the English "Open" to Czech "Otevřít"; ensure
the code blocks remain wrapped in <code>...</code> and remove extra stray spaces
so the commands and IP are correct in the allow_external_access message.
In `@czech-language/lang/cs/admin/egg.php`:
- Line 24: The translation string for key 'import_result' uses the Czech
placeholder ':úspěch' which won't be matched by Laravel's translator; update the
value 'import_result' => 'Importováno :úspěch :total vajec' to use the English
placeholder ':success' (i.e., 'Importováno :success :total vajec') so it matches
the keys passed to trans()/__() and aligns with other placeholders like
':total'.
In `@czech-language/lang/cs/admin/health.php`:
- Around line 33-37: The translations for the 'failed' and 'outdated' keys use a
Czech placeholder ':zastaralý' which won't be substituted by Laravel; replace
that placeholder with the expected variable name ':outdated' so the runtime
substitution (e.g., ['outdated' => $count]) works correctly; update the 'failed'
value from ':zastaralý/:all uzly jsou zastaralé' and the 'outdated' value from
':zastaralý/:all zastaralý' to use ':outdated' instead.
In `@czech-language/lang/cs/admin/server.php`:
- Around line 123-127: The translation key 'server_unsuspended' currently
duplicates 'server_suspended' text; update the value for 'server_unsuspended'
(near the other keys 'server_suspended', 'server_suspend_help',
'server_unsuspend_help') to the correct Czech message for an unsuspend action,
e.g. "Pozastění serveru bylo zrušeno" or "Server již není pozastaven", so admins
see a distinct, factually correct message when a server is unsuspended.
In `@czech-language/lang/cs/admin/setting.php`:
- Line 77: The translation for the 'throttle' key is incorrect ("Štětce" =
paintbrushes); update the value for the 'throttle' array key in
lang/cs/admin/setting.php (the entry with 'throttle') to an appropriate Czech
term for rate limiting such as "Omezení rychlosti" or simply "Omezení" to
reflect rate limiting/throttling rather than paintbrushes.
In `@czech-language/lang/cs/commands.php`:
- Line 8: The string values for several translation keys (including the
'timezone' entry shown) use double quotes which violates the project's
single_quote Pint rule; update those entries in
czech-language/lang/cs/commands.php by replacing double-quoted string literals
with single-quoted literals (e.g., change "Časové pásmo..." to 'Časové
pásmo...') for the 'timezone' key and the other two offending entries on lines
noted in the review so all message values use single quotes.
In `@czech-language/lang/cs/server/file.php`:
- Around line 90-93: The title for the 'file_too_large' translation uses the
wrong placeholder " : jméno" so Laravel won't replace the filename; update the
'title' value inside the 'file_too_large' entry to use the correct token :name
(no space, English key) so it matches other entries and will be substituted at
runtime.
In `@czech-language/lang/cs/validation.php`:
- Around line 58-63: The 'min.string' translation in validation.php uses a
hardcoded Czech noun "Atribut" instead of the placeholder, so replace the
literal "Atribut" with the :attribute placeholder in the 'min' => ['string' =>
...] entry (same key path) so the actual field name is substituted at runtime;
update the message to use :attribute and keep the rest of the text and :min
placeholder intact.
- Line 78: The root 'string' validation message is hardcoded ("Atribut musí být
textový řetězec.") so the field name isn't substituted; update the 'string'
entry in validation.php to use the :attribute placeholder (matching the style
used in 'min.string') by replacing "Atribut" with ":attribute" so the offending
field name is inserted into the error message.
- Around line 56-57: The 'mimes' and 'mimetypes' messages use the literal
"Atribut:" instead of the Laravel placeholder, so replace the static "Atribut:"
with the placeholder ':attribute' (preserving spacing/punctuation) in the
'mimes' and 'mimetypes' entries in validation.php so Laravel will substitute the
actual field name (e.g. change "Atribut: musí být soubor typu: :values." to
":attribute musí být soubor typu: :values.").
- Line 34: The translation for the 'date_format' validation message uses an
accented placeholder ':formát' which prevents Laravel from substituting the
format value; update the message string for the 'date_format' key to use the
correct placeholder ':format' (i.e., replace ':formát' with ':format') so the
framework can inject the format value.
---
Nitpick comments:
In `@czech-language/lang/cs/server/file.php`:
- Line 54: The translation for the key 'extension' in the localization array
uses "Rozšíření" but should use the idiomatic Czech term "Přípona"; update the
value for the 'extension' entry in file.php (the associative array mapping
including the 'extension' key) to "Přípona" so the label refers to a file-name
suffix instead of a plugin/feature extension.
- Around line 72-76: The two translation keys 'search_term' and
'search_for_term' both use the identical Czech string "Hledaný výraz"; update
one so they reflect different intents (label vs. action) — for example keep
'search_term' => 'Hledaný výraz' (label) and change 'search_for_term' =>
'Hledejte výraz' or 'Výsledky hledání' depending on whether it is an action or
results header; edit the values for 'search_term' and 'search_for_term' in the
same array to provide distinct, context-appropriate Czech phrases.
In `@czech-language/lang/cs/server/startup.php`:
- Around line 10-12: The keys 'docker_image', 'notification_docker', and
'notification_docker_body' are inconsistent: 'docker_image' uses English
("Docker Image") while the notifications use Czech ("Obrázek Dockeru" /
"obrázku"); pick one language and make all three entries consistent—either
change 'docker_image' value to Czech (e.g., "Obrázek Dockeru" or preferred Czech
phrasing) to match 'notification_docker'/'notification_docker_body', or
translate the two notification values to the English form to match
'docker_image'; update the strings for the keys docker_image,
notification_docker, and notification_docker_body accordingly.
In `@czech-language/plugin.json`:
- Line 13: The plugin currently sets "panel_version": null which leaves
compatibility unspecified; update the plugin.json "panel_version" key to a
concrete semver constraint reflecting the panel version you developed/tested
against (for example a minimum like ">=1.2.0" or an explicit range "<=1.x ||
>=1.2.0" as appropriate) so the Pelican translation loader will enforce
compatibility—edit the "panel_version" value in plugin.json (the "panel_version"
property) to the chosen semver constraint and commit.
| 'database' => [ | ||
| 'create' => 'Vytvořena nová databáze <b>:name</b>', | ||
| 'rotate-password' => 'Heslo pro databázi <b>:name</b>', | ||
| 'delete' => 'Smazána databáze <b>:name</b><b>', |
There was a problem hiding this comment.
Broken HTML closing tag — renders dangling <b> in the UI.
The database delete string ends with <b> instead of </b>, leaving an unclosed bold tag that will corrupt surrounding text rendering.
🐛 Proposed fix
- 'delete' => 'Smazána databáze <b>:name</b><b>',
+ 'delete' => 'Smazána databáze <b>:name</b>',📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| 'delete' => 'Smazána databáze <b>:name</b><b>', | |
| 'delete' => 'Smazána databáze <b>:name</b>', |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@czech-language/lang/cs/activity.php` at line 67, The activity translation
entry with key 'delete' contains a malformed HTML tag ("Smazána databáze
<b>:name</b><b>") leaving an unclosed <b>; edit the 'delete' value in
cs/activity.php to replace the trailing "<b>" with the proper closing tag "</b>"
so the string becomes "Smazána databáze <b>:name</b>".
| 'write' => 'Upravil obsah <b>:files</b>|Upravil obsah <b>:count</b> souborů', | ||
| 'delete' => 'Smazáno <b>:files</b>|Smazáno <b>:count</b> souborů', | ||
| 'create-directory' => 'Vytvořil adresář <b>:files</b> | Vytvořil <b>:count</b> adresáře', | ||
| 'rename' => 'Přejmenováno <b>:z</b> na <b>:to</b>|přejmenováno nebo přesunuto <b>:count</b> souborů', |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
# First, let's verify the current state of the Czech activity translation file
rg -n "rename" czech-language/lang/cs/activity.php -A 1 -B 1Repository: pelican-dev/plugins
Length of output: 970
🏁 Script executed:
# Now search for where the rename activity translation is used in the source code
# Look for references to :from, :z, :to, and rename placeholders
rg -n "sftp.*rename\|rename.*sftp\|:from\|:to\|:count" --type php -A 2 -B 2 | head -100Repository: pelican-dev/plugins
Length of output: 45
🏁 Script executed:
# Search more broadly for activity translation usage patterns
fd . -name "*.php" -type f | xargs rg -l "rename.*:from\|rename.*:z" | head -20Repository: pelican-dev/plugins
Length of output: 293
🏁 Script executed:
# Search for WordPress activity class/handler to find the placeholder names
rg -n "wordpress\|WordPress" --type php -i | grep -i "rename\|activity" | head -20Repository: pelican-dev/plugins
Length of output: 45
🏁 Script executed:
# Search for the activity class that provides rename placeholders
rg -n "class.*Activity\|function.*rename" --type php -B 2 -A 5 | head -150Repository: pelican-dev/plugins
Length of output: 45
🏁 Script executed:
# Look for where :z and :from are used in the source code
rg -n "':z'|\":z\"|:from|:to" --type php -B 3 -A 3 | head -150Repository: pelican-dev/plugins
Length of output: 12418
🏁 Script executed:
# Find the WordPress activity class and its rename handler
fd . -name "*.php" -type f | xargs rg -l "wordpress" -i | head -20Repository: pelican-dev/plugins
Length of output: 293
🏁 Script executed:
# Search for activity classes and their implementations
rg -n "class.*Activity\|function.*rename" --type php -B 1 -A 8 | grep -A 8 -B 1 "wordpress\|WordPress" -iRepository: pelican-dev/plugins
Length of output: 45
🏁 Script executed:
# Look for where activity translations are called/used in the source
rg -n "activity\[.*rename" --type php -B 3 -A 3Repository: pelican-dev/plugins
Length of output: 45
🏁 Script executed:
# Find PHP files related to WordPress activities
fd "Activity\|activity" --type f --extension php | head -30Repository: pelican-dev/plugins
Length of output: 45
🏁 Script executed:
# Search for files in the codebase that might define activity handlers
find . -name "*.php" -type f | xargs grep -l "wordpress.*rename\|rename.*placeholder\|':z'" 2>/dev/null | head -20Repository: pelican-dev/plugins
Length of output: 45
🏁 Script executed:
# Look for the structure of the codebase
find . -maxdepth 2 -type d | grep -i wordpress | head -20Repository: pelican-dev/plugins
Length of output: 45
🏁 Script executed:
# Find all directories to understand the structure
ls -laRepository: pelican-dev/plugins
Length of output: 2525
🏁 Script executed:
# Search for wordpress-related files in the plugins
find . -type d -name "*wordpress*"Repository: pelican-dev/plugins
Length of output: 45
🏁 Script executed:
# Search all PHP files for activity rename translations and their sources
rg "rename.*:from|rename.*:z" --type php -B 10 -A 2Repository: pelican-dev/plugins
Length of output: 2514
🏁 Script executed:
# Look for where activity logs/translations are generated or used
rg "activity\|Activity" --type php -l | head -20Repository: pelican-dev/plugins
Length of output: 45
🏁 Script executed:
# Check what plugins exist
git ls-files | grep -E "^[^/]+/$" | sort | uniqRepository: pelican-dev/plugins
Length of output: 45
🏁 Script executed:
# Check if there's a reference to the main source in this repository
cat README.mdRepository: pelican-dev/plugins
Length of output: 3226
🏁 Script executed:
# Look for any imports or references to activity-related classes
rg "ActivityLog\|activity.*rename\|ActivityRepository" --type phpRepository: pelican-dev/plugins
Length of output: 45
🌐 Web query:
Pelican Panel SFTP activity rename placeholder :from :z
💡 Result:
In Pelican Panel, the SFTP activity “rename” translation expects the placeholders :from and :to (and a plural form for multiple files). In the upstream English file it is:
server.sftp.rename→Renamed :from to :to|Renamed or moved :count files[1]
So if your activity log shows something like Renamed :from :z, that :z is not a valid placeholder—it’s almost certainly a typo in the translation file for the language you’re using (e.g., lang/<your-locale>/activity.php), and it should be changed to :to to match the data Pelican/Wings provides. [1]
Also note: Pelican had a specific fix related to the activity log on the rename API endpoint in a beta release; updating may resolve related rename-log formatting issues. [2]
What to do
- Check
lang/<locale>/activity.php→['server']['sftp']['rename']and replace:zwith:to. - Clear/rebuild caches (Laravel) after changing translations.
- If you’re on an older panel version, update to a version that includes the “Fix activity log on rename api endpoint” change. [2]
Sources:
[1] Pelican Panel lang/en/activity.php (raw) shows :from and :to placeholders. (raw.githubusercontent.com)
[2] Pelican Panel release notes mention “Fix activity log on rename api endpoint”. (github.com)
Citations:
- 1: https://raw.githubusercontent.com/pelican-dev/panel/main/lang/en/activity.php
- 2: https://github.com/pelican-dev/panel/releases?utm_source=openai
Replace :z with :from in the SFTP rename activity translation.
The placeholder :z is incorrect and will display as a literal string. The Pelican Panel SFTP activity rename handler provides the original filename under the key :from, not :z. Update line 89 to match the upstream English template: Renamed :from to :to|Renamed or moved :count files.
Additionally, capitalize the second part of the plural form for consistency: Přejmenováno instead of přejmenováno.
Proposed fix
- 'rename' => 'Přejmenováno <b>:z</b> na <b>:to</b>|přejmenováno nebo přesunuto <b>:count</b> souborů',
+ 'rename' => 'Přejmenováno <b>:from</b> na <b>:to</b>|Přejmenováno nebo přesunuto <b>:count</b> souborů',📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| 'rename' => 'Přejmenováno <b>:z</b> na <b>:to</b>|přejmenováno nebo přesunuto <b>:count</b> souborů', | |
| 'rename' => 'Přejmenováno <b>:from</b> na <b>:to</b>|Přejmenováno nebo přesunuto <b>:count</b> souborů', |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@czech-language/lang/cs/activity.php` at line 89, In the 'rename' translation
entry in cs/activity.php replace the incorrect placeholder :z with :from and
update the plural variant to use a capitalized "Přejmenováno" for consistency;
locate the array key 'rename' and change its value so it matches the upstream
template (original placeholder :from and capitalized second plural sentence).
| 'rename' => 'Přejmenováno <b>:z</b> na <b>:to</b>|přejmenováno nebo přesunuto <b>:count</b> souborů', | ||
| ], | ||
| 'allocation' => [ | ||
| 'create' => 'Přidáno <b>:allocace</b> na server', |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
# First, locate and examine the file
fd -t f "activity.php" | head -20Repository: pelican-dev/plugins
Length of output: 189
🏁 Script executed:
# Check if the file exists and read the relevant section
if [ -f "czech-language/lang/cs/activity.php" ]; then
wc -l "czech-language/lang/cs/activity.php"
fiRepository: pelican-dev/plugins
Length of output: 102
🏁 Script executed:
# Search for the specific line and context around line 92
rg -n "allocace|allocation" --type php -B 3 -A 3 -iRepository: pelican-dev/plugins
Length of output: 43010
Fix placeholder name on line 92: use :allocation instead of :allocace.
The placeholder :allocace (Czech for "allocation") will not be substituted — it breaks the application's variable substitution mechanism. The correct placeholder is :allocation, as used consistently in lines 93–95 within the same allocation section.
Proposed fix
- 'create' => 'Přidáno <b>:allocace</b> na server',
+ 'create' => 'Přidáno <b>:allocation</b> na server',📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| 'create' => 'Přidáno <b>:allocace</b> na server', | |
| 'create' => 'Přidáno <b>:allocation</b> na server', |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@czech-language/lang/cs/activity.php` at line 92, The 'create' translation
entry for the allocation activity uses the wrong placeholder ':allocace' which
prevents substitution; update the 'create' array value entry (the key 'create'
in the allocation/activity translations) to use ':allocation' instead of
':allocace' so it matches the other allocation placeholders and the substitution
mechanism.
| ], | ||
| 'intro-first-node' => [ | ||
| 'heading' => 'Nebyly nalezeny žádné uzly', | ||
| 'content' => "Vypadá to že nemáš nastavené žádné Uzly, ale kliknutím na tlačítko akce můžete vytvořit váš první!", |
There was a problem hiding this comment.
Double-quoted string is the direct cause of the Pint CI failure.
The pipeline reports a single_quote style violation. Line 28 is the only string in the file using double quotes; converting it to a single-quoted string (escaping the inner apostrophe) fixes the lint failure.
🔧 Proposed fix
- 'content' => "Vypadá to že nemáš nastavené žádné Uzly, ale kliknutím na tlačítko akce můžete vytvořit váš první!",
+ 'content' => 'Vypadá to, že nemáš nastavené žádné uzly, ale kliknutím na tlačítko akce můžete vytvořit váš první!',📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| 'content' => "Vypadá to že nemáš nastavené žádné Uzly, ale kliknutím na tlačítko akce můžete vytvořit váš první!", | |
| 'content' => 'Vypadá to, že nemáš nastavené žádné uzly, ale kliknutím na tlačítko akce můžete vytvořit váš první!', |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@czech-language/lang/cs/admin/dashboard.php` at line 28, The array entry with
key 'content' uses a double-quoted string which triggers the Pint single_quote
rule; change it to a single-quoted string and escape the embedded apostrophe
inside the Czech text so the value for 'content' uses single quotes (update the
string where 'content' => "Vypadá to že nemáš..."), ensuring no other characters
are changed.
| 'allow_external_access' => ' | ||
| <p>Šance budete muset povolit externí přístup k této instanci MySQL, abyste se k ní mohli připojit.</p> | ||
| <br> | ||
| <p>otevřít <code>my. nf</code>, které se liší v umístění v závislosti na vašem OS a jak byl MySQL nainstalován. Můžete napsat <code>/etc -iname my.cnf</code> a najít ji.</p> | ||
| <br> | ||
| <p>Open <code>my. nf</code>, přidejte text níže do spodní části souboru a uložte jej:<br> | ||
| <code>[mysqld]<br>bind-address=0. .0.</code></p> | ||
| <br> | ||
| <p>Restart MySQL/ MariaDB, aby se tyto změny použily. Toto přepíše výchozí konfiguraci MySQL, která bude ve výchozím nastavení přijímat pouze žádosti od localhost. Aktualizace umožní připojení na všech rozhraních, a tedy i externí připojení. Ujistěte se, že povolíte MySQL port (výchozí 3306) ve vaší firewall.</p> | ||
| ', |
There was a problem hiding this comment.
Corrupted commands inside allow_external_access HTML — wrong filename, missing find, broken IP address.
Three distinct copy-paste/OCR artifacts will mislead users:
my. nf(×2, lines 66 & 68) — should bemy.cnf/etc -iname my.cnf(line 66) — missingfind; should befind /etc -iname my.cnfbind-address=0. .0.(line 69) — should bebind-address=0.0.0.0- "Open" (line 68) — left in English; should be "Otevřít"
✏️ Proposed fix
- <p>otevřít <code>my. nf</code>, které se liší v umístění v závislosti na vašem OS a jak byl MySQL nainstalován. Můžete napsat <code>/etc -iname my.cnf</code> a najít ji.</p>
+ <p>Otevřít <code>my.cnf</code>, které se liší v umístění v závislosti na vašem OS a jak byl MySQL nainstalován. Můžete napsat <code>find /etc -iname my.cnf</code> a najít ji.</p>
<br>
- <p>Open <code>my. nf</code>, přidejte text níže do spodní části souboru a uložte jej:<br>
- <code>[mysqld]<br>bind-address=0. .0.</code></p>
+ <p>Otevřít <code>my.cnf</code>, přidejte text níže do spodní části souboru a uložte jej:<br>
+ <code>[mysqld]<br>bind-address=0.0.0.0</code></p>📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| 'allow_external_access' => ' | |
| <p>Šance budete muset povolit externí přístup k této instanci MySQL, abyste se k ní mohli připojit.</p> | |
| <br> | |
| <p>otevřít <code>my. nf</code>, které se liší v umístění v závislosti na vašem OS a jak byl MySQL nainstalován. Můžete napsat <code>/etc -iname my.cnf</code> a najít ji.</p> | |
| <br> | |
| <p>Open <code>my. nf</code>, přidejte text níže do spodní části souboru a uložte jej:<br> | |
| <code>[mysqld]<br>bind-address=0. .0.</code></p> | |
| <br> | |
| <p>Restart MySQL/ MariaDB, aby se tyto změny použily. Toto přepíše výchozí konfiguraci MySQL, která bude ve výchozím nastavení přijímat pouze žádosti od localhost. Aktualizace umožní připojení na všech rozhraních, a tedy i externí připojení. Ujistěte se, že povolíte MySQL port (výchozí 3306) ve vaší firewall.</p> | |
| ', | |
| 'allow_external_access' => ' | |
| <p>Šance budete muset povolit externí přístup k této instanci MySQL, abyste se k ní mohli připojit.</p> | |
| <br> | |
| <p>Otevřít <code>my.cnf</code>, které se liší v umístění v závislosti na vašem OS a jak byl MySQL nainstalován. Můžete napsat <code>find /etc -iname my.cnf</code> a najít ji.</p> | |
| <br> | |
| <p>Otevřít <code>my.cnf</code>, přidejte text níže do spodní části souboru a uložte jej:<br> | |
| <code>[mysqld]<br>bind-address=0.0.0.0</code></p> | |
| <br> | |
| <p>Restart MySQL/ MariaDB, aby se tyto změny použily. Toto přepíše výchozí konfiguraci MySQL, která bude ve výchozím nastavení přijímat pouze žádosti od localhost. Aktualizace umožní připojení na všech rozhraních, a tedy i externí připojení. Ujistěte se, že povolíte MySQL port (výchozí 3306) ve vaší firewall.</p> | |
| ', |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@czech-language/lang/cs/admin/databasehost.php` around lines 63 - 72, In the
'allow_external_access' string replace the corrupted artifacts: change every
"my. nf" to "my.cnf", change "/etc -iname my.cnf" to "find /etc -iname my.cnf",
change "bind-address=0. .0." to "bind-address=0.0.0.0", and change the English
"Open" to Czech "Otevřít"; ensure the code blocks remain wrapped in
<code>...</code> and remove extra stray spaces so the commands and IP are
correct in the allow_external_access message.
| 'file_too_large' => [ | ||
| 'title' => '<code>: jméno</code> je příliš dlouhé!', | ||
| 'body' => 'Maximum je :max', | ||
| ], |
There was a problem hiding this comment.
Broken :name placeholder — filename will never be substituted at runtime.
Line 91 writes ': jméno' (space after the colon, plus the Czech word for "name"), whereas every other alert in the same file correctly uses the bare :name token (Lines 95, 98, 101). Laravel's translator only replaces tokens of the form :key; ': jméno' does not match, so the alert title will be rendered literally.
🐛 Proposed fix
- 'title' => '<code>: jméno</code> je příliš dlouhé!',
+ 'title' => '<code>:name</code> je příliš dlouhé!',📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| 'file_too_large' => [ | |
| 'title' => '<code>: jméno</code> je příliš dlouhé!', | |
| 'body' => 'Maximum je :max', | |
| ], | |
| 'file_too_large' => [ | |
| 'title' => '<code>:name</code> je příliš dlouhé!', | |
| 'body' => 'Maximum je :max', | |
| ], |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@czech-language/lang/cs/server/file.php` around lines 90 - 93, The title for
the 'file_too_large' translation uses the wrong placeholder " : jméno" so
Laravel won't replace the filename; update the 'title' value inside the
'file_too_large' entry to use the correct token :name (no space, English key) so
it matches other entries and will be substituted at runtime.
|
|
||
| 'confirmed' => 'Potvrzení :attribute se neshoduje.', | ||
| 'date' => ':attribute není platné datum.', | ||
| 'date_format' => ':attribute neodpovídá formátu :formát.', |
There was a problem hiding this comment.
Invalid placeholder :formát — diacritic prevents substitution.
Laravel's date_format rule injects the format string under the key format, not formát. The accented character means :formát will appear literally in the error message.
🐛 Proposed fix
- 'date_format' => ':attribute neodpovídá formátu :formát.',
+ 'date_format' => ':attribute neodpovídá formátu :format.',📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| 'date_format' => ':attribute neodpovídá formátu :formát.', | |
| 'date_format' => ':attribute neodpovídá formátu :format.', |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@czech-language/lang/cs/validation.php` at line 34, The translation for the
'date_format' validation message uses an accented placeholder ':formát' which
prevents Laravel from substituting the format value; update the message string
for the 'date_format' key to use the correct placeholder ':format' (i.e.,
replace ':formát' with ':format') so the framework can inject the format value.
| 'mimes' => 'Atribut: musí být soubor typu: :values.', | ||
| 'mimetypes' => 'Atribut: musí být soubor typu: :values.', |
There was a problem hiding this comment.
Atribut: is not a placeholder — field name will never be substituted.
Atribut: (Czech noun + colon) is not the :attribute placeholder. Laravel will not replace it with the actual field name, so every mimes/mimetypes validation error will display a static "Atribut:" prefix.
🐛 Proposed fix
- 'mimes' => 'Atribut: musí být soubor typu: :values.',
- 'mimetypes' => 'Atribut: musí být soubor typu: :values.',
+ 'mimes' => ':attribute musí být soubor typu: :values.',
+ 'mimetypes' => ':attribute musí být soubor typu: :values.',📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| 'mimes' => 'Atribut: musí být soubor typu: :values.', | |
| 'mimetypes' => 'Atribut: musí být soubor typu: :values.', | |
| 'mimes' => ':attribute musí být soubor typu: :values.', | |
| 'mimetypes' => ':attribute musí být soubor typu: :values.', |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@czech-language/lang/cs/validation.php` around lines 56 - 57, The 'mimes' and
'mimetypes' messages use the literal "Atribut:" instead of the Laravel
placeholder, so replace the static "Atribut:" with the placeholder ':attribute'
(preserving spacing/punctuation) in the 'mimes' and 'mimetypes' entries in
validation.php so Laravel will substitute the actual field name (e.g. change
"Atribut: musí být soubor typu: :values." to ":attribute musí být soubor typu:
:values.").
| 'min' => [ | ||
| 'numeric' => ':attribute musí být alespoň :min.', | ||
| 'file' => ':attribute musí být alespoň :min kilobajtů.', | ||
| 'string' => 'Atribut musí být dlouhý alespoň :min znaků.', | ||
| 'array' => ':attribute musí obsahovat alespoň :min položek.', | ||
| ], |
There was a problem hiding this comment.
Hardcoded Atribut in min.string — field name will not be substituted.
'string' => 'Atribut musí být dlouhý alespoň :min znaků.' uses a hardcoded Czech noun instead of the :attribute placeholder. All min string validation errors will always display "Atribut" regardless of the actual field name.
🐛 Proposed fix
- 'string' => 'Atribut musí být dlouhý alespoň :min znaků.',
+ 'string' => ':attribute musí být dlouhý alespoň :min znaků.',🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@czech-language/lang/cs/validation.php` around lines 58 - 63, The 'min.string'
translation in validation.php uses a hardcoded Czech noun "Atribut" instead of
the placeholder, so replace the literal "Atribut" with the :attribute
placeholder in the 'min' => ['string' => ...] entry (same key path) so the
actual field name is substituted at runtime; update the message to use
:attribute and keep the rest of the text and :min placeholder intact.
| 'string' => ':attribute musí mít :size znaků.', | ||
| 'array' => ':attribute musí obsahovat :size položek.', | ||
| ], | ||
| 'string' => 'Atribut musí být textový řetězec.', |
There was a problem hiding this comment.
Hardcoded Atribut in root string rule — field name will not be substituted.
Same pattern as min.string: the :attribute placeholder is absent, so the error message always reads "Atribut musí být textový řetězec." rather than naming the offending field.
🐛 Proposed fix
- 'string' => 'Atribut musí být textový řetězec.',
+ 'string' => ':attribute musí být textový řetězec.',📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| 'string' => 'Atribut musí být textový řetězec.', | |
| 'string' => ':attribute musí být textový řetězec.', |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@czech-language/lang/cs/validation.php` at line 78, The root 'string'
validation message is hardcoded ("Atribut musí být textový řetězec.") so the
field name isn't substituted; update the 'string' entry in validation.php to use
the :attribute placeholder (matching the style used in 'min.string') by
replacing "Atribut" with ":attribute" so the offending field name is inserted
into the error message.
Adding czech translations for Pelicans interface
Summary by CodeRabbit
Czech Language Support Added
New Features