From d1ef377068b09657960b46761ae2205a9df331a1 Mon Sep 17 00:00:00 2001 From: wudi Date: Wed, 22 Oct 2025 18:04:41 +0800 Subject: [PATCH] feat(i18n): add Simplified and Traditional Chinese translations - Add zh-Hans (Simplified Chinese) translation file - Add zh-Hant (Traditional Chinese) translation file - Update project settings to include new Chinese locales - Register Chinese languages in locale store with proper display names --- messages/zh-Hans.json | 289 ++++++++++++++++++++++++++++++++++ messages/zh-Hant.json | 289 ++++++++++++++++++++++++++++++++++ project.inlang/settings.json | 2 +- src/lib/store/index.svelte.ts | 2 + 4 files changed, 581 insertions(+), 1 deletion(-) create mode 100644 messages/zh-Hans.json create mode 100644 messages/zh-Hant.json diff --git a/messages/zh-Hans.json b/messages/zh-Hans.json new file mode 100644 index 0000000..2dc87d7 --- /dev/null +++ b/messages/zh-Hans.json @@ -0,0 +1,289 @@ +{ + "$schema": "https://inlang.com/schema/inlang-message-format", + "navbar": { + "upload": "上传", + "convert": "转换", + "settings": "设置", + "about": "关于", + "toggle_theme": "切换主题" + }, + "footer": { + "copyright": "© {year} VERT.", + "source_code": "源代码", + "discord_server": "Discord 服务器", + "privacy_policy": "隐私政策" + }, + "upload": { + "title": "你一定会喜欢的文件转换工具。", + "subtitle": "所有图片、音频和文档处理都在你的设备上进行。视频通过超快速服务器转换。无文件大小限制,无广告,完全开源。", + "uploader": { + "text": "拖放或点击以{action}", + "convert": "转换" + }, + "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 服务器!", + "vertd_generic_view": "查看错误详情", + "vertd_generic_body": "尝试转换视频时发生错误。你想将此视频提交给开发者以帮助修复此错误吗?只会发送你的视频文件,不会上传任何标识符。", + "vertd_generic_title": "视频转换错误", + "vertd_generic_yes": "提交视频", + "vertd_generic_no": "不提交", + "vertd_failed_to_keep": "无法在服务器上保留视频:{error}", + "vertd_details": "查看错误详情", + "vertd_details_body": "如果你按下提交,你的视频也会被附加在错误日志旁边,日志会自动报告给我们审核。以下信息是我们自动接收的日志:", + "vertd_details_footer": "此信息仅用于故障排查,绝不会被共享。查看我们的[privacy_link]隐私政策[/privacy_link]了解更多详情。", + "vertd_details_job_id": "任务 ID:{jobId}", + "vertd_details_from": "来源格式:{from}", + "vertd_details_to": "目标格式:{to}", + "vertd_details_error_message": "错误消息:[view_link]查看错误日志[/view_link]", + "vertd_details_close": "关闭", + "unsupported_format": "仅支持图片、视频、音频和文档文件", + "format_output_only": "此格式目前只能用作输出(转换目标),不能用作输入。", + "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 的服务器包装器。这允许你通过 VERT 网页界面方便地转换视频,同时仍能利用 GPU 的强大性能以尽可能快的速度完成转换。", + "hosting_info": "我们为你提供了一个公共实例以方便使用,但如果你知道如何操作,在自己的电脑或服务器上托管也很容易。你可以在[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": "缓存已成功清除!", + "cache_clear_error": "清除缓存失败。" + }, + "language": { + "title": "语言", + "description": "选择 VERT 界面的首选语言。" + } + }, + "about": { + "title": "关于", + "why": { + "title": "为什么选择 VERT?", + "description": "文件转换器一直让我们失望。它们很丑陋,充满广告,最重要的是;很慢。我们决定通过制作一个解决所有这些问题的替代方案,一劳永逸地解决这个问题。

所有非视频文件都完全在设备上转换;这意味着不需要在服务器之间发送和接收文件的延迟,而且我们永远不会窥探你转换的文件。

视频文件会上传到我们超快速的 RTX 4000 Ada 服务器。如果你不转换视频,它们会在服务器上保留一小时。如果你转换文件,视频将在服务器上保留一小时,或直到下载完成。然后文件将从我们的服务器中删除。" + }, + "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} 美元", + "thank_you": "感谢你的捐赠!", + "payment_failed": "支付失败:{message}{period}你未被收费。", + "donation_error": "处理捐赠时出错。请稍后重试。", + "payment_error": "获取支付详情时出错。请稍后重试。" + }, + "credits": { + "title": "致谢", + "contact_team": "如果你想联系开发团队,请使用“资源”卡片上的电子邮件。", + "notable_contributors": "杰出贡献者", + "notable_description": "我们要感谢这些人对 VERT 的重大贡献。", + "github_contributors": "GitHub 贡献者", + "github_description": "非常感谢所有这些人的帮助![github_link]也想帮忙吗?[/github_link]", + "no_contributors": "似乎还没有人贡献……[contribute_link]成为第一个贡献者![/contribute_link]", + "libraries": "库", + "libraries_description": "非常感谢 FFmpeg(音频、视频)、ImageMagick(图片)和 Pandoc(文档)多年来维护如此出色的库。VERT 依赖它们为你提供转换服务。", + "roles": { + "lead_developer": "首席开发者;转换后端、UI 实现", + "developer": "开发者;UI 实现", + "designer": "设计师;用户体验、品牌、营销", + "docker_ci": "维护 Docker 和 CI 支持", + "former_cofounder": "前联合创始人和设计师" + } + }, + "errors": { + "github_contributors": "获取 GitHub 贡献者时出错" + } + }, + "workers": { + "errors": { + "general": "转换 {file} 时出错:{message}", + "cancel": "取消转换 {file} 时出错:{message}", + "magick": "Magick worker 出错,图片转换可能无法正常工作。", + "ffmpeg": "加载 ffmpeg 时出错,某些功能可能无法工作。", + "no_audio": "未找到音频流。", + "invalid_rate": "指定的采样率无效:{rate}Hz" + } + }, + "privacy": { + "title": "隐私政策", + "summary": { + "title": "摘要", + "description": "VERT 的隐私政策非常简单:我们根本不收集或存储你的任何数据。我们不使用 cookie 或跟踪器,分析是完全私密的,所有转换(视频除外)都在你的浏览器本地进行。视频在下载后或一小时后删除,除非你明确授权存储;它只会用于故障排查。VERT 自托管 Coolify 实例用于托管网站和 vertd(用于视频转换),以及用于完全匿名和聚合分析的 Plausible 实例。

请注意,这可能仅适用于[vert_link]vert.sh[/vert_link]的官方 VERT 实例;第三方实例可能以不同方式处理你的数据。" + }, + "conversions": { + "title": "转换", + "description": "大多数转换(图片、文档、音频)完全在你的设备上本地使用相关工具的 WebAssembly 版本(例如 ImageMagick、Pandoc、FFmpeg)进行。这意味着你的文件永远不会离开你的设备,我们也永远无法访问它们。

视频转换在我们的服务器上进行,因为它们需要更多的处理能力,并且目前无法在浏览器上非常快速地完成。你使用 VERT 转换的视频在下载后或一小时后删除,除非你明确授权我们将它们存储更长时间,纯粹用于故障排查。" + }, + "conversion_errors": { + "title": "转换错误", + "description": "当视频转换失败时,我们可能会收集一些匿名数据以帮助我们诊断问题。这些数据可能包括:", + "list_job_id": "任务 ID,即匿名化的文件名", + "list_format_from": "你转换的来源格式", + "list_format_to": "你转换的目标格式", + "list_stderr": "你任务的 FFmpeg stderr 输出(错误消息)", + "list_video": "实际视频文件(如果明确授权)", + "footer": "此信息仅用于诊断转换问题。只有在你明确授权的情况下,才会收集实际视频文件,并且仅用于故障排查。" + }, + "analytics": { + "title": "分析", + "description": "我们自托管 Plausible 实例用于完全匿名和聚合的分析。Plausible 不使用 cookie,并符合所有主要隐私法规(GDPR/CCPA/PECR)。你可以在[settings_link]设置[/settings_link]的“隐私与数据”部分选择退出分析,并在[plausible_link]这里[/plausible_link]阅读更多关于 Plausible 隐私实践的信息。" + }, + "local_storage": { + "title": "本地存储", + "description": "我们使用浏览器的本地存储来保存你的设置,使用浏览器的会话存储来临时存储“关于”部分的 GitHub 贡献者列表,以减少重复的 GitHub API 请求。不会存储或传输任何个人数据。

我们使用的转换工具的 WebAssembly 版本(FFmpeg、ImageMagick、Pandoc)也会在你首次访问网站时本地存储在浏览器中,这样你就不需要每次访问时都重新下载它们。不会存储或传输任何个人数据。你可以随时在[settings_link]设置[/settings_link]的“隐私与数据”部分查看或删除这些数据。" + }, + "contact": { + "title": "联系", + "description": "如有问题,请发送电子邮件至:[email_link]hello@vert.sh[/email_link]。如果你使用的是第三方 VERT 实例,请联系该实例的托管者。" + }, + "last_updated": "最后更新:2025-10-19" + } +} diff --git a/messages/zh-Hant.json b/messages/zh-Hant.json new file mode 100644 index 0000000..d2d7f22 --- /dev/null +++ b/messages/zh-Hant.json @@ -0,0 +1,289 @@ +{ + "$schema": "https://inlang.com/schema/inlang-message-format", + "navbar": { + "upload": "上傳", + "convert": "轉換", + "settings": "設定", + "about": "關於", + "toggle_theme": "切換主題" + }, + "footer": { + "copyright": "© {year} VERT.", + "source_code": "原始碼", + "discord_server": "Discord 伺服器", + "privacy_policy": "隱私權政策" + }, + "upload": { + "title": "你一定會喜歡的檔案轉換工具。", + "subtitle": "所有圖片、音訊和文件處理都在你的裝置上進行。影片透過超快速伺服器轉換。無檔案大小限制,無廣告,完全開源。", + "uploader": { + "text": "拖放或點擊以{action}", + "convert": "轉換" + }, + "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 伺服器!", + "vertd_generic_view": "檢視錯誤詳情", + "vertd_generic_body": "嘗試轉換影片時發生錯誤。你想將此影片提交給開發者以協助修復此錯誤嗎?只會傳送你的影片檔案,不會上傳任何識別碼。", + "vertd_generic_title": "影片轉換錯誤", + "vertd_generic_yes": "提交影片", + "vertd_generic_no": "不提交", + "vertd_failed_to_keep": "無法在伺服器上保留影片:{error}", + "vertd_details": "檢視錯誤詳情", + "vertd_details_body": "如果你按下提交,你的影片也會被附加在錯誤日誌旁邊,日誌會自動報告給我們審核。以下資訊是我們自動接收的日誌:", + "vertd_details_footer": "此資訊僅用於故障排除,絕不會被分享。檢視我們的[privacy_link]隱私權政策[/privacy_link]以了解更多詳情。", + "vertd_details_job_id": "任務 ID:{jobId}", + "vertd_details_from": "來源格式:{from}", + "vertd_details_to": "目標格式:{to}", + "vertd_details_error_message": "錯誤訊息:[view_link]檢視錯誤日誌[/view_link]", + "vertd_details_close": "關閉", + "unsupported_format": "僅支援圖片、影片、音訊和文件檔案", + "format_output_only": "此格式目前只能用作輸出(轉換目標),不能用作輸入。", + "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 的伺服器包裝器。這允許你透過 VERT 網頁介面方便地轉換影片,同時仍能利用 GPU 的強大效能以儘可能快的速度完成轉換。", + "hosting_info": "我們為你提供了一個公共執行個體以方便使用,但如果你知道如何操作,在自己的電腦或伺服器上託管也很容易。你可以在[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": "快取已成功清除!", + "cache_clear_error": "清除快取失敗。" + }, + "language": { + "title": "語言", + "description": "選擇 VERT 介面的偏好語言。" + } + }, + "about": { + "title": "關於", + "why": { + "title": "為什麼選擇 VERT?", + "description": "檔案轉換器一直讓我們失望。它們很醜陋,充滿廣告,最重要的是;很慢。我們決定透過製作一個解決所有這些問題的替代方案,一勞永逸地解決這個問題。

所有非影片檔案都完全在裝置上轉換;這意味著不需要在伺服器之間傳送和接收檔案的延遲,而且我們永遠不會窺探你轉換的檔案。

影片檔案會上傳到我們超快速的 RTX 4000 Ada 伺服器。如果你不轉換影片,它們會在伺服器上保留一小時。如果你轉換檔案,影片將在伺服器上保留一小時,或直到下載完成。然後檔案將從我們的伺服器中刪除。" + }, + "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} 美元", + "thank_you": "感謝你的捐贈!", + "payment_failed": "付款失敗:{message}{period}你未被收費。", + "donation_error": "處理捐贈時出錯。請稍後重試。", + "payment_error": "取得付款詳情時出錯。請稍後重試。" + }, + "credits": { + "title": "致謝", + "contact_team": "如果你想聯絡開發團隊,請使用「資源」卡片上的電子郵件。", + "notable_contributors": "傑出貢獻者", + "notable_description": "我們要感謝這些人對 VERT 的重大貢獻。", + "github_contributors": "GitHub 貢獻者", + "github_description": "非常感謝所有這些人的協助![github_link]也想幫忙嗎?[/github_link]", + "no_contributors": "似乎還沒有人貢獻……[contribute_link]成為第一個貢獻者![/contribute_link]", + "libraries": "程式庫", + "libraries_description": "非常感謝 FFmpeg(音訊、影片)、ImageMagick(圖片)和 Pandoc(文件)多年來維護如此出色的程式庫。VERT 依賴它們為你提供轉換服務。", + "roles": { + "lead_developer": "首席開發者;轉換後端、UI 實作", + "developer": "開發者;UI 實作", + "designer": "設計師;使用者體驗、品牌、行銷", + "docker_ci": "維護 Docker 和 CI 支援", + "former_cofounder": "前共同創辦人和設計師" + } + }, + "errors": { + "github_contributors": "取得 GitHub 貢獻者時出錯" + } + }, + "workers": { + "errors": { + "general": "轉換 {file} 時出錯:{message}", + "cancel": "取消轉換 {file} 時出錯:{message}", + "magick": "Magick worker 出錯,圖片轉換可能無法正常運作。", + "ffmpeg": "載入 ffmpeg 時出錯,某些功能可能無法運作。", + "no_audio": "未找到音訊串流。", + "invalid_rate": "指定的取樣率無效:{rate}Hz" + } + }, + "privacy": { + "title": "隱私權政策", + "summary": { + "title": "摘要", + "description": "VERT 的隱私權政策非常簡單:我們根本不收集或儲存你的任何資料。我們不使用 cookie 或追蹤器,分析是完全私密的,所有轉換(影片除外)都在你的瀏覽器本機進行。影片在下載後或一小時後刪除,除非你明確授權儲存;它只會用於故障排除。VERT 自託管 Coolify 執行個體用於託管網站和 vertd(用於影片轉換),以及用於完全匿名和彙總分析的 Plausible 執行個體。

