feat: add runtime locale overrides

This commit is contained in:
3252a8
2026-05-25 17:47:45 +03:00
parent 23784d00fe
commit 59fa301344
51 changed files with 4026 additions and 214 deletions
+78 -76
View File
@@ -46,9 +46,7 @@
"yookassa_autopay_pay_new_card_button": " Pay with new card",
"yookassa_autopay_choose_saved_card": "Choose a saved card to charge:",
"yookassa_autopay_no_saved_cards": "No saved cards found. Pay with a new card or link one in Payment Methods.",
"back_to_autopay_method_choice_button": "⬅️ Back",
"yookassa_autopay_charge_initiated": "Charge request sent to the selected card. We'll notify you once the payment completes.",
"back_to_payment_methods_button": "⬅️ Back",
"connect_button": "🔗 Connect",
"install_guide_share_button": "🔗 Share install guide",
"install_guide_share_link_line": "\n\nInstall guide for sharing:\n<code>{install_share_link}</code>",
@@ -156,22 +154,17 @@
"admin_no_payments_to_export": "No payments to export.",
"admin_payments_export_success": "📊 Payments export completed!\nTotal records: {count}",
"admin_export_sent": "File sent!",
"admin_csv_payment_id": "ID",
"admin_csv_user_id": "User ID",
"admin_csv_username": "Username",
"admin_csv_first_name": "First Name",
"admin_csv_amount": "Amount",
"admin_csv_currency": "Currency",
"admin_csv_provider": "Provider",
"admin_csv_status": "Status",
"admin_csv_description": "Description",
"admin_csv_units": "Months/GB",
"admin_csv_months": "Months",
"admin_csv_created_at": "Created At",
"admin_csv_provider_payment_id": "Provider Payment ID",
"admin_stats_last_sync_header": "Last Panel Sync:",
"admin_stats_sync_time": "Time",
"admin_stats_sync_status": "Status",
"admin_stats_sync_users_processed": "Users Processed",
"admin_stats_sync_subs_synced": "Subscriptions Synced",
"admin_stats_sync_details_label": "Details",
@@ -182,7 +175,6 @@
"broadcast_target_active_button": "✅ Active",
"broadcast_target_inactive_button": "⌛ Inactive",
"confirm_broadcast_send_button": "✅ Send",
"cancel_broadcast_button": "❌ Cancel",
"admin_broadcast_sending_started": "Starting broadcast...",
"admin_broadcast_error_no_message": "Error: no message to broadcast.",
"admin_broadcast_error_no_message_alert": "Broadcast message is empty!",
@@ -220,13 +212,9 @@
"admin_promo_csv_bonus_days": "Bonus Days",
"admin_promo_csv_max_activations": "Max Activations",
"admin_promo_csv_current_activations": "Current Activations",
"admin_promo_csv_status": "Status",
"admin_promo_csv_is_active": "Active",
"admin_promo_csv_valid_until": "Valid Until",
"admin_promo_csv_created_at": "Created",
"admin_promo_csv_created_by_admin_id": "Created By (Admin ID)",
"csv_yes": "Yes",
"csv_no": "No",
"admin_promo_edit_select_field": "Select a field to edit:",
"admin_promo_prompt_bonus_days": "Enter the new number of bonus days:",
"admin_promo_prompt_max_activations": "Enter the new maximum number of activations:",
@@ -417,7 +405,6 @@
"admin_promo_step3_max_activations": "🎟 <b>Create Promo Code</b>\n\n<b>Step 3 of 4:</b> Max Activations\n\nCode: <b>{code}</b>\nBonus days: <b>{bonus_days}</b>\n\nEnter the maximum number of activations (1-10000):",
"admin_promo_step4_validity": "🎟 <b>Create Promo Code</b>\n\n<b>Step 4 of 4:</b> Validity Period\n\nCode: <b>{code}</b>\nBonus days: <b>{bonus_days}</b>\nMax activations: <b>{max_activations}</b>\n\nChoose the validity period for the promo code:",
"admin_promo_code_already_exists": "❌ A promo code with this code already exists",
"admin_promo_unlimited_validity": "♾️ Unlimited",
"admin_promo_enter_validity_days": "⏰ Enter the number of validity days for the promo code (1-365):",
"admin_user_id_label": "🆔 <b>ID:</b>",
"admin_user_name_label": "👤 <b>Name:</b>",
@@ -494,7 +481,6 @@
"inline_referral_description": "Share referral link to get bonuses",
"inline_financial_description": "Today: {today} RUB",
"inline_system_description": "🟢 Online: {online}, 📊 Active: {active}",
"admin_user_stats_total_label": "Total",
"admin_user_stats_paid_subs_label": "With paid subscription",
"admin_user_stats_trial_label": "On trial period",
"admin_user_stats_inactive_label": "Inactive",
@@ -819,7 +805,6 @@
"wa_devices_platform_unknown": "Platform unknown",
"wa_devices_connected_at": "Connected",
"wa_devices_disconnect": "Disconnect device",
"wa_devices_disconnect_title": "Disconnect device",
"wa_devices_disconnect_desc": "{device} will be removed from your device list. It may connect again next time you use the subscription on that device.",
"wa_devices_disconnect_confirm": "Disconnect",
"wa_device_disconnected": "Device disconnected",
@@ -845,7 +830,6 @@
"wa_settings_link_email_action": "Link email",
"wa_settings_email_linked_title": "Email linked",
"wa_activate_promo_title": "Activate promo code",
"wa_link_email_modal_title": "Link email",
"wa_traffic_reset_none": "No reset",
"wa_traffic_reset_monthly": "Monthly reset",
"wa_traffic_reset_weekly": "Weekly reset",
@@ -940,8 +924,6 @@
"admin_users_col_registration": "Registered",
"admin_page": "Page",
"admin_page_short": "Page",
"admin_back": "Back",
"admin_next": "Next",
"admin_user": "User",
"admin_amount": "Amount",
"admin_provider": "Provider",
@@ -949,7 +931,6 @@
"admin_status": "Status",
"admin_date": "Date",
"admin_payments_empty": "No payments",
"admin_payments_col_user_id": "ID",
"admin_payments_col_traffic_regular": "Main traffic",
"admin_payments_col_traffic_premium": "Premium traffic",
"admin_payments_col_actions": "",
@@ -958,7 +939,6 @@
"admin_payments_desc_traffic_package_premium": "Traffic package {gb} GB (premium)",
"admin_payment_detail_open": "Open payment",
"admin_payment_detail_title": "Payment #{id}",
"admin_payment_detail_copied": "Copied",
"admin_payment_load_failed": "Failed to load payment",
"admin_payment_detail_updated_at": "Updated",
"admin_payment_detail_provider_payment_id": "Provider ID",
@@ -973,13 +953,9 @@
"admin_payment_detail_purchased_gb": "Purchased GB",
"admin_payment_detail_hwid_devices": "HWID devices",
"admin_payment_detail_promo_code": "Promo code",
"admin_payment_detail_provider": "Provider",
"admin_payment_detail_user_section": "User",
"admin_payment_detail_payment_section": "Payment",
"admin_payment_detail_provider_section": "Provider",
"admin_payment_detail_purchase_section": "Purchase",
"admin_logs_user_filter_placeholder": "Filter by user ID",
"admin_apply": "Apply",
"admin_reset": "Reset",
"admin_event": "Event",
"admin_content": "Content",
@@ -1009,14 +985,11 @@
"admin_settings_provider_webhook_base_missing": "Set WEBHOOK_BASE_URL in .env to show the full URL for {path}.",
"admin_settings_provider_admin_only_label": "Only for admins",
"admin_settings_provider_admin_only_description": "Shows this provider only to admins. Webhooks and payment status handling remain active for test payments.",
"admin_copy": "Copy",
"admin_copied": "Copied",
"admin_settings_validation_errors": "Errors: {errors}",
"admin_settings_save_error": "Error: {error}",
"admin_sync_started": "Synchronization started",
"admin_sync_error": "Synchronization error",
"admin_error": "Error",
"admin_link_copied": "Link copied",
"admin_user_banned": "User banned",
"admin_user_unbanned": "User unbanned",
"admin_message_sent": "Message sent",
@@ -1067,7 +1040,6 @@
"admin_stats_revenue_period_365": "1 yr",
"admin_stats_revenue_period_custom": "Custom",
"admin_stats_revenue_custom_range_title": "Date range (UTC)",
"admin_stats_revenue_custom_range_apply": "Apply",
"admin_stats_revenue_granularity_aria": "Revenue chart step",
"admin_stats_revenue_granularity_day": "By day",
"admin_stats_revenue_granularity_week": "By week",
@@ -1077,7 +1049,6 @@
"admin_stats_revenue_chart_bucket_count": "Points: {count}",
"admin_stats_revenue_chart_custom_span": "Range: {days} d.",
"admin_stats_revenue_tooltip_day": "Day",
"admin_stats_revenue_tooltip_amount": "Amount",
"admin_stats_revenue_avg_check": "Average ticket today: {value}",
"admin_stats_revenue_avg_none": "No successful payments today",
"admin_stats_revenue_avg_ticket_label": "Avg. ticket (today)",
@@ -1141,7 +1112,6 @@
"admin_user_tg_profile_link_sent": "Link sent to Telegram",
"admin_user_tg_profile_link_failed": "Failed to send link",
"admin_user_profile_link_message": "User profile: <b>{name}</b>\nUser ID: <code>{user_id}</code>\nTelegram ID: <code>{telegram_id}</code>\n\nTap the button below to open the profile in Telegram.",
"admin_close": "Close",
"admin_loading": "Loading…",
"admin_badge_banned": "Banned",
"admin_badge_active": "Active",
@@ -1166,7 +1136,6 @@
"admin_user_label_active_until": "Active until",
"admin_user_label_tariff": "Tariff",
"admin_user_label_auto_renew": "Auto-renew",
"admin_user_label_provider": "Provider",
"admin_user_label_main_traffic": "Main Traffic",
"admin_user_traffic_left": "Left: {left}",
"admin_user_label_premium_squads": "Premium Squads",
@@ -1175,7 +1144,6 @@
"user_premium_override_card_hint": "Unlimited access and extra volume for premium squads on top of the tariff.",
"user_regular_override_card_title": "Main traffic",
"user_regular_override_card_hint": "Unlimited-style ceiling and a persistent bonus on the main traffic limit.",
"user_regular_override_save": "Save",
"user_regular_override_status_unlimited": "Current: unlimited",
"regular_override_saved": "Main traffic override saved",
"user_traffic_override_title": "Traffic overrides",
@@ -1191,7 +1159,6 @@
"user_premium_override_unlimited": "Unlimited premium",
"user_premium_override_bonus": "Extra premium traffic, GB",
"user_premium_override_save": "Save override",
"user_premium_override_status_unlimited": "Current: unlimited",
"user_premium_override_status_bonus": "Current: +{gb} GB",
"user_premium_override_status_none": "No premium override",
"user_premium_unlimited_value": "∞ (used {used})",
@@ -1211,7 +1178,6 @@
"admin_user_no_active_subscription": "No active subscription",
"admin_user_history_title": "Subscription History · {count}",
"admin_user_history_no_tariff": "No tariff",
"admin_user_history_until": "until {date}",
"admin_user_history_active": "Active",
"admin_user_history_status_panel": "History",
"admin_user_recent_payments_title": "Recent Payments · {count}",
@@ -1232,7 +1198,6 @@
"admin_user_btn_delete_account": "Delete account",
"admin_user_msg_confirm_title": "Send message to user?",
"admin_user_msg_confirm_recipient": "Recipient: {name}",
"admin_user_btn_cancel": "Cancel",
"admin_user_btn_confirm_send": "Confirm Send",
"admin_user_ban_confirm_title": "Ban user?",
"admin_user_ban_confirm_subtitle": "{name} will no longer be able to interact with the bot. This can be undone later.",
@@ -1249,7 +1214,6 @@
"admin_tariff_label_hwid_count_full": "How many devices does this package add",
"admin_tariff_label_price_rub": "Price in Rubles",
"admin_tariff_label_price_stars": "Price in Telegram Stars",
"admin_status_active": "Active",
"admin_aria_label_main_traffic": "Main traffic usage",
"admin_aria_label_premium_traffic": "Premium traffic usage",
"admin_btn_delete": "Delete",
@@ -1259,24 +1223,18 @@
"admin_btn_tariff": "Tariff",
"admin_btn_sync": "Synchronize",
"admin_btn_syncing": "Synchronizing...",
"admin_btn_save": "Save",
"admin_btn_saving": "Saving...",
"admin_btn_enable": "On",
"admin_btn_disable": "Off",
"admin_btn_show_more": "Show more",
"admin_settings_dirty_count": "Changes: {count}",
"admin_promo_col_code": "Code",
"admin_promo_col_bonus": "Bonus",
"admin_promo_col_activations": "Activations",
"admin_promo_col_valid_until": "Valid until",
"admin_promo_col_status": "Status",
"admin_promo_create_title": "Create promo code",
"admin_promo_label_code": "Code",
"admin_promo_label_bonus_days": "Bonus (days)",
"admin_promo_label_max_activations": "Max activations",
"admin_promo_label_valid_days": "Validity (days)",
"admin_ad_create_title": "New campaign",
"admin_ad_label_source": "Source",
"admin_ad_label_param": "start parameter",
"admin_ad_hint_param": "Unique identifier for the referral link",
"admin_ad_label_cost": "Cost, RUB",
@@ -1285,7 +1243,6 @@
"admin_ads_col_cost": "Cost",
"admin_ads_col_registrations": "Registrations",
"admin_ads_col_conversions": "Conversions",
"admin_ads_col_status": "Status",
"admin_no_data": "No data",
"admin_settings_hint": "Changes in the admin panel take precedence over .env. The 'Reset' button returns the value from environment variables.",
"admin_settings_legacy_tariffs_warning_title": "remnawave-tg-shop legacy compatibility",
@@ -1313,7 +1270,6 @@
"admin_show": "Show",
"admin_hide": "Hide",
"admin_tariffs_stat_total": "Total tariffs",
"admin_tariffs_stat_enabled": "Enabled",
"admin_tariffs_stat_default": "Default",
"admin_tariffs_stat_default_hint": "Used for new subscriptions",
"admin_tariffs_stat_disabled": "Disabled",
@@ -1340,7 +1296,6 @@
"admin_tariffs_legacy_subtitle": "Old remnawave-tg-shop periods and traffic packages used only when the JSON tariff catalog is not configured.",
"admin_tariffs_legacy_period": "Period",
"admin_tariffs_legacy_enabled": "Enabled",
"admin_tariffs_legacy_traffic_packages": "Traffic packages",
"admin_tariffs_legacy_stars_traffic_packages": "Traffic packages, Stars",
"admin_tariffs_legacy_traffic_hint": "Format: 10:199,50:799",
"admin_tariff_tab_general": "General",
@@ -1383,7 +1338,6 @@
"admin_months_short": "mo.",
"admin_at": "for",
"admin_tariff_traffic_packages": "Traffic packages",
"admin_btn_refresh": "Refresh",
"admin_btn_create_tariff": "Create Tariff",
"admin_enabled": "Enabled",
"admin_disabled": "Disabled",
@@ -1398,7 +1352,6 @@
"admin_broadcast_stat_failed": "Failed",
"admin_broadcast_started": "Broadcast started",
"admin_broadcast_failed": "Broadcast failed",
"admin_user_short": "User",
"admin_target_short": "Target",
"admin_settings_field_default_language_label": "Default Language",
"admin_settings_field_default_language_description": "Controls the 'Default Language' setting in admin overrides.",
@@ -1667,45 +1620,18 @@
"admin_nav_support": "Support",
"admin_section_support_title": "Support",
"admin_section_support_subtitle": "Ticket inbox and user replies",
"admin_support_search": "Search",
"admin_support_empty": "No tickets yet",
"admin_support_select_ticket": "Select a ticket",
"admin_support_close_ticket": "Close",
"admin_support_internal_note": "Internal note",
"admin_support_reply_placeholder": "Reply",
"admin_support_no_messages": "No messages yet",
"admin_support_filter_all": "All",
"admin_support_filter_active": "Active",
"admin_support_filter_closed": "Closed",
"admin_support_filter_all_priorities": "Any priority",
"admin_support_filter_all_categories": "All categories",
"admin_support_ticket_number": "Ticket #{id}",
"admin_support_priority": "Priority",
"admin_support_category": "Category",
"admin_support_role_user": "User",
"admin_support_role_admin": "Admin",
"admin_support_role_system": "System",
"admin_support_user_context": "User",
"admin_support_open_user": "User card",
"admin_support_tariff": "Tariff",
"admin_support_status": "Status",
"admin_support_remaining": "Remaining",
"admin_support_unread": "Unread",
"admin_support_summary": "Support summary",
"admin_support_ticket_dialog": "Support conversation",
"admin_support_status_open": "Open",
"admin_support_status_awaiting_user": "Awaiting user",
"admin_support_status_awaiting_admin": "Awaiting admin",
"admin_support_status_resolved": "Resolved",
"admin_support_status_closed": "Closed",
"admin_support_priority_low": "Low",
"admin_support_priority_normal": "Normal",
"admin_support_priority_high": "High",
"admin_support_priority_urgent": "Urgent",
"admin_support_category_billing": "Billing",
"admin_support_category_technical": "Technical",
"admin_support_category_account": "Account",
"admin_support_category_other": "Other",
"admin_support_sort_importance_desc": "Most important",
"admin_sort_updated_desc": "Newest activity",
"admin_sort_updated_asc": "Oldest activity",
@@ -1722,7 +1648,6 @@
"wa_install_subscription_link_hint": "Scan the QR code or copy the link.",
"wa_install_qr_alt": "Subscription QR code",
"wa_install_copy_subscription_link": "Copy link",
"wa_install_link_copied": "Link copied",
"wa_install_share": "Share",
"wa_install_share_copied": "Install guide link copied",
"wa_app_launch_title": "Opening app",
@@ -1750,5 +1675,82 @@
"admin_settings_field_subscription_page_config_json_label": "Subscription Page config JSON",
"admin_settings_field_subscription_page_config_json_description": "Optional admin JSON override. It is applied only when the JSON override switch is enabled.",
"admin_settings_field_subscription_page_config_json_placeholder": "{\n \"version\": \"1\"\n}",
"admin_settings_json_upload": "Load .json"
"admin_settings_json_upload": "Load .json",
"admin_nav_translations": "Translations",
"admin_section_translations_title": "Translations",
"admin_section_translations_subtitle": "Runtime localization string overrides from DB and data/locales-overrides.json",
"admin_translations_saved": "Translations saved",
"admin_translations_validation_errors": "Errors: {errors}",
"admin_translations_save_error": "Could not save translations: {error}",
"admin_translations_base_value": "Base text",
"admin_translations_search_placeholder": "Search keys and text",
"admin_translations_hint": "Overrides are stored in DB and mirrored to {path}.",
"admin_translations_keys_count": "Keys: {count}",
"admin_translations_no_matches": "No matching strings",
"admin_translations_group_admin": "Admin panel",
"admin_translations_group_admin_hint": "Navigation, tables, forms, dialogs, and admin-only labels.",
"admin_translations_group_admin_navigation": "Admin navigation and shared UI",
"admin_translations_group_admin_navigation_hint": "Sidebar, section headers, toolbar actions, filters, and shared controls.",
"admin_translations_group_admin_dashboard": "Admin dashboard and stats",
"admin_translations_group_admin_dashboard_hint": "Dashboard cards, revenue charts, panel sync status, and monitoring copy.",
"admin_translations_group_admin_users": "Admin users",
"admin_translations_group_admin_users_hint": "User lists, user cards, bans, grants, premium overrides, and direct messages.",
"admin_translations_group_admin_payments": "Admin payments",
"admin_translations_group_admin_payments_hint": "Payment tables, payment details, exports, provider labels, and payment stats.",
"admin_translations_group_admin_promos_marketing": "Admin promos, ads, and broadcasts",
"admin_translations_group_admin_promos_marketing_hint": "Promo management, ad campaigns, marketing tools, and broadcast workflows.",
"admin_translations_group_admin_tariffs": "Admin tariffs",
"admin_translations_group_admin_tariffs_hint": "Tariff catalog, tariff dialogs, legacy tariff rows, and trial tariff widgets.",
"admin_translations_group_admin_support": "Admin support inbox",
"admin_translations_group_admin_support_hint": "Support ticket inbox, ticket filters, admin replies, and support statuses.",
"admin_translations_group_admin_appearance": "Admin appearance",
"admin_translations_group_admin_appearance_hint": "Theme catalog, branding, logo, favicon, and public page links.",
"admin_translations_group_admin_settings_payments": "Admin payment settings",
"admin_translations_group_admin_settings_payments_hint": "Payment method toggles, prices, provider credentials, and webhook settings.",
"admin_translations_group_admin_settings_subscriptions": "Admin subscription settings",
"admin_translations_group_admin_settings_subscriptions_hint": "Panel connection, default squads, trials, referrals, device limits, and guides.",
"admin_translations_group_admin_settings_notifications": "Admin notifications and logs",
"admin_translations_group_admin_settings_notifications_hint": "Logging, required channel, subscription notifications, and support limits.",
"admin_translations_group_admin_settings": "Admin settings",
"admin_translations_group_admin_settings_hint": "Settings screen groups, subsections, helper text, and uncategorized settings.",
"admin_translations_group_admin_translations": "Admin translations",
"admin_translations_group_admin_translations_hint": "Translation override screen, language controls, and locale group labels.",
"admin_translations_group_admin_logs": "Admin logs and exports",
"admin_translations_group_admin_logs_hint": "Activity logs, log exports, CSV headers, and event detail labels.",
"admin_translations_group_admin_misc": "Admin miscellaneous",
"admin_translations_group_admin_misc_hint": "Older bot-admin labels and admin-only strings that do not fit another section.",
"admin_translations_group_webapp": "Mini App",
"admin_translations_group_webapp_hint": "User-facing Mini App screens, navigation, settings, and toasts.",
"admin_translations_group_bot_menu": "Telegram bot",
"admin_translations_group_bot_menu_hint": "Start menu, inline buttons, language selector, and bot-only flows.",
"admin_translations_group_subscriptions": "Subscriptions and devices",
"admin_translations_group_subscriptions_hint": "Subscription status, install guides, traffic packages, trials, and devices.",
"admin_translations_group_payments": "Payments",
"admin_translations_group_payments_hint": "Payment provider flows, invoices, payment methods, and checkout messages.",
"admin_translations_group_support": "Support",
"admin_translations_group_support_hint": "Support links, ticket inbox copy, ticket statuses, and notifications.",
"admin_translations_group_referrals_promos": "Referrals and promos",
"admin_translations_group_referrals_promos_hint": "Referral program, invite copy, promo codes, and bonuses.",
"admin_translations_group_auth_security": "Auth and security",
"admin_translations_group_auth_security_hint": "Login, email verification, account linking, and security messages.",
"admin_translations_group_emails": "Emails",
"admin_translations_group_emails_hint": "Transactional emails sent to users: login codes, payments, account merges, and reminders.",
"admin_translations_group_notifications_sync": "Notifications and sync",
"admin_translations_group_notifications_sync_hint": "Admin notifications, panel sync, logs, and background status messages.",
"admin_translations_group_common": "Common",
"admin_translations_group_common_hint": "Shared buttons, statuses, validation errors, and uncategorized strings.",
"admin_translations_file_write_warning": "Translations saved in DB, but JSON file was not updated",
"admin_add": "Add",
"admin_translations_fallback_value": "Fallback",
"admin_translations_languages_title": "Languages",
"admin_translations_languages_hint": "Add override-only languages without adding base locale files.",
"admin_translations_language_placeholder": "de, uk, pt-BR",
"admin_translations_language_custom": "Custom",
"admin_translations_language_invalid": "Invalid language code",
"admin_translations_language_exists": "{code} already exists",
"admin_translations_audience_all": "All",
"admin_translations_audience_user": "User-visible",
"admin_translations_audience_internal": "Admin/internal",
"admin_translations_audience_user_hint": "Mini App, bot, payment, subscription, support, and auth copy.",
"admin_translations_audience_internal_hint": "Admin panel, logs, sync statuses, and service notifications."
}
+78 -76
View File
@@ -46,9 +46,7 @@
"yookassa_autopay_pay_new_card_button": "➕ Оплата новой картой",
"yookassa_autopay_choose_saved_card": "Выберите привязанную карту для списания:",
"yookassa_autopay_no_saved_cards": "Сохранённых карт нет. Оплатите новой картой или привяжите карту в разделе «Способы оплаты».",
"back_to_autopay_method_choice_button": "⬅️ Назад",
"yookassa_autopay_charge_initiated": "Запрос на списание с выбранной карты отправлен. Сообщим, как только платёж завершится.",
"back_to_payment_methods_button": "⬅️ Назад",
"connect_button": "🔗 Подключиться",
"install_guide_share_button": "🔗 Поделиться инструкцией",
"install_guide_share_link_line": "\n\nИнструкция для передачи:\n<code>{install_share_link}</code>",
@@ -156,22 +154,17 @@
"admin_no_payments_to_export": "Нет платежей для экспорта.",
"admin_payments_export_success": "📊 Экспорт платежей завершен!\nВсего записей: {count}",
"admin_export_sent": "Файл отправлен!",
"admin_csv_payment_id": "ID",
"admin_csv_user_id": "User ID",
"admin_csv_username": "Логин",
"admin_csv_first_name": "Имя",
"admin_csv_amount": "Сумма",
"admin_csv_currency": "Валюта",
"admin_csv_provider": "Платежная система",
"admin_csv_status": "Статус",
"admin_csv_description": "Описание",
"admin_csv_units": "Месяцы/ГБ",
"admin_csv_months": "Месяцев",
"admin_csv_created_at": "Дата создания",
"admin_csv_provider_payment_id": "ID платежа в системе",
"admin_stats_last_sync_header": "Последняя синхронизация с панелью:",
"admin_stats_sync_time": "Время",
"admin_stats_sync_status": "Статус",
"admin_stats_sync_users_processed": "Обработано юзеров с панели",
"admin_stats_sync_subs_synced": "Синхронизировано подписок",
"admin_stats_sync_details_label": "Детали",
@@ -182,7 +175,6 @@
"broadcast_target_active_button": "✅ Активные",
"broadcast_target_inactive_button": "⌛ Неактивные",
"confirm_broadcast_send_button": "✅ Отправить",
"cancel_broadcast_button": "❌ Отмена",
"admin_broadcast_sending_started": "Начинаю рассылку...",
"admin_broadcast_error_no_message": "Ошибка: сообщение для рассылки не найдено.",
"admin_broadcast_error_no_message_alert": "Сообщение для рассылки пустое!",
@@ -229,13 +221,9 @@
"admin_promo_csv_bonus_days": "Бонусные дни",
"admin_promo_csv_max_activations": "Максимальные активации",
"admin_promo_csv_current_activations": "Текущие активации",
"admin_promo_csv_status": "Статус",
"admin_promo_csv_is_active": "Активен",
"admin_promo_csv_valid_until": "Действителен до",
"admin_promo_csv_created_at": "Создан",
"admin_promo_csv_created_by_admin_id": "Создал (Admin ID)",
"csv_yes": "Да",
"csv_no": "Нет",
"admin_promo_edit_select_field": "Выберите поле для редактирования:",
"admin_promo_prompt_bonus_days": "Введите новое количество бонусных дней:",
"admin_promo_prompt_max_activations": "Введите новое максимальное количество активаций:",
@@ -417,7 +405,6 @@
"admin_promo_step3_max_activations": "🎟 <b>Создание промокода</b>\n\n<b>Шаг 3 из 4:</b> Максимальные активации\n\nКод: <b>{code}</b>\nБонусные дни: <b>{bonus_days}</b>\n\nВведите максимальное количество активаций (1-10000):",
"admin_promo_step4_validity": "🎟 <b>Создание промокода</b>\n\n<b>Шаг 4 из 4:</b> Срок действия\n\nКод: <b>{code}</b>\nБонусные дни: <b>{bonus_days}</b>\nМакс. активации: <b>{max_activations}</b>\n\nВыберите срок действия промокода:",
"admin_promo_code_already_exists": "❌ Промокод с таким кодом уже существует",
"admin_promo_unlimited_validity": "♾️ Неограниченно",
"admin_promo_enter_validity_days": "⏰ Введите количество дней действия промокода (1-365):",
"admin_user_id_label": "🆔 <b>ID:</b>",
"admin_user_name_label": "👤 <b>Имя:</b>",
@@ -494,7 +481,6 @@
"inline_referral_description": "Поделиться реферальной ссылкой для получения бонусов",
"inline_financial_description": "Сегодня: {today} RUB",
"inline_system_description": "🟢 Онлайн: {online}, 📊 Активных: {active}",
"admin_user_stats_total_label": "Всего",
"admin_user_stats_paid_subs_label": "С платной подпиской",
"admin_user_stats_trial_label": "На пробном периоде",
"admin_user_stats_inactive_label": "Неактивных",
@@ -819,7 +805,6 @@
"wa_devices_platform_unknown": "Платформа неизвестна",
"wa_devices_connected_at": "Подключено",
"wa_devices_disconnect": "Отключить устройство",
"wa_devices_disconnect_title": "Отключить устройство",
"wa_devices_disconnect_desc": "{device} будет удалено из списка устройств. Оно может подключиться снова при следующем использовании подписки на этом устройстве.",
"wa_devices_disconnect_confirm": "Отключить",
"wa_device_disconnected": "Устройство отключено",
@@ -845,7 +830,6 @@
"wa_settings_link_email_action": "Привязать почту",
"wa_settings_email_linked_title": "Почта привязана",
"wa_activate_promo_title": "Активировать промокод",
"wa_link_email_modal_title": "Привязать почту",
"wa_traffic_reset_none": "Без сброса",
"wa_traffic_reset_monthly": "Сброс ежемесячно",
"wa_traffic_reset_weekly": "Сброс еженедельно",
@@ -940,8 +924,6 @@
"admin_users_col_registration": "Регистрация",
"admin_page": "Страница",
"admin_page_short": "Стр.",
"admin_back": "Назад",
"admin_next": "Далее",
"admin_user": "Пользователь",
"admin_amount": "Сумма",
"admin_provider": "Провайдер",
@@ -949,7 +931,6 @@
"admin_status": "Статус",
"admin_date": "Дата",
"admin_payments_empty": "Нет платежей",
"admin_payments_col_user_id": "ID",
"admin_payments_col_traffic_regular": "Основной трафик",
"admin_payments_col_traffic_premium": "Премиум трафик",
"admin_payments_col_actions": "",
@@ -958,7 +939,6 @@
"admin_payments_desc_traffic_package_premium": "Пакет трафика {gb} ГБ (премиум)",
"admin_payment_detail_open": "Открыть платёж",
"admin_payment_detail_title": "Платёж #{id}",
"admin_payment_detail_copied": "Скопировано",
"admin_payment_load_failed": "Не удалось загрузить платёж",
"admin_payment_detail_updated_at": "Обновлён",
"admin_payment_detail_provider_payment_id": "ID у провайдера",
@@ -973,13 +953,9 @@
"admin_payment_detail_purchased_gb": "Куплено GB",
"admin_payment_detail_hwid_devices": "HWID-устройства",
"admin_payment_detail_promo_code": "Промокод",
"admin_payment_detail_provider": "Провайдер",
"admin_payment_detail_user_section": "Пользователь",
"admin_payment_detail_payment_section": "Платёж",
"admin_payment_detail_provider_section": "Провайдер",
"admin_payment_detail_purchase_section": "Покупка",
"admin_logs_user_filter_placeholder": "Фильтр по ID пользователя",
"admin_apply": "Применить",
"admin_reset": "Сбросить",
"admin_event": "Событие",
"admin_content": "Контент",
@@ -1009,14 +985,11 @@
"admin_settings_provider_webhook_base_missing": "Укажите WEBHOOK_BASE_URL в .env, чтобы увидеть полный адрес для {path}.",
"admin_settings_provider_admin_only_label": "Только для админов",
"admin_settings_provider_admin_only_description": "Показывает провайдер только администраторам. Вебхуки и обработка статусов остаются активными для тестовых платежей.",
"admin_copy": "Копировать",
"admin_copied": "Скопировано",
"admin_settings_validation_errors": "Ошибки: {errors}",
"admin_settings_save_error": "Ошибка: {error}",
"admin_sync_started": "Синхронизация запущена",
"admin_sync_error": "Ошибка синхронизации",
"admin_error": "Ошибка",
"admin_link_copied": "Ссылка скопирована",
"admin_user_banned": "Пользователь забанен",
"admin_user_unbanned": "Пользователь разбанен",
"admin_message_sent": "Сообщение отправлено",
@@ -1067,7 +1040,6 @@
"admin_stats_revenue_period_365": "1 г.",
"admin_stats_revenue_period_custom": "Свой период",
"admin_stats_revenue_custom_range_title": "Диапазон дат (UTC)",
"admin_stats_revenue_custom_range_apply": "Применить",
"admin_stats_revenue_granularity_aria": "Шаг графика выручки",
"admin_stats_revenue_granularity_day": "По дням",
"admin_stats_revenue_granularity_week": "По неделям",
@@ -1077,7 +1049,6 @@
"admin_stats_revenue_chart_bucket_count": "Точек: {count}",
"admin_stats_revenue_chart_custom_span": "Диапазон: {days} дн.",
"admin_stats_revenue_tooltip_day": "День",
"admin_stats_revenue_tooltip_amount": "Сумма",
"admin_stats_revenue_avg_check": "Средний чек сегодня: {value}",
"admin_stats_revenue_avg_none": "Сегодня без успешных платежей",
"admin_stats_revenue_avg_ticket_label": "Средний чек (сегодня)",
@@ -1141,7 +1112,6 @@
"admin_user_tg_profile_link_sent": "Ссылка отправлена в Telegram",
"admin_user_tg_profile_link_failed": "Не удалось отправить ссылку",
"admin_user_profile_link_message": "Профиль пользователя: <b>{name}</b>\nUser ID: <code>{user_id}</code>\nTelegram ID: <code>{telegram_id}</code>\n\nНажмите кнопку ниже, чтобы открыть профиль в Telegram.",
"admin_close": "Закрыть",
"admin_loading": "Загрузка…",
"admin_badge_banned": "Бан",
"admin_badge_active": "Активен",
@@ -1166,7 +1136,6 @@
"admin_user_label_active_until": "Активна до",
"admin_user_label_tariff": "Тариф",
"admin_user_label_auto_renew": "Авто-продление",
"admin_user_label_provider": "Провайдер",
"admin_user_label_main_traffic": "Основной трафик",
"admin_user_traffic_left": "Осталось: {left}",
"admin_user_label_premium_squads": "Premium-сквады",
@@ -1175,7 +1144,6 @@
"user_premium_override_card_hint": "Безлимит и дополнительный объём для премиум-сквадов поверх тарифа.",
"user_regular_override_card_title": "Основной трафик",
"user_regular_override_card_hint": "Режим безлимита и постоянный бонус к лимиту основного трафика.",
"user_regular_override_save": "Сохранить",
"user_regular_override_status_unlimited": "Сейчас: безлимит",
"regular_override_saved": "Оверрайд основного трафика сохранён",
"user_traffic_override_title": "Оверрайд трафика",
@@ -1191,7 +1159,6 @@
"user_premium_override_unlimited": "Безлимит на премиум",
"user_premium_override_bonus": "Доп. премиум-трафик, GB",
"user_premium_override_save": "Сохранить оверрайд",
"user_premium_override_status_unlimited": "Сейчас: безлимит",
"user_premium_override_status_bonus": "Сейчас: +{gb} GB",
"user_premium_override_status_none": "Премиум-оверрайд не задан",
"user_premium_unlimited_value": "∞ (использовано {used})",
@@ -1211,7 +1178,6 @@
"admin_user_no_active_subscription": "Активной подписки нет",
"admin_user_history_title": "История подписок · {count}",
"admin_user_history_no_tariff": "Без тарифа",
"admin_user_history_until": "до {date}",
"admin_user_history_active": "Активна",
"admin_user_history_status_panel": "История",
"admin_user_recent_payments_title": "Последние платежи · {count}",
@@ -1232,7 +1198,6 @@
"admin_user_btn_delete_account": "Удалить аккаунт",
"admin_user_msg_confirm_title": "Отправить сообщение пользователю?",
"admin_user_msg_confirm_recipient": "Получатель: {name}",
"admin_user_btn_cancel": "Отмена",
"admin_user_btn_confirm_send": "Подтвердить отправку",
"admin_user_ban_confirm_title": "Заблокировать пользователя?",
"admin_user_ban_confirm_subtitle": "{name} больше не сможет взаимодействовать с ботом. Действие можно отменить позже.",
@@ -1249,7 +1214,6 @@
"admin_tariff_label_hwid_count_full": "Сколько устройств добавляет пакет",
"admin_tariff_label_price_rub": "Цена в рублях",
"admin_tariff_label_price_stars": "Цена в Telegram Stars",
"admin_status_active": "Активен",
"admin_aria_label_main_traffic": "Использование основного трафика",
"admin_aria_label_premium_traffic": "Использование premium-трафика",
"admin_btn_delete": "Удалить",
@@ -1259,24 +1223,18 @@
"admin_btn_tariff": "Тариф",
"admin_btn_sync": "Синхронизировать",
"admin_btn_syncing": "Синхронизация...",
"admin_btn_save": "Сохранить",
"admin_btn_saving": "Сохранение...",
"admin_btn_enable": "Вкл",
"admin_btn_disable": "Выкл",
"admin_btn_show_more": "Показать еще",
"admin_settings_dirty_count": "Изменений: {count}",
"admin_promo_col_code": "Код",
"admin_promo_col_bonus": "Бонус",
"admin_promo_col_activations": "Активаций",
"admin_promo_col_valid_until": "Действует до",
"admin_promo_col_status": "Статус",
"admin_promo_create_title": "Создать промокод",
"admin_promo_label_code": "Код",
"admin_promo_label_bonus_days": "Бонус (дней)",
"admin_promo_label_max_activations": "Макс. активаций",
"admin_promo_label_valid_days": "Срок действия (дней)",
"admin_ad_create_title": "Новая кампания",
"admin_ad_label_source": "Источник",
"admin_ad_label_param": "start-параметр",
"admin_ad_hint_param": "Unique identifier for the referral link",
"admin_ad_label_cost": "Стоимость, RUB",
@@ -1285,7 +1243,6 @@
"admin_ads_col_cost": "Стоимость",
"admin_ads_col_registrations": "Регистрации",
"admin_ads_col_conversions": "Конверсии",
"admin_ads_col_status": "Статус",
"admin_no_data": "Нет данных",
"admin_settings_hint": "Изменения в админке имеют приоритет над .env. Кнопка «Сбросить» возвращает значение из переменных окружения.",
"admin_settings_legacy_tariffs_warning_title": "Совместимость с remnawave-tg-shop legacy",
@@ -1313,7 +1270,6 @@
"admin_show": "Показать",
"admin_hide": "Скрыть",
"admin_tariffs_stat_total": "Всего тарифов",
"admin_tariffs_stat_enabled": "Включено",
"admin_tariffs_stat_default": "По умолчанию",
"admin_tariffs_stat_default_hint": "Используется для новых подписок",
"admin_tariffs_stat_disabled": "Отключено",
@@ -1340,7 +1296,6 @@
"admin_tariffs_legacy_subtitle": "Старые периоды и пакеты трафика remnawave-tg-shop, которые используются только без JSON-каталога.",
"admin_tariffs_legacy_period": "Период",
"admin_tariffs_legacy_enabled": "Включён",
"admin_tariffs_legacy_traffic_packages": "Пакеты трафика",
"admin_tariffs_legacy_stars_traffic_packages": "Пакеты трафика, Stars",
"admin_tariffs_legacy_traffic_hint": "Формат: 10:199,50:799",
"admin_tariff_tab_general": "Основное",
@@ -1383,7 +1338,6 @@
"admin_months_short": "мес.",
"admin_at": "за",
"admin_tariff_traffic_packages": "Пакеты трафика",
"admin_btn_refresh": "Обновить",
"admin_btn_create_tariff": "Создать тариф",
"admin_enabled": "Включено",
"admin_disabled": "Выключено",
@@ -1398,7 +1352,6 @@
"admin_broadcast_stat_failed": "Неудач",
"admin_broadcast_started": "Рассылка запущена",
"admin_broadcast_failed": "Ошибка рассылки",
"admin_user_short": "Пользователь",
"admin_target_short": "Цель",
"admin_settings_field_default_language_label": "Язык по умолчанию",
"admin_settings_field_default_language_description": "Используется для приветственных сообщений и публичных страниц.",
@@ -1667,45 +1620,18 @@
"admin_nav_support": "Поддержка",
"admin_section_support_title": "Поддержка",
"admin_section_support_subtitle": "Инбокс тикетов и ответы пользователям",
"admin_support_search": "Поиск",
"admin_support_empty": "Тикетов пока нет",
"admin_support_select_ticket": "Выберите тикет",
"admin_support_close_ticket": "Закрыть",
"admin_support_internal_note": "Внутренняя заметка",
"admin_support_reply_placeholder": "Ответ",
"admin_support_no_messages": "Сообщений пока нет",
"admin_support_filter_all": "Все",
"admin_support_filter_active": "Активные",
"admin_support_filter_closed": "Закрытые",
"admin_support_filter_all_priorities": "Любой приоритет",
"admin_support_filter_all_categories": "Все категории",
"admin_support_ticket_number": "Тикет #{id}",
"admin_support_priority": "Приоритет",
"admin_support_category": "Категория",
"admin_support_role_user": "Пользователь",
"admin_support_role_admin": "Админ",
"admin_support_role_system": "Система",
"admin_support_user_context": "Пользователь",
"admin_support_open_user": "Карточка",
"admin_support_tariff": "Тариф",
"admin_support_status": "Статус",
"admin_support_remaining": "Осталось",
"admin_support_unread": "Непрочитано",
"admin_support_summary": "Сводка поддержки",
"admin_support_ticket_dialog": "Диалог поддержки",
"admin_support_status_open": "Открыт",
"admin_support_status_awaiting_user": "Ждёт пользователя",
"admin_support_status_awaiting_admin": "Ждёт админа",
"admin_support_status_resolved": "Решён",
"admin_support_status_closed": "Закрыт",
"admin_support_priority_low": "Низкий",
"admin_support_priority_normal": "Обычный",
"admin_support_priority_high": "Высокий",
"admin_support_priority_urgent": "Срочный",
"admin_support_category_billing": "Оплата",
"admin_support_category_technical": "Техническое",
"admin_support_category_account": "Аккаунт",
"admin_support_category_other": "Другое",
"admin_support_sort_importance_desc": "Важные сверху",
"admin_sort_updated_desc": "Сначала новые",
"admin_sort_updated_asc": "Сначала старые",
@@ -1722,7 +1648,6 @@
"wa_install_subscription_link_hint": "Отсканируйте QR-код или скопируйте ссылку.",
"wa_install_qr_alt": "QR-код подписки",
"wa_install_copy_subscription_link": "Скопировать ссылку",
"wa_install_link_copied": "Ссылка скопирована",
"wa_install_share": "Поделиться",
"wa_install_share_copied": "Ссылка на инструкцию скопирована",
"wa_app_launch_title": "Открываем приложение",
@@ -1750,5 +1675,82 @@
"admin_settings_field_subscription_page_config_json_label": "JSON-конфиг Subscription Page",
"admin_settings_field_subscription_page_config_json_description": "Необязательный JSON-override из админки. Применяется только когда включен соответствующий тумблер.",
"admin_settings_field_subscription_page_config_json_placeholder": "{\n \"version\": \"1\"\n}",
"admin_settings_json_upload": "Загрузить .json"
"admin_settings_json_upload": "Загрузить .json",
"admin_nav_translations": "Переводы",
"admin_section_translations_title": "Переводы",
"admin_section_translations_subtitle": "Оверрайды строк локализации из базы данных и data/locales-overrides.json",
"admin_translations_saved": "Переводы сохранены",
"admin_translations_validation_errors": "Ошибки: {errors}",
"admin_translations_save_error": "Не удалось сохранить переводы: {error}",
"admin_translations_base_value": "Базовый текст",
"admin_translations_search_placeholder": "Поиск по ключам и тексту",
"admin_translations_hint": "Оверрайды хранятся в базе данных и зеркалируются в {path}.",
"admin_translations_keys_count": "Ключей: {count}",
"admin_translations_no_matches": "Подходящих строк нет",
"admin_translations_group_admin": "Админ-панель",
"admin_translations_group_admin_hint": "Навигация, таблицы, формы, диалоги и подписи только для админов.",
"admin_translations_group_admin_navigation": "Навигация и общий UI админки",
"admin_translations_group_admin_navigation_hint": "Сайдбар, заголовки разделов, действия тулбаров, фильтры и общие контролы.",
"admin_translations_group_admin_dashboard": "Дашборд и статистика",
"admin_translations_group_admin_dashboard_hint": "Карточки дашборда, графики выручки, статус синхронизации панели и мониторинг.",
"admin_translations_group_admin_users": "Пользователи в админке",
"admin_translations_group_admin_users_hint": "Списки и карточки пользователей, баны, начисления, premium-override и личные сообщения.",
"admin_translations_group_admin_payments": "Платежи в админке",
"admin_translations_group_admin_payments_hint": "Таблицы платежей, детали оплат, экспорт, названия провайдеров и платёжная статистика.",
"admin_translations_group_admin_promos_marketing": "Промо, реклама и рассылки",
"admin_translations_group_admin_promos_marketing_hint": "Управление промокодами, рекламные кампании, маркетинговые инструменты и сценарии рассылок.",
"admin_translations_group_admin_tariffs": "Тарифы в админке",
"admin_translations_group_admin_tariffs_hint": "Каталог тарифов, диалоги тарифов, legacy-строки и блоки триала.",
"admin_translations_group_admin_support": "Инбокс поддержки",
"admin_translations_group_admin_support_hint": "Инбокс тикетов, фильтры, ответы админа и статусы поддержки.",
"admin_translations_group_admin_appearance": "Внешний вид админки",
"admin_translations_group_admin_appearance_hint": "Каталог тем, брендинг, логотип, favicon и публичные ссылки.",
"admin_translations_group_admin_settings_payments": "Платёжные настройки",
"admin_translations_group_admin_settings_payments_hint": "Тумблеры способов оплаты, цены, реквизиты провайдеров и настройки вебхуков.",
"admin_translations_group_admin_settings_subscriptions": "Настройки подписок",
"admin_translations_group_admin_settings_subscriptions_hint": "Подключение панели, squad по умолчанию, триал, рефералы, лимиты устройств и инструкции.",
"admin_translations_group_admin_settings_notifications": "Уведомления и логи",
"admin_translations_group_admin_settings_notifications_hint": "Логирование, обязательный канал, уведомления о подписке и лимиты поддержки.",
"admin_translations_group_admin_settings": "Настройки админки",
"admin_translations_group_admin_settings_hint": "Группы настроек, подразделы, подсказки и настройки без отдельной категории.",
"admin_translations_group_admin_translations": "Переводы в админке",
"admin_translations_group_admin_translations_hint": "Экран оверрайдов переводов, управление языками и названия групп локалей.",
"admin_translations_group_admin_logs": "Логи и экспорт",
"admin_translations_group_admin_logs_hint": "Логи активности, экспорт логов, CSV-заголовки и подписи деталей событий.",
"admin_translations_group_admin_misc": "Прочее в админке",
"admin_translations_group_admin_misc_hint": "Старые подписи bot-admin и внутренние строки, которые не попали в другие разделы.",
"admin_translations_group_webapp": "Mini App",
"admin_translations_group_webapp_hint": "Пользовательские экраны Mini App, навигация, настройки и уведомления.",
"admin_translations_group_bot_menu": "Telegram-бот",
"admin_translations_group_bot_menu_hint": "Стартовое меню, inline-кнопки, выбор языка и сценарии внутри бота.",
"admin_translations_group_subscriptions": "Подписки и устройства",
"admin_translations_group_subscriptions_hint": "Статус подписки, инструкции подключения, пакеты трафика, триал и устройства.",
"admin_translations_group_payments": "Платежи",
"admin_translations_group_payments_hint": "Платежные сценарии, инвойсы, способы оплаты и сообщения checkout.",
"admin_translations_group_support": "Поддержка",
"admin_translations_group_support_hint": "Ссылки поддержки, тикеты, статусы тикетов и уведомления.",
"admin_translations_group_referrals_promos": "Рефералы и промокоды",
"admin_translations_group_referrals_promos_hint": "Реферальная программа, приглашения, промокоды и бонусы.",
"admin_translations_group_auth_security": "Вход и безопасность",
"admin_translations_group_auth_security_hint": "Логин, подтверждение email, привязка аккаунтов и сообщения безопасности.",
"admin_translations_group_emails": "Email-письма",
"admin_translations_group_emails_hint": "Транзакционные письма пользователям: коды входа, платежи, объединение аккаунтов и напоминания.",
"admin_translations_group_notifications_sync": "Уведомления и синхронизация",
"admin_translations_group_notifications_sync_hint": "Админские уведомления, синхронизация панели, логи и фоновые статусы.",
"admin_translations_group_common": "Общие строки",
"admin_translations_group_common_hint": "Общие кнопки, статусы, ошибки валидации и строки без отдельной группы.",
"admin_translations_file_write_warning": "Переводы сохранены в БД, но JSON-файл не обновился",
"admin_add": "Добавить",
"admin_translations_fallback_value": "Фолбэк",
"admin_translations_languages_title": "Языки",
"admin_translations_languages_hint": "Можно добавлять языки только для оверрайдов, без базовых locale-файлов.",
"admin_translations_language_placeholder": "de, uk, pt-BR",
"admin_translations_language_custom": "Доп.",
"admin_translations_language_invalid": "Неверный код языка",
"admin_translations_language_exists": "Язык {code} уже есть",
"admin_translations_audience_all": "Все",
"admin_translations_audience_user": "Видно пользователю",
"admin_translations_audience_internal": "Админка/внутреннее",
"admin_translations_audience_user_hint": "Строки Mini App, бота, платежей, подписок, поддержки и входа.",
"admin_translations_audience_internal_hint": "Админка, логи, статусы синхронизации и сервисные уведомления."
}