diff --git a/.claude/rules/ci.md b/.claude/rules/ci.md index 5a8ac833d0..16b0f2a961 100644 --- a/.claude/rules/ci.md +++ b/.claude/rules/ci.md @@ -128,7 +128,7 @@ The required check names are in `AGENTS.md` (CI). Reading a red check: `.claude/ - `ios` watches `apple/TableProMobile/`, `apple/Libs/`, `apple/Plugins/TableProPluginKit/` (the package target is a symlink to it), and every `../` path it reads out of `apple/TableProMobile/project.yml`. - `oracle` watches `apple/Packages/TableProOracle/`; `hana` watches `apple/Native/HanaBridge/`. Each suite also watches its own workflow. - `release` watches what the Release build reads: the app, plugin, package, native, config and libs folders, `apple/project.yml`, the app's `Package.resolved`, `.github/plugin-registry.json`, the release scripts it runs (`build.sh`, `package.sh`, `registry.py`, `version.py`, `notes.py`), the build and CI scripts it runs and the setup actions. It skips `apple/Plugins/*Tests/` and `apple/Packages/*/Tests/`. -- `linux` watches `linux/`, the docs and banned-words scripts the Linux fast job runs, the detector itself and the three Linux workflows. +- `linux` watches `linux/`, the detector itself and the three Linux workflows. - A path a suite newly reads joins that suite's pattern in the same change, or the suite skips on it. - `apple/CHANGELOG.md` and `apple/changelog.d/` are on no suite's pattern: the What's New phase writes nothing at `0.0.0-dev`, and Repo Hygiene renders every fragment and section instead. diff --git a/.claude/skills/fix-issue/references/verification-linux.md b/.claude/skills/fix-issue/references/verification-linux.md index 69f8d57548..b7b6b4c7f4 100644 --- a/.claude/skills/fix-issue/references/verification-linux.md +++ b/.claude/skills/fix-issue/references/verification-linux.md @@ -33,7 +33,7 @@ Cargo prints one "test result:" line per test binary and never adds them up, thr ## Translations and data -- **`l10n` checks the file list and the catalog**, not the template. Extracting the template needs gettext 1.0 or later: 0.24 to 0.26 read Rust but skip path-qualified calls such as `crate::i18n::gettext(...)`, and an older `xgettext` reads it with the C lexer. Neither template may be committed. CI's Translations job is the gate for it. +- **`l10n` checks the file list and the catalog**, not the template. The template is not committed: `meson compile -C _build tablepro-pot` writes it, and needs gettext 1.0 or later: 0.24 to 0.26 read Rust but skip path-qualified calls such as `crate::i18n::gettext(...)`, and an older `xgettext` reads it with the C lexer. - **`i18n_catalog` needs the `en_US.UTF-8` locale and `msgfmt`**: `localedef -i en_US -f UTF-8 en_US.UTF-8` when the locale is missing. - **`data` skips a validator whose tool is not installed** (`desktop-file-validate`, `appstreamcli`, `glib-compile-schemas`) and reports it. diff --git a/.claude/skills/fix-issue/scripts/lib/platform-linux.sh b/.claude/skills/fix-issue/scripts/lib/platform-linux.sh index 15660a1d66..837ec6d2f6 100644 --- a/.claude/skills/fix-issue/scripts/lib/platform-linux.sh +++ b/.claude/skills/fix-issue/scripts/lib/platform-linux.sh @@ -390,7 +390,6 @@ platform_step() { grep -qE '^[<>] ' "$log" && note " POTFILES.in is stale: list the files above in linux/po/POTFILES.in" diagnose_environment "$log" && STATUS=INCONCLUSIVE fi - note "the POT template itself is checked by CI's Translations job, which needs gettext 0.24 or later" emit "$log" $code ;; diff --git a/.gitattributes b/.gitattributes index 0ff4d8ec32..f2f1fcd650 100644 --- a/.gitattributes +++ b/.gitattributes @@ -56,8 +56,7 @@ apple/TablePro/Resources/ThirdPartyLicenses/texts/** linguist-vendored # Joins the SQLite copyright page and the source blessing with a sentence of its own. apple/TablePro/Resources/ThirdPartyLicenses/texts/sqlite.txt -linguist-vendored -# Generated Linux files (Cargo, xgettext, cargo-about, license_metadata.py) +# Generated Linux files (Cargo, cargo-about, license_metadata.py) linux/Cargo.lock linguist-generated -linux/po/tablepro.pot linguist-generated linux/data/licenses/** linguist-generated linux/build-aux/debian/copyright linguist-generated diff --git a/.github/workflows/build-linux.yml b/.github/workflows/build-linux.yml index ed1a1d6691..75df5baee6 100644 --- a/.github/workflows/build-linux.yml +++ b/.github/workflows/build-linux.yml @@ -201,18 +201,6 @@ jobs: exit "$status" ;; esac - - name: Docs name paths and types that exist - # A renamed type or a moved file stays named in prose until - # something asks. GTK and GLib names resolve against the GIR - # files the -dev packages install. - run: | - ../scripts/check-doc-symbols.sh \ - linux/ARCHITECTURE.md \ - linux/docs/adding-drivers.md \ - linux/docs/state-management.md \ - linux/docs/storage.md \ - linux/docs/testing.md \ - linux/docs/decisions/0012-window-per-session.md - name: Clippy run: meson devenv -C _build cargo clippy --locked --workspace --all-targets -- -D warnings - name: Clippy without default features @@ -365,25 +353,8 @@ jobs: 'data/*.gschema.xml.in' 'data/*.metainfo.xml.in.in' > po/POTFILES.in git diff --exit-code po/POTFILES.in - name: Configure - # Fatal, so an xgettext older than 0.24 fails here. + # Fatal, so an xgettext older than 1.0 fails here. run: meson setup _build --fatal-meson-warnings - - name: The POT template is current - # The creation date changes on every run, so it is the one line - # allowed to differ. - run: | - meson compile -C _build tablepro-pot - if ! git diff --exit-code --ignore-matching-lines='^"POT-Creation-Date: ' -- po/tablepro.pot; then - echo "::error::po/tablepro.pot does not match the strings in the code: run meson compile -C _build tablepro-pot with gettext 1.0 or newer, or take the tablepro-pot artifact of this run, and commit it" - exit 1 - fi - - name: Keep the regenerated template - if: failure() - uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2 - with: - name: tablepro-pot - path: linux/po/tablepro.pot - if-no-files-found: ignore - retention-days: 7 flatpak-devel: name: Flatpak Devel (${{ matrix.arch }}) diff --git a/linux/.gitignore b/linux/.gitignore index fb3d5826dd..b9a3619513 100644 --- a/linux/.gitignore +++ b/linux/.gitignore @@ -3,3 +3,4 @@ _build/ _packages/ _flatpak/ .flatpak-builder/ +/po/tablepro.pot diff --git a/linux/CONTRIBUTING.md b/linux/CONTRIBUTING.md index 384eecbddb..1f1b73b389 100644 --- a/linux/CONTRIBUTING.md +++ b/linux/CONTRIBUTING.md @@ -54,7 +54,7 @@ meson dist -C _build --no-tests --formats xztar Inside a desktop session, `dbus-run-session -- meson test -C _build` runs the same suites without xvfb. -The fast job also runs a few source greps, `scripts/check-doc-symbols.sh` and the lychee line below, from the repository root. The supply-chain and Docker jobs run the rest, among others; [docs/testing.md](docs/testing.md#ci) describes every job, and the Docker job runs the last line once per package that has Docker tests: +The fast job also runs a few source greps and the lychee line below, from the repository root. The supply-chain and Docker jobs run the rest, among others; [docs/testing.md](docs/testing.md#ci) describes every job, and the Docker job runs the last line once per package that has Docker tests: ```bash cargo deny --locked check advisories bans licenses sources @@ -136,7 +136,7 @@ A user-visible change adds one towncrier fragment, `changelog.d/..md` 3. The PR description follows the repository's `.github/pull_request_template.md`. 4. Run the [fast-job commands](#fast-job-commands) locally before pushing. 5. A change to `Cargo.lock` commits what `build-aux/update-third-party-licenses.sh` rewrites: `data/licenses`, `build-aux/debian/copyright` and the spec's `License` tag ([Dependencies](#dependencies)). -6. A new or removed file under `crates/app/src` regenerates `po/POTFILES.in`, and a changed user-facing string regenerates `po/tablepro.pot` ([po/README.md](po/README.md)). +6. A new or removed file under `crates/app/src` regenerates `po/POTFILES.in` ([po/README.md](po/README.md)). 7. A user-visible change has its [changelog](#changelog) fragment. 8. UI changes include before and after screenshots in the PR description, light and dark when color is involved. A change to a window shown in the metainfo retakes its screenshot in `data/screenshots` ([README.md](README.md#screenshots)). diff --git a/linux/ROADMAP.md b/linux/ROADMAP.md index ba9c08d788..724cc96079 100644 --- a/linux/ROADMAP.md +++ b/linux/ROADMAP.md @@ -112,7 +112,7 @@ The app runs on GNOME 50 ([ADR 0015](docs/decisions/0015-gnome-50-platform-floor | Flatpak | The Devel manifest builds on GNOME 51 for x86_64 and aarch64 with every Meson suite in the sandbox, and is linted, on every pull request that touches `linux/` | | .deb and .rpm | Ubuntu 26.04 and 26.10 and Fedora 44, built offline in CI the way Launchpad and COPR build them, linted, then installed and started in fresh containers; a `linux-v*` tag uploads to the PPA and starts the COPR build ([ADR 0018](docs/decisions/0018-ppa-copr-and-flathub-later.md)) | | Desktop integration | Desktop file with Open With for SQLite files, D-Bus activation, a man page, metainfo with screenshots, and SVG icons | -| Translations | The app's own strings go through gettext, and CI regenerates the template with gettext 1.0 and fails when it or `POTFILES.in` is stale. Some error details from the core crates still reach the user in English (see Release criteria) | +| Translations | The app's own strings go through gettext, and CI fails when `POTFILES.in` is stale. The template is generated on demand with gettext 1.0. Some error details from the core crates still reach the user in English (see Release criteria) | | Logs | stderr, which the session journals, with JSON lines on request. A panic also writes a crash report under `$XDG_STATE_HOME`, offered with Show Report on the next launch | | Tests | Unit, gtk (with an accessibility audit of the picker, the connect pages, the workspace, the connect dialog and every preferences page), data and packaging suites; connection, DDL and TLS conformance on every engine; Docker jobs for PostgreSQL with PgBouncer, MySQL and MariaDB, SQL Server, ClickHouse, SSH, the session and the grid save ([testing.md](docs/testing.md)); every critical audit finding has named guards ([regression-tests.md](docs/regression-tests.md)) | diff --git a/linux/docs/README.md b/linux/docs/README.md index 96a226c7e8..93d1db66f2 100644 --- a/linux/docs/README.md +++ b/linux/docs/README.md @@ -14,7 +14,7 @@ The reference for working on the Linux app. Start with [ARCHITECTURE.md](../ARCH | [troubleshooting.md](troubleshooting.md) | For users: saved passwords, SSH, Kerberos, logs, crash reports, bug reports and downgrades | | [regression-tests.md](regression-tests.md) | The tests that guard each critical audit finding | | [releasing.md](releasing.md) | The setup before the first release, a release, a packaging fix and a fix release | -| [po/README.md](../po/README.md) | Marking strings for translation and keeping the template current | +| [po/README.md](../po/README.md) | Marking strings for translation and generating the template | ## Drivers diff --git a/linux/docs/testing.md b/linux/docs/testing.md index 641958db9e..033ae75294 100644 --- a/linux/docs/testing.md +++ b/linux/docs/testing.md @@ -408,10 +408,10 @@ The tests in `crates/app/src/ui/editor/script_runner.rs` drive `run_batches` und GitHub Actions (`.github/workflows/build-linux.yml`), Ubuntu runners. Its `on:` lists what starts it. Flatpak Devel and Minimum Rust version run only on its schedule and by hand. Every action is pinned by commit SHA and every tool by version. -1. **Fast checks**: lychee, offline, over every Markdown file under `linux/`, with heading anchors checked, then `meson setup`, `cargo fmt --all -- --check`, the source greps (no `thread_local!` in services, no blocking file I/O under `ui`, no action group inserted as `win`, no `set_qdata`, no em dash in user-facing text), `scripts/check-doc-symbols.sh` over the docs that name code, clippy with and without default features, `meson compile`, `xvfb-run -a dbus-run-session -- meson test --print-errorlogs`, a Secret Service step under `gnome-keyring-daemon`, then `meson dist`. Runs in an `ubuntu:26.04` container, which ships GLib 2.88 plus the meson, appstream and desktop-file-utils packages. A failed run keeps `_build/meson-logs/testlog.txt` as the `meson-testlog` artifact. [CONTRIBUTING.md](../CONTRIBUTING.md#fast-job-commands) lists the same commands. +1. **Fast checks**: lychee, offline, over every Markdown file under `linux/`, with heading anchors checked, then `meson setup`, `cargo fmt --all -- --check`, the source greps (no `thread_local!` in services, no blocking file I/O under `ui`, no action group inserted as `win`, no `set_qdata`, no em dash in user-facing text), clippy with and without default features, `meson compile`, `xvfb-run -a dbus-run-session -- meson test --print-errorlogs`, a Secret Service step under `gnome-keyring-daemon`, then `meson dist`. Runs in an `ubuntu:26.04` container, which ships GLib 2.88 plus the meson, appstream and desktop-file-utils packages. A failed run keeps `_build/meson-logs/testlog.txt` as the `meson-testlog` artifact. [CONTRIBUTING.md](../CONTRIBUTING.md#fast-job-commands) lists the same commands. 2. **Docker tests** (`integration`, `integration-session`, `integration-app`): runs after fast checks pass, and keeps each package's JUnit report as a `junit-` artifact, `junit--` for a release entry. One matrix entry per package with docker tests (the PostgreSQL driver with PgBouncer, the MySQL driver with MariaDB, the SQL Server and ClickHouse drivers, all four with their TLS suites, `tablepro-ssh` against an OpenSSH server container, and `tablepro-test-fixtures` for the fixtures themselves) runs that package's ignored docker tests through cargo-nextest on the host runner's Docker, one test at a time per package. The driver packages have an entry more for each older or newer server release ([Server releases](#server-releases)). `tablepro-session` builds storage, which needs GLib 2.88, so its job runs in the fast job's `ubuntu:26.04` image with the host's Docker socket mounted. The app's docker tests (`crates/app/tests/tracker_save_postgres.rs`) run the same way, since the app links GTK; that job names its test targets, because the app's `startup` test needs Meson. The SQLite driver needs no container: its suites run in the fast job. 3. **Supply chain**: `cargo deny check` against `deny.toml` (advisories, bans, licenses and sources, with every feature, both Linux targets and the dev-dependencies), `cargo shear` for unused or misplaced dependencies, and `build-aux/update-third-party-licenses.sh`, failing when `data/licenses`, `build-aux/debian/copyright` or the spec's `License` tag differ from what it writes. Then `zizmor` over the three Linux workflows. -4. **Translations**: in `ubuntu:26.10`, whose gettext 1.0 reads path-qualified Rust calls such as `crate::i18n::gettext(...)`. `po/POTFILES.in` must match `git ls-files`, `meson setup --fatal-meson-warnings` must pass, and `po/tablepro.pot` must match a fresh `meson compile -C _build tablepro-pot` in everything but its creation date. Regenerating it locally needs gettext 1.0 or newer (`po/README.md`). A failed run keeps the template it wrote as the `tablepro-pot` artifact. +4. **Translations**: in `ubuntu:26.10`, whose gettext 1.0 reads path-qualified Rust calls such as `crate::i18n::gettext(...)`. `po/POTFILES.in` must match `git ls-files`, and `meson setup --fatal-meson-warnings` must pass. `po/tablepro.pot` is not committed; `meson compile -C _build tablepro-pot` writes it, with gettext 1.0 or newer (`po/README.md`). 5. **Flatpak Devel**: the Devel manifest built in the `gnome-51` Flatpak image for x86_64 and aarch64, with every Meson suite run inside the build sandbox from a tree with no `.git`. The x86_64 job lints the manifest with `flatpak-builder-lint` and `build-aux/flatpak/lint-exceptions.json`. The repository holds no Flathub manifest ([ADR 0018](decisions/0018-ppa-copr-and-flathub-later.md)). 6. **Minimum Rust version**: in `ubuntu:26.04`, `build-aux/packaging/add-rust-toolchain-ppa.sh` adds `ppa:rust-toolchain/staging`, `apt-get build-dep -P nocheck` installs the .deb's build dependencies without the test-only ones, and `cargo-1.97 check --workspace --all-targets --locked` runs with and without default features: the compiler the PPA builds with, at the workspace `rust-version`. diff --git a/linux/po/README.md b/linux/po/README.md index a877e545cd..286063be3c 100644 --- a/linux/po/README.md +++ b/linux/po/README.md @@ -27,9 +27,11 @@ Do not translate symbols, SQL keywords, or the word TablePro. 1. Pick a locale code (e.g. `vi`, `de`, `pt_BR`). 2. Add it on its own line to [`LINGUAS`](LINGUAS). -3. Copy `tablepro.pot` to `xx.po` and translate the entries: +3. Generate the template ([Generating tablepro.pot](#generating-tablepropot)), + start `xx.po` from it and translate the entries: ```sh + meson compile -C _build tablepro-pot msginit --locale=xx --input=po/tablepro.pot --output=po/xx.po ``` @@ -61,32 +63,28 @@ git ls-files 'crates/app/src/*.rs' 'data/resources/*.ui' 'data/*.desktop.in.in' CI runs the same command and fails on a diff, so a new source file cannot silently drop out of translation. -## Regenerating tablepro.pot +## Generating tablepro.pot -`tablepro.pot` is the master template. A change that adds, edits or -removes a user-facing string regenerates it in the same commit: +`tablepro.pot` is not committed, as in other GNOME apps. Generate it from +the code before running `msginit` or `msgmerge`: ```sh meson compile -C _build tablepro-pot ``` -The template names the file each string is in but not the line, so moving -code leaves it alone. The Translations CI job regenerates it and fails when -the committed file differs in anything but its creation date. It then -uploads the template it wrote as the `tablepro-pot` artifact, which can be -committed as it is. - This needs **gettext 1.0 or newer**, the first release whose xgettext reads a call through a path such as `crate::i18n::gettext(...)`, the way most of the app calls it. Ubuntu 26.10 ships 1.0; Fedora 44 ships 0.26 and Ubuntu 26.04 0.23.2. gettext 0.24 to 0.26 read Rust but skip every path-qualified call, and anything older falls back to its C lexer, which -misreads lifetimes such as `'static` as character constants. Neither -template should be committed. `meson setup` warns when the xgettext it -found is too old. +misreads lifetimes such as `'static` as character constants. `meson setup` +warns when the xgettext it found is too old. -Use `msgmerge` to fold new strings into existing translations: +Then fold new strings into existing translations: ```sh for f in po/*.po; do msgmerge --update "$f" po/tablepro.pot; done ``` + +`meson compile -C _build tablepro-update-po` does both steps for every +locale in `LINGUAS`. diff --git a/linux/po/meson.build b/linux/po/meson.build index ae9f606c64..61a8534929 100644 --- a/linux/po/meson.build +++ b/linux/po/meson.build @@ -4,7 +4,7 @@ if xgettext.found() xgettext_version = run_command(xgettext, '--version', check: false).stdout().split('\n')[0].split(' ')[-1] if xgettext_version.version_compare('< 1.0') warning( - 'xgettext @0@ predates 1.0, the first that reads a call through a path such as crate::i18n::gettext. Regenerating the POT needs 1.0 or newer.'.format( + 'xgettext @0@ predates 1.0, the first that reads a call through a path such as crate::i18n::gettext. Generating the POT needs 1.0 or newer.'.format( xgettext_version, ), ) @@ -24,7 +24,7 @@ i18n.gettext( '--keyword=ngettext_f:1,2', '--keyword=pgettext_f:1c,2', '--from-code=UTF-8', - # CI fails when the committed template differs from a fresh one, and + # msgmerge copies these references into the committed .po files, where # line numbers would make every edit above a string count as a change. '--add-location=file', '--add-comments=Translators:', diff --git a/linux/po/tablepro.pot b/linux/po/tablepro.pot deleted file mode 100644 index e1156248f7..0000000000 --- a/linux/po/tablepro.pot +++ /dev/null @@ -1,5754 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the tablepro package. -# FIRST AUTHOR , YEAR. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: tablepro 0.1.0\n" -"Report-Msgid-Bugs-To: https://github.com/TableProApp/TablePro/issues\n" -"POT-Creation-Date: 2026-10-19 00:18+0000\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"Language: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" - -#. Translators: your names, one per line, as "Name " or "Name https://site". -#: crates/app/src/application/about_dialog.rs -msgid "translator-credits" -msgstr "" - -#: crates/app/src/application/imp.rs -msgid "Open a new window" -msgstr "" - -#: crates/app/src/i18n.rs crates/app/src/ui/export/export_scope.rs -#: crates/app/src/ui/history_dialog/history_formatting.rs -#: crates/app/src/ui/result_pane/mod.rs -#, rust-format -msgid "{n} row" -msgid_plural "{n} rows" -msgstr[0] "" -msgstr[1] "" - -#: crates/app/src/services/deletion_error.rs -#: crates/app/src/ui/session_window/connections.rs -msgid "The stored passwords could not be deleted, so the connection was kept." -msgstr "" - -#: crates/app/src/services/deletion_error.rs -#, rust-format -msgid "" -"“{name}” is still listed, but its stored passwords were deleted. Connecting " -"will ask for them." -msgstr "" - -#: crates/app/src/services/deletion_error.rs -#, rust-format -msgid "“{name}” could not be deleted" -msgstr "" - -#: crates/app/src/services/deletion_report.rs -#, rust-format -msgid "" -"“{name}” was deleted, but some saved tabs or settings could not be removed" -msgstr "" - -#: crates/app/src/services/deletion_report.rs -#, rust-format -msgid "" -"“{name}” was deleted, but some of what was stored for it could not be removed" -msgstr "" - -#: crates/app/src/services/deletion_report.rs -#, rust-format -msgid "" -"“{name}” was deleted, but its saved queries and query history could not be " -"removed" -msgstr "" - -#: crates/app/src/services/deletion_report.rs -#, rust-format -msgid "“{name}” was deleted, but its saved queries could not be removed" -msgstr "" - -#: crates/app/src/services/deletion_report.rs -#, rust-format -msgid "“{name}” was deleted, but its query history could not be removed" -msgstr "" - -#: crates/app/src/services/duplicate_name.rs -#, rust-format -msgid "{name} (Copy)" -msgstr "" - -#: crates/app/src/services/duplicate_name.rs -#, rust-format -msgid "{name} (Copy {n})" -msgstr "" - -#: crates/app/src/services/history_availability.rs -msgid "" -"The query history was written by a newer version of TablePro. Update " -"TablePro to read it." -msgstr "" - -#: crates/app/src/services/history_availability.rs -msgid "The query history could not be updated for this version of TablePro." -msgstr "" - -#: crates/app/src/services/history_availability.rs -#, rust-format -msgid "TablePro is not allowed to write {path}." -msgstr "" - -#: crates/app/src/services/history_availability.rs -#, rust-format -msgid "The disk that holds {path} is full." -msgstr "" - -#: crates/app/src/services/history_availability.rs -#, rust-format -msgid "{path} could not be created." -msgstr "" - -#: crates/app/src/services/history_availability.rs -#: crates/app/src/ui/saved_queries_dialog.rs -msgid "The query history file could not be read. It may be damaged." -msgstr "" - -#: crates/app/src/services/secret_labels.rs -#, rust-format -msgid "TablePro database password for {target}" -msgstr "" - -#: crates/app/src/services/secret_labels.rs -#, rust-format -msgid "TablePro SSH password for {target}" -msgstr "" - -#: crates/app/src/services/secret_labels.rs -#, rust-format -msgid "TablePro SSH key passphrase for {target}" -msgstr "" - -#: crates/app/src/services/secret_save_report.rs -msgid "" -"No keyring is running, so the password was not saved. It will be asked for " -"next time." -msgstr "" - -#: crates/app/src/services/secret_save_report.rs -msgid "" -"The secret portal is unavailable, so the password was not saved. It will be " -"asked for next time." -msgstr "" - -#: crates/app/src/services/secret_save_report.rs -msgid "" -"The keyring stayed locked, so the password was not saved. It will be asked " -"for next time." -msgstr "" - -#: crates/app/src/services/secret_save_report.rs -#, rust-format -msgid "The keyring did not save the password: {reason}" -msgstr "" - -#: crates/app/src/services/secret_save_report.rs -msgid "The keyring did not save the password." -msgstr "" - -#: crates/app/src/ui/browse_tab/browse_actions.rs -#: crates/app/src/ui/browse_tab/edit_handlers.rs -#: crates/app/src/ui/grid/grid_menus.rs data/resources/shortcuts-dialog.ui -msgid "Insert Row" -msgstr "" - -#: crates/app/src/ui/browse_tab/browse_actions.rs -#: crates/app/src/ui/browse_tab/selection_handlers.rs -msgid "Delete Selected Rows" -msgstr "" - -#: crates/app/src/ui/browse_tab/browse_actions.rs -#: crates/app/src/ui/browse_tab/layout.rs -msgid "Export Rows…" -msgstr "" - -#: crates/app/src/ui/browse_tab/clipboard_handlers.rs -#: crates/app/src/ui/editor/mod.rs -#: crates/app/src/ui/structure_tab/save_handlers.rs -#: crates/app/src/ui/workspace/import.rs -msgid "Connect to a database first." -msgstr "" - -#: crates/app/src/ui/browse_tab/clipboard_handlers.rs -msgid "Pasting rows isn't supported yet" -msgstr "" - -#: crates/app/src/ui/browse_tab/clipboard_handlers.rs -msgid "Nothing to export" -msgstr "" - -#: crates/app/src/ui/browse_tab/count_failure_text.rs -#, rust-format -msgid "Counting took longer than {seconds} second and was stopped." -msgid_plural "Counting took longer than {seconds} seconds and was stopped." -msgstr[0] "" -msgstr[1] "" - -#: crates/app/src/ui/browse_tab/edit_handlers.rs -msgid "This cell can't take the column's default" -msgstr "" - -#: crates/app/src/ui/browse_tab/edit_handlers.rs -msgid "This row is being saved. Change it again once the save finishes." -msgstr "" - -#: crates/app/src/ui/browse_tab/edit_handlers.rs -msgid "This table has no primary key, so editing is turned off." -msgstr "" - -#: crates/app/src/ui/browse_tab/edit_handlers.rs -#, rust-format -msgid "Delete {n} Row?" -msgid_plural "Delete {n} Rows?" -msgstr[0] "" -msgstr[1] "" - -#: crates/app/src/ui/browse_tab/edit_handlers.rs -#: crates/app/src/ui/credential_prompt/prompt_form.rs -#: crates/app/src/ui/delete_connection_dialog.rs -#: crates/app/src/ui/discard_alert.rs crates/app/src/ui/editor/mod.rs -#: crates/app/src/ui/grid/multiline_editor.rs -#: crates/app/src/ui/history_dialog/mod.rs crates/app/src/ui/host_key_review.rs -#: crates/app/src/ui/picker/new_group_dialog.rs -#: crates/app/src/ui/preferences_dialog/history_group.rs -#: crates/app/src/ui/saved_queries_dialog.rs -#: crates/app/src/ui/session_window/connections.rs -#: crates/app/src/ui/workspace/status_pages.rs -#: crates/app/src/ui/workspace/structure.rs -#: crates/app/src/ui/workspace/workspace_tabs.rs -#: data/resources/ui/connecting-page.ui -msgid "Cancel" -msgstr "" - -#: crates/app/src/ui/browse_tab/edit_handlers.rs -#: crates/app/src/ui/delete_connection_dialog.rs -#: crates/app/src/ui/grid/grid_menus.rs crates/app/src/ui/history_dialog/mod.rs -#: crates/app/src/ui/saved_queries_dialog.rs -#: data/resources/ui/history-dialog.ui data/resources/ui/history-row.ui -msgid "Delete" -msgstr "" - -#: crates/app/src/ui/browse_tab/edit_handlers.rs -msgid "" -"The table's primary key changed, so no rows were marked for deletion. Select " -"them again." -msgstr "" - -#: crates/app/src/ui/browse_tab/layout.rs -#: crates/app/src/ui/browse_tab/paging_handlers.rs -#: data/resources/shortcuts-dialog.ui data/resources/ui/browse-tab.ui -msgid "Filter Rows" -msgstr "" - -#: crates/app/src/ui/browse_tab/layout.rs -#: crates/app/src/ui/browse_tab/pager_bar.rs data/resources/ui/pager-bar.ui -msgid "Count Rows" -msgstr "" - -#: crates/app/src/ui/browse_tab/layout.rs -msgid "Rows per Page" -msgstr "" - -#: crates/app/src/ui/browse_tab/mod.rs -#, rust-format -msgid "Fetching rows from {table}" -msgstr "" - -#: crates/app/src/ui/browse_tab/page_label.rs -msgid "No rows" -msgstr "" - -#: crates/app/src/ui/browse_tab/page_label.rs -msgid "No rows match the filter" -msgstr "" - -#: crates/app/src/ui/browse_tab/page_label.rs -msgid "No rows on this page" -msgstr "" - -#: crates/app/src/ui/browse_tab/pager_bar.rs -msgid "Last Page" -msgstr "" - -#: crates/app/src/ui/browse_tab/pager_bar.rs -msgid "Count rows to go to the last page" -msgstr "" - -#: crates/app/src/ui/browse_tab/pager_bar.rs -msgid "Counting…" -msgstr "" - -#: crates/app/src/ui/browse_tab/pager_bar.rs -#: crates/app/src/ui/saved_queries_dialog.rs data/resources/ui/browse-tab.ui -#: data/resources/ui/structure-tab.ui -msgid "Try Again" -msgstr "" - -#: crates/app/src/ui/browse_tab/pager_bar.rs -#, rust-format -msgid "Couldn't count the rows. {reason}" -msgstr "" - -#: crates/app/src/ui/browse_tab/pager_bar.rs -msgid "First Page" -msgstr "" - -#: crates/app/src/ui/browse_tab/pager_bar.rs data/resources/shortcuts-dialog.ui -msgid "Previous Page" -msgstr "" - -#: crates/app/src/ui/browse_tab/pager_bar.rs data/resources/shortcuts-dialog.ui -msgid "Next Page" -msgstr "" - -#: crates/app/src/ui/browse_tab/paging_handlers.rs -#, rust-format -msgid "{n} Filter Rule Active" -msgid_plural "{n} Filter Rules Active" -msgstr[0] "" -msgstr[1] "" - -#: crates/app/src/ui/browse_tab/pending_changes_bar.rs -msgid "1 unsaved change" -msgstr "" - -#: crates/app/src/ui/browse_tab/pending_changes_bar.rs -#: crates/app/src/ui/structure_tab/save_handlers.rs -#, rust-format -msgid "{n} unsaved change" -msgid_plural "{n} unsaved changes" -msgstr[0] "" -msgstr[1] "" - -#: crates/app/src/ui/browse_tab/pending_changes_bar.rs -#: data/resources/ui/pending-changes-bar.ui data/resources/ui/structure-tab.ui -#: data/resources/ui/workspace.ui -msgid "Saving…" -msgstr "" - -#: crates/app/src/ui/browse_tab/row_deletion.rs -msgid "" -"These rows will be marked for deletion. They aren't removed until you click " -"Save." -msgstr "" - -#: crates/app/src/ui/browse_tab/row_deletion.rs -msgid "" -"These rows were never saved. They're removed now, and Undo won't bring them " -"back." -msgstr "" - -#: crates/app/src/ui/browse_tab/row_deletion.rs -msgid "" -"Saved rows will be marked for deletion and aren't removed until you click " -"Save. Rows never saved are removed now, and Undo won't bring them back." -msgstr "" - -#: crates/app/src/ui/browse_tab/row_total.rs -#, rust-format -msgid "Rows {start} – {end} of {total}" -msgstr "" - -#: crates/app/src/ui/browse_tab/row_total.rs -#, rust-format -msgid "Rows {start} – {end} of about {total}" -msgstr "" - -#: crates/app/src/ui/browse_tab/row_total.rs -#, rust-format -msgid "Rows {start} – {end}" -msgstr "" - -#: crates/app/src/ui/browse_tab/save_handlers.rs -#: crates/app/src/ui/structure_tab/save_handlers.rs -msgid "Save Failed" -msgstr "" - -#: crates/app/src/ui/browse_tab/save_handlers.rs -#: crates/app/src/ui/structure_tab/save_handlers.rs -#: crates/app/src/workspace/unknown_outcome_dialog.rs -msgid "Save Result Unknown" -msgstr "" - -#: crates/app/src/ui/browse_tab/selection_handlers.rs -#, rust-format -msgid "{n} selected · press Delete to remove" -msgstr "" - -#: crates/app/src/ui/clipboard/clipboard_copy.rs -msgid "Copied to clipboard" -msgstr "" - -#: crates/app/src/ui/clipboard/clipboard_copy.rs -#, rust-format -msgid "Copied {n} row" -msgid_plural "Copied {n} rows" -msgstr[0] "" -msgstr[1] "" - -#: crates/app/src/ui/clipboard/clipboard_copy.rs -#, rust-format -msgid "Copied {n} value" -msgid_plural "Copied {n} values" -msgstr[0] "" -msgstr[1] "" - -#: crates/app/src/ui/clipboard/clipboard_copy.rs -msgid "Couldn't copy the selection" -msgstr "" - -#: crates/app/src/ui/clipboard/clipboard_copy.rs -#, rust-format -msgid "{n} NULL or binary values left out of the IN clause" -msgstr "" - -#: crates/app/src/ui/clipboard/clipboard_copy.rs -#, rust-format -msgid "" -"Couldn't copy: the column “{column}” holds a value TablePro couldn't read" -msgstr "" - -#: crates/app/src/ui/clipboard/clipboard_copy.rs -#, rust-format -msgid "Couldn't copy: the column “{column}” holds a control character" -msgstr "" - -#: crates/app/src/ui/clipboard/clipboard_copy.rs -msgid "This row has a value that can't be written as SQL" -msgstr "" - -#: crates/app/src/ui/clipboard/clipboard_copy.rs -msgid "This row has no value to put in an INSERT" -msgstr "" - -#: crates/app/src/ui/clipboard/clipboard_copy.rs -msgid "This column has a value that can't be written as SQL" -msgstr "" - -#: crates/app/src/ui/clipboard/clipboard_copy.rs -msgid "Nothing to copy: an IN clause can't carry NULL or binary values" -msgstr "" - -#: crates/app/src/ui/clipboard/clipboard_writer.rs -msgid "Values with a NUL character can't be copied" -msgstr "" - -#: crates/app/src/ui/clipboard/clipboard_writer.rs -msgid "Couldn't copy to the clipboard" -msgstr "" - -#: crates/app/src/ui/connect_dialog/connect_form.rs -msgid "Choose a database file, or create a new one." -msgstr "" - -#: crates/app/src/ui/connect_dialog/connect_form.rs -msgid "Enter the username to log in with." -msgstr "" - -#: crates/app/src/ui/connect_dialog/mod.rs -#: crates/app/src/ui/grid/multiline_editor.rs -#: crates/app/src/ui/workspace/status_pages.rs -#: data/resources/ui/pending-changes-bar.ui data/resources/ui/sql-editor.ui -#: data/resources/ui/structure-tab.ui -msgid "Save" -msgstr "" - -#: crates/app/src/ui/connect_dialog/mod.rs -msgid "Leave password fields empty to keep the saved passwords." -msgstr "" - -#: crates/app/src/ui/connect_dialog/mod.rs data/resources/ui/connect-dialog.ui -msgid "Database" -msgstr "" - -#: crates/app/src/ui/connect_dialog/mod.rs -msgid "Database (optional)" -msgstr "" - -#: crates/app/src/ui/connect_dialog/mod.rs -msgid "Edit Connection" -msgstr "" - -#: crates/app/src/ui/connect_dialog/mod.rs -#, rust-format -msgid "Connect to {name}" -msgstr "" - -#: crates/app/src/ui/connect_dialog/mod.rs -msgid "Checking the certificate files…" -msgstr "" - -#: crates/app/src/ui/connect_dialog/mod.rs -msgid "No driver selected" -msgstr "" - -#: crates/app/src/ui/connect_dialog/mod.rs data/resources/ui/sql-editor.ui -msgid "Stop" -msgstr "" - -#: crates/app/src/ui/connect_dialog/mod.rs -msgid "Stop the Test" -msgstr "" - -#: crates/app/src/ui/connect_dialog/mod.rs -msgid "Connection works" -msgstr "" - -#: crates/app/src/ui/connect_dialog/mod.rs data/resources/ui/connect-dialog.ui -msgid "Test" -msgstr "" - -#: crates/app/src/ui/connect_dialog/mod.rs data/resources/ui/connect-dialog.ui -msgid "Connect Once to Check the Settings" -msgstr "" - -#: crates/app/src/ui/connect_dialog/mod.rs -#: crates/app/src/ui/credential_prompt/prompt_form.rs -#: crates/app/src/ui/ssh_inputs.rs data/resources/ui/connect-dialog.ui -#: data/resources/ui/ssh-section.ui -msgid "Password" -msgstr "" - -#: crates/app/src/ui/connect_dialog/mod.rs -msgid "Windows (Kerberos)" -msgstr "" - -#: crates/app/src/ui/connect_dialog/read_only_row.rs -msgid "The database refuses changes on this connection." -msgstr "" - -#: crates/app/src/ui/connect_dialog/read_only_row.rs -msgid "" -"Changes are refused unless a statement turns read-only off. Use a read-only " -"login for a guarantee." -msgstr "" - -#: crates/app/src/ui/connect_dialog/read_only_row.rs -msgid "SQL Server cannot enforce this. Use a login granted only SELECT." -msgstr "" - -#: crates/app/src/ui/connect_dialog/sqlite_file_row.rs -msgid "Open Database File" -msgstr "" - -#: crates/app/src/ui/connect_dialog/sqlite_file_row.rs -msgid "New Database File" -msgstr "" - -#: crates/app/src/ui/connect_dialog/sqlite_file_row.rs -#: data/resources/ui/sqlite-file-row.ui -msgid "No file chosen" -msgstr "" - -#: crates/app/src/ui/connect_dialog/sqlite_file_row.rs -#, rust-format -msgid "{path}, created when you connect" -msgstr "" - -#: crates/app/src/ui/connect_dialog/sqlite_file_row.rs -msgid "SQLite databases" -msgstr "" - -#: crates/app/src/ui/connect_dialog/sqlite_file_row.rs -#: crates/app/src/ui/connect_dialog/tls_section.rs -#: crates/app/src/ui/ssh_section.rs -msgid "All files" -msgstr "" - -#: crates/app/src/ui/connect_dialog/tls_section.rs -msgid "The system's certificate authorities" -msgstr "" - -#: crates/app/src/ui/connect_dialog/tls_section.rs -#: crates/app/src/ui/structure_tab/foreign_key_dialog.rs -#: crates/app/src/ui/structure_tab/table_choice_object.rs -msgid "None" -msgstr "" - -#: crates/app/src/ui/connect_dialog/tls_section.rs -#: data/resources/ui/tls-section.ui -msgid "Choose CA Certificate" -msgstr "" - -#: crates/app/src/ui/connect_dialog/tls_section.rs -#: data/resources/ui/tls-section.ui -msgid "Choose Client Certificate" -msgstr "" - -#: crates/app/src/ui/connect_dialog/tls_section.rs -#: data/resources/ui/tls-section.ui -msgid "Choose Client Key" -msgstr "" - -#: crates/app/src/ui/connect_dialog/tls_section.rs -msgid "Disable" -msgstr "" - -#: crates/app/src/ui/connect_dialog/tls_section.rs -msgid "Require" -msgstr "" - -#: crates/app/src/ui/connect_dialog/tls_section.rs -msgid "Verify full" -msgstr "" - -#: crates/app/src/ui/connect_dialog/tls_section.rs -msgid "" -"Not encrypted. Anyone on the network can read or change the traffic, " -"password included." -msgstr "" - -#: crates/app/src/ui/connect_dialog/tls_section.rs -msgid "Encrypted. The server certificate is not checked." -msgstr "" - -#: crates/app/src/ui/connect_dialog/tls_section.rs -msgid "Encrypted. The certificate must be valid for the server name." -msgstr "" - -#: crates/app/src/ui/connect_dialog/tls_section.rs -msgid "PEM certificates and keys" -msgstr "" - -#: crates/app/src/ui/connection_list_banner.rs -msgid "Reset…" -msgstr "" - -#: crates/app/src/ui/connection_list_banner.rs -msgid "Saved connections were created by a newer version of TablePro" -msgstr "" - -#: crates/app/src/ui/connection_list_banner.rs -msgid "Saved connections could not be read" -msgstr "" - -#: crates/app/src/ui/connection_list_banner.rs -#, rust-format -msgid "Saved connections were reset. The old file is {name}." -msgstr "" - -#: crates/app/src/ui/credential_prompt/prompt_form.rs -#: data/resources/ui/ssh-section.ui -msgid "Passphrase" -msgstr "" - -#: crates/app/src/ui/credential_prompt/prompt_text.rs -msgid "Password Required" -msgstr "" - -#: crates/app/src/ui/credential_prompt/prompt_text.rs -#, rust-format -msgid "Enter the database password for {target}." -msgstr "" - -#: crates/app/src/ui/credential_prompt/prompt_text.rs -#: crates/app/src/ui/host_key_review.rs -#: crates/app/src/ui/picker/connection_menu.rs -#: data/resources/ui/connect-dialog.ui -msgid "Connect" -msgstr "" - -#: crates/app/src/ui/credential_prompt/prompt_text.rs -#, rust-format -msgid "Enter the SSH password for {target}." -msgstr "" - -#: crates/app/src/ui/credential_prompt/prompt_text.rs -msgid "Passphrase Required" -msgstr "" - -#: crates/app/src/ui/credential_prompt/prompt_text.rs -#, rust-format -msgid "Enter the passphrase for the SSH key {path}." -msgstr "" - -#: crates/app/src/ui/credential_prompt/prompt_text.rs -msgid "Authentication Required" -msgstr "" - -#: crates/app/src/ui/credential_prompt/prompt_text.rs -#, rust-format -msgid "The SSH server {target} asks for more." -msgstr "" - -#: crates/app/src/ui/credential_prompt/prompt_text.rs -msgid "Continue" -msgstr "" - -#: crates/app/src/ui/credential_prompt/prompt_text.rs -#, rust-format -msgid "Trust {host}?" -msgstr "" - -#: crates/app/src/ui/credential_prompt/prompt_text.rs -#, rust-format -msgid "" -"This is the first connection to {host}. Its {algorithm} key fingerprint is " -"{fingerprint}. Connect only if it matches the fingerprint the server's " -"administrator gave you." -msgstr "" - -#: crates/app/src/ui/credential_prompt/prompt_text.rs -#: crates/app/src/ui/host_key_review.rs -msgid "Trust and Connect" -msgstr "" - -#: crates/app/src/ui/credential_prompt/prompt_text.rs -msgid "Remember Passphrase" -msgstr "" - -#: crates/app/src/ui/credential_prompt/prompt_text.rs -#: data/resources/ui/connect-dialog.ui -msgid "Remember Password" -msgstr "" - -#: crates/app/src/ui/credential_prompt/prompt_text.rs -msgid "No password is saved for this connection." -msgstr "" - -#: crates/app/src/ui/credential_prompt/prompt_text.rs -msgid "No passphrase is saved for this key." -msgstr "" - -#: crates/app/src/ui/credential_prompt/prompt_text.rs -msgid "The keyring is locked, so the saved one could not be read." -msgstr "" - -#: crates/app/src/ui/credential_prompt/prompt_text.rs -msgid "No keyring is available, so it cannot be read or saved." -msgstr "" - -#: crates/app/src/ui/credential_prompt/prompt_text.rs -msgid "The server refused the one it was given." -msgstr "" - -#: crates/app/src/ui/credential_prompt/prompt_text.rs -msgid "The one given before did not unlock the key." -msgstr "" - -#: crates/app/src/ui/delete_connection_dialog.rs -#: crates/app/src/ui/saved_queries_dialog.rs -#, rust-format -msgid "Delete “{name}”?" -msgstr "" - -#: crates/app/src/ui/delete_connection_dialog.rs -msgid "" -"The connection, its stored passwords and its saved queries will be removed. " -"This cannot be undone." -msgstr "" - -#: crates/app/src/ui/delete_connection_dialog.rs -msgid "Delete Query History" -msgstr "" - -#: crates/app/src/ui/delete_connection_dialog.rs -msgid "No queries were run on this connection" -msgstr "" - -#: crates/app/src/ui/delete_connection_dialog.rs -#, rust-format -msgid "Removes {n} query run on this connection" -msgid_plural "Removes {n} queries run on this connection" -msgstr[0] "" -msgstr[1] "" - -#: crates/app/src/ui/delete_connection_dialog.rs -msgid "The query history is not available" -msgstr "" - -#: crates/app/src/ui/delete_connection_dialog.rs -#, rust-format -msgid "“{name}” Is Open" -msgstr "" - -#: crates/app/src/ui/delete_connection_dialog.rs -msgid "Disconnect it or close its window, then delete it." -msgstr "" - -#: crates/app/src/ui/delete_connection_dialog.rs -msgid "Show Window" -msgstr "" - -#: crates/app/src/ui/discard_alert.rs -#, rust-format -msgid "" -"{n} unsaved change on this tab will be lost, and Undo cannot bring it back." -msgid_plural "" -"{n} unsaved changes on this tab will be lost, and Undo cannot bring them " -"back." -msgstr[0] "" -msgstr[1] "" - -#: crates/app/src/ui/discard_alert.rs -msgid "Discard Changes?" -msgstr "" - -#: crates/app/src/ui/discard_alert.rs data/resources/ui/pending-changes-bar.ui -#: data/resources/ui/structure-tab.ui -msgid "Discard" -msgstr "" - -#: crates/app/src/ui/editor/completion/sql_completion_provider_imp.rs -msgctxt "completion group" -msgid "Database" -msgstr "" - -#: crates/app/src/ui/editor/editor_file.rs -msgid "Save SQL File" -msgstr "" - -#: crates/app/src/ui/editor/editor_file.rs -msgid "This tab is already being saved." -msgstr "" - -#: crates/app/src/ui/editor/editor_file.rs -#, rust-format -msgid "“{name}” could not be saved: {error}" -msgstr "" - -#: crates/app/src/ui/editor/editor_file.rs -msgid "Could Not Save File" -msgstr "" - -#: crates/app/src/ui/editor/editor_file.rs -#: crates/app/src/ui/export/export_failure_text.rs -#: crates/app/src/ui/grid/row_json_dialog.rs -#: crates/app/src/ui/history_dialog/history_export.rs -#: crates/app/src/workspace/close_guard.rs -msgid "_Close" -msgstr "" - -#: crates/app/src/ui/editor/editor_file.rs -#: crates/app/src/ui/history_dialog/history_export.rs -msgid "SQL files" -msgstr "" - -#: crates/app/src/ui/editor/editor_file.rs -msgid "query" -msgstr "" - -#: crates/app/src/ui/editor/editor_session_slot.rs -#, rust-format -msgid "Could not open a connection for this editor: {error}" -msgstr "" - -#: crates/app/src/ui/editor/find_bar.rs data/resources/shortcuts-dialog.ui -msgid "Previous Match" -msgstr "" - -#: crates/app/src/ui/editor/find_bar.rs data/resources/shortcuts-dialog.ui -msgid "Next Match" -msgstr "" - -#: crates/app/src/ui/editor/find_bar.rs -msgid "Search Options" -msgstr "" - -#: crates/app/src/ui/editor/find_bar.rs data/resources/shortcuts-dialog.ui -msgid "Find and Replace" -msgstr "" - -#: crates/app/src/ui/editor/find_bar.rs -#, rust-format -msgid "Replaced {count} occurrence" -msgid_plural "Replaced {count} occurrences" -msgstr[0] "" -msgstr[1] "" - -#: crates/app/src/ui/editor/find_state.rs -msgid "No results" -msgstr "" - -#: crates/app/src/ui/editor/find_state.rs -#, rust-format -msgid "{position} of {count}" -msgstr "" - -#: crates/app/src/ui/editor/mod.rs -msgid "Query replaced" -msgstr "" - -#: crates/app/src/ui/editor/mod.rs -msgid "There is nothing to run." -msgstr "" - -#: crates/app/src/ui/editor/mod.rs -msgid "No statement at the cursor." -msgstr "" - -#: crates/app/src/ui/editor/mod.rs -msgid "Connect to a database to run a query." -msgstr "" - -#: crates/app/src/ui/editor/mod.rs -msgid "Running…" -msgstr "" - -#: crates/app/src/ui/editor/mod.rs -msgctxt "completion group" -msgid "Document" -msgstr "" - -#: crates/app/src/ui/editor/mod.rs -msgid "Replace the Editor Contents?" -msgstr "" - -#: crates/app/src/ui/editor/mod.rs -msgid "" -"The file is loaded into this tab, and what is written here now is replaced. " -"Undo brings it back." -msgstr "" - -#: crates/app/src/ui/editor/mod.rs data/resources/ui/find-bar.ui -msgid "Replace" -msgstr "" - -#: crates/app/src/ui/editor/mod.rs -msgid "Open SQL File" -msgstr "" - -#: crates/app/src/ui/editor/mod.rs -#, rust-format -msgid "Ln {line}, Col {column}" -msgstr "" - -#: crates/app/src/ui/editor/mod.rs -msgid "Run Selection" -msgstr "" - -#: crates/app/src/ui/editor/mod.rs -msgid "Run the Selected Text" -msgstr "" - -#: crates/app/src/ui/editor/mod.rs data/resources/ui/sql-editor.ui -msgid "Run" -msgstr "" - -#: crates/app/src/ui/editor/mod.rs data/resources/ui/sql-editor.ui -msgid "Run the Script" -msgstr "" - -#: crates/app/src/ui/editor/mod.rs crates/app/src/ui/editor/tests.rs -msgid "query-results" -msgstr "" - -#: crates/app/src/ui/editor/mod.rs -#: crates/app/src/ui/history_dialog/history_formatting.rs -msgid "Empty Query" -msgstr "" - -#: crates/app/src/ui/editor/result_widgets.rs -#: crates/app/src/ui/editor/results_pane.rs -#, rust-format -msgid "{n} Row Affected" -msgid_plural "{n} Rows Affected" -msgstr[0] "" -msgstr[1] "" - -#: crates/app/src/ui/editor/result_widgets.rs -#: crates/app/src/ui/editor/results_pane.rs -msgid "Command Completed" -msgstr "" - -#: crates/app/src/ui/editor/result_widgets.rs -#: crates/app/src/ui/editor/results_pane.rs -msgid "Notice" -msgstr "" - -#: crates/app/src/ui/editor/result_widgets.rs -msgid "Statement Failed" -msgstr "" - -#: crates/app/src/ui/editor/result_widgets.rs -msgid "Go to Error" -msgstr "" - -#: crates/app/src/ui/editor/result_widgets.rs -msgid "Check the Script" -msgstr "" - -#: crates/app/src/ui/editor/result_widgets.rs -msgid "Query Stopped" -msgstr "" - -#: crates/app/src/ui/editor/result_widgets.rs -msgid "The running query was stopped." -msgstr "" - -#: crates/app/src/ui/editor/result_widgets.rs -msgid "" -"The statement ran past the time limit set in Preferences, so the server " -"stopped it." -msgstr "" - -#: crates/app/src/ui/editor/result_widgets.rs -msgid "" -"The statement ran past the time limit set in Preferences. The server may " -"still be running it." -msgstr "" - -#: crates/app/src/ui/editor/result_widgets.rs -msgid "Query Timed Out" -msgstr "" - -#: crates/app/src/ui/editor/result_widgets.rs -#: crates/app/src/ui/editor/results_pane.rs -msgid "Not Run" -msgstr "" - -#: crates/app/src/ui/editor/result_widgets.rs -msgid "Skipped because an earlier statement failed or the run was stopped." -msgstr "" - -#: crates/app/src/ui/editor/results_pane.rs -msgid "Error" -msgstr "" - -#: crates/app/src/ui/editor/results_pane.rs -msgid "Warning" -msgstr "" - -#: crates/app/src/ui/editor/results_pane.rs -msgid "Stopped" -msgstr "" - -#: crates/app/src/ui/editor/results_pane.rs -msgid "Timed Out" -msgstr "" - -#: crates/app/src/ui/editor/run_history.rs -msgid "The statement ran past the time limit set in Preferences." -msgstr "" - -#: crates/app/src/ui/editor/run_log.rs -#, rust-format -msgid "" -"{error} This tab's connection was lost, so the server rolled back its open " -"transaction." -msgstr "" - -#: crates/app/src/ui/editor/run_log.rs -#, rust-format -msgid "{error} This tab's connection was lost; the next run opens a new one." -msgstr "" - -#: crates/app/src/ui/editor/run_log.rs -#, rust-format -msgid "{n} result in {ms} ms" -msgid_plural "{n} results in {ms} ms" -msgstr[0] "" -msgstr[1] "" - -#: crates/app/src/ui/editor/run_log.rs -#, rust-format -msgid "{n} failed" -msgid_plural "{n} failed" -msgstr[0] "" -msgstr[1] "" - -#: crates/app/src/ui/editor/script_runner.rs -msgid "" -"This tab's connection was lost, so the server rolled back its open " -"transaction. Nothing was run; run again to open a new connection." -msgstr "" - -#: crates/app/src/ui/editor/sql_file.rs -msgid "Only regular files can be opened in the editor." -msgstr "" - -#: crates/app/src/ui/editor/sql_file.rs -msgid "That file is too large to open in the editor." -msgstr "" - -#: crates/app/src/ui/editor/sql_file.rs -msgid "That file is not UTF-8 text." -msgstr "" - -#: crates/app/src/ui/editor/sql_file.rs -#: crates/app/src/ui/session_window/connections.rs -#: crates/app/src/ui/workspace/import.rs -msgid "That file could not be read." -msgstr "" - -#: crates/app/src/ui/editor/transaction_dirty.rs -msgid "Transaction open" -msgstr "" - -#: crates/app/src/ui/editor/transaction_dirty.rs -msgid "Transaction failed, roll back to continue" -msgstr "" - -#: crates/app/src/ui/error_text/ddl.rs -msgid "This database can't make this change." -msgstr "" - -#: crates/app/src/ui/error_text/ddl.rs -msgid "" -"This column is part of the table's sorting or partition key, which only " -"rebuilding the table can change." -msgstr "" - -#: crates/app/src/ui/error_text/ddl.rs -msgid "The database computes this column." -msgstr "" - -#: crates/app/src/ui/error_text/ddl.rs -msgid "The database numbers this column, so it has no default." -msgstr "" - -#: crates/app/src/ui/error_text/ddl.rs -msgid "Only an integer column can number itself." -msgstr "" - -#: crates/app/src/ui/error_text/ddl.rs -msgid "" -"The database numbers this column while it is the table's integer primary " -"key. Change its type or the primary key to stop it." -msgstr "" - -#: crates/app/src/ui/error_text/ddl.rs -#, rust-format -msgid "This column has an attribute TablePro can't restate: {attribute}" -msgstr "" - -#: crates/app/src/ui/error_text/ddl.rs -#, rust-format -msgid "Still used by {users}." -msgstr "" - -#: crates/app/src/ui/error_text/ddl.rs -#, rust-format -msgid "Foreign keys on other tables depend on it: {keys}" -msgstr "" - -#: crates/app/src/ui/error_text/ddl.rs -msgid "The database didn't report this column's full definition." -msgstr "" - -#: crates/app/src/ui/error_text/ddl.rs -#, rust-format -msgid "This column's {attribute} doesn't allow this change." -msgstr "" - -#: crates/app/src/ui/error_text/ddl.rs -#, rust-format -msgid "" -"Its definition names column {column}, which this save renames. Save the " -"rename on its own first." -msgstr "" - -#: crates/app/src/ui/error_text/ddl.rs -#, rust-format -msgid "" -"Trigger {triggers} inserts into this table without naming its columns, so " -"adding or removing a column would break it." -msgid_plural "" -"Triggers {triggers} insert into this table without naming its columns, so " -"adding or removing a column would break them." -msgstr[0] "" -msgstr[1] "" - -#: crates/app/src/ui/error_text/ddl.rs -msgid "Table name is required." -msgstr "" - -#: crates/app/src/ui/error_text/ddl.rs -msgid "At least one column is required." -msgstr "" - -#: crates/app/src/ui/error_text/ddl.rs -msgid "Every column needs a name." -msgstr "" - -#: crates/app/src/ui/error_text/ddl.rs -#, rust-format -msgid "Duplicate column name: {name}" -msgstr "" - -#: crates/app/src/ui/error_text/ddl.rs -#, rust-format -msgid "Column {name} needs a type." -msgstr "" - -#: crates/app/src/ui/error_text/ddl.rs -#, rust-format -msgid "Primary key columns must be NOT NULL: {name}" -msgstr "" - -#: crates/app/src/ui/error_text/ddl.rs -#, rust-format -msgid "Column {column} is removed but {users} still use it. Remove them first." -msgstr "" - -#: crates/app/src/ui/error_text/ddl.rs -#: crates/app/src/ui/structure_tab/index_draft.rs -msgid "Index name is required." -msgstr "" - -#: crates/app/src/ui/error_text/ddl.rs -#, rust-format -msgid "Index {name} has no columns." -msgstr "" - -#: crates/app/src/ui/error_text/ddl.rs -#: crates/app/src/ui/structure_tab/foreign_key_draft.rs -msgid "Foreign key name is required." -msgstr "" - -#: crates/app/src/ui/error_text/ddl.rs -#, rust-format -msgid "Foreign key {name} needs as many referenced columns as source columns." -msgstr "" - -#: crates/app/src/ui/error_text/ddl.rs -msgid "Fix the highlighted fields first." -msgstr "" - -#: crates/app/src/ui/error_text/ddl.rs -#, rust-format -msgid "Column {column} can't be changed this way. {reason}" -msgstr "" - -#: crates/app/src/ui/error_text/ddl.rs -msgid "" -"A NOT NULL column needs a default here, since the rows already in the table " -"need a value." -msgstr "" - -#: crates/app/src/ui/error_text/ddl.rs -#, rust-format -msgid "The type of column {column} can't be used. {reason}" -msgstr "" - -#: crates/app/src/ui/error_text/ddl.rs -#, rust-format -msgid "The default of column {column} can't be written as SQL. {reason}" -msgstr "" - -#: crates/app/src/ui/error_text/ddl.rs -#, rust-format -msgid "The database didn't report the type of column {column}." -msgstr "" - -#: crates/app/src/ui/error_text/ddl.rs -#, rust-format -msgid "This database doesn't take {action} on a foreign key." -msgstr "" - -#: crates/app/src/ui/error_text/ddl.rs -msgid "The database gave no CREATE statement for this table." -msgstr "" - -#: crates/app/src/ui/error_text/ddl.rs -#, rust-format -msgid "" -"The table can't be rebuilt: the stored statement of {name}, which uses it, " -"can't be run again." -msgstr "" - -#: crates/app/src/ui/error_text/ddl.rs -msgid "" -"The changes were edited or the connection changed during the review, so " -"nothing was saved. Save again to review them." -msgstr "" - -#: crates/app/src/ui/error_text/driver.rs -msgid "The secure connection failed." -msgstr "" - -#: crates/app/src/ui/error_text/driver.rs -msgid "The server refused the request." -msgstr "" - -#: crates/app/src/ui/error_text/driver.rs -#: crates/app/src/ui/error_text/operation.rs -msgid "Stopped." -msgstr "" - -#: crates/app/src/ui/error_text/driver.rs -msgid "The connection was closed. Try reconnecting." -msgstr "" - -#: crates/app/src/ui/error_text/driver.rs -msgid "" -"This tab is still running a statement. Stop it or wait for it to finish." -msgstr "" - -#: crates/app/src/ui/error_text/driver.rs -msgid "" -"The server has no room for another connection right now. Try again shortly." -msgstr "" - -#: crates/app/src/ui/error_text/driver.rs -msgid "The connection settings cannot be used." -msgstr "" - -#: crates/app/src/ui/error_text/driver.rs -msgid "Enter the server's host name." -msgstr "" - -#: crates/app/src/ui/error_text/driver.rs -msgid "The host name has spaces or control characters in it." -msgstr "" - -#: crates/app/src/ui/error_text/driver.rs -msgid "The port must be a number from 1 to 65535." -msgstr "" - -#: crates/app/src/ui/error_text/driver.rs -msgid "Use a full path, starting with /." -msgstr "" - -#: crates/app/src/ui/error_text/driver.rs -msgid "This database does not offer that TLS mode." -msgstr "" - -#: crates/app/src/ui/error_text/driver.rs -msgid "A CA certificate needs Verify full and a database that accepts one." -msgstr "" - -#: crates/app/src/ui/error_text/driver.rs -msgid "" -"A client certificate needs TLS turned on and a database that accepts one." -msgstr "" - -#: crates/app/src/ui/error_text/driver.rs -msgid "A client certificate needs both its certificate file and its key file." -msgstr "" - -#: crates/app/src/ui/error_text/driver.rs -#, rust-format -msgid "The CA certificate {path} cannot be used: {problem}" -msgstr "" - -#: crates/app/src/ui/error_text/driver.rs -#, rust-format -msgid "The client certificate {path} cannot be used: {problem}" -msgstr "" - -#: crates/app/src/ui/error_text/driver.rs -msgid "The TLS server name is not a valid host name or IP address." -msgstr "" - -#: crates/app/src/ui/error_text/driver.rs -msgid "" -"This database cannot check the certificate against another server name here." -msgstr "" - -#: crates/app/src/ui/error_text/driver.rs -msgid "This database does not support that way of logging in." -msgstr "" - -#: crates/app/src/ui/error_text/driver.rs -msgid "Enter the name of the database to open." -msgstr "" - -#: crates/app/src/ui/error_text/driver.rs -#, rust-format -msgid "{host}:{port} refused the connection. Is the database running?" -msgstr "" - -#: crates/app/src/ui/error_text/driver.rs -#, rust-format -msgid "Could not look up {host}." -msgstr "" - -#: crates/app/src/ui/error_text/driver.rs -#, rust-format -msgid "Could not reach {host}:{port}." -msgstr "" - -#: crates/app/src/ui/error_text/driver.rs -msgid "The server could not be reached." -msgstr "" - -#: crates/app/src/ui/error_text/driver.rs -#, rust-format -msgid "Username or password is wrong. The server said: {detail}" -msgstr "" - -#: crates/app/src/ui/error_text/driver.rs -#, rust-format -msgid "The server refused this login. The server said: {detail}" -msgstr "" - -#: crates/app/src/ui/error_text/driver.rs -#, rust-format -msgid "" -"Kerberos login failed: {detail}. Check that klist shows a valid ticket, run " -"kinit if it does not, and make sure the server's SPN matches the host you " -"typed." -msgstr "" - -#: crates/app/src/ui/error_text/driver.rs -msgid "Username or password is wrong." -msgstr "" - -#: crates/app/src/ui/error_text/driver.rs -#, rust-format -msgid "The server refused the write: {message}" -msgstr "" - -#: crates/app/src/ui/error_text/driver.rs -msgid "" -"This connection is read-only. Reopen it without read-only mode to make " -"changes." -msgstr "" - -#: crates/app/src/ui/error_text/driver.rs -#, rust-format -msgid "Query failed ({code}): {message}" -msgstr "" - -#: crates/app/src/ui/error_text/driver.rs -#, rust-format -msgid "Query failed: {message}" -msgstr "" - -#: crates/app/src/ui/error_text/driver.rs -#, rust-format -msgid "Hint: {hint}" -msgstr "" - -#: crates/app/src/ui/error_text/driver.rs -#, rust-format -msgid "SQLSTATE {code}" -msgstr "" - -#: crates/app/src/ui/error_text/driver.rs -#, rust-format -msgid "MySQL error {code}" -msgstr "" - -#: crates/app/src/ui/error_text/driver.rs -#, rust-format -msgid "SQL Server error {code}" -msgstr "" - -#: crates/app/src/ui/error_text/driver.rs -#, rust-format -msgid "ClickHouse code {code}" -msgstr "" - -#: crates/app/src/ui/error_text/driver.rs -#, rust-format -msgid "SQLite error {code}" -msgstr "" - -#: crates/app/src/ui/error_text/driver.rs -msgid "The server took too long to answer." -msgstr "" - -#: crates/app/src/ui/error_text/driver.rs -msgid "The server did not answer the connection in time." -msgstr "" - -#: crates/app/src/ui/error_text/driver.rs -msgid "The server did not finish the login in time." -msgstr "" - -#: crates/app/src/ui/error_text/driver.rs -msgid "The SSH server did not finish the handshake in time." -msgstr "" - -#: crates/app/src/ui/error_text/driver.rs -msgid "The SSH server did not open the tunnel to the database in time." -msgstr "" - -#: crates/app/src/ui/error_text/driver.rs -msgid "" -"Another session holds a lock this needs. Try again when it has finished." -msgstr "" - -#: crates/app/src/ui/error_text/driver.rs -msgid "The statement ran past its time limit, so the server stopped it." -msgstr "" - -#: crates/app/src/ui/error_text/driver.rs -msgid "" -"The statement ran past its time limit. The server may still be running it." -msgstr "" - -#: crates/app/src/ui/error_text/driver.rs -msgid "The server did not answer a check in time." -msgstr "" - -#: crates/app/src/ui/error_text/driver.rs -#, rust-format -msgid "" -"Save failed at statement {n}: {error}. The transaction was rolled back; no " -"rows were changed." -msgstr "" - -#: crates/app/src/ui/error_text/driver.rs -#, rust-format -msgid "" -"The save matched {actual} rows where it expected {expected}, so the row is " -"not the one that was loaded. Nothing was changed; reload and try again." -msgstr "" - -#: crates/app/src/ui/error_text/driver.rs -#, rust-format -msgid "" -"{applied} of the save's statements were applied before statement {n} failed, " -"and this database has no transaction to undo them. Reload to see what the " -"server has." -msgstr "" - -#: crates/app/src/ui/error_text/driver.rs -msgid "" -"The connection was lost after the save was sent, so whether it was applied " -"is not known. Reload to see what the server has." -msgstr "" - -#: crates/app/src/ui/error_text/driver.rs -#, rust-format -msgid "No database file at {path}." -msgstr "" - -#: crates/app/src/ui/error_text/driver.rs -#, rust-format -msgid "No permission to open {path}." -msgstr "" - -#: crates/app/src/ui/error_text/driver.rs -#, rust-format -msgid "{path} is not a database file." -msgstr "" - -#: crates/app/src/ui/error_text/driver.rs -msgid "The database file cannot be used." -msgstr "" - -#: crates/app/src/ui/error_text/driver.rs -msgid "" -"This database does not report how many rows a statement changed, so the save " -"cannot be checked. Use a table with a primary key." -msgstr "" - -#: crates/app/src/ui/error_text/driver.rs -#, rust-format -msgid "The driver could not read a value in column {column}." -msgstr "" - -#: crates/app/src/ui/error_text/driver.rs -msgid "The driver could not read the server's reply." -msgstr "" - -#: crates/app/src/ui/error_text/driver.rs -msgid "The driver hit an internal error." -msgstr "" - -#: crates/app/src/ui/error_text/edit.rs -msgid "This column needs a value" -msgstr "" - -#: crates/app/src/ui/error_text/edit.rs -msgid "Enter a whole number" -msgstr "" - -#: crates/app/src/ui/error_text/edit.rs -#, rust-format -msgid "Enter a whole number from {min} to {max}" -msgstr "" - -#: crates/app/src/ui/error_text/edit.rs -msgid "Enter a number" -msgstr "" - -#: crates/app/src/ui/error_text/edit.rs -msgid "Enter a decimal number, such as 12.50" -msgstr "" - -#: crates/app/src/ui/error_text/edit.rs -#, rust-format -msgid "This column keeps at most {n} digit" -msgid_plural "This column keeps at most {n} digits" -msgstr[0] "" -msgstr[1] "" - -#: crates/app/src/ui/error_text/edit.rs -#, rust-format -msgid "This column keeps at most {n} decimal place" -msgid_plural "This column keeps at most {n} decimal places" -msgstr[0] "" -msgstr[1] "" - -#: crates/app/src/ui/error_text/edit.rs -msgid "Enter true or false" -msgstr "" - -#: crates/app/src/ui/error_text/edit.rs -msgid "Enter a UUID" -msgstr "" - -#: crates/app/src/ui/error_text/edit.rs -msgid "Enter valid JSON: it ends too early" -msgstr "" - -#: crates/app/src/ui/error_text/edit.rs -#, rust-format -msgid "Enter valid JSON: check line {line}, column {column}" -msgstr "" - -#: crates/app/src/ui/error_text/edit.rs -msgid "Enter a date as YYYY-MM-DD" -msgstr "" - -#: crates/app/src/ui/error_text/edit.rs -msgid "Enter a time as HH:MM:SS" -msgstr "" - -#: crates/app/src/ui/error_text/edit.rs -msgid "This time is outside the range the column can hold" -msgstr "" - -#: crates/app/src/ui/error_text/edit.rs -msgid "Enter a date and time as YYYY-MM-DD HH:MM:SS" -msgstr "" - -#: crates/app/src/ui/error_text/edit.rs -msgid "Add a time zone offset, such as +02:00" -msgstr "" - -#: crates/app/src/ui/error_text/edit.rs -msgid "Enter an interval, such as 1 day 02:00:00" -msgstr "" - -#: crates/app/src/ui/error_text/edit.rs -msgid "Enter bits as 0 and 1" -msgstr "" - -#: crates/app/src/ui/error_text/edit.rs -#, rust-format -msgid "Enter exactly {n} bit" -msgid_plural "Enter exactly {n} bits" -msgstr[0] "" -msgstr[1] "" - -#: crates/app/src/ui/error_text/edit.rs -msgid "Enter one of the values this column allows" -msgstr "" - -#: crates/app/src/ui/error_text/edit.rs -msgid "Binary values can't be edited here" -msgstr "" - -#: crates/app/src/ui/error_text/edit.rs -msgid "Spatial values can't be edited here" -msgstr "" - -#: crates/app/src/ui/error_text/edit.rs -msgid "This value couldn't be read, so it can't be edited" -msgstr "" - -#: crates/app/src/ui/error_text/edit.rs -msgid "Arrays and composite values can't be edited here" -msgstr "" - -#: crates/app/src/ui/error_text/edit.rs -msgid "Values whose type changes by row can't be edited here" -msgstr "" - -#: crates/app/src/ui/error_text/files.rs -#, rust-format -msgid "Could not write {path}: the disk is full." -msgstr "" - -#: crates/app/src/ui/error_text/files.rs -#, rust-format -msgid "Could not write {path}: the disk is read-only." -msgstr "" - -#: crates/app/src/ui/error_text/files.rs -#, rust-format -msgid "Could not write {path}: the file is too large." -msgstr "" - -#: crates/app/src/ui/error_text/files.rs -#, rust-format -msgid "Could not write {path}." -msgstr "" - -#: crates/app/src/ui/error_text/files.rs -msgid "the file does not exist" -msgstr "" - -#: crates/app/src/ui/error_text/files.rs -msgid "TablePro is not allowed to read it" -msgstr "" - -#: crates/app/src/ui/error_text/files.rs -msgid "the file could not be read" -msgstr "" - -#: crates/app/src/ui/error_text/files.rs -msgid "it is not a plain file" -msgstr "" - -#: crates/app/src/ui/error_text/files.rs -#, rust-format -msgid "it is larger than {size}" -msgstr "" - -#: crates/app/src/ui/error_text/files.rs -msgid "it holds no certificates" -msgstr "" - -#: crates/app/src/ui/error_text/files.rs -msgid "a certificate in it is not valid" -msgstr "" - -#: crates/app/src/ui/error_text/files.rs -#, rust-format -msgid "it holds {count} certificate, and only one is allowed" -msgid_plural "it holds {count} certificates, and only one is allowed" -msgstr[0] "" -msgstr[1] "" - -#: crates/app/src/ui/error_text/files.rs -msgid "it holds no private key" -msgstr "" - -#: crates/app/src/ui/error_text/files.rs -msgid "its private key is not valid" -msgstr "" - -#: crates/app/src/ui/error_text/operation.rs -#, rust-format -msgid "TablePro hit an internal error: {detail}" -msgstr "" - -#: crates/app/src/ui/error_text/operation.rs -msgid "The connection is closed." -msgstr "" - -#: crates/app/src/ui/error_text/operation.rs -msgid "" -"No password is saved for this connection, and none was entered. Connect " -"again to type it." -msgstr "" - -#: crates/app/src/ui/error_text/operation.rs -#, rust-format -msgid "This build of TablePro has no {driver} driver." -msgstr "" - -#: crates/app/src/ui/error_text/operation.rs -msgid "The connection was cancelled." -msgstr "" - -#: crates/app/src/ui/error_text/operation.rs -#, rust-format -msgid "This change cannot be saved: {reason}" -msgstr "" - -#: crates/app/src/ui/error_text/operation.rs -#: crates/app/src/ui/error_text/statement.rs -#, rust-format -msgid "This filter cannot be applied: {reason}" -msgstr "" - -#: crates/app/src/ui/error_text/operation.rs -#, rust-format -msgid "This page of the table cannot be read: {reason}" -msgstr "" - -#: crates/app/src/ui/error_text/operation.rs -msgid "" -"Rows in this table cannot be edited, because nothing identifies a single " -"row. Add a primary key to edit them." -msgstr "" - -#: crates/app/src/ui/error_text/operation.rs -msgid "No changes to save." -msgstr "" - -#: crates/app/src/ui/error_text/operation.rs -msgid "" -"Part of this row's key could not be read from the server, so the row cannot " -"be changed." -msgstr "" - -#: crates/app/src/ui/error_text/saved_connection.rs -#: crates/app/src/ui/session_window/connections.rs -#: crates/app/src/ui/session_window/locate_file.rs -#: crates/app/src/ui/session_window/mod.rs -#: crates/app/src/ui/session_window/session_restore.rs -msgid "The connection was deleted." -msgstr "" - -#: crates/app/src/ui/error_text/saved_connection.rs -msgid "The saved connections could not be read, so nothing was changed." -msgstr "" - -#: crates/app/src/ui/error_text/saved_connection.rs -#, rust-format -msgid "The saved connections could not be written: {reason}" -msgstr "" - -#: crates/app/src/ui/error_text/script.rs -#, rust-format -msgid "" -"The string starting on line {line} is never closed. It is sent as written." -msgstr "" - -#: crates/app/src/ui/error_text/script.rs -#, rust-format -msgid "" -"The quoted name starting on line {line} is never closed. It is sent as " -"written." -msgstr "" - -#: crates/app/src/ui/error_text/script.rs -#, rust-format -msgid "" -"The comment starting on line {line} is never closed. It is sent as written." -msgstr "" - -#: crates/app/src/ui/error_text/script.rs -#, rust-format -msgid "" -"The dollar-quoted string starting on line {line} is never closed. It is sent " -"as written." -msgstr "" - -#: crates/app/src/ui/error_text/secret.rs -msgid "" -"No keyring is running, so saved passwords cannot be read. Start a keyring, " -"or enter the password by hand." -msgstr "" - -#: crates/app/src/ui/error_text/secret.rs -msgid "" -"The secret portal is unavailable, so saved passwords cannot be read inside " -"the sandbox. Check that xdg-desktop-portal and a keyring are running, or " -"enter the password by hand." -msgstr "" - -#: crates/app/src/ui/error_text/secret.rs -msgid "The keyring is locked. Unlock it and try again." -msgstr "" - -#: crates/app/src/ui/error_text/secret.rs -msgid "The keyring stayed locked because the unlock prompt was dismissed." -msgstr "" - -#: crates/app/src/ui/error_text/secret.rs -msgid "The stored password is not readable text. Enter it again to replace it." -msgstr "" - -#: crates/app/src/ui/error_text/secret.rs -#, rust-format -msgid "The keyring reported: {detail}" -msgstr "" - -#: crates/app/src/ui/error_text/secret.rs -msgid "The keyring failed without giving a reason." -msgstr "" - -#: crates/app/src/ui/error_text/ssh.rs -#, rust-format -msgid "" -"The OpenSSH client {program} is not installed. Install openssh-client to " -"connect over SSH." -msgstr "" - -#: crates/app/src/ui/error_text/ssh.rs -#, rust-format -msgid "" -"TablePro's SSH helper is missing at {program}. Reinstall TablePro to connect " -"over SSH." -msgstr "" - -#: crates/app/src/ui/error_text/ssh.rs -#, rust-format -msgid "The SSH host or jump host is not valid: {detail}" -msgstr "" - -#: crates/app/src/ui/error_text/ssh.rs -#, rust-format -msgid "" -"ssh refused the configuration. Check ~/.ssh/config for this host: {detail}" -msgstr "" - -#: crates/app/src/ui/error_text/ssh.rs -msgid "" -"The runtime directory path is too long for an SSH control socket. Use a " -"shorter XDG_RUNTIME_DIR." -msgstr "" - -#: crates/app/src/ui/error_text/ssh.rs -#, rust-format -msgid "The SSH runtime directory {path} cannot be used safely: {detail}" -msgstr "" - -#: crates/app/src/ui/error_text/ssh.rs -#, rust-format -msgid "The host key of {host} was not trusted, so the connection was not made." -msgstr "" - -#: crates/app/src/ui/error_text/ssh.rs -#, rust-format -msgid "" -"The SSH configuration for {host} accepts only keys already in known_hosts. " -"Add the server's key to known_hosts outside TablePro, then retry." -msgstr "" - -#: crates/app/src/ui/error_text/ssh.rs -#, rust-format -msgid "{host} is not in known_hosts. Connect once to review and trust its key." -msgstr "" - -#: crates/app/src/ui/error_text/ssh.rs -#, rust-format -msgid "" -"{host} is not in known_hosts (key {fingerprint}). Connect once to review and " -"trust its key." -msgstr "" - -#: crates/app/src/ui/error_text/ssh.rs -#, rust-format -msgid "" -"The host key of {host} changed since it was trusted ({file}, line {line}). " -"This can mean someone is intercepting the connection; check with the " -"server's administrator before removing the old key." -msgstr "" - -#: crates/app/src/ui/error_text/ssh.rs -#, rust-format -msgid "The host key of {host} is revoked, so the connection was refused." -msgstr "" - -#: crates/app/src/ui/error_text/ssh.rs -#, rust-format -msgid "" -"The SSH server {host} refused the login for {user}. Check the key, the agent " -"or the password." -msgstr "" - -#: crates/app/src/ui/error_text/ssh.rs -msgid "The SSH login was cancelled." -msgstr "" - -#: crates/app/src/ui/error_text/ssh.rs -#, rust-format -msgid "The SSH server would not forward to {target}: {detail}" -msgstr "" - -#: crates/app/src/ui/error_text/ssh.rs -#, rust-format -msgid "The SSH server could not reach {target}: {detail}" -msgstr "" - -#: crates/app/src/ui/error_text/ssh.rs -#, rust-format -msgid "The SSH connection ended: {detail}" -msgstr "" - -#: crates/app/src/ui/error_text/ssh.rs -#, rust-format -msgid "ssh printed something unexpected: {detail}" -msgstr "" - -#: crates/app/src/ui/error_text/ssh.rs -#, rust-format -msgid "SSH failed: {detail}" -msgstr "" - -#: crates/app/src/ui/error_text/statement.rs -msgid "a value does not match its column's type" -msgstr "" - -#: crates/app/src/ui/error_text/statement.rs -#, rust-format -msgid "the database did not report the type of column {column}" -msgstr "" - -#: crates/app/src/ui/error_text/statement.rs -msgid "a value could not be read from the server, so it cannot be written back" -msgstr "" - -#: crates/app/src/ui/error_text/statement.rs -msgid "this database cannot take one of the values" -msgstr "" - -#: crates/app/src/ui/error_text/statement.rs -#, rust-format -msgid "it names column {column}, which the table does not have" -msgstr "" - -#: crates/app/src/ui/error_text/statement.rs -msgid "a rule has no value" -msgstr "" - -#: crates/app/src/ui/error_text/statement.rs -msgid "a between rule needs both of its values" -msgstr "" - -#: crates/app/src/ui/error_text/statement.rs -msgid "a one-of rule needs at least one value" -msgstr "" - -#: crates/app/src/ui/error_text/statement.rs -msgid "a rule's value does not fit its operator" -msgstr "" - -#: crates/app/src/ui/error_text/statement.rs -#, rust-format -msgid "This filter cannot be applied. Value for {column}: {reason}" -msgstr "" - -#: crates/app/src/ui/error_text/statement.rs -#, rust-format -msgid "column {column} does not allow one of its operators" -msgstr "" - -#: crates/app/src/ui/error_text/statement.rs -#, rust-format -msgid "This SQL filter cannot be applied. {reason}" -msgstr "" - -#: crates/app/src/ui/error_text/statement.rs -msgid "the table has no columns to select" -msgstr "" - -#: crates/app/src/ui/error_text/statement.rs -msgid "the sort names a column the table does not have" -msgstr "" - -#: crates/app/src/ui/error_text/statement.rs -msgid "this position cannot be reached by this way of paging" -msgstr "" - -#: crates/app/src/ui/error_text/statement.rs -msgid "the row to page from has an empty key" -msgstr "" - -#: crates/app/src/ui/error_text/statement.rs -msgid "the row to page from has no address that can be read" -msgstr "" - -#: crates/app/src/ui/error_text/statement.rs -msgid "the page came back with other columns than were asked for" -msgstr "" - -#: crates/app/src/ui/error_text/statement.rs -msgid "the query could not be built" -msgstr "" - -#: crates/app/src/ui/error_text/statement.rs -#, rust-format -msgid "the row key names column {column}, which the table does not have" -msgstr "" - -#: crates/app/src/ui/error_text/statement.rs -msgid "the row key does not have one value for each key column" -msgstr "" - -#: crates/app/src/ui/error_text/statement.rs -msgid "the change could not be written as SQL" -msgstr "" - -#: crates/app/src/ui/error_text/syntax.rs -msgid "Enter a type." -msgstr "" - -#: crates/app/src/ui/error_text/syntax.rs -msgid "Remove the comment. It would hide the rest of the statement." -msgstr "" - -#: crates/app/src/ui/error_text/syntax.rs -msgid "This database does not read this as one type." -msgstr "" - -#: crates/app/src/ui/error_text/syntax.rs -msgid "Enter an expression." -msgstr "" - -#: crates/app/src/ui/error_text/syntax.rs -msgid "This database does not read this as one expression." -msgstr "" - -#: crates/app/src/ui/error_text/syntax.rs -msgid "This database has no way to write this value in SQL." -msgstr "" - -#: crates/app/src/ui/error_text/syntax.rs -msgid "" -"The value could not be read from the server, so it cannot be written back." -msgstr "" - -#: crates/app/src/ui/error_text/syntax.rs -#, rust-format -msgid "Use at most {max} character." -msgid_plural "Use at most {max} characters." -msgstr[0] "" -msgstr[1] "" - -#: crates/app/src/ui/error_text/syntax.rs -msgid "" -"Remove the backslash. This database reads it differently from one session to " -"another." -msgstr "" - -#: crates/app/src/ui/error_text/tls.rs -msgid "" -"The server's certificate was signed by an authority this machine does not " -"know. Choose a CA certificate for this connection." -msgstr "" - -#: crates/app/src/ui/error_text/tls.rs -msgid "" -"The server's certificate is for a different name. Set the TLS server name to " -"the one on the certificate." -msgstr "" - -#: crates/app/src/ui/error_text/tls.rs -msgid "The server's certificate has expired." -msgstr "" - -#: crates/app/src/ui/error_text/tls.rs -msgid "The server's certificate is not valid yet." -msgstr "" - -#: crates/app/src/ui/error_text/tls.rs -msgid "The server's certificate was revoked." -msgstr "" - -#: crates/app/src/ui/error_text/tls.rs -msgid "The server does not accept TLS on this port." -msgstr "" - -#: crates/app/src/ui/error_text/tls.rs -msgid "The server requires TLS. Turn TLS on for this connection." -msgstr "" - -#: crates/app/src/ui/error_text/tls.rs -#, rust-format -msgid "The server ended the secure handshake: {detail}" -msgstr "" - -#: crates/app/src/ui/error_text/tls.rs -msgid "The chosen CA certificate file could not be read." -msgstr "" - -#: crates/app/src/ui/error_text/tls.rs -msgid "The client certificate or key could not be read." -msgstr "" - -#: crates/app/src/ui/error_text/tls.rs -#, rust-format -msgid "TLS failed: {detail}" -msgstr "" - -#: crates/app/src/ui/error_text/tls_remedy.rs -msgid "Choose CA Certificate…" -msgstr "" - -#: crates/app/src/ui/error_text/tls_remedy.rs -msgid "Set TLS Server Name" -msgstr "" - -#: crates/app/src/ui/error_text/unsupported.rs -msgid "" -"This database is reached over the network. It cannot open a database file." -msgstr "" - -#: crates/app/src/ui/error_text/unsupported.rs -msgid "" -"This database opens a file. It cannot connect to a server over the network." -msgstr "" - -#: crates/app/src/ui/error_text/unsupported.rs -msgid "This database cannot turn foreign key checks off for a save." -msgstr "" - -#: crates/app/src/ui/error_text/unsupported.rs -#, rust-format -msgid "This needs {version} or later." -msgstr "" - -#: crates/app/src/ui/error_text/unsupported.rs -msgid "COPY FROM STDIN cannot run in the editor." -msgstr "" - -#: crates/app/src/ui/error_text/unsupported.rs -msgid "COPY TO STDOUT cannot run in the editor." -msgstr "" - -#: crates/app/src/ui/error_text/unsupported.rs -msgid "" -"This time falls in the hour the session's time zone repeats, so the database " -"cannot store it as one instant." -msgstr "" - -#: crates/app/src/ui/error_text/unsupported.rs -msgid "This database has no times outside one day." -msgstr "" - -#: crates/app/src/ui/error_text/unsupported.rs -msgid "This database has no times with an offset." -msgstr "" - -#: crates/app/src/ui/error_text/unsupported.rs -msgid "This database has no intervals." -msgstr "" - -#: crates/app/src/ui/error_text/unsupported.rs -msgid "This database has no bit strings." -msgstr "" - -#: crates/app/src/ui/error_text/unsupported.rs -#, rust-format -msgid "This database has no numbers wider than {digits} digits." -msgstr "" - -#: crates/app/src/ui/error_text/unsupported.rs -#, rust-format -msgid "" -"This database has no NaN, no infinity and no decimals wider than {digits} " -"digits." -msgstr "" - -#: crates/app/src/ui/error_text/unsupported.rs -#, rust-format -msgid "This database has no dates outside the years {first} to {last}." -msgstr "" - -#: crates/app/src/ui/export/dialog.rs -#, rust-format -msgid "" -"An Excel sheet holds {limit} rows, and this export has {rows}. Export it as " -"CSV instead." -msgstr "" - -#: crates/app/src/ui/export/dialog.rs -msgid "Convert NULL to Empty" -msgstr "" - -#: crates/app/src/ui/export/dialog.rs -msgid "Convert Line Breaks to Spaces" -msgstr "" - -#: crates/app/src/ui/export/dialog.rs -msgid "Put Field Names in the First Row" -msgstr "" - -#: crates/app/src/ui/export/dialog.rs -msgid "Sanitize Formula-Like Values" -msgstr "" - -#: crates/app/src/ui/export/dialog.rs -msgid "" -"Prefix values starting with =, +, - or @ so spreadsheets do not run them" -msgstr "" - -#: crates/app/src/ui/export/dialog.rs crates/app/src/ui/import_dialog.rs -msgid "Delimiter" -msgstr "" - -#: crates/app/src/ui/export/dialog.rs -msgid "Comma (,)" -msgstr "" - -#: crates/app/src/ui/export/dialog.rs -msgid "Semicolon (;)" -msgstr "" - -#: crates/app/src/ui/export/dialog.rs crates/app/src/ui/import_dialog.rs -msgid "Tab" -msgstr "" - -#: crates/app/src/ui/export/dialog.rs -msgid "Pipe (|)" -msgstr "" - -#: crates/app/src/ui/export/dialog.rs -msgid "Quote" -msgstr "" - -#: crates/app/src/ui/export/dialog.rs -msgid "Always" -msgstr "" - -#: crates/app/src/ui/export/dialog.rs -msgid "Quote if needed" -msgstr "" - -#: crates/app/src/ui/export/dialog.rs -msgid "Never" -msgstr "" - -#: crates/app/src/ui/export/dialog.rs -msgid "Line break" -msgstr "" - -#: crates/app/src/ui/export/dialog.rs -msgid "Decimal separator" -msgstr "" - -#: crates/app/src/ui/export/dialog.rs -msgid "Period (.)" -msgstr "" - -#: crates/app/src/ui/export/dialog.rs -msgid "CSV Options" -msgstr "" - -#: crates/app/src/ui/export/dialog.rs crates/app/src/ui/grid/grid_menus.rs -msgid "Rows" -msgstr "" - -#: crates/app/src/ui/export/dialog.rs data/resources/ui/sql-editor.ui -msgid "Format" -msgstr "" - -#: crates/app/src/ui/export/dialog.rs crates/app/src/ui/grid/grid_menus.rs -msgid "Export…" -msgstr "" - -#: crates/app/src/ui/export/dialog.rs -msgid "Reset to Defaults" -msgstr "" - -#: crates/app/src/ui/export/dialog.rs -msgid "Export Rows" -msgstr "" - -#: crates/app/src/ui/export/dialog.rs -#, rust-format -msgid "{format} files" -msgstr "" - -#: crates/app/src/ui/export/export_failure_text.rs -#, rust-format -msgid "Exported {rows} row to {name}" -msgid_plural "Exported {rows} rows to {name}" -msgstr[0] "" -msgstr[1] "" - -#: crates/app/src/ui/export/export_failure_text.rs -msgid "Export stopped" -msgstr "" - -#: crates/app/src/ui/export/export_failure_text.rs -#, rust-format -msgid "Export stopped. {name} is incomplete." -msgstr "" - -#: crates/app/src/ui/export/export_failure_text.rs -#, rust-format -msgid "{rows} of {total} row" -msgid_plural "{rows} of {total} rows" -msgstr[0] "" -msgstr[1] "" - -#: crates/app/src/ui/export/export_failure_text.rs -#, rust-format -msgid "{rows} of about {total} row" -msgid_plural "{rows} of about {total} rows" -msgstr[0] "" -msgstr[1] "" - -#: crates/app/src/ui/export/export_failure_text.rs -#, rust-format -msgid "{rows} row" -msgid_plural "{rows} rows" -msgstr[0] "" -msgstr[1] "" - -#: crates/app/src/ui/export/export_failure_text.rs -msgid "" -"This statement returned more than one result, so it can't be exported as one " -"file." -msgstr "" - -#: crates/app/src/ui/export/export_failure_text.rs -msgid "This statement returned no rows to export." -msgstr "" - -#: crates/app/src/ui/export/export_failure_text.rs -#, rust-format -msgid "" -"An Excel sheet holds {limit} rows, and this result has more. Export it as " -"CSV instead." -msgstr "" - -#: crates/app/src/ui/export/export_failure_text.rs -#, rust-format -msgid "Writing {name} failed: {error}" -msgstr "" - -#: crates/app/src/ui/export/export_failure_text.rs -#, rust-format -msgid "" -"An export to {name} is already running. Wait for it to finish, or export to " -"another file." -msgstr "" - -#: crates/app/src/ui/export/export_failure_text.rs -msgid "The export stopped unexpectedly." -msgstr "" - -#: crates/app/src/ui/export/export_failure_text.rs -#, rust-format -msgid "{name} is incomplete." -msgstr "" - -#: crates/app/src/ui/export/export_failure_text.rs -msgid "" -"Export All only runs statements that read data. This statement changes data." -msgstr "" - -#: crates/app/src/ui/export/export_failure_text.rs -msgid "" -"Export All runs the statement again on a separate connection, so temporary " -"tables, session settings and uncommitted changes from this editor aren't " -"available." -msgstr "" - -#: crates/app/src/ui/export/export_failure_text.rs -#, rust-format -msgid "" -"The column “{column}” holds a value TablePro couldn't read, so it can't be " -"written to the file." -msgstr "" - -#: crates/app/src/ui/export/export_failure_text.rs -#, rust-format -msgid "" -"The column “{column}” holds a control character XML can't carry. Export it " -"as CSV or JSON instead." -msgstr "" - -#: crates/app/src/ui/export/export_failure_text.rs -#, rust-format -msgid "" -"The column “{column}” holds a value longer than the {limit} characters an " -"Excel cell holds. Export it as CSV instead." -msgstr "" - -#: crates/app/src/ui/export/export_failure_text.rs -#, rust-format -msgid "An Excel sheet holds {limit} rows, and this result has {got}." -msgstr "" - -#: crates/app/src/ui/export/export_failure_text.rs -#, rust-format -msgid "An Excel sheet holds {limit} columns, and this result has {got}." -msgstr "" - -#: crates/app/src/ui/export/export_failure_text.rs -#, rust-format -msgid "The file couldn't be built: {error}" -msgstr "" - -#: crates/app/src/ui/export/export_failure_text.rs -#: data/resources/ui/history-dialog.ui -#: data/resources/ui/preferences-history-group.ui -msgid "Show in Files" -msgstr "" - -#: crates/app/src/ui/export/export_failure_text.rs -#: crates/app/src/ui/history_dialog/history_export.rs -msgid "Couldn't Export" -msgstr "" - -#: crates/app/src/ui/export/export_ledger/mod.rs -msgid "Stop Exports?" -msgstr "" - -#: crates/app/src/ui/export/export_ledger/mod.rs -#, rust-format -msgid "{n} export is still running. Stopping it leaves the file unfinished." -msgid_plural "" -"{n} exports are still running. Stopping them leaves the files unfinished." -msgstr[0] "" -msgstr[1] "" - -#: crates/app/src/ui/export/export_ledger/mod.rs -msgid "_Keep Exporting" -msgstr "" - -#: crates/app/src/ui/export/export_ledger/mod.rs -msgid "_Stop Exports" -msgstr "" - -#: crates/app/src/ui/export/export_operations_button.rs -msgid "Stop Export" -msgstr "" - -#: crates/app/src/ui/export/export_scope.rs -msgid "filters apply" -msgstr "" - -#: crates/app/src/ui/export/export_scope.rs -msgid "unsaved changes aren't included" -msgstr "" - -#: crates/app/src/ui/export/export_scope.rs -msgid "Current Page" -msgstr "" - -#: crates/app/src/ui/export/export_scope.rs -msgid "Entire Table" -msgstr "" - -#: crates/app/src/ui/export/export_scope.rs -msgctxt "list separator" -msgid ", " -msgstr "" - -#: crates/app/src/ui/export/export_scope.rs -msgid "Shown Rows" -msgstr "" - -#: crates/app/src/ui/export/export_scope.rs -msgid "All Rows" -msgstr "" - -#: crates/app/src/ui/export/export_scope.rs -msgid "" -"Runs the statement again on a separate read-only connection, without this " -"editor's USE or SET changes" -msgstr "" - -#: crates/app/src/ui/export/export_scope.rs -#, rust-format -msgid "About {n} row" -msgid_plural "About {n} rows" -msgstr[0] "" -msgstr[1] "" - -#: crates/app/src/ui/export/export_scope.rs -msgid "Every row" -msgstr "" - -#: crates/app/src/ui/file_reveal/reveal_failure_toast.rs -msgid "Could not show the file in Files" -msgstr "" - -#: crates/app/src/ui/filter_strip/imp.rs crates/app/src/ui/host_key_review.rs -#: crates/app/src/ui/workspace/status_pages.rs -msgid "Close" -msgstr "" - -#: crates/app/src/ui/filter_strip/rule_row.rs -msgid "Remove Rule" -msgstr "" - -#: crates/app/src/ui/filter_strip/rule_row.rs -msgid "Filter Rule" -msgstr "" - -#: crates/app/src/ui/filter_strip/rule_value_editor.rs -msgid "Value" -msgstr "" - -#: crates/app/src/ui/filter_strip/rule_value_editor.rs -msgid "From" -msgstr "" - -#: crates/app/src/ui/filter_strip/rule_value_editor.rs -msgid "To" -msgstr "" - -#: crates/app/src/ui/filter_strip/rule_value_editor.rs -msgid "a, b, c" -msgstr "" - -#: crates/app/src/ui/filter_strip/rule_value_editor.rs -msgid "Values" -msgstr "" - -#: crates/app/src/ui/grid/calendar_editor.rs -msgid "Type a Value" -msgstr "" - -#: crates/app/src/ui/grid/cell_accessibility.rs -msgid "Modified, NULL value" -msgstr "" - -#: crates/app/src/ui/grid/cell_accessibility.rs -msgid "Modified" -msgstr "" - -#: crates/app/src/ui/grid/cell_accessibility.rs -msgid "NULL value" -msgstr "" - -#: crates/app/src/ui/grid/cell_accessibility.rs -msgid "New row" -msgstr "" - -#: crates/app/src/ui/grid/cell_accessibility.rs -msgid "Marked for deletion" -msgstr "" - -#: crates/app/src/ui/grid/cell_accessibility.rs -msgid "Not saved" -msgstr "" - -#: crates/app/src/ui/grid/cell_edit.rs -msgid "Values with a NUL character can't be edited here" -msgstr "" - -#: crates/app/src/ui/grid/cell_edit.rs -#, rust-format -msgid "Values over {size} can't be edited here" -msgstr "" - -#: crates/app/src/ui/grid/cell_tooltip.rs -msgid "Use Show Row as JSON to see the full value" -msgstr "" - -#: crates/app/src/ui/grid/delete_availability.rs -msgid "Rows without a primary key or unique key can't be deleted here" -msgstr "" - -#: crates/app/src/ui/grid/delete_availability.rs -msgid "This connection is read-only" -msgstr "" - -#: crates/app/src/ui/grid/display_text.rs -msgid "" -msgstr "" - -#: crates/app/src/ui/grid/display_text.rs -msgid "(auto)" -msgstr "" - -#: crates/app/src/ui/grid/display_text.rs -#, rust-format -msgid "<{count} byte>" -msgid_plural "<{count} bytes>" -msgstr[0] "" -msgstr[1] "" - -#: crates/app/src/ui/grid/display_text.rs -#, rust-format -msgid "" -msgstr "" - -#: crates/app/src/ui/grid/display_text.rs -#: crates/app/src/ui/grid/row_json_dialog.rs -#, rust-format -msgid "… ({count} more byte)" -msgid_plural "… ({count} more bytes)" -msgstr[0] "" -msgstr[1] "" - -#: crates/app/src/ui/grid/edit_commit.rs -msgid "Required" -msgstr "" - -#: crates/app/src/ui/grid/grid_menus.rs -msgid "Edit Cell" -msgstr "" - -#: crates/app/src/ui/grid/grid_menus.rs -msgid "Set to Empty" -msgstr "" - -#: crates/app/src/ui/grid/grid_menus.rs -msgid "Set to NULL" -msgstr "" - -#: crates/app/src/ui/grid/grid_menus.rs -msgid "Set to DEFAULT" -msgstr "" - -#: crates/app/src/ui/grid/grid_menus.rs -msgid "With Headers" -msgstr "" - -#: crates/app/src/ui/grid/grid_menus.rs -msgid "JSON" -msgstr "" - -#: crates/app/src/ui/grid/grid_menus.rs -msgid "CSV" -msgstr "" - -#: crates/app/src/ui/grid/grid_menus.rs -msgid "CSV With Headers" -msgstr "" - -#: crates/app/src/ui/grid/grid_menus.rs -msgid "Markdown" -msgstr "" - -#: crates/app/src/ui/grid/grid_menus.rs -msgid "IN Clause" -msgstr "" - -#: crates/app/src/ui/grid/grid_menus.rs -msgid "INSERT Statement" -msgstr "" - -#: crates/app/src/ui/grid/grid_menus.rs -#: crates/app/src/ui/grid/row_json_dialog.rs -msgid "Copy" -msgstr "" - -#: crates/app/src/ui/grid/grid_menus.rs -msgid "Copy As" -msgstr "" - -#: crates/app/src/ui/grid/grid_menus.rs -msgid "Copy Column Name" -msgstr "" - -#: crates/app/src/ui/grid/grid_menus.rs -msgid "Show Row as JSON" -msgstr "" - -#: crates/app/src/ui/grid/grid_menus.rs -msgid "Sort Ascending" -msgstr "" - -#: crates/app/src/ui/grid/grid_menus.rs -msgid "Sort Descending" -msgstr "" - -#: crates/app/src/ui/grid/grid_menus.rs -msgid "Clear Sort" -msgstr "" - -#: crates/app/src/ui/grid/grid_menus.rs data/resources/shortcuts-dialog.ui -msgid "Widen Column" -msgstr "" - -#: crates/app/src/ui/grid/grid_menus.rs data/resources/shortcuts-dialog.ui -msgid "Narrow Column" -msgstr "" - -#: crates/app/src/ui/grid/grid_menus.rs -msgid "Reset Column Width" -msgstr "" - -#: crates/app/src/ui/grid/grid_menus.rs -#: crates/app/src/ui/picker/connection_menu.rs -msgid "Duplicate" -msgstr "" - -#: crates/app/src/ui/grid/row_json_dialog.rs -#, rust-format -msgid "… ({count} more item)" -msgid_plural "… ({count} more items)" -msgstr[0] "" -msgstr[1] "" - -#: crates/app/src/ui/grid/row_json_dialog.rs -msgid "Can't Show Row as JSON" -msgstr "" - -#: crates/app/src/ui/grid/row_json_dialog.rs -#, rust-format -msgid "" -"The column “{column}” holds a value TablePro couldn't read, so the row has " -"no JSON to show." -msgstr "" - -#: crates/app/src/ui/grid/row_json_dialog.rs -msgid "Long values are shortened here. Copy includes them in full." -msgstr "" - -#: crates/app/src/ui/grid/row_json_dialog.rs -msgid "Row as JSON" -msgstr "" - -#: crates/app/src/ui/history_dialog/connection_filter.rs -msgid "All Connections" -msgstr "" - -#: crates/app/src/ui/history_dialog/history_export.rs -#: crates/app/src/ui/workspace/import.rs -msgid "CSV files" -msgstr "" - -#: crates/app/src/ui/history_dialog/history_export.rs -msgid "Export Query History" -msgstr "" - -#: crates/app/src/ui/history_dialog/history_export.rs -msgid "The selected entries couldn't be written as CSV." -msgstr "" - -#: crates/app/src/ui/history_dialog/history_export.rs -msgid "The selected entries couldn't be read from the query history." -msgstr "" - -#: crates/app/src/ui/history_dialog/history_filters.rs -#: data/resources/ui/connect-dialog.ui -msgid "Connection" -msgstr "" - -#: crates/app/src/ui/history_dialog/history_filters.rs -msgid "All" -msgstr "" - -#: crates/app/src/ui/history_dialog/history_filters.rs -#: crates/app/src/ui/history_dialog/history_formatting.rs -msgid "Succeeded" -msgstr "" - -#: crates/app/src/ui/history_dialog/history_filters.rs -#: crates/app/src/ui/history_dialog/history_formatting.rs -msgid "Failed" -msgstr "" - -#: crates/app/src/ui/history_dialog/history_filters.rs -#: crates/app/src/ui/history_dialog/history_formatting.rs -msgid "Cancelled" -msgstr "" - -#: crates/app/src/ui/history_dialog/history_filters.rs -msgid "Status" -msgstr "" - -#: crates/app/src/ui/history_dialog/history_filters.rs -msgid "Any Time" -msgstr "" - -#: crates/app/src/ui/history_dialog/history_filters.rs -msgid "Today" -msgstr "" - -#: crates/app/src/ui/history_dialog/history_filters.rs -msgid "Last 7 Days" -msgstr "" - -#: crates/app/src/ui/history_dialog/history_filters.rs -msgid "Last 30 Days" -msgstr "" - -#: crates/app/src/ui/history_dialog/history_filters.rs -msgid "Time window" -msgstr "" - -#: crates/app/src/ui/history_dialog/history_formatting.rs -msgid "cancelled" -msgstr "" - -#: crates/app/src/ui/history_dialog/history_formatting.rs -msgid "just now" -msgstr "" - -#: crates/app/src/ui/history_dialog/history_formatting.rs -#, rust-format -msgid "{n} minute ago" -msgid_plural "{n} minutes ago" -msgstr[0] "" -msgstr[1] "" - -#: crates/app/src/ui/history_dialog/history_formatting.rs -#, rust-format -msgid "{n} hour ago" -msgid_plural "{n} hours ago" -msgstr[0] "" -msgstr[1] "" - -#: crates/app/src/ui/history_dialog/history_formatting.rs -#, rust-format -msgid "{n} day ago" -msgid_plural "{n} days ago" -msgstr[0] "" -msgstr[1] "" - -#: crates/app/src/ui/history_dialog/history_row.rs -#: crates/app/src/ui/history_dialog/mod.rs -msgid "Unpin" -msgstr "" - -#: crates/app/src/ui/history_dialog/history_row.rs -#: crates/app/src/ui/history_dialog/mod.rs -msgid "Pin" -msgstr "" - -#: crates/app/src/ui/history_dialog/mod.rs -#, rust-format -msgid "{n} selected" -msgid_plural "{n} selected" -msgstr[0] "" -msgstr[1] "" - -#: crates/app/src/ui/history_dialog/mod.rs -msgid "The query could not be pinned." -msgstr "" - -#: crates/app/src/ui/history_dialog/mod.rs -msgid "The query could not be unpinned." -msgstr "" - -#: crates/app/src/ui/history_dialog/mod.rs -msgid "The queries could not be deleted." -msgstr "" - -#: crates/app/src/ui/history_dialog/mod.rs -#, rust-format -msgid "{count} query deleted" -msgid_plural "{count} queries deleted" -msgstr[0] "" -msgstr[1] "" - -#: crates/app/src/ui/history_dialog/mod.rs -msgid "_Undo" -msgstr "" - -#: crates/app/src/ui/history_dialog/mod.rs -msgid "The queries could not be restored." -msgstr "" - -#: crates/app/src/ui/history_dialog/mod.rs -#: crates/app/src/ui/preferences_dialog/history_group.rs -msgid "Clear All Query History?" -msgstr "" - -#: crates/app/src/ui/history_dialog/mod.rs -#: crates/app/src/ui/preferences_dialog/history_group.rs -msgid "" -"This permanently deletes every history entry, including pinned ones. Saved " -"queries are kept." -msgstr "" - -#: crates/app/src/ui/history_dialog/mod.rs -#: crates/app/src/ui/preferences_dialog/history_group.rs -#: data/resources/ui/tls-section.ui -msgid "Clear" -msgstr "" - -#: crates/app/src/ui/history_dialog/mod.rs -#: crates/app/src/ui/preferences_dialog/history_group.rs -msgid "The query history could not be cleared." -msgstr "" - -#: crates/app/src/ui/history_dialog/mod.rs -msgid "The query history could not be read." -msgstr "" - -#: crates/app/src/ui/history_dialog/mod.rs -#: crates/app/src/ui/saved_queries_dialog.rs -msgid "No Matches" -msgstr "" - -#: crates/app/src/ui/history_dialog/mod.rs -msgid "Try a different search term or change the filters." -msgstr "" - -#: crates/app/src/ui/history_dialog/mod.rs data/resources/ui/history-dialog.ui -msgid "No Queries Yet" -msgstr "" - -#: crates/app/src/ui/history_dialog/mod.rs data/resources/ui/history-dialog.ui -msgid "Run a query in the SQL editor and it will appear here." -msgstr "" - -#: crates/app/src/ui/history_dialog/mod.rs -msgid "History Unavailable" -msgstr "" - -#: crates/app/src/ui/history_dialog/mod.rs -msgid "Pinned" -msgstr "" - -#: crates/app/src/ui/history_dialog/mod.rs -msgid "All Queries" -msgstr "" - -#: crates/app/src/ui/history_dialog/mod.rs -#: crates/app/src/ui/saved_queries_dialog.rs -#: crates/app/src/ui/workspace/sidebar/sidebar_menu.rs -msgid "Open in New Tab" -msgstr "" - -#: crates/app/src/ui/history_dialog/mod.rs -#: crates/app/src/ui/saved_queries_dialog.rs -msgid "Replace Current Tab" -msgstr "" - -#: crates/app/src/ui/history_dialog/mod.rs -#: crates/app/src/ui/saved_queries_dialog.rs -#: crates/app/src/ui/structure_tab/imp.rs -msgid "Copy SQL" -msgstr "" - -#: crates/app/src/ui/host_key_review.rs -#: crates/app/src/ui/session_window/connections.rs -#: crates/app/src/ui/tab_load/stale_banner.rs -#: crates/app/src/ui/workspace/health_banner.rs -#: data/resources/ui/connect-failed-page.ui data/resources/ui/workspace.ui -msgid "Retry" -msgstr "" - -#: crates/app/src/ui/host_key_review.rs -#, rust-format -msgid "" -"TablePro has not connected to “{host}” before and cannot confirm its " -"identity. Compare the fingerprint with the one from your server " -"administrator." -msgstr "" - -#: crates/app/src/ui/host_key_review.rs -#, rust-format -msgid "" -"TablePro has not connected to “{host}” before. Connect to see its key’s " -"fingerprint and decide whether to trust it." -msgstr "" - -#: crates/app/src/ui/host_key_review.rs -msgid "Unknown SSH Host" -msgstr "" - -#: crates/app/src/ui/host_key_review.rs -#, rust-format -msgid "" -"The SSH configuration for “{host}” accepts only keys already in known_hosts. " -"Add the server’s key there, then retry." -msgstr "" - -#: crates/app/src/ui/host_key_review.rs -msgid "SSH Host Key Changed" -msgstr "" - -#: crates/app/src/ui/host_key_review.rs -#, rust-format -msgid "" -"The key “{host}” sent is not the one trusted in known_hosts. Someone may be " -"intercepting the connection, or the server was reinstalled. The SSH " -"configuration for this host accepts only keys already in known_hosts, so if " -"your server administrator confirms the new fingerprint, replace the key " -"there yourself, then retry." -msgstr "" - -#: crates/app/src/ui/host_key_review.rs -#, rust-format -msgid "" -"The key “{host}” sent is not the one trusted in {file}, line {line}. Someone " -"may be intercepting the connection, or the server was reinstalled. The SSH " -"configuration for this host accepts only keys already in known_hosts, so if " -"your server administrator confirms the new fingerprint, replace the key in " -"that file yourself, then retry." -msgstr "" - -#: crates/app/src/ui/host_key_review.rs -#, rust-format -msgid "" -"The key “{host}” sent is not the one trusted in known_hosts. Someone may be " -"intercepting the connection, or the server was reinstalled. If your server " -"administrator confirms the new fingerprint, remove the old key from " -"known_hosts, then retry." -msgstr "" - -#: crates/app/src/ui/host_key_review.rs -#, rust-format -msgid "" -"The key “{host}” sent is not the one trusted in {file}, line {line}. Someone " -"may be intercepting the connection, or the server was reinstalled. Replace " -"the key only if your server administrator confirms the new fingerprint." -msgstr "" - -#: crates/app/src/ui/host_key_review.rs -msgid "Replace Key and Connect" -msgstr "" - -#: crates/app/src/ui/host_key_review.rs -msgid "SSH Host Key Revoked" -msgstr "" - -#: crates/app/src/ui/host_key_review.rs -#, rust-format -msgid "" -"The key “{host}” sent is revoked, so TablePro will not connect to it. Ask " -"your server administrator for its current key. ssh reported: {detail}" -msgstr "" - -#: crates/app/src/ui/host_key_review.rs -msgid "Key fingerprint" -msgstr "" - -#: crates/app/src/ui/host_key_review.rs -#, rust-format -msgid "{algorithm} key fingerprint" -msgstr "" - -#: crates/app/src/ui/import_dialog.rs crates/app/src/ui/workspace/import.rs -msgid "Import CSV" -msgstr "" - -#: crates/app/src/ui/import_dialog.rs -msgid "Import" -msgstr "" - -#: crates/app/src/ui/import_dialog.rs -msgid "File" -msgstr "" - -#: crates/app/src/ui/import_dialog.rs -msgid "Comma" -msgstr "" - -#: crates/app/src/ui/import_dialog.rs -msgid "Semicolon" -msgstr "" - -#: crates/app/src/ui/import_dialog.rs -msgid "Pipe" -msgstr "" - -#: crates/app/src/ui/import_dialog.rs -msgid "First Row Is a Header" -msgstr "" - -#: crates/app/src/ui/import_dialog.rs -msgid "Its values name the fields instead of being imported." -msgstr "" - -#: crates/app/src/ui/import_dialog.rs -msgid "Text that means NULL" -msgstr "" - -#: crates/app/src/ui/import_dialog.rs -#: crates/app/src/ui/structure_tab/foreign_key_dialog.rs -#: data/resources/ui/structure-tab.ui -msgid "Columns" -msgstr "" - -#: crates/app/src/ui/import_dialog.rs -msgid "" -"Each table column takes one field from the file. A column set to Skip keeps " -"its own default." -msgstr "" - -#: crates/app/src/ui/import_dialog.rs -msgid "Skip" -msgstr "" - -#: crates/app/src/ui/import_dialog.rs -msgid "The database fills this column" -msgstr "" - -#: crates/app/src/ui/import_dialog.rs -msgid "Uses the column's own default" -msgstr "" - -#: crates/app/src/ui/import_dialog.rs -msgid "The file has no rows to import." -msgstr "" - -#: crates/app/src/ui/import_dialog.rs -msgid "" -"Every column is set to Skip. Pick a field for at least one column to import." -msgstr "" - -#: crates/app/src/ui/import_dialog.rs -#, rust-format -msgid "" -"{fields} fields. Showing the first {rows} rows; the whole file is imported." -msgstr "" - -#: crates/app/src/ui/import_dialog.rs -#, rust-format -msgid "{fields} fields, {rows} row." -msgid_plural "{fields} fields, {rows} rows." -msgstr[0] "" -msgstr[1] "" - -#: crates/app/src/ui/import_dialog.rs -#, rust-format -msgid "" -"The file isn't UTF-8 text from byte {offset} on. Save it as UTF-8 and import " -"it again." -msgstr "" - -#: crates/app/src/ui/import_dialog.rs -#, rust-format -msgid "The file couldn't be read as CSV at line {line}." -msgstr "" - -#: crates/app/src/ui/import_dialog.rs -msgid "The file couldn't be read as CSV." -msgstr "" - -#: crates/app/src/ui/import_dialog.rs -msgid "The file has no columns." -msgstr "" - -#: crates/app/src/ui/import_dialog.rs -#, rust-format -msgid "" -"Line {line} has more than {limit} fields, more than any table holds. Check " -"the delimiter." -msgstr "" - -#: crates/app/src/ui/import_dialog.rs -#, rust-format -msgid "Column {n}" -msgstr "" - -#: crates/app/src/ui/import_dialog.rs -msgid "NULL" -msgstr "" - -#: crates/app/src/ui/import_dialog.rs -msgid "No values in the file" -msgstr "" - -#: crates/app/src/ui/picker/connection_menu.rs -msgid "Edit…" -msgstr "" - -#: crates/app/src/ui/picker/connection_menu.rs -msgid "Colour" -msgstr "" - -#: crates/app/src/ui/picker/connection_menu.rs -msgid "Move to Group" -msgstr "" - -#: crates/app/src/ui/picker/connection_menu.rs -msgid "Delete…" -msgstr "" - -#: crates/app/src/ui/picker/connection_menu.rs -msgid "No Colour" -msgstr "" - -#: crates/app/src/ui/picker/connection_menu.rs -msgid "No Group" -msgstr "" - -#: crates/app/src/ui/picker/connection_menu.rs -msgid "New Group…" -msgstr "" - -#: crates/app/src/ui/picker/connection_menu.rs -msgid "Blue" -msgstr "" - -#: crates/app/src/ui/picker/connection_menu.rs -msgid "Teal" -msgstr "" - -#: crates/app/src/ui/picker/connection_menu.rs -msgid "Green" -msgstr "" - -#: crates/app/src/ui/picker/connection_menu.rs -msgid "Yellow" -msgstr "" - -#: crates/app/src/ui/picker/connection_menu.rs -msgid "Orange" -msgstr "" - -#: crates/app/src/ui/picker/connection_menu.rs -msgid "Red" -msgstr "" - -#: crates/app/src/ui/picker/connection_menu.rs -msgid "Pink" -msgstr "" - -#: crates/app/src/ui/picker/connection_menu.rs -msgid "Purple" -msgstr "" - -#: crates/app/src/ui/picker/connection_menu.rs -msgid "Slate" -msgstr "" - -#: crates/app/src/ui/picker/connection_row.rs -msgid "Connection Options" -msgstr "" - -#: crates/app/src/ui/picker/new_group_dialog.rs -msgid "New Group" -msgstr "" - -#: crates/app/src/ui/picker/new_group_dialog.rs -#: crates/app/src/ui/saved_queries_dialog.rs -#: crates/app/src/ui/structure_tab/columns.rs -#: crates/app/src/ui/structure_tab/foreign_key_dialog.rs -#: crates/app/src/ui/structure_tab/index_dialog.rs -#: crates/app/src/ui/workspace/status_pages.rs -#: data/resources/ui/connect-dialog.ui data/resources/ui/structure-tab.ui -msgid "Name" -msgstr "" - -#: crates/app/src/ui/picker/new_group_dialog.rs -msgid "Create" -msgstr "" - -#: crates/app/src/ui/preferences_dialog/data_browser_group.rs -#, rust-format -msgid "Ask before deleting {n} or more rows at once" -msgid_plural "Ask before deleting {n} or more rows at once" -msgstr[0] "" -msgstr[1] "" - -#: crates/app/src/ui/preferences_dialog/history_group.rs -#, rust-format -msgid "Query history and saved queries cannot be used. {reason}" -msgstr "" - -#: crates/app/src/ui/preferences_dialog/history_group.rs -#, rust-format -msgid "{count} query cleared" -msgid_plural "{count} queries cleared" -msgstr[0] "" -msgstr[1] "" - -#: crates/app/src/ui/result_pane/result_limit_banner.rs -msgid "Export All…" -msgstr "" - -#: crates/app/src/ui/result_pane/result_summary.rs -#, rust-format -msgid "No rows kept; a run keeps at most {limit} rows across its results" -msgstr "" - -#: crates/app/src/ui/result_pane/result_summary.rs -#, rust-format -msgid "" -"Showing the first {shown} row; a run keeps at most {limit} rows across its " -"results" -msgid_plural "" -"Showing the first {shown} rows; a run keeps at most {limit} rows across its " -"results" -msgstr[0] "" -msgstr[1] "" - -#: crates/app/src/ui/result_pane/result_summary.rs -#, rust-format -msgid "Showing {shown} of {total} row" -msgid_plural "Showing {shown} of {total} rows" -msgstr[0] "" -msgstr[1] "" - -#: crates/app/src/ui/result_pane/result_summary.rs -#, rust-format -msgid "Showing the first {shown} row" -msgid_plural "Showing the first {shown} rows" -msgstr[0] "" -msgstr[1] "" - -#: crates/app/src/ui/result_pane/result_summary.rs -#, rust-format -msgid "Stopped after the first {shown} row: the statement did not run past it" -msgid_plural "" -"Stopped after the first {shown} rows: the statement did not run past them" -msgstr[0] "" -msgstr[1] "" - -#: crates/app/src/ui/result_pane/result_summary.rs -#, rust-format -msgid "{rows}+" -msgstr "" - -#: crates/app/src/ui/result_pane/result_summary.rs -#, rust-format -msgid "Result {n} ({rows})" -msgstr "" - -#: crates/app/src/ui/saved_queries_dialog.rs data/resources/gtk/menus.ui -msgid "Saved Queries" -msgstr "" - -#: crates/app/src/ui/saved_queries_dialog.rs -msgid "Search saved queries" -msgstr "" - -#: crates/app/src/ui/saved_queries_dialog.rs -msgid "No Saved Queries" -msgstr "" - -#: crates/app/src/ui/saved_queries_dialog.rs -msgid "Save a query from the editor and it will be listed here." -msgstr "" - -#: crates/app/src/ui/saved_queries_dialog.rs -msgid "Could Not Read Saved Queries" -msgstr "" - -#: crates/app/src/ui/saved_queries_dialog.rs -msgid "Could not delete that saved query." -msgstr "" - -#: crates/app/src/ui/saved_queries_dialog.rs -msgid "Try a different search term." -msgstr "" - -#: crates/app/src/ui/saved_queries_dialog.rs -msgid "Rename…" -msgstr "" - -#: crates/app/src/ui/saved_queries_dialog.rs -msgid "Saved Query Options" -msgstr "" - -#: crates/app/src/ui/saved_queries_dialog.rs -msgid "Rename Saved Query" -msgstr "" - -#: crates/app/src/ui/saved_queries_dialog.rs -msgid "Rename" -msgstr "" - -#: crates/app/src/ui/saved_queries_dialog.rs -msgid "The saved query is removed. The SQL itself is not run or changed." -msgstr "" - -#: crates/app/src/ui/saved_queries_dialog.rs -msgid "That name is already used by another saved query." -msgstr "" - -#: crates/app/src/ui/saved_queries_dialog.rs -msgid "That name is too long." -msgstr "" - -#: crates/app/src/ui/saved_queries_dialog.rs -msgid "That saved query was deleted elsewhere." -msgstr "" - -#: crates/app/src/ui/saved_queries_dialog.rs -msgid "The saved query could not be renamed." -msgstr "" - -#: crates/app/src/ui/session_window/connecting_page.rs -#, rust-format -msgid "Connecting to {name}" -msgstr "" - -#: crates/app/src/ui/session_window/connecting_page.rs -msgid "Connecting" -msgstr "" - -#: crates/app/src/ui/session_window/connections.rs -#, rust-format -msgid "The connection could not be saved: {error}" -msgstr "" - -#: crates/app/src/ui/session_window/connections.rs -msgid "this connection" -msgstr "" - -#: crates/app/src/ui/session_window/connections.rs -msgid "Changes apply the next time you connect" -msgstr "" - -#: crates/app/src/ui/session_window/connections.rs -#, rust-format -msgid "The connection could not be duplicated. {reason}" -msgstr "" - -#: crates/app/src/ui/session_window/connections.rs -#, rust-format -msgid "The group could not be saved. {reason}" -msgstr "" - -#: crates/app/src/ui/session_window/connections.rs -#, rust-format -msgid "The colour could not be saved. {reason}" -msgstr "" - -#: crates/app/src/ui/session_window/connections.rs -msgid "The connections could not be read." -msgstr "" - -#: crates/app/src/ui/session_window/connections.rs -msgid "Import Connections" -msgstr "" - -#: crates/app/src/ui/session_window/connections.rs -msgid "That file has no connections in it." -msgstr "" - -#: crates/app/src/ui/session_window/connections.rs -#, rust-format -msgid "Imported {n} connection." -msgid_plural "Imported {n} connections." -msgstr[0] "" -msgstr[1] "" - -#: crates/app/src/ui/session_window/connections.rs -msgid "The connections could not be imported." -msgstr "" - -#: crates/app/src/ui/session_window/connections.rs -msgid "Reset Saved Connections?" -msgstr "" - -#: crates/app/src/ui/session_window/connections.rs -msgid "" -"The unreadable file will be renamed so it can be recovered. Stored passwords " -"stay in the keyring." -msgstr "" - -#: crates/app/src/ui/session_window/connections.rs -#: data/resources/ui/workspace.ui -msgid "Reset" -msgstr "" - -#: crates/app/src/ui/session_window/connections.rs -#, rust-format -msgid "Could not reset the saved connections: {error}" -msgstr "" - -#: crates/app/src/ui/session_window/connections.rs -msgid "Export Connections" -msgstr "" - -#: crates/app/src/ui/session_window/connections.rs -msgid "Connections exported." -msgstr "" - -#: crates/app/src/ui/session_window/connections.rs -msgid "The connections could not be written to that file." -msgstr "" - -#: crates/app/src/ui/session_window/connections.rs -msgid "That export comes from a newer version of TablePro." -msgstr "" - -#: crates/app/src/ui/session_window/connections.rs -msgid "That file is not a TablePro connection export." -msgstr "" - -#: crates/app/src/ui/session_window/connections.rs -#: crates/app/src/ui/workspace/import.rs -msgid "Only regular files can be imported." -msgstr "" - -#: crates/app/src/ui/session_window/connections.rs -msgid "That file is too large to be a connection export." -msgstr "" - -#: crates/app/src/ui/session_window/connections.rs -msgid "JSON files" -msgstr "" - -#: crates/app/src/ui/session_window/crash_notice.rs -msgid "TablePro quit unexpectedly last time" -msgstr "" - -#: crates/app/src/ui/session_window/crash_notice.rs -msgid "Show Report" -msgstr "" - -#: crates/app/src/ui/session_window/locate_file.rs -msgid "Locate Database File" -msgstr "" - -#: crates/app/src/ui/session_window/locate_file.rs -msgid "Database File Not Found" -msgstr "" - -#: crates/app/src/ui/session_window/locate_file.rs -#, rust-format -msgid "" -"{file} could not be found. If it was moved or renamed, locate it to update " -"the connection." -msgstr "" - -#: crates/app/src/ui/session_window/locate_file.rs -#: crates/app/src/ui/session_window/sqlite_location_dialog.rs -#: crates/app/src/ui/structure_tab/form_dialog.rs -#: crates/app/src/ui/structure_tab/review_dialog.rs -#: crates/app/src/workspace/open_transaction_dialog.rs -#: crates/app/src/workspace/save_changes_dialog.rs -msgid "_Cancel" -msgstr "" - -#: crates/app/src/ui/session_window/locate_file.rs -msgid "_Locate…" -msgstr "" - -#: crates/app/src/ui/session_window/locate_file.rs -msgid "The new location could not be saved." -msgstr "" - -#. Translators: TablePro is the product name and is not translated. -#: crates/app/src/ui/session_window/mod.rs -#: crates/app/src/ui/session_window/session_teardown.rs -#: data/app.tablepro.TablePro.desktop.in.in data/resources/ui/picker-page.ui -#: data/resources/ui/session-window.ui -msgid "TablePro" -msgstr "" - -#: crates/app/src/ui/session_window/mod.rs -msgid "This connection is already open in another window." -msgstr "" - -#: crates/app/src/ui/session_window/mod.rs -msgid "Could Not Save the Connection" -msgstr "" - -#: crates/app/src/ui/session_window/mod.rs -#: data/resources/ui/connect-failed-page.ui -msgid "Edit Connection…" -msgstr "" - -#: crates/app/src/ui/session_window/mod.rs -#, rust-format -msgid "{file} is not on this computer. Copy it to a local folder to open it." -msgstr "" - -#: crates/app/src/ui/session_window/mod.rs -#, rust-format -msgid "{file} could not be found." -msgstr "" - -#: crates/app/src/ui/session_window/mod.rs -#, rust-format -msgid "{file} could not be opened. {reason}" -msgstr "" - -#: crates/app/src/ui/session_window/notification_request.rs -msgid "Query Finished" -msgstr "" - -#: crates/app/src/ui/session_window/notification_request.rs -msgid "Query Failed" -msgstr "" - -#: crates/app/src/ui/session_window/notification_request.rs -msgid "Changes Saved" -msgstr "" - -#: crates/app/src/ui/session_window/notification_request.rs -msgid "Changes Not Saved" -msgstr "" - -#: crates/app/src/ui/session_window/notification_request.rs -msgid "Export Finished" -msgstr "" - -#: crates/app/src/ui/session_window/notification_request.rs -msgid "Export Failed" -msgstr "" - -#: crates/app/src/ui/session_window/notification_request.rs -#, rust-format -msgid "{tab} · {connection}" -msgstr "" - -#: crates/app/src/ui/session_window/picker_page.rs -msgid "New Connection" -msgstr "" - -#: crates/app/src/ui/session_window/secret_retry.rs -#: data/resources/ui/connect-failed-page.ui -msgid "Enter Password…" -msgstr "" - -#: crates/app/src/ui/session_window/secret_retry.rs -msgid "Enter SSH Password…" -msgstr "" - -#: crates/app/src/ui/session_window/secret_retry.rs -msgid "Enter Passphrase…" -msgstr "" - -#: crates/app/src/ui/session_window/sqlite_location_dialog.rs -msgid "Database on a Network Filesystem" -msgstr "" - -#: crates/app/src/ui/session_window/sqlite_location_dialog.rs -msgid "" -"SQLite can corrupt a database on a network or FUSE filesystem when more than " -"one program writes to it." -msgstr "" - -#: crates/app/src/ui/session_window/sqlite_location_dialog.rs -msgid "Open _Read-Only" -msgstr "" - -#: crates/app/src/ui/session_window/sqlite_location_dialog.rs -msgid "Open Read-_Write" -msgstr "" - -#: crates/app/src/ui/shell/primary_menu_button.rs -msgid "Main Menu" -msgstr "" - -#: crates/app/src/ui/ssh_inputs.rs -msgid "SSH agent" -msgstr "" - -#: crates/app/src/ui/ssh_inputs.rs data/resources/ui/ssh-section.ui -msgid "Private key" -msgstr "" - -#: crates/app/src/ui/ssh_inputs.rs -msgid "Keyboard-interactive" -msgstr "" - -#: crates/app/src/ui/ssh_inputs.rs -msgid "Keys from the SSH agent and your SSH configuration" -msgstr "" - -#: crates/app/src/ui/ssh_inputs.rs -msgid "A key file, unlocked with its passphrase if it has one" -msgstr "" - -#: crates/app/src/ui/ssh_inputs.rs -msgid "The SSH server's own password" -msgstr "" - -#: crates/app/src/ui/ssh_inputs.rs -msgid "The SSH server asks its own questions, such as a code" -msgstr "" - -#: crates/app/src/ui/ssh_inputs.rs -msgid "Enter the SSH server's host name or its alias." -msgstr "" - -#: crates/app/src/ui/ssh_inputs.rs -#, rust-format -msgid "The SSH host cannot be used: {detail}" -msgstr "" - -#: crates/app/src/ui/ssh_inputs.rs -msgid "The SSH port must be a number from 1 to 65535." -msgstr "" - -#: crates/app/src/ui/ssh_inputs.rs -#, rust-format -msgid "The SSH username cannot be used: {detail}" -msgstr "" - -#: crates/app/src/ui/ssh_inputs.rs -#, rust-format -msgid "The jump hosts cannot be used: {detail}" -msgstr "" - -#: crates/app/src/ui/ssh_inputs.rs -msgid "Choose the private key file." -msgstr "" - -#: crates/app/src/ui/ssh_section.rs -msgid "SSH keys" -msgstr "" - -#: crates/app/src/ui/ssh_section.rs data/resources/ui/ssh-section.ui -msgid "Choose Private Key" -msgstr "" - -#: crates/app/src/ui/structure_tab/columns.rs -msgid "A primary key column can't take NULL." -msgstr "" - -#: crates/app/src/ui/structure_tab/columns.rs -msgid "Remove Column" -msgstr "" - -#: crates/app/src/ui/structure_tab/columns.rs -msgid "Type" -msgstr "" - -#: crates/app/src/ui/structure_tab/columns.rs -msgid "Nullable" -msgstr "" - -#: crates/app/src/ui/structure_tab/columns.rs -msgid "Default value" -msgstr "" - -#: crates/app/src/ui/structure_tab/columns.rs -msgid "Primary Key" -msgstr "" - -#: crates/app/src/ui/structure_tab/columns.rs -msgid "Auto Increment" -msgstr "" - -#: crates/app/src/ui/structure_tab/columns.rs -msgid "Comment" -msgstr "" - -#: crates/app/src/ui/structure_tab/columns.rs -msgid "Suggested Types" -msgstr "" - -#: crates/app/src/ui/structure_tab/context.rs -msgid "Connect to a database to check the default." -msgstr "" - -#: crates/app/src/ui/structure_tab/draft_column_object.rs -msgid "nullable" -msgstr "" - -#: crates/app/src/ui/structure_tab/draft_column_object.rs -msgid "NOT NULL" -msgstr "" - -#: crates/app/src/ui/structure_tab/draft_column_object.rs -msgid "Primary key" -msgstr "" - -#: crates/app/src/ui/structure_tab/draft_column_object.rs -msgid "auto-increment" -msgstr "" - -#: crates/app/src/ui/structure_tab/fks.rs -msgid "Remove Foreign Key" -msgstr "" - -#: crates/app/src/ui/structure_tab/foreign_key_dialog.rs -msgid "Add Foreign Key" -msgstr "" - -#: crates/app/src/ui/structure_tab/foreign_key_dialog.rs -#: crates/app/src/ui/structure_tab/index_dialog.rs -msgid "_Add" -msgstr "" - -#: crates/app/src/ui/structure_tab/foreign_key_dialog.rs -msgid "Referenced Columns" -msgstr "" - -#: crates/app/src/ui/structure_tab/foreign_key_dialog.rs -msgid "Referenced table" -msgstr "" - -#: crates/app/src/ui/structure_tab/foreign_key_dialog.rs -msgid "The columns of this table that hold the reference." -msgstr "" - -#: crates/app/src/ui/structure_tab/foreign_key_dialog.rs -msgid "On delete" -msgstr "" - -#: crates/app/src/ui/structure_tab/foreign_key_dialog.rs -msgid "On update" -msgstr "" - -#: crates/app/src/ui/structure_tab/foreign_key_dialog.rs -msgid "Actions" -msgstr "" - -#: crates/app/src/ui/structure_tab/foreign_key_dialog.rs -#, rust-format -msgid "Couldn't read the tables: {error}" -msgstr "" - -#: crates/app/src/ui/structure_tab/foreign_key_dialog.rs -#, rust-format -msgid "Couldn't read the columns of {table}: {error}" -msgstr "" - -#: crates/app/src/ui/structure_tab/foreign_key_dialog.rs -#, rust-format -msgid "{column} references" -msgstr "" - -#: crates/app/src/ui/structure_tab/foreign_key_draft.rs -msgid "The table already has a foreign key with this name." -msgstr "" - -#: crates/app/src/ui/structure_tab/foreign_key_draft.rs -msgid "Choose the table the key references." -msgstr "" - -#: crates/app/src/ui/structure_tab/foreign_key_draft.rs -msgid "Choose at least one column." -msgstr "" - -#: crates/app/src/ui/structure_tab/foreign_key_draft.rs -#, rust-format -msgid "Choose the column “{column}” references." -msgstr "" - -#: crates/app/src/ui/structure_tab/index_dialog.rs -msgid "Add Index" -msgstr "" - -#: crates/app/src/ui/structure_tab/index_dialog.rs -msgid "Unique" -msgstr "" - -#: crates/app/src/ui/structure_tab/index_dialog.rs -msgid "Refuse rows that repeat the key columns' values" -msgstr "" - -#: crates/app/src/ui/structure_tab/index_dialog.rs -msgid "Add Key Column" -msgstr "" - -#: crates/app/src/ui/structure_tab/index_dialog.rs -msgid "Key Columns" -msgstr "" - -#: crates/app/src/ui/structure_tab/index_dialog.rs -msgid "Add the columns the index sorts by." -msgstr "" - -#: crates/app/src/ui/structure_tab/index_dialog.rs -msgid "Descending" -msgstr "" - -#: crates/app/src/ui/structure_tab/index_dialog.rs -msgid "Sort _Descending" -msgstr "" - -#: crates/app/src/ui/structure_tab/index_dialog.rs -msgid "Move _Up" -msgstr "" - -#: crates/app/src/ui/structure_tab/index_dialog.rs -msgid "Move D_own" -msgstr "" - -#: crates/app/src/ui/structure_tab/index_dialog.rs -msgid "_Remove" -msgstr "" - -#: crates/app/src/ui/structure_tab/index_dialog.rs -msgid "Key Options" -msgstr "" - -#: crates/app/src/ui/structure_tab/index_draft.rs -msgid "The table already has an index with this name." -msgstr "" - -#: crates/app/src/ui/structure_tab/index_draft.rs -msgid "Add at least one key column." -msgstr "" - -#: crates/app/src/ui/structure_tab/indexes.rs -msgid "UNIQUE" -msgstr "" - -#: crates/app/src/ui/structure_tab/indexes.rs -msgid "PRIMARY" -msgstr "" - -#: crates/app/src/ui/structure_tab/indexes.rs -msgid "Remove Index" -msgstr "" - -#: crates/app/src/ui/structure_tab/indexes.rs -msgid "Primary-key index can't be dropped here; clear the PK on the column." -msgstr "" - -#: crates/app/src/ui/structure_tab/indexes.rs -msgid "no keys" -msgstr "" - -#: crates/app/src/ui/structure_tab/referential_action_label.rs -msgid "Database Default" -msgstr "" - -#: crates/app/src/ui/structure_tab/referential_action_label.rs -msgid "database default" -msgstr "" - -#: crates/app/src/ui/structure_tab/referential_action_label.rs -msgid "not reported" -msgstr "" - -#: crates/app/src/ui/structure_tab/review_dialog.rs -#, rust-format -msgid "Apply {count} Change to “{table}”?" -msgid_plural "Apply {count} Changes to “{table}”?" -msgstr[0] "" -msgstr[1] "" - -#: crates/app/src/ui/structure_tab/review_dialog.rs -msgid "_Apply" -msgstr "" - -#: crates/app/src/ui/structure_tab/review_dialog.rs -#, rust-format -msgid "" -"{engine} applies each statement separately. If one fails, the statements " -"before it stay applied." -msgstr "" - -#: crates/app/src/ui/structure_tab/review_dialog.rs -#, rust-format -msgid "Drops column “{column}” and the data in it." -msgstr "" - -#: crates/app/src/ui/structure_tab/review_dialog.rs -#, rust-format -msgid "" -"Changes column “{column}” from {from} to {to}. A value the new type can't " -"hold is converted or refused." -msgstr "" - -#: crates/app/src/ui/structure_tab/review_dialog.rs -#, rust-format -msgid "" -"Makes column “{column}” NOT NULL. A NULL already in it is converted or " -"refused." -msgstr "" - -#: crates/app/src/ui/structure_tab/review_dialog.rs -#, rust-format -msgid "Drops index “{index}”." -msgstr "" - -#: crates/app/src/ui/structure_tab/review_dialog.rs -#, rust-format -msgid "Drops foreign key “{key}”." -msgstr "" - -#: crates/app/src/ui/structure_tab/review_dialog.rs -msgid "" -"Rebuilds the table: copies its rows into a new table and drops the old one." -msgstr "" - -#: crates/app/src/ui/structure_tab/review_dialog.rs -#, rust-format -msgid "Drops and creates again: {objects}." -msgstr "" - -#: crates/app/src/ui/structure_tab/review_dialog.rs -msgid "The rows get new rowids." -msgstr "" - -#: crates/app/src/ui/structure_tab/review_dialog.rs -#, rust-format -msgid "" -"“{column}” becomes the rowid, so the save stops if any row has no value in " -"it." -msgstr "" - -#: crates/app/src/ui/structure_tab/review_dialog.rs -#, rust-format -msgid "index “{name}”" -msgstr "" - -#: crates/app/src/ui/structure_tab/review_dialog.rs -#, rust-format -msgid "trigger “{name}”" -msgstr "" - -#: crates/app/src/ui/structure_tab/review_dialog.rs -#, rust-format -msgid "view “{name}”" -msgstr "" - -#: crates/app/src/ui/structure_tab/review_dialog.rs -msgid "SQL to run" -msgstr "" - -#: crates/app/src/ui/structure_tab/save_handlers.rs -msgid "" -"The table changed after this tab read it, so nothing was saved. Discard the " -"changes to read the table again, then make them again." -msgstr "" - -#: crates/app/src/ui/structure_tab/save_handlers.rs -msgid "Nothing to save." -msgstr "" - -#: crates/app/src/ui/structure_tab/save_handlers.rs -#: crates/app/src/ui/workspace/saves.rs -msgid "Cannot Save" -msgstr "" - -#: crates/app/src/ui/structure_tab/save_handlers.rs -msgid "" -"The table couldn't be read after the save. Retry, then make the change again." -msgstr "" - -#: crates/app/src/ui/structure_tab/save_handlers.rs -msgid "Wait for the save to finish, then make the change again." -msgstr "" - -#: crates/app/src/ui/structure_tab/sql_preview.rs -msgid "-- Connect to a database to see the SQL." -msgstr "" - -#: crates/app/src/ui/structure_tab/sql_preview.rs -msgid "-- This database's structure can't be edited here." -msgstr "" - -#: crates/app/src/ui/structure_tab/sql_preview.rs -msgid "-- Fix the highlighted fields to see the SQL." -msgstr "" - -#: crates/app/src/ui/structure_tab/sql_preview.rs -msgid "-- No pending changes." -msgstr "" - -#: crates/app/src/ui/tab_load/load_failure.rs -msgid "" -"This table has no columns you can read. It may have been dropped, or your " -"account can't read it." -msgstr "" - -#: crates/app/src/ui/tab_load/load_failure.rs -msgid "" -"The table's columns changed while its rows were read. Try again to read it " -"as it is now." -msgstr "" - -#: crates/app/src/ui/welcome_view.rs data/resources/ui/welcome-view.ui -msgid "Saved Connections" -msgstr "" - -#: crates/app/src/ui/welcome_view.rs -msgid "Connections" -msgstr "" - -#: crates/app/src/ui/workspace/health_banner.rs -msgid "Review Key…" -msgstr "" - -#: crates/app/src/ui/workspace/health_banner.rs -#, rust-format -msgid "The old key for {host} could not be removed from {file}: {detail}" -msgstr "" - -#: crates/app/src/ui/workspace/health_banner.rs -msgid "it is not a key this connection uses" -msgstr "" - -#: crates/app/src/ui/workspace/health_banner.rs -#, rust-format -msgid "Connection lost. Reconnecting (attempt {n})." -msgstr "" - -#: crates/app/src/ui/workspace/health_banner.rs -msgid "Offline. Waiting for the network." -msgstr "" - -#: crates/app/src/ui/workspace/health_banner.rs -#, rust-format -msgid "The SSH host {host} is not trusted yet." -msgstr "" - -#: crates/app/src/ui/workspace/health_banner.rs -#, rust-format -msgid "The SSH host key for {host} does not match." -msgstr "" - -#: crates/app/src/ui/workspace/health_banner.rs -#, rust-format -msgid "The SSH host key for {host} is revoked." -msgstr "" - -#: crates/app/src/ui/workspace/health_banner.rs -msgid "The server refused the login. Retry to enter the password again." -msgstr "" - -#: crates/app/src/ui/workspace/health_banner.rs -msgid "The secure connection failed. Check the connection's TLS settings." -msgstr "" - -#: crates/app/src/ui/workspace/health_banner.rs -msgid "The connection settings no longer work. Check them and retry." -msgstr "" - -#: crates/app/src/ui/workspace/health_banner.rs -msgid "The SSH server's host key is not trusted yet." -msgstr "" - -#: crates/app/src/ui/workspace/health_banner.rs -msgid "" -"The SSH server's host key changed. Check with its administrator before " -"connecting again." -msgstr "" - -#: crates/app/src/ui/workspace/health_banner.rs -msgid "The SSH server's host key was revoked." -msgstr "" - -#: crates/app/src/ui/workspace/import.rs -#: crates/app/src/workspace/save_rejection.rs -msgid "This connection is read-only." -msgstr "" - -#: crates/app/src/ui/workspace/import.rs -msgid "The table's columns could not be read." -msgstr "" - -#: crates/app/src/ui/workspace/import.rs -#, rust-format -msgid "Imported {n} row." -msgid_plural "Imported {n} rows." -msgstr[0] "" -msgstr[1] "" - -#: crates/app/src/ui/workspace/import.rs -msgid "That file has no rows to import." -msgstr "" - -#: crates/app/src/ui/workspace/import.rs -msgid "Import stopped." -msgstr "" - -#: crates/app/src/ui/workspace/import.rs -msgid "Couldn't Import" -msgstr "" - -#: crates/app/src/ui/workspace/import.rs -#, rust-format -msgid "" -"Line {line} could not be written: {error}. The import was rolled back, so no " -"rows were added." -msgstr "" - -#: crates/app/src/ui/workspace/import.rs -#, rust-format -msgid "" -"Lines {first} to {last} could not be written: {error}. The import was rolled " -"back, so no rows were added." -msgstr "" - -#: crates/app/src/ui/workspace/import.rs -#, rust-format -msgid "" -"Line {line} could not be written: {error}. The {written} row before it stays " -"in the table, which has no transaction to undo it." -msgid_plural "" -"Line {line} could not be written: {error}. The {written} rows before it stay " -"in the table, which has no transaction to undo them." -msgstr[0] "" -msgstr[1] "" - -#: crates/app/src/ui/workspace/import.rs -#, rust-format -msgid "" -"Lines {first} to {last} could not be written: {error}. The table has no " -"transaction to undo the import, so the {written} row before them stays, and " -"some of these lines may have been written too." -msgid_plural "" -"Lines {first} to {last} could not be written: {error}. The table has no " -"transaction to undo the import, so the {written} rows before them stay, and " -"some of these lines may have been written too." -msgstr[0] "" -msgstr[1] "" - -#: crates/app/src/ui/workspace/import.rs -msgid "That file is too large to import in one go." -msgstr "" - -#: crates/app/src/ui/workspace/import.rs -#, rust-format -msgid "Line {line}, column {column}: {reason} (the value was “{text}”)" -msgstr "" - -#: crates/app/src/ui/workspace/import_ledger.rs -msgid "Stop Imports?" -msgstr "" - -#: crates/app/src/ui/workspace/import_ledger.rs -#, rust-format -msgid "" -"{n} CSV import is still running. Stopping it rolls back the rows it wrote, " -"unless the table has no transactions." -msgid_plural "" -"{n} CSV imports are still running. Stopping them rolls back the rows they " -"wrote, unless the table has no transactions." -msgstr[0] "" -msgstr[1] "" - -#: crates/app/src/ui/workspace/import_ledger.rs -msgid "_Keep Importing" -msgstr "" - -#: crates/app/src/ui/workspace/import_ledger.rs -msgid "_Stop Imports" -msgstr "" - -#: crates/app/src/ui/workspace/mod.rs -msgid "Unsaved changes" -msgstr "" - -#: crates/app/src/ui/workspace/mod.rs -msgid "" -"Editor text could not be saved to disk, so it may not come back after " -"TablePro restarts." -msgstr "" - -#: crates/app/src/ui/workspace/saves.rs -msgid "Saved" -msgstr "" - -#: crates/app/src/ui/workspace/shell.rs -msgid "Search Tables" -msgstr "" - -#: crates/app/src/ui/workspace/shell.rs -msgid "Refresh Tables" -msgstr "" - -#: crates/app/src/ui/workspace/shell.rs -msgid "Show Sidebar" -msgstr "" - -#: crates/app/src/ui/workspace/shell.rs -msgid "New Query" -msgstr "" - -#: crates/app/src/ui/workspace/shell.rs -msgid "View Open Tabs" -msgstr "" - -#: crates/app/src/ui/workspace/sidebar/mod.rs -#, rust-format -msgid "Could not refresh the table list: {error}" -msgstr "" - -#: crates/app/src/ui/workspace/sidebar/sidebar_header_factory.rs -#, rust-format -msgid "New Table in {schema}…" -msgstr "" - -#: crates/app/src/ui/workspace/sidebar/sidebar_header_factory.rs -msgid "New Table…" -msgstr "" - -#: crates/app/src/ui/workspace/sidebar/sidebar_menu.rs -msgid "Edit Structure" -msgstr "" - -#: crates/app/src/ui/workspace/sidebar/sidebar_menu.rs -msgid "Show CREATE TABLE" -msgstr "" - -#: crates/app/src/ui/workspace/sidebar/sidebar_menu.rs -msgid "Import CSV…" -msgstr "" - -#: crates/app/src/ui/workspace/sidebar/sidebar_menu.rs -#: data/resources/ui/structure-tab.ui -msgid "Drop Table…" -msgstr "" - -#: crates/app/src/ui/workspace/sidebar/sidebar_object.rs -msgctxt "object kind" -msgid "View" -msgstr "" - -#: crates/app/src/ui/workspace/sidebar/sidebar_object.rs -msgctxt "object kind" -msgid "Materialized View" -msgstr "" - -#: crates/app/src/ui/workspace/sidebar/sidebar_object.rs -msgctxt "object kind" -msgid "Table" -msgstr "" - -#: crates/app/src/ui/workspace/sidebar/sidebar_object.rs -#: crates/app/src/ui/workspace/sidebar/sidebar_view.rs -msgid "Tables" -msgstr "" - -#: crates/app/src/ui/workspace/sidebar/sidebar_view.rs -msgid "No Matching Tables" -msgstr "" - -#: crates/app/src/ui/workspace/sidebar/sidebar_view.rs -msgid "Try a different search." -msgstr "" - -#: crates/app/src/ui/workspace/sidebar/sidebar_view.rs -msgid "No Tables" -msgstr "" - -#: crates/app/src/ui/workspace/status_pages.rs -msgid "Query History Unavailable" -msgstr "" - -#: crates/app/src/ui/workspace/status_pages.rs -msgid "Saved Queries Unavailable" -msgstr "" - -#: crates/app/src/ui/workspace/status_pages.rs -msgid "Could Not Save Query" -msgstr "" - -#: crates/app/src/ui/workspace/status_pages.rs -msgid "Open a SQL editor tab to save a query." -msgstr "" - -#: crates/app/src/ui/workspace/status_pages.rs -msgid "There is nothing in the editor to save." -msgstr "" - -#: crates/app/src/ui/workspace/status_pages.rs -msgid "Save Query" -msgstr "" - -#: crates/app/src/ui/workspace/status_pages.rs -msgid "" -"Connect to a database first: a saved query is kept under its connection." -msgstr "" - -#: crates/app/src/ui/workspace/status_pages.rs -#, rust-format -msgid "Replaced “{name}”." -msgstr "" - -#: crates/app/src/ui/workspace/status_pages.rs -#, rust-format -msgid "Saved “{name}”." -msgstr "" - -#: crates/app/src/ui/workspace/status_pages.rs -msgid "Could not save that query." -msgstr "" - -#: crates/app/src/ui/workspace/structure.rs -msgid "Tables on this database are created in the SQL editor." -msgstr "" - -#: crates/app/src/ui/workspace/structure.rs -msgid "Cannot Drop Table" -msgstr "" - -#: crates/app/src/ui/workspace/structure.rs -#, rust-format -msgid "" -"Foreign keys on other tables point at {table}: {keys}. Drop those foreign " -"keys first." -msgstr "" - -#: crates/app/src/ui/workspace/structure.rs -#, rust-format -msgid "Drop {table}?" -msgstr "" - -#: crates/app/src/ui/workspace/structure.rs -msgid "" -"All rows and the table definition will be removed. This can't be undone from " -"inside TablePro." -msgstr "" - -#: crates/app/src/ui/workspace/structure.rs -msgid "Drop" -msgstr "" - -#: crates/app/src/ui/workspace/structure.rs -#: crates/app/src/workspace/save_rejection.rs -msgid "No active connection." -msgstr "" - -#: crates/app/src/ui/workspace/structure.rs -msgid "Drop Failed" -msgstr "" - -#: crates/app/src/ui/workspace/structure.rs -#, rust-format -msgid "" -"A foreign key on another table points at {table}, so it was not dropped. " -"Drop that foreign key first." -msgstr "" - -#: crates/app/src/ui/workspace/structure.rs -msgid "Could Not Show CREATE TABLE" -msgstr "" - -#: crates/app/src/ui/workspace/structure.rs -#, rust-format -msgid "Table {table} has no columns." -msgstr "" - -#: crates/app/src/ui/workspace/structure.rs -#, rust-format -msgid "Couldn't build SQL: {error}" -msgstr "" - -#: crates/app/src/ui/workspace/structure.rs -#, rust-format -msgid "Couldn't read the table: {error}" -msgstr "" - -#: crates/app/src/ui/workspace/tab_factory.rs -msgid "Undo" -msgstr "" - -#: crates/app/src/ui/workspace/tab_title.rs -#, rust-format -msgid "{table} · Structure" -msgstr "" - -#: crates/app/src/ui/workspace/tab_title.rs -msgid "New Table" -msgstr "" - -#: crates/app/src/ui/workspace/tab_title.rs -#, rust-format -msgid "Query {n}" -msgstr "" - -#: crates/app/src/ui/workspace/window_title.rs -#, rust-format -msgid "{tab} ({connection}) - TablePro" -msgstr "" - -#: crates/app/src/ui/workspace/window_title.rs -#, rust-format -msgid "{connection} - TablePro" -msgstr "" - -#: crates/app/src/ui/workspace/window_title.rs -#, rust-format -msgid "{name} · Read-Only" -msgstr "" - -#: crates/app/src/ui/workspace/workspace_tabs.rs -#, rust-format -msgid "Saved text of {n} query tab could not be read. The file was kept." -msgid_plural "" -"Saved text of {n} query tabs could not be read. The files were kept." -msgstr[0] "" -msgstr[1] "" - -#: crates/app/src/ui/workspace/workspace_tabs.rs -msgid "Could Not Reset Saved Tabs" -msgstr "" - -#: crates/app/src/ui/workspace/workspace_tabs.rs -msgid "" -"The unreadable file could not be moved aside, so the open tabs are still not " -"saved." -msgstr "" - -#: crates/app/src/ui/workspace/workspace_tabs.rs -msgid "Discard Pending Changes?" -msgstr "" - -#: crates/app/src/ui/workspace/workspace_tabs.rs -msgid "" -"Refreshing reloads the table from the database and drops every unsaved edit " -"on this tab." -msgstr "" - -#: crates/app/src/ui/workspace/workspace_tabs.rs -msgid "Discard and Refresh" -msgstr "" - -#: crates/app/src/ui/workspace/workspace_tabs.rs -msgid "Close Other Tabs" -msgstr "" - -#: crates/app/src/ui/workspace/workspace_tabs.rs -msgid "Close Tabs to the Right" -msgstr "" - -#: crates/app/src/ui/workspace/workspace_tabs.rs -msgid "No recently closed tab" -msgstr "" - -#: crates/app/src/workspace/close_guard.rs -#, rust-format -msgid "“{tab}”: {reason}" -msgstr "" - -#: crates/app/src/workspace/close_guard.rs -msgid "Could Not Save" -msgstr "" - -#: crates/app/src/workspace/dirty_tab.rs -#, rust-format -msgid "“{name}”" -msgstr "" - -#: crates/app/src/workspace/inhibit_reason.rs -msgid "There are unsaved changes" -msgstr "" - -#: crates/app/src/workspace/inhibit_reason.rs -msgid "Saving changes" -msgstr "" - -#: crates/app/src/workspace/inhibit_reason.rs -msgid "Exporting data" -msgstr "" - -#: crates/app/src/workspace/open_transaction_dialog.rs -msgid "Close With Open Transactions?" -msgstr "" - -#: crates/app/src/workspace/open_transaction_dialog.rs -#, rust-format -msgid "" -"Closing ends the database sessions of {tabs}. The server rolls back " -"uncommitted work." -msgstr "" - -#: crates/app/src/workspace/open_transaction_dialog.rs -msgid "_Close Anyway" -msgstr "" - -#: crates/app/src/workspace/rollback_cause.rs -msgid "" -"The connection was lost while saving, and the database says the changes were " -"not saved." -msgstr "" - -#: crates/app/src/workspace/save_changes_dialog.rs -msgid "Save Changes?" -msgstr "" - -#: crates/app/src/workspace/save_changes_dialog.rs -msgid "Changes that are not saved are permanently lost." -msgstr "" - -#: crates/app/src/workspace/save_changes_dialog.rs -msgid "_Discard" -msgstr "" - -#: crates/app/src/workspace/save_changes_dialog.rs -msgid "_Discard All" -msgstr "" - -#: crates/app/src/workspace/save_changes_dialog.rs -msgid "_Save" -msgstr "" - -#: crates/app/src/workspace/save_rejection.rs -msgid "" -"The last save may already be in the database. Discard these changes to see " -"what the table holds now." -msgstr "" - -#: crates/app/src/workspace/save_rejection.rs -msgid "These changes are already being saved." -msgstr "" - -#: crates/app/src/workspace/save_rejection.rs -msgid "The table's columns have not been read yet. Try again in a moment." -msgstr "" - -#: crates/app/src/workspace/save_rejection.rs -#, rust-format -msgid "" -"The table changed after these edits were made, and the edits to {columns} no " -"longer fit it. Nothing was saved. Discard the changes and make them again." -msgstr "" - -#: crates/app/src/workspace/save_rejection.rs -msgid "" -"The table's primary key changed after these edits were made, so the rows " -"they change can no longer be found. Nothing was saved. Discard the changes " -"and make them again." -msgstr "" - -#: crates/app/src/workspace/save_rejection.rs -msgid "The changes were not applied." -msgstr "" - -#: crates/app/src/workspace/save_rejection.rs -msgid "The review of these changes is still open." -msgstr "" - -#: crates/app/src/workspace/unknown_cause.rs -#, rust-format -msgid "" -"Saving {tabs} was stopped before the database confirmed it. The changes may " -"already be in the database." -msgstr "" - -#: crates/app/src/workspace/unknown_cause.rs -#, rust-format -msgid "" -"TablePro hit an internal error while saving {tabs}. The changes may already " -"be in the database." -msgstr "" - -#: crates/app/src/workspace/unknown_cause.rs -#, rust-format -msgid "" -"The connection was lost while saving {tabs}. The changes may already be in " -"the database." -msgstr "" - -#: crates/app/src/workspace/unknown_outcome_dialog.rs -#: crates/app/src/workspace/waiting_dialog.rs -msgid "_Keep Open" -msgstr "" - -#: crates/app/src/workspace/unknown_outcome_dialog.rs -msgid "_Reload Table" -msgstr "" - -#: crates/app/src/workspace/unknown_outcome_dialog.rs -msgid "_Discard Changes" -msgstr "" - -#: crates/app/src/workspace/waiting_dialog.rs -msgid "Stopping the save." -msgstr "" - -#: crates/app/src/workspace/waiting_dialog.rs -msgid "Wait for the save to finish, or stop it." -msgstr "" - -#: crates/app/src/workspace/waiting_dialog.rs -msgid "Saving Changes" -msgstr "" - -#: crates/app/src/workspace/waiting_dialog.rs -#: data/resources/ui/pending-changes-bar.ui data/resources/ui/structure-tab.ui -msgid "_Stop Saving" -msgstr "" - -#: data/app.tablepro.TablePro.desktop.in.in -msgid "Database Client" -msgstr "" - -#: data/app.tablepro.TablePro.desktop.in.in -msgid "" -"Browse and edit PostgreSQL, MySQL, SQLite, SQL Server and ClickHouse " -"databases" -msgstr "" - -#: data/app.tablepro.TablePro.desktop.in.in -msgid "SQL;Database;PostgreSQL;MySQL;SQLite;SQL Server;ClickHouse;" -msgstr "" - -#: data/app.tablepro.TablePro.desktop.in.in data/resources/gtk/menus.ui -#: data/resources/shortcuts-dialog.ui -msgid "New Window" -msgstr "" - -#: data/app.tablepro.TablePro.gschema.xml.in -msgid "Window width" -msgstr "" - -#: data/app.tablepro.TablePro.gschema.xml.in -msgid "Width of the main window in logical pixels." -msgstr "" - -#: data/app.tablepro.TablePro.gschema.xml.in -msgid "Window height" -msgstr "" - -#: data/app.tablepro.TablePro.gschema.xml.in -msgid "Height of the main window in logical pixels." -msgstr "" - -#: data/app.tablepro.TablePro.gschema.xml.in -msgid "Window is maximized" -msgstr "" - -#: data/app.tablepro.TablePro.gschema.xml.in -msgid "Whether the main window was maximized when it last closed." -msgstr "" - -#: data/app.tablepro.TablePro.gschema.xml.in -msgid "Rows per page" -msgstr "" - -#: data/app.tablepro.TablePro.gschema.xml.in -msgid "How many rows a table page fetches at a time." -msgstr "" - -#: data/app.tablepro.TablePro.gschema.xml.in -msgid "Confirm before deleting rows" -msgstr "" - -#: data/app.tablepro.TablePro.gschema.xml.in -msgid "" -"Ask before deleting 10 or more rows at once in a table tab. Deleted rows " -"stay marked until Save, and Undo brings them back." -msgstr "" - -#: data/app.tablepro.TablePro.gschema.xml.in -msgid "Save query history" -msgstr "" - -#: data/app.tablepro.TablePro.gschema.xml.in -msgid "" -"Whether the SQL you run is kept in the query history. Statements that " -"contain passwords or connection secrets are never saved. Turning this off " -"keeps the entries already saved." -msgstr "" - -#: data/app.tablepro.TablePro.gschema.xml.in -msgid "Query history retention in days" -msgstr "" - -#: data/app.tablepro.TablePro.gschema.xml.in -msgid "" -"Unpinned history entries older than this are pruned at startup. Zero keeps " -"everything." -msgstr "" - -#: data/app.tablepro.TablePro.gschema.xml.in -msgid "Query timeout in seconds" -msgstr "" - -#: data/app.tablepro.TablePro.gschema.xml.in -msgid "" -"How long the editor waits before cancelling a running query. Zero disables " -"the timeout." -msgstr "" - -#: data/app.tablepro.TablePro.gschema.xml.in -msgid "Use the system monospace font" -msgstr "" - -#: data/app.tablepro.TablePro.gschema.xml.in -msgid "" -"Whether the SQL editor follows the desktop monospace font instead of a " -"custom one." -msgstr "" - -#: data/app.tablepro.TablePro.gschema.xml.in -msgid "Custom editor font" -msgstr "" - -#: data/app.tablepro.TablePro.gschema.xml.in -msgid "" -"Pango font description the SQL editor uses when the system font is turned " -"off." -msgstr "" - -#: data/app.tablepro.TablePro.gschema.xml.in -msgid "Editor style scheme" -msgstr "" - -#: data/app.tablepro.TablePro.gschema.xml.in -msgid "GtkSourceView style scheme id for the SQL editor." -msgstr "" - -#: data/app.tablepro.TablePro.gschema.xml.in -msgid "Restore session" -msgstr "" - -#: data/app.tablepro.TablePro.gschema.xml.in -msgid "" -"Whether the connections open when TablePro quit are opened again at the next " -"launch." -msgstr "" - -#: data/app.tablepro.TablePro.gschema.xml.in -msgid "Driver the connect dialog opens with" -msgstr "" - -#: data/app.tablepro.TablePro.gschema.xml.in -msgid "" -"Id of the driver last connected to, so the dialog opens on it with its own " -"default port." -msgstr "" - -#: data/app.tablepro.TablePro.gschema.xml.in -msgid "Write NULL as an empty field" -msgstr "" - -#: data/app.tablepro.TablePro.gschema.xml.in -msgid "" -"Whether a CSV export writes NULL as an empty field rather than the text NULL." -msgstr "" - -#: data/app.tablepro.TablePro.gschema.xml.in -msgid "Replace line breaks with spaces" -msgstr "" - -#: data/app.tablepro.TablePro.gschema.xml.in -msgid "" -"Whether a CSV export flattens line breaks inside a value into single spaces." -msgstr "" - -#: data/app.tablepro.TablePro.gschema.xml.in -msgid "Write a header row" -msgstr "" - -#: data/app.tablepro.TablePro.gschema.xml.in -msgid "Whether a CSV export starts with the column names." -msgstr "" - -#: data/app.tablepro.TablePro.gschema.xml.in -msgid "Neutralise spreadsheet formulas" -msgstr "" - -#: data/app.tablepro.TablePro.gschema.xml.in -msgid "" -"Whether a CSV export prefixes values starting with =, +, - or @ so a " -"spreadsheet does not run them." -msgstr "" - -#: data/app.tablepro.TablePro.gschema.xml.in -msgid "CSV field delimiter" -msgstr "" - -#: data/app.tablepro.TablePro.gschema.xml.in -msgid "Character that separates fields in a CSV export." -msgstr "" - -#: data/app.tablepro.TablePro.gschema.xml.in -msgid "CSV quoting" -msgstr "" - -#: data/app.tablepro.TablePro.gschema.xml.in -msgid "When a CSV export wraps a field in quotes." -msgstr "" - -#: data/app.tablepro.TablePro.gschema.xml.in -msgid "CSV line ending" -msgstr "" - -#: data/app.tablepro.TablePro.gschema.xml.in -msgid "Line ending a CSV export writes between records." -msgstr "" - -#: data/app.tablepro.TablePro.gschema.xml.in -msgid "CSV decimal separator" -msgstr "" - -#: data/app.tablepro.TablePro.gschema.xml.in -msgid "" -"Character a CSV export uses between the whole and fractional parts of a " -"number." -msgstr "" - -#: data/app.tablepro.TablePro.metainfo.xml.in.in -msgid "Work with your databases" -msgstr "" - -#: data/app.tablepro.TablePro.metainfo.xml.in.in -msgid "" -"TablePro connects to PostgreSQL, MySQL, SQLite, SQL Server and ClickHouse. " -"Browse tables, edit rows in place, run SQL with syntax highlighting, and " -"reach servers behind an SSH bastion." -msgstr "" - -#: data/app.tablepro.TablePro.metainfo.xml.in.in -msgid "It can:" -msgstr "" - -#: data/app.tablepro.TablePro.metainfo.xml.in.in -msgid "Edit cells in place, with primary-key safety and an undo history" -msgstr "" - -#: data/app.tablepro.TablePro.metainfo.xml.in.in -msgid "Run SQL scripts statement by statement and cancel a slow query" -msgstr "" - -#: data/app.tablepro.TablePro.metainfo.xml.in.in -msgid "Tunnel through an SSH jump host using your own OpenSSH client" -msgstr "" - -#: data/app.tablepro.TablePro.metainfo.xml.in.in -msgid "Verify TLS, keep connections read-only, and reconnect on drop" -msgstr "" - -#: data/app.tablepro.TablePro.metainfo.xml.in.in -msgid "Export results to CSV, JSON, SQL, Excel, Markdown, HTML and XML" -msgstr "" - -#: data/app.tablepro.TablePro.metainfo.xml.in.in -msgid "Browse and edit table rows" -msgstr "" - -#: data/app.tablepro.TablePro.metainfo.xml.in.in -msgid "Run SQL in the editor" -msgstr "" - -#: data/app.tablepro.TablePro.metainfo.xml.in.in -msgid "Change a table's columns and indexes" -msgstr "" - -#: data/app.tablepro.TablePro.metainfo.xml.in.in -msgid "Connect through an SSH tunnel" -msgstr "" - -#: data/app.tablepro.TablePro.metainfo.xml.in.in -msgid "The first release of TablePro for Linux." -msgstr "" - -#: data/app.tablepro.TablePro.metainfo.xml.in.in -msgid "" -"Connect to PostgreSQL, MySQL, SQLite, SQL Server and ClickHouse, directly or " -"through an SSH tunnel" -msgstr "" - -#: data/app.tablepro.TablePro.metainfo.xml.in.in -msgid "Browse tables and edit rows in place, with undo until you save" -msgstr "" - -#: data/app.tablepro.TablePro.metainfo.xml.in.in -msgid "" -"Run SQL with completion, find and replace, and a searchable query history" -msgstr "" - -#: data/app.tablepro.TablePro.metainfo.xml.in.in -msgid "Change a table's columns, indexes and foreign keys" -msgstr "" - -#: data/app.tablepro.TablePro.metainfo.xml.in.in -msgid "Export results and tables to CSV, JSON, SQL and other formats" -msgstr "" - -#: data/resources/gtk/menus.ui data/resources/shortcuts-dialog.ui -#: data/resources/ui/history-dialog.ui -#: data/resources/ui/preferences-history-group.ui -msgid "Query History" -msgstr "" - -#: data/resources/gtk/menus.ui -msgid "Disconnect" -msgstr "" - -#: data/resources/gtk/menus.ui -msgid "Import Connections…" -msgstr "" - -#: data/resources/gtk/menus.ui -msgid "Export Connections…" -msgstr "" - -#: data/resources/gtk/menus.ui data/resources/shortcuts-dialog.ui -#: data/resources/ui/preferences-dialog.ui -msgid "Preferences" -msgstr "" - -#: data/resources/gtk/menus.ui data/resources/shortcuts-dialog.ui -msgid "Keyboard Shortcuts" -msgstr "" - -#: data/resources/gtk/menus.ui -msgid "About TablePro" -msgstr "" - -#: data/resources/gtk/menus.ui -msgid "Reopen Closed Tab" -msgstr "" - -#: data/resources/shortcuts-dialog.ui -#: data/resources/ui/preferences-general-page.ui -msgid "General" -msgstr "" - -#: data/resources/shortcuts-dialog.ui -msgid "Show or Hide the Sidebar" -msgstr "" - -#: data/resources/shortcuts-dialog.ui -msgid "Close a Dialog" -msgstr "" - -#: data/resources/shortcuts-dialog.ui -msgid "Quit" -msgstr "" - -#: data/resources/shortcuts-dialog.ui -msgid "Tabs" -msgstr "" - -#: data/resources/shortcuts-dialog.ui -msgid "New SQL Editor Tab" -msgstr "" - -#: data/resources/shortcuts-dialog.ui -msgid "Close the Tab or the Empty Window" -msgstr "" - -#: data/resources/shortcuts-dialog.ui -msgid "Reopen the Last Closed Tab" -msgstr "" - -#: data/resources/shortcuts-dialog.ui -msgid "Next Tab" -msgstr "" - -#: data/resources/shortcuts-dialog.ui -msgid "Previous Tab" -msgstr "" - -#: data/resources/shortcuts-dialog.ui -msgid "Move the Tab Right" -msgstr "" - -#: data/resources/shortcuts-dialog.ui -msgid "Move the Tab Left" -msgstr "" - -#: data/resources/shortcuts-dialog.ui -msgid "Browse Table" -msgstr "" - -#: data/resources/shortcuts-dialog.ui -msgid "Read the Table Again" -msgstr "" - -#: data/resources/shortcuts-dialog.ui -msgid "Save Pending Changes" -msgstr "" - -#: data/resources/shortcuts-dialog.ui -msgid "Undo the Last Change" -msgstr "" - -#: data/resources/shortcuts-dialog.ui -msgid "Redo the Last Change" -msgstr "" - -#: data/resources/shortcuts-dialog.ui -msgid "Select All Rows" -msgstr "" - -#: data/resources/shortcuts-dialog.ui -msgid "Clear the Selection" -msgstr "" - -#: data/resources/shortcuts-dialog.ui -msgid "First Row of the Page" -msgstr "" - -#: data/resources/shortcuts-dialog.ui -msgid "Last Row of the Page" -msgstr "" - -#: data/resources/shortcuts-dialog.ui -msgid "Extend the Selection to the Clicked Row" -msgstr "" - -#: data/resources/shortcuts-dialog.ui -msgid "Add or Remove the Clicked Row" -msgstr "" - -#: data/resources/shortcuts-dialog.ui -msgid "Data Grid" -msgstr "" - -#: data/resources/shortcuts-dialog.ui -msgid "Move Between Cells" -msgstr "" - -#: data/resources/shortcuts-dialog.ui -msgid "Edit a Cell or Toggle a Check Box" -msgstr "" - -#: data/resources/shortcuts-dialog.ui -msgid "Toggle a Check Box" -msgstr "" - -#: data/resources/shortcuts-dialog.ui -msgid "Show the Cell Menu" -msgstr "" - -#: data/resources/shortcuts-dialog.ui -msgid "Set Cell to NULL" -msgstr "" - -#: data/resources/shortcuts-dialog.ui -msgid "Finish Editing" -msgstr "" - -#: data/resources/shortcuts-dialog.ui -msgid "Cancel Editing" -msgstr "" - -#: data/resources/shortcuts-dialog.ui -msgid "Finish Editing and Edit the Next Cell" -msgstr "" - -#: data/resources/shortcuts-dialog.ui -msgid "Finish Editing and Edit the Previous Cell" -msgstr "" - -#: data/resources/shortcuts-dialog.ui -msgid "Save a Multi-Line Value" -msgstr "" - -#: data/resources/shortcuts-dialog.ui -msgid "Mark Rows for Deletion" -msgstr "" - -#: data/resources/shortcuts-dialog.ui -msgid "Copy Selected Rows as TSV" -msgstr "" - -#: data/resources/shortcuts-dialog.ui -msgid "Clear the Multi-Row Selection" -msgstr "" - -#: data/resources/shortcuts-dialog.ui -msgid "SQL Editor" -msgstr "" - -#: data/resources/shortcuts-dialog.ui -msgid "Run the Query or the Selected Text" -msgstr "" - -#: data/resources/shortcuts-dialog.ui -msgid "Run the Statement at the Cursor" -msgstr "" - -#: data/resources/shortcuts-dialog.ui -msgid "Cancel the Running Query" -msgstr "" - -#: data/resources/shortcuts-dialog.ui -msgid "Move Between the Editor and the Results" -msgstr "" - -#: data/resources/shortcuts-dialog.ui -msgid "Format SQL" -msgstr "" - -#: data/resources/shortcuts-dialog.ui -msgid "Toggle Line Comment" -msgstr "" - -#: data/resources/shortcuts-dialog.ui -msgid "Open a SQL File" -msgstr "" - -#: data/resources/shortcuts-dialog.ui -msgid "Save to the SQL File" -msgstr "" - -#: data/resources/shortcuts-dialog.ui -msgid "Save to Another SQL File" -msgstr "" - -#: data/resources/shortcuts-dialog.ui data/resources/ui/find-bar.ui -msgid "Find" -msgstr "" - -#: data/resources/shortcuts-dialog.ui -msgid "Table Structure" -msgstr "" - -#: data/resources/ui/browse-tab.ui -msgid "Couldn't refresh rows. Showing the last loaded page." -msgstr "" - -#: data/resources/ui/browse-tab.ui -msgid "Read-only connection. Editing disabled." -msgstr "" - -#: data/resources/ui/browse-tab.ui -msgid "This table has no primary key. Use the SQL editor to modify rows." -msgstr "" - -#: data/resources/ui/browse-tab.ui -msgid "Loading…" -msgstr "" - -#: data/resources/ui/browse-tab.ui -msgid "Couldn't Load Rows" -msgstr "" - -#: data/resources/ui/browse-tab.ui data/resources/ui/history-dialog.ui -msgid "More Actions" -msgstr "" - -#: data/resources/ui/browse-tab.ui -msgid "Filter" -msgstr "" - -#: data/resources/ui/browse-tab.ui -msgid "Rows:" -msgstr "" - -#: data/resources/ui/connect-dialog.ui -msgid "Driver" -msgstr "" - -#: data/resources/ui/connect-dialog.ui -msgid "Host" -msgstr "" - -#: data/resources/ui/connect-dialog.ui data/resources/ui/ssh-section.ui -msgid "Port" -msgstr "" - -#: data/resources/ui/connect-dialog.ui data/resources/ui/ssh-section.ui -msgid "Authentication" -msgstr "" - -#: data/resources/ui/connect-dialog.ui -msgid "Method" -msgstr "" - -#: data/resources/ui/connect-dialog.ui data/resources/ui/ssh-section.ui -msgid "Username" -msgstr "" - -#: data/resources/ui/connect-dialog.ui -msgid "Keep it in the keyring; otherwise it is asked for at each connect" -msgstr "" - -#: data/resources/ui/connect-dialog.ui -msgid "Options" -msgstr "" - -#: data/resources/ui/connect-dialog.ui -msgid "Read-Only Mode" -msgstr "" - -#: data/resources/ui/connect-failed-page.ui -msgid "Could Not Connect" -msgstr "" - -#: data/resources/ui/connect-failed-page.ui -msgid "Choose Connection" -msgstr "" - -#: data/resources/ui/export-operations-button.ui -msgid "Exports" -msgstr "" - -#: data/resources/ui/export-operations-button.ui -msgid "Running exports" -msgstr "" - -#: data/resources/ui/filter-rule-row.ui -msgid "Column" -msgstr "" - -#: data/resources/ui/filter-rule-row.ui -msgid "Operator" -msgstr "" - -#: data/resources/ui/filter-strip.ui -msgid "Match" -msgstr "" - -#: data/resources/ui/filter-strip.ui -msgctxt "filter operator" -msgid "all" -msgstr "" - -#: data/resources/ui/filter-strip.ui -msgctxt "filter operator" -msgid "any" -msgstr "" - -#: data/resources/ui/filter-strip.ui -msgid "of these rules" -msgstr "" - -#: data/resources/ui/filter-strip.ui -msgid "Clear All" -msgstr "" - -#: data/resources/ui/filter-strip.ui -msgid "Apply" -msgstr "" - -#: data/resources/ui/filter-strip.ui -msgid "e.g. created_at > now() - interval '1 day'" -msgstr "" - -#: data/resources/ui/filter-strip.ui -msgid "Or use the rule editor" -msgstr "" - -#: data/resources/ui/filter-strip.ui -msgid "Add Rule" -msgstr "" - -#: data/resources/ui/find-bar.ui -msgid "Match Case" -msgstr "" - -#: data/resources/ui/find-bar.ui -msgid "Match Whole Word" -msgstr "" - -#: data/resources/ui/find-bar.ui -msgid "Regular Expressions" -msgstr "" - -#: data/resources/ui/find-bar.ui -msgid "Replace with" -msgstr "" - -#: data/resources/ui/find-bar.ui -msgid "Replace All" -msgstr "" - -#: data/resources/ui/history-dialog.ui -msgid "Select" -msgstr "" - -#: data/resources/ui/history-dialog.ui -msgid "Select Queries" -msgstr "" - -#: data/resources/ui/history-dialog.ui -msgid "Search" -msgstr "" - -#: data/resources/ui/history-dialog.ui -msgid "Search queries…" -msgstr "" - -#: data/resources/ui/history-dialog.ui -msgid "Search queries" -msgstr "" - -#: data/resources/ui/history-dialog.ui -msgid "Queries" -msgstr "" - -#: data/resources/ui/history-dialog.ui -msgid "Export" -msgstr "" - -#: data/resources/ui/history-dialog.ui -msgid "Clear All History…" -msgstr "" - -#: data/resources/ui/history-dialog.ui -msgid "Export as SQL…" -msgstr "" - -#: data/resources/ui/history-dialog.ui -msgid "Export as CSV…" -msgstr "" - -#: data/resources/ui/history-row.ui -msgid "Select Query" -msgstr "" - -#: data/resources/ui/pending-changes-bar.ui -msgid "Save Changes" -msgstr "" - -#: data/resources/ui/pending-changes-bar.ui -msgid "Discard All Changes" -msgstr "" - -#: data/resources/ui/preferences-data-browser-group.ui -msgid "Data Browser" -msgstr "" - -#: data/resources/ui/preferences-data-browser-group.ui -msgid "Default page size" -msgstr "" - -#: data/resources/ui/preferences-data-browser-group.ui -msgid "Rows fetched per request when browsing a table" -msgstr "" - -#: data/resources/ui/preferences-data-browser-group.ui -msgid "Confirm Before Deleting Rows" -msgstr "" - -#: data/resources/ui/preferences-editor-page.ui -msgid "Editor" -msgstr "" - -#: data/resources/ui/preferences-editor-page.ui -msgid "Font" -msgstr "" - -#: data/resources/ui/preferences-editor-page.ui -msgid "Use the System Monospace Font" -msgstr "" - -#: data/resources/ui/preferences-editor-page.ui -msgid "Follows the font you picked in the desktop settings" -msgstr "" - -#: data/resources/ui/preferences-editor-page.ui -msgid "Editor font" -msgstr "" - -#: data/resources/ui/preferences-editor-page.ui -msgid "Style Scheme" -msgstr "" - -#: data/resources/ui/preferences-editor-page.ui -msgid "Running Queries" -msgstr "" - -#: data/resources/ui/preferences-editor-page.ui -msgid "Query timeout (seconds)" -msgstr "" - -#: data/resources/ui/preferences-editor-page.ui -msgid "Cancel long-running queries automatically. Set to 0 to disable." -msgstr "" - -#: data/resources/ui/preferences-general-page.ui -msgid "Startup" -msgstr "" - -#: data/resources/ui/preferences-general-page.ui -msgid "Restore Session" -msgstr "" - -#: data/resources/ui/preferences-general-page.ui -msgid "Reopen the connections that were open when TablePro quit" -msgstr "" - -#: data/resources/ui/preferences-history-group.ui -msgid "Save Query History" -msgstr "" - -#: data/resources/ui/preferences-history-group.ui -msgid "" -"Keep a searchable record of the SQL you run. Statements that contain " -"passwords or connection secrets are never saved." -msgstr "" - -#: data/resources/ui/preferences-history-group.ui -msgid "Retention (days)" -msgstr "" - -#: data/resources/ui/preferences-history-group.ui -msgid "0 keeps history forever; pinned entries are never pruned." -msgstr "" - -#: data/resources/ui/preferences-history-group.ui -msgid "Clear query history" -msgstr "" - -#: data/resources/ui/preferences-history-group.ui -msgid "" -"Removes every history entry, including pinned ones. Saved queries are kept." -msgstr "" - -#: data/resources/ui/preferences-history-group.ui -msgid "Clear…" -msgstr "" - -#: data/resources/ui/preferences-history-group.ui -msgid "Storage location" -msgstr "" - -#: data/resources/ui/results-pane.ui -msgid "Show Results List" -msgstr "" - -#: data/resources/ui/results-pane.ui -msgid "Results" -msgstr "" - -#: data/resources/ui/results-pane.ui -msgid "No Results Yet" -msgstr "" - -#: data/resources/ui/results-pane.ui -msgid "Run a query to see what it returns." -msgstr "" - -#: data/resources/ui/sql-editor.ui -msgid "Open SQL File…" -msgstr "" - -#: data/resources/ui/sql-editor.ui -msgid "Save As…" -msgstr "" - -#: data/resources/ui/sql-editor.ui -msgid "Save Query…" -msgstr "" - -#: data/resources/ui/sql-editor.ui -msgid "Find…" -msgstr "" - -#: data/resources/ui/sql-editor.ui -msgid "Find and Replace…" -msgstr "" - -#: data/resources/ui/sql-editor.ui -msgid "Editor Options" -msgstr "" - -#: data/resources/ui/sql-editor.ui -msgid "Stop the Running Query" -msgstr "" - -#: data/resources/ui/sql-editor.ui -msgid "SQL editor" -msgstr "" - -#: data/resources/ui/sqlite-file-row.ui -msgid "Database file" -msgstr "" - -#: data/resources/ui/sqlite-file-row.ui data/resources/ui/tls-section.ui -msgid "Choose…" -msgstr "" - -#: data/resources/ui/sqlite-file-row.ui -msgid "Open an Existing Database File" -msgstr "" - -#: data/resources/ui/sqlite-file-row.ui -msgid "New Database…" -msgstr "" - -#: data/resources/ui/sqlite-file-row.ui -msgid "Create a Database File When You Connect" -msgstr "" - -#: data/resources/ui/ssh-section.ui -msgid "SSH Tunnel" -msgstr "" - -#: data/resources/ui/ssh-section.ui -msgid "Use SSH Tunnel" -msgstr "" - -#: data/resources/ui/ssh-section.ui -msgid "Empty rows are filled from your SSH configuration" -msgstr "" - -#: data/resources/ui/ssh-section.ui -msgid "Host or alias" -msgstr "" - -#: data/resources/ui/ssh-section.ui -msgid "Jump hosts" -msgstr "" - -#: data/resources/ui/ssh-section.ui -msgid "Choose a Private Key File" -msgstr "" - -#: data/resources/ui/structure-tab.ui -msgid "Couldn't reload structure. Showing the last loaded version." -msgstr "" - -#: data/resources/ui/structure-tab.ui -msgid "Loading structure…" -msgstr "" - -#: data/resources/ui/structure-tab.ui -msgid "Reading columns, indexes, and foreign keys…" -msgstr "" - -#: data/resources/ui/structure-tab.ui -msgid "Add a name and at least one column to save." -msgstr "" - -#: data/resources/ui/structure-tab.ui -msgid "Add Column" -msgstr "" - -#: data/resources/ui/structure-tab.ui -msgid "Indexes" -msgstr "" - -#: data/resources/ui/structure-tab.ui -msgid "Add Index…" -msgstr "" - -#: data/resources/ui/structure-tab.ui -msgid "Foreign Keys" -msgstr "" - -#: data/resources/ui/structure-tab.ui -msgid "Add Foreign Key…" -msgstr "" - -#: data/resources/ui/structure-tab.ui -msgid "SQL Preview" -msgstr "" - -#: data/resources/ui/structure-tab.ui -msgid "Couldn't Load Structure" -msgstr "" - -#: data/resources/ui/tls-section.ui -msgid "Security" -msgstr "" - -#: data/resources/ui/tls-section.ui -msgid "Encryption" -msgstr "" - -#: data/resources/ui/tls-section.ui -msgid "Certificates" -msgstr "" - -#: data/resources/ui/tls-section.ui -msgid "For a server whose certificate this computer does not trust" -msgstr "" - -#: data/resources/ui/tls-section.ui -msgid "CA certificate" -msgstr "" - -#: data/resources/ui/tls-section.ui -msgid "Clear CA Certificate" -msgstr "" - -#: data/resources/ui/tls-section.ui -msgid "Client certificate" -msgstr "" - -#: data/resources/ui/tls-section.ui -msgid "Clear Client Certificate" -msgstr "" - -#: data/resources/ui/tls-section.ui -msgid "Client key" -msgstr "" - -#: data/resources/ui/tls-section.ui -msgid "Clear Client Key" -msgstr "" - -#: data/resources/ui/tls-section.ui -msgid "TLS server name" -msgstr "" - -#: data/resources/ui/welcome-view.ui -msgid "No Connections" -msgstr "" - -#: data/resources/ui/welcome-view.ui -msgid "Add a database connection to get started." -msgstr "" - -#: data/resources/ui/welcome-view.ui -msgid "Add Connection" -msgstr "" - -#: data/resources/ui/workspace.ui -msgid "Filter tables…" -msgstr "" - -#: data/resources/ui/workspace.ui -msgid "Filter tables" -msgstr "" - -#: data/resources/ui/workspace.ui -msgid "Saved tabs could not be read, so the open tabs are not saved" -msgstr "" - -#: data/resources/ui/workspace.ui -msgid "Moves the unreadable file aside, so the open tabs can be saved" -msgstr "" - -#: data/resources/ui/workspace.ui -msgid "Select a Table" -msgstr "" - -#: data/resources/ui/workspace.ui -msgid "Choose a table in the sidebar or open the SQL editor." -msgstr "" - -#: data/resources/ui/workspace.ui -msgid "Open SQL Editor" -msgstr "" diff --git a/scripts/ci/detect-changed-paths.sh b/scripts/ci/detect-changed-paths.sh index 3436cde314..ee60420dce 100755 --- a/scripts/ci/detect-changed-paths.sh +++ b/scripts/ci/detect-changed-paths.sh @@ -67,9 +67,7 @@ case "$SUITE" in '\.github/actions/(setup-xcode(gen)?|prepare-build)/' '\.github/workflows/release-build\.yml$') SKIP='apple/Plugins/[^/]+Tests/|apple/Packages/[^/]+/Tests/' ;; linux) - # The fast job checks the Linux docs with the repo's docs and word scripts. - PATTERNS=('linux/' 'scripts/(check-doc-symbols|check-banned-words)\.sh$' 'scripts/banned-words\.txt$' - 'scripts/ci/detect-changed-paths\.sh$' + PATTERNS=('linux/' 'scripts/ci/detect-changed-paths\.sh$' '\.github/workflows/(build-linux|linux-packages|release-linux)\.yml$') ;; *) echo "detect-changed-paths.sh: expected macos, plugins, ios, oracle, hana, release or linux, got '$SUITE'" >&2 diff --git a/scripts/ci/test_detect_changed_paths.py b/scripts/ci/test_detect_changed_paths.py index cb164ab07d..c7d184fb5e 100644 --- a/scripts/ci/test_detect_changed_paths.py +++ b/scripts/ci/test_detect_changed_paths.py @@ -71,9 +71,6 @@ def test_linux_runs_on_the_linux_tree_and_what_its_jobs_read(self): for path in [ "linux/crates/app/src/main.rs", "linux/meson.build", - "scripts/check-doc-symbols.sh", - "scripts/check-banned-words.sh", - "scripts/banned-words.txt", ".github/workflows/build-linux.yml", ".github/workflows/linux-packages.yml", ".github/workflows/release-linux.yml", @@ -87,6 +84,11 @@ def test_linux_skips_the_apple_apps(self): with self.subTest(path=path): self.assertEqual(self.verdict_after("linux", path), "false") + def test_linux_skips_the_shared_doc_scripts(self): + for path in ["scripts/check-doc-symbols.sh", "scripts/check-banned-words.sh", "scripts/banned-words.txt"]: + with self.subTest(path=path): + self.assertEqual(self.verdict_after("linux", path), "false") + def test_unknown_flag_exits_2(self): self.assertEqual(self.detect("--head")[0], 2)