深度画布多语言

This commit is contained in:
lzp
2026-03-26 13:34:52 +08:00
parent dd22e97985
commit 2b34e45b2d
10 changed files with 131 additions and 41 deletions

View File

@@ -22,6 +22,8 @@
import depthSlider from './tools/depth-slider.vue' import depthSlider from './tools/depth-slider.vue'
import { OperationType } from '../tools/layerHelper' import { OperationType } from '../tools/layerHelper'
import brushControlPanel from './brush-control-panel.vue' import brushControlPanel from './brush-control-panel.vue'
import { useI18n } from 'vue-i18n'
const { t } = useI18n()
const props = defineProps({ const props = defineProps({
currentTool: { required: true, type: [String, null] } currentTool: { required: true, type: [String, null] }
@@ -38,22 +40,22 @@
{ {
type: OperationType.AISELECT_ADD, type: OperationType.AISELECT_ADD,
name: 'dc-add_sb', name: 'dc-add_sb',
label: 'Add' label: t('DepthCanvas.add')
}, },
{ {
type: OperationType.AISELECT_REMOVE, type: OperationType.AISELECT_REMOVE,
name: 'dc-remove_sb', name: 'dc-remove_sb',
label: 'Remove' label: t('DepthCanvas.remove')
}, },
{ {
type: OperationType.AISELECT_DRAW, type: OperationType.AISELECT_DRAW,
name: 'dc-brush_sb', name: 'dc-brush_sb',
label: 'Brush' label: t('DepthCanvas.brush')
}, },
{ {
type: OperationType.AISELECT_ERASER, type: OperationType.AISELECT_ERASER,
name: 'dc-erase_sb', name: 'dc-erase_sb',
label: 'Erase' label: t('DepthCanvas.erase')
} }
]) ])
const onClickItem = (type: string) => { const onClickItem = (type: string) => {

View File

@@ -30,7 +30,7 @@
</template> </template>
<button class="export" @click="emit('export')"> <button class="export" @click="emit('export')">
<span class="icon"><svg-icon name="export" size="12" /></span> <span class="icon"><svg-icon name="export" size="12" /></span>
<span class="text">Export</span> <span class="text">{{ $t('DepthCanvas.export') }}</span>
</button> </button>
<!-- <button class="export" @click="emit('export-local')"> <!-- <button class="export" @click="emit('export-local')">
<span class="text">保存本地</span> <span class="text">保存本地</span>
@@ -40,7 +40,7 @@
</button> --> </button> -->
<button class="workbench" @click="onWorkbench"> <button class="workbench" @click="onWorkbench">
<span class="icon"><svg-icon name="dc-workbench" size="20" /></span> <span class="icon"><svg-icon name="dc-workbench" size="20" /></span>
<span class="text">Workbench</span> <span class="text">{{ $t('DepthCanvas.save') }}</span>
</button> </button>
</div> </div>
</template> </template>
@@ -49,6 +49,8 @@
import { ref, inject, computed } from 'vue' import { ref, inject, computed } from 'vue'
import { exportCanvasToImage } from '../tools/exportMethod' import { exportCanvasToImage } from '../tools/exportMethod'
import { OperationType, BlendMode } from '../tools/layerHelper' import { OperationType, BlendMode } from '../tools/layerHelper'
import { useI18n } from 'vue-i18n'
const { t } = useI18n()
const props = defineProps({ const props = defineProps({
zoom: { default: 1, type: Number }, zoom: { default: 1, type: Number },
step: { default: 0.1, type: Number } step: { default: 0.1, type: Number }
@@ -86,37 +88,37 @@
child: [ child: [
{ {
name: OperationType.RECTANGLE, name: OperationType.RECTANGLE,
label: 'Rectangle', label: t('DepthCanvas.rectangle'),
icon: 'dc-rectangle', icon: 'dc-rectangle',
iconSize: 13 iconSize: 13
}, },
{ {
name: OperationType.LINE, name: OperationType.LINE,
label: 'Line', label: t('DepthCanvas.line'),
icon: 'dc-line', icon: 'dc-line',
iconSize: 10 iconSize: 10
}, },
{ {
name: OperationType.ARROW, name: OperationType.ARROW,
label: 'Arrow', label: t('DepthCanvas.arrow'),
icon: 'dc-arrow', icon: 'dc-arrow',
iconSize: 11 iconSize: 11
}, },
{ {
name: OperationType.ELLIPSE, name: OperationType.ELLIPSE,
label: 'Ellipse', label: t('DepthCanvas.ellipse'),
icon: 'dc-ellipse', icon: 'dc-ellipse',
iconSize: 15 iconSize: 15
}, },
{ {
name: OperationType.TRIANGLE, name: OperationType.TRIANGLE,
label: 'Polygon', label: t('DepthCanvas.triangle'),
icon: 'dc-triangle', icon: 'dc-triangle',
iconSize: 14 iconSize: 14
}, },
{ {
name: OperationType.STAR, name: OperationType.STAR,
label: 'Star', label: t('DepthCanvas.star'),
icon: 'dc-star', icon: 'dc-star',
iconSize: 15 iconSize: 15
} }

View File

@@ -1,7 +1,7 @@
<template> <template>
<div class="basic-info h"> <div class="basic-info h">
<div> <div>
<div class="title">Position</div> <div class="title">{{ $t('DepthCanvas.position') }}</div>
<div class="content"> <div class="content">
<div> <div>
<depth-input <depth-input
@@ -44,7 +44,7 @@
</div> </div>
</div> </div>
<div> <div>
<div class="title">Scale</div> <div class="title">{{ $t('DepthCanvas.scale') }}</div>
<div class="content"> <div class="content">
<div> <div>
<depth-input <depth-input

View File

@@ -1,16 +1,16 @@
<template> <template>
<div class="fill-repeat h"> <div class="fill-repeat h">
<div> <div>
<div class="title">Image</div> <div class="title">{{ $t('DepthCanvas.image') }}</div>
<div class="content"> <div class="content">
<img :src="object.info.fill.source" alt="" /> <img :src="object.info.fill.source" alt="" />
</div> </div>
</div> </div>
<div> <div>
<div class="title">Sttings</div> <div class="title">{{ $t('DepthCanvas.settings') }}</div>
<div class="content"> <div class="content">
<div> <div>
<div class="label">Rotation</div> <div class="label">{{ $t('DepthCanvas.rotation') }}</div>
<div class="value"> <div class="value">
<depth-input <depth-input
icon="dc-angle" icon="dc-angle"
@@ -23,7 +23,7 @@
</div> </div>
</div> </div>
<div> <div>
<div class="label">Scale</div> <div class="label">{{ $t('DepthCanvas.scale') }}</div>
<div class="value"> <div class="value">
<depth-slider <depth-slider
v-model="scale" v-model="scale"
@@ -36,7 +36,7 @@
</div> </div>
</div> </div>
<div> <div>
<div class="label">Opacity</div> <div class="label">{{ $t('DepthCanvas.opacity') }}</div>
<div class="value"> <div class="value">
<depth-slider <depth-slider
v-model="opacity" v-model="opacity"
@@ -49,7 +49,7 @@
</div> </div>
</div> </div>
<div> <div>
<div class="label">Gap X</div> <div class="label">{{ $t('DepthCanvas.gapX') }}</div>
<div class="value"> <div class="value">
<depth-slider <depth-slider
v-model="gapX" v-model="gapX"
@@ -62,7 +62,7 @@
</div> </div>
</div> </div>
<div> <div>
<div class="label">Gap Y</div> <div class="label">{{ $t('DepthCanvas.gapY') }}</div>
<div class="value"> <div class="value">
<depth-slider <depth-slider
v-model="gapY" v-model="gapY"
@@ -75,7 +75,7 @@
</div> </div>
</div> </div>
<div> <div>
<div class="label">Offset</div> <div class="label">{{ $t('DepthCanvas.offset') }}</div>
<div class="value"> <div class="value">
<depth-offset-tool <depth-offset-tool
v-model="offset" v-model="offset"

View File

@@ -2,7 +2,7 @@
<div class="details-panel"> <div class="details-panel">
<div class="header" @click="show = !show"> <div class="header" @click="show = !show">
<span class="icon"><svg-icon name="dc-details_edit" size="17" /></span> <span class="icon"><svg-icon name="dc-details_edit" size="17" /></span>
<span class="title">Edit Details</span> <span class="title">{{ $t('DepthCanvas.editDetails') }}</span>
<span class="arrow" :class="{ show }"> <span class="arrow" :class="{ show }">
<svg-icon name="dc-down_arrow2" size="10" /> <svg-icon name="dc-down_arrow2" size="10" />
</span> </span>

View File

@@ -1,10 +1,10 @@
<template> <template>
<div class="shape-setting h"> <div class="shape-setting h">
<div> <div>
<div class="title">Appearance</div> <div class="title">{{ $t('DepthCanvas.appearance') }}</div>
<div class="content"> <div class="content">
<div> <div>
<span class="label">Opacity</span> <span class="label">{{ $t('DepthCanvas.opacity') }}</span>
<depth-input <depth-input
type="number" type="number"
after="%" after="%"
@@ -17,7 +17,7 @@
/> />
</div> </div>
<div v-if="object.type === 'rect'"> <div v-if="object.type === 'rect'">
<span class="label">Corner Radius</span> <span class="label">{{ $t('DepthCanvas.cornerRadius') }}</span>
<depth-input <depth-input
type="number" type="number"
v-model="data.radius" v-model="data.radius"
@@ -28,7 +28,7 @@
/> />
</div> </div>
<div v-else-if="object.type === 'path'"> <div v-else-if="object.type === 'path'">
<span class="label">Stroke Width</span> <span class="label">{{ $t('DepthCanvas.strokeWidth') }}</span>
<depth-input <depth-input
type="number" type="number"
v-model="data.strokeWidth" v-model="data.strokeWidth"
@@ -42,7 +42,7 @@
</div> </div>
<div class="content"> <div class="content">
<div> <div>
<span class="label">Color</span> <span class="label">{{ $t('DepthCanvas.color') }}</span>
<depth-input <depth-input
v-if="object.type === 'path'" v-if="object.type === 'path'"
type="color" type="color"

View File

@@ -3,7 +3,7 @@
<div class="header"> <div class="header">
<div class="left"> <div class="left">
<span class="icon"><svg-icon name="dc-layer" size="16" /></span> <span class="icon"><svg-icon name="dc-layer" size="16" /></span>
<span class="title">Layer</span> <span class="title">{{ $t('DepthCanvas.layer') }}</span>
</div> </div>
<div class="right"> <div class="right">
<span class="icon" @click="addLayer"><svg-icon name="add" size="14" /></span> <span class="icon" @click="addLayer"><svg-icon name="add" size="14" /></span>

View File

@@ -4,6 +4,8 @@ import { createId } from '../../tools/tools'
import { exportObjectsToImage, exportObjectToThumbnail } from '../tools/exportMethod' import { exportObjectsToImage, exportObjectToThumbnail } from '../tools/exportMethod'
import { OperationType, BlendMode } from '../tools/layerHelper' import { OperationType, BlendMode } from '../tools/layerHelper'
import { getArrowPath, getLinePath, cloneObjects, getStarArr } from '../tools/canvasMethod' import { getArrowPath, getLinePath, cloneObjects, getStarArr } from '../tools/canvasMethod'
import i18n from '@/lang/index'
const t = i18n.global.t
export class LayerManager { export class LayerManager {
stateManager: any stateManager: any
@@ -206,7 +208,7 @@ export class LayerManager {
fill: 'transparent', fill: 'transparent',
info: { info: {
id: createId("image"), id: createId("image"),
name: '空图层', name: t('DepthCanvas.emptyLayer'),
} }
}) })
this.setLayerPosition(emptyObject) this.setLayerPosition(emptyObject)
@@ -226,7 +228,7 @@ export class LayerManager {
evented: false, evented: false,
info: { info: {
id: createId("group"), id: createId("group"),
name: '智能选区组', name: t('DepthCanvas.aiGroupLayer'),
showChildren: true, showChildren: true,
...(options?.info || {}), ...(options?.info || {}),
} }
@@ -245,7 +247,7 @@ export class LayerManager {
...(options || {}), ...(options || {}),
info: { info: {
id: createId("text"), id: createId("text"),
name: '文本图层', name: t('DepthCanvas.textLayer'),
...(options?.info || {}), ...(options?.info || {}),
} }
}) })
@@ -263,7 +265,7 @@ export class LayerManager {
...(options || {}), ...(options || {}),
info: { info: {
id: createId("rect"), id: createId("rect"),
name: '矩形图层', name: t('DepthCanvas.rectLayer'),
...(options?.info || {}), ...(options?.info || {}),
} }
}) })
@@ -287,7 +289,7 @@ export class LayerManager {
...(options || {}), ...(options || {}),
info: { info: {
id: createId("line"), id: createId("line"),
name: '直线图层', name: t('DepthCanvas.lineLayer'),
...(options?.info || {}), ...(options?.info || {}),
} }
}); });
@@ -304,7 +306,7 @@ export class LayerManager {
...(options || {}), ...(options || {}),
info: { info: {
id: createId("ellipse"), id: createId("ellipse"),
name: '椭圆图层', name: t('DepthCanvas.ellipseLayer'),
...(options?.info || {}), ...(options?.info || {}),
} }
}) })
@@ -323,7 +325,7 @@ export class LayerManager {
...(options || {}), ...(options || {}),
info: { info: {
id: createId("triangle"), id: createId("triangle"),
name: '三角形图层', name: t('DepthCanvas.triangleLayer'),
...(options?.info || {}), ...(options?.info || {}),
} }
}) })
@@ -343,7 +345,7 @@ export class LayerManager {
...(options || {}), ...(options || {}),
info: { info: {
id: createId("star"), id: createId("star"),
name: '五角星图层', name: t('DepthCanvas.starLayer'),
...(options?.info || {}), ...(options?.info || {}),
} }
}) })
@@ -367,7 +369,7 @@ export class LayerManager {
...(options || {}), ...(options || {}),
info: { info: {
id: createId("arrow"), id: createId("arrow"),
name: '箭头图层', name: t('DepthCanvas.arrowLayer'),
...(options?.info || {}), ...(options?.info || {}),
} }
}); });
@@ -397,7 +399,7 @@ export class LayerManager {
...(options || {}), ...(options || {}),
info: { info: {
id: createId("image"), id: createId("image"),
name: "图片图层", name: t('DepthCanvas.imageLayer'),
...(options?.info || {}), ...(options?.info || {}),
} }
}) })
@@ -421,7 +423,7 @@ export class LayerManager {
info: { info: {
...(targetLayer?.info || {}), ...(targetLayer?.info || {}),
id: createId("image"), id: createId("image"),
name: targetLayer?.info?.name || "合并图层", name: targetLayer?.info?.name || t('DepthCanvas.mergeLayer'),
} }
}) })
resolve(img) resolve(img)

