@mdguggenbichler/slugbase-core 0.0.4 → 0.0.6

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 (120) hide show
  1. package/frontend/index.tsx +3 -3
  2. package/frontend/public/favicon.svg +1 -0
  3. package/frontend/public/slugbase_icon_blue.svg +1 -0
  4. package/frontend/public/slugbase_icon_white.png +0 -0
  5. package/frontend/public/slugbase_icon_white.svg +1 -0
  6. package/frontend/src/App.tsx +179 -0
  7. package/frontend/src/api/client.ts +134 -0
  8. package/frontend/src/components/AppSidebar.tsx +214 -0
  9. package/frontend/src/components/EmptyState.tsx +33 -0
  10. package/frontend/src/components/Favicon.tsx +76 -0
  11. package/frontend/src/components/FilterChips.tsx +60 -0
  12. package/frontend/src/components/FolderIcon.tsx +207 -0
  13. package/frontend/src/components/GlobalSearch.tsx +275 -0
  14. package/frontend/src/components/Layout.tsx +60 -0
  15. package/frontend/src/components/PageHeader.tsx +31 -0
  16. package/frontend/src/components/ScopeSegmentedControl.tsx +42 -0
  17. package/frontend/src/components/SentryDebug.tsx +32 -0
  18. package/frontend/src/components/StatCard.tsx +66 -0
  19. package/frontend/src/components/TopBar.tsx +63 -0
  20. package/frontend/src/components/UserDropdown.tsx +86 -0
  21. package/frontend/src/components/admin/AdminAI.tsx +207 -0
  22. package/frontend/src/components/admin/AdminOIDCProviders.tsx +183 -0
  23. package/frontend/src/components/admin/AdminSettings.tsx +413 -0
  24. package/frontend/src/components/admin/AdminTeams.tsx +177 -0
  25. package/frontend/src/components/admin/AdminUsers.tsx +225 -0
  26. package/frontend/src/components/bookmarks/BookmarkCard.tsx +312 -0
  27. package/frontend/src/components/bookmarks/BookmarkListItem.tsx +159 -0
  28. package/frontend/src/components/bookmarks/BookmarkTableView.tsx +419 -0
  29. package/frontend/src/components/bookmarks/BulkActionModals.tsx +162 -0
  30. package/frontend/src/components/bookmarks/FilterChips.tsx +5 -0
  31. package/frontend/src/components/modals/BookmarkModal.tsx +493 -0
  32. package/frontend/src/components/modals/FolderModal.tsx +306 -0
  33. package/frontend/src/components/modals/ImportModal.tsx +232 -0
  34. package/frontend/src/components/modals/OIDCProviderModal.tsx +284 -0
  35. package/frontend/src/components/modals/SharingModal.tsx +96 -0
  36. package/frontend/src/components/modals/TagModal.tsx +101 -0
  37. package/frontend/src/components/modals/TeamAssignmentModal.tsx +354 -0
  38. package/frontend/src/components/modals/TeamModal.tsx +117 -0
  39. package/frontend/src/components/modals/UserModal.tsx +225 -0
  40. package/frontend/src/components/profile/CreateTokenModal.tsx +172 -0
  41. package/frontend/src/components/sharing/ShareResourceDialog.tsx +422 -0
  42. package/frontend/src/components/ui/Autocomplete.tsx +155 -0
  43. package/frontend/src/components/ui/Button.tsx +68 -0
  44. package/frontend/src/components/ui/ConfirmDialog.tsx +79 -0
  45. package/frontend/src/components/ui/FormFieldWrapper.tsx +36 -0
  46. package/frontend/src/components/ui/ModalFooterActions.tsx +49 -0
  47. package/frontend/src/components/ui/ModalSection.tsx +34 -0
  48. package/frontend/src/components/ui/PageLoadingSkeleton.tsx +24 -0
  49. package/frontend/src/components/ui/Select.tsx +61 -0
  50. package/frontend/src/components/ui/SharingField.tsx +298 -0
  51. package/frontend/src/components/ui/Toast.tsx +47 -0
  52. package/frontend/src/components/ui/Tooltip.tsx +21 -0
  53. package/frontend/src/components/ui/alert-dialog.tsx +139 -0
  54. package/frontend/src/components/ui/badge.tsx +36 -0
  55. package/frontend/src/components/ui/button-base.tsx +57 -0
  56. package/frontend/src/components/ui/card.tsx +76 -0
  57. package/frontend/src/components/ui/command.tsx +161 -0
  58. package/frontend/src/components/ui/dialog.tsx +120 -0
  59. package/frontend/src/components/ui/dropdown-menu.tsx +199 -0
  60. package/frontend/src/components/ui/input.tsx +22 -0
  61. package/frontend/src/components/ui/label.tsx +24 -0
  62. package/frontend/src/components/ui/popover.tsx +33 -0
  63. package/frontend/src/components/ui/progress.tsx +26 -0
  64. package/frontend/src/components/ui/scroll-area.tsx +48 -0
  65. package/frontend/src/components/ui/select-base.tsx +159 -0
  66. package/frontend/src/components/ui/separator.tsx +29 -0
  67. package/frontend/src/components/ui/sheet.tsx +140 -0
  68. package/frontend/src/components/ui/sidebar.tsx +783 -0
  69. package/frontend/src/components/ui/skeleton.tsx +15 -0
  70. package/frontend/src/components/ui/sonner.tsx +46 -0
  71. package/frontend/src/components/ui/switch.tsx +28 -0
  72. package/frontend/src/components/ui/table.tsx +120 -0
  73. package/frontend/src/components/ui/tooltip-base.tsx +30 -0
  74. package/frontend/src/config/api.ts +16 -0
  75. package/frontend/src/config/mode.ts +6 -0
  76. package/frontend/src/contexts/AppConfigContext.tsx +39 -0
  77. package/frontend/src/contexts/AuthContext.tsx +137 -0
  78. package/frontend/src/contexts/SearchCommandContext.tsx +28 -0
  79. package/frontend/src/hooks/use-mobile.tsx +19 -0
  80. package/frontend/src/hooks/useConfirmDialog.ts +63 -0
  81. package/frontend/src/hooks/useMarketingTheme.ts +47 -0
  82. package/frontend/src/i18n.ts +39 -0
  83. package/frontend/src/index.css +117 -0
  84. package/frontend/src/instrument.ts +20 -0
  85. package/frontend/src/lib/utils.ts +6 -0
  86. package/frontend/src/locales/de.json +899 -0
  87. package/frontend/src/locales/en.json +937 -0
  88. package/frontend/src/locales/es.json +884 -0
  89. package/frontend/src/locales/fr.json +550 -0
  90. package/frontend/src/locales/it.json +535 -0
  91. package/frontend/src/locales/ja.json +535 -0
  92. package/frontend/src/locales/nl.json +550 -0
  93. package/frontend/src/locales/pl.json +535 -0
  94. package/frontend/src/locales/pt.json +535 -0
  95. package/frontend/src/locales/ru.json +535 -0
  96. package/frontend/src/locales/zh.json +535 -0
  97. package/frontend/src/main.tsx +44 -0
  98. package/frontend/src/pages/Bookmarks.tsx +1004 -0
  99. package/frontend/src/pages/Dashboard.tsx +427 -0
  100. package/frontend/src/pages/Folders.tsx +578 -0
  101. package/frontend/src/pages/GoPreferences.tsx +134 -0
  102. package/frontend/src/pages/Login.tsx +196 -0
  103. package/frontend/src/pages/PasswordReset.tsx +242 -0
  104. package/frontend/src/pages/Profile.tsx +593 -0
  105. package/frontend/src/pages/SearchEngineGuide.tsx +135 -0
  106. package/frontend/src/pages/Setup.tsx +210 -0
  107. package/frontend/src/pages/Signup.tsx +199 -0
  108. package/frontend/src/pages/Tags.tsx +421 -0
  109. package/frontend/src/pages/VerifyEmail.tsx +254 -0
  110. package/frontend/src/pages/admin/AdminAIPage.tsx +5 -0
  111. package/frontend/src/pages/admin/AdminLayout.tsx +40 -0
  112. package/frontend/src/pages/admin/AdminMembersPage.tsx +5 -0
  113. package/frontend/src/pages/admin/AdminOIDCPage.tsx +5 -0
  114. package/frontend/src/pages/admin/AdminSettingsPage.tsx +5 -0
  115. package/frontend/src/pages/admin/AdminTeamsPage.tsx +5 -0
  116. package/frontend/src/utils/favicon.ts +36 -0
  117. package/frontend/src/utils/formatRelativeTime.ts +37 -0
  118. package/frontend/src/utils/safeHref.ts +31 -0
  119. package/frontend/src/vite-env.d.ts +10 -0
  120. package/package.json +9 -1
