Skip to content

Commit

Permalink
Merge pull request #1424 from SanjalKatiyar/add_french_spanish
Browse files Browse the repository at this point in the history
Add support for French & Spanish locales
  • Loading branch information
openshift-merge-bot[bot] authored Jul 5, 2024
2 parents c0c1a7a + 77651a7 commit 534ceee
Show file tree
Hide file tree
Showing 9 changed files with 2,868 additions and 19 deletions.
1,417 changes: 1,417 additions & 0 deletions locales/es/plugin__odf-console.json

Large diffs are not rendered by default.

1,417 changes: 1,417 additions & 0 deletions locales/fr/plugin__odf-console.json

Large diffs are not rendered by default.

12 changes: 7 additions & 5 deletions locales/ja/plugin__odf-console.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
"Create StorageClient": "StorageClient の作成",
"Create a StorageClient to connect to a Data Foundation system.": "Data Foundation システムに接続するための StorageClient を作成します。",
"Name": "名前",
"Namespace": "Namespace",
"Data Foundation endpoint": "Data Foundation エンドポイント",
"Please provide a proper URL with a valid port.": "有効なポートを持つ適切な URL を指定してください。",
"Onboarding token": "オンボーディングトークン",
Expand Down Expand Up @@ -104,6 +103,7 @@
"Enable disaster recovery protection by selecting the namespaces of your ACM discovered application.": "ACM 検出アプリケーションの namespace を選択することで、障害復旧保護を有効にします。",
"DR cluster": "DR クラスター",
"Select cluster": "クラスターの選択",
"Namespace": "Namespace",
"Select namespaces that belongs to your ACM discovered applications.": "ACM 検出アプリケーションに属する namespace を選択します。",
"Once you select namespaces, applications regardless of their type, within those namespaces cannot be subsequently enrolled separately under disaster recovery protection.": "namespace を選択した後は、その namespace 内のアプリケーションは、いずれのタイプであっても障害復旧保護の下で個別に登録できません。",
"Replication type: {{type}}, Interval: {{interval}}, Clusters: {{clusters}}": "レプリケーションタイプ: {{type}}、間隔: {{interval}}、クラスター: {{clusters}}",
Expand Down Expand Up @@ -141,7 +141,7 @@
"Configure recovery to your failover cluster with a disaster recovery policy.<1></1>Click the <3>Create DRPolicy</3> button to get started.": "障害復旧ポリシーを使用してフェイルオーバークラスターへの復旧を設定します。<1></1>開始するには <3>Create DRPolicy</3> ボタンをクリックします。",
"Clusters": "クラスター",
"Connected applications": "接続済みアプリケーション",
"Cannot delete while connected to an application.": "アプリケーションに接続されている場合は削除できません",
"Cannot delete while connected to an application.": "アプリケーションに接続されている場合は削除できません",
"Loading Empty Page": "空のページをロード中",
"You are not authorized to complete this action. See your cluster administrator for role-based access control information.": "このアクションの実行は許可されていません。クラスター管理者にロールベースのアクセス制御を確認してください。",
"Not Authorized": "認可されていません",
Expand Down Expand Up @@ -1108,10 +1108,12 @@
"Rotate signing keys": "署名鍵のローテーション",
"Data Foundation version sync": "Data Foundation バージョンの同期",
"Client onboarding token": "クライアントオンボーディングトークン",
"Can not generate an onboarding token at the moment": "現時点ではオンボーディングトークンを生成できない",
"The token generation service is currently unavailable. Contact our <2>customer support</2> for further help.": "トークン生成サービスは現在利用できません。さらなるサポートが必要な場合は、<2>カスタマーサポート</2> にお問い合わせください。",
"Copy to clipboard": "クリップボードにコピー",
"How to use this token?": "トークンの使用方法",
"To onboard the client cluster, the provider cluster requires the onboarding token.": "クライアントクラスターをオンボードするには、プロバイダークラスターにオンボーディングトークンが必要です",
"An onboarding token is needed to connect an additional OpenShift cluster to a Data Foundation deployment.": "追加の OpenShift クラスターを Data Foundation デプロイメントに接続するには、オンボーディングトークンが必要です",
"An onboarding token is needed to connect an additional OpenShift cluster to a Data Foundation deployment. Copy the generated token and use it for deploying Data Foundation client operator on your OpenShift cluster.": "追加の OpenShift クラスターを Data Foundation デプロイメントに接続するには、オンボーディングトークンが必要です。生成されたトークンをコピーし、OpenShift クラスターで Data Foundation クライアント Operator をデプロイするために使用します",
"This token is valid for 48 hours and can only be used once.": "このトークンは 48 時間有効で、1 回のみ使用できます",
"Permanently delete storage client?": "ストレージクライアントを完全に削除しますか?",
"Deleting the storage client {getName(resource)} will remove all Ceph/Rook resources and erase all data associated with this client, leading to permanent deletion of the client. This action cannot be undone. It will destroy all pods, services and other objects in the namespace <4>{{name}}</4>.": "ストレージクライアント {getName(resource)} を削除すると、Ceph/Rook リソースと、このクライアントに関連するデータがすべて削除され、クライアントが完全に削除されます。この操作は取り消せません。namespace <4>{{name}}</4> 内のすべての Pod、サービス、およびその他のオブジェクトが破棄されます。",
"Confirm deletion by typing&nbsp;<1>{{name}}</1> below:": "以下に <1>{{name}}</1> を入力して削除を確認してください:",
Expand Down Expand Up @@ -1239,7 +1241,7 @@
"This is an Advanced subscription feature. It requires Advanced Edition subscription. Please contact the account team for more information.": "これは高度なサブスクリプション機能です。これには Advanced Edition サブスクリプションが必要になります。詳細は、アカウントチームにお問い合わせください。",
"Advanced Subscription": "高度な Subscription",
"Dev preview": "開発プレビュー",
"Tech preview": "テクノロジープレビュー",
"Technology preview": "テクノロジープレビュー",
"No datapoints found.": "データポイントが見つかりません。",
"total limit": "制限の合計",
"total requested": "要求の合計",
Expand Down
10 changes: 6 additions & 4 deletions locales/ko/plugin__odf-console.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
"Create StorageClient": "스토리지 클라이언트 만들기",
"Create a StorageClient to connect to a Data Foundation system.": "Data Foundation 시스템에 연결할 스토리지 클라이언트를 생성합니다.",
"Name": "이름",
"Namespace": "네임 스페이스",
"Data Foundation endpoint": "Data Foundation 엔드포인트",
"Please provide a proper URL with a valid port.": "유효한 포트가 있는 적절한 URL을 입력하십시오.",
"Onboarding token": "온보딩 토큰",
Expand Down Expand Up @@ -104,6 +103,7 @@
"Enable disaster recovery protection by selecting the namespaces of your ACM discovered application.": "ACM이 검색한 애플리케이션의 네임스페이스를 선택하여 재해 복구 보호를 활성화합니다.",
"DR cluster": "DR 클러스터",
"Select cluster": "클러스터 선택",
"Namespace": "네임 스페이스",
"Select namespaces that belongs to your ACM discovered applications.": "ACM 검색된 애플리케이션에 속하는 네임스페이스를 선택합니다.",
"Once you select namespaces, applications regardless of their type, within those namespaces cannot be subsequently enrolled separately under disaster recovery protection.": "네임스페이스를 선택하면 해당 네임스페이스와 관계없이 해당 네임스페이스의 애플리케이션을 재해 복구 보호에서 별도로 등록할 수 없습니다.",
"Replication type: {{type}}, Interval: {{interval}}, Clusters: {{clusters}}": "복제 유형: {{type}}, 간격: {{interval}}, 클러스터: {{clusters}}",
Expand Down Expand Up @@ -1108,10 +1108,12 @@
"Rotate signing keys": "서명 키 교체",
"Data Foundation version sync": "Data Foundation 버전 동기화",
"Client onboarding token": "클라이언트 온보딩 토큰",
"Can not generate an onboarding token at the moment": "현재 온보딩 토큰을 생성할 수 없습니다",
"The token generation service is currently unavailable. Contact our <2>customer support</2> for further help.": "현재 토큰 생성 서비스를 사용할 수 없습니다. 추가 도움말을 보려면 <2>고객 지원</2>에 문의하십시오.",
"Copy to clipboard": "클립 보드에 복사",
"How to use this token?": "이 토큰을 어떻게 사용할 수 있습니까?",
"To onboard the client cluster, the provider cluster requires the onboarding token.": "클라이언트 클러스터를 온보딩하려면 공급자 클러스터에 온보딩 토큰이 필요합니다.",
"An onboarding token is needed to connect an additional OpenShift cluster to a Data Foundation deployment.": "추가 OpenShift 클러스터를 Data Foundation 배포에 연결하려면 온보딩 토큰이 필요합니다.",
"An onboarding token is needed to connect an additional OpenShift cluster to a Data Foundation deployment. Copy the generated token and use it for deploying Data Foundation client operator on your OpenShift cluster.": "추가 OpenShift 클러스터를 Data Foundation 배포에 연결하려면 온보딩 토큰이 필요합니다. 생성된 토큰을 복사하여 OpenShift 클러스터에 Data Foundation 클라이언트 Operator를 배포하는 데 사용합니다.",
"This token is valid for 48 hours and can only be used once.": "이 토큰은 48시간 동안 유효하며 한 번만 사용할 수 있습니다.",
"Permanently delete storage client?": "스토리지 클라이언트를 영구적으로 삭제하시겠습니까?",
"Deleting the storage client {getName(resource)} will remove all Ceph/Rook resources and erase all data associated with this client, leading to permanent deletion of the client. This action cannot be undone. It will destroy all pods, services and other objects in the namespace <4>{{name}}</4>.": "스토리지 클라이언트 {getName(resource)} 를 삭제하면 모든 Ceph/Rook 리소스가 제거되고 이 클라이언트와 관련된 모든 데이터가 삭제되어 클라이언트가 영구적으로 삭제됩니다. 이 작업은 취소할 수 없습니다. 네임스페이스의 모든 Pod, 서비스 및 기타 오브젝트를 삭제합니다<4>{{name}}</4>.",
"Confirm deletion by typing&nbsp;<1>{{name}}</1> below:": "다음과 같이 입력하여 삭제를 확인합니다.<1>{{name}}</1>",
Expand Down Expand Up @@ -1239,7 +1241,7 @@
"This is an Advanced subscription feature. It requires Advanced Edition subscription. Please contact the account team for more information.": "이는 고급 서브스크립션 기능입니다. Advanced Edition 서브스크립션이 필요합니다. 자세한 내용은 계정 팀에 문의하십시오.",
"Advanced Subscription": "고급 서브스크립션",
"Dev preview": "개발자 미리보기",
"Tech preview": "기술 프리뷰",
"Technology preview": "기술 프리뷰",
"No datapoints found.": "데이터 포인트를 찾을 수 없습니다",
"total limit": "총 한도",
"total requested": "총 요청",
Expand Down
12 changes: 7 additions & 5 deletions locales/zh/plugin__odf-console.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
"Create StorageClient": "创建存储客户端",
"Create a StorageClient to connect to a Data Foundation system.": "创建存储客户端以连接到 Data Foundation 系统。",
"Name": "名称",
"Namespace": "命名空间",
"Data Foundation endpoint": "Data Foundation 版本",
"Please provide a proper URL with a valid port.": "请提供一个带有有效端口的正确的 URL。",
"Onboarding token": "加入令牌",
Expand Down Expand Up @@ -104,6 +103,7 @@
"Enable disaster recovery protection by selecting the namespaces of your ACM discovered application.": "通过选择您的 ACM 发现的应用程序的命名空间来启用灾难恢复保护。",
"DR cluster": "DR 集群",
"Select cluster": "选择集群",
"Namespace": "命名空间",
"Select namespaces that belongs to your ACM discovered applications.": "选择属于您的 ACM 发现的应用程序的命名空间。",
"Once you select namespaces, applications regardless of their type, within those namespaces cannot be subsequently enrolled separately under disaster recovery protection.": "在选择命名空间后,在命名空间中的应用程序(无论其类型)在后续不能在灾难恢复保护中单独注册。",
"Replication type: {{type}}, Interval: {{interval}}, Clusters: {{clusters}}": "复制类型:{{type}},间隔: {{interval}},集群: {{clusters}}",
Expand Down Expand Up @@ -1108,10 +1108,12 @@
"Rotate signing keys": "轮转签名密钥",
"Data Foundation version sync": "Data Foundation 版本同步",
"Client onboarding token": "客户端加入令牌",
"Can not generate an onboarding token at the moment": "目前无法生成加入令牌",
"The token generation service is currently unavailable. Contact our <2>customer support</2> for further help.": "令牌生成服务目前不可用。请联系<2>客户支持</2>以获得进一步的帮助。",
"Copy to clipboard": "复制到剪贴板",
"How to use this token?": "如何使用此令牌?",
"To onboard the client cluster, the provider cluster requires the onboarding token.": "要加入客户端集群,供应商集群需要加入令牌",
"An onboarding token is needed to connect an additional OpenShift cluster to a Data Foundation deployment.": "将额外的 OpenShift 集群连接到 Data Foundation 部署需要一个加入令牌(onboarding token)",
"An onboarding token is needed to connect an additional OpenShift cluster to a Data Foundation deployment. Copy the generated token and use it for deploying Data Foundation client operator on your OpenShift cluster.": "将额外的 OpenShift 集群连接到 Data Foundation 部署需要一个加入(onboarding)令牌。复制生成的令牌,并使用它在 OpenShift 集群上部署 Data Foundation 客户端 operator",
"This token is valid for 48 hours and can only be used once.": "此令牌的有效期为 48 小时,且只能使用一次",
"Permanently delete storage client?": "永久删除存储客户端?",
"Deleting the storage client {getName(resource)} will remove all Ceph/Rook resources and erase all data associated with this client, leading to permanent deletion of the client. This action cannot be undone. It will destroy all pods, services and other objects in the namespace <4>{{name}}</4>.": "删除存储客户端 {getName(resource)} 将删除所有 Ceph/Rook 资源,并清除与此客户端关联的所有数据,从而导致客户端被永久删除。此操作无法撤消。它将销毁命名空间 <4>{{name}}</4> 中的所有 pod、服务和其他对象。",
"Confirm deletion by typing&nbsp;<1>{{name}}</1> below:": "在以下输入 <1>{{name}}</1> 确认删除:",
Expand Down Expand Up @@ -1239,7 +1241,7 @@
"This is an Advanced subscription feature. It requires Advanced Edition subscription. Please contact the account team for more information.": "这是一个高级订阅功能。它需要高级订阅。请联络帐户团队以获得更多信息。",
"Advanced Subscription": "高级订阅",
"Dev preview": "开发预览",
"Tech preview": "技术预览",
"Technology preview": "技术预览",
"No datapoints found.": "找不到数据点。",
"total limit": "总限制",
"total requested": "请求的总量",
Expand Down Expand Up @@ -1300,7 +1302,7 @@
"Error Loading {{label}}: {{message}}": "错误加载 {{label}}:{{message}}",
"Error Loading {{label}}": "错误加载 {{label}}",
"Please <2>try again</2>.": "请<2>再次尝试</2>。",
"No {{label}} found": "没有找到{{label}}",
"No {{label}} found": "没有找到 {{label}}",
"Not found": "没有找到",
"Restricted Access": "限制的访问",
"You don't have access to this section due to cluster policy.": "由于集群策略您无法访问此部分。",
Expand Down
7 changes: 7 additions & 0 deletions scripts/i18n/common.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,11 @@ module.exports = {
console.error(`Failed to delete file ${filePath}:`, e);
}
},
deleteDir(dirPath) {
try {
fs.rmSync(dirPath, { recursive: true, force: true });
} catch (e) {
console.error(`Failed to delete directory ${dirPath}:`, e);
}
},
};
8 changes: 5 additions & 3 deletions scripts/i18n/i18n-to-po.js
Original file line number Diff line number Diff line change
Expand Up @@ -50,15 +50,16 @@ function consolidateWithExistingTranslations(filePath, fileName, language) {

function processFile(fileName, language) {
let tmpFile;
let dirPath;
const i18nFile = path.join(__dirname, `../../locales/en/${fileName}.json`);

console.log(`Current dirname: ${__dirname}`);

try {
if (fs.existsSync(i18nFile)) {
fs.mkdirSync(path.join(__dirname, '../../locales/tmp'), {
recursive: true,
});
dirPath = path.join(__dirname, '../../locales/tmp');

fs.mkdirSync(dirPath, { recursive: true });

tmpFile = path.join(__dirname, `../../locales/tmp/${fileName}.json`);

Expand Down Expand Up @@ -88,6 +89,7 @@ function processFile(fileName, language) {
console.error(`Failed to processFile ${fileName}:`, err);
}
common.deleteFile(tmpFile);
common.deleteDir(dirPath);
console.log(`Processed ${fileName}`);
}

Expand Down
2 changes: 1 addition & 1 deletion scripts/i18n/languages.sh
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
#!/bin/bash

export LANGUAGES=( 'ja' 'zh-cn' 'ko')
export LANGUAGES=( 'ja' 'zh-cn' 'ko' 'es' 'fr')
2 changes: 1 addition & 1 deletion webpack.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import * as webpack from 'webpack';
import { BundleAnalyzerPlugin } from 'webpack-bundle-analyzer';
import type { Configuration as DevServerConfiguration } from 'webpack-dev-server';

const LANGUAGES = ['en', 'ja', 'ko', 'zh'];
const LANGUAGES = ['en', 'ja', 'ko', 'zh', 'es', 'fr'];
const resolveLocale = (dirName: string, ns: string) =>
LANGUAGES.map((lang) => ({
from: path.resolve(dirName, `locales/${lang}/plugin__*.json`),
Expand Down

0 comments on commit 534ceee

Please sign in to comment.