From 920aafcd617e81d5e72939245fa213c0b1b9e642 Mon Sep 17 00:00:00 2001 From: lofyer Date: Tue, 4 Aug 2026 14:36:59 +0800 Subject: [PATCH] feat(branding): rebrand product to ZStack AIOS Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> --- config/config.ts | 2 +- public/favicon.ico | Bin 3109 -> 587 bytes public/favicon.png | Bin 3109 -> 565 bytes public/static/favicon.ico | Bin 3109 -> 587 bytes public/static/favicon.png | Bin 3109 -> 565 bytes scripts/rebrand | 6 ++--- src/assets/images/gpustack-logo-2.png | Bin 14160 -> 3470 bytes src/assets/images/gpustack-logo.png | Bin 27624 -> 6340 bytes src/assets/images/small-logo-200x200.png | Bin 26156 -> 2593 bytes src/layouts/extraRender.tsx | 2 +- src/layouts/rightRender.tsx | 2 +- src/locales/en-US/billing.ts | 2 +- src/locales/en-US/clusters.ts | 16 ++++++------ src/locales/en-US/common.ts | 4 +-- src/locales/en-US/models.ts | 8 +++--- src/locales/en-US/organizations.ts | 2 +- src/locales/en-US/resources.ts | 6 ++--- src/locales/en-US/users.ts | 6 ++--- src/locales/ja-JP/billing.ts | 2 +- src/locales/ja-JP/clusters.ts | 24 +++++++++--------- src/locales/ja-JP/common.ts | 4 +-- src/locales/ja-JP/models.ts | 12 ++++----- src/locales/ja-JP/organizations.ts | 2 +- src/locales/ja-JP/resources.ts | 10 ++++---- src/locales/ja-JP/users.ts | 8 +++--- src/locales/ru-RU/billing.ts | 2 +- src/locales/ru-RU/clusters.ts | 16 ++++++------ src/locales/ru-RU/common.ts | 4 +-- src/locales/ru-RU/models.ts | 8 +++--- src/locales/ru-RU/organizations.ts | 2 +- src/locales/ru-RU/resources.ts | 8 +++--- src/locales/ru-RU/users.ts | 4 +-- src/locales/tr-TR/billing.ts | 2 +- src/locales/tr-TR/clusters.ts | 16 ++++++------ src/locales/tr-TR/common.ts | 4 +-- src/locales/tr-TR/models.ts | 8 +++--- src/locales/tr-TR/organizations.ts | 2 +- src/locales/tr-TR/resources.ts | 8 +++--- src/locales/tr-TR/users.ts | 6 ++--- src/locales/zh-CN/billing.ts | 2 +- src/locales/zh-CN/clusters.ts | 16 ++++++------ src/locales/zh-CN/common.ts | 4 +-- src/locales/zh-CN/models.ts | 8 +++--- src/locales/zh-CN/organizations.ts | 2 +- src/locales/zh-CN/resources.ts | 6 ++--- src/locales/zh-CN/users.ts | 6 ++--- .../gpu-service/instances/config/index.ts | 2 +- 47 files changed, 127 insertions(+), 127 deletions(-) diff --git a/config/config.ts b/config/config.ts index 309a79ae..242e53a7 100644 --- a/config/config.ts +++ b/config/config.ts @@ -77,7 +77,7 @@ export default defineConfig({ antd: { style: 'less' }, - title: 'MesaStack', + title: 'ZStack AIOS', hash: true, access: {}, model: {}, diff --git a/public/favicon.ico b/public/favicon.ico index c3fe7ef1f77f7ceb8ea2f443e84c9a22c25f2cb3..9db191215441dff23ddcb1747bcf4e9ab0af0299 100644 GIT binary patch delta 564 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 Cx@3X? diff --git a/public/favicon.png b/public/favicon.png index c3fe7ef1f77f7ceb8ea2f443e84c9a22c25f2cb3..ee965e7eb54df08dcef361cec355013e7b028f6c 100644 GIT binary patch delta 541 zcmV+&0^NklN8%XD+EkB z5Ui`Inmct$&O`NE0Xps6=SK&1rU?<0f>g}~NIQBTKxP*98T#znd4rcTW@O=0OS@E) z1o*NqEUi^RgD3$7q5v&)=iug0p)q!O+oEO@X?-IDY<{zOuxtfZ!slZrJuM5n+`N4O~P6yyzk7jPfi~iYqh4;HrGM@l|pzhgO%1u%Erq_4-Bwz*g5(c4OF=f?)Pb$>a>#04ksRt;ufSNK(H?-+?( zhz8GU9*=o>|9oI`=TZT5{%B=X0veufl-RLq$pMTG8JIcmz1XWM_U1#!FMKSsWBpq< z^V8716-∼`UdK7GcED)SZiZvfO^N2LIenKc8Xy$Y%oAWevdpP&?U8sdn4SS54^ fCHcP)7#7$c@YD2R4-i9}00000NkvXXu0mjf&q@BW literal 3109 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 Cx@3X? diff --git a/public/static/favicon.ico b/public/static/favicon.ico index c3fe7ef1f77f7ceb8ea2f443e84c9a22c25f2cb3..9db191215441dff23ddcb1747bcf4e9ab0af0299 100644 GIT binary patch delta 564 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 Cx@3X? diff --git a/public/static/favicon.png b/public/static/favicon.png index c3fe7ef1f77f7ceb8ea2f443e84c9a22c25f2cb3..ee965e7eb54df08dcef361cec355013e7b028f6c 100644 GIT binary patch delta 541 zcmV+&0^NklN8%XD+EkB z5Ui`Inmct$&O`NE0Xps6=SK&1rU?<0f>g}~NIQBTKxP*98T#znd4rcTW@O=0OS@E) z1o*NqEUi^RgD3$7q5v&)=iug0p)q!O+oEO@X?-IDY<{zOuxtfZ!slZrJuM5n+`N4O~P6yyzk7jPfi~iYqh4;HrGM@l|pzhgO%1u%Erq_4-Bwz*g5(c4OF=f?)Pb$>a>#04ksRt;ufSNK(H?-+?( zhz8GU9*=o>|9oI`=TZT5{%B=X0veufl-RLq$pMTG8JIcmz1XWM_U1#!FMKSsWBpq< z^V8716-∼`UdK7GcED)SZiZvfO^N2LIenKc8Xy$Y%oAWevdpP&?U8sdn4SS54^ fCHcP)7#7$c@YD2R4-i9}00000NkvXXu0mjf&q@BW literal 3109 zcmaJ@X*iT^8y;l~g-Th9F|s8yV~lOg*k%YtvSch_jG@7pF*6ujwh}2zN=if4UKLrQ zBuf%mvP@-PvPF_tB0Jyct={j)*Y_O9^W67+9oKnY=XGD_k0;i`{P=D@aXtV5u-n8K zW655D+b=IS`%4Q7T3|0?bVDrNitJ7gz)=YReK)cz0cb+Pc@QiKIJZFGCIS)w*eOS} z#?rB7ClPou35?s$0W(MxHW~mx>M|%eycdBEbR~EYeNdpkD{DYNq8kcit7Zl@qo4`r zh{i!wf>n^YH9p7-ujK~P)d3 zy164PF-AX&u}>(_IXaz!fItEQ0>A;PU^3MMqN1gx1%bjKFqkqsLzx!nL&q_ceP}Yj z7%&7Ho=T+9iDVz(HY3iJ>_qGl_PwX3mFmM!z3K+WG)2~D`v;Ut; zBK^*$(Jcx8>iwU@H0wYL0b)s@k^QK6_T=1Uwo6eEXet3mCsVD-Wba?sXmO5AC)3W6 zDL@zu3Lo^x+g=@loVKHR9ABo^Y|Alq?7pwM1?6w_96n13{flBlzxEWE&B;b#( z5yU@hf&G#1C)VxHT2%jtg|NjywrBfav;Gxg8)$p`+q&$-Z}Ss;*p8>Nt!>gLIu8Kw z-Y~)FTQm9|+Xhl>-izr@rdL*@Ac2rzgS`sU$9naQ0oe~Z?vwNd9GHriYn{sudvmp9 zG4DrRHq=HdzdJg%|HT=j#M~G`-lUQX;b*wylVrV3Bom&G7X)ZcE(|OgT<+pLcS-x( z8?B}E;P$1p^TR7CakYa^LefKO<;^yOtR1|Kz8Ay~w6AkTVzICF<4&3=VDj$|eez#F zT=l96HmLv+flao)=nmD1w{jD&2#IZYG6;+&W{27u-z(I$;OLZilS>nI1!-kLacUG}uNx?@tK zwJ)NS8*R>6xIYbRpK`y|`NMv%d*aJ|Y9bmMOGJkZ{vng(#DMwzZI(z;45ZvZMttYj z@BS}Pp+_NtVv+A@lOk)^^RGGD#ivp)+!CG9mea#~7j?!OB`B7MJ$_)(yDS&!-+x#Y zz?{gn_?vI^t!~)m<)ztur3WEY>*_Vz`rXIgA%^Yi)KV|i9`0Ud%mwZOff z-Y=1K9-aY@WfFmXL0r8`&42ZEMreof{6>DCk`5W9_B?5nV|X&DkH~qh?}?ZNwWQ+VGrJDn{;pC?Bt$aLD8@ko$y=;a+-ovq5_ zca+Tt@%D`uf7=N!F-S;9`e`V>I|FA;{>`meY>#T^W_~sMp1H1{A1qmb1pU6xN9K=Q*_b z>Brc&pElL!=DtlopORPAKQ)jhC#)_+OZF%pIIK2SRvUlTXo>;K z3%s7*)*mg%KiISI{mZeUmq{|TTA73$XQ)7{_<~`Xa-DRCRIsfUe+}cf_AK&U_@RAL zT7bW$!uTNk&CI>ZhTx=w`}8N5cB|}A$+LX zPl*%Mo(b1@zrk@~K+%4D>U20Cze2}i|7yoc*k8w2lv8fuA$Ny7PUb6`w%@J;T)2G@ zy#LEsgX?15tA+Km+Wl>(QgaN=;r8RjHpu3a-B-I>Hqu?|gShelsby__GALS~%tw^4 zbS=yTR;TBp#K|piTx?hBoWTn~mXlZ9K+pP~1Q<)0u9@{UT85Y+8@Dmi?W7S?({4N$ z^+n3lC{3z#-oVcP9xiW&TSDyB^;~CAk=Ci00@qD^c8YRm6SyaUfj_{!Q z@mP$c%e~Nj9hH^XC05&Mr`NRVXXe7qErro3x=K49O>SNF3!bQJT&a6;G1~jc4ToeN zYf@j8Do1Sx#97$lyriI&)k9Z5kyD!E2Rz!Zb$-xC`t@*4nXP5es$`YlsF5aU(cY5J z$EEAdIi?~$wyZX7tUb-)=i{&HGCWcBT|{Yp#I}q1wR=FSYx?t>XjaP`W^hIa-ITjR zD}XtHrz|rxH^A;yHD&0HHL0yR zXDPeod6sqYtni+rm$~*Ri`A1EXx9`6y|03IiahBlgioWc?d1hoi8pp}OqXWb@OgTc zq$7q>Yhqb5HB)eWnh{DW|6Qm>b|FMj#J%-whx|MTOUbMBqBCSH9CVW!?4SEWtPHde zWclinN9yMtrY9DIGD5QGAty?od^lJGkNwDaU`Rh8(tD{b?Pi5bV_W3S-M6>ottwKi ztK$@P?^<@-nNHjwKVMhvf|pUT7HgrEF%M6}8FlX*N~7{6KnR!6Wio zTAE!+h+%)l;^*Rr66wVc&ZC*L^bh5x?p>;wI)z4*SfZRKN0U&*vw;5ZJ#Tdjc0S8n zT5)#C8wT`NXmfSF6R_+mEQ^tSg_xc$=`n5Lx$%7Uc8IK|aIm<7r~?1CM)<-u_l9f&ywnR|*`yKVDs( z_ULUF*-Srw_mR+EuB4V`7BRRIbnsv$%)RXhQtm8s?fZO5x5O83?`w`xJSI^MsKohf zwFmTwPM^utR|1?Z)M#;mMnUr6-r@Cmd+MjOl*&!5T zt=^GDSWB~2*fPt0E7RtIilt5Kj<>ZcZ(^1=`Yt}Iw$L4ZVv8ynLsJ*mSAtnav9qJ2 z5$*Z*&Gl+E6DUK&`J$%e3+pW5JA+@U`>QsUYXRzui*u3k;zip(?k0xjm_h@W$o~LE Cx@3X? diff --git a/scripts/rebrand b/scripts/rebrand index a5363305..4de058cc 100755 --- a/scripts/rebrand +++ b/scripts/rebrand @@ -1,6 +1,6 @@ #!/bin/bash # -# rebrand: 把面向用户的品牌标识从 GPUStack 批量替换为 MesaStack(或自定义品牌)。 +# rebrand: 把面向用户的品牌标识从 GPUStack 批量替换为 ZStack AIOS(或自定义品牌)。 # # 设计目标:上游每次更新后,在新的 v-lofyer 分支上跑一次即可重新应用品牌定制。 # @@ -15,13 +15,13 @@ # # 环境变量: # FROM 源品牌词(默认 GPUStack) -# TO 目标品牌词(默认 MesaStack) +# TO 目标品牌词(默认 ZStack AIOS) # DRY_RUN 设为 1 时只预览将改动的行,不写文件 # set -e FROM="${FROM:-GPUStack}" -TO="${TO:-MesaStack}" +TO="${TO:-ZStack AIOS}" DRY_RUN="${DRY_RUN:-0}" log() { echo -e "\033[1;34m[rebrand]\033[0m $*"; } diff --git a/src/assets/images/gpustack-logo-2.png b/src/assets/images/gpustack-logo-2.png index df995fc93d46b877931270c3b8b8f304230e33ad..653182a4c63eb16cd937cb99196fcc0bc7df4030 100644 GIT binary patch delta 3469 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 diff --git a/src/assets/images/gpustack-logo.png b/src/assets/images/gpustack-logo.png index 3783e68dfaae19fd636162792dbcdd5089a72ca4..dbd799df91e42e0e58e23bc31189d925ae42c12d 100644 GIT binary patch literal 6340 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
X|I_^6bcQ7AfZM*IU$#Cmw@tja=hy{Y_{> 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 { { key: 'site', icon: , - label: 'MesaStack', + label: 'ZStack AIOS', url: externalLinks.site }, { diff --git a/src/layouts/rightRender.tsx b/src/layouts/rightRender.tsx index eec3175a..7605911f 100644 --- a/src/layouts/rightRender.tsx +++ b/src/layouts/rightRender.tsx @@ -82,7 +82,7 @@ export const getRightRenderContent = (opts: { { key: 'site', icon: , - label: 'MesaStack', + label: 'ZStack AIOS', url: externalLinks.site }, { diff --git a/src/locales/en-US/billing.ts b/src/locales/en-US/billing.ts index df048fbd..dcd809a4 100644 --- a/src/locales/en-US/billing.ts +++ b/src/locales/en-US/billing.ts @@ -1,7 +1,7 @@ export default { 'billing.upsell.title': 'Billing is an Enterprise feature', 'billing.upsell.subtitle': - 'Track spend, generate invoices, and enforce budgets across teams. Upgrade to MesaStack Enterprise to manage billing.', + 'Track spend, generate invoices, and enforce budgets across teams. Upgrade to ZStack AIOS Enterprise to manage billing.', 'billing.upsell.featuresTitle': 'What you get in Enterprise', 'billing.upsell.feature.usage': 'See cost breakdowns by organization, user, and model', diff --git a/src/locales/en-US/clusters.ts b/src/locales/en-US/clusters.ts index 005362c5..375f14fe 100644 --- a/src/locales/en-US/clusters.ts +++ b/src/locales/en-US/clusters.ts @@ -87,7 +87,7 @@ export default { 'clusters.addworker.detectWorkerAddress.tips': 'Defaults to Worker IP if not specified.', 'clusters.addworker.externalIP.tips': - 'If running in a VPC or private network, please specify the Worker external address reachable by the MesaStack Server.', + 'If running in a VPC or private network, please specify the Worker external address reachable by the ZStack AIOS Server.', 'clusters.addworker.enterWorkerIP': 'Enter worker IP', 'clusters.addworker.enterWorkerIP.error': 'Please enter the worker IP.', 'clusters.addworker.enterWorkerAddress': 'Enter worker external address', @@ -115,20 +115,20 @@ export default { '{count} new worker has been added to the cluster.', 'clusters.addworker.message.success_multiple': '{count} new workers have been added to the cluster.', - 'clusters.create.serverUrl': 'MesaStack Server URL', + 'clusters.create.serverUrl': 'ZStack AIOS Server URL', 'clusters.create.workerConfig': 'Worker Configuration', 'clusters.edit.k8sOptions.changed.tip': 'You have changed the Kubernetes options. Re-run the registration command on the target cluster for the changes to take effect.', 'clusters.addworker.containerName': 'Worker Container Name', 'clusters.addworker.containerName.tips': 'Specify a name for the worker container.', - 'clusters.addworker.dataVolume': 'MesaStack Data Volume', + 'clusters.addworker.dataVolume': 'ZStack AIOS Data Volume', 'clusters.addworker.dataVolume.tips': - 'Specify a data storage path for MesaStack.', + 'Specify a data storage path for ZStack AIOS.', 'clusters.table.ip.internal': 'Internal', 'clusters.table.ip.external': 'External', 'clusters.form.serverUrl.tips': - 'Specify an externally accessible MesaStack service URL if the worker cannot access MesaStack Server directly.', + 'Specify an externally accessible ZStack AIOS service URL if the worker cannot access ZStack AIOS Server directly.', 'clusters.form.setDefault': 'Set as Default', 'clusters.form.setDefault.tips': 'Default for deployment.', 'clusters.addworker.noClusters': 'No available Docker clusters found', @@ -146,7 +146,7 @@ export default { 'clusters.addworker.theadNotes-02': 'T-Head PPU uses the Container Device Interface (CDI) for device injection and requires the /var/run/cdi directory to be available for CDI generation.', 'clusters.addworker.nvidiaNotes': - 'The built-in inference backends in MesaStack require CUDA 12.8+. Please ensure your NVIDIA driver version is 570 or newer.', + 'The built-in inference backends in ZStack AIOS require CUDA 12.8+. Please ensure your NVIDIA driver version is 570 or newer.', 'clusters.volume.title': 'Volume Mounts', 'clusters.volume.name': 'Volume Name', 'clusters.volume.mountPath': 'Container Path', @@ -173,7 +173,7 @@ export default { 'clusters.volume.add': 'Add Volume Mount', 'clusters.systemDefaultContainerRegistry.title': 'Default Container Registry', 'clusters.systemDefaultContainerRegistry.tip': - 'Default registry used to resolve MesaStack images for this cluster. Falls back to the server default when unset.', + 'Default registry used to resolve ZStack AIOS images for this cluster. Falls back to the server default when unset.', 'clusters.k8sOptions.title': 'Kubernetes Deployment Options', 'clusters.imageCredentials.title': 'Image Credentials', 'clusters.imageCredentials.add': 'Add Credential', @@ -185,7 +185,7 @@ export default { 'Pod nodeSelector applied to every worker DaemonSet — only nodes whose labels match are eligible to run the worker.', 'clusters.operatorImage.title': 'Operator Image', 'clusters.operatorImage.tip': - 'Override for the MesaStack Operator container image. Leave empty to use the server default.', + 'Override for the ZStack AIOS Operator container image. Leave empty to use the server default.', 'clusters.namespace.title': 'Namespace', 'clusters.namespace.tip': 'Kubernetes namespace the cluster’s manifests render into. Leave empty to use gpustack-system.', diff --git a/src/locales/en-US/common.ts b/src/locales/en-US/common.ts index 97bc7419..4c96f821 100644 --- a/src/locales/en-US/common.ts +++ b/src/locales/en-US/common.ts @@ -46,7 +46,7 @@ export default { 'common.button.enabled': 'Enabled', 'common.button.disabled': 'Disabled', 'common.button.upgrade': 'Upgrade', - 'common.enterprise.feature': 'Available in MesaStack Enterprise', + 'common.enterprise.feature': 'Available in ZStack AIOS Enterprise', 'common.input.holder': 'Please enter', 'common.validate.value': '{name} value is required', 'common.button.edit': 'Edit', @@ -214,7 +214,7 @@ export default { 'common.form.password': 'Password', 'common.form.username': 'Username', 'common.login.rember': 'Remember me', - 'settings.company': 'MesaStack', + 'settings.company': 'ZStack AIOS', 'common.button.help': 'Help', 'common.button.feedback': 'Feedback', 'common.button.docs': 'Documentation', diff --git a/src/locales/en-US/models.ts b/src/locales/en-US/models.ts index 03cbd9b0..397556e7 100644 --- a/src/locales/en-US/models.ts +++ b/src/locales/en-US/models.ts @@ -14,7 +14,7 @@ export default { 'models.form.env': 'Environment Variables', 'models.form.configurations': 'Configurations', 'models.form.s3address': 'S3 Address', - 'models.form.partialoffload.tips': `When CPU offloading is enabled, MesaStack will allocate CPU memory if GPU resources are insufficient. You must correctly configure the inference backend to use hybrid CPU+GPU or full CPU inference.`, + 'models.form.partialoffload.tips': `When CPU offloading is enabled, ZStack AIOS will allocate CPU memory if GPU resources are insufficient. You must correctly configure the inference backend to use hybrid CPU+GPU or full CPU inference.`, 'models.form.distribution.tips': `Allows for offloading part of the model's layers to single or multiple remote workers when the resources of a worker are insufficient.`, 'models.openinplayground': 'Open in Playground', 'models.instances': 'instances', @@ -24,7 +24,7 @@ export default { 'model.deploy.sort': 'Sort', 'model.deploy.search.placeholder': 'Type / to search models', 'model.form.ollamatips': - 'Tip: The following are the preconfigured Ollama models in MesaStack. Please select the model you want, or directly enter the model you wish to deploy in the 【{name}】 input box on the right.', + 'Tip: The following are the preconfigured Ollama models in ZStack AIOS. Please select the model you want, or directly enter the model you wish to deploy in the 【{name}】 input box on the right.', 'models.sort.name': 'Name', 'models.sort.size': 'Size', 'models.sort.likes': 'Likes', @@ -87,7 +87,7 @@ export default { 'models.form.filePath': 'Model Path', 'models.form.backendVersion': 'Backend Version', 'models.form.backendVersion.tips': - 'To use the desired version of {backend}{version}, the system will automatically create a virtual environment in the online environment to install the corresponding version. After a MesaStack upgrade, the backend version will remain fixed. {link}', + 'To use the desired version of {backend}{version}, the system will automatically create a virtual environment in the online environment to install the corresponding version. After a ZStack AIOS upgrade, the backend version will remain fixed. {link}', 'models.form.gpuselector': 'GPU Selector', 'models.form.backend.llamabox': 'For GGUF format models, supports Linux, macOS, and Windows.', @@ -277,7 +277,7 @@ export default { 'models.form.backendVersions.tips': `To use more versions, go to the {link} page and edit the backend to add versions.`, 'models.catalog.nogpus.tips': 'No compatible GPUs are available in the selected cluster for this model.', - 'models.form.modelfile.notfound': `The model file path you specified does not exist on the MesaStack server. It's recommended to place the model file at the same path on both the MesaStack server and MesaStack workers. This helps MesaStack make better decisions.`, + 'models.form.modelfile.notfound': `The model file path you specified does not exist on the ZStack AIOS server. It's recommended to place the model file at the same path on both the ZStack AIOS server and ZStack AIOS workers. This helps ZStack AIOS make better decisions.`, 'models.form.readyWorkers': 'workers ready', 'models.form.maxContextLength': 'Maximum Context Length', 'models.form.backend.helperText': diff --git a/src/locales/en-US/organizations.ts b/src/locales/en-US/organizations.ts index f2eb1988..7e79fbef 100644 --- a/src/locales/en-US/organizations.ts +++ b/src/locales/en-US/organizations.ts @@ -1,7 +1,7 @@ export default { 'organizations.upsell.title': 'Organizations are an Enterprise feature', 'organizations.upsell.subtitle': - 'Multi-tenancy lets you isolate users, resources, and quotas across teams. Upgrade to MesaStack Enterprise to manage organizations.', + 'Multi-tenancy lets you isolate users, resources, and quotas across teams. Upgrade to ZStack AIOS Enterprise to manage organizations.', 'organizations.upsell.featuresTitle': 'What you get in Enterprise', 'organizations.upsell.feature.orgs': 'Create organizations to group users and isolate workloads', diff --git a/src/locales/en-US/resources.ts b/src/locales/en-US/resources.ts index 33ffb48e..0894d8f6 100644 --- a/src/locales/en-US/resources.ts +++ b/src/locales/en-US/resources.ts @@ -52,7 +52,7 @@ export default { 'resources.worker.container.supported': 'Do not support macOS or Windows.', 'resources.worker.current.version': 'Current version is {version}.', 'resources.worker.driver.install': - 'Install required drivers and libraries prior to MesaStack installation.', + 'Install required drivers and libraries prior to ZStack AIOS installation.', 'resources.worker.select.command': 'Select a label to generate the command and copy it using the copy button.', 'resources.worker.script.install': 'Script Installation', @@ -89,7 +89,7 @@ export default { 'Paste the Token.', 'resources.register.worker.step7': 'Click Restart to apply the settings.', - 'resources.register.install.title': 'Install MesaStack on {os}', + 'resources.register.install.title': 'Install ZStack AIOS on {os}', 'resources.register.download': 'Download and install the installer. Only supported: {versions}.', 'resource.register.maos.support': 'Apple Silicon (M series), macOS 14+', @@ -111,7 +111,7 @@ export default { 'No available clusters. Please create a cluster before adding a node.', 'resources.metrics.details': 'Monitoring', 'resoureces.worker.upgrade.tips': - 'Please upgrade to match the MesaStack Server version.', + 'Please upgrade to match the ZStack AIOS Server version.', 'resources.worker.version': 'Worker Version: {version}', 'resources.server.version': 'Server Version: {version}', 'resources.worker.currentVersion': 'Current Version: {version}', diff --git a/src/locales/en-US/users.ts b/src/locales/en-US/users.ts index 900359f7..35da9ae2 100644 --- a/src/locales/en-US/users.ts +++ b/src/locales/en-US/users.ts @@ -39,12 +39,12 @@ export default { 'users.password.confirm.empty': 'Please confirm the new password.', 'users.password.confirm.error': 'The two passwords entered do not match.', 'users.login.title': 'Log in to', - 'users.version.islatest': 'MesaStack {version} is the latest version', - 'users.version.update': 'MesaStack {version} is available', + 'users.version.islatest': 'ZStack AIOS {version} is the latest version', + 'users.version.update': 'ZStack AIOS {version} is available', 'users.settings.title': 'User Settings', 'users.status.activate': 'Activate Account', 'users.status.deactivate': 'Deactivate Account', 'users.status.inactiveAccount': 'Inactive Account', 'users.login.getInitialPassword': - 'Run the following command on your MesaStack Server to retrieve the initial admin password.' + 'Run the following command on your ZStack AIOS Server to retrieve the initial admin password.' }; diff --git a/src/locales/ja-JP/billing.ts b/src/locales/ja-JP/billing.ts index df048fbd..dcd809a4 100644 --- a/src/locales/ja-JP/billing.ts +++ b/src/locales/ja-JP/billing.ts @@ -1,7 +1,7 @@ export default { 'billing.upsell.title': 'Billing is an Enterprise feature', 'billing.upsell.subtitle': - 'Track spend, generate invoices, and enforce budgets across teams. Upgrade to MesaStack Enterprise to manage billing.', + 'Track spend, generate invoices, and enforce budgets across teams. Upgrade to ZStack AIOS Enterprise to manage billing.', 'billing.upsell.featuresTitle': 'What you get in Enterprise', 'billing.upsell.feature.usage': 'See cost breakdowns by organization, user, and model', diff --git a/src/locales/ja-JP/clusters.ts b/src/locales/ja-JP/clusters.ts index 9f8f73bc..e851f7a7 100644 --- a/src/locales/ja-JP/clusters.ts +++ b/src/locales/ja-JP/clusters.ts @@ -115,20 +115,20 @@ export default { '{count} new worker has been added to the cluster.', 'clusters.addworker.message.success_multiple': '{count} new workers have been added to the cluster.', - 'clusters.create.serverUrl': 'MesaStack Server URL', + 'clusters.create.serverUrl': 'ZStack AIOS Server URL', 'clusters.create.workerConfig': 'Worker Configuration', 'clusters.edit.k8sOptions.changed.tip': 'Kubernetes オプションを変更しました。変更を有効にするには、対象クラスターで登録コマンドを再実行してください。', 'clusters.addworker.containerName': 'Worker Container Name', 'clusters.addworker.containerName.tips': 'Specify a name for the worker container.', - 'clusters.addworker.dataVolume': 'MesaStack Data Volume', + 'clusters.addworker.dataVolume': 'ZStack AIOS Data Volume', 'clusters.addworker.dataVolume.tips': - 'Specify a data storage path for MesaStack.', + 'Specify a data storage path for ZStack AIOS.', 'clusters.table.ip.internal': 'Internal', 'clusters.table.ip.external': 'External', 'clusters.form.serverUrl.tips': - 'Specify an externally accessible MesaStack service URL if the worker cannot access MesaStack Server directly.', + 'Specify an externally accessible ZStack AIOS service URL if the worker cannot access ZStack AIOS Server directly.', 'clusters.form.setDefault': 'Set as Default', 'clusters.form.setDefault.tips': 'Default for deployment.', 'clusters.addworker.noClusters': 'No available Docker clusters found', @@ -146,7 +146,7 @@ export default { 'clusters.addworker.theadNotes-02': 'T-Head PPU uses the Container Device Interface (CDI) for device injection and requires the /var/run/cdi directory to be available for CDI generation.', 'clusters.addworker.nvidiaNotes': - 'The built-in inference backends in MesaStack require CUDA 12.8+. Please ensure your NVIDIA driver version is 570 or newer.', + 'The built-in inference backends in ZStack AIOS require CUDA 12.8+. Please ensure your NVIDIA driver version is 570 or newer.', 'clusters.volume.title': 'Volume Mounts', 'clusters.volume.name': 'Volume Name', 'clusters.volume.mountPath': 'Container Path', @@ -173,7 +173,7 @@ export default { 'clusters.volume.add': 'Add Volume Mount', 'clusters.systemDefaultContainerRegistry.title': 'Default Container Registry', 'clusters.systemDefaultContainerRegistry.tip': - 'Default registry used to resolve MesaStack images for this cluster. Falls back to the server default when unset.', + 'Default registry used to resolve ZStack AIOS images for this cluster. Falls back to the server default when unset.', 'clusters.k8sOptions.title': 'Kubernetes Deployment Options', 'clusters.imageCredentials.title': 'Image Credentials', 'clusters.imageCredentials.add': 'Add Credential', @@ -185,7 +185,7 @@ export default { 'Pod nodeSelector applied to every worker DaemonSet — only nodes whose labels match are eligible to run the worker.', 'clusters.operatorImage.title': 'Operator Image', 'clusters.operatorImage.tip': - 'Override for the MesaStack Operator container image. Leave empty to use the server default.', + 'Override for the ZStack AIOS Operator container image. Leave empty to use the server default.', 'clusters.namespace.title': 'Namespace', 'clusters.namespace.tip': 'Kubernetes namespace the cluster’s manifests render into. Leave empty to use gpustack-system.', @@ -278,15 +278,15 @@ export default { // 73. 'clusters.addworker.cacheVolume.holder': 'e.g. /data/cache (path must start with /)', // 74. 'clusters.addworker.message.success_single': '{count} new worker has been added to the cluster.', // 75. 'clusters.addworker.message.success_multiple': '{count} new workers have been added to the cluster.', -// 76. 'clusters.create.serverUrl': 'MesaStack Server URL', +// 76. 'clusters.create.serverUrl': 'ZStack AIOS Server URL', // 77. 'clusters.create.workerConfig': 'Worker Configuration' // 78. 'clusters.addworker.containerName': 'Worker Container Name', // 79. 'clusters.addworker.containerName.tips':'Specify a name for the worker container.', -// 77. 'clusters.addworker.dataVolume': 'MesaStack Data Volume', -// 78. 'clusters.addworker.dataVolume.tips': 'Specify a data storage path for MesaStack.', +// 77. 'clusters.addworker.dataVolume': 'ZStack AIOS Data Volume', +// 78. 'clusters.addworker.dataVolume.tips': 'Specify a data storage path for ZStack AIOS.', // 79. 'clusters.table.ip.internal': 'Internal', // 80. 'clusters.table.ip.external': 'External', -// 81. 'clusters.form.serverUrl.tips': 'Specify an externally accessible MesaStack service URL if the worker cannot access MesaStack Server directly.', +// 81. 'clusters.form.serverUrl.tips': 'Specify an externally accessible ZStack AIOS service URL if the worker cannot access ZStack AIOS Server directly.', // 82. 'clusters.addworker.externalIP.tips': 'Specify an external IP if the worker is in a VPC or private network.', // 83. 'clusters.form.setDefault': 'Set as Default', // 84. 'clusters.form.setDefault.tips': 'Default for deployment', @@ -302,5 +302,5 @@ export default { // 94. 'clusters.create.steps.configure': 'Configure', // 99. 'clusters.addworker.theadNotes': 'If the ln -s /path/to/PPU_SDK /usr/local/PPU_SDK', // 100. 'clusters.addworker.theadNotes-02': 'T-Head PPU uses the Container Device Interface (CDI) for device injection and requires the /var/run/cdi directory to be available for CDI generation.', -// 101. 'clusters.addworker.nvidiaNotes': 'The built-in inference backends in MesaStack v2.1 require CUDA 12.6+. Please ensure your NVIDIA driver version is 560 or newer.' +// 101. 'clusters.addworker.nvidiaNotes': 'The built-in inference backends in ZStack AIOS v2.1 require CUDA 12.6+. Please ensure your NVIDIA driver version is 560 or newer.' // ========== End of To-Do List ========== diff --git a/src/locales/ja-JP/common.ts b/src/locales/ja-JP/common.ts index 889fa0ee..2b907fb2 100644 --- a/src/locales/ja-JP/common.ts +++ b/src/locales/ja-JP/common.ts @@ -46,7 +46,7 @@ export default { 'common.button.enabled': '有効', 'common.button.disabled': '無効', 'common.button.upgrade': 'アップグレード', - 'common.enterprise.feature': 'Available in MesaStack Enterprise', + 'common.enterprise.feature': 'Available in ZStack AIOS Enterprise', 'common.input.holder': '入力してください', 'common.validate.value': '{name} の値は必須です', 'common.button.edit': '編集', @@ -213,7 +213,7 @@ export default { 'common.form.password': 'パスワード', 'common.form.username': 'ユーザー名', 'common.login.rember': 'ログイン状態を保持', - 'settings.company': 'MesaStack', + 'settings.company': 'ZStack AIOS', 'common.button.help': 'ヘルプ', 'common.button.feedback': 'フィードバック', 'common.button.docs': 'ドキュメント', diff --git a/src/locales/ja-JP/models.ts b/src/locales/ja-JP/models.ts index 33cad9d4..2bd946f0 100644 --- a/src/locales/ja-JP/models.ts +++ b/src/locales/ja-JP/models.ts @@ -14,7 +14,7 @@ export default { 'models.form.env': '環境変数', 'models.form.configurations': '設定', 'models.form.s3address': 'S3アドレス', - 'models.form.partialoffload.tips': `When CPU offloading is enabled, MesaStack will allocate CPU memory if GPU resources are insufficient. You must correctly configure the inference backend to use hybrid CPU+GPU or full CPU inference.`, + 'models.form.partialoffload.tips': `When CPU offloading is enabled, ZStack AIOS will allocate CPU memory if GPU resources are insufficient. You must correctly configure the inference backend to use hybrid CPU+GPU or full CPU inference.`, 'models.form.distribution.tips': 'ワーカーのリソースが不足している場合、モデルの一部のレイヤーを単一または複数のリモートワーカーにオフロードすることができます。', 'models.openinplayground': 'プレイグラウンドで開く', @@ -25,7 +25,7 @@ export default { 'model.deploy.sort': '並び替え', 'model.deploy.search.placeholder': '/を入力してモデルを検索', 'model.form.ollamatips': - 'ヒント: 以下はMesaStackで事前設定されたOllamaモデルです。希望するモデルを選択するか、右側の【{name}】入力ボックスにデプロイしたいモデルを直接入力してください。', + 'ヒント: 以下はZStack AIOSで事前設定されたOllamaモデルです。希望するモデルを選択するか、右側の【{name}】入力ボックスにデプロイしたいモデルを直接入力してください。', 'models.sort.name': '名前', 'models.sort.size': 'サイズ', 'models.sort.likes': 'いいね', @@ -88,7 +88,7 @@ export default { 'models.form.filePath': 'モデルパス', 'models.form.backendVersion': 'バックエンドバージョン', 'models.form.backendVersion.tips': - '希望する{backend}{version}バージョンを使用するには、システムがオンライン環境で対応するバージョンをインストールする仮想環境を自動的に作成します。MesaStackのアップグレード後もバックエンドバージョンは固定されます。{link}', + '希望する{backend}{version}バージョンを使用するには、システムがオンライン環境で対応するバージョンをインストールする仮想環境を自動的に作成します。ZStack AIOSのアップグレード後もバックエンドバージョンは固定されます。{link}', 'models.form.gpuselector': 'GPUセレクター', 'models.form.backend.llamabox': 'GGUF形式のモデル用(Linux、macOS、Windowsをサポート)。', @@ -277,7 +277,7 @@ export default { 'models.form.backendVersions.tips': `To use more versions, go to the {link} page and edit the backend to add versions.`, 'models.catalog.nogpus.tips': 'No compatible GPUs are available in the selected cluster for this model.', - 'models.form.modelfile.notfound': `The model file path you specified does not exist on the MesaStack server. It's recommended to place the model file at the same path on both the MesaStack server and MesaStack workers. This helps MesaStack make better decisions.`, + 'models.form.modelfile.notfound': `The model file path you specified does not exist on the ZStack AIOS server. It's recommended to place the model file at the same path on both the ZStack AIOS server and ZStack AIOS workers. This helps ZStack AIOS make better decisions.`, 'models.form.readyWorkers': 'workers ready', 'models.form.maxContextLength': 'Maximum Context Length', 'models.form.backend.helperText': @@ -381,7 +381,7 @@ export default { // 62. 'models.form.backend_parameters.vllm.tips': 'For more details about {backend} parameters, see here.', // 63. 'models.button.accessSettings.tips': 'Changes to access settings take effect after one minute.', // 64. 'models.table.userSelection.tips': 'Admin users can access all models by default.', -// 65. 'models.form.partialoffload.tips': `When CPU offloading is enabled, MesaStack will allocate CPU memory if GPU resources are insufficient. You must correctly configure the inference backend to use hybrid CPU+GPU or full CPU inference.`, +// 65. 'models.form.partialoffload.tips': `When CPU offloading is enabled, ZStack AIOS will allocate CPU memory if GPU resources are insufficient. You must correctly configure the inference backend to use hybrid CPU+GPU or full CPU inference.`, // 66. 'models.form.backend.warning': 'The selected backend does not support GGUF models. Please add a backend with GGUF support in the Inference Backend.', // 67. 'models.form.backend.warning.gguf': 'Please ensure that the selected custom backend supports GGUF models.',, // 68. 'models.form.backendVersion.deprecated': 'Deprecated', @@ -390,7 +390,7 @@ export default { // 71.'models.accessSettings.allowedUsers.tips': 'Only designated users can access the model.', // 72. 'models.form.backendVersions.tips': `To use more versions, go to the {link} page and edit the backend to add versions.`, // 73. 'models.catalog.nogpus.tips': 'No compatible GPUs are available in the selected cluster for this model.', -// 74. 'models.form.modelfile.notfound': `The model file path you specified does not exist on the MesaStack server. It's recommended to place the model file at the same path on both the MesaStack server and MesaStack workers. This helps MesaStack make better decisions.`, +// 74. 'models.form.modelfile.notfound': `The model file path you specified does not exist on the ZStack AIOS server. It's recommended to place the model file at the same path on both the ZStack AIOS server and ZStack AIOS workers. This helps ZStack AIOS make better decisions.`, // 75. 'models.form.readyWorkers': 'workers ready', // 76. 'models.form.maxContextLength': 'Maximum Context Length', // 77. 'models.form.backend.helperText': 'Not enabled yet. Will be enabled after deployment. ', diff --git a/src/locales/ja-JP/organizations.ts b/src/locales/ja-JP/organizations.ts index f2eb1988..7e79fbef 100644 --- a/src/locales/ja-JP/organizations.ts +++ b/src/locales/ja-JP/organizations.ts @@ -1,7 +1,7 @@ export default { 'organizations.upsell.title': 'Organizations are an Enterprise feature', 'organizations.upsell.subtitle': - 'Multi-tenancy lets you isolate users, resources, and quotas across teams. Upgrade to MesaStack Enterprise to manage organizations.', + 'Multi-tenancy lets you isolate users, resources, and quotas across teams. Upgrade to ZStack AIOS Enterprise to manage organizations.', 'organizations.upsell.featuresTitle': 'What you get in Enterprise', 'organizations.upsell.feature.orgs': 'Create organizations to group users and isolate workloads', diff --git a/src/locales/ja-JP/resources.ts b/src/locales/ja-JP/resources.ts index 2e3ec229..ec195704 100644 --- a/src/locales/ja-JP/resources.ts +++ b/src/locales/ja-JP/resources.ts @@ -52,7 +52,7 @@ export default { 'MacOSまたはWindowsはサポートされていません。', 'resources.worker.current.version': '現在のバージョンは {version} です。', 'resources.worker.driver.install': - '必要なドライバとライブラリ をMesaStackのインストール前にインストールしてください。', + '必要なドライバとライブラリ をZStack AIOSのインストール前にインストールしてください。', 'resources.worker.select.command': 'ラベルを選択してコマンドを生成し、コピーを使用してコマンドをコピーします。', 'resources.worker.script.install': 'スクリプトインストール', @@ -89,7 +89,7 @@ export default { 'Paste the Token.', 'resources.register.worker.step7': 'Click Restart to apply the settings.', - 'resources.register.install.title': 'Install MesaStack on {os}', + 'resources.register.install.title': 'Install ZStack AIOS on {os}', 'resources.register.download': 'Download and install the installer. Only supported: {versions}.', 'resource.register.maos.support': 'Apple Silicon (M series), macOS 14+', @@ -112,7 +112,7 @@ export default { 'No available clusters. Please create a cluster before adding a node.', 'resources.metrics.details': 'Monitoring', 'resoureces.worker.upgrade.tips': - 'Please upgrade to match the MesaStack Server version.', + 'Please upgrade to match the ZStack AIOS Server version.', 'resources.worker.version': 'Worker Version: {version}', 'resources.server.version': 'Server Version: {version}', 'resources.worker.currentVersion': 'Current Version: {version}', @@ -128,7 +128,7 @@ export default { // 5. 'resources.register.worker.step5': 'Enter the Server URL: {url}.', // 6. 'resources.register.worker.step6': 'Paste the Token.', // 7. 'resources.register.worker.step7': 'Click Restart to apply the settings.', -// 8. 'resources.register.install.title': 'Install MesaStack on {os}', +// 8. 'resources.register.install.title': 'Install ZStack AIOS on {os}', // 9. 'resources.register.download':'Download and install the installer. Only supported: {versions}.', // 10. 'resource.register.maos.support': 'Apple Silicon (M series), macOS 14+', // 11. 'resource.register.windows.support': 'win 10, win 11', @@ -145,5 +145,5 @@ export default { // 22. 'resources.worker.maintenance.remark.rules': 'Please enter maintenance remarks', // 23. 'resources.worker.maintenance.tips': 'When maintenance mode is enabled, the node will stop scheduling new model deployment tasks. Running instances will not be affected.', // 24. 'resources.worker.noCluster.tips': 'No available clusters. Please create a cluster before adding a node.' -// 25. 'resoureces.worker.upgrade.tips': 'Please upgrade to match the MesaStack Server version.' +// 25. 'resoureces.worker.upgrade.tips': 'Please upgrade to match the ZStack AIOS Server version.' // ========== End of To-Do List ========== diff --git a/src/locales/ja-JP/users.ts b/src/locales/ja-JP/users.ts index cb4c9dde..5d89361f 100644 --- a/src/locales/ja-JP/users.ts +++ b/src/locales/ja-JP/users.ts @@ -40,14 +40,14 @@ export default { 'users.password.confirm.empty': '新しいパスワードを確認してください。', 'users.password.confirm.error': '入力された2つのパスワードが一致しません。', 'users.login.title': 'ログイン', - 'users.version.islatest': 'MesaStack {version} は最新バージョンです', - 'users.version.update': 'MesaStack {version} が利用可能です', + 'users.version.islatest': 'ZStack AIOS {version} は最新バージョンです', + 'users.version.update': 'ZStack AIOS {version} が利用可能です', 'users.settings.title': 'User Settings', 'users.status.activate': 'Activate Account', 'users.status.deactivate': 'Deactivate Account', 'users.status.inactiveAccount': 'Inactive Account', 'users.login.getInitialPassword': - 'Run the following command on your MesaStack Server to retrieve the initial admin password.' + 'Run the following command on your ZStack AIOS Server to retrieve the initial admin password.' }; // ========== To-Do: Translate Keys (Remove After Translation) ========== @@ -55,5 +55,5 @@ export default { // 2. 'users.status.activate': 'Activate Account', // 3. 'users.status.deactivate': 'Deactivate Account', // 4. 'users.status.inactiveAccount': 'Inactive Account', -// 5. 'users.login.getInitialPassword': 'Run the following command on your MesaStack Server to retrieve the initial admin password.' +// 5. 'users.login.getInitialPassword': 'Run the following command on your ZStack AIOS Server to retrieve the initial admin password.' // ========== End of To-Do List ========== diff --git a/src/locales/ru-RU/billing.ts b/src/locales/ru-RU/billing.ts index df048fbd..dcd809a4 100644 --- a/src/locales/ru-RU/billing.ts +++ b/src/locales/ru-RU/billing.ts @@ -1,7 +1,7 @@ export default { 'billing.upsell.title': 'Billing is an Enterprise feature', 'billing.upsell.subtitle': - 'Track spend, generate invoices, and enforce budgets across teams. Upgrade to MesaStack Enterprise to manage billing.', + 'Track spend, generate invoices, and enforce budgets across teams. Upgrade to ZStack AIOS Enterprise to manage billing.', 'billing.upsell.featuresTitle': 'What you get in Enterprise', 'billing.upsell.feature.usage': 'See cost breakdowns by organization, user, and model', diff --git a/src/locales/ru-RU/clusters.ts b/src/locales/ru-RU/clusters.ts index f3720dfd..e20bc965 100644 --- a/src/locales/ru-RU/clusters.ts +++ b/src/locales/ru-RU/clusters.ts @@ -115,20 +115,20 @@ export default { '{count} новый воркер был добавлен в кластер.', 'clusters.addworker.message.success_multiple': '{count} новых воркеров были добавлены в кластер.', - 'clusters.create.serverUrl': 'URL сервера MesaStack', + 'clusters.create.serverUrl': 'URL сервера ZStack AIOS', 'clusters.create.workerConfig': 'Конфигурация воркера', 'clusters.edit.k8sOptions.changed.tip': 'Вы изменили параметры Kubernetes. Чтобы изменения вступили в силу, повторно выполните команду регистрации в целевом кластере.', 'clusters.addworker.containerName': 'Имя контейнера воркера', 'clusters.addworker.containerName.tips': 'Укажите имя для контейнера воркера.', - 'clusters.addworker.dataVolume': 'Том данных MesaStack', + 'clusters.addworker.dataVolume': 'Том данных ZStack AIOS', 'clusters.addworker.dataVolume.tips': - 'Укажите путь для хранения данных MesaStack.', + 'Укажите путь для хранения данных ZStack AIOS.', 'clusters.table.ip.internal': 'Внутренний', 'clusters.table.ip.external': 'Внешний', 'clusters.form.serverUrl.tips': - 'Если рабочий узел не может напрямую получить доступ к MesaStack Server, укажите внешний URL службы MesaStack Server.', + 'Если рабочий узел не может напрямую получить доступ к ZStack AIOS Server, укажите внешний URL службы ZStack AIOS Server.', 'clusters.form.setDefault': 'Установить по умолчанию', 'clusters.form.setDefault.tips': 'Использовать по умолчанию для развертывания.', @@ -147,7 +147,7 @@ export default { 'clusters.addworker.theadNotes-02': 'T-Head PPU uses the Container Device Interface (CDI) for device injection and requires the /var/run/cdi directory to be available for CDI generation.', 'clusters.addworker.nvidiaNotes': - 'The built-in inference backends in MesaStack require CUDA 12.8+. Please ensure your NVIDIA driver version is 570 or newer.', + 'The built-in inference backends in ZStack AIOS require CUDA 12.8+. Please ensure your NVIDIA driver version is 570 or newer.', 'clusters.volume.title': 'Volume Mounts', 'clusters.volume.name': 'Volume Name', 'clusters.volume.mountPath': 'Container Path', @@ -174,7 +174,7 @@ export default { 'clusters.volume.add': 'Add Volume Mount', 'clusters.systemDefaultContainerRegistry.title': 'Default Container Registry', 'clusters.systemDefaultContainerRegistry.tip': - 'Default registry used to resolve MesaStack images for this cluster. Falls back to the server default when unset.', + 'Default registry used to resolve ZStack AIOS images for this cluster. Falls back to the server default when unset.', 'clusters.k8sOptions.title': 'Kubernetes Deployment Options', 'clusters.imageCredentials.title': 'Image Credentials', 'clusters.imageCredentials.add': 'Add Credential', @@ -186,7 +186,7 @@ export default { 'Pod nodeSelector applied to every worker DaemonSet — only nodes whose labels match are eligible to run the worker.', 'clusters.operatorImage.title': 'Operator Image', 'clusters.operatorImage.tip': - 'Override for the MesaStack Operator container image. Leave empty to use the server default.', + 'Override for the ZStack AIOS Operator container image. Leave empty to use the server default.', 'clusters.namespace.title': 'Namespace', 'clusters.namespace.tip': 'Kubernetes namespace the cluster’s manifests render into. Leave empty to use gpustack-system.', @@ -215,5 +215,5 @@ export default { // 10. 'clusters.addworker.theadNotes': 'If the ln -s /path/to/PPU_SDK /usr/local/PPU_SDK', // 11. 'clusters.addworker.theadNotes-02': 'T-Head PPU uses the Container Device Interface (CDI) for device injection and requires the /var/run/cdi directory to be available for CDI generation.' // 12. 'clusters.addworker.metaxNotes': `If the /opt/mxdriver or /opt/maca directory does not exist, create a symbolic link to the MetaX driver and SDK installation path: ln -s /path/to/mxdriver /opt/mxdriverln -s /path/to/maca /opt/maca.`, -// 13. 'clusters.addworker.nvidiaNotes': 'The built-in inference backends in MesaStack v2.1 require CUDA 12.6+. Please ensure your NVIDIA driver version is 560 or newer.' +// 13. 'clusters.addworker.nvidiaNotes': 'The built-in inference backends in ZStack AIOS v2.1 require CUDA 12.6+. Please ensure your NVIDIA driver version is 560 or newer.' // ================================================================ diff --git a/src/locales/ru-RU/common.ts b/src/locales/ru-RU/common.ts index 43b911c3..71b11222 100644 --- a/src/locales/ru-RU/common.ts +++ b/src/locales/ru-RU/common.ts @@ -46,7 +46,7 @@ export default { 'common.button.enabled': 'Активно', 'common.button.disabled': 'Отключено', 'common.button.upgrade': 'Обновить', - 'common.enterprise.feature': 'Available in MesaStack Enterprise', + 'common.enterprise.feature': 'Available in ZStack AIOS Enterprise', 'common.input.holder': 'Введите значение', 'common.validate.value': 'Поле {name} обязательно', 'common.button.edit': 'Редактировать', @@ -211,7 +211,7 @@ export default { 'common.form.password': 'Пароль', 'common.form.username': 'Имя пользователя', 'common.login.rember': 'Запомнить меня', - 'settings.company': 'MesaStack', + 'settings.company': 'ZStack AIOS', 'common.button.help': 'Помощь', 'common.button.feedback': 'Обратная связь', 'common.button.docs': 'Документация', diff --git a/src/locales/ru-RU/models.ts b/src/locales/ru-RU/models.ts index 5491950d..64a299b8 100644 --- a/src/locales/ru-RU/models.ts +++ b/src/locales/ru-RU/models.ts @@ -15,7 +15,7 @@ export default { 'models.form.configurations': 'Конфигурации', 'models.form.s3address': 'S3-адрес', 'models.form.partialoffload.tips': - 'При включении CPU оффлоудинга MesaStack будет выделять оперативную память, если ресурсов GPU недостаточно. Вы должны правильно настроить бэкенд вывода для использования гибридного CPU+GPU или полного CPU вывода.', + 'При включении CPU оффлоудинга ZStack AIOS будет выделять оперативную память, если ресурсов GPU недостаточно. Вы должны правильно настроить бэкенд вывода для использования гибридного CPU+GPU или полного CPU вывода.', 'models.form.distribution.tips': 'Позволяет переносить часть слоёв модели на один или несколько удалённых воркеров, когда ресурсов текущего воркера недостаточно.', 'models.openinplayground': 'Открыть в Песочнице', @@ -26,7 +26,7 @@ export default { 'model.deploy.sort': 'Сортировка', 'model.deploy.search.placeholder': 'Введите / для поиска моделей', 'model.form.ollamatips': - 'Подсказка: ниже представлены предустановленные модели Ollama в MesaStack. Выберите нужную или введите модель для развертывания в поле 【{name}】 справа.', + 'Подсказка: ниже представлены предустановленные модели Ollama в ZStack AIOS. Выберите нужную или введите модель для развертывания в поле 【{name}】 справа.', 'models.sort.name': 'По имени', 'models.sort.size': 'По размеру', 'models.sort.likes': 'По лайкам', @@ -89,7 +89,7 @@ export default { 'models.form.filePath': 'Путь к модели', 'models.form.backendVersion': 'Версия бэкенда', 'models.form.backendVersion.tips': - 'Чтобы использовать желаемую версию {backend} {version}, система автоматически создаст виртуальную среду в онлайн-окружении для установки соответствующей версии. После обновления MesaStack версия бэкенда останется зафиксированной. {link}', + 'Чтобы использовать желаемую версию {backend} {version}, система автоматически создаст виртуальную среду в онлайн-окружении для установки соответствующей версии. После обновления ZStack AIOS версия бэкенда останется зафиксированной. {link}', 'models.form.gpuselector': 'Селектор GPU', 'models.form.backend.llamabox': 'Для моделей формата GGUF. Поддержка Linux, macOS и Windows.', @@ -281,7 +281,7 @@ export default { 'models.form.backendVersions.tips': `Чтобы использовать больше версий, перейдите на страницу {link} и отредактируйте бэкенд для добавления версий.`, 'models.catalog.nogpus.tips': 'В выбранном кластере нет доступных GPU, совместимых с этой моделью.', - 'models.form.modelfile.notfound': `Указанный путь к файлу модели не существует на сервере MesaStack. Рекомендуется размещать файл модели по одному и тому же пути как на сервере MesaStack, так и на воркерах MesaStack. Это поможет системе принимать лучшие решения по распределению ресурсов.`, + 'models.form.modelfile.notfound': `Указанный путь к файлу модели не существует на сервере ZStack AIOS. Рекомендуется размещать файл модели по одному и тому же пути как на сервере ZStack AIOS, так и на воркерах ZStack AIOS. Это поможет системе принимать лучшие решения по распределению ресурсов.`, 'models.form.readyWorkers': 'воркеров готово', 'models.form.maxContextLength': 'Maximum Context Length', 'models.form.backend.helperText': diff --git a/src/locales/ru-RU/organizations.ts b/src/locales/ru-RU/organizations.ts index f2eb1988..7e79fbef 100644 --- a/src/locales/ru-RU/organizations.ts +++ b/src/locales/ru-RU/organizations.ts @@ -1,7 +1,7 @@ export default { 'organizations.upsell.title': 'Organizations are an Enterprise feature', 'organizations.upsell.subtitle': - 'Multi-tenancy lets you isolate users, resources, and quotas across teams. Upgrade to MesaStack Enterprise to manage organizations.', + 'Multi-tenancy lets you isolate users, resources, and quotas across teams. Upgrade to ZStack AIOS Enterprise to manage organizations.', 'organizations.upsell.featuresTitle': 'What you get in Enterprise', 'organizations.upsell.feature.orgs': 'Create organizations to group users and isolate workloads', diff --git a/src/locales/ru-RU/resources.ts b/src/locales/ru-RU/resources.ts index 3fca77c2..388d68ea 100644 --- a/src/locales/ru-RU/resources.ts +++ b/src/locales/ru-RU/resources.ts @@ -51,7 +51,7 @@ export default { 'resources.worker.container.supported': 'Только для Linux.', 'resources.worker.current.version': 'Текущая версия: {version}', 'resources.worker.driver.install': - 'Установите необходимые драйверы и библиотеки перед установкой MesaStack.', // Translated + 'Установите необходимые драйверы и библиотеки перед установкой ZStack AIOS.', // Translated 'resources.worker.select.command': 'Выберите метку для генерации команды и скопируйте её.', 'resources.worker.script.install': 'Установка скриптом', @@ -87,7 +87,7 @@ export default { 'Вставьте Токен.', 'resources.register.worker.step7': 'Нажмите Перезапуск для применения настроек.', - 'resources.register.install.title': 'Установка MesaStack на {os}', + 'resources.register.install.title': 'Установка ZStack AIOS на {os}', 'resources.register.download': 'Скачайте и установите инсталлятор. Поддерживаемые версии: {versions}.', 'resource.register.maos.support': 'Apple Silicon (серия M), macOS 14+', @@ -110,7 +110,7 @@ export default { 'No available clusters. Please create a cluster before adding a node.', 'resources.metrics.details': 'Monitoring', 'resoureces.worker.upgrade.tips': - 'Please upgrade to match the MesaStack Server version.', + 'Please upgrade to match the ZStack AIOS Server version.', 'resources.worker.version': 'Worker Version: {version}', 'resources.server.version': 'Server Version: {version}', 'resources.worker.currentVersion': 'Current Version: {version}', @@ -127,5 +127,5 @@ export default { // 7. 'resources.worker.maintenance.tips': 'When maintenance mode is enabled, the node will stop scheduling new model deployment tasks. Running instances will not be affected.', // 8. 'resources.worker.noCluster.tips': 'No available clusters. Please create a cluster before adding a node.', // 9. 'resources.metrics.details': 'Monitoring', -// 10. 'resoureces.worker.upgrade.tips': 'Please upgrade to match the MesaStack Server version.' +// 10. 'resoureces.worker.upgrade.tips': 'Please upgrade to match the ZStack AIOS Server version.' // ========== End of To-Do List ========== diff --git a/src/locales/ru-RU/users.ts b/src/locales/ru-RU/users.ts index 312e44c5..09abad52 100644 --- a/src/locales/ru-RU/users.ts +++ b/src/locales/ru-RU/users.ts @@ -40,8 +40,8 @@ export default { 'users.password.confirm.empty': 'Подтвердите новый пароль', 'users.password.confirm.error': 'Пароли не совпадают', 'users.login.title': 'Вход в', - 'users.version.islatest': 'MesaStack {version} — последняя версия', - 'users.version.update': 'Доступно обновление MesaStack {version}', + 'users.version.islatest': 'ZStack AIOS {version} — последняя версия', + 'users.version.update': 'Доступно обновление ZStack AIOS {version}', 'users.settings.title': 'Настройки пользователя', 'users.status.activate': 'Активировать аккаунт', 'users.status.deactivate': 'Деактивировать аккаунт', diff --git a/src/locales/tr-TR/billing.ts b/src/locales/tr-TR/billing.ts index df048fbd..dcd809a4 100644 --- a/src/locales/tr-TR/billing.ts +++ b/src/locales/tr-TR/billing.ts @@ -1,7 +1,7 @@ export default { 'billing.upsell.title': 'Billing is an Enterprise feature', 'billing.upsell.subtitle': - 'Track spend, generate invoices, and enforce budgets across teams. Upgrade to MesaStack Enterprise to manage billing.', + 'Track spend, generate invoices, and enforce budgets across teams. Upgrade to ZStack AIOS Enterprise to manage billing.', 'billing.upsell.featuresTitle': 'What you get in Enterprise', 'billing.upsell.feature.usage': 'See cost breakdowns by organization, user, and model', diff --git a/src/locales/tr-TR/clusters.ts b/src/locales/tr-TR/clusters.ts index 725103d7..744246bd 100644 --- a/src/locales/tr-TR/clusters.ts +++ b/src/locales/tr-TR/clusters.ts @@ -87,7 +87,7 @@ export default { 'clusters.addworker.detectWorkerAddress.tips': "Belirtilmezse İşçi Düğüm IP'si varsayılır.", 'clusters.addworker.externalIP.tips': - 'VPC veya özel ağda çalıştırılıyorsa, lütfen MesaStack Sunucusuna erişilebilir İşçi Düğüm harici adresini belirtin.', + 'VPC veya özel ağda çalıştırılıyorsa, lütfen ZStack AIOS Sunucusuna erişilebilir İşçi Düğüm harici adresini belirtin.', 'clusters.addworker.enterWorkerIP': "İşçi düğüm IP'sini girin", 'clusters.addworker.enterWorkerIP.error': "Lütfen işçi düğüm IP'sini girin.", 'clusters.addworker.enterWorkerAddress': 'İşçi düğüm harici adresini girin', @@ -115,20 +115,20 @@ export default { '{count} yeni işçi düğüm kümeye eklendi.', 'clusters.addworker.message.success_multiple': '{count} yeni işçi düğüm kümeye eklendi.', - 'clusters.create.serverUrl': "MesaStack Sunucu URL'si", + 'clusters.create.serverUrl': "ZStack AIOS Sunucu URL'si", 'clusters.create.workerConfig': 'İşçi Düğüm Yapılandırması', 'clusters.edit.k8sOptions.changed.tip': 'Kubernetes seçeneklerini değiştirdiniz. Değişikliklerin etkili olması için kayıt komutunu hedef kümede yeniden çalıştırın.', 'clusters.addworker.containerName': 'İşçi Düğüm Konteyner Adı', 'clusters.addworker.containerName.tips': 'İşçi düğüm konteyneri için bir ad belirtin.', - 'clusters.addworker.dataVolume': 'MesaStack Veri Birimi', + 'clusters.addworker.dataVolume': 'ZStack AIOS Veri Birimi', 'clusters.addworker.dataVolume.tips': - 'MesaStack için veri depolama yolu belirtin.', + 'ZStack AIOS için veri depolama yolu belirtin.', 'clusters.table.ip.internal': 'Dahili', 'clusters.table.ip.external': 'Harici', 'clusters.form.serverUrl.tips': - "İşçi düğüm MesaStack Sunucusuna doğrudan erişemiyorsa, harici olarak erişilebilir bir MesaStack hizmet URL'si belirtin.", + "İşçi düğüm ZStack AIOS Sunucusuna doğrudan erişemiyorsa, harici olarak erişilebilir bir ZStack AIOS hizmet URL'si belirtin.", 'clusters.form.setDefault': 'Varsayılan Olarak Ayarla', 'clusters.form.setDefault.tips': 'Dağıtım için varsayılan.', 'clusters.addworker.noClusters': 'Kullanılabilir Docker kümesi bulunamadı', @@ -147,7 +147,7 @@ export default { 'clusters.addworker.theadNotes-02': 'T-Head PPU, cihaz enjeksiyonu için Container Device Interface (CDI) kullanır ve CDI oluşturma için /var/run/cdi dizininin kullanılabilir olmasını gerektirir.', 'clusters.addworker.nvidiaNotes': - 'MesaStack\'teki yerleşik çıkarım altyapıları CUDA 12.8+ gerektirir. Lütfen NVIDIA sürücü sürümünüzün 570 veya daha yeni olduğundan emin olun.', + 'ZStack AIOS\'teki yerleşik çıkarım altyapıları CUDA 12.8+ gerektirir. Lütfen NVIDIA sürücü sürümünüzün 570 veya daha yeni olduğundan emin olun.', 'clusters.volume.title': 'Volume Mounts', 'clusters.volume.name': 'Volume Name', 'clusters.volume.mountPath': 'Container Path', @@ -174,7 +174,7 @@ export default { 'clusters.volume.add': 'Add Volume Mount', 'clusters.systemDefaultContainerRegistry.title': 'Default Container Registry', 'clusters.systemDefaultContainerRegistry.tip': - 'Default registry used to resolve MesaStack images for this cluster. Falls back to the server default when unset.', + 'Default registry used to resolve ZStack AIOS images for this cluster. Falls back to the server default when unset.', 'clusters.k8sOptions.title': 'Kubernetes Deployment Options', 'clusters.imageCredentials.title': 'Image Credentials', 'clusters.imageCredentials.add': 'Add Credential', @@ -186,7 +186,7 @@ export default { 'Pod nodeSelector applied to every worker DaemonSet — only nodes whose labels match are eligible to run the worker.', 'clusters.operatorImage.title': 'Operator Image', 'clusters.operatorImage.tip': - 'Override for the MesaStack Operator container image. Leave empty to use the server default.', + 'Override for the ZStack AIOS Operator container image. Leave empty to use the server default.', 'clusters.namespace.title': 'Namespace', 'clusters.namespace.tip': 'Kubernetes namespace the cluster’s manifests render into. Leave empty to use gpustack-system.', diff --git a/src/locales/tr-TR/common.ts b/src/locales/tr-TR/common.ts index 7e491424..575ed853 100644 --- a/src/locales/tr-TR/common.ts +++ b/src/locales/tr-TR/common.ts @@ -46,7 +46,7 @@ export default { 'common.button.enabled': 'Etkin', 'common.button.disabled': 'Devre dışı', 'common.button.upgrade': 'Yükselt', - 'common.enterprise.feature': 'Available in MesaStack Enterprise', + 'common.enterprise.feature': 'Available in ZStack AIOS Enterprise', 'common.input.holder': 'Lütfen girin', 'common.validate.value': '{name} değeri gereklidir', 'common.button.edit': 'Düzenle', @@ -216,7 +216,7 @@ export default { 'common.form.password': 'Şifre', 'common.form.username': 'Kullanıcı adı', 'common.login.rember': 'Beni hatırla', - 'settings.company': 'MesaStack', + 'settings.company': 'ZStack AIOS', 'common.button.help': 'Yardım', 'common.button.feedback': 'Geri Bildirim', 'common.button.docs': 'Dokümantasyon', diff --git a/src/locales/tr-TR/models.ts b/src/locales/tr-TR/models.ts index 95a1b2a9..5667f197 100644 --- a/src/locales/tr-TR/models.ts +++ b/src/locales/tr-TR/models.ts @@ -14,7 +14,7 @@ export default { 'models.form.env': 'Ortam Değişkenleri', 'models.form.configurations': 'Yapılandırmalar', 'models.form.s3address': 'S3 Adresi', - 'models.form.partialoffload.tips': `CPU aktarımı etkinleştirildiğinde, GPU kaynakları yetersiz olduğunda MesaStack CPU belleği ayırır. Hibrit CPU+GPU veya tam CPU çıkarımı kullanmak için çıkarım altyapısını doğru şekilde yapılandırmanız gerekir.`, + 'models.form.partialoffload.tips': `CPU aktarımı etkinleştirildiğinde, GPU kaynakları yetersiz olduğunda ZStack AIOS CPU belleği ayırır. Hibrit CPU+GPU veya tam CPU çıkarımı kullanmak için çıkarım altyapısını doğru şekilde yapılandırmanız gerekir.`, 'models.form.distribution.tips': `Bir işçi düğümün kaynakları yetersiz olduğunda, modelin katmanlarının bir kısmının tekli veya çoklu uzak işçi düğümlere aktarılmasına olanak tanır.`, 'models.openinplayground': 'Deneme Alanında Aç', 'models.instances': 'örnekler', @@ -24,7 +24,7 @@ export default { 'model.deploy.sort': 'Sırala', 'model.deploy.search.placeholder': 'Modelleri aramak için / yazın', 'model.form.ollamatips': - "İpucu: Aşağıdakiler MesaStack'te önceden yapılandırılmış Ollama modelleridir. İstediğiniz modeli seçin veya dağıtmak istediğiniz modeli doğrudan sağdaki 【{name}】 giriş kutusuna yazın.", + "İpucu: Aşağıdakiler ZStack AIOS'te önceden yapılandırılmış Ollama modelleridir. İstediğiniz modeli seçin veya dağıtmak istediğiniz modeli doğrudan sağdaki 【{name}】 giriş kutusuna yazın.", 'models.sort.name': 'Ad', 'models.sort.size': 'Boyut', 'models.sort.likes': 'Beğeniler', @@ -87,7 +87,7 @@ export default { 'models.form.filePath': 'Model Yolu', 'models.form.backendVersion': 'Altyapı Sürümü', 'models.form.backendVersion.tips': - '{backend}{version} sürümünü kullanmak için sistem, ilgili sürümü yüklemek üzere çevrimiçi ortamda otomatik olarak sanal ortam oluşturur. MesaStack yükseltmesinden sonra altyapı sürümü sabit kalır. {link}', + '{backend}{version} sürümünü kullanmak için sistem, ilgili sürümü yüklemek üzere çevrimiçi ortamda otomatik olarak sanal ortam oluşturur. ZStack AIOS yükseltmesinden sonra altyapı sürümü sabit kalır. {link}', 'models.form.gpuselector': 'GPU Seçici', 'models.form.backend.llamabox': 'GGUF format modeller için, Linux, macOS ve Windows destekler.', @@ -277,7 +277,7 @@ export default { 'models.form.backendVersions.tips': `Daha fazla sürüm kullanmak için {link} sayfasına gidin ve sürüm eklemek üzere altyapıyı düzenleyin.`, 'models.catalog.nogpus.tips': 'Seçili kümede bu model için uyumlu GPU bulunmuyor.', - 'models.form.modelfile.notfound': `Belirttiğiniz model dosyası yolu MesaStack sunucusunda mevcut değil. Model dosyasını hem MesaStack sunucusunda hem de MesaStack işçi düğümlerinde aynı yola yerleştirmeniz önerilir. Bu, MesaStack'in daha iyi kararlar almasına yardımcı olur.`, + 'models.form.modelfile.notfound': `Belirttiğiniz model dosyası yolu ZStack AIOS sunucusunda mevcut değil. Model dosyasını hem ZStack AIOS sunucusunda hem de ZStack AIOS işçi düğümlerinde aynı yola yerleştirmeniz önerilir. Bu, ZStack AIOS'in daha iyi kararlar almasına yardımcı olur.`, 'models.form.readyWorkers': 'hazır işçi düğüm', 'models.form.maxContextLength': 'Maksimum Bağlam Uzunluğu', 'models.form.backend.helperText': diff --git a/src/locales/tr-TR/organizations.ts b/src/locales/tr-TR/organizations.ts index f2eb1988..7e79fbef 100644 --- a/src/locales/tr-TR/organizations.ts +++ b/src/locales/tr-TR/organizations.ts @@ -1,7 +1,7 @@ export default { 'organizations.upsell.title': 'Organizations are an Enterprise feature', 'organizations.upsell.subtitle': - 'Multi-tenancy lets you isolate users, resources, and quotas across teams. Upgrade to MesaStack Enterprise to manage organizations.', + 'Multi-tenancy lets you isolate users, resources, and quotas across teams. Upgrade to ZStack AIOS Enterprise to manage organizations.', 'organizations.upsell.featuresTitle': 'What you get in Enterprise', 'organizations.upsell.feature.orgs': 'Create organizations to group users and isolate workloads', diff --git a/src/locales/tr-TR/resources.ts b/src/locales/tr-TR/resources.ts index d5a9bd49..1b6e7574 100644 --- a/src/locales/tr-TR/resources.ts +++ b/src/locales/tr-TR/resources.ts @@ -52,7 +52,7 @@ export default { 'resources.worker.container.supported': 'macOS veya Windows desteklenmez.', 'resources.worker.current.version': 'Mevcut sürüm: {version}.', 'resources.worker.driver.install': - 'MesaStack kurulumundan önce gerekli sürücüleri ve kütüphaneleri yükleyin.', + 'ZStack AIOS kurulumundan önce gerekli sürücüleri ve kütüphaneleri yükleyin.', 'resources.worker.select.command': 'Komutu oluşturmak için bir etiket seçin ve kopyala düğmesiyle kopyalayın.', 'resources.worker.script.install': 'Betik Kurulumu', @@ -89,7 +89,7 @@ export default { 'Token\'ı yapıştırın.', 'resources.register.worker.step7': 'Ayarları uygulamak için Yeniden Başlat\'a tıklayın.', - 'resources.register.install.title': '{os} üzerine MesaStack kur', + 'resources.register.install.title': '{os} üzerine ZStack AIOS kur', 'resources.register.download': 'Yükleyiciyi indirip kurun. Yalnızca desteklenen: {versions}.', 'resource.register.maos.support': 'Apple Silicon (M serisi), macOS 14+', @@ -110,7 +110,7 @@ export default { 'Kullanılabilir küme yok. Lütfen düğüm eklemeden önce bir küme oluşturun.', 'resources.metrics.details': 'İzleme', 'resoureces.worker.upgrade.tips': - 'Please upgrade to match the MesaStack Server version.', + 'Please upgrade to match the ZStack AIOS Server version.', 'resources.worker.version': 'Worker Version: {version}', 'resources.server.version': 'Server Version: {version}', 'resources.worker.currentVersion': 'Current Version: {version}', @@ -119,5 +119,5 @@ export default { }; // ========== To-Do: Translate Keys (Remove After Translation) ========== -// 1. 'resoureces.worker.upgrade.tips': 'Please upgrade to match the MesaStack Server version.' +// 1. 'resoureces.worker.upgrade.tips': 'Please upgrade to match the ZStack AIOS Server version.' // ========== End of To-Do List ========== diff --git a/src/locales/tr-TR/users.ts b/src/locales/tr-TR/users.ts index 97d3a526..c085c923 100644 --- a/src/locales/tr-TR/users.ts +++ b/src/locales/tr-TR/users.ts @@ -40,12 +40,12 @@ export default { 'users.password.confirm.empty': 'Lütfen yeni şifreyi tekrar girin.', 'users.password.confirm.error': 'Girilen iki şifre eşleşmiyor.', 'users.login.title': 'Giriş yap:', - 'users.version.islatest': 'MesaStack {version} en güncel sürümdür', - 'users.version.update': 'MesaStack {version} kullanılabilir', + 'users.version.islatest': 'ZStack AIOS {version} en güncel sürümdür', + 'users.version.update': 'ZStack AIOS {version} kullanılabilir', 'users.settings.title': 'Kullanıcı Ayarları', 'users.status.activate': 'Hesabı Etkinleştir', 'users.status.deactivate': 'Hesabı Devre Dışı Bırak', 'users.status.inactiveAccount': 'Pasif Hesap', 'users.login.getInitialPassword': - 'Başlangıç yönetici şifresini almak için MesaStack Sunucunuzda aşağıdaki komutu çalıştırın.' + 'Başlangıç yönetici şifresini almak için ZStack AIOS Sunucunuzda aşağıdaki komutu çalıştırın.' }; diff --git a/src/locales/zh-CN/billing.ts b/src/locales/zh-CN/billing.ts index eec63cad..8655b365 100644 --- a/src/locales/zh-CN/billing.ts +++ b/src/locales/zh-CN/billing.ts @@ -1,7 +1,7 @@ export default { 'billing.upsell.title': '计费是企业版功能', 'billing.upsell.subtitle': - '在团队间跟踪花费、生成账单并执行预算。升级到 MesaStack 企业版即可管理计费。', + '在团队间跟踪花费、生成账单并执行预算。升级到 ZStack AIOS 企业版即可管理计费。', 'billing.upsell.featuresTitle': '企业版包含的能力', 'billing.upsell.feature.usage': '按组织、用户与模型查看成本明细', 'billing.upsell.feature.invoices': '生成账单并导出计费报表', diff --git a/src/locales/zh-CN/clusters.ts b/src/locales/zh-CN/clusters.ts index 186441ba..608ec849 100644 --- a/src/locales/zh-CN/clusters.ts +++ b/src/locales/zh-CN/clusters.ts @@ -85,7 +85,7 @@ export default { 'clusters.addworker.detectWorkerAddress.tips': '如果未指定,则默认为节点 IP。', 'clusters.addworker.externalIP.tips': - '如运行在 VPC 或私有网络时,请指定 MesaStack Server 可达的节点外部地址。', + '如运行在 VPC 或私有网络时,请指定 ZStack AIOS Server 可达的节点外部地址。', 'clusters.addworker.enterWorkerIP': '输入节点 IP', 'clusters.addworker.enterWorkerIP.error': '请输入节点 IP', 'clusters.addworker.enterWorkerAddress': '输入节点外部地址', @@ -113,18 +113,18 @@ export default { '已将 {count} 个新节点添加到集群中。', 'clusters.addworker.message.success_multiple': '已将 {count} 个新节点添加到集群中。', - 'clusters.create.serverUrl': 'MesaStack Server 节点地址', + 'clusters.create.serverUrl': 'ZStack AIOS Server 节点地址', 'clusters.create.workerConfig': '节点配置', 'clusters.edit.k8sOptions.changed.tip': '您已修改 Kubernetes 选项,需要在目标集群上重新运行注册命令才会生效。', 'clusters.addworker.containerName': '节点容器名称', 'clusters.addworker.containerName.tips': '为节点容器指定一个名称。', - 'clusters.addworker.dataVolume': 'MesaStack 数据卷', - 'clusters.addworker.dataVolume.tips': '为 MesaStack 指定数据存储路径。', + 'clusters.addworker.dataVolume': 'ZStack AIOS 数据卷', + 'clusters.addworker.dataVolume.tips': '为 ZStack AIOS 指定数据存储路径。', 'clusters.table.ip.internal': '内', 'clusters.table.ip.external': '外', 'clusters.form.serverUrl.tips': - '如果节点无法直接访问 MesaStack Server,则指定一个可访问的外部 MesaStack Server 地址。', + '如果节点无法直接访问 ZStack AIOS Server,则指定一个可访问的外部 ZStack AIOS Server 地址。', 'clusters.form.setDefault': '设为默认', 'clusters.form.setDefault.tips': '部署时的默认集群。', 'clusters.addworker.noClusters': '无可用的 Docker 集群', @@ -140,7 +140,7 @@ export default { 'clusters.addworker.theadNotes-02': '平头哥(T-Head)PPU 使用容器设备接口(CDI)进行设备注入,因此需要确保 /var/run/cdi 目录可用以生成 CDI。', 'clusters.addworker.nvidiaNotes': - 'MesaStack 内置推理后端依赖 CUDA 12.8 及以上版本,请确保 NVIDIA 驱动版本为 570 或以上。', + 'ZStack AIOS 内置推理后端依赖 CUDA 12.8 及以上版本,请确保 NVIDIA 驱动版本为 570 或以上。', 'clusters.volume.title': '卷挂载', 'clusters.volume.name': '卷名称', 'clusters.volume.mountPath': '容器内路径', @@ -166,7 +166,7 @@ export default { 'clusters.volume.add': '添加卷挂载', 'clusters.systemDefaultContainerRegistry.title': '默认容器镜像仓库', 'clusters.systemDefaultContainerRegistry.tip': - '用于解析该集群 MesaStack 镜像的默认镜像仓库。未设置时回退到服务端默认值。', + '用于解析该集群 ZStack AIOS 镜像的默认镜像仓库。未设置时回退到服务端默认值。', 'clusters.k8sOptions.title': 'Kubernetes 部署选项', 'clusters.imageCredentials.title': '镜像仓库凭证', 'clusters.imageCredentials.add': '添加凭证', @@ -178,7 +178,7 @@ export default { '应用到每个 worker DaemonSet 的 Pod nodeSelector,只有标签匹配的节点才会被调度运行 worker。', 'clusters.operatorImage.title': 'Operator 镜像', 'clusters.operatorImage.tip': - 'MesaStack Operator 容器镜像的覆盖值。留空则使用服务端默认值。', + 'ZStack AIOS Operator 容器镜像的覆盖值。留空则使用服务端默认值。', 'clusters.namespace.title': '命名空间', 'clusters.namespace.tip': '集群清单渲染所使用的 Kubernetes 命名空间。留空则使用 gpustack-system。', diff --git a/src/locales/zh-CN/common.ts b/src/locales/zh-CN/common.ts index 8637a295..d7a5ccea 100644 --- a/src/locales/zh-CN/common.ts +++ b/src/locales/zh-CN/common.ts @@ -44,7 +44,7 @@ export default { 'common.button.rollback': '回滚', 'common.button.new': '新建{ text }', 'common.button.upgrade': '升级', - 'common.enterprise.feature': 'MesaStack 企业版可用', + 'common.enterprise.feature': 'ZStack AIOS 企业版可用', 'common.input.holder': '请输入', 'common.holder.search': '搜索', 'common.button.edit': '编辑', @@ -204,7 +204,7 @@ export default { 'common.form.password': '密码', 'common.form.username': '用户名', 'common.login.rember': '记住我', - 'settings.company': 'MesaStack', + 'settings.company': 'ZStack AIOS', 'common.button.help': '帮助', 'common.button.feedback': '反馈', 'common.button.docs': '文档', diff --git a/src/locales/zh-CN/models.ts b/src/locales/zh-CN/models.ts index 429fe8df..4a348d8d 100644 --- a/src/locales/zh-CN/models.ts +++ b/src/locales/zh-CN/models.ts @@ -15,7 +15,7 @@ export default { 'models.form.configurations': '配置', 'models.form.s3address': 'S3 地址', 'models.form.partialoffload.tips': - '启用 CPU 卸载后,GPU 不足时 MesaStack 会自动使用 CPU 内存。请确保推理后端已正确配置为混合 CPU+GPU 或纯 CPU 推理。', + '启用 CPU 卸载后,GPU 不足时 ZStack AIOS 会自动使用 CPU 内存。请确保推理后端已正确配置为混合 CPU+GPU 或纯 CPU 推理。', 'models.form.distribution.tips': '允许在单个节点资源不足时,将部分计算卸载到一个或多个远程节点。', 'models.openinplayground': '在 Playground 中打开', @@ -26,7 +26,7 @@ export default { 'model.deploy.sort': '排序', 'model.deploy.search.placeholder': '按 / 开始搜索模型', 'model.form.ollamatips': - '提示:以下为 MesaStack 预设的 Ollama 模型,请选择你想要的模型或者直接在右侧表单 【{name}】 输入框中输入你要部署的模型。', + '提示:以下为 ZStack AIOS 预设的 Ollama 模型,请选择你想要的模型或者直接在右侧表单 【{name}】 输入框中输入你要部署的模型。', 'models.sort.name': '名称', 'models.sort.size': '大小', 'models.sort.likes': '点赞量', @@ -86,7 +86,7 @@ export default { 'models.form.filePath': '模型路径', 'models.form.backendVersion': '后端版本', 'models.form.backendVersion.tips': - '固定以使用期望的 {backend} 版本 {version},在线环境会自动创建虚拟环境安装对应版本的 {backend}。在 MesaStack 升级后也将保持固定的后端版本。{link}', + '固定以使用期望的 {backend} 版本 {version},在线环境会自动创建虚拟环境安装对应版本的 {backend}。在 ZStack AIOS 升级后也将保持固定的后端版本。{link}', 'models.form.gpuselector': 'GPU 选择器', 'models.form.backend.llamabox': '用于 GGUF 格式模型,支持 Linux, macOS 和 Windows。', @@ -262,7 +262,7 @@ export default { 'models.form.backendVersions.tips': `如需使用更多版本,请前往{link}页面并编辑对应的后端以添加版本。`, 'models.catalog.nogpus.tips': '所选集群中没有兼容该模型的 GPU。', 'models.form.modelfile.notfound': - '你指定的模型文件路径在 MesaStack Server 节点上不存在。建议在 MesaStack Server 节点和 MesaStack 节点上使用相同的模型文件路径,这有助于 MesaStack 做出更优的调度与决策。', + '你指定的模型文件路径在 ZStack AIOS Server 节点上不存在。建议在 ZStack AIOS Server 节点和 ZStack AIOS 节点上使用相同的模型文件路径,这有助于 ZStack AIOS 做出更优的调度与决策。', 'models.form.readyWorkers': '节点就绪', 'models.form.maxContextLength': '最大上下文长度', 'models.form.backend.helperText': '该社区后端暂未启用,部署后将自动启用', diff --git a/src/locales/zh-CN/organizations.ts b/src/locales/zh-CN/organizations.ts index 5313ab17..f7120716 100644 --- a/src/locales/zh-CN/organizations.ts +++ b/src/locales/zh-CN/organizations.ts @@ -1,7 +1,7 @@ export default { 'organizations.upsell.title': '组织是企业版功能', 'organizations.upsell.subtitle': - '多租户可在团队间隔离用户、资源与配额。升级到 MesaStack 企业版即可管理组织。', + '多租户可在团队间隔离用户、资源与配额。升级到 ZStack AIOS 企业版即可管理组织。', 'organizations.upsell.featuresTitle': '企业版包含的能力', 'organizations.upsell.feature.orgs': '创建组织来分组用户并隔离工作负载', 'organizations.upsell.feature.members': '为每个组织管理成员与角色', diff --git a/src/locales/zh-CN/resources.ts b/src/locales/zh-CN/resources.ts index 57997a40..bcf1a734 100644 --- a/src/locales/zh-CN/resources.ts +++ b/src/locales/zh-CN/resources.ts @@ -52,7 +52,7 @@ export default { 'resources.worker.current.version': '当前版本为 {version}', 'resources.worker.select.command': '选择一个标签生成命令并使用复制按钮复制', 'resources.worker.driver.install': - '在安装 MesaStack 之前,请安装所需的驱动程序和库。', + '在安装 ZStack AIOS 之前,请安装所需的驱动程序和库。', 'resources.worker.script.install': '脚本安装', 'resources.worker.container.install': '容器安装(仅支持 Linux)', 'resources.worker.cann.tips': @@ -87,7 +87,7 @@ export default { '粘贴 Token。', 'resources.register.worker.step7': '点击重启,应用设置。', - 'resources.register.install.title': '在 {os} 上安装 MesaStack', + 'resources.register.install.title': '在 {os} 上安装 ZStack AIOS', 'resources.register.download': '下载并安装安装包,仅支持 {versions}。', 'resource.register.maos.support': 'M 芯片,macOS 14+', @@ -106,7 +106,7 @@ export default { '进入维护模式后,节点将停止调度新的模型实例部署任务,正在运行的实例不会受到影响。', 'resources.worker.noCluster.tips': '当前无可用集群,请先创建集群再添加节点。', 'resources.metrics.details': '监控', - 'resoureces.worker.upgrade.tips': '请升级到与 MesaStack Server 版本一致。', + 'resoureces.worker.upgrade.tips': '请升级到与 ZStack AIOS Server 版本一致。', 'resources.worker.version': '节点版本:{version}', 'resources.server.version': 'Server 版本:{version}', 'resources.worker.currentVersion': '当前版本:{version}', diff --git a/src/locales/zh-CN/users.ts b/src/locales/zh-CN/users.ts index b486c2f5..25f3f70a 100644 --- a/src/locales/zh-CN/users.ts +++ b/src/locales/zh-CN/users.ts @@ -37,12 +37,12 @@ export default { 'users.password.confirm.empty': '请确认新密码', 'users.password.confirm.error': '两次输入的密码不一致', 'users.login.title': '登录', - 'users.version.islatest': 'MesaStack {version} 已是最新版本', - 'users.version.update': 'MesaStack {version} 版本可供更新', + 'users.version.islatest': 'ZStack AIOS {version} 已是最新版本', + 'users.version.update': 'ZStack AIOS {version} 版本可供更新', 'users.settings.title': '用户设置', 'users.status.activate': '启用账户', 'users.status.deactivate': '停用账户', 'users.status.inactiveAccount': '停用账户', 'users.login.getInitialPassword': - '在 MesaStack Server 节点运行以下命令以获取初始管理员密码。' + '在 ZStack AIOS Server 节点运行以下命令以获取初始管理员密码。' }; diff --git a/src/pages/gpu-service/instances/config/index.ts b/src/pages/gpu-service/instances/config/index.ts index c66b96f3..e2a371d4 100644 --- a/src/pages/gpu-service/instances/config/index.ts +++ b/src/pages/gpu-service/instances/config/index.ts @@ -48,7 +48,7 @@ export const GPUStackFailedStatuses = [ export const InstanceStatusLabelMap: Record = { // === K8s Statuses === ...Object.fromEntries(K8SStatuses.map((status) => [status, status])), - // === MesaStack Statuses no logs and events=== + // === ZStack AIOS Statuses no logs and events=== [InstanceStatusValueMap.Deleting]: 'Deleting', [InstanceStatusValueMap.Stopping]: 'Stopping', [InstanceStatusValueMap.Stopped]: 'Stopped',