@@ -0,0 +1,535 @@
1
+ {
2
+ "app": {
3
+ "name": "SlugBase",
4
+ "tagline": "Ваши ссылки. Ваша структура. Ваш язык. Ваши правила."
5
+ },
6
+ "auth": {
7
+ "login": "Войти",
8
+ "logout": "Выйти",
9
+ "loginWith": "Войти через {{provider}}",
10
+ "notAuthenticated": "Не авторизован",
11
+ "authFailed": "Ошибка авторизации",
12
+ "loginFailed": "Ошибка входа",
13
+ "oidcAuthFailed": "Ошибка OIDC-авторизации. Пожалуйста, попробуйте снова.",
14
+ "oidcAutoCreateDisabled": "Автоматическое создание пользователей отключено для этого OIDC-провайдера. Обратитесь к администратору.",
15
+ "noProviders": "OIDC-провайдеры не настроены",
16
+ "noProvidersDescription": "Пожалуйста, настройте OIDC-провайдер в настройках администратора, чтобы включить OIDC-вход.",
17
+ "email": "Email",
18
+ "emailPlaceholder": "ваш@email.com",
19
+ "password": "Пароль",
20
+ "passwordPlaceholder": "Введите пароль",
21
+ "forgotPassword": "Забыли пароль?",
22
+ "or": "Или продолжить с"
23
+ },
24
+ "setup": {
25
+ "title": "Первоначальная настройка",
26
+ "description": "Добро пожаловать в SlugBase! Создайте первого пользователя-администратора, чтобы начать.",
27
+ "email": "Email",
28
+ "emailPlaceholder": "admin@example.com",
29
+ "name": "Имя",
30
+ "namePlaceholder": "Администратор",
31
+ "password": "Пароль",
32
+ "passwordPlaceholder": "Минимум 8 символов",
33
+ "confirmPassword": "Подтвердите пароль",
34
+ "confirmPasswordPlaceholder": "Введите пароль еще раз",
35
+ "passwordMismatch": "Пароли не совпадают",
36
+ "passwordTooShort": "Пароль должен содержать не менее 8 символов",
37
+ "adminNote": "Этот пользователь будет создан как администратор. Позже вы сможете настроить OIDC-провайдеры в настройках администратора.",
38
+ "submit": "Создать администратора",
39
+ "alreadyInitialized": "Система уже инициализирована",
40
+ "success": "Настройка успешно завершена!",
41
+ "redirecting": "Перенаправление на вход...",
42
+ "redirectingToDashboard": "Перенаправление на панель управления..."
43
+ },
44
+ "bookmarks": {
45
+ "title": "Закладки",
46
+ "create": "Создать закладку",
47
+ "edit": "Редактировать закладку",
48
+ "delete": "Удалить закладку",
49
+ "deleteBookmark": "Удалить закладку",
50
+ "sharingSummary": "{{teamCount}} {{teams}}, {{userCount}} {{users}}",
51
+ "name": "Название",
52
+ "url": "URL",
53
+ "slug": "Slug",
54
+ "slugOptionalHint": "Оставьте пустым, если вам не нужен пользовательский slug",
55
+ "forwardingEnabled": "Включить переадресацию",
56
+ "forwardingUrl": "URL переадресации",
57
+ "copyUrl": "Копировать URL",
58
+ "copied": "Скопировано!",
59
+ "folder": "Папка",
60
+ "folders": "Папки",
61
+ "tags": "Теги",
62
+ "noFolder": "Без папки",
63
+ "noFoldersAvailable": "Нет доступных папок. Создайте папки для организации закладок.",
64
+ "foldersDescription": "Выберите одну или несколько папок для организации этой закладки",
65
+ "noTags": "Без тегов",
66
+ "save": "Сохранить",
67
+ "cancel": "Отмена",
68
+ "deleteConfirm": "Вы уверены, что хотите удалить эту закладку?",
69
+ "deleteConfirmWithName": "Вы уверены, что хотите удалить \"{{name}}\"?",
70
+ "empty": "Пока нет закладок. Создайте первую!",
71
+ "emptyDescription": "Начните с создания первой закладки или импорта существующих закладок.",
72
+ "emptyCreateFirst": "Создать первую закладку",
73
+ "emptyImport": "Импортировать закладки",
74
+ "emptyLearnForwarding": "Узнайте, как работает переадресация",
75
+ "filterByFolder": "Фильтр по папке",
76
+ "filterByTag": "Фильтр по тегу",
77
+ "allFolders": "Все папки",
78
+ "allTags": "Все теги",
79
+ "open": "Открыть",
80
+ "shareWithTeams": "Поделиться с командами",
81
+ "shareWithTeamsDescription": "Выберите команды для совместного доступа к этой закладке. Все члены выбранных команд смогут просматривать эту закладку.",
82
+ "shareAllTeams": "Поделиться со всеми моими командами",
83
+ "shareAllTeamsDescription": "Поделиться со всеми командами, в которых вы состоите",
84
+ "shareWithUsers": "Поделиться с пользователями",
85
+ "shareWithUsersDescription": "Выберите конкретных пользователей для совместного доступа",
86
+ "sharedWith": "Общий доступ:",
87
+ "users": "пользователи",
88
+ "shared": "Общий доступ",
89
+ "sharedWithTeam": "Общий доступ с командой",
90
+ "sharedWithTeams": "Общий доступ · {{count}} {{teams}}",
91
+ "teams": "команды",
92
+ "optional": "Необязательно",
93
+ "slugRequired": "Slug обязателен, когда переадресация включена",
94
+ "slugAlreadyExists": "Slug уже существует. Slug должны быть уникальными для всех закладок.",
95
+ "searchEngineNote": "Хотите быстро получить доступ к закладкам из адресной строки браузера?",
96
+ "searchEngineGuideLink": "Узнайте, как настроить пользовательскую поисковую систему",
97
+ "viewMode": "Режим просмотра",
98
+ "viewCard": "Вид карточек",
99
+ "viewList": "Вид списка",
100
+ "compactMode": "Компактный режим",
101
+ "sortBy": "Сортировать по",
102
+ "sortRecentlyAdded": "Недавно добавленные",
103
+ "sortAlphabetical": "По алфавиту",
104
+ "sortMostUsed": "Наиболее используемые",
105
+ "sortRecentlyAccessed": "Недавно просмотренные",
106
+ "resetFilters": "Сбросить фильтры",
107
+ "forwardingPreview": "URL переадресации",
108
+ "forwardingPreviewDescription": "Это URL, который будет перенаправлять на вашу закладку",
109
+ "bulkSelect": "Выбрать несколько",
110
+ "bulkActions": "Массовые действия",
111
+ "bulkMoveToFolder": "Переместить в папку",
112
+ "bulkAddTags": "Добавить теги",
113
+ "bulkShare": "Поделиться с командами",
114
+ "bulkDelete": "Удалить выбранные",
115
+ "selectedCount": "{{count}} выбрано",
116
+ "selectAll": "Выбрать все",
117
+ "deselectAll": "Снять выделение",
118
+ "paginationShowing": "Показано {{from}}-{{to}} из {{total}}",
119
+ "paginationPrevious": "Назад",
120
+ "paginationNext": "Вперёд",
121
+ "pinned": "Закреплено",
122
+ "favorites": "Избранное",
123
+ "import": "Импорт",
124
+ "export": "Экспорт",
125
+ "importBrowser": "Импортировать закладки браузера",
126
+ "importJson": "Импортировать JSON",
127
+ "importHtml": "Импортировать HTML",
128
+ "exportJson": "Экспортировать как JSON",
129
+ "exportHtml": "Экспортировать как HTML",
130
+ "importDescription": "Импортируйте закладки из файла JSON или HTML. JSON-файлы должны содержать массив объектов закладок с полями title и url.",
131
+ "selectFile": "Выбрать файл",
132
+ "supportedFormats": "Поддерживаемые форматы: JSON, HTML (формат закладок Netscape)",
133
+ "importSuccess": "Импортировано {{success}} закладок, {{failed}} ошибок"
134
+ },
135
+ "folders": {
136
+ "title": "Папки",
137
+ "create": "Создать папку",
138
+ "edit": "Редактировать папку",
139
+ "delete": "Удалить папку",
140
+ "deleteFolder": "Удалить папку",
141
+ "name": "Название папки",
142
+ "icon": "Иконка",
143
+ "searchIcons": "Поиск иконок по имени...",
144
+ "noIcon": "Без иконки",
145
+ "selectedIcon": "Выбранная иконка",
146
+ "clearIcon": "Очистить иконку",
147
+ "showingPopular": "Показано {{count}} популярных иконок",
148
+ "showingAllIcons": "Показано все {{count}} иконок",
149
+ "showAllIcons": "Показать все иконки",
150
+ "showPopularOnly": "Показать только популярные",
151
+ "noIconsFound": "Иконки не найдены по вашему запросу",
152
+ "useIcon": "Использовать иконку",
153
+ "typeIconName": "Введите имя иконки, чтобы использовать любую иконку Lucide",
154
+ "empty": "Пока нет папок",
155
+ "deleteConfirm": "Вы уверены, что хотите удалить эту папку?",
156
+ "deleteConfirmWithName": "Вы уверены, что хотите удалить \"{{name}}\"?",
157
+ "sharedWith": "Общий доступ:",
158
+ "shareWithTeams": "Поделиться с командами",
159
+ "shareWithTeamsDescription": "Выберите команды для совместного доступа к этой папке. Все закладки в этой папке будут доступны выбранным командам.",
160
+ "shared": "Общий доступ"
161
+ },
162
+ "tags": {
163
+ "title": "Теги",
164
+ "create": "Создать тег",
165
+ "edit": "Редактировать тег",
166
+ "delete": "Удалить тег",
167
+ "deleteTag": "Удалить тег",
168
+ "name": "Название тега",
169
+ "empty": "Пока нет тегов",
170
+ "deleteConfirm": "Вы уверены, что хотите удалить этот тег?",
171
+ "deleteConfirmWithName": "Вы уверены, что хотите удалить \"{{name}}\"?"
172
+ },
173
+ "profile": {
174
+ "title": "Профиль",
175
+ "description": "Управление настройками и предпочтениями вашей учетной записи",
176
+ "accountInformation": "Информация об учетной записи",
177
+ "preferences": "Предпочтения",
178
+ "userKey": "Ключ пользователя",
179
+ "userKeyDescription": "Ваш уникальный идентификатор для переадресации закладок. Поделитесь этим с другими, чтобы разрешить им доступ к вашим общим закладкам.",
180
+ "email": "Email",
181
+ "emailPlaceholder": "ваш@email.com",
182
+ "name": "Имя",
183
+ "namePlaceholder": "Ваше имя",
184
+ "language": "Язык",
185
+ "theme": "Тема",
186
+ "themeAuto": "Автоматически",
187
+ "themeLight": "Светлая",
188
+ "themeDark": "Темная",
189
+ "save": "Сохранить настройки",
190
+ "languageEnglish": "Английский",
191
+ "languageGerman": "Немецкий",
192
+ "languageFrench": "Французский",
193
+ "languageSpanish": "Испанский",
194
+ "languageItalian": "Итальянский",
195
+ "languagePortuguese": "Португальский",
196
+ "languageDutch": "Голландский",
197
+ "languageRussian": "Русский",
198
+ "languageJapanese": "Японский",
199
+ "languageChinese": "Китайский",
200
+ "languagePolish": "Польский",
201
+ "emailManagedByOIDC": "Email управляется вашим поставщиком удостоверений и не может быть изменен здесь.",
202
+ "apiAccess": "Доступ к API",
203
+ "apiAccessDescription": "Создавайте и управляйте персональными токенами API для аутентификации REST API.",
204
+ "apiTokenWarning": "Токены API предоставляют полный доступ к вашему аккаунту. Храните их в безопасности и никогда не передавайте.",
205
+ "createToken": "Создать токен",
206
+ "tokenName": "Имя токена",
207
+ "tokenNamePlaceholder": "напр. CLI, CI/CD",
208
+ "tokenCreated": "Токен создан",
209
+ "tokenRevealWarning": "Этот токен больше не будет показан. Скопируйте его сейчас.",
210
+ "copyToken": "Копировать токен",
211
+ "revokeToken": "Отозвать",
212
+ "revokeTokenConfirm": "Вы уверены, что хотите отозвать этот токен? Он перестанет работать немедленно.",
213
+ "lastUsed": "Последнее использование",
214
+ "neverUsed": "Никогда не использовался",
215
+ "createdAt": "Создан",
216
+ "viewApiDocs": "Просмотр документации API",
217
+ "noTokens": "Нет токенов API",
218
+ "noTokensDescription": "Создайте токен для аутентификации в REST API из скриптов, CLI или CI/CD.",
219
+ "yourTokens": "Ваши токены"
220
+ },
221
+ "common": {
222
+ "loading": "Загрузка...",
223
+ "error": "Произошла ошибка",
224
+ "success": "Успешно",
225
+ "close": "Закрыть",
226
+ "delete": "Удалить",
227
+ "edit": "Редактировать",
228
+ "create": "Создать",
229
+ "save": "Сохранить",
230
+ "cancel": "Отмена",
231
+ "clearFilter": "Очистить фильтр",
232
+ "yes": "Да",
233
+ "no": "Нет",
234
+ "view": "Просмотр",
235
+ "confirm": "Подтвердить",
236
+ "back": "Назад",
237
+ "bookmark": "закладка",
238
+ "bookmarks": "закладки",
239
+ "tag": "тег",
240
+ "tags": "теги",
241
+ "folder": "папка",
242
+ "folders": "папки",
243
+ "user": "пользователь",
244
+ "users": "пользователи",
245
+ "team": "команда",
246
+ "teams": "команды",
247
+ "setting": "настройка",
248
+ "settings": "настройки",
249
+ "provider": "провайдер",
250
+ "providers": "провайдеры",
251
+ "search": "Поиск",
252
+ "searchPlaceholder": "Поиск закладок, папок, тегов...",
253
+ "searchShortcut": "Ctrl+K",
254
+ "searchShortcutHint": "Поиск (Ctrl+K)",
255
+ "noResults": "Результаты не найдены",
256
+ "copy": "Копировать",
257
+ "copied": "Скопировано!",
258
+ "goTo": "Перейти к",
259
+ "actions": "Действия",
260
+ "navigation": "Навигация",
261
+ "quickActions": "Быстрые действия",
262
+ "collapseSidebar": "Свернуть боковую панель",
263
+ "expandSidebar": "Развернуть боковую панель"
264
+ },
265
+ "dashboard": {
266
+ "bookmarksDescription": "Управление закладками",
267
+ "foldersDescription": "Организация с помощью папок",
268
+ "tagsDescription": "Добавление тегов к закладкам",
269
+ "overview": "Обзор",
270
+ "totalBookmarks": "Всего закладок",
271
+ "totalFolders": "Всего папок",
272
+ "totalTags": "Всего тегов",
273
+ "sharedBookmarks": "Общие закладки",
274
+ "sharedFolders": "Общие папки",
275
+ "recentBookmarks": "Недавние закладки",
276
+ "topTags": "Наиболее используемые теги",
277
+ "noRecentBookmarks": "Пока нет закладок",
278
+ "noTags": "Пока нет тегов",
279
+ "searchPlaceholder": "Поиск закладки или навигация по SlugBase",
280
+ "quickAccess": "Быстрый доступ",
281
+ "viewAll": "Показать все",
282
+ "noQuickAccessBookmarks": "Пока нет закладок с ярлыками",
283
+ "noQuickAccessBookmarksHint": "Добавьте слаг к закладке, чтобы видеть её здесь и использовать go/слаг в браузере.",
284
+ "statsBookmarks": "закладок",
285
+ "statsFolders": "папок",
286
+ "statsTags": "тегов",
287
+ "proTipBody": "Совет: Настройте SlugBase как поисковую систему в браузере и вводите go github в адресной строке для открытия закладок.",
288
+ "proTipLink": "Настроить поисковую систему",
289
+ "dismiss": "Закрыть",
290
+ "onboardingTitle": "Начало работы",
291
+ "onboardingImport": "Импорт закладок из браузера",
292
+ "onboardingSearchEngine": "Настроить ярлык поиска",
293
+ "onboardingFolder": "Создать первую папку",
294
+ "onboardingTag": "Добавить тег к закладке",
295
+ "onboardingDismiss": "Скрыть список"
296
+ },
297
+ "apiDocs": {
298
+ "title": "Документация API",
299
+ "description": "Полная справочная информация по API для SlugBase. Все endpoints требуют аутентификации через JWT-токены, кроме указанных."
300
+ },
301
+ "admin": {
302
+ "title": "Администратор",
303
+ "description": "Управление пользователями, группами, OIDC-провайдерами и настройками системы",
304
+ "users": "Пользователи",
305
+ "teams": "Команды",
306
+ "userGroups": "Команды",
307
+ "oidcProviders": "OIDC-провайдеры",
308
+ "settings": "Настройки",
309
+ "addUser": "Добавить пользователя",
310
+ "editUser": "Редактировать пользователя",
311
+ "addTeam": "Добавить команду",
312
+ "editTeam": "Редактировать команду",
313
+ "addGroup": "Добавить команду",
314
+ "editGroup": "Редактировать команду",
315
+ "addProvider": "Добавить провайдера",
316
+ "editProvider": "Редактировать провайдера",
317
+ "addSetting": "Добавить настройку",
318
+ "admin": "Администратор",
319
+ "user": "Пользователь",
320
+ "oidcUser": "OIDC-пользователь",
321
+ "teamName": "Название команды",
322
+ "groupName": "Название команды",
323
+ "description": "Описание",
324
+ "providerKey": "Ключ провайдера",
325
+ "issuerUrl": "URL эмитента",
326
+ "clientId": "ID клиента",
327
+ "clientIdRequired": "ID клиента обязателен при создании нового провайдера",
328
+ "clientSecret": "Секрет клиента",
329
+ "scopes": "Области",
330
+ "callbackUrl": "URL обратного вызова",
331
+ "customEndpoints": "Пользовательские OIDC-эндпоинты",
332
+ "customEndpointsDescription": "Переопределить пути эндпоинтов OIDC по умолчанию. Оставьте пустым, чтобы использовать стандартные пути на основе URL эмитента.",
333
+ "authorizationUrl": "URL авторизации",
334
+ "tokenUrl": "URL токена",
335
+ "userinfoUrl": "URL информации о пользователе",
336
+ "autoCreate": "Автоматически создавать пользователей",
337
+ "defaultRole": "Роль по умолчанию",
338
+ "settingKey": "Ключ",
339
+ "settingValue": "Значение",
340
+ "leaveBlank": "Оставьте пустым, чтобы сохранить текущее",
341
+ "leaveBlankToKeep": "Оставьте пустым, чтобы сохранить текущее значение",
342
+ "confirmDeleteUser": "Вы уверены, что хотите удалить этого пользователя?",
343
+ "confirmDeleteTeam": "Вы уверены, что хотите удалить эту команду?",
344
+ "confirmDeleteGroup": "Вы уверены, что хотите удалить эту команду?",
345
+ "confirmDeleteProvider": "Вы уверены, что хотите удалить этого провайдера?",
346
+ "confirmDeleteSetting": "Вы уверены, что хотите удалить эту настройку?",
347
+ "manageMembers": "Управление участниками",
348
+ "currentMembers": "Текущие участники",
349
+ "currentTeams": "Текущие команды",
350
+ "addMembers": "Добавить участников",
351
+ "addTeams": "Добавить команды",
352
+ "noMembers": "Нет участников в этой команде",
353
+ "noTeams": "Нет команд, назначенных этому пользователю",
354
+ "noTeamsYet": "Пока нет команд",
355
+ "add": "Добавить",
356
+ "members": "Участники",
357
+ "manageTeams": "Управление командами",
358
+ "searchTeams": "Поиск команд по имени или описанию...",
359
+ "createUserWith": "Создать пользователя с",
360
+ "sendInviteEmail": "Отправить приглашение по email",
361
+ "setPassword": "Установить пароль",
362
+ "inviteSent": "Приглашение отправлено",
363
+ "userCreatedInviteSent": "Пользователь создан; приглашение отправлено.",
364
+ "userCreatedInviteNotSent": "Пользователь создан; приглашение не удалось отправить (проверьте SMTP).",
365
+ "searchUsers": "Поиск пользователей по имени или email...",
366
+ "noTeamsAvailable": "Все команды уже назначены",
367
+ "noUsersAvailable": "Все пользователи уже являются участниками",
368
+ "noSearchResults": "Нет результатов, соответствующих вашему запросу",
369
+ "apiDocsNote": "Документация API доступна как отдельная страница",
370
+ "viewApiDocs": "Просмотр документации API",
371
+ "noUserEmailAvailable": "Email пользователя недоступен",
372
+ "manageTeamsTitle": "Управление командами - {{userName}}",
373
+ "manageMembersTitle": "Управление участниками - {{teamName}}"
374
+ },
375
+ "passwordReset": {
376
+ "title": "Сброс пароля",
377
+ "description": "Введите ваш email, чтобы получить ссылку для сброса пароля",
378
+ "email": "Email",
379
+ "emailPlaceholder": "ваш@email.com",
380
+ "requestReset": "Отправить ссылку для сброса",
381
+ "resetToken": "Токен сброса",
382
+ "newPassword": "Новый пароль",
383
+ "confirmPassword": "Подтвердите пароль",
384
+ "resetPassword": "Сбросить пароль",
385
+ "requestSent": "Если существует учетная запись с этим email, отправлена ссылка для сброса пароля.",
386
+ "resetSuccess": "Пароль успешно сброшен! Теперь вы можете войти с новым паролем.",
387
+ "invalidToken": "Недействительный или истекший токен сброса",
388
+ "passwordMismatch": "Пароли не совпадают",
389
+ "backToLogin": "Вернуться к входу"
390
+ },
391
+ "emailVerification": {
392
+ "verifying": "Проверка email",
393
+ "verifyingDescription": "Пожалуйста, подождите, пока мы проверяем ваш email...",
394
+ "success": "Email подтвержден",
395
+ "successDescription": "Ваш email успешно изменен на {{email}}.",
396
+ "error": "Ошибка проверки",
397
+ "errorDescription": "Ссылка для проверки недействительна или истекла.",
398
+ "tokenRequired": "Требуется токен проверки",
399
+ "invalidToken": "Недействительный или истекший токен проверки",
400
+ "verifyFailed": "Ошибка проверки токена",
401
+ "confirmFailed": "Ошибка подтверждения проверки email",
402
+ "redirecting": "Перенаправление в профиль...",
403
+ "backToProfile": "Вернуться к профилю",
404
+ "emailSent": "Письмо для проверки отправлено! Пожалуйста, проверьте ваш новый email.",
405
+ "pendingTitle": "Проверка email ожидает",
406
+ "pendingDescription": "Письмо для проверки отправлено на {{email}}. Пожалуйста, проверьте вашу почту и нажмите на ссылку для проверки, чтобы завершить изменение."
407
+ },
408
+ "smtp": {
409
+ "title": "Настройка SMTP для email",
410
+ "description": "Настройте параметры SMTP для отправки email (например, письма для сброса пароля)",
411
+ "enabled": "Включить SMTP",
412
+ "host": "SMTP-сервер",
413
+ "hostPlaceholder": "smtp.gmail.com",
414
+ "port": "Порт",
415
+ "portPlaceholder": "587",
416
+ "secure": "Использовать TLS/SSL",
417
+ "user": "Имя пользователя/Email",
418
+ "userPlaceholder": "ваш-email@gmail.com",
419
+ "password": "Пароль",
420
+ "passwordPlaceholder": "Введите пароль для установки или изменения",
421
+ "passwordChangeHint": "Введите новый пароль для изменения или оставьте пустым, чтобы сохранить текущий пароль",
422
+ "from": "Email отправителя",
423
+ "fromPlaceholder": "noreply@example.com",
424
+ "fromName": "Имя отправителя",
425
+ "fromNamePlaceholder": "SlugBase",
426
+ "testEmail": "Тестовый email",
427
+ "testEmailPlaceholder": "test@example.com",
428
+ "sendTest": "Отправить тестовый email",
429
+ "testSent": "Тестовый email успешно отправлен!",
430
+ "testFailed": "Ошибка отправки тестового email",
431
+ "save": "Сохранить настройки SMTP"
432
+ },
433
+ "shared": {
434
+ "title": "Общий доступ",
435
+ "description": "Закладки и папки, доступные вам",
436
+ "bookmarks": "Закладки",
437
+ "folders": "Папки",
438
+ "noBookmarks": "Пока нет общих закладок",
439
+ "noFolders": "Пока нет общих папок",
440
+ "unknownUser": "Неизвестный пользователь"
441
+ },
442
+ "searchEngineGuide": {
443
+ "title": "Руководство по настройке пользовательской поисковой системы",
444
+ "description": "Узнайте, как настроить пользовательскую поисковую систему в браузере для быстрого доступа к закладкам",
445
+ "howItWorks": "Как это работает",
446
+ "howItWorksDescription": "Настроив пользовательскую поисковую систему, вы можете ввести ключевое слово (например, 'go'), за которым следует slug закладки в адресной строке браузера, чтобы мгновенно перейти к этой закладке.",
447
+ "yourSearchUrl": "Ваш URL для поиска",
448
+ "urlNote": "Используйте этот шаблон URL при настройке пользовательской поисковой системы. %s будет заменен на slug вашей закладки.",
449
+ "chromiumTitle": "Браузеры на базе Chromium (Chrome, Edge, Brave и др.)",
450
+ "chromiumDescription": "Выполните следующие шаги, чтобы добавить SlugBase как пользовательскую поисковую систему:",
451
+ "chromiumStep1": "Откройте настройки браузера",
452
+ "chromiumStep2": "Перейдите к настройкам 'Поисковая система' или 'Поиск'",
453
+ "chromiumStep3": "Нажмите 'Управление поисковыми системами' или 'Добавить'",
454
+ "chromiumStep4": "Заполните форму:",
455
+ "chromiumStep4a": "Имя: SlugBase (или любое предпочитаемое имя)",
456
+ "chromiumStep4b": "Ключевое слово: go (или любое предпочитаемое ключевое слово)",
457
+ "chromiumStep4c": "URL: Используйте URL для поиска, указанный выше",
458
+ "chromiumStep5": "Нажмите 'Добавить' или 'Сохранить' для завершения настройки",
459
+ "firefoxTitle": "Firefox",
460
+ "firefoxDescription": "Выполните следующие шаги, чтобы добавить SlugBase как пользовательскую поисковую систему:",
461
+ "firefoxStep1": "Откройте настройки Firefox",
462
+ "firefoxStep2": "Перейдите к 'Поиск' в меню настроек",
463
+ "firefoxStep3": "Прокрутите вниз и нажмите 'Добавить' в разделе 'Поисковые системы в один клик'",
464
+ "firefoxStep4": "Заполните форму:",
465
+ "firefoxStep4a": "Имя: SlugBase (или любое предпочитаемое имя)",
466
+ "firefoxStep4b": "Ключевое слово: go (или любое предпочитаемое ключевое слово)",
467
+ "firefoxStep4c": "URL: Используйте URL для поиска, указанный выше",
468
+ "firefoxStep5": "Нажмите 'Добавить' для завершения настройки",
469
+ "usageExample": "Пример использования",
470
+ "usageStep1": "После настройки просто введите в адресной строке браузера:",
471
+ "usageStep2": "Нажмите Enter, и вы будете перенаправлены на закладку с slug 'test'",
472
+ "usageNote": "Замените 'test' на любой slug закладки, который вы создали в SlugBase!"
473
+ },
474
+ "legal": {
475
+ "imprintTitle": "Правовая информация",
476
+ "imprintProviderTitle": "Поставщик услуг (ECG §5)",
477
+ "imprintChamber": "Член {{chamber}}",
478
+ "imprintCourtTitle": "Компетентный суд",
479
+ "imprintCourtBody": "Подсудность споров: Landesgericht Linz, Австрия. Применяется австрийское право.",
480
+ "imprintOdrTitle": "Внесудебное урегулирование споров ЕС онлайн",
481
+ "imprintOdrBody": "Европейская комиссия предоставляет платформу для урегулирования споров онлайн. Потребители могут использовать её по адресу",
482
+ "uid": "UID",
483
+ "backToHome": "На главную",
484
+ "termsTitle": "Условия использования",
485
+ "termsScopeTitle": "Сфера действия",
486
+ "termsScopeBody": "Настоящие Условия применяются к использованию SlugBase Cloud («Сервис») на slugbase.app. Регистрируясь или используя Сервис, вы соглашаетесь с этими условиями. Если вы потребитель, ваши законные права сохраняются.",
487
+ "termsServiceTitle": "Описание сервиса",
488
+ "termsServiceBody": "SlugBase Cloud — сервис управления закладками и перенаправления ссылок. Позволяет сохранять, организовывать и делиться закладками; создавать папки и теги; опционально предоставлять закладки как короткие URL. Сервис предоставляется как SaaS на https://slugbase.app.",
489
+ "termsPlansTitle": "Тарифы",
490
+ "termsPlansBody": "SlugBase Cloud предлагает тарифы Free, Personal, Team и Early Supporter Lifetime. Актуальные детали на странице цен.",
491
+ "termsAccountTitle": "Аккаунт и право на использование",
492
+ "termsAccountBody": "При создании аккаунта необходимо указывать достоверные данные. Вы несёте ответственность за сохранность учётных данных. Сервис предназначен для законного использования физическими лицами и командами.",
493
+ "termsUseTitle": "Использование Сервиса",
494
+ "termsUseBody": "Вы можете использовать SlugBase для сохранения, организации и обмена закладками, а также для коротких ссылок (перенаправление). Запрещается использовать Сервис в незаконных целях, для распространения вредоносного ПО или преследования других.",
495
+ "termsShortLinksTitle": "Короткие ссылки и перенаправление",
496
+ "termsShortLinksBody": "Короткие ссылки (напр. /go/ваш-слаг) перенаправляют на указанный вами URL. Запрещается использовать их для фишинга, спама или иных злоупотреблений. Мы можем приостановить или удалить ссылки, нарушающие эти условия.",
497
+ "termsBillingTitle": "Расчёт и оплата",
498
+ "termsBillingBody": "Платные тарифы оплачиваются авансом. Оплата должна быть произведена при выставлении счёта. Тариф Early Supporter Lifetime — единоразовая оплата.",
499
+ "termsCancellationTitle": "Отмена и продление",
500
+ "termsCancellationBody": "Вы можете отменить подписку в любое время. Отмена вступает в силу по окончании текущего расчётного периода. Минимального срока нет. Для автоматически продлеваемых подписок вы можете отменить до каждой даты продления.",
501
+ "termsWithdrawalTitle": "Право на отказ (потребители)",
502
+ "termsWithdrawalBody": "Если вы потребитель по австрийскому праву, у вас есть 14-дневное право отказа без объяснения причин. Срок начинается со дня заключения договора. Для отказа свяжитесь с нами: hello@slugbase.app.",
503
+ "termsLiabilityTitle": "Ограничение ответственности",
504
+ "termsLiabilityBody": "Сервис предоставляется «как есть». Мы не несём ответственности за косвенный или последующий ущерб, за исключением случаев умысла или грубой небрежности. Наша ответственность ограничена.",
505
+ "termsTerminationTitle": "Приостановка и прекращение с нашей стороны",
506
+ "termsTerminationBody": "Мы можем приостановить или прекратить ваш аккаунт при существенном нарушении этих условий или неуплате. При прекращении ваше право использования заканчивается.",
507
+ "termsLawTitle": "Применимое право",
508
+ "termsLawBody": "Настоящие условия регулируются правом Австрии. Споры подлежат рассмотрению компетентными судами Австрии.",
509
+ "termsContactTitle": "Контакты",
510
+ "termsContactBody": "По вопросам, связанным с этими условиями: hello@slugbase.app или по адресу в правовой информации.",
511
+ "privacyTitle": "Политика конфиденциальности",
512
+ "privacyScopeTitle": "Сфера действия",
513
+ "privacyScopeBody": "Настоящая политика применяется к SlugBase Cloud на https://slugbase.app. Описывает обработку ваших персональных данных. Не применяется при самохостинге SlugBase. Основана на GDPR и австрийском DSG.",
514
+ "privacyControllerTitle": "Контролёр",
515
+ "privacyControllerBody": "Контролёр обработки данных: Guggernbichler Michael David, Linzer Str. 17, 4100 Ottensheim, Австрия (см. правовую информацию).",
516
+ "privacyDataTitle": "Обрабатываемые данные",
517
+ "privacyDataBody": "Обрабатываем: данные аккаунта; контент (закладки, папки, теги); использование (сессия, IP, логи); контактные данные при отправке формы. Данные не продаются и не используются для рекламы.",
518
+ "privacyRecipientsTitle": "Получатели",
519
+ "privacyRecipientsBody": "Данные обрабатываются на нашей инфраструктуре и соответствующими GDPR обработчиками. Мы не передаём данные третьим лицам для их собственных целей.",
520
+ "privacyBasisTitle": "Правовое основание",
521
+ "privacyBasisBody": "Обработка данных осуществляется на основании исполнения договора (предоставление Сервиса), вашего согласия (где применимо) и законных интересов (безопасность, предотвращение злоупотреблений).",
522
+ "privacyRetentionTitle": "Хранение",
523
+ "privacyRetentionBody": "Данные аккаунта и закладок хранятся, пока существует ваш аккаунт. После удаления данные удаляются или анонимизируются в разумный срок. Логи могут храниться дольше, если это требуется по закону.",
524
+ "privacyRightsTitle": "Ваши права",
525
+ "privacyRightsBody": "Вы имеете право доступа, исправления, удаления, ограничения, переносимости и возражения. Можете отозвать согласие в любое время. Контакт: hello@slugbase.app. Можете подать жалобу в австрийский орган (см. ниже).",
526
+ "privacyCookiesTitle": "Файлы cookie и аутентификация",
527
+ "privacyCookiesBody": "Мы используем сессионные cookie и аналогичные средства для аутентификации и безопасности. Рекламные cookie третьих лиц не используются.",
528
+ "privacyHostingTitle": "Хостинг (CLOUD и самохостинг)",
529
+ "privacyHostingBody": "На slugbase.app (CLOUD) мы размещаем ваши данные на нашей инфраструктуре в ЕС/ЕЭП. При самохостинге SlugBase вы являетесь контролёром и контролируете хранение.",
530
+ "privacySupervisoryTitle": "Надзорный орган",
531
+ "privacySupervisoryBody": "Вы можете подать жалобу в Österreichische Datenschutzbehörde, Barichgasse 40-42, 1030 Вена, Австрия (dsb@dsb.gv.at). Согласно австрийскому DSG жалобы обычно подаются в течение года с момента осведомления.",
532
+ "privacyChangesTitle": "Изменения",
533
+ "privacyChangesBody": "Мы можем обновлять эту политику. Существенные изменения будут доведены до сведения. Текущая версия доступна на этой странице. Продолжение использования после изменений означает принятие."
534
+ }
535
+ }