feat: complete house plan maker application
Full-featured house/apartment floor plan editor with: - Turborepo monorepo (React/Vite client, Fastify/Prisma server, shared Zod schemas) - 2D room editor with walls, doors, windows, furniture, electrical elements - 3D room preview with Three.js (auto-hide nearest walls, bird's eye default) - Wall projection views with interactive drag (elevation, position) - Apartment floor plan view with room positioning - Copy/paste, alignment tools, measurement tool, annotations - Item-attached annotations with leader lines (visible on projections) - Door open direction (LEFT/RIGHT/INWARD/OUTWARD) with swing arc - Floor type textures (wood, tile, concrete, laminate, herringbone) - Wall color picker for 3D view - Furniture: bed, desk, wardrobe, sofa, table, chair, shelf, nightstand, dresser, bookcase, TV (with stand toggle), AC unit - Furniture elevation support (wall-mounted items) - Auto-save with dirty state tracking, batch save API - Rotation-aware collision detection (SAT/OBB) with 3D elevation check - Rotation-aware hit testing - i18n (English/Russian) with locale-aware number formatting - Dark mode with system preference detection - Undo/redo, keyboard shortcuts, scale bar - PDF/PNG/JSON export and JSON import - Focus trap modal, toast notifications, tooltips - Responsive layout with overlay palettes
This commit is contained in:
@@ -0,0 +1,292 @@
|
||||
{
|
||||
"app.title": "House Plan Maker",
|
||||
|
||||
"wall.north": "North Wall",
|
||||
"wall.south": "South Wall",
|
||||
"wall.east": "East Wall",
|
||||
"wall.west": "West Wall",
|
||||
"wall.other": "Wall",
|
||||
|
||||
"furniture.bed": "Bed",
|
||||
"furniture.desk": "Desk",
|
||||
"furniture.wardrobe": "Wardrobe",
|
||||
"furniture.sofa": "Sofa",
|
||||
"furniture.table": "Table",
|
||||
"furniture.chair": "Chair",
|
||||
"furniture.shelf": "Shelf",
|
||||
"furniture.nightstand": "Nightstand",
|
||||
"furniture.dresser": "Dresser",
|
||||
"furniture.bookcase": "Bookcase",
|
||||
"furniture.tv": "TV",
|
||||
"furniture.ac_unit": "AC Unit",
|
||||
"furniture.other": "Other",
|
||||
|
||||
"nav.apartments": "Apartments",
|
||||
|
||||
"breadcrumb.apartments": "Apartments",
|
||||
"breadcrumb.apartmentDetails": "Apartment Details",
|
||||
"breadcrumb.roomEditor": "Room Editor",
|
||||
"breadcrumb.floorPlan": "Floor Plan",
|
||||
|
||||
"apartments.title": "Apartments",
|
||||
"apartments.new": "New Apartment",
|
||||
"apartments.create": "Create Apartment",
|
||||
"apartments.empty.title": "No apartments yet",
|
||||
"apartments.empty.description": "Create your first apartment to start planning rooms and layouts.",
|
||||
"apartments.delete.title": "Delete Apartment",
|
||||
"apartments.delete.message": "Are you sure you want to delete \"{{name}}\"? This will also delete all rooms and their contents. This action cannot be undone.",
|
||||
"apartments.error.load": "Failed to load apartments",
|
||||
"apartments.error.operation": "Operation failed",
|
||||
"apartments.error.delete": "Failed to delete apartment",
|
||||
|
||||
"apartment.notFound": "Apartment not found",
|
||||
|
||||
"apartmentForm.titleNew": "New Apartment",
|
||||
"apartmentForm.titleEdit": "Edit Apartment",
|
||||
"apartmentForm.name": "Name",
|
||||
"apartmentForm.namePlaceholder": "e.g., Main Apartment",
|
||||
"apartmentForm.address": "Address",
|
||||
"apartmentForm.addressPlaceholder": "e.g., 123 Main St",
|
||||
"apartmentForm.totalArea": "Total Area (m\u00b2)",
|
||||
"apartmentForm.totalAreaPlaceholder": "e.g., 75",
|
||||
"apartmentForm.saving": "Saving...",
|
||||
"apartmentForm.creating": "Creating...",
|
||||
"apartmentForm.saveChanges": "Save Changes",
|
||||
"apartmentForm.createApartment": "Create Apartment",
|
||||
|
||||
"apartmentCard.area": "Area:",
|
||||
"apartmentCard.rooms": "Rooms:",
|
||||
"apartmentCard.edit": "Edit",
|
||||
"apartmentCard.delete": "Delete",
|
||||
|
||||
"rooms.title": "Rooms",
|
||||
"rooms.add": "Add Room",
|
||||
"rooms.addFirst": "Add First Room",
|
||||
"rooms.fromTemplate": "From Template",
|
||||
"rooms.empty.title": "No rooms yet",
|
||||
"rooms.empty.description": "Add rooms to this apartment to start designing floor plans.",
|
||||
"rooms.delete.title": "Delete Room",
|
||||
"rooms.delete.message": "Are you sure you want to delete \"{{name}}\"? All walls, openings, electrical items, and furniture in this room will be deleted. This action cannot be undone.",
|
||||
"rooms.error.load": "Failed to load apartment",
|
||||
"rooms.error.operation": "Operation failed",
|
||||
"rooms.error.create": "Failed to create room",
|
||||
"rooms.error.delete": "Failed to delete room",
|
||||
"rooms.count": "{{count}} room",
|
||||
"rooms.count_other": "{{count}} rooms",
|
||||
"rooms.dimensions": "{{width}} x {{height}} m",
|
||||
"rooms.vertices": "{{count}} vertices",
|
||||
"rooms.wallHeight": "Wall height: {{value}} m",
|
||||
"rooms.plinth": "Plinth: {{value}} m",
|
||||
|
||||
"roomForm.titleNew": "New Room",
|
||||
"roomForm.titleEdit": "Edit Room",
|
||||
"roomForm.name": "Room Name",
|
||||
"roomForm.namePlaceholder": "e.g., Living Room",
|
||||
"roomForm.shape": "Shape",
|
||||
"roomForm.rectangular": "Rectangular",
|
||||
"roomForm.customPolygon": "Custom Polygon",
|
||||
"roomForm.width": "Width (m)",
|
||||
"roomForm.widthPlaceholder": "e.g., 4.5",
|
||||
"roomForm.height": "Height (m)",
|
||||
"roomForm.heightPlaceholder": "e.g., 3.2",
|
||||
"roomForm.customNote": "Custom polygon shapes can be drawn in the room editor.",
|
||||
"roomForm.currentVertices": " Current shape has {{count}} vertices.",
|
||||
"roomForm.defaultShape": " A default rectangular shape will be created.",
|
||||
"roomForm.wallProperties": "Wall Properties",
|
||||
"roomForm.wallHeight": "Wall Height (m)",
|
||||
"roomForm.plinthProperties": "Plinth Properties",
|
||||
"roomForm.plinthHeight": "Height (m)",
|
||||
"roomForm.plinthThickness": "Thickness (m)",
|
||||
"roomForm.plinthHeightHint": "Default: 0.06 m",
|
||||
"roomForm.plinthThicknessHint": "Default: 0.01 m",
|
||||
"roomForm.saving": "Saving...",
|
||||
"roomForm.creating": "Creating...",
|
||||
"roomForm.saveChanges": "Save Changes",
|
||||
"roomForm.createRoom": "Create Room",
|
||||
"roomForm.widthError": "Width must be positive",
|
||||
"roomForm.heightError": "Height must be positive",
|
||||
|
||||
"roomCard.edit": "Edit",
|
||||
"roomCard.delete": "Delete",
|
||||
|
||||
"common.cancel": "Cancel",
|
||||
"common.delete": "Delete",
|
||||
"common.deleting": "Deleting...",
|
||||
"common.loading": "Loading...",
|
||||
"common.dismissError": "Dismiss error",
|
||||
|
||||
"editor.save": "Save",
|
||||
"editor.saving": "Saving...",
|
||||
"editor.saveFailed": "Save failed: {{error}}",
|
||||
"editor.error.load": "Failed to load room",
|
||||
"editor.roomNotFound": "Room not found",
|
||||
"editor.loading3D": "Loading 3D view...",
|
||||
"editor.unsavedChanges": "You have unsaved changes. Are you sure you want to leave?",
|
||||
|
||||
"toolbar.select": "Select",
|
||||
"toolbar.door": "Door",
|
||||
"toolbar.window": "Window",
|
||||
"toolbar.electrical": "Electrical",
|
||||
"toolbar.furniture": "Furniture",
|
||||
"toolbar.measure": "Measure",
|
||||
"toolbar.annotate": "Annotate",
|
||||
"toolbar.undo": "Undo (Ctrl+Z)",
|
||||
"toolbar.redo": "Redo (Ctrl+Shift+Z)",
|
||||
"toolbar.zoomIn": "Zoom in",
|
||||
"toolbar.zoomOut": "Zoom out",
|
||||
"toolbar.grid": "Grid",
|
||||
"toolbar.snap": "Snap",
|
||||
"toolbar.walls": "Walls",
|
||||
"toolbar.elec": "Elec",
|
||||
"toolbar.furn": "Furn",
|
||||
"toolbar.meas": "Meas",
|
||||
"toolbar.toggleGrid": "Toggle grid",
|
||||
"toolbar.toggleSnap": "Toggle snap",
|
||||
"toolbar.toggleWalls": "Toggle walls layer",
|
||||
"toolbar.toggleElectrical": "Toggle electrical layer",
|
||||
"toolbar.toggleFurniture": "Toggle furniture layer",
|
||||
"toolbar.toggleMeasurements": "Toggle measurements layer",
|
||||
"toolbar.import": "Import JSON",
|
||||
"toolbar.export": "Export (PNG/PDF/JSON)",
|
||||
"toolbar.saveShortcut": "Save (Ctrl+S)",
|
||||
"toolbar.view2D": "2D",
|
||||
"toolbar.view3D": "3D Preview",
|
||||
"toolbar.viewProjections": "Projections",
|
||||
"toolbar.alignLeft": "Align left",
|
||||
"toolbar.alignCenterH": "Center horizontal",
|
||||
"toolbar.alignRight": "Align right",
|
||||
"toolbar.alignTop": "Align top",
|
||||
"toolbar.alignCenterV": "Center vertical",
|
||||
"toolbar.alignBottom": "Align bottom",
|
||||
"toolbar.distributeH": "Distribute horizontal",
|
||||
"toolbar.distributeV": "Distribute vertical",
|
||||
|
||||
"properties.title": "Properties",
|
||||
"properties.area": "Area",
|
||||
"properties.perimeter": "Perimeter",
|
||||
"properties.noSelection": "No element selected",
|
||||
"properties.selectHint": "Click an element to see its properties",
|
||||
"properties.multipleSelected": "{{count}} elements selected",
|
||||
"properties.roomInfo": "Room Info",
|
||||
"properties.name": "Name",
|
||||
"properties.wallHeight": "Wall height",
|
||||
"properties.plinthHeight": "Plinth height",
|
||||
"properties.walls": "Walls",
|
||||
"properties.openings": "Openings",
|
||||
"properties.wall": "Wall",
|
||||
"properties.length": "Length",
|
||||
"properties.thickness": "Thickness",
|
||||
"properties.startX": "Start X",
|
||||
"properties.startY": "Start Y",
|
||||
"properties.endX": "End X",
|
||||
"properties.endY": "End Y",
|
||||
"properties.direction": "Direction",
|
||||
"properties.door": "Door",
|
||||
"properties.window": "Window",
|
||||
"properties.width": "Width",
|
||||
"properties.height": "Height",
|
||||
"properties.position": "Position",
|
||||
"properties.elevation": "Elevation",
|
||||
"properties.wallLength": "Wall length",
|
||||
"properties.type": "Type",
|
||||
"properties.variant": "Variant",
|
||||
"properties.x": "X",
|
||||
"properties.y": "Y",
|
||||
"properties.rotation": "Rotation",
|
||||
"properties.wallMounted": "Wall-mounted",
|
||||
"properties.yes": "Yes",
|
||||
"properties.depth": "Depth",
|
||||
"properties.wallColor": "Wall color",
|
||||
"properties.floorType": "Floor",
|
||||
"floor.CONCRETE": "Concrete",
|
||||
"floor.WOOD_LIGHT": "Light Wood",
|
||||
"floor.WOOD_MEDIUM": "Medium Wood",
|
||||
"floor.WOOD_DARK": "Dark Wood",
|
||||
"floor.WOOD_HERRINGBONE": "Herringbone",
|
||||
"floor.TILE_WHITE": "White Tile",
|
||||
"floor.TILE_GRAY": "Gray Tile",
|
||||
"floor.LAMINATE": "Laminate",
|
||||
"properties.addNote": "Add note",
|
||||
"properties.stand": "Stand",
|
||||
"properties.openDirection": "Open direction",
|
||||
"properties.openDir.LEFT": "Left",
|
||||
"properties.openDir.RIGHT": "Right",
|
||||
"properties.openDir.INWARD": "Inward",
|
||||
"properties.openDir.OUTWARD": "Outward",
|
||||
"properties.openDir.LEFT": "Left",
|
||||
"properties.openDir.RIGHT": "Right",
|
||||
"properties.openDir.INWARD": "Inward",
|
||||
"properties.openDir.OUTWARD": "Outward",
|
||||
|
||||
"electrical.title": "Electrical",
|
||||
"electrical.outlets": "Outlets",
|
||||
"electrical.switches": "Switches",
|
||||
"electrical.junction": "Junction",
|
||||
"electrical.lights": "Lights",
|
||||
"electrical.cable": "Cable",
|
||||
|
||||
"furniture.title": "Furniture",
|
||||
|
||||
"cableLength.label": "Cable length:",
|
||||
|
||||
"projection.title": "Wall Projections",
|
||||
"projection.grid": "Grid",
|
||||
"projection.tabs": "Tabs",
|
||||
"projection.noWall": "No wall selected",
|
||||
|
||||
"templates.title": "New Room from Template",
|
||||
"templates.create": "Create Room",
|
||||
"templates.roomName": "Room Name (optional)",
|
||||
"templates.bedroom": "Bedroom",
|
||||
"templates.bedroomDesc": "Standard bedroom (4m x 3.5m) with door and window",
|
||||
"templates.kitchen": "Kitchen",
|
||||
"templates.kitchenDesc": "Kitchen (3.5m x 3m) with door",
|
||||
"templates.bathroom": "Bathroom",
|
||||
"templates.bathroomDesc": "Bathroom (2.5m x 2m)",
|
||||
"templates.livingRoom": "Living Room",
|
||||
"templates.livingRoomDesc": "Spacious living room (5m x 4m) with window",
|
||||
"templates.office": "Office",
|
||||
"templates.officeDesc": "Home office (3m x 2.5m)",
|
||||
"templates.emptyRoom": "Empty Room",
|
||||
"templates.emptyRoomDesc": "Custom empty room (3m x 3m)",
|
||||
|
||||
"export.title": "Export",
|
||||
"export.format": "Format",
|
||||
"export.png": "PNG Image",
|
||||
"export.pdf": "PDF Document",
|
||||
"export.json": "JSON Data",
|
||||
"export.scope": "Scope",
|
||||
"export.currentView": "Current View",
|
||||
"export.allRoomViews": "All Room Views",
|
||||
"export.options": "Options",
|
||||
"export.includeGrid": "Include grid",
|
||||
"export.scaleFactor": "Scale factor:",
|
||||
"export.exporting": "Exporting...",
|
||||
"export.exportBtn": "Export",
|
||||
"export.generating": "Generating export...",
|
||||
"export.error.3dNotAvailable": "3D canvas not available",
|
||||
"export.error.2dNotAvailable": "2D canvas not available",
|
||||
"export.error.failed": "Export failed",
|
||||
|
||||
"floorPlan.back": "Back",
|
||||
"floorPlan.reset": "Reset",
|
||||
"floorPlan.dblClickToEdit": "Double-click to edit",
|
||||
|
||||
"annotation.editPrompt": "Edit annotation text:",
|
||||
|
||||
"editor.importFailed": "Import failed: {{error}}",
|
||||
|
||||
"projection.clickToPlace": "Click on wall to place item",
|
||||
|
||||
"export.pdfTitle": "House Plan",
|
||||
"export.pdfGenerated": "Generated: {{date}}",
|
||||
"export.pdfRoomCount": "{{count}} room",
|
||||
"export.pdfRoomCount_other": "{{count}} rooms",
|
||||
"export.pdfWallProjections": "{{name}} - Wall Projections",
|
||||
|
||||
"toast.notifications": "Notifications",
|
||||
"toast.dismiss": "Dismiss notification",
|
||||
|
||||
"theme.toggle": "Toggle dark mode",
|
||||
"language.toggle": "Switch language"
|
||||
}
|
||||
@@ -0,0 +1,298 @@
|
||||
{
|
||||
"app.title": "Планировщик квартир",
|
||||
|
||||
"wall.north": "Северная стена",
|
||||
"wall.south": "Южная стена",
|
||||
"wall.east": "Восточная стена",
|
||||
"wall.west": "Западная стена",
|
||||
"wall.other": "Стена",
|
||||
|
||||
"furniture.bed": "Кровать",
|
||||
"furniture.desk": "Стол",
|
||||
"furniture.wardrobe": "Шкаф",
|
||||
"furniture.sofa": "Диван",
|
||||
"furniture.table": "Стол обеденный",
|
||||
"furniture.chair": "Стул",
|
||||
"furniture.shelf": "Полка",
|
||||
"furniture.nightstand": "Тумбочка",
|
||||
"furniture.dresser": "Комод",
|
||||
"furniture.bookcase": "Книжный шкаф",
|
||||
"furniture.tv": "Телевизор",
|
||||
"furniture.ac_unit": "Кондиционер",
|
||||
"furniture.other": "Другое",
|
||||
|
||||
"nav.apartments": "Квартиры",
|
||||
|
||||
"breadcrumb.apartments": "Квартиры",
|
||||
"breadcrumb.apartmentDetails": "Детали квартиры",
|
||||
"breadcrumb.roomEditor": "Редактор комнаты",
|
||||
"breadcrumb.floorPlan": "План этажа",
|
||||
|
||||
"apartments.title": "Квартиры",
|
||||
"apartments.new": "Новая квартира",
|
||||
"apartments.create": "Создать квартиру",
|
||||
"apartments.empty.title": "Нет квартир",
|
||||
"apartments.empty.description": "Создайте первую квартиру, чтобы начать планировку комнат.",
|
||||
"apartments.delete.title": "Удалить квартиру",
|
||||
"apartments.delete.message": "Вы уверены, что хотите удалить \"{{name}}\"? Все комнаты и их содержимое также будут удалены. Это действие нельзя отменить.",
|
||||
"apartments.error.load": "Не удалось загрузить квартиры",
|
||||
"apartments.error.operation": "Операция не удалась",
|
||||
"apartments.error.delete": "Не удалось удалить квартиру",
|
||||
|
||||
"apartment.notFound": "Квартира не найдена",
|
||||
|
||||
"apartmentForm.titleNew": "Новая квартира",
|
||||
"apartmentForm.titleEdit": "Редактировать квартиру",
|
||||
"apartmentForm.name": "Название",
|
||||
"apartmentForm.namePlaceholder": "напр., Основная квартира",
|
||||
"apartmentForm.address": "Адрес",
|
||||
"apartmentForm.addressPlaceholder": "напр., ул. Главная 123",
|
||||
"apartmentForm.totalArea": "Общая площадь (м\u00b2)",
|
||||
"apartmentForm.totalAreaPlaceholder": "напр., 75",
|
||||
"apartmentForm.saving": "Сохранение...",
|
||||
"apartmentForm.creating": "Создание...",
|
||||
"apartmentForm.saveChanges": "Сохранить изменения",
|
||||
"apartmentForm.createApartment": "Создать квартиру",
|
||||
|
||||
"apartmentCard.area": "Площадь:",
|
||||
"apartmentCard.rooms": "Комнаты:",
|
||||
"apartmentCard.edit": "Изменить",
|
||||
"apartmentCard.delete": "Удалить",
|
||||
|
||||
"rooms.title": "Комнаты",
|
||||
"rooms.add": "Добавить комнату",
|
||||
"rooms.addFirst": "Добавить первую комнату",
|
||||
"rooms.fromTemplate": "Из шаблона",
|
||||
"rooms.empty.title": "Нет комнат",
|
||||
"rooms.empty.description": "Добавьте комнаты для создания планировок.",
|
||||
"rooms.delete.title": "Удалить комнату",
|
||||
"rooms.delete.message": "Вы уверены, что хотите удалить \"{{name}}\"? Все стены, проёмы, электрика и мебель в этой комнате будут удалены. Это действие нельзя отменить.",
|
||||
"rooms.error.load": "Не удалось загрузить квартиру",
|
||||
"rooms.error.operation": "Операция не удалась",
|
||||
"rooms.error.create": "Не удалось создать комнату",
|
||||
"rooms.error.delete": "Не удалось удалить комнату",
|
||||
"rooms.count": "{{count}} комната",
|
||||
"rooms.count_one": "{{count}} комната",
|
||||
"rooms.count_few": "{{count}} комнаты",
|
||||
"rooms.count_many": "{{count}} комнат",
|
||||
"rooms.count_other": "{{count}} комнат",
|
||||
"rooms.dimensions": "{{width}} x {{height}} м",
|
||||
"rooms.vertices": "{{count}} вершин",
|
||||
"rooms.wallHeight": "Высота стен: {{value}} м",
|
||||
"rooms.plinth": "Плинтус: {{value}} м",
|
||||
|
||||
"roomForm.titleNew": "Новая комната",
|
||||
"roomForm.titleEdit": "Редактировать комнату",
|
||||
"roomForm.name": "Название комнаты",
|
||||
"roomForm.namePlaceholder": "напр., Гостиная",
|
||||
"roomForm.shape": "Форма",
|
||||
"roomForm.rectangular": "Прямоугольная",
|
||||
"roomForm.customPolygon": "Произвольный многоугольник",
|
||||
"roomForm.width": "Ширина (м)",
|
||||
"roomForm.widthPlaceholder": "напр., 4,5",
|
||||
"roomForm.height": "Длина (м)",
|
||||
"roomForm.heightPlaceholder": "напр., 3,2",
|
||||
"roomForm.customNote": "Произвольные формы можно нарисовать в редакторе комнаты.",
|
||||
"roomForm.currentVertices": " Текущая форма имеет {{count}} вершин.",
|
||||
"roomForm.defaultShape": " Будет создана прямоугольная форма по умолчанию.",
|
||||
"roomForm.wallProperties": "Свойства стен",
|
||||
"roomForm.wallHeight": "Высота стен (м)",
|
||||
"roomForm.plinthProperties": "Свойства плинтуса",
|
||||
"roomForm.plinthHeight": "Высота (м)",
|
||||
"roomForm.plinthThickness": "Толщина (м)",
|
||||
"roomForm.plinthHeightHint": "По умолчанию: 0,06 м",
|
||||
"roomForm.plinthThicknessHint": "По умолчанию: 0,01 м",
|
||||
"roomForm.saving": "Сохранение...",
|
||||
"roomForm.creating": "Создание...",
|
||||
"roomForm.saveChanges": "Сохранить изменения",
|
||||
"roomForm.createRoom": "Создать комнату",
|
||||
"roomForm.widthError": "Ширина должна быть положительной",
|
||||
"roomForm.heightError": "Высота должна быть положительной",
|
||||
|
||||
"roomCard.edit": "Изменить",
|
||||
"roomCard.delete": "Удалить",
|
||||
|
||||
"common.cancel": "Отмена",
|
||||
"common.delete": "Удалить",
|
||||
"common.deleting": "Удаление...",
|
||||
"common.loading": "Загрузка...",
|
||||
"common.dismissError": "Закрыть ошибку",
|
||||
|
||||
"editor.save": "Сохранить",
|
||||
"editor.saving": "Сохранение...",
|
||||
"editor.saveFailed": "Ошибка сохранения: {{error}}",
|
||||
"editor.error.load": "Не удалось загрузить комнату",
|
||||
"editor.roomNotFound": "Комната не найдена",
|
||||
"editor.loading3D": "Загрузка 3D вида...",
|
||||
"editor.unsavedChanges": "У вас есть несохранённые изменения. Вы уверены, что хотите уйти?",
|
||||
|
||||
"toolbar.select": "Выбрать",
|
||||
"toolbar.door": "Дверь",
|
||||
"toolbar.window": "Окно",
|
||||
"toolbar.electrical": "Электрика",
|
||||
"toolbar.furniture": "Мебель",
|
||||
"toolbar.measure": "Измерить",
|
||||
"toolbar.annotate": "Аннотация",
|
||||
"toolbar.undo": "Отменить (Ctrl+Z)",
|
||||
"toolbar.redo": "Повторить (Ctrl+Shift+Z)",
|
||||
"toolbar.zoomIn": "Увеличить",
|
||||
"toolbar.zoomOut": "Уменьшить",
|
||||
"toolbar.grid": "Сетка",
|
||||
"toolbar.snap": "Привязка",
|
||||
"toolbar.walls": "Стены",
|
||||
"toolbar.elec": "Элек",
|
||||
"toolbar.furn": "Мебель",
|
||||
"toolbar.meas": "Разм",
|
||||
"toolbar.toggleGrid": "Переключить сетку",
|
||||
"toolbar.toggleSnap": "Переключить привязку",
|
||||
"toolbar.toggleWalls": "Переключить слой стен",
|
||||
"toolbar.toggleElectrical": "Переключить слой электрики",
|
||||
"toolbar.toggleFurniture": "Переключить слой мебели",
|
||||
"toolbar.toggleMeasurements": "Переключить слой размеров",
|
||||
"toolbar.import": "Импорт JSON",
|
||||
"toolbar.export": "Экспорт (PNG/PDF/JSON)",
|
||||
"toolbar.saveShortcut": "Сохранить (Ctrl+S)",
|
||||
"toolbar.view2D": "2D",
|
||||
"toolbar.view3D": "3D Просмотр",
|
||||
"toolbar.viewProjections": "Проекции",
|
||||
"toolbar.alignLeft": "Выровнять по левому краю",
|
||||
"toolbar.alignCenterH": "Центрировать по горизонтали",
|
||||
"toolbar.alignRight": "Выровнять по правому краю",
|
||||
"toolbar.alignTop": "Выровнять по верхнему краю",
|
||||
"toolbar.alignCenterV": "Центрировать по вертикали",
|
||||
"toolbar.alignBottom": "Выровнять по нижнему краю",
|
||||
"toolbar.distributeH": "Распределить по горизонтали",
|
||||
"toolbar.distributeV": "Распределить по вертикали",
|
||||
|
||||
"properties.title": "Свойства",
|
||||
"properties.area": "Площадь",
|
||||
"properties.perimeter": "Периметр",
|
||||
"properties.noSelection": "Элемент не выбран",
|
||||
"properties.selectHint": "Нажмите на элемент, чтобы увидеть его свойства",
|
||||
"properties.multipleSelected": "Выбрано элементов: {{count}}",
|
||||
"properties.roomInfo": "Информация о комнате",
|
||||
"properties.name": "Название",
|
||||
"properties.wallHeight": "Высота стен",
|
||||
"properties.plinthHeight": "Высота плинтуса",
|
||||
"properties.walls": "Стены",
|
||||
"properties.openings": "Проёмы",
|
||||
"properties.wall": "Стена",
|
||||
"properties.length": "Длина",
|
||||
"properties.thickness": "Толщина",
|
||||
"properties.startX": "Начало X",
|
||||
"properties.startY": "Начало Y",
|
||||
"properties.endX": "Конец X",
|
||||
"properties.endY": "Конец Y",
|
||||
"properties.direction": "Направление",
|
||||
"properties.door": "Дверь",
|
||||
"properties.window": "Окно",
|
||||
"properties.width": "Ширина",
|
||||
"properties.height": "Высота",
|
||||
"properties.position": "Положение",
|
||||
"properties.elevation": "Высота от пола",
|
||||
"properties.wallLength": "Длина стены",
|
||||
"properties.type": "Тип",
|
||||
"properties.variant": "Вариант",
|
||||
"properties.x": "X",
|
||||
"properties.y": "Y",
|
||||
"properties.rotation": "Поворот",
|
||||
"properties.wallMounted": "На стене",
|
||||
"properties.yes": "Да",
|
||||
"properties.depth": "Глубина",
|
||||
"properties.wallColor": "Цвет стен",
|
||||
"properties.floorType": "Пол",
|
||||
"floor.CONCRETE": "Бетон",
|
||||
"floor.WOOD_LIGHT": "Светлое дерево",
|
||||
"floor.WOOD_MEDIUM": "Среднее дерево",
|
||||
"floor.WOOD_DARK": "Тёмное дерево",
|
||||
"floor.WOOD_HERRINGBONE": "Ёлочка",
|
||||
"floor.TILE_WHITE": "Белая плитка",
|
||||
"floor.TILE_GRAY": "Серая плитка",
|
||||
"floor.LAMINATE": "Ламинат",
|
||||
"properties.addNote": "Добавить заметку",
|
||||
"properties.stand": "Подставка",
|
||||
"properties.openDirection": "Направление открытия",
|
||||
"properties.openDir.LEFT": "Влево",
|
||||
"properties.openDir.RIGHT": "Вправо",
|
||||
"properties.openDir.INWARD": "Внутрь",
|
||||
"properties.openDir.OUTWARD": "Наружу",
|
||||
"properties.openDir.LEFT": "Влево",
|
||||
"properties.openDir.RIGHT": "Вправо",
|
||||
"properties.openDir.INWARD": "Внутрь",
|
||||
"properties.openDir.OUTWARD": "Наружу",
|
||||
|
||||
"electrical.title": "Электрика",
|
||||
"electrical.outlets": "Розетки",
|
||||
"electrical.switches": "Выключатели",
|
||||
"electrical.junction": "Распределительная коробка",
|
||||
"electrical.lights": "Освещение",
|
||||
"electrical.cable": "Кабель",
|
||||
|
||||
"furniture.title": "Мебель",
|
||||
|
||||
"cableLength.label": "Длина кабеля:",
|
||||
|
||||
"projection.title": "Проекции стен",
|
||||
"projection.grid": "Сетка",
|
||||
"projection.tabs": "Вкладки",
|
||||
"projection.noWall": "Стена не выбрана",
|
||||
|
||||
"templates.title": "Новая комната из шаблона",
|
||||
"templates.create": "Создать комнату",
|
||||
"templates.roomName": "Название комнаты (необязательно)",
|
||||
"templates.bedroom": "Спальня",
|
||||
"templates.bedroomDesc": "Стандартная спальня (4м x 3,5м) с дверью и окном",
|
||||
"templates.kitchen": "Кухня",
|
||||
"templates.kitchenDesc": "Кухня (3,5м x 3м) с дверью",
|
||||
"templates.bathroom": "Ванная",
|
||||
"templates.bathroomDesc": "Ванная комната (2,5м x 2м)",
|
||||
"templates.livingRoom": "Гостиная",
|
||||
"templates.livingRoomDesc": "Просторная гостиная (5м x 4м) с окном",
|
||||
"templates.office": "Кабинет",
|
||||
"templates.officeDesc": "Домашний кабинет (3м x 2,5м)",
|
||||
"templates.emptyRoom": "Пустая комната",
|
||||
"templates.emptyRoomDesc": "Пустая комната (3м x 3м)",
|
||||
|
||||
"export.title": "Экспорт",
|
||||
"export.format": "Формат",
|
||||
"export.png": "PNG изображение",
|
||||
"export.pdf": "PDF документ",
|
||||
"export.json": "JSON данные",
|
||||
"export.scope": "Область",
|
||||
"export.currentView": "Текущий вид",
|
||||
"export.allRoomViews": "Все виды комнаты",
|
||||
"export.options": "Параметры",
|
||||
"export.includeGrid": "Включить сетку",
|
||||
"export.scaleFactor": "Масштаб:",
|
||||
"export.exporting": "Экспорт...",
|
||||
"export.exportBtn": "Экспорт",
|
||||
"export.generating": "Создание экспорта...",
|
||||
"export.error.3dNotAvailable": "3D холст недоступен",
|
||||
"export.error.2dNotAvailable": "2D холст недоступен",
|
||||
"export.error.failed": "Ошибка экспорта",
|
||||
|
||||
"floorPlan.back": "Назад",
|
||||
"floorPlan.reset": "Сброс",
|
||||
"floorPlan.dblClickToEdit": "Двойной клик для редактирования",
|
||||
|
||||
"annotation.editPrompt": "Редактировать текст аннотации:",
|
||||
|
||||
"editor.importFailed": "Ошибка импорта: {{error}}",
|
||||
|
||||
"projection.clickToPlace": "Нажмите на стену, чтобы разместить элемент",
|
||||
|
||||
"export.pdfTitle": "План дома",
|
||||
"export.pdfGenerated": "Создано: {{date}}",
|
||||
"export.pdfRoomCount": "{{count}} комната",
|
||||
"export.pdfRoomCount_one": "{{count}} комната",
|
||||
"export.pdfRoomCount_few": "{{count}} комнаты",
|
||||
"export.pdfRoomCount_many": "{{count}} комнат",
|
||||
"export.pdfRoomCount_other": "{{count}} комнат",
|
||||
"export.pdfWallProjections": "{{name}} — Проекции стен",
|
||||
|
||||
"toast.notifications": "Уведомления",
|
||||
"toast.dismiss": "Закрыть уведомление",
|
||||
|
||||
"theme.toggle": "Переключить тёмную тему",
|
||||
"language.toggle": "Сменить язык"
|
||||
}
|
||||
Reference in New Issue
Block a user