View File

@@ -200,5 +200,47 @@ export default {
threeModel: { threeModel: {
loading: 'Loading', loading: 'Loading',
download: 'Download' download: 'Download'
},
DepthCanvas: {
layer: "Layer",
editDetails: "Edit Details",
export: "Export",
save: "Save",
workbench: "Workbench",
position: "Position",
size: "Size",
appearance: "Appearance",
opacity: "Opacity",
cornerRadius: "Cor Radius",
strokeWidth: "Stroke Width",
color: "Color",
image: "Image",
settings: "Settings",
rotation: "Rotation",
scale: "Scale",
gapX: "Gap X",
gapY: "Gap Y",
offset: "Offset",
emptyLayer: "Empty Layer",
aiGroupLayer: "AI Group Layer",
textLayer: "Text Layer",
rectLayer: "Rect Layer",
lineLayer: "Line Layer",
ellipseLayer: "Ellipse Layer",
triangleLayer: "Triangle Layer",
starLayer: "Star Layer",
arrowLayer: "Arrow Layer",
imageLayer: "Image Layer",
mergeLayer: "Merge Layer",
rectangle: "Rectangle",
line: "Line",
arrow: "Arrow",
ellipse: "Ellipse",
triangle: "Triangle",
star: "Star",
add: "Add",
remove: "Remove",
brush: "Brush",
erase: "Erase",
} }
} }

View File

@@ -153,7 +153,7 @@ export default {
quote: '引用', quote: '引用',
delete: '删除', delete: '删除',
edit: '编辑', edit: '编辑',
generatingReport:'正在为您生成报告,可能需要几分钟时间,生成期间你可以继续进行其他任务' generatingReport: '正在为您生成报告,可能需要几分钟时间,生成期间你可以继续进行其他任务'
}, },
// Version Tree // Version Tree
@@ -197,5 +197,47 @@ export default {
threeModel: { threeModel: {
loading: '加载中', loading: '加载中',
download: '下载' download: '下载'
},
DepthCanvas: {
layer: "图层",
editDetails: "编辑详情",
export: "导出",
save: "保存",
workbench: "工作台",
position: "位置",
size: "大小",
appearance: "外观",
opacity: "透明度",
cornerRadius: "圆角半径",
strokeWidth: "边框宽度",
color: "颜色",
image: "图片",
settings: "设置",
rotation: "旋转角度",
scale: "缩放",
gapX: "水平间距",
gapY: "垂直间距",
offset: "偏移量",
emptyLayer: "空图层",
aiGroupLayer: "智能选区组",
textLayer: "文本图层",
rectLayer: "矩形图层",
lineLayer: "直线图层",
ellipseLayer: "椭圆图层",
triangleLayer: "三角形图层",
starLayer: "五角星图层",
arrowLayer: "箭头图层",
imageLayer: "图片图层",
mergeLayer: "合并图层",
rectangle: "矩形",
line: "直线",
arrow: "箭头",
ellipse: "椭圆",
triangle: "三角形",
star: "五角星",
add: "添加",
remove: "删除",
brush: "画笔",
erase: "擦除",
} }
} }