forked from bestian/sensemaker-frontend
-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathja.ts
More file actions
201 lines (197 loc) · 13.9 KB
/
Copy pathja.ts
File metadata and controls
201 lines (197 loc) · 13.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
export default {
// 共通
common: {
home: 'ホーム',
about: '概要',
privacy: 'プライバシー',
selfHost: 'セルフホスト',
backToHome: 'ホームに戻る',
loading: '読み込み中...',
error: 'エラー',
success: '成功',
warning: '警告',
info: '情報',
download: 'ダウンロード',
upload: 'アップロード',
submit: '送信',
cancel: 'キャンセル',
save: '保存',
edit: '編集',
delete: '削除',
close: '閉じる',
confirm: '確認',
yes: 'はい',
no: 'いいえ',
required: '必須',
optional: '任意'
},
// ホームページ
home: {
title: '🚀 Sensemaker',
apiKeyLabel: '🔑 OpenRouter API Key',
apiKeyPlaceholder: 'OpenRouter API Keyを入力してください',
apiKeyRequired: 'このフィールドは必須で、AIモデルサービスに接続するために使用されます',
privacyNote: '🔒 プライバシー保護:プライバシーポリシーに従い、このサイトはあなたのAPI KEYをどこにも保存しません。懸念がある場合は、バックエンドとフロントエンドサービスをセルフホストすることをお勧めします。',
modelLabel: '🤖 モデル名:',
modelPlaceholder: 'openai/gpt-oss-120b',
additionalContextLabel: '📝 追加コンテキスト (任意):',
additionalContextPlaceholder: '会話の背景と環境を説明してください',
outputLangLabel: '🌐 出力言語:',
fileLabel: '📁 ファイルをアップロード (polis.twからエクスポートされたJSONまたはpol.isからエクスポートされたCSV)',
startAnalysis: '🚀 分析を開始',
riskWarning: '⚠️ 警告:意見統合ツールは現在まだ開発・テスト段階にあるため、LLMの応答には固有の不安定性があり、単一レポートが生成に失敗する確率は約1/6です。リトライ機能の設定により成功率を向上させることができます。',
processing: '⏳ 処理中...',
selectFileFirst: 'アップロードするファイルを選択してください',
sendingRequest: '📡 APIにリクエストを送信中...',
taskStarted: '✅ タスクが開始されました!',
taskId: 'タスクID',
status: 'ステータス',
estimatedTime: '推定時間',
requestFailed: '❌ リクエストが失敗しました',
requestError: '❌ リクエストエラー',
taskStatus: '📊 タスクステータス',
commentsCount: 'コメント数',
model: '使用モデル',
pollingResults: '結果をポーリング中...',
taskInQueue: 'タスクがキューに追加されました。3分後に結果の確認を開始します...',
taskProcessing: 'タスクはまだ処理中...',
taskCompleted: '✅ 分析が完了しました!',
commentsProcessed: '{count}件のコメントを処理しました',
completedAt: '完了時刻',
summary: '要約',
downloadMarkdown: '⬇️ Markdownをダウンロード',
noMarkdownContent: '❌ ダウンロード可能なMarkdownコンテンツがありません',
downloadFailed: '❌ ダウンロードに失敗しました',
testLLM: '🔄 LLM接続をテスト中...',
testLLMSuccess: '✅ LLMテストが成功しました!',
testLLMFailed: '❌ LLMテストが失敗しました',
testLLMError: '❌ LLMテストリクエストエラー',
testCSV: '❌ まずCSVファイルを選択してください',
testCSVSuccess: '✅ CSV解析が成功しました!',
testCSVFailed: '❌ CSV解析が失敗しました',
testR2: '🔄 R2読み書きをテスト中...',
testR2Success: '✅ R2テストが成功しました!',
testR2Failed: '❌ R2テストが失敗しました',
testR2Error: '❌ R2テストリクエストエラー',
taskFailed: '❌ タスク処理が失敗しました',
failedAt: '失敗時刻',
errorDetails: 'エラー詳細',
errorMessage: 'エラーメッセージ',
detailedError: '詳細エラー',
unknownError: '不明なエラー',
noDetailedError: '詳細なエラー情報がありません',
modelNote: 'gpt-oss-120bモデルの使用を推奨します。他の推論モデルを使用したい場合は、このページを参照して、各種モデルの性能と価格設定基準を比較してください',
modelLinkText: '📋 OpenRouterモデルを表示',
costNote: '💰 費用見積もり:gpt-oss-120bを使用した分析では、データ量に応じて約$0.05-0.20 USDの費用がかかります。',
timeNote: '⏱️ 時間見積もり:gpt-oss-120bを使用した分析では、データ量に応じて約3-30分かかります。',
// リトライ機能関連
retryModeLabel: '🔄 リトライモード',
retryModeStrict: '一度だけ実行 (厳格モード)',
retryModeNormal: '自動リトライ3回 (通常モード)',
retryModeCustom: 'カスタムリトライ回数',
customRetryCountLabel: 'リトライ回数',
customRetryCountNote: '1-10の間のリトライ回数を入力してください',
retryingRequest: '🔄 リクエストをリトライ中',
retrySuccess: '✅ リトライ成功',
retryFailed: '❌ リトライ失敗',
retryError: '❌ リトライエラー',
allRetriesFailed: '❌ すべてのリトライが失敗しました',
// 出力言語オプション
outputLangOptions: {
en: 'English',
'zh-TW': '繁體中文',
'zh-CN': '简体中文',
ja: '日本語',
fr: 'Français',
es: 'Español'
}
},
// についてページ
about: {
title: '🚀 Sensemaker意見統合ツールについて',
whatIsTitle: '📖 Sensemaker意見統合ツールとは?',
whatIsDescription: 'Sensemaker意見統合ツールは、大量の意見データを分析し、意味のある洞察を生成するために特別に設計された強力なAI駆動ツールです。主要な共通点と意見の相違点を識別し、大量のデータから価値のある情報を抽出するのに役立ちます。',
whatIsDescription2: 'このツールは特に審議民主主義のシナリオに適しており、Polisなどの非同期意見収集ツールを使用する際に、大量の類似または繰り返しの意見を処理し、構造化された分析レポートを自動生成するのに役立ちます。これはその機能の一部のフロントエンド実装です。',
resourcesTitle: '🔗 関連リソース',
officialDocs: '公式ドキュメント:',
openSourceLib: 'オープンソースライブラリ:',
experimentalLib: '実験版ライブラリ(このサイトと互換性あり):',
experimentalBranch: 'new-feature-open-routerブランチを使用してください',
supportedDataTitle: '📊 サポートされているデータソース',
supportedDataDescription: 'このツールは以下のプラットフォームからエクスポートされたレポートデータをサポートしています:',
polisTWTitle: '🇹🇼 Polis.tw',
polisTWDescription: 'Polis.twのレポートページからデータを取得し、開発者モードを通じてAPIレスポンスからJSONデータを抽出する必要があります。このチュートリアルの関連説明を参照してください。',
polisTitle: '🌐 Pol.is',
polisDescription: 'Pol.isレポートページからコメント関連のCSVファイルをエクスポートし、直接アップロードできます。',
dataFormatTitle: '📋 データ形式要件',
polisTWFormatTitle: '🇹🇼 Polis.twデータ形式',
polisTWFormatDescription: '注意:polis.twのデータ形式はPol.isとは異なります。現在、polis.twからエクスポートされたJSON形式は直接使用できます。',
polisFormatTitle: '🌐 Pol.isデータ形式',
polisFormatDescription: 'pol.isのデータ形式も直接アップロードできます。',
useCasesTitle: '🎯 使用例',
useCasesDescription: 'Sensemakerは以下のシナリオに特に適しています:',
deliberativeDemocracy: '審議民主主義:大量の市民意見を処理し、コンセンサスと相違点を識別',
policyMaking: '政策立案:特定の政策に対する世論の分布を分析',
productDevelopment: '製品開発:ユーザーフィードバックを整理し、主要なニーズと改善点を識別',
academicResearch: '学術研究:アンケート調査やインタビューデータを分析',
communityManagement: 'コミュニティ管理:コミュニティメンバーの意見とニーズを理解',
usageTipsTitle: '💡 使用のヒント',
ensureDataQuality: 'データ品質を確保し、重複または無効な意見を削除',
provideContext: '明確なコンテキスト説明を提供し、AIがデータの背景をよりよく理解できるようにする',
chooseFormat: '分析目的に応じて適切な出力形式を選択(Markdown形式を推奨)',
regularCheck: 'データを定期的にチェックして更新し、分析結果のタイムリー性を確保',
getStartedTitle: '🚀 始めましょう',
readyToStart: 'データの準備はできていますか?ホームページに移動して意見データのアップロードと分析を開始しましょう!'
},
// プライバシーページ
privacy: {
title: 'プライバシーポリシー / Privacy Policy',
privacyPolicy: 'プライバシーポリシー',
privacyDescription: 'このアプリケーションは個人データを一切収集しません。生成されたレポートは一時的にR2ストレージサービスに保存され、あなたがダウンロードできるようになっており、他のユーザーがアクセスすることはできません。',
dataProcessingTitle: 'データ処理について / About Data Processing',
backendProcessing: 'バックエンド処理:データはバックエンドに送信されて計算されますが、ユーザーデータはサーバーに保存されません。特にAPIキーは決して保存されません。',
noCookies: 'Cookieなし:Cookieは使用しません。',
openSource: 'オープンソースによる透明性:私たちのコードは完全にオープンソースで、プライバシーを確保するためにすべての機能を確認できます。',
frontendProject: 'フロントエンドプロジェクト (Frontend)',
backendProject: 'バックエンドプロジェクト (Backend)',
openSourceNote: 'オープンソースによる透明性:私たちのコードは完全にオープンソースで、プライバシーを確保するためにすべての機能を確認できます。GitHubでフロントエンドとバックエンドのリポジトリを確認してください。'
},
// セルフホストページ
selfHost: {
title: '🏗️ セルフホストガイド / Self-Hosting Guide',
overviewTitle: '📋 概要',
overviewDescription: 'プライバシーとデータセキュリティに懸念がある場合は、私たちのプロジェクトをフォークしてサービスをセルフホストすることを歓迎します。これにより、データとAPIキーを完全に制御できます。',
paidPlanTitle: '有料プラン要件',
paidPlanDescription: 'バックエンドサービスはCloudflare Queuesを使用し、Worker有料プランが必要です。無料プランはこの機能をサポートしていません。',
backendTitle: '🔧 バックエンドセットアップ (Cloudflare Worker)',
step1Backend: 'ステップ1: バックエンドプロジェクトをフォーク',
step1BackendDesc: 'sensemaker-backendプロジェクトに移動し、GitHubアカウントにフォーク',
step2Backend: 'ステップ2: Cloudflare Workerを設定',
step2BackendDesc: 'Cloudflare Dashboardで新しいWorkerを作成し、バックエンドコードをデプロイ',
importantNote: '⚠️ 重要な注意:バックエンドはCloudflare Queuesを使用し、Worker有料プランが必要です。無料プランはQueuesをサポートしていません。',
frontendTitle: '🎨 フロントエンドセットアップ (Vue.js)',
step1Frontend: 'ステップ1: フロントエンドプロジェクトをフォーク',
step1FrontendDesc: 'sensemaker-frontendプロジェクトに移動し、GitHubアカウントにフォーク',
step2Frontend: 'ステップ2: APIエンドポイントを変更',
step2FrontendDesc: 'src/views/HomeView.vueで、API URLをWorker URLに変更:',
originalURL: '元のURL',
yourURL: 'あなたのURL',
step3Frontend: 'ステップ3: フロントエンドをデプロイ',
step3FrontendDesc: '複数のデプロイ方法から選択でき、Cloudflare Pagesの使用を推奨:',
cloudflarePages: 'Cloudflare Pages: 無料、Workerと統合良好',
advantagesTitle: '✅ セルフホストの利点',
fullControl: '完全制御',
fullControlDesc: 'データは完全にあなたの制御下にあり、サードパーティサーバーを経由しません',
apiKeyProtection: 'APIキー完全保護',
apiKeyProtectionDesc: 'APIキーは環境内に完全に保持され、サードパーティサーバーを経由しません',
customizable: 'カスタマイズ可能',
customizableDesc: 'ニーズに応じて機能とインターフェースを変更できます',
learning: '学習機会',
learningDesc: '現代のWeb開発技術についてより深く学ぶ',
needHelpTitle: '🆘 ヘルプが必要ですか?',
needHelpDesc: 'セットアップ中に問題が発生した場合は、以下を歓迎します:',
openIssue: 'GitHubプロジェクトでIssueを開く',
checkReadme: 'プロジェクトのREADMEとWikiを確認',
joinCommunity: 'コミュニティディスカッションに参加'
}
}