diff --git a/messages/es.json b/messages/es.json
index 96b9fd0..2256a16 100644
--- a/messages/es.json
+++ b/messages/es.json
@@ -31,7 +31,11 @@
"status": {
"text": "Estado: {status}",
"ready": "listo",
- "not_ready": "no listo"
+ "not_ready": "no listo",
+ "not_initialized": "no inicializado",
+ "downloading": "descargando...",
+ "initializing": "inicializando...",
+ "unknown": "estado desconocido"
},
"supported_formats": "Formatos soportados:"
},
@@ -43,6 +47,12 @@
}
},
"convert": {
+ "external_warning": {
+ "title": "Advertencia del servidor externo",
+ "text": "Si eliges convertir a un formato de video, esos archivos se cargarán en un servidor externo para convertirlos. ¿Quieres continuar?",
+ "yes": "Sí",
+ "no": "No"
+ },
"panel": {
"convert_all": "Convertir todo",
"download_all": "Comprimir todo",
@@ -70,7 +80,13 @@
"cant_convert": "No podemos convertir este archivo.",
"vertd_server": "¿Qué estás haciendo..? ¡Debes ejecutar el servidor de vertd!",
"unsupported_format": "Solo aceptamos imágenes, vídeos, audios y documentos.",
- "vertd_not_found": "No se encontró la instancia de vertd para iniciar la conversión de vídeos. ¿Estás seguro de que la URL es correcta?"
+ "vertd_not_found": "No se encontró la instancia de vertd para iniciar la conversión de vídeos. ¿Estás seguro de que la URL es correcta?",
+ "worker_downloading": "El convertidor {type} se está inicializando actualmente, espere unos momentos.",
+ "worker_error": "El convertidor {type} tuvo un error durante la inicialización, inténtelo nuevamente más tarde.",
+ "worker_timeout": "El convertidor {type} está tardando más de lo esperado en inicializarse. Espere unos momentos más o actualice la página.",
+ "audio": "audio",
+ "doc": "documento",
+ "image": "imagen"
}
},
"settings": {
@@ -91,9 +107,20 @@
},
"conversion": {
"title": "Conversión",
+ "advanced_settings": "Configuraciones avanzadas",
"filename_format": "Formato del nombre de archivo",
"filename_description": "Esto va a determinar el nombre del archivo al ser descargado sin incluir la extensión. Puedes poner las siguientes plantillas en el formato, las cuales serán reemplazadas con la información que les corresponde: %name% para el nombre original, %extension% para la extensión original del archivo y %date% para la fecha de cuando el archivo fue convertido.",
"placeholder": "VERT_%name%",
+ "default_format": "Formato de conversión predeterminado",
+ "default_format_description": "Esto cambiará el formato predeterminado seleccionado cuando subes un archivo de este tipo.",
+ "default_format_image": "Imágenes",
+ "default_format_video": "Vídeos",
+ "default_format_audio": "Audio",
+ "default_format_document": "Documentos",
+ "metadata": "Metadatos del archivo",
+ "metadata_description": "Esto cambia si los metadatos (EXIF, información de la canción, etc.) del archivo original se conservan en los archivos convertidos.",
+ "keep": "Mantener",
+ "remove": "Eliminar",
"quality": "Calidad de la conversión",
"quality_description": "Esto cambia la calidad por defecto de los archivos convertidos (en su categoría). Valores más altos pueden resultar en tiempos de conversión y tamaños de archivo más largos.",
"quality_video": "Esto cambia la calidad por defecto de los vídeos convertidos. Valores más altos pueden resultar en tiempos de conversión y tamaños de archivo más largos.",
@@ -120,14 +147,27 @@
"medium": "Medio",
"fast": "Rápido",
"ultra_fast": "Súper rápido"
- }
+ },
+ "auto_instance": "Automático (recomendado)",
+ "eu_instance": "Falkenstein, Alemania",
+ "us_instance": "Washington, EE. UU.",
+ "custom_instance": "Personalizado"
},
"privacy": {
"title": "Privacidad",
"plausible_title": "Analíticas de Plausible",
"plausible_description": "Usamos [plausible_link]Plausible[/plausible_link], una herramienta de analíticas orientada a la privacidad para recopilar estadísticas completamente anónimas. Toda la información que recopilamos es anonimizada y agregada, y en ningún momento se envía ni se almacena información que permita identificarte. Puedes ver las estadísticas [analytics_link]aquí[/analytics_link] y excluirte de ellas a continuación:",
"opt_in": "Participar",
- "opt_out": "No participar"
+ "opt_out": "No participar",
+ "cache_title": "Administración de caché",
+ "cache_description": "Guardamos en caché los archivos del convertidor en su navegador para que no tenga que volver a descargarlos cada vez, mejorando el rendimiento y reduciendo el uso de datos.",
+ "refresh_cache": "Actualizar caché",
+ "clear_cache": "Borrar caché",
+ "files_cached": "{size} ({count} archivos)",
+ "loading_cache": "Cargando...",
+ "total_size": "Tamaño total",
+ "files_cached_label": "Archivos en caché",
+ "cache_cleared": "¡Caché borrada exitosamente!"
},
"language": {
"title": "Lenguaje",
@@ -189,6 +229,7 @@
"workers": {
"errors": {
"general": "Ocurrió un error mientras se convertía {file}: {message}",
+ "cancel": "Error al cancelar la conversión para {file}: {message}",
"magick": "Ocurrió un error en el módulo de Magick, la conversión de imágenes puede que no funcione correctamente.",
"ffmpeg": "No se pudo cargar FFmpeg, algunas funciones podrían no funcionar.",
"no_audio": "No se encontró una pista de audio.",
diff --git a/messages/ja.json b/messages/ja.json
new file mode 100644
index 0000000..0401937
--- /dev/null
+++ b/messages/ja.json
@@ -0,0 +1,246 @@
+{
+ "$schema": "https://inlang.com/schema/inlang-message-format",
+ "navbar": {
+ "upload": "アップロード",
+ "convert": "変換",
+ "settings": "設定",
+ "about": "について",
+ "toggle_theme": "テーマを切り替える"
+ },
+ "footer": {
+ "copyright": "© {year} VERT.",
+ "source_code": "ソースコード",
+ "discord_server": "Discordサーバー"
+ },
+ "upload": {
+ "title": "きっと気に入るファイル変換ツール。",
+ "subtitle": "すべての画像・音声・ドキュメント処理はデバイス上で行われます。動画は超高速サーバーで変換されます。ファイルサイズ制限なし、広告なし、完全オープンソース。",
+ "uploader": {
+ "text": "ドロップまたはクリックして{action}",
+ "convert": "変換",
+ "jpegify": "JPEG化"
+ },
+ "cards": {
+ "title": "VERTがサポートしている形式",
+ "images": "画像",
+ "audio": "音声",
+ "documents": "ドキュメント",
+ "video": "動画",
+ "video_server_processing": "サーバー対応",
+ "local_supported": "ローカル対応",
+ "status": {
+ "text": "ステータス: {status}",
+ "ready": "準備完了",
+ "not_ready": "未準備",
+ "not_initialized": "未初期化",
+ "downloading": "ダウンロード中...",
+ "initializing": "初期化中...",
+ "unknown": "不明なステータス"
+ },
+ "supported_formats": "対応フォーマット:"
+ },
+ "tooltip": {
+ "partial_support": "このフォーマットは{direction}としてのみ変換可能です。",
+ "direction_input": "入力(変換元)",
+ "direction_output": "出力(変換先)",
+ "video_server_processing": "動画はデフォルトでサーバーにアップロードされて処理されます。ローカルで設定する方法はこちら。"
+ }
+ },
+ "convert": {
+ "external_warning": {
+ "title": "外部サーバーの警告",
+ "text": "動画フォーマットへの変換を選択すると、ファイルは外部サーバーにアップロードされて変換されます。続行しますか?",
+ "yes": "はい",
+ "no": "いいえ"
+ },
+ "panel": {
+ "convert_all": "すべて変換",
+ "download_all": "すべてを.zipでダウンロード",
+ "remove_all": "すべてのファイルを削除",
+ "set_all_to": "すべてを設定",
+ "na": "該当なし"
+ },
+ "dropdown": {
+ "audio": "音声",
+ "video": "動画",
+ "doc": "ドキュメント",
+ "image": "画像",
+ "placeholder": "フォーマットを検索"
+ },
+ "tooltips": {
+ "unknown_file": "不明なファイルタイプ",
+ "audio_file": "音声ファイル",
+ "video_file": "動画ファイル",
+ "document_file": "ドキュメントファイル",
+ "image_file": "画像ファイル",
+ "convert_file": "このファイルを変換",
+ "download_file": "このファイルをダウンロード"
+ },
+ "errors": {
+ "cant_convert": "このファイルを変換できません。",
+ "vertd_server": "何してるの..? vertdサーバーを起動する必要があります!",
+ "unsupported_format": "画像、動画、音声、ドキュメントのみ対応しています",
+ "vertd_not_found": "動画変換を開始するためのvertdインスタンスが見つかりません。URLが正しいか確認してください。",
+ "worker_downloading": "{type}コンバーターを初期化中です。少々お待ちください。",
+ "worker_error": "{type}コンバーターの初期化中にエラーが発生しました。後でもう一度お試しください。",
+ "worker_timeout": "{type}コンバーターの初期化に予想以上の時間がかかっています。もう少しお待ちいただくか、ページを更新してください。",
+ "audio": "音声",
+ "doc": "ドキュメント",
+ "image": "画像"
+ }
+ },
+ "settings": {
+ "title": "設定",
+ "errors": {
+ "save_failed": "設定の保存に失敗しました!"
+ },
+ "appearance": {
+ "title": "外観",
+ "brightness_theme": "明るさテーマ",
+ "brightness_description": "まぶしい昼間か、静かな夜か?",
+ "light": "ライト",
+ "dark": "ダーク",
+ "effect_settings": "エフェクト設定",
+ "effect_description": "派手な効果にしますか?それとも静的な体験にしますか?",
+ "enable": "有効",
+ "disable": "無効"
+ },
+ "conversion": {
+ "title": "変換",
+ "advanced_settings": "詳細設定",
+ "filename_format": "ファイル名フォーマット",
+ "filename_description": "これはダウンロード時のファイル名を決定します(拡張子を除く)。以下のテンプレートを使用できます:%name%(元のファイル名)、%extension%(元の拡張子)、%date%(変換日時)。",
+ "placeholder": "VERT_%name%",
+ "default_format": "デフォルト変換フォーマット",
+ "default_format_description": "このファイルタイプをアップロードしたときに自動で選択される形式を変更します。",
+ "default_format_image": "画像",
+ "default_format_video": "動画",
+ "default_format_audio": "音声",
+ "default_format_document": "ドキュメント",
+ "metadata": "ファイルメタデータ",
+ "metadata_description": "変換後のファイルに元のメタデータ(EXIF、曲情報など)を保持するかどうかを変更します。",
+ "keep": "保持",
+ "remove": "削除",
+ "quality": "変換品質",
+ "quality_description": "出力ファイルの品質を変更します。値が高いほど処理時間とファイルサイズが増加します。",
+ "quality_video": "動画変換の品質を変更します。高品質ほど変換時間とサイズが増加します。",
+ "quality_audio": "音声(kbps)",
+ "quality_images": "画像(%)",
+ "rate": "サンプリングレート(Hz)"
+ },
+ "vertd": {
+ "title": "動画変換",
+ "status": "ステータス:",
+ "loading": "読み込み中...",
+ "available": "利用可能(コミットID {commitId})",
+ "unavailable": "利用不可(URLが正しいですか?)",
+ "description": "vertdプロジェクトはFFmpegのサーバーラッパーです。これにより、GPUの性能を活かして高速に変換しつつ、VERTのウェブインターフェイスから簡単に動画を変換できます。",
+ "hosting_info": "私たちは利便性のために公開インスタンスをホストしていますが、自分のPCやサーバーでも簡単にホストできます。バイナリは[vertd_link]こちら[/vertd_link]からダウンロードできます。今後さらにセットアップが簡単になる予定です!",
+ "instance": "インスタンス",
+ "url_placeholder": "例: http://localhost:24153",
+ "conversion_speed": "変換速度",
+ "speed_description": "速度と品質のバランスを設定します。高速化すると品質が低下しますが、処理は速くなります。",
+ "speeds": {
+ "very_slow": "非常に遅い",
+ "slower": "かなり遅い",
+ "slow": "遅い",
+ "medium": "普通",
+ "fast": "速い",
+ "ultra_fast": "超高速"
+ },
+ "auto_instance": "自動(推奨)",
+ "eu_instance": "ドイツ・ファルケンシュタイン",
+ "us_instance": "アメリカ・ワシントン",
+ "custom_instance": "カスタム"
+ },
+ "privacy": {
+ "title": "プライバシーとデータ",
+ "plausible_title": "Plausible解析",
+ "plausible_description": "私たちはプライバシー重視の解析ツール[plausible_link]Plausible[/plausible_link]を使用しています。すべてのデータは匿名化・集計され、個人情報は一切収集・保存されません。統計情報は[analytics_link]こちら[/analytics_link]で確認でき、以下でオプトアウト可能です。",
+ "opt_in": "参加する",
+ "opt_out": "参加しない",
+ "cache_title": "キャッシュ管理",
+ "cache_description": "コンバーターファイルをブラウザにキャッシュして再ダウンロードを防ぎ、パフォーマンスを向上させます。",
+ "refresh_cache": "キャッシュを更新",
+ "clear_cache": "キャッシュをクリア",
+ "files_cached": "{size}({count}ファイル)",
+ "loading_cache": "読み込み中...",
+ "total_size": "合計サイズ",
+ "files_cached_label": "キャッシュ済みファイル",
+ "cache_cleared": "キャッシュが正常にクリアされました!"
+ },
+ "language": {
+ "title": "言語",
+ "description": "VERTインターフェイスの表示言語を選択してください。"
+ }
+ },
+ "about": {
+ "title": "について",
+ "why": {
+ "title": "なぜVERT?",
+ "description": "従来のファイルコンバーターにはいつもがっかりしてきました。見た目が悪く、広告だらけで、そして何より遅い。私たちはそれらの問題をすべて解決するためにVERTを作りました。
動画以外のファイルは完全にデバイス上で変換されるため、サーバーとのやり取りによる遅延もなく、あなたのファイルを覗き見ることもありません。
動画は超高速RTX 4000 Adaサーバーで処理され、変換しなかった場合は1時間以内に削除されます。変換された動画も1時間またはダウンロード完了後に削除されます。"
+ },
+ "sponsors": {
+ "title": "スポンサー",
+ "description": "私たちを支援したい場合は、[discord_link]Discord[/discord_link]サーバーで開発者に連絡するか、以下のメールアドレスまでご連絡ください。",
+ "email_copied": "メールアドレスをコピーしました!"
+ },
+ "resources": {
+ "title": "リソース",
+ "discord": "Discord",
+ "source": "ソース",
+ "email": "メール"
+ },
+ "donate": {
+ "title": "VERTを支援する",
+ "description": "あなたの支援でVERTの維持と改善を続けられます。",
+ "one_time": "一度きり",
+ "monthly": "毎月",
+ "custom": "カスタム",
+ "pay_now": "今すぐ支払う",
+ "donate_amount": "${amount} USDを寄付",
+ "thank_you": "ご支援ありがとうございます!",
+ "payment_failed": "支払いに失敗しました: {message}{period} 請求は行われていません。",
+ "donation_error": "寄付の処理中にエラーが発生しました。後でもう一度お試しください。",
+ "payment_error": "支払い情報の取得中にエラーが発生しました。後でもう一度お試しください。"
+ },
+ "credits": {
+ "title": "クレジット",
+ "contact_team": "開発チームに連絡したい場合は、「リソース」カードに記載されたメールをご利用ください。",
+ "notable_contributors": "特筆すべき貢献者",
+ "notable_description": "VERTに大きく貢献してくださった方々に感謝します。",
+ "github_contributors": "GitHubの貢献者",
+ "github_description": "多くの方々に[jpegify_link]感謝[/jpegify_link]します![github_link]あなたも参加してみませんか?[/github_link]",
+ "no_contributors": "まだ誰も貢献していないようです… [contribute_link]最初の貢献者になりましょう![/contribute_link]",
+ "libraries": "ライブラリ",
+ "libraries_description": "長年にわたり優れたライブラリを提供してくれているFFmpeg(音声・動画)、ImageMagick(画像)、Pandoc(ドキュメント)に感謝します。VERTはこれらに依存して動作しています。",
+ "roles": {
+ "lead_developer": "リード開発者;変換バックエンド、UI実装",
+ "developer": "開発者;UI実装",
+ "designer": "デザイナー;UX、ブランディング、マーケティング",
+ "docker_ci": "DockerとCIの保守担当",
+ "former_cofounder": "元共同創設者・デザイナー"
+ }
+ },
+ "errors": {
+ "github_contributors": "GitHub貢献者の取得エラー"
+ }
+ },
+ "workers": {
+ "errors": {
+ "general": "{file}の変換エラー:{message}",
+ "cancel": "{file}の変換キャンセルエラー:{message}",
+ "magick": "Magickワーカーでエラーが発生しました。画像変換が正常に動作しない可能性があります。",
+ "ffmpeg": "ffmpegの読み込みエラー。一部の機能が動作しない可能性があります。",
+ "no_audio": "音声ストリームが見つかりません。",
+ "invalid_rate": "無効なサンプリングレートが指定されました: {rate}Hz"
+ }
+ },
+ "jpegify": {
+ "title": "秘密のJPEGIFY!!!",
+ "subtitle": "(しっ…誰にも言わないで!)",
+ "button": "JPEGIFY {compression}%!!!",
+ "download": "ダウンロード",
+ "delete": "削除"
+ }
+}
diff --git a/project.inlang/settings.json b/project.inlang/settings.json
index fda5a07..4ce5735 100644
--- a/project.inlang/settings.json
+++ b/project.inlang/settings.json
@@ -1,7 +1,7 @@
{
"$schema": "https://inlang.com/schema/project-settings",
"baseLocale": "en",
- "locales": ["en", "es", "fr", "de", "hr", "tr"],
+ "locales": ["en", "es", "fr", "de", "hr", "tr", "ja"],
"modules": [
"https://cdn.jsdelivr.net/npm/@inlang/plugin-message-format@4/dist/index.js",
"https://cdn.jsdelivr.net/npm/@inlang/plugin-m-function-matcher@2/dist/index.js"
diff --git a/src/lib/store/index.svelte.ts b/src/lib/store/index.svelte.ts
index 3eab06e..191ebdd 100644
--- a/src/lib/store/index.svelte.ts
+++ b/src/lib/store/index.svelte.ts
@@ -324,6 +324,7 @@ export const availableLocales = {
de: "Deutsch",
hr: "Hrvatski",
tr: "Türkçe",
+ ja: "日本語",
};
export function updateLocale(newLocale: string) {