Skip to content

Commit e8bef1b

Browse files
authored
fix(menu): disambiguate the Whitebox catalog's "GeoLibre" subcategory (#1913)
* fix(menu): disambiguate the Whitebox catalog's "GeoLibre" subcategory The Processing menu had two unrelated things named "GeoLibre" in one tree: the Whitebox catalog's provenance subcategory (Processing -> Conversion -> GeoLibre) and the app's own tools submenu (Processing -> GeoLibre). Nothing in either label told them apart, and the nine catalog categories render as bare siblings of the GeoLibre submenu, so the two paths read as mirror images. Two changes, neither adding depth: - Rename the generator's GEOLIBRE_SUBCATEGORY to "GeoLibre (WASM)". The label is a generator constant, not catalog data, and nothing keys off the literal (the subcategory sort ranks against the constant), so this is one line plus a regenerate. "(WASM)" is already the app's user-facing shorthand for the in-browser runtime ("Run locally (WASM)"), so it reads as a runtime note rather than a second product. - Add a "Whitebox" section label above the catalog categories, and a separator between that block and the GeoLibre submenu, so the two sections read as separate owners. The dialog-opening item now uses the existing, already translated "Whitebox toolbox" string so it says what clicking it does. A label rather than a parent submenu: the grouping is worth one muted line, not an extra hover on the way to every tool. Refs #1904 * Address Claude review feedback - Reflow the wasmOnly comment in gen-whitebox-menu-catalog.mjs; the GEOLIBRE_SUBCATEGORY rename left it wrapped across three lines mid-clause. * fix(menu): drop the Whitebox section label, title-case "Whitebox Toolbox" The toolbox item alone heads the catalog categories; the extra muted label above it was redundant with it. The separator before the GeoLibre submenu stays, so the two sections still read as separate owners. "Whitebox Toolbox" matches the title case of the sibling menu items (SQL Workspace, Python Console, Jupyter Notebook). Retitling the shared processing.whitebox.toolbox string rather than adding a menu-only key keeps the item translated in all 19 locales; it also titles the toolbox dialog, so that heading picks up the same casing in English. * fix(menu): name the Processing GeoLibre submenu "GeoLibre Toolbox" The submenu holding the app's own dialogs was labelled with the bare product name, so it read as the product rather than as one of the two toolboxes the Processing menu offers. Renaming it pairs it with its "Whitebox Toolbox" sibling across the new separator and finishes the disambiguation GeoLibre#1904 asks for. "Toolbox" is a translatable word, so the string is translated in all 19 locales, each following that catalog's own wording for the existing "Whitebox Toolbox" string. * fix(i18n): repair the Vietnamese Processing menu strings The Vietnamese catalog was badly wrong across the menu this PR renames. Three classes of defect, 51 strings: - **Value belongs to a different key.** `toolbar.command.pythonConsole` read "Cài đặt" (Settings), `toolbar.rasterTool.zonal` read "Không thể chạy công cụ raster." (an error message), `toolbar.item.projection` read "địa hình" (Terrain), `toolbar.conversion.rasterToPmtiles` read a whole unrelated error sentence, and `processing.whitebox.whiteboxTools` read "Đầu ra sẽ xuất hiện ở đây." (Output will appear here.). - **Product name translated as a common noun.** Whitebox became "hộp trắng" (a white box), Earth Engine "Động cơ trái đất" (an earth motor), Planetary Computer "Máy tính hành tinh", Jupyter Notebook "Máy tính xách tay Jupyter" (a Jupyter laptop), and sidecar "xe sidecar" (a motorcycle sidecar) in 11 places, though every other string in the catalog already uses the bare loanword "sidecar". - **Wrong sense of an ambiguous English word.** Moran's I came out as "Tôi của Global Moran" / "Moran địa phương của tôi", reading the statistic's "I" as the English pronoun. Clip was "Đoạn phim" (a film clip), Union "Liên minh" (a political alliance), Intersection "Giao lộ" (a road junction), Explode "nổ tung" (to blow up), Aspect "Diện mạo" (someone's looks), Join "Tham gia" (to attend), Georeferencing "Hội thảo địa lý" (a geography seminar). Corrections follow the terminology the catalog already uses correctly elsewhere, so the menu agrees with the dialogs it opens: "Bao lồi" (convexHullLayerName), "Trọng tâm" (layerCentroids), "Bóng đồi" (sampleImageServiceLabel), "Bảng điều khiển Python" (pythonConsole.title), "Mã hóa địa lý" (settings.section.geocoding), "nối thuộc tính" (delimitedText.tableHint), "Giao nhau" (selection.predicateIntersects). * Address review feedback - ui-profile.ts: point the `processing.whitebox` visibility toggle at `processing.whitebox.toolbox`, the same key the Processing menu item now uses. Both read "Whitebox" before this PR; leaving the toggle behind meant Settings -> Interface Settings listed "Whitebox" for the row that hides "Whitebox Toolbox". Verified in the running dialog, light and dark. Also updated the stale comment above it, which still described the submenu as "GeoLibre". (Claude review) - vi.json: align the conversion labels on the terminology the catalog already uses. It spells the data type "vectơ" 59 times against 39 "Vector", and `Vectơ sang Vectơ` sat directly above `Vector sang GeoParquet` in the same submenu; `rasterToCog` used "tới" where its neighbours use "sang". (CodeRabbit) - vi.json: `rasterTool.inputPoints` held an error message ("Không thể chạy công cụ raster.") instead of an input label, `engineClient` said "Khách hàng" (a paying customer) and `engineSidecar` "Xe bên" (a side vehicle). (CodeRabbit) - vi.json: `conversion.vectorToVectorInputLabel` held "Liên minh" (Union), the same mismatched-value class, found while verifying the above; and two strings spelled WebAssembly "WebAssugging". Left alone: `rasterTool.engine` / `vectorTools.engine` = "Động cơ", which reads as a physical motor. CodeRabbit excluded it and there is no obvious better Vietnamese term for a compute-engine selector, so it wants a native speaker rather than another guess.
1 parent cbdd941 commit e8bef1b

