diff --git a/upload/devcraft/locales/de_DE/dleapi.xliff b/upload/devcraft/locales/de_DE/dleapi.xliff
new file mode 100644
index 00000000..f6786ecb
--- /dev/null
+++ b/upload/devcraft/locales/de_DE/dleapi.xliff
@@ -0,0 +1,1187 @@
+
+
+
+
+
+ API-ключ
+ API-Schlüssel
+
+
+ Новый
+ Neu
+
+
+ Загрузка…
+ Wird geladen…
+
+
+ Ключ
+ Schlüssel
+
+
+ Копировать
+ Kopieren
+
+
+ Когда
+ Wann
+
+
+ Истекает
+ Läuft ab
+
+
+ Уровень
+ Berechtigungsstufe
+
+
+ Запросить ключ
+ Schlüssel anfordern
+
+
+ Одобрить
+ Genehmigen
+
+
+ Отказать
+ Ablehnen
+
+
+ Метод не разрешён
+ Methode nicht erlaubt
+
+
+ Допустимо
+ Zulässig
+
+
+ Маршрут не найден
+ Ressource nicht gefunden
+
+
+ Неверный или неактивный API-ключ
+ Ungültiger oder inaktiver API-Schlüssel
+
+
+ Неверный логин или пароль
+ Ungültiger Benutzername oder Passwort
+
+
+ Нет API-ключа пользователя и гостевого ключа
+ Kein API-Schlüssel oder Gastschlüssel vorhanden
+
+
+ Неверный client_id или client_secret
+ Ungültige client_id oder client_secret
+
+
+ Клиент не разрешает grant_type=client_credentials
+ Client erlaubt grant_type=client_credentials nicht
+
+
+ API-ключ клиента неактивен
+ API-Schlüssel des Clients ist inaktiv
+
+
+ Нужны оба: client_id и client_secret
+ Es werden beide benötigt: client_id und client_secret
+
+
+ Клиент не разрешает grant_type=password
+ Client erlaubt grant_type=password nicht
+
+
+ Неверный client
+ Ungültiger Client
+
+
+ Клиент не разрешает grant_type=authorization_code
+ Client erlaubt grant_type=authorization_code nicht
+
+
+ Код недействителен
+ Code ungültig
+
+
+ redirect_uri не совпадает
+ redirect_uri stimmt nicht überein
+
+
+ Ошибка проверки PKCE
+ PKCE-Prüfungsfehler
+
+
+ API-ключ неактивен
+ API-Schlüssel ist inaktiv
+
+
+ Refresh token недействителен
+ Refresh-Token ungültig
+
+
+ Связанный access token не найден
+ Zugehöriger Access-Token nicht gefunden
+
+
+ Клиент или ключ неактивен
+ Client oder Schlüssel ist inaktiv
+
+
+ Клиент не разрешает grant_type=refresh_token
+ Client erlaubt grant_type=refresh_token nicht
+
+
+ Неизвестный или неактивный client_id
+ Unbekannte oder inaktive client_id
+
+
+ У клиента не задан redirect_uri
+ Client hat kein redirect_uri festgelegt
+
+
+ redirect_uri не совпадает с зарегистрированным у клиента
+ redirect_uri stimmt nicht mit dem beim Client registrierten überein
+
+
+ Попытка взлома!
+ Verdächtige Aktivität!
+
+
+ Неподдерживаемый credential_type
+ Nicht unterstützter credential_type
+
+
+ Укажите credential_type или grant_type
+ Geben Sie credential_type oder grant_type an
+
+
+ Нужны client_id и redirect_uri
+ Es werden client_id und redirect_uri benötigt
+
+
+ Авторизация пройдена, но сброшена в демо-режиме
+ Authentifizierung erfolgreich, aber im Demo-Modus zurückgesetzt
+
+
+ Неизвестная таблица
+ Unbekannte Tabelle
+
+
+ Запись не найдена
+ Eintrag nicht gefunden
+
+
+ Нужен fields{} или name+value
+ Es werden fields{} oder name+value benötigt
+
+
+ Поле не найдено
+ Feld nicht gefunden
+
+
+ Нужен multipart field file
+ Multipart-Feld file erforderlich
+
+
+ Новость не найдена
+ Nachricht nicht gefunden
+
+
+ Метод требует значение
+ Methode erfordert einen Wert
+
+
+ Нельзя выполнить операцию: не задан первичный ключ.
+ Vorgang kann nicht durchgeführt werden: Primärschlüssel nicht angegeben.
+
+
+ Неизвестная колонка «{column}» для таблицы {table}
+ Unbekannte Spalte «{column}» für Tabelle {table}
+
+
+ Нет права «{action}» на таблицу «{table}»
+ Keine Berechtigung «{action}» für Tabelle «{table}»
+
+
+ Неизвестный метод
+ Unbekannte Methode
+
+
+ Безопасность
+ Sicherheit
+
+
+ Алгоритм HMAC
+ HMAC-Algorithmus
+
+
+ Алгоритм для генерации API-ключей.
+ Algorithmus zur Generierung von API-Schlüsseln.
+
+
+ Секрет
+ Geheimnis
+
+
+ Секретная строка для HMAC. Оставьте пустым для автогенерации при сохранении.
+ Geheimer String für HMAC. Lassen Sie das Feld leer, um es bei der Speicherung automatisch zu generieren.
+
+
+ Длина ключа
+ Schlüssellänge
+
+
+ Длина генерируемого API-ключа.
+ Länge des generierten API-Schlüssels.
+
+
+ Маскировать чувствительные поля
+ Sensible Felder maskieren
+
+
+ Задано DEMO_MODE в .env — маскирование принудительно включено.
+ DEMO_MODE in .env festgelegt — Maskierung ist erzwungen aktiviert.
+
+
+ Скрывать пароли, IP и хеши в ответах API (CRUD).
+ Passwörter, IP-Adressen und Hashes in API-Antworten (CRUD) ausblenden.
+
+
+ OAuth2
+ OAuth2
+
+
+ TTL access token (сек)
+ TTL Access-Token (Sek.)
+
+
+ Время жизни access token в секундах.
+ Lebensdauer des Access-Tokens in Sekunden.
+
+
+ Уровни доступа
+ Berechtigungsstufen
+
+
+ Уровень доступа по умолчанию
+ Standard-Berechtigungsstufe
+
+
+ Используется при самогенерации ключа и если группа DLE не привязана на странице синхронизации.
+ Wird bei Selbstgenerierung des Schlüssels verwendet und wenn die DLE-Gruppe nicht auf der Synchronisierungsseite verknüpft ist.
+
+
+ Профиль пользователя
+ Benutzerprofil
+
+
+ Показывать блок API-ключа в профиле
+ API-Schlüssel-Block im Profil anzeigen
+
+
+ Если выключено — блок виден только при включённой самогенерации / заявке. Ключ берётся из таблицы api_keys.
+ Wenn deaktiviert, ist der Block nur bei aktivierter Selbstgenerierung/Anfrage sichtbar. Der Schlüssel wird aus der Tabelle api_keys entnommen.
+
+
+ Разрешить пользователям генерировать ключ
+ Benutzern erlauben, Schlüssel zu generieren
+
+
+ Если выключено — кнопка запроса не показывается; ключ выдаёт администратор.
+ Wenn deaktiviert, wird die Anfrage-Schaltfläche nicht angezeigt; der Schlüssel wird vom Administrator ausgegeben.
+
+
+ Уведомления о заявках
+ Benachrichtigungen zu Anfragen
+
+
+ Уведомлять по почте при заявке на ключ
+ Per E-Mail über neue Schlüsselanfragen benachrichtigen
+
+
+ ЛС на сайте при заявке на ключ
+ PN auf der Website bei neuen Schlüsselanfragen
+
+
+ Группы DLE
+ DLE-Gruppen
+
+
+ Получатели уведомлений о заявках.
+ Empfänger von Benachrichtigungen zu Schlüsselanfragen.
+
+
+ Пользователи
+ Benutzer
+
+
+ Дополнительные получатели уведомлений о заявках (по user_id).
+ Zusätzliche Empfänger von Benachrichtigungen zu Schlüsselanfragen (nach user_id).
+
+
+ PM: тема заявки
+ PN: Thema der Anfrage
+
+
+ Тема личного сообщения для администраторов о новой заявке на API-ключ.
+ Betreff der privaten Nachricht an Administratoren über eine neue API-Schlüsselanfrage.
+
+
+ Плейсхолдеры заявки (PM)
+ Platzhalter der Anfrage (PN)
+
+
+ Заявка на API-ключ
+ API-Schlüsselanfrage
+
+
+ PM: текст заявки
+ PN: Text der Anfrage
+
+
+ Текст личного сообщения администраторам о новой заявке на API-ключ.
+ Text der privaten Nachricht an Administratoren über eine neue API-Schlüsselanfrage.
+
+
+ Уведомления о решении
+ Benachrichtigungen zu Entscheidungen
+
+
+ Уведомлять по почте об одобрении / отказе
+ Per E-Mail über Genehmigungen/Ablehnungen benachrichtigen
+
+
+ ЛС об одобрении / отказе
+ PN zu Genehmigungen/Ablehnungen
+
+
+ PM: тема одобрения
+ PN: Thema der Genehmigung
+
+
+ Тема личного сообщения пользователю при одобрении API-ключа.
+ Betreff der privaten Nachricht an den Benutzer bei Genehmigung des API-Schlüssels.
+
+
+ Плейсхолдеры одобрения (PM)
+ Platzhalter der Genehmigung (PN)
+
+
+ API-ключ одобрен
+ API-Schlüssel genehmigt
+
+
+ PM: текст одобрения
+ PN: Text der Genehmigung
+
+
+ Текст личного сообщения пользователю при одобрении API-ключа.
+ Text der privaten Nachricht an den Benutzer bei Genehmigung des API-Schlüssels.
+
+
+ PM: тема отказа
+ PN: Thema der Ablehnung
+
+
+ Тема личного сообщения пользователю при отказе в API-ключе.
+ Betreff der privaten Nachricht an den Benutzer bei Ablehnung des API-Schlüssels.
+
+
+ Плейсхолдеры отказа (PM)
+ Platzhalter der Ablehnung (PN)
+
+
+ API-ключ отклонён
+ API-Schlüssel abgelehnt
+
+
+ PM: текст отказа
+ PN: Text der Ablehnung
+
+
+ Текст личного сообщения пользователю при отказе в API-ключе.
+ Text der privaten Nachricht an den Benutzer bei Ablehnung des API-Schlüssels.
+
+
+ Ваша заявка на API-ключ отклонена.
+ Ihre Anfrage auf einen API-Schlüssel wurde abgelehnt.
+
+
+ Email-шаблоны
+ E-Mail-Vorlagen
+
+
+ Email: тема заявки
+ E-Mail: Thema der Anfrage
+
+
+ Тема письма администраторам о новой заявке на API-ключ.
+ Betreff der E-Mail an Administratoren über eine neue API-Schlüsselanfrage.
+
+
+ Плейсхолдеры заявки (email)
+ Platzhalter der Anfrage (E-Mail)
+
+
+ Email: тело заявки
+ E-Mail: Text der Anfrage
+
+
+ HTML или текст письма администраторам о новой заявке на API-ключ.
+ HTML- oder Text-E-Mail an Administratoren über eine neue API-Schlüsselanfrage.
+
+
+ Email: тема одобрения
+ E-Mail: Thema der Genehmigung
+
+
+ Тема письма пользователю при одобрении API-ключа.
+ Betreff der E-Mail an den Benutzer bei Genehmigung des API-Schlüssels.
+
+
+ Плейсхолдеры решения (email)
+ Platzhalter der Entscheidung (E-Mail)
+
+
+ Email: тема отказа
+ E-Mail: Thema der Ablehnung
+
+
+ Тема письма пользователю при отказе в API-ключе.
+ Betreff der E-Mail an den Benutzer bei Ablehnung des API-Schlüssels.
+
+
+ Email: тело решения
+ E-Mail: Text der Entscheidung
+
+
+ HTML или текст письма пользователю при одобрении либо отказе в API-ключе.
+ HTML- oder Text-E-Mail an den Benutzer bei Genehmigung oder Ablehnung des API-Schlüssels.
+
+
+ Неофициальное REST/SDK API для DLE: ключи, OAuth2 Bearer, /api/v2
+ Inoffizielle REST/SDK-API für DLE: Schlüssel, OAuth2 Bearer, /api/v2
+
+
+ Главная
+ Startseite
+
+
+ API-ключи
+ API-Schlüssel
+
+
+ Синхронизация с группами
+ Synchronisierung mit Gruppen
+
+
+ Заявки на ключ
+ Schlüsselanfragen
+
+
+ OAuth-клиенты
+ OAuth-Clients
+
+
+ Настройки
+ Einstellungen
+
+
+ Журнал изменений
+ Änderungsprotokoll
+
+
+ Список API-ключей
+ Liste der API-Schlüssel
+
+
+ Активен
+ Aktiv
+
+
+ Пользователь
+ Benutzer
+
+
+ Действия
+ Aktionen
+
+
+ Да
+ Ja
+
+
+ Права
+ Berechtigungen
+
+
+ Отключить
+ Deaktivieren Sie
+
+
+ Удалить
+ Löschen
+
+
+ Ключей пока нет
+ Es gibt noch keine Schlüssel
+
+
+ Создать ключ
+ Schlüssel erstellen
+
+
+ Показать форму
+ Formular anzeigen
+
+
+ Скрыть форму
+ Formular ausblenden
+
+
+ Уровень доступа
+ Berechtigungsstufe
+
+
+ — вручную / без уровня —
+ — manuell / ohne Stufe —
+
+
+ При выборе уровня флаги own_only/cheater берутся из уровня. Без уровня — матрица scopes ниже.
+ Bei Auswahl der Stufe werden die Flags own_only/cheater aus der Stufe übernommen. Ohne Stufe gilt die untenstehende Scopes-Matrix.
+
+
+ Создать
+ Erstellen
+
+
+ Сохранить
+ Speichern
+
+
+ Отмена
+ Abbrechen
+
+
+ Права доступа к таблицам (если уровень не задан или для legacy-ключей)
+ Berechtigungen für Tabellen (wenn keine Stufe festgelegt ist oder für Legacy-Schlüssel)
+
+
+ Чтение — просмотр; Запись — создание; Правка — изменение; Удаление — удаление. При уровне с cheater матрица игнорируется.
+ Lesen — Anzeigen; Schreiben — Erstellen; Bearbeiten — Ändern; Löschen — Löschen. Bei einer Stufe mit cheater wird die Matrix ignoriert.
+
+
+ Таблица
+ Tabelle
+
+
+ Чтение
+ Lesen
+
+
+ Включить все
+ Alle aktivieren
+
+
+ Запись
+ Schreiben
+
+
+ Правка
+ Bearbeiten
+
+
+ Удаление
+ Löschen
+
+
+ Список таблиц SchemaRegistry пуст
+ Die Liste der Tabellen in SchemaRegistry ist leer
+
+
+ Если группа не привязана — при самогенерации используется уровень по умолчанию из настроек; на ключах уровень задаётся вручную.
+ Wenn die Gruppe nicht verknüpft ist, wird bei der Selbstgenerierung die Standardstufe aus den Einstellungen verwendet; bei den Schlüsseln wird die Stufe manuell festgelegt.
+
+
+ Группа DLE → уровень доступа
+ DLE-Gruppe → Berechtigungsstufe
+
+
+ Группа
+ Gruppe
+
+
+ — не задано —
+ — nicht festgelegt —
+
+
+ Группы не найдены
+ Gruppen nicht gefunden
+
+
+ Эндпоинты Authorization Server
+ Endpunkte des Authorization Servers
+
+
+ Скопируйте URL для интеграции внешних OAuth-клиентов (DLE = IdP).
+ Kopieren Sie die URL zur Integration externer OAuth-Clients (DLE = IdP).
+
+
+ Сохраните client_secret сейчас
+ Speichern Sie jetzt das client_secret
+
+
+ он показывается один раз и больше не будет доступен.
+ es wird nur einmal angezeigt und ist danach nicht mehr verfügbar.
+
+
+ Скрыть
+ Ausblenden
+
+
+ Имя
+ Name
+
+
+ Изменить
+ Bearbeiten
+
+
+ Клиентов пока нет
+ Es gibt noch keine Clients
+
+
+ Создать клиент
+ Client erstellen
+
+
+ OAuth-клиент выдаёт access_token для вызовов /api/v2. Права запросов берёт из выбранного API-ключа (scopes). После создания сохраните client_id и client_secret — секрет больше не показывается.
+ OAuth-Client gibt Access-Token für Aufrufe von /api/v2 aus. Die Anforderungsrechte werden aus dem ausgewählten API-Schlüssel (Scopes) entnommen. Speichern Sie nach der Erstellung client_id und client_secret — das Geheimnis wird danach nicht mehr angezeigt.
+
+
+ Редактирование: название, API-ключ, Redirect URI, grant types и активность. client_id не меняется; секрет — только через «Пересоздать client_secret».
+ Bearbeiten: Name, API-Schlüssel, Redirect-URI, Grant-Typen und Aktivität. client_id kann nicht geändert werden; Geheimnis nur über «client_secret neu erstellen».
+
+
+ Идентификатор клиента не меняется. Секрет можно перевыпустить кнопкой ниже — старый сразу перестанет работать.
+ Die Client-ID kann nicht geändert werden. Das Geheimnis kann über die Schaltfläche unten neu generiert werden — der alte Schlüssel wird sofort ungültig.
+
+
+ Пересоздать client_secret
+ client_secret neu erstellen
+
+
+ Новый секрет покажется один раз над таблицей. Обновите его во всех приложениях, которые используют этого клиента.
+ Das neue Geheimnis wird einmalig über der Tabelle angezeigt. Aktualisieren Sie es in allen Anwendungen, die diesen Client verwenden.
+
+
+ Название
+ Name
+
+
+ Напр. Mobile app, CI, Postman
+ Z. B. Mobile App, CI, Postman
+
+
+ Только для списка в админке. На выдачу токенов не влияет. Если пусто — подставится client_id.
+ Nur für die Liste in der Admin-Oberfläche. Beeinflusst die Token-Ausgabe nicht. Wenn leer, wird client_id verwendet.
+
+
+ — выберите —
+ — auswählen —
+
+
+ Обязательно. Определяет, к каким таблицам и с какими правами (read/write/delete) сможет обращаться Bearer-токен этого клиента. Ключ создаётся на вкладке «Ключи».
+ Pflichtfeld. Legt fest, auf welche Tabellen und mit welchen Rechten (Lesen/Schreiben/Löschen) der Bearer-Token dieses Clients zugreifen kann. Der Schlüssel wird auf der Registerkarte „Schlüssel“ erstellt.
+
+
+ Redirect URI
+ Redirect-URI
+
+
+ Ссылка http(s). Нужна для grant authorization_code. Должна точно совпадать с redirect_uri при /oauth/authorize и обмене кода. Для password / client_credentials можно оставить пустым.
+ HTTP(s)-Link. Wird für den Grant authorization_code benötigt. Muss genau mit redirect_uri bei /oauth/authorize und beim Token-Austausch übereinstimmen. Für password / client_credentials kann er leer bleiben.
+
+
+ Grant types
+ Grant-Typen
+
+
+ сервер-сервер без пользователя
+ Server-zu-Server ohne Benutzer
+
+
+ логин/пароль пользователя DLE
+ Benutzername/Passwort des DLE-Benutzers
+
+
+ браузерный OAuth-код (нужен Redirect URI)
+ Browser-OAuth-Code (benötigt Redirect-URI)
+
+
+ обновление access_token
+ Aktualisierung des Access-Tokens
+
+
+ Какие способы получения токена разрешены этому клиенту. Хотя бы один обязателен.
+ Welche Methoden zur Token-Generierung für diesen Client erlaubt sind. Mindestens eine ist erforderlich.
+
+
+ Неактивный клиент не сможет получать новые токены.
+ Ein inaktiver Client kann keine neuen Tokens erhalten.
+
+
+ Заявки на API-ключ
+ API-Schlüsselanfragen
+
+
+ Статус
+ Status
+
+
+ Дата
+ Datum
+
+
+ Отклонить
+ Ablehnen
+
+
+ Заявок нет
+ Keine Anfragen vorhanden
+
+
+ Сорт.
+ Sort.
+
+
+ Премод.
+ Vormoderation.
+
+
+ Уровней пока нет
+ Es gibt noch keine Stufen
+
+
+ Создать уровень
+ Stufe erstellen
+
+
+ Сортировка
+ Sortierung
+
+
+ Премодерация заявок на ключ
+ Vormoderation von Schlüsselanfragen
+
+
+ Только свои записи
+ Nur eigene Einträge
+
+
+ Полный доступ (cheater)
+ Vollzugriff (Cheater)
+
+
+ Маскировать IP
+ IP-Adressen maskieren
+
+
+ Маскировать пароли/хеши
+ Passwörter/Hashes maskieren
+
+
+ Маскировать лишние ПДн
+ Zusätzliche personenbezogene Daten maskieren
+
+
+ Scopes уровня (read / write / edit / delete)
+ Scopes der Stufe (Lesen / Schreiben / Bearbeiten / Löschen)
+
+
+ API v2 (/api/v2) на CycleORM из DevCraft Admin.
+ API v2 (/api/v2) auf CycleORM aus DevCraft Admin.
+
+
+ OAuth2 Authorization Server: authorize, token, revoke; доступ только через Bearer.
+ OAuth2 Authorization Server: authorize, token, revoke; Zugriff nur über Bearer.
+
+
+ credential_type api_key|auth|oauth_client; ресурсы только AuthToken; GET /me и /oauth/userinfo.
+ credential_type api_key|auth|oauth_client; Ressourcen nur AuthToken; GET /me und /oauth/userinfo.
+
+
+ OAuth AS discovery, authorize по сессии DLE, копируемые endpoint URL.
+ OAuth AS Discovery, Autorisierung über DLE-Sitzung, kopierbare Endpunkt-URLs.
+
+
+ Уровни доступа, синхронизация с группами, заявки на ключ, профиль (public AJAX).
+ Berechtigungsstufen, Synchronisierung mit Gruppen, Schlüsselanfragen, Profil (öffentliche AJAX).
+
+
+ DEMO_MODE / DLEAPI_SECURE из .env; email-шаблоны через install.xml.
+ DEMO_MODE / DLEAPI_SECURE aus .env; E-Mail-Vorlagen über install.xml.
+
+
+ Fluent-билдеры prepareNewPost / prepareNewUser / preparePlugin / prepareNewUsergroup (in-process и HTTP SDK).
+ Fluent-Builder prepareNewPost / prepareNewUser / preparePlugin / prepareNewUsergroup (In-Process und HTTP-SDK).
+
+
+ Каталог Schema таблиц DLE в api/includes/Schemas.
+ Schema-Katalog der DLE-Tabellen in api/includes/Schemas.
+
+
+ OpenAPI (swagger-php) и документация OAD в mhdocs.
+ OpenAPI (swagger-php) und OAD-Dokumentation in mhdocs.
+
+
+ Загрузка файлов через штатный пайплайн DLE.
+ Datei-Uploads über die native DLE-Pipeline.
+
+
+ Фильтр постов по одной категории при нескольких (FIND_IN_SET / issue #12).
+ Filterung von Beiträgen nach einer Kategorie bei mehreren (FIND_IN_SET / Issue #12).
+
+
+ Админ-модуль DleApi для DevCraft Admin ≥ 200.4.0 (только конфигурация).
+ Admin-Modul DleApi für DevCraft Admin ≥ 200.4.0 (nur Konfiguration).
+
+
+ HTTP /table/{name}: интроспекция таблиц вне SchemaRegistry + TableScopeGuard.
+ HTTP /table/{name}: Tabellen-Introspektion außerhalb von SchemaRegistry + TableScopeGuard.
+
+
+ SDK facades: DcApi::news() / user() / comment() / conversation() / plugin() / file() / staticPage() / schema().
+ SDK-Fassaden: DcApi::news() / user() / comment() / conversation() / plugin() / file() / staticPage() / schema().
+
+
+ Fluent CRUD на AbstractTableSchema (with / create / save / delete / filter / fromArray).
+ Fluent CRUD auf AbstractTableSchema (with / create / save / delete / filter / fromArray).
+
+
+ GET-кэш TableQuery через CacheControl (dle_api_query, TTL).
+ GET-Cache von TableQuery über CacheControl (dle_api_query, TTL).
+
+
+ Админка: multi получатели уведомлений, WYSIWYG для PM; panel-title через caption.
+ Admin: Mehrfachempfänger für Benachrichtigungen, WYSIWYG für PN; panel-title über caption.
+
+
+ Админка: FormPanel ключей/уровней/OAuth свёрнут на узком экране (Metro d-none / d-block-md).
+ Admin: Formularbereich für Schlüssel/Stufen/OAuth auf schmalen Bildschirmen ausgeblendet (Metro d-none / d-block-md).
+
+
+ Совместимость с DLE 20.0 (xfields.json, dual category, conversations).
+ Kompatibilität mit DLE 20.0 (xfields.json, Dual-Kategorie, Konversationen).
+
+
+ Таблицы api_keys / api_scope / OAuth создаются Cycle-миграциями DevCraft (Models + AbstractEntity), а не DDL в install.xml.
+ Tabellen api_keys / api_scope / OAuth werden über Cycle-Migrationen von DevCraft erstellt (Models + AbstractEntity), nicht über DDL in install.xml.
+
+
+ Scopes: колонка edit; own_only/cheater на уровне; trailing slash на всех маршрутах v2.
+ Scopes: Spalte Bearbeiten; own_only/cheater auf Stufe; abschließender Schrägstrich auf allen v2-Routen.
+
+
+ OpenAPI: описание ApiError без PHPDoc {@see}; Schema без пометки install.php.
+ OpenAPI: Beschreibung von ApiError ohne PHPDoc {@see}; Schema ohne Hinweis in install.php.
+
+
+ API v1 (Slim + Illuminate Capsule, X-Api-Key) полностью удалён.
+ API v1 (Slim + Illuminate Capsule, X-Api-Key) vollständig entfernt.
+
+
+ Приём сырого API-ключа как Bearer на ресурсах /table.
+ Akzeptieren eines rohen API-Schlüssels als Bearer für Ressourcen /table.
+
+
+ Оптимизация кода под PHP 8.2
+ Optimierung des Codes für PHP 8.2
+
+
+ Минимально поддерживаемая версия DLE - 16.0
+ Minimale unterstützte DLE-Version: 16.0
+
+
+ Изменён список алгоритмов на hash_hmac_algos
+ Liste der Algorithmen auf hash_hmac_algos geändert
+
+
+ Убрана процедура проверки атрибута в таблице
+ Überprüfung des Tabellenattributs entfernt
+
+
+ Оптимизирован код
+ Code optimiert
+
+
+ Генерация ключа привязана к времени
+ Schlüsselgenerierung ist an die Zeit gebunden
+
+
+ Добавлена возможность добавлять ключи независимо от пользователя => для этого нужно выбрать в меню пользователя "Гость / Неавторизованный"
+ Es wurde die Möglichkeit hinzugefügt, Schlüssel unabhängig vom Benutzer zu erstellen => Wählen Sie im Benutzermenü „Gast / Nicht autorisiert".
+
+
+ Добавлена возможность генерировать свои рутеры на основе базы данных => читайте документацию
+ Es wurde die Möglichkeit hinzugefügt, eigene Router basierend auf der Datenbank zu generieren => Lesen Sie die Dokumentation.
+
+
+ Обновлены данные для таблиц базы данных
+ Datenbanktabellen aktualisiert
+
+
+ Обновлена документация API
+ API-Dokumentation aktualisiert
+
+
+ Минимальные требования к серверу поднял до минимально требуемой версии от DLE-News -> 7.4, возможно не будет работать на версиях ниже 15.х
+ Die Serveranforderungen wurden auf die von DLE-News angehobene Mindestversion angehoben → 7.4. Möglicherweise funktioniert es nicht auf Versionen unter 15.x.
+
+
+ Безопасный вывод данных (IP, пароли и хэш суммы)
+ Sichere Datenausgabe (IP, Passwörter und Hash-Summen)
+
+
+ Добавлена функция вывода только принадлежащих API-ключу записей
+ Funktion hinzugefügt, um nur dem API-Schlüssel gehörende Einträge anzuzeigen
+
+
+ Добавлена функция массовых действий (удаление, (де-)активация, снятие / добавление ограничение, снятие / удаление администраторских ограничений)
+ Funktion für Massenaktionen hinzugefügt (Löschen, (De-)Aktivierung, Einschränkungen aufheben/hinzufügen, Admin-Einschränkungen aufheben/löschen)
+
+
+ Для удаления новостей была использована функция движка
+ Zum Löschen von Nachrichten wurde die Engine-Funktion verwendet
+
+
+ Для удаления комментариев была использована функция движка
+ Zum Löschen von Kommentaren wurde die Engine-Funktion verwendet
+
+
+ Изменил нумерование версий
+ Versionsnummern geändert
+
+
+ composer настроил под версию PHP 5.6
+ Composer wurde für PHP 5.6 konfiguriert.
+
+
+ Были исправлены несколько багов, спасибо @jyarali
+ Mehrere Fehler wurden behoben, danke an @jyarali
+
+
+ Исправлена проверка ключей в базе данных
+ Überprüfung der Schlüssel in der Datenbank korrigiert
+
+
+ Добавлена проверка по длине значения для типа "string"
+ Überprüfung der Länge für den Typ „string“ hinzugefügt
+
+
+ Массивы с ячейками таблиц были обновлены до значений DLE 14.1 (на ранние версии DLE это никак не влияет)
+ Tabellen-Arrays wurden auf Werte von DLE 14.1 aktualisiert (für frühere DLE-Versionen hat dies keine Auswirkungen).
+
+
+ Для пользователей был использован штатный API класс самой DLE, чтобы авторизовать и регистрировать пользователей
+ Für Benutzer wurde die native DLE-API-Klasse verwendet, um Benutzer zu autorisieren und zu registrieren
+
+
+ Для авторизации пользователей нужно при помощи метода POST указать следующий путь URL: api/v1/users/auth. В заголовке обязательно должны быть значения имя пользователя и его пароль в незакодированном виде.
+ Um Benutzer zu autorisieren, müssen Sie mit der POST-Methode die folgende URL aufrufen: api/v1/users/auth. Im Header müssen der Benutzername und das Passwort im Klartext angegeben werden.
+
+
+ Для регистрации пользователя нужно при помощи метода POST указать следующий путь URL: api/v1/users/register. В заголовке нужно указать имя пользователя, пароль, электронную почту и ID группы пользователей.
+ Um einen Benutzer zu registrieren, müssen Sie mit der POST-Methode die folgende URL aufrufen: api/v1/users/register. Im Header müssen der Benutzername, das Passwort, die E-Mail-Adresse und die Gruppen-ID angegeben werden.
+
+
+ При регистрации и авторизации возвращается массив данных об этом пользователе
+ Bei der Registrierung und Autorisierung wird ein Datenarray über diesen Benutzer zurückgegeben
+
+
+ Первая стандартная версия
+ Erste Standardversion
+
+
+ гость
+ Gast
+
+
+ DLE API
+ DLE API
+
+
+ Генерация ключа запрещена
+ Schlüsselgenerierung ist deaktiviert
+
+
+ У вас уже есть активный API-ключ
+ Sie haben bereits einen aktiven API-Schlüssel
+
+
+ Не задан уровень доступа по умолчанию
+ Standard-Berechtigungsstufe nicht festgelegt
+
+
+ Заявка уже ожидает рассмотрения
+ Anfrage wird bereits bearbeitet
+
+
+ Заявка отправлена на модерацию
+ Anfrage zur Moderation gesendet
+
+
+ Ошибка
+ Fehler
+
+
+ Некорректный идентификатор
+ Ungültige ID
+
+
+ Заявка не найдена
+ Anfrage nicht gefunden
+
+
+ Заявка уже обработана
+ Anfrage bereits bearbeitet
+
+
+ Одобрено
+ Genehmigt
+
+
+ Отклонено
+ Abgelehnt
+
+
+ Ключ создан
+ Schlüssel erstellt
+
+
+ Redirect URI должен быть ссылкой http(s)
+ Redirect-URI muss ein http(s)-Link sein
+
+
+ Выберите хотя бы один grant_type
+ Wählen Sie mindestens einen grant_type aus
+
+
+ Укажите действующий API-ключ
+ Geben Sie einen gültigen API-Schlüssel an
+
+
+ Клиент не найден
+ Client nicht gefunden
+
+
+ Клиент сохранён
+ Client gespeichert
+
+
+ Синхронизация сохранена
+ Synchronisierung gespeichert
+
+
+ Ключ не найден
+ Schlüssel nicht gefunden
+
+
+ Схема настроек недоступна
+ Einstellungsschema nicht verfügbar
+
+
+ Файл конфигурации недоступен для записи
+ Konfigurationsdatei ist nicht beschreibbar
+
+
+ Каталог конфигурации недоступен для записи
+ Konfigurationsverzeichnis ist nicht beschreibbar
+
+
+ Все поля недействительны
+ Alle Felder sind ungültig
+
+
+ Внимание
+ Achtung
+
+
+ Частичное сохранение с ошибками
+ Teilweises Speichern mit Fehlern
+
+
+ Сохранено
+ Gespeichert
+
+
+ Ключ сохранён
+ Schlüssel gespeichert
+
+
+ Ключ удалён
+ Schlüssel gelöscht
+
+
+ client_secret пересоздан
+ client_secret neu erstellt
+
+
+ Ключ включён
+ Schlüssel aktiviert
+
+
+ Ключ отключён
+ Schlüssel deaktiviert
+
+
+ Удалено
+ Entfernt
+
+
+ Требуется авторизация
+ Authentifizierung erforderlich
+
+
+ Недостаточно прав
+ Nicht genügend Berechtigungen
+
+
+ Нельзя запрашивать ключ за другого пользователя
+ Sie können keinen Schlüssel für einen anderen Benutzer anfordern
+
+
+ Не удалось
+ Fehlgeschlagen
+
+
+ Недостаточно прав для модерации
+ Nicht genügend Berechtigungen für die Moderation
+
+
+ Заявка не найдена или уже обработана
+ Anfrage nicht gefunden oder bereits bearbeitet
+
+
+ Уровень не найден
+ Stufe nicht gefunden
+
+
+ Укажите название уровня
+ Geben Sie den Namen der Stufe an
+
+
+ OAuth-клиент создан
+ OAuth-Client erstellt
+
+
+ Клиент удалён
+ Client gelöscht
+
+
+ История изменений
+ Änderungshistorie
+
+
+
+
diff --git a/upload/devcraft/locales/en_US/dleapi.xliff b/upload/devcraft/locales/en_US/dleapi.xliff
new file mode 100644
index 00000000..d35e3fcc
--- /dev/null
+++ b/upload/devcraft/locales/en_US/dleapi.xliff
@@ -0,0 +1,1187 @@
+
+
+
+
+
+ API-ключ
+ API key
+
+
+ Новый
+ New
+
+
+ Загрузка…
+ Loading…
+
+
+ Ключ
+ Key
+
+
+ Копировать
+ Copy
+
+
+ Когда
+ When
+
+
+ Истекает
+ Expires
+
+
+ Уровень
+ Access level
+
+
+ Запросить ключ
+ Request key
+
+
+ Одобрить
+ Approve
+
+
+ Отказать
+ Reject
+
+
+ Метод не разрешён
+ Method not allowed
+
+
+ Допустимо
+ Allowed
+
+
+ Маршрут не найден
+ Route not found
+
+
+ Неверный или неактивный API-ключ
+ Invalid or inactive API key
+
+
+ Неверный логин или пароль
+ Invalid login or password
+
+
+ Нет API-ключа пользователя и гостевого ключа
+ No user API key or guest key
+
+
+ Неверный client_id или client_secret
+ Invalid client_id or client_secret
+
+
+ Клиент не разрешает grant_type=client_credentials
+ Client does not allow grant_type=client_credentials
+
+
+ API-ключ клиента неактивен
+ Client API key is inactive
+
+
+ Нужны оба: client_id и client_secret
+ Both client_id and client_secret are required
+
+
+ Клиент не разрешает grant_type=password
+ Client does not allow grant_type=password
+
+
+ Неверный client
+ Invalid client
+
+
+ Клиент не разрешает grant_type=authorization_code
+ Client does not allow grant_type=authorization_code
+
+
+ Код недействителен
+ Code is invalid
+
+
+ redirect_uri не совпадает
+ redirect_uri does not match
+
+
+ Ошибка проверки PKCE
+ PKCE verification error
+
+
+ API-ключ неактивен
+ API key is inactive
+
+
+ Refresh token недействителен
+ Refresh token is invalid
+
+
+ Связанный access token не найден
+ Associated access token not found
+
+
+ Клиент или ключ неактивен
+ Client or key is inactive
+
+
+ Клиент не разрешает grant_type=refresh_token
+ Client does not allow grant_type=refresh_token
+
+
+ Неизвестный или неактивный client_id
+ Unknown or inactive client_id
+
+
+ У клиента не задан redirect_uri
+ Client has no redirect_uri set
+
+
+ redirect_uri не совпадает с зарегистрированным у клиента
+ redirect_uri does not match the one registered for the client
+
+
+ Попытка взлома!
+ Hack attempt detected!
+
+
+ Неподдерживаемый credential_type
+ Unsupported credential_type
+
+
+ Укажите credential_type или grant_type
+ Specify credential_type or grant_type
+
+
+ Нужны client_id и redirect_uri
+ client_id and redirect_uri are required
+
+
+ Авторизация пройдена, но сброшена в демо-режиме
+ Authorization successful, but demo mode is enabled
+
+
+ Неизвестная таблица
+ Unknown table
+
+
+ Запись не найдена
+ Entry not found
+
+
+ Нужен fields{} или name+value
+ fields{} or name+value is required
+
+
+ Поле не найдено
+ Field not found
+
+
+ Нужен multipart field file
+ multipart field file is required
+
+
+ Новость не найдена
+ News not found
+
+
+ Метод требует значение
+ Method requires a value
+
+
+ Нельзя выполнить операцию: не задан первичный ключ.
+ Cannot perform operation: primary key is not specified.
+
+
+ Неизвестная колонка «{column}» для таблицы {table}
+ Unknown column «{column}» for table {table}
+
+
+ Нет права «{action}» на таблицу «{table}»
+ No «{action}» permission on table «{table}»
+
+
+ Неизвестный метод
+ Unknown method
+
+
+ Безопасность
+ Security
+
+
+ Алгоритм HMAC
+ HMAC algorithm
+
+
+ Алгоритм для генерации API-ключей.
+ Algorithm for generating API keys.
+
+
+ Секрет
+ Secret
+
+
+ Секретная строка для HMAC. Оставьте пустым для автогенерации при сохранении.
+ HMAC secret string. Leave empty to auto-generate on save.
+
+
+ Длина ключа
+ Key length
+
+
+ Длина генерируемого API-ключа.
+ Length of the generated API key.
+
+
+ Маскировать чувствительные поля
+ Mask sensitive fields
+
+
+ Задано DEMO_MODE в .env — маскирование принудительно включено.
+ DEMO_MODE is set in .env — masking is forcibly enabled.
+
+
+ Скрывать пароли, IP и хеши в ответах API (CRUD).
+ Hide passwords, IP addresses, and hashes in API responses (CRUD).
+
+
+ OAuth2
+ OAuth2
+
+
+ TTL access token (сек)
+ Access token TTL (sec)
+
+
+ Время жизни access token в секундах.
+ Lifetime of the access token in seconds.
+
+
+ Уровни доступа
+ Access levels
+
+
+ Уровень доступа по умолчанию
+ Default access level
+
+
+ Используется при самогенерации ключа и если группа DLE не привязана на странице синхронизации.
+ Used for self-generation of keys and if the DLE group is not linked on the synchronization page.
+
+
+ Профиль пользователя
+ User profile
+
+
+ Показывать блок API-ключа в профиле
+ Show API key block in profile
+
+
+ Если выключено — блок виден только при включённой самогенерации / заявке. Ключ берётся из таблицы api_keys.
+ If disabled, the block is only visible when self-generation/application is enabled. The key is taken from the api_keys table.
+
+
+ Разрешить пользователям генерировать ключ
+ Allow users to generate keys
+
+
+ Если выключено — кнопка запроса не показывается; ключ выдаёт администратор.
+ If disabled, the request button is not shown; the key is issued by the administrator.
+
+
+ Уведомления о заявках
+ Key request notifications
+
+
+ Уведомлять по почте при заявке на ключ
+ Notify by email when a key is requested
+
+
+ ЛС на сайте при заявке на ключ
+ PM on key request
+
+
+ Группы DLE
+ DLE groups
+
+
+ Получатели уведомлений о заявках.
+ Recipients of key request notifications.
+
+
+ Пользователи
+ Users
+
+
+ Дополнительные получатели уведомлений о заявках (по user_id).
+ Additional recipients of key request notifications (by user_id).
+
+
+ PM: тема заявки
+ PM: Application subject
+
+
+ Тема личного сообщения для администраторов о новой заявке на API-ключ.
+ Subject of the personal message to administrators about a new API key request.
+
+
+ Плейсхолдеры заявки (PM)
+ Application placeholders (PM)
+
+
+ Заявка на API-ключ
+ API key request
+
+
+ PM: текст заявки
+ PM: Application text
+
+
+ Текст личного сообщения администраторам о новой заявке на API-ключ.
+ Text of the personal message to administrators about a new API key request.
+
+
+ Уведомления о решении
+ Decision notifications
+
+
+ Уведомлять по почте об одобрении / отказе
+ Notify by email on approval/rejection
+
+
+ ЛС об одобрении / отказе
+ PM on approval/rejection
+
+
+ PM: тема одобрения
+ PM: Approval subject
+
+
+ Тема личного сообщения пользователю при одобрении API-ключа.
+ Subject of the personal message to the user upon API key approval.
+
+
+ Плейсхолдеры одобрения (PM)
+ Approval placeholders (PM)
+
+
+ API-ключ одобрен
+ API key approved
+
+
+ PM: текст одобрения
+ PM: Approval text
+
+
+ Текст личного сообщения пользователю при одобрении API-ключа.
+ Text of the personal message to the user upon API key approval.
+
+
+ PM: тема отказа
+ PM: Rejection subject
+
+
+ Тема личного сообщения пользователю при отказе в API-ключе.
+ Subject of the personal message to the user upon API key rejection.
+
+
+ Плейсхолдеры отказа (PM)
+ Rejection placeholders (PM)
+
+
+ API-ключ отклонён
+ API key rejected
+
+
+ PM: текст отказа
+ PM: Rejection text
+
+
+ Текст личного сообщения пользователю при отказе в API-ключе.
+ Text of the personal message to the user upon API key rejection.
+
+
+ Ваша заявка на API-ключ отклонена.
+ Your API key request has been rejected.
+
+
+ Email-шаблоны
+ Email templates
+
+
+ Email: тема заявки
+ Email: Application subject
+
+
+ Тема письма администраторам о новой заявке на API-ключ.
+ Subject of the email to administrators about a new API key request.
+
+
+ Плейсхолдеры заявки (email)
+ Application placeholders (email)
+
+
+ Email: тело заявки
+ Email: Application body
+
+
+ HTML или текст письма администраторам о новой заявке на API-ключ.
+ HTML or text of the email to administrators about a new API key request.
+
+
+ Email: тема одобрения
+ Email: Approval subject
+
+
+ Тема письма пользователю при одобрении API-ключа.
+ Subject of the email to the user upon API key approval.
+
+
+ Плейсхолдеры решения (email)
+ Decision placeholders (email)
+
+
+ Email: тема отказа
+ Email: Rejection subject
+
+
+ Тема письма пользователю при отказе в API-ключе.
+ Subject of the email to the user upon API key rejection.
+
+
+ Email: тело решения
+ Email: Decision body
+
+
+ HTML или текст письма пользователю при одобрении либо отказе в API-ключе.
+ HTML or text of the email to the user upon approval or rejection of an API key request.
+
+
+ Неофициальное REST/SDK API для DLE: ключи, OAuth2 Bearer, /api/v2
+ Unofficial REST/SDK API for DLE: keys, OAuth2 Bearer, /api/v2
+
+
+ Главная
+ Home
+
+
+ API-ключи
+ API keys
+
+
+ Синхронизация с группами
+ Synchronization with groups
+
+
+ Заявки на ключ
+ Key requests
+
+
+ OAuth-клиенты
+ OAuth clients
+
+
+ Настройки
+ Settings
+
+
+ Журнал изменений
+ Changelog
+
+
+ Список API-ключей
+ List of API keys
+
+
+ Активен
+ Active
+
+
+ Пользователь
+ User
+
+
+ Действия
+ Actions
+
+
+ Да
+ Yes
+
+
+ Права
+ Permissions
+
+
+ Отключить
+ Disable
+
+
+ Удалить
+ Delete
+
+
+ Ключей пока нет
+ No keys yet
+
+
+ Создать ключ
+ Create key
+
+
+ Показать форму
+ Show form
+
+
+ Скрыть форму
+ Hide form
+
+
+ Уровень доступа
+ Access level
+
+
+ — вручную / без уровня —
+ — manual / no level —
+
+
+ При выборе уровня флаги own_only/cheater берутся из уровня. Без уровня — матрица scopes ниже.
+ When a level is selected, own_only/cheater flags are taken from the level. Without a level, the scopes matrix below is used.
+
+
+ Создать
+ Create
+
+
+ Сохранить
+ Save
+
+
+ Отмена
+ Cancel
+
+
+ Права доступа к таблицам (если уровень не задан или для legacy-ключей)
+ Table permissions (if no level is set or for legacy keys)
+
+
+ Чтение — просмотр; Запись — создание; Правка — изменение; Удаление — удаление. При уровне с cheater матрица игнорируется.
+ Read — view; Write — create; Edit — modify; Delete — delete. If the level has cheater, the matrix is ignored.
+
+
+ Таблица
+ Table
+
+
+ Чтение
+ Read
+
+
+ Включить все
+ Enable all
+
+
+ Запись
+ Write
+
+
+ Правка
+ Edit
+
+
+ Удаление
+ Delete
+
+
+ Список таблиц SchemaRegistry пуст
+ SchemaRegistry tables list is empty
+
+
+ Если группа не привязана — при самогенерации используется уровень по умолчанию из настроек; на ключах уровень задаётся вручную.
+ If the group is not linked, the default level from settings is used for self-generation; for keys, the level is set manually.
+
+
+ Группа DLE → уровень доступа
+ DLE group → access level
+
+
+ Группа
+ Group
+
+
+ — не задано —
+ — not set —
+
+
+ Группы не найдены
+ Groups not found
+
+
+ Эндпоинты Authorization Server
+ Authorization Server endpoints
+
+
+ Скопируйте URL для интеграции внешних OAuth-клиентов (DLE = IdP).
+ Copy the URL for integrating external OAuth clients (DLE = IdP).
+
+
+ Сохраните client_secret сейчас
+ Save client_secret now
+
+
+ он показывается один раз и больше не будет доступен.
+ it will be shown only once and will no longer be available.
+
+
+ Скрыть
+ Hide
+
+
+ Имя
+ Name
+
+
+ Изменить
+ Change
+
+
+ Клиентов пока нет
+ No clients yet
+
+
+ Создать клиент
+ Create client
+
+
+ OAuth-клиент выдаёт access_token для вызовов /api/v2. Права запросов берёт из выбранного API-ключа (scopes). После создания сохраните client_id и client_secret — секрет больше не показывается.
+ OAuth client issues access_token for /api/v2 calls. Request permissions are taken from the selected API key (scopes). After creation, save client_id and client_secret — the secret will no longer be shown.
+
+
+ Редактирование: название, API-ключ, Redirect URI, grant types и активность. client_id не меняется; секрет — только через «Пересоздать client_secret».
+ Editing: name, API key, Redirect URI, grant types, and activity. client_id cannot be changed; secret can only be regenerated via "Regenerate client_secret".
+
+
+ Идентификатор клиента не меняется. Секрет можно перевыпустить кнопкой ниже — старый сразу перестанет работать.
+ Client ID cannot be changed. The secret can be regenerated using the button below — the old one will stop working immediately.
+
+
+ Пересоздать client_secret
+ Regenerate client_secret
+
+
+ Новый секрет покажется один раз над таблицей. Обновите его во всех приложениях, которые используют этого клиента.
+ The new secret will appear once above the table. Update it in all applications that use this client.
+
+
+ Название
+ Name
+
+
+ Напр. Mobile app, CI, Postman
+ E.g. Mobile app, CI, Postman
+
+
+ Только для списка в админке. На выдачу токенов не влияет. Если пусто — подставится client_id.
+ Only for the admin list. Does not affect token issuance. If empty, client_id will be used.
+
+
+ — выберите —
+ — select —
+
+
+ Обязательно. Определяет, к каким таблицам и с какими правами (read/write/delete) сможет обращаться Bearer-токен этого клиента. Ключ создаётся на вкладке «Ключи».
+ Required. Defines which tables and with what permissions (read/write/delete) the Bearer token of this client can access. The key is created in the "Keys" tab.
+
+
+ Redirect URI
+ Redirect URI
+
+
+ Ссылка http(s). Нужна для grant authorization_code. Должна точно совпадать с redirect_uri при /oauth/authorize и обмене кода. Для password / client_credentials можно оставить пустым.
+ HTTP(S) link. Required for grant authorization_code. Must exactly match the redirect_uri during /oauth/authorize and token exchange. Can be left empty for password / client_credentials.
+
+
+ Grant types
+ Grant types
+
+
+ сервер-сервер без пользователя
+ server-to-server without a user
+
+
+ логин/пароль пользователя DLE
+ DLE user login/password
+
+
+ браузерный OAuth-код (нужен Redirect URI)
+ browser OAuth code (requires Redirect URI)
+
+
+ обновление access_token
+ access_token refresh
+
+
+ Какие способы получения токена разрешены этому клиенту. Хотя бы один обязателен.
+ Which token acquisition methods are allowed for this client. At least one is required.
+
+
+ Неактивный клиент не сможет получать новые токены.
+ An inactive client cannot obtain new tokens.
+
+
+ Заявки на API-ключ
+ API key requests
+
+
+ Статус
+ Status
+
+
+ Дата
+ Date
+
+
+ Отклонить
+ Reject
+
+
+ Заявок нет
+ No requests
+
+
+ Сорт.
+ Sort.
+
+
+ Премод.
+ Pre-moderation.
+
+
+ Уровней пока нет
+ No levels yet
+
+
+ Создать уровень
+ Create level
+
+
+ Сортировка
+ Sorting
+
+
+ Премодерация заявок на ключ
+ Pre-moderation of key requests
+
+
+ Только свои записи
+ Only own records
+
+
+ Полный доступ (cheater)
+ Full access (cheater)
+
+
+ Маскировать IP
+ Mask IP addresses
+
+
+ Маскировать пароли/хеши
+ Mask passwords/hashes
+
+
+ Маскировать лишние ПДн
+ Mask extra personal data
+
+
+ Scopes уровня (read / write / edit / delete)
+ Level scopes (read / write / edit / delete)
+
+
+ API v2 (/api/v2) на CycleORM из DevCraft Admin.
+ API v2 (/api/v2) on CycleORM from DevCraft Admin.
+
+
+ OAuth2 Authorization Server: authorize, token, revoke; доступ только через Bearer.
+ OAuth2 Authorization Server: authorize, token, revoke; access only via Bearer.
+
+
+ credential_type api_key|auth|oauth_client; ресурсы только AuthToken; GET /me и /oauth/userinfo.
+ credential_type api_key|auth|oauth_client; resources only AuthToken; GET /me and /oauth/userinfo.
+
+
+ OAuth AS discovery, authorize по сессии DLE, копируемые endpoint URL.
+ OAuth AS discovery, authorize via DLE session, copyable endpoint URLs.
+
+
+ Уровни доступа, синхронизация с группами, заявки на ключ, профиль (public AJAX).
+ Access levels, synchronization with groups, key requests, profile (public AJAX).
+
+
+ DEMO_MODE / DLEAPI_SECURE из .env; email-шаблоны через install.xml.
+ DEMO_MODE / DLEAPI_SECURE from .env; email templates via install.xml.
+
+
+ Fluent-билдеры prepareNewPost / prepareNewUser / preparePlugin / prepareNewUsergroup (in-process и HTTP SDK).
+ Fluent builders prepareNewPost / prepareNewUser / preparePlugin / prepareNewUsergroup (in-process and HTTP SDK).
+
+
+ Каталог Schema таблиц DLE в api/includes/Schemas.
+ DLE table schemas directory in api/includes/Schemas.
+
+
+ OpenAPI (swagger-php) и документация OAD в mhdocs.
+ OpenAPI (swagger-php) and OAD documentation in mhdocs.
+
+
+ Загрузка файлов через штатный пайплайн DLE.
+ File uploads via DLE’s standard pipeline.
+
+
+ Фильтр постов по одной категории при нескольких (FIND_IN_SET / issue #12).
+ Filtering posts by one category when multiple are selected (FIND_IN_SET / issue #12).
+
+
+ Админ-модуль DleApi для DevCraft Admin ≥ 200.4.0 (только конфигурация).
+ Admin module DleApi for DevCraft Admin ≥ 200.4.0 (configuration only).
+
+
+ HTTP /table/{name}: интроспекция таблиц вне SchemaRegistry + TableScopeGuard.
+ HTTP /table/{name}: table introspection outside SchemaRegistry + TableScopeGuard.
+
+
+ SDK facades: DcApi::news() / user() / comment() / conversation() / plugin() / file() / staticPage() / schema().
+ SDK facades: DcApi::news() / user() / comment() / conversation() / plugin() / file() / staticPage() / schema().
+
+
+ Fluent CRUD на AbstractTableSchema (with / create / save / delete / filter / fromArray).
+ Fluent CRUD on AbstractTableSchema (with / create / save / delete / filter / fromArray).
+
+
+ GET-кэш TableQuery через CacheControl (dle_api_query, TTL).
+ GET cache for TableQuery via CacheControl (dle_api_query, TTL).
+
+
+ Админка: multi получатели уведомлений, WYSIWYG для PM; panel-title через caption.
+ Admin: multi-recipients for notifications, WYSIWYG for PM; panel-title via caption.
+
+
+ Админка: FormPanel ключей/уровней/OAuth свёрнут на узком экране (Metro d-none / d-block-md).
+ Admin: Key/level/OAuth forms collapsed on narrow screens (Metro d-none / d-block-md).
+
+
+ Совместимость с DLE 20.0 (xfields.json, dual category, conversations).
+ Compatibility with DLE 20.0 (xfields.json, dual category, conversations).
+
+
+ Таблицы api_keys / api_scope / OAuth создаются Cycle-миграциями DevCraft (Models + AbstractEntity), а не DDL в install.xml.
+ Tables api_keys / api_scope / OAuth are created by Cycle migrations from DevCraft (Models + AbstractEntity), not by DDL in install.xml.
+
+
+ Scopes: колонка edit; own_only/cheater на уровне; trailing slash на всех маршрутах v2.
+ Scopes: edit column; own_only/cheater at the level; trailing slash on all v2 routes.
+
+
+ OpenAPI: описание ApiError без PHPDoc {@see}; Schema без пометки install.php.
+ OpenAPI: ApiError description without PHPDoc {@see}; Schema without install.php annotation.
+
+
+ API v1 (Slim + Illuminate Capsule, X-Api-Key) полностью удалён.
+ API v1 (Slim + Illuminate Capsule, X-Api-Key) is completely removed.
+
+
+ Приём сырого API-ключа как Bearer на ресурсах /table.
+ Accept raw API key as Bearer on /table resources.
+
+
+ Оптимизация кода под PHP 8.2
+ Code optimized for PHP 8.2
+
+
+ Минимально поддерживаемая версия DLE - 16.0
+ Minimum supported DLE version is 16.0
+
+
+ Изменён список алгоритмов на hash_hmac_algos
+ Algorithm list changed to hash_hmac_algos
+
+
+ Убрана процедура проверки атрибута в таблице
+ Removed table attribute validation procedure
+
+
+ Оптимизирован код
+ Code optimized
+
+
+ Генерация ключа привязана к времени
+ Key generation tied to time
+
+
+ Добавлена возможность добавлять ключи независимо от пользователя => для этого нужно выбрать в меню пользователя "Гость / Неавторизованный"
+ Added ability to add keys independently of the user. To do this, select "Guest / Unauthorized" in the user menu.
+
+
+ Добавлена возможность генерировать свои рутеры на основе базы данных => читайте документацию
+ Added ability to generate custom routers based on the database. Read the documentation.
+
+
+ Обновлены данные для таблиц базы данных
+ Database table data updated
+
+
+ Обновлена документация API
+ API documentation updated
+
+
+ Минимальные требования к серверу поднял до минимально требуемой версии от DLE-News -> 7.4, возможно не будет работать на версиях ниже 15.х
+ Minimum server requirements raised to DLE-News minimum required version → 7.4. May not work on versions below 15.x.
+
+
+ Безопасный вывод данных (IP, пароли и хэш суммы)
+ Secure data output (IP, passwords, and hashes)
+
+
+ Добавлена функция вывода только принадлежащих API-ключу записей
+ Added function to output only records belonging to the API key
+
+
+ Добавлена функция массовых действий (удаление, (де-)активация, снятие / добавление ограничение, снятие / удаление администраторских ограничений)
+ Added bulk actions (delete, (de-)activate, remove/add restrictions, remove/delete admin restrictions)
+
+
+ Для удаления новостей была использована функция движка
+ Engine function was used for news deletion
+
+
+ Для удаления комментариев была использована функция движка
+ Engine function was used for comment deletion
+
+
+ Изменил нумерование версий
+ Changed version numbering
+
+
+ composer настроил под версию PHP 5.6
+ Composer configured for PHP 5.6
+
+
+ Были исправлены несколько багов, спасибо @jyarali
+ Several bugs were fixed, thanks to @jyarali
+
+
+ Исправлена проверка ключей в базе данных
+ Fixed key validation in the database
+
+
+ Добавлена проверка по длине значения для типа "string"
+ Added length check for string type values
+
+
+ Массивы с ячейками таблиц были обновлены до значений DLE 14.1 (на ранние версии DLE это никак не влияет)
+ Table cell arrays updated to DLE 14.1 values (does not affect earlier DLE versions).
+
+
+ Для пользователей был использован штатный API класс самой DLE, чтобы авторизовать и регистрировать пользователей
+ Standard DLE API class was used for users to authorize and register users
+
+
+ Для авторизации пользователей нужно при помощи метода POST указать следующий путь URL: api/v1/users/auth. В заголовке обязательно должны быть значения имя пользователя и его пароль в незакодированном виде.
+ To authorize users, use POST method to the following URL: api/v1/users/auth. The header must contain the username and password in plain text.
+
+
+ Для регистрации пользователя нужно при помощи метода POST указать следующий путь URL: api/v1/users/register. В заголовке нужно указать имя пользователя, пароль, электронную почту и ID группы пользователей.
+ To register a user, use POST method to the following URL: api/v1/users/register. The header must contain username, password, email, and user group ID.
+
+
+ При регистрации и авторизации возвращается массив данных об этом пользователе
+ Authorization and registration return an array of user data
+
+
+ Первая стандартная версия
+ First standard version
+
+
+ гость
+ guest
+
+
+ DLE API
+ DLE API
+
+
+ Генерация ключа запрещена
+ Key generation disabled
+
+
+ У вас уже есть активный API-ключ
+ You already have an active API key
+
+
+ Не задан уровень доступа по умолчанию
+ Default access level not set
+
+
+ Заявка уже ожидает рассмотрения
+ Request already pending review
+
+
+ Заявка отправлена на модерацию
+ Request sent for moderation
+
+
+ Ошибка
+ Error
+
+
+ Некорректный идентификатор
+ Invalid identifier
+
+
+ Заявка не найдена
+ Request not found
+
+
+ Заявка уже обработана
+ Request already processed
+
+
+ Одобрено
+ Approved
+
+
+ Отклонено
+ Rejected
+
+
+ Ключ создан
+ Key created
+
+
+ Redirect URI должен быть ссылкой http(s)
+ Redirect URI must be an http(s) link
+
+
+ Выберите хотя бы один grant_type
+ Select at least one grant_type
+
+
+ Укажите действующий API-ключ
+ Specify a valid API key
+
+
+ Клиент не найден
+ Client not found
+
+
+ Клиент сохранён
+ Client saved
+
+
+ Синхронизация сохранена
+ Synchronization saved
+
+
+ Ключ не найден
+ Key not found
+
+
+ Схема настроек недоступна
+ Settings schema unavailable
+
+
+ Файл конфигурации недоступен для записи
+ Configuration file is not writable
+
+
+ Каталог конфигурации недоступен для записи
+ Configuration directory is not writable
+
+
+ Все поля недействительны
+ All fields are invalid
+
+
+ Внимание
+ Warning
+
+
+ Частичное сохранение с ошибками
+ Partial save completed with field errors
+
+
+ Сохранено
+ Saved
+
+
+ Ключ сохранён
+ Key saved
+
+
+ Ключ удалён
+ Key removed
+
+
+ client_secret пересоздан
+ client_secret regenerated
+
+
+ Ключ включён
+ Key enabled
+
+
+ Ключ отключён
+ Key disabled
+
+
+ Удалено
+ Removed
+
+
+ Требуется авторизация
+ Authorization required
+
+
+ Недостаточно прав
+ Insufficient permissions
+
+
+ Нельзя запрашивать ключ за другого пользователя
+ Cannot request a key for another user
+
+
+ Не удалось
+ Failed
+
+
+ Недостаточно прав для модерации
+ Insufficient moderation permissions
+
+
+ Заявка не найдена или уже обработана
+ Request not found or already processed
+
+
+ Уровень не найден
+ Level not found
+
+
+ Укажите название уровня
+ Specify level name
+
+
+ OAuth-клиент создан
+ OAuth client created
+
+
+ Клиент удалён
+ Client removed
+
+
+ История изменений
+ History of changes
+
+
+
+
diff --git a/upload/devcraft/locales/uk_UA/dleapi.xliff b/upload/devcraft/locales/uk_UA/dleapi.xliff
new file mode 100644
index 00000000..4a6d2ce6
--- /dev/null
+++ b/upload/devcraft/locales/uk_UA/dleapi.xliff
@@ -0,0 +1,1187 @@
+
+
+
+
+
+ API-ключ
+ API-ключ
+
+
+ Новый
+ Новий
+
+
+ Загрузка…
+ Завантаження…
+
+
+ Ключ
+ Ключ
+
+
+ Копировать
+ Копіювати
+
+
+ Когда
+ Коли
+
+
+ Истекает
+ Закінчується
+
+
+ Уровень
+ Рівень доступу
+
+
+ Запросить ключ
+ Запитати ключ
+
+
+ Одобрить
+ Схвалити
+
+
+ Отказать
+ Відхилити
+
+
+ Метод не разрешён
+ Метод не дозволено
+
+
+ Допустимо
+ Допустимо
+
+
+ Маршрут не найден
+ Маршрут не знайдено
+
+
+ Неверный или неактивный API-ключ
+ Невірний або неактивний API-ключ
+
+
+ Неверный логин или пароль
+ Невірний логін або пароль
+
+
+ Нет API-ключа пользователя и гостевого ключа
+ Немає API-ключа користувача та гостьового ключа
+
+
+ Неверный client_id или client_secret
+ Невірний client_id або client_secret
+
+
+ Клиент не разрешает grant_type=client_credentials
+ Клієнт не дозволяє grant_type=client_credentials
+
+
+ API-ключ клиента неактивен
+ API-ключ клієнта неактивний
+
+
+ Нужны оба: client_id и client_secret
+ Потрібні обидва: client_id та client_secret
+
+
+ Клиент не разрешает grant_type=password
+ Клієнт не дозволяє grant_type=password
+
+
+ Неверный client
+ Невірний client
+
+
+ Клиент не разрешает grant_type=authorization_code
+ Клієнт не дозволяє grant_type=authorization_code
+
+
+ Код недействителен
+ Код недійсний
+
+
+ redirect_uri не совпадает
+ redirect_uri не збігається
+
+
+ Ошибка проверки PKCE
+ Помилка перевірки PKCE
+
+
+ API-ключ неактивен
+ API-ключ неактивний
+
+
+ Refresh token недействителен
+ Refresh token недійсний
+
+
+ Связанный access token не найден
+ Пов’язаний access token не знайдено
+
+
+ Клиент или ключ неактивен
+ Клієнт або ключ неактивний
+
+
+ Клиент не разрешает grant_type=refresh_token
+ Клієнт не дозволяє grant_type=refresh_token
+
+
+ Неизвестный или неактивный client_id
+ Невідомий або неактивний client_id
+
+
+ У клиента не задан redirect_uri
+ У клієнта не задано redirect_uri
+
+
+ redirect_uri не совпадает с зарегистрированным у клиента
+ redirect_uri не збігається із зареєстрованим у клієнта
+
+
+ Попытка взлома!
+ Спроба зламу!
+
+
+ Неподдерживаемый credential_type
+ Непідтримуваний credential_type
+
+
+ Укажите credential_type или grant_type
+ Вкажіть credential_type або grant_type
+
+
+ Нужны client_id и redirect_uri
+ Потрібні client_id та redirect_uri
+
+
+ Авторизация пройдена, но сброшена в демо-режиме
+ Авторизацію пройдено, але скинуто в демо-режимі
+
+
+ Неизвестная таблица
+ Невідома таблиця
+
+
+ Запись не найдена
+ Запис не знайдено
+
+
+ Нужен fields{} или name+value
+ Потрібні fields{} або name+value
+
+
+ Поле не найдено
+ Поле не знайдено
+
+
+ Нужен multipart field file
+ Потрібен multipart field file
+
+
+ Новость не найдена
+ Новину не знайдено
+
+
+ Метод требует значение
+ Метод потребує значення
+
+
+ Нельзя выполнить операцию: не задан первичный ключ.
+ Неможливо виконати операцію: не задано первинний ключ.
+
+
+ Неизвестная колонка «{column}» для таблицы {table}
+ Невідома колонка «{column}» для таблиці {table}
+
+
+ Нет права «{action}» на таблицу «{table}»
+ Немає права «{action}» на таблицю «{table}»
+
+
+ Неизвестный метод
+ Невідомий метод
+
+
+ Безопасность
+ Безпека
+
+
+ Алгоритм HMAC
+ Алгоритм HMAC
+
+
+ Алгоритм для генерации API-ключей.
+ Алгоритм для генерації API-ключів.
+
+
+ Секрет
+ Секрет
+
+
+ Секретная строка для HMAC. Оставьте пустым для автогенерации при сохранении.
+ Секретний рядок для HMAC. Залиште порожнім для автогенерації під час збереження.
+
+
+ Длина ключа
+ Довжина ключа
+
+
+ Длина генерируемого API-ключа.
+ Довжина генерованого API-ключа.
+
+
+ Маскировать чувствительные поля
+ Маскувати чутливі поля
+
+
+ Задано DEMO_MODE в .env — маскирование принудительно включено.
+ Задано DEMO_MODE у .env — маскування примусово увімкнено.
+
+
+ Скрывать пароли, IP и хеши в ответах API (CRUD).
+ Приховувати паролі, IP та хеші у відповідях API (CRUD).
+
+
+ OAuth2
+ OAuth2
+
+
+ TTL access token (сек)
+ TTL access token (сек)
+
+
+ Время жизни access token в секундах.
+ Час життя access token у секундах.
+
+
+ Уровни доступа
+ Рівні доступу
+
+
+ Уровень доступа по умолчанию
+ Рівень доступу за замовчуванням
+
+
+ Используется при самогенерации ключа и если группа DLE не привязана на странице синхронизации.
+ Використовується під час самогенерації ключа та якщо група DLE не прив’язана на сторінці синхронізації.
+
+
+ Профиль пользователя
+ Профіль користувача
+
+
+ Показывать блок API-ключа в профиле
+ Показувати блок API-ключа у профілі
+
+
+ Если выключено — блок виден только при включённой самогенерации / заявке. Ключ берётся из таблицы api_keys.
+ Якщо вимкнено — блок видно лише за увімкненої самогенерації / заявки. Ключ береться з таблиці api_keys.
+
+
+ Разрешить пользователям генерировать ключ
+ Дозволити користувачам генерувати ключ
+
+
+ Если выключено — кнопка запроса не показывается; ключ выдаёт администратор.
+ Якщо вимкнено — кнопка запиту не показується; ключ видає адміністратор.
+
+
+ Уведомления о заявках
+ Сповіщення про заявки
+
+
+ Уведомлять по почте при заявке на ключ
+ Сповіщати електронною поштою про заявку на ключ
+
+
+ ЛС на сайте при заявке на ключ
+ ЛС на сайті при заявці на ключ
+
+
+ Группы DLE
+ Групи DLE
+
+
+ Получатели уведомлений о заявках.
+ Отримувачі сповіщень про заявки.
+
+
+ Пользователи
+ Користувачі
+
+
+ Дополнительные получатели уведомлений о заявках (по user_id).
+ Додаткові отримувачі сповіщень про заявки (за user_id).
+
+
+ PM: тема заявки
+ ЛС: тема заявки
+
+
+ Тема личного сообщения для администраторов о новой заявке на API-ключ.
+ Тема особистого повідомлення для адміністраторів про нову заявку на API-ключ.
+
+
+ Плейсхолдеры заявки (PM)
+ Плейсхолдери заявки (ЛС)
+
+
+ Заявка на API-ключ
+ Заявка на API-ключ
+
+
+ PM: текст заявки
+ ЛС: текст заявки
+
+
+ Текст личного сообщения администраторам о новой заявке на API-ключ.
+ Текст особистого повідомлення адміністраторам про нову заявку на API-ключ.
+
+
+ Уведомления о решении
+ Сповіщення про рішення
+
+
+ Уведомлять по почте об одобрении / отказе
+ Сповіщати електронною поштою про схвалення / відхилення
+
+
+ ЛС об одобрении / отказе
+ ЛС про схвалення / відхилення
+
+
+ PM: тема одобрения
+ ЛС: тема схвалення
+
+
+ Тема личного сообщения пользователю при одобрении API-ключа.
+ Тема особистого повідомлення користувачу при схваленні API-ключа.
+
+
+ Плейсхолдеры одобрения (PM)
+ Плейсхолдери схвалення (ЛС)
+
+
+ API-ключ одобрен
+ API-ключ схвалено
+
+
+ PM: текст одобрения
+ ЛС: текст схвалення
+
+
+ Текст личного сообщения пользователю при одобрении API-ключа.
+ Текст особистого повідомлення користувачу при схваленні API-ключа.
+
+
+ PM: тема отказа
+ ЛС: тема відхилення
+
+
+ Тема личного сообщения пользователю при отказе в API-ключе.
+ Тема особистого повідомлення користувачу при відмові в API-ключі.
+
+
+ Плейсхолдеры отказа (PM)
+ Плейсхолдери відхилення (ЛС)
+
+
+ API-ключ отклонён
+ API-ключ відхилено
+
+
+ PM: текст отказа
+ ЛС: текст відхилення
+
+
+ Текст личного сообщения пользователю при отказе в API-ключе.
+ Текст особистого повідомлення користувачу при відмові в API-ключі.
+
+
+ Ваша заявка на API-ключ отклонена.
+ Вашу заявку на API-ключ відхилено.
+
+
+ Email-шаблоны
+ Email-шаблони
+
+
+ Email: тема заявки
+ Email: тема заявки
+
+
+ Тема письма администраторам о новой заявке на API-ключ.
+ Тема листа адміністраторам про нову заявку на API-ключ.
+
+
+ Плейсхолдеры заявки (email)
+ Плейсхолдери заявки (email)
+
+
+ Email: тело заявки
+ Email: тіло заявки
+
+
+ HTML или текст письма администраторам о новой заявке на API-ключ.
+ HTML або текст листа адміністраторам про нову заявку на API-ключ.
+
+
+ Email: тема одобрения
+ Email: тема схвалення
+
+
+ Тема письма пользователю при одобрении API-ключа.
+ Тема листа користувачу при схваленні API-ключа.
+
+
+ Плейсхолдеры решения (email)
+ Плейсхолдери рішення (email)
+
+
+ Email: тема отказа
+ Email: тема відхилення
+
+
+ Тема письма пользователю при отказе в API-ключе.
+ Тема листа користувачу при відмові в API-ключі.
+
+
+ Email: тело решения
+ Email: тіло рішення
+
+
+ HTML или текст письма пользователю при одобрении либо отказе в API-ключе.
+ HTML або текст листа користувачу при схваленні або відмові в API-ключі.
+
+
+ Неофициальное REST/SDK API для DLE: ключи, OAuth2 Bearer, /api/v2
+ Неофіційний REST/SDK API для DLE: ключі, OAuth2 Bearer, /api/v2
+
+
+ Главная
+ Головна
+
+
+ API-ключи
+ API-ключі
+
+
+ Синхронизация с группами
+ Синхронізація з групами
+
+
+ Заявки на ключ
+ Заявки на ключ
+
+
+ OAuth-клиенты
+ OAuth-клієнти
+
+
+ Настройки
+ Налаштування
+
+
+ Журнал изменений
+ Журнал змін
+
+
+ Список API-ключей
+ Список API-ключів
+
+
+ Активен
+ Активний
+
+
+ Пользователь
+ Користувач
+
+
+ Действия
+ Дії
+
+
+ Да
+ Так
+
+
+ Права
+ Права
+
+
+ Отключить
+ Вимкнути
+
+
+ Удалить
+ Видалити
+
+
+ Ключей пока нет
+ Ключів поки немає
+
+
+ Создать ключ
+ Створити ключ
+
+
+ Показать форму
+ Показати форму
+
+
+ Скрыть форму
+ Приховати форму
+
+
+ Уровень доступа
+ Рівень доступу
+
+
+ — вручную / без уровня —
+ — вручну / без рівня —
+
+
+ При выборе уровня флаги own_only/cheater берутся из уровня. Без уровня — матрица scopes ниже.
+ Під час вибору рівня прапорці own_only/cheater беруться з рівня. Без рівня — матриця scopes нижче.
+
+
+ Создать
+ Створити
+
+
+ Сохранить
+ Зберегти
+
+
+ Отмена
+ Скасувати
+
+
+ Права доступа к таблицам (если уровень не задан или для legacy-ключей)
+ Права доступу до таблиць (якщо рівень не заданий або для legacy-ключів)
+
+
+ Чтение — просмотр; Запись — создание; Правка — изменение; Удаление — удаление. При уровне с cheater матрица игнорируется.
+ Читання — перегляд; Запис — створення; Правка — зміна; Видалення — видалення. За рівня з cheater матриця ігнорується.
+
+
+ Таблица
+ Таблиця
+
+
+ Чтение
+ Читання
+
+
+ Включить все
+ Увімкнути всі
+
+
+ Запись
+ Запис
+
+
+ Правка
+ Правка
+
+
+ Удаление
+ Видалення
+
+
+ Список таблиц SchemaRegistry пуст
+ Список таблиць SchemaRegistry порожній
+
+
+ Если группа не привязана — при самогенерации используется уровень по умолчанию из настроек; на ключах уровень задаётся вручную.
+ Якщо група не прив’язана — під час самогенерації використовується рівень за замовчуванням із налаштувань; на ключах рівень задається вручну.
+
+
+ Группа DLE → уровень доступа
+ Група DLE → рівень доступу
+
+
+ Группа
+ Група
+
+
+ — не задано —
+ — не задано —
+
+
+ Группы не найдены
+ Групи не знайдено
+
+
+ Эндпоинты Authorization Server
+ Ендпоінти Authorization Server
+
+
+ Скопируйте URL для интеграции внешних OAuth-клиентов (DLE = IdP).
+ Скопіюйте URL для інтеграції зовнішніх OAuth-клієнтів (DLE = IdP).
+
+
+ Сохраните client_secret сейчас
+ Збережіть client_secret зараз
+
+
+ он показывается один раз и больше не будет доступен.
+ він показується один раз і більше не буде доступний.
+
+
+ Скрыть
+ Приховати
+
+
+ Имя
+ Ім’я
+
+
+ Изменить
+ Змінити
+
+
+ Клиентов пока нет
+ Клієнтів поки немає
+
+
+ Создать клиент
+ Створити клієнта
+
+
+ OAuth-клиент выдаёт access_token для вызовов /api/v2. Права запросов берёт из выбранного API-ключа (scopes). После создания сохраните client_id и client_secret — секрет больше не показывается.
+ OAuth-клієнт видає access_token для викликів /api/v2. Права запитів бере з обраного API-ключа (scopes). Після створення збережіть client_id та client_secret — секрет більше не показується.
+
+
+ Редактирование: название, API-ключ, Redirect URI, grant types и активность. client_id не меняется; секрет — только через «Пересоздать client_secret».
+ Редагування: назва, API-ключ, Redirect URI, grant types та активність. client_id не змінюється; секрет — лише через «Перестворити client_secret».
+
+
+ Идентификатор клиента не меняется. Секрет можно перевыпустить кнопкой ниже — старый сразу перестанет работать.
+ Ідентифікатор клієнта не змінюється. Секрет можна перевипустити кнопкою нижче — старий відразу перестане працювати.
+
+
+ Пересоздать client_secret
+ Перестворити client_secret
+
+
+ Новый секрет покажется один раз над таблицей. Обновите его во всех приложениях, которые используют этого клиента.
+ Новий секрет покажеться один раз над таблицею. Оновіть його у всіх застосунках, які використовують цього клієнта.
+
+
+ Название
+ Назва
+
+
+ Напр. Mobile app, CI, Postman
+ Напр. Mobile app, CI, Postman
+
+
+ Только для списка в админке. На выдачу токенов не влияет. Если пусто — подставится client_id.
+ Лише для списку в адмінці. На видачу токенів не впливає. Якщо порожньо — підставиться client_id.
+
+
+ — выберите —
+ — оберіть —
+
+
+ Обязательно. Определяет, к каким таблицам и с какими правами (read/write/delete) сможет обращаться Bearer-токен этого клиента. Ключ создаётся на вкладке «Ключи».
+ Обов’язково. Визначає, до яких таблиць і з якими правами (read/write/delete) зможе звертатися Bearer-токен цього клієнта. Ключ створюється на вкладці «Ключі».
+
+
+ Redirect URI
+ Redirect URI
+
+
+ Ссылка http(s). Нужна для grant authorization_code. Должна точно совпадать с redirect_uri при /oauth/authorize и обмене кода. Для password / client_credentials можно оставить пустым.
+ Посилання http(s). Потрібна для grant authorization_code. Має точно збігатися з redirect_uri під час /oauth/authorize та обміну коду. Для password / client_credentials можна залишити порожнім.
+
+
+ Grant types
+ Grant types
+
+
+ сервер-сервер без пользователя
+ сервер-сервер без користувача
+
+
+ логин/пароль пользователя DLE
+ логін/пароль користувача DLE
+
+
+ браузерный OAuth-код (нужен Redirect URI)
+ браузерний OAuth-код (потрібен Redirect URI)
+
+
+ обновление access_token
+ оновлення access_token
+
+
+ Какие способы получения токена разрешены этому клиенту. Хотя бы один обязателен.
+ Які способи отримання токена дозволені цьому клієнту. Щонайменше один обов’язковий.
+
+
+ Неактивный клиент не сможет получать новые токены.
+ Неактивний клієнт не зможе отримувати нові токени.
+
+
+ Заявки на API-ключ
+ Заявки на API-ключ
+
+
+ Статус
+ Статус
+
+
+ Дата
+ Дата
+
+
+ Отклонить
+ Відхилити
+
+
+ Заявок нет
+ Заявок немає
+
+
+ Сорт.
+ Сорт.
+
+
+ Премод.
+ Премод.
+
+
+ Уровней пока нет
+ Рівнів поки немає
+
+
+ Создать уровень
+ Створити рівень
+
+
+ Сортировка
+ Сортування
+
+
+ Премодерация заявок на ключ
+ Премодерація заявок на ключ
+
+
+ Только свои записи
+ Тільки свої записи
+
+
+ Полный доступ (cheater)
+ Повний доступ (cheater)
+
+
+ Маскировать IP
+ Маскувати IP
+
+
+ Маскировать пароли/хеши
+ Маскувати паролі/хеші
+
+
+ Маскировать лишние ПДн
+ Маскувати зайві ПДн
+
+
+ Scopes уровня (read / write / edit / delete)
+ Scopes рівня (read / write / edit / delete)
+
+
+ API v2 (/api/v2) на CycleORM из DevCraft Admin.
+ API v2 (/api/v2) на CycleORM із DevCraft Admin.
+
+
+ OAuth2 Authorization Server: authorize, token, revoke; доступ только через Bearer.
+ OAuth2 Authorization Server: authorize, token, revoke; доступ лише через Bearer.
+
+
+ credential_type api_key|auth|oauth_client; ресурсы только AuthToken; GET /me и /oauth/userinfo.
+ credential_type api_key|auth|oauth_client; ресурси лише AuthToken; GET /me та /oauth/userinfo.
+
+
+ OAuth AS discovery, authorize по сессии DLE, копируемые endpoint URL.
+ OAuth AS discovery, authorize за сесією DLE, копіювальні endpoint URL.
+
+
+ Уровни доступа, синхронизация с группами, заявки на ключ, профиль (public AJAX).
+ Рівні доступу, синхронізація з групами, заявки на ключ, профіль (public AJAX).
+
+
+ DEMO_MODE / DLEAPI_SECURE из .env; email-шаблоны через install.xml.
+ DEMO_MODE / DLEAPI_SECURE з .env; email-шаблони через install.xml.
+
+
+ Fluent-билдеры prepareNewPost / prepareNewUser / preparePlugin / prepareNewUsergroup (in-process и HTTP SDK).
+ Fluent-біледери prepareNewPost / prepareNewUser / preparePlugin / prepareNewUsergroup (in-process та HTTP SDK).
+
+
+ Каталог Schema таблиц DLE в api/includes/Schemas.
+ Каталог Schema таблиць DLE в api/includes/Schemas.
+
+
+ OpenAPI (swagger-php) и документация OAD в mhdocs.
+ OpenAPI (swagger-php) та документація OAD у mhdocs.
+
+
+ Загрузка файлов через штатный пайплайн DLE.
+ Завантаження файлів через штатний пайплайн DLE.
+
+
+ Фильтр постов по одной категории при нескольких (FIND_IN_SET / issue #12).
+ Фільтр публікацій за однією категорією за наявності кількох (FIND_IN_SET / issue #12).
+
+
+ Админ-модуль DleApi для DevCraft Admin ≥ 200.4.0 (только конфигурация).
+ Адмін-модуль DleApi для DevCraft Admin ≥ 200.4.0 (лише конфігурація).
+
+
+ HTTP /table/{name}: интроспекция таблиц вне SchemaRegistry + TableScopeGuard.
+ HTTP /table/{name}: інтроспекція таблиць поза SchemaRegistry + TableScopeGuard.
+
+
+ SDK facades: DcApi::news() / user() / comment() / conversation() / plugin() / file() / staticPage() / schema().
+ SDK фасади: DcApi::news() / user() / comment() / conversation() / plugin() / file() / staticPage() / schema().
+
+
+ Fluent CRUD на AbstractTableSchema (with / create / save / delete / filter / fromArray).
+ Fluent CRUD на AbstractTableSchema (з підтримкою / create / save / delete / filter / fromArray).
+
+
+ GET-кэш TableQuery через CacheControl (dle_api_query, TTL).
+ GET-кейш TableQuery через CacheControl (dle_api_query, TTL).
+
+
+ Админка: multi получатели уведомлений, WYSIWYG для PM; panel-title через caption.
+ Адмінка: multi отримувачі сповіщень, WYSIWYG для ЛС; panel-title через caption.
+
+
+ Админка: FormPanel ключей/уровней/OAuth свёрнут на узком экране (Metro d-none / d-block-md).
+ Адмінка: FormPanel ключів/рівнів/OAuth згорнуто на вузькому екрані (Metro d-none / d-block-md).
+
+
+ Совместимость с DLE 20.0 (xfields.json, dual category, conversations).
+ Сумісність із DLE 20.0 (xfields.json, dual category, conversations).
+
+
+ Таблицы api_keys / api_scope / OAuth создаются Cycle-миграциями DevCraft (Models + AbstractEntity), а не DDL в install.xml.
+ Таблиці api_keys / api_scope / OAuth створюються Cycle-міграціями DevCraft (Models + AbstractEntity), а не DDL в install.xml.
+
+
+ Scopes: колонка edit; own_only/cheater на уровне; trailing slash на всех маршрутах v2.
+ Scopes: колонка edit; own_only/cheater на рівні; trailing slash на всіх маршрутах v2.
+
+
+ OpenAPI: описание ApiError без PHPDoc {@see}; Schema без пометки install.php.
+ OpenAPI: опис ApiError без PHPDoc {@see}; Schema без позначки install.php.
+
+
+ API v1 (Slim + Illuminate Capsule, X-Api-Key) полностью удалён.
+ API v1 (Slim + Illuminate Capsule, X-Api-Key) повністю видалений.
+
+
+ Приём сырого API-ключа как Bearer на ресурсах /table.
+ Прийом сирого API-ключа як Bearer на ресурсах /table.
+
+
+ Оптимизация кода под PHP 8.2
+ Оптимізація коду під PHP 8.2
+
+
+ Минимально поддерживаемая версия DLE - 16.0
+ Мінімально підтримувана версія DLE — 16.0
+
+
+ Изменён список алгоритмов на hash_hmac_algos
+ Змінено список алгоритмів на hash_hmac_algos
+
+
+ Убрана процедура проверки атрибута в таблице
+ Прибрано процедуру перевірки атрибута в таблиці
+
+
+ Оптимизирован код
+ Оптимізовано код
+
+
+ Генерация ключа привязана к времени
+ Генерація ключа прив’язана до часу
+
+
+ Добавлена возможность добавлять ключи независимо от пользователя => для этого нужно выбрать в меню пользователя "Гость / Неавторизованный"
+ Додано можливість додавати ключі незалежно від користувача. Для цього потрібно обрати в меню користувача «Гість / Неавторизований»
+
+
+ Добавлена возможность генерировать свои рутеры на основе базы данных => читайте документацию
+ Додано можливість генерувати свої маршрути на основі бази даних. Читайте документацію
+
+
+ Обновлены данные для таблиц базы данных
+ Оновлено дані для таблиць бази даних
+
+
+ Обновлена документация API
+ Оновлено документацію API
+
+
+ Минимальные требования к серверу поднял до минимально требуемой версии от DLE-News -> 7.4, возможно не будет работать на версиях ниже 15.х
+ Мінімальні вимоги до сервера піднято до мінімально потрібної версії від DLE-News — 7.4. Можливо, не працюватиме на версіях нижче 15.x
+
+
+ Безопасный вывод данных (IP, пароли и хэш суммы)
+ Безпечний вивід даних (IP, паролі та хеш-суми)
+
+
+ Добавлена функция вывода только принадлежащих API-ключу записей
+ Додано функцію виведення лише належних API-ключу записів
+
+
+ Добавлена функция массовых действий (удаление, (де-)активация, снятие / добавление ограничение, снятие / удаление администраторских ограничений)
+ Додано функцію масових дій (видалення, (де-)активація, зняття / додавання обмеження, зняття / видалення адміністраторських обмежень)
+
+
+ Для удаления новостей была использована функция движка
+ Для видалення новин була використана функція рушія
+
+
+ Для удаления комментариев была использована функция движка
+ Для видалення коментарів була використана функція рушія
+
+
+ Изменил нумерование версий
+ Змінив нумерацію версій
+
+
+ composer настроил под версию PHP 5.6
+ composer налаштовано під версію PHP 5.6
+
+
+ Были исправлены несколько багов, спасибо @jyarali
+ Було виправлено кілька багів, дякуємо @jyarali
+
+
+ Исправлена проверка ключей в базе данных
+ Виправлено перевірку ключів у базі даних
+
+
+ Добавлена проверка по длине значения для типа "string"
+ Додано перевірку за довжиною значення для типу «string»
+
+
+ Массивы с ячейками таблиц были обновлены до значений DLE 14.1 (на ранние версии DLE это никак не влияет)
+ Масиви з комірками таблиць були оновлені до значень DLE 14.1 (на ранні версії DLE це ніяк не впливає)
+
+
+ Для пользователей был использован штатный API класс самой DLE, чтобы авторизовать и регистрировать пользователей
+ Для користувачів було використано штатний API клас самої DLE, щоб авторизувати та реєструвати користувачів
+
+
+ Для авторизации пользователей нужно при помощи метода POST указать следующий путь URL: api/v1/users/auth. В заголовке обязательно должны быть значения имя пользователя и его пароль в незакодированном виде.
+ Для авторизації користувачів потрібно за допомогою методу POST вказати наступний шлях URL: api/v1/users/auth. У заголовку обов’язково мають бути ім’я користувача та його пароль у незакодованому вигляді.
+
+
+ Для регистрации пользователя нужно при помощи метода POST указать следующий путь URL: api/v1/users/register. В заголовке нужно указать имя пользователя, пароль, электронную почту и ID группы пользователей.
+ Для реєстрації користувача потрібно за допомогою методу POST вказати наступний шлях URL: api/v1/users/register. У заголовку потрібно вказати ім’я користувача, пароль, електронну пошту та ID групи користувачів.
+
+
+ При регистрации и авторизации возвращается массив данных об этом пользователе
+ Під час реєстрації та авторизації повертається масив даних про цього користувача
+
+
+ Первая стандартная версия
+ Перша стандартна версія
+
+
+ гость
+ гість
+
+
+ DLE API
+ DLE API
+
+
+ Генерация ключа запрещена
+ Генерація ключа заборонена
+
+
+ У вас уже есть активный API-ключ
+ У вас уже є активний API-ключ
+
+
+ Не задан уровень доступа по умолчанию
+ Не задано рівень доступу за замовчуванням
+
+
+ Заявка уже ожидает рассмотрения
+ Заявка вже очікує розгляду
+
+
+ Заявка отправлена на модерацию
+ Заявку надіслано на модерацію
+
+
+ Ошибка
+ Помилка
+
+
+ Некорректный идентификатор
+ Некорректний ідентифікатор
+
+
+ Заявка не найдена
+ Заявку не знайдено
+
+
+ Заявка уже обработана
+ Заявку вже оброблено
+
+
+ Одобрено
+ Схвалено
+
+
+ Отклонено
+ Відхилено
+
+
+ Ключ создан
+ Ключ створено
+
+
+ Redirect URI должен быть ссылкой http(s)
+ Redirect URI має бути посиланням http(s)
+
+
+ Выберите хотя бы один grant_type
+ Оберіть хоча б один grant_type
+
+
+ Укажите действующий API-ключ
+ Вкажіть діючий API-ключ
+
+
+ Клиент не найден
+ Клієнта не знайдено
+
+
+ Клиент сохранён
+ Клієнта збережено
+
+
+ Синхронизация сохранена
+ Синхронізацію збережено
+
+
+ Ключ не найден
+ Ключ не знайдено
+
+
+ Схема настроек недоступна
+ Схему налаштувань недоступна
+
+
+ Файл конфигурации недоступен для записи
+ Файл конфігурації недоступний для запису
+
+
+ Каталог конфигурации недоступен для записи
+ Каталог конфігурації недоступний для запису
+
+
+ Все поля недействительны
+ Усі поля недійсні
+
+
+ Внимание
+ Увага
+
+
+ Частичное сохранение с ошибками
+ Часткове збереження з помилками
+
+
+ Сохранено
+ Збережено
+
+
+ Ключ сохранён
+ Ключ збережено
+
+
+ Ключ удалён
+ Ключ видалено
+
+
+ client_secret пересоздан
+ client_secret перестворено
+
+
+ Ключ включён
+ Ключ увімкнено
+
+
+ Ключ отключён
+ Ключ вимкнено
+
+
+ Удалено
+ Видалено
+
+
+ Требуется авторизация
+ Потрібна авторизація
+
+
+ Недостаточно прав
+ Недостатньо прав
+
+
+ Нельзя запрашивать ключ за другого пользователя
+ Неможливо запитати ключ за іншого користувача
+
+
+ Не удалось
+ Не вдалося
+
+
+ Недостаточно прав для модерации
+ Недостатньо прав для модерації
+
+
+ Заявка не найдена или уже обработана
+ Заявку не знайдено або вже оброблено
+
+
+ Уровень не найден
+ Рівень не знайдено
+
+
+ Укажите название уровня
+ Вкажіть назву рівня
+
+
+ OAuth-клиент создан
+ OAuth-клієнта створено
+
+
+ Клиент удалён
+ Клієнта видалено
+
+
+ История изменений
+ Історія змін
+
+
+
+