From bea0ab962f5a5621c765f9eb5c4a0e51be95b55d Mon Sep 17 00:00:00 2001 From: "andy.lee" Date: Mon, 15 Jul 2024 12:12:31 +0800 Subject: [PATCH] hide locale selector if there are no multi available locales Signed-off-by: andy.lee (cherry picked from commit 9f9a5ce2382302196451cdcd7a71979e620b34e9) --- pkg/harvester/l10n/zh-hans.yaml | 1433 ------------------------------- shell/layouts/default.vue | 8 +- shell/pages/auth/login.vue | 7 +- shell/pages/prefs.vue | 7 +- shell/store/i18n.js | 8 +- 5 files changed, 21 insertions(+), 1442 deletions(-) delete mode 100644 pkg/harvester/l10n/zh-hans.yaml diff --git a/pkg/harvester/l10n/zh-hans.yaml b/pkg/harvester/l10n/zh-hans.yaml deleted file mode 100644 index cd1577350de..00000000000 --- a/pkg/harvester/l10n/zh-hans.yaml +++ /dev/null @@ -1,1433 +0,0 @@ -generic: - tip: 提示 - resourceExternalLinkTips: '外部链接' - namespace: 命名空间 - notReady: 未就绪 - labels: 标签 - inProgress: 进行中 - basic: 基本信息 - -nav: - group: - networks: 网络 - backupAndSnapshot: 备份 & 快照 - Monitoring: 监控 - Logging: 日志 - 'Monitoring & Logging': 监控 & 日志 - -resourceTable: - groupBy: - device: 按设备分组 - -validation: - arrayCountRequired: "至少需要 {count} 个 {key},而且 {key} 不能为空。" - -members: - clusterMemebership: 集群成员 - projectMembership: 项目成员 - -asyncButton: - restart: - action: 保存并重启 - success: 已重启 - waiting: 正在重启… - -harvester: - productLabel: 'Harvester' - modal: - backup: - success: '已启动备份 { backUpName }。' - addBackup: 添加备份 - restore: - success: '{ name } 还原创建成功。' - title: 备份还原 - selectBackup: 选择备份 - message: - backup: 请选择需要还原的备份。 - createTemplate: - title: '生成模板' - name: '名称' - description: '描述' - message: - tip: 请输入模板名称。 - success: '模板 { templateName } 创建成功。' - failed: '生成模板失败。' - cloneVM: - title: 克隆虚拟机 - name: 新虚拟机名称 - type: 克隆数据卷 - action: - create: 创建 - clone: 克隆 - message: - tip: 请输入虚拟机名称。 - success: '虚拟机 { name } 克隆成功。' - failed: '虚拟机克隆失败!' - exportImage: - title: 导出镜像 - name: 名称 - namespace: 命名空间 - message: - success: '镜像 { name } 创建成功。' - migration: - failedMessage: 最新迁移失败。 - title: 迁移 - fields: - nodeName: - label: 目标节点 - placeholder: 选择目标节点 - ejectCDROM: - title: 弹出 CDROM - warnTip: 如果你弹出卷,虚拟机将重启。 - operationTip: '选择要删除的卷:' - delete: 删除 - bundle: - title: 生成 Support Bundle - url: Issue URL - description: 描述 - requiredDesc: 描述是必填项。 - titleDescription: 收集 Harvester 系统日志,用于定位问题和获取支持。 - hotplug: - success: '卷 { diskName } 已挂载到 { vm }。' - title: 添加卷 - hotunplug: - success: '卷 { name } 拔出成功。' - snapshot: - title: 生成快照 - name: 名称 - message: - success: '快照 { name } 生成成功。' - volumeClone: - title: 克隆卷 - name: 名称 - message: - success: '{ name } 克隆成功。' - restoreSnapshot: - title: 还原快照 - name: '新卷名称' - success: '{ name } 已成功还原。' - vmSnapshot: - title: 生成 VM 快照 - name: 名称 - success: 'VM 快照 { name } 生成成功。' - restart: - title: 重启 VM - tip: 立即重启 VM 以使配置更改生效。 - cancel: 保存 - notification: - title: - succeed: 成功 - info: 信息 - warning: 警告 - error: 错误 - action: - createVM: 创建虚拟机 - start: 启动 - restart: 重启 - softreboot: 安全重启 - stop: 停止 - pause: 暂停 - deepClone: 克隆 - shallowClone: 克隆模板 - unpause: 取消暂停 - ejectCDROM: 弹出 CDROM - launchFormTemplate: 从模板启动实例 - modifyTemplate: 修改模板(创建新版本) - setDefaultVersion: 设置默认版本 - addTemplateVersion: 添加模板版本 - backup: 备份 - restore: 还原 - restoreNewVM: 还原新的虚拟机 - restoreExistingVM: 替换现有虚拟机 - migrate: 迁移 - abortMigration: 中止迁移 - createTemplate: 生成模板 - enableMaintenance: 开启维护模式 - disableMaintenance: 关闭维护模式 - cordon: 封锁 - uncordon: 解除封锁 - addHotplug: 添加卷 - exportImage: 导出镜像 - viewlogs: 查看日志 - cancelExpand: 取消展开 - snapshot: 生成快照 - pvcClone: 克隆卷 - vmSnapshot: 生成 VM 快照 - shutdown: 关机 - powerOn: 开机 - reboot: 重启 - forceStop: 强制停止 - tableHeaders: - size: 大小 - progress: 进度 - message: 消息 - phase: 阶段 - attachedVM: 挂载的虚拟机 - fingerprint: 唯一标识 - value: 值 - actions: 操作 - readyToUse: 可用 - backupTarget: 备份路径 - targetVm: 目标虚拟机 - hostIp: 主机 IP - vm: - ipAddress: IP 地址 - node: 节点 - defaultVersion: 默认版本 - network: - type: 类型 - vlan: Vlan ID - snapshotTargetVolume: 原始卷 - volumeSnapshotCounts: 快照数量 - networkState: 网络状态 - storageClass: 存储类 - tab: - volume: 卷 - network: 网络 - advanced: 高级选项 - accessCredentials: 凭证管理 - pciDevices: PCI 设备 - vmScheduling: 虚拟机调度 - instanceLabel: 实例标签 - fields: - version: 版本 - name: 名称 - type: 类型 - image: 镜像 - size: 大小 - volume: 卷 - network: 网络 - model: 模式 - macAddress: MAC 地址 - port: 端口 - protocol: 协议 - remove: 删除 - PhysicalNic: 物理网卡 - cpu: CPU - memory: 内存 - virtualName: 虚拟机名称 - promiscuous: Promiscuous - ipv4Address: IPv4 地址 - filterLabels: 标签过滤 - storageClass: 存储类 - dockerImage: Docker 镜像 - pci: - available: 可用设备 - compatibleNodes: 兼容节点 - impossibleSelection: '没有具有所选设备的主机。' - howToUseDevice: '使用下表,在你想在这个 VM 中使用的每个设备上启用 PCI 透传' - deviceInTheSameHost: '你只能选择同一主机上的设备。' - oldFormatDevices: - help: |- -

