Add Japanese translation

This commit is contained in:
gnsworks
2025-07-12 10:31:03 +09:00
parent 9fd977ed15
commit 2621544b24
12 changed files with 407 additions and 1 deletions
@@ -129,6 +129,9 @@ export const Header = ({
<DropdownMenuItem onClick={() => setLanguage("de")} className={language === "de" ? "bg-accent" : ""}> <DropdownMenuItem onClick={() => setLanguage("de")} className={language === "de" ? "bg-accent" : ""}>
{t("Deutsch")} {t("Deutsch")}
</DropdownMenuItem> </DropdownMenuItem>
<DropdownMenuItem onClick={() => setLanguage("ja")} className={language === "ja" ? "bg-accent" : ""}>
{t("japanese")}
</DropdownMenuItem>
</DropdownMenuContent> </DropdownMenuContent>
</DropdownMenu> </DropdownMenu>
+3 -1
View File
@@ -1,13 +1,15 @@
import enTranslations from './en'; import enTranslations from './en';
import kmTranslations from './km'; import kmTranslations from './km';
import deTranslations from './de'; import deTranslations from './de';
import jaTranslations from './ja';
export type Language = "en" | "km" | "de"; export type Language = "en" | "km" | "de" | "ja";
export const translations = { export const translations = {
en: enTranslations, en: enTranslations,
km: kmTranslations, km: kmTranslations,
de: deTranslations, de: deTranslations,
ja: jaTranslations,
}; };
// Type for accessing translations by module and key // Type for accessing translations by module and key
+17
View File
@@ -0,0 +1,17 @@
import { AboutTranslations } from '../types/about';
export const aboutTranslations: AboutTranslations = {
aboutCheckcle: "Checkcleについて",
systemDescription: "Checkcleは、サーバーとサービスの健全性に関するリアルタイム監視、インシデント管理、運用の透明性を提供するオープンソースの監視スタックです。MIT ライセンスの下で公開されています。",
systemVersion: "システムバージョン",
license: "ライセンス",
mitLicense: "MIT ライセンス",
links: "リンク",
viewOnGithub: "GitHubで表示",
viewDocumentation: "ドキュメントを表示",
followOnX: "Xでフォロー",
joinDiscord: "Discordに参加",
quickActions: "クイックアクション",
quickActionsDescription: "一般的な監視操作と機能に素早くアクセスできます。開始するには、以下のアクションを選択してください。",
quickTips: "クイックヒント",
};
+29
View File
@@ -0,0 +1,29 @@
import { CommonTranslations } from '../types/common';
export const commonTranslations: CommonTranslations = {
welcome: "ようこそ",
logout: "ログアウト",
language: "言語",
english: "English",
khmer: "Khmer",
german: "Deutsch",
japanese: "日本語",
goodMorning: "おはようございます",
goodAfternoon: "こんにちは",
goodEvening: "こんばんは",
profile: "プロファイル",
settings: "設定",
documentation: "ドキュメント",
notifications: "通知",
close: "閉じる",
cancel: "キャンセル",
view: "表示",
edit: "編集",
delete: "削除",
status: "ステータス",
time: "時間",
title: "タイトル",
description: "説明",
success: "成功",
error: "エラー",
};
@@ -0,0 +1,54 @@
import { IncidentTranslations } from '../types/incident';
export const incidentTranslations: IncidentTranslations = {
incidentManagement: 'インシデント管理',
incidentsManagementDesc: 'サービスのインシデントとその解決を追跡・管理する',
unresolvedIncidents: '未解決',
resolvedIncidents: '解決済み',
activeIncidents: 'アクティブなインシデント',
criticalIssues: '重要な問題',
avgResolutionTime: '平均解決時間',
noIncidents: 'アクティブなインシデントはありません',
createIncident: 'インシデントを作成',
investigating: '調査中',
identified: '特定済み',
monitoring: '監視中',
resolved: '解決済み',
scheduleIncidentManagement: 'スケジュール・インシデント管理',
incidentName: 'インシデント名',
incidentStatus: 'インシデントステータス',
highPriority: '高優先度',
configurationSettings: '設定',
incidentCreatedSuccess: 'インシデントが正常に作成されました',
basicInfo: '基本情報',
serviceId: 'サービスID',
assignedTo: '担当者',
unassigned: '未割り当て',
timeline: 'タイムライン',
incidentTime: 'インシデント発生時刻',
resolutionTime: '解決時刻',
systems: 'システム',
noSystems: '影響を受けるシステムはありません',
impactAnalysis: '影響分析',
rootCause: '根本原因',
resolutionSteps: '解決手順',
lessonsLearned: '学んだ教訓',
resolutionDetails: '解決詳細',
assignment: '割り当て',
download: 'ダウンロード',
downloadPdf: 'PDFダウンロード',
print: '印刷',
confidentialNote: 'この文書は機密情報であり、内部使用のみを目的としています。',
generatedOn: '生成日時',
enterResolutionSteps: 'インシデント解決のために取った手順を入力してください',
enterLessonsLearned: 'このインシデントから学んだ教訓を入力してください',
editIncident: 'インシデントを編集',
editIncidentDesc: 'このインシデントの詳細を更新',
updating: '更新中...',
update: '更新',
create: '作成',
creating: '作成中...',
configuration: '設定',
failedToUpdateStatus: 'ステータスの更新に失敗しました',
inProgress: '進行中',
};
+24
View File
@@ -0,0 +1,24 @@
import { Translations } from '../types';
import { commonTranslations } from './common';
import { menuTranslations } from './menu';
import { loginTranslations } from './login';
import { aboutTranslations } from './about';
import { servicesTranslations } from './services';
import { maintenanceTranslations } from './maintenance';
import { incidentTranslations } from './incident';
import { sslTranslations } from './ssl';
import { settingsTranslations } from './settings';
const jaTranslations: Translations = {
common: commonTranslations,
menu: menuTranslations,
login: loginTranslations,
about: aboutTranslations,
services: servicesTranslations,
maintenance: maintenanceTranslations,
incident: incidentTranslations,
ssl: sslTranslations,
settings: settingsTranslations
};
export default jaTranslations;
+22
View File
@@ -0,0 +1,22 @@
import { LoginTranslations } from '../types/login';
export const loginTranslations: LoginTranslations = {
signInToYourAccount: "アカウントにサインイン",
dontHaveAccount: "アカウントをお持ちでない場合",
createOne: "作成する",
signInWithGoogle: "Googleでサインイン",
orContinueWith: "または",
email: "メール",
password: "パスワード",
forgot: "忘れた場合",
signIn: "サインイン",
signingIn: "サインイン中...",
loginSuccessful: "ログイン成功",
loginSuccessMessage: "正常にログインしました。",
loginFailed: "ログイン失敗",
authenticationFailed: "認証に失敗しました",
bySigningIn: "サインインすることで、",
termsAndConditions: "利用規約",
and: "と",
privacyPolicy: "プライバシーポリシー",
};
@@ -0,0 +1,67 @@
import { MaintenanceTranslations } from '../types/maintenance';
export const maintenanceTranslations: MaintenanceTranslations = {
scheduledMaintenance: 'スケジュール済みメンテナンス',
scheduledMaintenanceDesc: 'システムとサービスの計画されたメンテナンスウィンドウを表示・管理',
upcomingMaintenance: '予定',
ongoingMaintenance: '実行中',
completedMaintenance: '完了',
createMaintenanceWindow: 'メンテナンス作成',
totalScheduledHours: '総スケジュール時間',
maintenanceName: 'メンテナンス名',
maintenanceStatus: 'ステータス',
scheduledStart: 'スケジュール開始',
scheduledEnd: 'スケジュール終了',
affectedServices: '影響を受けるサービス',
impact: '影響',
minor: '軽微',
major: '重要',
critical: '重大',
none: 'なし',
actions: 'アクション',
scheduled: 'スケジュール済み',
inprogress: '進行中',
completed: '完了',
cancelled: 'キャンセル',
markAsInProgress: '進行中としてマーク',
markAsCompleted: '完了としてマーク',
markAsCancelled: 'キャンセルとしてマーク',
confirmDelete: '削除確認',
deleteMaintenanceConfirmation: 'このメンテナンスウィンドウを削除してもよろしいですか?',
thisActionCannotBeUndone: 'この操作は元に戻せません。',
maintenanceDeleted: 'メンテナンス削除完了',
maintenanceDeletedDesc: 'メンテナンスウィンドウが正常に削除されました。',
errorDeletingMaintenance: 'メンテナンスウィンドウの削除中にエラーが発生しました。',
statusUpdated: 'ステータス更新完了',
maintenanceStatusUpdated: 'メンテナンスステータスが正常に更新されました。',
errorUpdatingMaintenanceStatus: 'メンテナンスステータスの更新中にエラーが発生しました。',
createMaintenance: 'メンテナンス作成',
createMaintenanceDesc: 'サービスの新しいメンテナンスウィンドウをスケジュール',
enterTitle: 'メンテナンスタイトルを入力',
enterDescription: 'メンテナンスの詳細説明を入力',
startTime: '開始時刻',
endTime: '終了時刻',
selectDate: '日付を選択',
enterAffectedServices: '影響を受けるサービスを入力',
separateServicesWithComma: '複数のサービスはカンマで区切ってください',
priority: '優先度',
selectPriority: '優先度を選択',
selectStatus: 'ステータスを選択',
selectImpact: '影響を選択',
notifySubscribers: '購読者に通知',
notifySubscribersDesc: 'このメンテナンスが開始されたときに全購読者に通知を送信',
maintenanceCreated: 'メンテナンス作成完了',
maintenanceCreatedDesc: 'メンテナンスウィンドウが正常にスケジュールされました。',
errorCreatingMaintenance: 'メンテナンスウィンドウの作成中にエラーが発生しました。',
errorFetchingMaintenanceData: 'メンテナンスデータの取得中にエラーが発生しました。',
low: '低',
medium: '中',
high: '高',
created: '作成済み',
lastUpdated: '最終更新',
subscribersWillBeNotified: 'メンテナンス開始時に購読者に通知されます',
noNotifications: '通知は送信されません',
noScheduledMaintenance: 'スケジュール済みメンテナンスなし',
noMaintenanceWindows: 'この期間にメンテナンスウィンドウはありません。「メンテナンス作成」ボタンをクリックして作成してください。',
maintenanceCreatedSuccess: 'メンテナンスウィンドウが正常に作成されました',
};
+20
View File
@@ -0,0 +1,20 @@
import { MenuTranslations } from '../types/menu';
export const menuTranslations: MenuTranslations = {
uptimeMonitoring: "稼働監視",
instanceMonitoring: "インスタンス監視",
sslDomain: "SSL・ドメイン",
scheduleIncident: "スケジュール・インシデント",
operationalPage: "運用ページ",
reports: "レポート",
regionalMonitoring: "地域監視",
settingPanel: "設定パネル",
generalSettings: "一般設定",
userManagement: "ユーザー管理",
notificationSettings: "通知設定",
alertsTemplates: "アラートテンプレート",
rolesManagement: "ロール管理",
dataRetention: "データ保持",
backupSettings: "バックアップ設定",
aboutSystem: "システム情報",
};
@@ -0,0 +1,11 @@
import { ServicesTranslations } from '../types/services';
export const servicesTranslations: ServicesTranslations = {
serviceName: "サービス名",
serviceType: "サービスタイプ",
serviceStatus: "サービスステータス",
responseTime: "応答時間",
uptime: "稼働時間",
lastChecked: "最終チェック",
noServices: "フィルタ条件に一致するサービスがありません。",
};
@@ -0,0 +1,51 @@
import { SettingsTranslations } from '../types/settings';
export const settingsTranslations: SettingsTranslations = {
// タブ
systemSettings: "システム設定",
mailSettings: "メール設定",
// システム設定
appName: "アプリケーション名",
appURL: "アプリケーションURL",
senderName: "送信者名",
senderEmail: "送信者メールアドレス",
hideControls: "コントロールを非表示",
// メール設定
smtpSettings: "SMTP設定",
smtpEnabled: "SMTPを有効にする",
smtpHost: "SMTPホスト",
smtpPort: "SMTPポート",
smtpUsername: "SMTPユーザー名",
smtpPassword: "SMTPパスワード",
smtpAuthMethod: "認証方式",
enableTLS: "TLSを有効にする",
localName: "ローカル名",
// テストメール
testEmail: "テストメール",
sendTestEmail: "テストメールを送信",
emailTemplate: "メールテンプレート",
verification: "認証",
passwordReset: "パスワードリセット",
confirmEmailChange: "メールアドレス変更確認",
otp: "OTP",
loginAlert: "ログインアラート",
authCollection: "認証コレクション",
selectCollection: "コレクションを選択",
toEmailAddress: "宛先メールアドレス",
enterEmailAddress: "メールアドレスを入力",
sending: "送信中...",
// アクションとステータス
save: "変更を保存",
saving: "保存中...",
settingsUpdated: "設定が正常に更新されました",
errorSavingSettings: "設定の保存中にエラーが発生しました",
errorFetchingSettings: "設定の読み込み中にエラーが発生しました",
testConnection: "接続テスト",
testingConnection: "接続テスト中...",
connectionSuccess: "接続成功",
connectionFailed: "接続失敗"
};
+106
View File
@@ -0,0 +1,106 @@
import { SSLTranslations } from '../types/ssl';
export const sslTranslations: SSLTranslations = {
// ページとセクションタイトル
sslDomainManagement: "SSL・ドメイン管理",
monitorSSLCertificates: "ドメインのSSL証明書を監視・管理",
addSSLCertificate: "SSL証明書を追加",
editSSLCertificate: "SSL証明書を編集",
deleteSSLCertificate: "SSL証明書を削除",
sslCertificateDetails: "SSL証明書詳細",
detailedInfo: "詳細情報:",
// ステータス関連
valid: "有効",
expiringSoon: "期限切れ間近",
expired: "期限切れ",
pending: "保留中",
// 統計とカード
validCertificates: "有効な証明書",
expiringSoonCertificates: "期限切れ間近",
expiredCertificates: "期限切れ証明書",
// フォームフィールド
domain: "ドメイン",
domainName: "ドメイン名",
domainCannotChange: "ドメインは作成後変更できません",
warningThreshold: "警告閾値",
warningThresholdDays: "警告閾値(日)",
expiryThreshold: "期限切れ閾値",
expiryThresholdDays: "期限切れ閾値(日)",
notificationChannel: "通知チャンネル",
chooseChannel: "通知チャンネルを選択",
whereToSend: "通知の送信先",
daysBeforeExpiration: "期限切れ前の警告を受信する日数",
daysBeforeCritical: "期限切れ前の重要アラートを受信する日数",
getNotifiedExpiration: "証明書の期限切れが近い時に通知を受信",
getNotifiedCritical: "証明書の期限切れが非常に近い時に通知を受信",
// テーブルヘッダーとフィールド
issuer: "発行者",
expirationDate: "有効期限",
daysLeft: "残り日数",
status: "ステータス",
lastNotified: "最終通知",
actions: "アクション",
validFrom: "有効開始日",
validUntil: "有効終了日",
validityDays: "有効期間",
organization: "組織",
commonName: "コモンネーム",
serialNumber: "シリアル番号",
algorithm: "アルゴリズム",
subjectAltNames: "サブジェクト代替名",
// ボタンとアクション
addDomain: "ドメインを追加",
refreshAll: "全て更新",
cancel: "キャンセル",
addCertificate: "証明書を追加",
check: "チェック",
view: "表示",
edit: "編集",
delete: "削除",
close: "閉じる",
saveChanges: "変更を保存",
updating: "更新中",
// 詳細ビューのセクション
basicInformation: "基本情報",
validity: "有効性",
issuerInfo: "発行者情報",
technicalDetails: "技術的詳細",
monitoringConfig: "監視設定",
recordInfo: "レコード情報",
// 通知とメッセージ
sslCertificateAdded: "SSL証明書が正常に追加されました",
sslCertificateUpdated: "SSL証明書が正常に更新されました",
sslCertificateDeleted: "SSL証明書が正常に削除されました",
sslCertificateRefreshed: "{domain}のSSL証明書が正常に更新されました",
allCertificatesRefreshed: "全{count}件の証明書が正常に更新されました",
someCertificatesFailed: "{success}件の証明書が更新され、{failed}件が失敗しました",
failedToAddCertificate: "SSL証明書の追加に失敗しました",
failedToLoadCertificates: "SSL証明書の読み込みに失敗しました",
failedToUpdateCertificate: "SSL証明書の更新に失敗しました",
failedToDeleteCertificate: "SSL証明書の削除に失敗しました",
failedToCheckCertificate: "SSL証明書のチェックに失敗しました",
noCertificatesToRefresh: "更新する証明書がありません",
startingRefreshAll: "{count}件の証明書の更新を開始しています",
checkingSSLCertificate: "SSL証明書をチェック中...",
deleteConfirmation: "以下の証明書を削除してもよろしいですか?",
deleteWarning: "この操作は元に戻せません。証明書が完全に削除されます。",
// その他
unknown: "不明",
never: "なし",
none: "なし",
loadingChannels: "チャンネル読み込み中...",
noChannelsFound: "通知チャンネルが見つかりません",
noSSLCertificates: "SSL証明書が見つかりません",
created: "作成日",
lastUpdated: "最終更新",
lastNotification: "最終通知",
collectionId: "コレクションID"
};