@authrim/setup 0.1.89 → 0.1.91

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/dist/cli/commands/init.d.ts.map +1 -1
  2. package/dist/cli/commands/init.js +58 -11
  3. package/dist/cli/commands/init.js.map +1 -1
  4. package/dist/core/lock.d.ts +16 -16
  5. package/dist/core/wrangler.d.ts.map +1 -1
  6. package/dist/core/wrangler.js +21 -2
  7. package/dist/core/wrangler.js.map +1 -1
  8. package/dist/i18n/index.d.ts.map +1 -1
  9. package/dist/i18n/index.js +14 -3
  10. package/dist/i18n/index.js.map +1 -1
  11. package/dist/i18n/locales/de.d.ts +8 -0
  12. package/dist/i18n/locales/de.d.ts.map +1 -0
  13. package/dist/i18n/locales/de.js +894 -0
  14. package/dist/i18n/locales/de.js.map +1 -0
  15. package/dist/i18n/locales/es.d.ts +8 -0
  16. package/dist/i18n/locales/es.d.ts.map +1 -0
  17. package/dist/i18n/locales/es.js +894 -0
  18. package/dist/i18n/locales/es.js.map +1 -0
  19. package/dist/i18n/locales/fr.d.ts +8 -0
  20. package/dist/i18n/locales/fr.d.ts.map +1 -0
  21. package/dist/i18n/locales/fr.js +894 -0
  22. package/dist/i18n/locales/fr.js.map +1 -0
  23. package/dist/i18n/locales/id.d.ts +8 -0
  24. package/dist/i18n/locales/id.d.ts.map +1 -0
  25. package/dist/i18n/locales/id.js +894 -0
  26. package/dist/i18n/locales/id.js.map +1 -0
  27. package/dist/i18n/locales/ko.d.ts +8 -0
  28. package/dist/i18n/locales/ko.d.ts.map +1 -0
  29. package/dist/i18n/locales/ko.js +894 -0
  30. package/dist/i18n/locales/ko.js.map +1 -0
  31. package/dist/i18n/locales/pt.d.ts +8 -0
  32. package/dist/i18n/locales/pt.d.ts.map +1 -0
  33. package/dist/i18n/locales/pt.js +894 -0
  34. package/dist/i18n/locales/pt.js.map +1 -0
  35. package/dist/i18n/locales/ru.d.ts +8 -0
  36. package/dist/i18n/locales/ru.d.ts.map +1 -0
  37. package/dist/i18n/locales/ru.js +894 -0
  38. package/dist/i18n/locales/ru.js.map +1 -0
  39. package/dist/i18n/locales/zh-CN.d.ts +8 -0
  40. package/dist/i18n/locales/zh-CN.d.ts.map +1 -0
  41. package/dist/i18n/locales/zh-CN.js +894 -0
  42. package/dist/i18n/locales/zh-CN.js.map +1 -0
  43. package/dist/i18n/locales/zh-TW.d.ts +8 -0
  44. package/dist/i18n/locales/zh-TW.d.ts.map +1 -0
  45. package/dist/i18n/locales/zh-TW.js +894 -0
  46. package/dist/i18n/locales/zh-TW.js.map +1 -0
  47. package/dist/i18n/types.d.ts +1 -1
  48. package/dist/i18n/types.d.ts.map +1 -1
  49. package/dist/i18n/types.js +1 -0
  50. package/dist/i18n/types.js.map +1 -1
  51. package/dist/web/ui.d.ts.map +1 -1
  52. package/dist/web/ui.js +7 -2
  53. package/dist/web/ui.js.map +1 -1
  54. package/package.json +1 -1