- 以下 PCI 设备使用旧的命名方式,需要在 YAML 文件中更新: -

- -

- 请根据以下说明更新虚拟机: -

-
    -
  1. 停止虚拟机,编辑虚拟机 YAML 文件,删除 hostDevices 部分,并将更改保存到 YAML 文件中。
  2. -
  3. 编辑虚拟机,从可用的 PCI Device 列表中添加已启用的 PCI Device,然后保存并启动虚拟机。
  4. -
- showCompatibility: 显示设备兼容性矩阵 - hideCompatibility: 隐藏设备兼容性矩阵 - claimError: 在 {name} 上启用透传时出错 - unclaimError: 在 {name} 上禁用透传时出错 - cantUnclaim: 不能在其他用户声明的设备上禁用透传。 - enableGroup: 启用组 - disableGroup: 禁用组 - labelRequired: "不要手动更改此规则:此规则确保为该虚拟机选择的 PCI 设备在 VM 的主机上可用。" - goSetting: - prefix: pcidevices-controller 插件未启用,单击 - middle: 此处 - suffix: 使它能够管理你的 PCI 设备。 - noPCIPermission: 请联系系统管理员启用 PCI 设备。 - enablePassthroughWarning: 请不要使用宿主机专用的 PCI 设备(例如,管理网络和 VLAN 网络的网卡)。错误的设备分配可能会损坏你的集群(包括节点故障)。 - matrixHostName: 主机名 - matrixDeviceClaimName: 设备声明名称 - generic: - close: 关闭 - open: 打开 - showMore: 显示更多 - hideMore: 隐藏更多 - memory: 内存 - cpu: CPU - storage: 存储 - noFileChosen: 没有选择任何文件 - noSchema: "找不到自定义资源定义:{schema}。" - - validation: - custom: - tooLongName: '"Name" 的长度不能超过 {max} 个字符。' - generic: - hasDelete: '{type} "{name}" 已删除。' - maxLength: '"{key}" 的长度不能超过 {max} 个字符' - tabError: '{prefix}: {message}' - maximumSize: "超过最大大小 {max}!" - regex: '无效的 {lowerType} "{name}":{upperType} 必须匹配正则表达式 "{regex}"' - vm: - name: '"名称"是必填项。' - memory: '"内存"是必填项。' - duplicatedName: '{type} 名称重复:"{name}"' - network: - macFormat: 'MAC 地址格式不正确。' - upperType: 网络名称 - lowerType: 网络名称 - volume: - upperType: 卷名称 - lowerType: 卷名称 - needImageOrExisting: '至少需要一个镜像卷或已存在的根磁盘卷。' - image: - ruleTip: 'URL 后缀不支持。仅支持后缀为 .img,.iso,.qcow,.qcow2或.raw的镜像文件。' - ruleFileTip: '文件后缀不支持。仅支持后缀为 .img,.iso,.qcow,.qcow2或.raw的镜像文件。' - - dashboard: - label: 仪表板 - header: "Harvester 集群:{cluster}" - hardwareResourceGauge: - cpu: CPU - memory: 内存 - storage: 存储 - sections: - events: - label: 事件 - vmMetrics: - label: 虚拟机指标 - - version: 版本 - host: - console: 控制台 - label: 主机 - inconsistentIP: "主机 IP 不一致,当前 IP:{currentIP},初始 IP:{initIP}" - promote: - none: ' ' - running: 角色升级中 - failed: 角色升级失败 - unknown: 角色升级中断 - promoteRestart: 角色升级重启中 - promoteSucceed: 角色升级完成 - tabs: - network: 网络 - overview: 概述 - basics: 基本信息 - instance: 虚拟机 - monitor: 监控数据 - storage: 存储 - labels: 标签 - ksmtuned: Ksmtuned - seeder: 外部访问 - detail: - kvm: - disableMessage: 基于硬件的虚拟化已禁用或不受支持。在创建虚拟机之前必须先启用基于硬件的虚拟化。 - title: - network: 网络配置 - hostIP: 主机 IP - role: 角色 - os: 操作系统 - create: 创建时间 - update: 上次更新时间 - customName: 自定义名称 - consoleUrl: 控制台地址 - more: 更多信息 - uuid: UUID - containerRuntime: 容器运行时 - kernel: 内核 - management: 管理节点 - compute: 计算节点 - storage: 存储 - nic: 物理网卡 - notRecommended: '不推荐' - networkType: 类型 - manufacturer: 制造商 - serialNumber: 序列号 - model: 模式 - enableMaintenance: - title: 开启维护模式 - protip: 该操作会将此节点上的所有虚拟机迁移到其他节点。 - force: 强制 - cordon: - title: 封锁 - protip: 此操作会将节点 { node } 标记为不可调度。 - ksmtuned: - run: 运行策略 - configure: 配置 - mode: 模式 - modeLink: 模式 - thresCoef: 阈值系数 - enableMergeNodes: 启用跨节点合并 - enable: 启用 - disable: 禁用 - ksmStatus: KSM 状态 - modeOption: - standard: 标准 - high: 高性能 - customized: 自定义 - parameters: - title: Ksmtuned 参数 - boost: Boost - decay: Decay - sleepMsec: 睡眠时间(毫秒) - minPages: 最小页数 - maxPages: 最大页数 - description: - boost: 如果可用内存小于阈值系数,那么每次扫描的页数会递增。 - decay: 如果可用内存大于阈值系数,那么每次扫描的页数会递减。 - sleepMsec: 两次扫描之间的间隔(最小值为 10ms),由公式(睡眠毫秒 * 16 * 1024 * 1024/总内存)计算得出。 - minPages: 每次扫描的最小页数,也是第一次运行的配置。 - maxPages: 每次扫描的最大页数。 - statistics: - title: 统计 - sharing: 共享 - shared: 共享 - unshared: 未共享 - volatile: 易失 - fullScans: 全量扫描 - stableNodeChains: 稳定的节点链 - stableNodeDups: 稳定节点重复 - disk: - add: 添加磁盘 - path: - label: 路径 - storageReserved: - label: 预留存储空间 - allowScheduling: - label: 调度 - evictionRequested: - label: 驱逐请求 - forceFormatted: - label: 强制格式化 - toolTip: 强制格式化将会清空磁盘数据。请确保你已对对数据进行备份,以免丢失。 - yes: 是(Ext4 文件系统) - description: - label: 描述 - lastFormattedAt: - info: 此磁盘已被强制格式化。 - notification: - success: '已更新主机 {name} 存储配置。' - error: 主机有未就绪或不可调度的磁盘。 - fileSystem: - info: 当前文件系统为 {system},你可以手动格式化。 - formatting: 正在格式化磁盘,请稍候。 - tags: - label: 磁盘标签 - addLabel: 添加磁盘标签 - conditions: 状态 - storageAvailable: - label: 可用存储 - storageScheduled: - label: 已调度存储 - storageMaximum: - label: 最大存储 - tags: - label: 主机标签 - addLabel: 添加主机标签 - powerAction: - message: - success: '主机 { name } { operation } 成功。' - ntp: - label: Ntp 服务器地址 - tips: 你可以配置多个 IPv4 地址或主机地址。 - placeholder: 例如:IPv4 - ntpSyncStatus: - isDisabled: 'NTP 已禁用。请检查 NTP 服务是否处于活动状态。' - isUnsynced: 'NTP 未同步 NTP 服务器 {current}' - ntpConfigSyncStatus: - isUnsynced: 'NTP 配置未同步。当前:{current},需求:{wanted} ' - - virtualMachine: - label: 虚拟机 - osType: 操作系统类型 - instance: - singleInstance: - multipleInstance: - single: - label: 单个实例 - nameLabel: 名称 - host: - label: 主机名 - placeholder: 默认为虚拟机名称。 - multiple: - label: 多个实例 - nameNsDescription: 每个实例的名称前缀 - count: 数量 - countTip: 范围:1-10 - nameLabel: 名称前缀 - host: - label: 主机名前缀 - placeholder: 默认为虚拟机名称。 - useTemplate: - label: "使用虚拟机模板:" - template: - label: 模板 - version: - label: 版本 - console: - novnc: 在 Web VNC 中打开 - serial: 在串行控制台中打开 - promptRemove: - title: '选择要删除的卷:' - deleteAll: 删除全部 - tips: "警告:删除 VM 将同时删除 VM 快照,而删除卷则会同时删除卷快照。" - unplug: - title: '是否确认要拔出卷 {name} ?' - actionLabel: 拔出 - detachVolume: - 拔出卷 - restartTip: |- - {restart, select, - true {重启} - other {启动} - }虚拟机以使配置更改生效。 - runStrategy: 运行策略 - restartNow: |- - {restart, select, - true {现在重启} - other {现在启动} - } - createSSHKey: 创建 SSH 密钥 - installAgent: 安装访客代理 - enableUsb: 启用 USB Tablet - advancedOptions: - tpm: 启用 TPM - usbTip: 提供绝对指针设备,有助于在 VNC 中获得一致的鼠标光标位置。 - sshTitle: 添加 SSH 公钥 - imageTip: 创建虚拟机所需的.iso,.img,.qcow2或.raw外部镜像地址 - efiEnabled: EFI 模式下启动 - secureBoot: 安全启动 - volume: - dragTip: 拖放卷或使用卷的箭头来更改引导顺序。 - volumeTip: 虚拟机仅包含一个 cd-rom 卷。你可能想要添加额外的磁盘卷。 - macTip: "访客系统内显示的 MAC 地址" - volumeUpdate: '卷 { name } 设置成功。' - type: 类型 - size: 大小 - edit: 编辑 - bus: Bus - bootOrder: 引导顺序 - volume: 卷 - dockerImage: Docker 镜像 - addVolume: 添加卷 - addExistingVolume: 添加现有卷 - addVmImage: 添加虚拟机镜像 - addContainer: 添加容器 - setFirst: 设置为根卷 - saveVolume: 更新卷 - title: - vmImage: 镜像卷 - existingVolume: 现有卷 - volume: 卷 - container: 容器 - unmount: - title: 是否确认? - message: 是否确认卸载此卷? - network: - title: 网络 - addNetwork: 添加网络 - addPort: 添加端口 - cloudConfig: - title: Cloud Config - createTemplateTitle: '创建 { name }。' - createNew: 创建... - cloudInit: - label: Cloud Init - placeholder: 选择模板 - user: - label: 用户数据模板 - title: "用户数据:" - tip: "你可以指定用户数据,以在启动时配置实例或运行配置脚本。如果一次启动多个实例,所有预留实均能使用用户数据。了解更多" - network: - label: 网络数据模板 - title: "网络数据:" - tip: "通过分配子网配置,创建虚拟设备(bonds,bridges,Vlan)路由和 DNS 配置,来自定义实例的网络接口。了解更多" - scheduling: - affinity: - anyNode: '在任何可用节点上运行虚拟机' - schedulingRules: '在匹配调度规则的节点上运行虚拟机' - specificNode: 在指定节点上运行虚拟机 -(不支持热迁移) - networkNotSupport: 网络不支持调度 - accessCredentials: - resetPwd: - label: 添加密码凭证 - injectSSH: - label: 添加 SSH 密钥凭证 - users: 选择用户 - addUser: 添加用户 - tips: 要启用访问凭证,你需要安装 qemu-guest-agent。更新凭证内容后无需重启,而添加凭证后需要重启虚拟机。删除凭证后,需要进入虚拟机手动修改密码/删除 SSH 密钥。 - userTips: 添加的用户需要存在,否则凭证不会生效。 - duplicatedUser: 用户已存在。 - invalidUser: 无效的用户名 - input: - name: 名称 - memory: 内存 - image: 镜像 - sshKey: SSH 密钥 - sshKeyValue: SSH 密钥 - MachineType: 主机类型 - username: 用户名 - password: 密码 - reservedMemory: 预留内存 - machineTypeTip: '指定要模拟的处理器架构。要查看支持的体系结构列表,请运行:qemu-system-x86_64 -cpu ?' - detail: - tabs: - overview: 概述 - details: 详情 - environment: 环境 - events: 事件 - migration: 迁移 - console: 控制台 - networkInterfaces: 网络接口 - disks: 磁盘 - networks: 网络 - basics: 基本信息 - configurations: 配置 - inventory: 清单 - hostBasic: 基本属性 - instance: 虚拟机 - monitor: 监控数据 - keypairs: SSH 密钥 - cloudConfig: Cloud Config - metrics: 虚拟机指标 - details: - title: - vmDetails: 虚拟机详情 - requirements: 调度和资源要求 - services: 服务 - users: 已登录用户 - name: 名称 - namespace: 命名空间 - created: 创建时间 - hostname: 主机名 - node: 节点 - ipAddress: IP 地址 - status: 状态 - pod: Pod - labels: 标签 - bootOrder: 引导顺序 - annotations: 注释 - CDROMs: CD-ROM - description: 描述 - operatingSystem: 操作系统 - template: 模板 - kernelRelease: 内核版本 - owner: 所有者 - workloadProfile: 工作负载配置文件 - nodeSelector: 节点选择器 - flavor: 规格 - tolerations: 容忍 - dedicatedResources: 专用资源 - down: 虚拟机未启动 - affinityRules: 亲和性规则 - sourceNode: 源节点 - targetNode: 目标节点 - started: 开始时间 - ended: 结束时间 - notAvailable: 不可用 - GuestAgentNotInstalled: 未安装 GuestAgent - noOwner: 没有所有者 - events: - from: 生成自 - down: 过去一小时没有事件 - console: - down: 此虚拟机已关闭。请启动虚拟机以访问其控制台。 - shortcutKeys: 快捷键 - customShortcutKeys: 自定义快捷键 - management: 管理快捷键 - record: - start: 记录 - recording: 记录中 - stop: 停止记录 - tips: 按下记录按钮后将捕获你的键盘输入。 - send: 发送 - preferredKeys: 首选自定义快捷键 - terminationGracePeriodSeconds: - label: 终止宽限期 - affinity: - thisPodNamespace: 此虚拟机的命名空间 - matchExpressions: - inNamespaces: "命名空间中的工作负载" - namespaces: - label: 命名空间 - - volume: - label: 卷 - tabs: - basics: 基本信息 - snapshots: 快照 - datasource: 数据源 - details: 详情 - size: 大小 - source: 源 - kind: 类型 - sourceOptions: - new: 创建 - vmImage: 虚拟机镜像 - image: 镜像 - frontend: 前端 - blockdev: 块设备 - attachedNode: 连接的节点 - endpoint: 端点 - diskTags: 磁盘标签 - nodeTags: 节点标签 - lastBackup: 上次备份 - lastBackupAt: 上次备份时间 - replicasNumber: 副本数 - promptRemove: - tips: "警告:卷的快照将随卷一起删除。" - externalLink: - tips: 查看卷详细信息 - rebuildingMessage: '重建进度:{percentage}%' - - image: - label: 镜像 - tabs: - basics: 基本信息 - url: URL - size: 大小 - urlTip: '支持被 qemu 支持的 rawqcow2 镜像格式。可引导的 ISO 镜像也是类似 raw 格式的镜像。' - fileName: 文件名称 - uploadFile: 上传文件 - source: 源 - sourceType: - download: URL - upload: 文件 - warning: - uploading: |- - {count, plural, - =1 {正在上传一个镜像。请不要刷新或关闭前页面。} - other {正在上传{count}个镜像。请不要刷新或关闭前页面。} - } - - vmTemplate: - label: 模板 - tabs: - basics: 基本信息 - nameNsDescription: - name: 模板名称 - tips: - notExistImage: - title: 镜像 {name} 不存在。 - message: 请选择一个新的镜像。 - notExistNode: - title: 节点 {name} 不存在。 - message: 请选择一个新的节点。 - - upgradePage: - upgradeApp: 升级软件 - upgrade: 升级 - upgradeTip: 请选择目标升级版本 - currentVersion: 当前版本 - versionLabel: 可用的兼容版本 - enableLogging: 启用 Logging - upgradeNode: 升级节点 - upgradeSysService: 升级系统服务 - upgradeImage: 下载升级镜像 - osUpgrade: 操作系统升级 - uploadNew: 上传新镜像 - selectExisting: 选择现有镜像 - createRepository: 创建升级仓库 - succeeded: 成功 - releaseTip: 请仔细阅读升级文档。你可以在 Harvester Release Note 上查看详细信息。 - checkReady: 我已阅读并理解与此 Harvester 版本相关的升级内容。 - pending: 等待 - repoInfo: - upgradeStatus: 升级状态 - os: 操作系统 - kubernetes: Kubernetes - monitoringChart: Monitoring Chart - harvesterChart: Harvester Chart - success: 成功 - fail: 失败 - ongoing: 进行中 - downloadLog: 下载日志 - logStatus: 日志下载状态 - dismissMessage: 忽略 - upgradeInfo: - warning: 警告 - doc: 在升级到新 Harvester 版本之前,你必须为集群执行所需的升级前检查。仅完成适用于环境的任务即可。 - tip: 如果没有执行这些检查,升级可能会失败,而且你可能会遇到需要手动修复的已知问题。 - moreNotes: 有关发行说明的详情,请访问 - - - backup: - label: 虚拟机备份 - createText: 还原备份 - title: 还原虚拟机 - backupTargetTip: 用于访问备份存储的端点。支持 NFS 和 S3。 - message: - noSetting: - prefix: 在创建新备份之前, 必须在 - middle: '设置' - suffix: 中配置备份目标。 - errorTip: - prefix: 非法的备份目标 - middle: 设置 - suffix: "。错误信息: " - viewSetting: - prefix: 点击 - middle: 此处 - suffix: 查看备份配置。 - testConnect: - actionLabel: 测试连接 - waitingLabel: 正在测试连接... - successLabel: 连接已测试 - successMessage: 'Harvester 可以成功连接到端点 {endpoint}' - restore: - backup: 备份 - deletePreviousVolumes: 删除先前的卷 - createNew: 创建 - replaceExisting: 替换现有 - virtualMachineName: 虚拟机名称 - matchTarget: 当前备份目标与现有目标不匹配。 - - network: - label: 虚拟机网络 - tabs: - basics: 基本信息 - layer3Network: 路由 - clusterNetwork: - label: 集群网络 - create: 创建新的集群网络 - toolTip: 定义你的自定义集群网络名称 - createPlaceholder: 输入新的集群网络名称 - selectOrCreatePlaceholder: 选择或创建新的集群网络 - selectPlaceholder: 选择集群网络 - layer3Network: - mode: - label: 模式 - auto: 自动(DHCP) - manual: 手动 - serverIPAddr: - label: DHCP 服务器 IP - gateway: - label: 网关 - placeholder: 例如:172.16.0.1 - cidr: - label: CIDR - placeholder: 例如:172.16.0.1/24 - sshKey: - label: SSH 密钥 - keypair: SSH 密钥 - tabs: - basics: 基本信息 - - setting: - label: 设置 - tabs: - advanced: 高级选项 - ui: UI - validation: - physicalNIC: 默认物理网卡 - placeholder: - accessKeyId: 指定你的访问密钥 ID - secretAccessKey: 指定你的密文访问密钥 - cert: 上传自签名 SSL 证书 - vlanChangeTip: 新修改的默认网络接口仅在新增节点生效,不在现有节点生效。 - defaultPhysicalNIC: 默认网络接口 - percentTip: 括号内的数值代表所有主机上的网络接口的分布比例。如果选择了一个小于100%的接口,用户需要手动指定 VLAN 网络配置失败的主机上的网络接口。 - message: - ca: - prefix: '点击' - middle: '此处' - suffix: '添加自定义证书。' - sslCertificates: - publicCertificate: 公共证书 - privateKey: 私钥 - ca: CA - storageNetwork: - range: - placeholder: 例如:172.16.0.0/24 - label: IP 范围 - invalid: '范围无效。' - clusterNetwork: 集群网络 - vlan: VLAN ID - exclude: - label: 排除 - placeholder: 例如:172.16.0.1/32 - invalid: '"排除列表"无效。' - addIp: 添加排除 IP - warning: '警告:
如果要更改存储网络,你需要在应用此设置之前关闭所有虚拟机。
用户必须确保配置了集群网络,VLAN 配置能覆盖所有节点,而且所有节点的网络正常。' - tip: IP 范围应为 IPV4 格式。所需 IP 数量 = 节点数量 * 4 + 磁盘数量 * 2 + 要下载/上传的镜像数量。详见此文档。 - vmForceDeletionPolicy: - period: 周期 - httpProxy: - warning: '警告:
如果你配置了 "http-proxy" 和 "https-proxy",那么你必须同时将 Harvester 节点的 CIDR 填入 "no-proxy",否则 Harvester 集群将会崩溃。' - supportBundleImage: - imagePullPolicy: 镜像拉取策略 - repo: 仓库 - tag: 标签 - csiDriverConfig: - provisioner: 提供商 - volumeSnapshotClassName: 卷快照类名 - backupVolumeSnapshotClassName: 备份卷快照类名 - containerdRegistry: - mirrors: - mirrors: Mirror - registryName: 镜像仓库名称 - endpoints: 端点 - rewrite: - rewrite: 重写 - addRewrite: 添加重写 - addMirror: 添加 Mirror - configs: - configs: Configs - registryEDQNorIP: 镜像仓库 FDQN 或 IP - registryPlaceholder: myregistry.local:5000 - username: 用户名 - password: 密码 - auth: 认证 - identityToken: 身份令牌 - insecureSkipVerify: InsecureSkipVerify - addConfig: 添加配置 - - upgrade: - selectExitImage: 请选择要升级的操作系统镜像。 - imageUrl: 请输入有效的图片网址。 - chooseFile: 请选择上传图片。 - checksum: 校验和 - harvesterMonitoring: - label: Harvester Monitoring - section: - prometheus: Prometheus - prometheusNodeExporter: Prometheus Node Exporter - grafana: Grafana - alertmanager: Alertmanager - tips: - scrape: 每次采集数据的间隔时间 - evaluation: 每次评估规则的间隔时间 - retention: 监控数据保留时间 - retentionSize: 监控数据最大占用存储 - clusterRegistrationUrl: - message: 要完全取消导入的 Harvester 集群,也请通过虚拟化管理页面在 Rancher 仪表板 UI 上删除它。 - ntpServers: - isNotIPV4: 你输入的不是 IPv4 或主机地址。请输入有效的 IPv4 地址或主机地址。 - isDuplicate: 存在重复的 NTP 服务器配置。 - cloudTemplate: - label: Cloud Config 模板 - templateType: 模板类型 - userData: 用户数据 - networkData: 网络数据 - - support: - title: Harvester 支持 - kubeconfig: - title: 下载 KubeConfig - titleDescription: 下载 Kubeconfig 用于调试。 - internal: - rancher: - title: 访问内嵌的 Rancher UI - titleDescription: 仅支持使用内嵌的 Rancher 仪表板来进行调试和验证。有关 Rancher 的多集群和多租户集成,请参阅此文档。 - longhorn: - title: 访问内嵌的 Longhorn UI - titleDescription: 仅支持使用内嵌的 Longhorn UI 来进行调试和验证。 - community: - learnMore: 进一步了解 SUSE Harvester 支持 - pricing: 联系我们获取价格。 - - namespace: - label: 命名空间 - - projectNamespace: - label: 项目/命名空间 - - vip: - namespace: - label: 命名空间 - cidr: - label: CIDR/IP 范围 - invalid: '"CIDR/IP 范围" 无效。' - toolTip: "可以使用逗号分隔来应用多个池或范围。即 192.168.0.200/30,192.168.0.200/29 或 192.168.0.10-192.168.0.11" - add: - label: 添加 IP 池 - - sslParameters: - protocols: - label: 协议 - ciphers: - label: 密码 - - monitoring: - configuration: - label: 配置 - alertmanagerConfig: - label: Alertmanager 配置 - diabledMonitoringTips: - prefix: '你必须先启用' - middle: 'Monitoring' - suffix: 'Addon。' - diabledAlertingTips: - prefix: '你必须先启用' - middle: 'Alertmanager' - suffix: '然后配置才能生效' - disabledAddon: - prefix: 'Monitoring Addon 已禁用。单击' - middle: '此处' - suffix: '启用它。' - - logging: - configuration: - section: - fluentbit: Fluentbit - fluentd: Fluentd - clusterFlow: - label: Cluster Flow - clusterOutput: - label: Cluster Output - flow: - label: Flow - output: - label: Output - diabledTips: - prefix: '你必须先启用' - middle: 'Logging' - suffix: '然后配置才能生效' - - snapshot: - label: 卷快照 - targetVolume: 原始卷 - size: 大小 - image: 镜像 - - vmSnapshot: - label: VM 快照 - createText: 还原快照 - snapshot: 快照 - - storage: - label: 存储 - useDefault: 使用默认存储 - migratable: - label: 可迁移 - numberOfReplicas: - label: 副本数量 - staleReplicaTimeout: - label: 过时副本超时 - nodeSelector: - label: 主机选择器 - diskSelector: - label: 磁盘选择器 - storageClass: - label: 存储类 - title: 存储类 - customize: - volumeBindingMode: - later: 创建了使用 PVC 的 VM 之后,再绑定并配置一个持久卷 - parameters: - numberOfReplicas: - label: 副本数量 - staleReplicaTimeout: - label: 过时副本超时 - diskSelector: - label: 磁盘选择器 - no-options: 没有可用的标签,请前往 `主机 > 存储` 页面进行添加。 - nodeSelector: - label: 节点选择器 - no-options: 没有可用的标签,请前往 `主机 > 存储` 页面进行添加。 - migratable: - label: 可迁移 - allowedTopologies: - title: 允许的拓扑 - tooltip: 用于在匹配以下所有表达式的主机上调度虚拟机。 - - vlanConfig: - title: 网络配置 - createNetworkConfig: 创建网络配置 - action: - migrate: 迁移 - titles: - nodeSelector: 节点选择器 - uplink: Uplink - bondOptions: Bond 选项 - attributes: 属性 - host: 选定的主机 - scheduling: - affinity: - allNodes: 选择所有节点 - specificNode: 选择特定节点 - schedulingRules: 选择节点匹配规则 - uplink: - nics: - label: NIC - addLabel: 添加 NIC - placeholder: 选择在所有选定节点上都可用的 NIC - validate: - available: NIC "{nic}" 在所选节点上不可用 - linkAttributes: - mtu: - label: MTU - bondOptions: - mode: - label: 模式 - miimon: - label: Miimon - tooltip: -1 指保持原有值。 - nodeSelector: - matchingNodes: - matchesSome: |- - {matched, plural, - =0 {匹配 {total, number} 个节点中的 0 个} - =1 {匹配 {total, number} 个节点中的 1 个:"{sample}"} - other {匹配 {total, number} 个节点中的 {matched, number} 个,包括 "{sample}"} - } - - vlanStatus: - vlanConfig: - label: 网络配置 - - clusterNetwork: - title: 集群网络/配置 - create: - button: - label: 创建集群网络 - clusterNetwork: 没有定义的网络配置。 - mgmt: mgmt 是一个内置的集群管理网络,它不支持其它网络配置。 - notExist: '集群网络 "{ clusterNetwork }" 不存在' - notReady: '集群网络 "{ clusterNetwork }" 未就绪' - - addons: - descriptions: - 'harvester-system/vm-import-controller': vm-import-controller 是一个插件,用于将其他集群的 VM 工作负载迁移到现有的 Harvester 集群。 - 'harvester-system/pcidevices-controller': pcidevices-controller 是一个插件,用于发现集群中节点的 PCI 设备,能让用户为 PCI 透传准备设备,以便与 Harvester VM 和 Guest 集群一起使用。 - 'cattle-logging-system/rancher-logging': rancher-logging 是一个插件,用于从 Harvester 集群收集多功能日志、事件和审计,并根据流将它们路由到多种服务器。 - 'harvester-system/rancher-vcluster': rancher-vcluster 用于部署安装了 Rancher 的 vcluster。 - 'cattle-monitoring-system/rancher-monitoring': rancher-monitoring 是一个插件,用于收集 Harvester 集群和 VM 的指标。你可以在嵌入式仪表板上查看指标,并向远程服务器发送告警。 - 'vm-import-controller': vm-import-controller 是一个插件,用于将其他集群的 VM 工作负载迁移到现有的 Harvester 集群。 - 'pcidevices-controller': pcidevices-controller 是一个插件,用于发现集群中节点的 PCI 设备,能让用户为 PCI 透传准备设备,以便与 Harvester VM 和 Guest 集群一起使用。 - 'rancher-logging': rancher-logging 是一个插件,用于从 Harvester 集群收集多功能日志、事件和审计,并根据流将它们路由到多种服务器。 - 'rancher-monitoring': rancher-monitoring 是一个插件,用于收集 Harvester 集群和 VM 的指标。你可以在嵌入式仪表板上查看指标,并向远程服务器发送告警。 - 'rancher-vcluster': rancher-vcluster 用于部署安装了 Rancher 的 vcluster。 - 'harvester-seeder': Harvester-seeder 是一个插件,使用 ipmi 和 redfish 来发现硬件信息并执行外部操作。 - 'harvester-system/harvester-seeder': Harvester-seeder 是一个插件,使用 ipmi 和 redfish 来发现硬件信息并执行外部操作。 - vmImport: - titles: - basic: 基本信息 - pvc: 卷 - rancherVcluster: - accessRancher: 访问 Rancher 仪表板 - hostname: 主机名 - rancherVersion: Rancher 版本 - password: Bootstrap 密码 - switchFailed: "{action} {name} 失败" - - - - loadBalancer: - label: 负载均衡器 - tabs: - basic: 基本信息 - listeners: 监听器 - healthCheck: 健康检查 - backendServer: 后端服务器选择器 - workloadType: - label: 工作负载类型 - options: - cluster: 来宾 Kubernetes 集群 - vm: 虚拟机 - ipam: - label: IPAM - options: - dhcp: DHCP - pool: 池 - ipPool: - label: IP 池 - options: - none: 自动(自动选择 IP 池) - listeners: - name: - label: 名称 - protocol: - label: 协议 - port: - label: 端口 - backendPort: - label: 后端端口 - placeholder: 例如:80 - backendServerSelector: - matchingVMs: - matchesSome: |- - {matched, plural, - =0 { 在负载均衡器所在的命名空间中匹配 0 个虚拟机,共 {total, number} 个。} - =1 {在负载均衡器所在的命名空间中匹配 1 个虚拟机 "{sample}",共 {total, number} 个。 } - other { 在负载均衡器所在的命名空间中匹配的 {matched, number} 个现有虚拟机(共 {total, number} 个),包括 "{sample}"} - } - backendServers: - label: 后端服务器 - - ipPool: - label: IP 池 - network: - label: 虚拟机网络 - tabs: - range: 范围 - scope: 范围 - selector: 选择器 - subnet: - label: 子网 - startIP: - label: 起始 IP - endIP: - label: 终止 IP - gateway: - label: 网关 - namespace: - label: 命名空间 - project: - label: 项目 - guestCluster: - label: 来宾 Kubernetes 集群 - availableIP: - label: 可用 IP 数 - scope: - label: 范围 - addLabel: 添加范围 - priority: - label: 优先级 - cidr: - addLabel: 添加 CIDR - range: - addLabel: 添加范围 - - service: - healthCheckPort: - label: 健康检查端口 - healthCheckSuccessThreshold: - label: 健康检查成功阙值 - description: 如果探针连续检测到某个地址的成功次数达到成功阈值,后端服务器就可以开始转发流量。 - healthCheckFailureThreshold: - label: 健康检查失败阈值 - description: 如果健康检查失败的数量达到失败阈值,后端服务器将停止转发流量。 - healthCheckPeriod: - label: 健康检查周期 - healthCheckTimeout: - label: 健康检查超时 - healthCheckEnabled: - label: 健康检查 - - secret: - label: 密文 - - sriov: - label: SR-IOV 网络设备 - nodeName: 节点 - numVFs: 虚拟数量 - vfAddresses: 虚拟地址 - showMore: 显示更多 - parentSriov: 按父级 SR-IOV 过滤 - - harvesterVlanConfigMigrateDialog: - targetClusterNetwork: - label: 目标集群网络 - placeholder: 选择目标集群网络 - - seeder: - banner: - enable: - prefix: harvester-seeder 插件已被禁用, - middle: 单击此处 - suffix: 启用它。 - noAccess: 请联系管理员启用外部访问。 - noAddon: harvester-seeder 插件不存在,请检查是否已安装。 - noInventory: 正在等待 "inventories.metal.harvesterhci.io" 就绪。 - inventory: - host: - label: 主机 - placeholder: 例如:172.16.1.1 - port: - label: 端口 - placeholder: 例如:623 - insecureTLS: - label: 不安全的 TLS - secret: - label: 密文 - create: - title: 添加密文 - event: - label: 事件 - pollingInterval: - label: 轮询间隔 - - affinity: - thisPodNamespace: 此虚拟机的命名空间 - matchExpressions: - inNamespaces: "命名空间中的工作负载" - vmAffinityTitle: 虚拟机调度 - namespaces: - placeholder: 例如:default,system,base - label: 命名空间 - addLabel: 添加工作负载选择器 - topologyKey: - placeholder: 'topology.kubernetes.io/zone' - -advancedSettings: - descriptions: - 'harv-vlan': VLAN 网络的默认网络接口名称。 - 'harv-backup-target': 用于存储虚拟机备份的自定义备份目标。 - 'branding': 管理员可以修改 Harvester 产品名称、Logo 和配色方案来全局自定义 UI 界面。 - 'harv-csi-driver-config': 为 CSI 设备配置其他信息。 - 'harv-containerd-registry': 连接到私有镜像仓库的 Containerd 仓库配置。 - 'harv-log-level': 配置 Harvester server 日志级别。默认级别为 info。 - 'harv-server-version': Harvester server 版本。 - 'harv-upgrade-checker-enabled': 是否启用 Harvester 升级检查。默认值为 true。 - 'harv-upgrade-checker-url': 默认 Harvester 升级检查 URL。只有当 upgrade-checker-enabled 设置为 true 时可使用。 - 'harv-ui-source': 配置加载 UI 资源方式。 - 'harv-ui-index': 'UI 的 HTML 索引位置。' - 'harv-ui-plugin-index': 'Harvester 插件的 JS 文件索引位置' - 'harv-cluster-registration-url': 用于多集群管理的注册 URL。 - 'harv-http-proxy': '用于 Harvester 访问外部服务的 HTTP 代理。' - 'harv-additional-ca': '用于 TLS 验证的自定义 CA 根证书。' - 'harv-overcommit-config': '资源超额配置。' - 'harv-support-bundle-timeout': 'Support Bundle 超时配置(单位:分钟),你可以使用 0 来禁用超时。' - 'harv-support-bundle-expiration': 'Support Bundle 过期配置(单位:分钟)。' - 'harv-vm-force-reset-policy': 配置当虚拟机卡在停机的节点上时的强制重置动作。 - 'harv-ssl-parameters': 用于 TLS 验证的自定义 SSL 参数。 - 'harv-storage-network': 'Longhorn 存储网络设置。' - 'harv-support-bundle-namespaces': 指定支持包要收集的其他命名空间中的资源。 - 'harv-auto-disk-provision-paths': 指定 Harvester 将自动添加为虚拟机存储的磁盘(使用 glob 模式)。 - 'harv-support-bundle-image': Support Bundle 镜像配置。前往 rancher/support-bundle-kit 查看更多版本。 - 'harv-release-download-url': 此设置用于配置升级版本下载的 URL 地址。Harvester 将从该 URL 托管的 ($URL/$VERSION/version.yaml) 文件中获取 ISO URL 和校验和值。 - 'harv-default-vm-termination-grace-period-seconds': 配置停止虚拟机的终止宽限期。 - 'harv-ntp-servers': 配置 NTP 服务器。你可以配置多个 IPv4 地址或主机地址。 - 'harv-kubeconfig-default-token-ttl-minutes': 'Harvester的管理kubeconfig文件有一个TTL(单位:分钟)参数,用来设置该文件经过多长时间失效过期。默认值是0,意味着永不过期。' - -typeLabel: - kubevirt.io.virtualmachine: |- - {count, plural, - one { 虚拟机 } - other { 虚拟机 } - } - harvesterhci.io.virtualmachineimage: |- - {count, plural, - one { 镜像 } - other { 镜像 } - } - harvesterhci.io.keypair: |- - {count, plural, - one { SSH 密钥 } - other { SSH 密钥 } - } - harvesterhci.io.host: |- - {count, plural, - one { 主机 } - other { 主机 } - } - harvesterhci.io.networkattachmentdefinition: |- - {count, plural, - one { 虚拟机网络 } - other { 虚拟机网络 } - } - harvesterhci.io.volume: |- - {count, plural, - one { 卷 } - other { 卷 } - } - harvesterhci.io.user: |- - {count, plural, - one { 用户 } - other { 用户 } - } - harvesterhci.io.setting: |- - {count, plural, - one { 设置 } - other { 设置 } - } - harvesterhci.io.virtualmachinetemplateversion: |- - {count, plural, - one { 模板 } - other { 模板 } - } - harvesterhci.io.virtualmachinebackup: |- - {count, plural, - one { 虚拟机备份 } - other { 虚拟机备份 } - } - harvesterhci.io.cloudtemplate: |- - {count, plural, - one { Cloud Config 模板 } - other { Cloud Config 模板 } - } - harvesterhci.io.volumesnapshot: |- - {count, plural, - one { 卷快照 } - other { 卷快照 } - } - harvesterhci.io.vmsnapshot: |- - {count, plural, - one { VM 快照 } - other { VM 快照 } - } - network.harvesterhci.io.vlanconfig: |- - {count, plural, - one { 网络配置 } - other { 网络配置 } - } - harvesterhci.io.monitoring.alertmanagerconfig: |- - {count, plural, - one { Alertmanager 配置 } - other { Alertmanager 配置 } - } - harvesterhci.io.logging.clusterflow: |- - {count, plural, - one { Cluster Flow } - other { Cluster Flow } - } - harvesterhci.io.logging.clusteroutput: |- - {count, plural, - one { Cluster Output } - other { Cluster Output } - } - harvesterhci.io.logging.flow: |- - {count, plural, - one { Flow } - other { Flow } - } - harvesterhci.io.logging.output: |- - {count, plural, - one { Output } - other { Output } - } - harvesterhci.io.storage: |- - {count, plural, - one { 存储类 } - other { 存储类 } - } - devices.harvesterhci.io.pcidevice: |- - {count, plural, - one { PCI 设备 } - other { PCI 设备 } - } - persistentvolumeclaim: |- - {count, plural, - one { 卷 } - other { 卷 } - } - network.harvesterhci.io.clusternetwork: |- - {count, plural, - one { 集群网络 } - other { 集群网络 } - } - devices.harvesterhci.io.sriovnetworkdevice: |- - {count, plural, - one { SR-IOV 网络设备 } - other { SR-IOV 网络设备 } - } - harvesterhci.io.secret: |- - {count, plural, - one { 密文 } - other { 密文 } - } - harvesterhci.io.blockdevice: |- - {count, plural, - one { 磁盘 } - other { 磁盘 } - } - loadbalancer.harvesterhci.io.loadbalancer: |- - {count, plural, - one { 负载均衡器 } - other { 负载均衡器 } - } - loadbalancer.harvesterhci.io.ippool: |- - {count, plural, - one { IP 池 } - other { IP 池 } - } diff --git a/shell/layouts/default.vue b/shell/layouts/default.vue index 28ea217c8aa..8a449a956dd 100644 --- a/shell/layouts/default.vue +++ b/shell/layouts/default.vue @@ -84,7 +84,9 @@ export default { computed: { ...mapState(['managementReady', 'clusterReady']), ...mapGetters(['productId', 'clusterId', 'namespaceMode', 'isExplorer', 'currentProduct', 'isSingleProduct', 'isRancherInHarvester', 'isVirtualCluster']), - ...mapGetters({ locale: 'i18n/selectedLocaleLabel', availableLocales: 'i18n/availableLocales' }), + ...mapGetters({ + locale: 'i18n/selectedLocaleLabel', availableLocales: 'i18n/availableLocales', hasMultipleLocales: 'i18n/hasMultipleLocales' + }), ...mapGetters('type-map', ['activeProducts']), afterLoginRoute: mapPref(AFTER_LOGIN_ROUTE), @@ -678,9 +680,9 @@ export default { > {{ displayVersion }} - * { flex: 1; color: var(--link); diff --git a/shell/pages/auth/login.vue b/shell/pages/auth/login.vue index 6e5a976e015..483a08cd293 100644 --- a/shell/pages/auth/login.vue +++ b/shell/pages/auth/login.vue @@ -130,7 +130,7 @@ export default { }, computed: { - ...mapGetters({ t: 'i18n/t' }), + ...mapGetters({ t: 'i18n/t', hasMultipleLocales: 'i18n/hasMultipleLocales' }), nonLocalPrompt() { if (this.singleProvider) { @@ -474,7 +474,10 @@ export default { {{ nonLocalPrompt }} -
+
diff --git a/shell/pages/prefs.vue b/shell/pages/prefs.vue index 47bf6e49e07..77b5fe93378 100644 --- a/shell/pages/prefs.vue +++ b/shell/pages/prefs.vue @@ -39,6 +39,7 @@ export default { scalingDownPrompt: mapPref(SCALE_POOL_PROMPT), ...mapGetters(['isSingleProduct']), + ...mapGetters({ hasMultipleLocales: 'i18n/hasMultipleLocales' }), theme: { get() { @@ -177,7 +178,10 @@ export default { class="mb-20" /> -
+

@@ -189,7 +193,6 @@ export default {
-

path.replace(/^.*\/([^\/]+)\.[^.]+$/, '$1')); // Using require.context() forces them to all be in the same webpack chunk name... just hardcode the list for now so zh-hans // gets generated as it's own chunk instead of being loaded all the time. - const available = [DEFAULT_LOCALE, 'zh-hans']; + const available = [DEFAULT_LOCALE]; const out = { default: DEFAULT_LOCALE, @@ -58,6 +58,10 @@ export const getters = { return out; }, + hasMultipleLocales(state) { + return state.available.length > 1; + }, + t: state => (key, args, language) => { if (state.selected === NONE && !language) { return `%${ key }%`; @@ -322,7 +326,7 @@ export const actions = { commit('setSelected', locale); - // Ony update the preference if the locale changed + // Only update the preference if the locale changed if (currentLocale !== locale) { dispatch('prefs/set', { key: 'locale',