Commit 30d5380
committed
feat: 25 more languages (60 total) + DuckDB Quack remote protocol
i18n pass 3 brings the supported locale set to 60: Norwegian,
Danish, Finnish, Catalan, Bulgarian, Slovak, Croatian, Serbian,
Slovenian, Lithuanian, Latvian, Estonian, Khmer, Burmese, Sinhala,
Nepali, Swahili, Afrikaans, Welsh, Irish, Icelandic, Albanian,
Azerbaijani, Mongolian, Kazakh. Native names in the topbar
selector. Translated via the deep-translator / Google backend in
~12 minutes for 2 500+ strings.
Quack remote protocol (DuckDB May 2026, HTTP on port 9494):
- src.quack: ATTACHes a remote DuckDB via the quack: URL scheme
with a SECRET-based token, then reads tables qualified by
duckle_src.schema.table. Goes through the existing
build_relational_source path (mode=table / mode=sql).
- snk.quack: writes through build_relational_sink so all four
modes (append / overwrite / truncate / upsert) work without
protocol-specific wiring.
- quack_attach() emits "CREATE OR REPLACE SECRET duckle_quack_secret
(TYPE QUACK, TOKEN '...'); ATTACH 'quack:host:port' AS duckle_src
(READ_ONLY);" - omits SECRET when no token is provided so test
servers without auth work too.
- Default port is 9494. If the host string already carries a port
it's used verbatim (host:port form, but skipped if it looks like
an IPv6 literal in brackets).
- Two unit tests: SECRET + ATTACH are emitted with the right shape
when a token is set; SECRET is omitted when token is empty.
Frontend wiring:
- Palette: src.quack + snk.quack added to the Cloud Warehouses
group right after MotherDuck. Same group routes through
synthWarehouseSource / Sink, where I added compact Quack
manifests (host, port=9494, token, schemaName, tableName, and
the standard write-mode picker on the sink).
- README capability tables: 73 sources -> 74 (Quack listed under
Cloud warehouses), 57 sinks -> 58 (same), i18n line bumped from
35 to 60 languages.
Requires DuckDB built with quack support on both sides. Duckle's
bundled DuckDB CLI is 1.5.3; users wanting Quack today need to
swap in a v2.0+ build via Engine setup. Error surfaces clearly
from DuckDB ("Unknown SECRET type 'QUACK'" or similar) on older
builds without any Duckle-side breakage.1 parent 1d07448 commit 30d5380
32 files changed
Lines changed: 5728 additions & 12 deletions
File tree
- crates/duckdb-engine/src
- frontend/src
- i18n
- locales
- workflow-ui
- fields
- scripts
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
56 | 56 | | |
57 | 57 | | |
58 | 58 | | |
59 | | - | |
| 59 | + | |
60 | 60 | | |
61 | | - | |
| 61 | + | |
62 | 62 | | |
63 | 63 | | |
64 | 64 | | |
| |||
138 | 138 | | |
139 | 139 | | |
140 | 140 | | |
141 | | - | |
| 141 | + | |
142 | 142 | | |
143 | 143 | | |
144 | 144 | | |
| |||
185 | 185 | | |
186 | 186 | | |
187 | 187 | | |
188 | | - | |
| 188 | + | |
189 | 189 | | |
190 | 190 | | |
191 | 191 | | |
| |||
197 | 197 | | |
198 | 198 | | |
199 | 199 | | |
200 | | - | |
| 200 | + | |
201 | 201 | | |
202 | 202 | | |
203 | 203 | | |
| |||
265 | 265 | | |
266 | 266 | | |
267 | 267 | | |
268 | | - | |
| 268 | + | |
269 | 269 | | |
270 | 270 | | |
271 | 271 | | |
| |||
277 | 277 | | |
278 | 278 | | |
279 | 279 | | |
280 | | - | |
| 280 | + | |
281 | 281 | | |
282 | 282 | | |
283 | 283 | | |
| |||
454 | 454 | | |
455 | 455 | | |
456 | 456 | | |
457 | | - | |
| 457 | + | |
458 | 458 | | |
459 | 459 | | |
460 | | - | |
| 460 | + | |
461 | 461 | | |
462 | 462 | | |
463 | 463 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
3731 | 3731 | | |
3732 | 3732 | | |
3733 | 3733 | | |
3734 | | - | |
| 3734 | + | |
3735 | 3735 | | |
3736 | 3736 | | |
3737 | 3737 | | |
| |||
5793 | 5793 | | |
5794 | 5794 | | |
5795 | 5795 | | |
| 5796 | + | |
| 5797 | + | |
5796 | 5798 | | |
5797 | 5799 | | |
5798 | 5800 | | |
| |||
6068 | 6070 | | |
6069 | 6071 | | |
6070 | 6072 | | |
| 6073 | + | |
| 6074 | + | |
| 6075 | + | |
| 6076 | + | |
| 6077 | + | |
| 6078 | + | |
| 6079 | + | |
| 6080 | + | |
| 6081 | + | |
| 6082 | + | |
| 6083 | + | |
| 6084 | + | |
| 6085 | + | |
| 6086 | + | |
| 6087 | + | |
| 6088 | + | |
| 6089 | + | |
| 6090 | + | |
| 6091 | + | |
| 6092 | + | |
| 6093 | + | |
| 6094 | + | |
| 6095 | + | |
| 6096 | + | |
| 6097 | + | |
| 6098 | + | |
| 6099 | + | |
| 6100 | + | |
| 6101 | + | |
| 6102 | + | |
| 6103 | + | |
| 6104 | + | |
| 6105 | + | |
| 6106 | + | |
| 6107 | + | |
| 6108 | + | |
| 6109 | + | |
| 6110 | + | |
| 6111 | + | |
| 6112 | + | |
| 6113 | + | |
| 6114 | + | |
| 6115 | + | |
| 6116 | + | |
| 6117 | + | |
| 6118 | + | |
6071 | 6119 | | |
6072 | 6120 | | |
6073 | 6121 | | |
| |||
7395 | 7443 | | |
7396 | 7444 | | |
7397 | 7445 | | |
7398 | | - | |
| 7446 | + | |
7399 | 7447 | | |
7400 | 7448 | | |
7401 | 7449 | | |
| |||
7629 | 7677 | | |
7630 | 7678 | | |
7631 | 7679 | | |
| 7680 | + | |
| 7681 | + | |
| 7682 | + | |
| 7683 | + | |
| 7684 | + | |
| 7685 | + | |
| 7686 | + | |
| 7687 | + | |
| 7688 | + | |
| 7689 | + | |
| 7690 | + | |
| 7691 | + | |
| 7692 | + | |
| 7693 | + | |
| 7694 | + | |
| 7695 | + | |
| 7696 | + | |
| 7697 | + | |
| 7698 | + | |
| 7699 | + | |
| 7700 | + | |
| 7701 | + | |
| 7702 | + | |
| 7703 | + | |
| 7704 | + | |
| 7705 | + | |
| 7706 | + | |
| 7707 | + | |
| 7708 | + | |
| 7709 | + | |
| 7710 | + | |
| 7711 | + | |
| 7712 | + | |
| 7713 | + | |
| 7714 | + | |
| 7715 | + | |
| 7716 | + | |
| 7717 | + | |
| 7718 | + | |
| 7719 | + | |
| 7720 | + | |
| 7721 | + | |
| 7722 | + | |
| 7723 | + | |
| 7724 | + | |
| 7725 | + | |
| 7726 | + | |
| 7727 | + | |
| 7728 | + | |
| 7729 | + | |
| 7730 | + | |
| 7731 | + | |
| 7732 | + | |
| 7733 | + | |
| 7734 | + | |
| 7735 | + | |
| 7736 | + | |
| 7737 | + | |
| 7738 | + | |
| 7739 | + | |
| 7740 | + | |
| 7741 | + | |
| 7742 | + | |
| 7743 | + | |
| 7744 | + | |
| 7745 | + | |
| 7746 | + | |
| 7747 | + | |
| 7748 | + | |
| 7749 | + | |
| 7750 | + | |
| 7751 | + | |
| 7752 | + | |
| 7753 | + | |
| 7754 | + | |
| 7755 | + | |
| 7756 | + | |
7632 | 7757 | | |
7633 | 7758 | | |
7634 | 7759 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
48 | 48 | | |
49 | 49 | | |
50 | 50 | | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
51 | 76 | | |
52 | 77 | | |
53 | 78 | | |
| |||
88 | 113 | | |
89 | 114 | | |
90 | 115 | | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
91 | 142 | | |
92 | 143 | | |
93 | 144 | | |
| |||
0 commit comments