- app.json: version 0.2.0 / versionCode 2, drop expo-screen-capture plugin - add lib/i18n (ko/en/ja/zh), lib/roleTrack, LanguageContext + LanguageSelector - profile/security hardening across screens (login/register/forgot/profile/tabs) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
205 lines
9.3 KiB
TypeScript
205 lines
9.3 KiB
TypeScript
/* 日本語 (ja). Mirrors ko key shape (enforced by Translations type). */
|
||
import type { Translations } from '../types';
|
||
|
||
export const ja: Translations = {
|
||
common: {
|
||
appName: 'KINTEX AI 展示管理',
|
||
loading: '確認中…',
|
||
retry: '再試行',
|
||
cancel: 'キャンセル',
|
||
close: '閉じる',
|
||
user: 'ユーザー',
|
||
none: '-',
|
||
unknown: '不明',
|
||
error: 'エラー',
|
||
},
|
||
lang: {
|
||
title: '言語',
|
||
subtitle: 'アプリの表示言語を選択します。選択はこの端末に保存されます。',
|
||
ko: '한국어',
|
||
en: 'English',
|
||
zh: '中文',
|
||
ja: '日本語',
|
||
},
|
||
roles: {
|
||
ORGANIZER: '主催者',
|
||
EXHIBITOR: '出展社',
|
||
CONTRACTOR: '施工業者',
|
||
HALL_MANAGER: 'ホールマネージャー',
|
||
},
|
||
nav: {
|
||
register: '会員登録',
|
||
forgotPassword: 'パスワード再設定',
|
||
profile: 'マイ情報',
|
||
checklist: '現場チェックリスト',
|
||
inspection: '現場検査',
|
||
ticketsIndex: 'マイチケット',
|
||
ticketsSelect: 'チケット予約',
|
||
tabHome: 'ホーム',
|
||
tabField: '現場',
|
||
tabGallery: 'ギャラリー',
|
||
tabMore: 'その他',
|
||
},
|
||
login: {
|
||
brandTitle: '申請したその瞬間、\n施工後の写真を先に見る',
|
||
brandCaption: 'AI 生成の予想画像 · 実際の施工結果と異なる場合があります',
|
||
compromised:
|
||
'この端末にセキュリティリスク(root化・フック・デバッガ)が検出されました。個人情報とチケット保護のため、正常な端末での利用を推奨します。',
|
||
title: 'ログイン',
|
||
email: 'メール',
|
||
emailPlaceholder: 'name@company.com',
|
||
password: 'パスワード',
|
||
passwordPlaceholder: 'パスワード',
|
||
otpLabel: '二段階認証コード',
|
||
otpPlaceholder: '6桁コード',
|
||
otpHelper: '認証アプリ(TOTP)の6桁コード',
|
||
remember: 'メールを記憶',
|
||
submit: 'ログイン',
|
||
submitOtp: '認証してログイン',
|
||
forgot: 'パスワード再設定',
|
||
register: '会員登録',
|
||
errEmpty: 'メールとパスワードを入力してください。',
|
||
errOtpEmpty: '二段階認証コードを入力してください。',
|
||
errOtpRequired: '二段階認証コードが必要です。認証アプリのコードを入力してください。',
|
||
errOtpInvalid: '認証コードが正しくないか、期限切れです。',
|
||
errLocked: 'ログイン試行超過によりアカウントがロックされました。しばらくして再試行してください。',
|
||
errGeneric: 'ログインに失敗しました。',
|
||
},
|
||
register: {
|
||
title: 'アカウント作成',
|
||
email: 'メール',
|
||
emailPlaceholder: 'name@company.com',
|
||
name: '氏名',
|
||
namePlaceholder: '山田太郎',
|
||
password: 'パスワード',
|
||
passwordPlaceholder: '8文字以上',
|
||
passwordHelper: '8〜100文字',
|
||
company: '会社名(任意)',
|
||
companyPlaceholder: 'Zioinfo',
|
||
invite: '招待コード(任意)',
|
||
invitePlaceholder: 'イベント招待コード',
|
||
submit: '登録する',
|
||
goLogin: 'ログインへ',
|
||
errInvalid: 'メール・氏名・パスワード(8文字以上)を確認してください。',
|
||
errEmailTaken: 'すでに登録済みのメールです。',
|
||
errGeneric: '会員登録に失敗しました。',
|
||
doneJoined: '登録が完了し、招待イベントに連携されました。ログインしてください。',
|
||
done: '登録が完了しました。ログインしてください。',
|
||
},
|
||
forgot: {
|
||
title: 'パスワード再設定',
|
||
email: 'メール',
|
||
emailPlaceholder: 'name@company.com',
|
||
request: '再設定コードを要求',
|
||
code: '再設定コード',
|
||
codePlaceholder: '6桁コード',
|
||
newPassword: '新しいパスワード',
|
||
newPasswordPlaceholder: '8文字以上',
|
||
newPasswordHelper: '8〜100文字',
|
||
submit: 'パスワード変更',
|
||
errEmail: 'メールを入力してください。',
|
||
errFields: '再設定コードと新しいパスワード(8文字以上)を確認してください。',
|
||
errCode: '再設定コードが正しくないか、期限切れです。',
|
||
errRequest: 'リクエストに失敗しました。',
|
||
errReset: '初期化に失敗しました。',
|
||
},
|
||
home: {
|
||
hello: '{{name}}さん、こんにちは',
|
||
noEvent: '参加中のイベントがありません — 招待リンクまたは招待コードをご確認ください。',
|
||
progress: '進行状況',
|
||
stepApply: '申請',
|
||
stepApprove: '承認',
|
||
stepBuild: '施工',
|
||
stepInspect: '検査',
|
||
actionChecklist: '現場チェックリスト',
|
||
actionInspection: '現場検査',
|
||
actionGallery: 'ビジュアルギャラリー',
|
||
memberInternal: 'KINTEX 内部アカウント(ホールマネージャー)',
|
||
memberGeneral: '一般アカウント',
|
||
},
|
||
field: {
|
||
title: '現場業務',
|
||
guide: '現場機能は施工業者(チェックリスト)とホールマネージャー(検査)の役割で提供されます。',
|
||
checklistTitle: '現場チェックリスト',
|
||
checklistDesc: '施工工程の確認 · 写真添付 · 検査依頼',
|
||
inspectionTitle: '現場検査',
|
||
inspectionDesc: '承認図面 vs 現場写真 · 適合/不適合の判定',
|
||
},
|
||
gallery: {
|
||
infoBar: 'AI 生成画像は契約・審査書類に使用できません — 施工基準は図面です',
|
||
degraded: 'サーバーの画像履歴に接続できないため、サンプルを表示します(degraded)。',
|
||
empty: 'まだ生成された画像がありません — 設計スタジオで予想写真を生成してください。',
|
||
retry: '再生成',
|
||
studioNote: '設計スタジオはデスクトップで編集',
|
||
notice: 'AI 生成画像は契約・審査書類に使用できません(施工基準は図面)',
|
||
},
|
||
more: {
|
||
accountInternal: 'KINTEX 内部アカウント(ホールマネージャー)',
|
||
accountGeneral: '一般アカウント',
|
||
openProfile: 'マイ情報を開く',
|
||
apiServer: 'API サーバー',
|
||
serverStatus: 'サーバー状態',
|
||
statusUp: '正常 (UP)',
|
||
statusDown: '接続不可 (degraded)',
|
||
signOut: 'ログアウト',
|
||
version: 'KINTEX AI 展示管理 · v0.1.0',
|
||
},
|
||
profile: {
|
||
sectionInfo: 'マイ情報',
|
||
sectionEventRoles: '参加イベントの役割',
|
||
sectionSecurity: 'アカウント · セキュリティ',
|
||
sectionBiometric: '生体認証ロック',
|
||
sectionNotify: '通知設定',
|
||
labelName: '氏名',
|
||
labelUserId: 'ユーザー ID',
|
||
labelGlobalRole: 'グローバル役割',
|
||
labelTenant: '展示館(テナント)',
|
||
labelType: '区分',
|
||
typeInternal: 'KINTEX 内部(ホールマネージャー)',
|
||
typeGeneral: '一般アカウント',
|
||
photoChange: 'プロフィール写真を変更',
|
||
photoTitle: 'プロフィール写真',
|
||
photoSelect: '写真を選択してください',
|
||
photoLibrary: 'ギャラリー',
|
||
photoCamera: 'カメラ',
|
||
photoApply: '適用',
|
||
photoApplying: '適用中…',
|
||
photoCaption: '円形で表示されます。',
|
||
photoPending: '選択した写真はこの端末のみに表示されます — サーバー反映は準備中です。',
|
||
photoPickerUnavailable: 'この端末では画像選択機能を利用できません。',
|
||
loadErr: 'マイ情報を読み込めませんでした。',
|
||
uploadErr: '写真のアップロードに失敗しました。',
|
||
otpTitle: '二段階認証(OTP)',
|
||
otpOnAuth: '有効 · Authenticator(OTP)',
|
||
otpOnMethod: '有効 · {{method}}',
|
||
otpOff: '未設定 — ログイン時に認証アプリ(TOTP)の二段階認証を使用します。',
|
||
on: 'オン',
|
||
off: 'オフ',
|
||
bioTitle: '指紋 · Face ロック',
|
||
bioDesc:
|
||
'オンにするとマイ情報を開く際に指紋または Face で再認証します。ログインの二段階認証はそのまま維持されます。',
|
||
bioUnsupported:
|
||
'この端末は生体認証に対応していないか、指紋/Face が登録されていません。端末設定で生体情報を登録してから再試行してください。',
|
||
bioFailed: '生体認証に失敗しました。再試行してください。',
|
||
biometric: '生体認証',
|
||
lockTitle: '生体認証ロック',
|
||
lockHint: '指紋または Face でロックを解除してください。',
|
||
notifyDeadline: '締切 D-day 通知',
|
||
notifyApproval: '承認・検査通知',
|
||
notifyPayment: '決済・精算通知',
|
||
notifyNote: '通知設定はこの端末に保存されます。サーバー同期は準備中です。',
|
||
signOut: 'ログアウト',
|
||
signOutConfirm: 'ログアウトしますか?',
|
||
version: 'KINTEX AI 展示管理 · マイ情報',
|
||
},
|
||
tickets: {
|
||
offline: 'オフライン — 保存済みチケットを表示中',
|
||
badgeNotice: 'チケット QR で現場チェックインするとモバイルバッジに切り替わります',
|
||
footNote: '表示中のチケットはサンプルです — チケットバックエンド(M10)連携時に実データへ置き換わります。',
|
||
emptyTitle: '保有チケットがありません',
|
||
emptyBody: '入場券を予約するとここにチケットが表示されます。',
|
||
emptyBtn: '入場券を予約',
|
||
detailTitle: '予約詳細 · キャンセル',
|
||
},
|
||
};
|