diff --git a/apps/editor/components/scene-loader.tsx b/apps/editor/components/scene-loader.tsx index 1622d61c43..ceaceeff57 100644 --- a/apps/editor/components/scene-loader.tsx +++ b/apps/editor/components/scene-loader.tsx @@ -3,6 +3,7 @@ // Node registry bootstrap is loaded once at the root via // `` in `app/layout.tsx` — no per-page side-effect // import here. +import { type MessageDescriptor, usePascalI18n } from '@pascal-app/core' import { applySceneGraphToEditor, Editor, @@ -51,10 +52,13 @@ function EditorItemsPanel() { return } -const SIDEBAR_TABS: (SidebarTab & { component: React.ComponentType })[] = [ +const SIDEBAR_TABS: (Omit & { + label: MessageDescriptor + component: React.ComponentType +})[] = [ { id: 'site', - label: 'Scene', + label: /* i18n */ { id: 'app.sceneLoader.scene', message: 'Scene' }, component: () => null, // Built-in SitePanel handles this mobileDefaultSnap: 0.5, mobileIcon: , @@ -70,7 +74,7 @@ const SIDEBAR_TABS: (SidebarTab & { component: React.ComponentType })[] = [ }, { id: 'build', - label: 'Build', + label: /* i18n */ { id: 'app.sceneLoader.build', message: 'Build' }, component: BuildTab, mobileDefaultSnap: 0.5, mobileIcon: , @@ -86,7 +90,7 @@ const SIDEBAR_TABS: (SidebarTab & { component: React.ComponentType })[] = [ }, { id: 'paint', - label: 'Paint', + label: /* i18n */ { id: 'app.sceneLoader.paint', message: 'Paint' }, component: PaintPanel, mobileDefaultSnap: 0.5, mobileIcon: , @@ -102,7 +106,7 @@ const SIDEBAR_TABS: (SidebarTab & { component: React.ComponentType })[] = [ }, { id: 'items', - label: 'Items', + label: /* i18n */ { id: 'app.sceneLoader.items', message: 'Items' }, component: EditorItemsPanel, mobileDefaultSnap: 0.5, mobileIcon: , @@ -118,7 +122,7 @@ const SIDEBAR_TABS: (SidebarTab & { component: React.ComponentType })[] = [ }, { id: 'settings', - label: 'Settings', + label: /* i18n */ { id: 'app.sceneLoader.settings', message: 'Settings' }, component: () => null, mobileDefaultSnap: 0.5, mobileIcon: , @@ -175,6 +179,13 @@ export function SceneLoader(props: SceneLoaderProps) { } function SceneEditor({ initialScene, meta: initialMeta }: SceneLoaderProps) { + const i18n = usePascalI18n() + const catalogVersion = i18n.getVersion() + // biome-ignore lint/correctness/useExhaustiveDependencies: labels re-translate on a locale switch or a late registerMessages + const sidebarTabs = useMemo( + () => SIDEBAR_TABS.map((tab) => ({ ...tab, label: i18n._(tab.label) })), + [i18n, catalogVersion], + ) // A rename must reach the autosave body, which sends `meta.name`. const [renamedTo, setRenamedTo] = useState(null) const meta = useMemo( @@ -357,9 +368,17 @@ function SceneEditor({ initialScene, meta: initialMeta }: SceneLoaderProps) {
{conflict && (
-

Another session saved first — refresh?

+

+ {i18n._({ + id: 'app.sceneLoader.anotherSessionSavedFirstRefresh', + message: 'Another session saved first — refresh?', + })} +

- Your changes haven't been saved. Reload to pick up the latest version. + {i18n._({ + id: 'app.sceneLoader.yourChangesHavenTBeenSaved', + message: "Your changes haven't been saved. Reload to pick up the latest version.", + })}

@@ -395,7 +414,7 @@ function SceneEditor({ initialScene, meta: initialMeta }: SceneLoaderProps) { onThumbnailCapture={handleThumb} projectId={meta.projectId ?? 'default'} projectName={meta.name} - sidebarTabs={SIDEBAR_TABS} + sidebarTabs={sidebarTabs} viewerBanner={} viewerToolbarLeft={} viewerToolbarRight={ diff --git a/i18n/literal-baseline.json b/i18n/literal-baseline.json index c1eb8ece46..c2a913c2eb 100644 --- a/i18n/literal-baseline.json +++ b/i18n/literal-baseline.json @@ -109,17 +109,6 @@ "· Updated", "“{name}” will be removed from this editor, along with everything in it." ], - "apps/editor/components/scene-loader.tsx": [ - "Another session saved first — refresh?", - "Build", - "Dismiss", - "Items", - "Paint", - "Reload", - "Scene", - "Settings", - "Your changes haven't been saved. Reload to pick up the latest version." - ], "packages/editor/src/components/editor-2d/floorplan-measurement-tool-layer.tsx": [ "ALIGN ", "Create", @@ -498,55 +487,13 @@ "packages/editor/src/components/ui/floating-level-selector.tsx": [ "10 ft", "8 ft", - "9 ft", - "? All walls, floors, and objects on this level will be permanently removed.", - "Add a floor under the roof", - "Add level above", - "Add level below", - "Are you sure you want to delete", - "Cancel", - "Delete", - "Delete level", - "Delete level", - "Delete level", - "Drag to reorder", - "Duplicate level", - "Duplicate with options...", - "Exit unit focus", - "Exit unit focus", - "Focused unit has zones here", - "Ground line: the levels under it are below grade", - "Insert level here", - "Level height", - "Level height", - "Paste copied selection", - "Reorder {levelName}", - "Seat the building so this floor stands at grade; the floors under it are below grade", - "Set as ground floor", - "The ground floor stands {?} {displayUnit} {?} grade. Seat the ground floor 8 in over grade", - "The ground level cannot be deleted", - "This floor stands at grade", - "Unit" + "9 ft" ], "packages/editor/src/components/ui/item-catalog/catalog-items.tsx": [ "Intensity", "Intensity", "Intensity" ], - "packages/editor/src/components/ui/level-duplicate-dialog.tsx": [ - "Cancel", - "Choose what to copy from", - "Duplicate", - "Duplicate Level", - "Everything", - "Structure + furniture", - "Structure + materials", - "Structure only", - "Structure with the current material and finish assignments.", - "Structure, finishes, and placed items, without guide references.", - "Structure, materials, furniture, and references.", - "Walls, slabs, roofs, stairs, windows, and doors without finishes." - ], "packages/editor/src/components/ui/panels/collections/collections-popover.tsx": [ "Cancel", "Collection name…", @@ -824,26 +771,6 @@ "This project couldn't be loaded", "Try again" ], - "packages/editor/src/components/ui/sidebar/icon-rail.tsx": [ - "Settings", - "Site" - ], - "packages/editor/src/components/ui/sidebar/panels/items-panel/function-tree-panel.tsx": [ - "All", - "Community", - "Library", - "Mine", - "No results for “{search}”", - "Search..." - ], - "packages/editor/src/components/ui/sidebar/panels/items-panel/index.tsx": [ - "All", - "Community", - "Library", - "Mine", - "No results for “{search}”", - "Search..." - ], "packages/editor/src/components/ui/sidebar/panels/settings-panel/animation-speed-setting.tsx": [ "Animation speed", "Animation speed", @@ -1005,115 +932,6 @@ "Export 3D print 3MF", "Export 3D print STL" ], - "packages/editor/src/components/ui/sidebar/panels/site-panel/building-tree-node.tsx": [ - "Add new level", - "Building" - ], - "packages/editor/src/components/ui/sidebar/panels/site-panel/collection-tree-node.tsx": [ - "Collection colour", - "Collections", - "Delete collection" - ], - "packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx": [ - "Add level", - "Add point", - "Area:", - "Base elevation", - "Building", - "Building", - "Camera snapshot", - "Camera snapshot", - "Camera snapshot", - "Camera snapshot", - "Capture", - "Clear selection", - "Clear snapshot", - "Clear snapshot", - "Clear snapshot", - "Clear snapshot", - "Close walls around a space to make a room.", - "Delete", - "Delete", - "Delete level", - "Draw a zone", - "Duplicate", - "Duplicate level", - "Duplicate level with options", - "Duplicate with options...", - "Elements", - "Guide", - "Hide", - "Level", - "New unit", - "New unit", - "No buildings yet", - "No elements on this level", - "No levels yet", - "Other zones", - "Perimeter:", - "Property Line", - "Rooms", - "Select a level to view content", - "Show", - "Site", - "Site", - "Take snapshot", - "Take snapshot", - "Take snapshot", - "Take snapshot", - "The ground level cannot be deleted", - "Units", - "Update snapshot", - "Update snapshot", - "Update snapshot", - "Update snapshot", - "Upload scan/floorplan", - "Uploading {uploadingType}... {progress}%", - "View snapshot", - "View snapshot", - "View snapshot", - "View snapshot", - "{length} objects selected" - ], - "packages/editor/src/components/ui/sidebar/panels/site-panel/tree-node-actions.tsx": [ - "Camera snapshot", - "Clear snapshot", - "Hide", - "Show", - "Take snapshot", - "Update snapshot", - "View snapshot" - ], - "packages/editor/src/components/ui/sidebar/panels/site-panel/unit-tree-node.tsx": [ - "Delete unit", - "Focused", - "Remove from unit", - "Room", - "Zone" - ], - "packages/editor/src/components/ui/sidebar/panels/site-panel/zone-membership-checkbox.tsx": [ - "In {unitName}" - ], - "packages/editor/src/components/ui/sidebar/panels/zone-panel/index.tsx": [ - "Actions", - "Add one", - "Camera snapshot", - "Clear snapshot", - "Delete", - "Delete with contents", - "No zones on this level.", - "Save to catalog", - "Select a level to view and create zones", - "Take snapshot", - "Update snapshot", - "View snapshot" - ], - "packages/editor/src/components/ui/sidebar/use-plugin-panels.tsx": [ - "\"{label}\" plugin crashed", - "Loading…", - "Plugins", - "This panel hit an error and was unloaded for this session. The rest of the editor is unaffected — reload to try again." - ], "packages/editor/src/components/ui/slider-demo.tsx": [ "Temperature", "Temperature" diff --git a/i18n/pseudo-surfaces.ts b/i18n/pseudo-surfaces.ts index 3f73feb41e..eaa3af3030 100644 --- a/i18n/pseudo-surfaces.ts +++ b/i18n/pseudo-surfaces.ts @@ -1,4 +1,6 @@ import type { Page } from 'playwright-core' +import type { SceneGraph } from '@pascal-app/core/clone-scene-graph' +import { template as twoBedroom } from '../packages/mcp/src/templates/two-bedroom' import { pseudoLocalize } from '../scripts/i18n' /** @@ -18,23 +20,47 @@ export type PseudoSurface = { data?: string[] } -let projectId: Promise | undefined +const projects = new Map>() -/** One empty project per audit run, named like the app's own default. */ -export function auditProject(base: string): Promise { - projectId ??= fetch(new URL('/api/scenes', base), { - method: 'POST', - headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({ name: 'Project #1', graph: { nodes: {}, rootNodeIds: [] } }), - }).then(async (response) => { - if (!response.ok) throw new Error(`Could not create the audit project (${response.status})`) - return ((await response.json()) as { id: string }).id - }) - return projectId +/** One project per scene and audit run, named like the app's own default. */ +function auditScene(base: string, key: string, graph: SceneGraph): Promise { + let project = projects.get(key) + if (!project) { + project = fetch(new URL('/api/scenes', base), { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ name: 'Project #1', graph }), + }).then(async (response) => { + if (!response.ok) throw new Error(`Could not create the audit project (${response.status})`) + return ((await response.json()) as { id: string }).id + }) + projects.set(key, project) + } + return project } +export const auditProject = (base: string) => + auditScene(base, 'empty', { nodes: {}, rootNodeIds: [] } as unknown as SceneGraph) + export const editorPath = async (base: string) => `/project/${await auditProject(base)}` +/** A furnished project, so trees and level lists have rows to show. */ +export const apartmentPath = async (base: string) => + `/project/${await auditScene(base, 'two-bedroom', twoBedroom)}` +const apartmentData = ['Project #1', 'Living / Kitchen', 'Bedroom 1', 'Bedroom 2', 'Bath'] + +async function openLevelMenu(page: Page, row = 0): Promise { + const level = page.locator('[data-surface="level-selector"] .group\\/level').nth(row) + await level.hover() + await level.locator('button[aria-haspopup="dialog"]').last().click() + await page.waitForTimeout(500) +} + +async function addLevelAbove(page: Page): Promise { + await page.getByTitle(pseudo('Add level above'), { exact: true }).click() + await page.waitForTimeout(800) +} + /** Waits for the editor chrome and the 3D canvas to settle. */ export async function openEditor(page: Page): Promise { await page.locator('canvas').first().waitFor({ timeout: 120_000 }) @@ -145,4 +171,68 @@ export const surfaces: PseudoSurface[] = [ // A kind registered by the external @pascal-app/plugin-streetscape, which owns its copy. data: ['Road'], }, + { + name: 'icon-rail', + path: apartmentPath, + steps: async (page) => { + await openEditor(page) + await page.getByRole('button', { name: pseudo('Items'), exact: true }).hover() + await page.waitForTimeout(500) + }, + scope: '[data-surface="icon-rail"], [role="tooltip"]', + // Panels registered by external plugin packages, which own their labels. + data: ['Nature', 'Environment', 'WebXR', 'Pools', 'Landscape', 'Bath Space', 'Streetscape'], + }, + { + name: 'layers-panel', + path: apartmentPath, + steps: (page) => openInEditor(page, 'Scene'), + scope: '[data-surface="site-panel"]', + data: apartmentData, + }, + { + name: 'level-selector', + path: apartmentPath, + steps: async (page) => { + await openEditor(page) + await addLevelAbove(page) + }, + scope: '[data-surface="level-selector"]', + }, + { + name: 'level-menu', + path: apartmentPath, + steps: async (page) => { + await openEditor(page) + await openLevelMenu(page) + }, + scope: '[role="dialog"]', + }, + { + name: 'duplicate-level-dialog', + path: apartmentPath, + steps: async (page) => { + await openEditor(page) + await openLevelMenu(page) + await page.getByRole('button', { name: pseudo('Duplicate with options...') }).click() + await page.getByRole('heading', { name: pseudo('Duplicate Level') }).waitFor() + // Dialogs animate in slowly under software rendering. + await page.waitForTimeout(2500) + }, + scope: '[role="dialog"]', + }, + { + name: 'delete-level-dialog', + path: apartmentPath, + steps: async (page) => { + await openEditor(page) + await addLevelAbove(page) + await openLevelMenu(page, 0) + await page.getByRole('button', { name: pseudo('Delete level'), exact: true }).click() + await page.getByRole('heading', { name: pseudo('Delete level') }).waitFor() + // Dialogs animate in slowly under software rendering. + await page.waitForTimeout(2500) + }, + scope: '[role="dialog"]', + }, ] diff --git a/packages/editor/src/components/ui/floating-level-selector.tsx b/packages/editor/src/components/ui/floating-level-selector.tsx index 40d6b176d3..46a45d2425 100644 --- a/packages/editor/src/components/ui/floating-level-selector.tsx +++ b/packages/editor/src/components/ui/floating-level-selector.tsx @@ -56,14 +56,13 @@ import { } from '@pascal-app/core/building' import { formatNumber, - getDefaultLevelName, - getLevelDisplayName, roofLevelOrderBreach, servesAsRoofLevel, useLocale, usePascalI18n, } from '@pascal-app/core' -import { localizedLevelName } from '../../i18n/level-name' +import { authoredLevelName, localizedLevelName } from '../../i18n/level-name' +import { messageWithSlot } from '../../i18n/message-slot' import { addStoreyBelow, addStoreyOnTop, setGroundFloor } from '../../lib/add-storey' import { deleteLevelWithFallbackSelection } from '../../lib/level-selection' import { unitMemberLevels, leaveUnitFocus } from '../../lib/units' @@ -94,28 +93,31 @@ function LevelInlineRename({ isEditing: boolean onStopEditing: () => void }) { + const i18n = usePascalI18n() + const locale = useLocale() const updateNode = useScene((s) => s.updateNode) - const defaultName = getDefaultLevelName(level.level) - const [value, setValue] = useState(level.name || '') + const defaultName = localizedLevelName({ level: level.level }, i18n, locale) + const authoredName = authoredLevelName(level) + const [value, setValue] = useState(authoredName ?? '') const inputRef = useRef(null) useEffect(() => { if (isEditing) { - setValue(level.name || '') + setValue(authoredName ?? '') setTimeout(() => { inputRef.current?.focus() inputRef.current?.select() }, 0) } - }, [isEditing, level.name]) + }, [isEditing, authoredName]) const handleSave = useCallback(() => { const trimmed = value.trim() - if (trimmed !== level.name) { + if ((trimmed || undefined) !== authoredName) { updateNode(level.id, { name: trimmed || undefined }) } onStopEditing() - }, [value, level.id, level.name, updateNode, onStopEditing]) + }, [value, level.id, authoredName, updateNode, onStopEditing]) if (!isEditing) return null @@ -228,7 +230,7 @@ function LevelRow({ > @@ -270,7 +272,7 @@ function LevelRow({ - + {onPaste && ( )} @@ -475,9 +482,15 @@ type GroundLineState = { * a click seats the building. */ function GroundLine({ ground, onSeat }: { ground: GroundLineState; onSeat: () => void }) { + const i18n = usePascalI18n() const { toDisplay, displayUnit, precision } = useLinearDisplay('m', 2) const over = toDisplay(ground.offset) - const label = `Ground · ${over > 0 ? '+' : ''}${over.toFixed(precision)}` + const label = i18n._({ + id: 'editor.floatingLevelSelector.groundOffset', + message: 'Ground · {offset}', + values: { offset: `${over > 0 ? '+' : ''}${over.toFixed(precision)}` }, + }) + const distance = `${Math.abs(over).toFixed(precision)} ${displayUnit}` return (
{ground.seated ? ( {label} @@ -494,7 +507,21 @@ function GroundLine({ ground, onSeat }: { ground: GroundLineState; onSeat: () => diff --git a/packages/editor/src/components/ui/level-duplicate-dialog.tsx b/packages/editor/src/components/ui/level-duplicate-dialog.tsx index 3eb40d7596..a7b2321f22 100644 --- a/packages/editor/src/components/ui/level-duplicate-dialog.tsx +++ b/packages/editor/src/components/ui/level-duplicate-dialog.tsx @@ -1,9 +1,10 @@ 'use client' -import type { LevelNode } from '@pascal-app/core' +import type { LevelNode, MessageDescriptor } from '@pascal-app/core' import { useEffect, useState } from 'react' import type { LevelDuplicatePreset } from '@pascal-app/core/building' -import { getLevelDisplayName } from '@pascal-app/core' +import { useLocale, usePascalI18n } from '@pascal-app/core' +import { localizedLevelName } from '../../i18n/level-name' import { cn } from '../../lib/utils' import { Dialog, @@ -16,36 +17,31 @@ import { const DUPLICATE_PRESETS: Array<{ id: LevelDuplicatePreset - label: string - description: string + label: MessageDescriptor + description: MessageDescriptor }> = [ { id: 'everything', - label: 'Everything', - description: 'Structure, materials, furniture, and references.', + label: /* i18n */ { id: 'editor.levelDuplicateDialog.everything', message: 'Everything' }, + description: /* i18n */ { id: 'editor.levelDuplicateDialog.structureMaterialsFurnitureAndReferences', message: 'Structure, materials, furniture, and references.' }, }, { id: 'structure', - label: 'Structure only', - description: 'Walls, slabs, roofs, stairs, windows, and doors without finishes.', + label: /* i18n */ { id: 'editor.levelDuplicateDialog.structureOnly', message: 'Structure only' }, + description: /* i18n */ { id: 'editor.levelDuplicateDialog.wallsSlabsRoofsStairsWindowsAnd', message: 'Walls, slabs, roofs, stairs, windows, and doors without finishes.' }, }, { id: 'structure-materials', - label: 'Structure + materials', - description: 'Structure with the current material and finish assignments.', + label: /* i18n */ { id: 'editor.levelDuplicateDialog.structureMaterials', message: 'Structure + materials' }, + description: /* i18n */ { id: 'editor.levelDuplicateDialog.structureWithTheCurrentMaterialAnd', message: 'Structure with the current material and finish assignments.' }, }, { id: 'structure-furniture', - label: 'Structure + furniture', - description: 'Structure, finishes, and placed items, without guide references.', + label: /* i18n */ { id: 'editor.levelDuplicateDialog.structureFurniture', message: 'Structure + furniture' }, + description: /* i18n */ { id: 'editor.levelDuplicateDialog.structureFinishesAndPlacedItemsWithout', message: 'Structure, finishes, and placed items, without guide references.' }, }, ] -function getLevelLabel(level: LevelNode | null) { - if (!level) return 'this level' - return getLevelDisplayName(level) -} - export function LevelDuplicateDialog({ open, level, @@ -57,6 +53,8 @@ export function LevelDuplicateDialog({ onConfirm: (preset: LevelDuplicatePreset) => void onOpenChange: (open: boolean) => void }) { + const i18n = usePascalI18n() + const locale = useLocale() const [preset, setPreset] = useState('everything') useEffect(() => { @@ -69,8 +67,19 @@ export function LevelDuplicateDialog({ - Duplicate Level - Choose what to copy from {getLevelLabel(level)}. + {i18n._({ id: 'editor.levelDuplicateDialog.duplicateLevel', message: 'Duplicate Level' })} + + {level + ? i18n._({ + id: 'editor.levelDuplicateDialog.chooseWhatToCopyFromLevel', + message: 'Choose what to copy from {levelName}.', + values: { levelName: localizedLevelName(level, i18n, locale) }, + }) + : i18n._({ + id: 'editor.levelDuplicateDialog.chooseWhatToCopyFromThisLevel', + message: 'Choose what to copy from this level.', + })} +
@@ -86,8 +95,8 @@ export function LevelDuplicateDialog({ onClick={() => setPreset(option.id)} type="button" > -
{option.label}
-
{option.description}
+
{i18n._(option.label)}
+
{i18n._(option.description)}
))}
@@ -98,14 +107,14 @@ export function LevelDuplicateDialog({ onClick={() => onOpenChange(false)} type="button" > - Cancel + {i18n._({ id: 'editor.levelDuplicateDialog.cancel', message: 'Cancel' })}
diff --git a/packages/editor/src/components/ui/sidebar/icon-rail.tsx b/packages/editor/src/components/ui/sidebar/icon-rail.tsx index 52996cb3e7..a0b4a18a39 100644 --- a/packages/editor/src/components/ui/sidebar/icon-rail.tsx +++ b/packages/editor/src/components/ui/sidebar/icon-rail.tsx @@ -1,5 +1,6 @@ 'use client' +import { type MessageDescriptor, usePascalI18n } from '@pascal-app/core' import { Plus } from 'lucide-react' import type { ComponentType, ReactNode } from 'react' import { @@ -32,19 +33,19 @@ interface IconRailProps { className?: string } -const sitePanel: { id: PanelId; iconSrc: string; label: string } = { +const sitePanel: { id: PanelId; iconSrc: string; label: MessageDescriptor } = { id: 'site', iconSrc: '/icons/level.webp', - label: 'Site', + label: /* i18n */ { id: 'editor.sidebar.iconRail.site', message: 'Site' }, } -const settingsPanel: { id: PanelId; iconSrc: string; label: string } = { +const settingsPanel: { id: PanelId; iconSrc: string; label: MessageDescriptor } = { id: 'settings', iconSrc: '/icons/settings.webp', - label: 'Settings', + label: /* i18n */ { id: 'editor.sidebar.iconRail.settings', message: 'Settings' }, } -const panels: { id: PanelId; iconSrc: string; label: string }[] = [sitePanel, settingsPanel] +const panels: { id: PanelId; iconSrc: string; label: MessageDescriptor }[] = [sitePanel, settingsPanel] export function IconRail({ activePanel, @@ -53,6 +54,7 @@ export function IconRail({ extraPanels, className, }: IconRailProps) { + const i18n = usePascalI18n() const regularExtraPanels = extraPanels?.filter((panel) => !panel.pluginId && panel.id !== 'plugins') const pluginPanels = extraPanels?.filter((panel) => panel.pluginId) const pluginsPanel = extraPanels?.find((panel) => panel.id === 'plugins') @@ -113,7 +115,7 @@ export function IconRail({ type="button" > {panel.label} - {panel.label} + {i18n._(panel.label)} ) })} @@ -144,7 +146,7 @@ export function IconRail({ type="button" > {panel.label} - {panel.label} + {i18n._(panel.label)} ) })} diff --git a/packages/editor/src/components/ui/sidebar/panels/items-panel/function-tree-panel.tsx b/packages/editor/src/components/ui/sidebar/panels/items-panel/function-tree-panel.tsx index 4113ff5c6f..8ddfdf3292 100644 --- a/packages/editor/src/components/ui/sidebar/panels/items-panel/function-tree-panel.tsx +++ b/packages/editor/src/components/ui/sidebar/panels/items-panel/function-tree-panel.tsx @@ -1,6 +1,6 @@ 'use client' -import type { AssetInput } from '@pascal-app/core' +import { type AssetInput, type MessageDescriptor, usePascalI18n } from '@pascal-app/core' import { Root as TooltipRoot } from '@radix-ui/react-tooltip' import NextImage from 'next/image' import { useMemo, useState } from 'react' @@ -21,10 +21,10 @@ export type FunctionTreeNode = { children: FunctionTreeNode[] } -const SOURCE_CHIPS: Array<{ id: NonNullable; label: string }> = [ - { id: 'library', label: 'Library' }, - { id: 'community', label: 'Community' }, - { id: 'mine', label: 'Mine' }, +const SOURCE_CHIPS: Array<{ id: NonNullable; label: MessageDescriptor }> = [ + { id: 'library', label: /* i18n */ { id: 'editor.sidebar.panels.itemsPanel.functionTreePanel.library', message: 'Library' } }, + { id: 'community', label: /* i18n */ { id: 'editor.sidebar.panels.itemsPanel.functionTreePanel.community', message: 'Community' } }, + { id: 'mine', label: /* i18n */ { id: 'editor.sidebar.panels.itemsPanel.functionTreePanel.mine', message: 'Mine' } }, ] /** Every slug at or below `node`, so a non-leaf selection matches descendants. */ @@ -64,6 +64,7 @@ export function FunctionTreePanel({ leadingTile?: React.ReactNode emptyState?: React.ReactNode }) { + const i18n = usePascalI18n() const [activeRootSlug, setActiveRootSlug] = useState( functionTree[0]?.slug ?? null, ) @@ -178,7 +179,7 @@ export function FunctionTreePanel({ setSearch(e.target.value) onSearchChange?.(e.target.value) }} - placeholder="Search..." + placeholder={i18n._({ id: 'editor.sidebar.panels.itemsPanel.functionTreePanel.search', message: 'Search...' })} type="text" value={search} /> @@ -197,7 +198,7 @@ export function FunctionTreePanel({ onClick={() => setActiveSource(isActive ? null : chip.id)} type="button" > - {chip.label} + {i18n._(chip.label)} ) })} @@ -217,7 +218,7 @@ export function FunctionTreePanel({ onClick={() => setActiveChildSlug(null)} type="button" > - All + {i18n._({ id: 'editor.sidebar.panels.itemsPanel.functionTreePanel.all', message: 'All' })} {activeRoot.children.map((child) => { const isActive = activeChildSlug === child.slug @@ -250,8 +251,7 @@ export function FunctionTreePanel({ ) : isServerSearch && search && searchResults?.length === 0 ? ( (emptyState ?? (
- No results for “{search}” -
+ {i18n._({ id: 'editor.sidebar.panels.itemsPanel.functionTreePanel.noResultsForSearch', message: 'No results for “{search}”', values: { search } })}
)) ) : ( = [ - { id: 'library', label: 'Library' }, - { id: 'community', label: 'Community' }, - { id: 'mine', label: 'Mine' }, + { id: 'library', label: i18n._({ id: 'editor.sidebar.panels.itemsPanel.library', message: 'Library' }) }, + { id: 'community', label: i18n._({ id: 'editor.sidebar.panels.itemsPanel.community', message: 'Community' }) }, + { id: 'mine', label: i18n._({ id: 'editor.sidebar.panels.itemsPanel.mine', message: 'Mine' }) }, ] const allTags = Array.from(new Set(categoryItems.flatMap((item) => item.tags ?? []))) const placementTags = allTags.filter((t) => PLACEMENT_TAGS.has(t)) @@ -244,7 +244,7 @@ function LegacyItemsPanel({ setSearch(e.target.value) onSearchChange?.(e.target.value) }} - placeholder="Search..." + placeholder={i18n._({ id: 'editor.sidebar.panels.itemsPanel.search', message: 'Search...' })} type="text" value={search} /> @@ -286,7 +286,7 @@ function LegacyItemsPanel({ onClick={() => setActivePlacementTag(null)} type="button" > - All + {i18n._({ id: 'editor.sidebar.panels.itemsPanel.all', message: 'All' })} {placementTags.map((tag) => { const count = placementCount(tag) @@ -378,8 +378,7 @@ function LegacyItemsPanel({ ) : isServerSearch && search && searchResults?.length === 0 ? ( (emptyState ?? (
- No results for “{search}” -
+ {i18n._({ id: 'editor.sidebar.panels.itemsPanel.noResultsForSearch', message: 'No results for “{search}”', values: { search } })}
)) ) : ( s.nodes[nodeId]?.visible !== false) const name = useScene((s) => s.nodes[nodeId]?.name) @@ -63,7 +64,7 @@ export const BuildingTreeNode = memo(function BuildingTreeNode({ - Add new level + {i18n._({ id: 'editor.sidebar.panels.sitePanel.buildingTreeNode.addNewLevel', message: 'Add new level' })} } @@ -75,7 +76,7 @@ export const BuildingTreeNode = memo(function BuildingTreeNode({ isLast={isLast} isSelected={isSelected} isVisible={isVisible} - label={name || 'Building'} + label={name || i18n._({ id: 'editor.sidebar.panels.sitePanel.buildingTreeNode.building', message: 'Building' })} onClick={handleClick} onDoubleClick={() => focusTreeNode(nodeId)} onToggle={() => setExpanded(!expanded)} diff --git a/packages/editor/src/components/ui/sidebar/panels/site-panel/ceiling-tree-node.tsx b/packages/editor/src/components/ui/sidebar/panels/site-panel/ceiling-tree-node.tsx index 6871c6fa90..030206ec22 100644 --- a/packages/editor/src/components/ui/sidebar/panels/site-panel/ceiling-tree-node.tsx +++ b/packages/editor/src/components/ui/sidebar/panels/site-panel/ceiling-tree-node.tsx @@ -1,4 +1,4 @@ -import { type AnyNodeId, type CeilingNode, useScene } from '@pascal-app/core' +import { type AnyNodeId, type CeilingNode, useScene, usePascalI18n} from '@pascal-app/core' import { useViewer } from '@pascal-app/viewer' import Image from 'next/image' import { memo, useCallback, useEffect, useState } from 'react' @@ -8,6 +8,7 @@ import { formatAreaLabel } from './../../../../../lib/measurements' import { InlineRenameInput } from './inline-rename-input' import { focusTreeNode, handleTreeSelection, TreeNode, TreeNodeWrapper } from './tree-node' import { TreeNodeActions } from './tree-node-actions' +import { ceilingDefaultName } from './default-names' interface CeilingTreeNodeProps { nodeId: AnyNodeId @@ -20,6 +21,7 @@ export const CeilingTreeNode = memo(function CeilingTreeNode({ depth, isLast, }: CeilingTreeNodeProps) { + const i18n = usePascalI18n() const [expanded, setExpanded] = useState(false) const [isEditing, setIsEditing] = useState(false) const isVisible = useScene((s) => s.nodes[nodeId as AnyNodeId]?.visible !== false) @@ -77,7 +79,7 @@ export const CeilingTreeNode = memo(function CeilingTreeNode({ const handleStartEditing = useCallback(() => setIsEditing(true), []) const handleStopEditing = useCallback(() => setIsEditing(false), []) - const defaultName = `Ceiling (${formatAreaLabel(calculatePolygonArea(polygon), unit)})` + const defaultName = ceilingDefaultName(i18n, formatAreaLabel(calculatePolygonArea(polygon), unit)) return ( s.nodes[nodeId]?.visible !== false) const node = useScene((s) => s.nodes[nodeId] as ChimneyNode | undefined) @@ -39,7 +41,7 @@ export const ChimneyTreeNode = memo(function ChimneyTreeNode({ [nodeId, setSelection], ) - const defaultName = node?.name || 'Chimney' + const defaultName = node?.name || i18n._(nodeLabelDescriptor('chimney', 'Chimney')) return ( Object.keys(s.collections) as CollectionId[])) const [expanded, setExpanded] = useState(true) @@ -58,7 +59,7 @@ export const CollectionsSection = memo(function CollectionsSection() { icon={} label={ - Collections + {i18n._({ id: 'editor.sidebar.panels.sitePanel.collectionTreeNode.collections', message: 'Collections' })} {collectionIds.length} } @@ -90,6 +91,7 @@ const CollectionTreeNode = memo(function CollectionTreeNode({ depth, isLast, }: CollectionTreeNodeProps) { + const i18n = usePascalI18n() const [isEditing, setIsEditing] = useState(false) const [expanded, setExpanded] = useState(false) const name = useScene((s) => s.collections[collectionId]?.name) @@ -147,7 +149,7 @@ const CollectionTreeNode = memo(function CollectionTreeNode({ event.stopPropagation() deleteCollection(collectionId) }} - title="Delete collection" + title={i18n._({ id: 'editor.sidebar.panels.sitePanel.collectionTreeNode.deleteCollection', message: 'Delete collection' })} type="button" > @@ -159,7 +161,7 @@ const CollectionTreeNode = memo(function CollectionTreeNode({ icon={ updateCollection(collectionId, { color: next })} /> } @@ -169,7 +171,7 @@ const CollectionTreeNode = memo(function CollectionTreeNode({ label={ s.nodes[nodeId]?.visible !== false) const node = useScene((s) => s.nodes[nodeId] as ColumnNode | undefined) @@ -38,7 +40,7 @@ export const ColumnTreeNode = memo(function ColumnTreeNode({ [nodeId, setSelection], ) - const defaultName = node?.name || 'Column' + const defaultName = node?.name || i18n._(nodeLabelDescriptor('column', 'Column')) return ( s.nodes[nodeId as AnyNodeId]?.visible !== false) const node = useScene((s) => s.nodes[nodeId] as DoorNode | undefined) @@ -62,7 +64,7 @@ export const DoorTreeNode = memo(function DoorTreeNode({ isVisible={isVisible} label={ s.nodes[nodeId]?.visible !== false) @@ -50,7 +52,7 @@ export const DormerTreeNode = memo(function DormerTreeNode({ [nodeId, setSelection], ) - const defaultName = node?.name || 'Dormer' + const defaultName = node?.name || i18n._(nodeLabelDescriptor('dormer', 'Dormer')) return ( s.nodes[nodeId]?.visible !== false) const node = useScene((s) => s.nodes[nodeId] as ElevatorNode | undefined) @@ -53,7 +55,7 @@ export const ElevatorTreeNode = memo(function ElevatorTreeNode({ isVisible={isVisible} label={ setIsEditing(true)} diff --git a/packages/editor/src/components/ui/sidebar/panels/site-panel/fence-tree-node.tsx b/packages/editor/src/components/ui/sidebar/panels/site-panel/fence-tree-node.tsx index 8efee64132..110f29df2a 100644 --- a/packages/editor/src/components/ui/sidebar/panels/site-panel/fence-tree-node.tsx +++ b/packages/editor/src/components/ui/sidebar/panels/site-panel/fence-tree-node.tsx @@ -1,10 +1,11 @@ -import { type AnyNodeId, type FenceNode, useScene } from '@pascal-app/core' +import { type AnyNodeId, type FenceNode, useScene, usePascalI18n } from '@pascal-app/core' import { useViewer } from '@pascal-app/viewer' import Image from 'next/image' import { memo, useEffect, useState } from 'react' import { InlineRenameInput } from './inline-rename-input' import { focusTreeNode, handleTreeSelection, TreeNode, TreeNodeWrapper } from './tree-node' import { TreeNodeActions } from './tree-node-actions' +import { nodeLabelDescriptor } from '../../../../../i18n/node-messages' interface FenceTreeNodeProps { nodeId: AnyNodeId @@ -17,6 +18,7 @@ export const FenceTreeNode = memo(function FenceTreeNode({ depth, isLast, }: FenceTreeNodeProps) { + const i18n = usePascalI18n() const node = useScene((state) => state.nodes[nodeId]) as FenceNode | undefined const [isEditing, setIsEditing] = useState(false) const [expanded, setExpanded] = useState(true) @@ -55,7 +57,7 @@ export const FenceTreeNode = memo(function FenceTreeNode({ isVisible={node.visible !== false} label={ setIsEditing(true)} diff --git a/packages/editor/src/components/ui/sidebar/panels/site-panel/gutter-tree-node.tsx b/packages/editor/src/components/ui/sidebar/panels/site-panel/gutter-tree-node.tsx index 9f2d3505bd..2b914e7a1f 100644 --- a/packages/editor/src/components/ui/sidebar/panels/site-panel/gutter-tree-node.tsx +++ b/packages/editor/src/components/ui/sidebar/panels/site-panel/gutter-tree-node.tsx @@ -1,4 +1,4 @@ -import { type AnyNodeId, type GutterNode, useScene } from '@pascal-app/core' +import { type AnyNodeId, type GutterNode, useScene, usePascalI18n } from '@pascal-app/core' import { useViewer } from '@pascal-app/viewer' import Image from 'next/image' import { memo, useCallback, useState } from 'react' @@ -6,6 +6,7 @@ import { SnapTargetIcon } from '../../../snap-target-badge' import { InlineRenameInput } from './inline-rename-input' import { focusTreeNode, handleTreeSelection, TreeNodeWrapper } from './tree-node' import { TreeNodeActions } from './tree-node-actions' +import { nodeLabelDescriptor } from '../../../../../i18n/node-messages' interface GutterTreeNodeProps { nodeId: AnyNodeId @@ -18,6 +19,7 @@ export const GutterTreeNode = memo(function GutterTreeNode({ depth, isLast, }: GutterTreeNodeProps) { + const i18n = usePascalI18n() const [isEditing, setIsEditing] = useState(false) const isVisible = useScene((s) => s.nodes[nodeId]?.visible !== false) const node = useScene((s) => s.nodes[nodeId] as GutterNode | undefined) @@ -39,7 +41,7 @@ export const GutterTreeNode = memo(function GutterTreeNode({ [nodeId, setSelection], ) - const defaultName = node?.name || 'Gutter' + const defaultName = node?.name || i18n._(nodeLabelDescriptor('gutter', 'Gutter')) return ( state.updateNode) const mode = useEditor((state) => state.mode) @@ -194,7 +200,7 @@ const PropertyLineSection = memo(function PropertyLineSection() {
- Property Line + {i18n._({ id: 'editor.sidebar.panels.sitePanel.propertyLine', message: 'Property Line' })}
)} @@ -297,6 +303,7 @@ const CameraPopover = memo(function CameraPopover({ onOpenChange: (open: boolean) => void buttonClassName?: string }) { + const i18n = usePascalI18n() const updateNode = useScene((state) => state.updateNode) return ( @@ -307,7 +314,7 @@ const CameraPopover = memo(function CameraPopover({ buttonClassName, )} onClick={(e) => e.stopPropagation()} - title="Camera snapshot" + title={i18n._({ id: 'editor.sidebar.panels.sitePanel.cameraSnapshot', message: 'Camera snapshot' })} > {hasCamera && ( @@ -332,7 +339,7 @@ const CameraPopover = memo(function CameraPopover({ }} > - View snapshot + {i18n._({ id: 'editor.sidebar.panels.sitePanel.viewSnapshot', message: 'View snapshot' })} )} {hasCamera && ( )} @@ -376,6 +383,7 @@ const ReferenceItem = memo(function ReferenceItem({ setSelectedReferenceId: (id: string) => void handleDelete: (id: string, e: React.MouseEvent) => void }) { + const i18n = usePascalI18n() const [isEditing, setIsEditing] = useState(false) const [isExpanded, setIsExpanded] = useState(true) const updateNode = useScene((state) => state.updateNode) @@ -450,13 +458,13 @@ const ReferenceItem = memo(function ReferenceItem({ > {isCapture ? ( Capture ) : ( Guide @@ -477,7 +485,7 @@ const ReferenceItem = memo(function ReferenceItem({ event.stopPropagation() updateNode(refNode.id, { visible: !isVisible }) }} - title={isVisible ? 'Hide' : 'Show'} + title={isVisible ? i18n._({ id: 'editor.sidebar.panels.sitePanel.hide', message: 'Hide' }) : i18n._({ id: 'editor.sidebar.panels.sitePanel.show', message: 'Show' })} type="button" > {isVisible ? : } @@ -486,7 +494,7 @@ const ReferenceItem = memo(function ReferenceItem({ void onDeleteAsset?: (projectId: string, url: string) => void }) { + const i18n = usePascalI18n() + const locale = useLocale() const [cameraPopoverOpen, setCameraPopoverOpen] = useState(false) const [duplicateDialogOpen, setDuplicateDialogOpen] = useState(false) const [isEditing, setIsEditing] = useState(false) @@ -820,7 +836,14 @@ const LevelItem = memo(function LevelItem({
)} {level.camera && ( )}
@@ -925,6 +949,11 @@ const LevelItem = memo(function LevelItem({ - + @@ -977,7 +1006,7 @@ const LevelItem = memo(function LevelItem({
updateNode(level.id, { baseElevation: value })} precision={2} step={0.05} @@ -1014,6 +1043,7 @@ const LevelsSection = memo(function LevelsSection({ onUploadAsset?: (projectId: string, levelId: string, file: File, type: 'scan' | 'guide') => void onDeleteAsset?: (projectId: string, url: string) => void } = {}) { + const i18n = usePascalI18n() const updateNode = useScene((state) => state.updateNode) const selectedBuildingId = useViewer((state) => state.selection.buildingId) const selectedLevelId = useViewer((state) => state.selection.levelId) @@ -1056,7 +1086,7 @@ const LevelsSection = memo(function LevelsSection({
- Add level + {i18n._({ id: 'editor.sidebar.panels.sitePanel.addLevel', message: 'Add level' })} {levels.length === 0 && (
@@ -1064,7 +1094,7 @@ const LevelsSection = memo(function LevelsSection({
{/* Horizontal branch line */}
- No levels yet + {i18n._({ id: 'editor.sidebar.panels.sitePanel.noLevelsYet', message: 'No levels yet' })}
)} {[...levels].reverse().map((level, index) => ( @@ -1091,6 +1121,7 @@ const UnitsSection = memo(function UnitsSection({ }: { buildingId: BuildingNode['id'] }) { + const i18n = usePascalI18n() const unitIds = useScene( useShallow((s) => { const building = s.nodes[buildingId] as BuildingNode | undefined @@ -1117,7 +1148,7 @@ const UnitsSection = memo(function UnitsSection({ )} {zone.camera && ( )}
@@ -1339,6 +1381,7 @@ const ZoneItem = memo(function ZoneItem({ }) const MultiSelectionBadge = memo(function MultiSelectionBadge() { + const i18n = usePascalI18n() const selectedIds = useViewer((state) => state.selection.selectedIds) const setSelection = useViewer((state) => state.setSelection) @@ -1347,11 +1390,15 @@ const MultiSelectionBadge = memo(function MultiSelectionBadge() { return (
- {selectedIds.length} objects selected + {i18n._({ + id: 'editor.sidebar.panels.sitePanel.objectsSelected', + message: '{count, plural, one {# object selected} other {# objects selected}}', + values: { count: selectedIds.length }, + })} @@ -1361,6 +1408,7 @@ const MultiSelectionBadge = memo(function MultiSelectionBadge() { }) const RoomsSection = memo(function RoomsSection() { + const i18n = usePascalI18n() const selectedLevelId = useViewer((state) => state.selection.levelId) const armToolMode = useEditor((state) => state.armToolMode) const levelZones = useScene( @@ -1390,7 +1438,7 @@ const RoomsSection = memo(function RoomsSection() {
{others.map((zone, index) => ( @@ -1443,6 +1491,7 @@ const RoomsSection = memo(function RoomsSection() { }) const ContentSection = memo(function ContentSection() { + const i18n = usePascalI18n() const selectedLevelId = useViewer((state) => state.selection.levelId) const level = useScene((s) => selectedLevelId ? ((s.nodes[selectedLevelId] as LevelNode | undefined) ?? null) : null, @@ -1462,7 +1511,7 @@ const ContentSection = memo(function ContentSection() { if (!level) { return ( -
Select a level to view content
+
{i18n._({ id: 'editor.sidebar.panels.sitePanel.selectALevelToViewContent', message: 'Select a level to view content' })}
) } @@ -1474,7 +1523,7 @@ const ContentSection = memo(function ContentSection() { icon={} label={ - Elements + {i18n._({ id: 'editor.sidebar.panels.sitePanel.elements', message: 'Elements' })} {elementChildren.length > 0 && ( {elementChildren.length} )} @@ -1485,7 +1534,7 @@ const ContentSection = memo(function ContentSection() { > {elementChildren.length === 0 ? (
- No elements on this level + {i18n._({ id: 'editor.sidebar.panels.sitePanel.noElementsOnThisLevel', message: 'No elements on this level' })}
) : ( @@ -1520,6 +1569,7 @@ const BuildingItem = memo(function BuildingItem({ onUploadAsset?: (projectId: string, levelId: string, file: File, type: 'scan' | 'guide') => void onDeleteAsset?: (projectId: string, url: string) => void }) { + const i18n = usePascalI18n() const setSelection = useViewer((state) => state.setSelection) const phase = useEditor((state) => state.phase) const setPhase = useEditor((state) => state.setPhase) @@ -1560,14 +1610,14 @@ const BuildingItem = memo(function BuildingItem({ >
Building - {building.name || 'Building'} + {building.name || i18n._({ id: 'editor.sidebar.panels.sitePanel.building', message: 'Building' })}
setBuildingCameraOpen(open ? building.id : null)} @@ -1582,7 +1632,7 @@ const BuildingItem = memo(function BuildingItem({ : 'text-muted-foreground hover:bg-accent hover:text-foreground', )} onClick={(e) => e.stopPropagation()} - title="Camera snapshot" + title={i18n._({ id: 'editor.sidebar.panels.sitePanel.cameraSnapshot', message: 'Camera snapshot' })} > {building.camera && ( @@ -1607,7 +1657,7 @@ const BuildingItem = memo(function BuildingItem({ }} > - View snapshot + {i18n._({ id: 'editor.sidebar.panels.sitePanel.viewSnapshot', message: 'View snapshot' })} )} {building.camera && ( )}
@@ -1679,6 +1729,7 @@ export interface SitePanelProps { } export function SitePanel({ projectId, onUploadAsset, onDeleteAsset }: SitePanelProps = {}) { + const i18n = usePascalI18n() const rootNodeIds = useScene((state) => state.rootNodeIds) const updateNode = useScene((state) => state.updateNode) const selectedBuildingId = useViewer((state) => state.selection.buildingId) @@ -1703,7 +1754,7 @@ export function SitePanel({ projectId, onUploadAsset, onDeleteAsset }: SitePanel return ( -
+
{/* Site Header */} {siteNode && (
Site - {siteNode.name || 'Site'} + {siteNode.name || i18n._({ id: 'editor.sidebar.panels.sitePanel.site', message: 'Site' })}
- No buildings yet + {i18n._({ id: 'editor.sidebar.panels.sitePanel.noBuildingsYet', message: 'No buildings yet' })}
) : (
diff --git a/packages/editor/src/components/ui/sidebar/panels/site-panel/inline-rename-input.tsx b/packages/editor/src/components/ui/sidebar/panels/site-panel/inline-rename-input.tsx index a24200f3ef..e90a7ba6b0 100644 --- a/packages/editor/src/components/ui/sidebar/panels/site-panel/inline-rename-input.tsx +++ b/packages/editor/src/components/ui/sidebar/panels/site-panel/inline-rename-input.tsx @@ -1,4 +1,4 @@ -import { type AnyNodeId, useScene } from '@pascal-app/core' +import { type AnyNodeId, usePascalI18n, useScene } from '@pascal-app/core' import { Pencil } from 'lucide-react' import { memo, useCallback, useEffect, useRef, useState } from 'react' import { cn } from './../../../../../lib/utils' @@ -18,15 +18,19 @@ interface InlineRenameFieldProps { type InlineRenameInputProps = Omit & { nodeId: AnyNodeId + /** The part of the stored name the user edits; a generated default edits as empty. */ + editableName?: (name: string | undefined) => string | undefined } /** Renames a scene node through `updateNode`. */ export const InlineRenameInput = memo(function InlineRenameInput({ nodeId, + editableName, ...props }: InlineRenameInputProps) { const updateNode = useScene((s) => s.updateNode) - const name = useScene((s) => s.nodes[nodeId]?.name) + const stored = useScene((s) => s.nodes[nodeId]?.name) + const name = editableName ? editableName(stored) : stored const handleRename = useCallback( (next: string | undefined) => updateNode(nodeId, { name: next }), [nodeId, updateNode], @@ -44,6 +48,7 @@ export const InlineRenameField = memo(function InlineRenameField({ className, onStartEditing, }: InlineRenameFieldProps) { + const i18n = usePascalI18n() const [value, setValue] = useState(name || '') const inputRef = useRef(null) const inputSize = Math.max((value || defaultName).length, 1) @@ -63,7 +68,7 @@ export const InlineRenameField = memo(function InlineRenameField({ const handleSave = useCallback(() => { const trimmed = value.trim() - if (trimmed !== name) { + if ((trimmed || undefined) !== (name || undefined)) { onRename(trimmed || undefined) } onStopEditing() @@ -87,6 +92,7 @@ export const InlineRenameField = memo(function InlineRenameField({ {onStartEditing && ( @@ -67,7 +68,7 @@ export const TreeNodeActions = memo(function TreeNodeActions({ nodeId }: TreeNod )} {hasCamera && ( )}
diff --git a/packages/editor/src/components/ui/sidebar/panels/site-panel/tree-node.tsx b/packages/editor/src/components/ui/sidebar/panels/site-panel/tree-node.tsx index 42c5ae1ff3..d2dc774ec0 100644 --- a/packages/editor/src/components/ui/sidebar/panels/site-panel/tree-node.tsx +++ b/packages/editor/src/components/ui/sidebar/panels/site-panel/tree-node.tsx @@ -1,4 +1,11 @@ -import { type AnyNode, type AnyNodeId, emitter, nodeRegistry, useScene } from '@pascal-app/core' +import { + type AnyNode, + type AnyNodeId, + emitter, + nodeRegistry, + usePascalI18n, + useScene, +} from '@pascal-app/core' import { useViewer } from '@pascal-app/viewer' import { ChevronRight } from 'lucide-react' import { AnimatePresence, motion } from 'motion/react' @@ -231,6 +238,7 @@ export const TreeNodeWrapper = forwardRef( }, ref, ) { + const i18n = usePascalI18n() const rowRef = useRef(null) useEffect(() => { @@ -286,7 +294,14 @@ export const TreeNodeWrapper = forwardRef( {/* A row with nothing to fold keeps the space, and a click there selects the row. */} {hasChildren ? ( )} {zone.camera && ( )}
@@ -133,6 +142,7 @@ function ZoneItem({ zone }: { zone: ZoneNode }) { } export function ZonePanel() { + const i18n = usePascalI18n() const nodes = useScene((state) => state.nodes) const currentLevelId = useViewer((state) => state.selection.levelId) const selectedZoneId = useViewer((state) => state.selection.zoneId) @@ -167,7 +177,7 @@ export function ZonePanel() { if (!currentLevelId) { return (
- Select a level to view and create zones + {i18n._({ id: 'editor.sidebar.panels.zonePanel.selectALevelToViewAnd', message: 'Select a level to view and create zones' })}
) } @@ -176,34 +186,34 @@ export function ZonePanel() {
{levelZones.length === 0 ? (
- No zones on this level.{' '} + {i18n._({ id: 'editor.sidebar.panels.zonePanel.noZonesOnThisLevel', message: 'No zones on this level.' })}{' '}
) : ( levelZones.map((zone) => ) )} {selectedZone ? ( - + } - label="Save to catalog" + label={i18n._({ id: 'editor.sidebar.panels.zonePanel.saveToCatalog', message: 'Save to catalog' })} onClick={() => emitter.emit('room-preset:create', { zoneId: selectedZone.id })} type="button" /> } - label="Delete" + label={i18n._({ id: 'editor.sidebar.panels.zonePanel.delete', message: 'Delete' })} onClick={() => deleteSelectedZone(false)} type="button" /> } - label="Delete with contents" + label={i18n._({ id: 'editor.sidebar.panels.zonePanel.deleteWithContents', message: 'Delete with contents' })} onClick={() => deleteSelectedZone(true)} type="button" /> diff --git a/packages/editor/src/components/ui/sidebar/tab-bar.tsx b/packages/editor/src/components/ui/sidebar/tab-bar.tsx index 89f7c2352d..db168b2a0f 100644 --- a/packages/editor/src/components/ui/sidebar/tab-bar.tsx +++ b/packages/editor/src/components/ui/sidebar/tab-bar.tsx @@ -121,7 +121,10 @@ export function IconRail({ tabs, activeTab, collapsed, onIconClick }: IconRailPr return ( -
+
{defaultTabs.map(renderTab)} {pluginTabs.length > 0 && (
diff --git a/packages/editor/src/components/ui/sidebar/use-plugin-panels.tsx b/packages/editor/src/components/ui/sidebar/use-plugin-panels.tsx index 7000bbc89c..ded6ed232c 100644 --- a/packages/editor/src/components/ui/sidebar/use-plugin-panels.tsx +++ b/packages/editor/src/components/ui/sidebar/use-plugin-panels.tsx @@ -1,7 +1,7 @@ 'use client' import { Icon } from '@iconify/react' -import { type IconRef, useScene } from '@pascal-app/core' +import { type IconRef, useScene, usePascalI18n } from '@pascal-app/core' import { Plus } from 'lucide-react' import { type ComponentType, @@ -28,9 +28,8 @@ import type { ExtraPanel } from './icon-rail' // The rail's "+" puts the plugin directory on the stage, as a view in the // focused pane, and stays lit while it is there instead of leaving an // unrelated panel open beside it. `component` serves the v1 sidebar. -const pluginsManagerPanel: ExtraPanel = { +const pluginsManagerPanel: Omit = { id: 'plugins', - label: 'Plugins', icon: , component: PluginsView, noPanel: true, @@ -63,12 +62,12 @@ function renderIconRef(ref: IconRef): ReactNode { } function PluginPanelCrashed({ label }: { label: string }) { + const i18n = usePascalI18n() return (
-

"{label}" plugin crashed

+

{i18n._({ id: 'editor.sidebar.usePluginPanels.labelPluginCrashed', message: '"{label}" plugin crashed', values: { label } })}

- This panel hit an error and was unloaded for this session. The rest of the editor is - unaffected — reload to try again. + {i18n._({ id: 'editor.sidebar.usePluginPanels.thisPanelHitAnErrorAnd', message: 'This panel hit an error and was unloaded for this session. The rest of the editor is unaffected — reload to try again.' })}

) @@ -83,13 +82,16 @@ function resolvePanelComponent(panel: EditorHostPanel): ComponentType { const cached = wrappedPanelCache.get(panel.component) if (cached) return cached const Lazy = lazy(panel.component) - const Wrapped: ComponentType = () => ( + const Wrapped: ComponentType = () => { + const i18n = usePascalI18n() + return (( }> - Loading…
}> + {i18n._({ id: 'editor.sidebar.usePluginPanels.loading', message: 'Loading…' })}
}> - ) + )) +} Wrapped.displayName = `PluginPanel(${panel.id})` wrappedPanelCache.set(panel.component, Wrapped) return Wrapped @@ -107,6 +109,7 @@ function resolvePanelComponent(panel: EditorHostPanel): ComponentType { * authoring panel like Nature doesn't ride into the studio rail. */ export function useHostPanels(hostPanels?: ExtraPanel[]): ExtraPanel[] { + const i18n = usePascalI18n() const registered = useSyncExternalStore( editorHostPanelRegistry.subscribe, editorHostPanelRegistry.getSnapshot, @@ -151,7 +154,13 @@ export function useHostPanels(hostPanels?: ExtraPanel[]): ExtraPanel[] { readOnly, workspaceMode, }) - ? [{ ...pluginsManagerPanel, stageActive: pluginsViewShown }] + ? [ + { + ...pluginsManagerPanel, + label: i18n._({ id: 'editor.sidebar.usePluginPanels.plugins', message: 'Plugins' }), + stageActive: pluginsViewShown, + }, + ] : [] return [...(hostPanels ?? []), ...fromRegistry, ...manager] } diff --git a/packages/editor/src/i18n/level-name.ts b/packages/editor/src/i18n/level-name.ts index 7f38af079f..1d7c016b01 100644 --- a/packages/editor/src/i18n/level-name.ts +++ b/packages/editor/src/i18n/level-name.ts @@ -5,16 +5,19 @@ type DisplayLevel = { name?: string } +/** The level's own name, or undefined while it carries a generated default. */ +export function authoredLevelName(level: DisplayLevel): string | undefined { + const levelNumber = level.level ?? 0 + const name = level.name?.trim() + return name && name !== `Level ${levelNumber}` && name !== getDefaultLevelName(levelNumber) + ? name + : undefined +} + export function localizedLevelName(level: DisplayLevel, i18n: PascalI18n, locale: string): string { const levelNumber = level.level ?? 0 - const authoredName = level.name?.trim() - if ( - authoredName && - authoredName !== `Level ${levelNumber}` && - authoredName !== getDefaultLevelName(levelNumber) - ) { - return authoredName - } + const authoredName = authoredLevelName(level) + if (authoredName) return authoredName if (levelNumber === 0) { return i18n._({ id: 'core.level.groundFloor', message: 'Ground floor' }) } diff --git a/packages/editor/src/i18n/locales.test.ts b/packages/editor/src/i18n/locales.test.ts index b191a31b81..192cbfbd43 100644 --- a/packages/editor/src/i18n/locales.test.ts +++ b/packages/editor/src/i18n/locales.test.ts @@ -1,6 +1,6 @@ import { afterEach, expect, test } from 'bun:test' import { createI18n, setLocale, translate } from '@pascal-app/core' -import { localizedLevelName } from './level-name' +import { authoredLevelName, localizedLevelName } from './level-name' import { registerBundledLocales } from './locales' afterEach(() => setLocale('en')) @@ -54,3 +54,10 @@ test('generated stored level names localize while authored names remain unchange japanese.destroy() } }) + +test('a stored default level name is not an authored name, so renaming starts empty', () => { + expect(authoredLevelName({ level: 0, name: 'Ground floor' })).toBeUndefined() + expect(authoredLevelName({ level: 1, name: 'Level 1' })).toBeUndefined() + expect(authoredLevelName({ level: 1 })).toBeUndefined() + expect(authoredLevelName({ level: 1, name: ' Mezzanine ' })).toBe('Mezzanine') +}) diff --git a/packages/editor/src/i18n/locales/en-XA/messages.ts b/packages/editor/src/i18n/locales/en-XA/messages.ts index c81cb6a2d1..6ee9d84653 100644 --- a/packages/editor/src/i18n/locales/en-XA/messages.ts +++ b/packages/editor/src/i18n/locales/en-XA/messages.ts @@ -1 +1 @@ -/*eslint-disable*/import type{Messages}from"@lingui/core";export const messages=JSON.parse("{\"app.appShell.pascalHome\":[\"[Þášçáļ ĥöɱé ~~~]\"],\"app.buildTab.addGate\":[\"[Åðð Ĝáţé ~~~]\"],\"app.buildTab.addOpenPassage\":[\"[Åðð Öþéñ Þáššáĝé ~~~~~]\"],\"app.buildTab.addToRooms\":[\"[Åðð ţö ŕööɱš ~~~]\"],\"app.buildTab.allBuildTools\":[\"[← Åļļ ƀûîļð ţööļš ~~~~]\"],\"app.buildTab.chooseGateOrOpenPassageThen\":[\"[Çĥööšé Ĝáţé öŕ Öþéñ Þáššáĝé, ţĥéñ çļîçķ îţš þöšîţîöñ öñ áñý ƒéñçé. Ƒîñð þļáçéð ĝáţéš áñð öþéñîñĝš ûñðéŕ ţĥéîŕ ƒéñçé îñ ţĥé šçéñé ĝŕáþĥ. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~]\"],\"app.buildTab.clickALinesetToLayThe\":[\"[Çļîçķ á ļîñéšéţ ţö ļáý ţĥé ļîñé ƀéšîðé îţ. ~~~~~~~~~~]\"],\"app.buildTab.doubleGate\":[\"[Ðöûƀļé ĝáţé ~~~]\"],\"app.buildTab.featuresExtensions\":[\"[Ƒéáţûŕéš & éẋţéñšîöñš ~~~~~~]\"],\"app.buildTab.fenceFeatures\":[\"[Ƒéñçé ƒéáţûŕéš ~~~~]\"],\"app.buildTab.followLineset\":[\"[Ƒöļļöŵ ļîñéšéţ ~~~~]\"],\"app.buildTab.gate\":[\"[Ĝáţé ~~]\"],\"app.buildTab.gateStyle\":[\"[Ĝáţé šţýļé ~~~]\"],\"app.buildTab.horizontalBoards\":[\"[Ĥöŕîžöñţáļ ƀöáŕðš ~~~~~]\"],\"app.buildTab.hoverAFenceToPreviewClick\":[\"[Ĥöṽéŕ á ƒéñçé ţö þŕéṽîéŵ. Çļîçķ ţö þļáçé. Éšç çáñçéļš. Ļéáṽé ŕööɱ ƀéţŵééñ öþéñîñĝš. ~~~~~~~~~~~~~~~~~~~~]\"],\"app.buildTab.leaves\":[\"[Ļéáṽéš ~~]\"],\"app.buildTab.liquidLine\":[\"[Ļîǫûîð Ļîñé ~~~]\"],\"app.buildTab.matchFenceStyle\":[\"[Ṁáţçĥ ƒéñçé šţýļé ~~~~~]\"],\"app.buildTab.mep\":[\"[ṀÉÞ ~]\"],\"app.buildTab.off\":[\"[Öƒƒ ~]\"],\"app.buildTab.on\":[\"[Öñ ~]\"],\"app.buildTab.openRails\":[\"[Öþéñ ŕáîļš ~~~]\"],\"app.buildTab.opening\":[\"[Öþéñîñĝ ~~~]\"],\"app.buildTab.openingWidthM\":[\"[Öþéñîñĝ ŵîðţĥ (ɱ) ~~~~]\"],\"app.buildTab.outdoor\":[\"[Öûţðööŕ ~~~]\"],\"app.buildTab.picket\":[\"[Þîçķéţ ~~]\"],\"app.buildTab.roofType\":[\"[Ŕööƒ ţýþé ~~~]\"],\"app.buildTab.roomsAlreadyCreateTheirFloorAnd\":[\"[Ŕööɱš áļŕéáðý çŕéáţé ţĥéîŕ ƒļööŕ áñð çéîļîñĝ. Ûšé ţĥéšé ƒöŕ þļáţƒöŕɱš áñð öñé-öƒƒ šţŕûçţûŕé. ~~~~~~~~~~~~~~~~~~~~~~~]\"],\"app.buildTab.searchBuildToolsAndKitchenItems\":[\"[Šéáŕçĥ ƀûîļð ţööļš áñð ķîţçĥéñ îţéɱš ~~~~~~~~~~]\"],\"app.buildTab.searchToolsFridgeSink\":[\"[Šéáŕçĥ ţööļš, ƒŕîðĝé, šîñķ… ~~~~~~~]\"],\"app.buildTab.selectACurvedWallToMatch\":[\"[Šéļéçţ á çûŕṽéð ŵáļļ ţö ɱáţçĥ îţš ŕáðîûš áñð áŕç. ~~~~~~~~~~~~]\"],\"app.buildTab.singleGate\":[\"[Šîñĝļé ĝáţé ~~~]\"],\"app.buildTab.slabCeilingColumn\":[\"[Šļáƀ, çéîļîñĝ, çöļûɱñ… ~~~~~~]\"],\"app.buildTab.solidPrivacy\":[\"[Šöļîð þŕîṽáçý ~~~~]\"],\"app.buildTab.traceALineAlongsideAnExisting\":[\"[Ţŕáçé á ļîñé áļöñĝšîðé áñ éẋîšţîñĝ ļîñéšéţ (Ƒ). ~~~~~~~~~~~~]\"],\"app.buildTab.verticalSlats\":[\"[Ṽéŕţîçáļ šļáţš ~~~~]\"],\"app.editorNavbar.allProjects\":[\"[Åļļ þŕöĵéçţš ~~~~]\"],\"app.editorNavbar.preview\":[\"[Þŕéṽîéŵ ~~~]\"],\"app.editorNavbar.projectName\":[\"[Þŕöĵéçţ ñáɱé ~~~~]\"],\"app.editorNavbar.renameProject\":[\"[Ŕéñáɱé þŕöĵéçţ ~~~~]\"],\"app.editorNavbar.share\":[\"[Šĥáŕé ~~]\"],\"app.kitchenBrowser.addLabel\":[\"[Åðð \",[\"label\"],\" ~]\"],\"app.kitchenBrowser.addToKitchen\":[\"[Åðð ţö ķîţçĥéñ ~~~~]\"],\"app.kitchenBrowser.chooseAnItemThenClickTo\":[\"[Çĥööšé áñ îţéɱ, ţĥéñ çļîçķ ţö þļáçé îţ. Åþþļîáñçéš îñçļûðé ţĥéîŕ çáƀîñéţŕý. ~~~~~~~~~~~~~~~~~~~]\"],\"app.kitchenBrowser.findInThisProjectLength\":[\"[Ƒîñð îñ ţĥîš þŕöĵéçţ · \",[\"length\"],\" ~~~~~~]\"],\"app.kitchenBrowser.findName\":[\"[Ƒîñð \",[\"name\"],\" ~~]\"],\"app.kitchenBrowser.groupAdd\":[\"[Ķîţçĥéñ · Åðð ~~~]\"],\"app.kitchenBrowser.groupInThisProject\":[\"[Ķîţçĥéñ · Îñ ţĥîš þŕöĵéçţ ~~~~~~]\"],\"app.kitchenBrowser.kitchenCabinet\":[\"[Ķîţçĥéñ çáƀîñéţ ~~~~~]\"],\"app.kitchenBrowser.noMatchingKitchenItemsPlacedYet\":[\"[Ñö ɱáţçĥîñĝ ķîţçĥéñ îţéɱš þļáçéð ýéţ. ~~~~~~~~~~]\"],\"app.kitchenBrowser.selectAndShowInScene\":[\"[Šéļéçţ áñð šĥöŵ îñ šçéñé ~~~~~~]\"],\"app.lib.buildPalette.ceiling\":[\"[Çéîļîñĝ ~~~]\"],\"app.lib.buildPalette.column\":[\"[Çöļûɱñ ~~]\"],\"app.lib.buildPalette.door\":[\"[Ðööŕ ~~]\"],\"app.lib.buildPalette.duct\":[\"[Ðûçţ ~~]\"],\"app.lib.buildPalette.dwvPipe\":[\"[ÐŴṼ Þîþé ~~~]\"],\"app.lib.buildPalette.elevator\":[\"[Éļéṽáţöŕ ~~~]\"],\"app.lib.buildPalette.fence\":[\"[Ƒéñçé ~~]\"],\"app.lib.buildPalette.hvacUnit\":[\"[ĤṼÅÇ Ûñîţ ~~~]\"],\"app.lib.buildPalette.kitchen\":[\"[Ķîţçĥéñ ~~~]\"],\"app.lib.buildPalette.lineset\":[\"[Ļîñéšéţ ~~~]\"],\"app.lib.buildPalette.liquidLine\":[\"[Ļîǫûîð Ļîñé ~~~]\"],\"app.lib.buildPalette.mep\":[\"[ṀÉÞ ~]\"],\"app.lib.buildPalette.register\":[\"[Ŕéĝîšţéŕ ~~~]\"],\"app.lib.buildPalette.roof\":[\"[Ŕööƒ ~~]\"],\"app.lib.buildPalette.shelf\":[\"[Šĥéļƒ ~~]\"],\"app.lib.buildPalette.slab\":[\"[Šļáƀ ~~]\"],\"app.lib.buildPalette.spawnPoint\":[\"[Šþáŵñ þöîñţ ~~~]\"],\"app.lib.buildPalette.stairs\":[\"[Šţáîŕš ~~]\"],\"app.lib.buildPalette.terrace\":[\"[Ţéŕŕáçé ~~~]\"],\"app.lib.buildPalette.terrain\":[\"[Ţéŕŕáîñ ~~~]\"],\"app.lib.buildPalette.wall\":[\"[Ŵáļļ ~~]\"],\"app.lib.buildPalette.window\":[\"[Ŵîñðöŵ ~~]\"],\"app.lib.buildPanelModel.addFitting\":[\"[Åðð Ƒîţţîñĝ ~~~]\"],\"app.lib.buildPanelModel.addGate\":[\"[Åðð Ĝáţé ~~~]\"],\"app.lib.buildPanelModel.addOpenPassage\":[\"[Åðð Öþéñ Þáššáĝé ~~~~~]\"],\"app.lib.buildPanelModel.addTrap\":[\"[Åðð Ţŕáþ ~~~]\"],\"app.lib.buildPanelModel.build\":[\"[Ɓûîļð ~~]\"],\"app.lib.buildPanelModel.createFrom\":[\"[Çŕéáţé ƒŕöɱ ~~~]\"],\"app.lib.buildPanelModel.drawTheRoofFootprintWithTwo\":[\"[Ðŕáŵ ţĥé ŕööƒ ƒööţþŕîñţ ŵîţĥ ţŵö çöŕñéŕ çļîçķš. ~~~~~~~~~~~~]\"],\"app.lib.buildPanelModel.duct\":[\"[Ðûçţ ~~]\"],\"app.lib.buildPanelModel.dwvPipe\":[\"[ÐŴṼ Þîþé ~~~]\"],\"app.lib.buildPanelModel.featuresExtensions\":[\"[Ƒéáţûŕéš & éẋţéñšîöñš ~~~~~~]\"],\"app.lib.buildPanelModel.fence\":[\"[Ƒéñçé ~~]\"],\"app.lib.buildPanelModel.followLineset\":[\"[Ƒöļļöŵ ļîñéšéţ ~~~~]\"],\"app.lib.buildPanelModel.gatesOpenings\":[\"[Ĝáţéš & öþéñîñĝš ~~~~]\"],\"app.lib.buildPanelModel.hoverARoomToPreviewIts\":[\"[Ĥöṽéŕ á ŕööɱ ţö þŕéṽîéŵ îţš ƀöûñðáŕý, ţĥéñ çļîçķ ţö þļáçé. ~~~~~~~~~~~~~~]\"],\"app.lib.buildPanelModel.kitchen\":[\"[Ķîţçĥéñ ~~~]\"],\"app.lib.buildPanelModel.mep\":[\"[ṀÉÞ ~]\"],\"app.lib.buildPanelModel.modularCabinet\":[\"[Ṁöðûļáŕ Çáƀîñéţ ~~~~~]\"],\"app.lib.buildPanelModel.off\":[\"[Öƒƒ ~]\"],\"app.lib.buildPanelModel.on\":[\"[Öñ ~]\"],\"app.lib.buildPanelModel.painting\":[\"[Þáîñţîñĝ ~~~]\"],\"app.lib.buildPanelModel.roof\":[\"[Ŕööƒ ~~]\"],\"app.lib.buildPanelModel.roofType\":[\"[Ŕööƒ ţýþé ~~~]\"],\"app.lib.buildPanelModel.toolCount\":[\"[\",[\"count\",\"plural\",{\"one\":[\"#\",\" ţööļ\"],\"other\":[\"#\",\" ţööļš\"]}],\" ~~~]\"],\"app.lib.buildTabState.conical\":[\"[Çöñîçáļ ~~~]\"],\"app.lib.buildTabState.draw\":[\"[Ðŕáŵ ~~]\"],\"app.lib.buildTabState.dutch\":[\"[Ðûţçĥ ~~]\"],\"app.lib.buildTabState.flat\":[\"[Ƒļáţ ~~]\"],\"app.lib.buildTabState.gable\":[\"[Ĝáƀļé ~~]\"],\"app.lib.buildTabState.gambrel\":[\"[Ĝáɱƀŕéļ ~~~]\"],\"app.lib.buildTabState.hip\":[\"[Ĥîþ ~]\"],\"app.lib.buildTabState.mansard\":[\"[Ṁáñšáŕð ~~~]\"],\"app.lib.buildTabState.room\":[\"[Ŕööɱ ~~]\"],\"app.lib.buildTabState.shed\":[\"[Šĥéð ~~]\"],\"app.lib.buildTabState.wall\":[\"[Ŵáļļ ~~]\"],\"app.sharePanel.anyoneWithTheLinkCanView\":[\"[Åñýöñé ŵîţĥ ţĥé ļîñķ çáñ ṽîéŵ ţĥîš þŕöĵéçţ. Ţĥéý çáññöţ éðîţ îţ. ~~~~~~~~~~~~~~~~]\"],\"app.sharePanel.copied\":[\"[Çöþîéð ~~]\"],\"app.sharePanel.copy\":[\"[Çöþý ~~]\"],\"app.sharePanel.couldNotReadTheSharingState\":[\"[Çöûļð ñöţ ŕéáð ţĥé šĥáŕîñĝ šţáţé. ~~~~~~~~~]\"],\"app.sharePanel.couldNotTurnOffThePublic\":[\"[Çöûļð ñöţ ţûŕñ öƒƒ ţĥé þûƀļîç ļîñķ. ~~~~~~~~~]\"],\"app.sharePanel.couldNotTurnOnThePublic\":[\"[Çöûļð ñöţ ţûŕñ öñ ţĥé þûƀļîç ļîñķ. ~~~~~~~~~]\"],\"app.sharePanel.embedCode\":[\"[Éɱƀéð çöðé ~~~]\"],\"app.sharePanel.embedLink\":[\"[Éɱƀéð ļîñķ ~~~]\"],\"app.sharePanel.hideControls\":[\"[Ĥîðé çöñţŕöļš ~~~~]\"],\"app.sharePanel.link\":[\"[Ļîñķ ~~]\"],\"app.sharePanel.onlyThe3dViewNoHeader\":[\"[Öñļý ţĥé 3Ð ṽîéŵ, ñö ĥéáðéŕ öŕ ţööļƀáŕ. ~~~~~~~~~]\"],\"app.sharePanel.open\":[\"[Öþéñ ~~]\"],\"app.sharePanel.publicLink\":[\"[Þûƀļîç ļîñķ ~~~]\"],\"app.sharePanel.shareProject\":[\"[Šĥáŕé þŕöĵéçţ ~~~~]\"],\"app.viewerToolbar.automaticDimensions\":[\"[Åûţöɱáţîç ðîɱéñšîöñš ~~~~~~]\"],\"app.viewerToolbar.camera\":[\"[Çáɱéŕá ~~]\"],\"app.viewerToolbar.cleanPlanDimensionsAppearWithSelection\":[\"[Çļéáñ þļáñ; ðîɱéñšîöñš áþþéáŕ ŵîţĥ šéļéçţîöñ ~~~~~~~~~~~~]\"],\"app.viewerToolbar.collapseSidebar\":[\"[Çöļļáþšé šîðéƀáŕ ~~~~~]\"],\"app.viewerToolbar.crispOpaqueEdgeLines\":[\"[Çŕîšþ, öþáǫûé éðĝé ļîñéš ~~~~~~]\"],\"app.viewerToolbar.cutaway\":[\"[Çûţáŵáý ~~~]\"],\"app.viewerToolbar.default\":[\"[Ðéƒáûļţ ~~~]\"],\"app.viewerToolbar.display\":[\"[Ðîšþļáý ~~~]\"],\"app.viewerToolbar.displaySettings\":[\"[Ðîšþļáý šéţţîñĝš ~~~~~]\"],\"app.viewerToolbar.doorWindowMarks\":[\"[Ðööŕ/ŵîñðöŵ ɱáŕķš ~~~~~]\"],\"app.viewerToolbar.edges\":[\"[Éðĝéš ~~]\"],\"app.viewerToolbar.enterVr\":[\"[Éñţéŕ ṼŔ ~~~]\"],\"app.viewerToolbar.exitVr\":[\"[Éẋîţ ṼŔ ~~]\"],\"app.viewerToolbar.expandSidebar\":[\"[Éẋþáñð šîðéƀáŕ ~~~~]\"],\"app.viewerToolbar.expert\":[\"[Éẋþéŕţ ~~]\"],\"app.viewerToolbar.exploded\":[\"[Éẋþļöðéð ~~~]\"],\"app.viewerToolbar.faceOfStud\":[\"[Ƒáçé öƒ šţûð ~~~]\"],\"app.viewerToolbar.faintOutlineOfMajorCreases\":[\"[Ƒáîñţ öûţļîñé öƒ ɱáĵöŕ çŕéášéš ~~~~~~~~]\"],\"app.viewerToolbar.feetInches\":[\"[Ƒééţ & îñçĥéš ~~~]\"],\"app.viewerToolbar.finishedFaces\":[\"[Ƒîñîšĥéð ƒáçéš ~~~~]\"],\"app.viewerToolbar.flatAndFastNoAmbientOcclusion\":[\"[Ƒļáţ áñð ƒášţ — ñö áɱƀîéñţ öççļûšîöñ ~~~~~~~~~]\"],\"app.viewerToolbar.floorPlanAnnotations\":[\"[Ƒļööŕ þļáñ áññöţáţîöñš ~~~~~~]\"],\"app.viewerToolbar.floorPlanMode\":[\"[Ƒļööŕ þļáñ ɱöðé ~~~~]\"],\"app.viewerToolbar.fullAmbientOcclusion\":[\"[Ƒûļļ áɱƀîéñţ öççļûšîöñ ~~~~~~]\"],\"app.viewerToolbar.fullDocumentationAndAnnotationControls\":[\"[Ƒûļļ ðöçûɱéñţáţîöñ áñð áññöţáţîöñ çöñţŕöļš ~~~~~~~~~~~~]\"],\"app.viewerToolbar.fullHeight\":[\"[Ƒûļļ ĥéîĝĥţ ~~~]\"],\"app.viewerToolbar.fullWallThickness\":[\"[Ƒûļļ ŵáļļ ţĥîçķñéšš ~~~~~~]\"],\"app.viewerToolbar.grid\":[\"[Ĝŕîð ~~]\"],\"app.viewerToolbar.levelsMode\":[\"[Ļéṽéļš: \",[\"mode\"],\" ~~]\"],\"app.viewerToolbar.low\":[\"[Ļöŵ ~]\"],\"app.viewerToolbar.magneticSnap\":[\"[Ṁáĝñéţîç šñáþ ~~~~]\"],\"app.viewerToolbar.manual\":[\"[Ṁáñûáļ ~~]\"],\"app.viewerToolbar.manualDimensions\":[\"[Ṁáñûáļ ðîɱéñšîöñš ~~~~~]\"],\"app.viewerToolbar.measurements\":[\"[Ṁéášûŕéɱéñţš ~~~~]\"],\"app.viewerToolbar.meters\":[\"[Ṁéţéŕš ~~]\"],\"app.viewerToolbar.millimeters\":[\"[Ṁîļļîɱéţéŕš ~~~~]\"],\"app.viewerToolbar.n3dMeasurements\":[\"[3Ð ɱéášûŕéɱéñţš ~~~~]\"],\"app.viewerToolbar.noEdgeLines\":[\"[Ñö éðĝé ļîñéš ~~~~]\"],\"app.viewerToolbar.off\":[\"[Öƒƒ ~]\"],\"app.viewerToolbar.on\":[\"[Öñ ~]\"],\"app.viewerToolbar.orthographic\":[\"[Öŕţĥöĝŕáþĥîç ~~~~]\"],\"app.viewerToolbar.perspective\":[\"[Þéŕšþéçţîṽé ~~~~]\"],\"app.viewerToolbar.preview\":[\"[Þŕéṽîéŵ ~~~]\"],\"app.viewerToolbar.previewMode\":[\"[Þŕéṽîéŵ ɱöðé ~~~~]\"],\"app.viewerToolbar.render\":[\"[Ŕéñðéŕ ~~]\"],\"app.viewerToolbar.rendered\":[\"[Ŕéñðéŕéð ~~~]\"],\"app.viewerToolbar.roomLabels\":[\"[Ŕööɱ ļáƀéļš ~~~]\"],\"app.viewerToolbar.sceneTheme\":[\"[Šçéñé ţĥéɱé ~~~]\"],\"app.viewerToolbar.shadows\":[\"[Šĥáðöŵš ~~~]\"],\"app.viewerToolbar.singleWallAxis\":[\"[Šîñĝļé ŵáļļ áẋîš ~~~~~]\"],\"app.viewerToolbar.soft\":[\"[Šöƒţ ~~]\"],\"app.viewerToolbar.solid\":[\"[Šöļîð ~~]\"],\"app.viewerToolbar.solo\":[\"[Šöļö ~~]\"],\"app.viewerToolbar.stack\":[\"[Šţáçķ ~~]\"],\"app.viewerToolbar.stairAnnotations\":[\"[Šţáîŕ áññöţáţîöñš ~~~~~]\"],\"app.viewerToolbar.strong\":[\"[Šţŕöñĝ ~~]\"],\"app.viewerToolbar.structuralCoreFace\":[\"[Šţŕûçţûŕáļ çöŕé ƒáçé ~~~~~~]\"],\"app.viewerToolbar.structuralGridsColumnCenters\":[\"[Šţŕûçţûŕáļ ĝŕîðš & çöļûɱñ çéñţéŕš ~~~~~~~~~]\"],\"app.viewerToolbar.translucent\":[\"[Ţŕáñšļûçéñţ ~~~~]\"],\"app.viewerToolbar.units\":[\"[Ûñîţš ~~]\"],\"app.viewerToolbar.walkthrough\":[\"[Ŵáļķţĥŕöûĝĥ ~~~~]\"],\"app.viewerToolbar.wallCenterline\":[\"[Ŵáļļ çéñţéŕļîñé ~~~~~]\"],\"app.viewerToolbar.wallDimensions\":[\"[Ŵáļļ ðîɱéñšîöñš ~~~~~]\"],\"app.viewerToolbar.wallsLabel\":[\"[Ŵáļļš: \",[\"label\"],\" ~~]\"],\"core.level.basement\":[\"[Ɓášéɱéñţ ~~~]\"],\"core.level.basementNumber\":[\"[Ɓášéɱéñţ \",[\"number\"],\" ~~~]\"],\"core.level.floorNumber\":[\"[Ƒļööŕ \",[\"number\"],\" ~~]\"],\"core.level.groundFloor\":[\"[Ĝŕöûñð ƒļööŕ ~~~~]\"],\"editor.actionMenu.cameraActions.orbitLeft\":[\"[Öŕƀîţ Ļéƒţ ~~~]\"],\"editor.actionMenu.cameraActions.orbitRight\":[\"[Öŕƀîţ Ŕîĝĥţ ~~~]\"],\"editor.actionMenu.cameraActions.topView\":[\"[Ţöþ Ṽîéŵ ~~~]\"],\"editor.actionMenu.controlModes.delete\":[\"[Ðéļéţé ~~]\"],\"editor.actionMenu.controlModes.select\":[\"[Šéļéçţ ~~]\"],\"editor.actionMenu.followPascalPill.resumeFollowing\":[\"[Ŕéšûɱé ƒöļļöŵîñĝ ~~~~~]\"],\"editor.actionMenu.followPascalToggle.off\":[\"[Ƒöļļöŵ Þášçáļ: Öƒƒ ~~~~~]\"],\"editor.actionMenu.followPascalToggle.on\":[\"[Ƒöļļöŵ Þášçáļ: Öñ ~~~~~]\"],\"editor.actionMenu.furnishTools.appliance\":[\"[Åþþļîáñçé ~~~]\"],\"editor.actionMenu.furnishTools.bathroom\":[\"[Ɓáţĥŕööɱ ~~~]\"],\"editor.actionMenu.furnishTools.furniture\":[\"[Ƒûŕñîţûŕé ~~~]\"],\"editor.actionMenu.furnishTools.kitchen\":[\"[Ķîţçĥéñ ~~~]\"],\"editor.actionMenu.furnishTools.outdoor\":[\"[Öûţðööŕ ~~~]\"],\"editor.actionMenu.measurementControl.angle\":[\"[Åñĝļé ~~]\"],\"editor.actionMenu.measurementControl.angularDimension\":[\"[Åñĝûļáŕ ðîɱéñšîöñ ~~~~~]\"],\"editor.actionMenu.measurementControl.arcLength\":[\"[Åŕç ļéñĝţĥ ~~~]\"],\"editor.actionMenu.measurementControl.area\":[\"[Åŕéá ~~]\"],\"editor.actionMenu.measurementControl.centerMark\":[\"[Çéñţéŕ ɱáŕķ ~~~]\"],\"editor.actionMenu.measurementControl.chordDimension\":[\"[Çĥöŕð ðîɱéñšîöñ ~~~~~]\"],\"editor.actionMenu.measurementControl.continuousDimension\":[\"[Çöñţîñûöûš ðîɱéñšîöñ ~~~~~~]\"],\"editor.actionMenu.measurementControl.coordinateDimensions\":[\"[Çööŕðîñáţé ðîɱéñšîöñš ~~~~~~]\"],\"editor.actionMenu.measurementControl.diameterDimension\":[\"[Ðîáɱéţéŕ ðîɱéñšîöñ ~~~~~~]\"],\"editor.actionMenu.measurementControl.distance\":[\"[Ðîšţáñçé ~~~]\"],\"editor.actionMenu.measurementControl.floorPlan\":[\"[Ƒļööŕ þļáñ ~~~]\"],\"editor.actionMenu.measurementControl.linearDimension\":[\"[Ļîñéáŕ ðîɱéñšîöñ ~~~~~]\"],\"editor.actionMenu.measurementControl.measureSelectedlabel\":[\"[Ṁéášûŕé: \",[\"selectedLabel\"],\" ~~~]\"],\"editor.actionMenu.measurementControl.measurementOptions\":[\"[Ṁéášûŕéɱéñţ öþţîöñš ~~~~~~]\"],\"editor.actionMenu.measurementControl.measurementType\":[\"[Ṁéášûŕéɱéñţ ţýþé ~~~~~]\"],\"editor.actionMenu.measurementControl.perimeter\":[\"[Þéŕîɱéţéŕ ~~~]\"],\"editor.actionMenu.measurementControl.radiusDimension\":[\"[Ŕáðîûš ðîɱéñšîöñ ~~~~~]\"],\"editor.actionMenu.measurementControl.smart\":[\"[Šɱáŕţ ~~]\"],\"editor.actionMenu.measurementControl.volume\":[\"[Ṽöļûɱé ~~]\"],\"editor.actionMenu.pointAskButton.pointAndAsk\":[\"[Þöîñţ áñð ášķ ~~~~]\"],\"editor.actionMenu.pointAskButton.pointAndAskC\":[\"[Þöîñţ áñð ášķ (Ç) ~~~~]\"],\"editor.actionMenu.pointAskButton.pointAndAskWorksInThe\":[\"[Þöîñţ áñð ášķ ŵöŕķš îñ ţĥé 3Ð ṽîéŵ ~~~~~~~~]\"],\"editor.actionMenu.structureTools.ceiling\":[\"[Çéîļîñĝ ~~~]\"],\"editor.actionMenu.structureTools.column\":[\"[Çöļûɱñ ~~]\"],\"editor.actionMenu.structureTools.door\":[\"[Ðööŕ ~~]\"],\"editor.actionMenu.structureTools.duct\":[\"[Ðûçţ ~~]\"],\"editor.actionMenu.structureTools.ductFitting\":[\"[Ðûçţ Ƒîţţîñĝ ~~~~]\"],\"editor.actionMenu.structureTools.dwvPipe\":[\"[ÐŴṼ Þîþé ~~~]\"],\"editor.actionMenu.structureTools.elevator\":[\"[Éļéṽáţöŕ ~~~]\"],\"editor.actionMenu.structureTools.fence\":[\"[Ƒéñçé ~~]\"],\"editor.actionMenu.structureTools.gableRoof\":[\"[Ĝáƀļé Ŕööƒ ~~~]\"],\"editor.actionMenu.structureTools.hvacUnit\":[\"[ĤṼÅÇ Ûñîţ ~~~]\"],\"editor.actionMenu.structureTools.lineset\":[\"[Ļîñéšéţ ~~~]\"],\"editor.actionMenu.structureTools.liquidLine\":[\"[Ļîǫûîð Ļîñé ~~~]\"],\"editor.actionMenu.structureTools.pipeFitting\":[\"[Þîþé Ƒîţţîñĝ ~~~~]\"],\"editor.actionMenu.structureTools.register\":[\"[Ŕéĝîšţéŕ ~~~]\"],\"editor.actionMenu.structureTools.shelf\":[\"[Šĥéļƒ ~~]\"],\"editor.actionMenu.structureTools.slab\":[\"[Šļáƀ ~~]\"],\"editor.actionMenu.structureTools.spawnPoint\":[\"[Šþáŵñ Þöîñţ ~~~]\"],\"editor.actionMenu.structureTools.stairs\":[\"[Šţáîŕš ~~]\"],\"editor.actionMenu.structureTools.trap\":[\"[Ţŕáþ ~~]\"],\"editor.actionMenu.structureTools.wall\":[\"[Ŵáļļ ~~]\"],\"editor.actionMenu.structureTools.window\":[\"[Ŵîñðöŵ ~~]\"],\"editor.actionMenu.structureTools.zone\":[\"[Žöñé ~~]\"],\"editor.actionMenu.viewToggles.deleteGuideImage\":[\"[Ðéļéţé ĝûîðé îɱáĝé ~~~~~]\"],\"editor.actionMenu.viewToggles.deleteScan\":[\"[Ðéļéţé šçáñ ~~~]\"],\"editor.actionMenu.viewToggles.guideCount\":[\"[\",[\"count\",\"plural\",{\"one\":[\"#\",\" ĝûîðé îɱáĝé öñ ţĥîš ļéṽéļ\"],\"other\":[\"#\",\" ĝûîðé îɱáĝéš öñ ţĥîš ļéṽéļ\"]}],\" ~~~~~~~~~~~~~]\"],\"editor.actionMenu.viewToggles.guideImageNumber\":[\"[Ĝûîðé îɱáĝé \",[\"number\"],\" ~~~]\"],\"editor.actionMenu.viewToggles.guideImageSettings\":[\"[Ĝûîðé îɱáĝé šéţţîñĝš ~~~~~~]\"],\"editor.actionMenu.viewToggles.guideImages\":[\"[Ĝûîðé îɱáĝéš ~~~~]\"],\"editor.actionMenu.viewToggles.guides\":[\"[Ĝûîðéš ~~]\"],\"editor.actionMenu.viewToggles.guidesHidden\":[\"[Ĝûîðéš: Ĥîððéñ ~~~~]\"],\"editor.actionMenu.viewToggles.guidesVisible\":[\"[Ĝûîðéš: Ṽîšîƀļé ~~~~]\"],\"editor.actionMenu.viewToggles.hideGuideImages\":[\"[Ĥîðé ĝûîðé îɱáĝéš ~~~~~]\"],\"editor.actionMenu.viewToggles.hideReferenceFloor\":[\"[Ĥîðé ŕéƒéŕéñçé ƒļööŕ ~~~~~~]\"],\"editor.actionMenu.viewToggles.hideScans\":[\"[Ĥîðé šçáñš ~~~]\"],\"editor.actionMenu.viewToggles.levelsBelow\":[\"[\",[\"count\"],\" ƀéļöŵ ~~]\"],\"editor.actionMenu.viewToggles.noLowerFloorAvailable\":[\"[Ñö ļöŵéŕ ƒļööŕ áṽáîļáƀļé. ~~~~~~~]\"],\"editor.actionMenu.viewToggles.opacity\":[\"[Öþáçîţý ~~~]\"],\"editor.actionMenu.viewToggles.referenceFloor\":[\"[Ŕéƒéŕéñçé ƒļööŕ ~~~~~]\"],\"editor.actionMenu.viewToggles.referenceFloorSelectedlevelname\":[\"[Ŕéƒéŕéñçé ƒļööŕ: \",[\"selectedLevelName\"],\" ~~~~~]\"],\"editor.actionMenu.viewToggles.referenceFloorSettings\":[\"[Ŕéƒéŕéñçé ƒļööŕ šéţţîñĝš ~~~~~~~]\"],\"editor.actionMenu.viewToggles.referenceSettings\":[\"[Ŕéƒéŕéñçé šéţţîñĝš ~~~~~~]\"],\"editor.actionMenu.viewToggles.references\":[\"[Ŕéƒéŕéñçéš ~~~]\"],\"editor.actionMenu.viewToggles.referencesEmpty\":[\"[Ûþļöáð ĜĻƁ ɱéšĥéš áš šçáñ ŕéƒéŕéñçéš öŕ ƀļûéþŕîñţ îɱáĝéš áš ĝûîðé ŕéƒéŕéñçéš. ~~~~~~~~~~~~~~~~~~~~]\"],\"editor.actionMenu.viewToggles.referencesHidden\":[\"[Ŕéƒéŕéñçéš: Ĥîððéñ ~~~~~]\"],\"editor.actionMenu.viewToggles.referencesVisible\":[\"[Ŕéƒéŕéñçéš: Ṽîšîƀļé ~~~~~~]\"],\"editor.actionMenu.viewToggles.riserDiagram\":[\"[Ŕîšéŕ ðîáĝŕáɱ ~~~~]\"],\"editor.actionMenu.viewToggles.scanCount\":[\"[\",[\"count\",\"plural\",{\"one\":[\"#\",\" šçáñ öñ ţĥîš ļéṽéļ\"],\"other\":[\"#\",\" šçáñš öñ ţĥîš ļéṽéļ\"]}],\" ~~~~~~~~~~]\"],\"editor.actionMenu.viewToggles.scanNumber\":[\"[Šçáñ \",[\"number\"],\" ~~]\"],\"editor.actionMenu.viewToggles.scanSettings\":[\"[Šçáñ šéţţîñĝš ~~~~]\"],\"editor.actionMenu.viewToggles.scans\":[\"[Šçáñš ~~]\"],\"editor.actionMenu.viewToggles.scansHidden\":[\"[Šçáñš: Ĥîððéñ ~~~~]\"],\"editor.actionMenu.viewToggles.scansVisible\":[\"[Šçáñš: Ṽîšîƀļé ~~~~]\"],\"editor.actionMenu.viewToggles.showGuideImages\":[\"[Šĥöŵ ĝûîðé îɱáĝéš ~~~~~]\"],\"editor.actionMenu.viewToggles.showReferenceFloor\":[\"[Šĥöŵ ŕéƒéŕéñçé ƒļööŕ ~~~~~~]\"],\"editor.actionMenu.viewToggles.showScans\":[\"[Šĥöŵ šçáñš ~~~]\"],\"editor.actionMenu.viewToggles.uploadScanOrGuideImage\":[\"[Ûþļöáð šçáñ öŕ ĝûîðé îɱáĝé ~~~~~~~]\"],\"editor.backToHome\":[\"[Ɓáçķ ţö ĥöɱé ~~~]\"],\"editor.buildPanel.advanced\":[\"[Åðṽáñçéð ~~~]\"],\"editor.buildPanel.rooms.hint\":[\"[ŵáļļš · ƒļööŕ · çéîļîñĝ ~~~~~~]\"],\"editor.buildPanel.rooms.idle\":[\"[Þîçķ á šĥáþé ţö šţáŕţ. Éṽéŕý ŕööɱ ƀŕîñĝš îţš öŵñ ŵáļļš, ƒļööŕ áñð çéîļîñĝ. ~~~~~~~~~~~~~~~~~~]\"],\"editor.buildPanel.rooms.polygon.caption\":[\"[\",[\"lead\"],\" ţĥéñ ţĥé ƒîŕšţ öñé áĝáîñ ţö çļöšé. Ƒöŕ Ļ-šĥáþéš áñð áñĝļéð ŕööɱš. ~~~~~~~~~~~~~~~~]\"],\"editor.buildPanel.rooms.polygon.label\":[\"[Þöļýĝöñ ~~~]\"],\"editor.buildPanel.rooms.polygon.lead\":[\"[Çļîçķ éáçĥ çöŕñéŕ, ~~~~~]\"],\"editor.buildPanel.rooms.polygon.title\":[\"[Þöļýĝöñ ŕööɱ ~~~~]\"],\"editor.buildPanel.rooms.rectangle.caption\":[\"[\",[\"lead\"],\" öñ ţĥé ĝŕîð. Ŵáļļš, ƒļööŕ áñð çéîļîñĝ áŕé çŕéáţéð ţöĝéţĥéŕ. ~~~~~~~~~~~~~~~]\"],\"editor.buildPanel.rooms.rectangle.label\":[\"[Ŕéçţáñĝļé ~~~]\"],\"editor.buildPanel.rooms.rectangle.lead\":[\"[Çļîçķ ţŵö çöŕñéŕš ~~~~~]\"],\"editor.buildPanel.rooms.rectangle.title\":[\"[Ŕéçţáñĝļé ŕööɱ ~~~~]\"],\"editor.buildPanel.rooms.title\":[\"[Ŕööɱš ~~]\"],\"editor.buildPanel.rooms.walls.caption\":[\"[\",[\"lead\"],\" Çļöšé á ļööþ áñð îţ ƀéçöɱéš á ŕööɱ; ļéáṽé îţ öþéñ ƒöŕ þáŕţîţîöñš. ~~~~~~~~~~~~~~~~]\"],\"editor.buildPanel.rooms.walls.label\":[\"[Ŵáļļš ~~]\"],\"editor.buildPanel.rooms.walls.lead\":[\"[Ðŕáŵ öñé ŵáļļ áţ á ţîɱé. ~~~~~~]\"],\"editor.buildPanel.rooms.walls.title\":[\"[Ŵáļļš ~~]\"],\"editor.cameraControlsHint\":[\"[Çáɱéŕá çöñţŕöļš ĥîñţ ~~~~~~]\"],\"editor.cameraHint.pan\":[\"[Þáñ ~]\"],\"editor.cameraHint.rotate\":[\"[Ŕöţáţé ~~]\"],\"editor.cameraHint.zoom\":[\"[Žööɱ ~~]\"],\"editor.dismiss\":[\"[Ðîšɱîšš ~~~]\"],\"editor.dismissCameraControlsHint\":[\"[Ðîšɱîšš çáɱéŕá çöñţŕöļš ĥîñţ ~~~~~~~~]\"],\"editor.expandSidebar\":[\"[Éẋþáñð šîðéƀáŕ ~~~~]\"],\"editor.floatingActionMenu.axis\":[\"[Åẋîš ~~]\"],\"editor.floatingActionMenu.axis2\":[\"[⌥ áẋîš ~~]\"],\"editor.floatingActionMenu.noEquipment\":[\"[⚠ ñö éǫûîþɱéñţ ~~~~]\"],\"editor.floatingActionMenu.rTRotate\":[\"[Ŕ/Ţ ŕöţáţé ~~~]\"],\"editor.floatingActionMenu.registerCount\":[\"[\",[\"count\",\"plural\",{\"one\":[\"#\",\" ŕéĝîšţéŕ\"],\"other\":[\"#\",\" ŕéĝîšţéŕš\"]}],\" ~~~~~~]\"],\"editor.floatingActionMenu.runCount\":[\"[\",[\"count\",\"plural\",{\"one\":[\"#\",\" ŕûñ\"],\"other\":[\"#\",\" ŕûñš\"]}],\" ~~~]\"],\"editor.floatingActionMenu.system\":[\"[Šýšţéɱ ~~]\"],\"editor.helpers.buildingHelper.cancel\":[\"[Çáñçéļ ~~]\"],\"editor.helpers.buildingHelper.placeBuilding\":[\"[Þļáçé ƀûîļðîñĝ ~~~~]\"],\"editor.helpers.buildingHelper.rotate\":[\"[Ŕöţáţé ~~]\"],\"editor.helpers.contextualHelperPanel.cancelPlacement\":[\"[Çáñçéļ þļáçéɱéñţ ~~~~~]\"],\"editor.helpers.contextualHelperPanel.continuationClickOrPressCTo\":[\"[Çöñţîñûáţîöñ — çļîçķ öŕ þŕéšš Ç ţö çýçļé ~~~~~~~~~~]\"],\"editor.helpers.contextualHelperPanel.continuationLabel\":[\"[Çöñţîñûáţîöñ: \",[\"label\"],\" ~~~~]\"],\"editor.helpers.contextualHelperPanel.dragToDrawFence\":[\"[Ðŕáĝ ţö ðŕáŵ ƒéñçé ~~~~~]\"],\"editor.helpers.contextualHelperPanel.eraseScope\":[\"[Éŕášé: \",[\"scope\"],\" ~~]\"],\"editor.helpers.contextualHelperPanel.eraseScopeClickOrPressShift\":[\"[Éŕášé šçöþé — çļîçķ öŕ þŕéšš Šĥîƒţ ţö çýçļé ~~~~~~~~~~~]\"],\"editor.helpers.contextualHelperPanel.eraseScopeLabel\":[\"[Éŕášé šçöþé: \",[\"scope\"],\" ~~~]\"],\"editor.helpers.contextualHelperPanel.fenceTypeClickOrPressT\":[\"[Ƒéñçé ţýþé — çļîçķ öŕ þŕéšš Ţ ţö šŵîţçĥ ƀéţŵééñ šţŕáîĝĥţ, çûŕṽéð áñð ƒŕééĥáñð ~~~~~~~~~~~~~~~~~~~]\"],\"editor.helpers.contextualHelperPanel.fewerShortcuts\":[\"[Ƒéŵéŕ šĥöŕţçûţš ~~~~~]\"],\"editor.helpers.contextualHelperPanel.finishCurveOrDoubleClick\":[\"[Ƒîñîšĥ çûŕṽé (öŕ ðöûƀļé-çļîçķ) ~~~~~~~~]\"],\"editor.helpers.contextualHelperPanel.gridLength\":[\"[Ĝŕîð: \",[\"length\"],\" ~~]\"],\"editor.helpers.contextualHelperPanel.gridStepClickOrTapCtrl\":[\"[Ĝŕîð šţéþ — çļîçķ öŕ ţáþ Çţŕļ ţö çýçļé ~~~~~~~~~]\"],\"editor.helpers.contextualHelperPanel.gridStepLength\":[\"[Ĝŕîð šţéþ: \",[\"length\"],\" ~~~]\"],\"editor.helpers.contextualHelperPanel.hoverAPaintedSurfaceToErase\":[\"[Ĥöṽéŕ á þáîñţéð šûŕƒáçé ţö éŕášé ~~~~~~~~~]\"],\"editor.helpers.contextualHelperPanel.hoverASurfaceToPaint\":[\"[Ĥöṽéŕ á šûŕƒáçé ţö þáîñţ ~~~~~~]\"],\"editor.helpers.contextualHelperPanel.hoverASurfaceToPickIts\":[\"[Ĥöṽéŕ á šûŕƒáçé ţö þîçķ îţš ɱáţéŕîáļ ~~~~~~~~~]\"],\"editor.helpers.contextualHelperPanel.moreShortcuts\":[\"[Ṁöŕé šĥöŕţçûţš ~~~~]\"],\"editor.helpers.contextualHelperPanel.paintScope\":[\"[Þáîñţ: \",[\"scope\"],\" ~~]\"],\"editor.helpers.contextualHelperPanel.paintScopeClickOrPressShift\":[\"[Þáîñţ šçöþé — çļîçķ öŕ þŕéšš Šĥîƒţ ţö çýçļé ~~~~~~~~~~~]\"],\"editor.helpers.contextualHelperPanel.paintScopeLabel\":[\"[Þáîñţ šçöþé: \",[\"scope\"],\" ~~~]\"],\"editor.helpers.contextualHelperPanel.pickScope\":[\"[Þîçķ: \",[\"scope\"],\" ~~]\"],\"editor.helpers.contextualHelperPanel.placeGateOnAFence\":[\"[Þļáçé ĝáţé öñ á ƒéñçé ~~~~~~]\"],\"editor.helpers.contextualHelperPanel.placePassageOnAFence\":[\"[Þļáçé þáššáĝé öñ á ƒéñçé ~~~~~~]\"],\"editor.helpers.contextualHelperPanel.selectAMaterialToPaint\":[\"[Šéļéçţ á ɱáţéŕîáļ ţö þáîñţ ~~~~~~~]\"],\"editor.helpers.contextualHelperPanel.snappingAngles\":[\"[Šñáþþîñĝ: Åñĝļéš ~~~~~]\"],\"editor.helpers.contextualHelperPanel.snappingGrid\":[\"[Šñáþþîñĝ: Ĝŕîð ~~~~]\"],\"editor.helpers.contextualHelperPanel.snappingLines\":[\"[Šñáþþîñĝ: Ļîñéš ~~~~]\"],\"editor.helpers.contextualHelperPanel.snappingModeClickOrPressShift\":[\"[Šñáþþîñĝ ɱöðé — çļîçķ öŕ þŕéšš Šĥîƒţ ţö çýçļé ~~~~~~~~~~~]\"],\"editor.helpers.contextualHelperPanel.snappingOff\":[\"[Šñáþþîñĝ: Öƒƒ ~~~~]\"],\"editor.helpers.contextualHelperPanel.straightContinuationIsUnavailableForCurved\":[\"[Šţŕáîĝĥţ çöñţîñûáţîöñ îš ûñáṽáîļáƀļé ƒöŕ çûŕṽéð öŕ ƒŕééĥáñð ƒéñçéš ~~~~~~~~~~~~~~~~~~]\"],\"editor.helpers.contextualHelperPanel.straightContinuous\":[\"[Šţŕáîĝĥţ: Çöñţîñûöûš ~~~~~~]\"],\"editor.helpers.contextualHelperPanel.straightFenceContinuationClickOrPress\":[\"[Šţŕáîĝĥţ ƒéñçé çöñţîñûáţîöñ — çļîçķ öŕ þŕéšš Ç ţö ţöĝĝļé ~~~~~~~~~~~~~~]\"],\"editor.helpers.contextualHelperPanel.straightSingle\":[\"[Šţŕáîĝĥţ: Šîñĝļé ~~~~~]\"],\"editor.helpers.helperManager.addPoint\":[\"[Åðð þöîñţ ~~~]\"],\"editor.helpers.helperManager.addPointClickTheFirstTo\":[\"[Åðð þöîñţ · çļîçķ ţĥé ƒîŕšţ ţö çļöšé ~~~~~~~~~]\"],\"editor.helpers.helperManager.brushSize\":[\"[Ɓŕûšĥ šîžé ~~~]\"],\"editor.helpers.helperManager.cancel\":[\"[Çáñçéļ ~~]\"],\"editor.helpers.helperManager.cancelPicking\":[\"[Çáñçéļ þîçķîñĝ ~~~~]\"],\"editor.helpers.helperManager.cancelStroke\":[\"[Çáñçéļ šţŕöķé ~~~~]\"],\"editor.helpers.helperManager.done\":[\"[Ðöñé ~~]\"],\"editor.helpers.helperManager.drawTheMezzanine\":[\"[Ðŕáŵ ţĥé ɱéžžáñîñé ~~~~~]\"],\"editor.helpers.helperManager.drawTheOpening\":[\"[Ðŕáŵ ţĥé öþéñîñĝ ~~~~~]\"],\"editor.helpers.helperManager.drawTheTerrace\":[\"[Ðŕáŵ ţĥé ţéŕŕáçé ~~~~~]\"],\"editor.helpers.helperManager.exitSmartMeasure\":[\"[Éẋîţ šɱáŕţ ɱéášûŕé ~~~~~]\"],\"editor.helpers.helperManager.finish\":[\"[Ƒîñîšĥ ~~]\"],\"editor.helpers.helperManager.finishAtTheEdge\":[\"[Ƒîñîšĥ áţ ţĥé éðĝé ~~~~~]\"],\"editor.helpers.helperManager.freeMove\":[\"[Ƒŕéé ɱöṽé ~~~]\"],\"editor.helpers.helperManager.freeMoveSlideDoorsAndWindows\":[\"[Ƒŕéé ɱöṽé · šļîðé ðööŕš áñð ŵîñðöŵš ~~~~~~~~~]\"],\"editor.helpers.helperManager.holdToPickAMaterial\":[\"[Ĥöļð ţö þîçķ á ɱáţéŕîáļ ~~~~~~]\"],\"editor.helpers.helperManager.inspectSurfaceDimensions\":[\"[Îñšþéçţ šûŕƒáçé ðîɱéñšîöñš ~~~~~~~~]\"],\"editor.helpers.helperManager.paintWithThisMaterial\":[\"[Þáîñţ ŵîţĥ ţĥîš ɱáţéŕîáļ ~~~~~~~]\"],\"editor.helpers.helperManager.pickTargetHeight\":[\"[Þîçķ ţáŕĝéţ ĥéîĝĥţ ~~~~~]\"],\"editor.helpers.helperManager.pinMeasurementLens\":[\"[Þîñ ɱéášûŕéɱéñţ ļéñš ~~~~~~]\"],\"editor.helpers.helperManager.place\":[\"[Þļáçé ~~]\"],\"editor.helpers.helperManager.placeInsideTheRoom\":[\"[Þļáçé îñšîðé ţĥé ŕööɱ ~~~~~~]\"],\"editor.helpers.helperManager.pressAnywhereDragToTheOpposite\":[\"[Þŕéšš áñýŵĥéŕé, ðŕáĝ ţö ţĥé öþþöšîţé çöŕñéŕ ~~~~~~~~~~~]\"],\"editor.helpers.helperManager.raiseOrLower\":[\"[Ŕáîšé öŕ ļöŵéŕ ~~~~]\"],\"editor.helpers.helperManager.removeAPaintedPartOrReset\":[\"[Ŕéɱöṽé á þáîñţéð þáŕţ, öŕ ŕéšéţ á šûŕƒáçé ~~~~~~~~~~]\"],\"editor.helpers.helperManager.removeLastPoint\":[\"[Ŕéɱöṽé ļášţ þöîñţ ~~~~~]\"],\"editor.helpers.helperManager.resize\":[\"[Ŕéšîžé ~~]\"],\"editor.helpers.helperManager.rotate45\":[\"[Ŕöţáţé ±45° ~~]\"],\"editor.helpers.helperManager.rotateTheSelection45\":[\"[Ŕöţáţé ţĥé šéļéçţîöñ ±45° ~~~~~~]\"],\"editor.helpers.helperManager.setOneCornerThenTheOpposite\":[\"[Šéţ öñé çöŕñéŕ, ţĥéñ ţĥé öþþöšîţé ~~~~~~~~~]\"],\"editor.helpers.itemHelper.cancel\":[\"[Çáñçéļ ~~]\"],\"editor.helpers.itemHelper.forcePlace\":[\"[Ƒöŕçé þļáçé ~~~]\"],\"editor.helpers.itemHelper.place\":[\"[Þļáçé ~~]\"],\"editor.helpers.itemHelper.rotate\":[\"[Ŕöţáţé ~~]\"],\"editor.helpers.registeredToolHelper.guidedConstraintsBypassed\":[\"[Ĝûîðéð çöñšţŕáîñţš ƀýþáššéð ~~~~~~~~]\"],\"editor.lib.contextualHelp.addOrRemoveObjectsFromThe\":[\"[Åðð öŕ ŕéɱöṽé öƀĵéçţš ƒŕöɱ ţĥé šéļéçţîöñ ~~~~~~~~~~~]\"],\"editor.lib.contextualHelp.adjustOneSideSCornerRadius\":[\"[Åðĵûšţ öñé šîðé’š çöŕñéŕ ŕáðîûš ~~~~~~~~]\"],\"editor.lib.contextualHelp.clearTheSelectionOrClickOutside\":[\"[Çļéáŕ ţĥé šéļéçţîöñ (öŕ çļîçķ öûţšîðé) ~~~~~~~~~~]\"],\"editor.lib.contextualHelp.clickAHandleDotToShow\":[\"[Çļîçķ á ĥáñðļé ðöţ ţö šĥöŵ ɱöṽé áŕŕöŵš ~~~~~~~~~~]\"],\"editor.lib.contextualHelp.clickOrDragTheSelectionTo\":[\"[Çļîçķ öŕ ðŕáĝ ţĥé šéļéçţîöñ ţö ɱöṽé îţ áš öñé ~~~~~~~~~~~]\"],\"editor.lib.contextualHelp.clickTheHandleDotToShow\":[\"[Çļîçķ ţĥé ĥáñðļé ðöţ ţö šĥöŵ ɱöṽé + ŕöţáţé ĥáñðļéš ~~~~~~~~~~~~]\"],\"editor.lib.contextualHelp.detachTheJointWhileDraggingAn\":[\"[Ðéţáçĥ ţĥé ĵöîñţ ŵĥîļé ðŕáĝĝîñĝ áñ áŕŕöŵ ~~~~~~~~~~~]\"],\"editor.lib.contextualHelp.dragLeftOrRightToRotate\":[\"[Ðŕáĝ ļéƒţ öŕ ŕîĝĥţ ţö ŕöţáţé šéļéçţéð öƀĵéçţ ~~~~~~~~~~~~]\"],\"editor.lib.contextualHelp.dragSelectedMovableObject\":[\"[Ðŕáĝ šéļéçţéð ɱöṽáƀļé öƀĵéçţ ~~~~~~~~]\"],\"editor.lib.contextualHelp.groupSelectionSessionOnly\":[\"[Ĝŕöûþ šéļéçţîöñ (šéššîöñ öñļý) ~~~~~~~~]\"],\"editor.lib.contextualHelp.holdToRotateFreely\":[\"[Ĥöļð ţö ŕöţáţé ƒŕééļý ~~~~~~]\"],\"editor.lib.contextualHelp.rotate45\":[\"[Ŕöţáţé ±45° ~~]\"],\"editor.lib.contextualHelp.rotateTheSelection45\":[\"[Ŕöţáţé ţĥé šéļéçţîöñ ±45° ~~~~~~]\"],\"editor.lib.contextualHelp.rotatingFreely\":[\"[Ŕöţáţîñĝ ƒŕééļý (ñö áñĝļé šţéþ) ~~~~~~~~]\"],\"editor.lib.contextualHelp.switchTheRotationAxisYX\":[\"[Šŵîţçĥ ţĥé ŕöţáţîöñ áẋîš (Ý → Ẋ → Ž) ~~~~~~~~]\"],\"editor.lib.contextualHelp.ungroupSessionSelection\":[\"[Ûñĝŕöûþ šéššîöñ šéļéçţîöñ ~~~~~~~]\"],\"editor.lib.continuation.continuous\":[\"[Çöñţîñûöûš ~~~]\"],\"editor.lib.continuation.continuousCanopy\":[\"[Çöñţîñûöûš çáñöþý ~~~~~]\"],\"editor.lib.continuation.continuousRun\":[\"[Çöñţîñûöûš ŕûñ ~~~~]\"],\"editor.lib.continuation.curvedFence\":[\"[Çûŕṽéð ƒéñçé ~~~~]\"],\"editor.lib.continuation.freehandFence\":[\"[Ƒŕééĥáñð ƒéñçé ~~~~]\"],\"editor.lib.continuation.placeMultiple\":[\"[Þļáçé ɱûļţîþļé ~~~~]\"],\"editor.lib.continuation.placeOnce\":[\"[Þļáçé öñçé ~~~]\"],\"editor.lib.continuation.polygonRoom\":[\"[Þöļýĝöñ ŕööɱ ~~~~]\"],\"editor.lib.continuation.rectangleRoom\":[\"[Ŕéçţáñĝļé ŕööɱ ~~~~]\"],\"editor.lib.continuation.singleCabinet\":[\"[Šîñĝļé çáƀîñéţ ~~~~]\"],\"editor.lib.continuation.singleCanopy\":[\"[Šîñĝļé çáñöþý ~~~~]\"],\"editor.lib.continuation.singleFence\":[\"[Šîñĝļé ƒéñçé ~~~~]\"],\"editor.lib.continuation.walls\":[\"[Ŵáļļš ~~]\"],\"editor.lib.hudTitle.cutOpening\":[\"[Çûţ öþéñîñĝ ~~~]\"],\"editor.lib.hudTitle.divideRoom\":[\"[Ðîṽîðé ŕööɱ ~~~]\"],\"editor.lib.hudTitle.editKind\":[\"[Éðîţ \",[\"kind\"],\" ~~]\"],\"editor.lib.hudTitle.erase\":[\"[Éŕášé ~~]\"],\"editor.lib.hudTitle.levelTerrain\":[\"[Ļéṽéļ ţéŕŕáîñ ~~~~]\"],\"editor.lib.hudTitle.lowerTerrain\":[\"[Ļöŵéŕ ţéŕŕáîñ ~~~~]\"],\"editor.lib.hudTitle.mezzanine\":[\"[Ṁéžžáñîñé ~~~]\"],\"editor.lib.hudTitle.moveKind\":[\"[Ṁöṽé \",[\"kind\"],\" ~~]\"],\"editor.lib.hudTitle.moveRoom\":[\"[Ṁöṽé ŕööɱ ~~~]\"],\"editor.lib.hudTitle.moveSelection\":[\"[Ṁöṽé šéļéçţîöñ ~~~~]\"],\"editor.lib.hudTitle.paint\":[\"[Þáîñţ ~~]\"],\"editor.lib.hudTitle.paintARectangle\":[\"[Þáîñţ á ŕéçţáñĝļé ~~~~~]\"],\"editor.lib.hudTitle.paintAShape\":[\"[Þáîñţ á šĥáþé ~~~~]\"],\"editor.lib.hudTitle.pickMaterial\":[\"[Þîçķ ɱáţéŕîáļ ~~~~]\"],\"editor.lib.hudTitle.raiseTerrain\":[\"[Ŕáîšé ţéŕŕáîñ ~~~~]\"],\"editor.lib.hudTitle.resize\":[\"[Ŕéšîžé ~~]\"],\"editor.lib.hudTitle.rotate\":[\"[Ŕöţáţé ~~]\"],\"editor.lib.hudTitle.select\":[\"[Šéļéçţ ~~]\"],\"editor.lib.hudTitle.smartMeasure\":[\"[Šɱáŕţ ɱéášûŕé ~~~~]\"],\"editor.lib.hudTitle.smoothTerrain\":[\"[Šɱööţĥ ţéŕŕáîñ ~~~~]\"],\"editor.lib.hudTitle.splitKind\":[\"[Šþļîţ \",[\"kind\"],\" ~~]\"],\"editor.lib.hudTitle.terrace\":[\"[Ţéŕŕáçé ~~~]\"],\"editor.lib.wallDrawVariant.polygonRoom\":[\"[Þöļýĝöñ ŕööɱ ~~~~]\"],\"editor.lib.wallDrawVariant.rectangleRoom\":[\"[Ŕéçţáñĝļé ŕööɱ ~~~~]\"],\"editor.lib.wallDrawVariant.walls\":[\"[Ŵáļļš ~~]\"],\"editor.reloadEditor\":[\"[Ŕéļöáð éðîţöŕ ~~~~]\"],\"editor.theEditorSceneFailedToRender\":[\"[Ţĥé éðîţöŕ šçéñé ƒáîļéð ţö ŕéñðéŕ ~~~~~~~~~]\"],\"editor.toolHint.aCurtainWallTakesNoCorner.1qxjv5i\":[\"[Å çûŕţáîñ ŵáļļ ţáķéš ñö çöŕñéŕ ŵîñðöŵ ~~~~~~~~~~]\"],\"editor.toolHint.aCurvedWallTakesNoCorner.1vdnaw5\":[\"[Å çûŕṽéð ŵáļļ ţáķéš ñö çöŕñéŕ ŵîñðöŵ ~~~~~~~~~]\"],\"editor.toolHint.addACornerClickTheFirst.o4r67t\":[\"[Åðð á çöŕñéŕ · çļîçķ ţĥé ƒîŕšţ ţö çļöšé ~~~~~~~~~]\"],\"editor.toolHint.anotherOpeningIsInTheWay.11l9dd0\":[\"[Åñöţĥéŕ öþéñîñĝ îš îñ ţĥé ŵáý áţ ţĥé çöŕñéŕ ~~~~~~~~~~~]\"],\"editor.toolHint.autoHangers.10554ka\":[\"[Åûţö ĥáñĝéŕš ~~~~]\"],\"editor.toolHint.autoHangersClickOrPressH.rwa3ka\":[\"[Åûţö ĥáñĝéŕš - çļîçķ öŕ þŕéšš Ĥ ţö ţöĝĝļé ~~~~~~~~~~]\"],\"editor.toolHint.autoHangersOff.7yx01x\":[\"[Åûţö ĥáñĝéŕš: Öƒƒ ~~~~~]\"],\"editor.toolHint.autoHangersOn.10b1umh\":[\"[Åûţö ĥáñĝéŕš: Öñ ~~~~]\"],\"editor.toolHint.bypassSnapping.w5lmdv\":[\"[Ɓýþášš šñáþþîñĝ ~~~~~]\"],\"editor.toolHint.cancel.ew9em3\":[\"[Çáñçéļ ~~]\"],\"editor.toolHint.cancelMove.lvp31c\":[\"[Çáñçéļ ɱöṽé ~~~]\"],\"editor.toolHint.cancelRunExit.zqjf3h\":[\"[Çáñçéļ ŕûñ / éẋîţ ~~~~]\"],\"editor.toolHint.cancelStartPoint.1xbq2lh\":[\"[Çáñçéļ šţáŕţ þöîñţ ~~~~~]\"],\"editor.toolHint.cornerWindow.1avkzpo\":[\"[Çöŕñéŕ ŵîñðöŵ ~~~~]\"],\"editor.toolHint.cuts.1y0axps\":[\"[Çûţš ~~]\"],\"editor.toolHint.cutsValue.ouzhvb\":[\"[Çûţš: \",[\"value\"],\" ~~]\"],\"editor.toolHint.cutsValueEven.1ngsz3\":[\"[Çûţš: \",[\"value\"],\", éṽéñ ~~~]\"],\"editor.toolHint.cycleMonoGableButterfly.1poga3m\":[\"[Çýçļé ɱöñö / ĝáƀļé / ƀûţţéŕƒļý ~~~~~~~]\"],\"editor.toolHint.cycleSnappingMode.1ct0gn6\":[\"[Çýçļé šñáþþîñĝ ɱöðé ~~~~~~]\"],\"editor.toolHint.doorStyleClickOrPressL.33pe65\":[\"[Ðööŕ šţýļé — çļîçķ öŕ þŕéšš Ļ ţö çýçļé ~~~~~~~~~]\"],\"editor.toolHint.doorTypeClickOrPressO.1hhh8gt\":[\"[Ðööŕ ţýþé — çļîçķ öŕ þŕéšš Ö ţö çýçļé ~~~~~~~~~]\"],\"editor.toolHint.dropDownspoutFromOutlet.1k4h1m4\":[\"[Ðŕöþ ðöŵñšþöûţ ƒŕöɱ öûţļéţ ~~~~~~~]\"],\"editor.toolHint.ductDiameterDownUp.1wdz5vq\":[\"[Ðûçţ ðîáɱéţéŕ ðöŵñ / ûþ ~~~~~~]\"],\"editor.toolHint.endRunCancel.59dh2w\":[\"[Éñð ŕûñ / çáñçéļ ~~~~]\"],\"editor.toolHint.exit.engmg5\":[\"[Éẋîţ ~~]\"],\"editor.toolHint.exitDrawing.9noxyb\":[\"[Éẋîţ ðŕáŵîñĝ ~~~~]\"],\"editor.toolHint.finishAndContinue.1gpfsks\":[\"[Ƒîñîšĥ áñð çöñţîñûé ~~~~~~]\"],\"editor.toolHint.finishCeiling.1c1lfel\":[\"[Ƒîñîšĥ çéîļîñĝ ~~~~]\"],\"editor.toolHint.finishGridAxis.1wvrfhr\":[\"[Ƒîñîšĥ ĝŕîð áẋîš ~~~~~]\"],\"editor.toolHint.finishMeasurement.1e4gv16\":[\"[Ƒîñîšĥ ɱéášûŕéɱéñţ ~~~~~~]\"],\"editor.toolHint.finishMultiPointWitnesses.8wzskz\":[\"[Ƒîñîšĥ ɱûļţî-þöîñţ ŵîţñéššéš ~~~~~~~~]\"],\"editor.toolHint.finishSlab.xmnm8e\":[\"[Ƒîñîšĥ šļáƀ ~~~]\"],\"editor.toolHint.flipSide.172xku9\":[\"[Ƒļîþ šîðé ~~~]\"],\"editor.toolHint.followTraceALineset.mgquwe\":[\"[Ƒöļļöŵ: ţŕáçé á ļîñéšéţ ~~~~~~]\"],\"editor.toolHint.forcePlace.1hq1nr\":[\"[Ƒöŕçé þļáçé ~~~]\"],\"editor.toolHint.freePlacement.1nztdac\":[\"[Ƒŕéé þļáçéɱéñţ ~~~~]\"],\"editor.toolHint.goVerticalClickToPlace.dg8g6m\":[\"[Ĝö ṽéŕţîçáļ ↕, çļîçķ ţö þļáçé ~~~~~~~]\"],\"editor.toolHint.highlightOutlet.65hoq8\":[\"[Ĥîĝĥļîĝĥţ öûţļéţ ~~~~~]\"],\"editor.toolHint.joinAsACornerWindow.jvdp4j\":[\"[Ĵöîñ áš á çöŕñéŕ ŵîñðöŵ ~~~~~~]\"],\"editor.toolHint.key.altDrag.ai3wn9\":[\"[Åļţ + ðŕáĝ ~~~]\"],\"editor.toolHint.key.backspace.qy6qx8\":[\"[Ɓáçķšþáçé ~~~]\"],\"editor.toolHint.key.click.m8sun\":[\"[Çļîçķ ~~]\"],\"editor.toolHint.key.clickAgain.190ws9j\":[\"[Çļîçķ áĝáîñ ~~~]\"],\"editor.toolHint.key.command.1j2mkia\":[\"[Çöɱɱáñð ~~~]\"],\"editor.toolHint.key.control.10fbl8e\":[\"[Çöñţŕöļ ~~~]\"],\"editor.toolHint.key.delete.oay2cq\":[\"[Ðéļéţé ~~]\"],\"editor.toolHint.key.doubleClick.vlma6o\":[\"[Ðöûƀļé çļîçķ ~~~~]\"],\"editor.toolHint.key.drag.8pwtpf\":[\"[Ðŕáĝ ~~]\"],\"editor.toolHint.key.enter.1ctpui5\":[\"[Éñţéŕ ~~]\"],\"editor.toolHint.key.hover.6xw79p\":[\"[Ĥöṽéŕ ~~]\"],\"editor.toolHint.key.hoverADuctEnd.19axr3b\":[\"[Ĥöṽéŕ á ðûçţ éñð ~~~~]\"],\"editor.toolHint.key.hoverAPipeEnd.1jbum5f\":[\"[Ĥöṽéŕ á þîþé éñð ~~~~]\"],\"editor.toolHint.key.hoverGutter.1dwcsno\":[\"[Ĥöṽéŕ ĝûţţéŕ ~~~~]\"],\"editor.toolHint.key.leftClick.s4gwfc\":[\"[Ļéƒţ çļîçķ ~~~]\"],\"editor.toolHint.key.middleClick.1jbaan4\":[\"[Ṁîððļé çļîçķ ~~~~]\"],\"editor.toolHint.key.rShiftR.13bnobh\":[\"[Ŕ / Šĥîƒţ+Ŕ ~~~]\"],\"editor.toolHint.key.rightClick.1ovld0h\":[\"[Ŕîĝĥţ çļîçķ ~~~]\"],\"editor.toolHint.key.scroll.ai6wr0\":[\"[Šçŕöļļ ~~]\"],\"editor.toolHint.key.scrollWheel.18j0ix7\":[\"[Šçŕöļļ ŵĥééļ ~~~~]\"],\"editor.toolHint.key.space.1hrh82t\":[\"[Šþáçé ~~]\"],\"editor.toolHint.key.tab.1xsal0s\":[\"[Ţáƀ ~]\"],\"editor.toolHint.mountFloorCeilingWall.32dxpv\":[\"[Ṁöûñţ: ƒļööŕ / çéîļîñĝ / ŵáļļ ~~~~~~~]\"],\"editor.toolHint.noRoomForTheMatchingWindow.1755948\":[\"[Ñö ŕööɱ ƒöŕ ţĥé ɱáţçĥîñĝ ŵîñðöŵ öñ ţĥé öţĥéŕ ŵáļļ ~~~~~~~~~~~~]\"],\"editor.toolHint.noWallMeetsHere.19n99yc\":[\"[Ñö ŵáļļ ɱééţš ĥéŕé ~~~~~]\"],\"editor.toolHint.numberOfCutsScrollOrClick.1kqe84b\":[\"[Ñûɱƀéŕ öƒ çûţš — šçŕöļļ öŕ çļîçķ ţö çĥáñĝé ~~~~~~~~~~]\"],\"editor.toolHint.pickWitnessPoint.k3hgh1\":[\"[Þîçķ ŵîţñéšš þöîñţ ~~~~~]\"],\"editor.toolHint.pipeSizeDownUp.wp04og\":[\"[Þîþé šîžé ðöŵñ / ûþ ~~~~~]\"],\"editor.toolHint.placeAndContinue.qfwkrq\":[\"[Þļáçé áñð çöñţîñûé ~~~~~]\"],\"editor.toolHint.placeBlock.1aylwrx\":[\"[Þļáçé ƀļöçķ ~~~]\"],\"editor.toolHint.placeBoxVentOnRoof.kf88e5\":[\"[Þļáçé ƀöẋ ṽéñţ öñ ŕööƒ ~~~~~~]\"],\"editor.toolHint.placeCabinet.b0ouyk\":[\"[Þļáçé çáƀîñéţ ~~~~]\"],\"editor.toolHint.placeCanopyOrSetTheNext.12l7zf8\":[\"[Þļáçé çáñöþý öŕ šéţ ţĥé ñéẋţ ŕûñ þöîñţ ~~~~~~~~~~]\"],\"editor.toolHint.placeChimneyOnRoof.19dbqu\":[\"[Þļáçé çĥîɱñéý öñ ŕööƒ ~~~~~~]\"],\"editor.toolHint.placeColumn.1w2vq86\":[\"[Þļáçé çöļûɱñ ~~~~]\"],\"editor.toolHint.placeCupolaOnRoof.ofx3bn\":[\"[Þļáçé çûþöļá öñ ŕööƒ ~~~~~~]\"],\"editor.toolHint.placeDimensionLineWhenNeeded.bjw2cj\":[\"[Þļáçé ðîɱéñšîöñ ļîñé ŵĥéñ ñééðéð ~~~~~~~~~]\"],\"editor.toolHint.placeDoorOnWall.1jwadf\":[\"[Þļáçé ðööŕ öñ ŵáļļ ~~~~~]\"],\"editor.toolHint.placeDormerOnRoof.1w518a6\":[\"[Þļáçé ðöŕɱéŕ öñ ŕööƒ ~~~~~~]\"],\"editor.toolHint.placeElevator.1f65zva\":[\"[Þļáçé éļéṽáţöŕ ~~~~]\"],\"editor.toolHint.placeEyebrowVentOnRoof.1h1tqxn\":[\"[Þļáçé éýéƀŕöŵ ṽéñţ öñ ŕööƒ ~~~~~~~]\"],\"editor.toolHint.placeFitting.1pmx3vn\":[\"[Þļáçé ƒîţţîñĝ ~~~~]\"],\"editor.toolHint.placeGutterOnRoofEave.llwzf9\":[\"[Þļáçé ĝûţţéŕ öñ ŕööƒ éáṽé ~~~~~~~]\"],\"editor.toolHint.placeItLockedTo45.16e4csk\":[\"[Þļáçé îţ (ļöçķéð ţö 45°) ~~~~~]\"],\"editor.toolHint.placeItem.teynf\":[\"[Þļáçé îţéɱ ~~~]\"],\"editor.toolHint.placeMeasurementPoint.bsatli\":[\"[Þļáçé ɱéášûŕéɱéñţ þöîñţ ~~~~~~~]\"],\"editor.toolHint.placeOnAFence.1dptstr\":[\"[Þļáçé öñ á ƒéñçé ~~~~]\"],\"editor.toolHint.placeRegister.1uebycd\":[\"[Þļáçé ŕéĝîšţéŕ ~~~~]\"],\"editor.toolHint.placeRidgeVentOnRoof.2tpd8r\":[\"[Þļáçé ŕîðĝé ṽéñţ öñ ŕööƒ ~~~~~~]\"],\"editor.toolHint.placeShelf.y4l3iw\":[\"[Þļáçé šĥéļƒ ~~~]\"],\"editor.toolHint.placeSkylightOnRoof.e215pe\":[\"[Þļáçé šķýļîĝĥţ öñ ŕööƒ ~~~~~~]\"],\"editor.toolHint.placeSolarPanelArrayOnRoof.kk11fn\":[\"[Þļáçé šöļáŕ þáñéļ áŕŕáý öñ ŕööƒ ~~~~~~~~]\"],\"editor.toolHint.placeSpawnPoint.205o25\":[\"[Þļáçé šþáŵñ þöîñţ ~~~~~]\"],\"editor.toolHint.placeStairs.zwxxu2\":[\"[Þļáçé šţáîŕš ~~~~]\"],\"editor.toolHint.placeTrap.1gxemn3\":[\"[Þļáçé ţŕáþ ~~~]\"],\"editor.toolHint.placeTurbineVentOnRoof.1iqeluf\":[\"[Þļáçé ţûŕƀîñé ṽéñţ öñ ŕööƒ ~~~~~~~]\"],\"editor.toolHint.placeUnit.8zkx4q\":[\"[Þļáçé ûñîţ ~~~]\"],\"editor.toolHint.placeWindowOnWall.1k3qnfb\":[\"[Þļáçé ŵîñðöŵ öñ ŵáļļ ~~~~~~]\"],\"editor.toolHint.placeWithoutTheCornerSnap.1nifqew\":[\"[Þļáçé ŵîţĥöûţ ţĥé çöŕñéŕ šñáþ ~~~~~~~~]\"],\"editor.toolHint.placement.13lcvts\":[\"[Þļáçéɱéñţ ~~~]\"],\"editor.toolHint.placementAuto.1caa52d\":[\"[Þļáçéɱéñţ: Åûţö ~~~~]\"],\"editor.toolHint.placementGround.1ruz145\":[\"[Þļáçéɱéñţ: Ĝŕöûñð ~~~~~]\"],\"editor.toolHint.placementRoof.renkw8\":[\"[Þļáçéɱéñţ: Ŕööƒ ~~~~]\"],\"editor.toolHint.placementSurfaceClickOrPressP.w56h19\":[\"[Þļáçéɱéñţ šûŕƒáçé - çļîçķ öŕ þŕéšš Þ ţö çýçļé ~~~~~~~~~~~]\"],\"editor.toolHint.placementType.1mdpl60\":[\"[Þļáçéɱéñţ ţýþé ~~~~]\"],\"editor.toolHint.placementTypeClickOrPressI.10cgxh2\":[\"[Þļáçéɱéñţ ţýþé — çļîçķ öŕ þŕéšš Î ţö ţöĝĝļé ~~~~~~~~~~~]\"],\"editor.toolHint.removeLastPoint.2dmdcx\":[\"[Ŕéɱöṽé ļášţ þöîñţ ~~~~~]\"],\"editor.toolHint.removeLastWitness.1b6vvzw\":[\"[Ŕéɱöṽé ļášţ ŵîţñéšš ~~~~~~]\"],\"editor.toolHint.rotate.1thqa0a\":[\"[Ŕöţáţé ~~]\"],\"editor.toolHint.rotate45.9zq68u\":[\"[Ŕöţáţé ±45° ~~]\"],\"editor.toolHint.rotate45FloorCeiling.m9t57d\":[\"[Ŕöţáţé ±45° (ƒļööŕ / çéîļîñĝ) ~~~~~~]\"],\"editor.toolHint.rotateGhost15.rsa52c\":[\"[Ŕöţáţé ĝĥöšţ ±15° ~~~~]\"],\"editor.toolHint.rotateOrFlipTheRunSide.t5ior7\":[\"[Ŕöţáţé öŕ ƒļîþ ţĥé ŕûñ šîðé ~~~~~~~]\"],\"editor.toolHint.rotateRoofDirection90.tvbji2\":[\"[Ŕöţáţé ŕööƒ ðîŕéçţîöñ 90° ~~~~~~]\"],\"editor.toolHint.rotateSpawnPoint.1opcuu7\":[\"[Ŕöţáţé šþáŵñ þöîñţ ~~~~~]\"],\"editor.toolHint.roundRectangularOval.e4nh6x\":[\"[Ŕöûñð / ŕéçţáñĝûļáŕ / öṽáļ ~~~~~~]\"],\"editor.toolHint.setFenceStartEnd.1phbwsq\":[\"[Šéţ ƒéñçé šţáŕţ / éñð ~~~~~]\"],\"editor.toolHint.setOneCornerThenTheOpposite.8tsl49\":[\"[Šéţ öñé çöŕñéŕ, ţĥéñ ţĥé öþþöšîţé ~~~~~~~~~]\"],\"editor.toolHint.setRoofFootprint.p50n0o\":[\"[Šéţ ŕööƒ ƒööţþŕîñţ ~~~~~]\"],\"editor.toolHint.setWallStartEnd.1r8ubcx\":[\"[Šéţ ŵáļļ šţáŕţ / éñð ~~~~~]\"],\"editor.toolHint.slopeLevel.ftqp67\":[\"[Šļöþé / ļéṽéļ ~~~]\"],\"editor.toolHint.snapOntoTheRun.86yhmp\":[\"[Šñáþ öñţö ţĥé ŕûñ ~~~~~]\"],\"editor.toolHint.splitAtTheMarks.x5tpdd\":[\"[Šþļîţ áţ ţĥé ɱáŕķš ~~~~~]\"],\"editor.toolHint.startGridAxis.k92yza\":[\"[Šţáŕţ ĝŕîð áẋîš ~~~~]\"],\"editor.toolHint.startLineset.23q8dh\":[\"[Šţáŕţ ļîñéšéţ ~~~~]\"],\"editor.toolHint.startLiquidLine.1rlxsgd\":[\"[Šţáŕţ ļîǫûîð ļîñé ~~~~~]\"],\"editor.toolHint.startRun.r6fc5u\":[\"[Šţáŕţ ŕûñ ~~~]\"],\"editor.toolHint.startSegment.rolym6\":[\"[Šţáŕţ šéĝɱéñţ ~~~~]\"],\"editor.toolHint.stepBackOrCancel.zbfdkn\":[\"[Šţéþ ƀáçķ öŕ çáñçéļ ~~~~~]\"],\"editor.toolHint.style.nf3vcm\":[\"[Šţýļé ~~]\"],\"editor.toolHint.styleBarn.k9n1x\":[\"[Šţýļé: Ɓáŕñ ~~~]\"],\"editor.toolHint.styleCasement.ziklec\":[\"[Šţýļé: Çášéɱéñţ ~~~~]\"],\"editor.toolHint.styleCraftsman.52e6a9\":[\"[Šţýļé: Çŕáƒţšɱáñ ~~~~~]\"],\"editor.toolHint.styleDoubleHung.1lg8pkg\":[\"[Šţýļé: Ðöûƀļé-ĥûñĝ ~~~~~]\"],\"editor.toolHint.styleFrench.1ue3j64\":[\"[Šţýļé: Ƒŕéñçĥ ~~~~]\"],\"editor.toolHint.styleGlass.qudnb4\":[\"[Šţýļé: Ĝļášš ~~~]\"],\"editor.toolHint.styleGrid.1vuq4po\":[\"[Šţýļé: Ĝŕîð ~~~]\"],\"editor.toolHint.styleHalfLouvered.13b1few\":[\"[Šţýļé: Ĥáļƒ-ļöûṽéŕéð ~~~~~~]\"],\"editor.toolHint.styleHorizontalBands.12ethxk\":[\"[Šţýļé: Ĥöŕîžöñţáļ ƀáñðš ~~~~~~]\"],\"editor.toolHint.styleModern.1fh8hhn\":[\"[Šţýļé: Ṁöðéŕñ ~~~~]\"],\"editor.toolHint.stylePanel.922jze\":[\"[Šţýļé: Þáñéļ ~~~]\"],\"editor.toolHint.stylePaneledGlass.17a17en\":[\"[Šţýļé: Þáñéļéð ĝļášš ~~~~~~]\"],\"editor.toolHint.styleShaker.49z17k\":[\"[Šţýļé: Šĥáķéŕ ~~~~]\"],\"editor.toolHint.styleSingle.6f3cm0\":[\"[Šţýļé: Šîñĝļé ~~~~]\"],\"editor.toolHint.styleSixPanel.u49laj\":[\"[Šţýļé: Šîẋ-þáñéļ ~~~~]\"],\"editor.toolHint.styleSliding.q81s0i\":[\"[Šţýļé: Šļîðîñĝ ~~~~]\"],\"editor.toolHint.styleTallGrid.1eotg3x\":[\"[Šţýļé: Ţáļļ ĝŕîð ~~~~]\"],\"editor.toolHint.styleTransom.kb9bh6\":[\"[Šţýļé: Ţŕáñšöɱ ~~~~]\"],\"editor.toolHint.styleTripleHung.pxnqi3\":[\"[Šţýļé: Ţŕîþļé-ĥûñĝ ~~~~~]\"],\"editor.toolHint.styleWideGrid.12n27et\":[\"[Šţýļé: Ŵîðé ĝŕîð ~~~~]\"],\"editor.toolHint.switchRotationAxisYXZ.15lohm6\":[\"[Šŵîţçĥ ŕöţáţîöñ áẋîš (Ý → Ẋ → Ž) ~~~~~~~]\"],\"editor.toolHint.theWallsMeetAtTooSharp.kh3wi3\":[\"[Ţĥé ŵáļļš ɱééţ áţ ţöö šĥáŕþ öŕ ţöö ƒļáţ áñ áñĝļé ~~~~~~~~~~~~]\"],\"editor.toolHint.theWindowWaitingThereIsTaller.1tqwez4\":[\"[Ţĥé ŵîñðöŵ ŵáîţîñĝ ţĥéŕé îš ţáļļéŕ ţĥáñ ţĥîš ŵáļļ ~~~~~~~~~~~~~]\"],\"editor.toolHint.threeOrMoreWallsMeetHere.rgifif\":[\"[Ţĥŕéé öŕ ɱöŕé ŵáļļš ɱééţ ĥéŕé ~~~~~~~~]\"],\"editor.toolHint.traceCeilingOutline.1b639wv\":[\"[Ţŕáçé çéîļîñĝ öûţļîñé ~~~~~~]\"],\"editor.toolHint.traceSlabOutline.z0j2lc\":[\"[Ţŕáçé šļáƀ öûţļîñé ~~~~~]\"],\"editor.toolHint.type.1m2zofh\":[\"[Ţýþé ~~]\"],\"editor.toolHint.typeAwning.1cj59al\":[\"[Ţýþé: Åŵñîñĝ ~~~]\"],\"editor.toolHint.typeBarn.sbnygq\":[\"[Ţýþé: Ɓáŕñ ~~~]\"],\"editor.toolHint.typeBay.1200hc1\":[\"[Ţýþé: Ɓáý ~~~]\"],\"editor.toolHint.typeBow.14s2t9p\":[\"[Ţýþé: Ɓöŵ ~~~]\"],\"editor.toolHint.typeCabinet.1r68je5\":[\"[Ţýþé: Çáƀîñéţ ~~~~]\"],\"editor.toolHint.typeCasement.176uo9j\":[\"[Ţýþé: Çášéɱéñţ ~~~~]\"],\"editor.toolHint.typeDouble.af7w4i\":[\"[Ţýþé: Ðöûƀļé ~~~]\"],\"editor.toolHint.typeDoubleHung.t482fu\":[\"[Ţýþé: Ðöûƀļé Ĥûñĝ ~~~~~]\"],\"editor.toolHint.typeFixed.v1cjez\":[\"[Ţýþé: Ƒîẋéð ~~~]\"],\"editor.toolHint.typeFolding.sxxyng\":[\"[Ţýþé: Ƒöļðîñĝ ~~~~]\"],\"editor.toolHint.typeFrench.1y57z1b\":[\"[Ţýþé: Ƒŕéñçĥ ~~~]\"],\"editor.toolHint.typeHinged.1xrcfju\":[\"[Ţýþé: Ĥîñĝéð ~~~]\"],\"editor.toolHint.typeIsland.ufr3ce\":[\"[Ţýþé: Κļáñð ~~~]\"],\"editor.toolHint.typeLouvered.oxl1cz\":[\"[Ţýþé: Ļöûṽéŕéð ~~~~]\"],\"editor.toolHint.typePocket.hc65x9\":[\"[Ţýþé: Þöçķéţ ~~~]\"],\"editor.toolHint.typeSingleHung.p53pyl\":[\"[Ţýþé: Šîñĝļé Ĥûñĝ ~~~~~]\"],\"editor.toolHint.typeSliding.nwmr3f\":[\"[Ţýþé: Šļîðîñĝ ~~~~]\"],\"editor.toolHint.verticalStackClickToPlace.ijcn4q\":[\"[Ṽéŕţîçáļ šţáçķ ↕, çļîçķ ţö þļáçé ~~~~~~~~]\"],\"editor.toolHint.wasteVent.1hvi3vj\":[\"[Ŵášţé / ṽéñţ ~~~]\"],\"editor.toolHint.windowStyleClickOrPressL.ah7qm9\":[\"[Ŵîñðöŵ šţýļé — çļîçķ öŕ þŕéšš Ļ ţö çýçļé ~~~~~~~~~~]\"],\"editor.toolHint.windowTypeClickOrPressO.wv4x35\":[\"[Ŵîñðöŵ ţýþé — çļîçķ öŕ þŕéšš Ö ţö çýçļé ~~~~~~~~~]\"],\"editor.views.plugins\":[\"[Þļûĝîñš ~~~]\"],\"editor.views.view2d\":[\"[2Ð ~]\"],\"editor.views.view3d\":[\"[3Ð ~]\"],\"editor.views.viewBar.auto\":[\"[Åûţö ~~]\"],\"editor.views.viewBar.browsePlugins\":[\"[Ɓŕöŵšé þļûĝîñš ~~~~]\"],\"editor.views.viewBar.closeLabel\":[\"[Çļöšé \",[\"label\"],\" ~~]\"],\"editor.views.viewBar.closeSplit\":[\"[Çļöšé šþļîţ (\\\\) ~~~]\"],\"editor.views.viewBar.ground\":[\"[Ĝŕöûñð ~~]\"],\"editor.views.viewBar.groundSolid\":[\"[\",[\"standing\",\"select\",{\"partly\":[\"Þáŕţļý ƀéļöŵ ĝŕáðé · ĝŕöûñð šöļîð\"],\"below\":[\"Ɓéļöŵ ĝŕáðé · ĝŕöûñð šöļîð\"],\"other\":[\"Ĝŕöûñð šöļîð\"]}],\" ~~~~~~~~~~~~~~~~~~]\"],\"editor.views.viewBar.groundVeiled\":[\"[\",[\"standing\",\"select\",{\"partly\":[\"Þáŕţļý ƀéļöŵ ĝŕáðé · ĝŕöûñð ṽéîļéð\"],\"below\":[\"Ɓéļöŵ ĝŕáðé · ĝŕöûñð ṽéîļéð\"],\"other\":[\"Ĝŕöûñð ṽéîļéð\"]}],\" ~~~~~~~~~~~~~~~~~~~]\"],\"editor.views.viewBar.keepTheGroundSolid\":[\"[Ķééþ ţĥé ĝŕöûñð šöļîð ~~~~~~]\"],\"editor.views.viewBar.moreViews\":[\"[Ṁöŕé ṽîéŵš ~~~]\"],\"editor.views.viewBar.paneViews\":[\"[Þáñé \",[\"pane\"],\" ṽîéŵš ~~~]\"],\"editor.views.viewBar.pinLabel\":[\"[Þîñ \",[\"label\"],\" ~]\"],\"editor.views.viewBar.pinToTheViewBar\":[\"[Þîñ ţö ţĥé ṽîéŵ ƀáŕ ~~~~~]\"],\"editor.views.viewBar.solid\":[\"[Šöļîð ~~]\"],\"editor.views.viewBar.split\":[\"[Šþļîţ (\\\\) ~~]\"],\"editor.views.viewBar.split2\":[\"[Šþļîţ ~~]\"],\"editor.views.viewBar.swapPanes\":[\"[Šŵáþ þáñéš ~~~]\"],\"editor.views.viewBar.unpinFromTheViewBar\":[\"[Ûñþîñ ƒŕöɱ ţĥé ṽîéŵ ƀáŕ ~~~~~~]\"],\"editor.views.viewBar.unpinLabel\":[\"[Ûñþîñ \",[\"label\"],\" ~~]\"],\"editor.views.viewBar.veilTheGroundOverALevel\":[\"[Ṽéîļ ţĥé ĝŕöûñð öṽéŕ á ļéṽéļ ƀéļöŵ ĝŕáðé ~~~~~~~~~~]\"],\"editor.views.viewBar.views\":[\"[Ṽîéŵš ~~]\"],\"editor.youCanRetryTheSceneOr\":[\"[Ýöû çáñ ŕéţŕý ţĥé šçéñé öŕ ŕéţûŕñ ĥöɱé ŵîţĥöûţ ŕéļöáðîñĝ ţĥé ŵĥöļé áþþ šĥéļļ. ~~~~~~~~~~~~~~~~~~~]\"],\"node.block.description\":[\"[Å ţöþöļöĝý-ƀáçķéð šöļîð éðîţéð ðîŕéçţļý îñ ţĥé çáñṽáš. ~~~~~~~~~~~~~~]\"],\"node.block.label\":[\"[Ɓļöçķ ~~]\"],\"node.boxVent.description\":[\"[Šɱáļļ ļöûṽéŕéð éẋĥáûšţ ṽéñţ ţĥáţ šîţš öñ á ŕööƒ šļöþé. ~~~~~~~~~~~~~~]\"],\"node.boxVent.label\":[\"[Ɓöẋ Ṽéñţ ~~~]\"],\"node.building.description\":[\"[Å ƀûîļðîñĝ çöñţáîñéŕ ĥöļðîñĝ öñé öŕ ɱöŕé ļéṽéļš. ~~~~~~~~~~~~]\"],\"node.building.label\":[\"[Ɓûîļðîñĝ ~~~]\"],\"node.cabinet.description\":[\"[Å çöñƒîĝûŕáƀļé þáŕáɱéţŕîç ƀášé çáƀîñéţ. ~~~~~~~~~~~]\"],\"node.cabinet.label\":[\"[Ṁöðûļáŕ Çáƀîñéţ ~~~~~]\"],\"node.cabinetModule.description\":[\"[Åñ éðîţáƀļé ɱöðûļé îñšîðé á ɱöðûļáŕ çáƀîñéţ ŕûñ. ~~~~~~~~~~~~]\"],\"node.cabinetModule.label\":[\"[Çáƀîñéţ Ṁöðûļé ~~~~]\"],\"node.ceiling.description\":[\"[Å þöļýĝöñ-ƀöûñðéð çéîļîñĝ šûŕƒáçé ţĥáţ ĥöšţš çéîļîñĝ-ɱöûñţéð îţéɱš. ~~~~~~~~~~~~~~~~~~]\"],\"node.ceiling.label\":[\"[Çéîļîñĝ ~~~]\"],\"node.chimney.description\":[\"[Ṽéŕţîçáļ ɱášöñŕý šţáçķ öñ á ŕööƒ šéĝɱéñţ. ~~~~~~~~~~~]\"],\"node.chimney.label\":[\"[Çĥîɱñéý ~~~]\"],\"node.column.description\":[\"[Å þáŕáɱéţŕîç çöļûɱñ ŵîţĥ çöñƒîĝûŕáƀļé çŕöšš-šéçţîöñ, ƀášé, áñð çáþîţáļ. ~~~~~~~~~~~~~~~~~~]\"],\"node.column.label\":[\"[Çöļûɱñ ~~]\"],\"node.constructionDimension.description\":[\"[Åššöçîáţîṽé ļîñéáŕ, çûŕṽéð, çîŕçûļáŕ, áñĝûļáŕ, öŕ çööŕðîñáţé þļáñ ðîɱéñšîöñ. ~~~~~~~~~~~~~~~~~~~]\"],\"node.constructionDimension.label\":[\"[Çöñšţŕûçţîöñ Ðîɱéñšîöñ ~~~~~~~]\"],\"node.cupola.description\":[\"[Ļöûṽéŕéð ŕööƒ ļáñţéŕñ ŵîţĥ á ðöɱé öŕ þýŕáɱîð çáþ áñð öþţîöñáļ ƒîñîáļ. ~~~~~~~~~~~~~~~~~~]\"],\"node.cupola.label\":[\"[Çûþöļá ~~]\"],\"node.door.description\":[\"[Å ðööŕ çûţ îñţö á ŵáļļ. Åñîɱáţéð öþéñ/çļöšé šţáţé. ~~~~~~~~~~~~]\"],\"node.door.label\":[\"[Ðööŕ ~~]\"],\"node.dormer.description\":[\"[Ĥöûšé-šĥáþéð þŕöţŕûšîöñ öñ á ŕööƒ šéĝɱéñţ. ~~~~~~~~~~~]\"],\"node.dormer.label\":[\"[Ðöŕɱéŕ ~~]\"],\"node.downspout.description\":[\"[Ṽéŕţîçáļ ðŕöþ þîþé ƒŕöɱ á ĝûţţéŕ öûţļéţ ţö ţĥé ĝŕöûñð. ~~~~~~~~~~~~~~]\"],\"node.downspout.label\":[\"[Ðöŵñšþöûţ ~~~]\"],\"node.ductFitting.description\":[\"[Éļƀöŵ, ţéé, ŕéðûçéŕ, öŕ šǫûáŕé-ţö-ŕöûñð ţŕáñšîţîöñ çöññéçţîñĝ ðûçţ ŕûñš. ~~~~~~~~~~~~~~~~~~]\"],\"node.ductFitting.label\":[\"[Ðûçţ Ƒîţţîñĝ ~~~~]\"],\"node.ductSegment.description\":[\"[ĤṼÅÇ ðûçţ ŕûñ — þöļýļîñé öƒ ŕöûñð, ŕéçţ, öŕ ƒļáţ-öṽáļ šéçţîöñš. ~~~~~~~~~~~~~~~]\"],\"node.ductSegment.label\":[\"[Ðûçţ ~~]\"],\"node.ductTerminal.description\":[\"[Ðûçţ ţéŕɱîñáļ — šûþþļý ŕéĝîšţéŕ, çéîļîñĝ ðûšéŕ, öŕ ŕéţûŕñ ĝŕîļļé. Ðûçţ ŕûñš éñð áţ îţš çöļļáŕ. ~~~~~~~~~~~~~~~~~~~~~~~~]\"],\"node.ductTerminal.label\":[\"[Ŕéĝîšţéŕ ~~~]\"],\"node.elevator.description\":[\"[Å ɱûļţî-ļéṽéļ éļéṽáţöŕ šĥáƒţ ŵîţĥ çöñƒîĝûŕáƀļé öþéñîñĝš þéŕ ļéṽéļ. ~~~~~~~~~~~~~~~~~]\"],\"node.elevator.label\":[\"[Éļéṽáţöŕ ~~~]\"],\"node.eyebrowVent.description\":[\"[Ļöŵ çûŕṽéð ļéñš-šĥáþéð ŕööƒ ṽéñţ ŵîţĥ á ļöûṽéŕéð ƒŕöñţ. ~~~~~~~~~~~~~~]\"],\"node.eyebrowVent.label\":[\"[Éýéƀŕöŵ Ṽéñţ ~~~~]\"],\"node.fence.description\":[\"[Å šţŕáîĝĥţ öŕ çûŕṽéð ƒéñçé šéĝɱéñţ ŵîţĥ çöñƒîĝûŕáƀļé þöšţš áñð îñƒîļļ. ~~~~~~~~~~~~~~~~~~]\"],\"node.fence.label\":[\"[Ƒéñçé ~~]\"],\"node.fenceGate.description\":[\"[Å ĝáţé ĥöšţéð ƀý á ƒéñçé. ~~~~~~]\"],\"node.fenceGate.label\":[\"[Ĝáţé ~~]\"],\"node.fenceOpening.description\":[\"[Åñ îñţéñţîöñáļ öþéñîñĝ îñ á ƒéñçé. ~~~~~~~~~]\"],\"node.fenceOpening.label\":[\"[Öþéñ Þáššáĝé ~~~~]\"],\"node.floorOpening.label\":[\"[Ƒļööŕ öþéñîñĝ ~~~~]\"],\"node.guide.description\":[\"[Å ɱéášûŕéɱéñţ / ŕéƒéŕéñçé áññöţáţîöñ (ļîñéáŕ, áŕéá, öŕ áŕç). ~~~~~~~~~~~~~~]\"],\"node.guide.label\":[\"[Ĝûîðé ~~]\"],\"node.gutter.description\":[\"[Ŕáîñ-ŵáţéŕ çĥáññéļ ŕûññîñĝ áļöñĝ ţĥé éáṽé öƒ á ŕööƒ šéĝɱéñţ. ~~~~~~~~~~~~~~~]\"],\"node.gutter.label\":[\"[Ĝûţţéŕ ~~]\"],\"node.hvacEquipment.description\":[\"[Ƒûŕñáçé, áîŕ ĥáñðļéŕ, öŕ çöñðéñšéŕ — ðûçţ ŕûñš çöññéçţ ţö îţš šûþþļý/ŕéţûŕñ çöļļáŕš. ~~~~~~~~~~~~~~~~~~~~~]\"],\"node.hvacEquipment.label\":[\"[ĤṼÅÇ Ûñîţ ~~~]\"],\"node.importedMesh.description\":[\"[Ĝéöɱéţŕý þŕéšéŕṽéð ƒŕöɱ áñ îɱþöŕţéð ɱöðéļ ŵĥéñ ñö ñáţîṽé Þášçáļ šĥáþé éẋîšţš. ~~~~~~~~~~~~~~~~~~~~]\"],\"node.importedMesh.label\":[\"[Îɱþöŕţéð Ṁéšĥ ~~~~]\"],\"node.item.description\":[\"[Å çáţáļöĝ-ƀáçķéð îţéɱ (ƒûŕñîţûŕé, ƒîẋţûŕéš, ðéçöŕáţîöñš). ~~~~~~~~~~~~~~]\"],\"node.item.label\":[\"[Îţéɱ ~~]\"],\"node.leanToExtension.description\":[\"[Åñ áţţáçĥéð ɱöñö-þîţçĥ öŕ ƒŕééšţáñðîñĝ ɱöñö, ĝáƀļé, öŕ ƀûţţéŕƒļý çáñöþý ŵîţĥ ɱáñáĝéð šţŕûçţûŕé áñð ðŕáîñáĝé. ~~~~~~~~~~~~~~~~~~~~~~~~~~~]\"],\"node.leanToExtension.label\":[\"[Çáñöþý ~~]\"],\"node.level.description\":[\"[Å šîñĝļé ƒļööŕ öƒ á ƀûîļðîñĝ, ĥöļðîñĝ ŵáļļš / šļáƀš / çéîļîñĝš / îţéɱš. ~~~~~~~~~~~~~~~~]\"],\"node.level.label\":[\"[Ļéṽéļ ~~]\"],\"node.lineset.description\":[\"[Ŕéƒŕîĝéŕáñţ ļîñéšéţ — çöþþéŕ šûçţîöñ + ļîǫûîð þáîŕ ĵöîñîñĝ á çöñðéñšéŕ ţö ţĥé îñðööŕ çöîļ. ~~~~~~~~~~~~~~~~~~~~~~]\"],\"node.lineset.label\":[\"[Ļîñéšéţ ~~~]\"],\"node.liquidLine.description\":[\"[Šţáñðáļöñé ŕéƒŕîĝéŕáñţ ļîǫûîð ļîñé — á ţĥîñ ƀáŕé-çöþþéŕ ŕûñ; Ƒöļļöŵ ɱöðé ţŕáçéš áñ éẋîšţîñĝ ļîñéšéţ. ~~~~~~~~~~~~~~~~~~~~~~~~~]\"],\"node.liquidLine.label\":[\"[Ļîǫûîð Ļîñé ~~~]\"],\"node.measurement.description\":[\"[Å þéŕšîšţéñţ ðîšţáñçé, áñĝļé, áŕéá, þéŕîɱéţéŕ, öŕ ṽöļûɱé áññöţáţîöñ. ~~~~~~~~~~~~~~~~~]\"],\"node.measurement.label\":[\"[Ṁéášûŕéɱéñţ ~~~~]\"],\"node.pipeFitting.description\":[\"[ÐŴṼ ĵöîñţ — éļƀöŵ ƀéñð, 45° ŵýé, öŕ šáñîţáŕý ţéé. ~~~~~~~~~~]\"],\"node.pipeFitting.label\":[\"[Þîþé Ƒîţţîñĝ ~~~~]\"],\"node.pipeSegment.description\":[\"[Ðŕáîñ / ŵášţé / ṽéñţ þîþé ŕûñ — ðŕáŵ ļéṽéļ öŕ ţöĝĝļé á ¼″ þéŕ ƒööţ ƒáļļ ŵîţĥ Š. ~~~~~~~~~~~~~~~~~]\"],\"node.pipeSegment.label\":[\"[ÐŴṼ Þîþé ~~~]\"],\"node.pipeTrap.description\":[\"[ÐŴṼ Þ-ţŕáþ — ŵáţéŕ šéáļ öñ ţĥé ŵášţé ļîñé. Ţĥé ţŕáþ áŕɱ ŕûñš ţö ţĥé ṽéñţ. ~~~~~~~~~~~~~~~~~]\"],\"node.pipeTrap.label\":[\"[Ţŕáþ ~~]\"],\"node.proceduralItem.description\":[\"[Éẋþéŕîɱéñţáļ éðîţáƀļé ŕéçîþé ~~~~~~~~]\"],\"node.proceduralItem.label\":[\"[Þŕöçéðûŕáļ îţéɱ ~~~~~]\"],\"node.ridgeVent.description\":[\"[Ṽéñţîļáţîöñ šţŕîþ ŕûññîñĝ áļöñĝ ţĥé ŕîðĝé öƒ á ŕööƒ šéĝɱéñţ. ~~~~~~~~~~~~~~~]\"],\"node.ridgeVent.label\":[\"[Ŕîðĝé Ṽéñţ ~~~]\"],\"node.roof.description\":[\"[Å þîţçĥéð / ĥîþ / ĝáƀļé ŕööƒ çöɱþöšéð öƒ öñé öŕ ɱöŕé šéĝɱéñţš. ~~~~~~~~~~~~~~~]\"],\"node.roof.label\":[\"[Ŕööƒ ~~]\"],\"node.roofSegment.description\":[\"[Å šîñĝļé þîţçĥéð þļáñé öƒ á þáŕéñţ ŕööƒ. ~~~~~~~~~~]\"],\"node.roofSegment.label\":[\"[Ŕööƒ Šéĝɱéñţ ~~~~]\"],\"node.scan.description\":[\"[Å çáþţûŕéð šéššîöñ ŵîţĥ öþţîöñáļ ɱéšĥ, ɱöţîöñ, ɱéðîá, áñð šéñšöŕ ðáţá. ~~~~~~~~~~~~~~~~~]\"],\"node.scan.label\":[\"[Çáþţûŕé ~~~]\"],\"node.separator.label\":[\"[Šéþáŕáţöŕ ~~~]\"],\"node.shelf.description\":[\"[Å çöñƒîĝûŕáƀļé šĥéļṽîñĝ ûñîţ. Îţéɱš ĥöšţ öñ éáçĥ ŕöŵ. ~~~~~~~~~~~~~]\"],\"node.shelf.label\":[\"[Šĥéļƒ ~~]\"],\"node.site.description\":[\"[Ţĥé ţöþ-ļéṽéļ çöñţáîñéŕ ĥöļðîñĝ ƀûîļðîñĝš, žöñéš, áñð ţĥé þŕöþéŕţý ƀöûñðáŕý. ~~~~~~~~~~~~~~~~~~~]\"],\"node.site.label\":[\"[Šîţé ~~]\"],\"node.skylight.description\":[\"[Ƒŕáɱéð ĝļášš öþéñîñĝ öñ á ŕööƒ šéĝɱéñţ. ~~~~~~~~~~]\"],\"node.skylight.label\":[\"[Šķýļîĝĥţ ~~~]\"],\"node.slab.description\":[\"[Å þöļýĝöñ-ƀöûñðéð ƒļööŕ šûŕƒáçé ţĥáţ ĥöšţš îţéɱš öñ ţöþ. ~~~~~~~~~~~~~~]\"],\"node.slab.label\":[\"[Šļáƀ ~~]\"],\"node.solarPanel.description\":[\"[Ĝŕîð öƒ þĥöţöṽöļţáîç þáñéļš ɱöûñţéð öñ á ŕööƒ šéĝɱéñţ. ~~~~~~~~~~~~~~]\"],\"node.solarPanel.label\":[\"[Šöļáŕ Þáñéļ ~~~]\"],\"node.spawn.description\":[\"[Þļáýéŕ öŕ çáɱéŕá öŕîĝîñ ŵîţĥîñ á ļéṽéļ. Öñé þéŕ ļéṽéļ. ~~~~~~~~~~~~~]\"],\"node.spawn.label\":[\"[Šþáŵñ Þöîñţ ~~~]\"],\"node.stair.description\":[\"[Å šţáîŕ çöɱþöšéð öƒ öñé öŕ ɱöŕé ƒļîĝĥţš ŵîţĥ çöñƒîĝûŕáƀļé ţŕéáðš, ŕîšéŕš, ŕáîļîñĝš. ~~~~~~~~~~~~~~~~~~~~~]\"],\"node.stair.label\":[\"[Šţáîŕ ~~]\"],\"node.stairSegment.description\":[\"[Å šîñĝļé ƒļîĝĥţ öƒ á þáŕéñţ šţáîŕ. ~~~~~~~~~]\"],\"node.stairSegment.label\":[\"[Šţáîŕ Šéĝɱéñţ ~~~~]\"],\"node.structuralGrid.description\":[\"[Þéŕšîšţéñţ çöñšţŕûçţîöñ ĝŕîð áẋîš ŵîţĥ îðéñţîƒîçáţîöñ ƀûƀƀļéš. ~~~~~~~~~~~~~~~~~]\"],\"node.structuralGrid.label\":[\"[Šţŕûçţûŕáļ Ĝŕîð ~~~~~]\"],\"node.turbineVent.description\":[\"[Ŵîñð-ðŕîṽéñ šþîññîñĝ ŵĥîŕļýƀîŕð éẋĥáûšţ ṽéñţ ƒöŕ á ŕööƒ šļöþé. ~~~~~~~~~~~~~~~~]\"],\"node.turbineVent.label\":[\"[Ţûŕƀîñé Ṽéñţ ~~~~]\"],\"node.unit.description\":[\"[Å ñáɱéð ĝŕöûþ öƒ žöñéš ƒöŕɱîñĝ öñé áþáŕţɱéñţ, ĥöţéļ ŕööɱ öŕ çöɱɱéŕçîáļ ļöţ. ~~~~~~~~~~~~~~~~~~~]\"],\"node.unit.label\":[\"[Ûñîţ ~~]\"],\"node.wall.description\":[\"[Å šţŕáîĝĥţ öŕ çûŕṽéð ŵáļļ šéĝɱéñţ. Ĥöšţš ðööŕš, ŵîñðöŵš, ļéáñ-ţö éẋţéñšîöñš, áñð ŵáļļ-ɱöûñţéð îţéɱš. ~~~~~~~~~~~~~~~~~~~~~~~~]\"],\"node.wall.label\":[\"[Ŵáļļ ~~]\"],\"node.window.description\":[\"[Å ŵîñðöŵ çûţ îñţö á ŵáļļ. Åñîɱáţéð öþéñ/çļöšé ƒöŕ öþéñîñĝ ŵîñðöŵš. ~~~~~~~~~~~~~~~~]\"],\"node.window.label\":[\"[Ŵîñðöŵ ~~]\"],\"node.zone.description\":[\"[Å þöļýĝöñáļ šîţé žöñé (ļáŵñ, ŵáţéŕ, þáṽîñĝ) ŵîţĥ á ŢŠĻ ĝŕáðîéñţ ɱáţéŕîáļ. ~~~~~~~~~~~~~~~~~~]\"],\"node.zone.label\":[\"[Žöñé ~~]\"],\"viewer.camera.orbitLeft\":[\"[Öŕƀîţ ļéƒţ ~~~]\"],\"viewer.camera.orbitRight\":[\"[Öŕƀîţ ŕîĝĥţ ~~~]\"],\"viewer.camera.topView\":[\"[Ţöþ ṽîéŵ ~~~]\"],\"viewer.common.off\":[\"[Öƒƒ ~]\"],\"viewer.common.on\":[\"[Öñ ~]\"],\"viewer.display.camera\":[\"[Çáɱéŕá ~~]\"],\"viewer.display.colored\":[\"[Çöļöŕéð ~~~]\"],\"viewer.display.colors\":[\"[Çöļöŕš ~~]\"],\"viewer.display.edges.off\":[\"[Öƒƒ ~]\"],\"viewer.display.edges.offDetail\":[\"[Ñö éðĝé ļîñéš ~~~~]\"],\"viewer.display.edges.soft\":[\"[Šöƒţ ~~]\"],\"viewer.display.edges.softDetail\":[\"[Ƒáîñţ öûţļîñé öƒ ɱáĵöŕ çŕéášéš ~~~~~~~~]\"],\"viewer.display.edges.strong\":[\"[Šţŕöñĝ ~~]\"],\"viewer.display.edges.strongDetail\":[\"[Çŕîšþ, öþáǫûé éðĝé ļîñéš ~~~~~~]\"],\"viewer.display.edges.title\":[\"[Éðĝéš ~~]\"],\"viewer.display.monochrome\":[\"[Ṁöñöçĥŕöɱé ~~~]\"],\"viewer.display.orthographic\":[\"[Öŕţĥöĝŕáþĥîç ~~~~]\"],\"viewer.display.perspective\":[\"[Þéŕšþéçţîṽé ~~~~]\"],\"viewer.display.render.rendered\":[\"[Ŕéñðéŕéð ~~~]\"],\"viewer.display.render.renderedDetail\":[\"[Ƒûļļ áɱƀîéñţ öççļûšîöñ ~~~~~~]\"],\"viewer.display.render.solid\":[\"[Šöļîð ~~]\"],\"viewer.display.render.solidDetail\":[\"[Ƒļáţ áñð ƒášţ — ñö áɱƀîéñţ öççļûšîöñ ~~~~~~~~~]\"],\"viewer.display.render.title\":[\"[Ŕéñðéŕ ~~]\"],\"viewer.display.shadows\":[\"[Šĥáðöŵš ~~~]\"],\"viewer.display.title\":[\"[Ðîšþļáý šéţţîñĝš ~~~~~]\"],\"viewer.floorplan.alignNorth\":[\"[Åļîĝñ ṽîéŵ ţö ñöŕţĥ ~~~~~]\"],\"viewer.floorplan.empty\":[\"[Ñö ƒļööŕ þļáñš áŕé áṽáîļáƀļé ƒöŕ ţĥîš šçéñé. ~~~~~~~~~~~]\"],\"viewer.floorplan.fit\":[\"[Ƒîţ ƒļööŕ þļáñ ~~~~]\"],\"viewer.floorplan.floor\":[\"[Ƒļööŕ ~~]\"],\"viewer.floorplan.floorPlan\":[\"[Ƒļööŕ þļáñ ~~~]\"],\"viewer.floorplan.viewLabel\":[\"[\",[\"floor\"],\" 2Ð ṽîéŵ ~~]\"],\"viewer.floorplan.zoomIn\":[\"[Žööɱ îñ ~~]\"],\"viewer.floorplan.zoomOut\":[\"[Žööɱ öûţ ~~~]\"],\"viewer.header.back\":[\"[Ɓáçķ ~~]\"],\"viewer.header.levels\":[\"[Ļéṽéļš ~~]\"],\"viewer.header.rooms\":[\"[Ŕööɱš ~~]\"],\"viewer.header.selection\":[\"[Šéļéçţîöñ ~~~]\"],\"viewer.header.units\":[\"[Ûñîţš ~~]\"],\"viewer.header.untitled\":[\"[Ûñţîţļéð ~~~]\"],\"viewer.header.zones\":[\"[Žöñéš ~~]\"],\"viewer.levels.exploded\":[\"[Éẋþļöðéð ~~~]\"],\"viewer.levels.label\":[\"[Ļéṽéļš: \",[\"mode\"],\" ~~]\"],\"viewer.levels.manual\":[\"[Ṁáñûáļ ~~]\"],\"viewer.levels.solo\":[\"[Šöļö ~~]\"],\"viewer.levels.stacked\":[\"[Šţáçķéð ~~~]\"],\"viewer.stage.layout\":[\"[Ṽîéŵéŕ ļáýöûţ ~~~~]\"],\"viewer.stage.split\":[\"[Šþļîţ ~~]\"],\"viewer.theme.blueprint\":[\"[Ɓļûéþŕîñţ ~~~]\"],\"viewer.theme.mediterranean\":[\"[Ṁéðîţéŕŕáñéáñ ~~~~]\"],\"viewer.theme.night\":[\"[Ñîĝĥţ ~~]\"],\"viewer.theme.overcast\":[\"[Öṽéŕçášţ ~~~]\"],\"viewer.theme.paper\":[\"[Þáþéŕ ~~]\"],\"viewer.theme.studio\":[\"[Šţûðîö ~~]\"],\"viewer.theme.sunset\":[\"[Šûñšéţ ~~]\"],\"viewer.theme.title\":[\"[Šçéñé ţĥéɱé ~~~]\"],\"viewer.theme.twilight\":[\"[Ţŵîļîĝĥţ ~~~]\"],\"viewer.theme.verdant\":[\"[Ṽéŕðáñţ ~~~]\"],\"viewer.visibility.guides\":[\"[Ĝûîðéš ~~]\"],\"viewer.visibility.scans\":[\"[Šçáñš ~~]\"],\"viewer.visibility.title\":[\"[Ṽîšîƀîļîţý ~~~]\"],\"viewer.walkthrough.label\":[\"[Ŵáļķţĥŕöûĝĥ: \",[\"state\"],\" ~~~~]\"],\"viewer.walls.cutaway\":[\"[Çûţáŵáý ~~~]\"],\"viewer.walls.fullHeight\":[\"[Ƒûļļ ĥéîĝĥţ ~~~]\"],\"viewer.walls.label\":[\"[Ŵáļļš: \",[\"mode\"],\" ~~]\"],\"viewer.walls.low\":[\"[Ļöŵ ~]\"]}")as Messages; \ No newline at end of file +/*eslint-disable*/import type{Messages}from"@lingui/core";export const messages=JSON.parse("{\"app.appShell.pascalHome\":[\"[Þášçáļ ĥöɱé ~~~]\"],\"app.buildTab.addGate\":[\"[Åðð Ĝáţé ~~~]\"],\"app.buildTab.addOpenPassage\":[\"[Åðð Öþéñ Þáššáĝé ~~~~~]\"],\"app.buildTab.addToRooms\":[\"[Åðð ţö ŕööɱš ~~~]\"],\"app.buildTab.allBuildTools\":[\"[← Åļļ ƀûîļð ţööļš ~~~~]\"],\"app.buildTab.chooseGateOrOpenPassageThen\":[\"[Çĥööšé Ĝáţé öŕ Öþéñ Þáššáĝé, ţĥéñ çļîçķ îţš þöšîţîöñ öñ áñý ƒéñçé. Ƒîñð þļáçéð ĝáţéš áñð öþéñîñĝš ûñðéŕ ţĥéîŕ ƒéñçé îñ ţĥé šçéñé ĝŕáþĥ. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~]\"],\"app.buildTab.clickALinesetToLayThe\":[\"[Çļîçķ á ļîñéšéţ ţö ļáý ţĥé ļîñé ƀéšîðé îţ. ~~~~~~~~~~]\"],\"app.buildTab.doubleGate\":[\"[Ðöûƀļé ĝáţé ~~~]\"],\"app.buildTab.featuresExtensions\":[\"[Ƒéáţûŕéš & éẋţéñšîöñš ~~~~~~]\"],\"app.buildTab.fenceFeatures\":[\"[Ƒéñçé ƒéáţûŕéš ~~~~]\"],\"app.buildTab.followLineset\":[\"[Ƒöļļöŵ ļîñéšéţ ~~~~]\"],\"app.buildTab.gate\":[\"[Ĝáţé ~~]\"],\"app.buildTab.gateStyle\":[\"[Ĝáţé šţýļé ~~~]\"],\"app.buildTab.horizontalBoards\":[\"[Ĥöŕîžöñţáļ ƀöáŕðš ~~~~~]\"],\"app.buildTab.hoverAFenceToPreviewClick\":[\"[Ĥöṽéŕ á ƒéñçé ţö þŕéṽîéŵ. Çļîçķ ţö þļáçé. Éšç çáñçéļš. Ļéáṽé ŕööɱ ƀéţŵééñ öþéñîñĝš. ~~~~~~~~~~~~~~~~~~~~]\"],\"app.buildTab.leaves\":[\"[Ļéáṽéš ~~]\"],\"app.buildTab.liquidLine\":[\"[Ļîǫûîð Ļîñé ~~~]\"],\"app.buildTab.matchFenceStyle\":[\"[Ṁáţçĥ ƒéñçé šţýļé ~~~~~]\"],\"app.buildTab.mep\":[\"[ṀÉÞ ~]\"],\"app.buildTab.off\":[\"[Öƒƒ ~]\"],\"app.buildTab.on\":[\"[Öñ ~]\"],\"app.buildTab.openRails\":[\"[Öþéñ ŕáîļš ~~~]\"],\"app.buildTab.opening\":[\"[Öþéñîñĝ ~~~]\"],\"app.buildTab.openingWidthM\":[\"[Öþéñîñĝ ŵîðţĥ (ɱ) ~~~~]\"],\"app.buildTab.outdoor\":[\"[Öûţðööŕ ~~~]\"],\"app.buildTab.picket\":[\"[Þîçķéţ ~~]\"],\"app.buildTab.roofType\":[\"[Ŕööƒ ţýþé ~~~]\"],\"app.buildTab.roomsAlreadyCreateTheirFloorAnd\":[\"[Ŕööɱš áļŕéáðý çŕéáţé ţĥéîŕ ƒļööŕ áñð çéîļîñĝ. Ûšé ţĥéšé ƒöŕ þļáţƒöŕɱš áñð öñé-öƒƒ šţŕûçţûŕé. ~~~~~~~~~~~~~~~~~~~~~~~]\"],\"app.buildTab.searchBuildToolsAndKitchenItems\":[\"[Šéáŕçĥ ƀûîļð ţööļš áñð ķîţçĥéñ îţéɱš ~~~~~~~~~~]\"],\"app.buildTab.searchToolsFridgeSink\":[\"[Šéáŕçĥ ţööļš, ƒŕîðĝé, šîñķ… ~~~~~~~]\"],\"app.buildTab.selectACurvedWallToMatch\":[\"[Šéļéçţ á çûŕṽéð ŵáļļ ţö ɱáţçĥ îţš ŕáðîûš áñð áŕç. ~~~~~~~~~~~~]\"],\"app.buildTab.singleGate\":[\"[Šîñĝļé ĝáţé ~~~]\"],\"app.buildTab.slabCeilingColumn\":[\"[Šļáƀ, çéîļîñĝ, çöļûɱñ… ~~~~~~]\"],\"app.buildTab.solidPrivacy\":[\"[Šöļîð þŕîṽáçý ~~~~]\"],\"app.buildTab.traceALineAlongsideAnExisting\":[\"[Ţŕáçé á ļîñé áļöñĝšîðé áñ éẋîšţîñĝ ļîñéšéţ (Ƒ). ~~~~~~~~~~~~]\"],\"app.buildTab.verticalSlats\":[\"[Ṽéŕţîçáļ šļáţš ~~~~]\"],\"app.editorNavbar.allProjects\":[\"[Åļļ þŕöĵéçţš ~~~~]\"],\"app.editorNavbar.preview\":[\"[Þŕéṽîéŵ ~~~]\"],\"app.editorNavbar.projectName\":[\"[Þŕöĵéçţ ñáɱé ~~~~]\"],\"app.editorNavbar.renameProject\":[\"[Ŕéñáɱé þŕöĵéçţ ~~~~]\"],\"app.editorNavbar.share\":[\"[Šĥáŕé ~~]\"],\"app.kitchenBrowser.addLabel\":[\"[Åðð \",[\"label\"],\" ~]\"],\"app.kitchenBrowser.addToKitchen\":[\"[Åðð ţö ķîţçĥéñ ~~~~]\"],\"app.kitchenBrowser.chooseAnItemThenClickTo\":[\"[Çĥööšé áñ îţéɱ, ţĥéñ çļîçķ ţö þļáçé îţ. Åþþļîáñçéš îñçļûðé ţĥéîŕ çáƀîñéţŕý. ~~~~~~~~~~~~~~~~~~~]\"],\"app.kitchenBrowser.findInThisProjectLength\":[\"[Ƒîñð îñ ţĥîš þŕöĵéçţ · \",[\"length\"],\" ~~~~~~]\"],\"app.kitchenBrowser.findName\":[\"[Ƒîñð \",[\"name\"],\" ~~]\"],\"app.kitchenBrowser.groupAdd\":[\"[Ķîţçĥéñ · Åðð ~~~]\"],\"app.kitchenBrowser.groupInThisProject\":[\"[Ķîţçĥéñ · Îñ ţĥîš þŕöĵéçţ ~~~~~~]\"],\"app.kitchenBrowser.kitchenCabinet\":[\"[Ķîţçĥéñ çáƀîñéţ ~~~~~]\"],\"app.kitchenBrowser.noMatchingKitchenItemsPlacedYet\":[\"[Ñö ɱáţçĥîñĝ ķîţçĥéñ îţéɱš þļáçéð ýéţ. ~~~~~~~~~~]\"],\"app.kitchenBrowser.selectAndShowInScene\":[\"[Šéļéçţ áñð šĥöŵ îñ šçéñé ~~~~~~]\"],\"app.lib.buildPalette.ceiling\":[\"[Çéîļîñĝ ~~~]\"],\"app.lib.buildPalette.column\":[\"[Çöļûɱñ ~~]\"],\"app.lib.buildPalette.door\":[\"[Ðööŕ ~~]\"],\"app.lib.buildPalette.duct\":[\"[Ðûçţ ~~]\"],\"app.lib.buildPalette.dwvPipe\":[\"[ÐŴṼ Þîþé ~~~]\"],\"app.lib.buildPalette.elevator\":[\"[Éļéṽáţöŕ ~~~]\"],\"app.lib.buildPalette.fence\":[\"[Ƒéñçé ~~]\"],\"app.lib.buildPalette.hvacUnit\":[\"[ĤṼÅÇ Ûñîţ ~~~]\"],\"app.lib.buildPalette.kitchen\":[\"[Ķîţçĥéñ ~~~]\"],\"app.lib.buildPalette.lineset\":[\"[Ļîñéšéţ ~~~]\"],\"app.lib.buildPalette.liquidLine\":[\"[Ļîǫûîð Ļîñé ~~~]\"],\"app.lib.buildPalette.mep\":[\"[ṀÉÞ ~]\"],\"app.lib.buildPalette.register\":[\"[Ŕéĝîšţéŕ ~~~]\"],\"app.lib.buildPalette.roof\":[\"[Ŕööƒ ~~]\"],\"app.lib.buildPalette.shelf\":[\"[Šĥéļƒ ~~]\"],\"app.lib.buildPalette.slab\":[\"[Šļáƀ ~~]\"],\"app.lib.buildPalette.spawnPoint\":[\"[Šþáŵñ þöîñţ ~~~]\"],\"app.lib.buildPalette.stairs\":[\"[Šţáîŕš ~~]\"],\"app.lib.buildPalette.terrace\":[\"[Ţéŕŕáçé ~~~]\"],\"app.lib.buildPalette.terrain\":[\"[Ţéŕŕáîñ ~~~]\"],\"app.lib.buildPalette.wall\":[\"[Ŵáļļ ~~]\"],\"app.lib.buildPalette.window\":[\"[Ŵîñðöŵ ~~]\"],\"app.lib.buildPanelModel.addFitting\":[\"[Åðð Ƒîţţîñĝ ~~~]\"],\"app.lib.buildPanelModel.addGate\":[\"[Åðð Ĝáţé ~~~]\"],\"app.lib.buildPanelModel.addOpenPassage\":[\"[Åðð Öþéñ Þáššáĝé ~~~~~]\"],\"app.lib.buildPanelModel.addTrap\":[\"[Åðð Ţŕáþ ~~~]\"],\"app.lib.buildPanelModel.build\":[\"[Ɓûîļð ~~]\"],\"app.lib.buildPanelModel.createFrom\":[\"[Çŕéáţé ƒŕöɱ ~~~]\"],\"app.lib.buildPanelModel.drawTheRoofFootprintWithTwo\":[\"[Ðŕáŵ ţĥé ŕööƒ ƒööţþŕîñţ ŵîţĥ ţŵö çöŕñéŕ çļîçķš. ~~~~~~~~~~~~]\"],\"app.lib.buildPanelModel.duct\":[\"[Ðûçţ ~~]\"],\"app.lib.buildPanelModel.dwvPipe\":[\"[ÐŴṼ Þîþé ~~~]\"],\"app.lib.buildPanelModel.featuresExtensions\":[\"[Ƒéáţûŕéš & éẋţéñšîöñš ~~~~~~]\"],\"app.lib.buildPanelModel.fence\":[\"[Ƒéñçé ~~]\"],\"app.lib.buildPanelModel.followLineset\":[\"[Ƒöļļöŵ ļîñéšéţ ~~~~]\"],\"app.lib.buildPanelModel.gatesOpenings\":[\"[Ĝáţéš & öþéñîñĝš ~~~~]\"],\"app.lib.buildPanelModel.hoverARoomToPreviewIts\":[\"[Ĥöṽéŕ á ŕööɱ ţö þŕéṽîéŵ îţš ƀöûñðáŕý, ţĥéñ çļîçķ ţö þļáçé. ~~~~~~~~~~~~~~]\"],\"app.lib.buildPanelModel.kitchen\":[\"[Ķîţçĥéñ ~~~]\"],\"app.lib.buildPanelModel.mep\":[\"[ṀÉÞ ~]\"],\"app.lib.buildPanelModel.modularCabinet\":[\"[Ṁöðûļáŕ Çáƀîñéţ ~~~~~]\"],\"app.lib.buildPanelModel.off\":[\"[Öƒƒ ~]\"],\"app.lib.buildPanelModel.on\":[\"[Öñ ~]\"],\"app.lib.buildPanelModel.painting\":[\"[Þáîñţîñĝ ~~~]\"],\"app.lib.buildPanelModel.roof\":[\"[Ŕööƒ ~~]\"],\"app.lib.buildPanelModel.roofType\":[\"[Ŕööƒ ţýþé ~~~]\"],\"app.lib.buildPanelModel.toolCount\":[\"[\",[\"count\",\"plural\",{\"one\":[\"#\",\" ţööļ\"],\"other\":[\"#\",\" ţööļš\"]}],\" ~~~]\"],\"app.lib.buildTabState.conical\":[\"[Çöñîçáļ ~~~]\"],\"app.lib.buildTabState.draw\":[\"[Ðŕáŵ ~~]\"],\"app.lib.buildTabState.dutch\":[\"[Ðûţçĥ ~~]\"],\"app.lib.buildTabState.flat\":[\"[Ƒļáţ ~~]\"],\"app.lib.buildTabState.gable\":[\"[Ĝáƀļé ~~]\"],\"app.lib.buildTabState.gambrel\":[\"[Ĝáɱƀŕéļ ~~~]\"],\"app.lib.buildTabState.hip\":[\"[Ĥîþ ~]\"],\"app.lib.buildTabState.mansard\":[\"[Ṁáñšáŕð ~~~]\"],\"app.lib.buildTabState.room\":[\"[Ŕööɱ ~~]\"],\"app.lib.buildTabState.shed\":[\"[Šĥéð ~~]\"],\"app.lib.buildTabState.wall\":[\"[Ŵáļļ ~~]\"],\"app.sceneLoader.anotherSessionSavedFirstRefresh\":[\"[Åñöţĥéŕ šéššîöñ šáṽéð ƒîŕšţ — ŕéƒŕéšĥ? ~~~~~~~~~~]\"],\"app.sceneLoader.build\":[\"[Ɓûîļð ~~]\"],\"app.sceneLoader.dismiss\":[\"[Ðîšɱîšš ~~~]\"],\"app.sceneLoader.items\":[\"[Îţéɱš ~~]\"],\"app.sceneLoader.paint\":[\"[Þáîñţ ~~]\"],\"app.sceneLoader.reload\":[\"[Ŕéļöáð ~~]\"],\"app.sceneLoader.scene\":[\"[Šçéñé ~~]\"],\"app.sceneLoader.settings\":[\"[Šéţţîñĝš ~~~]\"],\"app.sceneLoader.yourChangesHavenTBeenSaved\":[\"[Ýöûŕ çĥáñĝéš ĥáṽéñ'ţ ƀééñ šáṽéð. Ŕéļöáð ţö þîçķ ûþ ţĥé ļáţéšţ ṽéŕšîöñ. ~~~~~~~~~~~~~~~~~]\"],\"app.sharePanel.anyoneWithTheLinkCanView\":[\"[Åñýöñé ŵîţĥ ţĥé ļîñķ çáñ ṽîéŵ ţĥîš þŕöĵéçţ. Ţĥéý çáññöţ éðîţ îţ. ~~~~~~~~~~~~~~~~]\"],\"app.sharePanel.copied\":[\"[Çöþîéð ~~]\"],\"app.sharePanel.copy\":[\"[Çöþý ~~]\"],\"app.sharePanel.couldNotReadTheSharingState\":[\"[Çöûļð ñöţ ŕéáð ţĥé šĥáŕîñĝ šţáţé. ~~~~~~~~~]\"],\"app.sharePanel.couldNotTurnOffThePublic\":[\"[Çöûļð ñöţ ţûŕñ öƒƒ ţĥé þûƀļîç ļîñķ. ~~~~~~~~~]\"],\"app.sharePanel.couldNotTurnOnThePublic\":[\"[Çöûļð ñöţ ţûŕñ öñ ţĥé þûƀļîç ļîñķ. ~~~~~~~~~]\"],\"app.sharePanel.embedCode\":[\"[Éɱƀéð çöðé ~~~]\"],\"app.sharePanel.embedLink\":[\"[Éɱƀéð ļîñķ ~~~]\"],\"app.sharePanel.hideControls\":[\"[Ĥîðé çöñţŕöļš ~~~~]\"],\"app.sharePanel.link\":[\"[Ļîñķ ~~]\"],\"app.sharePanel.onlyThe3dViewNoHeader\":[\"[Öñļý ţĥé 3Ð ṽîéŵ, ñö ĥéáðéŕ öŕ ţööļƀáŕ. ~~~~~~~~~]\"],\"app.sharePanel.open\":[\"[Öþéñ ~~]\"],\"app.sharePanel.publicLink\":[\"[Þûƀļîç ļîñķ ~~~]\"],\"app.sharePanel.shareProject\":[\"[Šĥáŕé þŕöĵéçţ ~~~~]\"],\"app.viewerToolbar.automaticDimensions\":[\"[Åûţöɱáţîç ðîɱéñšîöñš ~~~~~~]\"],\"app.viewerToolbar.camera\":[\"[Çáɱéŕá ~~]\"],\"app.viewerToolbar.cleanPlanDimensionsAppearWithSelection\":[\"[Çļéáñ þļáñ; ðîɱéñšîöñš áþþéáŕ ŵîţĥ šéļéçţîöñ ~~~~~~~~~~~~]\"],\"app.viewerToolbar.collapseSidebar\":[\"[Çöļļáþšé šîðéƀáŕ ~~~~~]\"],\"app.viewerToolbar.crispOpaqueEdgeLines\":[\"[Çŕîšþ, öþáǫûé éðĝé ļîñéš ~~~~~~]\"],\"app.viewerToolbar.cutaway\":[\"[Çûţáŵáý ~~~]\"],\"app.viewerToolbar.default\":[\"[Ðéƒáûļţ ~~~]\"],\"app.viewerToolbar.display\":[\"[Ðîšþļáý ~~~]\"],\"app.viewerToolbar.displaySettings\":[\"[Ðîšþļáý šéţţîñĝš ~~~~~]\"],\"app.viewerToolbar.doorWindowMarks\":[\"[Ðööŕ/ŵîñðöŵ ɱáŕķš ~~~~~]\"],\"app.viewerToolbar.edges\":[\"[Éðĝéš ~~]\"],\"app.viewerToolbar.enterVr\":[\"[Éñţéŕ ṼŔ ~~~]\"],\"app.viewerToolbar.exitVr\":[\"[Éẋîţ ṼŔ ~~]\"],\"app.viewerToolbar.expandSidebar\":[\"[Éẋþáñð šîðéƀáŕ ~~~~]\"],\"app.viewerToolbar.expert\":[\"[Éẋþéŕţ ~~]\"],\"app.viewerToolbar.exploded\":[\"[Éẋþļöðéð ~~~]\"],\"app.viewerToolbar.faceOfStud\":[\"[Ƒáçé öƒ šţûð ~~~]\"],\"app.viewerToolbar.faintOutlineOfMajorCreases\":[\"[Ƒáîñţ öûţļîñé öƒ ɱáĵöŕ çŕéášéš ~~~~~~~~]\"],\"app.viewerToolbar.feetInches\":[\"[Ƒééţ & îñçĥéš ~~~]\"],\"app.viewerToolbar.finishedFaces\":[\"[Ƒîñîšĥéð ƒáçéš ~~~~]\"],\"app.viewerToolbar.flatAndFastNoAmbientOcclusion\":[\"[Ƒļáţ áñð ƒášţ — ñö áɱƀîéñţ öççļûšîöñ ~~~~~~~~~]\"],\"app.viewerToolbar.floorPlanAnnotations\":[\"[Ƒļööŕ þļáñ áññöţáţîöñš ~~~~~~]\"],\"app.viewerToolbar.floorPlanMode\":[\"[Ƒļööŕ þļáñ ɱöðé ~~~~]\"],\"app.viewerToolbar.fullAmbientOcclusion\":[\"[Ƒûļļ áɱƀîéñţ öççļûšîöñ ~~~~~~]\"],\"app.viewerToolbar.fullDocumentationAndAnnotationControls\":[\"[Ƒûļļ ðöçûɱéñţáţîöñ áñð áññöţáţîöñ çöñţŕöļš ~~~~~~~~~~~~]\"],\"app.viewerToolbar.fullHeight\":[\"[Ƒûļļ ĥéîĝĥţ ~~~]\"],\"app.viewerToolbar.fullWallThickness\":[\"[Ƒûļļ ŵáļļ ţĥîçķñéšš ~~~~~~]\"],\"app.viewerToolbar.grid\":[\"[Ĝŕîð ~~]\"],\"app.viewerToolbar.levelsMode\":[\"[Ļéṽéļš: \",[\"mode\"],\" ~~]\"],\"app.viewerToolbar.low\":[\"[Ļöŵ ~]\"],\"app.viewerToolbar.magneticSnap\":[\"[Ṁáĝñéţîç šñáþ ~~~~]\"],\"app.viewerToolbar.manual\":[\"[Ṁáñûáļ ~~]\"],\"app.viewerToolbar.manualDimensions\":[\"[Ṁáñûáļ ðîɱéñšîöñš ~~~~~]\"],\"app.viewerToolbar.measurements\":[\"[Ṁéášûŕéɱéñţš ~~~~]\"],\"app.viewerToolbar.meters\":[\"[Ṁéţéŕš ~~]\"],\"app.viewerToolbar.millimeters\":[\"[Ṁîļļîɱéţéŕš ~~~~]\"],\"app.viewerToolbar.n3dMeasurements\":[\"[3Ð ɱéášûŕéɱéñţš ~~~~]\"],\"app.viewerToolbar.noEdgeLines\":[\"[Ñö éðĝé ļîñéš ~~~~]\"],\"app.viewerToolbar.off\":[\"[Öƒƒ ~]\"],\"app.viewerToolbar.on\":[\"[Öñ ~]\"],\"app.viewerToolbar.orthographic\":[\"[Öŕţĥöĝŕáþĥîç ~~~~]\"],\"app.viewerToolbar.perspective\":[\"[Þéŕšþéçţîṽé ~~~~]\"],\"app.viewerToolbar.preview\":[\"[Þŕéṽîéŵ ~~~]\"],\"app.viewerToolbar.previewMode\":[\"[Þŕéṽîéŵ ɱöðé ~~~~]\"],\"app.viewerToolbar.render\":[\"[Ŕéñðéŕ ~~]\"],\"app.viewerToolbar.rendered\":[\"[Ŕéñðéŕéð ~~~]\"],\"app.viewerToolbar.roomLabels\":[\"[Ŕööɱ ļáƀéļš ~~~]\"],\"app.viewerToolbar.sceneTheme\":[\"[Šçéñé ţĥéɱé ~~~]\"],\"app.viewerToolbar.shadows\":[\"[Šĥáðöŵš ~~~]\"],\"app.viewerToolbar.singleWallAxis\":[\"[Šîñĝļé ŵáļļ áẋîš ~~~~~]\"],\"app.viewerToolbar.soft\":[\"[Šöƒţ ~~]\"],\"app.viewerToolbar.solid\":[\"[Šöļîð ~~]\"],\"app.viewerToolbar.solo\":[\"[Šöļö ~~]\"],\"app.viewerToolbar.stack\":[\"[Šţáçķ ~~]\"],\"app.viewerToolbar.stairAnnotations\":[\"[Šţáîŕ áññöţáţîöñš ~~~~~]\"],\"app.viewerToolbar.strong\":[\"[Šţŕöñĝ ~~]\"],\"app.viewerToolbar.structuralCoreFace\":[\"[Šţŕûçţûŕáļ çöŕé ƒáçé ~~~~~~]\"],\"app.viewerToolbar.structuralGridsColumnCenters\":[\"[Šţŕûçţûŕáļ ĝŕîðš & çöļûɱñ çéñţéŕš ~~~~~~~~~]\"],\"app.viewerToolbar.translucent\":[\"[Ţŕáñšļûçéñţ ~~~~]\"],\"app.viewerToolbar.units\":[\"[Ûñîţš ~~]\"],\"app.viewerToolbar.walkthrough\":[\"[Ŵáļķţĥŕöûĝĥ ~~~~]\"],\"app.viewerToolbar.wallCenterline\":[\"[Ŵáļļ çéñţéŕļîñé ~~~~~]\"],\"app.viewerToolbar.wallDimensions\":[\"[Ŵáļļ ðîɱéñšîöñš ~~~~~]\"],\"app.viewerToolbar.wallsLabel\":[\"[Ŵáļļš: \",[\"label\"],\" ~~]\"],\"core.level.basement\":[\"[Ɓášéɱéñţ ~~~]\"],\"core.level.basementNumber\":[\"[Ɓášéɱéñţ \",[\"number\"],\" ~~~]\"],\"core.level.floorNumber\":[\"[Ƒļööŕ \",[\"number\"],\" ~~]\"],\"core.level.groundFloor\":[\"[Ĝŕöûñð ƒļööŕ ~~~~]\"],\"editor.actionMenu.cameraActions.orbitLeft\":[\"[Öŕƀîţ Ļéƒţ ~~~]\"],\"editor.actionMenu.cameraActions.orbitRight\":[\"[Öŕƀîţ Ŕîĝĥţ ~~~]\"],\"editor.actionMenu.cameraActions.topView\":[\"[Ţöþ Ṽîéŵ ~~~]\"],\"editor.actionMenu.controlModes.delete\":[\"[Ðéļéţé ~~]\"],\"editor.actionMenu.controlModes.select\":[\"[Šéļéçţ ~~]\"],\"editor.actionMenu.followPascalPill.resumeFollowing\":[\"[Ŕéšûɱé ƒöļļöŵîñĝ ~~~~~]\"],\"editor.actionMenu.followPascalToggle.off\":[\"[Ƒöļļöŵ Þášçáļ: Öƒƒ ~~~~~]\"],\"editor.actionMenu.followPascalToggle.on\":[\"[Ƒöļļöŵ Þášçáļ: Öñ ~~~~~]\"],\"editor.actionMenu.furnishTools.appliance\":[\"[Åþþļîáñçé ~~~]\"],\"editor.actionMenu.furnishTools.bathroom\":[\"[Ɓáţĥŕööɱ ~~~]\"],\"editor.actionMenu.furnishTools.furniture\":[\"[Ƒûŕñîţûŕé ~~~]\"],\"editor.actionMenu.furnishTools.kitchen\":[\"[Ķîţçĥéñ ~~~]\"],\"editor.actionMenu.furnishTools.outdoor\":[\"[Öûţðööŕ ~~~]\"],\"editor.actionMenu.measurementControl.angle\":[\"[Åñĝļé ~~]\"],\"editor.actionMenu.measurementControl.angularDimension\":[\"[Åñĝûļáŕ ðîɱéñšîöñ ~~~~~]\"],\"editor.actionMenu.measurementControl.arcLength\":[\"[Åŕç ļéñĝţĥ ~~~]\"],\"editor.actionMenu.measurementControl.area\":[\"[Åŕéá ~~]\"],\"editor.actionMenu.measurementControl.centerMark\":[\"[Çéñţéŕ ɱáŕķ ~~~]\"],\"editor.actionMenu.measurementControl.chordDimension\":[\"[Çĥöŕð ðîɱéñšîöñ ~~~~~]\"],\"editor.actionMenu.measurementControl.continuousDimension\":[\"[Çöñţîñûöûš ðîɱéñšîöñ ~~~~~~]\"],\"editor.actionMenu.measurementControl.coordinateDimensions\":[\"[Çööŕðîñáţé ðîɱéñšîöñš ~~~~~~]\"],\"editor.actionMenu.measurementControl.diameterDimension\":[\"[Ðîáɱéţéŕ ðîɱéñšîöñ ~~~~~~]\"],\"editor.actionMenu.measurementControl.distance\":[\"[Ðîšţáñçé ~~~]\"],\"editor.actionMenu.measurementControl.floorPlan\":[\"[Ƒļööŕ þļáñ ~~~]\"],\"editor.actionMenu.measurementControl.linearDimension\":[\"[Ļîñéáŕ ðîɱéñšîöñ ~~~~~]\"],\"editor.actionMenu.measurementControl.measureSelectedlabel\":[\"[Ṁéášûŕé: \",[\"selectedLabel\"],\" ~~~]\"],\"editor.actionMenu.measurementControl.measurementOptions\":[\"[Ṁéášûŕéɱéñţ öþţîöñš ~~~~~~]\"],\"editor.actionMenu.measurementControl.measurementType\":[\"[Ṁéášûŕéɱéñţ ţýþé ~~~~~]\"],\"editor.actionMenu.measurementControl.perimeter\":[\"[Þéŕîɱéţéŕ ~~~]\"],\"editor.actionMenu.measurementControl.radiusDimension\":[\"[Ŕáðîûš ðîɱéñšîöñ ~~~~~]\"],\"editor.actionMenu.measurementControl.smart\":[\"[Šɱáŕţ ~~]\"],\"editor.actionMenu.measurementControl.volume\":[\"[Ṽöļûɱé ~~]\"],\"editor.actionMenu.pointAskButton.pointAndAsk\":[\"[Þöîñţ áñð ášķ ~~~~]\"],\"editor.actionMenu.pointAskButton.pointAndAskC\":[\"[Þöîñţ áñð ášķ (Ç) ~~~~]\"],\"editor.actionMenu.pointAskButton.pointAndAskWorksInThe\":[\"[Þöîñţ áñð ášķ ŵöŕķš îñ ţĥé 3Ð ṽîéŵ ~~~~~~~~]\"],\"editor.actionMenu.structureTools.ceiling\":[\"[Çéîļîñĝ ~~~]\"],\"editor.actionMenu.structureTools.column\":[\"[Çöļûɱñ ~~]\"],\"editor.actionMenu.structureTools.door\":[\"[Ðööŕ ~~]\"],\"editor.actionMenu.structureTools.duct\":[\"[Ðûçţ ~~]\"],\"editor.actionMenu.structureTools.ductFitting\":[\"[Ðûçţ Ƒîţţîñĝ ~~~~]\"],\"editor.actionMenu.structureTools.dwvPipe\":[\"[ÐŴṼ Þîþé ~~~]\"],\"editor.actionMenu.structureTools.elevator\":[\"[Éļéṽáţöŕ ~~~]\"],\"editor.actionMenu.structureTools.fence\":[\"[Ƒéñçé ~~]\"],\"editor.actionMenu.structureTools.gableRoof\":[\"[Ĝáƀļé Ŕööƒ ~~~]\"],\"editor.actionMenu.structureTools.hvacUnit\":[\"[ĤṼÅÇ Ûñîţ ~~~]\"],\"editor.actionMenu.structureTools.lineset\":[\"[Ļîñéšéţ ~~~]\"],\"editor.actionMenu.structureTools.liquidLine\":[\"[Ļîǫûîð Ļîñé ~~~]\"],\"editor.actionMenu.structureTools.pipeFitting\":[\"[Þîþé Ƒîţţîñĝ ~~~~]\"],\"editor.actionMenu.structureTools.register\":[\"[Ŕéĝîšţéŕ ~~~]\"],\"editor.actionMenu.structureTools.shelf\":[\"[Šĥéļƒ ~~]\"],\"editor.actionMenu.structureTools.slab\":[\"[Šļáƀ ~~]\"],\"editor.actionMenu.structureTools.spawnPoint\":[\"[Šþáŵñ Þöîñţ ~~~]\"],\"editor.actionMenu.structureTools.stairs\":[\"[Šţáîŕš ~~]\"],\"editor.actionMenu.structureTools.trap\":[\"[Ţŕáþ ~~]\"],\"editor.actionMenu.structureTools.wall\":[\"[Ŵáļļ ~~]\"],\"editor.actionMenu.structureTools.window\":[\"[Ŵîñðöŵ ~~]\"],\"editor.actionMenu.structureTools.zone\":[\"[Žöñé ~~]\"],\"editor.actionMenu.viewToggles.deleteGuideImage\":[\"[Ðéļéţé ĝûîðé îɱáĝé ~~~~~]\"],\"editor.actionMenu.viewToggles.deleteScan\":[\"[Ðéļéţé šçáñ ~~~]\"],\"editor.actionMenu.viewToggles.guideCount\":[\"[\",[\"count\",\"plural\",{\"one\":[\"#\",\" ĝûîðé îɱáĝé öñ ţĥîš ļéṽéļ\"],\"other\":[\"#\",\" ĝûîðé îɱáĝéš öñ ţĥîš ļéṽéļ\"]}],\" ~~~~~~~~~~~~~]\"],\"editor.actionMenu.viewToggles.guideImageNumber\":[\"[Ĝûîðé îɱáĝé \",[\"number\"],\" ~~~]\"],\"editor.actionMenu.viewToggles.guideImageSettings\":[\"[Ĝûîðé îɱáĝé šéţţîñĝš ~~~~~~]\"],\"editor.actionMenu.viewToggles.guideImages\":[\"[Ĝûîðé îɱáĝéš ~~~~]\"],\"editor.actionMenu.viewToggles.guides\":[\"[Ĝûîðéš ~~]\"],\"editor.actionMenu.viewToggles.guidesHidden\":[\"[Ĝûîðéš: Ĥîððéñ ~~~~]\"],\"editor.actionMenu.viewToggles.guidesVisible\":[\"[Ĝûîðéš: Ṽîšîƀļé ~~~~]\"],\"editor.actionMenu.viewToggles.hideGuideImages\":[\"[Ĥîðé ĝûîðé îɱáĝéš ~~~~~]\"],\"editor.actionMenu.viewToggles.hideReferenceFloor\":[\"[Ĥîðé ŕéƒéŕéñçé ƒļööŕ ~~~~~~]\"],\"editor.actionMenu.viewToggles.hideScans\":[\"[Ĥîðé šçáñš ~~~]\"],\"editor.actionMenu.viewToggles.levelsBelow\":[\"[\",[\"count\"],\" ƀéļöŵ ~~]\"],\"editor.actionMenu.viewToggles.noLowerFloorAvailable\":[\"[Ñö ļöŵéŕ ƒļööŕ áṽáîļáƀļé. ~~~~~~~]\"],\"editor.actionMenu.viewToggles.opacity\":[\"[Öþáçîţý ~~~]\"],\"editor.actionMenu.viewToggles.referenceFloor\":[\"[Ŕéƒéŕéñçé ƒļööŕ ~~~~~]\"],\"editor.actionMenu.viewToggles.referenceFloorSelectedlevelname\":[\"[Ŕéƒéŕéñçé ƒļööŕ: \",[\"selectedLevelName\"],\" ~~~~~]\"],\"editor.actionMenu.viewToggles.referenceFloorSettings\":[\"[Ŕéƒéŕéñçé ƒļööŕ šéţţîñĝš ~~~~~~~]\"],\"editor.actionMenu.viewToggles.referenceSettings\":[\"[Ŕéƒéŕéñçé šéţţîñĝš ~~~~~~]\"],\"editor.actionMenu.viewToggles.references\":[\"[Ŕéƒéŕéñçéš ~~~]\"],\"editor.actionMenu.viewToggles.referencesEmpty\":[\"[Ûþļöáð ĜĻƁ ɱéšĥéš áš šçáñ ŕéƒéŕéñçéš öŕ ƀļûéþŕîñţ îɱáĝéš áš ĝûîðé ŕéƒéŕéñçéš. ~~~~~~~~~~~~~~~~~~~~]\"],\"editor.actionMenu.viewToggles.referencesHidden\":[\"[Ŕéƒéŕéñçéš: Ĥîððéñ ~~~~~]\"],\"editor.actionMenu.viewToggles.referencesVisible\":[\"[Ŕéƒéŕéñçéš: Ṽîšîƀļé ~~~~~~]\"],\"editor.actionMenu.viewToggles.riserDiagram\":[\"[Ŕîšéŕ ðîáĝŕáɱ ~~~~]\"],\"editor.actionMenu.viewToggles.scanCount\":[\"[\",[\"count\",\"plural\",{\"one\":[\"#\",\" šçáñ öñ ţĥîš ļéṽéļ\"],\"other\":[\"#\",\" šçáñš öñ ţĥîš ļéṽéļ\"]}],\" ~~~~~~~~~~]\"],\"editor.actionMenu.viewToggles.scanNumber\":[\"[Šçáñ \",[\"number\"],\" ~~]\"],\"editor.actionMenu.viewToggles.scanSettings\":[\"[Šçáñ šéţţîñĝš ~~~~]\"],\"editor.actionMenu.viewToggles.scans\":[\"[Šçáñš ~~]\"],\"editor.actionMenu.viewToggles.scansHidden\":[\"[Šçáñš: Ĥîððéñ ~~~~]\"],\"editor.actionMenu.viewToggles.scansVisible\":[\"[Šçáñš: Ṽîšîƀļé ~~~~]\"],\"editor.actionMenu.viewToggles.showGuideImages\":[\"[Šĥöŵ ĝûîðé îɱáĝéš ~~~~~]\"],\"editor.actionMenu.viewToggles.showReferenceFloor\":[\"[Šĥöŵ ŕéƒéŕéñçé ƒļööŕ ~~~~~~]\"],\"editor.actionMenu.viewToggles.showScans\":[\"[Šĥöŵ šçáñš ~~~]\"],\"editor.actionMenu.viewToggles.uploadScanOrGuideImage\":[\"[Ûþļöáð šçáñ öŕ ĝûîðé îɱáĝé ~~~~~~~]\"],\"editor.backToHome\":[\"[Ɓáçķ ţö ĥöɱé ~~~]\"],\"editor.buildPanel.advanced\":[\"[Åðṽáñçéð ~~~]\"],\"editor.buildPanel.rooms.hint\":[\"[ŵáļļš · ƒļööŕ · çéîļîñĝ ~~~~~~]\"],\"editor.buildPanel.rooms.idle\":[\"[Þîçķ á šĥáþé ţö šţáŕţ. Éṽéŕý ŕööɱ ƀŕîñĝš îţš öŵñ ŵáļļš, ƒļööŕ áñð çéîļîñĝ. ~~~~~~~~~~~~~~~~~~]\"],\"editor.buildPanel.rooms.polygon.caption\":[\"[\",[\"lead\"],\" ţĥéñ ţĥé ƒîŕšţ öñé áĝáîñ ţö çļöšé. Ƒöŕ Ļ-šĥáþéš áñð áñĝļéð ŕööɱš. ~~~~~~~~~~~~~~~~]\"],\"editor.buildPanel.rooms.polygon.label\":[\"[Þöļýĝöñ ~~~]\"],\"editor.buildPanel.rooms.polygon.lead\":[\"[Çļîçķ éáçĥ çöŕñéŕ, ~~~~~]\"],\"editor.buildPanel.rooms.polygon.title\":[\"[Þöļýĝöñ ŕööɱ ~~~~]\"],\"editor.buildPanel.rooms.rectangle.caption\":[\"[\",[\"lead\"],\" öñ ţĥé ĝŕîð. Ŵáļļš, ƒļööŕ áñð çéîļîñĝ áŕé çŕéáţéð ţöĝéţĥéŕ. ~~~~~~~~~~~~~~~]\"],\"editor.buildPanel.rooms.rectangle.label\":[\"[Ŕéçţáñĝļé ~~~]\"],\"editor.buildPanel.rooms.rectangle.lead\":[\"[Çļîçķ ţŵö çöŕñéŕš ~~~~~]\"],\"editor.buildPanel.rooms.rectangle.title\":[\"[Ŕéçţáñĝļé ŕööɱ ~~~~]\"],\"editor.buildPanel.rooms.title\":[\"[Ŕööɱš ~~]\"],\"editor.buildPanel.rooms.walls.caption\":[\"[\",[\"lead\"],\" Çļöšé á ļööþ áñð îţ ƀéçöɱéš á ŕööɱ; ļéáṽé îţ öþéñ ƒöŕ þáŕţîţîöñš. ~~~~~~~~~~~~~~~~]\"],\"editor.buildPanel.rooms.walls.label\":[\"[Ŵáļļš ~~]\"],\"editor.buildPanel.rooms.walls.lead\":[\"[Ðŕáŵ öñé ŵáļļ áţ á ţîɱé. ~~~~~~]\"],\"editor.buildPanel.rooms.walls.title\":[\"[Ŵáļļš ~~]\"],\"editor.cameraControlsHint\":[\"[Çáɱéŕá çöñţŕöļš ĥîñţ ~~~~~~]\"],\"editor.cameraHint.pan\":[\"[Þáñ ~]\"],\"editor.cameraHint.rotate\":[\"[Ŕöţáţé ~~]\"],\"editor.cameraHint.zoom\":[\"[Žööɱ ~~]\"],\"editor.dismiss\":[\"[Ðîšɱîšš ~~~]\"],\"editor.dismissCameraControlsHint\":[\"[Ðîšɱîšš çáɱéŕá çöñţŕöļš ĥîñţ ~~~~~~~~]\"],\"editor.expandSidebar\":[\"[Éẋþáñð šîðéƀáŕ ~~~~]\"],\"editor.floatingActionMenu.axis\":[\"[Åẋîš ~~]\"],\"editor.floatingActionMenu.axis2\":[\"[⌥ áẋîš ~~]\"],\"editor.floatingActionMenu.noEquipment\":[\"[⚠ ñö éǫûîþɱéñţ ~~~~]\"],\"editor.floatingActionMenu.rTRotate\":[\"[Ŕ/Ţ ŕöţáţé ~~~]\"],\"editor.floatingActionMenu.registerCount\":[\"[\",[\"count\",\"plural\",{\"one\":[\"#\",\" ŕéĝîšţéŕ\"],\"other\":[\"#\",\" ŕéĝîšţéŕš\"]}],\" ~~~~~~]\"],\"editor.floatingActionMenu.runCount\":[\"[\",[\"count\",\"plural\",{\"one\":[\"#\",\" ŕûñ\"],\"other\":[\"#\",\" ŕûñš\"]}],\" ~~~]\"],\"editor.floatingActionMenu.system\":[\"[Šýšţéɱ ~~]\"],\"editor.floatingLevelSelector.addAFloorUnderTheRoof\":[\"[Åðð á ƒļööŕ ûñðéŕ ţĥé ŕööƒ ~~~~~~~]\"],\"editor.floatingLevelSelector.addLevelAbove\":[\"[Åðð ļéṽéļ áƀöṽé ~~~~]\"],\"editor.floatingLevelSelector.addLevelBelow\":[\"[Åðð ļéṽéļ ƀéļöŵ ~~~~]\"],\"editor.floatingLevelSelector.cancel\":[\"[Çáñçéļ ~~]\"],\"editor.floatingLevelSelector.delete\":[\"[Ðéļéţé ~~]\"],\"editor.floatingLevelSelector.deleteLevel\":[\"[Ðéļéţé ļéṽéļ ~~~~]\"],\"editor.floatingLevelSelector.deleteLevelConfirm\":[\"[Åŕé ýöû šûŕé ýöû ŵáñţ ţö ðéļéţé \",[\"levelName\"],\"? Åļļ ŵáļļš, ƒļööŕš, áñð öƀĵéçţš öñ ţĥîš ļéṽéļ ŵîļļ ƀé þéŕɱáñéñţļý ŕéɱöṽéð. ~~~~~~~~~~~~~~~~~~~~~~~~~~]\"],\"editor.floatingLevelSelector.dragToReorder\":[\"[Ðŕáĝ ţö ŕéöŕðéŕ ~~~~]\"],\"editor.floatingLevelSelector.duplicateLevel\":[\"[Ðûþļîçáţé ļéṽéļ ~~~~~]\"],\"editor.floatingLevelSelector.duplicateWithOptions\":[\"[Ðûþļîçáţé ŵîţĥ öþţîöñš... ~~~~~~]\"],\"editor.floatingLevelSelector.exitUnitFocus\":[\"[Éẋîţ ûñîţ ƒöçûš ~~~~]\"],\"editor.floatingLevelSelector.focusedUnitHasZonesHere\":[\"[Ƒöçûšéð ûñîţ ĥáš žöñéš ĥéŕé ~~~~~~~]\"],\"editor.floatingLevelSelector.groundFloorOverGrade\":[\"[Ţĥé ĝŕöûñð ƒļööŕ šţáñðš \",[\"distance\"],\" öṽéŕ ĝŕáðé. Šéáţ ţĥé ĝŕöûñð ƒļööŕ 8 îñ öṽéŕ ĝŕáðé ~~~~~~~~~~~~~~~~~~]\"],\"editor.floatingLevelSelector.groundFloorUnderGrade\":[\"[Ţĥé ĝŕöûñð ƒļööŕ šţáñðš \",[\"distance\"],\" ûñðéŕ ĝŕáðé. Šéáţ ţĥé ĝŕöûñð ƒļööŕ 8 îñ öṽéŕ ĝŕáðé ~~~~~~~~~~~~~~~~~~]\"],\"editor.floatingLevelSelector.groundLineTheLevelsUnderIt\":[\"[Ĝŕöûñð ļîñé: ţĥé ļéṽéļš ûñðéŕ îţ áŕé ƀéļöŵ ĝŕáðé ~~~~~~~~~~~~]\"],\"editor.floatingLevelSelector.groundOffset\":[\"[Ĝŕöûñð · \",[\"offset\"],\" ~~]\"],\"editor.floatingLevelSelector.insertLevelHere\":[\"[Îñšéŕţ ļéṽéļ ĥéŕé ~~~~~]\"],\"editor.floatingLevelSelector.levelHeight\":[\"[Ļéṽéļ ĥéîĝĥţ ~~~~]\"],\"editor.floatingLevelSelector.pasteCopiedSelection\":[\"[Þášţé çöþîéð šéļéçţîöñ ~~~~~~]\"],\"editor.floatingLevelSelector.reorderLevelname\":[\"[Ŕéöŕðéŕ \",[\"levelName\"],\" ~~~]\"],\"editor.floatingLevelSelector.seatTheBuildingSoThisFloor\":[\"[Šéáţ ţĥé ƀûîļðîñĝ šö ţĥîš ƒļööŕ šţáñðš áţ ĝŕáðé; ţĥé ƒļööŕš ûñðéŕ îţ áŕé ƀéļöŵ ĝŕáðé ~~~~~~~~~~~~~~~~~~~~~]\"],\"editor.floatingLevelSelector.setAsGroundFloor\":[\"[Šéţ áš ĝŕöûñð ƒļööŕ ~~~~~]\"],\"editor.floatingLevelSelector.theGroundLevelCannotBeDeleted\":[\"[Ţĥé ĝŕöûñð ļéṽéļ çáññöţ ƀé ðéļéţéð ~~~~~~~~~]\"],\"editor.floatingLevelSelector.thisFloorStandsAtGrade\":[\"[Ţĥîš ƒļööŕ šţáñðš áţ ĝŕáðé ~~~~~~~]\"],\"editor.floatingLevelSelector.unit\":[\"[Ûñîţ ~~]\"],\"editor.helpers.buildingHelper.cancel\":[\"[Çáñçéļ ~~]\"],\"editor.helpers.buildingHelper.placeBuilding\":[\"[Þļáçé ƀûîļðîñĝ ~~~~]\"],\"editor.helpers.buildingHelper.rotate\":[\"[Ŕöţáţé ~~]\"],\"editor.helpers.contextualHelperPanel.cancelPlacement\":[\"[Çáñçéļ þļáçéɱéñţ ~~~~~]\"],\"editor.helpers.contextualHelperPanel.continuationClickOrPressCTo\":[\"[Çöñţîñûáţîöñ — çļîçķ öŕ þŕéšš Ç ţö çýçļé ~~~~~~~~~~]\"],\"editor.helpers.contextualHelperPanel.continuationLabel\":[\"[Çöñţîñûáţîöñ: \",[\"label\"],\" ~~~~]\"],\"editor.helpers.contextualHelperPanel.dragToDrawFence\":[\"[Ðŕáĝ ţö ðŕáŵ ƒéñçé ~~~~~]\"],\"editor.helpers.contextualHelperPanel.eraseScope\":[\"[Éŕášé: \",[\"scope\"],\" ~~]\"],\"editor.helpers.contextualHelperPanel.eraseScopeClickOrPressShift\":[\"[Éŕášé šçöþé — çļîçķ öŕ þŕéšš Šĥîƒţ ţö çýçļé ~~~~~~~~~~~]\"],\"editor.helpers.contextualHelperPanel.eraseScopeLabel\":[\"[Éŕášé šçöþé: \",[\"scope\"],\" ~~~]\"],\"editor.helpers.contextualHelperPanel.fenceTypeClickOrPressT\":[\"[Ƒéñçé ţýþé — çļîçķ öŕ þŕéšš Ţ ţö šŵîţçĥ ƀéţŵééñ šţŕáîĝĥţ, çûŕṽéð áñð ƒŕééĥáñð ~~~~~~~~~~~~~~~~~~~]\"],\"editor.helpers.contextualHelperPanel.fewerShortcuts\":[\"[Ƒéŵéŕ šĥöŕţçûţš ~~~~~]\"],\"editor.helpers.contextualHelperPanel.finishCurveOrDoubleClick\":[\"[Ƒîñîšĥ çûŕṽé (öŕ ðöûƀļé-çļîçķ) ~~~~~~~~]\"],\"editor.helpers.contextualHelperPanel.gridLength\":[\"[Ĝŕîð: \",[\"length\"],\" ~~]\"],\"editor.helpers.contextualHelperPanel.gridStepClickOrTapCtrl\":[\"[Ĝŕîð šţéþ — çļîçķ öŕ ţáþ Çţŕļ ţö çýçļé ~~~~~~~~~]\"],\"editor.helpers.contextualHelperPanel.gridStepLength\":[\"[Ĝŕîð šţéþ: \",[\"length\"],\" ~~~]\"],\"editor.helpers.contextualHelperPanel.hoverAPaintedSurfaceToErase\":[\"[Ĥöṽéŕ á þáîñţéð šûŕƒáçé ţö éŕášé ~~~~~~~~~]\"],\"editor.helpers.contextualHelperPanel.hoverASurfaceToPaint\":[\"[Ĥöṽéŕ á šûŕƒáçé ţö þáîñţ ~~~~~~]\"],\"editor.helpers.contextualHelperPanel.hoverASurfaceToPickIts\":[\"[Ĥöṽéŕ á šûŕƒáçé ţö þîçķ îţš ɱáţéŕîáļ ~~~~~~~~~]\"],\"editor.helpers.contextualHelperPanel.moreShortcuts\":[\"[Ṁöŕé šĥöŕţçûţš ~~~~]\"],\"editor.helpers.contextualHelperPanel.paintScope\":[\"[Þáîñţ: \",[\"scope\"],\" ~~]\"],\"editor.helpers.contextualHelperPanel.paintScopeClickOrPressShift\":[\"[Þáîñţ šçöþé — çļîçķ öŕ þŕéšš Šĥîƒţ ţö çýçļé ~~~~~~~~~~~]\"],\"editor.helpers.contextualHelperPanel.paintScopeLabel\":[\"[Þáîñţ šçöþé: \",[\"scope\"],\" ~~~]\"],\"editor.helpers.contextualHelperPanel.pickScope\":[\"[Þîçķ: \",[\"scope\"],\" ~~]\"],\"editor.helpers.contextualHelperPanel.placeGateOnAFence\":[\"[Þļáçé ĝáţé öñ á ƒéñçé ~~~~~~]\"],\"editor.helpers.contextualHelperPanel.placePassageOnAFence\":[\"[Þļáçé þáššáĝé öñ á ƒéñçé ~~~~~~]\"],\"editor.helpers.contextualHelperPanel.selectAMaterialToPaint\":[\"[Šéļéçţ á ɱáţéŕîáļ ţö þáîñţ ~~~~~~~]\"],\"editor.helpers.contextualHelperPanel.snappingAngles\":[\"[Šñáþþîñĝ: Åñĝļéš ~~~~~]\"],\"editor.helpers.contextualHelperPanel.snappingGrid\":[\"[Šñáþþîñĝ: Ĝŕîð ~~~~]\"],\"editor.helpers.contextualHelperPanel.snappingLines\":[\"[Šñáþþîñĝ: Ļîñéš ~~~~]\"],\"editor.helpers.contextualHelperPanel.snappingModeClickOrPressShift\":[\"[Šñáþþîñĝ ɱöðé — çļîçķ öŕ þŕéšš Šĥîƒţ ţö çýçļé ~~~~~~~~~~~]\"],\"editor.helpers.contextualHelperPanel.snappingOff\":[\"[Šñáþþîñĝ: Öƒƒ ~~~~]\"],\"editor.helpers.contextualHelperPanel.straightContinuationIsUnavailableForCurved\":[\"[Šţŕáîĝĥţ çöñţîñûáţîöñ îš ûñáṽáîļáƀļé ƒöŕ çûŕṽéð öŕ ƒŕééĥáñð ƒéñçéš ~~~~~~~~~~~~~~~~~~]\"],\"editor.helpers.contextualHelperPanel.straightContinuous\":[\"[Šţŕáîĝĥţ: Çöñţîñûöûš ~~~~~~]\"],\"editor.helpers.contextualHelperPanel.straightFenceContinuationClickOrPress\":[\"[Šţŕáîĝĥţ ƒéñçé çöñţîñûáţîöñ — çļîçķ öŕ þŕéšš Ç ţö ţöĝĝļé ~~~~~~~~~~~~~~]\"],\"editor.helpers.contextualHelperPanel.straightSingle\":[\"[Šţŕáîĝĥţ: Šîñĝļé ~~~~~]\"],\"editor.helpers.helperManager.addPoint\":[\"[Åðð þöîñţ ~~~]\"],\"editor.helpers.helperManager.addPointClickTheFirstTo\":[\"[Åðð þöîñţ · çļîçķ ţĥé ƒîŕšţ ţö çļöšé ~~~~~~~~~]\"],\"editor.helpers.helperManager.brushSize\":[\"[Ɓŕûšĥ šîžé ~~~]\"],\"editor.helpers.helperManager.cancel\":[\"[Çáñçéļ ~~]\"],\"editor.helpers.helperManager.cancelPicking\":[\"[Çáñçéļ þîçķîñĝ ~~~~]\"],\"editor.helpers.helperManager.cancelStroke\":[\"[Çáñçéļ šţŕöķé ~~~~]\"],\"editor.helpers.helperManager.done\":[\"[Ðöñé ~~]\"],\"editor.helpers.helperManager.drawTheMezzanine\":[\"[Ðŕáŵ ţĥé ɱéžžáñîñé ~~~~~]\"],\"editor.helpers.helperManager.drawTheOpening\":[\"[Ðŕáŵ ţĥé öþéñîñĝ ~~~~~]\"],\"editor.helpers.helperManager.drawTheTerrace\":[\"[Ðŕáŵ ţĥé ţéŕŕáçé ~~~~~]\"],\"editor.helpers.helperManager.exitSmartMeasure\":[\"[Éẋîţ šɱáŕţ ɱéášûŕé ~~~~~]\"],\"editor.helpers.helperManager.finish\":[\"[Ƒîñîšĥ ~~]\"],\"editor.helpers.helperManager.finishAtTheEdge\":[\"[Ƒîñîšĥ áţ ţĥé éðĝé ~~~~~]\"],\"editor.helpers.helperManager.freeMove\":[\"[Ƒŕéé ɱöṽé ~~~]\"],\"editor.helpers.helperManager.freeMoveSlideDoorsAndWindows\":[\"[Ƒŕéé ɱöṽé · šļîðé ðööŕš áñð ŵîñðöŵš ~~~~~~~~~]\"],\"editor.helpers.helperManager.holdToPickAMaterial\":[\"[Ĥöļð ţö þîçķ á ɱáţéŕîáļ ~~~~~~]\"],\"editor.helpers.helperManager.inspectSurfaceDimensions\":[\"[Îñšþéçţ šûŕƒáçé ðîɱéñšîöñš ~~~~~~~~]\"],\"editor.helpers.helperManager.paintWithThisMaterial\":[\"[Þáîñţ ŵîţĥ ţĥîš ɱáţéŕîáļ ~~~~~~~]\"],\"editor.helpers.helperManager.pickTargetHeight\":[\"[Þîçķ ţáŕĝéţ ĥéîĝĥţ ~~~~~]\"],\"editor.helpers.helperManager.pinMeasurementLens\":[\"[Þîñ ɱéášûŕéɱéñţ ļéñš ~~~~~~]\"],\"editor.helpers.helperManager.place\":[\"[Þļáçé ~~]\"],\"editor.helpers.helperManager.placeInsideTheRoom\":[\"[Þļáçé îñšîðé ţĥé ŕööɱ ~~~~~~]\"],\"editor.helpers.helperManager.pressAnywhereDragToTheOpposite\":[\"[Þŕéšš áñýŵĥéŕé, ðŕáĝ ţö ţĥé öþþöšîţé çöŕñéŕ ~~~~~~~~~~~]\"],\"editor.helpers.helperManager.raiseOrLower\":[\"[Ŕáîšé öŕ ļöŵéŕ ~~~~]\"],\"editor.helpers.helperManager.removeAPaintedPartOrReset\":[\"[Ŕéɱöṽé á þáîñţéð þáŕţ, öŕ ŕéšéţ á šûŕƒáçé ~~~~~~~~~~]\"],\"editor.helpers.helperManager.removeLastPoint\":[\"[Ŕéɱöṽé ļášţ þöîñţ ~~~~~]\"],\"editor.helpers.helperManager.resize\":[\"[Ŕéšîžé ~~]\"],\"editor.helpers.helperManager.rotate45\":[\"[Ŕöţáţé ±45° ~~]\"],\"editor.helpers.helperManager.rotateTheSelection45\":[\"[Ŕöţáţé ţĥé šéļéçţîöñ ±45° ~~~~~~]\"],\"editor.helpers.helperManager.setOneCornerThenTheOpposite\":[\"[Šéţ öñé çöŕñéŕ, ţĥéñ ţĥé öþþöšîţé ~~~~~~~~~]\"],\"editor.helpers.itemHelper.cancel\":[\"[Çáñçéļ ~~]\"],\"editor.helpers.itemHelper.forcePlace\":[\"[Ƒöŕçé þļáçé ~~~]\"],\"editor.helpers.itemHelper.place\":[\"[Þļáçé ~~]\"],\"editor.helpers.itemHelper.rotate\":[\"[Ŕöţáţé ~~]\"],\"editor.helpers.registeredToolHelper.guidedConstraintsBypassed\":[\"[Ĝûîðéð çöñšţŕáîñţš ƀýþáššéð ~~~~~~~~]\"],\"editor.layers.collapse\":[\"[Çöļļáþšé ~~~]\"],\"editor.layers.defaultName.ceiling\":[\"[Çéîļîñĝ (\",[\"area\"],\") ~~~]\"],\"editor.layers.defaultName.collection\":[\"[Çöļļéçţîöñ ~~~]\"],\"editor.layers.defaultName.flight\":[\"[Ƒļîĝĥţ (\",[\"width\"],\"×\",[\"length\"],\"ɱ) ~~~]\"],\"editor.layers.defaultName.landing\":[\"[Ļáñðîñĝ (\",[\"width\"],\"×\",[\"length\"],\"ɱ) ~~~]\"],\"editor.layers.defaultName.node\":[\"[Ñöðé ~~]\"],\"editor.layers.defaultName.roof\":[\"[Ŕööƒ (\",[\"count\",\"plural\",{\"one\":[\"#\",\" šéĝɱéñţ\"],\"other\":[\"#\",\" šéĝɱéñţš\"]}],\") ~~~~~~]\"],\"editor.layers.defaultName.roofSegment\":[\"[\",[\"roofType\",\"select\",{\"hip\":[\"Ĥîþ\"],\"gable\":[\"Ĝáƀļé\"],\"shed\":[\"Šĥéð\"],\"gambrel\":[\"Ĝáɱƀŕéļ\"],\"dutch\":[\"Ðûţçĥ\"],\"mansard\":[\"Ṁáñšáŕð\"],\"flat\":[\"Ƒļáţ\"],\"conical\":[\"Çöñîçáļ\"],\"barrel\":[\"Ɓáŕŕéļ\"],\"other\":[\"Ŕööƒ\"]}],\" (\",[\"width\"],\"×\",[\"depth\"],\"ɱ) ~~~~~~~~~~~~~~~~]\"],\"editor.layers.defaultName.room\":[\"[Ŕööɱ (\",[\"area\"],\") ~~]\"],\"editor.layers.defaultName.slab\":[\"[Šļáƀ (\",[\"area\"],\") ~~]\"],\"editor.layers.defaultName.staircase\":[\"[Šţáîŕçášé (\",[\"count\",\"plural\",{\"one\":[\"#\",\" šéĝɱéñţ\"],\"other\":[\"#\",\" šéĝɱéñţš\"]}],\") ~~~~~~~~]\"],\"editor.layers.defaultName.zone\":[\"[Žöñé (\",[\"area\"],\") ~~]\"],\"editor.layers.expand\":[\"[Éẋþáñð ~~]\"],\"editor.layers.levelOptions\":[\"[\",[\"levelName\"],\" öþţîöñš ~~~]\"],\"editor.layers.rename\":[\"[Ŕéñáɱé ~~]\"],\"editor.layers.spaceColour\":[\"[\",[\"role\",\"select\",{\"room\":[\"Ŕööɱ çöļöûŕ\"],\"other\":[\"Žöñé çöļöûŕ\"]}],\" ~~~~~~]\"],\"editor.layers.unitColour\":[\"[Ûñîţ çöļöûŕ ~~~]\"],\"editor.levelDuplicateDialog.cancel\":[\"[Çáñçéļ ~~]\"],\"editor.levelDuplicateDialog.chooseWhatToCopyFromLevel\":[\"[Çĥööšé ŵĥáţ ţö çöþý ƒŕöɱ \",[\"levelName\"],\". ~~~~~~]\"],\"editor.levelDuplicateDialog.chooseWhatToCopyFromThisLevel\":[\"[Çĥööšé ŵĥáţ ţö çöþý ƒŕöɱ ţĥîš ļéṽéļ. ~~~~~~~~~]\"],\"editor.levelDuplicateDialog.duplicate\":[\"[Ðûþļîçáţé ~~~]\"],\"editor.levelDuplicateDialog.duplicateLevel\":[\"[Ðûþļîçáţé Ļéṽéļ ~~~~~]\"],\"editor.levelDuplicateDialog.everything\":[\"[Éṽéŕýţĥîñĝ ~~~]\"],\"editor.levelDuplicateDialog.structureFinishesAndPlacedItemsWithout\":[\"[Šţŕûçţûŕé, ƒîñîšĥéš, áñð þļáçéð îţéɱš, ŵîţĥöûţ ĝûîðé ŕéƒéŕéñçéš. ~~~~~~~~~~~~~~~~]\"],\"editor.levelDuplicateDialog.structureFurniture\":[\"[Šţŕûçţûŕé + ƒûŕñîţûŕé ~~~~~~]\"],\"editor.levelDuplicateDialog.structureMaterials\":[\"[Šţŕûçţûŕé + ɱáţéŕîáļš ~~~~~~]\"],\"editor.levelDuplicateDialog.structureMaterialsFurnitureAndReferences\":[\"[Šţŕûçţûŕé, ɱáţéŕîáļš, ƒûŕñîţûŕé, áñð ŕéƒéŕéñçéš. ~~~~~~~~~~~~]\"],\"editor.levelDuplicateDialog.structureOnly\":[\"[Šţŕûçţûŕé öñļý ~~~~]\"],\"editor.levelDuplicateDialog.structureWithTheCurrentMaterialAnd\":[\"[Šţŕûçţûŕé ŵîţĥ ţĥé çûŕŕéñţ ɱáţéŕîáļ áñð ƒîñîšĥ áššîĝñɱéñţš. ~~~~~~~~~~~~~~~~]\"],\"editor.levelDuplicateDialog.wallsSlabsRoofsStairsWindowsAnd\":[\"[Ŵáļļš, šļáƀš, ŕööƒš, šţáîŕš, ŵîñðöŵš, áñð ðööŕš ŵîţĥöûţ ƒîñîšĥéš. ~~~~~~~~~~~~~~~~]\"],\"editor.lib.contextualHelp.addOrRemoveObjectsFromThe\":[\"[Åðð öŕ ŕéɱöṽé öƀĵéçţš ƒŕöɱ ţĥé šéļéçţîöñ ~~~~~~~~~~~]\"],\"editor.lib.contextualHelp.adjustOneSideSCornerRadius\":[\"[Åðĵûšţ öñé šîðé’š çöŕñéŕ ŕáðîûš ~~~~~~~~]\"],\"editor.lib.contextualHelp.clearTheSelectionOrClickOutside\":[\"[Çļéáŕ ţĥé šéļéçţîöñ (öŕ çļîçķ öûţšîðé) ~~~~~~~~~~]\"],\"editor.lib.contextualHelp.clickAHandleDotToShow\":[\"[Çļîçķ á ĥáñðļé ðöţ ţö šĥöŵ ɱöṽé áŕŕöŵš ~~~~~~~~~~]\"],\"editor.lib.contextualHelp.clickOrDragTheSelectionTo\":[\"[Çļîçķ öŕ ðŕáĝ ţĥé šéļéçţîöñ ţö ɱöṽé îţ áš öñé ~~~~~~~~~~~]\"],\"editor.lib.contextualHelp.clickTheHandleDotToShow\":[\"[Çļîçķ ţĥé ĥáñðļé ðöţ ţö šĥöŵ ɱöṽé + ŕöţáţé ĥáñðļéš ~~~~~~~~~~~~]\"],\"editor.lib.contextualHelp.detachTheJointWhileDraggingAn\":[\"[Ðéţáçĥ ţĥé ĵöîñţ ŵĥîļé ðŕáĝĝîñĝ áñ áŕŕöŵ ~~~~~~~~~~~]\"],\"editor.lib.contextualHelp.dragLeftOrRightToRotate\":[\"[Ðŕáĝ ļéƒţ öŕ ŕîĝĥţ ţö ŕöţáţé šéļéçţéð öƀĵéçţ ~~~~~~~~~~~~]\"],\"editor.lib.contextualHelp.dragSelectedMovableObject\":[\"[Ðŕáĝ šéļéçţéð ɱöṽáƀļé öƀĵéçţ ~~~~~~~~]\"],\"editor.lib.contextualHelp.groupSelectionSessionOnly\":[\"[Ĝŕöûþ šéļéçţîöñ (šéššîöñ öñļý) ~~~~~~~~]\"],\"editor.lib.contextualHelp.holdToRotateFreely\":[\"[Ĥöļð ţö ŕöţáţé ƒŕééļý ~~~~~~]\"],\"editor.lib.contextualHelp.rotate45\":[\"[Ŕöţáţé ±45° ~~]\"],\"editor.lib.contextualHelp.rotateTheSelection45\":[\"[Ŕöţáţé ţĥé šéļéçţîöñ ±45° ~~~~~~]\"],\"editor.lib.contextualHelp.rotatingFreely\":[\"[Ŕöţáţîñĝ ƒŕééļý (ñö áñĝļé šţéþ) ~~~~~~~~]\"],\"editor.lib.contextualHelp.switchTheRotationAxisYX\":[\"[Šŵîţçĥ ţĥé ŕöţáţîöñ áẋîš (Ý → Ẋ → Ž) ~~~~~~~~]\"],\"editor.lib.contextualHelp.ungroupSessionSelection\":[\"[Ûñĝŕöûþ šéššîöñ šéļéçţîöñ ~~~~~~~]\"],\"editor.lib.continuation.continuous\":[\"[Çöñţîñûöûš ~~~]\"],\"editor.lib.continuation.continuousCanopy\":[\"[Çöñţîñûöûš çáñöþý ~~~~~]\"],\"editor.lib.continuation.continuousRun\":[\"[Çöñţîñûöûš ŕûñ ~~~~]\"],\"editor.lib.continuation.curvedFence\":[\"[Çûŕṽéð ƒéñçé ~~~~]\"],\"editor.lib.continuation.freehandFence\":[\"[Ƒŕééĥáñð ƒéñçé ~~~~]\"],\"editor.lib.continuation.placeMultiple\":[\"[Þļáçé ɱûļţîþļé ~~~~]\"],\"editor.lib.continuation.placeOnce\":[\"[Þļáçé öñçé ~~~]\"],\"editor.lib.continuation.polygonRoom\":[\"[Þöļýĝöñ ŕööɱ ~~~~]\"],\"editor.lib.continuation.rectangleRoom\":[\"[Ŕéçţáñĝļé ŕööɱ ~~~~]\"],\"editor.lib.continuation.singleCabinet\":[\"[Šîñĝļé çáƀîñéţ ~~~~]\"],\"editor.lib.continuation.singleCanopy\":[\"[Šîñĝļé çáñöþý ~~~~]\"],\"editor.lib.continuation.singleFence\":[\"[Šîñĝļé ƒéñçé ~~~~]\"],\"editor.lib.continuation.walls\":[\"[Ŵáļļš ~~]\"],\"editor.lib.hudTitle.cutOpening\":[\"[Çûţ öþéñîñĝ ~~~]\"],\"editor.lib.hudTitle.divideRoom\":[\"[Ðîṽîðé ŕööɱ ~~~]\"],\"editor.lib.hudTitle.editKind\":[\"[Éðîţ \",[\"kind\"],\" ~~]\"],\"editor.lib.hudTitle.erase\":[\"[Éŕášé ~~]\"],\"editor.lib.hudTitle.levelTerrain\":[\"[Ļéṽéļ ţéŕŕáîñ ~~~~]\"],\"editor.lib.hudTitle.lowerTerrain\":[\"[Ļöŵéŕ ţéŕŕáîñ ~~~~]\"],\"editor.lib.hudTitle.mezzanine\":[\"[Ṁéžžáñîñé ~~~]\"],\"editor.lib.hudTitle.moveKind\":[\"[Ṁöṽé \",[\"kind\"],\" ~~]\"],\"editor.lib.hudTitle.moveRoom\":[\"[Ṁöṽé ŕööɱ ~~~]\"],\"editor.lib.hudTitle.moveSelection\":[\"[Ṁöṽé šéļéçţîöñ ~~~~]\"],\"editor.lib.hudTitle.paint\":[\"[Þáîñţ ~~]\"],\"editor.lib.hudTitle.paintARectangle\":[\"[Þáîñţ á ŕéçţáñĝļé ~~~~~]\"],\"editor.lib.hudTitle.paintAShape\":[\"[Þáîñţ á šĥáþé ~~~~]\"],\"editor.lib.hudTitle.pickMaterial\":[\"[Þîçķ ɱáţéŕîáļ ~~~~]\"],\"editor.lib.hudTitle.raiseTerrain\":[\"[Ŕáîšé ţéŕŕáîñ ~~~~]\"],\"editor.lib.hudTitle.resize\":[\"[Ŕéšîžé ~~]\"],\"editor.lib.hudTitle.rotate\":[\"[Ŕöţáţé ~~]\"],\"editor.lib.hudTitle.select\":[\"[Šéļéçţ ~~]\"],\"editor.lib.hudTitle.smartMeasure\":[\"[Šɱáŕţ ɱéášûŕé ~~~~]\"],\"editor.lib.hudTitle.smoothTerrain\":[\"[Šɱööţĥ ţéŕŕáîñ ~~~~]\"],\"editor.lib.hudTitle.splitKind\":[\"[Šþļîţ \",[\"kind\"],\" ~~]\"],\"editor.lib.hudTitle.terrace\":[\"[Ţéŕŕáçé ~~~]\"],\"editor.lib.wallDrawVariant.polygonRoom\":[\"[Þöļýĝöñ ŕööɱ ~~~~]\"],\"editor.lib.wallDrawVariant.rectangleRoom\":[\"[Ŕéçţáñĝļé ŕööɱ ~~~~]\"],\"editor.lib.wallDrawVariant.walls\":[\"[Ŵáļļš ~~]\"],\"editor.reloadEditor\":[\"[Ŕéļöáð éðîţöŕ ~~~~]\"],\"editor.sidebar.iconRail.settings\":[\"[Šéţţîñĝš ~~~]\"],\"editor.sidebar.iconRail.site\":[\"[Šîţé ~~]\"],\"editor.sidebar.panels.itemsPanel.all\":[\"[Åļļ ~]\"],\"editor.sidebar.panels.itemsPanel.community\":[\"[Çöɱɱûñîţý ~~~]\"],\"editor.sidebar.panels.itemsPanel.functionTreePanel.all\":[\"[Åļļ ~]\"],\"editor.sidebar.panels.itemsPanel.functionTreePanel.community\":[\"[Çöɱɱûñîţý ~~~]\"],\"editor.sidebar.panels.itemsPanel.functionTreePanel.library\":[\"[Ļîƀŕáŕý ~~~]\"],\"editor.sidebar.panels.itemsPanel.functionTreePanel.mine\":[\"[Ṁîñé ~~]\"],\"editor.sidebar.panels.itemsPanel.functionTreePanel.noResultsForSearch\":[\"[Ñö ŕéšûļţš ƒöŕ “\",[\"search\"],\"” ~~~~]\"],\"editor.sidebar.panels.itemsPanel.functionTreePanel.search\":[\"[Šéáŕçĥ... ~~]\"],\"editor.sidebar.panels.itemsPanel.library\":[\"[Ļîƀŕáŕý ~~~]\"],\"editor.sidebar.panels.itemsPanel.mine\":[\"[Ṁîñé ~~]\"],\"editor.sidebar.panels.itemsPanel.noResultsForSearch\":[\"[Ñö ŕéšûļţš ƒöŕ “\",[\"search\"],\"” ~~~~]\"],\"editor.sidebar.panels.itemsPanel.search\":[\"[Šéáŕçĥ... ~~]\"],\"editor.sidebar.panels.sitePanel.addLevel\":[\"[Åðð ļéṽéļ ~~~]\"],\"editor.sidebar.panels.sitePanel.addPoint\":[\"[Åðð þöîñţ ~~~]\"],\"editor.sidebar.panels.sitePanel.area\":[\"[Åŕéá: ~~]\"],\"editor.sidebar.panels.sitePanel.baseElevation\":[\"[Ɓášé éļéṽáţîöñ ~~~~]\"],\"editor.sidebar.panels.sitePanel.building\":[\"[Ɓûîļðîñĝ ~~~]\"],\"editor.sidebar.panels.sitePanel.buildingTreeNode.addNewLevel\":[\"[Åðð ñéŵ ļéṽéļ ~~~~]\"],\"editor.sidebar.panels.sitePanel.buildingTreeNode.building\":[\"[Ɓûîļðîñĝ ~~~]\"],\"editor.sidebar.panels.sitePanel.cameraSnapshot\":[\"[Çáɱéŕá šñáþšĥöţ ~~~~~]\"],\"editor.sidebar.panels.sitePanel.capture\":[\"[Çáþţûŕé ~~~]\"],\"editor.sidebar.panels.sitePanel.clearSelection\":[\"[Çļéáŕ šéļéçţîöñ ~~~~~]\"],\"editor.sidebar.panels.sitePanel.clearSnapshot\":[\"[Çļéáŕ šñáþšĥöţ ~~~~]\"],\"editor.sidebar.panels.sitePanel.closeWallsAroundASpaceTo\":[\"[Çļöšé ŵáļļš áŕöûñð á šþáçé ţö ɱáķé á ŕööɱ. ~~~~~~~~~~]\"],\"editor.sidebar.panels.sitePanel.collectionTreeNode.collectionColour\":[\"[Çöļļéçţîöñ çöļöûŕ ~~~~~]\"],\"editor.sidebar.panels.sitePanel.collectionTreeNode.collections\":[\"[Çöļļéçţîöñš ~~~~]\"],\"editor.sidebar.panels.sitePanel.collectionTreeNode.deleteCollection\":[\"[Ðéļéţé çöļļéçţîöñ ~~~~~]\"],\"editor.sidebar.panels.sitePanel.delete\":[\"[Ðéļéţé ~~]\"],\"editor.sidebar.panels.sitePanel.deleteLevel\":[\"[Ðéļéţé ļéṽéļ ~~~~]\"],\"editor.sidebar.panels.sitePanel.drawAZone\":[\"[Ðŕáŵ á žöñé ~~~]\"],\"editor.sidebar.panels.sitePanel.duplicate\":[\"[Ðûþļîçáţé ~~~]\"],\"editor.sidebar.panels.sitePanel.duplicateLevel\":[\"[Ðûþļîçáţé ļéṽéļ ~~~~~]\"],\"editor.sidebar.panels.sitePanel.duplicateLevelWithOptions\":[\"[Ðûþļîçáţé ļéṽéļ ŵîţĥ öþţîöñš ~~~~~~~~]\"],\"editor.sidebar.panels.sitePanel.duplicateWithOptions\":[\"[Ðûþļîçáţé ŵîţĥ öþţîöñš... ~~~~~~]\"],\"editor.sidebar.panels.sitePanel.elements\":[\"[Éļéɱéñţš ~~~]\"],\"editor.sidebar.panels.sitePanel.guide\":[\"[Ĝûîðé ~~]\"],\"editor.sidebar.panels.sitePanel.hide\":[\"[Ĥîðé ~~]\"],\"editor.sidebar.panels.sitePanel.level\":[\"[Ļéṽéļ ~~]\"],\"editor.sidebar.panels.sitePanel.newUnit\":[\"[Ñéŵ ûñîţ ~~~]\"],\"editor.sidebar.panels.sitePanel.noBuildingsYet\":[\"[Ñö ƀûîļðîñĝš ýéţ ~~~~~]\"],\"editor.sidebar.panels.sitePanel.noElementsOnThisLevel\":[\"[Ñö éļéɱéñţš öñ ţĥîš ļéṽéļ ~~~~~~~]\"],\"editor.sidebar.panels.sitePanel.noLevelsYet\":[\"[Ñö ļéṽéļš ýéţ ~~~~]\"],\"editor.sidebar.panels.sitePanel.objectsSelected\":[\"[\",[\"count\",\"plural\",{\"one\":[\"#\",\" öƀĵéçţ šéļéçţéð\"],\"other\":[\"#\",\" öƀĵéçţš šéļéçţéð\"]}],\" ~~~~~~~~~]\"],\"editor.sidebar.panels.sitePanel.otherZones\":[\"[Öţĥéŕ žöñéš ~~~]\"],\"editor.sidebar.panels.sitePanel.perimeter\":[\"[Þéŕîɱéţéŕ: ~~~]\"],\"editor.sidebar.panels.sitePanel.propertyLine\":[\"[Þŕöþéŕţý Ļîñé ~~~~]\"],\"editor.sidebar.panels.sitePanel.rooms\":[\"[Ŕööɱš ~~]\"],\"editor.sidebar.panels.sitePanel.selectALevelToViewContent\":[\"[Šéļéçţ á ļéṽéļ ţö ṽîéŵ çöñţéñţ ~~~~~~~~]\"],\"editor.sidebar.panels.sitePanel.show\":[\"[Šĥöŵ ~~]\"],\"editor.sidebar.panels.sitePanel.site\":[\"[Šîţé ~~]\"],\"editor.sidebar.panels.sitePanel.takeSnapshot\":[\"[Ţáķé šñáþšĥöţ ~~~~]\"],\"editor.sidebar.panels.sitePanel.theGroundLevelCannotBeDeleted\":[\"[Ţĥé ĝŕöûñð ļéṽéļ çáññöţ ƀé ðéļéţéð ~~~~~~~~~]\"],\"editor.sidebar.panels.sitePanel.treeNodeActions.cameraSnapshot\":[\"[Çáɱéŕá šñáþšĥöţ ~~~~~]\"],\"editor.sidebar.panels.sitePanel.treeNodeActions.clearSnapshot\":[\"[Çļéáŕ šñáþšĥöţ ~~~~]\"],\"editor.sidebar.panels.sitePanel.treeNodeActions.hide\":[\"[Ĥîðé ~~]\"],\"editor.sidebar.panels.sitePanel.treeNodeActions.show\":[\"[Šĥöŵ ~~]\"],\"editor.sidebar.panels.sitePanel.treeNodeActions.takeSnapshot\":[\"[Ţáķé šñáþšĥöţ ~~~~]\"],\"editor.sidebar.panels.sitePanel.treeNodeActions.updateSnapshot\":[\"[Ûþðáţé šñáþšĥöţ ~~~~~]\"],\"editor.sidebar.panels.sitePanel.treeNodeActions.viewSnapshot\":[\"[Ṽîéŵ šñáþšĥöţ ~~~~]\"],\"editor.sidebar.panels.sitePanel.unitTreeNode.deleteUnit\":[\"[Ðéļéţé ûñîţ ~~~]\"],\"editor.sidebar.panels.sitePanel.unitTreeNode.focused\":[\"[Ƒöçûšéð ~~~]\"],\"editor.sidebar.panels.sitePanel.unitTreeNode.removeFromUnit\":[\"[Ŕéɱöṽé ƒŕöɱ ûñîţ ~~~~~]\"],\"editor.sidebar.panels.sitePanel.unitTreeNode.room\":[\"[Ŕööɱ ~~]\"],\"editor.sidebar.panels.sitePanel.unitTreeNode.zone\":[\"[Žöñé ~~]\"],\"editor.sidebar.panels.sitePanel.units\":[\"[Ûñîţš ~~]\"],\"editor.sidebar.panels.sitePanel.updateSnapshot\":[\"[Ûþðáţé šñáþšĥöţ ~~~~~]\"],\"editor.sidebar.panels.sitePanel.uploadScanFloorplan\":[\"[Ûþļöáð šçáñ/ƒļööŕþļáñ ~~~~~~]\"],\"editor.sidebar.panels.sitePanel.uploadingProgress\":[\"[\",[\"assetType\",\"select\",{\"guide\":[\"Ûþļöáðîñĝ ĝûîðé... \",[\"progress\"],\"%\"],\"other\":[\"Ûþļöáðîñĝ šçáñ... \",[\"progress\"],\"%\"]}],\" ~~~~~~~~~]\"],\"editor.sidebar.panels.sitePanel.viewSnapshot\":[\"[Ṽîéŵ šñáþšĥöţ ~~~~]\"],\"editor.sidebar.panels.sitePanel.zoneMembershipCheckbox.inUnitname\":[\"[Îñ \",[\"unitName\"],\" ~]\"],\"editor.sidebar.panels.zonePanel.actions\":[\"[Åçţîöñš ~~~]\"],\"editor.sidebar.panels.zonePanel.addOne\":[\"[Åðð öñé ~~]\"],\"editor.sidebar.panels.zonePanel.cameraSnapshot\":[\"[Çáɱéŕá šñáþšĥöţ ~~~~~]\"],\"editor.sidebar.panels.zonePanel.clearSnapshot\":[\"[Çļéáŕ šñáþšĥöţ ~~~~]\"],\"editor.sidebar.panels.zonePanel.delete\":[\"[Ðéļéţé ~~]\"],\"editor.sidebar.panels.zonePanel.deleteWithContents\":[\"[Ðéļéţé ŵîţĥ çöñţéñţš ~~~~~~]\"],\"editor.sidebar.panels.zonePanel.noZonesOnThisLevel\":[\"[Ñö žöñéš öñ ţĥîš ļéṽéļ. ~~~~~~]\"],\"editor.sidebar.panels.zonePanel.saveToCatalog\":[\"[Šáṽé ţö çáţáļöĝ ~~~~]\"],\"editor.sidebar.panels.zonePanel.selectALevelToViewAnd\":[\"[Šéļéçţ á ļéṽéļ ţö ṽîéŵ áñð çŕéáţé žöñéš ~~~~~~~~~~]\"],\"editor.sidebar.panels.zonePanel.takeSnapshot\":[\"[Ţáķé šñáþšĥöţ ~~~~]\"],\"editor.sidebar.panels.zonePanel.updateSnapshot\":[\"[Ûþðáţé šñáþšĥöţ ~~~~~]\"],\"editor.sidebar.panels.zonePanel.viewSnapshot\":[\"[Ṽîéŵ šñáþšĥöţ ~~~~]\"],\"editor.sidebar.usePluginPanels.labelPluginCrashed\":[\"[\\\"\",[\"label\"],\"\\\" þļûĝîñ çŕášĥéð ~~~~]\"],\"editor.sidebar.usePluginPanels.loading\":[\"[Ļöáðîñĝ… ~~~]\"],\"editor.sidebar.usePluginPanels.plugins\":[\"[Þļûĝîñš ~~~]\"],\"editor.sidebar.usePluginPanels.thisPanelHitAnErrorAnd\":[\"[Ţĥîš þáñéļ ĥîţ áñ éŕŕöŕ áñð ŵáš ûñļöáðéð ƒöŕ ţĥîš šéššîöñ. Ţĥé ŕéšţ öƒ ţĥé éðîţöŕ îš ûñჃéçţéð — ŕéļöáð ţö ţŕý áĝáîñ. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~]\"],\"editor.theEditorSceneFailedToRender\":[\"[Ţĥé éðîţöŕ šçéñé ƒáîļéð ţö ŕéñðéŕ ~~~~~~~~~]\"],\"editor.toolHint.aCurtainWallTakesNoCorner.1qxjv5i\":[\"[Å çûŕţáîñ ŵáļļ ţáķéš ñö çöŕñéŕ ŵîñðöŵ ~~~~~~~~~~]\"],\"editor.toolHint.aCurvedWallTakesNoCorner.1vdnaw5\":[\"[Å çûŕṽéð ŵáļļ ţáķéš ñö çöŕñéŕ ŵîñðöŵ ~~~~~~~~~]\"],\"editor.toolHint.addACornerClickTheFirst.o4r67t\":[\"[Åðð á çöŕñéŕ · çļîçķ ţĥé ƒîŕšţ ţö çļöšé ~~~~~~~~~]\"],\"editor.toolHint.anotherOpeningIsInTheWay.11l9dd0\":[\"[Åñöţĥéŕ öþéñîñĝ îš îñ ţĥé ŵáý áţ ţĥé çöŕñéŕ ~~~~~~~~~~~]\"],\"editor.toolHint.autoHangers.10554ka\":[\"[Åûţö ĥáñĝéŕš ~~~~]\"],\"editor.toolHint.autoHangersClickOrPressH.rwa3ka\":[\"[Åûţö ĥáñĝéŕš - çļîçķ öŕ þŕéšš Ĥ ţö ţöĝĝļé ~~~~~~~~~~]\"],\"editor.toolHint.autoHangersOff.7yx01x\":[\"[Åûţö ĥáñĝéŕš: Öƒƒ ~~~~~]\"],\"editor.toolHint.autoHangersOn.10b1umh\":[\"[Åûţö ĥáñĝéŕš: Öñ ~~~~]\"],\"editor.toolHint.bypassSnapping.w5lmdv\":[\"[Ɓýþášš šñáþþîñĝ ~~~~~]\"],\"editor.toolHint.cancel.ew9em3\":[\"[Çáñçéļ ~~]\"],\"editor.toolHint.cancelMove.lvp31c\":[\"[Çáñçéļ ɱöṽé ~~~]\"],\"editor.toolHint.cancelRunExit.zqjf3h\":[\"[Çáñçéļ ŕûñ / éẋîţ ~~~~]\"],\"editor.toolHint.cancelStartPoint.1xbq2lh\":[\"[Çáñçéļ šţáŕţ þöîñţ ~~~~~]\"],\"editor.toolHint.cornerWindow.1avkzpo\":[\"[Çöŕñéŕ ŵîñðöŵ ~~~~]\"],\"editor.toolHint.cuts.1y0axps\":[\"[Çûţš ~~]\"],\"editor.toolHint.cutsValue.ouzhvb\":[\"[Çûţš: \",[\"value\"],\" ~~]\"],\"editor.toolHint.cutsValueEven.1ngsz3\":[\"[Çûţš: \",[\"value\"],\", éṽéñ ~~~]\"],\"editor.toolHint.cycleMonoGableButterfly.1poga3m\":[\"[Çýçļé ɱöñö / ĝáƀļé / ƀûţţéŕƒļý ~~~~~~~]\"],\"editor.toolHint.cycleSnappingMode.1ct0gn6\":[\"[Çýçļé šñáþþîñĝ ɱöðé ~~~~~~]\"],\"editor.toolHint.doorStyleClickOrPressL.33pe65\":[\"[Ðööŕ šţýļé — çļîçķ öŕ þŕéšš Ļ ţö çýçļé ~~~~~~~~~]\"],\"editor.toolHint.doorTypeClickOrPressO.1hhh8gt\":[\"[Ðööŕ ţýþé — çļîçķ öŕ þŕéšš Ö ţö çýçļé ~~~~~~~~~]\"],\"editor.toolHint.dropDownspoutFromOutlet.1k4h1m4\":[\"[Ðŕöþ ðöŵñšþöûţ ƒŕöɱ öûţļéţ ~~~~~~~]\"],\"editor.toolHint.ductDiameterDownUp.1wdz5vq\":[\"[Ðûçţ ðîáɱéţéŕ ðöŵñ / ûþ ~~~~~~]\"],\"editor.toolHint.endRunCancel.59dh2w\":[\"[Éñð ŕûñ / çáñçéļ ~~~~]\"],\"editor.toolHint.exit.engmg5\":[\"[Éẋîţ ~~]\"],\"editor.toolHint.exitDrawing.9noxyb\":[\"[Éẋîţ ðŕáŵîñĝ ~~~~]\"],\"editor.toolHint.finishAndContinue.1gpfsks\":[\"[Ƒîñîšĥ áñð çöñţîñûé ~~~~~~]\"],\"editor.toolHint.finishCeiling.1c1lfel\":[\"[Ƒîñîšĥ çéîļîñĝ ~~~~]\"],\"editor.toolHint.finishGridAxis.1wvrfhr\":[\"[Ƒîñîšĥ ĝŕîð áẋîš ~~~~~]\"],\"editor.toolHint.finishMeasurement.1e4gv16\":[\"[Ƒîñîšĥ ɱéášûŕéɱéñţ ~~~~~~]\"],\"editor.toolHint.finishMultiPointWitnesses.8wzskz\":[\"[Ƒîñîšĥ ɱûļţî-þöîñţ ŵîţñéššéš ~~~~~~~~]\"],\"editor.toolHint.finishSlab.xmnm8e\":[\"[Ƒîñîšĥ šļáƀ ~~~]\"],\"editor.toolHint.flipSide.172xku9\":[\"[Ƒļîþ šîðé ~~~]\"],\"editor.toolHint.followTraceALineset.mgquwe\":[\"[Ƒöļļöŵ: ţŕáçé á ļîñéšéţ ~~~~~~]\"],\"editor.toolHint.forcePlace.1hq1nr\":[\"[Ƒöŕçé þļáçé ~~~]\"],\"editor.toolHint.freePlacement.1nztdac\":[\"[Ƒŕéé þļáçéɱéñţ ~~~~]\"],\"editor.toolHint.goVerticalClickToPlace.dg8g6m\":[\"[Ĝö ṽéŕţîçáļ ↕, çļîçķ ţö þļáçé ~~~~~~~]\"],\"editor.toolHint.highlightOutlet.65hoq8\":[\"[Ĥîĝĥļîĝĥţ öûţļéţ ~~~~~]\"],\"editor.toolHint.joinAsACornerWindow.jvdp4j\":[\"[Ĵöîñ áš á çöŕñéŕ ŵîñðöŵ ~~~~~~]\"],\"editor.toolHint.key.altDrag.ai3wn9\":[\"[Åļţ + ðŕáĝ ~~~]\"],\"editor.toolHint.key.backspace.qy6qx8\":[\"[Ɓáçķšþáçé ~~~]\"],\"editor.toolHint.key.click.m8sun\":[\"[Çļîçķ ~~]\"],\"editor.toolHint.key.clickAgain.190ws9j\":[\"[Çļîçķ áĝáîñ ~~~]\"],\"editor.toolHint.key.command.1j2mkia\":[\"[Çöɱɱáñð ~~~]\"],\"editor.toolHint.key.control.10fbl8e\":[\"[Çöñţŕöļ ~~~]\"],\"editor.toolHint.key.delete.oay2cq\":[\"[Ðéļéţé ~~]\"],\"editor.toolHint.key.doubleClick.vlma6o\":[\"[Ðöûƀļé çļîçķ ~~~~]\"],\"editor.toolHint.key.drag.8pwtpf\":[\"[Ðŕáĝ ~~]\"],\"editor.toolHint.key.enter.1ctpui5\":[\"[Éñţéŕ ~~]\"],\"editor.toolHint.key.hover.6xw79p\":[\"[Ĥöṽéŕ ~~]\"],\"editor.toolHint.key.hoverADuctEnd.19axr3b\":[\"[Ĥöṽéŕ á ðûçţ éñð ~~~~]\"],\"editor.toolHint.key.hoverAPipeEnd.1jbum5f\":[\"[Ĥöṽéŕ á þîþé éñð ~~~~]\"],\"editor.toolHint.key.hoverGutter.1dwcsno\":[\"[Ĥöṽéŕ ĝûţţéŕ ~~~~]\"],\"editor.toolHint.key.leftClick.s4gwfc\":[\"[Ļéƒţ çļîçķ ~~~]\"],\"editor.toolHint.key.middleClick.1jbaan4\":[\"[Ṁîððļé çļîçķ ~~~~]\"],\"editor.toolHint.key.rShiftR.13bnobh\":[\"[Ŕ / Šĥîƒţ+Ŕ ~~~]\"],\"editor.toolHint.key.rightClick.1ovld0h\":[\"[Ŕîĝĥţ çļîçķ ~~~]\"],\"editor.toolHint.key.scroll.ai6wr0\":[\"[Šçŕöļļ ~~]\"],\"editor.toolHint.key.scrollWheel.18j0ix7\":[\"[Šçŕöļļ ŵĥééļ ~~~~]\"],\"editor.toolHint.key.space.1hrh82t\":[\"[Šþáçé ~~]\"],\"editor.toolHint.key.tab.1xsal0s\":[\"[Ţáƀ ~]\"],\"editor.toolHint.mountFloorCeilingWall.32dxpv\":[\"[Ṁöûñţ: ƒļööŕ / çéîļîñĝ / ŵáļļ ~~~~~~~]\"],\"editor.toolHint.noRoomForTheMatchingWindow.1755948\":[\"[Ñö ŕööɱ ƒöŕ ţĥé ɱáţçĥîñĝ ŵîñðöŵ öñ ţĥé öţĥéŕ ŵáļļ ~~~~~~~~~~~~]\"],\"editor.toolHint.noWallMeetsHere.19n99yc\":[\"[Ñö ŵáļļ ɱééţš ĥéŕé ~~~~~]\"],\"editor.toolHint.numberOfCutsScrollOrClick.1kqe84b\":[\"[Ñûɱƀéŕ öƒ çûţš — šçŕöļļ öŕ çļîçķ ţö çĥáñĝé ~~~~~~~~~~]\"],\"editor.toolHint.pickWitnessPoint.k3hgh1\":[\"[Þîçķ ŵîţñéšš þöîñţ ~~~~~]\"],\"editor.toolHint.pipeSizeDownUp.wp04og\":[\"[Þîþé šîžé ðöŵñ / ûþ ~~~~~]\"],\"editor.toolHint.placeAndContinue.qfwkrq\":[\"[Þļáçé áñð çöñţîñûé ~~~~~]\"],\"editor.toolHint.placeBlock.1aylwrx\":[\"[Þļáçé ƀļöçķ ~~~]\"],\"editor.toolHint.placeBoxVentOnRoof.kf88e5\":[\"[Þļáçé ƀöẋ ṽéñţ öñ ŕööƒ ~~~~~~]\"],\"editor.toolHint.placeCabinet.b0ouyk\":[\"[Þļáçé çáƀîñéţ ~~~~]\"],\"editor.toolHint.placeCanopyOrSetTheNext.12l7zf8\":[\"[Þļáçé çáñöþý öŕ šéţ ţĥé ñéẋţ ŕûñ þöîñţ ~~~~~~~~~~]\"],\"editor.toolHint.placeChimneyOnRoof.19dbqu\":[\"[Þļáçé çĥîɱñéý öñ ŕööƒ ~~~~~~]\"],\"editor.toolHint.placeColumn.1w2vq86\":[\"[Þļáçé çöļûɱñ ~~~~]\"],\"editor.toolHint.placeCupolaOnRoof.ofx3bn\":[\"[Þļáçé çûþöļá öñ ŕööƒ ~~~~~~]\"],\"editor.toolHint.placeDimensionLineWhenNeeded.bjw2cj\":[\"[Þļáçé ðîɱéñšîöñ ļîñé ŵĥéñ ñééðéð ~~~~~~~~~]\"],\"editor.toolHint.placeDoorOnWall.1jwadf\":[\"[Þļáçé ðööŕ öñ ŵáļļ ~~~~~]\"],\"editor.toolHint.placeDormerOnRoof.1w518a6\":[\"[Þļáçé ðöŕɱéŕ öñ ŕööƒ ~~~~~~]\"],\"editor.toolHint.placeElevator.1f65zva\":[\"[Þļáçé éļéṽáţöŕ ~~~~]\"],\"editor.toolHint.placeEyebrowVentOnRoof.1h1tqxn\":[\"[Þļáçé éýéƀŕöŵ ṽéñţ öñ ŕööƒ ~~~~~~~]\"],\"editor.toolHint.placeFitting.1pmx3vn\":[\"[Þļáçé ƒîţţîñĝ ~~~~]\"],\"editor.toolHint.placeGutterOnRoofEave.llwzf9\":[\"[Þļáçé ĝûţţéŕ öñ ŕööƒ éáṽé ~~~~~~~]\"],\"editor.toolHint.placeItLockedTo45.16e4csk\":[\"[Þļáçé îţ (ļöçķéð ţö 45°) ~~~~~]\"],\"editor.toolHint.placeItem.teynf\":[\"[Þļáçé îţéɱ ~~~]\"],\"editor.toolHint.placeMeasurementPoint.bsatli\":[\"[Þļáçé ɱéášûŕéɱéñţ þöîñţ ~~~~~~~]\"],\"editor.toolHint.placeOnAFence.1dptstr\":[\"[Þļáçé öñ á ƒéñçé ~~~~]\"],\"editor.toolHint.placeRegister.1uebycd\":[\"[Þļáçé ŕéĝîšţéŕ ~~~~]\"],\"editor.toolHint.placeRidgeVentOnRoof.2tpd8r\":[\"[Þļáçé ŕîðĝé ṽéñţ öñ ŕööƒ ~~~~~~]\"],\"editor.toolHint.placeShelf.y4l3iw\":[\"[Þļáçé šĥéļƒ ~~~]\"],\"editor.toolHint.placeSkylightOnRoof.e215pe\":[\"[Þļáçé šķýļîĝĥţ öñ ŕööƒ ~~~~~~]\"],\"editor.toolHint.placeSolarPanelArrayOnRoof.kk11fn\":[\"[Þļáçé šöļáŕ þáñéļ áŕŕáý öñ ŕööƒ ~~~~~~~~]\"],\"editor.toolHint.placeSpawnPoint.205o25\":[\"[Þļáçé šþáŵñ þöîñţ ~~~~~]\"],\"editor.toolHint.placeStairs.zwxxu2\":[\"[Þļáçé šţáîŕš ~~~~]\"],\"editor.toolHint.placeTrap.1gxemn3\":[\"[Þļáçé ţŕáþ ~~~]\"],\"editor.toolHint.placeTurbineVentOnRoof.1iqeluf\":[\"[Þļáçé ţûŕƀîñé ṽéñţ öñ ŕööƒ ~~~~~~~]\"],\"editor.toolHint.placeUnit.8zkx4q\":[\"[Þļáçé ûñîţ ~~~]\"],\"editor.toolHint.placeWindowOnWall.1k3qnfb\":[\"[Þļáçé ŵîñðöŵ öñ ŵáļļ ~~~~~~]\"],\"editor.toolHint.placeWithoutTheCornerSnap.1nifqew\":[\"[Þļáçé ŵîţĥöûţ ţĥé çöŕñéŕ šñáþ ~~~~~~~~]\"],\"editor.toolHint.placement.13lcvts\":[\"[Þļáçéɱéñţ ~~~]\"],\"editor.toolHint.placementAuto.1caa52d\":[\"[Þļáçéɱéñţ: Åûţö ~~~~]\"],\"editor.toolHint.placementGround.1ruz145\":[\"[Þļáçéɱéñţ: Ĝŕöûñð ~~~~~]\"],\"editor.toolHint.placementRoof.renkw8\":[\"[Þļáçéɱéñţ: Ŕööƒ ~~~~]\"],\"editor.toolHint.placementSurfaceClickOrPressP.w56h19\":[\"[Þļáçéɱéñţ šûŕƒáçé - çļîçķ öŕ þŕéšš Þ ţö çýçļé ~~~~~~~~~~~]\"],\"editor.toolHint.placementType.1mdpl60\":[\"[Þļáçéɱéñţ ţýþé ~~~~]\"],\"editor.toolHint.placementTypeClickOrPressI.10cgxh2\":[\"[Þļáçéɱéñţ ţýþé — çļîçķ öŕ þŕéšš Î ţö ţöĝĝļé ~~~~~~~~~~~]\"],\"editor.toolHint.removeLastPoint.2dmdcx\":[\"[Ŕéɱöṽé ļášţ þöîñţ ~~~~~]\"],\"editor.toolHint.removeLastWitness.1b6vvzw\":[\"[Ŕéɱöṽé ļášţ ŵîţñéšš ~~~~~~]\"],\"editor.toolHint.rotate.1thqa0a\":[\"[Ŕöţáţé ~~]\"],\"editor.toolHint.rotate45.9zq68u\":[\"[Ŕöţáţé ±45° ~~]\"],\"editor.toolHint.rotate45FloorCeiling.m9t57d\":[\"[Ŕöţáţé ±45° (ƒļööŕ / çéîļîñĝ) ~~~~~~]\"],\"editor.toolHint.rotateGhost15.rsa52c\":[\"[Ŕöţáţé ĝĥöšţ ±15° ~~~~]\"],\"editor.toolHint.rotateOrFlipTheRunSide.t5ior7\":[\"[Ŕöţáţé öŕ ƒļîþ ţĥé ŕûñ šîðé ~~~~~~~]\"],\"editor.toolHint.rotateRoofDirection90.tvbji2\":[\"[Ŕöţáţé ŕööƒ ðîŕéçţîöñ 90° ~~~~~~]\"],\"editor.toolHint.rotateSpawnPoint.1opcuu7\":[\"[Ŕöţáţé šþáŵñ þöîñţ ~~~~~]\"],\"editor.toolHint.roundRectangularOval.e4nh6x\":[\"[Ŕöûñð / ŕéçţáñĝûļáŕ / öṽáļ ~~~~~~]\"],\"editor.toolHint.setFenceStartEnd.1phbwsq\":[\"[Šéţ ƒéñçé šţáŕţ / éñð ~~~~~]\"],\"editor.toolHint.setOneCornerThenTheOpposite.8tsl49\":[\"[Šéţ öñé çöŕñéŕ, ţĥéñ ţĥé öþþöšîţé ~~~~~~~~~]\"],\"editor.toolHint.setRoofFootprint.p50n0o\":[\"[Šéţ ŕööƒ ƒööţþŕîñţ ~~~~~]\"],\"editor.toolHint.setWallStartEnd.1r8ubcx\":[\"[Šéţ ŵáļļ šţáŕţ / éñð ~~~~~]\"],\"editor.toolHint.slopeLevel.ftqp67\":[\"[Šļöþé / ļéṽéļ ~~~]\"],\"editor.toolHint.snapOntoTheRun.86yhmp\":[\"[Šñáþ öñţö ţĥé ŕûñ ~~~~~]\"],\"editor.toolHint.splitAtTheMarks.x5tpdd\":[\"[Šþļîţ áţ ţĥé ɱáŕķš ~~~~~]\"],\"editor.toolHint.startGridAxis.k92yza\":[\"[Šţáŕţ ĝŕîð áẋîš ~~~~]\"],\"editor.toolHint.startLineset.23q8dh\":[\"[Šţáŕţ ļîñéšéţ ~~~~]\"],\"editor.toolHint.startLiquidLine.1rlxsgd\":[\"[Šţáŕţ ļîǫûîð ļîñé ~~~~~]\"],\"editor.toolHint.startRun.r6fc5u\":[\"[Šţáŕţ ŕûñ ~~~]\"],\"editor.toolHint.startSegment.rolym6\":[\"[Šţáŕţ šéĝɱéñţ ~~~~]\"],\"editor.toolHint.stepBackOrCancel.zbfdkn\":[\"[Šţéþ ƀáçķ öŕ çáñçéļ ~~~~~]\"],\"editor.toolHint.style.nf3vcm\":[\"[Šţýļé ~~]\"],\"editor.toolHint.styleBarn.k9n1x\":[\"[Šţýļé: Ɓáŕñ ~~~]\"],\"editor.toolHint.styleCasement.ziklec\":[\"[Šţýļé: Çášéɱéñţ ~~~~]\"],\"editor.toolHint.styleCraftsman.52e6a9\":[\"[Šţýļé: Çŕáƒţšɱáñ ~~~~~]\"],\"editor.toolHint.styleDoubleHung.1lg8pkg\":[\"[Šţýļé: Ðöûƀļé-ĥûñĝ ~~~~~]\"],\"editor.toolHint.styleFrench.1ue3j64\":[\"[Šţýļé: Ƒŕéñçĥ ~~~~]\"],\"editor.toolHint.styleGlass.qudnb4\":[\"[Šţýļé: Ĝļášš ~~~]\"],\"editor.toolHint.styleGrid.1vuq4po\":[\"[Šţýļé: Ĝŕîð ~~~]\"],\"editor.toolHint.styleHalfLouvered.13b1few\":[\"[Šţýļé: Ĥáļƒ-ļöûṽéŕéð ~~~~~~]\"],\"editor.toolHint.styleHorizontalBands.12ethxk\":[\"[Šţýļé: Ĥöŕîžöñţáļ ƀáñðš ~~~~~~]\"],\"editor.toolHint.styleModern.1fh8hhn\":[\"[Šţýļé: Ṁöðéŕñ ~~~~]\"],\"editor.toolHint.stylePanel.922jze\":[\"[Šţýļé: Þáñéļ ~~~]\"],\"editor.toolHint.stylePaneledGlass.17a17en\":[\"[Šţýļé: Þáñéļéð ĝļášš ~~~~~~]\"],\"editor.toolHint.styleShaker.49z17k\":[\"[Šţýļé: Šĥáķéŕ ~~~~]\"],\"editor.toolHint.styleSingle.6f3cm0\":[\"[Šţýļé: Šîñĝļé ~~~~]\"],\"editor.toolHint.styleSixPanel.u49laj\":[\"[Šţýļé: Šîẋ-þáñéļ ~~~~]\"],\"editor.toolHint.styleSliding.q81s0i\":[\"[Šţýļé: Šļîðîñĝ ~~~~]\"],\"editor.toolHint.styleTallGrid.1eotg3x\":[\"[Šţýļé: Ţáļļ ĝŕîð ~~~~]\"],\"editor.toolHint.styleTransom.kb9bh6\":[\"[Šţýļé: Ţŕáñšöɱ ~~~~]\"],\"editor.toolHint.styleTripleHung.pxnqi3\":[\"[Šţýļé: Ţŕîþļé-ĥûñĝ ~~~~~]\"],\"editor.toolHint.styleWideGrid.12n27et\":[\"[Šţýļé: Ŵîðé ĝŕîð ~~~~]\"],\"editor.toolHint.switchRotationAxisYXZ.15lohm6\":[\"[Šŵîţçĥ ŕöţáţîöñ áẋîš (Ý → Ẋ → Ž) ~~~~~~~]\"],\"editor.toolHint.theWallsMeetAtTooSharp.kh3wi3\":[\"[Ţĥé ŵáļļš ɱééţ áţ ţöö šĥáŕþ öŕ ţöö ƒļáţ áñ áñĝļé ~~~~~~~~~~~~]\"],\"editor.toolHint.theWindowWaitingThereIsTaller.1tqwez4\":[\"[Ţĥé ŵîñðöŵ ŵáîţîñĝ ţĥéŕé îš ţáļļéŕ ţĥáñ ţĥîš ŵáļļ ~~~~~~~~~~~~~]\"],\"editor.toolHint.threeOrMoreWallsMeetHere.rgifif\":[\"[Ţĥŕéé öŕ ɱöŕé ŵáļļš ɱééţ ĥéŕé ~~~~~~~~]\"],\"editor.toolHint.traceCeilingOutline.1b639wv\":[\"[Ţŕáçé çéîļîñĝ öûţļîñé ~~~~~~]\"],\"editor.toolHint.traceSlabOutline.z0j2lc\":[\"[Ţŕáçé šļáƀ öûţļîñé ~~~~~]\"],\"editor.toolHint.type.1m2zofh\":[\"[Ţýþé ~~]\"],\"editor.toolHint.typeAwning.1cj59al\":[\"[Ţýþé: Åŵñîñĝ ~~~]\"],\"editor.toolHint.typeBarn.sbnygq\":[\"[Ţýþé: Ɓáŕñ ~~~]\"],\"editor.toolHint.typeBay.1200hc1\":[\"[Ţýþé: Ɓáý ~~~]\"],\"editor.toolHint.typeBow.14s2t9p\":[\"[Ţýþé: Ɓöŵ ~~~]\"],\"editor.toolHint.typeCabinet.1r68je5\":[\"[Ţýþé: Çáƀîñéţ ~~~~]\"],\"editor.toolHint.typeCasement.176uo9j\":[\"[Ţýþé: Çášéɱéñţ ~~~~]\"],\"editor.toolHint.typeDouble.af7w4i\":[\"[Ţýþé: Ðöûƀļé ~~~]\"],\"editor.toolHint.typeDoubleHung.t482fu\":[\"[Ţýþé: Ðöûƀļé Ĥûñĝ ~~~~~]\"],\"editor.toolHint.typeFixed.v1cjez\":[\"[Ţýþé: Ƒîẋéð ~~~]\"],\"editor.toolHint.typeFolding.sxxyng\":[\"[Ţýþé: Ƒöļðîñĝ ~~~~]\"],\"editor.toolHint.typeFrench.1y57z1b\":[\"[Ţýþé: Ƒŕéñçĥ ~~~]\"],\"editor.toolHint.typeHinged.1xrcfju\":[\"[Ţýþé: Ĥîñĝéð ~~~]\"],\"editor.toolHint.typeIsland.ufr3ce\":[\"[Ţýþé: Κļáñð ~~~]\"],\"editor.toolHint.typeLouvered.oxl1cz\":[\"[Ţýþé: Ļöûṽéŕéð ~~~~]\"],\"editor.toolHint.typePocket.hc65x9\":[\"[Ţýþé: Þöçķéţ ~~~]\"],\"editor.toolHint.typeSingleHung.p53pyl\":[\"[Ţýþé: Šîñĝļé Ĥûñĝ ~~~~~]\"],\"editor.toolHint.typeSliding.nwmr3f\":[\"[Ţýþé: Šļîðîñĝ ~~~~]\"],\"editor.toolHint.verticalStackClickToPlace.ijcn4q\":[\"[Ṽéŕţîçáļ šţáçķ ↕, çļîçķ ţö þļáçé ~~~~~~~~]\"],\"editor.toolHint.wasteVent.1hvi3vj\":[\"[Ŵášţé / ṽéñţ ~~~]\"],\"editor.toolHint.windowStyleClickOrPressL.ah7qm9\":[\"[Ŵîñðöŵ šţýļé — çļîçķ öŕ þŕéšš Ļ ţö çýçļé ~~~~~~~~~~]\"],\"editor.toolHint.windowTypeClickOrPressO.wv4x35\":[\"[Ŵîñðöŵ ţýþé — çļîçķ öŕ þŕéšš Ö ţö çýçļé ~~~~~~~~~]\"],\"editor.views.plugins\":[\"[Þļûĝîñš ~~~]\"],\"editor.views.view2d\":[\"[2Ð ~]\"],\"editor.views.view3d\":[\"[3Ð ~]\"],\"editor.views.viewBar.auto\":[\"[Åûţö ~~]\"],\"editor.views.viewBar.browsePlugins\":[\"[Ɓŕöŵšé þļûĝîñš ~~~~]\"],\"editor.views.viewBar.closeLabel\":[\"[Çļöšé \",[\"label\"],\" ~~]\"],\"editor.views.viewBar.closeSplit\":[\"[Çļöšé šþļîţ (\\\\) ~~~]\"],\"editor.views.viewBar.ground\":[\"[Ĝŕöûñð ~~]\"],\"editor.views.viewBar.groundSolid\":[\"[\",[\"standing\",\"select\",{\"partly\":[\"Þáŕţļý ƀéļöŵ ĝŕáðé · ĝŕöûñð šöļîð\"],\"below\":[\"Ɓéļöŵ ĝŕáðé · ĝŕöûñð šöļîð\"],\"other\":[\"Ĝŕöûñð šöļîð\"]}],\" ~~~~~~~~~~~~~~~~~~]\"],\"editor.views.viewBar.groundVeiled\":[\"[\",[\"standing\",\"select\",{\"partly\":[\"Þáŕţļý ƀéļöŵ ĝŕáðé · ĝŕöûñð ṽéîļéð\"],\"below\":[\"Ɓéļöŵ ĝŕáðé · ĝŕöûñð ṽéîļéð\"],\"other\":[\"Ĝŕöûñð ṽéîļéð\"]}],\" ~~~~~~~~~~~~~~~~~~~]\"],\"editor.views.viewBar.keepTheGroundSolid\":[\"[Ķééþ ţĥé ĝŕöûñð šöļîð ~~~~~~]\"],\"editor.views.viewBar.moreViews\":[\"[Ṁöŕé ṽîéŵš ~~~]\"],\"editor.views.viewBar.paneViews\":[\"[Þáñé \",[\"pane\"],\" ṽîéŵš ~~~]\"],\"editor.views.viewBar.pinLabel\":[\"[Þîñ \",[\"label\"],\" ~]\"],\"editor.views.viewBar.pinToTheViewBar\":[\"[Þîñ ţö ţĥé ṽîéŵ ƀáŕ ~~~~~]\"],\"editor.views.viewBar.solid\":[\"[Šöļîð ~~]\"],\"editor.views.viewBar.split\":[\"[Šþļîţ (\\\\) ~~]\"],\"editor.views.viewBar.split2\":[\"[Šþļîţ ~~]\"],\"editor.views.viewBar.swapPanes\":[\"[Šŵáþ þáñéš ~~~]\"],\"editor.views.viewBar.unpinFromTheViewBar\":[\"[Ûñþîñ ƒŕöɱ ţĥé ṽîéŵ ƀáŕ ~~~~~~]\"],\"editor.views.viewBar.unpinLabel\":[\"[Ûñþîñ \",[\"label\"],\" ~~]\"],\"editor.views.viewBar.veilTheGroundOverALevel\":[\"[Ṽéîļ ţĥé ĝŕöûñð öṽéŕ á ļéṽéļ ƀéļöŵ ĝŕáðé ~~~~~~~~~~]\"],\"editor.views.viewBar.views\":[\"[Ṽîéŵš ~~]\"],\"editor.youCanRetryTheSceneOr\":[\"[Ýöû çáñ ŕéţŕý ţĥé šçéñé öŕ ŕéţûŕñ ĥöɱé ŵîţĥöûţ ŕéļöáðîñĝ ţĥé ŵĥöļé áþþ šĥéļļ. ~~~~~~~~~~~~~~~~~~~]\"],\"node.block.description\":[\"[Å ţöþöļöĝý-ƀáçķéð šöļîð éðîţéð ðîŕéçţļý îñ ţĥé çáñṽáš. ~~~~~~~~~~~~~~]\"],\"node.block.label\":[\"[Ɓļöçķ ~~]\"],\"node.boxVent.description\":[\"[Šɱáļļ ļöûṽéŕéð éẋĥáûšţ ṽéñţ ţĥáţ šîţš öñ á ŕööƒ šļöþé. ~~~~~~~~~~~~~~]\"],\"node.boxVent.label\":[\"[Ɓöẋ Ṽéñţ ~~~]\"],\"node.building.description\":[\"[Å ƀûîļðîñĝ çöñţáîñéŕ ĥöļðîñĝ öñé öŕ ɱöŕé ļéṽéļš. ~~~~~~~~~~~~]\"],\"node.building.label\":[\"[Ɓûîļðîñĝ ~~~]\"],\"node.cabinet.description\":[\"[Å çöñƒîĝûŕáƀļé þáŕáɱéţŕîç ƀášé çáƀîñéţ. ~~~~~~~~~~~]\"],\"node.cabinet.label\":[\"[Ṁöðûļáŕ Çáƀîñéţ ~~~~~]\"],\"node.cabinetModule.description\":[\"[Åñ éðîţáƀļé ɱöðûļé îñšîðé á ɱöðûļáŕ çáƀîñéţ ŕûñ. ~~~~~~~~~~~~]\"],\"node.cabinetModule.label\":[\"[Çáƀîñéţ Ṁöðûļé ~~~~]\"],\"node.ceiling.description\":[\"[Å þöļýĝöñ-ƀöûñðéð çéîļîñĝ šûŕƒáçé ţĥáţ ĥöšţš çéîļîñĝ-ɱöûñţéð îţéɱš. ~~~~~~~~~~~~~~~~~~]\"],\"node.ceiling.label\":[\"[Çéîļîñĝ ~~~]\"],\"node.chimney.description\":[\"[Ṽéŕţîçáļ ɱášöñŕý šţáçķ öñ á ŕööƒ šéĝɱéñţ. ~~~~~~~~~~~]\"],\"node.chimney.label\":[\"[Çĥîɱñéý ~~~]\"],\"node.column.description\":[\"[Å þáŕáɱéţŕîç çöļûɱñ ŵîţĥ çöñƒîĝûŕáƀļé çŕöšš-šéçţîöñ, ƀášé, áñð çáþîţáļ. ~~~~~~~~~~~~~~~~~~]\"],\"node.column.label\":[\"[Çöļûɱñ ~~]\"],\"node.constructionDimension.description\":[\"[Åššöçîáţîṽé ļîñéáŕ, çûŕṽéð, çîŕçûļáŕ, áñĝûļáŕ, öŕ çööŕðîñáţé þļáñ ðîɱéñšîöñ. ~~~~~~~~~~~~~~~~~~~]\"],\"node.constructionDimension.label\":[\"[Çöñšţŕûçţîöñ Ðîɱéñšîöñ ~~~~~~~]\"],\"node.cupola.description\":[\"[Ļöûṽéŕéð ŕööƒ ļáñţéŕñ ŵîţĥ á ðöɱé öŕ þýŕáɱîð çáþ áñð öþţîöñáļ ƒîñîáļ. ~~~~~~~~~~~~~~~~~~]\"],\"node.cupola.label\":[\"[Çûþöļá ~~]\"],\"node.door.description\":[\"[Å ðööŕ çûţ îñţö á ŵáļļ. Åñîɱáţéð öþéñ/çļöšé šţáţé. ~~~~~~~~~~~~]\"],\"node.door.label\":[\"[Ðööŕ ~~]\"],\"node.dormer.description\":[\"[Ĥöûšé-šĥáþéð þŕöţŕûšîöñ öñ á ŕööƒ šéĝɱéñţ. ~~~~~~~~~~~]\"],\"node.dormer.label\":[\"[Ðöŕɱéŕ ~~]\"],\"node.downspout.description\":[\"[Ṽéŕţîçáļ ðŕöþ þîþé ƒŕöɱ á ĝûţţéŕ öûţļéţ ţö ţĥé ĝŕöûñð. ~~~~~~~~~~~~~~]\"],\"node.downspout.label\":[\"[Ðöŵñšþöûţ ~~~]\"],\"node.ductFitting.description\":[\"[Éļƀöŵ, ţéé, ŕéðûçéŕ, öŕ šǫûáŕé-ţö-ŕöûñð ţŕáñšîţîöñ çöññéçţîñĝ ðûçţ ŕûñš. ~~~~~~~~~~~~~~~~~~]\"],\"node.ductFitting.label\":[\"[Ðûçţ Ƒîţţîñĝ ~~~~]\"],\"node.ductSegment.description\":[\"[ĤṼÅÇ ðûçţ ŕûñ — þöļýļîñé öƒ ŕöûñð, ŕéçţ, öŕ ƒļáţ-öṽáļ šéçţîöñš. ~~~~~~~~~~~~~~~]\"],\"node.ductSegment.label\":[\"[Ðûçţ ~~]\"],\"node.ductTerminal.description\":[\"[Ðûçţ ţéŕɱîñáļ — šûþþļý ŕéĝîšţéŕ, çéîļîñĝ ðûšéŕ, öŕ ŕéţûŕñ ĝŕîļļé. Ðûçţ ŕûñš éñð áţ îţš çöļļáŕ. ~~~~~~~~~~~~~~~~~~~~~~~~]\"],\"node.ductTerminal.label\":[\"[Ŕéĝîšţéŕ ~~~]\"],\"node.elevator.description\":[\"[Å ɱûļţî-ļéṽéļ éļéṽáţöŕ šĥáƒţ ŵîţĥ çöñƒîĝûŕáƀļé öþéñîñĝš þéŕ ļéṽéļ. ~~~~~~~~~~~~~~~~~]\"],\"node.elevator.label\":[\"[Éļéṽáţöŕ ~~~]\"],\"node.eyebrowVent.description\":[\"[Ļöŵ çûŕṽéð ļéñš-šĥáþéð ŕööƒ ṽéñţ ŵîţĥ á ļöûṽéŕéð ƒŕöñţ. ~~~~~~~~~~~~~~]\"],\"node.eyebrowVent.label\":[\"[Éýéƀŕöŵ Ṽéñţ ~~~~]\"],\"node.fence.description\":[\"[Å šţŕáîĝĥţ öŕ çûŕṽéð ƒéñçé šéĝɱéñţ ŵîţĥ çöñƒîĝûŕáƀļé þöšţš áñð îñƒîļļ. ~~~~~~~~~~~~~~~~~~]\"],\"node.fence.label\":[\"[Ƒéñçé ~~]\"],\"node.fenceGate.description\":[\"[Å ĝáţé ĥöšţéð ƀý á ƒéñçé. ~~~~~~]\"],\"node.fenceGate.label\":[\"[Ĝáţé ~~]\"],\"node.fenceOpening.description\":[\"[Åñ îñţéñţîöñáļ öþéñîñĝ îñ á ƒéñçé. ~~~~~~~~~]\"],\"node.fenceOpening.label\":[\"[Öþéñ Þáššáĝé ~~~~]\"],\"node.floorOpening.label\":[\"[Ƒļööŕ öþéñîñĝ ~~~~]\"],\"node.guide.description\":[\"[Å ɱéášûŕéɱéñţ / ŕéƒéŕéñçé áññöţáţîöñ (ļîñéáŕ, áŕéá, öŕ áŕç). ~~~~~~~~~~~~~~]\"],\"node.guide.label\":[\"[Ĝûîðé ~~]\"],\"node.gutter.description\":[\"[Ŕáîñ-ŵáţéŕ çĥáññéļ ŕûññîñĝ áļöñĝ ţĥé éáṽé öƒ á ŕööƒ šéĝɱéñţ. ~~~~~~~~~~~~~~~]\"],\"node.gutter.label\":[\"[Ĝûţţéŕ ~~]\"],\"node.hvacEquipment.description\":[\"[Ƒûŕñáçé, áîŕ ĥáñðļéŕ, öŕ çöñðéñšéŕ — ðûçţ ŕûñš çöññéçţ ţö îţš šûþþļý/ŕéţûŕñ çöļļáŕš. ~~~~~~~~~~~~~~~~~~~~~]\"],\"node.hvacEquipment.label\":[\"[ĤṼÅÇ Ûñîţ ~~~]\"],\"node.importedMesh.description\":[\"[Ĝéöɱéţŕý þŕéšéŕṽéð ƒŕöɱ áñ îɱþöŕţéð ɱöðéļ ŵĥéñ ñö ñáţîṽé Þášçáļ šĥáþé éẋîšţš. ~~~~~~~~~~~~~~~~~~~~]\"],\"node.importedMesh.label\":[\"[Îɱþöŕţéð Ṁéšĥ ~~~~]\"],\"node.item.description\":[\"[Å çáţáļöĝ-ƀáçķéð îţéɱ (ƒûŕñîţûŕé, ƒîẋţûŕéš, ðéçöŕáţîöñš). ~~~~~~~~~~~~~~]\"],\"node.item.label\":[\"[Îţéɱ ~~]\"],\"node.leanToExtension.description\":[\"[Åñ áţţáçĥéð ɱöñö-þîţçĥ öŕ ƒŕééšţáñðîñĝ ɱöñö, ĝáƀļé, öŕ ƀûţţéŕƒļý çáñöþý ŵîţĥ ɱáñáĝéð šţŕûçţûŕé áñð ðŕáîñáĝé. ~~~~~~~~~~~~~~~~~~~~~~~~~~~]\"],\"node.leanToExtension.label\":[\"[Çáñöþý ~~]\"],\"node.level.description\":[\"[Å šîñĝļé ƒļööŕ öƒ á ƀûîļðîñĝ, ĥöļðîñĝ ŵáļļš / šļáƀš / çéîļîñĝš / îţéɱš. ~~~~~~~~~~~~~~~~]\"],\"node.level.label\":[\"[Ļéṽéļ ~~]\"],\"node.lineset.description\":[\"[Ŕéƒŕîĝéŕáñţ ļîñéšéţ — çöþþéŕ šûçţîöñ + ļîǫûîð þáîŕ ĵöîñîñĝ á çöñðéñšéŕ ţö ţĥé îñðööŕ çöîļ. ~~~~~~~~~~~~~~~~~~~~~~]\"],\"node.lineset.label\":[\"[Ļîñéšéţ ~~~]\"],\"node.liquidLine.description\":[\"[Šţáñðáļöñé ŕéƒŕîĝéŕáñţ ļîǫûîð ļîñé — á ţĥîñ ƀáŕé-çöþþéŕ ŕûñ; Ƒöļļöŵ ɱöðé ţŕáçéš áñ éẋîšţîñĝ ļîñéšéţ. ~~~~~~~~~~~~~~~~~~~~~~~~~]\"],\"node.liquidLine.label\":[\"[Ļîǫûîð Ļîñé ~~~]\"],\"node.measurement.description\":[\"[Å þéŕšîšţéñţ ðîšţáñçé, áñĝļé, áŕéá, þéŕîɱéţéŕ, öŕ ṽöļûɱé áññöţáţîöñ. ~~~~~~~~~~~~~~~~~]\"],\"node.measurement.label\":[\"[Ṁéášûŕéɱéñţ ~~~~]\"],\"node.pipeFitting.description\":[\"[ÐŴṼ ĵöîñţ — éļƀöŵ ƀéñð, 45° ŵýé, öŕ šáñîţáŕý ţéé. ~~~~~~~~~~]\"],\"node.pipeFitting.label\":[\"[Þîþé Ƒîţţîñĝ ~~~~]\"],\"node.pipeSegment.description\":[\"[Ðŕáîñ / ŵášţé / ṽéñţ þîþé ŕûñ — ðŕáŵ ļéṽéļ öŕ ţöĝĝļé á ¼″ þéŕ ƒööţ ƒáļļ ŵîţĥ Š. ~~~~~~~~~~~~~~~~~]\"],\"node.pipeSegment.label\":[\"[ÐŴṼ Þîþé ~~~]\"],\"node.pipeTrap.description\":[\"[ÐŴṼ Þ-ţŕáþ — ŵáţéŕ šéáļ öñ ţĥé ŵášţé ļîñé. Ţĥé ţŕáþ áŕɱ ŕûñš ţö ţĥé ṽéñţ. ~~~~~~~~~~~~~~~~~]\"],\"node.pipeTrap.label\":[\"[Ţŕáþ ~~]\"],\"node.proceduralItem.description\":[\"[Éẋþéŕîɱéñţáļ éðîţáƀļé ŕéçîþé ~~~~~~~~]\"],\"node.proceduralItem.label\":[\"[Þŕöçéðûŕáļ îţéɱ ~~~~~]\"],\"node.ridgeVent.description\":[\"[Ṽéñţîļáţîöñ šţŕîþ ŕûññîñĝ áļöñĝ ţĥé ŕîðĝé öƒ á ŕööƒ šéĝɱéñţ. ~~~~~~~~~~~~~~~]\"],\"node.ridgeVent.label\":[\"[Ŕîðĝé Ṽéñţ ~~~]\"],\"node.roof.description\":[\"[Å þîţçĥéð / ĥîþ / ĝáƀļé ŕööƒ çöɱþöšéð öƒ öñé öŕ ɱöŕé šéĝɱéñţš. ~~~~~~~~~~~~~~~]\"],\"node.roof.label\":[\"[Ŕööƒ ~~]\"],\"node.roofSegment.description\":[\"[Å šîñĝļé þîţçĥéð þļáñé öƒ á þáŕéñţ ŕööƒ. ~~~~~~~~~~]\"],\"node.roofSegment.label\":[\"[Ŕööƒ Šéĝɱéñţ ~~~~]\"],\"node.scan.description\":[\"[Å çáþţûŕéð šéššîöñ ŵîţĥ öþţîöñáļ ɱéšĥ, ɱöţîöñ, ɱéðîá, áñð šéñšöŕ ðáţá. ~~~~~~~~~~~~~~~~~]\"],\"node.scan.label\":[\"[Çáþţûŕé ~~~]\"],\"node.separator.label\":[\"[Šéþáŕáţöŕ ~~~]\"],\"node.shelf.description\":[\"[Å çöñƒîĝûŕáƀļé šĥéļṽîñĝ ûñîţ. Îţéɱš ĥöšţ öñ éáçĥ ŕöŵ. ~~~~~~~~~~~~~]\"],\"node.shelf.label\":[\"[Šĥéļƒ ~~]\"],\"node.site.description\":[\"[Ţĥé ţöþ-ļéṽéļ çöñţáîñéŕ ĥöļðîñĝ ƀûîļðîñĝš, žöñéš, áñð ţĥé þŕöþéŕţý ƀöûñðáŕý. ~~~~~~~~~~~~~~~~~~~]\"],\"node.site.label\":[\"[Šîţé ~~]\"],\"node.skylight.description\":[\"[Ƒŕáɱéð ĝļášš öþéñîñĝ öñ á ŕööƒ šéĝɱéñţ. ~~~~~~~~~~]\"],\"node.skylight.label\":[\"[Šķýļîĝĥţ ~~~]\"],\"node.slab.description\":[\"[Å þöļýĝöñ-ƀöûñðéð ƒļööŕ šûŕƒáçé ţĥáţ ĥöšţš îţéɱš öñ ţöþ. ~~~~~~~~~~~~~~]\"],\"node.slab.label\":[\"[Šļáƀ ~~]\"],\"node.solarPanel.description\":[\"[Ĝŕîð öƒ þĥöţöṽöļţáîç þáñéļš ɱöûñţéð öñ á ŕööƒ šéĝɱéñţ. ~~~~~~~~~~~~~~]\"],\"node.solarPanel.label\":[\"[Šöļáŕ Þáñéļ ~~~]\"],\"node.spawn.description\":[\"[Þļáýéŕ öŕ çáɱéŕá öŕîĝîñ ŵîţĥîñ á ļéṽéļ. Öñé þéŕ ļéṽéļ. ~~~~~~~~~~~~~]\"],\"node.spawn.label\":[\"[Šþáŵñ Þöîñţ ~~~]\"],\"node.stair.description\":[\"[Å šţáîŕ çöɱþöšéð öƒ öñé öŕ ɱöŕé ƒļîĝĥţš ŵîţĥ çöñƒîĝûŕáƀļé ţŕéáðš, ŕîšéŕš, ŕáîļîñĝš. ~~~~~~~~~~~~~~~~~~~~~]\"],\"node.stair.label\":[\"[Šţáîŕ ~~]\"],\"node.stairSegment.description\":[\"[Å šîñĝļé ƒļîĝĥţ öƒ á þáŕéñţ šţáîŕ. ~~~~~~~~~]\"],\"node.stairSegment.label\":[\"[Šţáîŕ Šéĝɱéñţ ~~~~]\"],\"node.structuralGrid.description\":[\"[Þéŕšîšţéñţ çöñšţŕûçţîöñ ĝŕîð áẋîš ŵîţĥ îðéñţîƒîçáţîöñ ƀûƀƀļéš. ~~~~~~~~~~~~~~~~~]\"],\"node.structuralGrid.label\":[\"[Šţŕûçţûŕáļ Ĝŕîð ~~~~~]\"],\"node.turbineVent.description\":[\"[Ŵîñð-ðŕîṽéñ šþîññîñĝ ŵĥîŕļýƀîŕð éẋĥáûšţ ṽéñţ ƒöŕ á ŕööƒ šļöþé. ~~~~~~~~~~~~~~~~]\"],\"node.turbineVent.label\":[\"[Ţûŕƀîñé Ṽéñţ ~~~~]\"],\"node.unit.description\":[\"[Å ñáɱéð ĝŕöûþ öƒ žöñéš ƒöŕɱîñĝ öñé áþáŕţɱéñţ, ĥöţéļ ŕööɱ öŕ çöɱɱéŕçîáļ ļöţ. ~~~~~~~~~~~~~~~~~~~]\"],\"node.unit.label\":[\"[Ûñîţ ~~]\"],\"node.wall.description\":[\"[Å šţŕáîĝĥţ öŕ çûŕṽéð ŵáļļ šéĝɱéñţ. Ĥöšţš ðööŕš, ŵîñðöŵš, ļéáñ-ţö éẋţéñšîöñš, áñð ŵáļļ-ɱöûñţéð îţéɱš. ~~~~~~~~~~~~~~~~~~~~~~~~]\"],\"node.wall.label\":[\"[Ŵáļļ ~~]\"],\"node.window.description\":[\"[Å ŵîñðöŵ çûţ îñţö á ŵáļļ. Åñîɱáţéð öþéñ/çļöšé ƒöŕ öþéñîñĝ ŵîñðöŵš. ~~~~~~~~~~~~~~~~]\"],\"node.window.label\":[\"[Ŵîñðöŵ ~~]\"],\"node.zone.description\":[\"[Å þöļýĝöñáļ šîţé žöñé (ļáŵñ, ŵáţéŕ, þáṽîñĝ) ŵîţĥ á ŢŠĻ ĝŕáðîéñţ ɱáţéŕîáļ. ~~~~~~~~~~~~~~~~~~]\"],\"node.zone.label\":[\"[Žöñé ~~]\"],\"viewer.camera.orbitLeft\":[\"[Öŕƀîţ ļéƒţ ~~~]\"],\"viewer.camera.orbitRight\":[\"[Öŕƀîţ ŕîĝĥţ ~~~]\"],\"viewer.camera.topView\":[\"[Ţöþ ṽîéŵ ~~~]\"],\"viewer.common.off\":[\"[Öƒƒ ~]\"],\"viewer.common.on\":[\"[Öñ ~]\"],\"viewer.display.camera\":[\"[Çáɱéŕá ~~]\"],\"viewer.display.colored\":[\"[Çöļöŕéð ~~~]\"],\"viewer.display.colors\":[\"[Çöļöŕš ~~]\"],\"viewer.display.edges.off\":[\"[Öƒƒ ~]\"],\"viewer.display.edges.offDetail\":[\"[Ñö éðĝé ļîñéš ~~~~]\"],\"viewer.display.edges.soft\":[\"[Šöƒţ ~~]\"],\"viewer.display.edges.softDetail\":[\"[Ƒáîñţ öûţļîñé öƒ ɱáĵöŕ çŕéášéš ~~~~~~~~]\"],\"viewer.display.edges.strong\":[\"[Šţŕöñĝ ~~]\"],\"viewer.display.edges.strongDetail\":[\"[Çŕîšþ, öþáǫûé éðĝé ļîñéš ~~~~~~]\"],\"viewer.display.edges.title\":[\"[Éðĝéš ~~]\"],\"viewer.display.monochrome\":[\"[Ṁöñöçĥŕöɱé ~~~]\"],\"viewer.display.orthographic\":[\"[Öŕţĥöĝŕáþĥîç ~~~~]\"],\"viewer.display.perspective\":[\"[Þéŕšþéçţîṽé ~~~~]\"],\"viewer.display.render.rendered\":[\"[Ŕéñðéŕéð ~~~]\"],\"viewer.display.render.renderedDetail\":[\"[Ƒûļļ áɱƀîéñţ öççļûšîöñ ~~~~~~]\"],\"viewer.display.render.solid\":[\"[Šöļîð ~~]\"],\"viewer.display.render.solidDetail\":[\"[Ƒļáţ áñð ƒášţ — ñö áɱƀîéñţ öççļûšîöñ ~~~~~~~~~]\"],\"viewer.display.render.title\":[\"[Ŕéñðéŕ ~~]\"],\"viewer.display.shadows\":[\"[Šĥáðöŵš ~~~]\"],\"viewer.display.title\":[\"[Ðîšþļáý šéţţîñĝš ~~~~~]\"],\"viewer.floorplan.alignNorth\":[\"[Åļîĝñ ṽîéŵ ţö ñöŕţĥ ~~~~~]\"],\"viewer.floorplan.empty\":[\"[Ñö ƒļööŕ þļáñš áŕé áṽáîļáƀļé ƒöŕ ţĥîš šçéñé. ~~~~~~~~~~~]\"],\"viewer.floorplan.fit\":[\"[Ƒîţ ƒļööŕ þļáñ ~~~~]\"],\"viewer.floorplan.floor\":[\"[Ƒļööŕ ~~]\"],\"viewer.floorplan.floorPlan\":[\"[Ƒļööŕ þļáñ ~~~]\"],\"viewer.floorplan.viewLabel\":[\"[\",[\"floor\"],\" 2Ð ṽîéŵ ~~]\"],\"viewer.floorplan.zoomIn\":[\"[Žööɱ îñ ~~]\"],\"viewer.floorplan.zoomOut\":[\"[Žööɱ öûţ ~~~]\"],\"viewer.header.back\":[\"[Ɓáçķ ~~]\"],\"viewer.header.levels\":[\"[Ļéṽéļš ~~]\"],\"viewer.header.rooms\":[\"[Ŕööɱš ~~]\"],\"viewer.header.selection\":[\"[Šéļéçţîöñ ~~~]\"],\"viewer.header.units\":[\"[Ûñîţš ~~]\"],\"viewer.header.untitled\":[\"[Ûñţîţļéð ~~~]\"],\"viewer.header.zones\":[\"[Žöñéš ~~]\"],\"viewer.levels.exploded\":[\"[Éẋþļöðéð ~~~]\"],\"viewer.levels.label\":[\"[Ļéṽéļš: \",[\"mode\"],\" ~~]\"],\"viewer.levels.manual\":[\"[Ṁáñûáļ ~~]\"],\"viewer.levels.solo\":[\"[Šöļö ~~]\"],\"viewer.levels.stacked\":[\"[Šţáçķéð ~~~]\"],\"viewer.stage.layout\":[\"[Ṽîéŵéŕ ļáýöûţ ~~~~]\"],\"viewer.stage.split\":[\"[Šþļîţ ~~]\"],\"viewer.theme.blueprint\":[\"[Ɓļûéþŕîñţ ~~~]\"],\"viewer.theme.mediterranean\":[\"[Ṁéðîţéŕŕáñéáñ ~~~~]\"],\"viewer.theme.night\":[\"[Ñîĝĥţ ~~]\"],\"viewer.theme.overcast\":[\"[Öṽéŕçášţ ~~~]\"],\"viewer.theme.paper\":[\"[Þáþéŕ ~~]\"],\"viewer.theme.studio\":[\"[Šţûðîö ~~]\"],\"viewer.theme.sunset\":[\"[Šûñšéţ ~~]\"],\"viewer.theme.title\":[\"[Šçéñé ţĥéɱé ~~~]\"],\"viewer.theme.twilight\":[\"[Ţŵîļîĝĥţ ~~~]\"],\"viewer.theme.verdant\":[\"[Ṽéŕðáñţ ~~~]\"],\"viewer.visibility.guides\":[\"[Ĝûîðéš ~~]\"],\"viewer.visibility.scans\":[\"[Šçáñš ~~]\"],\"viewer.visibility.title\":[\"[Ṽîšîƀîļîţý ~~~]\"],\"viewer.walkthrough.label\":[\"[Ŵáļķţĥŕöûĝĥ: \",[\"state\"],\" ~~~~]\"],\"viewer.walls.cutaway\":[\"[Çûţáŵáý ~~~]\"],\"viewer.walls.fullHeight\":[\"[Ƒûļļ ĥéîĝĥţ ~~~]\"],\"viewer.walls.label\":[\"[Ŵáļļš: \",[\"mode\"],\" ~~]\"],\"viewer.walls.low\":[\"[Ļöŵ ~]\"]}")as Messages; \ No newline at end of file diff --git a/packages/editor/src/i18n/locales/en/messages.po b/packages/editor/src/i18n/locales/en/messages.po index 3ca4c3a4de..9ef5751eb5 100644 --- a/packages/editor/src/i18n/locales/en/messages.po +++ b/packages/editor/src/i18n/locales/en/messages.po @@ -435,6 +435,42 @@ msgstr "Shed" msgid "app.lib.buildTabState.wall" msgstr "Wall" +#: apps/editor/components/scene-loader.tsx +msgid "app.sceneLoader.anotherSessionSavedFirstRefresh" +msgstr "Another session saved first — refresh?" + +#: apps/editor/components/scene-loader.tsx +msgid "app.sceneLoader.build" +msgstr "Build" + +#: apps/editor/components/scene-loader.tsx +msgid "app.sceneLoader.dismiss" +msgstr "Dismiss" + +#: apps/editor/components/scene-loader.tsx +msgid "app.sceneLoader.items" +msgstr "Items" + +#: apps/editor/components/scene-loader.tsx +msgid "app.sceneLoader.paint" +msgstr "Paint" + +#: apps/editor/components/scene-loader.tsx +msgid "app.sceneLoader.reload" +msgstr "Reload" + +#: apps/editor/components/scene-loader.tsx +msgid "app.sceneLoader.scene" +msgstr "Scene" + +#: apps/editor/components/scene-loader.tsx +msgid "app.sceneLoader.settings" +msgstr "Settings" + +#: apps/editor/components/scene-loader.tsx +msgid "app.sceneLoader.yourChangesHavenTBeenSaved" +msgstr "Your changes haven't been saved. Reload to pick up the latest version." + #: apps/editor/components/share-panel.tsx msgid "app.sharePanel.anyoneWithTheLinkCanView" msgstr "Anyone with the link can view this project. They cannot edit it." @@ -1251,6 +1287,106 @@ msgstr "{count, plural, one {# run} other {# runs}}" msgid "editor.floatingActionMenu.system" msgstr "System" +#: packages/editor/src/components/ui/floating-level-selector.tsx +msgid "editor.floatingLevelSelector.addAFloorUnderTheRoof" +msgstr "Add a floor under the roof" + +#: packages/editor/src/components/ui/floating-level-selector.tsx +msgid "editor.floatingLevelSelector.addLevelAbove" +msgstr "Add level above" + +#: packages/editor/src/components/ui/floating-level-selector.tsx +msgid "editor.floatingLevelSelector.addLevelBelow" +msgstr "Add level below" + +#: packages/editor/src/components/ui/floating-level-selector.tsx +msgid "editor.floatingLevelSelector.cancel" +msgstr "Cancel" + +#: packages/editor/src/components/ui/floating-level-selector.tsx +msgid "editor.floatingLevelSelector.delete" +msgstr "Delete" + +#: packages/editor/src/components/ui/floating-level-selector.tsx +msgid "editor.floatingLevelSelector.deleteLevel" +msgstr "Delete level" + +#: packages/editor/src/components/ui/floating-level-selector.tsx +msgid "editor.floatingLevelSelector.deleteLevelConfirm" +msgstr "Are you sure you want to delete {levelName}? All walls, floors, and objects on this level will be permanently removed." + +#: packages/editor/src/components/ui/floating-level-selector.tsx +msgid "editor.floatingLevelSelector.dragToReorder" +msgstr "Drag to reorder" + +#: packages/editor/src/components/ui/floating-level-selector.tsx +msgid "editor.floatingLevelSelector.duplicateLevel" +msgstr "Duplicate level" + +#: packages/editor/src/components/ui/floating-level-selector.tsx +msgid "editor.floatingLevelSelector.duplicateWithOptions" +msgstr "Duplicate with options..." + +#: packages/editor/src/components/ui/floating-level-selector.tsx +msgid "editor.floatingLevelSelector.exitUnitFocus" +msgstr "Exit unit focus" + +#: packages/editor/src/components/ui/floating-level-selector.tsx +msgid "editor.floatingLevelSelector.focusedUnitHasZonesHere" +msgstr "Focused unit has zones here" + +#: packages/editor/src/components/ui/floating-level-selector.tsx +msgid "editor.floatingLevelSelector.groundFloorOverGrade" +msgstr "The ground floor stands {distance} over grade. Seat the ground floor 8 in over grade" + +#: packages/editor/src/components/ui/floating-level-selector.tsx +msgid "editor.floatingLevelSelector.groundFloorUnderGrade" +msgstr "The ground floor stands {distance} under grade. Seat the ground floor 8 in over grade" + +#: packages/editor/src/components/ui/floating-level-selector.tsx +msgid "editor.floatingLevelSelector.groundLineTheLevelsUnderIt" +msgstr "Ground line: the levels under it are below grade" + +#: packages/editor/src/components/ui/floating-level-selector.tsx +msgid "editor.floatingLevelSelector.groundOffset" +msgstr "Ground · {offset}" + +#: packages/editor/src/components/ui/floating-level-selector.tsx +msgid "editor.floatingLevelSelector.insertLevelHere" +msgstr "Insert level here" + +#: packages/editor/src/components/ui/floating-level-selector.tsx +msgid "editor.floatingLevelSelector.levelHeight" +msgstr "Level height" + +#: packages/editor/src/components/ui/floating-level-selector.tsx +msgid "editor.floatingLevelSelector.pasteCopiedSelection" +msgstr "Paste copied selection" + +#: packages/editor/src/components/ui/floating-level-selector.tsx +msgid "editor.floatingLevelSelector.reorderLevelname" +msgstr "Reorder {levelName}" + +#: packages/editor/src/components/ui/floating-level-selector.tsx +msgid "editor.floatingLevelSelector.seatTheBuildingSoThisFloor" +msgstr "Seat the building so this floor stands at grade; the floors under it are below grade" + +#: packages/editor/src/components/ui/floating-level-selector.tsx +msgid "editor.floatingLevelSelector.setAsGroundFloor" +msgstr "Set as ground floor" + +#: packages/editor/src/components/ui/floating-level-selector.tsx +msgid "editor.floatingLevelSelector.theGroundLevelCannotBeDeleted" +msgstr "The ground level cannot be deleted" + +#: packages/editor/src/components/ui/floating-level-selector.tsx +msgid "editor.floatingLevelSelector.thisFloorStandsAtGrade" +msgstr "This floor stands at grade" + +#: packages/editor/src/components/ui/floating-level-selector.tsx +msgid "editor.floatingLevelSelector.unit" +msgstr "Unit" + #: packages/editor/src/components/ui/helpers/building-helper.tsx msgid "editor.helpers.buildingHelper.cancel" msgstr "Cancel" @@ -1535,6 +1671,131 @@ msgstr "Rotate" msgid "editor.helpers.registeredToolHelper.guidedConstraintsBypassed" msgstr "Guided constraints bypassed" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#: packages/editor/src/components/ui/sidebar/panels/site-panel/tree-node.tsx +msgid "editor.layers.collapse" +msgstr "Collapse" + +#: packages/editor/src/components/ui/sidebar/panels/site-panel/default-names.ts +msgid "editor.layers.defaultName.ceiling" +msgstr "Ceiling ({area})" + +#: packages/editor/src/components/ui/sidebar/panels/site-panel/collection-tree-node.tsx +msgid "editor.layers.defaultName.collection" +msgstr "Collection" + +#: packages/editor/src/components/ui/sidebar/panels/site-panel/default-names.ts +msgid "editor.layers.defaultName.flight" +msgstr "Flight ({width}×{length}m)" + +#: packages/editor/src/components/ui/sidebar/panels/site-panel/default-names.ts +msgid "editor.layers.defaultName.landing" +msgstr "Landing ({width}×{length}m)" + +#: packages/editor/src/components/ui/sidebar/panels/site-panel/registry-tree-node.tsx +msgid "editor.layers.defaultName.node" +msgstr "Node" + +#: packages/editor/src/components/ui/sidebar/panels/site-panel/default-names.ts +msgid "editor.layers.defaultName.roof" +msgstr "Roof ({count, plural, one {# segment} other {# segments}})" + +#: packages/editor/src/components/ui/sidebar/panels/site-panel/default-names.ts +msgid "editor.layers.defaultName.roofSegment" +msgstr "{roofType, select, hip {Hip} gable {Gable} shed {Shed} gambrel {Gambrel} dutch {Dutch} mansard {Mansard} flat {Flat} conical {Conical} barrel {Barrel} other {Roof}} ({width}×{depth}m)" + +#: packages/editor/src/components/ui/sidebar/panels/site-panel/default-names.ts +msgid "editor.layers.defaultName.room" +msgstr "Room ({area})" + +#: packages/editor/src/components/ui/sidebar/panels/site-panel/default-names.ts +msgid "editor.layers.defaultName.slab" +msgstr "Slab ({area})" + +#: packages/editor/src/components/ui/sidebar/panels/site-panel/default-names.ts +msgid "editor.layers.defaultName.staircase" +msgstr "Staircase ({count, plural, one {# segment} other {# segments}})" + +#: packages/editor/src/components/ui/sidebar/panels/site-panel/default-names.ts +msgid "editor.layers.defaultName.zone" +msgstr "Zone ({area})" + +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#: packages/editor/src/components/ui/sidebar/panels/site-panel/tree-node.tsx +msgid "editor.layers.expand" +msgstr "Expand" + +#: packages/editor/src/components/ui/floating-level-selector.tsx +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +msgid "editor.layers.levelOptions" +msgstr "{levelName} options" + +#: packages/editor/src/components/ui/sidebar/panels/site-panel/inline-rename-input.tsx +msgid "editor.layers.rename" +msgstr "Rename" + +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#: packages/editor/src/components/ui/sidebar/panels/site-panel/zone-tree-node.tsx +#: packages/editor/src/components/ui/sidebar/panels/zone-panel/index.tsx +msgid "editor.layers.spaceColour" +msgstr "{role, select, room {Room colour} other {Zone colour}}" + +#: packages/editor/src/components/ui/sidebar/panels/site-panel/unit-tree-node.tsx +msgid "editor.layers.unitColour" +msgstr "Unit colour" + +#: packages/editor/src/components/ui/level-duplicate-dialog.tsx +msgid "editor.levelDuplicateDialog.cancel" +msgstr "Cancel" + +#: packages/editor/src/components/ui/level-duplicate-dialog.tsx +msgid "editor.levelDuplicateDialog.chooseWhatToCopyFromLevel" +msgstr "Choose what to copy from {levelName}." + +#: packages/editor/src/components/ui/level-duplicate-dialog.tsx +msgid "editor.levelDuplicateDialog.chooseWhatToCopyFromThisLevel" +msgstr "Choose what to copy from this level." + +#: packages/editor/src/components/ui/level-duplicate-dialog.tsx +msgid "editor.levelDuplicateDialog.duplicate" +msgstr "Duplicate" + +#: packages/editor/src/components/ui/level-duplicate-dialog.tsx +msgid "editor.levelDuplicateDialog.duplicateLevel" +msgstr "Duplicate Level" + +#: packages/editor/src/components/ui/level-duplicate-dialog.tsx +msgid "editor.levelDuplicateDialog.everything" +msgstr "Everything" + +#: packages/editor/src/components/ui/level-duplicate-dialog.tsx +msgid "editor.levelDuplicateDialog.structureFinishesAndPlacedItemsWithout" +msgstr "Structure, finishes, and placed items, without guide references." + +#: packages/editor/src/components/ui/level-duplicate-dialog.tsx +msgid "editor.levelDuplicateDialog.structureFurniture" +msgstr "Structure + furniture" + +#: packages/editor/src/components/ui/level-duplicate-dialog.tsx +msgid "editor.levelDuplicateDialog.structureMaterials" +msgstr "Structure + materials" + +#: packages/editor/src/components/ui/level-duplicate-dialog.tsx +msgid "editor.levelDuplicateDialog.structureMaterialsFurnitureAndReferences" +msgstr "Structure, materials, furniture, and references." + +#: packages/editor/src/components/ui/level-duplicate-dialog.tsx +msgid "editor.levelDuplicateDialog.structureOnly" +msgstr "Structure only" + +#: packages/editor/src/components/ui/level-duplicate-dialog.tsx +msgid "editor.levelDuplicateDialog.structureWithTheCurrentMaterialAnd" +msgstr "Structure with the current material and finish assignments." + +#: packages/editor/src/components/ui/level-duplicate-dialog.tsx +msgid "editor.levelDuplicateDialog.wallsSlabsRoofsStairsWindowsAnd" +msgstr "Walls, slabs, roofs, stairs, windows, and doors without finishes." + #: packages/editor/src/lib/contextual-help.ts msgid "editor.lib.contextualHelp.addOrRemoveObjectsFromThe" msgstr "Add or remove objects from the selection" @@ -1755,6 +2016,358 @@ msgstr "Walls" msgid "editor.reloadEditor" msgstr "Reload editor" +#: packages/editor/src/components/ui/sidebar/icon-rail.tsx +msgid "editor.sidebar.iconRail.settings" +msgstr "Settings" + +#: packages/editor/src/components/ui/sidebar/icon-rail.tsx +msgid "editor.sidebar.iconRail.site" +msgstr "Site" + +#: packages/editor/src/components/ui/sidebar/panels/items-panel/index.tsx +msgid "editor.sidebar.panels.itemsPanel.all" +msgstr "All" + +#: packages/editor/src/components/ui/sidebar/panels/items-panel/index.tsx +msgid "editor.sidebar.panels.itemsPanel.community" +msgstr "Community" + +#: packages/editor/src/components/ui/sidebar/panels/items-panel/function-tree-panel.tsx +msgid "editor.sidebar.panels.itemsPanel.functionTreePanel.all" +msgstr "All" + +#: packages/editor/src/components/ui/sidebar/panels/items-panel/function-tree-panel.tsx +msgid "editor.sidebar.panels.itemsPanel.functionTreePanel.community" +msgstr "Community" + +#: packages/editor/src/components/ui/sidebar/panels/items-panel/function-tree-panel.tsx +msgid "editor.sidebar.panels.itemsPanel.functionTreePanel.library" +msgstr "Library" + +#: packages/editor/src/components/ui/sidebar/panels/items-panel/function-tree-panel.tsx +msgid "editor.sidebar.panels.itemsPanel.functionTreePanel.mine" +msgstr "Mine" + +#: packages/editor/src/components/ui/sidebar/panels/items-panel/function-tree-panel.tsx +msgid "editor.sidebar.panels.itemsPanel.functionTreePanel.noResultsForSearch" +msgstr "No results for “{search}”" + +#: packages/editor/src/components/ui/sidebar/panels/items-panel/function-tree-panel.tsx +msgid "editor.sidebar.panels.itemsPanel.functionTreePanel.search" +msgstr "Search..." + +#: packages/editor/src/components/ui/sidebar/panels/items-panel/index.tsx +msgid "editor.sidebar.panels.itemsPanel.library" +msgstr "Library" + +#: packages/editor/src/components/ui/sidebar/panels/items-panel/index.tsx +msgid "editor.sidebar.panels.itemsPanel.mine" +msgstr "Mine" + +#: packages/editor/src/components/ui/sidebar/panels/items-panel/index.tsx +msgid "editor.sidebar.panels.itemsPanel.noResultsForSearch" +msgstr "No results for “{search}”" + +#: packages/editor/src/components/ui/sidebar/panels/items-panel/index.tsx +msgid "editor.sidebar.panels.itemsPanel.search" +msgstr "Search..." + +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +msgid "editor.sidebar.panels.sitePanel.addLevel" +msgstr "Add level" + +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +msgid "editor.sidebar.panels.sitePanel.addPoint" +msgstr "Add point" + +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +msgid "editor.sidebar.panels.sitePanel.area" +msgstr "Area:" + +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +msgid "editor.sidebar.panels.sitePanel.baseElevation" +msgstr "Base elevation" + +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +msgid "editor.sidebar.panels.sitePanel.building" +msgstr "Building" + +#: packages/editor/src/components/ui/sidebar/panels/site-panel/building-tree-node.tsx +msgid "editor.sidebar.panels.sitePanel.buildingTreeNode.addNewLevel" +msgstr "Add new level" + +#: packages/editor/src/components/ui/sidebar/panels/site-panel/building-tree-node.tsx +msgid "editor.sidebar.panels.sitePanel.buildingTreeNode.building" +msgstr "Building" + +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +msgid "editor.sidebar.panels.sitePanel.cameraSnapshot" +msgstr "Camera snapshot" + +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +msgid "editor.sidebar.panels.sitePanel.capture" +msgstr "Capture" + +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +msgid "editor.sidebar.panels.sitePanel.clearSelection" +msgstr "Clear selection" + +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +msgid "editor.sidebar.panels.sitePanel.clearSnapshot" +msgstr "Clear snapshot" + +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +msgid "editor.sidebar.panels.sitePanel.closeWallsAroundASpaceTo" +msgstr "Close walls around a space to make a room." + +#: packages/editor/src/components/ui/sidebar/panels/site-panel/collection-tree-node.tsx +msgid "editor.sidebar.panels.sitePanel.collectionTreeNode.collectionColour" +msgstr "Collection colour" + +#: packages/editor/src/components/ui/sidebar/panels/site-panel/collection-tree-node.tsx +msgid "editor.sidebar.panels.sitePanel.collectionTreeNode.collections" +msgstr "Collections" + +#: packages/editor/src/components/ui/sidebar/panels/site-panel/collection-tree-node.tsx +msgid "editor.sidebar.panels.sitePanel.collectionTreeNode.deleteCollection" +msgstr "Delete collection" + +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +msgid "editor.sidebar.panels.sitePanel.delete" +msgstr "Delete" + +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +msgid "editor.sidebar.panels.sitePanel.deleteLevel" +msgstr "Delete level" + +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +msgid "editor.sidebar.panels.sitePanel.drawAZone" +msgstr "Draw a zone" + +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +msgid "editor.sidebar.panels.sitePanel.duplicate" +msgstr "Duplicate" + +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +msgid "editor.sidebar.panels.sitePanel.duplicateLevel" +msgstr "Duplicate level" + +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +msgid "editor.sidebar.panels.sitePanel.duplicateLevelWithOptions" +msgstr "Duplicate level with options" + +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +msgid "editor.sidebar.panels.sitePanel.duplicateWithOptions" +msgstr "Duplicate with options..." + +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +msgid "editor.sidebar.panels.sitePanel.elements" +msgstr "Elements" + +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +msgid "editor.sidebar.panels.sitePanel.guide" +msgstr "Guide" + +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +msgid "editor.sidebar.panels.sitePanel.hide" +msgstr "Hide" + +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +msgid "editor.sidebar.panels.sitePanel.level" +msgstr "Level" + +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +msgid "editor.sidebar.panels.sitePanel.newUnit" +msgstr "New unit" + +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +msgid "editor.sidebar.panels.sitePanel.noBuildingsYet" +msgstr "No buildings yet" + +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +msgid "editor.sidebar.panels.sitePanel.noElementsOnThisLevel" +msgstr "No elements on this level" + +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +msgid "editor.sidebar.panels.sitePanel.noLevelsYet" +msgstr "No levels yet" + +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +msgid "editor.sidebar.panels.sitePanel.objectsSelected" +msgstr "{count, plural, one {# object selected} other {# objects selected}}" + +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +msgid "editor.sidebar.panels.sitePanel.otherZones" +msgstr "Other zones" + +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +msgid "editor.sidebar.panels.sitePanel.perimeter" +msgstr "Perimeter:" + +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +msgid "editor.sidebar.panels.sitePanel.propertyLine" +msgstr "Property Line" + +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +msgid "editor.sidebar.panels.sitePanel.rooms" +msgstr "Rooms" + +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +msgid "editor.sidebar.panels.sitePanel.selectALevelToViewContent" +msgstr "Select a level to view content" + +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +msgid "editor.sidebar.panels.sitePanel.show" +msgstr "Show" + +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +msgid "editor.sidebar.panels.sitePanel.site" +msgstr "Site" + +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +msgid "editor.sidebar.panels.sitePanel.takeSnapshot" +msgstr "Take snapshot" + +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +msgid "editor.sidebar.panels.sitePanel.theGroundLevelCannotBeDeleted" +msgstr "The ground level cannot be deleted" + +#: packages/editor/src/components/ui/sidebar/panels/site-panel/tree-node-actions.tsx +msgid "editor.sidebar.panels.sitePanel.treeNodeActions.cameraSnapshot" +msgstr "Camera snapshot" + +#: packages/editor/src/components/ui/sidebar/panels/site-panel/tree-node-actions.tsx +msgid "editor.sidebar.panels.sitePanel.treeNodeActions.clearSnapshot" +msgstr "Clear snapshot" + +#: packages/editor/src/components/ui/sidebar/panels/site-panel/tree-node-actions.tsx +msgid "editor.sidebar.panels.sitePanel.treeNodeActions.hide" +msgstr "Hide" + +#: packages/editor/src/components/ui/sidebar/panels/site-panel/tree-node-actions.tsx +msgid "editor.sidebar.panels.sitePanel.treeNodeActions.show" +msgstr "Show" + +#: packages/editor/src/components/ui/sidebar/panels/site-panel/tree-node-actions.tsx +msgid "editor.sidebar.panels.sitePanel.treeNodeActions.takeSnapshot" +msgstr "Take snapshot" + +#: packages/editor/src/components/ui/sidebar/panels/site-panel/tree-node-actions.tsx +msgid "editor.sidebar.panels.sitePanel.treeNodeActions.updateSnapshot" +msgstr "Update snapshot" + +#: packages/editor/src/components/ui/sidebar/panels/site-panel/tree-node-actions.tsx +msgid "editor.sidebar.panels.sitePanel.treeNodeActions.viewSnapshot" +msgstr "View snapshot" + +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +msgid "editor.sidebar.panels.sitePanel.units" +msgstr "Units" + +#: packages/editor/src/components/ui/sidebar/panels/site-panel/unit-tree-node.tsx +msgid "editor.sidebar.panels.sitePanel.unitTreeNode.deleteUnit" +msgstr "Delete unit" + +#: packages/editor/src/components/ui/sidebar/panels/site-panel/unit-tree-node.tsx +msgid "editor.sidebar.panels.sitePanel.unitTreeNode.focused" +msgstr "Focused" + +#: packages/editor/src/components/ui/sidebar/panels/site-panel/unit-tree-node.tsx +msgid "editor.sidebar.panels.sitePanel.unitTreeNode.removeFromUnit" +msgstr "Remove from unit" + +#: packages/editor/src/components/ui/sidebar/panels/site-panel/unit-tree-node.tsx +msgid "editor.sidebar.panels.sitePanel.unitTreeNode.room" +msgstr "Room" + +#: packages/editor/src/components/ui/sidebar/panels/site-panel/unit-tree-node.tsx +msgid "editor.sidebar.panels.sitePanel.unitTreeNode.zone" +msgstr "Zone" + +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +msgid "editor.sidebar.panels.sitePanel.updateSnapshot" +msgstr "Update snapshot" + +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +msgid "editor.sidebar.panels.sitePanel.uploadingProgress" +msgstr "{assetType, select, guide {Uploading guide... {progress}%} other {Uploading scan... {progress}%}}" + +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +msgid "editor.sidebar.panels.sitePanel.uploadScanFloorplan" +msgstr "Upload scan/floorplan" + +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +msgid "editor.sidebar.panels.sitePanel.viewSnapshot" +msgstr "View snapshot" + +#: packages/editor/src/components/ui/sidebar/panels/site-panel/zone-membership-checkbox.tsx +msgid "editor.sidebar.panels.sitePanel.zoneMembershipCheckbox.inUnitname" +msgstr "In {unitName}" + +#: packages/editor/src/components/ui/sidebar/panels/zone-panel/index.tsx +msgid "editor.sidebar.panels.zonePanel.actions" +msgstr "Actions" + +#: packages/editor/src/components/ui/sidebar/panels/zone-panel/index.tsx +msgid "editor.sidebar.panels.zonePanel.addOne" +msgstr "Add one" + +#: packages/editor/src/components/ui/sidebar/panels/zone-panel/index.tsx +msgid "editor.sidebar.panels.zonePanel.cameraSnapshot" +msgstr "Camera snapshot" + +#: packages/editor/src/components/ui/sidebar/panels/zone-panel/index.tsx +msgid "editor.sidebar.panels.zonePanel.clearSnapshot" +msgstr "Clear snapshot" + +#: packages/editor/src/components/ui/sidebar/panels/zone-panel/index.tsx +msgid "editor.sidebar.panels.zonePanel.delete" +msgstr "Delete" + +#: packages/editor/src/components/ui/sidebar/panels/zone-panel/index.tsx +msgid "editor.sidebar.panels.zonePanel.deleteWithContents" +msgstr "Delete with contents" + +#: packages/editor/src/components/ui/sidebar/panels/zone-panel/index.tsx +msgid "editor.sidebar.panels.zonePanel.noZonesOnThisLevel" +msgstr "No zones on this level." + +#: packages/editor/src/components/ui/sidebar/panels/zone-panel/index.tsx +msgid "editor.sidebar.panels.zonePanel.saveToCatalog" +msgstr "Save to catalog" + +#: packages/editor/src/components/ui/sidebar/panels/zone-panel/index.tsx +msgid "editor.sidebar.panels.zonePanel.selectALevelToViewAnd" +msgstr "Select a level to view and create zones" + +#: packages/editor/src/components/ui/sidebar/panels/zone-panel/index.tsx +msgid "editor.sidebar.panels.zonePanel.takeSnapshot" +msgstr "Take snapshot" + +#: packages/editor/src/components/ui/sidebar/panels/zone-panel/index.tsx +msgid "editor.sidebar.panels.zonePanel.updateSnapshot" +msgstr "Update snapshot" + +#: packages/editor/src/components/ui/sidebar/panels/zone-panel/index.tsx +msgid "editor.sidebar.panels.zonePanel.viewSnapshot" +msgstr "View snapshot" + +#: packages/editor/src/components/ui/sidebar/use-plugin-panels.tsx +msgid "editor.sidebar.usePluginPanels.labelPluginCrashed" +msgstr "\"{label}\" plugin crashed" + +#: packages/editor/src/components/ui/sidebar/use-plugin-panels.tsx +msgid "editor.sidebar.usePluginPanels.loading" +msgstr "Loading…" + +#: packages/editor/src/components/ui/sidebar/use-plugin-panels.tsx +msgid "editor.sidebar.usePluginPanels.plugins" +msgstr "Plugins" + +#: packages/editor/src/components/ui/sidebar/use-plugin-panels.tsx +msgid "editor.sidebar.usePluginPanels.thisPanelHitAnErrorAnd" +msgstr "This panel hit an error and was unloaded for this session. The rest of the editor is unaffected — reload to try again." + #: packages/editor/src/components/editor/index.tsx msgid "editor.theEditorSceneFailedToRender" msgstr "The editor scene failed to render" diff --git a/packages/editor/src/i18n/locales/en/messages.ts b/packages/editor/src/i18n/locales/en/messages.ts index 7bb6c459d0..b2d999b0a5 100644 --- a/packages/editor/src/i18n/locales/en/messages.ts +++ b/packages/editor/src/i18n/locales/en/messages.ts @@ -1 +1 @@ -/*eslint-disable*/import type{Messages}from"@lingui/core";export const messages=JSON.parse("{\"app.appShell.pascalHome\":[\"Pascal home\"],\"app.buildTab.addGate\":[\"Add Gate\"],\"app.buildTab.addOpenPassage\":[\"Add Open Passage\"],\"app.buildTab.addToRooms\":[\"Add to rooms\"],\"app.buildTab.allBuildTools\":[\"← All build tools\"],\"app.buildTab.chooseGateOrOpenPassageThen\":[\"Choose Gate or Open Passage, then click its position on any fence. Find placed gates and openings under their fence in the scene graph.\"],\"app.buildTab.clickALinesetToLayThe\":[\"Click a lineset to lay the line beside it.\"],\"app.buildTab.doubleGate\":[\"Double gate\"],\"app.buildTab.featuresExtensions\":[\"Features & extensions\"],\"app.buildTab.fenceFeatures\":[\"Fence features\"],\"app.buildTab.followLineset\":[\"Follow lineset\"],\"app.buildTab.gate\":[\"Gate\"],\"app.buildTab.gateStyle\":[\"Gate style\"],\"app.buildTab.horizontalBoards\":[\"Horizontal boards\"],\"app.buildTab.hoverAFenceToPreviewClick\":[\"Hover a fence to preview. Click to place. Esc cancels. Leave room between openings.\"],\"app.buildTab.leaves\":[\"Leaves\"],\"app.buildTab.liquidLine\":[\"Liquid Line\"],\"app.buildTab.matchFenceStyle\":[\"Match fence style\"],\"app.buildTab.mep\":[\"MEP\"],\"app.buildTab.off\":[\"Off\"],\"app.buildTab.on\":[\"On\"],\"app.buildTab.openRails\":[\"Open rails\"],\"app.buildTab.opening\":[\"Opening\"],\"app.buildTab.openingWidthM\":[\"Opening width (m)\"],\"app.buildTab.outdoor\":[\"Outdoor\"],\"app.buildTab.picket\":[\"Picket\"],\"app.buildTab.roofType\":[\"Roof type\"],\"app.buildTab.roomsAlreadyCreateTheirFloorAnd\":[\"Rooms already create their floor and ceiling. Use these for platforms and one-off structure.\"],\"app.buildTab.searchBuildToolsAndKitchenItems\":[\"Search build tools and kitchen items\"],\"app.buildTab.searchToolsFridgeSink\":[\"Search tools, fridge, sink…\"],\"app.buildTab.selectACurvedWallToMatch\":[\"Select a curved wall to match its radius and arc.\"],\"app.buildTab.singleGate\":[\"Single gate\"],\"app.buildTab.slabCeilingColumn\":[\"Slab, ceiling, column…\"],\"app.buildTab.solidPrivacy\":[\"Solid privacy\"],\"app.buildTab.traceALineAlongsideAnExisting\":[\"Trace a line alongside an existing lineset (F).\"],\"app.buildTab.verticalSlats\":[\"Vertical slats\"],\"app.editorNavbar.allProjects\":[\"All projects\"],\"app.editorNavbar.preview\":[\"Preview\"],\"app.editorNavbar.projectName\":[\"Project name\"],\"app.editorNavbar.renameProject\":[\"Rename project\"],\"app.editorNavbar.share\":[\"Share\"],\"app.kitchenBrowser.addLabel\":[\"Add \",[\"label\"]],\"app.kitchenBrowser.addToKitchen\":[\"Add to kitchen\"],\"app.kitchenBrowser.chooseAnItemThenClickTo\":[\"Choose an item, then click to place it. Appliances include their cabinetry.\"],\"app.kitchenBrowser.findInThisProjectLength\":[\"Find in this project · \",[\"length\"]],\"app.kitchenBrowser.findName\":[\"Find \",[\"name\"]],\"app.kitchenBrowser.groupAdd\":[\"Kitchen · Add\"],\"app.kitchenBrowser.groupInThisProject\":[\"Kitchen · In this project\"],\"app.kitchenBrowser.kitchenCabinet\":[\"Kitchen cabinet\"],\"app.kitchenBrowser.noMatchingKitchenItemsPlacedYet\":[\"No matching kitchen items placed yet.\"],\"app.kitchenBrowser.selectAndShowInScene\":[\"Select and show in scene\"],\"app.lib.buildPalette.ceiling\":[\"Ceiling\"],\"app.lib.buildPalette.column\":[\"Column\"],\"app.lib.buildPalette.door\":[\"Door\"],\"app.lib.buildPalette.duct\":[\"Duct\"],\"app.lib.buildPalette.dwvPipe\":[\"DWV Pipe\"],\"app.lib.buildPalette.elevator\":[\"Elevator\"],\"app.lib.buildPalette.fence\":[\"Fence\"],\"app.lib.buildPalette.hvacUnit\":[\"HVAC Unit\"],\"app.lib.buildPalette.kitchen\":[\"Kitchen\"],\"app.lib.buildPalette.lineset\":[\"Lineset\"],\"app.lib.buildPalette.liquidLine\":[\"Liquid Line\"],\"app.lib.buildPalette.mep\":[\"MEP\"],\"app.lib.buildPalette.register\":[\"Register\"],\"app.lib.buildPalette.roof\":[\"Roof\"],\"app.lib.buildPalette.shelf\":[\"Shelf\"],\"app.lib.buildPalette.slab\":[\"Slab\"],\"app.lib.buildPalette.spawnPoint\":[\"Spawn point\"],\"app.lib.buildPalette.stairs\":[\"Stairs\"],\"app.lib.buildPalette.terrace\":[\"Terrace\"],\"app.lib.buildPalette.terrain\":[\"Terrain\"],\"app.lib.buildPalette.wall\":[\"Wall\"],\"app.lib.buildPalette.window\":[\"Window\"],\"app.lib.buildPanelModel.addFitting\":[\"Add Fitting\"],\"app.lib.buildPanelModel.addGate\":[\"Add Gate\"],\"app.lib.buildPanelModel.addOpenPassage\":[\"Add Open Passage\"],\"app.lib.buildPanelModel.addTrap\":[\"Add Trap\"],\"app.lib.buildPanelModel.build\":[\"Build\"],\"app.lib.buildPanelModel.createFrom\":[\"Create from\"],\"app.lib.buildPanelModel.drawTheRoofFootprintWithTwo\":[\"Draw the roof footprint with two corner clicks.\"],\"app.lib.buildPanelModel.duct\":[\"Duct\"],\"app.lib.buildPanelModel.dwvPipe\":[\"DWV Pipe\"],\"app.lib.buildPanelModel.featuresExtensions\":[\"Features & extensions\"],\"app.lib.buildPanelModel.fence\":[\"Fence\"],\"app.lib.buildPanelModel.followLineset\":[\"Follow lineset\"],\"app.lib.buildPanelModel.gatesOpenings\":[\"Gates & openings\"],\"app.lib.buildPanelModel.hoverARoomToPreviewIts\":[\"Hover a room to preview its boundary, then click to place.\"],\"app.lib.buildPanelModel.kitchen\":[\"Kitchen\"],\"app.lib.buildPanelModel.mep\":[\"MEP\"],\"app.lib.buildPanelModel.modularCabinet\":[\"Modular Cabinet\"],\"app.lib.buildPanelModel.off\":[\"Off\"],\"app.lib.buildPanelModel.on\":[\"On\"],\"app.lib.buildPanelModel.painting\":[\"Painting\"],\"app.lib.buildPanelModel.roof\":[\"Roof\"],\"app.lib.buildPanelModel.roofType\":[\"Roof type\"],\"app.lib.buildPanelModel.toolCount\":[[\"count\",\"plural\",{\"one\":[\"#\",\" tool\"],\"other\":[\"#\",\" tools\"]}]],\"app.lib.buildTabState.conical\":[\"Conical\"],\"app.lib.buildTabState.draw\":[\"Draw\"],\"app.lib.buildTabState.dutch\":[\"Dutch\"],\"app.lib.buildTabState.flat\":[\"Flat\"],\"app.lib.buildTabState.gable\":[\"Gable\"],\"app.lib.buildTabState.gambrel\":[\"Gambrel\"],\"app.lib.buildTabState.hip\":[\"Hip\"],\"app.lib.buildTabState.mansard\":[\"Mansard\"],\"app.lib.buildTabState.room\":[\"Room\"],\"app.lib.buildTabState.shed\":[\"Shed\"],\"app.lib.buildTabState.wall\":[\"Wall\"],\"app.sharePanel.anyoneWithTheLinkCanView\":[\"Anyone with the link can view this project. They cannot edit it.\"],\"app.sharePanel.copied\":[\"Copied\"],\"app.sharePanel.copy\":[\"Copy\"],\"app.sharePanel.couldNotReadTheSharingState\":[\"Could not read the sharing state.\"],\"app.sharePanel.couldNotTurnOffThePublic\":[\"Could not turn off the public link.\"],\"app.sharePanel.couldNotTurnOnThePublic\":[\"Could not turn on the public link.\"],\"app.sharePanel.embedCode\":[\"Embed code\"],\"app.sharePanel.embedLink\":[\"Embed link\"],\"app.sharePanel.hideControls\":[\"Hide controls\"],\"app.sharePanel.link\":[\"Link\"],\"app.sharePanel.onlyThe3dViewNoHeader\":[\"Only the 3D view, no header or toolbar.\"],\"app.sharePanel.open\":[\"Open\"],\"app.sharePanel.publicLink\":[\"Public link\"],\"app.sharePanel.shareProject\":[\"Share project\"],\"app.viewerToolbar.automaticDimensions\":[\"Automatic dimensions\"],\"app.viewerToolbar.camera\":[\"Camera\"],\"app.viewerToolbar.cleanPlanDimensionsAppearWithSelection\":[\"Clean plan; dimensions appear with selection\"],\"app.viewerToolbar.collapseSidebar\":[\"Collapse sidebar\"],\"app.viewerToolbar.crispOpaqueEdgeLines\":[\"Crisp, opaque edge lines\"],\"app.viewerToolbar.cutaway\":[\"Cutaway\"],\"app.viewerToolbar.default\":[\"Default\"],\"app.viewerToolbar.display\":[\"Display\"],\"app.viewerToolbar.displaySettings\":[\"Display settings\"],\"app.viewerToolbar.doorWindowMarks\":[\"Door/window marks\"],\"app.viewerToolbar.edges\":[\"Edges\"],\"app.viewerToolbar.enterVr\":[\"Enter VR\"],\"app.viewerToolbar.exitVr\":[\"Exit VR\"],\"app.viewerToolbar.expandSidebar\":[\"Expand sidebar\"],\"app.viewerToolbar.expert\":[\"Expert\"],\"app.viewerToolbar.exploded\":[\"Exploded\"],\"app.viewerToolbar.faceOfStud\":[\"Face of stud\"],\"app.viewerToolbar.faintOutlineOfMajorCreases\":[\"Faint outline of major creases\"],\"app.viewerToolbar.feetInches\":[\"Feet & inches\"],\"app.viewerToolbar.finishedFaces\":[\"Finished faces\"],\"app.viewerToolbar.flatAndFastNoAmbientOcclusion\":[\"Flat and fast — no ambient occlusion\"],\"app.viewerToolbar.floorPlanAnnotations\":[\"Floor plan annotations\"],\"app.viewerToolbar.floorPlanMode\":[\"Floor plan mode\"],\"app.viewerToolbar.fullAmbientOcclusion\":[\"Full ambient occlusion\"],\"app.viewerToolbar.fullDocumentationAndAnnotationControls\":[\"Full documentation and annotation controls\"],\"app.viewerToolbar.fullHeight\":[\"Full height\"],\"app.viewerToolbar.fullWallThickness\":[\"Full wall thickness\"],\"app.viewerToolbar.grid\":[\"Grid\"],\"app.viewerToolbar.levelsMode\":[\"Levels: \",[\"mode\"]],\"app.viewerToolbar.low\":[\"Low\"],\"app.viewerToolbar.magneticSnap\":[\"Magnetic snap\"],\"app.viewerToolbar.manual\":[\"Manual\"],\"app.viewerToolbar.manualDimensions\":[\"Manual dimensions\"],\"app.viewerToolbar.measurements\":[\"Measurements\"],\"app.viewerToolbar.meters\":[\"Meters\"],\"app.viewerToolbar.millimeters\":[\"Millimeters\"],\"app.viewerToolbar.n3dMeasurements\":[\"3D measurements\"],\"app.viewerToolbar.noEdgeLines\":[\"No edge lines\"],\"app.viewerToolbar.off\":[\"Off\"],\"app.viewerToolbar.on\":[\"On\"],\"app.viewerToolbar.orthographic\":[\"Orthographic\"],\"app.viewerToolbar.perspective\":[\"Perspective\"],\"app.viewerToolbar.preview\":[\"Preview\"],\"app.viewerToolbar.previewMode\":[\"Preview mode\"],\"app.viewerToolbar.render\":[\"Render\"],\"app.viewerToolbar.rendered\":[\"Rendered\"],\"app.viewerToolbar.roomLabels\":[\"Room labels\"],\"app.viewerToolbar.sceneTheme\":[\"Scene theme\"],\"app.viewerToolbar.shadows\":[\"Shadows\"],\"app.viewerToolbar.singleWallAxis\":[\"Single wall axis\"],\"app.viewerToolbar.soft\":[\"Soft\"],\"app.viewerToolbar.solid\":[\"Solid\"],\"app.viewerToolbar.solo\":[\"Solo\"],\"app.viewerToolbar.stack\":[\"Stack\"],\"app.viewerToolbar.stairAnnotations\":[\"Stair annotations\"],\"app.viewerToolbar.strong\":[\"Strong\"],\"app.viewerToolbar.structuralCoreFace\":[\"Structural core face\"],\"app.viewerToolbar.structuralGridsColumnCenters\":[\"Structural grids & column centers\"],\"app.viewerToolbar.translucent\":[\"Translucent\"],\"app.viewerToolbar.units\":[\"Units\"],\"app.viewerToolbar.walkthrough\":[\"Walkthrough\"],\"app.viewerToolbar.wallCenterline\":[\"Wall centerline\"],\"app.viewerToolbar.wallDimensions\":[\"Wall dimensions\"],\"app.viewerToolbar.wallsLabel\":[\"Walls: \",[\"label\"]],\"core.level.basement\":[\"Basement\"],\"core.level.basementNumber\":[\"Basement \",[\"number\"]],\"core.level.floorNumber\":[\"Floor \",[\"number\"]],\"core.level.groundFloor\":[\"Ground floor\"],\"editor.actionMenu.cameraActions.orbitLeft\":[\"Orbit Left\"],\"editor.actionMenu.cameraActions.orbitRight\":[\"Orbit Right\"],\"editor.actionMenu.cameraActions.topView\":[\"Top View\"],\"editor.actionMenu.controlModes.delete\":[\"Delete\"],\"editor.actionMenu.controlModes.select\":[\"Select\"],\"editor.actionMenu.followPascalPill.resumeFollowing\":[\"Resume following\"],\"editor.actionMenu.followPascalToggle.off\":[\"Follow Pascal: Off\"],\"editor.actionMenu.followPascalToggle.on\":[\"Follow Pascal: On\"],\"editor.actionMenu.furnishTools.appliance\":[\"Appliance\"],\"editor.actionMenu.furnishTools.bathroom\":[\"Bathroom\"],\"editor.actionMenu.furnishTools.furniture\":[\"Furniture\"],\"editor.actionMenu.furnishTools.kitchen\":[\"Kitchen\"],\"editor.actionMenu.furnishTools.outdoor\":[\"Outdoor\"],\"editor.actionMenu.measurementControl.angle\":[\"Angle\"],\"editor.actionMenu.measurementControl.angularDimension\":[\"Angular dimension\"],\"editor.actionMenu.measurementControl.arcLength\":[\"Arc length\"],\"editor.actionMenu.measurementControl.area\":[\"Area\"],\"editor.actionMenu.measurementControl.centerMark\":[\"Center mark\"],\"editor.actionMenu.measurementControl.chordDimension\":[\"Chord dimension\"],\"editor.actionMenu.measurementControl.continuousDimension\":[\"Continuous dimension\"],\"editor.actionMenu.measurementControl.coordinateDimensions\":[\"Coordinate dimensions\"],\"editor.actionMenu.measurementControl.diameterDimension\":[\"Diameter dimension\"],\"editor.actionMenu.measurementControl.distance\":[\"Distance\"],\"editor.actionMenu.measurementControl.floorPlan\":[\"Floor plan\"],\"editor.actionMenu.measurementControl.linearDimension\":[\"Linear dimension\"],\"editor.actionMenu.measurementControl.measureSelectedlabel\":[\"Measure: \",[\"selectedLabel\"]],\"editor.actionMenu.measurementControl.measurementOptions\":[\"Measurement options\"],\"editor.actionMenu.measurementControl.measurementType\":[\"Measurement type\"],\"editor.actionMenu.measurementControl.perimeter\":[\"Perimeter\"],\"editor.actionMenu.measurementControl.radiusDimension\":[\"Radius dimension\"],\"editor.actionMenu.measurementControl.smart\":[\"Smart\"],\"editor.actionMenu.measurementControl.volume\":[\"Volume\"],\"editor.actionMenu.pointAskButton.pointAndAsk\":[\"Point and ask\"],\"editor.actionMenu.pointAskButton.pointAndAskC\":[\"Point and ask (C)\"],\"editor.actionMenu.pointAskButton.pointAndAskWorksInThe\":[\"Point and ask works in the 3D view\"],\"editor.actionMenu.structureTools.ceiling\":[\"Ceiling\"],\"editor.actionMenu.structureTools.column\":[\"Column\"],\"editor.actionMenu.structureTools.door\":[\"Door\"],\"editor.actionMenu.structureTools.duct\":[\"Duct\"],\"editor.actionMenu.structureTools.ductFitting\":[\"Duct Fitting\"],\"editor.actionMenu.structureTools.dwvPipe\":[\"DWV Pipe\"],\"editor.actionMenu.structureTools.elevator\":[\"Elevator\"],\"editor.actionMenu.structureTools.fence\":[\"Fence\"],\"editor.actionMenu.structureTools.gableRoof\":[\"Gable Roof\"],\"editor.actionMenu.structureTools.hvacUnit\":[\"HVAC Unit\"],\"editor.actionMenu.structureTools.lineset\":[\"Lineset\"],\"editor.actionMenu.structureTools.liquidLine\":[\"Liquid Line\"],\"editor.actionMenu.structureTools.pipeFitting\":[\"Pipe Fitting\"],\"editor.actionMenu.structureTools.register\":[\"Register\"],\"editor.actionMenu.structureTools.shelf\":[\"Shelf\"],\"editor.actionMenu.structureTools.slab\":[\"Slab\"],\"editor.actionMenu.structureTools.spawnPoint\":[\"Spawn Point\"],\"editor.actionMenu.structureTools.stairs\":[\"Stairs\"],\"editor.actionMenu.structureTools.trap\":[\"Trap\"],\"editor.actionMenu.structureTools.wall\":[\"Wall\"],\"editor.actionMenu.structureTools.window\":[\"Window\"],\"editor.actionMenu.structureTools.zone\":[\"Zone\"],\"editor.actionMenu.viewToggles.deleteGuideImage\":[\"Delete guide image\"],\"editor.actionMenu.viewToggles.deleteScan\":[\"Delete scan\"],\"editor.actionMenu.viewToggles.guideCount\":[[\"count\",\"plural\",{\"one\":[\"#\",\" guide image on this level\"],\"other\":[\"#\",\" guide images on this level\"]}]],\"editor.actionMenu.viewToggles.guideImageNumber\":[\"Guide image \",[\"number\"]],\"editor.actionMenu.viewToggles.guideImageSettings\":[\"Guide image settings\"],\"editor.actionMenu.viewToggles.guideImages\":[\"Guide images\"],\"editor.actionMenu.viewToggles.guides\":[\"Guides\"],\"editor.actionMenu.viewToggles.guidesHidden\":[\"Guides: Hidden\"],\"editor.actionMenu.viewToggles.guidesVisible\":[\"Guides: Visible\"],\"editor.actionMenu.viewToggles.hideGuideImages\":[\"Hide guide images\"],\"editor.actionMenu.viewToggles.hideReferenceFloor\":[\"Hide reference floor\"],\"editor.actionMenu.viewToggles.hideScans\":[\"Hide scans\"],\"editor.actionMenu.viewToggles.levelsBelow\":[[\"count\"],\" below\"],\"editor.actionMenu.viewToggles.noLowerFloorAvailable\":[\"No lower floor available.\"],\"editor.actionMenu.viewToggles.opacity\":[\"Opacity\"],\"editor.actionMenu.viewToggles.referenceFloor\":[\"Reference floor\"],\"editor.actionMenu.viewToggles.referenceFloorSelectedlevelname\":[\"Reference floor: \",[\"selectedLevelName\"]],\"editor.actionMenu.viewToggles.referenceFloorSettings\":[\"Reference floor settings\"],\"editor.actionMenu.viewToggles.referenceSettings\":[\"Reference settings\"],\"editor.actionMenu.viewToggles.references\":[\"References\"],\"editor.actionMenu.viewToggles.referencesEmpty\":[\"Upload GLB meshes as scan references or blueprint images as guide references.\"],\"editor.actionMenu.viewToggles.referencesHidden\":[\"References: Hidden\"],\"editor.actionMenu.viewToggles.referencesVisible\":[\"References: Visible\"],\"editor.actionMenu.viewToggles.riserDiagram\":[\"Riser diagram\"],\"editor.actionMenu.viewToggles.scanCount\":[[\"count\",\"plural\",{\"one\":[\"#\",\" scan on this level\"],\"other\":[\"#\",\" scans on this level\"]}]],\"editor.actionMenu.viewToggles.scanNumber\":[\"Scan \",[\"number\"]],\"editor.actionMenu.viewToggles.scanSettings\":[\"Scan settings\"],\"editor.actionMenu.viewToggles.scans\":[\"Scans\"],\"editor.actionMenu.viewToggles.scansHidden\":[\"Scans: Hidden\"],\"editor.actionMenu.viewToggles.scansVisible\":[\"Scans: Visible\"],\"editor.actionMenu.viewToggles.showGuideImages\":[\"Show guide images\"],\"editor.actionMenu.viewToggles.showReferenceFloor\":[\"Show reference floor\"],\"editor.actionMenu.viewToggles.showScans\":[\"Show scans\"],\"editor.actionMenu.viewToggles.uploadScanOrGuideImage\":[\"Upload scan or guide image\"],\"editor.backToHome\":[\"Back to home\"],\"editor.buildPanel.advanced\":[\"Advanced\"],\"editor.buildPanel.rooms.hint\":[\"walls · floor · ceiling\"],\"editor.buildPanel.rooms.idle\":[\"Pick a shape to start. Every room brings its own walls, floor and ceiling.\"],\"editor.buildPanel.rooms.polygon.caption\":[[\"lead\"],\" then the first one again to close. For L-shapes and angled rooms.\"],\"editor.buildPanel.rooms.polygon.label\":[\"Polygon\"],\"editor.buildPanel.rooms.polygon.lead\":[\"Click each corner,\"],\"editor.buildPanel.rooms.polygon.title\":[\"Polygon room\"],\"editor.buildPanel.rooms.rectangle.caption\":[[\"lead\"],\" on the grid. Walls, floor and ceiling are created together.\"],\"editor.buildPanel.rooms.rectangle.label\":[\"Rectangle\"],\"editor.buildPanel.rooms.rectangle.lead\":[\"Click two corners\"],\"editor.buildPanel.rooms.rectangle.title\":[\"Rectangle room\"],\"editor.buildPanel.rooms.title\":[\"Rooms\"],\"editor.buildPanel.rooms.walls.caption\":[[\"lead\"],\" Close a loop and it becomes a room; leave it open for partitions.\"],\"editor.buildPanel.rooms.walls.label\":[\"Walls\"],\"editor.buildPanel.rooms.walls.lead\":[\"Draw one wall at a time.\"],\"editor.buildPanel.rooms.walls.title\":[\"Walls\"],\"editor.cameraControlsHint\":[\"Camera controls hint\"],\"editor.cameraHint.pan\":[\"Pan\"],\"editor.cameraHint.rotate\":[\"Rotate\"],\"editor.cameraHint.zoom\":[\"Zoom\"],\"editor.dismiss\":[\"Dismiss\"],\"editor.dismissCameraControlsHint\":[\"Dismiss camera controls hint\"],\"editor.expandSidebar\":[\"Expand sidebar\"],\"editor.floatingActionMenu.axis\":[\"Axis\"],\"editor.floatingActionMenu.axis2\":[\"⌥ axis\"],\"editor.floatingActionMenu.noEquipment\":[\"⚠ no equipment\"],\"editor.floatingActionMenu.rTRotate\":[\"R/T rotate\"],\"editor.floatingActionMenu.registerCount\":[[\"count\",\"plural\",{\"one\":[\"#\",\" register\"],\"other\":[\"#\",\" registers\"]}]],\"editor.floatingActionMenu.runCount\":[[\"count\",\"plural\",{\"one\":[\"#\",\" run\"],\"other\":[\"#\",\" runs\"]}]],\"editor.floatingActionMenu.system\":[\"System\"],\"editor.helpers.buildingHelper.cancel\":[\"Cancel\"],\"editor.helpers.buildingHelper.placeBuilding\":[\"Place building\"],\"editor.helpers.buildingHelper.rotate\":[\"Rotate\"],\"editor.helpers.contextualHelperPanel.cancelPlacement\":[\"Cancel placement\"],\"editor.helpers.contextualHelperPanel.continuationClickOrPressCTo\":[\"Continuation — click or press C to cycle\"],\"editor.helpers.contextualHelperPanel.continuationLabel\":[\"Continuation: \",[\"label\"]],\"editor.helpers.contextualHelperPanel.dragToDrawFence\":[\"Drag to draw fence\"],\"editor.helpers.contextualHelperPanel.eraseScope\":[\"Erase: \",[\"scope\"]],\"editor.helpers.contextualHelperPanel.eraseScopeClickOrPressShift\":[\"Erase scope — click or press Shift to cycle\"],\"editor.helpers.contextualHelperPanel.eraseScopeLabel\":[\"Erase scope: \",[\"scope\"]],\"editor.helpers.contextualHelperPanel.fenceTypeClickOrPressT\":[\"Fence type — click or press T to switch between straight, curved and freehand\"],\"editor.helpers.contextualHelperPanel.fewerShortcuts\":[\"Fewer shortcuts\"],\"editor.helpers.contextualHelperPanel.finishCurveOrDoubleClick\":[\"Finish curve (or double-click)\"],\"editor.helpers.contextualHelperPanel.gridLength\":[\"Grid: \",[\"length\"]],\"editor.helpers.contextualHelperPanel.gridStepClickOrTapCtrl\":[\"Grid step — click or tap Ctrl to cycle\"],\"editor.helpers.contextualHelperPanel.gridStepLength\":[\"Grid step: \",[\"length\"]],\"editor.helpers.contextualHelperPanel.hoverAPaintedSurfaceToErase\":[\"Hover a painted surface to erase\"],\"editor.helpers.contextualHelperPanel.hoverASurfaceToPaint\":[\"Hover a surface to paint\"],\"editor.helpers.contextualHelperPanel.hoverASurfaceToPickIts\":[\"Hover a surface to pick its material\"],\"editor.helpers.contextualHelperPanel.moreShortcuts\":[\"More shortcuts\"],\"editor.helpers.contextualHelperPanel.paintScope\":[\"Paint: \",[\"scope\"]],\"editor.helpers.contextualHelperPanel.paintScopeClickOrPressShift\":[\"Paint scope — click or press Shift to cycle\"],\"editor.helpers.contextualHelperPanel.paintScopeLabel\":[\"Paint scope: \",[\"scope\"]],\"editor.helpers.contextualHelperPanel.pickScope\":[\"Pick: \",[\"scope\"]],\"editor.helpers.contextualHelperPanel.placeGateOnAFence\":[\"Place gate on a fence\"],\"editor.helpers.contextualHelperPanel.placePassageOnAFence\":[\"Place passage on a fence\"],\"editor.helpers.contextualHelperPanel.selectAMaterialToPaint\":[\"Select a material to paint\"],\"editor.helpers.contextualHelperPanel.snappingAngles\":[\"Snapping: Angles\"],\"editor.helpers.contextualHelperPanel.snappingGrid\":[\"Snapping: Grid\"],\"editor.helpers.contextualHelperPanel.snappingLines\":[\"Snapping: Lines\"],\"editor.helpers.contextualHelperPanel.snappingModeClickOrPressShift\":[\"Snapping mode — click or press Shift to cycle\"],\"editor.helpers.contextualHelperPanel.snappingOff\":[\"Snapping: Off\"],\"editor.helpers.contextualHelperPanel.straightContinuationIsUnavailableForCurved\":[\"Straight continuation is unavailable for curved or freehand fences\"],\"editor.helpers.contextualHelperPanel.straightContinuous\":[\"Straight: Continuous\"],\"editor.helpers.contextualHelperPanel.straightFenceContinuationClickOrPress\":[\"Straight fence continuation — click or press C to toggle\"],\"editor.helpers.contextualHelperPanel.straightSingle\":[\"Straight: Single\"],\"editor.helpers.helperManager.addPoint\":[\"Add point\"],\"editor.helpers.helperManager.addPointClickTheFirstTo\":[\"Add point · click the first to close\"],\"editor.helpers.helperManager.brushSize\":[\"Brush size\"],\"editor.helpers.helperManager.cancel\":[\"Cancel\"],\"editor.helpers.helperManager.cancelPicking\":[\"Cancel picking\"],\"editor.helpers.helperManager.cancelStroke\":[\"Cancel stroke\"],\"editor.helpers.helperManager.done\":[\"Done\"],\"editor.helpers.helperManager.drawTheMezzanine\":[\"Draw the mezzanine\"],\"editor.helpers.helperManager.drawTheOpening\":[\"Draw the opening\"],\"editor.helpers.helperManager.drawTheTerrace\":[\"Draw the terrace\"],\"editor.helpers.helperManager.exitSmartMeasure\":[\"Exit smart measure\"],\"editor.helpers.helperManager.finish\":[\"Finish\"],\"editor.helpers.helperManager.finishAtTheEdge\":[\"Finish at the edge\"],\"editor.helpers.helperManager.freeMove\":[\"Free move\"],\"editor.helpers.helperManager.freeMoveSlideDoorsAndWindows\":[\"Free move · slide doors and windows\"],\"editor.helpers.helperManager.holdToPickAMaterial\":[\"Hold to pick a material\"],\"editor.helpers.helperManager.inspectSurfaceDimensions\":[\"Inspect surface dimensions\"],\"editor.helpers.helperManager.paintWithThisMaterial\":[\"Paint with this material\"],\"editor.helpers.helperManager.pickTargetHeight\":[\"Pick target height\"],\"editor.helpers.helperManager.pinMeasurementLens\":[\"Pin measurement lens\"],\"editor.helpers.helperManager.place\":[\"Place\"],\"editor.helpers.helperManager.placeInsideTheRoom\":[\"Place inside the room\"],\"editor.helpers.helperManager.pressAnywhereDragToTheOpposite\":[\"Press anywhere, drag to the opposite corner\"],\"editor.helpers.helperManager.raiseOrLower\":[\"Raise or lower\"],\"editor.helpers.helperManager.removeAPaintedPartOrReset\":[\"Remove a painted part, or reset a surface\"],\"editor.helpers.helperManager.removeLastPoint\":[\"Remove last point\"],\"editor.helpers.helperManager.resize\":[\"Resize\"],\"editor.helpers.helperManager.rotate45\":[\"Rotate ±45°\"],\"editor.helpers.helperManager.rotateTheSelection45\":[\"Rotate the selection ±45°\"],\"editor.helpers.helperManager.setOneCornerThenTheOpposite\":[\"Set one corner, then the opposite\"],\"editor.helpers.itemHelper.cancel\":[\"Cancel\"],\"editor.helpers.itemHelper.forcePlace\":[\"Force place\"],\"editor.helpers.itemHelper.place\":[\"Place\"],\"editor.helpers.itemHelper.rotate\":[\"Rotate\"],\"editor.helpers.registeredToolHelper.guidedConstraintsBypassed\":[\"Guided constraints bypassed\"],\"editor.lib.contextualHelp.addOrRemoveObjectsFromThe\":[\"Add or remove objects from the selection\"],\"editor.lib.contextualHelp.adjustOneSideSCornerRadius\":[\"Adjust one side’s corner radius\"],\"editor.lib.contextualHelp.clearTheSelectionOrClickOutside\":[\"Clear the selection (or click outside)\"],\"editor.lib.contextualHelp.clickAHandleDotToShow\":[\"Click a handle dot to show move arrows\"],\"editor.lib.contextualHelp.clickOrDragTheSelectionTo\":[\"Click or drag the selection to move it as one\"],\"editor.lib.contextualHelp.clickTheHandleDotToShow\":[\"Click the handle dot to show move + rotate handles\"],\"editor.lib.contextualHelp.detachTheJointWhileDraggingAn\":[\"Detach the joint while dragging an arrow\"],\"editor.lib.contextualHelp.dragLeftOrRightToRotate\":[\"Drag left or right to rotate selected object\"],\"editor.lib.contextualHelp.dragSelectedMovableObject\":[\"Drag selected movable object\"],\"editor.lib.contextualHelp.groupSelectionSessionOnly\":[\"Group selection (session only)\"],\"editor.lib.contextualHelp.holdToRotateFreely\":[\"Hold to rotate freely\"],\"editor.lib.contextualHelp.rotate45\":[\"Rotate ±45°\"],\"editor.lib.contextualHelp.rotateTheSelection45\":[\"Rotate the selection ±45°\"],\"editor.lib.contextualHelp.rotatingFreely\":[\"Rotating freely (no angle step)\"],\"editor.lib.contextualHelp.switchTheRotationAxisYX\":[\"Switch the rotation axis (Y → X → Z)\"],\"editor.lib.contextualHelp.ungroupSessionSelection\":[\"Ungroup session selection\"],\"editor.lib.continuation.continuous\":[\"Continuous\"],\"editor.lib.continuation.continuousCanopy\":[\"Continuous canopy\"],\"editor.lib.continuation.continuousRun\":[\"Continuous run\"],\"editor.lib.continuation.curvedFence\":[\"Curved fence\"],\"editor.lib.continuation.freehandFence\":[\"Freehand fence\"],\"editor.lib.continuation.placeMultiple\":[\"Place multiple\"],\"editor.lib.continuation.placeOnce\":[\"Place once\"],\"editor.lib.continuation.polygonRoom\":[\"Polygon room\"],\"editor.lib.continuation.rectangleRoom\":[\"Rectangle room\"],\"editor.lib.continuation.singleCabinet\":[\"Single cabinet\"],\"editor.lib.continuation.singleCanopy\":[\"Single canopy\"],\"editor.lib.continuation.singleFence\":[\"Single fence\"],\"editor.lib.continuation.walls\":[\"Walls\"],\"editor.lib.hudTitle.cutOpening\":[\"Cut opening\"],\"editor.lib.hudTitle.divideRoom\":[\"Divide room\"],\"editor.lib.hudTitle.editKind\":[\"Edit \",[\"kind\"]],\"editor.lib.hudTitle.erase\":[\"Erase\"],\"editor.lib.hudTitle.levelTerrain\":[\"Level terrain\"],\"editor.lib.hudTitle.lowerTerrain\":[\"Lower terrain\"],\"editor.lib.hudTitle.mezzanine\":[\"Mezzanine\"],\"editor.lib.hudTitle.moveKind\":[\"Move \",[\"kind\"]],\"editor.lib.hudTitle.moveRoom\":[\"Move room\"],\"editor.lib.hudTitle.moveSelection\":[\"Move selection\"],\"editor.lib.hudTitle.paint\":[\"Paint\"],\"editor.lib.hudTitle.paintARectangle\":[\"Paint a rectangle\"],\"editor.lib.hudTitle.paintAShape\":[\"Paint a shape\"],\"editor.lib.hudTitle.pickMaterial\":[\"Pick material\"],\"editor.lib.hudTitle.raiseTerrain\":[\"Raise terrain\"],\"editor.lib.hudTitle.resize\":[\"Resize\"],\"editor.lib.hudTitle.rotate\":[\"Rotate\"],\"editor.lib.hudTitle.select\":[\"Select\"],\"editor.lib.hudTitle.smartMeasure\":[\"Smart measure\"],\"editor.lib.hudTitle.smoothTerrain\":[\"Smooth terrain\"],\"editor.lib.hudTitle.splitKind\":[\"Split \",[\"kind\"]],\"editor.lib.hudTitle.terrace\":[\"Terrace\"],\"editor.lib.wallDrawVariant.polygonRoom\":[\"Polygon room\"],\"editor.lib.wallDrawVariant.rectangleRoom\":[\"Rectangle room\"],\"editor.lib.wallDrawVariant.walls\":[\"Walls\"],\"editor.reloadEditor\":[\"Reload editor\"],\"editor.theEditorSceneFailedToRender\":[\"The editor scene failed to render\"],\"editor.toolHint.aCurtainWallTakesNoCorner.1qxjv5i\":[\"A curtain wall takes no corner window\"],\"editor.toolHint.aCurvedWallTakesNoCorner.1vdnaw5\":[\"A curved wall takes no corner window\"],\"editor.toolHint.addACornerClickTheFirst.o4r67t\":[\"Add a corner · click the first to close\"],\"editor.toolHint.anotherOpeningIsInTheWay.11l9dd0\":[\"Another opening is in the way at the corner\"],\"editor.toolHint.autoHangers.10554ka\":[\"Auto hangers\"],\"editor.toolHint.autoHangersClickOrPressH.rwa3ka\":[\"Auto hangers - click or press H to toggle\"],\"editor.toolHint.autoHangersOff.7yx01x\":[\"Auto hangers: Off\"],\"editor.toolHint.autoHangersOn.10b1umh\":[\"Auto hangers: On\"],\"editor.toolHint.bypassSnapping.w5lmdv\":[\"Bypass snapping\"],\"editor.toolHint.cancel.ew9em3\":[\"Cancel\"],\"editor.toolHint.cancelMove.lvp31c\":[\"Cancel move\"],\"editor.toolHint.cancelRunExit.zqjf3h\":[\"Cancel run / exit\"],\"editor.toolHint.cancelStartPoint.1xbq2lh\":[\"Cancel start point\"],\"editor.toolHint.cornerWindow.1avkzpo\":[\"Corner window\"],\"editor.toolHint.cuts.1y0axps\":[\"Cuts\"],\"editor.toolHint.cutsValue.ouzhvb\":[\"Cuts: \",[\"value\"]],\"editor.toolHint.cutsValueEven.1ngsz3\":[\"Cuts: \",[\"value\"],\", even\"],\"editor.toolHint.cycleMonoGableButterfly.1poga3m\":[\"Cycle mono / gable / butterfly\"],\"editor.toolHint.cycleSnappingMode.1ct0gn6\":[\"Cycle snapping mode\"],\"editor.toolHint.doorStyleClickOrPressL.33pe65\":[\"Door style — click or press L to cycle\"],\"editor.toolHint.doorTypeClickOrPressO.1hhh8gt\":[\"Door type — click or press O to cycle\"],\"editor.toolHint.dropDownspoutFromOutlet.1k4h1m4\":[\"Drop downspout from outlet\"],\"editor.toolHint.ductDiameterDownUp.1wdz5vq\":[\"Duct diameter down / up\"],\"editor.toolHint.endRunCancel.59dh2w\":[\"End run / cancel\"],\"editor.toolHint.exit.engmg5\":[\"Exit\"],\"editor.toolHint.exitDrawing.9noxyb\":[\"Exit drawing\"],\"editor.toolHint.finishAndContinue.1gpfsks\":[\"Finish and continue\"],\"editor.toolHint.finishCeiling.1c1lfel\":[\"Finish ceiling\"],\"editor.toolHint.finishGridAxis.1wvrfhr\":[\"Finish grid axis\"],\"editor.toolHint.finishMeasurement.1e4gv16\":[\"Finish measurement\"],\"editor.toolHint.finishMultiPointWitnesses.8wzskz\":[\"Finish multi-point witnesses\"],\"editor.toolHint.finishSlab.xmnm8e\":[\"Finish slab\"],\"editor.toolHint.flipSide.172xku9\":[\"Flip side\"],\"editor.toolHint.followTraceALineset.mgquwe\":[\"Follow: trace a lineset\"],\"editor.toolHint.forcePlace.1hq1nr\":[\"Force place\"],\"editor.toolHint.freePlacement.1nztdac\":[\"Free placement\"],\"editor.toolHint.goVerticalClickToPlace.dg8g6m\":[\"Go vertical ↕, click to place\"],\"editor.toolHint.highlightOutlet.65hoq8\":[\"Highlight outlet\"],\"editor.toolHint.joinAsACornerWindow.jvdp4j\":[\"Join as a corner window\"],\"editor.toolHint.key.altDrag.ai3wn9\":[\"Alt + drag\"],\"editor.toolHint.key.backspace.qy6qx8\":[\"Backspace\"],\"editor.toolHint.key.click.m8sun\":[\"Click\"],\"editor.toolHint.key.clickAgain.190ws9j\":[\"Click again\"],\"editor.toolHint.key.command.1j2mkia\":[\"Command\"],\"editor.toolHint.key.control.10fbl8e\":[\"Control\"],\"editor.toolHint.key.delete.oay2cq\":[\"Delete\"],\"editor.toolHint.key.doubleClick.vlma6o\":[\"Double click\"],\"editor.toolHint.key.drag.8pwtpf\":[\"Drag\"],\"editor.toolHint.key.enter.1ctpui5\":[\"Enter\"],\"editor.toolHint.key.hover.6xw79p\":[\"Hover\"],\"editor.toolHint.key.hoverADuctEnd.19axr3b\":[\"Hover a duct end\"],\"editor.toolHint.key.hoverAPipeEnd.1jbum5f\":[\"Hover a pipe end\"],\"editor.toolHint.key.hoverGutter.1dwcsno\":[\"Hover gutter\"],\"editor.toolHint.key.leftClick.s4gwfc\":[\"Left click\"],\"editor.toolHint.key.middleClick.1jbaan4\":[\"Middle click\"],\"editor.toolHint.key.rShiftR.13bnobh\":[\"R / Shift+R\"],\"editor.toolHint.key.rightClick.1ovld0h\":[\"Right click\"],\"editor.toolHint.key.scroll.ai6wr0\":[\"Scroll\"],\"editor.toolHint.key.scrollWheel.18j0ix7\":[\"Scroll wheel\"],\"editor.toolHint.key.space.1hrh82t\":[\"Space\"],\"editor.toolHint.key.tab.1xsal0s\":[\"Tab\"],\"editor.toolHint.mountFloorCeilingWall.32dxpv\":[\"Mount: floor / ceiling / wall\"],\"editor.toolHint.noRoomForTheMatchingWindow.1755948\":[\"No room for the matching window on the other wall\"],\"editor.toolHint.noWallMeetsHere.19n99yc\":[\"No wall meets here\"],\"editor.toolHint.numberOfCutsScrollOrClick.1kqe84b\":[\"Number of cuts — scroll or click to change\"],\"editor.toolHint.pickWitnessPoint.k3hgh1\":[\"Pick witness point\"],\"editor.toolHint.pipeSizeDownUp.wp04og\":[\"Pipe size down / up\"],\"editor.toolHint.placeAndContinue.qfwkrq\":[\"Place and continue\"],\"editor.toolHint.placeBlock.1aylwrx\":[\"Place block\"],\"editor.toolHint.placeBoxVentOnRoof.kf88e5\":[\"Place box vent on roof\"],\"editor.toolHint.placeCabinet.b0ouyk\":[\"Place cabinet\"],\"editor.toolHint.placeCanopyOrSetTheNext.12l7zf8\":[\"Place canopy or set the next run point\"],\"editor.toolHint.placeChimneyOnRoof.19dbqu\":[\"Place chimney on roof\"],\"editor.toolHint.placeColumn.1w2vq86\":[\"Place column\"],\"editor.toolHint.placeCupolaOnRoof.ofx3bn\":[\"Place cupola on roof\"],\"editor.toolHint.placeDimensionLineWhenNeeded.bjw2cj\":[\"Place dimension line when needed\"],\"editor.toolHint.placeDoorOnWall.1jwadf\":[\"Place door on wall\"],\"editor.toolHint.placeDormerOnRoof.1w518a6\":[\"Place dormer on roof\"],\"editor.toolHint.placeElevator.1f65zva\":[\"Place elevator\"],\"editor.toolHint.placeEyebrowVentOnRoof.1h1tqxn\":[\"Place eyebrow vent on roof\"],\"editor.toolHint.placeFitting.1pmx3vn\":[\"Place fitting\"],\"editor.toolHint.placeGutterOnRoofEave.llwzf9\":[\"Place gutter on roof eave\"],\"editor.toolHint.placeItLockedTo45.16e4csk\":[\"Place it (locked to 45°)\"],\"editor.toolHint.placeItem.teynf\":[\"Place item\"],\"editor.toolHint.placeMeasurementPoint.bsatli\":[\"Place measurement point\"],\"editor.toolHint.placeOnAFence.1dptstr\":[\"Place on a fence\"],\"editor.toolHint.placeRegister.1uebycd\":[\"Place register\"],\"editor.toolHint.placeRidgeVentOnRoof.2tpd8r\":[\"Place ridge vent on roof\"],\"editor.toolHint.placeShelf.y4l3iw\":[\"Place shelf\"],\"editor.toolHint.placeSkylightOnRoof.e215pe\":[\"Place skylight on roof\"],\"editor.toolHint.placeSolarPanelArrayOnRoof.kk11fn\":[\"Place solar panel array on roof\"],\"editor.toolHint.placeSpawnPoint.205o25\":[\"Place spawn point\"],\"editor.toolHint.placeStairs.zwxxu2\":[\"Place stairs\"],\"editor.toolHint.placeTrap.1gxemn3\":[\"Place trap\"],\"editor.toolHint.placeTurbineVentOnRoof.1iqeluf\":[\"Place turbine vent on roof\"],\"editor.toolHint.placeUnit.8zkx4q\":[\"Place unit\"],\"editor.toolHint.placeWindowOnWall.1k3qnfb\":[\"Place window on wall\"],\"editor.toolHint.placeWithoutTheCornerSnap.1nifqew\":[\"Place without the corner snap\"],\"editor.toolHint.placement.13lcvts\":[\"Placement\"],\"editor.toolHint.placementAuto.1caa52d\":[\"Placement: Auto\"],\"editor.toolHint.placementGround.1ruz145\":[\"Placement: Ground\"],\"editor.toolHint.placementRoof.renkw8\":[\"Placement: Roof\"],\"editor.toolHint.placementSurfaceClickOrPressP.w56h19\":[\"Placement surface - click or press P to cycle\"],\"editor.toolHint.placementType.1mdpl60\":[\"Placement type\"],\"editor.toolHint.placementTypeClickOrPressI.10cgxh2\":[\"Placement type — click or press I to toggle\"],\"editor.toolHint.removeLastPoint.2dmdcx\":[\"Remove last point\"],\"editor.toolHint.removeLastWitness.1b6vvzw\":[\"Remove last witness\"],\"editor.toolHint.rotate.1thqa0a\":[\"Rotate\"],\"editor.toolHint.rotate45.9zq68u\":[\"Rotate ±45°\"],\"editor.toolHint.rotate45FloorCeiling.m9t57d\":[\"Rotate ±45° (floor / ceiling)\"],\"editor.toolHint.rotateGhost15.rsa52c\":[\"Rotate ghost ±15°\"],\"editor.toolHint.rotateOrFlipTheRunSide.t5ior7\":[\"Rotate or flip the run side\"],\"editor.toolHint.rotateRoofDirection90.tvbji2\":[\"Rotate roof direction 90°\"],\"editor.toolHint.rotateSpawnPoint.1opcuu7\":[\"Rotate spawn point\"],\"editor.toolHint.roundRectangularOval.e4nh6x\":[\"Round / rectangular / oval\"],\"editor.toolHint.setFenceStartEnd.1phbwsq\":[\"Set fence start / end\"],\"editor.toolHint.setOneCornerThenTheOpposite.8tsl49\":[\"Set one corner, then the opposite\"],\"editor.toolHint.setRoofFootprint.p50n0o\":[\"Set roof footprint\"],\"editor.toolHint.setWallStartEnd.1r8ubcx\":[\"Set wall start / end\"],\"editor.toolHint.slopeLevel.ftqp67\":[\"Slope / level\"],\"editor.toolHint.snapOntoTheRun.86yhmp\":[\"Snap onto the run\"],\"editor.toolHint.splitAtTheMarks.x5tpdd\":[\"Split at the marks\"],\"editor.toolHint.startGridAxis.k92yza\":[\"Start grid axis\"],\"editor.toolHint.startLineset.23q8dh\":[\"Start lineset\"],\"editor.toolHint.startLiquidLine.1rlxsgd\":[\"Start liquid line\"],\"editor.toolHint.startRun.r6fc5u\":[\"Start run\"],\"editor.toolHint.startSegment.rolym6\":[\"Start segment\"],\"editor.toolHint.stepBackOrCancel.zbfdkn\":[\"Step back or cancel\"],\"editor.toolHint.style.nf3vcm\":[\"Style\"],\"editor.toolHint.styleBarn.k9n1x\":[\"Style: Barn\"],\"editor.toolHint.styleCasement.ziklec\":[\"Style: Casement\"],\"editor.toolHint.styleCraftsman.52e6a9\":[\"Style: Craftsman\"],\"editor.toolHint.styleDoubleHung.1lg8pkg\":[\"Style: Double-hung\"],\"editor.toolHint.styleFrench.1ue3j64\":[\"Style: French\"],\"editor.toolHint.styleGlass.qudnb4\":[\"Style: Glass\"],\"editor.toolHint.styleGrid.1vuq4po\":[\"Style: Grid\"],\"editor.toolHint.styleHalfLouvered.13b1few\":[\"Style: Half-louvered\"],\"editor.toolHint.styleHorizontalBands.12ethxk\":[\"Style: Horizontal bands\"],\"editor.toolHint.styleModern.1fh8hhn\":[\"Style: Modern\"],\"editor.toolHint.stylePanel.922jze\":[\"Style: Panel\"],\"editor.toolHint.stylePaneledGlass.17a17en\":[\"Style: Paneled glass\"],\"editor.toolHint.styleShaker.49z17k\":[\"Style: Shaker\"],\"editor.toolHint.styleSingle.6f3cm0\":[\"Style: Single\"],\"editor.toolHint.styleSixPanel.u49laj\":[\"Style: Six-panel\"],\"editor.toolHint.styleSliding.q81s0i\":[\"Style: Sliding\"],\"editor.toolHint.styleTallGrid.1eotg3x\":[\"Style: Tall grid\"],\"editor.toolHint.styleTransom.kb9bh6\":[\"Style: Transom\"],\"editor.toolHint.styleTripleHung.pxnqi3\":[\"Style: Triple-hung\"],\"editor.toolHint.styleWideGrid.12n27et\":[\"Style: Wide grid\"],\"editor.toolHint.switchRotationAxisYXZ.15lohm6\":[\"Switch rotation axis (Y → X → Z)\"],\"editor.toolHint.theWallsMeetAtTooSharp.kh3wi3\":[\"The walls meet at too sharp or too flat an angle\"],\"editor.toolHint.theWindowWaitingThereIsTaller.1tqwez4\":[\"The window waiting there is taller than this wall\"],\"editor.toolHint.threeOrMoreWallsMeetHere.rgifif\":[\"Three or more walls meet here\"],\"editor.toolHint.traceCeilingOutline.1b639wv\":[\"Trace ceiling outline\"],\"editor.toolHint.traceSlabOutline.z0j2lc\":[\"Trace slab outline\"],\"editor.toolHint.type.1m2zofh\":[\"Type\"],\"editor.toolHint.typeAwning.1cj59al\":[\"Type: Awning\"],\"editor.toolHint.typeBarn.sbnygq\":[\"Type: Barn\"],\"editor.toolHint.typeBay.1200hc1\":[\"Type: Bay\"],\"editor.toolHint.typeBow.14s2t9p\":[\"Type: Bow\"],\"editor.toolHint.typeCabinet.1r68je5\":[\"Type: Cabinet\"],\"editor.toolHint.typeCasement.176uo9j\":[\"Type: Casement\"],\"editor.toolHint.typeDouble.af7w4i\":[\"Type: Double\"],\"editor.toolHint.typeDoubleHung.t482fu\":[\"Type: Double Hung\"],\"editor.toolHint.typeFixed.v1cjez\":[\"Type: Fixed\"],\"editor.toolHint.typeFolding.sxxyng\":[\"Type: Folding\"],\"editor.toolHint.typeFrench.1y57z1b\":[\"Type: French\"],\"editor.toolHint.typeHinged.1xrcfju\":[\"Type: Hinged\"],\"editor.toolHint.typeIsland.ufr3ce\":[\"Type: Island\"],\"editor.toolHint.typeLouvered.oxl1cz\":[\"Type: Louvered\"],\"editor.toolHint.typePocket.hc65x9\":[\"Type: Pocket\"],\"editor.toolHint.typeSingleHung.p53pyl\":[\"Type: Single Hung\"],\"editor.toolHint.typeSliding.nwmr3f\":[\"Type: Sliding\"],\"editor.toolHint.verticalStackClickToPlace.ijcn4q\":[\"Vertical stack ↕, click to place\"],\"editor.toolHint.wasteVent.1hvi3vj\":[\"Waste / vent\"],\"editor.toolHint.windowStyleClickOrPressL.ah7qm9\":[\"Window style — click or press L to cycle\"],\"editor.toolHint.windowTypeClickOrPressO.wv4x35\":[\"Window type — click or press O to cycle\"],\"editor.views.plugins\":[\"Plugins\"],\"editor.views.view2d\":[\"2D\"],\"editor.views.view3d\":[\"3D\"],\"editor.views.viewBar.auto\":[\"Auto\"],\"editor.views.viewBar.browsePlugins\":[\"Browse plugins\"],\"editor.views.viewBar.closeLabel\":[\"Close \",[\"label\"]],\"editor.views.viewBar.closeSplit\":[\"Close split (\\\\)\"],\"editor.views.viewBar.ground\":[\"Ground\"],\"editor.views.viewBar.groundSolid\":[[\"standing\",\"select\",{\"partly\":[\"Partly below grade · ground solid\"],\"below\":[\"Below grade · ground solid\"],\"other\":[\"Ground solid\"]}]],\"editor.views.viewBar.groundVeiled\":[[\"standing\",\"select\",{\"partly\":[\"Partly below grade · ground veiled\"],\"below\":[\"Below grade · ground veiled\"],\"other\":[\"Ground veiled\"]}]],\"editor.views.viewBar.keepTheGroundSolid\":[\"Keep the ground solid\"],\"editor.views.viewBar.moreViews\":[\"More views\"],\"editor.views.viewBar.paneViews\":[\"Pane \",[\"pane\"],\" views\"],\"editor.views.viewBar.pinLabel\":[\"Pin \",[\"label\"]],\"editor.views.viewBar.pinToTheViewBar\":[\"Pin to the view bar\"],\"editor.views.viewBar.solid\":[\"Solid\"],\"editor.views.viewBar.split\":[\"Split (\\\\)\"],\"editor.views.viewBar.split2\":[\"Split\"],\"editor.views.viewBar.swapPanes\":[\"Swap panes\"],\"editor.views.viewBar.unpinFromTheViewBar\":[\"Unpin from the view bar\"],\"editor.views.viewBar.unpinLabel\":[\"Unpin \",[\"label\"]],\"editor.views.viewBar.veilTheGroundOverALevel\":[\"Veil the ground over a level below grade\"],\"editor.views.viewBar.views\":[\"Views\"],\"editor.youCanRetryTheSceneOr\":[\"You can retry the scene or return home without reloading the whole app shell.\"],\"node.block.description\":[\"A topology-backed solid edited directly in the canvas.\"],\"node.block.label\":[\"Block\"],\"node.boxVent.description\":[\"Small louvered exhaust vent that sits on a roof slope.\"],\"node.boxVent.label\":[\"Box Vent\"],\"node.building.description\":[\"A building container holding one or more levels.\"],\"node.building.label\":[\"Building\"],\"node.cabinet.description\":[\"A configurable parametric base cabinet.\"],\"node.cabinet.label\":[\"Modular Cabinet\"],\"node.cabinetModule.description\":[\"An editable module inside a modular cabinet run.\"],\"node.cabinetModule.label\":[\"Cabinet Module\"],\"node.ceiling.description\":[\"A polygon-bounded ceiling surface that hosts ceiling-mounted items.\"],\"node.ceiling.label\":[\"Ceiling\"],\"node.chimney.description\":[\"Vertical masonry stack on a roof segment.\"],\"node.chimney.label\":[\"Chimney\"],\"node.column.description\":[\"A parametric column with configurable cross-section, base, and capital.\"],\"node.column.label\":[\"Column\"],\"node.constructionDimension.description\":[\"Associative linear, curved, circular, angular, or coordinate plan dimension.\"],\"node.constructionDimension.label\":[\"Construction Dimension\"],\"node.cupola.description\":[\"Louvered roof lantern with a dome or pyramid cap and optional finial.\"],\"node.cupola.label\":[\"Cupola\"],\"node.door.description\":[\"A door cut into a wall. Animated open/close state.\"],\"node.door.label\":[\"Door\"],\"node.dormer.description\":[\"House-shaped protrusion on a roof segment.\"],\"node.dormer.label\":[\"Dormer\"],\"node.downspout.description\":[\"Vertical drop pipe from a gutter outlet to the ground.\"],\"node.downspout.label\":[\"Downspout\"],\"node.ductFitting.description\":[\"Elbow, tee, reducer, or square-to-round transition connecting duct runs.\"],\"node.ductFitting.label\":[\"Duct Fitting\"],\"node.ductSegment.description\":[\"HVAC duct run — polyline of round, rect, or flat-oval sections.\"],\"node.ductSegment.label\":[\"Duct\"],\"node.ductTerminal.description\":[\"Duct terminal — supply register, ceiling diffuser, or return grille. Duct runs end at its collar.\"],\"node.ductTerminal.label\":[\"Register\"],\"node.elevator.description\":[\"A multi-level elevator shaft with configurable openings per level.\"],\"node.elevator.label\":[\"Elevator\"],\"node.eyebrowVent.description\":[\"Low curved lens-shaped roof vent with a louvered front.\"],\"node.eyebrowVent.label\":[\"Eyebrow Vent\"],\"node.fence.description\":[\"A straight or curved fence segment with configurable posts and infill.\"],\"node.fence.label\":[\"Fence\"],\"node.fenceGate.description\":[\"A gate hosted by a fence.\"],\"node.fenceGate.label\":[\"Gate\"],\"node.fenceOpening.description\":[\"An intentional opening in a fence.\"],\"node.fenceOpening.label\":[\"Open Passage\"],\"node.floorOpening.label\":[\"Floor opening\"],\"node.guide.description\":[\"A measurement / reference annotation (linear, area, or arc).\"],\"node.guide.label\":[\"Guide\"],\"node.gutter.description\":[\"Rain-water channel running along the eave of a roof segment.\"],\"node.gutter.label\":[\"Gutter\"],\"node.hvacEquipment.description\":[\"Furnace, air handler, or condenser — duct runs connect to its supply/return collars.\"],\"node.hvacEquipment.label\":[\"HVAC Unit\"],\"node.importedMesh.description\":[\"Geometry preserved from an imported model when no native Pascal shape exists.\"],\"node.importedMesh.label\":[\"Imported Mesh\"],\"node.item.description\":[\"A catalog-backed item (furniture, fixtures, decorations).\"],\"node.item.label\":[\"Item\"],\"node.leanToExtension.description\":[\"An attached mono-pitch or freestanding mono, gable, or butterfly canopy with managed structure and drainage.\"],\"node.leanToExtension.label\":[\"Canopy\"],\"node.level.description\":[\"A single floor of a building, holding walls / slabs / ceilings / items.\"],\"node.level.label\":[\"Level\"],\"node.lineset.description\":[\"Refrigerant lineset — copper suction + liquid pair joining a condenser to the indoor coil.\"],\"node.lineset.label\":[\"Lineset\"],\"node.liquidLine.description\":[\"Standalone refrigerant liquid line — a thin bare-copper run; Follow mode traces an existing lineset.\"],\"node.liquidLine.label\":[\"Liquid Line\"],\"node.measurement.description\":[\"A persistent distance, angle, area, perimeter, or volume annotation.\"],\"node.measurement.label\":[\"Measurement\"],\"node.pipeFitting.description\":[\"DWV joint — elbow bend, 45° wye, or sanitary tee.\"],\"node.pipeFitting.label\":[\"Pipe Fitting\"],\"node.pipeSegment.description\":[\"Drain / waste / vent pipe run — draw level or toggle a ¼″ per foot fall with S.\"],\"node.pipeSegment.label\":[\"DWV Pipe\"],\"node.pipeTrap.description\":[\"DWV P-trap — water seal on the waste line. The trap arm runs to the vent.\"],\"node.pipeTrap.label\":[\"Trap\"],\"node.proceduralItem.description\":[\"Experimental editable recipe\"],\"node.proceduralItem.label\":[\"Procedural item\"],\"node.ridgeVent.description\":[\"Ventilation strip running along the ridge of a roof segment.\"],\"node.ridgeVent.label\":[\"Ridge Vent\"],\"node.roof.description\":[\"A pitched / hip / gable roof composed of one or more segments.\"],\"node.roof.label\":[\"Roof\"],\"node.roofSegment.description\":[\"A single pitched plane of a parent roof.\"],\"node.roofSegment.label\":[\"Roof Segment\"],\"node.scan.description\":[\"A captured session with optional mesh, motion, media, and sensor data.\"],\"node.scan.label\":[\"Capture\"],\"node.separator.label\":[\"Separator\"],\"node.shelf.description\":[\"A configurable shelving unit. Items host on each row.\"],\"node.shelf.label\":[\"Shelf\"],\"node.site.description\":[\"The top-level container holding buildings, zones, and the property boundary.\"],\"node.site.label\":[\"Site\"],\"node.skylight.description\":[\"Framed glass opening on a roof segment.\"],\"node.skylight.label\":[\"Skylight\"],\"node.slab.description\":[\"A polygon-bounded floor surface that hosts items on top.\"],\"node.slab.label\":[\"Slab\"],\"node.solarPanel.description\":[\"Grid of photovoltaic panels mounted on a roof segment.\"],\"node.solarPanel.label\":[\"Solar Panel\"],\"node.spawn.description\":[\"Player or camera origin within a level. One per level.\"],\"node.spawn.label\":[\"Spawn Point\"],\"node.stair.description\":[\"A stair composed of one or more flights with configurable treads, risers, railings.\"],\"node.stair.label\":[\"Stair\"],\"node.stairSegment.description\":[\"A single flight of a parent stair.\"],\"node.stairSegment.label\":[\"Stair Segment\"],\"node.structuralGrid.description\":[\"Persistent construction grid axis with identification bubbles.\"],\"node.structuralGrid.label\":[\"Structural Grid\"],\"node.turbineVent.description\":[\"Wind-driven spinning whirlybird exhaust vent for a roof slope.\"],\"node.turbineVent.label\":[\"Turbine Vent\"],\"node.unit.description\":[\"A named group of zones forming one apartment, hotel room or commercial lot.\"],\"node.unit.label\":[\"Unit\"],\"node.wall.description\":[\"A straight or curved wall segment. Hosts doors, windows, lean-to extensions, and wall-mounted items.\"],\"node.wall.label\":[\"Wall\"],\"node.window.description\":[\"A window cut into a wall. Animated open/close for opening windows.\"],\"node.window.label\":[\"Window\"],\"node.zone.description\":[\"A polygonal site zone (lawn, water, paving) with a TSL gradient material.\"],\"node.zone.label\":[\"Zone\"],\"viewer.camera.orbitLeft\":[\"Orbit left\"],\"viewer.camera.orbitRight\":[\"Orbit right\"],\"viewer.camera.topView\":[\"Top view\"],\"viewer.common.off\":[\"Off\"],\"viewer.common.on\":[\"On\"],\"viewer.display.camera\":[\"Camera\"],\"viewer.display.colored\":[\"Colored\"],\"viewer.display.colors\":[\"Colors\"],\"viewer.display.edges.off\":[\"Off\"],\"viewer.display.edges.offDetail\":[\"No edge lines\"],\"viewer.display.edges.soft\":[\"Soft\"],\"viewer.display.edges.softDetail\":[\"Faint outline of major creases\"],\"viewer.display.edges.strong\":[\"Strong\"],\"viewer.display.edges.strongDetail\":[\"Crisp, opaque edge lines\"],\"viewer.display.edges.title\":[\"Edges\"],\"viewer.display.monochrome\":[\"Monochrome\"],\"viewer.display.orthographic\":[\"Orthographic\"],\"viewer.display.perspective\":[\"Perspective\"],\"viewer.display.render.rendered\":[\"Rendered\"],\"viewer.display.render.renderedDetail\":[\"Full ambient occlusion\"],\"viewer.display.render.solid\":[\"Solid\"],\"viewer.display.render.solidDetail\":[\"Flat and fast — no ambient occlusion\"],\"viewer.display.render.title\":[\"Render\"],\"viewer.display.shadows\":[\"Shadows\"],\"viewer.display.title\":[\"Display settings\"],\"viewer.floorplan.alignNorth\":[\"Align view to north\"],\"viewer.floorplan.empty\":[\"No floor plans are available for this scene.\"],\"viewer.floorplan.fit\":[\"Fit floor plan\"],\"viewer.floorplan.floor\":[\"Floor\"],\"viewer.floorplan.floorPlan\":[\"Floor plan\"],\"viewer.floorplan.viewLabel\":[[\"floor\"],\" 2D view\"],\"viewer.floorplan.zoomIn\":[\"Zoom in\"],\"viewer.floorplan.zoomOut\":[\"Zoom out\"],\"viewer.header.back\":[\"Back\"],\"viewer.header.levels\":[\"Levels\"],\"viewer.header.rooms\":[\"Rooms\"],\"viewer.header.selection\":[\"Selection\"],\"viewer.header.units\":[\"Units\"],\"viewer.header.untitled\":[\"Untitled\"],\"viewer.header.zones\":[\"Zones\"],\"viewer.levels.exploded\":[\"Exploded\"],\"viewer.levels.label\":[\"Levels: \",[\"mode\"]],\"viewer.levels.manual\":[\"Manual\"],\"viewer.levels.solo\":[\"Solo\"],\"viewer.levels.stacked\":[\"Stacked\"],\"viewer.stage.layout\":[\"Viewer layout\"],\"viewer.stage.split\":[\"Split\"],\"viewer.theme.blueprint\":[\"Blueprint\"],\"viewer.theme.mediterranean\":[\"Mediterranean\"],\"viewer.theme.night\":[\"Night\"],\"viewer.theme.overcast\":[\"Overcast\"],\"viewer.theme.paper\":[\"Paper\"],\"viewer.theme.studio\":[\"Studio\"],\"viewer.theme.sunset\":[\"Sunset\"],\"viewer.theme.title\":[\"Scene theme\"],\"viewer.theme.twilight\":[\"Twilight\"],\"viewer.theme.verdant\":[\"Verdant\"],\"viewer.visibility.guides\":[\"Guides\"],\"viewer.visibility.scans\":[\"Scans\"],\"viewer.visibility.title\":[\"Visibility\"],\"viewer.walkthrough.label\":[\"Walkthrough: \",[\"state\"]],\"viewer.walls.cutaway\":[\"Cutaway\"],\"viewer.walls.fullHeight\":[\"Full height\"],\"viewer.walls.label\":[\"Walls: \",[\"mode\"]],\"viewer.walls.low\":[\"Low\"]}")as Messages; \ No newline at end of file +/*eslint-disable*/import type{Messages}from"@lingui/core";export const messages=JSON.parse("{\"app.appShell.pascalHome\":[\"Pascal home\"],\"app.buildTab.addGate\":[\"Add Gate\"],\"app.buildTab.addOpenPassage\":[\"Add Open Passage\"],\"app.buildTab.addToRooms\":[\"Add to rooms\"],\"app.buildTab.allBuildTools\":[\"← All build tools\"],\"app.buildTab.chooseGateOrOpenPassageThen\":[\"Choose Gate or Open Passage, then click its position on any fence. Find placed gates and openings under their fence in the scene graph.\"],\"app.buildTab.clickALinesetToLayThe\":[\"Click a lineset to lay the line beside it.\"],\"app.buildTab.doubleGate\":[\"Double gate\"],\"app.buildTab.featuresExtensions\":[\"Features & extensions\"],\"app.buildTab.fenceFeatures\":[\"Fence features\"],\"app.buildTab.followLineset\":[\"Follow lineset\"],\"app.buildTab.gate\":[\"Gate\"],\"app.buildTab.gateStyle\":[\"Gate style\"],\"app.buildTab.horizontalBoards\":[\"Horizontal boards\"],\"app.buildTab.hoverAFenceToPreviewClick\":[\"Hover a fence to preview. Click to place. Esc cancels. Leave room between openings.\"],\"app.buildTab.leaves\":[\"Leaves\"],\"app.buildTab.liquidLine\":[\"Liquid Line\"],\"app.buildTab.matchFenceStyle\":[\"Match fence style\"],\"app.buildTab.mep\":[\"MEP\"],\"app.buildTab.off\":[\"Off\"],\"app.buildTab.on\":[\"On\"],\"app.buildTab.openRails\":[\"Open rails\"],\"app.buildTab.opening\":[\"Opening\"],\"app.buildTab.openingWidthM\":[\"Opening width (m)\"],\"app.buildTab.outdoor\":[\"Outdoor\"],\"app.buildTab.picket\":[\"Picket\"],\"app.buildTab.roofType\":[\"Roof type\"],\"app.buildTab.roomsAlreadyCreateTheirFloorAnd\":[\"Rooms already create their floor and ceiling. Use these for platforms and one-off structure.\"],\"app.buildTab.searchBuildToolsAndKitchenItems\":[\"Search build tools and kitchen items\"],\"app.buildTab.searchToolsFridgeSink\":[\"Search tools, fridge, sink…\"],\"app.buildTab.selectACurvedWallToMatch\":[\"Select a curved wall to match its radius and arc.\"],\"app.buildTab.singleGate\":[\"Single gate\"],\"app.buildTab.slabCeilingColumn\":[\"Slab, ceiling, column…\"],\"app.buildTab.solidPrivacy\":[\"Solid privacy\"],\"app.buildTab.traceALineAlongsideAnExisting\":[\"Trace a line alongside an existing lineset (F).\"],\"app.buildTab.verticalSlats\":[\"Vertical slats\"],\"app.editorNavbar.allProjects\":[\"All projects\"],\"app.editorNavbar.preview\":[\"Preview\"],\"app.editorNavbar.projectName\":[\"Project name\"],\"app.editorNavbar.renameProject\":[\"Rename project\"],\"app.editorNavbar.share\":[\"Share\"],\"app.kitchenBrowser.addLabel\":[\"Add \",[\"label\"]],\"app.kitchenBrowser.addToKitchen\":[\"Add to kitchen\"],\"app.kitchenBrowser.chooseAnItemThenClickTo\":[\"Choose an item, then click to place it. Appliances include their cabinetry.\"],\"app.kitchenBrowser.findInThisProjectLength\":[\"Find in this project · \",[\"length\"]],\"app.kitchenBrowser.findName\":[\"Find \",[\"name\"]],\"app.kitchenBrowser.groupAdd\":[\"Kitchen · Add\"],\"app.kitchenBrowser.groupInThisProject\":[\"Kitchen · In this project\"],\"app.kitchenBrowser.kitchenCabinet\":[\"Kitchen cabinet\"],\"app.kitchenBrowser.noMatchingKitchenItemsPlacedYet\":[\"No matching kitchen items placed yet.\"],\"app.kitchenBrowser.selectAndShowInScene\":[\"Select and show in scene\"],\"app.lib.buildPalette.ceiling\":[\"Ceiling\"],\"app.lib.buildPalette.column\":[\"Column\"],\"app.lib.buildPalette.door\":[\"Door\"],\"app.lib.buildPalette.duct\":[\"Duct\"],\"app.lib.buildPalette.dwvPipe\":[\"DWV Pipe\"],\"app.lib.buildPalette.elevator\":[\"Elevator\"],\"app.lib.buildPalette.fence\":[\"Fence\"],\"app.lib.buildPalette.hvacUnit\":[\"HVAC Unit\"],\"app.lib.buildPalette.kitchen\":[\"Kitchen\"],\"app.lib.buildPalette.lineset\":[\"Lineset\"],\"app.lib.buildPalette.liquidLine\":[\"Liquid Line\"],\"app.lib.buildPalette.mep\":[\"MEP\"],\"app.lib.buildPalette.register\":[\"Register\"],\"app.lib.buildPalette.roof\":[\"Roof\"],\"app.lib.buildPalette.shelf\":[\"Shelf\"],\"app.lib.buildPalette.slab\":[\"Slab\"],\"app.lib.buildPalette.spawnPoint\":[\"Spawn point\"],\"app.lib.buildPalette.stairs\":[\"Stairs\"],\"app.lib.buildPalette.terrace\":[\"Terrace\"],\"app.lib.buildPalette.terrain\":[\"Terrain\"],\"app.lib.buildPalette.wall\":[\"Wall\"],\"app.lib.buildPalette.window\":[\"Window\"],\"app.lib.buildPanelModel.addFitting\":[\"Add Fitting\"],\"app.lib.buildPanelModel.addGate\":[\"Add Gate\"],\"app.lib.buildPanelModel.addOpenPassage\":[\"Add Open Passage\"],\"app.lib.buildPanelModel.addTrap\":[\"Add Trap\"],\"app.lib.buildPanelModel.build\":[\"Build\"],\"app.lib.buildPanelModel.createFrom\":[\"Create from\"],\"app.lib.buildPanelModel.drawTheRoofFootprintWithTwo\":[\"Draw the roof footprint with two corner clicks.\"],\"app.lib.buildPanelModel.duct\":[\"Duct\"],\"app.lib.buildPanelModel.dwvPipe\":[\"DWV Pipe\"],\"app.lib.buildPanelModel.featuresExtensions\":[\"Features & extensions\"],\"app.lib.buildPanelModel.fence\":[\"Fence\"],\"app.lib.buildPanelModel.followLineset\":[\"Follow lineset\"],\"app.lib.buildPanelModel.gatesOpenings\":[\"Gates & openings\"],\"app.lib.buildPanelModel.hoverARoomToPreviewIts\":[\"Hover a room to preview its boundary, then click to place.\"],\"app.lib.buildPanelModel.kitchen\":[\"Kitchen\"],\"app.lib.buildPanelModel.mep\":[\"MEP\"],\"app.lib.buildPanelModel.modularCabinet\":[\"Modular Cabinet\"],\"app.lib.buildPanelModel.off\":[\"Off\"],\"app.lib.buildPanelModel.on\":[\"On\"],\"app.lib.buildPanelModel.painting\":[\"Painting\"],\"app.lib.buildPanelModel.roof\":[\"Roof\"],\"app.lib.buildPanelModel.roofType\":[\"Roof type\"],\"app.lib.buildPanelModel.toolCount\":[[\"count\",\"plural\",{\"one\":[\"#\",\" tool\"],\"other\":[\"#\",\" tools\"]}]],\"app.lib.buildTabState.conical\":[\"Conical\"],\"app.lib.buildTabState.draw\":[\"Draw\"],\"app.lib.buildTabState.dutch\":[\"Dutch\"],\"app.lib.buildTabState.flat\":[\"Flat\"],\"app.lib.buildTabState.gable\":[\"Gable\"],\"app.lib.buildTabState.gambrel\":[\"Gambrel\"],\"app.lib.buildTabState.hip\":[\"Hip\"],\"app.lib.buildTabState.mansard\":[\"Mansard\"],\"app.lib.buildTabState.room\":[\"Room\"],\"app.lib.buildTabState.shed\":[\"Shed\"],\"app.lib.buildTabState.wall\":[\"Wall\"],\"app.sceneLoader.anotherSessionSavedFirstRefresh\":[\"Another session saved first — refresh?\"],\"app.sceneLoader.build\":[\"Build\"],\"app.sceneLoader.dismiss\":[\"Dismiss\"],\"app.sceneLoader.items\":[\"Items\"],\"app.sceneLoader.paint\":[\"Paint\"],\"app.sceneLoader.reload\":[\"Reload\"],\"app.sceneLoader.scene\":[\"Scene\"],\"app.sceneLoader.settings\":[\"Settings\"],\"app.sceneLoader.yourChangesHavenTBeenSaved\":[\"Your changes haven't been saved. Reload to pick up the latest version.\"],\"app.sharePanel.anyoneWithTheLinkCanView\":[\"Anyone with the link can view this project. They cannot edit it.\"],\"app.sharePanel.copied\":[\"Copied\"],\"app.sharePanel.copy\":[\"Copy\"],\"app.sharePanel.couldNotReadTheSharingState\":[\"Could not read the sharing state.\"],\"app.sharePanel.couldNotTurnOffThePublic\":[\"Could not turn off the public link.\"],\"app.sharePanel.couldNotTurnOnThePublic\":[\"Could not turn on the public link.\"],\"app.sharePanel.embedCode\":[\"Embed code\"],\"app.sharePanel.embedLink\":[\"Embed link\"],\"app.sharePanel.hideControls\":[\"Hide controls\"],\"app.sharePanel.link\":[\"Link\"],\"app.sharePanel.onlyThe3dViewNoHeader\":[\"Only the 3D view, no header or toolbar.\"],\"app.sharePanel.open\":[\"Open\"],\"app.sharePanel.publicLink\":[\"Public link\"],\"app.sharePanel.shareProject\":[\"Share project\"],\"app.viewerToolbar.automaticDimensions\":[\"Automatic dimensions\"],\"app.viewerToolbar.camera\":[\"Camera\"],\"app.viewerToolbar.cleanPlanDimensionsAppearWithSelection\":[\"Clean plan; dimensions appear with selection\"],\"app.viewerToolbar.collapseSidebar\":[\"Collapse sidebar\"],\"app.viewerToolbar.crispOpaqueEdgeLines\":[\"Crisp, opaque edge lines\"],\"app.viewerToolbar.cutaway\":[\"Cutaway\"],\"app.viewerToolbar.default\":[\"Default\"],\"app.viewerToolbar.display\":[\"Display\"],\"app.viewerToolbar.displaySettings\":[\"Display settings\"],\"app.viewerToolbar.doorWindowMarks\":[\"Door/window marks\"],\"app.viewerToolbar.edges\":[\"Edges\"],\"app.viewerToolbar.enterVr\":[\"Enter VR\"],\"app.viewerToolbar.exitVr\":[\"Exit VR\"],\"app.viewerToolbar.expandSidebar\":[\"Expand sidebar\"],\"app.viewerToolbar.expert\":[\"Expert\"],\"app.viewerToolbar.exploded\":[\"Exploded\"],\"app.viewerToolbar.faceOfStud\":[\"Face of stud\"],\"app.viewerToolbar.faintOutlineOfMajorCreases\":[\"Faint outline of major creases\"],\"app.viewerToolbar.feetInches\":[\"Feet & inches\"],\"app.viewerToolbar.finishedFaces\":[\"Finished faces\"],\"app.viewerToolbar.flatAndFastNoAmbientOcclusion\":[\"Flat and fast — no ambient occlusion\"],\"app.viewerToolbar.floorPlanAnnotations\":[\"Floor plan annotations\"],\"app.viewerToolbar.floorPlanMode\":[\"Floor plan mode\"],\"app.viewerToolbar.fullAmbientOcclusion\":[\"Full ambient occlusion\"],\"app.viewerToolbar.fullDocumentationAndAnnotationControls\":[\"Full documentation and annotation controls\"],\"app.viewerToolbar.fullHeight\":[\"Full height\"],\"app.viewerToolbar.fullWallThickness\":[\"Full wall thickness\"],\"app.viewerToolbar.grid\":[\"Grid\"],\"app.viewerToolbar.levelsMode\":[\"Levels: \",[\"mode\"]],\"app.viewerToolbar.low\":[\"Low\"],\"app.viewerToolbar.magneticSnap\":[\"Magnetic snap\"],\"app.viewerToolbar.manual\":[\"Manual\"],\"app.viewerToolbar.manualDimensions\":[\"Manual dimensions\"],\"app.viewerToolbar.measurements\":[\"Measurements\"],\"app.viewerToolbar.meters\":[\"Meters\"],\"app.viewerToolbar.millimeters\":[\"Millimeters\"],\"app.viewerToolbar.n3dMeasurements\":[\"3D measurements\"],\"app.viewerToolbar.noEdgeLines\":[\"No edge lines\"],\"app.viewerToolbar.off\":[\"Off\"],\"app.viewerToolbar.on\":[\"On\"],\"app.viewerToolbar.orthographic\":[\"Orthographic\"],\"app.viewerToolbar.perspective\":[\"Perspective\"],\"app.viewerToolbar.preview\":[\"Preview\"],\"app.viewerToolbar.previewMode\":[\"Preview mode\"],\"app.viewerToolbar.render\":[\"Render\"],\"app.viewerToolbar.rendered\":[\"Rendered\"],\"app.viewerToolbar.roomLabels\":[\"Room labels\"],\"app.viewerToolbar.sceneTheme\":[\"Scene theme\"],\"app.viewerToolbar.shadows\":[\"Shadows\"],\"app.viewerToolbar.singleWallAxis\":[\"Single wall axis\"],\"app.viewerToolbar.soft\":[\"Soft\"],\"app.viewerToolbar.solid\":[\"Solid\"],\"app.viewerToolbar.solo\":[\"Solo\"],\"app.viewerToolbar.stack\":[\"Stack\"],\"app.viewerToolbar.stairAnnotations\":[\"Stair annotations\"],\"app.viewerToolbar.strong\":[\"Strong\"],\"app.viewerToolbar.structuralCoreFace\":[\"Structural core face\"],\"app.viewerToolbar.structuralGridsColumnCenters\":[\"Structural grids & column centers\"],\"app.viewerToolbar.translucent\":[\"Translucent\"],\"app.viewerToolbar.units\":[\"Units\"],\"app.viewerToolbar.walkthrough\":[\"Walkthrough\"],\"app.viewerToolbar.wallCenterline\":[\"Wall centerline\"],\"app.viewerToolbar.wallDimensions\":[\"Wall dimensions\"],\"app.viewerToolbar.wallsLabel\":[\"Walls: \",[\"label\"]],\"core.level.basement\":[\"Basement\"],\"core.level.basementNumber\":[\"Basement \",[\"number\"]],\"core.level.floorNumber\":[\"Floor \",[\"number\"]],\"core.level.groundFloor\":[\"Ground floor\"],\"editor.actionMenu.cameraActions.orbitLeft\":[\"Orbit Left\"],\"editor.actionMenu.cameraActions.orbitRight\":[\"Orbit Right\"],\"editor.actionMenu.cameraActions.topView\":[\"Top View\"],\"editor.actionMenu.controlModes.delete\":[\"Delete\"],\"editor.actionMenu.controlModes.select\":[\"Select\"],\"editor.actionMenu.followPascalPill.resumeFollowing\":[\"Resume following\"],\"editor.actionMenu.followPascalToggle.off\":[\"Follow Pascal: Off\"],\"editor.actionMenu.followPascalToggle.on\":[\"Follow Pascal: On\"],\"editor.actionMenu.furnishTools.appliance\":[\"Appliance\"],\"editor.actionMenu.furnishTools.bathroom\":[\"Bathroom\"],\"editor.actionMenu.furnishTools.furniture\":[\"Furniture\"],\"editor.actionMenu.furnishTools.kitchen\":[\"Kitchen\"],\"editor.actionMenu.furnishTools.outdoor\":[\"Outdoor\"],\"editor.actionMenu.measurementControl.angle\":[\"Angle\"],\"editor.actionMenu.measurementControl.angularDimension\":[\"Angular dimension\"],\"editor.actionMenu.measurementControl.arcLength\":[\"Arc length\"],\"editor.actionMenu.measurementControl.area\":[\"Area\"],\"editor.actionMenu.measurementControl.centerMark\":[\"Center mark\"],\"editor.actionMenu.measurementControl.chordDimension\":[\"Chord dimension\"],\"editor.actionMenu.measurementControl.continuousDimension\":[\"Continuous dimension\"],\"editor.actionMenu.measurementControl.coordinateDimensions\":[\"Coordinate dimensions\"],\"editor.actionMenu.measurementControl.diameterDimension\":[\"Diameter dimension\"],\"editor.actionMenu.measurementControl.distance\":[\"Distance\"],\"editor.actionMenu.measurementControl.floorPlan\":[\"Floor plan\"],\"editor.actionMenu.measurementControl.linearDimension\":[\"Linear dimension\"],\"editor.actionMenu.measurementControl.measureSelectedlabel\":[\"Measure: \",[\"selectedLabel\"]],\"editor.actionMenu.measurementControl.measurementOptions\":[\"Measurement options\"],\"editor.actionMenu.measurementControl.measurementType\":[\"Measurement type\"],\"editor.actionMenu.measurementControl.perimeter\":[\"Perimeter\"],\"editor.actionMenu.measurementControl.radiusDimension\":[\"Radius dimension\"],\"editor.actionMenu.measurementControl.smart\":[\"Smart\"],\"editor.actionMenu.measurementControl.volume\":[\"Volume\"],\"editor.actionMenu.pointAskButton.pointAndAsk\":[\"Point and ask\"],\"editor.actionMenu.pointAskButton.pointAndAskC\":[\"Point and ask (C)\"],\"editor.actionMenu.pointAskButton.pointAndAskWorksInThe\":[\"Point and ask works in the 3D view\"],\"editor.actionMenu.structureTools.ceiling\":[\"Ceiling\"],\"editor.actionMenu.structureTools.column\":[\"Column\"],\"editor.actionMenu.structureTools.door\":[\"Door\"],\"editor.actionMenu.structureTools.duct\":[\"Duct\"],\"editor.actionMenu.structureTools.ductFitting\":[\"Duct Fitting\"],\"editor.actionMenu.structureTools.dwvPipe\":[\"DWV Pipe\"],\"editor.actionMenu.structureTools.elevator\":[\"Elevator\"],\"editor.actionMenu.structureTools.fence\":[\"Fence\"],\"editor.actionMenu.structureTools.gableRoof\":[\"Gable Roof\"],\"editor.actionMenu.structureTools.hvacUnit\":[\"HVAC Unit\"],\"editor.actionMenu.structureTools.lineset\":[\"Lineset\"],\"editor.actionMenu.structureTools.liquidLine\":[\"Liquid Line\"],\"editor.actionMenu.structureTools.pipeFitting\":[\"Pipe Fitting\"],\"editor.actionMenu.structureTools.register\":[\"Register\"],\"editor.actionMenu.structureTools.shelf\":[\"Shelf\"],\"editor.actionMenu.structureTools.slab\":[\"Slab\"],\"editor.actionMenu.structureTools.spawnPoint\":[\"Spawn Point\"],\"editor.actionMenu.structureTools.stairs\":[\"Stairs\"],\"editor.actionMenu.structureTools.trap\":[\"Trap\"],\"editor.actionMenu.structureTools.wall\":[\"Wall\"],\"editor.actionMenu.structureTools.window\":[\"Window\"],\"editor.actionMenu.structureTools.zone\":[\"Zone\"],\"editor.actionMenu.viewToggles.deleteGuideImage\":[\"Delete guide image\"],\"editor.actionMenu.viewToggles.deleteScan\":[\"Delete scan\"],\"editor.actionMenu.viewToggles.guideCount\":[[\"count\",\"plural\",{\"one\":[\"#\",\" guide image on this level\"],\"other\":[\"#\",\" guide images on this level\"]}]],\"editor.actionMenu.viewToggles.guideImageNumber\":[\"Guide image \",[\"number\"]],\"editor.actionMenu.viewToggles.guideImageSettings\":[\"Guide image settings\"],\"editor.actionMenu.viewToggles.guideImages\":[\"Guide images\"],\"editor.actionMenu.viewToggles.guides\":[\"Guides\"],\"editor.actionMenu.viewToggles.guidesHidden\":[\"Guides: Hidden\"],\"editor.actionMenu.viewToggles.guidesVisible\":[\"Guides: Visible\"],\"editor.actionMenu.viewToggles.hideGuideImages\":[\"Hide guide images\"],\"editor.actionMenu.viewToggles.hideReferenceFloor\":[\"Hide reference floor\"],\"editor.actionMenu.viewToggles.hideScans\":[\"Hide scans\"],\"editor.actionMenu.viewToggles.levelsBelow\":[[\"count\"],\" below\"],\"editor.actionMenu.viewToggles.noLowerFloorAvailable\":[\"No lower floor available.\"],\"editor.actionMenu.viewToggles.opacity\":[\"Opacity\"],\"editor.actionMenu.viewToggles.referenceFloor\":[\"Reference floor\"],\"editor.actionMenu.viewToggles.referenceFloorSelectedlevelname\":[\"Reference floor: \",[\"selectedLevelName\"]],\"editor.actionMenu.viewToggles.referenceFloorSettings\":[\"Reference floor settings\"],\"editor.actionMenu.viewToggles.referenceSettings\":[\"Reference settings\"],\"editor.actionMenu.viewToggles.references\":[\"References\"],\"editor.actionMenu.viewToggles.referencesEmpty\":[\"Upload GLB meshes as scan references or blueprint images as guide references.\"],\"editor.actionMenu.viewToggles.referencesHidden\":[\"References: Hidden\"],\"editor.actionMenu.viewToggles.referencesVisible\":[\"References: Visible\"],\"editor.actionMenu.viewToggles.riserDiagram\":[\"Riser diagram\"],\"editor.actionMenu.viewToggles.scanCount\":[[\"count\",\"plural\",{\"one\":[\"#\",\" scan on this level\"],\"other\":[\"#\",\" scans on this level\"]}]],\"editor.actionMenu.viewToggles.scanNumber\":[\"Scan \",[\"number\"]],\"editor.actionMenu.viewToggles.scanSettings\":[\"Scan settings\"],\"editor.actionMenu.viewToggles.scans\":[\"Scans\"],\"editor.actionMenu.viewToggles.scansHidden\":[\"Scans: Hidden\"],\"editor.actionMenu.viewToggles.scansVisible\":[\"Scans: Visible\"],\"editor.actionMenu.viewToggles.showGuideImages\":[\"Show guide images\"],\"editor.actionMenu.viewToggles.showReferenceFloor\":[\"Show reference floor\"],\"editor.actionMenu.viewToggles.showScans\":[\"Show scans\"],\"editor.actionMenu.viewToggles.uploadScanOrGuideImage\":[\"Upload scan or guide image\"],\"editor.backToHome\":[\"Back to home\"],\"editor.buildPanel.advanced\":[\"Advanced\"],\"editor.buildPanel.rooms.hint\":[\"walls · floor · ceiling\"],\"editor.buildPanel.rooms.idle\":[\"Pick a shape to start. Every room brings its own walls, floor and ceiling.\"],\"editor.buildPanel.rooms.polygon.caption\":[[\"lead\"],\" then the first one again to close. For L-shapes and angled rooms.\"],\"editor.buildPanel.rooms.polygon.label\":[\"Polygon\"],\"editor.buildPanel.rooms.polygon.lead\":[\"Click each corner,\"],\"editor.buildPanel.rooms.polygon.title\":[\"Polygon room\"],\"editor.buildPanel.rooms.rectangle.caption\":[[\"lead\"],\" on the grid. Walls, floor and ceiling are created together.\"],\"editor.buildPanel.rooms.rectangle.label\":[\"Rectangle\"],\"editor.buildPanel.rooms.rectangle.lead\":[\"Click two corners\"],\"editor.buildPanel.rooms.rectangle.title\":[\"Rectangle room\"],\"editor.buildPanel.rooms.title\":[\"Rooms\"],\"editor.buildPanel.rooms.walls.caption\":[[\"lead\"],\" Close a loop and it becomes a room; leave it open for partitions.\"],\"editor.buildPanel.rooms.walls.label\":[\"Walls\"],\"editor.buildPanel.rooms.walls.lead\":[\"Draw one wall at a time.\"],\"editor.buildPanel.rooms.walls.title\":[\"Walls\"],\"editor.cameraControlsHint\":[\"Camera controls hint\"],\"editor.cameraHint.pan\":[\"Pan\"],\"editor.cameraHint.rotate\":[\"Rotate\"],\"editor.cameraHint.zoom\":[\"Zoom\"],\"editor.dismiss\":[\"Dismiss\"],\"editor.dismissCameraControlsHint\":[\"Dismiss camera controls hint\"],\"editor.expandSidebar\":[\"Expand sidebar\"],\"editor.floatingActionMenu.axis\":[\"Axis\"],\"editor.floatingActionMenu.axis2\":[\"⌥ axis\"],\"editor.floatingActionMenu.noEquipment\":[\"⚠ no equipment\"],\"editor.floatingActionMenu.rTRotate\":[\"R/T rotate\"],\"editor.floatingActionMenu.registerCount\":[[\"count\",\"plural\",{\"one\":[\"#\",\" register\"],\"other\":[\"#\",\" registers\"]}]],\"editor.floatingActionMenu.runCount\":[[\"count\",\"plural\",{\"one\":[\"#\",\" run\"],\"other\":[\"#\",\" runs\"]}]],\"editor.floatingActionMenu.system\":[\"System\"],\"editor.floatingLevelSelector.addAFloorUnderTheRoof\":[\"Add a floor under the roof\"],\"editor.floatingLevelSelector.addLevelAbove\":[\"Add level above\"],\"editor.floatingLevelSelector.addLevelBelow\":[\"Add level below\"],\"editor.floatingLevelSelector.cancel\":[\"Cancel\"],\"editor.floatingLevelSelector.delete\":[\"Delete\"],\"editor.floatingLevelSelector.deleteLevel\":[\"Delete level\"],\"editor.floatingLevelSelector.deleteLevelConfirm\":[\"Are you sure you want to delete \",[\"levelName\"],\"? All walls, floors, and objects on this level will be permanently removed.\"],\"editor.floatingLevelSelector.dragToReorder\":[\"Drag to reorder\"],\"editor.floatingLevelSelector.duplicateLevel\":[\"Duplicate level\"],\"editor.floatingLevelSelector.duplicateWithOptions\":[\"Duplicate with options...\"],\"editor.floatingLevelSelector.exitUnitFocus\":[\"Exit unit focus\"],\"editor.floatingLevelSelector.focusedUnitHasZonesHere\":[\"Focused unit has zones here\"],\"editor.floatingLevelSelector.groundFloorOverGrade\":[\"The ground floor stands \",[\"distance\"],\" over grade. Seat the ground floor 8 in over grade\"],\"editor.floatingLevelSelector.groundFloorUnderGrade\":[\"The ground floor stands \",[\"distance\"],\" under grade. Seat the ground floor 8 in over grade\"],\"editor.floatingLevelSelector.groundLineTheLevelsUnderIt\":[\"Ground line: the levels under it are below grade\"],\"editor.floatingLevelSelector.groundOffset\":[\"Ground · \",[\"offset\"]],\"editor.floatingLevelSelector.insertLevelHere\":[\"Insert level here\"],\"editor.floatingLevelSelector.levelHeight\":[\"Level height\"],\"editor.floatingLevelSelector.pasteCopiedSelection\":[\"Paste copied selection\"],\"editor.floatingLevelSelector.reorderLevelname\":[\"Reorder \",[\"levelName\"]],\"editor.floatingLevelSelector.seatTheBuildingSoThisFloor\":[\"Seat the building so this floor stands at grade; the floors under it are below grade\"],\"editor.floatingLevelSelector.setAsGroundFloor\":[\"Set as ground floor\"],\"editor.floatingLevelSelector.theGroundLevelCannotBeDeleted\":[\"The ground level cannot be deleted\"],\"editor.floatingLevelSelector.thisFloorStandsAtGrade\":[\"This floor stands at grade\"],\"editor.floatingLevelSelector.unit\":[\"Unit\"],\"editor.helpers.buildingHelper.cancel\":[\"Cancel\"],\"editor.helpers.buildingHelper.placeBuilding\":[\"Place building\"],\"editor.helpers.buildingHelper.rotate\":[\"Rotate\"],\"editor.helpers.contextualHelperPanel.cancelPlacement\":[\"Cancel placement\"],\"editor.helpers.contextualHelperPanel.continuationClickOrPressCTo\":[\"Continuation — click or press C to cycle\"],\"editor.helpers.contextualHelperPanel.continuationLabel\":[\"Continuation: \",[\"label\"]],\"editor.helpers.contextualHelperPanel.dragToDrawFence\":[\"Drag to draw fence\"],\"editor.helpers.contextualHelperPanel.eraseScope\":[\"Erase: \",[\"scope\"]],\"editor.helpers.contextualHelperPanel.eraseScopeClickOrPressShift\":[\"Erase scope — click or press Shift to cycle\"],\"editor.helpers.contextualHelperPanel.eraseScopeLabel\":[\"Erase scope: \",[\"scope\"]],\"editor.helpers.contextualHelperPanel.fenceTypeClickOrPressT\":[\"Fence type — click or press T to switch between straight, curved and freehand\"],\"editor.helpers.contextualHelperPanel.fewerShortcuts\":[\"Fewer shortcuts\"],\"editor.helpers.contextualHelperPanel.finishCurveOrDoubleClick\":[\"Finish curve (or double-click)\"],\"editor.helpers.contextualHelperPanel.gridLength\":[\"Grid: \",[\"length\"]],\"editor.helpers.contextualHelperPanel.gridStepClickOrTapCtrl\":[\"Grid step — click or tap Ctrl to cycle\"],\"editor.helpers.contextualHelperPanel.gridStepLength\":[\"Grid step: \",[\"length\"]],\"editor.helpers.contextualHelperPanel.hoverAPaintedSurfaceToErase\":[\"Hover a painted surface to erase\"],\"editor.helpers.contextualHelperPanel.hoverASurfaceToPaint\":[\"Hover a surface to paint\"],\"editor.helpers.contextualHelperPanel.hoverASurfaceToPickIts\":[\"Hover a surface to pick its material\"],\"editor.helpers.contextualHelperPanel.moreShortcuts\":[\"More shortcuts\"],\"editor.helpers.contextualHelperPanel.paintScope\":[\"Paint: \",[\"scope\"]],\"editor.helpers.contextualHelperPanel.paintScopeClickOrPressShift\":[\"Paint scope — click or press Shift to cycle\"],\"editor.helpers.contextualHelperPanel.paintScopeLabel\":[\"Paint scope: \",[\"scope\"]],\"editor.helpers.contextualHelperPanel.pickScope\":[\"Pick: \",[\"scope\"]],\"editor.helpers.contextualHelperPanel.placeGateOnAFence\":[\"Place gate on a fence\"],\"editor.helpers.contextualHelperPanel.placePassageOnAFence\":[\"Place passage on a fence\"],\"editor.helpers.contextualHelperPanel.selectAMaterialToPaint\":[\"Select a material to paint\"],\"editor.helpers.contextualHelperPanel.snappingAngles\":[\"Snapping: Angles\"],\"editor.helpers.contextualHelperPanel.snappingGrid\":[\"Snapping: Grid\"],\"editor.helpers.contextualHelperPanel.snappingLines\":[\"Snapping: Lines\"],\"editor.helpers.contextualHelperPanel.snappingModeClickOrPressShift\":[\"Snapping mode — click or press Shift to cycle\"],\"editor.helpers.contextualHelperPanel.snappingOff\":[\"Snapping: Off\"],\"editor.helpers.contextualHelperPanel.straightContinuationIsUnavailableForCurved\":[\"Straight continuation is unavailable for curved or freehand fences\"],\"editor.helpers.contextualHelperPanel.straightContinuous\":[\"Straight: Continuous\"],\"editor.helpers.contextualHelperPanel.straightFenceContinuationClickOrPress\":[\"Straight fence continuation — click or press C to toggle\"],\"editor.helpers.contextualHelperPanel.straightSingle\":[\"Straight: Single\"],\"editor.helpers.helperManager.addPoint\":[\"Add point\"],\"editor.helpers.helperManager.addPointClickTheFirstTo\":[\"Add point · click the first to close\"],\"editor.helpers.helperManager.brushSize\":[\"Brush size\"],\"editor.helpers.helperManager.cancel\":[\"Cancel\"],\"editor.helpers.helperManager.cancelPicking\":[\"Cancel picking\"],\"editor.helpers.helperManager.cancelStroke\":[\"Cancel stroke\"],\"editor.helpers.helperManager.done\":[\"Done\"],\"editor.helpers.helperManager.drawTheMezzanine\":[\"Draw the mezzanine\"],\"editor.helpers.helperManager.drawTheOpening\":[\"Draw the opening\"],\"editor.helpers.helperManager.drawTheTerrace\":[\"Draw the terrace\"],\"editor.helpers.helperManager.exitSmartMeasure\":[\"Exit smart measure\"],\"editor.helpers.helperManager.finish\":[\"Finish\"],\"editor.helpers.helperManager.finishAtTheEdge\":[\"Finish at the edge\"],\"editor.helpers.helperManager.freeMove\":[\"Free move\"],\"editor.helpers.helperManager.freeMoveSlideDoorsAndWindows\":[\"Free move · slide doors and windows\"],\"editor.helpers.helperManager.holdToPickAMaterial\":[\"Hold to pick a material\"],\"editor.helpers.helperManager.inspectSurfaceDimensions\":[\"Inspect surface dimensions\"],\"editor.helpers.helperManager.paintWithThisMaterial\":[\"Paint with this material\"],\"editor.helpers.helperManager.pickTargetHeight\":[\"Pick target height\"],\"editor.helpers.helperManager.pinMeasurementLens\":[\"Pin measurement lens\"],\"editor.helpers.helperManager.place\":[\"Place\"],\"editor.helpers.helperManager.placeInsideTheRoom\":[\"Place inside the room\"],\"editor.helpers.helperManager.pressAnywhereDragToTheOpposite\":[\"Press anywhere, drag to the opposite corner\"],\"editor.helpers.helperManager.raiseOrLower\":[\"Raise or lower\"],\"editor.helpers.helperManager.removeAPaintedPartOrReset\":[\"Remove a painted part, or reset a surface\"],\"editor.helpers.helperManager.removeLastPoint\":[\"Remove last point\"],\"editor.helpers.helperManager.resize\":[\"Resize\"],\"editor.helpers.helperManager.rotate45\":[\"Rotate ±45°\"],\"editor.helpers.helperManager.rotateTheSelection45\":[\"Rotate the selection ±45°\"],\"editor.helpers.helperManager.setOneCornerThenTheOpposite\":[\"Set one corner, then the opposite\"],\"editor.helpers.itemHelper.cancel\":[\"Cancel\"],\"editor.helpers.itemHelper.forcePlace\":[\"Force place\"],\"editor.helpers.itemHelper.place\":[\"Place\"],\"editor.helpers.itemHelper.rotate\":[\"Rotate\"],\"editor.helpers.registeredToolHelper.guidedConstraintsBypassed\":[\"Guided constraints bypassed\"],\"editor.layers.collapse\":[\"Collapse\"],\"editor.layers.defaultName.ceiling\":[\"Ceiling (\",[\"area\"],\")\"],\"editor.layers.defaultName.collection\":[\"Collection\"],\"editor.layers.defaultName.flight\":[\"Flight (\",[\"width\"],\"×\",[\"length\"],\"m)\"],\"editor.layers.defaultName.landing\":[\"Landing (\",[\"width\"],\"×\",[\"length\"],\"m)\"],\"editor.layers.defaultName.node\":[\"Node\"],\"editor.layers.defaultName.roof\":[\"Roof (\",[\"count\",\"plural\",{\"one\":[\"#\",\" segment\"],\"other\":[\"#\",\" segments\"]}],\")\"],\"editor.layers.defaultName.roofSegment\":[[\"roofType\",\"select\",{\"hip\":[\"Hip\"],\"gable\":[\"Gable\"],\"shed\":[\"Shed\"],\"gambrel\":[\"Gambrel\"],\"dutch\":[\"Dutch\"],\"mansard\":[\"Mansard\"],\"flat\":[\"Flat\"],\"conical\":[\"Conical\"],\"barrel\":[\"Barrel\"],\"other\":[\"Roof\"]}],\" (\",[\"width\"],\"×\",[\"depth\"],\"m)\"],\"editor.layers.defaultName.room\":[\"Room (\",[\"area\"],\")\"],\"editor.layers.defaultName.slab\":[\"Slab (\",[\"area\"],\")\"],\"editor.layers.defaultName.staircase\":[\"Staircase (\",[\"count\",\"plural\",{\"one\":[\"#\",\" segment\"],\"other\":[\"#\",\" segments\"]}],\")\"],\"editor.layers.defaultName.zone\":[\"Zone (\",[\"area\"],\")\"],\"editor.layers.expand\":[\"Expand\"],\"editor.layers.levelOptions\":[[\"levelName\"],\" options\"],\"editor.layers.rename\":[\"Rename\"],\"editor.layers.spaceColour\":[[\"role\",\"select\",{\"room\":[\"Room colour\"],\"other\":[\"Zone colour\"]}]],\"editor.layers.unitColour\":[\"Unit colour\"],\"editor.levelDuplicateDialog.cancel\":[\"Cancel\"],\"editor.levelDuplicateDialog.chooseWhatToCopyFromLevel\":[\"Choose what to copy from \",[\"levelName\"],\".\"],\"editor.levelDuplicateDialog.chooseWhatToCopyFromThisLevel\":[\"Choose what to copy from this level.\"],\"editor.levelDuplicateDialog.duplicate\":[\"Duplicate\"],\"editor.levelDuplicateDialog.duplicateLevel\":[\"Duplicate Level\"],\"editor.levelDuplicateDialog.everything\":[\"Everything\"],\"editor.levelDuplicateDialog.structureFinishesAndPlacedItemsWithout\":[\"Structure, finishes, and placed items, without guide references.\"],\"editor.levelDuplicateDialog.structureFurniture\":[\"Structure + furniture\"],\"editor.levelDuplicateDialog.structureMaterials\":[\"Structure + materials\"],\"editor.levelDuplicateDialog.structureMaterialsFurnitureAndReferences\":[\"Structure, materials, furniture, and references.\"],\"editor.levelDuplicateDialog.structureOnly\":[\"Structure only\"],\"editor.levelDuplicateDialog.structureWithTheCurrentMaterialAnd\":[\"Structure with the current material and finish assignments.\"],\"editor.levelDuplicateDialog.wallsSlabsRoofsStairsWindowsAnd\":[\"Walls, slabs, roofs, stairs, windows, and doors without finishes.\"],\"editor.lib.contextualHelp.addOrRemoveObjectsFromThe\":[\"Add or remove objects from the selection\"],\"editor.lib.contextualHelp.adjustOneSideSCornerRadius\":[\"Adjust one side’s corner radius\"],\"editor.lib.contextualHelp.clearTheSelectionOrClickOutside\":[\"Clear the selection (or click outside)\"],\"editor.lib.contextualHelp.clickAHandleDotToShow\":[\"Click a handle dot to show move arrows\"],\"editor.lib.contextualHelp.clickOrDragTheSelectionTo\":[\"Click or drag the selection to move it as one\"],\"editor.lib.contextualHelp.clickTheHandleDotToShow\":[\"Click the handle dot to show move + rotate handles\"],\"editor.lib.contextualHelp.detachTheJointWhileDraggingAn\":[\"Detach the joint while dragging an arrow\"],\"editor.lib.contextualHelp.dragLeftOrRightToRotate\":[\"Drag left or right to rotate selected object\"],\"editor.lib.contextualHelp.dragSelectedMovableObject\":[\"Drag selected movable object\"],\"editor.lib.contextualHelp.groupSelectionSessionOnly\":[\"Group selection (session only)\"],\"editor.lib.contextualHelp.holdToRotateFreely\":[\"Hold to rotate freely\"],\"editor.lib.contextualHelp.rotate45\":[\"Rotate ±45°\"],\"editor.lib.contextualHelp.rotateTheSelection45\":[\"Rotate the selection ±45°\"],\"editor.lib.contextualHelp.rotatingFreely\":[\"Rotating freely (no angle step)\"],\"editor.lib.contextualHelp.switchTheRotationAxisYX\":[\"Switch the rotation axis (Y → X → Z)\"],\"editor.lib.contextualHelp.ungroupSessionSelection\":[\"Ungroup session selection\"],\"editor.lib.continuation.continuous\":[\"Continuous\"],\"editor.lib.continuation.continuousCanopy\":[\"Continuous canopy\"],\"editor.lib.continuation.continuousRun\":[\"Continuous run\"],\"editor.lib.continuation.curvedFence\":[\"Curved fence\"],\"editor.lib.continuation.freehandFence\":[\"Freehand fence\"],\"editor.lib.continuation.placeMultiple\":[\"Place multiple\"],\"editor.lib.continuation.placeOnce\":[\"Place once\"],\"editor.lib.continuation.polygonRoom\":[\"Polygon room\"],\"editor.lib.continuation.rectangleRoom\":[\"Rectangle room\"],\"editor.lib.continuation.singleCabinet\":[\"Single cabinet\"],\"editor.lib.continuation.singleCanopy\":[\"Single canopy\"],\"editor.lib.continuation.singleFence\":[\"Single fence\"],\"editor.lib.continuation.walls\":[\"Walls\"],\"editor.lib.hudTitle.cutOpening\":[\"Cut opening\"],\"editor.lib.hudTitle.divideRoom\":[\"Divide room\"],\"editor.lib.hudTitle.editKind\":[\"Edit \",[\"kind\"]],\"editor.lib.hudTitle.erase\":[\"Erase\"],\"editor.lib.hudTitle.levelTerrain\":[\"Level terrain\"],\"editor.lib.hudTitle.lowerTerrain\":[\"Lower terrain\"],\"editor.lib.hudTitle.mezzanine\":[\"Mezzanine\"],\"editor.lib.hudTitle.moveKind\":[\"Move \",[\"kind\"]],\"editor.lib.hudTitle.moveRoom\":[\"Move room\"],\"editor.lib.hudTitle.moveSelection\":[\"Move selection\"],\"editor.lib.hudTitle.paint\":[\"Paint\"],\"editor.lib.hudTitle.paintARectangle\":[\"Paint a rectangle\"],\"editor.lib.hudTitle.paintAShape\":[\"Paint a shape\"],\"editor.lib.hudTitle.pickMaterial\":[\"Pick material\"],\"editor.lib.hudTitle.raiseTerrain\":[\"Raise terrain\"],\"editor.lib.hudTitle.resize\":[\"Resize\"],\"editor.lib.hudTitle.rotate\":[\"Rotate\"],\"editor.lib.hudTitle.select\":[\"Select\"],\"editor.lib.hudTitle.smartMeasure\":[\"Smart measure\"],\"editor.lib.hudTitle.smoothTerrain\":[\"Smooth terrain\"],\"editor.lib.hudTitle.splitKind\":[\"Split \",[\"kind\"]],\"editor.lib.hudTitle.terrace\":[\"Terrace\"],\"editor.lib.wallDrawVariant.polygonRoom\":[\"Polygon room\"],\"editor.lib.wallDrawVariant.rectangleRoom\":[\"Rectangle room\"],\"editor.lib.wallDrawVariant.walls\":[\"Walls\"],\"editor.reloadEditor\":[\"Reload editor\"],\"editor.sidebar.iconRail.settings\":[\"Settings\"],\"editor.sidebar.iconRail.site\":[\"Site\"],\"editor.sidebar.panels.itemsPanel.all\":[\"All\"],\"editor.sidebar.panels.itemsPanel.community\":[\"Community\"],\"editor.sidebar.panels.itemsPanel.functionTreePanel.all\":[\"All\"],\"editor.sidebar.panels.itemsPanel.functionTreePanel.community\":[\"Community\"],\"editor.sidebar.panels.itemsPanel.functionTreePanel.library\":[\"Library\"],\"editor.sidebar.panels.itemsPanel.functionTreePanel.mine\":[\"Mine\"],\"editor.sidebar.panels.itemsPanel.functionTreePanel.noResultsForSearch\":[\"No results for “\",[\"search\"],\"”\"],\"editor.sidebar.panels.itemsPanel.functionTreePanel.search\":[\"Search...\"],\"editor.sidebar.panels.itemsPanel.library\":[\"Library\"],\"editor.sidebar.panels.itemsPanel.mine\":[\"Mine\"],\"editor.sidebar.panels.itemsPanel.noResultsForSearch\":[\"No results for “\",[\"search\"],\"”\"],\"editor.sidebar.panels.itemsPanel.search\":[\"Search...\"],\"editor.sidebar.panels.sitePanel.addLevel\":[\"Add level\"],\"editor.sidebar.panels.sitePanel.addPoint\":[\"Add point\"],\"editor.sidebar.panels.sitePanel.area\":[\"Area:\"],\"editor.sidebar.panels.sitePanel.baseElevation\":[\"Base elevation\"],\"editor.sidebar.panels.sitePanel.building\":[\"Building\"],\"editor.sidebar.panels.sitePanel.buildingTreeNode.addNewLevel\":[\"Add new level\"],\"editor.sidebar.panels.sitePanel.buildingTreeNode.building\":[\"Building\"],\"editor.sidebar.panels.sitePanel.cameraSnapshot\":[\"Camera snapshot\"],\"editor.sidebar.panels.sitePanel.capture\":[\"Capture\"],\"editor.sidebar.panels.sitePanel.clearSelection\":[\"Clear selection\"],\"editor.sidebar.panels.sitePanel.clearSnapshot\":[\"Clear snapshot\"],\"editor.sidebar.panels.sitePanel.closeWallsAroundASpaceTo\":[\"Close walls around a space to make a room.\"],\"editor.sidebar.panels.sitePanel.collectionTreeNode.collectionColour\":[\"Collection colour\"],\"editor.sidebar.panels.sitePanel.collectionTreeNode.collections\":[\"Collections\"],\"editor.sidebar.panels.sitePanel.collectionTreeNode.deleteCollection\":[\"Delete collection\"],\"editor.sidebar.panels.sitePanel.delete\":[\"Delete\"],\"editor.sidebar.panels.sitePanel.deleteLevel\":[\"Delete level\"],\"editor.sidebar.panels.sitePanel.drawAZone\":[\"Draw a zone\"],\"editor.sidebar.panels.sitePanel.duplicate\":[\"Duplicate\"],\"editor.sidebar.panels.sitePanel.duplicateLevel\":[\"Duplicate level\"],\"editor.sidebar.panels.sitePanel.duplicateLevelWithOptions\":[\"Duplicate level with options\"],\"editor.sidebar.panels.sitePanel.duplicateWithOptions\":[\"Duplicate with options...\"],\"editor.sidebar.panels.sitePanel.elements\":[\"Elements\"],\"editor.sidebar.panels.sitePanel.guide\":[\"Guide\"],\"editor.sidebar.panels.sitePanel.hide\":[\"Hide\"],\"editor.sidebar.panels.sitePanel.level\":[\"Level\"],\"editor.sidebar.panels.sitePanel.newUnit\":[\"New unit\"],\"editor.sidebar.panels.sitePanel.noBuildingsYet\":[\"No buildings yet\"],\"editor.sidebar.panels.sitePanel.noElementsOnThisLevel\":[\"No elements on this level\"],\"editor.sidebar.panels.sitePanel.noLevelsYet\":[\"No levels yet\"],\"editor.sidebar.panels.sitePanel.objectsSelected\":[[\"count\",\"plural\",{\"one\":[\"#\",\" object selected\"],\"other\":[\"#\",\" objects selected\"]}]],\"editor.sidebar.panels.sitePanel.otherZones\":[\"Other zones\"],\"editor.sidebar.panels.sitePanel.perimeter\":[\"Perimeter:\"],\"editor.sidebar.panels.sitePanel.propertyLine\":[\"Property Line\"],\"editor.sidebar.panels.sitePanel.rooms\":[\"Rooms\"],\"editor.sidebar.panels.sitePanel.selectALevelToViewContent\":[\"Select a level to view content\"],\"editor.sidebar.panels.sitePanel.show\":[\"Show\"],\"editor.sidebar.panels.sitePanel.site\":[\"Site\"],\"editor.sidebar.panels.sitePanel.takeSnapshot\":[\"Take snapshot\"],\"editor.sidebar.panels.sitePanel.theGroundLevelCannotBeDeleted\":[\"The ground level cannot be deleted\"],\"editor.sidebar.panels.sitePanel.treeNodeActions.cameraSnapshot\":[\"Camera snapshot\"],\"editor.sidebar.panels.sitePanel.treeNodeActions.clearSnapshot\":[\"Clear snapshot\"],\"editor.sidebar.panels.sitePanel.treeNodeActions.hide\":[\"Hide\"],\"editor.sidebar.panels.sitePanel.treeNodeActions.show\":[\"Show\"],\"editor.sidebar.panels.sitePanel.treeNodeActions.takeSnapshot\":[\"Take snapshot\"],\"editor.sidebar.panels.sitePanel.treeNodeActions.updateSnapshot\":[\"Update snapshot\"],\"editor.sidebar.panels.sitePanel.treeNodeActions.viewSnapshot\":[\"View snapshot\"],\"editor.sidebar.panels.sitePanel.unitTreeNode.deleteUnit\":[\"Delete unit\"],\"editor.sidebar.panels.sitePanel.unitTreeNode.focused\":[\"Focused\"],\"editor.sidebar.panels.sitePanel.unitTreeNode.removeFromUnit\":[\"Remove from unit\"],\"editor.sidebar.panels.sitePanel.unitTreeNode.room\":[\"Room\"],\"editor.sidebar.panels.sitePanel.unitTreeNode.zone\":[\"Zone\"],\"editor.sidebar.panels.sitePanel.units\":[\"Units\"],\"editor.sidebar.panels.sitePanel.updateSnapshot\":[\"Update snapshot\"],\"editor.sidebar.panels.sitePanel.uploadScanFloorplan\":[\"Upload scan/floorplan\"],\"editor.sidebar.panels.sitePanel.uploadingProgress\":[[\"assetType\",\"select\",{\"guide\":[\"Uploading guide... \",[\"progress\"],\"%\"],\"other\":[\"Uploading scan... \",[\"progress\"],\"%\"]}]],\"editor.sidebar.panels.sitePanel.viewSnapshot\":[\"View snapshot\"],\"editor.sidebar.panels.sitePanel.zoneMembershipCheckbox.inUnitname\":[\"In \",[\"unitName\"]],\"editor.sidebar.panels.zonePanel.actions\":[\"Actions\"],\"editor.sidebar.panels.zonePanel.addOne\":[\"Add one\"],\"editor.sidebar.panels.zonePanel.cameraSnapshot\":[\"Camera snapshot\"],\"editor.sidebar.panels.zonePanel.clearSnapshot\":[\"Clear snapshot\"],\"editor.sidebar.panels.zonePanel.delete\":[\"Delete\"],\"editor.sidebar.panels.zonePanel.deleteWithContents\":[\"Delete with contents\"],\"editor.sidebar.panels.zonePanel.noZonesOnThisLevel\":[\"No zones on this level.\"],\"editor.sidebar.panels.zonePanel.saveToCatalog\":[\"Save to catalog\"],\"editor.sidebar.panels.zonePanel.selectALevelToViewAnd\":[\"Select a level to view and create zones\"],\"editor.sidebar.panels.zonePanel.takeSnapshot\":[\"Take snapshot\"],\"editor.sidebar.panels.zonePanel.updateSnapshot\":[\"Update snapshot\"],\"editor.sidebar.panels.zonePanel.viewSnapshot\":[\"View snapshot\"],\"editor.sidebar.usePluginPanels.labelPluginCrashed\":[\"\\\"\",[\"label\"],\"\\\" plugin crashed\"],\"editor.sidebar.usePluginPanels.loading\":[\"Loading…\"],\"editor.sidebar.usePluginPanels.plugins\":[\"Plugins\"],\"editor.sidebar.usePluginPanels.thisPanelHitAnErrorAnd\":[\"This panel hit an error and was unloaded for this session. The rest of the editor is unaffected — reload to try again.\"],\"editor.theEditorSceneFailedToRender\":[\"The editor scene failed to render\"],\"editor.toolHint.aCurtainWallTakesNoCorner.1qxjv5i\":[\"A curtain wall takes no corner window\"],\"editor.toolHint.aCurvedWallTakesNoCorner.1vdnaw5\":[\"A curved wall takes no corner window\"],\"editor.toolHint.addACornerClickTheFirst.o4r67t\":[\"Add a corner · click the first to close\"],\"editor.toolHint.anotherOpeningIsInTheWay.11l9dd0\":[\"Another opening is in the way at the corner\"],\"editor.toolHint.autoHangers.10554ka\":[\"Auto hangers\"],\"editor.toolHint.autoHangersClickOrPressH.rwa3ka\":[\"Auto hangers - click or press H to toggle\"],\"editor.toolHint.autoHangersOff.7yx01x\":[\"Auto hangers: Off\"],\"editor.toolHint.autoHangersOn.10b1umh\":[\"Auto hangers: On\"],\"editor.toolHint.bypassSnapping.w5lmdv\":[\"Bypass snapping\"],\"editor.toolHint.cancel.ew9em3\":[\"Cancel\"],\"editor.toolHint.cancelMove.lvp31c\":[\"Cancel move\"],\"editor.toolHint.cancelRunExit.zqjf3h\":[\"Cancel run / exit\"],\"editor.toolHint.cancelStartPoint.1xbq2lh\":[\"Cancel start point\"],\"editor.toolHint.cornerWindow.1avkzpo\":[\"Corner window\"],\"editor.toolHint.cuts.1y0axps\":[\"Cuts\"],\"editor.toolHint.cutsValue.ouzhvb\":[\"Cuts: \",[\"value\"]],\"editor.toolHint.cutsValueEven.1ngsz3\":[\"Cuts: \",[\"value\"],\", even\"],\"editor.toolHint.cycleMonoGableButterfly.1poga3m\":[\"Cycle mono / gable / butterfly\"],\"editor.toolHint.cycleSnappingMode.1ct0gn6\":[\"Cycle snapping mode\"],\"editor.toolHint.doorStyleClickOrPressL.33pe65\":[\"Door style — click or press L to cycle\"],\"editor.toolHint.doorTypeClickOrPressO.1hhh8gt\":[\"Door type — click or press O to cycle\"],\"editor.toolHint.dropDownspoutFromOutlet.1k4h1m4\":[\"Drop downspout from outlet\"],\"editor.toolHint.ductDiameterDownUp.1wdz5vq\":[\"Duct diameter down / up\"],\"editor.toolHint.endRunCancel.59dh2w\":[\"End run / cancel\"],\"editor.toolHint.exit.engmg5\":[\"Exit\"],\"editor.toolHint.exitDrawing.9noxyb\":[\"Exit drawing\"],\"editor.toolHint.finishAndContinue.1gpfsks\":[\"Finish and continue\"],\"editor.toolHint.finishCeiling.1c1lfel\":[\"Finish ceiling\"],\"editor.toolHint.finishGridAxis.1wvrfhr\":[\"Finish grid axis\"],\"editor.toolHint.finishMeasurement.1e4gv16\":[\"Finish measurement\"],\"editor.toolHint.finishMultiPointWitnesses.8wzskz\":[\"Finish multi-point witnesses\"],\"editor.toolHint.finishSlab.xmnm8e\":[\"Finish slab\"],\"editor.toolHint.flipSide.172xku9\":[\"Flip side\"],\"editor.toolHint.followTraceALineset.mgquwe\":[\"Follow: trace a lineset\"],\"editor.toolHint.forcePlace.1hq1nr\":[\"Force place\"],\"editor.toolHint.freePlacement.1nztdac\":[\"Free placement\"],\"editor.toolHint.goVerticalClickToPlace.dg8g6m\":[\"Go vertical ↕, click to place\"],\"editor.toolHint.highlightOutlet.65hoq8\":[\"Highlight outlet\"],\"editor.toolHint.joinAsACornerWindow.jvdp4j\":[\"Join as a corner window\"],\"editor.toolHint.key.altDrag.ai3wn9\":[\"Alt + drag\"],\"editor.toolHint.key.backspace.qy6qx8\":[\"Backspace\"],\"editor.toolHint.key.click.m8sun\":[\"Click\"],\"editor.toolHint.key.clickAgain.190ws9j\":[\"Click again\"],\"editor.toolHint.key.command.1j2mkia\":[\"Command\"],\"editor.toolHint.key.control.10fbl8e\":[\"Control\"],\"editor.toolHint.key.delete.oay2cq\":[\"Delete\"],\"editor.toolHint.key.doubleClick.vlma6o\":[\"Double click\"],\"editor.toolHint.key.drag.8pwtpf\":[\"Drag\"],\"editor.toolHint.key.enter.1ctpui5\":[\"Enter\"],\"editor.toolHint.key.hover.6xw79p\":[\"Hover\"],\"editor.toolHint.key.hoverADuctEnd.19axr3b\":[\"Hover a duct end\"],\"editor.toolHint.key.hoverAPipeEnd.1jbum5f\":[\"Hover a pipe end\"],\"editor.toolHint.key.hoverGutter.1dwcsno\":[\"Hover gutter\"],\"editor.toolHint.key.leftClick.s4gwfc\":[\"Left click\"],\"editor.toolHint.key.middleClick.1jbaan4\":[\"Middle click\"],\"editor.toolHint.key.rShiftR.13bnobh\":[\"R / Shift+R\"],\"editor.toolHint.key.rightClick.1ovld0h\":[\"Right click\"],\"editor.toolHint.key.scroll.ai6wr0\":[\"Scroll\"],\"editor.toolHint.key.scrollWheel.18j0ix7\":[\"Scroll wheel\"],\"editor.toolHint.key.space.1hrh82t\":[\"Space\"],\"editor.toolHint.key.tab.1xsal0s\":[\"Tab\"],\"editor.toolHint.mountFloorCeilingWall.32dxpv\":[\"Mount: floor / ceiling / wall\"],\"editor.toolHint.noRoomForTheMatchingWindow.1755948\":[\"No room for the matching window on the other wall\"],\"editor.toolHint.noWallMeetsHere.19n99yc\":[\"No wall meets here\"],\"editor.toolHint.numberOfCutsScrollOrClick.1kqe84b\":[\"Number of cuts — scroll or click to change\"],\"editor.toolHint.pickWitnessPoint.k3hgh1\":[\"Pick witness point\"],\"editor.toolHint.pipeSizeDownUp.wp04og\":[\"Pipe size down / up\"],\"editor.toolHint.placeAndContinue.qfwkrq\":[\"Place and continue\"],\"editor.toolHint.placeBlock.1aylwrx\":[\"Place block\"],\"editor.toolHint.placeBoxVentOnRoof.kf88e5\":[\"Place box vent on roof\"],\"editor.toolHint.placeCabinet.b0ouyk\":[\"Place cabinet\"],\"editor.toolHint.placeCanopyOrSetTheNext.12l7zf8\":[\"Place canopy or set the next run point\"],\"editor.toolHint.placeChimneyOnRoof.19dbqu\":[\"Place chimney on roof\"],\"editor.toolHint.placeColumn.1w2vq86\":[\"Place column\"],\"editor.toolHint.placeCupolaOnRoof.ofx3bn\":[\"Place cupola on roof\"],\"editor.toolHint.placeDimensionLineWhenNeeded.bjw2cj\":[\"Place dimension line when needed\"],\"editor.toolHint.placeDoorOnWall.1jwadf\":[\"Place door on wall\"],\"editor.toolHint.placeDormerOnRoof.1w518a6\":[\"Place dormer on roof\"],\"editor.toolHint.placeElevator.1f65zva\":[\"Place elevator\"],\"editor.toolHint.placeEyebrowVentOnRoof.1h1tqxn\":[\"Place eyebrow vent on roof\"],\"editor.toolHint.placeFitting.1pmx3vn\":[\"Place fitting\"],\"editor.toolHint.placeGutterOnRoofEave.llwzf9\":[\"Place gutter on roof eave\"],\"editor.toolHint.placeItLockedTo45.16e4csk\":[\"Place it (locked to 45°)\"],\"editor.toolHint.placeItem.teynf\":[\"Place item\"],\"editor.toolHint.placeMeasurementPoint.bsatli\":[\"Place measurement point\"],\"editor.toolHint.placeOnAFence.1dptstr\":[\"Place on a fence\"],\"editor.toolHint.placeRegister.1uebycd\":[\"Place register\"],\"editor.toolHint.placeRidgeVentOnRoof.2tpd8r\":[\"Place ridge vent on roof\"],\"editor.toolHint.placeShelf.y4l3iw\":[\"Place shelf\"],\"editor.toolHint.placeSkylightOnRoof.e215pe\":[\"Place skylight on roof\"],\"editor.toolHint.placeSolarPanelArrayOnRoof.kk11fn\":[\"Place solar panel array on roof\"],\"editor.toolHint.placeSpawnPoint.205o25\":[\"Place spawn point\"],\"editor.toolHint.placeStairs.zwxxu2\":[\"Place stairs\"],\"editor.toolHint.placeTrap.1gxemn3\":[\"Place trap\"],\"editor.toolHint.placeTurbineVentOnRoof.1iqeluf\":[\"Place turbine vent on roof\"],\"editor.toolHint.placeUnit.8zkx4q\":[\"Place unit\"],\"editor.toolHint.placeWindowOnWall.1k3qnfb\":[\"Place window on wall\"],\"editor.toolHint.placeWithoutTheCornerSnap.1nifqew\":[\"Place without the corner snap\"],\"editor.toolHint.placement.13lcvts\":[\"Placement\"],\"editor.toolHint.placementAuto.1caa52d\":[\"Placement: Auto\"],\"editor.toolHint.placementGround.1ruz145\":[\"Placement: Ground\"],\"editor.toolHint.placementRoof.renkw8\":[\"Placement: Roof\"],\"editor.toolHint.placementSurfaceClickOrPressP.w56h19\":[\"Placement surface - click or press P to cycle\"],\"editor.toolHint.placementType.1mdpl60\":[\"Placement type\"],\"editor.toolHint.placementTypeClickOrPressI.10cgxh2\":[\"Placement type — click or press I to toggle\"],\"editor.toolHint.removeLastPoint.2dmdcx\":[\"Remove last point\"],\"editor.toolHint.removeLastWitness.1b6vvzw\":[\"Remove last witness\"],\"editor.toolHint.rotate.1thqa0a\":[\"Rotate\"],\"editor.toolHint.rotate45.9zq68u\":[\"Rotate ±45°\"],\"editor.toolHint.rotate45FloorCeiling.m9t57d\":[\"Rotate ±45° (floor / ceiling)\"],\"editor.toolHint.rotateGhost15.rsa52c\":[\"Rotate ghost ±15°\"],\"editor.toolHint.rotateOrFlipTheRunSide.t5ior7\":[\"Rotate or flip the run side\"],\"editor.toolHint.rotateRoofDirection90.tvbji2\":[\"Rotate roof direction 90°\"],\"editor.toolHint.rotateSpawnPoint.1opcuu7\":[\"Rotate spawn point\"],\"editor.toolHint.roundRectangularOval.e4nh6x\":[\"Round / rectangular / oval\"],\"editor.toolHint.setFenceStartEnd.1phbwsq\":[\"Set fence start / end\"],\"editor.toolHint.setOneCornerThenTheOpposite.8tsl49\":[\"Set one corner, then the opposite\"],\"editor.toolHint.setRoofFootprint.p50n0o\":[\"Set roof footprint\"],\"editor.toolHint.setWallStartEnd.1r8ubcx\":[\"Set wall start / end\"],\"editor.toolHint.slopeLevel.ftqp67\":[\"Slope / level\"],\"editor.toolHint.snapOntoTheRun.86yhmp\":[\"Snap onto the run\"],\"editor.toolHint.splitAtTheMarks.x5tpdd\":[\"Split at the marks\"],\"editor.toolHint.startGridAxis.k92yza\":[\"Start grid axis\"],\"editor.toolHint.startLineset.23q8dh\":[\"Start lineset\"],\"editor.toolHint.startLiquidLine.1rlxsgd\":[\"Start liquid line\"],\"editor.toolHint.startRun.r6fc5u\":[\"Start run\"],\"editor.toolHint.startSegment.rolym6\":[\"Start segment\"],\"editor.toolHint.stepBackOrCancel.zbfdkn\":[\"Step back or cancel\"],\"editor.toolHint.style.nf3vcm\":[\"Style\"],\"editor.toolHint.styleBarn.k9n1x\":[\"Style: Barn\"],\"editor.toolHint.styleCasement.ziklec\":[\"Style: Casement\"],\"editor.toolHint.styleCraftsman.52e6a9\":[\"Style: Craftsman\"],\"editor.toolHint.styleDoubleHung.1lg8pkg\":[\"Style: Double-hung\"],\"editor.toolHint.styleFrench.1ue3j64\":[\"Style: French\"],\"editor.toolHint.styleGlass.qudnb4\":[\"Style: Glass\"],\"editor.toolHint.styleGrid.1vuq4po\":[\"Style: Grid\"],\"editor.toolHint.styleHalfLouvered.13b1few\":[\"Style: Half-louvered\"],\"editor.toolHint.styleHorizontalBands.12ethxk\":[\"Style: Horizontal bands\"],\"editor.toolHint.styleModern.1fh8hhn\":[\"Style: Modern\"],\"editor.toolHint.stylePanel.922jze\":[\"Style: Panel\"],\"editor.toolHint.stylePaneledGlass.17a17en\":[\"Style: Paneled glass\"],\"editor.toolHint.styleShaker.49z17k\":[\"Style: Shaker\"],\"editor.toolHint.styleSingle.6f3cm0\":[\"Style: Single\"],\"editor.toolHint.styleSixPanel.u49laj\":[\"Style: Six-panel\"],\"editor.toolHint.styleSliding.q81s0i\":[\"Style: Sliding\"],\"editor.toolHint.styleTallGrid.1eotg3x\":[\"Style: Tall grid\"],\"editor.toolHint.styleTransom.kb9bh6\":[\"Style: Transom\"],\"editor.toolHint.styleTripleHung.pxnqi3\":[\"Style: Triple-hung\"],\"editor.toolHint.styleWideGrid.12n27et\":[\"Style: Wide grid\"],\"editor.toolHint.switchRotationAxisYXZ.15lohm6\":[\"Switch rotation axis (Y → X → Z)\"],\"editor.toolHint.theWallsMeetAtTooSharp.kh3wi3\":[\"The walls meet at too sharp or too flat an angle\"],\"editor.toolHint.theWindowWaitingThereIsTaller.1tqwez4\":[\"The window waiting there is taller than this wall\"],\"editor.toolHint.threeOrMoreWallsMeetHere.rgifif\":[\"Three or more walls meet here\"],\"editor.toolHint.traceCeilingOutline.1b639wv\":[\"Trace ceiling outline\"],\"editor.toolHint.traceSlabOutline.z0j2lc\":[\"Trace slab outline\"],\"editor.toolHint.type.1m2zofh\":[\"Type\"],\"editor.toolHint.typeAwning.1cj59al\":[\"Type: Awning\"],\"editor.toolHint.typeBarn.sbnygq\":[\"Type: Barn\"],\"editor.toolHint.typeBay.1200hc1\":[\"Type: Bay\"],\"editor.toolHint.typeBow.14s2t9p\":[\"Type: Bow\"],\"editor.toolHint.typeCabinet.1r68je5\":[\"Type: Cabinet\"],\"editor.toolHint.typeCasement.176uo9j\":[\"Type: Casement\"],\"editor.toolHint.typeDouble.af7w4i\":[\"Type: Double\"],\"editor.toolHint.typeDoubleHung.t482fu\":[\"Type: Double Hung\"],\"editor.toolHint.typeFixed.v1cjez\":[\"Type: Fixed\"],\"editor.toolHint.typeFolding.sxxyng\":[\"Type: Folding\"],\"editor.toolHint.typeFrench.1y57z1b\":[\"Type: French\"],\"editor.toolHint.typeHinged.1xrcfju\":[\"Type: Hinged\"],\"editor.toolHint.typeIsland.ufr3ce\":[\"Type: Island\"],\"editor.toolHint.typeLouvered.oxl1cz\":[\"Type: Louvered\"],\"editor.toolHint.typePocket.hc65x9\":[\"Type: Pocket\"],\"editor.toolHint.typeSingleHung.p53pyl\":[\"Type: Single Hung\"],\"editor.toolHint.typeSliding.nwmr3f\":[\"Type: Sliding\"],\"editor.toolHint.verticalStackClickToPlace.ijcn4q\":[\"Vertical stack ↕, click to place\"],\"editor.toolHint.wasteVent.1hvi3vj\":[\"Waste / vent\"],\"editor.toolHint.windowStyleClickOrPressL.ah7qm9\":[\"Window style — click or press L to cycle\"],\"editor.toolHint.windowTypeClickOrPressO.wv4x35\":[\"Window type — click or press O to cycle\"],\"editor.views.plugins\":[\"Plugins\"],\"editor.views.view2d\":[\"2D\"],\"editor.views.view3d\":[\"3D\"],\"editor.views.viewBar.auto\":[\"Auto\"],\"editor.views.viewBar.browsePlugins\":[\"Browse plugins\"],\"editor.views.viewBar.closeLabel\":[\"Close \",[\"label\"]],\"editor.views.viewBar.closeSplit\":[\"Close split (\\\\)\"],\"editor.views.viewBar.ground\":[\"Ground\"],\"editor.views.viewBar.groundSolid\":[[\"standing\",\"select\",{\"partly\":[\"Partly below grade · ground solid\"],\"below\":[\"Below grade · ground solid\"],\"other\":[\"Ground solid\"]}]],\"editor.views.viewBar.groundVeiled\":[[\"standing\",\"select\",{\"partly\":[\"Partly below grade · ground veiled\"],\"below\":[\"Below grade · ground veiled\"],\"other\":[\"Ground veiled\"]}]],\"editor.views.viewBar.keepTheGroundSolid\":[\"Keep the ground solid\"],\"editor.views.viewBar.moreViews\":[\"More views\"],\"editor.views.viewBar.paneViews\":[\"Pane \",[\"pane\"],\" views\"],\"editor.views.viewBar.pinLabel\":[\"Pin \",[\"label\"]],\"editor.views.viewBar.pinToTheViewBar\":[\"Pin to the view bar\"],\"editor.views.viewBar.solid\":[\"Solid\"],\"editor.views.viewBar.split\":[\"Split (\\\\)\"],\"editor.views.viewBar.split2\":[\"Split\"],\"editor.views.viewBar.swapPanes\":[\"Swap panes\"],\"editor.views.viewBar.unpinFromTheViewBar\":[\"Unpin from the view bar\"],\"editor.views.viewBar.unpinLabel\":[\"Unpin \",[\"label\"]],\"editor.views.viewBar.veilTheGroundOverALevel\":[\"Veil the ground over a level below grade\"],\"editor.views.viewBar.views\":[\"Views\"],\"editor.youCanRetryTheSceneOr\":[\"You can retry the scene or return home without reloading the whole app shell.\"],\"node.block.description\":[\"A topology-backed solid edited directly in the canvas.\"],\"node.block.label\":[\"Block\"],\"node.boxVent.description\":[\"Small louvered exhaust vent that sits on a roof slope.\"],\"node.boxVent.label\":[\"Box Vent\"],\"node.building.description\":[\"A building container holding one or more levels.\"],\"node.building.label\":[\"Building\"],\"node.cabinet.description\":[\"A configurable parametric base cabinet.\"],\"node.cabinet.label\":[\"Modular Cabinet\"],\"node.cabinetModule.description\":[\"An editable module inside a modular cabinet run.\"],\"node.cabinetModule.label\":[\"Cabinet Module\"],\"node.ceiling.description\":[\"A polygon-bounded ceiling surface that hosts ceiling-mounted items.\"],\"node.ceiling.label\":[\"Ceiling\"],\"node.chimney.description\":[\"Vertical masonry stack on a roof segment.\"],\"node.chimney.label\":[\"Chimney\"],\"node.column.description\":[\"A parametric column with configurable cross-section, base, and capital.\"],\"node.column.label\":[\"Column\"],\"node.constructionDimension.description\":[\"Associative linear, curved, circular, angular, or coordinate plan dimension.\"],\"node.constructionDimension.label\":[\"Construction Dimension\"],\"node.cupola.description\":[\"Louvered roof lantern with a dome or pyramid cap and optional finial.\"],\"node.cupola.label\":[\"Cupola\"],\"node.door.description\":[\"A door cut into a wall. Animated open/close state.\"],\"node.door.label\":[\"Door\"],\"node.dormer.description\":[\"House-shaped protrusion on a roof segment.\"],\"node.dormer.label\":[\"Dormer\"],\"node.downspout.description\":[\"Vertical drop pipe from a gutter outlet to the ground.\"],\"node.downspout.label\":[\"Downspout\"],\"node.ductFitting.description\":[\"Elbow, tee, reducer, or square-to-round transition connecting duct runs.\"],\"node.ductFitting.label\":[\"Duct Fitting\"],\"node.ductSegment.description\":[\"HVAC duct run — polyline of round, rect, or flat-oval sections.\"],\"node.ductSegment.label\":[\"Duct\"],\"node.ductTerminal.description\":[\"Duct terminal — supply register, ceiling diffuser, or return grille. Duct runs end at its collar.\"],\"node.ductTerminal.label\":[\"Register\"],\"node.elevator.description\":[\"A multi-level elevator shaft with configurable openings per level.\"],\"node.elevator.label\":[\"Elevator\"],\"node.eyebrowVent.description\":[\"Low curved lens-shaped roof vent with a louvered front.\"],\"node.eyebrowVent.label\":[\"Eyebrow Vent\"],\"node.fence.description\":[\"A straight or curved fence segment with configurable posts and infill.\"],\"node.fence.label\":[\"Fence\"],\"node.fenceGate.description\":[\"A gate hosted by a fence.\"],\"node.fenceGate.label\":[\"Gate\"],\"node.fenceOpening.description\":[\"An intentional opening in a fence.\"],\"node.fenceOpening.label\":[\"Open Passage\"],\"node.floorOpening.label\":[\"Floor opening\"],\"node.guide.description\":[\"A measurement / reference annotation (linear, area, or arc).\"],\"node.guide.label\":[\"Guide\"],\"node.gutter.description\":[\"Rain-water channel running along the eave of a roof segment.\"],\"node.gutter.label\":[\"Gutter\"],\"node.hvacEquipment.description\":[\"Furnace, air handler, or condenser — duct runs connect to its supply/return collars.\"],\"node.hvacEquipment.label\":[\"HVAC Unit\"],\"node.importedMesh.description\":[\"Geometry preserved from an imported model when no native Pascal shape exists.\"],\"node.importedMesh.label\":[\"Imported Mesh\"],\"node.item.description\":[\"A catalog-backed item (furniture, fixtures, decorations).\"],\"node.item.label\":[\"Item\"],\"node.leanToExtension.description\":[\"An attached mono-pitch or freestanding mono, gable, or butterfly canopy with managed structure and drainage.\"],\"node.leanToExtension.label\":[\"Canopy\"],\"node.level.description\":[\"A single floor of a building, holding walls / slabs / ceilings / items.\"],\"node.level.label\":[\"Level\"],\"node.lineset.description\":[\"Refrigerant lineset — copper suction + liquid pair joining a condenser to the indoor coil.\"],\"node.lineset.label\":[\"Lineset\"],\"node.liquidLine.description\":[\"Standalone refrigerant liquid line — a thin bare-copper run; Follow mode traces an existing lineset.\"],\"node.liquidLine.label\":[\"Liquid Line\"],\"node.measurement.description\":[\"A persistent distance, angle, area, perimeter, or volume annotation.\"],\"node.measurement.label\":[\"Measurement\"],\"node.pipeFitting.description\":[\"DWV joint — elbow bend, 45° wye, or sanitary tee.\"],\"node.pipeFitting.label\":[\"Pipe Fitting\"],\"node.pipeSegment.description\":[\"Drain / waste / vent pipe run — draw level or toggle a ¼″ per foot fall with S.\"],\"node.pipeSegment.label\":[\"DWV Pipe\"],\"node.pipeTrap.description\":[\"DWV P-trap — water seal on the waste line. The trap arm runs to the vent.\"],\"node.pipeTrap.label\":[\"Trap\"],\"node.proceduralItem.description\":[\"Experimental editable recipe\"],\"node.proceduralItem.label\":[\"Procedural item\"],\"node.ridgeVent.description\":[\"Ventilation strip running along the ridge of a roof segment.\"],\"node.ridgeVent.label\":[\"Ridge Vent\"],\"node.roof.description\":[\"A pitched / hip / gable roof composed of one or more segments.\"],\"node.roof.label\":[\"Roof\"],\"node.roofSegment.description\":[\"A single pitched plane of a parent roof.\"],\"node.roofSegment.label\":[\"Roof Segment\"],\"node.scan.description\":[\"A captured session with optional mesh, motion, media, and sensor data.\"],\"node.scan.label\":[\"Capture\"],\"node.separator.label\":[\"Separator\"],\"node.shelf.description\":[\"A configurable shelving unit. Items host on each row.\"],\"node.shelf.label\":[\"Shelf\"],\"node.site.description\":[\"The top-level container holding buildings, zones, and the property boundary.\"],\"node.site.label\":[\"Site\"],\"node.skylight.description\":[\"Framed glass opening on a roof segment.\"],\"node.skylight.label\":[\"Skylight\"],\"node.slab.description\":[\"A polygon-bounded floor surface that hosts items on top.\"],\"node.slab.label\":[\"Slab\"],\"node.solarPanel.description\":[\"Grid of photovoltaic panels mounted on a roof segment.\"],\"node.solarPanel.label\":[\"Solar Panel\"],\"node.spawn.description\":[\"Player or camera origin within a level. One per level.\"],\"node.spawn.label\":[\"Spawn Point\"],\"node.stair.description\":[\"A stair composed of one or more flights with configurable treads, risers, railings.\"],\"node.stair.label\":[\"Stair\"],\"node.stairSegment.description\":[\"A single flight of a parent stair.\"],\"node.stairSegment.label\":[\"Stair Segment\"],\"node.structuralGrid.description\":[\"Persistent construction grid axis with identification bubbles.\"],\"node.structuralGrid.label\":[\"Structural Grid\"],\"node.turbineVent.description\":[\"Wind-driven spinning whirlybird exhaust vent for a roof slope.\"],\"node.turbineVent.label\":[\"Turbine Vent\"],\"node.unit.description\":[\"A named group of zones forming one apartment, hotel room or commercial lot.\"],\"node.unit.label\":[\"Unit\"],\"node.wall.description\":[\"A straight or curved wall segment. Hosts doors, windows, lean-to extensions, and wall-mounted items.\"],\"node.wall.label\":[\"Wall\"],\"node.window.description\":[\"A window cut into a wall. Animated open/close for opening windows.\"],\"node.window.label\":[\"Window\"],\"node.zone.description\":[\"A polygonal site zone (lawn, water, paving) with a TSL gradient material.\"],\"node.zone.label\":[\"Zone\"],\"viewer.camera.orbitLeft\":[\"Orbit left\"],\"viewer.camera.orbitRight\":[\"Orbit right\"],\"viewer.camera.topView\":[\"Top view\"],\"viewer.common.off\":[\"Off\"],\"viewer.common.on\":[\"On\"],\"viewer.display.camera\":[\"Camera\"],\"viewer.display.colored\":[\"Colored\"],\"viewer.display.colors\":[\"Colors\"],\"viewer.display.edges.off\":[\"Off\"],\"viewer.display.edges.offDetail\":[\"No edge lines\"],\"viewer.display.edges.soft\":[\"Soft\"],\"viewer.display.edges.softDetail\":[\"Faint outline of major creases\"],\"viewer.display.edges.strong\":[\"Strong\"],\"viewer.display.edges.strongDetail\":[\"Crisp, opaque edge lines\"],\"viewer.display.edges.title\":[\"Edges\"],\"viewer.display.monochrome\":[\"Monochrome\"],\"viewer.display.orthographic\":[\"Orthographic\"],\"viewer.display.perspective\":[\"Perspective\"],\"viewer.display.render.rendered\":[\"Rendered\"],\"viewer.display.render.renderedDetail\":[\"Full ambient occlusion\"],\"viewer.display.render.solid\":[\"Solid\"],\"viewer.display.render.solidDetail\":[\"Flat and fast — no ambient occlusion\"],\"viewer.display.render.title\":[\"Render\"],\"viewer.display.shadows\":[\"Shadows\"],\"viewer.display.title\":[\"Display settings\"],\"viewer.floorplan.alignNorth\":[\"Align view to north\"],\"viewer.floorplan.empty\":[\"No floor plans are available for this scene.\"],\"viewer.floorplan.fit\":[\"Fit floor plan\"],\"viewer.floorplan.floor\":[\"Floor\"],\"viewer.floorplan.floorPlan\":[\"Floor plan\"],\"viewer.floorplan.viewLabel\":[[\"floor\"],\" 2D view\"],\"viewer.floorplan.zoomIn\":[\"Zoom in\"],\"viewer.floorplan.zoomOut\":[\"Zoom out\"],\"viewer.header.back\":[\"Back\"],\"viewer.header.levels\":[\"Levels\"],\"viewer.header.rooms\":[\"Rooms\"],\"viewer.header.selection\":[\"Selection\"],\"viewer.header.units\":[\"Units\"],\"viewer.header.untitled\":[\"Untitled\"],\"viewer.header.zones\":[\"Zones\"],\"viewer.levels.exploded\":[\"Exploded\"],\"viewer.levels.label\":[\"Levels: \",[\"mode\"]],\"viewer.levels.manual\":[\"Manual\"],\"viewer.levels.solo\":[\"Solo\"],\"viewer.levels.stacked\":[\"Stacked\"],\"viewer.stage.layout\":[\"Viewer layout\"],\"viewer.stage.split\":[\"Split\"],\"viewer.theme.blueprint\":[\"Blueprint\"],\"viewer.theme.mediterranean\":[\"Mediterranean\"],\"viewer.theme.night\":[\"Night\"],\"viewer.theme.overcast\":[\"Overcast\"],\"viewer.theme.paper\":[\"Paper\"],\"viewer.theme.studio\":[\"Studio\"],\"viewer.theme.sunset\":[\"Sunset\"],\"viewer.theme.title\":[\"Scene theme\"],\"viewer.theme.twilight\":[\"Twilight\"],\"viewer.theme.verdant\":[\"Verdant\"],\"viewer.visibility.guides\":[\"Guides\"],\"viewer.visibility.scans\":[\"Scans\"],\"viewer.visibility.title\":[\"Visibility\"],\"viewer.walkthrough.label\":[\"Walkthrough: \",[\"state\"]],\"viewer.walls.cutaway\":[\"Cutaway\"],\"viewer.walls.fullHeight\":[\"Full height\"],\"viewer.walls.label\":[\"Walls: \",[\"mode\"]],\"viewer.walls.low\":[\"Low\"]}")as Messages; \ No newline at end of file diff --git a/packages/editor/src/i18n/locales/es/messages.po b/packages/editor/src/i18n/locales/es/messages.po index fcb3e01f18..2e7975166f 100644 --- a/packages/editor/src/i18n/locales/es/messages.po +++ b/packages/editor/src/i18n/locales/es/messages.po @@ -1083,6 +1083,96 @@ msgstr "Un agua" msgid "app.lib.buildTabState.wall" msgstr "Muro" +# Source-Hash: 8d17e7556ce142da +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Another session saved first — refresh?" +#: apps/editor/components/scene-loader.tsx +#, fuzzy +msgid "app.sceneLoader.anotherSessionSavedFirstRefresh" +msgstr "Otra sesión guardó primero: ¿actualizar?" + +# Source-Hash: 8f4b2028ad75465d +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Build" +#: apps/editor/components/scene-loader.tsx +#, fuzzy +msgid "app.sceneLoader.build" +msgstr "Construir" + +# Source-Hash: a2bd204e93e90598 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Dismiss" +#: apps/editor/components/scene-loader.tsx +#, fuzzy +msgid "app.sceneLoader.dismiss" +msgstr "Cerrar" + +# Source-Hash: daebc0755d239c99 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Items" +#: apps/editor/components/scene-loader.tsx +#, fuzzy +msgid "app.sceneLoader.items" +msgstr "Elementos" + +# Source-Hash: cf2e870fce0f2f51 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Paint" +#: apps/editor/components/scene-loader.tsx +#, fuzzy +msgid "app.sceneLoader.paint" +msgstr "Pintar" + +# Source-Hash: 854555777b69a4b1 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Reload" +#: apps/editor/components/scene-loader.tsx +#, fuzzy +msgid "app.sceneLoader.reload" +msgstr "Recargar" + +# Source-Hash: 8dc78e215a97d9fc +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Scene" +#: apps/editor/components/scene-loader.tsx +#, fuzzy +msgid "app.sceneLoader.scene" +msgstr "Escena" + +# Source-Hash: 83909f82446ee9c3 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Settings" +#: apps/editor/components/scene-loader.tsx +#, fuzzy +msgid "app.sceneLoader.settings" +msgstr "Ajustes" + +# Source-Hash: ee255fa26d076dcc +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Your changes haven't been saved. Reload to pick up the latest version." +#: apps/editor/components/scene-loader.tsx +#, fuzzy +msgid "app.sceneLoader.yourChangesHavenTBeenSaved" +msgstr "Tus cambios no se han guardado. Recarga para obtener la versión más reciente." + # Source-Hash: 703e1b4b9b715d3b # Review: required # AI-Provider: cursor-agent @@ -3063,6 +3153,256 @@ msgstr "{count, plural, one {# tramo} many {# tramos} other {# tramos}}" msgid "editor.floatingActionMenu.system" msgstr "Sistema" +# Source-Hash: f0e76aea883d4e48 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Add a floor under the roof" +#: packages/editor/src/components/ui/floating-level-selector.tsx +#, fuzzy +msgid "editor.floatingLevelSelector.addAFloorUnderTheRoof" +msgstr "Añadir una planta bajo la cubierta" + +# Source-Hash: a982ff9b075af829 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Add level above" +#: packages/editor/src/components/ui/floating-level-selector.tsx +#, fuzzy +msgid "editor.floatingLevelSelector.addLevelAbove" +msgstr "Añadir planta encima" + +# Source-Hash: 0db7d221df08fa6b +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Add level below" +#: packages/editor/src/components/ui/floating-level-selector.tsx +#, fuzzy +msgid "editor.floatingLevelSelector.addLevelBelow" +msgstr "Añadir planta debajo" + +# Source-Hash: c0774c185060fc13 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Cancel" +#: packages/editor/src/components/ui/floating-level-selector.tsx +#, fuzzy +msgid "editor.floatingLevelSelector.cancel" +msgstr "Cancelar" + +# Source-Hash: b26de372b4b0eaac +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Delete" +#: packages/editor/src/components/ui/floating-level-selector.tsx +#, fuzzy +msgid "editor.floatingLevelSelector.delete" +msgstr "Eliminar" + +# Source-Hash: 8e29375893d63408 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Delete level" +#: packages/editor/src/components/ui/floating-level-selector.tsx +#, fuzzy +msgid "editor.floatingLevelSelector.deleteLevel" +msgstr "Eliminar planta" + +# Source-Hash: c3bc69ec52022250 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Are you sure you want to delete {levelName}? All walls, floors, and objects on this level will be permanently removed." +#: packages/editor/src/components/ui/floating-level-selector.tsx +#, fuzzy +msgid "editor.floatingLevelSelector.deleteLevelConfirm" +msgstr "¿Seguro que quieres eliminar {levelName}? Todos los muros, forjados y objetos de esta planta se eliminarán de forma permanente." + +# Source-Hash: 5b2826ddac95cd0c +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Drag to reorder" +#: packages/editor/src/components/ui/floating-level-selector.tsx +#, fuzzy +msgid "editor.floatingLevelSelector.dragToReorder" +msgstr "Arrastra para reordenar" + +# Source-Hash: 933177338f5a03ed +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Duplicate level" +#: packages/editor/src/components/ui/floating-level-selector.tsx +#, fuzzy +msgid "editor.floatingLevelSelector.duplicateLevel" +msgstr "Duplicar planta" + +# Source-Hash: 9614c6825a7c67bf +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Duplicate with options..." +#: packages/editor/src/components/ui/floating-level-selector.tsx +#, fuzzy +msgid "editor.floatingLevelSelector.duplicateWithOptions" +msgstr "Duplicar con opciones..." + +# Source-Hash: 5ec91bb339806413 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Exit unit focus" +#: packages/editor/src/components/ui/floating-level-selector.tsx +#, fuzzy +msgid "editor.floatingLevelSelector.exitUnitFocus" +msgstr "Salir del enfoque de unidad" + +# Source-Hash: a88c3f8bed58b4fa +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Focused unit has zones here" +#: packages/editor/src/components/ui/floating-level-selector.tsx +#, fuzzy +msgid "editor.floatingLevelSelector.focusedUnitHasZonesHere" +msgstr "La unidad enfocada tiene zonas aquí" + +# Source-Hash: 655055a310fb5d13 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "The ground floor stands {distance} over grade. Seat the ground floor 8 in over grade" +#: packages/editor/src/components/ui/floating-level-selector.tsx +#, fuzzy +msgid "editor.floatingLevelSelector.groundFloorOverGrade" +msgstr "La planta baja está {distance} por encima de la rasante. Asentar la planta baja 8 in sobre la rasante" + +# Source-Hash: 77548faae4869eec +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "The ground floor stands {distance} under grade. Seat the ground floor 8 in over grade" +#: packages/editor/src/components/ui/floating-level-selector.tsx +#, fuzzy +msgid "editor.floatingLevelSelector.groundFloorUnderGrade" +msgstr "La planta baja está {distance} por debajo de la rasante. Asentar la planta baja 8 in sobre la rasante" + +# Source-Hash: e3763ae2dc62c03f +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Ground line: the levels under it are below grade" +#: packages/editor/src/components/ui/floating-level-selector.tsx +#, fuzzy +msgid "editor.floatingLevelSelector.groundLineTheLevelsUnderIt" +msgstr "Línea de rasante: las plantas inferiores quedan bajo rasante" + +# Source-Hash: e12035eb47cc61cc +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Ground · {offset}" +#: packages/editor/src/components/ui/floating-level-selector.tsx +#, fuzzy +msgid "editor.floatingLevelSelector.groundOffset" +msgstr "Rasante · {offset}" + +# Source-Hash: 5661c11383217661 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Insert level here" +#: packages/editor/src/components/ui/floating-level-selector.tsx +#, fuzzy +msgid "editor.floatingLevelSelector.insertLevelHere" +msgstr "Insertar planta aquí" + +# Source-Hash: 0215b36d5a08597a +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Level height" +#: packages/editor/src/components/ui/floating-level-selector.tsx +#, fuzzy +msgid "editor.floatingLevelSelector.levelHeight" +msgstr "Altura de planta" + +# Source-Hash: 91af436e81bb0875 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Paste copied selection" +#: packages/editor/src/components/ui/floating-level-selector.tsx +#, fuzzy +msgid "editor.floatingLevelSelector.pasteCopiedSelection" +msgstr "Pegar la selección copiada" + +# Source-Hash: 68bc52f53240cbec +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Reorder {levelName}" +#: packages/editor/src/components/ui/floating-level-selector.tsx +#, fuzzy +msgid "editor.floatingLevelSelector.reorderLevelname" +msgstr "Reordenar {levelName}" + +# Source-Hash: 625d53de72ebc2ef +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Seat the building so this floor stands at grade; the floors under it are below grade" +#: packages/editor/src/components/ui/floating-level-selector.tsx +#, fuzzy +msgid "editor.floatingLevelSelector.seatTheBuildingSoThisFloor" +msgstr "Asentar el edificio para que esta planta quede a nivel de rasante; las inferiores quedan bajo rasante" + +# Source-Hash: 7ac9c00895c30d76 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Set as ground floor" +#: packages/editor/src/components/ui/floating-level-selector.tsx +#, fuzzy +msgid "editor.floatingLevelSelector.setAsGroundFloor" +msgstr "Establecer como planta baja" + +# Source-Hash: d6b381247066a7aa +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "The ground level cannot be deleted" +#: packages/editor/src/components/ui/floating-level-selector.tsx +#, fuzzy +msgid "editor.floatingLevelSelector.theGroundLevelCannotBeDeleted" +msgstr "La planta baja no se puede eliminar" + +# Source-Hash: b1122051dce0d7a1 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "This floor stands at grade" +#: packages/editor/src/components/ui/floating-level-selector.tsx +#, fuzzy +msgid "editor.floatingLevelSelector.thisFloorStandsAtGrade" +msgstr "Esta planta está a nivel de rasante" + +# Source-Hash: 062cc0f1afef0c52 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Unit" +#: packages/editor/src/components/ui/floating-level-selector.tsx +#, fuzzy +msgid "editor.floatingLevelSelector.unit" +msgstr "Unidad" + # Source-Hash: c0774c185060fc13 # Review: required # AI-Provider: cursor-agent @@ -3773,142 +4113,447 @@ msgstr "Girar" msgid "editor.helpers.registeredToolHelper.guidedConstraintsBypassed" msgstr "Restricciones guiadas omitidas" -# Source-Hash: 395fd0821b203517 +# Source-Hash: 179b025e25f9a091 # Review: required # AI-Provider: cursor-agent # AI-Model: claude-opus -# English: "Add or remove objects from the selection" -#: packages/editor/src/lib/contextual-help.ts +# English: "Collapse" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#: packages/editor/src/components/ui/sidebar/panels/site-panel/tree-node.tsx #, fuzzy -msgid "editor.lib.contextualHelp.addOrRemoveObjectsFromThe" -msgstr "Añadir o quitar objetos de la selección" +msgid "editor.layers.collapse" +msgstr "Contraer" -# Source-Hash: 8428cb0af9c6d6a0 +# Source-Hash: dbeae4c43f49327f # Review: required # AI-Provider: cursor-agent # AI-Model: claude-opus -# English: "Adjust one side’s corner radius" -#: packages/editor/src/lib/contextual-help.ts +# English: "Ceiling ({area})" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/default-names.ts #, fuzzy -msgid "editor.lib.contextualHelp.adjustOneSideSCornerRadius" -msgstr "Ajustar el radio de esquina de un lado" +msgid "editor.layers.defaultName.ceiling" +msgstr "Techo ({area})" -# Source-Hash: d63b45c195713993 +# Source-Hash: d29165c9d4bfc3cb # Review: required # AI-Provider: cursor-agent # AI-Model: claude-opus -# English: "Clear the selection (or click outside)" -#: packages/editor/src/lib/contextual-help.ts +# English: "Collection" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/collection-tree-node.tsx #, fuzzy -msgid "editor.lib.contextualHelp.clearTheSelectionOrClickOutside" -msgstr "Borrar la selección (o hacer clic fuera)" +msgid "editor.layers.defaultName.collection" +msgstr "Colección" -# Source-Hash: 40b1afbeadbd6213 +# Source-Hash: 8f536b859be662a0 # Review: required # AI-Provider: cursor-agent # AI-Model: claude-opus -# English: "Click a handle dot to show move arrows" -#: packages/editor/src/lib/contextual-help.ts +# English: "Flight ({width}×{length}m)" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/default-names.ts #, fuzzy -msgid "editor.lib.contextualHelp.clickAHandleDotToShow" -msgstr "Haz clic en un punto de control para ver las flechas de movimiento" +msgid "editor.layers.defaultName.flight" +msgstr "Tramo ({width}×{length}m)" -# Source-Hash: 0b82a35c71549580 +# Source-Hash: 46dcbf4548374073 # Review: required # AI-Provider: cursor-agent # AI-Model: claude-opus -# English: "Click or drag the selection to move it as one" -#: packages/editor/src/lib/contextual-help.ts +# English: "Landing ({width}×{length}m)" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/default-names.ts #, fuzzy -msgid "editor.lib.contextualHelp.clickOrDragTheSelectionTo" -msgstr "Haz clic o arrastra la selección para moverla en bloque" +msgid "editor.layers.defaultName.landing" +msgstr "Descansillo ({width}×{length}m)" -# Source-Hash: 73a761f393f69cb9 +# Source-Hash: 3ea44453fcd08a6e # Review: required # AI-Provider: cursor-agent # AI-Model: claude-opus -# English: "Click the handle dot to show move + rotate handles" -#: packages/editor/src/lib/contextual-help.ts +# English: "Node" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/registry-tree-node.tsx #, fuzzy -msgid "editor.lib.contextualHelp.clickTheHandleDotToShow" -msgstr "Haz clic en el punto de control para ver los controles de mover y girar" +msgid "editor.layers.defaultName.node" +msgstr "Nodo" -# Source-Hash: c0045cef191fee69 +# Source-Hash: 93f3a04e15b6fb49 # Review: required # AI-Provider: cursor-agent # AI-Model: claude-opus -# English: "Detach the joint while dragging an arrow" -#: packages/editor/src/lib/contextual-help.ts +# English: "Roof ({count, plural, one {# segment} other {# segments}})" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/default-names.ts #, fuzzy -msgid "editor.lib.contextualHelp.detachTheJointWhileDraggingAn" -msgstr "Separar la unión al arrastrar una flecha" +msgid "editor.layers.defaultName.roof" +msgstr "Cubierta ({count, plural, one {# segmento} many {# segmentos} other {# segmentos}})" -# Source-Hash: a019c8948c104a9e +# Source-Hash: a730fab01c172704 # Review: required # AI-Provider: cursor-agent # AI-Model: claude-opus -# English: "Drag left or right to rotate selected object" -#: packages/editor/src/lib/contextual-help.ts +# English: "{roofType, select, hip {Hip} gable {Gable} shed {Shed} gambrel {Gambrel} dutch {Dutch} mansard {Mansard} flat {Flat} conical {Conical} barrel {Barrel} other {Roof}} ({width}×{depth}m)" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/default-names.ts #, fuzzy -msgid "editor.lib.contextualHelp.dragLeftOrRightToRotate" -msgstr "Arrastra a izquierda o derecha para girar el objeto seleccionado" +msgid "editor.layers.defaultName.roofSegment" +msgstr "{roofType, select, hip {A cuatro aguas} gable {A dos aguas} shed {A un agua} gambrel {Holandesa} dutch {Mixta} mansard {Mansarda} flat {Plana} conical {Cónica} barrel {Abovedada} other {Cubierta}} ({width}×{depth}m)" -# Source-Hash: 7db0364deb12f06e +# Source-Hash: 54efcb0756c2f2c1 # Review: required # AI-Provider: cursor-agent # AI-Model: claude-opus -# English: "Drag selected movable object" -#: packages/editor/src/lib/contextual-help.ts +# English: "Room ({area})" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/default-names.ts #, fuzzy -msgid "editor.lib.contextualHelp.dragSelectedMovableObject" -msgstr "Arrastrar el objeto móvil seleccionado" +msgid "editor.layers.defaultName.room" +msgstr "Estancia ({area})" -# Source-Hash: 0f258dd389afdc73 +# Source-Hash: e38a4b9986a9d21a # Review: required # AI-Provider: cursor-agent # AI-Model: claude-opus -# English: "Group selection (session only)" -#: packages/editor/src/lib/contextual-help.ts +# English: "Slab ({area})" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/default-names.ts #, fuzzy -msgid "editor.lib.contextualHelp.groupSelectionSessionOnly" -msgstr "Agrupar la selección (solo esta sesión)" +msgid "editor.layers.defaultName.slab" +msgstr "Forjado ({area})" -# Source-Hash: 85330d62893a45c3 +# Source-Hash: 57398365d4b9066f # Review: required # AI-Provider: cursor-agent # AI-Model: claude-opus -# English: "Hold to rotate freely" -#: packages/editor/src/lib/contextual-help.ts +# English: "Staircase ({count, plural, one {# segment} other {# segments}})" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/default-names.ts #, fuzzy -msgid "editor.lib.contextualHelp.holdToRotateFreely" -msgstr "Mantén pulsado para girar libremente" +msgid "editor.layers.defaultName.staircase" +msgstr "Escalera ({count, plural, one {# segmento} many {# segmentos} other {# segmentos}})" -# Source-Hash: 8a665ecaeffa9308 +# Source-Hash: a17f8fc29aae896e # Review: required # AI-Provider: cursor-agent # AI-Model: claude-opus -# English: "Rotate ±45°" -#: packages/editor/src/lib/contextual-help.ts +# English: "Zone ({area})" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/default-names.ts #, fuzzy -msgid "editor.lib.contextualHelp.rotate45" -msgstr "Girar ±45°" +msgid "editor.layers.defaultName.zone" +msgstr "Zona ({area})" -# Source-Hash: 6099ee99f8c38700 +# Source-Hash: 5cabcabb8bc14809 # Review: required # AI-Provider: cursor-agent # AI-Model: claude-opus -# English: "Rotate the selection ±45°" -#: packages/editor/src/lib/contextual-help.ts +# English: "Expand" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#: packages/editor/src/components/ui/sidebar/panels/site-panel/tree-node.tsx #, fuzzy -msgid "editor.lib.contextualHelp.rotateTheSelection45" -msgstr "Girar la selección ±45°" +msgid "editor.layers.expand" +msgstr "Expandir" -# Source-Hash: 0f6b418b18ff96f3 +# Source-Hash: 6731e9dd94e8b268 # Review: required # AI-Provider: cursor-agent # AI-Model: claude-opus -# English: "Rotating freely (no angle step)" -#: packages/editor/src/lib/contextual-help.ts +# English: "{levelName} options" +#: packages/editor/src/components/ui/floating-level-selector.tsx +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.layers.levelOptions" +msgstr "Opciones de {levelName}" + +# Source-Hash: d6952b4e54d246dd +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Rename" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/inline-rename-input.tsx +#, fuzzy +msgid "editor.layers.rename" +msgstr "Cambiar nombre" + +# Source-Hash: 21eafa019ad62fea +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "{role, select, room {Room colour} other {Zone colour}}" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#: packages/editor/src/components/ui/sidebar/panels/site-panel/zone-tree-node.tsx +#: packages/editor/src/components/ui/sidebar/panels/zone-panel/index.tsx +#, fuzzy +msgid "editor.layers.spaceColour" +msgstr "{role, select, room {Color de la estancia} other {Color de la zona}}" + +# Source-Hash: f5de042416a2c04f +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Unit colour" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/unit-tree-node.tsx +#, fuzzy +msgid "editor.layers.unitColour" +msgstr "Color de la unidad" + +# Source-Hash: c0774c185060fc13 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Cancel" +#: packages/editor/src/components/ui/level-duplicate-dialog.tsx +#, fuzzy +msgid "editor.levelDuplicateDialog.cancel" +msgstr "Cancelar" + +# Source-Hash: 07c11e7e4d4681d6 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Choose what to copy from {levelName}." +#: packages/editor/src/components/ui/level-duplicate-dialog.tsx +#, fuzzy +msgid "editor.levelDuplicateDialog.chooseWhatToCopyFromLevel" +msgstr "Elige qué copiar de {levelName}." + +# Source-Hash: 9500d4378a319532 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Choose what to copy from this level." +#: packages/editor/src/components/ui/level-duplicate-dialog.tsx +#, fuzzy +msgid "editor.levelDuplicateDialog.chooseWhatToCopyFromThisLevel" +msgstr "Elige qué copiar de esta planta." + +# Source-Hash: 34dc96fe77a31e51 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Duplicate" +#: packages/editor/src/components/ui/level-duplicate-dialog.tsx +#, fuzzy +msgid "editor.levelDuplicateDialog.duplicate" +msgstr "Duplicar" + +# Source-Hash: a56e3eb43e60b45c +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Duplicate Level" +#: packages/editor/src/components/ui/level-duplicate-dialog.tsx +#, fuzzy +msgid "editor.levelDuplicateDialog.duplicateLevel" +msgstr "Duplicar planta" + +# Source-Hash: e4c6ab1ea473a082 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Everything" +#: packages/editor/src/components/ui/level-duplicate-dialog.tsx +#, fuzzy +msgid "editor.levelDuplicateDialog.everything" +msgstr "Todo" + +# Source-Hash: ac3f119e560388ab +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Structure, finishes, and placed items, without guide references." +#: packages/editor/src/components/ui/level-duplicate-dialog.tsx +#, fuzzy +msgid "editor.levelDuplicateDialog.structureFinishesAndPlacedItemsWithout" +msgstr "Estructura, acabados y elementos colocados, sin referencias de guía." + +# Source-Hash: acbdf968391d5273 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Structure + furniture" +#: packages/editor/src/components/ui/level-duplicate-dialog.tsx +#, fuzzy +msgid "editor.levelDuplicateDialog.structureFurniture" +msgstr "Estructura + mobiliario" + +# Source-Hash: ce682864a140fe75 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Structure + materials" +#: packages/editor/src/components/ui/level-duplicate-dialog.tsx +#, fuzzy +msgid "editor.levelDuplicateDialog.structureMaterials" +msgstr "Estructura + materiales" + +# Source-Hash: 5ee44d53847c5ea2 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Structure, materials, furniture, and references." +#: packages/editor/src/components/ui/level-duplicate-dialog.tsx +#, fuzzy +msgid "editor.levelDuplicateDialog.structureMaterialsFurnitureAndReferences" +msgstr "Estructura, materiales, mobiliario y referencias." + +# Source-Hash: 95aa1b43dbdb3f02 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Structure only" +#: packages/editor/src/components/ui/level-duplicate-dialog.tsx +#, fuzzy +msgid "editor.levelDuplicateDialog.structureOnly" +msgstr "Solo estructura" + +# Source-Hash: 2c53b46c9ca9fe2f +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Structure with the current material and finish assignments." +#: packages/editor/src/components/ui/level-duplicate-dialog.tsx +#, fuzzy +msgid "editor.levelDuplicateDialog.structureWithTheCurrentMaterialAnd" +msgstr "Estructura con las asignaciones actuales de materiales y acabados." + +# Source-Hash: 3350e9008eaba15d +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Walls, slabs, roofs, stairs, windows, and doors without finishes." +#: packages/editor/src/components/ui/level-duplicate-dialog.tsx +#, fuzzy +msgid "editor.levelDuplicateDialog.wallsSlabsRoofsStairsWindowsAnd" +msgstr "Muros, forjados, cubiertas, escaleras, ventanas y puertas, sin acabados." + +# Source-Hash: 395fd0821b203517 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Add or remove objects from the selection" +#: packages/editor/src/lib/contextual-help.ts +#, fuzzy +msgid "editor.lib.contextualHelp.addOrRemoveObjectsFromThe" +msgstr "Añadir o quitar objetos de la selección" + +# Source-Hash: 8428cb0af9c6d6a0 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Adjust one side’s corner radius" +#: packages/editor/src/lib/contextual-help.ts +#, fuzzy +msgid "editor.lib.contextualHelp.adjustOneSideSCornerRadius" +msgstr "Ajustar el radio de esquina de un lado" + +# Source-Hash: d63b45c195713993 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Clear the selection (or click outside)" +#: packages/editor/src/lib/contextual-help.ts +#, fuzzy +msgid "editor.lib.contextualHelp.clearTheSelectionOrClickOutside" +msgstr "Borrar la selección (o hacer clic fuera)" + +# Source-Hash: 40b1afbeadbd6213 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Click a handle dot to show move arrows" +#: packages/editor/src/lib/contextual-help.ts +#, fuzzy +msgid "editor.lib.contextualHelp.clickAHandleDotToShow" +msgstr "Haz clic en un punto de control para ver las flechas de movimiento" + +# Source-Hash: 0b82a35c71549580 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Click or drag the selection to move it as one" +#: packages/editor/src/lib/contextual-help.ts +#, fuzzy +msgid "editor.lib.contextualHelp.clickOrDragTheSelectionTo" +msgstr "Haz clic o arrastra la selección para moverla en bloque" + +# Source-Hash: 73a761f393f69cb9 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Click the handle dot to show move + rotate handles" +#: packages/editor/src/lib/contextual-help.ts +#, fuzzy +msgid "editor.lib.contextualHelp.clickTheHandleDotToShow" +msgstr "Haz clic en el punto de control para ver los controles de mover y girar" + +# Source-Hash: c0045cef191fee69 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Detach the joint while dragging an arrow" +#: packages/editor/src/lib/contextual-help.ts +#, fuzzy +msgid "editor.lib.contextualHelp.detachTheJointWhileDraggingAn" +msgstr "Separar la unión al arrastrar una flecha" + +# Source-Hash: a019c8948c104a9e +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Drag left or right to rotate selected object" +#: packages/editor/src/lib/contextual-help.ts +#, fuzzy +msgid "editor.lib.contextualHelp.dragLeftOrRightToRotate" +msgstr "Arrastra a izquierda o derecha para girar el objeto seleccionado" + +# Source-Hash: 7db0364deb12f06e +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Drag selected movable object" +#: packages/editor/src/lib/contextual-help.ts +#, fuzzy +msgid "editor.lib.contextualHelp.dragSelectedMovableObject" +msgstr "Arrastrar el objeto móvil seleccionado" + +# Source-Hash: 0f258dd389afdc73 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Group selection (session only)" +#: packages/editor/src/lib/contextual-help.ts +#, fuzzy +msgid "editor.lib.contextualHelp.groupSelectionSessionOnly" +msgstr "Agrupar la selección (solo esta sesión)" + +# Source-Hash: 85330d62893a45c3 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Hold to rotate freely" +#: packages/editor/src/lib/contextual-help.ts +#, fuzzy +msgid "editor.lib.contextualHelp.holdToRotateFreely" +msgstr "Mantén pulsado para girar libremente" + +# Source-Hash: 8a665ecaeffa9308 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Rotate ±45°" +#: packages/editor/src/lib/contextual-help.ts +#, fuzzy +msgid "editor.lib.contextualHelp.rotate45" +msgstr "Girar ±45°" + +# Source-Hash: 6099ee99f8c38700 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Rotate the selection ±45°" +#: packages/editor/src/lib/contextual-help.ts +#, fuzzy +msgid "editor.lib.contextualHelp.rotateTheSelection45" +msgstr "Girar la selección ±45°" + +# Source-Hash: 0f6b418b18ff96f3 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Rotating freely (no angle step)" +#: packages/editor/src/lib/contextual-help.ts #, fuzzy msgid "editor.lib.contextualHelp.rotatingFreely" msgstr "Giro libre (sin pasos de ángulo)" @@ -4323,6 +4968,886 @@ msgstr "Muros" msgid "editor.reloadEditor" msgstr "Recargar el editor" +# Source-Hash: 83909f82446ee9c3 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Settings" +#: packages/editor/src/components/ui/sidebar/icon-rail.tsx +#, fuzzy +msgid "editor.sidebar.iconRail.settings" +msgstr "Ajustes" + +# Source-Hash: 91f90818d42a984e +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Site" +#: packages/editor/src/components/ui/sidebar/icon-rail.tsx +#, fuzzy +msgid "editor.sidebar.iconRail.site" +msgstr "Parcela" + +# Source-Hash: 663175a9c461a96d +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "All" +#: packages/editor/src/components/ui/sidebar/panels/items-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.itemsPanel.all" +msgstr "Todo" + +# Source-Hash: fce9814c289e6b71 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Community" +#: packages/editor/src/components/ui/sidebar/panels/items-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.itemsPanel.community" +msgstr "Comunidad" + +# Source-Hash: 663175a9c461a96d +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "All" +#: packages/editor/src/components/ui/sidebar/panels/items-panel/function-tree-panel.tsx +#, fuzzy +msgid "editor.sidebar.panels.itemsPanel.functionTreePanel.all" +msgstr "Todo" + +# Source-Hash: fce9814c289e6b71 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Community" +#: packages/editor/src/components/ui/sidebar/panels/items-panel/function-tree-panel.tsx +#, fuzzy +msgid "editor.sidebar.panels.itemsPanel.functionTreePanel.community" +msgstr "Comunidad" + +# Source-Hash: 8d211c78417ed1b0 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Library" +#: packages/editor/src/components/ui/sidebar/panels/items-panel/function-tree-panel.tsx +#, fuzzy +msgid "editor.sidebar.panels.itemsPanel.functionTreePanel.library" +msgstr "Biblioteca" + +# Source-Hash: a0b7adfdfdec7307 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Mine" +#: packages/editor/src/components/ui/sidebar/panels/items-panel/function-tree-panel.tsx +#, fuzzy +msgid "editor.sidebar.panels.itemsPanel.functionTreePanel.mine" +msgstr "Míos" + +# Source-Hash: 6024b7778b392ec3 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "No results for “{search}”" +#: packages/editor/src/components/ui/sidebar/panels/items-panel/function-tree-panel.tsx +#, fuzzy +msgid "editor.sidebar.panels.itemsPanel.functionTreePanel.noResultsForSearch" +msgstr "No hay resultados para “{search}”" + +# Source-Hash: 4ceb6dcb7827db7f +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Search..." +#: packages/editor/src/components/ui/sidebar/panels/items-panel/function-tree-panel.tsx +#, fuzzy +msgid "editor.sidebar.panels.itemsPanel.functionTreePanel.search" +msgstr "Buscar..." + +# Source-Hash: 8d211c78417ed1b0 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Library" +#: packages/editor/src/components/ui/sidebar/panels/items-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.itemsPanel.library" +msgstr "Biblioteca" + +# Source-Hash: a0b7adfdfdec7307 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Mine" +#: packages/editor/src/components/ui/sidebar/panels/items-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.itemsPanel.mine" +msgstr "Míos" + +# Source-Hash: 6024b7778b392ec3 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "No results for “{search}”" +#: packages/editor/src/components/ui/sidebar/panels/items-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.itemsPanel.noResultsForSearch" +msgstr "No hay resultados para “{search}”" + +# Source-Hash: 4ceb6dcb7827db7f +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Search..." +#: packages/editor/src/components/ui/sidebar/panels/items-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.itemsPanel.search" +msgstr "Buscar..." + +# Source-Hash: 3c67cde0578ac829 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Add level" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.addLevel" +msgstr "Añadir planta" + +# Source-Hash: 9a56d90d461b4bca +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Add point" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.addPoint" +msgstr "Añadir punto" + +# Source-Hash: fedccec504a9ae33 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Area:" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.area" +msgstr "Área:" + +# Source-Hash: 87b6880f6de7a45a +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Base elevation" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.baseElevation" +msgstr "Cota base" + +# Source-Hash: d42f7d29e3fc4af7 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Building" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.building" +msgstr "Edificio" + +# Source-Hash: 7c90f458259d5cd8 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Add new level" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/building-tree-node.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.buildingTreeNode.addNewLevel" +msgstr "Añadir nueva planta" + +# Source-Hash: d42f7d29e3fc4af7 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Building" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/building-tree-node.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.buildingTreeNode.building" +msgstr "Edificio" + +# Source-Hash: bbc65c039ae86e11 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Camera snapshot" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.cameraSnapshot" +msgstr "Instantánea de cámara" + +# Source-Hash: 3a0701ebcb9f26cb +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Capture" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.capture" +msgstr "Captura" + +# Source-Hash: 71f2343818c55e0c +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Clear selection" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.clearSelection" +msgstr "Borrar selección" + +# Source-Hash: 67d29724469fa8d3 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Clear snapshot" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.clearSnapshot" +msgstr "Borrar instantánea" + +# Source-Hash: def517c77fda49ea +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Close walls around a space to make a room." +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.closeWallsAroundASpaceTo" +msgstr "Cierra muros alrededor de un espacio para crear una estancia." + +# Source-Hash: 2b9af8da4b34cbfa +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Collection colour" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/collection-tree-node.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.collectionTreeNode.collectionColour" +msgstr "Color de la colección" + +# Source-Hash: 135af27a14a4cda7 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Collections" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/collection-tree-node.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.collectionTreeNode.collections" +msgstr "Colecciones" + +# Source-Hash: 6f4751c26f12aef9 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Delete collection" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/collection-tree-node.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.collectionTreeNode.deleteCollection" +msgstr "Eliminar colección" + +# Source-Hash: b26de372b4b0eaac +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Delete" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.delete" +msgstr "Eliminar" + +# Source-Hash: 8e29375893d63408 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Delete level" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.deleteLevel" +msgstr "Eliminar planta" + +# Source-Hash: 6552e45eecc0a227 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Draw a zone" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.drawAZone" +msgstr "Dibujar una zona" + +# Source-Hash: 34dc96fe77a31e51 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Duplicate" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.duplicate" +msgstr "Duplicar" + +# Source-Hash: 933177338f5a03ed +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Duplicate level" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.duplicateLevel" +msgstr "Duplicar planta" + +# Source-Hash: c038947f317cabba +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Duplicate level with options" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.duplicateLevelWithOptions" +msgstr "Duplicar planta con opciones" + +# Source-Hash: 9614c6825a7c67bf +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Duplicate with options..." +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.duplicateWithOptions" +msgstr "Duplicar con opciones..." + +# Source-Hash: 7c4196b9e791c195 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Elements" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.elements" +msgstr "Elementos" + +# Source-Hash: 1344ea2602e3aa9e +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Guide" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.guide" +msgstr "Guía" + +# Source-Hash: 591087ea83a48ead +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Hide" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.hide" +msgstr "Ocultar" + +# Source-Hash: 0608743fc1736d86 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Level" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.level" +msgstr "Planta" + +# Source-Hash: 13b3e6a6afe319d1 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "New unit" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.newUnit" +msgstr "Nueva unidad" + +# Source-Hash: 0192748d50f0e5f7 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "No buildings yet" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.noBuildingsYet" +msgstr "Aún no hay edificios" + +# Source-Hash: 1be310702a12e433 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "No elements on this level" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.noElementsOnThisLevel" +msgstr "No hay elementos en esta planta" + +# Source-Hash: 0956af88ced36992 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "No levels yet" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.noLevelsYet" +msgstr "Aún no hay plantas" + +# Source-Hash: 45c41bfb2ae19627 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "{count, plural, one {# object selected} other {# objects selected}}" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.objectsSelected" +msgstr "{count, plural, one {# objeto seleccionado} many {# objetos seleccionados} other {# objetos seleccionados}}" + +# Source-Hash: a5434e26e5cb1b26 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Other zones" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.otherZones" +msgstr "Otras zonas" + +# Source-Hash: 2aa38d84079d4dba +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Perimeter:" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.perimeter" +msgstr "Perímetro:" + +# Source-Hash: 4004b9a8e4f8c9d0 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Property Line" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.propertyLine" +msgstr "Lindero" + +# Source-Hash: 3e7408ed44676176 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Rooms" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.rooms" +msgstr "Estancias" + +# Source-Hash: ca39c0581c7318e6 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Select a level to view content" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.selectALevelToViewContent" +msgstr "Selecciona una planta para ver su contenido" + +# Source-Hash: 827e0c6ac9936b69 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Show" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.show" +msgstr "Mostrar" + +# Source-Hash: 91f90818d42a984e +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Site" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.site" +msgstr "Parcela" + +# Source-Hash: c40163620df24a76 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Take snapshot" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.takeSnapshot" +msgstr "Tomar instantánea" + +# Source-Hash: d6b381247066a7aa +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "The ground level cannot be deleted" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.theGroundLevelCannotBeDeleted" +msgstr "La planta baja no se puede eliminar" + +# Source-Hash: bbc65c039ae86e11 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Camera snapshot" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/tree-node-actions.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.treeNodeActions.cameraSnapshot" +msgstr "Instantánea de cámara" + +# Source-Hash: 67d29724469fa8d3 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Clear snapshot" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/tree-node-actions.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.treeNodeActions.clearSnapshot" +msgstr "Borrar instantánea" + +# Source-Hash: 591087ea83a48ead +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Hide" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/tree-node-actions.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.treeNodeActions.hide" +msgstr "Ocultar" + +# Source-Hash: 827e0c6ac9936b69 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Show" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/tree-node-actions.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.treeNodeActions.show" +msgstr "Mostrar" + +# Source-Hash: c40163620df24a76 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Take snapshot" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/tree-node-actions.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.treeNodeActions.takeSnapshot" +msgstr "Tomar instantánea" + +# Source-Hash: faecab10b69d4863 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Update snapshot" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/tree-node-actions.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.treeNodeActions.updateSnapshot" +msgstr "Actualizar instantánea" + +# Source-Hash: 8a1fd8827a68f236 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "View snapshot" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/tree-node-actions.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.treeNodeActions.viewSnapshot" +msgstr "Ver instantánea" + +# Source-Hash: b404dded35241274 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Units" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.units" +msgstr "Unidades" + +# Source-Hash: 149fec3fd1f08042 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Delete unit" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/unit-tree-node.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.unitTreeNode.deleteUnit" +msgstr "Eliminar unidad" + +# Source-Hash: 930399d3fb247a7c +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Focused" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/unit-tree-node.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.unitTreeNode.focused" +msgstr "Enfocada" + +# Source-Hash: 41ac9dd23bb558d7 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Remove from unit" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/unit-tree-node.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.unitTreeNode.removeFromUnit" +msgstr "Quitar de la unidad" + +# Source-Hash: 612dcd5bf06a79c4 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Room" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/unit-tree-node.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.unitTreeNode.room" +msgstr "Estancia" + +# Source-Hash: a107b4d76d6972e3 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Zone" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/unit-tree-node.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.unitTreeNode.zone" +msgstr "Zona" + +# Source-Hash: faecab10b69d4863 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Update snapshot" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.updateSnapshot" +msgstr "Actualizar instantánea" + +# Source-Hash: 28a12e6806c091b0 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "{assetType, select, guide {Uploading guide... {progress}%} other {Uploading scan... {progress}%}}" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.uploadingProgress" +msgstr "{assetType, select, guide {Subiendo guía... {progress}%} other {Subiendo escaneo 3D... {progress}%}}" + +# Source-Hash: de389a2a46d53384 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Upload scan/floorplan" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.uploadScanFloorplan" +msgstr "Subir escaneo 3D o plano" + +# Source-Hash: 8a1fd8827a68f236 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "View snapshot" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.viewSnapshot" +msgstr "Ver instantánea" + +# Source-Hash: ba9f809cb032ee57 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "In {unitName}" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/zone-membership-checkbox.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.zoneMembershipCheckbox.inUnitname" +msgstr "En {unitName}" + +# Source-Hash: aa6d82bdb3cc1d9a +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Actions" +#: packages/editor/src/components/ui/sidebar/panels/zone-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.zonePanel.actions" +msgstr "Acciones" + +# Source-Hash: fcc43f22937d1536 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Add one" +#: packages/editor/src/components/ui/sidebar/panels/zone-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.zonePanel.addOne" +msgstr "Añadir una" + +# Source-Hash: bbc65c039ae86e11 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Camera snapshot" +#: packages/editor/src/components/ui/sidebar/panels/zone-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.zonePanel.cameraSnapshot" +msgstr "Instantánea de cámara" + +# Source-Hash: 67d29724469fa8d3 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Clear snapshot" +#: packages/editor/src/components/ui/sidebar/panels/zone-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.zonePanel.clearSnapshot" +msgstr "Borrar instantánea" + +# Source-Hash: b26de372b4b0eaac +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Delete" +#: packages/editor/src/components/ui/sidebar/panels/zone-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.zonePanel.delete" +msgstr "Eliminar" + +# Source-Hash: e2411929697b7ed4 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Delete with contents" +#: packages/editor/src/components/ui/sidebar/panels/zone-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.zonePanel.deleteWithContents" +msgstr "Eliminar con el contenido" + +# Source-Hash: 22ca3935e8754072 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "No zones on this level." +#: packages/editor/src/components/ui/sidebar/panels/zone-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.zonePanel.noZonesOnThisLevel" +msgstr "No hay zonas en esta planta." + +# Source-Hash: 941ea30f406dcfa2 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Save to catalog" +#: packages/editor/src/components/ui/sidebar/panels/zone-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.zonePanel.saveToCatalog" +msgstr "Guardar en el catálogo" + +# Source-Hash: 98662dfb371cac13 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Select a level to view and create zones" +#: packages/editor/src/components/ui/sidebar/panels/zone-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.zonePanel.selectALevelToViewAnd" +msgstr "Selecciona una planta para ver y crear zonas" + +# Source-Hash: c40163620df24a76 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Take snapshot" +#: packages/editor/src/components/ui/sidebar/panels/zone-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.zonePanel.takeSnapshot" +msgstr "Tomar instantánea" + +# Source-Hash: faecab10b69d4863 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Update snapshot" +#: packages/editor/src/components/ui/sidebar/panels/zone-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.zonePanel.updateSnapshot" +msgstr "Actualizar instantánea" + +# Source-Hash: 8a1fd8827a68f236 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "View snapshot" +#: packages/editor/src/components/ui/sidebar/panels/zone-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.zonePanel.viewSnapshot" +msgstr "Ver instantánea" + +# Source-Hash: 58b05af5b5724efb +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "\"{label}\" plugin crashed" +#: packages/editor/src/components/ui/sidebar/use-plugin-panels.tsx +#, fuzzy +msgid "editor.sidebar.usePluginPanels.labelPluginCrashed" +msgstr "El plugin “{label}” se ha bloqueado" + +# Source-Hash: 9e84d6d7b9885c4f +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Loading…" +#: packages/editor/src/components/ui/sidebar/use-plugin-panels.tsx +#, fuzzy +msgid "editor.sidebar.usePluginPanels.loading" +msgstr "Cargando…" + +# Source-Hash: 9fc7a39bc32f287a +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Plugins" +#: packages/editor/src/components/ui/sidebar/use-plugin-panels.tsx +#, fuzzy +msgid "editor.sidebar.usePluginPanels.plugins" +msgstr "Complementos" + +# Source-Hash: c6312309378aaaea +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "This panel hit an error and was unloaded for this session. The rest of the editor is unaffected — reload to try again." +#: packages/editor/src/components/ui/sidebar/use-plugin-panels.tsx +#, fuzzy +msgid "editor.sidebar.usePluginPanels.thisPanelHitAnErrorAnd" +msgstr "Este panel ha tenido un error y se ha descargado durante esta sesión. El resto del editor no se ve afectado: recarga para volver a intentarlo." + # Source-Hash: 834de1a7027c4da1 # Review: required # AI-Provider: cursor-agent diff --git a/packages/editor/src/i18n/locales/fr/messages.po b/packages/editor/src/i18n/locales/fr/messages.po index e38d9b018b..70c5ffe5f7 100644 --- a/packages/editor/src/i18n/locales/fr/messages.po +++ b/packages/editor/src/i18n/locales/fr/messages.po @@ -1083,6 +1083,96 @@ msgstr "Appentis" msgid "app.lib.buildTabState.wall" msgstr "Mur" +# Source-Hash: 8d17e7556ce142da +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Another session saved first — refresh?" +#: apps/editor/components/scene-loader.tsx +#, fuzzy +msgid "app.sceneLoader.anotherSessionSavedFirstRefresh" +msgstr "Une autre session a enregistré en premier — actualiser ?" + +# Source-Hash: 8f4b2028ad75465d +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Build" +#: apps/editor/components/scene-loader.tsx +#, fuzzy +msgid "app.sceneLoader.build" +msgstr "Construire" + +# Source-Hash: a2bd204e93e90598 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Dismiss" +#: apps/editor/components/scene-loader.tsx +#, fuzzy +msgid "app.sceneLoader.dismiss" +msgstr "Fermer" + +# Source-Hash: daebc0755d239c99 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Items" +#: apps/editor/components/scene-loader.tsx +#, fuzzy +msgid "app.sceneLoader.items" +msgstr "Objets" + +# Source-Hash: cf2e870fce0f2f51 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Paint" +#: apps/editor/components/scene-loader.tsx +#, fuzzy +msgid "app.sceneLoader.paint" +msgstr "Peindre" + +# Source-Hash: 854555777b69a4b1 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Reload" +#: apps/editor/components/scene-loader.tsx +#, fuzzy +msgid "app.sceneLoader.reload" +msgstr "Recharger" + +# Source-Hash: 8dc78e215a97d9fc +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Scene" +#: apps/editor/components/scene-loader.tsx +#, fuzzy +msgid "app.sceneLoader.scene" +msgstr "Scène" + +# Source-Hash: 83909f82446ee9c3 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Settings" +#: apps/editor/components/scene-loader.tsx +#, fuzzy +msgid "app.sceneLoader.settings" +msgstr "Paramètres" + +# Source-Hash: ee255fa26d076dcc +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Your changes haven't been saved. Reload to pick up the latest version." +#: apps/editor/components/scene-loader.tsx +#, fuzzy +msgid "app.sceneLoader.yourChangesHavenTBeenSaved" +msgstr "Vos modifications n’ont pas été enregistrées. Rechargez pour récupérer la dernière version." + # Source-Hash: 703e1b4b9b715d3b # Review: required # AI-Provider: cursor-agent @@ -3063,6 +3153,256 @@ msgstr "{count, plural, one {# tronçon} many {# tronçons} other {# tronçons}} msgid "editor.floatingActionMenu.system" msgstr "Système" +# Source-Hash: f0e76aea883d4e48 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Add a floor under the roof" +#: packages/editor/src/components/ui/floating-level-selector.tsx +#, fuzzy +msgid "editor.floatingLevelSelector.addAFloorUnderTheRoof" +msgstr "Ajouter un niveau sous le toit" + +# Source-Hash: a982ff9b075af829 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Add level above" +#: packages/editor/src/components/ui/floating-level-selector.tsx +#, fuzzy +msgid "editor.floatingLevelSelector.addLevelAbove" +msgstr "Ajouter un niveau au-dessus" + +# Source-Hash: 0db7d221df08fa6b +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Add level below" +#: packages/editor/src/components/ui/floating-level-selector.tsx +#, fuzzy +msgid "editor.floatingLevelSelector.addLevelBelow" +msgstr "Ajouter un niveau en dessous" + +# Source-Hash: c0774c185060fc13 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Cancel" +#: packages/editor/src/components/ui/floating-level-selector.tsx +#, fuzzy +msgid "editor.floatingLevelSelector.cancel" +msgstr "Annuler" + +# Source-Hash: b26de372b4b0eaac +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Delete" +#: packages/editor/src/components/ui/floating-level-selector.tsx +#, fuzzy +msgid "editor.floatingLevelSelector.delete" +msgstr "Supprimer" + +# Source-Hash: 8e29375893d63408 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Delete level" +#: packages/editor/src/components/ui/floating-level-selector.tsx +#, fuzzy +msgid "editor.floatingLevelSelector.deleteLevel" +msgstr "Supprimer le niveau" + +# Source-Hash: c3bc69ec52022250 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Are you sure you want to delete {levelName}? All walls, floors, and objects on this level will be permanently removed." +#: packages/editor/src/components/ui/floating-level-selector.tsx +#, fuzzy +msgid "editor.floatingLevelSelector.deleteLevelConfirm" +msgstr "Voulez-vous vraiment supprimer {levelName} ? Tous les murs, planchers et objets de ce niveau seront définitivement supprimés." + +# Source-Hash: 5b2826ddac95cd0c +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Drag to reorder" +#: packages/editor/src/components/ui/floating-level-selector.tsx +#, fuzzy +msgid "editor.floatingLevelSelector.dragToReorder" +msgstr "Faire glisser pour réorganiser" + +# Source-Hash: 933177338f5a03ed +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Duplicate level" +#: packages/editor/src/components/ui/floating-level-selector.tsx +#, fuzzy +msgid "editor.floatingLevelSelector.duplicateLevel" +msgstr "Dupliquer le niveau" + +# Source-Hash: 9614c6825a7c67bf +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Duplicate with options..." +#: packages/editor/src/components/ui/floating-level-selector.tsx +#, fuzzy +msgid "editor.floatingLevelSelector.duplicateWithOptions" +msgstr "Dupliquer avec options..." + +# Source-Hash: 5ec91bb339806413 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Exit unit focus" +#: packages/editor/src/components/ui/floating-level-selector.tsx +#, fuzzy +msgid "editor.floatingLevelSelector.exitUnitFocus" +msgstr "Quitter le focus sur le logement" + +# Source-Hash: a88c3f8bed58b4fa +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Focused unit has zones here" +#: packages/editor/src/components/ui/floating-level-selector.tsx +#, fuzzy +msgid "editor.floatingLevelSelector.focusedUnitHasZonesHere" +msgstr "Le logement ciblé a des zones ici" + +# Source-Hash: 655055a310fb5d13 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "The ground floor stands {distance} over grade. Seat the ground floor 8 in over grade" +#: packages/editor/src/components/ui/floating-level-selector.tsx +#, fuzzy +msgid "editor.floatingLevelSelector.groundFloorOverGrade" +msgstr "Le rez-de-chaussée est {distance} au-dessus du sol. Placer le rez-de-chaussée à 8 in au-dessus du sol" + +# Source-Hash: 77548faae4869eec +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "The ground floor stands {distance} under grade. Seat the ground floor 8 in over grade" +#: packages/editor/src/components/ui/floating-level-selector.tsx +#, fuzzy +msgid "editor.floatingLevelSelector.groundFloorUnderGrade" +msgstr "Le rez-de-chaussée est {distance} sous le sol. Placer le rez-de-chaussée à 8 in au-dessus du sol" + +# Source-Hash: e3763ae2dc62c03f +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Ground line: the levels under it are below grade" +#: packages/editor/src/components/ui/floating-level-selector.tsx +#, fuzzy +msgid "editor.floatingLevelSelector.groundLineTheLevelsUnderIt" +msgstr "Ligne de sol : les niveaux en dessous sont enterrés" + +# Source-Hash: e12035eb47cc61cc +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Ground · {offset}" +#: packages/editor/src/components/ui/floating-level-selector.tsx +#, fuzzy +msgid "editor.floatingLevelSelector.groundOffset" +msgstr "Sol · {offset}" + +# Source-Hash: 5661c11383217661 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Insert level here" +#: packages/editor/src/components/ui/floating-level-selector.tsx +#, fuzzy +msgid "editor.floatingLevelSelector.insertLevelHere" +msgstr "Insérer un niveau ici" + +# Source-Hash: 0215b36d5a08597a +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Level height" +#: packages/editor/src/components/ui/floating-level-selector.tsx +#, fuzzy +msgid "editor.floatingLevelSelector.levelHeight" +msgstr "Hauteur du niveau" + +# Source-Hash: 91af436e81bb0875 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Paste copied selection" +#: packages/editor/src/components/ui/floating-level-selector.tsx +#, fuzzy +msgid "editor.floatingLevelSelector.pasteCopiedSelection" +msgstr "Coller la sélection copiée" + +# Source-Hash: 68bc52f53240cbec +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Reorder {levelName}" +#: packages/editor/src/components/ui/floating-level-selector.tsx +#, fuzzy +msgid "editor.floatingLevelSelector.reorderLevelname" +msgstr "Réorganiser {levelName}" + +# Source-Hash: 625d53de72ebc2ef +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Seat the building so this floor stands at grade; the floors under it are below grade" +#: packages/editor/src/components/ui/floating-level-selector.tsx +#, fuzzy +msgid "editor.floatingLevelSelector.seatTheBuildingSoThisFloor" +msgstr "Placer le bâtiment pour que cet étage soit au niveau du sol ; les étages inférieurs sont enterrés" + +# Source-Hash: 7ac9c00895c30d76 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Set as ground floor" +#: packages/editor/src/components/ui/floating-level-selector.tsx +#, fuzzy +msgid "editor.floatingLevelSelector.setAsGroundFloor" +msgstr "Définir comme rez-de-chaussée" + +# Source-Hash: d6b381247066a7aa +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "The ground level cannot be deleted" +#: packages/editor/src/components/ui/floating-level-selector.tsx +#, fuzzy +msgid "editor.floatingLevelSelector.theGroundLevelCannotBeDeleted" +msgstr "Le niveau du rez-de-chaussée ne peut pas être supprimé" + +# Source-Hash: b1122051dce0d7a1 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "This floor stands at grade" +#: packages/editor/src/components/ui/floating-level-selector.tsx +#, fuzzy +msgid "editor.floatingLevelSelector.thisFloorStandsAtGrade" +msgstr "Cet étage est au niveau du sol" + +# Source-Hash: 062cc0f1afef0c52 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Unit" +#: packages/editor/src/components/ui/floating-level-selector.tsx +#, fuzzy +msgid "editor.floatingLevelSelector.unit" +msgstr "Lot" + # Source-Hash: c0774c185060fc13 # Review: required # AI-Provider: cursor-agent @@ -3773,142 +4113,447 @@ msgstr "Pivoter" msgid "editor.helpers.registeredToolHelper.guidedConstraintsBypassed" msgstr "Contraintes guidées ignorées" -# Source-Hash: 395fd0821b203517 +# Source-Hash: 179b025e25f9a091 # Review: required # AI-Provider: cursor-agent # AI-Model: claude-opus -# English: "Add or remove objects from the selection" -#: packages/editor/src/lib/contextual-help.ts +# English: "Collapse" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#: packages/editor/src/components/ui/sidebar/panels/site-panel/tree-node.tsx #, fuzzy -msgid "editor.lib.contextualHelp.addOrRemoveObjectsFromThe" -msgstr "Ajouter ou retirer des objets de la sélection" +msgid "editor.layers.collapse" +msgstr "Réduire" -# Source-Hash: 8428cb0af9c6d6a0 +# Source-Hash: dbeae4c43f49327f # Review: required # AI-Provider: cursor-agent # AI-Model: claude-opus -# English: "Adjust one side’s corner radius" -#: packages/editor/src/lib/contextual-help.ts +# English: "Ceiling ({area})" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/default-names.ts #, fuzzy -msgid "editor.lib.contextualHelp.adjustOneSideSCornerRadius" -msgstr "Ajuster le rayon d’angle d’un côté" +msgid "editor.layers.defaultName.ceiling" +msgstr "Plafond ({area})" -# Source-Hash: d63b45c195713993 +# Source-Hash: d29165c9d4bfc3cb # Review: required # AI-Provider: cursor-agent # AI-Model: claude-opus -# English: "Clear the selection (or click outside)" -#: packages/editor/src/lib/contextual-help.ts +# English: "Collection" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/collection-tree-node.tsx #, fuzzy -msgid "editor.lib.contextualHelp.clearTheSelectionOrClickOutside" -msgstr "Effacer la sélection (ou cliquer à l’extérieur)" +msgid "editor.layers.defaultName.collection" +msgstr "Collection" -# Source-Hash: 40b1afbeadbd6213 +# Source-Hash: 8f536b859be662a0 # Review: required # AI-Provider: cursor-agent # AI-Model: claude-opus -# English: "Click a handle dot to show move arrows" -#: packages/editor/src/lib/contextual-help.ts +# English: "Flight ({width}×{length}m)" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/default-names.ts #, fuzzy -msgid "editor.lib.contextualHelp.clickAHandleDotToShow" -msgstr "Cliquez sur une poignée pour afficher les flèches de déplacement" +msgid "editor.layers.defaultName.flight" +msgstr "Volée ({width}×{length}m)" -# Source-Hash: 0b82a35c71549580 +# Source-Hash: 46dcbf4548374073 # Review: required # AI-Provider: cursor-agent # AI-Model: claude-opus -# English: "Click or drag the selection to move it as one" -#: packages/editor/src/lib/contextual-help.ts +# English: "Landing ({width}×{length}m)" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/default-names.ts #, fuzzy -msgid "editor.lib.contextualHelp.clickOrDragTheSelectionTo" -msgstr "Cliquez ou faites glisser la sélection pour la déplacer d’un bloc" +msgid "editor.layers.defaultName.landing" +msgstr "Palier ({width}×{length}m)" -# Source-Hash: 73a761f393f69cb9 +# Source-Hash: 3ea44453fcd08a6e # Review: required # AI-Provider: cursor-agent # AI-Model: claude-opus -# English: "Click the handle dot to show move + rotate handles" -#: packages/editor/src/lib/contextual-help.ts +# English: "Node" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/registry-tree-node.tsx #, fuzzy -msgid "editor.lib.contextualHelp.clickTheHandleDotToShow" -msgstr "Cliquez sur la poignée pour afficher les poignées de déplacement et de rotation" +msgid "editor.layers.defaultName.node" +msgstr "Nœud" -# Source-Hash: c0045cef191fee69 +# Source-Hash: 93f3a04e15b6fb49 # Review: required # AI-Provider: cursor-agent # AI-Model: claude-opus -# English: "Detach the joint while dragging an arrow" -#: packages/editor/src/lib/contextual-help.ts +# English: "Roof ({count, plural, one {# segment} other {# segments}})" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/default-names.ts #, fuzzy -msgid "editor.lib.contextualHelp.detachTheJointWhileDraggingAn" -msgstr "Détacher la jonction en faisant glisser une flèche" +msgid "editor.layers.defaultName.roof" +msgstr "Toit ({count, plural, one {# segment} many {# segments} other {# segments}})" -# Source-Hash: a019c8948c104a9e +# Source-Hash: a730fab01c172704 # Review: required # AI-Provider: cursor-agent # AI-Model: claude-opus -# English: "Drag left or right to rotate selected object" -#: packages/editor/src/lib/contextual-help.ts +# English: "{roofType, select, hip {Hip} gable {Gable} shed {Shed} gambrel {Gambrel} dutch {Dutch} mansard {Mansard} flat {Flat} conical {Conical} barrel {Barrel} other {Roof}} ({width}×{depth}m)" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/default-names.ts #, fuzzy -msgid "editor.lib.contextualHelp.dragLeftOrRightToRotate" -msgstr "Faites glisser à gauche ou à droite pour faire pivoter l’objet sélectionné" +msgid "editor.layers.defaultName.roofSegment" +msgstr "{roofType, select, hip {Croupe} gable {Pignon} shed {Monopente} gambrel {Gambrel} dutch {Demi-croupe} mansard {Mansarde} flat {Plat} conical {Conique} barrel {Voûte} other {Toit}} ({width}×{depth}m)" -# Source-Hash: 7db0364deb12f06e +# Source-Hash: 54efcb0756c2f2c1 # Review: required # AI-Provider: cursor-agent # AI-Model: claude-opus -# English: "Drag selected movable object" -#: packages/editor/src/lib/contextual-help.ts +# English: "Room ({area})" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/default-names.ts #, fuzzy -msgid "editor.lib.contextualHelp.dragSelectedMovableObject" -msgstr "Faire glisser l’objet mobile sélectionné" +msgid "editor.layers.defaultName.room" +msgstr "Pièce ({area})" -# Source-Hash: 0f258dd389afdc73 +# Source-Hash: e38a4b9986a9d21a # Review: required # AI-Provider: cursor-agent # AI-Model: claude-opus -# English: "Group selection (session only)" -#: packages/editor/src/lib/contextual-help.ts +# English: "Slab ({area})" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/default-names.ts #, fuzzy -msgid "editor.lib.contextualHelp.groupSelectionSessionOnly" -msgstr "Grouper la sélection (session uniquement)" +msgid "editor.layers.defaultName.slab" +msgstr "Dalle ({area})" -# Source-Hash: 85330d62893a45c3 +# Source-Hash: 57398365d4b9066f # Review: required # AI-Provider: cursor-agent # AI-Model: claude-opus -# English: "Hold to rotate freely" -#: packages/editor/src/lib/contextual-help.ts +# English: "Staircase ({count, plural, one {# segment} other {# segments}})" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/default-names.ts #, fuzzy -msgid "editor.lib.contextualHelp.holdToRotateFreely" -msgstr "Maintenez pour pivoter librement" +msgid "editor.layers.defaultName.staircase" +msgstr "Escalier ({count, plural, one {# segment} many {# segments} other {# segments}})" -# Source-Hash: 8a665ecaeffa9308 +# Source-Hash: a17f8fc29aae896e # Review: required # AI-Provider: cursor-agent # AI-Model: claude-opus -# English: "Rotate ±45°" -#: packages/editor/src/lib/contextual-help.ts +# English: "Zone ({area})" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/default-names.ts #, fuzzy -msgid "editor.lib.contextualHelp.rotate45" -msgstr "Pivoter de ±45°" +msgid "editor.layers.defaultName.zone" +msgstr "Zone ({area})" -# Source-Hash: 6099ee99f8c38700 +# Source-Hash: 5cabcabb8bc14809 # Review: required # AI-Provider: cursor-agent # AI-Model: claude-opus -# English: "Rotate the selection ±45°" -#: packages/editor/src/lib/contextual-help.ts +# English: "Expand" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#: packages/editor/src/components/ui/sidebar/panels/site-panel/tree-node.tsx #, fuzzy -msgid "editor.lib.contextualHelp.rotateTheSelection45" -msgstr "Pivoter la sélection de ±45°" +msgid "editor.layers.expand" +msgstr "Développer" -# Source-Hash: 0f6b418b18ff96f3 +# Source-Hash: 6731e9dd94e8b268 # Review: required # AI-Provider: cursor-agent # AI-Model: claude-opus -# English: "Rotating freely (no angle step)" -#: packages/editor/src/lib/contextual-help.ts +# English: "{levelName} options" +#: packages/editor/src/components/ui/floating-level-selector.tsx +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.layers.levelOptions" +msgstr "Options de {levelName}" + +# Source-Hash: d6952b4e54d246dd +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Rename" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/inline-rename-input.tsx +#, fuzzy +msgid "editor.layers.rename" +msgstr "Renommer" + +# Source-Hash: 21eafa019ad62fea +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "{role, select, room {Room colour} other {Zone colour}}" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#: packages/editor/src/components/ui/sidebar/panels/site-panel/zone-tree-node.tsx +#: packages/editor/src/components/ui/sidebar/panels/zone-panel/index.tsx +#, fuzzy +msgid "editor.layers.spaceColour" +msgstr "{role, select, room {Couleur de la pièce} other {Couleur de la zone}}" + +# Source-Hash: f5de042416a2c04f +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Unit colour" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/unit-tree-node.tsx +#, fuzzy +msgid "editor.layers.unitColour" +msgstr "Couleur du logement" + +# Source-Hash: c0774c185060fc13 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Cancel" +#: packages/editor/src/components/ui/level-duplicate-dialog.tsx +#, fuzzy +msgid "editor.levelDuplicateDialog.cancel" +msgstr "Annuler" + +# Source-Hash: 07c11e7e4d4681d6 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Choose what to copy from {levelName}." +#: packages/editor/src/components/ui/level-duplicate-dialog.tsx +#, fuzzy +msgid "editor.levelDuplicateDialog.chooseWhatToCopyFromLevel" +msgstr "Choisissez ce qu’il faut copier depuis {levelName}." + +# Source-Hash: 9500d4378a319532 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Choose what to copy from this level." +#: packages/editor/src/components/ui/level-duplicate-dialog.tsx +#, fuzzy +msgid "editor.levelDuplicateDialog.chooseWhatToCopyFromThisLevel" +msgstr "Choisissez ce qu’il faut copier depuis ce niveau." + +# Source-Hash: 34dc96fe77a31e51 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Duplicate" +#: packages/editor/src/components/ui/level-duplicate-dialog.tsx +#, fuzzy +msgid "editor.levelDuplicateDialog.duplicate" +msgstr "Dupliquer" + +# Source-Hash: a56e3eb43e60b45c +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Duplicate Level" +#: packages/editor/src/components/ui/level-duplicate-dialog.tsx +#, fuzzy +msgid "editor.levelDuplicateDialog.duplicateLevel" +msgstr "Dupliquer le niveau" + +# Source-Hash: e4c6ab1ea473a082 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Everything" +#: packages/editor/src/components/ui/level-duplicate-dialog.tsx +#, fuzzy +msgid "editor.levelDuplicateDialog.everything" +msgstr "Tout" + +# Source-Hash: ac3f119e560388ab +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Structure, finishes, and placed items, without guide references." +#: packages/editor/src/components/ui/level-duplicate-dialog.tsx +#, fuzzy +msgid "editor.levelDuplicateDialog.structureFinishesAndPlacedItemsWithout" +msgstr "Structure, finitions et éléments placés, sans références de calque." + +# Source-Hash: acbdf968391d5273 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Structure + furniture" +#: packages/editor/src/components/ui/level-duplicate-dialog.tsx +#, fuzzy +msgid "editor.levelDuplicateDialog.structureFurniture" +msgstr "Structure + mobilier" + +# Source-Hash: ce682864a140fe75 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Structure + materials" +#: packages/editor/src/components/ui/level-duplicate-dialog.tsx +#, fuzzy +msgid "editor.levelDuplicateDialog.structureMaterials" +msgstr "Structure + matériaux" + +# Source-Hash: 5ee44d53847c5ea2 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Structure, materials, furniture, and references." +#: packages/editor/src/components/ui/level-duplicate-dialog.tsx +#, fuzzy +msgid "editor.levelDuplicateDialog.structureMaterialsFurnitureAndReferences" +msgstr "Structure, matériaux, mobilier et références." + +# Source-Hash: 95aa1b43dbdb3f02 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Structure only" +#: packages/editor/src/components/ui/level-duplicate-dialog.tsx +#, fuzzy +msgid "editor.levelDuplicateDialog.structureOnly" +msgstr "Structure seule" + +# Source-Hash: 2c53b46c9ca9fe2f +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Structure with the current material and finish assignments." +#: packages/editor/src/components/ui/level-duplicate-dialog.tsx +#, fuzzy +msgid "editor.levelDuplicateDialog.structureWithTheCurrentMaterialAnd" +msgstr "Structure avec les matériaux et finitions actuellement attribués." + +# Source-Hash: 3350e9008eaba15d +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Walls, slabs, roofs, stairs, windows, and doors without finishes." +#: packages/editor/src/components/ui/level-duplicate-dialog.tsx +#, fuzzy +msgid "editor.levelDuplicateDialog.wallsSlabsRoofsStairsWindowsAnd" +msgstr "Murs, dalles, toits, escaliers, fenêtres et portes, sans finitions." + +# Source-Hash: 395fd0821b203517 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Add or remove objects from the selection" +#: packages/editor/src/lib/contextual-help.ts +#, fuzzy +msgid "editor.lib.contextualHelp.addOrRemoveObjectsFromThe" +msgstr "Ajouter ou retirer des objets de la sélection" + +# Source-Hash: 8428cb0af9c6d6a0 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Adjust one side’s corner radius" +#: packages/editor/src/lib/contextual-help.ts +#, fuzzy +msgid "editor.lib.contextualHelp.adjustOneSideSCornerRadius" +msgstr "Ajuster le rayon d’angle d’un côté" + +# Source-Hash: d63b45c195713993 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Clear the selection (or click outside)" +#: packages/editor/src/lib/contextual-help.ts +#, fuzzy +msgid "editor.lib.contextualHelp.clearTheSelectionOrClickOutside" +msgstr "Effacer la sélection (ou cliquer à l’extérieur)" + +# Source-Hash: 40b1afbeadbd6213 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Click a handle dot to show move arrows" +#: packages/editor/src/lib/contextual-help.ts +#, fuzzy +msgid "editor.lib.contextualHelp.clickAHandleDotToShow" +msgstr "Cliquez sur une poignée pour afficher les flèches de déplacement" + +# Source-Hash: 0b82a35c71549580 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Click or drag the selection to move it as one" +#: packages/editor/src/lib/contextual-help.ts +#, fuzzy +msgid "editor.lib.contextualHelp.clickOrDragTheSelectionTo" +msgstr "Cliquez ou faites glisser la sélection pour la déplacer d’un bloc" + +# Source-Hash: 73a761f393f69cb9 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Click the handle dot to show move + rotate handles" +#: packages/editor/src/lib/contextual-help.ts +#, fuzzy +msgid "editor.lib.contextualHelp.clickTheHandleDotToShow" +msgstr "Cliquez sur la poignée pour afficher les poignées de déplacement et de rotation" + +# Source-Hash: c0045cef191fee69 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Detach the joint while dragging an arrow" +#: packages/editor/src/lib/contextual-help.ts +#, fuzzy +msgid "editor.lib.contextualHelp.detachTheJointWhileDraggingAn" +msgstr "Détacher la jonction en faisant glisser une flèche" + +# Source-Hash: a019c8948c104a9e +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Drag left or right to rotate selected object" +#: packages/editor/src/lib/contextual-help.ts +#, fuzzy +msgid "editor.lib.contextualHelp.dragLeftOrRightToRotate" +msgstr "Faites glisser à gauche ou à droite pour faire pivoter l’objet sélectionné" + +# Source-Hash: 7db0364deb12f06e +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Drag selected movable object" +#: packages/editor/src/lib/contextual-help.ts +#, fuzzy +msgid "editor.lib.contextualHelp.dragSelectedMovableObject" +msgstr "Faire glisser l’objet mobile sélectionné" + +# Source-Hash: 0f258dd389afdc73 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Group selection (session only)" +#: packages/editor/src/lib/contextual-help.ts +#, fuzzy +msgid "editor.lib.contextualHelp.groupSelectionSessionOnly" +msgstr "Grouper la sélection (session uniquement)" + +# Source-Hash: 85330d62893a45c3 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Hold to rotate freely" +#: packages/editor/src/lib/contextual-help.ts +#, fuzzy +msgid "editor.lib.contextualHelp.holdToRotateFreely" +msgstr "Maintenez pour pivoter librement" + +# Source-Hash: 8a665ecaeffa9308 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Rotate ±45°" +#: packages/editor/src/lib/contextual-help.ts +#, fuzzy +msgid "editor.lib.contextualHelp.rotate45" +msgstr "Pivoter de ±45°" + +# Source-Hash: 6099ee99f8c38700 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Rotate the selection ±45°" +#: packages/editor/src/lib/contextual-help.ts +#, fuzzy +msgid "editor.lib.contextualHelp.rotateTheSelection45" +msgstr "Pivoter la sélection de ±45°" + +# Source-Hash: 0f6b418b18ff96f3 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Rotating freely (no angle step)" +#: packages/editor/src/lib/contextual-help.ts #, fuzzy msgid "editor.lib.contextualHelp.rotatingFreely" msgstr "Rotation libre (sans pas d’angle)" @@ -4323,6 +4968,886 @@ msgstr "Murs" msgid "editor.reloadEditor" msgstr "Recharger l’éditeur" +# Source-Hash: 83909f82446ee9c3 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Settings" +#: packages/editor/src/components/ui/sidebar/icon-rail.tsx +#, fuzzy +msgid "editor.sidebar.iconRail.settings" +msgstr "Paramètres" + +# Source-Hash: 91f90818d42a984e +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Site" +#: packages/editor/src/components/ui/sidebar/icon-rail.tsx +#, fuzzy +msgid "editor.sidebar.iconRail.site" +msgstr "Terrain" + +# Source-Hash: 663175a9c461a96d +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "All" +#: packages/editor/src/components/ui/sidebar/panels/items-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.itemsPanel.all" +msgstr "Tout" + +# Source-Hash: fce9814c289e6b71 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Community" +#: packages/editor/src/components/ui/sidebar/panels/items-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.itemsPanel.community" +msgstr "Communauté" + +# Source-Hash: 663175a9c461a96d +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "All" +#: packages/editor/src/components/ui/sidebar/panels/items-panel/function-tree-panel.tsx +#, fuzzy +msgid "editor.sidebar.panels.itemsPanel.functionTreePanel.all" +msgstr "Tout" + +# Source-Hash: fce9814c289e6b71 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Community" +#: packages/editor/src/components/ui/sidebar/panels/items-panel/function-tree-panel.tsx +#, fuzzy +msgid "editor.sidebar.panels.itemsPanel.functionTreePanel.community" +msgstr "Communauté" + +# Source-Hash: 8d211c78417ed1b0 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Library" +#: packages/editor/src/components/ui/sidebar/panels/items-panel/function-tree-panel.tsx +#, fuzzy +msgid "editor.sidebar.panels.itemsPanel.functionTreePanel.library" +msgstr "Bibliothèque" + +# Source-Hash: a0b7adfdfdec7307 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Mine" +#: packages/editor/src/components/ui/sidebar/panels/items-panel/function-tree-panel.tsx +#, fuzzy +msgid "editor.sidebar.panels.itemsPanel.functionTreePanel.mine" +msgstr "Les miens" + +# Source-Hash: 6024b7778b392ec3 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "No results for “{search}”" +#: packages/editor/src/components/ui/sidebar/panels/items-panel/function-tree-panel.tsx +#, fuzzy +msgid "editor.sidebar.panels.itemsPanel.functionTreePanel.noResultsForSearch" +msgstr "Aucun résultat pour « {search} »" + +# Source-Hash: 4ceb6dcb7827db7f +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Search..." +#: packages/editor/src/components/ui/sidebar/panels/items-panel/function-tree-panel.tsx +#, fuzzy +msgid "editor.sidebar.panels.itemsPanel.functionTreePanel.search" +msgstr "Rechercher..." + +# Source-Hash: 8d211c78417ed1b0 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Library" +#: packages/editor/src/components/ui/sidebar/panels/items-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.itemsPanel.library" +msgstr "Bibliothèque" + +# Source-Hash: a0b7adfdfdec7307 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Mine" +#: packages/editor/src/components/ui/sidebar/panels/items-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.itemsPanel.mine" +msgstr "Les miens" + +# Source-Hash: 6024b7778b392ec3 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "No results for “{search}”" +#: packages/editor/src/components/ui/sidebar/panels/items-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.itemsPanel.noResultsForSearch" +msgstr "Aucun résultat pour « {search} »" + +# Source-Hash: 4ceb6dcb7827db7f +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Search..." +#: packages/editor/src/components/ui/sidebar/panels/items-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.itemsPanel.search" +msgstr "Rechercher..." + +# Source-Hash: 3c67cde0578ac829 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Add level" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.addLevel" +msgstr "Ajouter un niveau" + +# Source-Hash: 9a56d90d461b4bca +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Add point" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.addPoint" +msgstr "Ajouter un point" + +# Source-Hash: fedccec504a9ae33 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Area:" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.area" +msgstr "Surface :" + +# Source-Hash: 87b6880f6de7a45a +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Base elevation" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.baseElevation" +msgstr "Altitude de base" + +# Source-Hash: d42f7d29e3fc4af7 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Building" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.building" +msgstr "Bâtiment" + +# Source-Hash: 7c90f458259d5cd8 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Add new level" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/building-tree-node.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.buildingTreeNode.addNewLevel" +msgstr "Ajouter un nouveau niveau" + +# Source-Hash: d42f7d29e3fc4af7 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Building" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/building-tree-node.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.buildingTreeNode.building" +msgstr "Bâtiment" + +# Source-Hash: bbc65c039ae86e11 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Camera snapshot" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.cameraSnapshot" +msgstr "Instantané de caméra" + +# Source-Hash: 3a0701ebcb9f26cb +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Capture" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.capture" +msgstr "Capture" + +# Source-Hash: 71f2343818c55e0c +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Clear selection" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.clearSelection" +msgstr "Effacer la sélection" + +# Source-Hash: 67d29724469fa8d3 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Clear snapshot" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.clearSnapshot" +msgstr "Effacer l’instantané" + +# Source-Hash: def517c77fda49ea +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Close walls around a space to make a room." +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.closeWallsAroundASpaceTo" +msgstr "Fermez des murs autour d’un espace pour créer une pièce." + +# Source-Hash: 2b9af8da4b34cbfa +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Collection colour" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/collection-tree-node.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.collectionTreeNode.collectionColour" +msgstr "Couleur de la collection" + +# Source-Hash: 135af27a14a4cda7 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Collections" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/collection-tree-node.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.collectionTreeNode.collections" +msgstr "Collections" + +# Source-Hash: 6f4751c26f12aef9 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Delete collection" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/collection-tree-node.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.collectionTreeNode.deleteCollection" +msgstr "Supprimer la collection" + +# Source-Hash: b26de372b4b0eaac +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Delete" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.delete" +msgstr "Supprimer" + +# Source-Hash: 8e29375893d63408 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Delete level" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.deleteLevel" +msgstr "Supprimer le niveau" + +# Source-Hash: 6552e45eecc0a227 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Draw a zone" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.drawAZone" +msgstr "Dessiner une zone" + +# Source-Hash: 34dc96fe77a31e51 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Duplicate" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.duplicate" +msgstr "Dupliquer" + +# Source-Hash: 933177338f5a03ed +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Duplicate level" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.duplicateLevel" +msgstr "Dupliquer le niveau" + +# Source-Hash: c038947f317cabba +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Duplicate level with options" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.duplicateLevelWithOptions" +msgstr "Dupliquer le niveau avec options" + +# Source-Hash: 9614c6825a7c67bf +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Duplicate with options..." +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.duplicateWithOptions" +msgstr "Dupliquer avec options..." + +# Source-Hash: 7c4196b9e791c195 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Elements" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.elements" +msgstr "Éléments" + +# Source-Hash: 1344ea2602e3aa9e +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Guide" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.guide" +msgstr "Guide" + +# Source-Hash: 591087ea83a48ead +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Hide" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.hide" +msgstr "Masquer" + +# Source-Hash: 0608743fc1736d86 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Level" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.level" +msgstr "Niveau" + +# Source-Hash: 13b3e6a6afe319d1 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "New unit" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.newUnit" +msgstr "Nouveau logement" + +# Source-Hash: 0192748d50f0e5f7 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "No buildings yet" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.noBuildingsYet" +msgstr "Aucun bâtiment pour l’instant" + +# Source-Hash: 1be310702a12e433 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "No elements on this level" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.noElementsOnThisLevel" +msgstr "Aucun élément sur ce niveau" + +# Source-Hash: 0956af88ced36992 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "No levels yet" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.noLevelsYet" +msgstr "Aucun niveau pour l’instant" + +# Source-Hash: 45c41bfb2ae19627 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "{count, plural, one {# object selected} other {# objects selected}}" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.objectsSelected" +msgstr "{count, plural, one {# objet sélectionné} many {# objets sélectionnés} other {# objets sélectionnés}}" + +# Source-Hash: a5434e26e5cb1b26 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Other zones" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.otherZones" +msgstr "Autres zones" + +# Source-Hash: 2aa38d84079d4dba +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Perimeter:" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.perimeter" +msgstr "Périmètre :" + +# Source-Hash: 4004b9a8e4f8c9d0 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Property Line" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.propertyLine" +msgstr "Limite de propriété" + +# Source-Hash: 3e7408ed44676176 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Rooms" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.rooms" +msgstr "Pièces" + +# Source-Hash: ca39c0581c7318e6 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Select a level to view content" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.selectALevelToViewContent" +msgstr "Sélectionnez un niveau pour voir son contenu" + +# Source-Hash: 827e0c6ac9936b69 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Show" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.show" +msgstr "Afficher" + +# Source-Hash: 91f90818d42a984e +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Site" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.site" +msgstr "Terrain" + +# Source-Hash: c40163620df24a76 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Take snapshot" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.takeSnapshot" +msgstr "Prendre un instantané" + +# Source-Hash: d6b381247066a7aa +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "The ground level cannot be deleted" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.theGroundLevelCannotBeDeleted" +msgstr "Le niveau du rez-de-chaussée ne peut pas être supprimé" + +# Source-Hash: bbc65c039ae86e11 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Camera snapshot" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/tree-node-actions.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.treeNodeActions.cameraSnapshot" +msgstr "Instantané de caméra" + +# Source-Hash: 67d29724469fa8d3 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Clear snapshot" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/tree-node-actions.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.treeNodeActions.clearSnapshot" +msgstr "Effacer l’instantané" + +# Source-Hash: 591087ea83a48ead +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Hide" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/tree-node-actions.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.treeNodeActions.hide" +msgstr "Masquer" + +# Source-Hash: 827e0c6ac9936b69 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Show" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/tree-node-actions.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.treeNodeActions.show" +msgstr "Afficher" + +# Source-Hash: c40163620df24a76 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Take snapshot" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/tree-node-actions.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.treeNodeActions.takeSnapshot" +msgstr "Prendre un instantané" + +# Source-Hash: faecab10b69d4863 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Update snapshot" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/tree-node-actions.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.treeNodeActions.updateSnapshot" +msgstr "Mettre à jour l’instantané" + +# Source-Hash: 8a1fd8827a68f236 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "View snapshot" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/tree-node-actions.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.treeNodeActions.viewSnapshot" +msgstr "Voir l’instantané" + +# Source-Hash: b404dded35241274 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Units" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.units" +msgstr "Unités" + +# Source-Hash: 149fec3fd1f08042 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Delete unit" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/unit-tree-node.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.unitTreeNode.deleteUnit" +msgstr "Supprimer le logement" + +# Source-Hash: 930399d3fb247a7c +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Focused" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/unit-tree-node.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.unitTreeNode.focused" +msgstr "Ciblé" + +# Source-Hash: 41ac9dd23bb558d7 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Remove from unit" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/unit-tree-node.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.unitTreeNode.removeFromUnit" +msgstr "Retirer du logement" + +# Source-Hash: 612dcd5bf06a79c4 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Room" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/unit-tree-node.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.unitTreeNode.room" +msgstr "Pièce" + +# Source-Hash: a107b4d76d6972e3 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Zone" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/unit-tree-node.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.unitTreeNode.zone" +msgstr "Zone" + +# Source-Hash: faecab10b69d4863 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Update snapshot" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.updateSnapshot" +msgstr "Mettre à jour l’instantané" + +# Source-Hash: 28a12e6806c091b0 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "{assetType, select, guide {Uploading guide... {progress}%} other {Uploading scan... {progress}%}}" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.uploadingProgress" +msgstr "{assetType, select, guide {Import du calque... {progress} %} other {Import du relevé 3D... {progress} %}}" + +# Source-Hash: de389a2a46d53384 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Upload scan/floorplan" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.uploadScanFloorplan" +msgstr "Importer un relevé 3D ou un plan" + +# Source-Hash: 8a1fd8827a68f236 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "View snapshot" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.viewSnapshot" +msgstr "Voir l’instantané" + +# Source-Hash: ba9f809cb032ee57 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "In {unitName}" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/zone-membership-checkbox.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.zoneMembershipCheckbox.inUnitname" +msgstr "Dans {unitName}" + +# Source-Hash: aa6d82bdb3cc1d9a +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Actions" +#: packages/editor/src/components/ui/sidebar/panels/zone-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.zonePanel.actions" +msgstr "Actions" + +# Source-Hash: fcc43f22937d1536 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Add one" +#: packages/editor/src/components/ui/sidebar/panels/zone-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.zonePanel.addOne" +msgstr "En ajouter une" + +# Source-Hash: bbc65c039ae86e11 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Camera snapshot" +#: packages/editor/src/components/ui/sidebar/panels/zone-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.zonePanel.cameraSnapshot" +msgstr "Instantané de caméra" + +# Source-Hash: 67d29724469fa8d3 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Clear snapshot" +#: packages/editor/src/components/ui/sidebar/panels/zone-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.zonePanel.clearSnapshot" +msgstr "Effacer l’instantané" + +# Source-Hash: b26de372b4b0eaac +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Delete" +#: packages/editor/src/components/ui/sidebar/panels/zone-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.zonePanel.delete" +msgstr "Supprimer" + +# Source-Hash: e2411929697b7ed4 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Delete with contents" +#: packages/editor/src/components/ui/sidebar/panels/zone-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.zonePanel.deleteWithContents" +msgstr "Supprimer avec le contenu" + +# Source-Hash: 22ca3935e8754072 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "No zones on this level." +#: packages/editor/src/components/ui/sidebar/panels/zone-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.zonePanel.noZonesOnThisLevel" +msgstr "Aucune zone sur ce niveau." + +# Source-Hash: 941ea30f406dcfa2 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Save to catalog" +#: packages/editor/src/components/ui/sidebar/panels/zone-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.zonePanel.saveToCatalog" +msgstr "Enregistrer dans le catalogue" + +# Source-Hash: 98662dfb371cac13 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Select a level to view and create zones" +#: packages/editor/src/components/ui/sidebar/panels/zone-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.zonePanel.selectALevelToViewAnd" +msgstr "Sélectionnez un niveau pour voir et créer des zones" + +# Source-Hash: c40163620df24a76 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Take snapshot" +#: packages/editor/src/components/ui/sidebar/panels/zone-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.zonePanel.takeSnapshot" +msgstr "Prendre un instantané" + +# Source-Hash: faecab10b69d4863 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Update snapshot" +#: packages/editor/src/components/ui/sidebar/panels/zone-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.zonePanel.updateSnapshot" +msgstr "Mettre à jour l’instantané" + +# Source-Hash: 8a1fd8827a68f236 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "View snapshot" +#: packages/editor/src/components/ui/sidebar/panels/zone-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.zonePanel.viewSnapshot" +msgstr "Voir l’instantané" + +# Source-Hash: 58b05af5b5724efb +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "\"{label}\" plugin crashed" +#: packages/editor/src/components/ui/sidebar/use-plugin-panels.tsx +#, fuzzy +msgid "editor.sidebar.usePluginPanels.labelPluginCrashed" +msgstr "Le plugin « {label} » a planté" + +# Source-Hash: 9e84d6d7b9885c4f +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Loading…" +#: packages/editor/src/components/ui/sidebar/use-plugin-panels.tsx +#, fuzzy +msgid "editor.sidebar.usePluginPanels.loading" +msgstr "Chargement…" + +# Source-Hash: 9fc7a39bc32f287a +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Plugins" +#: packages/editor/src/components/ui/sidebar/use-plugin-panels.tsx +#, fuzzy +msgid "editor.sidebar.usePluginPanels.plugins" +msgstr "Plugins" + +# Source-Hash: c6312309378aaaea +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "This panel hit an error and was unloaded for this session. The rest of the editor is unaffected — reload to try again." +#: packages/editor/src/components/ui/sidebar/use-plugin-panels.tsx +#, fuzzy +msgid "editor.sidebar.usePluginPanels.thisPanelHitAnErrorAnd" +msgstr "Ce panneau a rencontré une erreur et a été déchargé pour cette session. Le reste de l’éditeur n’est pas affecté — rechargez pour réessayer." + # Source-Hash: 834de1a7027c4da1 # Review: required # AI-Provider: cursor-agent diff --git a/packages/editor/src/i18n/locales/ja/messages.po b/packages/editor/src/i18n/locales/ja/messages.po index b57bf2683d..319959e7c9 100644 --- a/packages/editor/src/i18n/locales/ja/messages.po +++ b/packages/editor/src/i18n/locales/ja/messages.po @@ -1083,6 +1083,96 @@ msgstr "片流れ" msgid "app.lib.buildTabState.wall" msgstr "壁" +# Source-Hash: 8d17e7556ce142da +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Another session saved first — refresh?" +#: apps/editor/components/scene-loader.tsx +#, fuzzy +msgid "app.sceneLoader.anotherSessionSavedFirstRefresh" +msgstr "別のセッションが先に保存しました。更新しますか?" + +# Source-Hash: 8f4b2028ad75465d +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Build" +#: apps/editor/components/scene-loader.tsx +#, fuzzy +msgid "app.sceneLoader.build" +msgstr "建築" + +# Source-Hash: a2bd204e93e90598 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Dismiss" +#: apps/editor/components/scene-loader.tsx +#, fuzzy +msgid "app.sceneLoader.dismiss" +msgstr "閉じる" + +# Source-Hash: daebc0755d239c99 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Items" +#: apps/editor/components/scene-loader.tsx +#, fuzzy +msgid "app.sceneLoader.items" +msgstr "アイテム" + +# Source-Hash: cf2e870fce0f2f51 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Paint" +#: apps/editor/components/scene-loader.tsx +#, fuzzy +msgid "app.sceneLoader.paint" +msgstr "塗装" + +# Source-Hash: 854555777b69a4b1 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Reload" +#: apps/editor/components/scene-loader.tsx +#, fuzzy +msgid "app.sceneLoader.reload" +msgstr "再読み込み" + +# Source-Hash: 8dc78e215a97d9fc +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Scene" +#: apps/editor/components/scene-loader.tsx +#, fuzzy +msgid "app.sceneLoader.scene" +msgstr "シーン" + +# Source-Hash: 83909f82446ee9c3 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Settings" +#: apps/editor/components/scene-loader.tsx +#, fuzzy +msgid "app.sceneLoader.settings" +msgstr "設定" + +# Source-Hash: ee255fa26d076dcc +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Your changes haven't been saved. Reload to pick up the latest version." +#: apps/editor/components/scene-loader.tsx +#, fuzzy +msgid "app.sceneLoader.yourChangesHavenTBeenSaved" +msgstr "変更は保存されていません。再読み込みして最新バージョンを取得してください。" + # Source-Hash: 703e1b4b9b715d3b # Review: required # AI-Provider: cursor-agent @@ -3063,6 +3153,256 @@ msgstr "{count, plural, other {# 系統}}" msgid "editor.floatingActionMenu.system" msgstr "システム" +# Source-Hash: f0e76aea883d4e48 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Add a floor under the roof" +#: packages/editor/src/components/ui/floating-level-selector.tsx +#, fuzzy +msgid "editor.floatingLevelSelector.addAFloorUnderTheRoof" +msgstr "屋根の下に階層を追加" + +# Source-Hash: a982ff9b075af829 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Add level above" +#: packages/editor/src/components/ui/floating-level-selector.tsx +#, fuzzy +msgid "editor.floatingLevelSelector.addLevelAbove" +msgstr "上に階層を追加" + +# Source-Hash: 0db7d221df08fa6b +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Add level below" +#: packages/editor/src/components/ui/floating-level-selector.tsx +#, fuzzy +msgid "editor.floatingLevelSelector.addLevelBelow" +msgstr "下に階層を追加" + +# Source-Hash: c0774c185060fc13 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Cancel" +#: packages/editor/src/components/ui/floating-level-selector.tsx +#, fuzzy +msgid "editor.floatingLevelSelector.cancel" +msgstr "キャンセル" + +# Source-Hash: b26de372b4b0eaac +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Delete" +#: packages/editor/src/components/ui/floating-level-selector.tsx +#, fuzzy +msgid "editor.floatingLevelSelector.delete" +msgstr "削除" + +# Source-Hash: 8e29375893d63408 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Delete level" +#: packages/editor/src/components/ui/floating-level-selector.tsx +#, fuzzy +msgid "editor.floatingLevelSelector.deleteLevel" +msgstr "階層を削除" + +# Source-Hash: c3bc69ec52022250 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Are you sure you want to delete {levelName}? All walls, floors, and objects on this level will be permanently removed." +#: packages/editor/src/components/ui/floating-level-selector.tsx +#, fuzzy +msgid "editor.floatingLevelSelector.deleteLevelConfirm" +msgstr "{levelName}を削除してもよろしいですか?この階層のすべての壁、床、オブジェクトが完全に削除されます。" + +# Source-Hash: 5b2826ddac95cd0c +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Drag to reorder" +#: packages/editor/src/components/ui/floating-level-selector.tsx +#, fuzzy +msgid "editor.floatingLevelSelector.dragToReorder" +msgstr "ドラッグして並べ替え" + +# Source-Hash: 933177338f5a03ed +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Duplicate level" +#: packages/editor/src/components/ui/floating-level-selector.tsx +#, fuzzy +msgid "editor.floatingLevelSelector.duplicateLevel" +msgstr "階層を複製" + +# Source-Hash: 9614c6825a7c67bf +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Duplicate with options..." +#: packages/editor/src/components/ui/floating-level-selector.tsx +#, fuzzy +msgid "editor.floatingLevelSelector.duplicateWithOptions" +msgstr "オプションを指定して複製..." + +# Source-Hash: 5ec91bb339806413 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Exit unit focus" +#: packages/editor/src/components/ui/floating-level-selector.tsx +#, fuzzy +msgid "editor.floatingLevelSelector.exitUnitFocus" +msgstr "ユニットのフォーカスを終了" + +# Source-Hash: a88c3f8bed58b4fa +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Focused unit has zones here" +#: packages/editor/src/components/ui/floating-level-selector.tsx +#, fuzzy +msgid "editor.floatingLevelSelector.focusedUnitHasZonesHere" +msgstr "フォーカス中のユニットにはここにゾーンがあります" + +# Source-Hash: 655055a310fb5d13 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "The ground floor stands {distance} over grade. Seat the ground floor 8 in over grade" +#: packages/editor/src/components/ui/floating-level-selector.tsx +#, fuzzy +msgid "editor.floatingLevelSelector.groundFloorOverGrade" +msgstr "1階は地盤面より {distance} 高い位置にあります。1階を地盤面から 8 in 上に据える" + +# Source-Hash: 77548faae4869eec +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "The ground floor stands {distance} under grade. Seat the ground floor 8 in over grade" +#: packages/editor/src/components/ui/floating-level-selector.tsx +#, fuzzy +msgid "editor.floatingLevelSelector.groundFloorUnderGrade" +msgstr "1階は地盤面より {distance} 低い位置にあります。1階を地盤面から 8 in 上に据える" + +# Source-Hash: e3763ae2dc62c03f +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Ground line: the levels under it are below grade" +#: packages/editor/src/components/ui/floating-level-selector.tsx +#, fuzzy +msgid "editor.floatingLevelSelector.groundLineTheLevelsUnderIt" +msgstr "地盤線:その下の階層は地盤面より下です" + +# Source-Hash: e12035eb47cc61cc +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Ground · {offset}" +#: packages/editor/src/components/ui/floating-level-selector.tsx +#, fuzzy +msgid "editor.floatingLevelSelector.groundOffset" +msgstr "地盤 · {offset}" + +# Source-Hash: 5661c11383217661 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Insert level here" +#: packages/editor/src/components/ui/floating-level-selector.tsx +#, fuzzy +msgid "editor.floatingLevelSelector.insertLevelHere" +msgstr "ここに階層を挿入" + +# Source-Hash: 0215b36d5a08597a +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Level height" +#: packages/editor/src/components/ui/floating-level-selector.tsx +#, fuzzy +msgid "editor.floatingLevelSelector.levelHeight" +msgstr "階層の高さ" + +# Source-Hash: 91af436e81bb0875 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Paste copied selection" +#: packages/editor/src/components/ui/floating-level-selector.tsx +#, fuzzy +msgid "editor.floatingLevelSelector.pasteCopiedSelection" +msgstr "コピーした選択を貼り付け" + +# Source-Hash: 68bc52f53240cbec +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Reorder {levelName}" +#: packages/editor/src/components/ui/floating-level-selector.tsx +#, fuzzy +msgid "editor.floatingLevelSelector.reorderLevelname" +msgstr "{levelName}を並べ替え" + +# Source-Hash: 625d53de72ebc2ef +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Seat the building so this floor stands at grade; the floors under it are below grade" +#: packages/editor/src/components/ui/floating-level-selector.tsx +#, fuzzy +msgid "editor.floatingLevelSelector.seatTheBuildingSoThisFloor" +msgstr "この階が地盤面に来るよう建物を据えます。その下の階は地盤面より下になります" + +# Source-Hash: 7ac9c00895c30d76 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Set as ground floor" +#: packages/editor/src/components/ui/floating-level-selector.tsx +#, fuzzy +msgid "editor.floatingLevelSelector.setAsGroundFloor" +msgstr "1階に設定" + +# Source-Hash: d6b381247066a7aa +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "The ground level cannot be deleted" +#: packages/editor/src/components/ui/floating-level-selector.tsx +#, fuzzy +msgid "editor.floatingLevelSelector.theGroundLevelCannotBeDeleted" +msgstr "1階の階層は削除できません" + +# Source-Hash: b1122051dce0d7a1 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "This floor stands at grade" +#: packages/editor/src/components/ui/floating-level-selector.tsx +#, fuzzy +msgid "editor.floatingLevelSelector.thisFloorStandsAtGrade" +msgstr "この階は地盤面にあります" + +# Source-Hash: 062cc0f1afef0c52 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Unit" +#: packages/editor/src/components/ui/floating-level-selector.tsx +#, fuzzy +msgid "editor.floatingLevelSelector.unit" +msgstr "住戸" + # Source-Hash: c0774c185060fc13 # Review: required # AI-Provider: cursor-agent @@ -3773,141 +4113,446 @@ msgstr "回転" msgid "editor.helpers.registeredToolHelper.guidedConstraintsBypassed" msgstr "ガイド制約を無視中" -# Source-Hash: 395fd0821b203517 +# Source-Hash: 179b025e25f9a091 # Review: required # AI-Provider: cursor-agent # AI-Model: claude-opus -# English: "Add or remove objects from the selection" -#: packages/editor/src/lib/contextual-help.ts +# English: "Collapse" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#: packages/editor/src/components/ui/sidebar/panels/site-panel/tree-node.tsx #, fuzzy -msgid "editor.lib.contextualHelp.addOrRemoveObjectsFromThe" -msgstr "選択にオブジェクトを追加・除外" +msgid "editor.layers.collapse" +msgstr "折りたたむ" -# Source-Hash: 8428cb0af9c6d6a0 +# Source-Hash: dbeae4c43f49327f # Review: required # AI-Provider: cursor-agent # AI-Model: claude-opus -# English: "Adjust one side’s corner radius" -#: packages/editor/src/lib/contextual-help.ts +# English: "Ceiling ({area})" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/default-names.ts #, fuzzy -msgid "editor.lib.contextualHelp.adjustOneSideSCornerRadius" -msgstr "片側の角の半径を調整" +msgid "editor.layers.defaultName.ceiling" +msgstr "天井({area})" -# Source-Hash: d63b45c195713993 +# Source-Hash: d29165c9d4bfc3cb # Review: required # AI-Provider: cursor-agent # AI-Model: claude-opus -# English: "Clear the selection (or click outside)" -#: packages/editor/src/lib/contextual-help.ts +# English: "Collection" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/collection-tree-node.tsx #, fuzzy -msgid "editor.lib.contextualHelp.clearTheSelectionOrClickOutside" -msgstr "選択を解除(または外側をクリック)" +msgid "editor.layers.defaultName.collection" +msgstr "コレクション" -# Source-Hash: 40b1afbeadbd6213 +# Source-Hash: 8f536b859be662a0 # Review: required # AI-Provider: cursor-agent # AI-Model: claude-opus -# English: "Click a handle dot to show move arrows" -#: packages/editor/src/lib/contextual-help.ts +# English: "Flight ({width}×{length}m)" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/default-names.ts #, fuzzy -msgid "editor.lib.contextualHelp.clickAHandleDotToShow" -msgstr "ハンドルの点をクリックして移動矢印を表示" +msgid "editor.layers.defaultName.flight" +msgstr "階段({width}×{length}m)" -# Source-Hash: 0b82a35c71549580 +# Source-Hash: 46dcbf4548374073 # Review: required # AI-Provider: cursor-agent # AI-Model: claude-opus -# English: "Click or drag the selection to move it as one" -#: packages/editor/src/lib/contextual-help.ts +# English: "Landing ({width}×{length}m)" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/default-names.ts #, fuzzy -msgid "editor.lib.contextualHelp.clickOrDragTheSelectionTo" -msgstr "選択をクリックまたはドラッグしてまとめて移動" +msgid "editor.layers.defaultName.landing" +msgstr "踊り場({width}×{length}m)" -# Source-Hash: 73a761f393f69cb9 +# Source-Hash: 3ea44453fcd08a6e # Review: required # AI-Provider: cursor-agent # AI-Model: claude-opus -# English: "Click the handle dot to show move + rotate handles" -#: packages/editor/src/lib/contextual-help.ts +# English: "Node" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/registry-tree-node.tsx #, fuzzy -msgid "editor.lib.contextualHelp.clickTheHandleDotToShow" -msgstr "ハンドルの点をクリックして移動・回転ハンドルを表示" +msgid "editor.layers.defaultName.node" +msgstr "ノード" -# Source-Hash: c0045cef191fee69 +# Source-Hash: 93f3a04e15b6fb49 # Review: required # AI-Provider: cursor-agent # AI-Model: claude-opus -# English: "Detach the joint while dragging an arrow" -#: packages/editor/src/lib/contextual-help.ts +# English: "Roof ({count, plural, one {# segment} other {# segments}})" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/default-names.ts #, fuzzy -msgid "editor.lib.contextualHelp.detachTheJointWhileDraggingAn" -msgstr "矢印のドラッグ中に接合を外す" +msgid "editor.layers.defaultName.roof" +msgstr "屋根({count, plural, other {# セグメント}})" -# Source-Hash: a019c8948c104a9e +# Source-Hash: a730fab01c172704 # Review: required # AI-Provider: cursor-agent # AI-Model: claude-opus -# English: "Drag left or right to rotate selected object" -#: packages/editor/src/lib/contextual-help.ts +# English: "{roofType, select, hip {Hip} gable {Gable} shed {Shed} gambrel {Gambrel} dutch {Dutch} mansard {Mansard} flat {Flat} conical {Conical} barrel {Barrel} other {Roof}} ({width}×{depth}m)" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/default-names.ts #, fuzzy -msgid "editor.lib.contextualHelp.dragLeftOrRightToRotate" -msgstr "左右にドラッグして選択オブジェクトを回転" +msgid "editor.layers.defaultName.roofSegment" +msgstr "{roofType, select, hip {寄棟} gable {切妻} shed {片流れ} gambrel {腰折れ} dutch {入母屋} mansard {マンサード} flat {陸屋根} conical {円錐} barrel {ヴォールト} other {屋根}}({width}×{depth}m)" -# Source-Hash: 7db0364deb12f06e +# Source-Hash: 54efcb0756c2f2c1 # Review: required # AI-Provider: cursor-agent # AI-Model: claude-opus -# English: "Drag selected movable object" -#: packages/editor/src/lib/contextual-help.ts +# English: "Room ({area})" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/default-names.ts #, fuzzy -msgid "editor.lib.contextualHelp.dragSelectedMovableObject" -msgstr "選択した可動オブジェクトをドラッグ" +msgid "editor.layers.defaultName.room" +msgstr "部屋({area})" -# Source-Hash: 0f258dd389afdc73 +# Source-Hash: e38a4b9986a9d21a # Review: required # AI-Provider: cursor-agent # AI-Model: claude-opus -# English: "Group selection (session only)" -#: packages/editor/src/lib/contextual-help.ts +# English: "Slab ({area})" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/default-names.ts #, fuzzy -msgid "editor.lib.contextualHelp.groupSelectionSessionOnly" -msgstr "選択をグループ化(このセッションのみ)" +msgid "editor.layers.defaultName.slab" +msgstr "スラブ({area})" -# Source-Hash: 85330d62893a45c3 +# Source-Hash: 57398365d4b9066f # Review: required # AI-Provider: cursor-agent # AI-Model: claude-opus -# English: "Hold to rotate freely" -#: packages/editor/src/lib/contextual-help.ts +# English: "Staircase ({count, plural, one {# segment} other {# segments}})" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/default-names.ts #, fuzzy -msgid "editor.lib.contextualHelp.holdToRotateFreely" -msgstr "押したままで自由に回転" +msgid "editor.layers.defaultName.staircase" +msgstr "階段({count, plural, other {# セグメント}})" -# Source-Hash: 8a665ecaeffa9308 +# Source-Hash: a17f8fc29aae896e # Review: required # AI-Provider: cursor-agent # AI-Model: claude-opus -# English: "Rotate ±45°" -#: packages/editor/src/lib/contextual-help.ts +# English: "Zone ({area})" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/default-names.ts #, fuzzy -msgid "editor.lib.contextualHelp.rotate45" -msgstr "±45°回転" +msgid "editor.layers.defaultName.zone" +msgstr "ゾーン({area})" -# Source-Hash: 6099ee99f8c38700 +# Source-Hash: 5cabcabb8bc14809 # Review: required # AI-Provider: cursor-agent # AI-Model: claude-opus -# English: "Rotate the selection ±45°" -#: packages/editor/src/lib/contextual-help.ts +# English: "Expand" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#: packages/editor/src/components/ui/sidebar/panels/site-panel/tree-node.tsx #, fuzzy -msgid "editor.lib.contextualHelp.rotateTheSelection45" -msgstr "選択を±45°回転" +msgid "editor.layers.expand" +msgstr "展開" -# Source-Hash: 0f6b418b18ff96f3 +# Source-Hash: 6731e9dd94e8b268 # Review: required # AI-Provider: cursor-agent # AI-Model: claude-opus -# English: "Rotating freely (no angle step)" +# English: "{levelName} options" +#: packages/editor/src/components/ui/floating-level-selector.tsx +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.layers.levelOptions" +msgstr "{levelName}のオプション" + +# Source-Hash: d6952b4e54d246dd +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Rename" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/inline-rename-input.tsx +#, fuzzy +msgid "editor.layers.rename" +msgstr "名前を変更" + +# Source-Hash: 21eafa019ad62fea +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "{role, select, room {Room colour} other {Zone colour}}" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#: packages/editor/src/components/ui/sidebar/panels/site-panel/zone-tree-node.tsx +#: packages/editor/src/components/ui/sidebar/panels/zone-panel/index.tsx +#, fuzzy +msgid "editor.layers.spaceColour" +msgstr "{role, select, room {部屋の色} other {ゾーンの色}}" + +# Source-Hash: f5de042416a2c04f +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Unit colour" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/unit-tree-node.tsx +#, fuzzy +msgid "editor.layers.unitColour" +msgstr "ユニットの色" + +# Source-Hash: c0774c185060fc13 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Cancel" +#: packages/editor/src/components/ui/level-duplicate-dialog.tsx +#, fuzzy +msgid "editor.levelDuplicateDialog.cancel" +msgstr "キャンセル" + +# Source-Hash: 07c11e7e4d4681d6 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Choose what to copy from {levelName}." +#: packages/editor/src/components/ui/level-duplicate-dialog.tsx +#, fuzzy +msgid "editor.levelDuplicateDialog.chooseWhatToCopyFromLevel" +msgstr "{levelName}からコピーする内容を選択してください。" + +# Source-Hash: 9500d4378a319532 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Choose what to copy from this level." +#: packages/editor/src/components/ui/level-duplicate-dialog.tsx +#, fuzzy +msgid "editor.levelDuplicateDialog.chooseWhatToCopyFromThisLevel" +msgstr "この階層からコピーする内容を選択してください。" + +# Source-Hash: 34dc96fe77a31e51 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Duplicate" +#: packages/editor/src/components/ui/level-duplicate-dialog.tsx +#, fuzzy +msgid "editor.levelDuplicateDialog.duplicate" +msgstr "複製" + +# Source-Hash: a56e3eb43e60b45c +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Duplicate Level" +#: packages/editor/src/components/ui/level-duplicate-dialog.tsx +#, fuzzy +msgid "editor.levelDuplicateDialog.duplicateLevel" +msgstr "階層を複製" + +# Source-Hash: e4c6ab1ea473a082 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Everything" +#: packages/editor/src/components/ui/level-duplicate-dialog.tsx +#, fuzzy +msgid "editor.levelDuplicateDialog.everything" +msgstr "すべて" + +# Source-Hash: ac3f119e560388ab +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Structure, finishes, and placed items, without guide references." +#: packages/editor/src/components/ui/level-duplicate-dialog.tsx +#, fuzzy +msgid "editor.levelDuplicateDialog.structureFinishesAndPlacedItemsWithout" +msgstr "構造、仕上げ、配置済みアイテム(ガイド参照を除く)。" + +# Source-Hash: acbdf968391d5273 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Structure + furniture" +#: packages/editor/src/components/ui/level-duplicate-dialog.tsx +#, fuzzy +msgid "editor.levelDuplicateDialog.structureFurniture" +msgstr "構造 + 家具" + +# Source-Hash: ce682864a140fe75 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Structure + materials" +#: packages/editor/src/components/ui/level-duplicate-dialog.tsx +#, fuzzy +msgid "editor.levelDuplicateDialog.structureMaterials" +msgstr "構造 + マテリアル" + +# Source-Hash: 5ee44d53847c5ea2 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Structure, materials, furniture, and references." +#: packages/editor/src/components/ui/level-duplicate-dialog.tsx +#, fuzzy +msgid "editor.levelDuplicateDialog.structureMaterialsFurnitureAndReferences" +msgstr "構造、マテリアル、家具、参照。" + +# Source-Hash: 95aa1b43dbdb3f02 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Structure only" +#: packages/editor/src/components/ui/level-duplicate-dialog.tsx +#, fuzzy +msgid "editor.levelDuplicateDialog.structureOnly" +msgstr "構造のみ" + +# Source-Hash: 2c53b46c9ca9fe2f +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Structure with the current material and finish assignments." +#: packages/editor/src/components/ui/level-duplicate-dialog.tsx +#, fuzzy +msgid "editor.levelDuplicateDialog.structureWithTheCurrentMaterialAnd" +msgstr "現在のマテリアルと仕上げの割り当てを含む構造。" + +# Source-Hash: 3350e9008eaba15d +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Walls, slabs, roofs, stairs, windows, and doors without finishes." +#: packages/editor/src/components/ui/level-duplicate-dialog.tsx +#, fuzzy +msgid "editor.levelDuplicateDialog.wallsSlabsRoofsStairsWindowsAnd" +msgstr "壁、スラブ、屋根、階段、窓、ドア(仕上げなし)。" + +# Source-Hash: 395fd0821b203517 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Add or remove objects from the selection" +#: packages/editor/src/lib/contextual-help.ts +#, fuzzy +msgid "editor.lib.contextualHelp.addOrRemoveObjectsFromThe" +msgstr "選択にオブジェクトを追加・除外" + +# Source-Hash: 8428cb0af9c6d6a0 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Adjust one side’s corner radius" +#: packages/editor/src/lib/contextual-help.ts +#, fuzzy +msgid "editor.lib.contextualHelp.adjustOneSideSCornerRadius" +msgstr "片側の角の半径を調整" + +# Source-Hash: d63b45c195713993 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Clear the selection (or click outside)" +#: packages/editor/src/lib/contextual-help.ts +#, fuzzy +msgid "editor.lib.contextualHelp.clearTheSelectionOrClickOutside" +msgstr "選択を解除(または外側をクリック)" + +# Source-Hash: 40b1afbeadbd6213 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Click a handle dot to show move arrows" +#: packages/editor/src/lib/contextual-help.ts +#, fuzzy +msgid "editor.lib.contextualHelp.clickAHandleDotToShow" +msgstr "ハンドルの点をクリックして移動矢印を表示" + +# Source-Hash: 0b82a35c71549580 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Click or drag the selection to move it as one" +#: packages/editor/src/lib/contextual-help.ts +#, fuzzy +msgid "editor.lib.contextualHelp.clickOrDragTheSelectionTo" +msgstr "選択をクリックまたはドラッグしてまとめて移動" + +# Source-Hash: 73a761f393f69cb9 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Click the handle dot to show move + rotate handles" +#: packages/editor/src/lib/contextual-help.ts +#, fuzzy +msgid "editor.lib.contextualHelp.clickTheHandleDotToShow" +msgstr "ハンドルの点をクリックして移動・回転ハンドルを表示" + +# Source-Hash: c0045cef191fee69 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Detach the joint while dragging an arrow" +#: packages/editor/src/lib/contextual-help.ts +#, fuzzy +msgid "editor.lib.contextualHelp.detachTheJointWhileDraggingAn" +msgstr "矢印のドラッグ中に接合を外す" + +# Source-Hash: a019c8948c104a9e +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Drag left or right to rotate selected object" +#: packages/editor/src/lib/contextual-help.ts +#, fuzzy +msgid "editor.lib.contextualHelp.dragLeftOrRightToRotate" +msgstr "左右にドラッグして選択オブジェクトを回転" + +# Source-Hash: 7db0364deb12f06e +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Drag selected movable object" +#: packages/editor/src/lib/contextual-help.ts +#, fuzzy +msgid "editor.lib.contextualHelp.dragSelectedMovableObject" +msgstr "選択した可動オブジェクトをドラッグ" + +# Source-Hash: 0f258dd389afdc73 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Group selection (session only)" +#: packages/editor/src/lib/contextual-help.ts +#, fuzzy +msgid "editor.lib.contextualHelp.groupSelectionSessionOnly" +msgstr "選択をグループ化(このセッションのみ)" + +# Source-Hash: 85330d62893a45c3 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Hold to rotate freely" +#: packages/editor/src/lib/contextual-help.ts +#, fuzzy +msgid "editor.lib.contextualHelp.holdToRotateFreely" +msgstr "押したままで自由に回転" + +# Source-Hash: 8a665ecaeffa9308 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Rotate ±45°" +#: packages/editor/src/lib/contextual-help.ts +#, fuzzy +msgid "editor.lib.contextualHelp.rotate45" +msgstr "±45°回転" + +# Source-Hash: 6099ee99f8c38700 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Rotate the selection ±45°" +#: packages/editor/src/lib/contextual-help.ts +#, fuzzy +msgid "editor.lib.contextualHelp.rotateTheSelection45" +msgstr "選択を±45°回転" + +# Source-Hash: 0f6b418b18ff96f3 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Rotating freely (no angle step)" #: packages/editor/src/lib/contextual-help.ts #, fuzzy msgid "editor.lib.contextualHelp.rotatingFreely" @@ -4323,6 +4968,886 @@ msgstr "壁" msgid "editor.reloadEditor" msgstr "エディターを再読み込み" +# Source-Hash: 83909f82446ee9c3 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Settings" +#: packages/editor/src/components/ui/sidebar/icon-rail.tsx +#, fuzzy +msgid "editor.sidebar.iconRail.settings" +msgstr "設定" + +# Source-Hash: 91f90818d42a984e +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Site" +#: packages/editor/src/components/ui/sidebar/icon-rail.tsx +#, fuzzy +msgid "editor.sidebar.iconRail.site" +msgstr "敷地" + +# Source-Hash: 663175a9c461a96d +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "All" +#: packages/editor/src/components/ui/sidebar/panels/items-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.itemsPanel.all" +msgstr "すべて" + +# Source-Hash: fce9814c289e6b71 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Community" +#: packages/editor/src/components/ui/sidebar/panels/items-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.itemsPanel.community" +msgstr "コミュニティ" + +# Source-Hash: 663175a9c461a96d +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "All" +#: packages/editor/src/components/ui/sidebar/panels/items-panel/function-tree-panel.tsx +#, fuzzy +msgid "editor.sidebar.panels.itemsPanel.functionTreePanel.all" +msgstr "すべて" + +# Source-Hash: fce9814c289e6b71 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Community" +#: packages/editor/src/components/ui/sidebar/panels/items-panel/function-tree-panel.tsx +#, fuzzy +msgid "editor.sidebar.panels.itemsPanel.functionTreePanel.community" +msgstr "コミュニティ" + +# Source-Hash: 8d211c78417ed1b0 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Library" +#: packages/editor/src/components/ui/sidebar/panels/items-panel/function-tree-panel.tsx +#, fuzzy +msgid "editor.sidebar.panels.itemsPanel.functionTreePanel.library" +msgstr "ライブラリ" + +# Source-Hash: a0b7adfdfdec7307 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Mine" +#: packages/editor/src/components/ui/sidebar/panels/items-panel/function-tree-panel.tsx +#, fuzzy +msgid "editor.sidebar.panels.itemsPanel.functionTreePanel.mine" +msgstr "マイアイテム" + +# Source-Hash: 6024b7778b392ec3 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "No results for “{search}”" +#: packages/editor/src/components/ui/sidebar/panels/items-panel/function-tree-panel.tsx +#, fuzzy +msgid "editor.sidebar.panels.itemsPanel.functionTreePanel.noResultsForSearch" +msgstr "「{search}」の結果はありません" + +# Source-Hash: 4ceb6dcb7827db7f +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Search..." +#: packages/editor/src/components/ui/sidebar/panels/items-panel/function-tree-panel.tsx +#, fuzzy +msgid "editor.sidebar.panels.itemsPanel.functionTreePanel.search" +msgstr "検索..." + +# Source-Hash: 8d211c78417ed1b0 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Library" +#: packages/editor/src/components/ui/sidebar/panels/items-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.itemsPanel.library" +msgstr "ライブラリ" + +# Source-Hash: a0b7adfdfdec7307 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Mine" +#: packages/editor/src/components/ui/sidebar/panels/items-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.itemsPanel.mine" +msgstr "マイアイテム" + +# Source-Hash: 6024b7778b392ec3 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "No results for “{search}”" +#: packages/editor/src/components/ui/sidebar/panels/items-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.itemsPanel.noResultsForSearch" +msgstr "「{search}」の結果はありません" + +# Source-Hash: 4ceb6dcb7827db7f +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Search..." +#: packages/editor/src/components/ui/sidebar/panels/items-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.itemsPanel.search" +msgstr "検索..." + +# Source-Hash: 3c67cde0578ac829 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Add level" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.addLevel" +msgstr "階層を追加" + +# Source-Hash: 9a56d90d461b4bca +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Add point" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.addPoint" +msgstr "点を追加" + +# Source-Hash: fedccec504a9ae33 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Area:" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.area" +msgstr "面積:" + +# Source-Hash: 87b6880f6de7a45a +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Base elevation" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.baseElevation" +msgstr "基準高さ" + +# Source-Hash: d42f7d29e3fc4af7 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Building" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.building" +msgstr "建物" + +# Source-Hash: 7c90f458259d5cd8 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Add new level" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/building-tree-node.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.buildingTreeNode.addNewLevel" +msgstr "新しい階層を追加" + +# Source-Hash: d42f7d29e3fc4af7 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Building" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/building-tree-node.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.buildingTreeNode.building" +msgstr "建物" + +# Source-Hash: bbc65c039ae86e11 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Camera snapshot" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.cameraSnapshot" +msgstr "カメラスナップショット" + +# Source-Hash: 3a0701ebcb9f26cb +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Capture" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.capture" +msgstr "キャプチャ" + +# Source-Hash: 71f2343818c55e0c +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Clear selection" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.clearSelection" +msgstr "選択を解除" + +# Source-Hash: 67d29724469fa8d3 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Clear snapshot" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.clearSnapshot" +msgstr "スナップショットを消去" + +# Source-Hash: def517c77fda49ea +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Close walls around a space to make a room." +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.closeWallsAroundASpaceTo" +msgstr "空間を壁で囲むと部屋になります。" + +# Source-Hash: 2b9af8da4b34cbfa +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Collection colour" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/collection-tree-node.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.collectionTreeNode.collectionColour" +msgstr "コレクションの色" + +# Source-Hash: 135af27a14a4cda7 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Collections" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/collection-tree-node.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.collectionTreeNode.collections" +msgstr "コレクション" + +# Source-Hash: 6f4751c26f12aef9 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Delete collection" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/collection-tree-node.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.collectionTreeNode.deleteCollection" +msgstr "コレクションを削除" + +# Source-Hash: b26de372b4b0eaac +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Delete" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.delete" +msgstr "削除" + +# Source-Hash: 8e29375893d63408 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Delete level" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.deleteLevel" +msgstr "階層を削除" + +# Source-Hash: 6552e45eecc0a227 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Draw a zone" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.drawAZone" +msgstr "ゾーンを描画" + +# Source-Hash: 34dc96fe77a31e51 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Duplicate" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.duplicate" +msgstr "複製" + +# Source-Hash: 933177338f5a03ed +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Duplicate level" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.duplicateLevel" +msgstr "階層を複製" + +# Source-Hash: c038947f317cabba +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Duplicate level with options" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.duplicateLevelWithOptions" +msgstr "オプションを指定して階層を複製" + +# Source-Hash: 9614c6825a7c67bf +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Duplicate with options..." +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.duplicateWithOptions" +msgstr "オプションを指定して複製..." + +# Source-Hash: 7c4196b9e791c195 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Elements" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.elements" +msgstr "要素" + +# Source-Hash: 1344ea2602e3aa9e +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Guide" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.guide" +msgstr "ガイド" + +# Source-Hash: 591087ea83a48ead +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Hide" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.hide" +msgstr "非表示" + +# Source-Hash: 0608743fc1736d86 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Level" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.level" +msgstr "階層" + +# Source-Hash: 13b3e6a6afe319d1 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "New unit" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.newUnit" +msgstr "新規ユニット" + +# Source-Hash: 0192748d50f0e5f7 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "No buildings yet" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.noBuildingsYet" +msgstr "建物はまだありません" + +# Source-Hash: 1be310702a12e433 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "No elements on this level" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.noElementsOnThisLevel" +msgstr "この階層に要素はありません" + +# Source-Hash: 0956af88ced36992 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "No levels yet" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.noLevelsYet" +msgstr "階層はまだありません" + +# Source-Hash: 45c41bfb2ae19627 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "{count, plural, one {# object selected} other {# objects selected}}" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.objectsSelected" +msgstr "{count, plural, other {# 個のオブジェクトを選択中}}" + +# Source-Hash: a5434e26e5cb1b26 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Other zones" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.otherZones" +msgstr "その他のゾーン" + +# Source-Hash: 2aa38d84079d4dba +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Perimeter:" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.perimeter" +msgstr "周長:" + +# Source-Hash: 4004b9a8e4f8c9d0 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Property Line" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.propertyLine" +msgstr "敷地境界線" + +# Source-Hash: 3e7408ed44676176 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Rooms" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.rooms" +msgstr "部屋" + +# Source-Hash: ca39c0581c7318e6 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Select a level to view content" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.selectALevelToViewContent" +msgstr "階層を選択して内容を表示" + +# Source-Hash: 827e0c6ac9936b69 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Show" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.show" +msgstr "表示" + +# Source-Hash: 91f90818d42a984e +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Site" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.site" +msgstr "敷地" + +# Source-Hash: c40163620df24a76 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Take snapshot" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.takeSnapshot" +msgstr "スナップショットを撮る" + +# Source-Hash: d6b381247066a7aa +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "The ground level cannot be deleted" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.theGroundLevelCannotBeDeleted" +msgstr "1階の階層は削除できません" + +# Source-Hash: bbc65c039ae86e11 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Camera snapshot" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/tree-node-actions.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.treeNodeActions.cameraSnapshot" +msgstr "カメラスナップショット" + +# Source-Hash: 67d29724469fa8d3 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Clear snapshot" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/tree-node-actions.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.treeNodeActions.clearSnapshot" +msgstr "スナップショットを消去" + +# Source-Hash: 591087ea83a48ead +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Hide" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/tree-node-actions.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.treeNodeActions.hide" +msgstr "非表示" + +# Source-Hash: 827e0c6ac9936b69 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Show" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/tree-node-actions.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.treeNodeActions.show" +msgstr "表示" + +# Source-Hash: c40163620df24a76 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Take snapshot" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/tree-node-actions.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.treeNodeActions.takeSnapshot" +msgstr "スナップショットを撮る" + +# Source-Hash: faecab10b69d4863 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Update snapshot" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/tree-node-actions.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.treeNodeActions.updateSnapshot" +msgstr "スナップショットを更新" + +# Source-Hash: 8a1fd8827a68f236 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "View snapshot" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/tree-node-actions.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.treeNodeActions.viewSnapshot" +msgstr "スナップショットを表示" + +# Source-Hash: b404dded35241274 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Units" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.units" +msgstr "単位" + +# Source-Hash: 149fec3fd1f08042 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Delete unit" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/unit-tree-node.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.unitTreeNode.deleteUnit" +msgstr "ユニットを削除" + +# Source-Hash: 930399d3fb247a7c +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Focused" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/unit-tree-node.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.unitTreeNode.focused" +msgstr "フォーカス中" + +# Source-Hash: 41ac9dd23bb558d7 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Remove from unit" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/unit-tree-node.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.unitTreeNode.removeFromUnit" +msgstr "ユニットから削除" + +# Source-Hash: 612dcd5bf06a79c4 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Room" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/unit-tree-node.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.unitTreeNode.room" +msgstr "部屋" + +# Source-Hash: a107b4d76d6972e3 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Zone" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/unit-tree-node.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.unitTreeNode.zone" +msgstr "ゾーン" + +# Source-Hash: faecab10b69d4863 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Update snapshot" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.updateSnapshot" +msgstr "スナップショットを更新" + +# Source-Hash: 28a12e6806c091b0 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "{assetType, select, guide {Uploading guide... {progress}%} other {Uploading scan... {progress}%}}" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.uploadingProgress" +msgstr "{assetType, select, guide {ガイドをアップロード中... {progress}%} other {3Dスキャンをアップロード中... {progress}%}}" + +# Source-Hash: de389a2a46d53384 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Upload scan/floorplan" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.uploadScanFloorplan" +msgstr "3Dスキャン/平面図をアップロード" + +# Source-Hash: 8a1fd8827a68f236 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "View snapshot" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.viewSnapshot" +msgstr "スナップショットを表示" + +# Source-Hash: ba9f809cb032ee57 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "In {unitName}" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/zone-membership-checkbox.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.zoneMembershipCheckbox.inUnitname" +msgstr "{unitName}内" + +# Source-Hash: aa6d82bdb3cc1d9a +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Actions" +#: packages/editor/src/components/ui/sidebar/panels/zone-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.zonePanel.actions" +msgstr "操作" + +# Source-Hash: fcc43f22937d1536 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Add one" +#: packages/editor/src/components/ui/sidebar/panels/zone-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.zonePanel.addOne" +msgstr "追加する" + +# Source-Hash: bbc65c039ae86e11 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Camera snapshot" +#: packages/editor/src/components/ui/sidebar/panels/zone-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.zonePanel.cameraSnapshot" +msgstr "カメラスナップショット" + +# Source-Hash: 67d29724469fa8d3 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Clear snapshot" +#: packages/editor/src/components/ui/sidebar/panels/zone-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.zonePanel.clearSnapshot" +msgstr "スナップショットを消去" + +# Source-Hash: b26de372b4b0eaac +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Delete" +#: packages/editor/src/components/ui/sidebar/panels/zone-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.zonePanel.delete" +msgstr "削除" + +# Source-Hash: e2411929697b7ed4 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Delete with contents" +#: packages/editor/src/components/ui/sidebar/panels/zone-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.zonePanel.deleteWithContents" +msgstr "内容ごと削除" + +# Source-Hash: 22ca3935e8754072 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "No zones on this level." +#: packages/editor/src/components/ui/sidebar/panels/zone-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.zonePanel.noZonesOnThisLevel" +msgstr "この階層にゾーンはありません。" + +# Source-Hash: 941ea30f406dcfa2 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Save to catalog" +#: packages/editor/src/components/ui/sidebar/panels/zone-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.zonePanel.saveToCatalog" +msgstr "カタログに保存" + +# Source-Hash: 98662dfb371cac13 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Select a level to view and create zones" +#: packages/editor/src/components/ui/sidebar/panels/zone-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.zonePanel.selectALevelToViewAnd" +msgstr "階層を選択してゾーンを表示・作成" + +# Source-Hash: c40163620df24a76 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Take snapshot" +#: packages/editor/src/components/ui/sidebar/panels/zone-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.zonePanel.takeSnapshot" +msgstr "スナップショットを撮る" + +# Source-Hash: faecab10b69d4863 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Update snapshot" +#: packages/editor/src/components/ui/sidebar/panels/zone-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.zonePanel.updateSnapshot" +msgstr "スナップショットを更新" + +# Source-Hash: 8a1fd8827a68f236 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "View snapshot" +#: packages/editor/src/components/ui/sidebar/panels/zone-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.zonePanel.viewSnapshot" +msgstr "スナップショットを表示" + +# Source-Hash: 58b05af5b5724efb +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "\"{label}\" plugin crashed" +#: packages/editor/src/components/ui/sidebar/use-plugin-panels.tsx +#, fuzzy +msgid "editor.sidebar.usePluginPanels.labelPluginCrashed" +msgstr "プラグイン「{label}」がクラッシュしました" + +# Source-Hash: 9e84d6d7b9885c4f +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Loading…" +#: packages/editor/src/components/ui/sidebar/use-plugin-panels.tsx +#, fuzzy +msgid "editor.sidebar.usePluginPanels.loading" +msgstr "読み込み中…" + +# Source-Hash: 9fc7a39bc32f287a +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Plugins" +#: packages/editor/src/components/ui/sidebar/use-plugin-panels.tsx +#, fuzzy +msgid "editor.sidebar.usePluginPanels.plugins" +msgstr "プラグイン" + +# Source-Hash: c6312309378aaaea +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "This panel hit an error and was unloaded for this session. The rest of the editor is unaffected — reload to try again." +#: packages/editor/src/components/ui/sidebar/use-plugin-panels.tsx +#, fuzzy +msgid "editor.sidebar.usePluginPanels.thisPanelHitAnErrorAnd" +msgstr "このパネルでエラーが発生したため、このセッションではアンロードされました。エディターの他の部分には影響ありません。再読み込みして再試行してください。" + # Source-Hash: 834de1a7027c4da1 # Review: required # AI-Provider: cursor-agent diff --git a/packages/editor/src/i18n/locales/zh-CN/messages.po b/packages/editor/src/i18n/locales/zh-CN/messages.po index 7ab68353c7..7411acdc53 100644 --- a/packages/editor/src/i18n/locales/zh-CN/messages.po +++ b/packages/editor/src/i18n/locales/zh-CN/messages.po @@ -1083,6 +1083,96 @@ msgstr "单坡" msgid "app.lib.buildTabState.wall" msgstr "墙体" +# Source-Hash: 8d17e7556ce142da +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Another session saved first — refresh?" +#: apps/editor/components/scene-loader.tsx +#, fuzzy +msgid "app.sceneLoader.anotherSessionSavedFirstRefresh" +msgstr "另一个会话已先保存——要刷新吗?" + +# Source-Hash: 8f4b2028ad75465d +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Build" +#: apps/editor/components/scene-loader.tsx +#, fuzzy +msgid "app.sceneLoader.build" +msgstr "建造" + +# Source-Hash: a2bd204e93e90598 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Dismiss" +#: apps/editor/components/scene-loader.tsx +#, fuzzy +msgid "app.sceneLoader.dismiss" +msgstr "关闭" + +# Source-Hash: daebc0755d239c99 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Items" +#: apps/editor/components/scene-loader.tsx +#, fuzzy +msgid "app.sceneLoader.items" +msgstr "物品" + +# Source-Hash: cf2e870fce0f2f51 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Paint" +#: apps/editor/components/scene-loader.tsx +#, fuzzy +msgid "app.sceneLoader.paint" +msgstr "涂装" + +# Source-Hash: 854555777b69a4b1 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Reload" +#: apps/editor/components/scene-loader.tsx +#, fuzzy +msgid "app.sceneLoader.reload" +msgstr "重新加载" + +# Source-Hash: 8dc78e215a97d9fc +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Scene" +#: apps/editor/components/scene-loader.tsx +#, fuzzy +msgid "app.sceneLoader.scene" +msgstr "场景" + +# Source-Hash: 83909f82446ee9c3 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Settings" +#: apps/editor/components/scene-loader.tsx +#, fuzzy +msgid "app.sceneLoader.settings" +msgstr "设置" + +# Source-Hash: ee255fa26d076dcc +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Your changes haven't been saved. Reload to pick up the latest version." +#: apps/editor/components/scene-loader.tsx +#, fuzzy +msgid "app.sceneLoader.yourChangesHavenTBeenSaved" +msgstr "你的更改尚未保存。重新加载以获取最新版本。" + # Source-Hash: 703e1b4b9b715d3b # Review: required # AI-Provider: cursor-agent @@ -3063,6 +3153,256 @@ msgstr "{count, plural, other {# 段}}" msgid "editor.floatingActionMenu.system" msgstr "系统" +# Source-Hash: f0e76aea883d4e48 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Add a floor under the roof" +#: packages/editor/src/components/ui/floating-level-selector.tsx +#, fuzzy +msgid "editor.floatingLevelSelector.addAFloorUnderTheRoof" +msgstr "在屋顶下添加楼层" + +# Source-Hash: a982ff9b075af829 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Add level above" +#: packages/editor/src/components/ui/floating-level-selector.tsx +#, fuzzy +msgid "editor.floatingLevelSelector.addLevelAbove" +msgstr "在上方添加楼层" + +# Source-Hash: 0db7d221df08fa6b +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Add level below" +#: packages/editor/src/components/ui/floating-level-selector.tsx +#, fuzzy +msgid "editor.floatingLevelSelector.addLevelBelow" +msgstr "在下方添加楼层" + +# Source-Hash: c0774c185060fc13 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Cancel" +#: packages/editor/src/components/ui/floating-level-selector.tsx +#, fuzzy +msgid "editor.floatingLevelSelector.cancel" +msgstr "取消" + +# Source-Hash: b26de372b4b0eaac +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Delete" +#: packages/editor/src/components/ui/floating-level-selector.tsx +#, fuzzy +msgid "editor.floatingLevelSelector.delete" +msgstr "删除" + +# Source-Hash: 8e29375893d63408 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Delete level" +#: packages/editor/src/components/ui/floating-level-selector.tsx +#, fuzzy +msgid "editor.floatingLevelSelector.deleteLevel" +msgstr "删除楼层" + +# Source-Hash: c3bc69ec52022250 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Are you sure you want to delete {levelName}? All walls, floors, and objects on this level will be permanently removed." +#: packages/editor/src/components/ui/floating-level-selector.tsx +#, fuzzy +msgid "editor.floatingLevelSelector.deleteLevelConfirm" +msgstr "确定要删除{levelName}吗?此楼层上的所有墙体、楼板和对象都将被永久移除。" + +# Source-Hash: 5b2826ddac95cd0c +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Drag to reorder" +#: packages/editor/src/components/ui/floating-level-selector.tsx +#, fuzzy +msgid "editor.floatingLevelSelector.dragToReorder" +msgstr "拖动以重新排序" + +# Source-Hash: 933177338f5a03ed +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Duplicate level" +#: packages/editor/src/components/ui/floating-level-selector.tsx +#, fuzzy +msgid "editor.floatingLevelSelector.duplicateLevel" +msgstr "复制楼层" + +# Source-Hash: 9614c6825a7c67bf +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Duplicate with options..." +#: packages/editor/src/components/ui/floating-level-selector.tsx +#, fuzzy +msgid "editor.floatingLevelSelector.duplicateWithOptions" +msgstr "带选项复制..." + +# Source-Hash: 5ec91bb339806413 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Exit unit focus" +#: packages/editor/src/components/ui/floating-level-selector.tsx +#, fuzzy +msgid "editor.floatingLevelSelector.exitUnitFocus" +msgstr "退出单元聚焦" + +# Source-Hash: a88c3f8bed58b4fa +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Focused unit has zones here" +#: packages/editor/src/components/ui/floating-level-selector.tsx +#, fuzzy +msgid "editor.floatingLevelSelector.focusedUnitHasZonesHere" +msgstr "聚焦的单元在此有区域" + +# Source-Hash: 655055a310fb5d13 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "The ground floor stands {distance} over grade. Seat the ground floor 8 in over grade" +#: packages/editor/src/components/ui/floating-level-selector.tsx +#, fuzzy +msgid "editor.floatingLevelSelector.groundFloorOverGrade" +msgstr "首层高出地坪 {distance}。将首层设为高出地坪 8 英寸" + +# Source-Hash: 77548faae4869eec +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "The ground floor stands {distance} under grade. Seat the ground floor 8 in over grade" +#: packages/editor/src/components/ui/floating-level-selector.tsx +#, fuzzy +msgid "editor.floatingLevelSelector.groundFloorUnderGrade" +msgstr "首层低于地坪 {distance}。将首层设为高出地坪 8 英寸" + +# Source-Hash: e3763ae2dc62c03f +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Ground line: the levels under it are below grade" +#: packages/editor/src/components/ui/floating-level-selector.tsx +#, fuzzy +msgid "editor.floatingLevelSelector.groundLineTheLevelsUnderIt" +msgstr "地坪线:其下方的楼层位于地坪以下" + +# Source-Hash: e12035eb47cc61cc +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Ground · {offset}" +#: packages/editor/src/components/ui/floating-level-selector.tsx +#, fuzzy +msgid "editor.floatingLevelSelector.groundOffset" +msgstr "地坪 · {offset}" + +# Source-Hash: 5661c11383217661 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Insert level here" +#: packages/editor/src/components/ui/floating-level-selector.tsx +#, fuzzy +msgid "editor.floatingLevelSelector.insertLevelHere" +msgstr "在此插入楼层" + +# Source-Hash: 0215b36d5a08597a +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Level height" +#: packages/editor/src/components/ui/floating-level-selector.tsx +#, fuzzy +msgid "editor.floatingLevelSelector.levelHeight" +msgstr "楼层高度" + +# Source-Hash: 91af436e81bb0875 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Paste copied selection" +#: packages/editor/src/components/ui/floating-level-selector.tsx +#, fuzzy +msgid "editor.floatingLevelSelector.pasteCopiedSelection" +msgstr "粘贴复制的选择" + +# Source-Hash: 68bc52f53240cbec +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Reorder {levelName}" +#: packages/editor/src/components/ui/floating-level-selector.tsx +#, fuzzy +msgid "editor.floatingLevelSelector.reorderLevelname" +msgstr "重新排序{levelName}" + +# Source-Hash: 625d53de72ebc2ef +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Seat the building so this floor stands at grade; the floors under it are below grade" +#: packages/editor/src/components/ui/floating-level-selector.tsx +#, fuzzy +msgid "editor.floatingLevelSelector.seatTheBuildingSoThisFloor" +msgstr "调整建筑使此层位于地坪;其下方各层位于地坪以下" + +# Source-Hash: 7ac9c00895c30d76 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Set as ground floor" +#: packages/editor/src/components/ui/floating-level-selector.tsx +#, fuzzy +msgid "editor.floatingLevelSelector.setAsGroundFloor" +msgstr "设为首层" + +# Source-Hash: d6b381247066a7aa +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "The ground level cannot be deleted" +#: packages/editor/src/components/ui/floating-level-selector.tsx +#, fuzzy +msgid "editor.floatingLevelSelector.theGroundLevelCannotBeDeleted" +msgstr "无法删除首层楼层" + +# Source-Hash: b1122051dce0d7a1 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "This floor stands at grade" +#: packages/editor/src/components/ui/floating-level-selector.tsx +#, fuzzy +msgid "editor.floatingLevelSelector.thisFloorStandsAtGrade" +msgstr "此层位于地坪" + +# Source-Hash: 062cc0f1afef0c52 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Unit" +#: packages/editor/src/components/ui/floating-level-selector.tsx +#, fuzzy +msgid "editor.floatingLevelSelector.unit" +msgstr "单元" + # Source-Hash: c0774c185060fc13 # Review: required # AI-Provider: cursor-agent @@ -3773,141 +4113,446 @@ msgstr "旋转" msgid "editor.helpers.registeredToolHelper.guidedConstraintsBypassed" msgstr "已绕过引导约束" -# Source-Hash: 395fd0821b203517 +# Source-Hash: 179b025e25f9a091 # Review: required # AI-Provider: cursor-agent # AI-Model: claude-opus -# English: "Add or remove objects from the selection" -#: packages/editor/src/lib/contextual-help.ts +# English: "Collapse" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#: packages/editor/src/components/ui/sidebar/panels/site-panel/tree-node.tsx #, fuzzy -msgid "editor.lib.contextualHelp.addOrRemoveObjectsFromThe" -msgstr "在选择中添加或移除对象" +msgid "editor.layers.collapse" +msgstr "折叠" -# Source-Hash: 8428cb0af9c6d6a0 +# Source-Hash: dbeae4c43f49327f # Review: required # AI-Provider: cursor-agent # AI-Model: claude-opus -# English: "Adjust one side’s corner radius" -#: packages/editor/src/lib/contextual-help.ts +# English: "Ceiling ({area})" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/default-names.ts #, fuzzy -msgid "editor.lib.contextualHelp.adjustOneSideSCornerRadius" -msgstr "调整一侧的圆角半径" +msgid "editor.layers.defaultName.ceiling" +msgstr "天花板({area})" -# Source-Hash: d63b45c195713993 +# Source-Hash: d29165c9d4bfc3cb # Review: required # AI-Provider: cursor-agent # AI-Model: claude-opus -# English: "Clear the selection (or click outside)" -#: packages/editor/src/lib/contextual-help.ts +# English: "Collection" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/collection-tree-node.tsx #, fuzzy -msgid "editor.lib.contextualHelp.clearTheSelectionOrClickOutside" -msgstr "清除选择(或点击外部)" +msgid "editor.layers.defaultName.collection" +msgstr "集合" -# Source-Hash: 40b1afbeadbd6213 +# Source-Hash: 8f536b859be662a0 # Review: required # AI-Provider: cursor-agent # AI-Model: claude-opus -# English: "Click a handle dot to show move arrows" -#: packages/editor/src/lib/contextual-help.ts +# English: "Flight ({width}×{length}m)" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/default-names.ts #, fuzzy -msgid "editor.lib.contextualHelp.clickAHandleDotToShow" -msgstr "点击控制点以显示移动箭头" +msgid "editor.layers.defaultName.flight" +msgstr "梯段({width}×{length}m)" -# Source-Hash: 0b82a35c71549580 +# Source-Hash: 46dcbf4548374073 # Review: required # AI-Provider: cursor-agent # AI-Model: claude-opus -# English: "Click or drag the selection to move it as one" -#: packages/editor/src/lib/contextual-help.ts +# English: "Landing ({width}×{length}m)" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/default-names.ts #, fuzzy -msgid "editor.lib.contextualHelp.clickOrDragTheSelectionTo" -msgstr "点击或拖动选择以整体移动" +msgid "editor.layers.defaultName.landing" +msgstr "平台({width}×{length}m)" -# Source-Hash: 73a761f393f69cb9 +# Source-Hash: 3ea44453fcd08a6e # Review: required # AI-Provider: cursor-agent # AI-Model: claude-opus -# English: "Click the handle dot to show move + rotate handles" -#: packages/editor/src/lib/contextual-help.ts +# English: "Node" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/registry-tree-node.tsx #, fuzzy -msgid "editor.lib.contextualHelp.clickTheHandleDotToShow" -msgstr "点击控制点以显示移动和旋转控件" +msgid "editor.layers.defaultName.node" +msgstr "节点" -# Source-Hash: c0045cef191fee69 +# Source-Hash: 93f3a04e15b6fb49 # Review: required # AI-Provider: cursor-agent # AI-Model: claude-opus -# English: "Detach the joint while dragging an arrow" -#: packages/editor/src/lib/contextual-help.ts +# English: "Roof ({count, plural, one {# segment} other {# segments}})" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/default-names.ts #, fuzzy -msgid "editor.lib.contextualHelp.detachTheJointWhileDraggingAn" -msgstr "拖动箭头时断开连接" +msgid "editor.layers.defaultName.roof" +msgstr "屋顶({count, plural, other {# 个分段}})" -# Source-Hash: a019c8948c104a9e +# Source-Hash: a730fab01c172704 # Review: required # AI-Provider: cursor-agent # AI-Model: claude-opus -# English: "Drag left or right to rotate selected object" -#: packages/editor/src/lib/contextual-help.ts +# English: "{roofType, select, hip {Hip} gable {Gable} shed {Shed} gambrel {Gambrel} dutch {Dutch} mansard {Mansard} flat {Flat} conical {Conical} barrel {Barrel} other {Roof}} ({width}×{depth}m)" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/default-names.ts #, fuzzy -msgid "editor.lib.contextualHelp.dragLeftOrRightToRotate" -msgstr "左右拖动以旋转所选对象" +msgid "editor.layers.defaultName.roofSegment" +msgstr "{roofType, select, hip {四坡} gable {双坡} shed {单坡} gambrel {复折} dutch {歇山} mansard {孟莎} flat {平屋顶} conical {锥形} barrel {筒形} other {屋顶}}({width}×{depth}m)" -# Source-Hash: 7db0364deb12f06e +# Source-Hash: 54efcb0756c2f2c1 # Review: required # AI-Provider: cursor-agent # AI-Model: claude-opus -# English: "Drag selected movable object" -#: packages/editor/src/lib/contextual-help.ts +# English: "Room ({area})" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/default-names.ts #, fuzzy -msgid "editor.lib.contextualHelp.dragSelectedMovableObject" -msgstr "拖动所选的可移动对象" +msgid "editor.layers.defaultName.room" +msgstr "房间({area})" -# Source-Hash: 0f258dd389afdc73 +# Source-Hash: e38a4b9986a9d21a # Review: required # AI-Provider: cursor-agent # AI-Model: claude-opus -# English: "Group selection (session only)" -#: packages/editor/src/lib/contextual-help.ts +# English: "Slab ({area})" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/default-names.ts #, fuzzy -msgid "editor.lib.contextualHelp.groupSelectionSessionOnly" -msgstr "组合所选(仅本次会话)" +msgid "editor.layers.defaultName.slab" +msgstr "楼板({area})" -# Source-Hash: 85330d62893a45c3 +# Source-Hash: 57398365d4b9066f # Review: required # AI-Provider: cursor-agent # AI-Model: claude-opus -# English: "Hold to rotate freely" -#: packages/editor/src/lib/contextual-help.ts +# English: "Staircase ({count, plural, one {# segment} other {# segments}})" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/default-names.ts #, fuzzy -msgid "editor.lib.contextualHelp.holdToRotateFreely" -msgstr "按住以自由旋转" +msgid "editor.layers.defaultName.staircase" +msgstr "楼梯({count, plural, other {# 个分段}})" -# Source-Hash: 8a665ecaeffa9308 +# Source-Hash: a17f8fc29aae896e # Review: required # AI-Provider: cursor-agent # AI-Model: claude-opus -# English: "Rotate ±45°" -#: packages/editor/src/lib/contextual-help.ts +# English: "Zone ({area})" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/default-names.ts #, fuzzy -msgid "editor.lib.contextualHelp.rotate45" -msgstr "旋转 ±45°" +msgid "editor.layers.defaultName.zone" +msgstr "区域({area})" -# Source-Hash: 6099ee99f8c38700 +# Source-Hash: 5cabcabb8bc14809 # Review: required # AI-Provider: cursor-agent # AI-Model: claude-opus -# English: "Rotate the selection ±45°" -#: packages/editor/src/lib/contextual-help.ts +# English: "Expand" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#: packages/editor/src/components/ui/sidebar/panels/site-panel/tree-node.tsx #, fuzzy -msgid "editor.lib.contextualHelp.rotateTheSelection45" -msgstr "将所选旋转 ±45°" +msgid "editor.layers.expand" +msgstr "展开" -# Source-Hash: 0f6b418b18ff96f3 +# Source-Hash: 6731e9dd94e8b268 # Review: required # AI-Provider: cursor-agent # AI-Model: claude-opus -# English: "Rotating freely (no angle step)" +# English: "{levelName} options" +#: packages/editor/src/components/ui/floating-level-selector.tsx +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.layers.levelOptions" +msgstr "{levelName}选项" + +# Source-Hash: d6952b4e54d246dd +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Rename" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/inline-rename-input.tsx +#, fuzzy +msgid "editor.layers.rename" +msgstr "重命名" + +# Source-Hash: 21eafa019ad62fea +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "{role, select, room {Room colour} other {Zone colour}}" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#: packages/editor/src/components/ui/sidebar/panels/site-panel/zone-tree-node.tsx +#: packages/editor/src/components/ui/sidebar/panels/zone-panel/index.tsx +#, fuzzy +msgid "editor.layers.spaceColour" +msgstr "{role, select, room {房间颜色} other {区域颜色}}" + +# Source-Hash: f5de042416a2c04f +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Unit colour" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/unit-tree-node.tsx +#, fuzzy +msgid "editor.layers.unitColour" +msgstr "单元颜色" + +# Source-Hash: c0774c185060fc13 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Cancel" +#: packages/editor/src/components/ui/level-duplicate-dialog.tsx +#, fuzzy +msgid "editor.levelDuplicateDialog.cancel" +msgstr "取消" + +# Source-Hash: 07c11e7e4d4681d6 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Choose what to copy from {levelName}." +#: packages/editor/src/components/ui/level-duplicate-dialog.tsx +#, fuzzy +msgid "editor.levelDuplicateDialog.chooseWhatToCopyFromLevel" +msgstr "选择要从{levelName}复制的内容。" + +# Source-Hash: 9500d4378a319532 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Choose what to copy from this level." +#: packages/editor/src/components/ui/level-duplicate-dialog.tsx +#, fuzzy +msgid "editor.levelDuplicateDialog.chooseWhatToCopyFromThisLevel" +msgstr "选择要从此楼层复制的内容。" + +# Source-Hash: 34dc96fe77a31e51 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Duplicate" +#: packages/editor/src/components/ui/level-duplicate-dialog.tsx +#, fuzzy +msgid "editor.levelDuplicateDialog.duplicate" +msgstr "复制" + +# Source-Hash: a56e3eb43e60b45c +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Duplicate Level" +#: packages/editor/src/components/ui/level-duplicate-dialog.tsx +#, fuzzy +msgid "editor.levelDuplicateDialog.duplicateLevel" +msgstr "复制楼层" + +# Source-Hash: e4c6ab1ea473a082 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Everything" +#: packages/editor/src/components/ui/level-duplicate-dialog.tsx +#, fuzzy +msgid "editor.levelDuplicateDialog.everything" +msgstr "全部" + +# Source-Hash: ac3f119e560388ab +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Structure, finishes, and placed items, without guide references." +#: packages/editor/src/components/ui/level-duplicate-dialog.tsx +#, fuzzy +msgid "editor.levelDuplicateDialog.structureFinishesAndPlacedItemsWithout" +msgstr "结构、饰面和已放置的物品,不含参考底图。" + +# Source-Hash: acbdf968391d5273 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Structure + furniture" +#: packages/editor/src/components/ui/level-duplicate-dialog.tsx +#, fuzzy +msgid "editor.levelDuplicateDialog.structureFurniture" +msgstr "结构 + 家具" + +# Source-Hash: ce682864a140fe75 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Structure + materials" +#: packages/editor/src/components/ui/level-duplicate-dialog.tsx +#, fuzzy +msgid "editor.levelDuplicateDialog.structureMaterials" +msgstr "结构 + 材质" + +# Source-Hash: 5ee44d53847c5ea2 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Structure, materials, furniture, and references." +#: packages/editor/src/components/ui/level-duplicate-dialog.tsx +#, fuzzy +msgid "editor.levelDuplicateDialog.structureMaterialsFurnitureAndReferences" +msgstr "结构、材质、家具和参考。" + +# Source-Hash: 95aa1b43dbdb3f02 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Structure only" +#: packages/editor/src/components/ui/level-duplicate-dialog.tsx +#, fuzzy +msgid "editor.levelDuplicateDialog.structureOnly" +msgstr "仅结构" + +# Source-Hash: 2c53b46c9ca9fe2f +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Structure with the current material and finish assignments." +#: packages/editor/src/components/ui/level-duplicate-dialog.tsx +#, fuzzy +msgid "editor.levelDuplicateDialog.structureWithTheCurrentMaterialAnd" +msgstr "结构及当前的材质和饰面分配。" + +# Source-Hash: 3350e9008eaba15d +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Walls, slabs, roofs, stairs, windows, and doors without finishes." +#: packages/editor/src/components/ui/level-duplicate-dialog.tsx +#, fuzzy +msgid "editor.levelDuplicateDialog.wallsSlabsRoofsStairsWindowsAnd" +msgstr "墙体、楼板、屋顶、楼梯、窗和门,不含饰面。" + +# Source-Hash: 395fd0821b203517 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Add or remove objects from the selection" +#: packages/editor/src/lib/contextual-help.ts +#, fuzzy +msgid "editor.lib.contextualHelp.addOrRemoveObjectsFromThe" +msgstr "在选择中添加或移除对象" + +# Source-Hash: 8428cb0af9c6d6a0 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Adjust one side’s corner radius" +#: packages/editor/src/lib/contextual-help.ts +#, fuzzy +msgid "editor.lib.contextualHelp.adjustOneSideSCornerRadius" +msgstr "调整一侧的圆角半径" + +# Source-Hash: d63b45c195713993 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Clear the selection (or click outside)" +#: packages/editor/src/lib/contextual-help.ts +#, fuzzy +msgid "editor.lib.contextualHelp.clearTheSelectionOrClickOutside" +msgstr "清除选择(或点击外部)" + +# Source-Hash: 40b1afbeadbd6213 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Click a handle dot to show move arrows" +#: packages/editor/src/lib/contextual-help.ts +#, fuzzy +msgid "editor.lib.contextualHelp.clickAHandleDotToShow" +msgstr "点击控制点以显示移动箭头" + +# Source-Hash: 0b82a35c71549580 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Click or drag the selection to move it as one" +#: packages/editor/src/lib/contextual-help.ts +#, fuzzy +msgid "editor.lib.contextualHelp.clickOrDragTheSelectionTo" +msgstr "点击或拖动选择以整体移动" + +# Source-Hash: 73a761f393f69cb9 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Click the handle dot to show move + rotate handles" +#: packages/editor/src/lib/contextual-help.ts +#, fuzzy +msgid "editor.lib.contextualHelp.clickTheHandleDotToShow" +msgstr "点击控制点以显示移动和旋转控件" + +# Source-Hash: c0045cef191fee69 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Detach the joint while dragging an arrow" +#: packages/editor/src/lib/contextual-help.ts +#, fuzzy +msgid "editor.lib.contextualHelp.detachTheJointWhileDraggingAn" +msgstr "拖动箭头时断开连接" + +# Source-Hash: a019c8948c104a9e +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Drag left or right to rotate selected object" +#: packages/editor/src/lib/contextual-help.ts +#, fuzzy +msgid "editor.lib.contextualHelp.dragLeftOrRightToRotate" +msgstr "左右拖动以旋转所选对象" + +# Source-Hash: 7db0364deb12f06e +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Drag selected movable object" +#: packages/editor/src/lib/contextual-help.ts +#, fuzzy +msgid "editor.lib.contextualHelp.dragSelectedMovableObject" +msgstr "拖动所选的可移动对象" + +# Source-Hash: 0f258dd389afdc73 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Group selection (session only)" +#: packages/editor/src/lib/contextual-help.ts +#, fuzzy +msgid "editor.lib.contextualHelp.groupSelectionSessionOnly" +msgstr "组合所选(仅本次会话)" + +# Source-Hash: 85330d62893a45c3 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Hold to rotate freely" +#: packages/editor/src/lib/contextual-help.ts +#, fuzzy +msgid "editor.lib.contextualHelp.holdToRotateFreely" +msgstr "按住以自由旋转" + +# Source-Hash: 8a665ecaeffa9308 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Rotate ±45°" +#: packages/editor/src/lib/contextual-help.ts +#, fuzzy +msgid "editor.lib.contextualHelp.rotate45" +msgstr "旋转 ±45°" + +# Source-Hash: 6099ee99f8c38700 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Rotate the selection ±45°" +#: packages/editor/src/lib/contextual-help.ts +#, fuzzy +msgid "editor.lib.contextualHelp.rotateTheSelection45" +msgstr "将所选旋转 ±45°" + +# Source-Hash: 0f6b418b18ff96f3 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Rotating freely (no angle step)" #: packages/editor/src/lib/contextual-help.ts #, fuzzy msgid "editor.lib.contextualHelp.rotatingFreely" @@ -4323,6 +4968,886 @@ msgstr "墙体" msgid "editor.reloadEditor" msgstr "重新加载编辑器" +# Source-Hash: 83909f82446ee9c3 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Settings" +#: packages/editor/src/components/ui/sidebar/icon-rail.tsx +#, fuzzy +msgid "editor.sidebar.iconRail.settings" +msgstr "设置" + +# Source-Hash: 91f90818d42a984e +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Site" +#: packages/editor/src/components/ui/sidebar/icon-rail.tsx +#, fuzzy +msgid "editor.sidebar.iconRail.site" +msgstr "场地" + +# Source-Hash: 663175a9c461a96d +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "All" +#: packages/editor/src/components/ui/sidebar/panels/items-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.itemsPanel.all" +msgstr "全部" + +# Source-Hash: fce9814c289e6b71 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Community" +#: packages/editor/src/components/ui/sidebar/panels/items-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.itemsPanel.community" +msgstr "社区" + +# Source-Hash: 663175a9c461a96d +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "All" +#: packages/editor/src/components/ui/sidebar/panels/items-panel/function-tree-panel.tsx +#, fuzzy +msgid "editor.sidebar.panels.itemsPanel.functionTreePanel.all" +msgstr "全部" + +# Source-Hash: fce9814c289e6b71 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Community" +#: packages/editor/src/components/ui/sidebar/panels/items-panel/function-tree-panel.tsx +#, fuzzy +msgid "editor.sidebar.panels.itemsPanel.functionTreePanel.community" +msgstr "社区" + +# Source-Hash: 8d211c78417ed1b0 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Library" +#: packages/editor/src/components/ui/sidebar/panels/items-panel/function-tree-panel.tsx +#, fuzzy +msgid "editor.sidebar.panels.itemsPanel.functionTreePanel.library" +msgstr "素材库" + +# Source-Hash: a0b7adfdfdec7307 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Mine" +#: packages/editor/src/components/ui/sidebar/panels/items-panel/function-tree-panel.tsx +#, fuzzy +msgid "editor.sidebar.panels.itemsPanel.functionTreePanel.mine" +msgstr "我的" + +# Source-Hash: 6024b7778b392ec3 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "No results for “{search}”" +#: packages/editor/src/components/ui/sidebar/panels/items-panel/function-tree-panel.tsx +#, fuzzy +msgid "editor.sidebar.panels.itemsPanel.functionTreePanel.noResultsForSearch" +msgstr "没有“{search}”的结果" + +# Source-Hash: 4ceb6dcb7827db7f +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Search..." +#: packages/editor/src/components/ui/sidebar/panels/items-panel/function-tree-panel.tsx +#, fuzzy +msgid "editor.sidebar.panels.itemsPanel.functionTreePanel.search" +msgstr "搜索..." + +# Source-Hash: 8d211c78417ed1b0 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Library" +#: packages/editor/src/components/ui/sidebar/panels/items-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.itemsPanel.library" +msgstr "素材库" + +# Source-Hash: a0b7adfdfdec7307 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Mine" +#: packages/editor/src/components/ui/sidebar/panels/items-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.itemsPanel.mine" +msgstr "我的" + +# Source-Hash: 6024b7778b392ec3 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "No results for “{search}”" +#: packages/editor/src/components/ui/sidebar/panels/items-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.itemsPanel.noResultsForSearch" +msgstr "没有“{search}”的结果" + +# Source-Hash: 4ceb6dcb7827db7f +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Search..." +#: packages/editor/src/components/ui/sidebar/panels/items-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.itemsPanel.search" +msgstr "搜索..." + +# Source-Hash: 3c67cde0578ac829 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Add level" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.addLevel" +msgstr "添加楼层" + +# Source-Hash: 9a56d90d461b4bca +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Add point" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.addPoint" +msgstr "添加点" + +# Source-Hash: fedccec504a9ae33 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Area:" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.area" +msgstr "面积:" + +# Source-Hash: 87b6880f6de7a45a +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Base elevation" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.baseElevation" +msgstr "基准标高" + +# Source-Hash: d42f7d29e3fc4af7 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Building" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.building" +msgstr "建筑" + +# Source-Hash: 7c90f458259d5cd8 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Add new level" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/building-tree-node.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.buildingTreeNode.addNewLevel" +msgstr "添加新楼层" + +# Source-Hash: d42f7d29e3fc4af7 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Building" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/building-tree-node.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.buildingTreeNode.building" +msgstr "建筑" + +# Source-Hash: bbc65c039ae86e11 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Camera snapshot" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.cameraSnapshot" +msgstr "相机快照" + +# Source-Hash: 3a0701ebcb9f26cb +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Capture" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.capture" +msgstr "采集" + +# Source-Hash: 71f2343818c55e0c +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Clear selection" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.clearSelection" +msgstr "清除选择" + +# Source-Hash: 67d29724469fa8d3 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Clear snapshot" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.clearSnapshot" +msgstr "清除快照" + +# Source-Hash: def517c77fda49ea +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Close walls around a space to make a room." +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.closeWallsAroundASpaceTo" +msgstr "用墙体围合一个空间即可创建房间。" + +# Source-Hash: 2b9af8da4b34cbfa +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Collection colour" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/collection-tree-node.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.collectionTreeNode.collectionColour" +msgstr "集合颜色" + +# Source-Hash: 135af27a14a4cda7 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Collections" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/collection-tree-node.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.collectionTreeNode.collections" +msgstr "集合" + +# Source-Hash: 6f4751c26f12aef9 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Delete collection" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/collection-tree-node.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.collectionTreeNode.deleteCollection" +msgstr "删除集合" + +# Source-Hash: b26de372b4b0eaac +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Delete" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.delete" +msgstr "删除" + +# Source-Hash: 8e29375893d63408 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Delete level" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.deleteLevel" +msgstr "删除楼层" + +# Source-Hash: 6552e45eecc0a227 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Draw a zone" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.drawAZone" +msgstr "绘制区域" + +# Source-Hash: 34dc96fe77a31e51 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Duplicate" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.duplicate" +msgstr "复制" + +# Source-Hash: 933177338f5a03ed +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Duplicate level" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.duplicateLevel" +msgstr "复制楼层" + +# Source-Hash: c038947f317cabba +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Duplicate level with options" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.duplicateLevelWithOptions" +msgstr "带选项复制楼层" + +# Source-Hash: 9614c6825a7c67bf +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Duplicate with options..." +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.duplicateWithOptions" +msgstr "带选项复制..." + +# Source-Hash: 7c4196b9e791c195 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Elements" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.elements" +msgstr "元素" + +# Source-Hash: 1344ea2602e3aa9e +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Guide" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.guide" +msgstr "参考图" + +# Source-Hash: 591087ea83a48ead +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Hide" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.hide" +msgstr "隐藏" + +# Source-Hash: 0608743fc1736d86 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Level" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.level" +msgstr "楼层" + +# Source-Hash: 13b3e6a6afe319d1 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "New unit" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.newUnit" +msgstr "新建单元" + +# Source-Hash: 0192748d50f0e5f7 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "No buildings yet" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.noBuildingsYet" +msgstr "暂无建筑" + +# Source-Hash: 1be310702a12e433 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "No elements on this level" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.noElementsOnThisLevel" +msgstr "此楼层上没有元素" + +# Source-Hash: 0956af88ced36992 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "No levels yet" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.noLevelsYet" +msgstr "暂无楼层" + +# Source-Hash: 45c41bfb2ae19627 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "{count, plural, one {# object selected} other {# objects selected}}" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.objectsSelected" +msgstr "{count, plural, other {已选择 # 个对象}}" + +# Source-Hash: a5434e26e5cb1b26 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Other zones" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.otherZones" +msgstr "其他区域" + +# Source-Hash: 2aa38d84079d4dba +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Perimeter:" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.perimeter" +msgstr "周长:" + +# Source-Hash: 4004b9a8e4f8c9d0 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Property Line" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.propertyLine" +msgstr "地界线" + +# Source-Hash: 3e7408ed44676176 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Rooms" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.rooms" +msgstr "房间" + +# Source-Hash: ca39c0581c7318e6 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Select a level to view content" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.selectALevelToViewContent" +msgstr "选择楼层以查看内容" + +# Source-Hash: 827e0c6ac9936b69 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Show" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.show" +msgstr "显示" + +# Source-Hash: 91f90818d42a984e +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Site" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.site" +msgstr "场地" + +# Source-Hash: c40163620df24a76 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Take snapshot" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.takeSnapshot" +msgstr "拍摄快照" + +# Source-Hash: d6b381247066a7aa +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "The ground level cannot be deleted" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.theGroundLevelCannotBeDeleted" +msgstr "无法删除首层楼层" + +# Source-Hash: bbc65c039ae86e11 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Camera snapshot" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/tree-node-actions.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.treeNodeActions.cameraSnapshot" +msgstr "相机快照" + +# Source-Hash: 67d29724469fa8d3 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Clear snapshot" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/tree-node-actions.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.treeNodeActions.clearSnapshot" +msgstr "清除快照" + +# Source-Hash: 591087ea83a48ead +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Hide" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/tree-node-actions.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.treeNodeActions.hide" +msgstr "隐藏" + +# Source-Hash: 827e0c6ac9936b69 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Show" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/tree-node-actions.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.treeNodeActions.show" +msgstr "显示" + +# Source-Hash: c40163620df24a76 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Take snapshot" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/tree-node-actions.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.treeNodeActions.takeSnapshot" +msgstr "拍摄快照" + +# Source-Hash: faecab10b69d4863 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Update snapshot" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/tree-node-actions.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.treeNodeActions.updateSnapshot" +msgstr "更新快照" + +# Source-Hash: 8a1fd8827a68f236 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "View snapshot" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/tree-node-actions.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.treeNodeActions.viewSnapshot" +msgstr "查看快照" + +# Source-Hash: b404dded35241274 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Units" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.units" +msgstr "单位" + +# Source-Hash: 149fec3fd1f08042 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Delete unit" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/unit-tree-node.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.unitTreeNode.deleteUnit" +msgstr "删除单元" + +# Source-Hash: 930399d3fb247a7c +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Focused" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/unit-tree-node.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.unitTreeNode.focused" +msgstr "已聚焦" + +# Source-Hash: 41ac9dd23bb558d7 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Remove from unit" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/unit-tree-node.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.unitTreeNode.removeFromUnit" +msgstr "从单元中移除" + +# Source-Hash: 612dcd5bf06a79c4 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Room" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/unit-tree-node.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.unitTreeNode.room" +msgstr "房间" + +# Source-Hash: a107b4d76d6972e3 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Zone" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/unit-tree-node.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.unitTreeNode.zone" +msgstr "区域" + +# Source-Hash: faecab10b69d4863 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Update snapshot" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.updateSnapshot" +msgstr "更新快照" + +# Source-Hash: 28a12e6806c091b0 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "{assetType, select, guide {Uploading guide... {progress}%} other {Uploading scan... {progress}%}}" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.uploadingProgress" +msgstr "{assetType, select, guide {正在上传参考底图... {progress}%} other {正在上传扫描模型... {progress}%}}" + +# Source-Hash: de389a2a46d53384 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Upload scan/floorplan" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.uploadScanFloorplan" +msgstr "上传扫描模型/平面图" + +# Source-Hash: 8a1fd8827a68f236 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "View snapshot" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.viewSnapshot" +msgstr "查看快照" + +# Source-Hash: ba9f809cb032ee57 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "In {unitName}" +#: packages/editor/src/components/ui/sidebar/panels/site-panel/zone-membership-checkbox.tsx +#, fuzzy +msgid "editor.sidebar.panels.sitePanel.zoneMembershipCheckbox.inUnitname" +msgstr "在{unitName}中" + +# Source-Hash: aa6d82bdb3cc1d9a +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Actions" +#: packages/editor/src/components/ui/sidebar/panels/zone-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.zonePanel.actions" +msgstr "操作" + +# Source-Hash: fcc43f22937d1536 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Add one" +#: packages/editor/src/components/ui/sidebar/panels/zone-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.zonePanel.addOne" +msgstr "添加一个" + +# Source-Hash: bbc65c039ae86e11 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Camera snapshot" +#: packages/editor/src/components/ui/sidebar/panels/zone-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.zonePanel.cameraSnapshot" +msgstr "相机快照" + +# Source-Hash: 67d29724469fa8d3 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Clear snapshot" +#: packages/editor/src/components/ui/sidebar/panels/zone-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.zonePanel.clearSnapshot" +msgstr "清除快照" + +# Source-Hash: b26de372b4b0eaac +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Delete" +#: packages/editor/src/components/ui/sidebar/panels/zone-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.zonePanel.delete" +msgstr "删除" + +# Source-Hash: e2411929697b7ed4 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Delete with contents" +#: packages/editor/src/components/ui/sidebar/panels/zone-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.zonePanel.deleteWithContents" +msgstr "连同内容一起删除" + +# Source-Hash: 22ca3935e8754072 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "No zones on this level." +#: packages/editor/src/components/ui/sidebar/panels/zone-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.zonePanel.noZonesOnThisLevel" +msgstr "此楼层上没有区域。" + +# Source-Hash: 941ea30f406dcfa2 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Save to catalog" +#: packages/editor/src/components/ui/sidebar/panels/zone-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.zonePanel.saveToCatalog" +msgstr "保存到目录" + +# Source-Hash: 98662dfb371cac13 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Select a level to view and create zones" +#: packages/editor/src/components/ui/sidebar/panels/zone-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.zonePanel.selectALevelToViewAnd" +msgstr "选择楼层以查看和创建区域" + +# Source-Hash: c40163620df24a76 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Take snapshot" +#: packages/editor/src/components/ui/sidebar/panels/zone-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.zonePanel.takeSnapshot" +msgstr "拍摄快照" + +# Source-Hash: faecab10b69d4863 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Update snapshot" +#: packages/editor/src/components/ui/sidebar/panels/zone-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.zonePanel.updateSnapshot" +msgstr "更新快照" + +# Source-Hash: 8a1fd8827a68f236 +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "View snapshot" +#: packages/editor/src/components/ui/sidebar/panels/zone-panel/index.tsx +#, fuzzy +msgid "editor.sidebar.panels.zonePanel.viewSnapshot" +msgstr "查看快照" + +# Source-Hash: 58b05af5b5724efb +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "\"{label}\" plugin crashed" +#: packages/editor/src/components/ui/sidebar/use-plugin-panels.tsx +#, fuzzy +msgid "editor.sidebar.usePluginPanels.labelPluginCrashed" +msgstr "“{label}”插件已崩溃" + +# Source-Hash: 9e84d6d7b9885c4f +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Loading…" +#: packages/editor/src/components/ui/sidebar/use-plugin-panels.tsx +#, fuzzy +msgid "editor.sidebar.usePluginPanels.loading" +msgstr "加载中…" + +# Source-Hash: 9fc7a39bc32f287a +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "Plugins" +#: packages/editor/src/components/ui/sidebar/use-plugin-panels.tsx +#, fuzzy +msgid "editor.sidebar.usePluginPanels.plugins" +msgstr "插件" + +# Source-Hash: c6312309378aaaea +# Review: required +# AI-Provider: cursor-agent +# AI-Model: claude-opus +# English: "This panel hit an error and was unloaded for this session. The rest of the editor is unaffected — reload to try again." +#: packages/editor/src/components/ui/sidebar/use-plugin-panels.tsx +#, fuzzy +msgid "editor.sidebar.usePluginPanels.thisPanelHitAnErrorAnd" +msgstr "此面板发生错误,已在本次会话中卸载。编辑器的其余部分不受影响——重新加载即可重试。" + # Source-Hash: 834de1a7027c4da1 # Review: required # AI-Provider: cursor-agent diff --git a/packages/editor/src/i18n/message-slot.tsx b/packages/editor/src/i18n/message-slot.tsx new file mode 100644 index 0000000000..11c63ead67 --- /dev/null +++ b/packages/editor/src/i18n/message-slot.tsx @@ -0,0 +1,25 @@ +import type { MessageDescriptor, PascalI18n } from '@pascal-app/core' +import { Fragment, type ReactNode } from 'react' + +const SLOT = '\uE000' + +/** + * Renders a whole translated sentence with one React element (a bold name, a + * link) where the message has `{slot}`, so translators can move it anywhere. + */ +export function messageWithSlot( + i18n: PascalI18n, + descriptor: MessageDescriptor, + slot: string, + element: ReactNode, +): ReactNode { + const values = { ...descriptor.values, [slot]: SLOT } + const text = i18n._(descriptor.id, values, { message: descriptor.message }) + const parts = text.split(SLOT) + return parts.map((part, index) => ( + + {index > 0 && element} + {part} + + )) +} diff --git a/scripts/i18n-codemod.ts b/scripts/i18n-codemod.ts index 55046e5dd7..6f273f38bb 100644 --- a/scripts/i18n-codemod.ts +++ b/scripts/i18n-codemod.ts @@ -217,21 +217,28 @@ function hookEdits(source: ts.SourceFile, component: ts.FunctionLikeDeclaration) } function importEdit(source: ts.SourceFile): Edit | undefined { - for (const statement of source.statements) { + const coreImports = source.statements.flatMap((statement) => { if ( - ts.isImportDeclaration(statement) && - ts.isStringLiteral(statement.moduleSpecifier) && - statement.moduleSpecifier.text === '@pascal-app/core' + !ts.isImportDeclaration(statement) || + !ts.isStringLiteral(statement.moduleSpecifier) || + statement.moduleSpecifier.text !== '@pascal-app/core' ) { - const bindings = statement.importClause?.namedBindings - if (bindings && ts.isNamedImports(bindings)) { - if (bindings.elements.some((element) => element.name.text === HOOK)) return undefined - if (!statement.importClause?.isTypeOnly) { - const last = bindings.elements[bindings.elements.length - 1] - if (last) return { start: last.end, end: last.end, text: `, ${HOOK}` } - } - } + return [] } + const bindings = statement.importClause?.namedBindings + return bindings && ts.isNamedImports(bindings) ? [{ statement, bindings }] : [] + }) + if ( + coreImports.some(({ bindings }) => + bindings.elements.some((element) => element.name.text === HOOK), + ) + ) { + return undefined + } + for (const { statement, bindings } of coreImports) { + if (statement.importClause?.isTypeOnly) continue + const last = bindings.elements[bindings.elements.length - 1] + if (last) return { start: last.end, end: last.end, text: `, ${HOOK}` } } const firstImport = source.statements.find(ts.isImportDeclaration) if (firstImport) { diff --git a/scripts/i18n-literals.test.ts b/scripts/i18n-literals.test.ts index 3a046c7246..8ae8178fd9 100644 --- a/scripts/i18n-literals.test.ts +++ b/scripts/i18n-literals.test.ts @@ -72,6 +72,21 @@ test('the codemod wraps visible copy in runtime descriptors owned by the compone expect(scanSource('apps/editor/components/share-panel.tsx', output, allowlist)).toEqual([]) }) +test('a hook already imported from a second core import is not imported again', () => { + const source = `'use client' + +import { useScene } from '@pascal-app/core' +import { formatNumber, usePascalI18n } from '@pascal-app/core' + +export function Count() { + return

Levels

+} +` + const { output } = convert('packages/editor/src/components/count.tsx', source) + expect(output.match(/usePascalI18n\b/g)).toHaveLength(2) + expect(output).toContain("import { useScene } from '@pascal-app/core'") +}) + test('the codemod leaves module-level copy for a person and never edits it', () => { const source = `const ITEMS = [{ label: 'Delete' }]