From 5d0eb16db03624f4248bd7667c79445a74ca096d Mon Sep 17 00:00:00 2001 From: VentyCZ Date: Thu, 29 Jan 2026 22:35:50 +0100 Subject: [PATCH 1/3] Init cs locale --- config/i18n.ts | 14 +- i18n/locales/cs-CZ.json | 728 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 735 insertions(+), 7 deletions(-) create mode 100644 i18n/locales/cs-CZ.json diff --git a/config/i18n.ts b/config/i18n.ts index 9da86517..6228332e 100644 --- a/config/i18n.ts +++ b/config/i18n.ts @@ -190,13 +190,13 @@ const locales: (Omit & { code: string })[] = [ const name = new Intl.PluralRules('uk-UA').select(choice) return { zero: 0, one: 1, two: 0 /!* not used *!/, few: 2, many: 3, other: 4 }[name] }, - }, - { - code: 'cs-CZ', - file: 'cs-CZ.json', - name: 'Česky', - }, - { + },*/ + { + code: 'cs-CZ', + file: 'cs-CZ.json', + name: 'Čeština', + }, + /*{ code: 'pl-PL', file: 'pl-PL.json', name: 'Polski', diff --git a/i18n/locales/cs-CZ.json b/i18n/locales/cs-CZ.json new file mode 100644 index 00000000..d74f2e66 --- /dev/null +++ b/i18n/locales/cs-CZ.json @@ -0,0 +1,728 @@ +{ + "seo": { + "home": { + "title": "npmx - Prohlížeč balíčků pro registr npm", + "description": "Lepší prohlížeč pro registr npm. Vyhledávejte, prohlížejte a objevujte balíčky v moderním rozhraní." + } + }, + "tagline": "lepší prohlížeč pro registr npm", + "non_affiliation_disclaimer": "není spojen s npm, Inc.", + "trademark_disclaimer": "npm je registrovaná ochranná známka společnosti npm, Inc. Tato stránka není spojena s npm, Inc.", + "footer": { + "about": "o projektu", + "docs": "dokumentace", + "source": "zdrojový kód", + "social": "sociální sítě", + "chat": "chat" + }, + "search": { + "label": "Search npm packages", + "placeholder": "search packages...", + "button": "search", + "clear": "Clear search", + "searching": "Searching...", + "found_packages": "Found {count} packages", + "updating": "(updating...)", + "no_results": "No packages found for \"{query}\"", + "results": "Search results", + "not_taken": "{name} is not taken", + "claim_prompt": "Claim this package name on npm", + "claim_button": "Claim \"{name}\"", + "want_to_claim": "Want to claim this package name?", + "start_typing": "Start typing to search packages", + "exact_match": "exact", + "suggestion": { + "user": "user", + "org": "org", + "view_user_packages": "View packages by this user", + "view_org_packages": "View packages by this organization" + } + }, + "nav": { + "main_navigation": "Main", + "popular_packages": "Popular packages", + "search": "search", + "settings": "settings", + "back": "back" + }, + "settings": { + "title": "settings", + "tagline": "customize your npmx experience", + "meta_description": "Customize your npmx.dev experience with theme, language, and display preferences.", + "sections": { + "appearance": "Appearance", + "display": "Display", + "language": "Language" + }, + "relative_dates": "Relative dates", + "relative_dates_description": "Show \"3 days ago\" instead of full dates", + "include_types": "Include {'@'}types in install", + "include_types_description": "Add {'@'}types package to install commands for untyped packages", + "hide_platform_packages": "Hide platform-specific packages in search", + "hide_platform_packages_description": "Hide native binary packages like {'@'}esbuild/linux-x64 from results", + "theme": "Theme", + "theme_light": "Light", + "theme_dark": "Dark", + "theme_system": "System", + "language": "Language", + "help_translate": "Help translate npmx", + "accent_colors": "Accent colors", + "clear_accent": "Clear accent color", + "translation_progress": "Translation progress" + }, + "i18n": { + "missing_keys": "{count} missing translation | {count} missing translations", + "copy_keys": "Copy keys", + "show_more_keys": "Show {count} more...", + "contribute_hint": "Help improve this translation by adding the missing keys.", + "edit_on_github": "Edit on GitHub", + "view_guide": "Translation guide" + }, + "common": { + "loading": "Loading...", + "loading_more": "Loading more...", + "loading_packages": "Loading packages...", + "end_of_results": "End of results", + "try_again": "Try again", + "close": "Close", + "retry": "Retry", + "copy": "copy", + "copied": "copied!", + "skip_link": "Skip to main content", + "close_modal": "Close modal", + "show_more": "show more", + "warnings": "Warnings:", + "go_back_home": "Go back home", + "view_on_npm": "view on npm", + "per_week": "/ week", + "sort": { + "name": "name", + "role": "role", + "members": "members" + }, + "scroll_to_top": "Scroll to top" + }, + "package": { + "not_found": "Package Not Found", + "not_found_message": "The package could not be found.", + "no_description": "No description provided", + "show_full_description": "Show full description", + "not_latest": "(not latest)", + "verified_provenance": "Verified provenance", + "view_permalink": "View permalink for this version", + "navigation": "Package navigation", + "deprecation": { + "package": "This package has been deprecated.", + "version": "This version has been deprecated.", + "no_reason": "No reason provided" + }, + "stats": { + "license": "License", + "deps": "Deps", + "install_size": "Install Size", + "vulns": "Vulns", + "updated": "Updated", + "view_dependency_graph": "View dependency graph", + "inspect_dependency_tree": "Inspect dependency tree" + }, + "links": { + "repo": "repo", + "homepage": "homepage", + "issues": "issues", + "jsr": "jsr", + "code": "code", + "docs": "docs", + "fund": "fund" + }, + "docs": { + "not_available": "Docs not available", + "not_available_detail": "We could not generate docs for this version." + }, + "get_started": { + "title": "Get started", + "pm_label": "Package manager", + "copy_command": "Copy install command", + "view_types": "View {package}" + }, + "create": { + "title": "Create new project", + "copy_command": "Copy create command" + }, + "run": { + "title": "Run", + "locally": "Run locally" + }, + "readme": { + "title": "Readme", + "no_readme": "No README available.", + "view_on_github": "View on GitHub" + }, + "keywords_title": "Keywords", + "compatibility": "Compatibility", + "card": { + "publisher": "Publisher", + "updated": "Updated", + "weekly_downloads": "Weekly downloads", + "keywords": "Keywords", + "license": "License" + }, + "versions": { + "title": "Versions", + "collapse": "Collapse {tag}", + "expand": "Expand {tag}", + "collapse_other": "Collapse other versions", + "expand_other": "Expand other versions", + "collapse_major": "Collapse major {major}", + "expand_major": "Expand major {major}", + "other_versions": "Other versions", + "more_tagged": "{count} more tagged", + "all_covered": "All versions are covered by tags above", + "deprecated_title": "{version} (deprecated)" + }, + "dependencies": { + "title": "Dependencies ({count})", + "list_label": "Package dependencies", + "show_all": "show all {count} deps", + "optional": "optional", + "view_vulnerabilities": "View vulnerabilities" + }, + "peer_dependencies": { + "title": "Peer Dependencies ({count})", + "list_label": "Package peer dependencies", + "show_all": "show all {count} peer deps" + }, + "optional_dependencies": { + "title": "Optional Dependencies ({count})", + "list_label": "Package optional dependencies", + "show_all": "show all {count} optional deps" + }, + "maintainers": { + "title": "Maintainers", + "list_label": "Package maintainers", + "you": "(you)", + "via": "via {teams}", + "remove_owner": "Remove {name} as owner", + "username_to_add": "Username to add as owner", + "username_placeholder": "username...", + "add_button": "add", + "cancel_add": "Cancel adding owner", + "add_owner": "+ Add owner", + "show_more": "(show {count} more)", + "show_less": "(show fewer)" + }, + "downloads": { + "title": "Weekly Downloads", + "date_range": "{start} to {end}", + "analyze": "Analyze downloads", + "modal_title": "Downloads", + "granularity": "Granularity", + "granularity_daily": "Daily", + "granularity_weekly": "Weekly", + "granularity_monthly": "Monthly", + "granularity_yearly": "Yearly", + "start_date": "Start", + "end_date": "End", + "no_data": "No download data available", + "loading": "Loading...", + "y_axis_label": "{granularity} downloads", + "download_file": "Download {fileType}", + "toggle_annotator": "Toggle annotator" + }, + "install_scripts": { + "title": "Install Scripts", + "script_label": "(script)", + "npx_packages": "{count} npx package | {count} npx packages", + "currently": "currently {version}" + }, + "playgrounds": { + "title": "Try it out", + "choose": "choose playground" + }, + "metrics": { + "esm": "ES Modules supported", + "cjs": "CommonJS supported", + "no_esm": "No ES Modules support", + "types_included": "Types included", + "types_available": "Types available via {package}", + "no_types": "No TypeScript types" + }, + "license": { + "view_spdx": "View license text on SPDX" + }, + "vulnerabilities": { + "no_description": "No description available", + "found": "{count} vulnerability found | {count} vulnerabilities found", + "deps_found": "{count} vulnerability found | {count} vulnerabilities found", + "deps_affected": "{count} dependency affected | {count} dependencies affected", + "tree_found": "{vulns} vulnerability in {packages}/{total} packages | {vulns} vulnerabilities in {packages}/{total} packages", + "scanning_tree": "Scanning dependency tree...", + "show_all_packages": "show all {count} affected packages", + "no_summary": "No summary", + "view_details": "View vulnerability details", + "path": "path", + "more": "+{count} more", + "packages_failed": "{count} package could not be checked | {count} packages could not be checked", + "no_known": "No known vulnerabilities in {count} packages", + "scan_failed": "Could not scan for vulnerabilities", + "depth": { + "root": "This package", + "direct": "Direct dependency", + "transitive": "Transitive dependency (indirect)" + }, + "severity": { + "critical": "critical", + "high": "high", + "moderate": "moderate", + "low": "low" + } + }, + "access": { + "title": "Team Access", + "refresh": "Refresh team access", + "list_label": "Team access list", + "owner": "owner", + "rw": "rw", + "ro": "ro", + "revoke_access": "Revoke {name} access", + "no_access": "No team access configured", + "select_team_label": "Select team", + "loading_teams": "Loading teams...", + "select_team": "Select team", + "permission_label": "Permission level", + "permission": { + "read_only": "read-only", + "read_write": "read-write" + }, + "grant_button": "grant", + "cancel_grant": "Cancel granting access", + "grant_access": "+ Grant team access" + }, + "list": { + "filter_label": "Filter packages", + "filter_placeholder": "Filter packages...", + "sort_label": "Sort packages", + "showing_count": "Showing {filtered} of {total} packages" + }, + "skeleton": { + "loading": "Loading package details", + "license": "License", + "weekly": "Weekly", + "size": "Size", + "deps": "Deps", + "updated": "Updated", + "install": "Install", + "readme": "Readme", + "maintainers": "Maintainers", + "keywords": "Keywords", + "versions": "Versions", + "dependencies": "Dependencies" + }, + "sort": { + "downloads": "Most downloaded", + "updated": "Recently updated", + "name_asc": "Name (A-Z)", + "name_desc": "Name (Z-A)" + } + }, + "connector": { + "status": { + "connecting": "connecting...", + "connected_as": "connected as {'@'}{user}", + "connected": "connected", + "connect_cli": "connect local CLI", + "aria_connecting": "Connecting to local connector", + "aria_connected": "Connected to local connector", + "aria_click_to_connect": "Click to connect to local connector", + "avatar_alt": "{user}'s avatar" + }, + "modal": { + "title": "Local Connector", + "close_modal": "Close modal", + "connected": "Connected", + "logged_in_as": "Logged in as {'@'}{user}", + "connected_hint": "You can now manage packages and organizations from the web UI.", + "disconnect": "Disconnect", + "run_hint": "Run the connector on your machine to enable admin features.", + "copy_command": "Copy command", + "copied": "Copied", + "paste_token": "Then paste the token below to connect:", + "token_label": "Token", + "token_placeholder": "paste token here...", + "advanced": "Advanced options", + "port_label": "Port", + "warning": "WARNING", + "warning_text": "This allows npmx to access your npm CLI. Only connect to sites you trust.", + "connect": "Connect", + "connecting": "Connecting..." + } + }, + "operations": { + "queue": { + "title": "Operations Queue", + "clear_all": "clear all", + "refresh": "Refresh operations", + "empty": "No operations queued", + "empty_hint": "Add operations from package or org pages", + "active_label": "Active operations", + "otp_required": "OTP required", + "otp_prompt": "Enter OTP to continue", + "otp_placeholder": "Enter OTP code...", + "otp_label": "One-time password", + "retry_otp": "Retry with OTP", + "retrying": "Retrying...", + "approve_operation": "Approve operation", + "remove_operation": "Remove operation", + "approve_all": "Approve All", + "execute": "Execute", + "executing": "Executing...", + "log": "Log", + "log_label": "Completed operations log", + "remove_from_log": "Remove from log" + } + }, + "org": { + "teams": { + "title": "Teams", + "refresh": "Refresh teams", + "filter_label": "Filter teams", + "filter_placeholder": "Filter teams...", + "sort_by": "Sort by", + "loading": "Loading teams...", + "no_teams": "No teams found", + "list_label": "Organization teams", + "delete_team": "Delete team {name}", + "member_count": "{count} member | {count} members", + "members_of": "Members of {team}", + "no_members": "No members", + "remove_user": "Remove {user} from team", + "username_to_add": "Username to add to {team}", + "username_placeholder": "username...", + "add_button": "add", + "cancel_add_user": "Cancel adding user", + "add_member": "+ Add member", + "team_name_label": "Team name", + "team_name_placeholder": "team-name...", + "create_button": "create", + "no_match": "No teams match \"{query}\"", + "cancel_create": "Cancel creating team", + "create_team": "+ Create team" + }, + "members": { + "title": "Members", + "refresh": "Refresh members", + "filter_label": "Filter members", + "filter_placeholder": "Filter members...", + "filter_by_role": "Filter by role", + "filter_by_team": "Filter by team", + "all_teams": "all teams", + "sort_by": "Sort by", + "loading": "Loading members...", + "no_members": "No members found", + "list_label": "Organization members", + "change_role_for": "Change role for {name}", + "remove_from_org": "Remove {name} from org", + "view_team": "View {team} team", + "no_match": "No members match your filters", + "username_label": "Username", + "username_placeholder": "username...", + "role_label": "Role", + "role": { + "all": "all", + "developer": "developer", + "admin": "admin", + "owner": "owner" + }, + "team_label": "Team", + "no_team": "no team", + "add_button": "add", + "cancel_add": "Cancel adding member", + "add_member": "+ Add member" + }, + "public_packages": "{count} public package | {count} public packages", + "page": { + "packages_title": "Packages", + "members_tab": "Members", + "teams_tab": "Teams", + "no_packages": "No public packages found for", + "no_packages_hint": "This organization may not exist or has no public packages.", + "failed_to_load": "Failed to load organization packages", + "no_match": "No packages match \"{query}\"", + "not_found": "Organization not found", + "not_found_message": "The organization \"{'@'}{name}\" does not exist on npm", + "filter_placeholder": "Filter {count} packages..." + } + }, + "user": { + "combobox": { + "add_to_org_hint": "(will also add to org)", + "press_enter_to_add": "Press Enter to add {'@'}{username}", + "default_placeholder": "username...", + "suggestions_label": "User suggestions" + }, + "page": { + "packages_title": "Packages", + "no_packages": "No public packages found for", + "no_packages_hint": "This user may not exist or has no public packages.", + "failed_to_load": "Failed to load user packages", + "no_match": "No packages match \"{query}\"", + "filter_placeholder": "Filter {count} packages..." + }, + "orgs_page": { + "title": "Organizations", + "back_to_profile": "Back to profile", + "connect_required": "Connect the local CLI to view your organizations.", + "connect_hint_prefix": "Run", + "connect_hint_suffix": "to get started.", + "own_orgs_only": "You can only view your own organizations.", + "view_your_orgs": "View your organizations", + "loading": "Loading organizations...", + "empty": "No organizations found.", + "empty_hint": "Organizations are detected from your scoped packages.", + "count": "{count} Organization | {count} Organizations", + "packages_count": "{count} package | {count} packages" + } + }, + "claim": { + "modal": { + "title": "Claim Package Name", + "close_modal": "Close modal", + "success": "Package claimed!", + "success_detail": "{name}{'@'}0.0.0 has been published to npm.", + "success_hint": "You can now publish new versions to this package using npm publish.", + "view_package": "View Package", + "invalid_name": "Invalid package name:", + "available": "This name is available!", + "taken": "This name is already taken.", + "similar_warning": "Similar packages exist - npm may reject this name:", + "related": "Related packages:", + "scope_warning_title": "Consider using a scoped package instead", + "scope_warning_text": "Unscoped package names are a shared resource. Only claim a name if you intend to publish and maintain a package. For personal or organizational projects, use a scoped name like {'@'}{username}/{name}.", + "connect_required": "Connect to the local connector to claim this package name.", + "connect_button": "Connect to Connector", + "publish_hint": "This will publish a minimal placeholder package.", + "preview_json": "Preview package.json", + "claim_button": "Claim Package Name", + "publishing": "Publishing...", + "checking": "Checking availability...", + "failed_to_check": "Failed to check name availability", + "failed_to_claim": "Failed to claim package" + } + }, + "code": { + "files_label": "Files", + "no_files": "No files in this directory", + "select_version": "Select version", + "root": "root", + "lines": "{count} lines", + "toggle_tree": "Toggle file tree", + "close_tree": "Close file tree", + "copy_link": "Copy link", + "raw": "Raw", + "view_raw": "View raw file", + "file_too_large": "File too large to preview", + "file_size_warning": "{size} exceeds the 500KB limit for syntax highlighting", + "load_anyway": "Load anyway", + "failed_to_load": "Failed to load file", + "unavailable_hint": "The file may be too large or unavailable", + "version_required": "Version is required to browse code", + "go_to_package": "Go to package", + "loading_tree": "Loading file tree...", + "failed_to_load_tree": "Failed to load files for this package version", + "back_to_package": "Back to package", + "table": { + "name": "Name", + "size": "Size" + } + }, + "badges": { + "provenance": { + "verified": "verified", + "verified_title": "Verified provenance", + "verified_via": "Verified: published via {provider}" + }, + "jsr": { + "title": "also available on JSR", + "label": "jsr" + } + }, + "filters": { + "title": "Filters", + "search": "Search", + "search_scope": "Search scope", + "search_placeholder_name": "Filter by package name...", + "search_placeholder_description": "Filter by description...", + "search_placeholder_keywords": "Filter by keywords...", + "search_placeholder_all": "Search all or use name: desc: kw:", + "scope_name": "Name", + "scope_name_description": "Search package names only", + "scope_description": "Description", + "scope_description_description": "Search descriptions only", + "scope_keywords": "Keywords", + "scope_keywords_description": "Search keywords only", + "scope_all": "All", + "scope_all_description": "Search all fields, supports name: desc: kw: operators", + "weekly_downloads": "Weekly downloads", + "updated_within": "Updated within", + "security": "Security", + "keywords": "Keywords", + "more_keywords": "+{count} more", + "clear_all": "Clear all", + "remove_filter": "Remove {label} filter", + "download_range": { + "any": "Any", + "lt100": "< 100", + "100_1k": "100 - 1K", + "1k_10k": "1K - 10K", + "10k_100k": "10K - 100K", + "gt100k": "> 100K" + }, + "updated": { + "any": "Any time", + "week": "Past week", + "month": "Past month", + "quarter": "Past 3 months", + "year": "Past year" + }, + "security_options": { + "all": "All packages", + "secure": "Without warnings", + "insecure": "With warnings" + }, + "sort": { + "label": "Sort packages", + "toggle_direction": "Toggle sort direction", + "ascending": "Ascending", + "descending": "Descending", + "relevance": "Relevance", + "downloads_week": "Downloads/wk", + "downloads_day": "Downloads/day", + "downloads_month": "Downloads/mo", + "downloads_year": "Downloads/yr", + "updated": "Last Updated", + "name": "Name", + "quality": "Quality", + "popularity": "Popularity", + "maintenance": "Maintenance", + "score": "Score" + }, + "columns": { + "title": "Columns", + "show": "Show columns", + "reset": "Reset to defaults", + "coming_soon": "Coming soon", + "name": "Name", + "version": "Version", + "description": "Description", + "downloads": "Downloads/wk", + "updated": "Last Updated", + "maintainers": "Maintainers", + "keywords": "Keywords", + "quality_score": "Quality score", + "popularity_score": "Popularity score", + "maintenance_score": "Maintenance score", + "combined_score": "Combined score", + "security": "Security" + }, + "view_mode": { + "label": "View mode", + "cards": "Card view", + "table": "Table view" + }, + "pagination": { + "mode_label": "Pagination mode", + "infinite": "Infinite", + "paginated": "Paginated", + "items_per_page": "Items per page", + "per_page": "{count} / page", + "all_yolo": "All (YOLO)", + "showing": "{start}-{end} of {total}", + "previous": "Previous page", + "next": "Next page", + "nav_label": "Pagination" + }, + "count": { + "showing_filtered": "{filtered} of {total} packages", + "showing_all": "{total} packages", + "showing_paginated": "{pageSize} of {total} packages" + }, + "table": { + "security_warning": "Security warning", + "secure": "Secure", + "no_packages": "No packages found" + } + }, + "about": { + "title": "About", + "heading": "about", + "meta_description": "npmx is a fast, modern browser for the npm registry. A better UX/DX for exploring npm packages.", + "back_home": "back to home", + "what_we_are": { + "title": "What we are", + "better_ux_dx": "better UX/DX", + "admin_ui": "admin UI", + "description": "npmx is a {betterUxDx} for the npm package registry and tooling. We provide a fast, modern interface for exploring packages, with features like dark mode, keyboard navigation, code browsing, and connections to alternative registries like {jsr}.", + "admin_description": "We also aim to provide a better {adminUi} for managing your packages, teams, and organizations — all from the browser, powered by your local npm CLI." + }, + "what_we_are_not": { + "title": "What we're not", + "not_package_manager": "Not a package manager.", + "not_registry": "Not a registry.", + "registry_description": "We don't host packages. We're just a better way to browse them.", + "package_managers_exist": "{already} {people} {building} {really} {cool} {package} {managers}.", + "words": { + "already": "There are", + "people": "already", + "building": "people", + "really": "building", + "cool": "really", + "package": "cool", + "managers": "package managers" + } + }, + "contributors": { + "title": "Contributors", + "description": "npmx is fully open source, built by an amazing community of contributors. Join us and let's build the npm browsing experience we always wanted, together.", + "loading": "Loading contributors...", + "error": "Failed to load contributors", + "view_profile": "View {name}'s GitHub profile" + }, + "get_involved": { + "title": "Get involved", + "contribute": { + "title": "Contribute", + "description": "Help us build a better npm experience.", + "cta": "View on GitHub" + }, + "community": { + "title": "Join the community", + "description": "Chat, ask questions, and share ideas.", + "cta": "Join Discord" + }, + "follow": { + "title": "Stay updated", + "description": "Find out the latest on npmx.", + "cta": "Follow on Bluesky" + } + } + }, + "header": { + "home": "npmx home", + "github": "GitHub", + "packages": "packages", + "packages_dropdown": { + "title": "Your Packages", + "loading": "Loading...", + "error": "Failed to load packages", + "empty": "No packages found", + "view_all": "View all" + }, + "orgs": "orgs", + "orgs_dropdown": { + "title": "Your Organizations", + "loading": "Loading...", + "error": "Failed to load organizations", + "empty": "No organizations found", + "view_all": "View all" + } + } +} From 7ac22cc9fb75271c51c6be2e8bd868bdba672901 Mon Sep 17 00:00:00 2001 From: VentyCZ Date: Thu, 29 Jan 2026 23:24:39 +0100 Subject: [PATCH 2/3] Add plural rule --- config/i18n.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/config/i18n.ts b/config/i18n.ts index 6228332e..3acad0ad 100644 --- a/config/i18n.ts +++ b/config/i18n.ts @@ -195,6 +195,10 @@ const locales: (Omit & { code: string })[] = [ code: 'cs-CZ', file: 'cs-CZ.json', name: 'Čeština', + pluralRule: (choice: number) => { + const name = new Intl.PluralRules('cs-CZ').select(choice) + return { zero: 0, one: 1, two: 0, few: 2, many: 0, other: 3 }[name] + }, }, /*{ code: 'pl-PL', From ecd86ef72d2561b980535d1720b19a58d7218aeb Mon Sep 17 00:00:00 2001 From: VentyCZ Date: Thu, 29 Jan 2026 23:51:47 +0100 Subject: [PATCH 3/3] Better plural rule --- config/i18n.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/i18n.ts b/config/i18n.ts index 3acad0ad..30e4dfd7 100644 --- a/config/i18n.ts +++ b/config/i18n.ts @@ -197,7 +197,7 @@ const locales: (Omit & { code: string })[] = [ name: 'Čeština', pluralRule: (choice: number) => { const name = new Intl.PluralRules('cs-CZ').select(choice) - return { zero: 0, one: 1, two: 0, few: 2, many: 0, other: 3 }[name] + return { zero: 2, one: 0, two: 1, few: 1, many: 2, other: 2 }[name] }, }, /*{