diff --git a/README.md b/README.md index 1e2740e9..0d842971 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,9 @@ English · 简体中文 · 日本語 · - Español + Español · + Português · + Русский
diff --git a/README_es.md b/README_es.md index 46e8827c..57ef4884 100644 --- a/README_es.md +++ b/README_es.md @@ -12,7 +12,9 @@ English · 简体中文 · 日本語 · - Español + Español · + Português · + Русский
diff --git a/README_ja.md b/README_ja.md index babd5d8d..89da434e 100644 --- a/README_ja.md +++ b/README_ja.md @@ -12,7 +12,9 @@ English · 简体中文 · 日本語 · - Español + Español · + Português · + Русский
diff --git a/README_pt.md b/README_pt.md new file mode 100644 index 00000000..7b00d1cb --- /dev/null +++ b/README_pt.md @@ -0,0 +1,251 @@ +
+
+
+ Um editor de bancos de dados que você implanta junto dos seus dados. +
+ ++ English · + 简体中文 · + 日本語 · + Español · + Português · + Русский +
+ +## Visão geral + +Você cria um banco na nuvem e, para consultá-lo, precisa abrir uma porta, configurar um +túnel SSH ou instalar um cliente em cada máquina da equipe. O LibreDB Studio permite +implantar o editor na mesma rede do banco e acessá-lo pelo navegador. Assim, você não +precisa expor o banco à internet só para usar o editor. + +O mesmo aplicativo atende a 16 mecanismos de banco de dados. Pode ser executado em um +contêiner, instalado como serviço, implantado no Kubernetes ou incorporado ao seu produto +pelo pacote `@libredb/studio`. Também há um aplicativo desktop para Linux. + +Todos os recursos fazem parte da versão MIT, incluindo SSO, controle de acesso por +papéis (RBAC), auditoria de consultas, diagramas ER e recursos de IA. Não há uma edição +empresarial que reserve essas funções. + +
+
+
+
+
+ Редактор баз данных, который разворачивается рядом с вашими данными. +
+ ++ English · + 简体中文 · + 日本語 · + Español · + Português · + Русский +
+ +## Что это + +LibreDB Studio — редактор баз данных с веб-интерфейсом. Его можно развернуть в той же +сети, где работают базы: в контейнере, как системную службу, в Kubernetes или внутри +собственного приложения через пакет `@libredb/studio`. Открывать порт самой СУБД в +интернет ради доступа к редактору не требуется. + +Браузер работает как тонкий клиент; соединения с СУБД открывает сервер Studio. +Один интерфейс поддерживает 16 СУБД и движков запросов, поэтому отдельный толстый +клиент для каждой из них устанавливать не нужно. Для Linux есть и настольное приложение +с локальным сервером. + +SSO, управление доступом по ролям (RBAC), аудит запросов, ER-диаграммы и функции ИИ +входят в версию под лицензией MIT. Отдельной редакции с платным доступом к этим +возможностям нет. + +
+
+
diff --git a/scripts/readme-check.mjs b/scripts/readme-check.mjs index 32377684..96d7895e 100644 --- a/scripts/readme-check.mjs +++ b/scripts/readme-check.mjs @@ -31,7 +31,7 @@ import path from "node:path"; import { fileURLToPath } from "node:url"; const CANONICAL = "README.md"; -const LOCALIZED = ["README_zh.md", "README_ja.md", "README_es.md"]; +const LOCALIZED = ["README_zh.md", "README_ja.md", "README_es.md", "README_pt.md", "README_ru.md"]; /** Splits a markdown row into trimmed cells, dropping the leading/trailing empties. */ function cells(line) { diff --git a/tests/unit/readme-check.test.ts b/tests/unit/readme-check.test.ts index 200e929b..c30fb091 100644 --- a/tests/unit/readme-check.test.ts +++ b/tests/unit/readme-check.test.ts @@ -204,6 +204,26 @@ describe("checkReadmes", () => { }); describe("readme-check CLI", () => { + test.each(["README_pt.md", "README_ru.md"])("checks the engines in %s", (name) => { + const { exitCode, stderr } = runCLI({ + "README.md": readme(), + [name]: readme(["PostgreSQL", "MySQL"]), + }); + expect(exitCode).toBe(1); + expect(stderr).toContain(name); + expect(stderr).toContain("missing Redis"); + }); + + test.each(["README_pt.md", "README_ru.md"])("checks the install commands in %s", (name) => { + const { exitCode, stderr } = runCLI({ + "README.md": readme(), + [name]: readme(ENGINES, [COMMANDS[0], "snap install libredb-studio"]), + }); + expect(exitCode).toBe(1); + expect(stderr).toContain(name); + expect(stderr).toContain("does not appear verbatim"); + }); + test("passes on a consistent set and names the invariant it checked", () => { const { exitCode, stdout } = runCLI({ "README.md": readme(),