23 files changed

Lines changed: 148 additions & 125 deletions

File tree

apps/geolibre-desktop/src/components/layout/toolbar/ProcessingMenu.tsx

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -140,9 +140,16 @@ export function ProcessingMenu({
140140
<DropdownMenuSeparator />
141141
</>
142142
)}
143+
{/* Heads the toolbox block below: the nine category submenus render as
144+
bare siblings of the GeoLibre Toolbox submenu, so "Conversion"
145+
(Whitebox) and "GeoLibre Toolbox → Conversion" (app dialog)
146+
otherwise look like peers (GeoLibre#1904). Names the toolbox rather
147+
than repeating the bare product name, and says what clicking it
148+
does; pairs with the GeoLibre Toolbox trigger below. Reuses the
149+
dialog's own heading string, already translated in every locale. */}
143150
{showWhitebox && (
144151
<DropdownMenuItem onSelect={() => setProcessingOpen(true)}>
145-
{t("toolbar.item.whitebox")}
152+
{t("processing.whitebox.toolbox")}
146153
</DropdownMenuItem>
147154
)}
148155
{/* Whitebox tools grouped by category/subcategory. Each leaf opens the
@@ -178,12 +185,17 @@ export function ProcessingMenu({
178185
</DropdownMenuSubContent>
179186
</DropdownMenuSub>
180187
))}
188+
{/* Divide the toolbox block from GeoLibre's own tools, so the two
189+
sections read as separate owners rather than one flat list. */}
190+
{showWhitebox && showGeolibre && <DropdownMenuSeparator />}
181191
{/* GeoLibre's own tools (Turf vector, rasterio raster, format
182192
conversion, routing, spatial statistics) plus geocoding, batch &
183-
models, and AI segmentation. Grouped under a single "GeoLibre"
184-
submenu so their category names don't collide with the Whitebox
185-
category submenus above. Each child keeps its own visibility gate;
186-
the parent shows when any child does. */}
193+
models, and AI segmentation. Grouped under a single "GeoLibre
194+
Toolbox" submenu so their category names don't collide with the
195+
Whitebox category submenus above, and so the label names a toolbox
196+
the way its "Whitebox Toolbox" sibling does instead of standing as
197+
the bare product name (GeoLibre#1904). Each child keeps its own
198+
visibility gate; the parent shows when any child does. */}
187199
{showGeolibre && (
188200
<DropdownMenuSub>
189201
<DropdownMenuSubTrigger>{t("toolbar.item.geolibre")}</DropdownMenuSubTrigger>

apps/geolibre-desktop/src/i18n/locales/ar.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2730,7 +2730,7 @@
27302730
"terrain": "التضاريس",
27312731
"remoteSensing": "الاستشعار عن بُعد",
27322732
"projection": "الإسقاط",
2733-
"geolibre": "GeoLibre",
2733+
"geolibre": "صندوق أدوات GeoLibre",
27342734
"subGroupGeometry": "الهندسة",
27352735
"subGroupOverlay": "التراكب",
27362736
"subGroupJoin": "الربط",

apps/geolibre-desktop/src/i18n/locales/de.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2551,7 +2551,7 @@
25512551
"terrain": "Gelände",
25522552
"remoteSensing": "Fernerkundung",
25532553
"projection": "Projektion",
2554-
"geolibre": "GeoLibre",
2554+
"geolibre": "GeoLibre-Werkzeugkasten",
25552555
"subGroupGeometry": "Geometrie",
25562556
"subGroupOverlay": "Überlagerung",
25572557
"subGroupJoin": "Verknüpfung",

apps/geolibre-desktop/src/i18n/locales/en.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2561,7 +2561,7 @@
25612561
"terrain": "Terrain",
25622562
"remoteSensing": "Remote Sensing",
25632563
"projection": "Projection",
2564-
"geolibre": "GeoLibre",
2564+
"geolibre": "GeoLibre Toolbox",
25652565
"subGroupGeometry": "Geometry",
25662566
"subGroupOverlay": "Overlay",
25672567
"subGroupJoin": "Join",
@@ -4073,7 +4073,7 @@
40734073
"allSources": "All sources",
40744074
"geolibreTools": "GeoLibre tools",
40754075
"whiteboxTools": "Whitebox tools",
4076-
"toolbox": "Whitebox toolbox",
4076+
"toolbox": "Whitebox Toolbox",
40774077
"checkingRuntime": "Checking runtime.",
40784078
"toolsAvailable_one": "{{count}} tool available.",
40794079
"toolsAvailable_other": "{{count}} tools available.",

apps/geolibre-desktop/src/i18n/locales/es.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2551,7 +2551,7 @@
25512551
"terrain": "Terreno",
25522552
"remoteSensing": "Teledetección",
25532553
"projection": "Proyección",
2554-
"geolibre": "GeoLibre",
2554+
"geolibre": "Caja de herramientas de GeoLibre",
25552555
"subGroupGeometry": "Geometría",
25562556
"subGroupOverlay": "Superposición",
25572557
"subGroupJoin": "Unión",

apps/geolibre-desktop/src/i18n/locales/fa.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2551,7 +2551,7 @@
25512551
"terrain": "زمین",
25522552
"remoteSensing": "سنجش از دور",
25532553
"projection": "تصویر نقشه",
2554-
"geolibre": "GeoLibre",
2554+
"geolibre": "جعبه‌ابزار GeoLibre",
25552555
"subGroupGeometry": "هندسه",
25562556
"subGroupOverlay": "همپوشانی",
25572557
"subGroupJoin": "پیوند",

apps/geolibre-desktop/src/i18n/locales/fr.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2551,7 +2551,7 @@
25512551
"terrain": "Relief",
25522552
"remoteSensing": "Télédétection",
25532553
"projection": "Projection",
2554-
"geolibre": "GeoLibre",
2554+
"geolibre": "Boîte à outils GeoLibre",
25552555
"subGroupGeometry": "Géométrie",
25562556
"subGroupOverlay": "Superposition",
25572557
"subGroupJoin": "Jointure",

apps/geolibre-desktop/src/i18n/locales/hi.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2551,7 +2551,7 @@
25512551
"terrain": "भू-भाग",
25522552
"remoteSensing": "रिमोट सेंसिंग",
25532553
"projection": "प्रोजेक्शन",
2554-
"geolibre": "GeoLibre",
2554+
"geolibre": "GeoLibre टूलबॉक्स",
25552555
"subGroupGeometry": "ज्यामिति",
25562556
"subGroupOverlay": "ओवरले",
25572557
"subGroupJoin": "जॉइन",

apps/geolibre-desktop/src/i18n/locales/id.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2506,7 +2506,7 @@
25062506
"terrain": "Medan",
25072507
"remoteSensing": "Penginderaan Jauh",
25082508
"projection": "Proyeksi",
2509-
"geolibre": "GeoLibre",
2509+
"geolibre": "Kotak alat GeoLibre",
25102510
"subGroupGeometry": "Geometri",
25112511
"subGroupOverlay": "Overlay",
25122512
"subGroupJoin": "Gabungan",

apps/geolibre-desktop/src/i18n/locales/it.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2551,7 +2551,7 @@
25512551
"terrain": "Terreno",
25522552
"remoteSensing": "Telerilevamento",
25532553
"projection": "Proiezione",
2554-
"geolibre": "GeoLibre",
2554+
"geolibre": "Cassetta degli attrezzi GeoLibre",
25552555
"subGroupGeometry": "Geometria",
25562556
"subGroupOverlay": "Sovrapposizione",
25572557
"subGroupJoin": "Join",

0 commit comments

Comments
 (0)