請注意,這可能僅適用於[vert_link]vert.sh[/vert_link]的官方 VERT 執行個體;第三方執行個體可能以不同方式處理你的資料。" + }, + "conversions": { + "title": "轉換", + "description": "大多數轉換(圖片、文件、音訊)完全在你的裝置上本機使用相關工具的 WebAssembly 版本(例如 ImageMagick、Pandoc、FFmpeg)進行。這意味著你的檔案永遠不會離開你的裝置,我們也永遠無法存取它們。

影片轉換在我們的伺服器上進行,因為它們需要更多的處理能力,並且目前無法在瀏覽器上非常快速地完成。你使用 VERT 轉換的影片在下載後或一小時後刪除,除非你明確授權我們將它們儲存更長時間,純粹用於故障排除。" + }, + "conversion_errors": { + "title": "轉換錯誤", + "description": "當影片轉換失敗時,我們可能會收集一些匿名資料以協助我們診斷問題。這些資料可能包括:", + "list_job_id": "任務 ID,即匿名化的檔案名稱", + "list_format_from": "你轉換的來源格式", + "list_format_to": "你轉換的目標格式", + "list_stderr": "你任務的 FFmpeg stderr 輸出(錯誤訊息)", + "list_video": "實際影片檔案(如果明確授權)", + "footer": "此資訊僅用於診斷轉換問題。只有在你明確授權的情況下,才會收集實際影片檔案,並且僅用於故障排除。" + }, + "analytics": { + "title": "分析", + "description": "我們自託管 Plausible 執行個體用於完全匿名和彙總的分析。Plausible 不使用 cookie,並符合所有主要隱私權法規(GDPR/CCPA/PECR)。你可以在[settings_link]設定[/settings_link]的「隱私權與資料」部分選擇退出分析,並在[plausible_link]這裡[/plausible_link]閱讀更多關於 Plausible 隱私權實務的資訊。" + }, + "local_storage": { + "title": "本機儲存", + "description": "我們使用瀏覽器的本機儲存來儲存你的設定,使用瀏覽器的工作階段儲存來暫時儲存「關於」部分的 GitHub 貢獻者清單,以減少重複的 GitHub API 請求。不會儲存或傳輸任何個人資料。

