Skip to content

Comments

Add translations for czech language#112

Closed
Hampap wants to merge 2 commits intopelican-dev:mainfrom
Hampap:czech-language
Closed

Add translations for czech language#112
Hampap wants to merge 2 commits intopelican-dev:mainfrom
Hampap:czech-language

Conversation

@Hampap
Copy link

@Hampap Hampap commented Feb 22, 2026

Adding czech translations for Pelicans interface

Summary by CodeRabbit

Czech Language Support Added

New Features

  • Added comprehensive Czech language support to the panel, enabling users to interact with the entire interface in Czech
  • Includes complete translations for administrative interfaces, server management, authentication, user profiles, email communications, and system notifications
  • Supports Czech translations for validation messages, error handling, command outputs, and system-wide notifications
  • Covers dashboard, settings, logs, databases, and user management areas

	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
@coderabbitai
Copy link
Contributor

coderabbitai bot commented Feb 22, 2026

📝 Walkthrough

Walkthrough

This 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

Cohort / File(s) Summary
Plugin Infrastructure
plugin.json, README.md, czech-language/src/CzechLanguagePlugin.php, czech-language/README.md
New plugin metadata, class implementation, and documentation for the Czech Language plugin.
Admin Module Translations
czech-language/lang/cs/admin/*
Comprehensive translation files for admin panels including: API keys, dashboard, database hosts, eggs, health checks, logs, mounts, nodes, plugins, roles, servers, settings, users, and webhooks.
Server Module Translations
czech-language/lang/cs/server/*
Translation arrays for server management features: activity, backups, console, dashboard, databases, files, network, schedules, settings, startup, and users with permission descriptions.
Core & Feature Translations
czech-language/lang/cs/activity.php, auth.php, command/messages.php, commands.php, exceptions.php, installer.php, mail.php, notifications.php, profile.php, search.php, validation.php
Translation files for authentication, activity logging, commands, exceptions, installer, mail templates, notifications, user profiles, search, and form validation.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~12 minutes

Suggested reviewers

  • lajczi

Poem

🐰 A Czech translation hops with glee,
Thirty files of words now free,
From server logs to admin screens,
The finest translations you've ever seen!

🚥 Pre-merge checks | ✅ 2 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'Add translations for czech language' directly and clearly describes the main objective of the changeset, which adds comprehensive Czech language translation files throughout the codebase.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
  • 📝 Generate docstrings (stacked PR)
  • 📝 Generate docstrings (commit on current branch)
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@Hampap Hampap marked this pull request as ready for review February 22, 2026 14:01
@Hampap
Copy link
Author

Hampap commented Feb 22, 2026

CI is failing due to the single_quote rule in the Czech language files.

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.

@Boy132
Copy link
Member

Boy132 commented Feb 22, 2026

Translations for the panel itself are managed via Crowdin. Czech does already exist.

@Boy132 Boy132 closed this Feb 22, 2026
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 | 🟡 Minor

Trailing period on all_eggs is inconsistent with all_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_plural is identical to model_label and 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 | 🟡 Minor

Inconsistent "email" orthography within the same file.

The file uses three different forms: E-mail (Line 9), Email (Line 22), and e-mailu (Line 23). Czech orthography standardises on e-mail; the unhyphenated Email on Line 22 is the odd one out.

🐛 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 | 🟡 Minor

Missing 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 | 🟡 Minor

Inconsistent 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 | 🟡 Minor

Minor 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 | 🟡 Minor

Misleading SFTP username label: 'Přezdívka' (nickname) should be 'Uživatelské jméno'.

Every other file in this PR (e.g., command/messages.php line 13, server/database.php line 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 | 🟡 Minor

Typo: '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 | 🟡 Minor

Two 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 in server/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 | 🟡 Minor

Two 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 | 🟡 Minor

Typo: verzyverze (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é or nevhodné.

🤖 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 | 🟡 Minor

Duplicate 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čteno is a past participle ("has been read"). A permission level label should use the substantive form Čtení (reading / read access), consistent with how read_write is rendered as Čtení / zápis on 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_allocation and primary_allocation share the same translation — likely a copy-paste error.

These are distinct UI strings. primary_allocation should 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 | 🟡 Minor

Mistranslation: "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 | 🟡 Minor

Typo: "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.). dead should 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 | 🟡 Minor

Trailing spaces in link and unlink values.

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

swap mistranslated 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 | 🟡 Minor

Capitalization 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 | 🟡 Minor

Wrong Czech preposition in user_removed body — reads "removed to server" instead of "removed from server".

do means "to"; the preposition for removal from a place must be ze.

✏️ 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_variables tab 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 | 🟡 Minor

Language 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 | 🟡 Minor

Plural keys map to singular Czech forms — UI labels will be grammatically incorrect.

minutes, hours, days, and months hold 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 | 🟡 Minor

Untranslated 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_term and search_for_term share 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' for search_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 a panel_version constraint.

"panel_version": null means 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

📥 Commits

Reviewing files that changed from the base of the PR and between f80b95d and e127670.

📒 Files selected for processing (40)
  • README.md
  • czech-language/README.md
  • czech-language/lang/cs/activity.php
  • czech-language/lang/cs/admin/apikey.php
  • czech-language/lang/cs/admin/dashboard.php
  • czech-language/lang/cs/admin/databasehost.php
  • czech-language/lang/cs/admin/egg.php
  • czech-language/lang/cs/admin/health.php
  • czech-language/lang/cs/admin/log.php
  • czech-language/lang/cs/admin/mount.php
  • czech-language/lang/cs/admin/node.php
  • czech-language/lang/cs/admin/plugin.php
  • czech-language/lang/cs/admin/role.php
  • czech-language/lang/cs/admin/server.php
  • czech-language/lang/cs/admin/setting.php
  • czech-language/lang/cs/admin/user.php
  • czech-language/lang/cs/admin/webhook.php
  • czech-language/lang/cs/auth.php
  • czech-language/lang/cs/command/messages.php
  • czech-language/lang/cs/commands.php
  • czech-language/lang/cs/exceptions.php
  • czech-language/lang/cs/installer.php
  • czech-language/lang/cs/mail.php
  • czech-language/lang/cs/notifications.php
  • czech-language/lang/cs/profile.php
  • czech-language/lang/cs/search.php
  • czech-language/lang/cs/server/activity.php
  • czech-language/lang/cs/server/backup.php
  • czech-language/lang/cs/server/console.php
  • czech-language/lang/cs/server/dashboard.php
  • czech-language/lang/cs/server/database.php
  • czech-language/lang/cs/server/file.php
  • czech-language/lang/cs/server/network.php
  • czech-language/lang/cs/server/schedule.php
  • czech-language/lang/cs/server/setting.php
  • czech-language/lang/cs/server/startup.php
  • czech-language/lang/cs/server/user.php
  • czech-language/lang/cs/validation.php
  • czech-language/plugin.json
  • czech-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 a make() 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 required getId() 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$panel is required by the Plugin interface contract and cannot be removed.

Both methods being empty is intentional. The PirateLanguagePlugin follows the identical pattern, and the framework auto-discovers translation files from the lang/ directory by convention. No plugins in this codebase use explicit translation loading methods like loadTranslationsFrom(), 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>',
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

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.

Suggested change
'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ů',
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

🧩 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 1

Repository: 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 -100

Repository: 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 -20

Repository: 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 -20

Repository: 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 -150

Repository: 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 -150

Repository: 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 -20

Repository: 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" -i

Repository: 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 3

Repository: pelican-dev/plugins

Length of output: 45


🏁 Script executed:

# Find PHP files related to WordPress activities
fd "Activity\|activity" --type f --extension php | head -30

Repository: 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 -20

Repository: 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 -20

Repository: pelican-dev/plugins

Length of output: 45


🏁 Script executed:

# Find all directories to understand the structure
ls -la

Repository: 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 2

Repository: 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 -20

Repository: pelican-dev/plugins

Length of output: 45


🏁 Script executed:

# Check what plugins exist
git ls-files | grep -E "^[^/]+/$" | sort | uniq

Repository: pelican-dev/plugins

Length of output: 45


🏁 Script executed:

# Check if there's a reference to the main source in this repository
cat README.md

Repository: 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 php

Repository: 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.renameRenamed :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

  1. Check lang/<locale>/activity.php['server']['sftp']['rename'] and replace :z with :to.
  2. Clear/rebuild caches (Laravel) after changing translations.
  3. 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:


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.

Suggested change
'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',
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

🏁 Script executed:

# First, locate and examine the file
fd -t f "activity.php" | head -20

Repository: 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"
fi

Repository: 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 -i

Repository: 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.

Suggested change
'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í!",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

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.

Suggested change
'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.

Comment on lines +63 to +72
'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>
',
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

Corrupted commands inside allow_external_access HTML — wrong filename, missing find, broken IP address.

Three distinct copy-paste/OCR artifacts will mislead users:

  1. my. nf (×2, lines 66 & 68) — should be my.cnf
  2. /etc -iname my.cnf (line 66) — missing find; should be find /etc -iname my.cnf
  3. bind-address=0. .0. (line 69) — should be bind-address=0.0.0.0
  4. "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.

Suggested change
'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.

Comment on lines +90 to +93
'file_too_large' => [
'title' => '<code>: jméno</code> je příliš dlouhé!',
'body' => 'Maximum je :max',
],
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

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.

Suggested change
'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.',
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

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.

Suggested change
'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.

Comment on lines +56 to +57
'mimes' => 'Atribut: musí být soubor typu: :values.',
'mimetypes' => 'Atribut: musí být soubor typu: :values.',
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

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.

Suggested change
'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.").

Comment on lines +58 to +63
'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.',
],
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

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.',
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

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.

Suggested change
'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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants