chore: update worker locale

This commit is contained in:
jialin
2025-10-17 21:11:31 +08:00
parent 49c6bb71a1
commit 19e275a17a
23 changed files with 82 additions and 65 deletions
+2 -2
View File
@@ -48,9 +48,9 @@ export default {
'models.form.scheduletype.manual': 'Specify GPU',
'models.form.scheduletype.gpuType': 'Specify GPU Type',
'models.form.scheduletype.auto.tips':
'Automatically deploys model instances to appropriate GPUs/Workers based on current resource conditions.',
'Automatically deploys model instances to appropriate GPUs based on current resource conditions.',
'models.form.scheduletype.manual.tips':
'Allows you to manually specify the GPUs/Workers to deploy the model instances to.',
'Allows you to manually specify the GPUs to deploy the model instances to.',
'models.form.manual.schedule': 'Manual Schedule',
'models.table.gpuindex': 'GPU Index',
'models.table.backend': 'Backends',
+2 -1
View File
@@ -1,6 +1,7 @@
export default {
'resources.title': 'Resources',
'resources.nodes': 'Nodes',
'resources.nodes': 'Workers',
'resources.worker': 'Worker',
'resources.button.create': 'Add Worker',
'resources.button.edit': 'Edit Worker',
'resources.button.edittags': 'Edit Labels',
+2 -2
View File
@@ -50,9 +50,9 @@ export default {
'models.form.scheduletype.manual': 'GPUを指定',
'models.form.scheduletype.gpuType': 'GPUタイプを指定',
'models.form.scheduletype.auto.tips':
'現在のリソース状況に基づいて、モデルインスタンスを適切なGPU/ワーカーに自動的にデプロイします。',
'現在のリソース状況に基づいて、モデルインスタンスを適切なGPUに自動的にデプロイします。',
'models.form.scheduletype.manual.tips':
'モデルインスタンスをデプロイするGPU/ワーカーを手動で指定できます。',
'モデルインスタンスをデプロイするGPUを手動で指定できます。',
'models.form.manual.schedule': '手動スケジュール',
'models.table.gpuindex': 'GPUインデックス',
'models.table.backend': 'バックエンド',
+4 -2
View File
@@ -94,7 +94,8 @@ export default {
'resource.register.maos.support': 'Apple Silicon (M series), macOS 14+',
'resource.register.windows.support': 'win 10, win 11',
'resources.model.instance': 'Model Instance',
'resources.worker.download.privatekey': 'Download Private Key'
'resources.worker.download.privatekey': 'Download Private Key',
'resources.worker': 'Worker'
};
// ========== To-Do: Translate Keys (Remove After Translation) ==========
@@ -111,5 +112,6 @@ export default {
// 11. 'resource.register.windows.support': 'win 10, win 11',
// 12. 'resources.filter.status': 'Filter by Status',
// 13. 'resources.model.instance': 'Model Instance',
// 14. 'resources.worker.download.privatekey': 'Download Private Key'
// 14. 'resources.worker.download.privatekey': 'Download Private Key',
// 15. 'resources.worker': 'Worker',
// ========== End of To-Do List ==========
+2 -2
View File
@@ -48,9 +48,9 @@ export default {
'models.form.scheduletype.manual': 'Указать GPU',
'models.form.scheduletype.gpuType': 'Указать тип GPU',
'models.form.scheduletype.auto.tips':
'Автоматическое развертывание инстансов модели на подходящие GPU/воркеры в зависимости от текущих ресурсов.',
'Автоматическое развертывание инстансов модели на подходящие GPU в зависимости от текущих ресурсов.',
'models.form.scheduletype.manual.tips':
'Позволяет вручную указать GPU/воркеры для развертывания инстансов модели.',
'Позволяет вручную указать GPU для развертывания инстансов модели.',
'models.form.manual.schedule': 'Ручное распределение',
'models.table.gpuindex': 'Индекс GPU',
'models.table.backend': 'Бэкенды',
+3 -2
View File
@@ -92,9 +92,10 @@ export default {
'resource.register.maos.support': 'Apple Silicon (серия M), macOS 14+',
'resource.register.windows.support': 'Windows 10, Windows 11',
'resources.model.instance': 'Модель экземпляра',
'resources.worker.download.privatekey': 'Скачать приватный ключ'
'resources.worker.download.privatekey': 'Скачать приватный ключ',
'resources.worker': 'Worker'
};
// ========== To-Do: Translate Keys (Remove After Translation) ==========
// 1. 'resources.worker': 'Worker',
// ========== End of To-Do List ==========
+4 -4
View File
@@ -10,7 +10,7 @@ export default {
'clusters.edit.cluster': '编辑 {cluster}',
'clusters.provider.custom': '自定义',
'clusters.button.register': '注册集群',
'clusters.button.addNodePool': '添加 Worker Pool',
'clusters.button.addNodePool': '添加节点池',
'clusters.button.add.credential': '添加 {provider} 凭证',
'clusters.credential.title': '凭证',
'clusters.credential.token': '访问令牌',
@@ -23,7 +23,7 @@ export default {
'clusters.workerpool.volumes': '存储卷',
'clusters.workerpool.format': '文件系统格式',
'clusters.workerpool.size': '容量(GiB',
'clusters.workerpool.title': 'Worker Pools',
'clusters.workerpool.title': '节点池',
'clusters.workerpool.cloudOptions': '添加云配置',
'clusters.workerpool.volumes.add': '添加存储卷',
'clusters.create.provider.self': '自建环境',
@@ -36,11 +36,11 @@ export default {
'clusters.create.noImages': '无可用的镜像',
'clusters.create.noInstanceTypes': '无可用的实例类型',
'clusters.create.noRegions': '无可用的区域',
'clusters.workerpool.batchSize.desc': 'Worker 池中同时创建的 worker 数量',
'clusters.workerpool.batchSize.desc': '节点池中同时创建的节点数量',
'clusters.create.addworker.tips':
'在执行以下命令之前,请确保已满足 <a href={link} target="_blank">{label}</a> 的先决条件。',
'clusters.create.addCommand.tips':
' 在需要添加的 Worker 上运行以下命令,将其加入到集群中',
' 在需要添加的节点上运行以下命令,将其加入到集群中',
'clusters.create.register.tips':
' 在需要添加的 Kubernetes 集群上运行以下命令,将其中的节点加入到集群中',
'cluster.create.checkEnv.tips': '使用以下命令检查环境是否准备妥当',
+1 -1
View File
@@ -1,6 +1,6 @@
export default {
'dashboard.title': '概览',
'dashboard.workers': 'Workers',
'dashboard.workers': '节点',
'dashboard.models': '模型',
'dashboard.totalgpus': 'GPUs',
'dashboard.allocategpus': '已分配 GPU 数量',
+1 -1
View File
@@ -21,7 +21,7 @@ export default {
'menu.login': '登录',
'menu.usage': '使用量',
'menu.404': '404',
'menu.resources.workers': 'Workers',
'menu.resources.workers': '节点',
'menu.resources.gpus': 'GPUs',
'menu.resources.modelfiles': '模型文件',
'menu.accessControl': '访问控制',
+5 -6
View File
@@ -16,7 +16,7 @@ export default {
'models.form.partialoffload.tips':
'启用 CPU 卸载时,如果 GPU 资源不足,则模型的一部分层将被卸载到 CPU 上,在没有 GPU 可用时,会使用纯 CPU 推理。',
'models.form.distribution.tips':
'允许在单个 Worker 资源不足时,将部分计算卸载到一个或多个远程 Worker。',
'允许在单个节点资源不足时,将部分计算卸载到一个或多个远程节点',
'models.openinplayground': '在 Playground 中打开',
'models.instances': '实例',
'models.table.replicas.edit': '调整副本数',
@@ -49,13 +49,12 @@ export default {
'models.form.scheduletype.manual': '指定 GPU',
'models.form.scheduletype.gpuType': '指定 GPU 类型',
'models.form.scheduletype.auto.tips':
'自动根据当前资源情况部署模型实例到合适的 GPU/Worker。',
'models.form.scheduletype.manual.tips':
'手动调度可指定模型实例部署的 GPU/Worker。',
'自动根据当前资源情况部署模型实例到合适的 GPU。',
'models.form.scheduletype.manual.tips': '手动调度可指定模型实例部署的 GPU。',
'models.form.manual.schedule': '手动调度',
'models.table.gpuindex': 'GPU 序号',
'models.table.backend': '后端',
'models.table.acrossworker': '跨 Worker 推理',
'models.table.acrossworker': '跨节点推理',
'models.table.cpuoffload': 'CPU 卸载',
'models.table.layers': '层',
'models.form.backend': '后端',
@@ -90,7 +89,7 @@ export default {
'models.form.backend.mindie':
'用于非 GGUF 格式模型,仅支持昇腾 910B 和 310P。',
'models.form.search.gguftips':
'当 macOS 或 Windows 作 Worker 时勾选 GGUF(搜索语音模型时取消勾选)',
'当 macOS 或 Windows 作节点时勾选 GGUF(搜索语音模型时取消勾选)',
'models.form.button.addlabel': '添加标签',
'models.filter.category': '按类别筛选',
'models.list.more.logs': '查看更多',
+5 -5
View File
@@ -7,12 +7,12 @@ export default {
'noresult.deployments.subTitle':
'您还没有部署任何模型,点击下方按钮即可开始。',
'noresult.gpus.title': '当前未检测到 GPU 设备',
'noresult.gpus.subTitle': '请确认 Worker 状态是否正常。',
'noresult.gpus.subTitle': '请确认节点状态是否正常。',
'noresult.gpus.nofound': '未找到匹配的 GPU 设备',
'noresult.workers.title': '暂无 Worker',
'noresult.workers.subTitle': '当前集群中没有任何 Worker。',
'noresult.workers.nofound': '未找到匹配的 Worker',
'noresult.workers.button.add': '前往添加 Worker',
'noresult.workers.title': '暂无节点',
'noresult.workers.subTitle': '当前集群中没有任何节点',
'noresult.workers.nofound': '未找到匹配的节点',
'noresult.workers.button.add': '前往添加节点',
'noresult.modelfiles.title': '暂无模型文件',
'noresult.modelfiles.subTitle': '尚未添加任何模型文件。',
'noresult.modelfiles.nofound': '未找到匹配的模型文件',
+14 -13
View File
@@ -1,10 +1,11 @@
export default {
'resources.title': '资源',
'resources.button.create': '添加 Worker',
'resources.button.edit': '编辑 Worker',
'resources.button.create': '添加节点',
'resources.button.edit': '编辑节点',
'resources.button.edittags': '编辑标签',
'resources.button.update': '更新标签',
'resources.nodes': '节点',
'resources.worker': '节点',
'resources.table.hostname': '主机名',
'resources.table.key.tips': '存在相同的 key.',
'resources.form.label': '标签',
@@ -12,15 +13,15 @@ export default {
'resources.form.advanced': '高级',
'resources.form.enablePartialOffload': '允许 CPU 卸载',
'resources.form.placementStrategy': '放置策略',
'resources.form.workerSelector': 'Worker 选择器',
'resources.form.workerSelector': '节点选择器',
'resources.form.enableDistributedInferenceAcrossWorkers':
'允许跨 Worker 分布式推理',
'允许跨节点分布式推理',
'resources.form.spread.tips':
'使得集群整体的资源在所有 Worker 之间分配得相对均匀。可能会在单个 Worker 上产生较多资源碎片。',
'使得集群整体的资源在所有节点之间分配得相对均匀。可能会在单个节点上产生较多资源碎片。',
'resources.form.binpack.tips':
'优先考虑整体集群的资源最大化利用,减少 GPU/Worker 上的资源碎片。',
'优先考虑整体集群的资源最大化利用,减少 GPU/节点 上的资源碎片。',
'resources.form.workerSelector.description':
'系统在部署模型实例时,会根据预定义的标签来选择最符合要求的 Worker。',
'系统在部署模型实例时,会根据预定义的标签来选择最符合要求的节点。',
'resources.table.ip': 'IP',
'resources.table.cpu': 'CPU',
'resources.table.memory': '内存',
@@ -38,14 +39,14 @@ export default {
'resources.table.total': '总量',
'resources.table.used': '已用',
'resources.table.allocated': '已分配',
'resources.table.wokers': 'workers',
'resources.table.wokers': '节点',
'resources.table.unified': '统一内存',
'resources.worker.linuxormaxos': 'Linux 或 macOS',
'resources.worker.add.step1':
'获取 Token<span class="note-text">(在 Server 上运行)</span>',
'resources.worker.add.step2': '注册 Worker',
'resources.worker.add.step2.tips': '(在需要添加的 Worker 上运行。)',
'resources.worker.add.step3': '成功后,刷新 Worker 列表即可看到新的 Worker',
'resources.worker.add.step2': '注册节点',
'resources.worker.add.step2.tips': '(在需要添加的节点上运行。)',
'resources.worker.add.step3': '成功后,刷新节点列表即可看到新的节点。',
'resources.worker.container.supported': '不支持 macOS 和 Windows',
'resources.worker.current.version': '当前版本为 {version}',
'resources.worker.select.command': '选择一个标签生成命令并使用复制按钮复制',
@@ -65,7 +66,7 @@ export default {
'默认存储目录为 <span class="desc-block">/var/lib/gpustack/cache</span>,或使用 <span class="desc-block">--cache-dir</span>(优先)、<span class="desc-block">--data-dir</span> 指定的目录。',
'resources.modelfiles.retry.download': '重新下载',
'resources.modelfiles.storagePath.holder': '等待下载完成...',
'resources.filter.worker': '按 Worker 筛选',
'resources.filter.worker': '按节点筛选',
'resources.filter.source': '按来源筛选',
'resources.filter.status': '按状态筛选',
'resources.modelfiles.delete.tips': '同时从磁盘删除文件',
@@ -78,7 +79,7 @@ export default {
'resources.register.worker.step3':
'点击页签<span class="bold-text">通用</span>。',
'resources.register.worker.step4':
'选择服务角色 <span class="bold-text">Worker</span>。',
'选择服务角色 <span class="bold-text">节点</span>。',
'resources.register.worker.step5':
'输入 <span class="bold-text">Server URL</span>{url}。',
'resources.register.worker.step6':
+2 -2
View File
@@ -1,4 +1,4 @@
import jdenticon from 'jdenticon';
import { update } from 'jdenticon';
import React, { useEffect, useRef } from 'react';
interface IdenticonProps {
@@ -13,7 +13,7 @@ const Identicon: React.FC<IdenticonProps> = ({
const icon = useRef<any>(null);
useEffect(() => {
jdenticon?.update(icon.current, 'value');
update(icon.current, value);
}, [value]);
return (
+13 -1
View File
@@ -107,7 +107,19 @@ export const getGpuColor = (gpuType: string) => {
return 'default';
};
export const customIcons = ['∑', '∏', '∫', '∂', '∞', 'θ', '∆', '∇'];
export const customIcons = [
'∑',
'∏',
'∫',
'∂',
'∞',
'π',
'θ',
'∆',
'∇',
'≤',
'≥'
];
export const backendFields = [
'description',
@@ -35,6 +35,16 @@ export default [
}),
group: 'clusters.create.provider.cloud'
},
{
label: 'AWS',
locale: false,
disabled: true,
value: ProviderValueMap.AWS,
key: ProviderValueMap.AWS,
icon: icons.AWS,
description: 'cluster.provider.comingsoon',
group: 'clusters.create.provider.cloud'
},
{
label: 'Alibaba Cloud',
locale: false,
@@ -54,15 +64,5 @@ export default [
icon: icons.TencentCloud,
description: 'cluster.provider.comingsoon',
group: 'clusters.create.provider.cloud'
},
{
label: 'AWS',
locale: false,
disabled: true,
value: ProviderValueMap.AWS,
key: ProviderValueMap.AWS,
icon: icons.AWS,
description: 'cluster.provider.comingsoon',
group: 'clusters.create.provider.cloud'
}
];
@@ -67,7 +67,7 @@ const useClusterColumns = (
render: (value: number) => <span>{value}</span>
},
{
title: 'Workers',
title: intl.formatMessage({ id: 'resources.nodes' }),
dataIndex: 'workers',
span: 3,
render: (value: number, record: ClusterListItem) => (
@@ -122,7 +122,7 @@ const usePoolsColumns = (
)
},
{
title: 'Workers',
title: intl.formatMessage({ id: 'resources.nodes' }),
dataIndex: 'replicas',
span: 6,
key: 'replicas',
+2 -2
View File
@@ -118,7 +118,7 @@ const TargetForm: React.FC<TargetFormProps> = forwardRef((props, ref) => {
rules={[
{
required: true,
message: getRuleMessage('select', 'worker', false)
message: getRuleMessage('select', 'resources.worker')
}
]}
>
@@ -133,7 +133,7 @@ const TargetForm: React.FC<TargetFormProps> = forwardRef((props, ref) => {
}
}}
maxTagCount={1}
label="Worker"
label={intl.formatMessage({ id: 'resources.worker' })}
options={workerOptions}
showCheckedStrategy="SHOW_CHILD"
getPopupContainer={(triggerNode) => triggerNode.parentNode}
+2 -2
View File
@@ -40,7 +40,7 @@ const Workers: React.FC = () => {
} = useTableFetch<ListItem>({
fetchAPI: queryWorkersList,
deleteAPI: deleteWorker,
contentForDelete: 'worker',
contentForDelete: 'resources.worker',
watch: true,
API: WORKERS_API
});
@@ -240,7 +240,7 @@ const Workers: React.FC = () => {
/>
]}
header={{
title: 'Workers',
title: intl.formatMessage({ id: 'resources.nodes' }),
style: {
paddingInline: 'var(--layout-content-header-inlinepadding)'
},
@@ -286,7 +286,7 @@ const useFilesColumns = (props: {
}
},
{
title: 'Worker',
title: intl.formatMessage({ id: 'resources.worker' }),
dataIndex: 'worker_name',
ellipsis: {
showTitle: false
@@ -73,7 +73,7 @@ const useGPUColumns = (props: {
)
},
{
title: 'Worker',
title: intl.formatMessage({ id: 'resources.worker' }),
dataIndex: 'worker_name',
ellipsis: {
showTitle: false
@@ -60,7 +60,8 @@ const renderGpuIndexs = (gpuIndexes: number[]) => {
const distributeCols: ColumnProps[] = [
{
title: 'Worker',
title: 'resources.worker',
locale: true,
key: 'worker_name',
style: {
wordBreak: 'break-word'
@@ -310,7 +311,7 @@ const useInstanceColumns = (props: {
)
},
{
title: 'Worker',
title: intl.formatMessage({ id: 'resources.worker' }),
dataIndex: 'worker_name',
render: (text: string, record: ListItem) => (
<AutoTooltip ghost>{text}</AutoTooltip>
+1 -1
View File
@@ -29,7 +29,7 @@ const Resources = () => {
const items: TabsProps['items'] = [
{
key: 'workers',
label: 'Workers',
label: 'resources.nodes',
children: <Workers />
},
{