我們使用的轉換工具的 WebAssembly 版本(FFmpeg、ImageMagick、Pandoc)也會在你首次造訪網站時本機儲存在瀏覽器中,這樣你就不需要每次造訪時都重新下載它們。不會儲存或傳輸任何個人資料。你可以隨時在[settings_link]設定[/settings_link]的「隱私權與資料」部分檢視或刪除這些資料。" + }, + "contact": { + "title": "聯絡", + "description": "如有問題,請傳送電子郵件至:[email_link]hello@vert.sh[/email_link]。如果你使用的是第三方 VERT 執行個體,請聯絡該執行個體的託管者。" + }, + "last_updated": "最後更新:2025-10-19" + } +} diff --git a/project.inlang/settings.json b/project.inlang/settings.json index b2171b9..8f3773a 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", "it", "hr", "tr", "ja", "el", "id"], + "locales": ["en", "es", "fr", "de", "it", "hr", "tr", "ja", "el", "id", "zh-Hans", "zh-Hant"], "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 7d5b471..aec4d94 100644 --- a/src/lib/store/index.svelte.ts +++ b/src/lib/store/index.svelte.ts @@ -329,6 +329,8 @@ export const availableLocales = { tr: "Türkçe", ja: "日本語", el: "Ελληνικά", + "zh-Hans": "简体中文", + "zh-Hant": "繁體中文", }; export function updateLocale(newLocale: string) {