@@ -0,0 +1,894 @@
1
+ /**
2
+ * Russian Translations for Authrim Setup Tool
3
+ * Русский перевод (формальное обращение на «Вы»)
4
+ */
5
+ const ru = {
6
+ // Language selection
7
+ 'language.select': 'Select language / Выберите язык / 言語を選択',
8
+ 'language.selected': 'Язык: {{language}}',
9
+ // Banner
10
+ 'banner.title': 'Настройка Authrim',
11
+ 'banner.subtitle': 'OIDC-провайдер на Cloudflare Workers',
12
+ 'banner.warning': 'ВНИМАНИЕ: В разработке!',
13
+ 'banner.warningDetail': 'Этот проект ещё не работает корректно.',
14
+ 'banner.adminWarning': 'Панель администратора не завершена и не поддерживает вход.',
15
+ 'banner.exitHint': 'Нажмите Ctrl+C в любой момент для выхода',
16
+ // Mode selection
17
+ 'mode.prompt': 'Выберите способ настройки',
18
+ 'mode.quick': 'Веб-интерфейс (рекомендуется)',
19
+ 'mode.quickDesc': 'Интерактивная настройка в браузере',
20
+ 'mode.advanced': 'Режим CLI',
21
+ 'mode.advancedDesc': 'Интерактивная настройка в терминале',
22
+ // Startup menu
23
+ 'startup.description': 'Настройка OIDC-провайдера Authrim на Cloudflare Workers.',
24
+ 'startup.cancel': 'Отмена',
25
+ 'startup.cancelDesc': 'Выйти из настройки',
26
+ 'startup.cancelled': 'Настройка отменена.',
27
+ 'startup.resumeLater': 'Для продолжения позже:',
28
+ // Main menu
29
+ 'menu.prompt': 'Что вы хотите сделать?',
30
+ 'menu.quick': 'Быстрая настройка (5 минут)',
31
+ 'menu.quickDesc': 'Развернуть Authrim с минимальной конфигурацией',
32
+ 'menu.custom': 'Расширенная настройка',
33
+ 'menu.customDesc': 'Настроить все параметры пошагово',
34
+ // Setup titles
35
+ 'quick.title': '⚡ Быстрая настройка',
36
+ 'custom.title': '🔧 Расширенная настройка',
37
+ 'menu.manage': 'Просмотр существующих окружений',
38
+ 'menu.manageDesc': 'Просмотр, проверка или удаление существующих окружений',
39
+ 'menu.load': 'Загрузить существующую конфигурацию',
40
+ 'menu.loadDesc': 'Продолжить настройку из authrim-config.json',
41
+ 'menu.exit': 'Выход',
42
+ 'menu.exitDesc': 'Выйти из настройки',
43
+ 'menu.goodbye': 'До свидания!',
44
+ // Update check
45
+ 'update.checking': 'Проверка обновлений...',
46
+ 'update.available': 'Доступно обновление: {{localVersion}} → {{remoteVersion}}',
47
+ 'update.prompt': 'Что вы хотите сделать?',
48
+ 'update.continue': 'Продолжить с текущей версией ({{version}})',
49
+ 'update.continueDesc': 'Использовать существующий исходный код',
50
+ 'update.update': 'Обновить до последней версии ({{version}})',
51
+ 'update.updateDesc': 'Загрузить и заменить на новую версию',
52
+ 'update.cancel': 'Отмена',
53
+ 'update.cancelled': 'Отменено.',
54
+ 'update.current': 'Используется исходный код Authrim (v{{version}})',
55
+ // Source download
56
+ 'source.downloading': 'Загрузка исходного кода...',
57
+ 'source.downloaded': 'Исходный код загружен ({{version}})',
58
+ 'source.extracting': 'Распаковка исходного кода...',
59
+ 'source.installing': 'Установка зависимостей (это может занять несколько минут)...',
60
+ 'source.installed': 'Зависимости установлены',
61
+ 'source.installFailed': 'Не удалось установить зависимости',
62
+ 'source.installManually': 'Вы можете попробовать установить вручную:',
63
+ 'source.notInSourceDir': 'Исходный код Authrim не найден',
64
+ 'source.downloadPrompt': 'Загрузить исходный код в {{path}}?',
65
+ 'source.downloadOption': 'Загрузить исходный код',
66
+ 'source.downloadOptionDesc': 'Загрузить последнюю версию',
67
+ 'source.exitOption': 'Выход',
68
+ 'source.exitOptionDesc': 'Выйти из настройки',
69
+ 'source.cloneManually': 'Для ручного клонирования:',
70
+ 'source.directoryExists': 'Каталог {{path}} существует, но не является допустимым исходным кодом Authrim',
71
+ 'source.replaceOption': 'Заменить свежей загрузкой',
72
+ 'source.replaceOptionDesc': 'Удалить {{path}} и загрузить последнюю версию',
73
+ 'source.differentOption': 'Использовать другой каталог',
74
+ 'source.differentOptionDesc': 'Указать другое расположение',
75
+ 'source.enterPath': 'Введите путь к каталогу:',
76
+ 'source.updateFailed': 'Обновление не удалось',
77
+ 'source.downloadFailed': 'Загрузка не удалась',
78
+ 'source.verificationWarnings': 'Предупреждения проверки структуры исходного кода:',
79
+ // Prerequisites
80
+ 'prereq.checking': 'Проверка состояния wrangler...',
81
+ 'prereq.wranglerNotInstalled': 'wrangler не установлен',
82
+ 'prereq.wranglerInstallHint': 'Выполните следующую команду для установки:',
83
+ 'prereq.notLoggedIn': 'Не выполнен вход в Cloudflare',
84
+ 'prereq.loginHint': 'Выполните следующую команду для аутентификации:',
85
+ 'prereq.loggedInAs': 'Подключено к Cloudflare ({{email}})',
86
+ 'prereq.accountId': 'ID аккаунта: {{accountId}}',
87
+ // Environment
88
+ 'env.prompt': 'Введите название окружения',
89
+ 'env.prod': 'Продакшн',
90
+ 'env.prodDesc': 'Для рабочего использования',
91
+ 'env.staging': 'Стейджинг',
92
+ 'env.stagingDesc': 'Для тестирования перед продакшном',
93
+ 'env.dev': 'Разработка',
94
+ 'env.devDesc': 'Для локальной разработки',
95
+ 'env.custom': 'Другое',
96
+ 'env.customDesc': 'Ввести своё название окружения',
97
+ 'env.customPrompt': 'Введите название окружения',
98
+ 'env.customValidation': 'Допускаются только строчные буквы, цифры и дефисы (например, prod, staging, dev)',
99
+ 'env.detected': 'Обнаруженные окружения:',
100
+ 'env.selectExisting': 'Выбрать существующее окружение',
101
+ 'env.createNew': 'Создать новое окружение',
102
+ 'env.createNewDesc': 'Настроить новое окружение',
103
+ 'env.checking': 'Проверка существующих окружений...',
104
+ 'env.alreadyExists': 'Окружение "{{env}}" уже существует',
105
+ 'env.existingResources': 'Существующие ресурсы:',
106
+ 'env.workers': 'Workers: {{count}}',
107
+ 'env.d1Databases': 'Базы данных D1: {{count}}',
108
+ 'env.kvNamespaces': 'Пространства имён KV: {{count}}',
109
+ 'env.chooseAnother': 'Пожалуйста, выберите другое имя или используйте "npx @authrim/setup manage" для удаления.',
110
+ 'env.available': 'Название окружения доступно',
111
+ 'env.checkFailed': 'Не удалось проверить существующие окружения (продолжаем)',
112
+ 'env.noEnvFound': 'Окружения Authrim не найдены.',
113
+ // Region
114
+ 'region.prompt': 'Выберите регион',
115
+ 'region.auto': 'Автоматически (ближайший к вам)',
116
+ 'region.autoDesc': 'Позволить Cloudflare выбрать ближайший регион',
117
+ 'region.wnam': 'Северная Америка (Запад)',
118
+ 'region.wnamDesc': 'Западная Северная Америка',
119
+ 'region.enam': 'Северная Америка (Восток)',
120
+ 'region.enamDesc': 'Восточная Северная Америка',
121
+ 'region.weur': 'Европа (Запад)',
122
+ 'region.weurDesc': 'Западная Европа',
123
+ 'region.eeur': 'Европа (Восток)',
124
+ 'region.eeurDesc': 'Восточная Европа',
125
+ 'region.apac': 'Азиатско-Тихоокеанский регион',
126
+ 'region.apacDesc': 'Азиатско-Тихоокеанский регион',
127
+ 'region.oceania': 'Океания',
128
+ 'region.oceaniaDesc': 'Австралия и острова Тихого океана',
129
+ 'region.euJurisdiction': 'Юрисдикция ЕС (соответствие GDPR)',
130
+ 'region.euJurisdictionDesc': 'Данные хранятся в ЕС',
131
+ // UI deployment
132
+ 'ui.prompt': 'Способ развёртывания UI',
133
+ 'ui.pagesOption': 'Cloudflare Pages',
134
+ 'ui.pagesDesc': 'Развернуть на Cloudflare Pages (рекомендуется)',
135
+ 'ui.customOption': 'Собственный домен',
136
+ 'ui.customDesc': 'Использовать собственный хостинг',
137
+ 'ui.skipOption': 'Пропустить',
138
+ 'ui.skipDesc': 'Пропустить развёртывание UI',
139
+ 'ui.customPrompt': 'Введите URL собственного UI',
140
+ // Domain
141
+ 'domain.prompt': 'Настроить собственный домен?',
142
+ 'domain.workersDevOption': 'Использовать домен workers.dev',
143
+ 'domain.workersDevDesc': 'Использовать домен Cloudflare по умолчанию',
144
+ 'domain.customOption': 'Настроить собственный домен',
145
+ 'domain.customDesc': 'Использовать свой домен',
146
+ 'domain.customPrompt': 'Введите собственный домен (например, auth.example.com)',
147
+ 'domain.customValidation': 'Пожалуйста, введите корректный домен (например, auth.example.com)',
148
+ 'domain.issuerUrl': 'URL издателя: {{url}}',
149
+ 'domain.apiDomain': 'Домен API / издателя (например, auth.example.com)',
150
+ 'domain.loginUiDomain': 'Домен UI для входа (Enter для пропуска)',
151
+ 'domain.adminUiDomain': 'Домен панели администратора (Enter для пропуска)',
152
+ 'domain.enterDomains': 'Введите собственные домены (оставьте пустым для использования Cloudflare по умолчанию)',
153
+ 'domain.singleTenantNote': 'В однотенантном режиме URL издателя = домен API',
154
+ 'domain.usingWorkersDev': '(используется домен Cloudflare workers.dev)',
155
+ // Database
156
+ 'db.title': 'Конфигурация базы данных',
157
+ 'db.regionWarning': 'Регион базы данных нельзя изменить после создания.',
158
+ 'db.coreDescription': 'Core DB: хранит OAuth-клиентов, токены, сессии, журналы аудита',
159
+ 'db.coreRegion': 'Регион основной базы данных',
160
+ 'db.piiDescription': 'PII DB: хранит профили пользователей, учётные данные, персональные данные',
161
+ 'db.piiNote': 'Учитывайте требования к защите данных.',
162
+ 'db.piiRegion': 'Регион базы данных PII',
163
+ 'db.creating': 'Создание базы данных...',
164
+ 'db.created': 'База данных создана: {{name}}',
165
+ 'db.existing': 'Используется существующая база данных: {{name}}',
166
+ 'db.error': 'Не удалось создать базу данных',
167
+ 'db.locationHints': 'Подсказки по расположению',
168
+ 'db.jurisdictionCompliance': 'Юрисдикция (соответствие)',
169
+ // KV
170
+ 'kv.creating': 'Создание пространства имён KV...',
171
+ 'kv.created': 'Пространство имён KV создано: {{name}}',
172
+ 'kv.existing': 'Используется существующее пространство имён KV: {{name}}',
173
+ 'kv.error': 'Не удалось создать пространство имён KV',
174
+ // Queue
175
+ 'queue.creating': 'Создание очереди...',
176
+ 'queue.created': 'Очередь создана: {{name}}',
177
+ 'queue.existing': 'Используется существующая очередь: {{name}}',
178
+ 'queue.error': 'Не удалось создать очередь',
179
+ // R2
180
+ 'r2.creating': 'Создание бакета R2...',
181
+ 'r2.created': 'Бакет R2 создан: {{name}}',
182
+ 'r2.existing': 'Используется существующий бакет R2: {{name}}',
183
+ 'r2.error': 'Не удалось создать бакет R2',
184
+ // Keys
185
+ 'keys.generating': 'Генерация криптографических ключей...',
186
+ 'keys.generated': 'Ключи сгенерированы ({{path}})',
187
+ 'keys.existing': 'Ключи для окружения "{{env}}" уже существуют',
188
+ 'keys.existingWarning': 'Существующие ключи будут перезаписаны.',
189
+ 'keys.error': 'Не удалось сгенерировать ключи',
190
+ 'keys.regeneratePrompt': 'Перегенерировать ключи?',
191
+ 'keys.regenerateWarning': 'Это сделает недействительными все существующие токены!',
192
+ // Config
193
+ 'config.saving': 'Сохранение конфигурации...',
194
+ 'config.saved': 'Конфигурация сохранена в {{path}}',
195
+ 'config.error': 'Не удалось сохранить конфигурацию',
196
+ 'config.path': 'Путь к конфигурации',
197
+ 'config.summary': 'Сводка конфигурации',
198
+ 'config.infrastructure': 'Инфраструктура:',
199
+ 'config.environment': 'Окружение:',
200
+ 'config.workerPrefix': 'Префикс Worker:',
201
+ 'config.profile': 'Профиль:',
202
+ 'config.tenantIssuer': 'Тенант и издатель:',
203
+ 'config.mode': 'Режим:',
204
+ 'config.multiTenant': 'Мультитенантный',
205
+ 'config.singleTenant': 'Однотенантный',
206
+ 'config.baseDomain': 'Базовый домен:',
207
+ 'config.issuerFormat': 'Формат издателя:',
208
+ 'config.issuerUrl': 'URL издателя:',
209
+ 'config.defaultTenant': 'Тенант по умолчанию:',
210
+ 'config.displayName': 'Отображаемое имя:',
211
+ 'config.publicUrls': 'Публичные URL:',
212
+ 'config.apiRouter': 'API-маршрутизатор:',
213
+ 'config.loginUi': 'UI для входа:',
214
+ 'config.adminUi': 'Панель администратора:',
215
+ 'config.components': 'Компоненты:',
216
+ 'config.featureFlags': 'Флаги функций:',
217
+ 'config.emailSettings': 'Email:',
218
+ 'config.oidcSettings': 'Настройки OIDC:',
219
+ 'config.accessTtl': 'TTL токена доступа:',
220
+ 'config.refreshTtl': 'TTL токена обновления:',
221
+ 'config.authCodeTtl': 'TTL кода авторизации:',
222
+ 'config.pkceRequired': 'Требуется PKCE:',
223
+ 'config.sharding': 'Шардинг:',
224
+ 'config.authCodeShards': 'Код авторизации:',
225
+ 'config.refreshTokenShards': 'Токен обновления:',
226
+ 'config.database': 'База данных:',
227
+ 'config.coreDb': 'Основная БД:',
228
+ 'config.piiDb': 'БД PII:',
229
+ 'config.enabled': 'Включено',
230
+ 'config.disabled': 'Отключено',
231
+ 'config.standard': '(стандартный)',
232
+ 'config.notConfigured': 'Не настроено (настроить позже)',
233
+ 'config.yes': 'Да',
234
+ 'config.no': 'Нет',
235
+ 'config.shards': 'шардов',
236
+ 'config.sec': 'сек',
237
+ 'config.automatic': 'Автоматически',
238
+ // Deploy
239
+ 'deploy.prompt': 'Начать настройку с этой конфигурацией?',
240
+ 'deploy.starting': 'Запуск настройки...',
241
+ 'deploy.building': 'Сборка пакетов...',
242
+ 'deploy.deploying': 'Развёртывание на Cloudflare...',
243
+ 'deploy.success': 'Настройка завершена!',
244
+ 'deploy.error': 'Не удалось развернуть',
245
+ 'deploy.skipped': 'Развёртывание пропущено',
246
+ 'deploy.component': 'Развёртывание {{component}}...',
247
+ 'deploy.uploadingSecrets': 'Загрузка секретов...',
248
+ 'deploy.secretsUploaded': 'Секреты загружены',
249
+ 'deploy.runningMigrations': 'Выполнение миграций базы данных...',
250
+ 'deploy.migrationsComplete': 'Миграции завершены',
251
+ 'deploy.deployingWorker': 'Развёртывание worker {{name}}...',
252
+ 'deploy.workerDeployed': 'Worker развёрнут: {{name}}',
253
+ 'deploy.deployingUI': 'Развёртывание UI...',
254
+ 'deploy.uiDeployed': 'UI развёрнут',
255
+ 'deploy.creatingResources': 'Создание ресурсов Cloudflare...',
256
+ 'deploy.resourcesFailed': 'Не удалось создать ресурсы',
257
+ 'deploy.continueWithout': 'Продолжить без подготовки? (вам потребуется создать ресурсы вручную)',
258
+ 'deploy.emailSecretsSaved': 'Секреты email сохранены в {{path}}',
259
+ 'deploy.confirmStart': 'Начать развёртывание?',
260
+ 'deploy.confirmDryRun': 'Запустить развёртывание в режиме dry-run?',
261
+ 'deploy.cancelled': 'Развёртывание отменено.',
262
+ 'deploy.wranglerChanged': 'Как вы хотите обработать эти изменения?',
263
+ 'deploy.wranglerKeep': '📝 Сохранить ручные изменения (развернуть как есть)',
264
+ 'deploy.wranglerBackup': '💾 Создать резервную копию и перезаписать мастером',
265
+ 'deploy.wranglerOverwrite': '⚠️ Перезаписать мастером (потерять изменения)',
266
+ // Email provider
267
+ 'email.title': 'Провайдер email',
268
+ 'email.description': 'Настройка отправки email для magic-ссылок и кодов подтверждения.',
269
+ 'email.prompt': 'Настроить провайдера email сейчас?',
270
+ 'email.resendOption': 'Resend',
271
+ 'email.resendDesc': 'Современный email API для разработчиков',
272
+ 'email.sesOption': 'AWS SES',
273
+ 'email.sesDesc': 'Amazon Simple Email Service',
274
+ 'email.smtpOption': 'SMTP',
275
+ 'email.smtpDesc': 'Общий SMTP-сервер',
276
+ 'email.skipOption': 'Нет (настроить позже)',
277
+ 'email.skipDesc': 'Пропустить настройку email',
278
+ 'email.apiKeyPrompt': 'API-ключ Resend',
279
+ 'email.apiKeyHint': 'Получите API-ключ на: https://resend.com/api-keys',
280
+ 'email.domainHint': 'Настройка домена: https://resend.com/domains',
281
+ 'email.apiKeyRequired': 'Требуется API-ключ',
282
+ 'email.apiKeyWarning': 'Предупреждение: API-ключи Resend обычно начинаются с "re_"',
283
+ 'email.fromAddressPrompt': 'Адрес отправителя email',
284
+ 'email.fromAddressValidation': 'Пожалуйста, введите корректный адрес email',
285
+ 'email.fromNamePrompt': 'Отображаемое имя отправителя (необязательно)',
286
+ 'email.domainVerificationRequired': 'Для отправки с вашего домена требуется верификация домена.',
287
+ 'email.seeDocumentation': 'См.: https://resend.com/docs/dashboard/domains/introduction',
288
+ 'email.provider': 'Провайдер:',
289
+ 'email.fromAddress': 'Адрес отправителя:',
290
+ 'email.fromName': 'Имя отправителя:',
291
+ // SMS provider
292
+ 'sms.prompt': 'Настроить провайдера SMS?',
293
+ 'sms.twilioOption': 'Twilio',
294
+ 'sms.twilioDesc': 'SMS через Twilio',
295
+ 'sms.skipOption': 'Нет (настроить позже)',
296
+ 'sms.skipDesc': 'Пропустить настройку SMS',
297
+ 'sms.accountSidPrompt': 'Twilio Account SID',
298
+ 'sms.authTokenPrompt': 'Twilio Auth Token',
299
+ 'sms.fromNumberPrompt': 'Номер телефона отправителя',
300
+ // Social providers
301
+ 'social.prompt': 'Настроить провайдеров социального входа?',
302
+ 'social.googleOption': 'Google',
303
+ 'social.googleDesc': 'Вход через Google',
304
+ 'social.githubOption': 'GitHub',
305
+ 'social.githubDesc': 'Вход через GitHub',
306
+ 'social.appleOption': 'Apple',
307
+ 'social.appleDesc': 'Вход через Apple',
308
+ 'social.microsoftOption': 'Microsoft',
309
+ 'social.microsoftDesc': 'Вход через Microsoft',
310
+ 'social.skipOption': 'Нет (настроить позже)',
311
+ 'social.skipDesc': 'Пропустить настройку социального входа',
312
+ 'social.clientIdPrompt': 'ID клиента',
313
+ 'social.clientSecretPrompt': 'Секрет клиента',
314
+ // Cloudflare API Token
315
+ 'cf.apiTokenPrompt': 'Введите API-токен Cloudflare',
316
+ 'cf.apiTokenValidation': 'Пожалуйста, введите корректный API-токен',
317
+ // OIDC Profile
318
+ 'profile.prompt': 'Выберите профиль OIDC',
319
+ 'profile.basicOp': 'Basic OP (Стандартный OIDC-провайдер)',
320
+ 'profile.basicOpDesc': 'Стандартные функции OIDC',
321
+ 'profile.fapiRw': 'FAPI Read-Write (Финансовый уровень)',
322
+ 'profile.fapiRwDesc': 'Соответствует профилю безопасности FAPI 1.0 Read-Write',
323
+ 'profile.fapi2Security': 'FAPI 2.0 Security Profile',
324
+ 'profile.fapi2SecurityDesc': 'Соответствует профилю безопасности FAPI 2.0 (максимальная безопасность)',
325
+ // Tenant configuration
326
+ 'tenant.title': 'Режим тенантов',
327
+ 'tenant.multiTenantPrompt': 'Включить мультитенантный режим? (изоляция тенантов на основе поддоменов)',
328
+ 'tenant.multiTenantTitle': 'Конфигурация URL мультитенантности',
329
+ 'tenant.multiTenantNote1': 'В мультитенантном режиме:',
330
+ 'tenant.multiTenantNote2': 'Каждый тенант имеет поддомен: https://{tenant}.{base-domain}',
331
+ 'tenant.multiTenantNote3': 'Базовый домен указывает на Worker-маршрутизатор',
332
+ 'tenant.multiTenantNote4': 'URL издателя динамически строится из заголовка Host',
333
+ 'tenant.baseDomainPrompt': 'Базовый домен (например, authrim.com)',
334
+ 'tenant.baseDomainRequired': 'Базовый домен обязателен для мультитенантного режима',
335
+ 'tenant.baseDomainValidation': 'Пожалуйста, введите корректный домен (например, authrim.com)',
336
+ 'tenant.issuerFormat': 'Формат URL издателя: https://{tenant}.{{domain}}',
337
+ 'tenant.issuerExample': 'Пример: https://acme.{{domain}}',
338
+ 'tenant.defaultTenantPrompt': 'Имя тенанта по умолчанию (идентификатор)',
339
+ 'tenant.defaultTenantValidation': 'Допускаются только строчные буквы, цифры и дефисы',
340
+ 'tenant.displayNamePrompt': 'Отображаемое имя тенанта по умолчанию',
341
+ 'tenant.singleTenantTitle': 'Конфигурация URL однотенантности',
342
+ 'tenant.singleTenantNote1': 'В однотенантном режиме:',
343
+ 'tenant.singleTenantNote2': 'URL издателя = собственный домен API (или workers.dev по умолчанию)',
344
+ 'tenant.singleTenantNote3': 'Все клиенты используют одного издателя',
345
+ 'tenant.organizationName': 'Название организации (отображаемое имя)',
346
+ 'tenant.uiDomainTitle': 'Конфигурация домена UI',
347
+ 'tenant.customUiDomainPrompt': 'Настроить собственные домены UI?',
348
+ 'tenant.loginUiDomain': 'Домен UI для входа (например, login.example.com)',
349
+ 'tenant.adminUiDomain': 'Домен панели администратора (например, admin.example.com)',
350
+ // Optional components
351
+ 'components.title': 'Дополнительные компоненты',
352
+ 'components.note': 'Примечание: Социальный вход и Policy Engine являются стандартными компонентами',
353
+ 'components.samlPrompt': 'Включить поддержку SAML?',
354
+ 'components.vcPrompt': 'Включить верифицируемые учётные данные (VC)?',
355
+ 'components.saml': 'SAML:',
356
+ 'components.vc': 'VC:',
357
+ 'components.socialLogin': 'Социальный вход:',
358
+ 'components.policyEngine': 'Policy Engine:',
359
+ // Feature flags
360
+ 'features.title': 'Флаги функций',
361
+ 'features.queuePrompt': 'Включить Cloudflare Queues? (для журналов аудита)',
362
+ 'features.r2Prompt': 'Включить Cloudflare R2? (для аватаров)',
363
+ 'features.queue': 'Очередь:',
364
+ 'features.r2': 'R2:',
365
+ // OIDC settings
366
+ 'oidc.configurePrompt': 'Настроить параметры OIDC? (TTL токенов и т.д.)',
367
+ 'oidc.title': 'Настройки OIDC',
368
+ 'oidc.accessTokenTtl': 'TTL токена доступа (сек)',
369
+ 'oidc.refreshTokenTtl': 'TTL токена обновления (сек)',
370
+ 'oidc.authCodeTtl': 'TTL кода авторизации (сек)',
371
+ 'oidc.pkceRequired': 'Требовать PKCE?',
372
+ 'oidc.positiveInteger': 'Пожалуйста, введите положительное целое число',
373
+ // Sharding settings
374
+ 'sharding.configurePrompt': 'Настроить шардинг? (для высоконагруженных окружений)',
375
+ 'sharding.title': 'Настройки шардинга',
376
+ 'sharding.note': 'Примечание: рекомендуется степень 2 для количества шардов (8, 16, 32, 64, 128)',
377
+ 'sharding.authCodeShards': 'Количество шардов кода авторизации',
378
+ 'sharding.refreshTokenShards': 'Количество шардов токена обновления',
379
+ // Infrastructure
380
+ 'infra.title': 'Инфраструктура (автогенерация)',
381
+ 'infra.workersNote': 'Будут развёрнуты следующие Workers:',
382
+ 'infra.router': 'Маршрутизатор:',
383
+ 'infra.auth': 'Аутентификация:',
384
+ 'infra.token': 'Токен:',
385
+ 'infra.management': 'Управление:',
386
+ 'infra.otherWorkers': '... и другие вспомогательные workers',
387
+ 'infra.defaultEndpoints': 'Эндпоинты по умолчанию (без собственного домена):',
388
+ 'infra.api': 'API:',
389
+ 'infra.ui': 'UI:',
390
+ 'infra.workersToDeploy': 'Workers для развёртывания: {{workers}}',
391
+ 'infra.defaultApi': 'API по умолчанию: {{url}}',
392
+ // Completion
393
+ 'complete.title': 'Настройка завершена!',
394
+ 'complete.summary': 'Ваш OIDC-провайдер Authrim развёрнут.',
395
+ 'complete.issuerUrl': 'URL издателя: {{url}}',
396
+ 'complete.adminUrl': 'Панель администратора: {{url}}',
397
+ 'complete.uiUrl': 'UI для входа: {{url}}',
398
+ 'complete.nextSteps': 'Следующие шаги:',
399
+ 'complete.nextStep1': '1. Проверьте развёртывание, посетив URL издателя',
400
+ 'complete.nextStep2': '2. Настройте OAuth-клиентов в панели администратора',
401
+ 'complete.nextStep3': '3. При необходимости настройте собственные домены',
402
+ 'complete.warning': 'Не забудьте сохранить ключи в безопасном месте и сделать резервную копию!',
403
+ 'complete.success': 'Настройка успешно завершена!',
404
+ 'complete.urls': 'URL-адреса:',
405
+ 'complete.configLocation': 'Конфигурация:',
406
+ 'complete.keysLocation': 'Ключи:',
407
+ // Resource provisioning
408
+ 'resource.provisioning': 'Подготовка {{resource}}...',
409
+ 'resource.provisioned': '{{resource}} успешно подготовлен',
410
+ 'resource.failed': 'Не удалось подготовить {{resource}}',
411
+ 'resource.skipped': 'Пропущено {{resource}}',
412
+ // Manage environments
413
+ 'manage.title': 'Существующие окружения',
414
+ 'manage.loading': 'Загрузка...',
415
+ 'manage.detecting': 'Обнаружение окружений...',
416
+ 'manage.detected': 'Обнаруженные окружения:',
417
+ 'manage.noEnvs': 'Окружения Authrim не найдены.',
418
+ 'manage.selectAction': 'Выберите действие',
419
+ 'manage.viewDetails': 'Просмотр деталей',
420
+ 'manage.viewDetailsDesc': 'Показать подробную информацию о ресурсах',
421
+ 'manage.deleteEnv': 'Удалить окружение',
422
+ 'manage.deleteEnvDesc': 'Удалить окружение и ресурсы',
423
+ 'manage.backToMenu': 'Вернуться в главное меню',
424
+ 'manage.backToMenuDesc': 'Вернуться в главное меню',
425
+ 'manage.selectEnv': 'Выберите окружение',
426
+ 'manage.back': 'Назад',
427
+ 'manage.continueManaging': 'Продолжить управление окружениями?',
428
+ // Load config
429
+ 'loadConfig.title': 'Загрузка существующей конфигурации',
430
+ 'loadConfig.found': 'Найдено конфигураций: {{count}}',
431
+ 'loadConfig.new': '(новая)',
432
+ 'loadConfig.legacy': '(устаревшая)',
433
+ 'loadConfig.legacyDetected': 'Обнаружена устаревшая структура',
434
+ 'loadConfig.legacyFiles': 'Устаревшие файлы:',
435
+ 'loadConfig.newBenefits': 'Преимущества новой структуры:',
436
+ 'loadConfig.benefit1': 'Переносимость окружения (zip .authrim/prod/)',
437
+ 'loadConfig.benefit2': 'Отслеживание версий по окружениям',
438
+ 'loadConfig.benefit3': 'Более чистая структура проекта',
439
+ 'loadConfig.migratePrompt': 'Хотите перейти на новую структуру?',
440
+ 'loadConfig.migrateOption': 'Перейти на новую структуру (.authrim/{env}/)',
441
+ 'loadConfig.continueOption': 'Продолжить с устаревшей структурой',
442
+ 'loadConfig.migrationComplete': 'Миграция успешно завершена!',
443
+ 'loadConfig.validationPassed': 'Проверка пройдена',
444
+ 'loadConfig.validationIssues': 'Проблемы валидации:',
445
+ 'loadConfig.newLocation': 'Новое расположение конфигурации:',
446
+ 'loadConfig.migrationFailed': 'Миграция не удалась:',
447
+ 'loadConfig.continuingLegacy': 'Продолжение с устаревшей структурой...',
448
+ 'loadConfig.loadThis': 'Загрузить эту конфигурацию',
449
+ 'loadConfig.specifyOther': 'Указать другой файл',
450
+ 'loadConfig.noConfigFound': 'Конфигурация не найдена в текущем каталоге.',
451
+ 'loadConfig.tip': 'Совет: вы можете указать файл конфигурации:',
452
+ 'loadConfig.specifyPath': 'Указать путь к файлу',
453
+ 'loadConfig.enterPath': 'Введите путь к файлу конфигурации',
454
+ 'loadConfig.pathRequired': 'Пожалуйста, введите путь',
455
+ 'loadConfig.fileNotFound': 'Файл не найден: {{path}}',
456
+ 'loadConfig.selectConfig': 'Выберите конфигурацию для загрузки',
457
+ // Common
458
+ 'common.yes': 'Да',
459
+ 'common.no': 'Нет',
460
+ 'common.continue': 'Продолжить',
461
+ 'common.cancel': 'Отмена',
462
+ 'common.skip': 'Пропустить',
463
+ 'common.back': 'Назад',
464
+ 'common.confirm': 'Подтвердить',
465
+ 'common.error': 'Ошибка',
466
+ 'common.warning': 'Предупреждение',
467
+ 'common.success': 'Успешно',
468
+ 'common.info': 'Информация',
469
+ 'common.loading': 'Загрузка...',
470
+ 'common.saving': 'Сохранение...',
471
+ 'common.processing': 'Обработка...',
472
+ 'common.done': 'Готово',
473
+ 'common.required': 'Обязательно',
474
+ 'common.optional': 'Необязательно',
475
+ // Errors
476
+ 'error.generic': 'Произошла ошибка',
477
+ 'error.network': 'Ошибка сети',
478
+ 'error.timeout': 'Время ожидания запроса истекло',
479
+ 'error.invalidInput': 'Некорректный ввод',
480
+ 'error.fileNotFound': 'Файл не найден',
481
+ 'error.permissionDenied': 'Доступ запрещён',
482
+ 'error.configNotFound': 'Конфигурация не найдена',
483
+ 'error.configInvalid': 'Некорректная конфигурация',
484
+ 'error.deployFailed': 'Развёртывание не удалось',
485
+ 'error.resourceCreationFailed': 'Не удалось создать ресурс',
486
+ // Validation
487
+ 'validation.required': 'Это поле обязательно',
488
+ 'validation.invalidFormat': 'Некорректный формат',
489
+ 'validation.tooShort': 'Слишком коротко',
490
+ 'validation.tooLong': 'Слишком длинно',
491
+ 'validation.invalidDomain': 'Некорректный домен',
492
+ 'validation.invalidEmail': 'Некорректный адрес email',
493
+ 'validation.invalidUrl': 'Некорректный URL',
494
+ // Delete command
495
+ 'delete.title': 'Удаление окружения',
496
+ 'delete.prompt': 'Выберите ресурсы для удаления',
497
+ 'delete.confirm': 'Вы уверены, что хотите удалить "{{env}}"?',
498
+ 'delete.confirmPermanent': '⚠️ Все ресурсы для "{{env}}" будут безвозвратно удалены. Продолжить?',
499
+ 'delete.confirmWarning': 'Это действие нельзя отменить!',
500
+ 'delete.deleting': 'Удаление {{resource}}...',
501
+ 'delete.deleted': '{{resource}} удалён',
502
+ 'delete.error': 'Не удалось удалить {{resource}}',
503
+ 'delete.cancelled': 'Удаление отменено',
504
+ 'delete.noEnvFound': 'Окружения не найдены',
505
+ 'delete.selectEnv': 'Выберите окружение для удаления',
506
+ 'delete.workers': 'Workers',
507
+ 'delete.databases': 'Базы данных D1',
508
+ 'delete.kvNamespaces': 'Пространства имён KV',
509
+ 'delete.queues': 'Очереди',
510
+ 'delete.r2Buckets': 'Бакеты R2',
511
+ // Info command
512
+ 'info.title': 'Информация об окружении',
513
+ 'info.loading': 'Загрузка информации об окружении...',
514
+ 'info.noResources': 'Ресурсы не найдены',
515
+ 'info.environment': 'Окружение',
516
+ 'info.issuer': 'Издатель',
517
+ 'info.workers': 'Workers',
518
+ 'info.databases': 'Базы данных',
519
+ 'info.kvNamespaces': 'Пространства имён KV',
520
+ 'info.queues': 'Очереди',
521
+ 'info.r2Buckets': 'Бакеты R2',
522
+ 'info.status': 'Статус',
523
+ 'info.deployed': 'Развёрнуто',
524
+ 'info.notDeployed': 'Не развёрнуто',
525
+ // Config command
526
+ 'configCmd.title': 'Конфигурация',
527
+ 'configCmd.showing': 'Отображение конфигурации',
528
+ 'configCmd.validating': 'Проверка конфигурации...',
529
+ 'configCmd.valid': 'Конфигурация корректна',
530
+ 'configCmd.invalid': 'Конфигурация некорректна',
531
+ 'configCmd.notFound': 'Конфигурация не найдена',
532
+ 'configCmd.error': 'Ошибка чтения конфигурации',
533
+ // Migrate command
534
+ 'migrate.title': 'Миграция на новую структуру',
535
+ 'migrate.checking': 'Проверка статуса миграции...',
536
+ 'migrate.noLegacyFound': 'Устаревшая структура не найдена',
537
+ 'migrate.legacyFound': 'Обнаружена устаревшая структура',
538
+ 'migrate.prompt': 'Перейти на новую структуру?',
539
+ 'migrate.migrating': 'Миграция...',
540
+ 'migrate.success': 'Миграция успешна',
541
+ 'migrate.cancelled': 'Миграция отменена.',
542
+ 'migrate.error': 'Миграция не удалась',
543
+ 'migrate.dryRun': 'Dry run — изменения не внесены',
544
+ 'migrate.backup': 'Создание резервной копии...',
545
+ 'migrate.backupCreated': 'Резервная копия создана: {{path}}',
546
+ // Manage command
547
+ 'manage.commandTitle': 'Менеджер окружений Authrim',
548
+ // Web UI specific
549
+ 'web.title': 'Настройка Authrim',
550
+ 'web.subtitle': 'OIDC-провайдер на Cloudflare Workers',
551
+ 'web.loading': 'Загрузка...',
552
+ 'web.error': 'Произошла ошибка',
553
+ 'web.retry': 'Повторить',
554
+ 'web.languageSelector': 'Язык',
555
+ 'web.darkMode': 'Тёмная',
556
+ 'web.lightMode': 'Светлая',
557
+ 'web.systemMode': 'Системная',
558
+ // Web UI Prerequisites
559
+ 'web.prereq.title': 'Предварительные требования',
560
+ 'web.prereq.checking': 'Проверка...',
561
+ 'web.prereq.checkingRequirements': 'Проверка системных требований...',
562
+ 'web.prereq.ready': 'Готово',
563
+ 'web.prereq.wranglerInstalled': 'Wrangler установлен',
564
+ 'web.prereq.loggedInAs': 'Вход выполнен как {{email}}',
565
+ // Web UI Top Menu
566
+ 'web.menu.title': 'Начало работы',
567
+ 'web.menu.subtitle': 'Выберите вариант для продолжения:',
568
+ 'web.menu.newSetup': 'Новая настройка',
569
+ 'web.menu.newSetupDesc': 'Создать новое развёртывание Authrim с нуля',
570
+ 'web.menu.loadConfig': 'Загрузить конфигурацию',
571
+ 'web.menu.loadConfigDesc': 'Продолжить или повторно развернуть с существующей конфигурацией',
572
+ 'web.menu.manageEnv': 'Управление окружениями',
573
+ 'web.menu.manageEnvDesc': 'Просмотр, проверка или удаление существующих окружений',
574
+ // Web UI Setup Mode
575
+ 'web.mode.title': 'Режим настройки',
576
+ 'web.mode.subtitle': 'Выберите способ настройки Authrim:',
577
+ 'web.mode.quick': 'Быстрая настройка',
578
+ 'web.mode.quickDesc': 'Начните за ~5 минут',
579
+ 'web.mode.quickEnv': 'Выбор окружения',
580
+ 'web.mode.quickDomain': 'Необязательный собственный домен',
581
+ 'web.mode.quickDefault': 'Компоненты по умолчанию',
582
+ 'web.mode.recommended': 'Рекомендуется',
583
+ 'web.mode.custom': 'Расширенная настройка',
584
+ 'web.mode.customDesc': 'Полный контроль над конфигурацией',
585
+ 'web.mode.customComp': 'Выбор компонентов',
586
+ 'web.mode.customUrl': 'Конфигурация URL',
587
+ 'web.mode.customAdvanced': 'Расширенные настройки',
588
+ // Web UI Load Config
589
+ 'web.loadConfig.title': 'Загрузка конфигурации',
590
+ 'web.loadConfig.subtitle': 'Выберите файл authrim-config.json:',
591
+ 'web.loadConfig.chooseFile': 'Выбрать файл',
592
+ 'web.loadConfig.preview': 'Предпросмотр конфигурации',
593
+ 'web.loadConfig.validationFailed': 'Проверка конфигурации не пройдена',
594
+ 'web.loadConfig.valid': 'Конфигурация корректна',
595
+ 'web.loadConfig.loadContinue': 'Загрузить и продолжить',
596
+ // Web UI Configuration
597
+ 'web.config.title': 'Конфигурация',
598
+ 'web.config.components': 'Компоненты',
599
+ 'web.config.apiRequired': 'API (обязательно)',
600
+ 'web.config.apiDesc': 'Эндпоинты OIDC-провайдера: authorize, token, userinfo, discovery, management API.',
601
+ 'web.config.saml': 'SAML IdP',
602
+ 'web.config.deviceFlow': 'Device Flow / CIBA',
603
+ 'web.config.vcSdJwt': 'VC SD-JWT',
604
+ 'web.config.loginUi': 'UI для входа',
605
+ 'web.config.loginUiDesc': 'Готовый UI аутентификации на Cloudflare Pages.',
606
+ 'web.config.adminUi': 'Панель администратора',
607
+ 'web.config.adminUiDesc': 'Панель управления пользователями, клиентами и настройками.',
608
+ // Web UI URLs
609
+ 'web.url.title': 'Конфигурация URL',
610
+ 'web.url.apiDomain': 'Домен API',
611
+ 'web.url.apiDomainHint': 'Оставьте пустым для использования поддомена workers.dev',
612
+ 'web.url.loginDomain': 'Домен UI для входа',
613
+ 'web.url.loginDomainHint': 'Оставьте пустым для использования поддомена pages.dev',
614
+ 'web.url.adminDomain': 'Домен панели администратора',
615
+ 'web.url.adminDomainHint': 'Оставьте пустым для использования поддомена pages.dev',
616
+ // Web UI Database
617
+ 'web.db.title': 'Конфигурация базы данных',
618
+ 'web.db.coreTitle': 'Основная база данных',
619
+ 'web.db.coreSubtitle': '(без PII)',
620
+ 'web.db.coreDesc': 'Хранит клиентов, коды авторизации, токены, сессии. Может реплицироваться глобально.',
621
+ 'web.db.piiTitle': 'База данных PII',
622
+ 'web.db.piiSubtitle': '(персональные данные)',
623
+ 'web.db.piiDesc': 'Хранит профили пользователей, учётные данные, PII. Должна находиться в одной юрисдикции для соответствия требованиям.',
624
+ 'web.db.name': 'Имя',
625
+ 'web.db.region': 'Регион',
626
+ 'web.db.regionAuto': 'Автоматически (ближайший)',
627
+ // Web UI Email
628
+ 'web.email.title': 'Провайдер email',
629
+ 'web.email.subtitle': 'Выберите сервис email для сброса пароля и подтверждения:',
630
+ 'web.email.none': 'Нет',
631
+ 'web.email.noneDesc': 'Функции email отключены',
632
+ 'web.email.resend': 'Resend',
633
+ 'web.email.resendDesc': 'Email API для разработчиков',
634
+ 'web.email.sendgrid': 'SendGrid',
635
+ 'web.email.sendgridDesc': 'Масштабируемая доставка email',
636
+ 'web.email.ses': 'Amazon SES',
637
+ 'web.email.sesDesc': 'AWS Simple Email Service',
638
+ 'web.email.resendConfig': 'Конфигурация Resend',
639
+ 'web.email.apiKey': 'API-ключ',
640
+ 'web.email.apiKeyPlaceholder': 're_xxxxxxxx',
641
+ 'web.email.fromAddress': 'Адрес отправителя',
642
+ 'web.email.fromAddressPlaceholder': 'noreply@yourdomain.com',
643
+ // Web UI Provision
644
+ 'web.provision.title': 'Создание ресурсов Cloudflare',
645
+ 'web.provision.ready': 'Готово к подготовке',
646
+ 'web.provision.desc': 'В вашем аккаунте Cloudflare будут созданы следующие ресурсы:',
647
+ 'web.provision.createResources': 'Создать ресурсы',
648
+ 'web.provision.saveConfig': 'Сохранить конфигурацию',
649
+ 'web.provision.continueDeploy': 'Перейти к развёртыванию →',
650
+ // Web UI Deploy
651
+ 'web.deploy.title': 'Развёртывание',
652
+ 'web.deploy.desc': 'Развернуть workers и UI на Cloudflare:',
653
+ 'web.deploy.startDeploy': 'Начать развёртывание',
654
+ 'web.deploy.deploying': 'Развёртывание...',
655
+ // Web UI Complete
656
+ 'web.complete.title': 'Настройка завершена!',
657
+ 'web.complete.desc': 'Ваше развёртывание Authrim готово.',
658
+ 'web.complete.issuerUrl': 'URL издателя',
659
+ 'web.complete.loginUrl': 'URL для входа',
660
+ 'web.complete.adminUrl': 'URL администратора',
661
+ 'web.complete.nextSteps': 'Следующие шаги:',
662
+ 'web.complete.step1': 'Завершите начальную настройку администратора, используя кнопку выше',
663
+ 'web.complete.step2': 'Настройте первого OAuth-клиента в панели администратора',
664
+ 'web.complete.step3': 'Интегрируйте с вашим приложением',
665
+ 'web.complete.saveConfig': 'Сохранить конфигурацию',
666
+ 'web.complete.backToMain': 'Вернуться на главную',
667
+ 'web.complete.canClose': 'Настройка завершена. Вы можете безопасно закрыть это окно.',
668
+ // Web UI Environment Management
669
+ 'web.env.title': 'Окружения',
670
+ 'web.env.loading': 'Загрузка окружений...',
671
+ 'web.env.noEnvFound': 'Окружения не найдены',
672
+ 'web.env.refresh': 'Обновить',
673
+ 'web.env.adminSetup': 'Начальная настройка администратора',
674
+ 'web.env.adminSetupDesc': 'Нажмите для создания учётной записи администратора для',
675
+ 'web.env.openSetup': 'Открыть настройку',
676
+ 'web.env.copyUrl': 'Копировать',
677
+ 'web.env.deleteTitle': 'Удаление окружения',
678
+ 'web.env.deleteWarning': 'Это действие нельзя отменить. Следующие ресурсы будут безвозвратно удалены:',
679
+ 'web.env.confirmDelete': 'Удалить выбранное',
680
+ 'web.env.cancel': 'Отмена',
681
+ // Web UI Common buttons
682
+ 'web.btn.back': 'Назад',
683
+ 'web.btn.continue': 'Продолжить',
684
+ 'web.btn.cancel': 'Отмена',
685
+ 'web.btn.save': 'Сохранить',
686
+ 'web.btn.skip': 'Пропустить',
687
+ // Web UI Save Modal
688
+ 'web.modal.saveTitle': 'Сохранить конфигурацию?',
689
+ 'web.modal.saveDesc': 'Сохраните конфигурацию на локальный компьютер для использования в будущем.',
690
+ 'web.modal.skipSave': 'Пропустить',
691
+ 'web.modal.saveConfig': 'Сохранить конфигурацию',
692
+ // Web UI steps
693
+ 'web.step.environment': 'Окружение',
694
+ 'web.step.region': 'Регион',
695
+ 'web.step.domain': 'Домен',
696
+ 'web.step.email': 'Email',
697
+ 'web.step.sms': 'SMS',
698
+ 'web.step.social': 'Соцсети',
699
+ 'web.step.advanced': 'Расширенные',
700
+ 'web.step.review': 'Обзор',
701
+ 'web.step.deploy': 'Развёртывание',
702
+ // Web UI forms
703
+ 'web.form.submit': 'Отправить',
704
+ 'web.form.next': 'Далее',
705
+ 'web.form.previous': 'Назад',
706
+ 'web.form.reset': 'Сбросить',
707
+ 'web.form.validation': 'Пожалуйста, исправьте ошибки выше',
708
+ // Web UI progress
709
+ 'web.progress.preparing': 'Подготовка к развёртыванию...',
710
+ 'web.progress.creatingResources': 'Создание ресурсов Cloudflare...',
711
+ 'web.progress.generatingKeys': 'Генерация криптографических ключей...',
712
+ 'web.progress.configuringWorkers': 'Настройка workers...',
713
+ 'web.progress.deployingWorkers': 'Развёртывание workers...',
714
+ 'web.progress.deployingUI': 'Развёртывание UI...',
715
+ 'web.progress.runningMigrations': 'Выполнение миграций базы данных...',
716
+ 'web.progress.complete': 'Развёртывание завершено!',
717
+ 'web.progress.failed': 'Развёртывание не удалось',
718
+ // Web UI Form Labels
719
+ 'web.form.envName': 'Название окружения',
720
+ 'web.form.envNamePlaceholder': 'например, prod, staging, dev',
721
+ 'web.form.envNameHint': 'Только строчные буквы, цифры и дефисы',
722
+ 'web.form.baseDomain': 'Базовый домен (домен API)',
723
+ 'web.form.baseDomainPlaceholder': 'oidc.example.com',
724
+ 'web.form.baseDomainHint': 'Собственный домен для Authrim. Оставьте пустым для workers.dev',
725
+ 'web.form.nakedDomain': 'Исключить имя тенанта из URL',
726
+ 'web.form.nakedDomainHint': 'Использовать https://example.com вместо https://{tenant}.example.com',
727
+ 'web.form.nakedDomainWarning': 'Поддомены тенантов требуют собственного домена. Workers.dev не поддерживает wildcard-поддомены.',
728
+ 'web.form.tenantId': 'ID тенанта по умолчанию',
729
+ 'web.form.tenantIdPlaceholder': 'default',
730
+ 'web.form.tenantIdHint': 'Идентификатор первого тенанта (строчные, без пробелов)',
731
+ 'web.form.tenantIdWorkerNote': '(ID тенанта используется внутренне. URL-поддомен требует собственного домена.)',
732
+ 'web.form.tenantDisplay': 'Отображаемое имя тенанта',
733
+ 'web.form.tenantDisplayPlaceholder': 'Моя компания',
734
+ 'web.form.tenantDisplayHint': 'Имя, отображаемое на странице входа и экране согласия',
735
+ 'web.form.loginDomainPlaceholder': 'login.example.com',
736
+ 'web.form.adminDomainPlaceholder': 'admin.example.com',
737
+ // Web UI Section Headers
738
+ 'web.section.apiDomain': 'Домен API / издателя',
739
+ 'web.section.uiDomains': 'Домены UI (необязательно)',
740
+ 'web.section.uiDomainsHint': 'Собственные домены для UI входа/администратора. Каждый можно настроить независимо. Оставьте пустым для использования Cloudflare Pages по умолчанию.',
741
+ 'web.section.corsHint': 'CORS: кросс-доменные запросы от UI входа/администратора к API разрешены автоматически.',
742
+ 'web.section.configPreview': 'Предпросмотр конфигурации',
743
+ 'web.section.resourceNames': 'Имена ресурсов',
744
+ // Web UI Preview Labels
745
+ 'web.preview.components': 'Компоненты:',
746
+ 'web.preview.workers': 'Workers:',
747
+ 'web.preview.issuerUrl': 'URL издателя:',
748
+ 'web.preview.loginUi': 'UI для входа:',
749
+ 'web.preview.adminUi': 'Панель администратора:',
750
+ // Web UI Component Labels
751
+ 'web.comp.loginUi': 'UI для входа',
752
+ 'web.comp.loginUiDesc': 'Страницы входа, регистрации, согласия и управления учётной записью.',
753
+ 'web.comp.adminUi': 'Панель администратора',
754
+ 'web.comp.adminUiDesc': 'Панель управления тенантами, клиентами, пользователями и системными настройками.',
755
+ // Web UI Domain Row Labels
756
+ 'web.domain.loginUi': 'UI для входа',
757
+ 'web.domain.adminUi': 'Панель администратора',
758
+ // Web UI Database Section
759
+ 'web.db.introDesc': 'Authrim использует две отдельные базы данных D1 для изоляции персональных данных от данных приложения.',
760
+ 'web.db.regionNote': 'Примечание: регион базы данных нельзя изменить после создания.',
761
+ 'web.db.coreNonPii': 'Без PII',
762
+ 'web.db.coreDataDesc': 'Хранит неперсональные данные приложения, включая:',
763
+ 'web.db.coreData1': 'OAuth-клиенты и их конфигурации',
764
+ 'web.db.coreData2': 'Коды авторизации и токены доступа',
765
+ 'web.db.coreData3': 'Сессии пользователей и состояние входа',
766
+ 'web.db.coreData4': 'Настройки и конфигурации тенантов',
767
+ 'web.db.coreData5': 'Журналы аудита и события безопасности',
768
+ 'web.db.coreHint': 'Эта база данных обрабатывает все потоки аутентификации и должна располагаться ближе к основной базе пользователей.',
769
+ 'web.db.piiLabel': 'Персональные данные',
770
+ 'web.db.piiDataDesc': 'Хранит персональные данные пользователей, включая:',
771
+ 'web.db.piiData1': 'Профили пользователей (имя, email, телефон)',
772
+ 'web.db.piiData2': 'Учётные данные Passkey/WebAuthn',
773
+ 'web.db.piiData3': 'Настройки и предпочтения пользователей',
774
+ 'web.db.piiData4': 'Любые пользовательские атрибуты',
775
+ 'web.db.piiHint': 'Эта база данных содержит персональные данные. Рассмотрите размещение в регионе, соответствующем требованиям защиты данных.',
776
+ 'web.db.locationHints': 'Подсказки по расположению',
777
+ 'web.db.jurisdiction': 'Юрисдикция (соответствие)',
778
+ 'web.db.autoNearest': 'Автоматически (ближайший к вам)',
779
+ 'web.db.northAmericaWest': 'Северная Америка (Запад)',
780
+ 'web.db.northAmericaEast': 'Северная Америка (Восток)',
781
+ 'web.db.europeWest': 'Европа (Запад)',
782
+ 'web.db.europeEast': 'Европа (Восток)',
783
+ 'web.db.asiaPacific': 'Азиатско-Тихоокеанский регион',
784
+ 'web.db.oceania': 'Океания',
785
+ 'web.db.euJurisdiction': 'Юрисдикция ЕС (соответствие GDPR)',
786
+ // Web UI Email Section
787
+ 'web.email.introDesc': 'Используется для отправки OTP по email и подтверждения адреса. Можете настроить позже.',
788
+ 'web.email.configureLater': 'Настроить позже',
789
+ 'web.email.configureLaterHint': 'Пропустить сейчас и настроить позже.',
790
+ 'web.email.configureResend': 'Настроить Resend',
791
+ 'web.email.configureResendHint': 'Настроить отправку email через Resend (рекомендуется для продакшна).',
792
+ 'web.email.resendSetup': 'Конфигурация Resend',
793
+ 'web.email.beforeBegin': 'Перед началом:',
794
+ 'web.email.step1': 'Создайте аккаунт Resend на',
795
+ 'web.email.step2': 'Добавьте и подтвердите домен на',
796
+ 'web.email.step3': 'Создайте API-ключ на',
797
+ 'web.email.resendApiKey': 'API-ключ Resend',
798
+ 'web.email.resendApiKeyHint': 'Ваш API-ключ начинается с "re_"',
799
+ 'web.email.fromEmailAddress': 'Адрес отправителя email',
800
+ 'web.email.fromEmailHint': 'Должен быть с подтверждённого домена в вашем аккаунте Resend',
801
+ 'web.email.fromDisplayName': 'Отображаемое имя отправителя (необязательно)',
802
+ 'web.email.fromDisplayHint': 'Отображается как имя отправителя в почтовых клиентах',
803
+ 'web.email.domainVerificationTitle': 'Требуется верификация домена',
804
+ 'web.email.domainVerificationDesc': 'До верификации домена письма можно отправлять только с onboarding@resend.dev (для тестирования).',
805
+ 'web.email.learnMore': 'Подробнее о верификации домена →',
806
+ // Web UI Provision Section
807
+ 'web.provision.resourcePreview': 'Имена ресурсов:',
808
+ 'web.provision.d1Databases': 'Базы данных D1:',
809
+ 'web.provision.kvNamespaces': 'Пространства имён KV:',
810
+ 'web.provision.cryptoKeys': 'Криптографические ключи:',
811
+ 'web.provision.initializing': 'Инициализация...',
812
+ 'web.provision.showLog': 'Показать подробный журнал',
813
+ 'web.provision.hideLog': 'Скрыть подробный журнал',
814
+ 'web.provision.keysSavedTo': 'Ключи сохранены в:',
815
+ 'web.provision.keepSafe': 'Храните этот каталог в безопасности и добавьте в .gitignore',
816
+ // Web UI Deploy Section
817
+ 'web.deploy.readyText': 'Готово к развёртыванию workers Authrim на Cloudflare.',
818
+ // Web UI Environment List
819
+ 'web.env.detectedDesc': 'Обнаруженные окружения Authrim в вашем аккаунте Cloudflare:',
820
+ 'web.env.noEnvsDetected': 'Окружения Authrim не обнаружены в этом аккаунте Cloudflare.',
821
+ 'web.env.backToList': '← Назад к списку',
822
+ 'web.env.deleteEnv': 'Удалить окружение...',
823
+ // Web UI Environment Detail
824
+ 'web.envDetail.title': 'Детали окружения',
825
+ 'web.envDetail.adminNotConfigured': 'Администратор не настроен',
826
+ 'web.envDetail.adminNotConfiguredDesc': 'Начальный администратор не настроен для этого окружения.',
827
+ 'web.envDetail.startPasskey': 'Начать настройку администратора с Passkey',
828
+ 'web.envDetail.setupUrlGenerated': 'URL настройки сгенерирован:',
829
+ 'web.envDetail.copyBtn': 'Копировать',
830
+ 'web.envDetail.openSetup': 'Открыть настройку',
831
+ 'web.envDetail.urlValidFor': 'Этот URL действителен 1 час. Откройте его в браузере для регистрации первой учётной записи администратора.',
832
+ 'web.envDetail.workers': 'Workers',
833
+ 'web.envDetail.d1Databases': 'Базы данных D1',
834
+ 'web.envDetail.kvNamespaces': 'Пространства имён KV',
835
+ 'web.envDetail.queues': 'Очереди',
836
+ 'web.envDetail.r2Buckets': 'Бакеты R2',
837
+ 'web.envDetail.pagesProjects': 'Проекты Pages',
838
+ // Web UI Delete Section
839
+ 'web.delete.title': 'Удаление окружения',
840
+ 'web.delete.warning': 'Это действие необратимо. Все выбранные ресурсы будут безвозвратно удалены.',
841
+ 'web.delete.environment': 'Окружение:',
842
+ 'web.delete.selectResources': 'Выберите ресурсы для удаления:',
843
+ 'web.delete.workers': 'Workers',
844
+ 'web.delete.d1Databases': 'Базы данных D1',
845
+ 'web.delete.kvNamespaces': 'Пространства имён KV',
846
+ 'web.delete.queues': 'Очереди',
847
+ 'web.delete.r2Buckets': 'Бакеты R2',
848
+ 'web.delete.pagesProjects': 'Проекты Pages',
849
+ 'web.delete.cancelBtn': 'Отмена',
850
+ 'web.delete.confirmBtn': 'Удалить выбранное',
851
+ // Web UI Save Modal
852
+ 'web.modal.saveQuestion': 'Хотите сохранить конфигурацию в файл перед продолжением?',
853
+ 'web.modal.saveReason': 'Это позволит возобновить настройку позже или использовать те же настройки для другого развёртывания.',
854
+ 'web.modal.skipBtn': 'Пропустить',
855
+ 'web.modal.saveBtn': 'Сохранить конфигурацию',
856
+ // Web UI Error Messages
857
+ 'web.error.wranglerNotInstalled': 'Wrangler не установлен',
858
+ 'web.error.pleaseInstall': 'Сначала установите wrangler:',
859
+ 'web.error.notLoggedIn': 'Не выполнен вход в Cloudflare',
860
+ 'web.error.runCommand': 'Выполните эту команду в терминале:',
861
+ 'web.error.thenRefresh': 'Затем обновите эту страницу.',
862
+ 'web.error.checkingPrereq': 'Ошибка проверки предварительных требований:',
863
+ 'web.error.invalidJson': 'Некорректный JSON:',
864
+ 'web.error.validationFailed': 'Запрос валидации не удался:',
865
+ // Web UI Status Messages
866
+ 'web.status.checking': 'Проверка...',
867
+ 'web.status.running': 'Выполнение...',
868
+ 'web.status.deploying': 'Развёртывание...',
869
+ 'web.status.complete': 'Завершено',
870
+ 'web.status.error': 'Ошибка',
871
+ 'web.status.scanning': 'Сканирование...',
872
+ 'web.status.saving': 'Сохранение...',
873
+ 'web.status.notDeployed': '(не развёрнуто)',
874
+ 'web.status.startingDeploy': 'Начало развёртывания...',
875
+ 'web.status.none': 'Нет',
876
+ 'web.status.loading': 'Загрузка...',
877
+ 'web.status.failedToLoad': 'Не удалось загрузить',
878
+ 'web.status.adminNotConfigured': 'Администратор не настроен',
879
+ 'web.status.initializing': 'Инициализация...',
880
+ 'web.status.found': 'Найдено: {{count}}',
881
+ // Web UI Button Labels (dynamic)
882
+ 'web.btn.reprovision': 'Пересоздать (удалить и создать)',
883
+ 'web.btn.createResources': 'Создать ресурсы',
884
+ 'web.btn.saveConfiguration': 'Сохранить конфигурацию',
885
+ // Quick setup specific
886
+ 'quickSetup.title': 'Быстрая настройка',
887
+ // Custom setup specific
888
+ 'customSetup.title': 'Расширенная настройка',
889
+ 'customSetup.cancelled': 'Настройка отменена.',
890
+ // Web UI starting
891
+ 'webUi.starting': 'Запуск веб-интерфейса...',
892
+ };
893
+ export default ru;
894
+ //# sourceMappingURL=ru.js.map