diff --git a/README.md b/README.md index 2170675..1af6c51 100644 --- a/README.md +++ b/README.md @@ -1,50 +1,52 @@ -![ConvertX](images/logo.png) +![ConvertX-CN](images/logo.png) -# ConvertX-CN(完整版) +# ConvertX-CN + +**開箱即用的全功能檔案轉換服務** | **Self-hosted File Converter - Full Edition** [![Docker](https://github.com/pi-docket/ConvertX-CN/actions/workflows/release.yml/badge.svg)](https://github.com/pi-docket/ConvertX-CN/actions/workflows/release.yml) [![Docker Pulls](https://img.shields.io/docker/pulls/convertx/convertx-cn?style=flat&logo=docker&label=Docker%20Hub)](https://hub.docker.com/r/convertx/convertx-cn) [![GitHub Release](https://img.shields.io/github/v/release/pi-docket/ConvertX-CN)](https://github.com/pi-docket/ConvertX-CN/releases) - -> 🎉 **這是完整版 ConvertX-CN image,已內建所有轉換依賴!** -> -> 使用者 **不需要自己寫 Dockerfile**,直接 `docker run` 或 `docker compose up` 即可使用。 - -基於 [C4illin/ConvertX](https://github.com/C4illin/ConvertX) 的中文優化版本。目前還在實作請等到1月底發布 +[![License](https://img.shields.io/github/license/pi-docket/ConvertX-CN)](LICENSE) --- -## ✨ 完整版特色 +## ✨ 什麼是 ConvertX-CN? -此 image 已經內建以下所有依賴,開箱即用: +ConvertX-CN 是基於 [C4illin/ConvertX](https://github.com/C4illin/ConvertX) 的**完整版 Fork**,專為中文使用者優化,並預載所有轉換依賴。 -| 類別 | 內建內容 | -| ------------ | ---------------------------------------------------------------- | -| **文件轉換** | LibreOffice (headless)、Pandoc | -| **LaTeX** | TexLive Full(完整版,支援所有 LaTeX 需求) | -| **OCR 識別** | Tesseract OCR + 繁體中文、簡體中文、日文、韓文、英文、德文語言包 | -| **CJK 字型** | Noto CJK(中日韓)、Noto Emoji、微軟核心字型、標楷體 | -| **影音轉換** | FFmpeg、ImageMagick、GraphicsMagick | -| **向量圖形** | Inkscape、Potrace、VTracer、resvg | -| **電子書** | Calibre | -| **其他** | Ghostscript、MuPDF、Poppler、libheif、libjxl 等 | +> 🎉 **一鍵部署,無需額外配置** +> 使用者 **不需要自己寫 Dockerfile**,直接 `docker run` 或 `docker compose up` 即可使用。 + +### 主要特色 + +| 特色 | 說明 | +|------|------| +| 🌍 **65+ 語言支援** | 繁體中文、簡體中文、英文、日文、韓文等 65 種語言 | +| 📦 **完整內建** | LibreOffice、FFmpeg、Pandoc、Calibre 等 20+ 轉換器 | +| 🎨 **CJK 字型** | Noto CJK、微軟核心字型、標楷體等中日韓字型 | +| 🔤 **OCR 支援** | Tesseract + 多語言語言包 | +| ⚡ **LaTeX 完整版** | TexLive Full,支援所有 LaTeX 需求 | +| 🐳 **開箱即用** | 一個 Docker 命令即可啟動 | --- ## 🚀 快速開始 -### 方法一:Docker Run +### 最快方式:Docker Run ```bash docker run -d \ --name convertx-cn \ -p 3000:3000 \ -v ./data:/app/data \ - -e TZ=Asia/Taipei \ + -e ACCOUNT_REGISTRATION=true \ convertx/convertx-cn:latest ``` -### 方法二:Docker Compose(推薦) +開啟瀏覽器訪問 `http://localhost:3000`,建立帳號即可開始使用! + +### 推薦方式:Docker Compose 建立 `docker-compose.yml`: @@ -60,141 +62,96 @@ services: - ./data:/app/data environment: - TZ=Asia/Taipei - - JWT_SECRET=請更換為一個長且隨機的字串 - - ACCOUNT_REGISTRATION=false - - HTTP_ALLOWED=false - - AUTO_DELETE_EVERY_N_HOURS=24 + - JWT_SECRET=your-secret-key-change-me + - ACCOUNT_REGISTRATION=true ``` -啟動服務: - ```bash docker compose up -d ``` -然後瀏覽 `http://localhost:3000` 並建立第一個帳號。 +📖 完整部署指南請見 → [docs/getting-started.md](docs/getting-started.md) --- -## 📦 Docker Image +## 🌍 語言支援 -| Image | 說明 | -| ----------------------------- | ---------- | +ConvertX-CN 支援 **65 種語言**,包括: + +| 區域 | 語言 | +|------|------| +| **東亞** | 繁體中文(預設)、简体中文、日本語、한국어 | +| **歐洲** | English, Deutsch, Français, Español, Italiano, Português, Русский, Polski, Nederlands, Українська, Čeština, Svenska, Dansk, Suomi, Norsk, Ελληνικά, Magyar, Română, Български, Hrvatski, Slovenčina, Slovenščina, Lietuvių, Latviešu, Eesti, Српски, Català, Euskara, Galego, Íslenska, Gaeilge, Cymraeg, Malti, Македонски, Shqip | +| **中東/南亞** | العربية, עברית, فارسی, Türkçe, हिन्दी, বাংলা, தமிழ், తెలుగు, मराठी, ગુજરાતી, ಕನ್ನಡ, മലയാളം, नेपाली, සිංහල | +| **東南亞** | ไทย, Tiếng Việt, Bahasa Indonesia, Bahasa Melayu, Filipino, မြန်မာ, ខ្មែរ, ລາວ | +| **非洲** | Afrikaans, Kiswahili, አማርኛ, isiZulu | + +語言會根據瀏覽器設定自動偵測,也可透過右上角選單手動切換。 + +--- + +## 📦 內建轉換器 + +| 轉換器 | 用途 | 輸入格式 | 輸出格式 | +|--------|------|----------|----------| +| FFmpeg | 影音 | ~472 | ~199 | +| ImageMagick | 圖片 | 245 | 183 | +| GraphicsMagick | 圖片 | 167 | 130 | +| LibreOffice | 文件 | 41 | 22 | +| Pandoc | 文件 | 43 | 65 | +| Calibre | 電子書 | 26 | 19 | +| Inkscape | 向量圖 | 7 | 17 | +| Assimp | 3D 模型 | 77 | 23 | + +完整列表 → [docs/converters.md](docs/converters.md) + +--- + +## 📖 文件導覽 + +| 文件 | 說明 | +|------|------| +| [🚀 快速開始](docs/getting-started.md) | Docker 部署教學 | +| [🐳 Docker 配置](docs/docker.md) | 完整 Docker 設定指南 | +| [⚙️ 環境變數](docs/environment-variables.md) | 所有環境變數說明 | +| [💾 儲存與 URL](docs/url-id-and-storage.md) | 檔案儲存機制說明 | +| [🔧 進階用法](docs/advanced-usage.md) | 硬體加速、反向代理等 | +| [🌍 多語言](docs/i18n.md) | i18n 語言設定與新增 | +| [📦 轉換器列表](docs/converters.md) | 支援的轉換格式完整列表 | + +--- + +## 🐳 Docker Image + +| Tag | 說明 | +|-----|------| | `convertx/convertx-cn:latest` | 最新穩定版 | -| `convertx/convertx-cn:v0.1.1` | 指定版本 | +| `convertx/convertx-cn:v0.1.3` | 指定版本 | -> ⚠️ 由於內建完整依賴,image 大小約 4-6 GB,首次下載需要較長時間。 +> ⚠️ 由於內建完整依賴,Image 約 4-6 GB,首次下載需較長時間。 --- -## 🔧 支援的轉換器 +## 📸 預覽 -| Converter | Use case | Converts from | Converts to | -| --------------------------------------------------------------- | ---------------- | ------------- | ----------- | -| [Inkscape](https://inkscape.org/) | Vector images | 7 | 17 | -| [libjxl](https://github.com/libjxl/libjxl) | JPEG XL | 11 | 11 | -| [resvg](https://github.com/RazrFalcon/resvg) | SVG | 1 | 1 | -| [Vips](https://github.com/libvips/libvips) | Images | 45 | 23 | -| [libheif](https://github.com/strukturag/libheif) | HEIF | 2 | 4 | -| [XeLaTeX](https://tug.org/xetex/) | LaTeX | 1 | 1 | -| [Calibre](https://calibre-ebook.com/) | E-books | 26 | 19 | -| [LibreOffice](https://www.libreoffice.org/) | Documents | 41 | 22 | -| [Dasel](https://github.com/TomWright/dasel) | Data Files | 5 | 4 | -| [Pandoc](https://pandoc.org/) | Documents | 43 | 65 | -| [msgconvert](https://github.com/mvz/email-outlook-message-perl) | Outlook | 1 | 1 | -| VCF to CSV | Contacts | 1 | 1 | -| [dvisvgm](https://dvisvgm.de/) | Vector images | 4 | 2 | -| [ImageMagick](https://imagemagick.org/) | Images | 245 | 183 | -| [GraphicsMagick](http://www.graphicsmagick.org/) | Images | 167 | 130 | -| [Assimp](https://github.com/assimp/assimp) | 3D Assets | 77 | 23 | -| [FFmpeg](https://ffmpeg.org/) | Video | ~472 | ~199 | -| [Potrace](https://potrace.sourceforge.net/) | Raster to vector | 4 | 11 | -| [VTracer](https://github.com/visioncortex/vtracer) | Raster to vector | 8 | 1 | -| [Markitdown](https://github.com/microsoft/markitdown) | Documents | 6 | 1 | - - - -缺少什麼轉換器?歡迎開 issue 或 pull request! +![ConvertX-CN Preview](images/preview.png) --- -## ⚙️ 環境變數 - -所有環境變數皆為選填,建議設定 `JWT_SECRET`。 - -| 變數名稱 | 預設值 | 說明 | -| ------------------------- | ------------ | ---------------------------------------- | -| JWT_SECRET | randomUUID() | 用於簽署 JWT 的密鑰字串 | -| ACCOUNT_REGISTRATION | false | 是否允許註冊新帳號 | -| HTTP_ALLOWED | false | 是否允許 HTTP 連線(僅本地使用) | -| ALLOW_UNAUTHENTICATED | false | 是否允許未登入使用 | -| AUTO_DELETE_EVERY_N_HOURS | 24 | 自動刪除超過 N 小時的檔案(0 = 停用) | -| WEBROOT | | 子路徑部署,例如 `/convertx` | -| FFMPEG_ARGS | | FFmpeg 輸入參數,例如 `-hwaccel vaapi` | -| FFMPEG_OUTPUT_ARGS | | FFmpeg 輸出參數,例如 `-preset veryfast` | -| HIDE_HISTORY | false | 隱藏歷史紀錄頁面 | -| LANGUAGE | en | 日期格式語言(BCP 47 格式) | -| TZ | UTC | 時區設定 | -| MAX_CONVERT_PROCESS | 0 | 最大同時轉換數(0 = 無限制) | - ---- - -## 🌍 多語言支援(i18n) - -ConvertX-CN 支援以下語言: - -| 語言代碼 | 語言名稱 | -| -------- | ---------------- | -| zh-TW | 繁體中文(預設) | -| zh-CN | 简体中文 | -| en | English | -| ja | 日本語 | -| ko | 한국어 | - -### 語言切換 - -- 在網站右上角的導航列可看到語言選擇器(地球圖示) -- 點擊後可選擇偏好語言 -- 語言偏好會自動保存到 Cookie 中 -- 首次訪問時會自動偵測瀏覽器語言設定 - -### 新增語言 - -如要添加新語言,請: - -1. 在 `src/locales/` 目錄新增語言檔案(例如 `fr.json`) -2. 在 `src/i18n/index.ts` 中: - - 導入新語言檔案 - - 在 `supportedLocales` 陣列中添加語言配置 - - 在 `translations` 物件中註冊翻譯 - -歡迎提交 Pull Request 來新增更多語言! - ---- - -## 📖 教學文章 - -> [!NOTE] -> 以下教學由社群撰寫,可能有過時或錯誤之處。 - -- 法文教學: -- 中文教學: -- 波蘭文教學: - ---- - -## 📸 Screenshots - -![ConvertX Preview](images/preview.png) - ## 🛠️ 開發 -0. 安裝 [Bun](https://bun.sh/) 和 Git -1. Clone 這個 repository -2. `bun install` -3. `bun run dev` +```bash +# 安裝依賴 +bun install -歡迎 Pull Request!請使用 [conventional commits](https://www.conventionalcommits.org/en/v1.0.0/#summary) 格式。 +# 開發模式 +bun run dev + +# 建構 +bun run build +``` + +歡迎 Pull Request!請使用 [Conventional Commits](https://www.conventionalcommits.org/) 格式。 --- @@ -203,11 +160,18 @@ ConvertX-CN 支援以下語言: 本專案基於 [C4illin/ConvertX](https://github.com/C4illin/ConvertX) 開發。 - Image with all contributors + Contributors --- ## 📜 License -MIT License +[MIT License](LICENSE) + +--- + +

+ Powered by ConvertX-CN
+ https://github.com/pi-docket/ConvertX-CN +

diff --git a/docs/advanced-usage.md b/docs/advanced-usage.md new file mode 100644 index 0000000..f0aeaca --- /dev/null +++ b/docs/advanced-usage.md @@ -0,0 +1,277 @@ +# 進階用法 + +## 硬體加速 + +### NVIDIA GPU (CUDA/NVENC) + +#### 1. 安裝 NVIDIA Container Toolkit + +```bash +# Ubuntu/Debian +curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg +curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \ + sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \ + sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list +sudo apt-get update +sudo apt-get install -y nvidia-container-toolkit +sudo nvidia-ctk runtime configure --runtime=docker +sudo systemctl restart docker +``` + +#### 2. Docker Compose 配置 + +```yaml +services: + convertx: + image: convertx/convertx-cn:latest + deploy: + resources: + reservations: + devices: + - driver: nvidia + count: all + capabilities: [gpu] + environment: + - FFMPEG_ARGS=-hwaccel cuda -hwaccel_output_format cuda + - FFMPEG_OUTPUT_ARGS=-c:v h264_nvenc -preset fast +``` + +--- + +### Intel Quick Sync Video (QSV) + +```yaml +services: + convertx: + image: convertx/convertx-cn:latest + devices: + - /dev/dri:/dev/dri + environment: + - FFMPEG_ARGS=-hwaccel qsv + - FFMPEG_OUTPUT_ARGS=-c:v h264_qsv -preset faster +``` + +--- + +### AMD VAAPI + +```yaml +services: + convertx: + image: convertx/convertx-cn:latest + devices: + - /dev/dri:/dev/dri + environment: + - FFMPEG_ARGS=-hwaccel vaapi -hwaccel_device /dev/dri/renderD128 + - FFMPEG_OUTPUT_ARGS=-c:v h264_vaapi +``` + +--- + +## 反向代理 + +### Nginx + +```nginx +server { + listen 80; + server_name convert.example.com; + return 301 https://$server_name$request_uri; +} + +server { + listen 443 ssl http2; + server_name convert.example.com; + + ssl_certificate /etc/nginx/ssl/cert.pem; + ssl_certificate_key /etc/nginx/ssl/key.pem; + + client_max_body_size 0; # 無檔案大小限制 + + location / { + proxy_pass http://localhost:3000; + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection 'upgrade'; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_cache_bypass $http_upgrade; + + # 長時間連線支援(大檔案轉換) + proxy_read_timeout 3600s; + proxy_send_timeout 3600s; + } +} +``` + +### Caddy + +``` +convert.example.com { + reverse_proxy localhost:3000 { + header_up X-Real-IP {remote_host} + header_up X-Forwarded-Proto {scheme} + } + + request_body { + max_size 0 # 無限制 + } +} +``` + +### Traefik + +參考 [docker.md](docker.md#使用-traefik-反向代理) 中的 Traefik 配置。 + +--- + +## 子路徑部署 + +如果需要在子路徑部署(如 `https://example.com/convertx`): + +### 1. 設定環境變數 + +```yaml +environment: + - WEBROOT=/convertx +``` + +### 2. Nginx 配置 + +```nginx +location /convertx/ { + proxy_pass http://localhost:3000/; + # ... 其他 proxy 設定 +} +``` + +### 3. Caddy 配置 + +``` +example.com { + handle_path /convertx/* { + reverse_proxy localhost:3000 + } +} +``` + +--- + +## 限制同時轉換數 + +防止伺服器過載: + +```yaml +environment: + - MAX_CONVERT_PROCESS=4 # 最多同時 4 個轉換任務 +``` + +--- + +## 匿名模式 + +允許不登入即可使用: + +```yaml +environment: + - ALLOW_UNAUTHENTICATED=true + - HIDE_HISTORY=true # 建議同時隱藏歷史 + - AUTO_DELETE_EVERY_N_HOURS=1 # 快速清理 +``` + +--- + +## 高可用部署 + +### 多容器部署 + +ConvertX-CN 支援多容器部署,但需注意: + +1. **共享儲存**:所有容器需存取相同的 `/app/data` 目錄 +2. **資料庫鎖定**:SQLite 在高併發下可能有問題 +3. **JWT Secret**:所有容器需使用相同的 `JWT_SECRET` + +```yaml +services: + convertx-1: + image: convertx/convertx-cn:latest + volumes: + - shared-data:/app/data + environment: + - JWT_SECRET=${JWT_SECRET} + + convertx-2: + image: convertx/convertx-cn:latest + volumes: + - shared-data:/app/data + environment: + - JWT_SECRET=${JWT_SECRET} + + nginx: + image: nginx:alpine + ports: + - "80:80" + volumes: + - ./nginx.conf:/etc/nginx/nginx.conf + +volumes: + shared-data: + driver: local + driver_opts: + type: nfs + o: addr=nfs-server,rw + device: ":/path/to/shared/data" +``` + +--- + +## 效能調優 + +### 記憶體限制 + +```yaml +deploy: + resources: + limits: + memory: 8G + reservations: + memory: 2G +``` + +### CPU 限制 + +```yaml +deploy: + resources: + limits: + cpus: '4' + reservations: + cpus: '1' +``` + +--- + +## 日誌管理 + +### 查看日誌 + +```bash +docker logs convertx-cn +docker logs -f convertx-cn # 即時追蹤 +docker logs --tail 100 convertx-cn # 最後 100 行 +``` + +### 日誌輪轉 + +```yaml +services: + convertx: + # ... + logging: + driver: "json-file" + options: + max-size: "10m" + max-file: "3" +``` diff --git a/docs/configuration.md b/docs/configuration.md deleted file mode 100644 index d499718..0000000 --- a/docs/configuration.md +++ /dev/null @@ -1,65 +0,0 @@ -# 環境變數設定 - -所有環境變數皆為選填,建議至少設定 `JWT_SECRET`。 - -## 安全性設定 - -| 變數名稱 | 預設值 | 說明 | -| -------------------- | ------------ | ---------------------------------- | -| JWT_SECRET | randomUUID() | 用於簽署 JWT 的密鑰字串(請務必更改) | -| ACCOUNT_REGISTRATION | false | 是否允許註冊新帳號 | -| HTTP_ALLOWED | false | 是否允許 HTTP 連線(僅本地使用) | -| ALLOW_UNAUTHENTICATED| false | 是否允許未登入使用 | - -## 檔案管理 - -| 變數名稱 | 預設值 | 說明 | -| ------------------------- | ------ | ------------------------------------ | -| AUTO_DELETE_EVERY_N_HOURS | 24 | 自動刪除超過 N 小時的檔案(0 = 停用) | - -## 進階設定 - -| 變數名稱 | 預設值 | 說明 | -| ------------------ | ------ | -------------------------------------- | -| WEBROOT | | 子路徑部署,例如 `/convertx` | -| FFMPEG_ARGS | | FFmpeg 輸入參數,例如 `-hwaccel vaapi` | -| FFMPEG_OUTPUT_ARGS | | FFmpeg 輸出參數,例如 `-preset veryfast` | -| HIDE_HISTORY | false | 隱藏歷史紀錄頁面 | -| MAX_CONVERT_PROCESS| 0 | 最大同時轉換數(0 = 無限制) | - -## 本地化設定 - -| 變數名稱 | 預設值 | 說明 | -| -------- | ------ | ----------------------------- | -| LANGUAGE | en | 日期格式語言(BCP 47 格式) | -| TZ | UTC | 時區設定,例如 `Asia/Taipei` | - -## 範例配置 - -### 開發環境 - -```yaml -environment: - - HTTP_ALLOWED=true - - ACCOUNT_REGISTRATION=true -``` - -### 生產環境 - -```yaml -environment: - - JWT_SECRET=your-very-long-and-random-secret-key - - ACCOUNT_REGISTRATION=false - - HTTP_ALLOWED=false - - TZ=Asia/Taipei - - AUTO_DELETE_EVERY_N_HOURS=48 -``` - -### 公開服務(允許匿名使用) - -```yaml -environment: - - ALLOW_UNAUTHENTICATED=true - - HIDE_HISTORY=true - - AUTO_DELETE_EVERY_N_HOURS=1 -``` diff --git a/docs/docker.md b/docs/docker.md new file mode 100644 index 0000000..02ffadc --- /dev/null +++ b/docs/docker.md @@ -0,0 +1,216 @@ +# Docker 配置指南 + +## Docker Image + +ConvertX-CN 提供預建的 Docker Image,包含所有轉換依賴。 + +### 可用 Tag + +| Tag | 說明 | +|-----|------| +| `convertx/convertx-cn:latest` | 最新穩定版 | +| `convertx/convertx-cn:v0.1.3` | 指定版本號 | +| `convertx/convertx-cn:v0.1.3-FULL` | 完整版(與 latest 相同) | + +### Image 大小 + +由於內建完整依賴(LibreOffice、TexLive、FFmpeg 等),Image 約 **4-6 GB**。 + +--- + +## Docker Run + +基本啟動命令: + +```bash +docker run -d \ + --name convertx-cn \ + -p 3000:3000 \ + -v ./data:/app/data \ + -e TZ=Asia/Taipei \ + -e ACCOUNT_REGISTRATION=true \ + convertx/convertx-cn:latest +``` + +### 參數說明 + +| 參數 | 說明 | +|------|------| +| `-d` | 背景執行 | +| `--name convertx-cn` | 容器名稱 | +| `-p 3000:3000` | 連接埠映射 | +| `-v ./data:/app/data` | 資料持久化 | +| `-e TZ=Asia/Taipei` | 時區設定 | + +--- + +## Docker Compose + +### 基本配置 + +```yaml +services: + convertx: + image: convertx/convertx-cn:latest + container_name: convertx-cn + restart: unless-stopped + ports: + - "3000:3000" + volumes: + - ./data:/app/data + environment: + - TZ=Asia/Taipei + - JWT_SECRET=your-very-long-random-secret-key + - ACCOUNT_REGISTRATION=true +``` + +### 生產環境配置 + +```yaml +services: + convertx: + image: convertx/convertx-cn:latest + container_name: convertx-cn + restart: unless-stopped + ports: + - "3000:3000" + volumes: + - ./data:/app/data + environment: + - TZ=Asia/Taipei + - JWT_SECRET=${JWT_SECRET} + - ACCOUNT_REGISTRATION=false + - HTTP_ALLOWED=false + - AUTO_DELETE_EVERY_N_HOURS=24 + deploy: + resources: + limits: + memory: 4G + reservations: + memory: 2G +``` + +### 使用 Traefik 反向代理 + +```yaml +services: + convertx: + image: convertx/convertx-cn:latest + container_name: convertx-cn + restart: unless-stopped + volumes: + - ./data:/app/data + environment: + - TZ=Asia/Taipei + - JWT_SECRET=${JWT_SECRET} + - ACCOUNT_REGISTRATION=false + labels: + - "traefik.enable=true" + - "traefik.http.routers.convertx.rule=Host(`convert.example.com`)" + - "traefik.http.routers.convertx.entrypoints=websecure" + - "traefik.http.routers.convertx.tls.certresolver=letsencrypt" + - "traefik.http.services.convertx.loadbalancer.server.port=3000" + networks: + - traefik + +networks: + traefik: + external: true +``` + +--- + +## 資料持久化 + +### Volume 結構 + +``` +./data/ +├── uploads/ # 上傳的原始檔案 +├── output/ # 轉換後的檔案 +└── convertx.db # SQLite 資料庫 +``` + +### 備份 + +```bash +# 備份資料 +docker cp convertx-cn:/app/data ./backup-$(date +%Y%m%d) + +# 還原資料 +docker cp ./backup-20240101/. convertx-cn:/app/data/ +``` + +--- + +## 更新 + +### Docker Compose + +```bash +docker compose pull +docker compose up -d +``` + +### Docker Run + +```bash +docker pull convertx/convertx-cn:latest +docker stop convertx-cn +docker rm convertx-cn +docker run -d ... # 使用原本的參數 +``` + +--- + +## 健康檢查 + +ConvertX-CN 提供健康檢查端點: + +```bash +curl http://localhost:3000/healthcheck +``` + +可在 Docker Compose 中配置: + +```yaml +services: + convertx: + # ... + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:3000/healthcheck"] + interval: 30s + timeout: 10s + retries: 3 +``` + +--- + +## 故障排除 + +### 記憶體不足 + +如果遇到 OOM(記憶體不足),請增加容器記憶體限制: + +```yaml +deploy: + resources: + limits: + memory: 8G +``` + +### 連接埠衝突 + +如果 3000 埠被占用,可更改映射: + +```bash +-p 8080:3000 # 使用 8080 埠 +``` + +### 權限問題 + +確保 data 目錄有正確權限: + +```bash +chmod -R 777 ./data +``` diff --git a/docs/environment-variables.md b/docs/environment-variables.md new file mode 100644 index 0000000..ff2fc97 --- /dev/null +++ b/docs/environment-variables.md @@ -0,0 +1,158 @@ +# 環境變數設定 + +所有環境變數皆為選填,建議至少設定 `JWT_SECRET`。 + +--- + +## 安全性設定 + +| 變數名稱 | 預設值 | 說明 | +|----------|--------|------| +| `JWT_SECRET` | `randomUUID()` | 用於簽署 JWT 的密鑰字串。**生產環境請務必設定** | +| `ACCOUNT_REGISTRATION` | `false` | 是否允許註冊新帳號 | +| `HTTP_ALLOWED` | `false` | 是否允許 HTTP 連線(僅本地使用建議開啟) | +| `ALLOW_UNAUTHENTICATED` | `false` | 是否允許未登入使用 | + +### 安全建議 + +```yaml +# 生產環境 +environment: + - JWT_SECRET=a-very-long-random-string-at-least-32-characters + - ACCOUNT_REGISTRATION=false + - HTTP_ALLOWED=false + - ALLOW_UNAUTHENTICATED=false +``` + +--- + +## 檔案管理 + +| 變數名稱 | 預設值 | 說明 | +|----------|--------|------| +| `AUTO_DELETE_EVERY_N_HOURS` | `24` | 自動刪除超過 N 小時的檔案(0 = 停用) | + +### 範例 + +```yaml +# 每 48 小時清理一次 +- AUTO_DELETE_EVERY_N_HOURS=48 + +# 停用自動清理 +- AUTO_DELETE_EVERY_N_HOURS=0 +``` + +--- + +## 轉換設定 + +| 變數名稱 | 預設值 | 說明 | +|----------|--------|------| +| `MAX_CONVERT_PROCESS` | `0` | 最大同時轉換數(0 = 無限制) | +| `FFMPEG_ARGS` | - | FFmpeg 輸入參數,例如 `-hwaccel vaapi` | +| `FFMPEG_OUTPUT_ARGS` | - | FFmpeg 輸出參數,例如 `-preset veryfast` | + +### 硬體加速範例 + +```yaml +# NVIDIA GPU 加速 +- FFMPEG_ARGS=-hwaccel cuda + +# Intel QSV 加速 +- FFMPEG_ARGS=-hwaccel qsv + +# AMD VAAPI 加速 +- FFMPEG_ARGS=-hwaccel vaapi +``` + +--- + +## 介面設定 + +| 變數名稱 | 預設值 | 說明 | +|----------|--------|------| +| `WEBROOT` | - | 子路徑部署,例如 `/convertx` | +| `HIDE_HISTORY` | `false` | 隱藏歷史紀錄頁面 | + +### 子路徑部署 + +如果需要在子路徑部署(如 `https://example.com/convertx`): + +```yaml +- WEBROOT=/convertx +``` + +--- + +## 本地化設定 + +| 變數名稱 | 預設值 | 說明 | +|----------|--------|------| +| `LANGUAGE` | `en` | 日期格式語言(BCP 47 格式) | +| `TZ` | `UTC` | 時區設定 | + +### 常用時區 + +```yaml +# 台灣 +- TZ=Asia/Taipei + +# 中國 +- TZ=Asia/Shanghai + +# 日本 +- TZ=Asia/Tokyo + +# 美國東部 +- TZ=America/New_York +``` + +--- + +## 進階設定 + +| 變數名稱 | 預設值 | 說明 | +|----------|--------|------| +| `UNAUTHENTICATED_USER_SHARING` | `false` | 未登入使用者是否共享檔案空間 | + +--- + +## 完整範例 + +### 開發環境 + +```yaml +environment: + - HTTP_ALLOWED=true + - ACCOUNT_REGISTRATION=true + - TZ=Asia/Taipei +``` + +### 生產環境 + +```yaml +environment: + - JWT_SECRET=your-very-long-and-random-secret-key-change-me + - ACCOUNT_REGISTRATION=false + - HTTP_ALLOWED=false + - TZ=Asia/Taipei + - AUTO_DELETE_EVERY_N_HOURS=24 +``` + +### 公開服務(允許匿名使用) + +```yaml +environment: + - ALLOW_UNAUTHENTICATED=true + - HIDE_HISTORY=true + - AUTO_DELETE_EVERY_N_HOURS=1 +``` + +### 帶硬體加速 + +```yaml +environment: + - JWT_SECRET=your-secret-key + - FFMPEG_ARGS=-hwaccel cuda + - FFMPEG_OUTPUT_ARGS=-c:v h264_nvenc -preset fast +``` diff --git a/docs/getting-started.md b/docs/getting-started.md index 483f2e3..77dcbf6 100644 --- a/docs/getting-started.md +++ b/docs/getting-started.md @@ -2,25 +2,28 @@ ## 系統需求 -- Docker 20.10+ -- Docker Compose v2+(推薦) -- 至少 4GB RAM(建議 8GB) -- 10GB 磁碟空間(用於 Docker image) +| 需求 | 最低 | 建議 | +|------|------|------| +| Docker | 20.10+ | 24.0+ | +| RAM | 4 GB | 8 GB | +| 磁碟空間 | 10 GB | 20 GB | +| CPU | 2 核心 | 4 核心 | -## 安裝方式 +--- -### 方法一:Docker Run +## 最快方式:一行指令 ```bash -docker run -d \ - --name convertx-cn \ - -p 3000:3000 \ - -v ./data:/app/data \ - -e TZ=Asia/Taipei \ - convertx/convertx-cn:latest +docker run -d -p 3000:3000 -v ./data:/app/data -e ACCOUNT_REGISTRATION=true convertx/convertx-cn:latest ``` -### 方法二:Docker Compose(推薦) +開啟瀏覽器訪問 `http://localhost:3000`,註冊帳號即可開始使用! + +--- + +## 推薦方式:Docker Compose + +### 1. 建立配置檔 建立 `docker-compose.yml`: @@ -37,32 +40,106 @@ services: environment: - TZ=Asia/Taipei - JWT_SECRET=請更換為一個長且隨機的字串 - - ACCOUNT_REGISTRATION=false + - ACCOUNT_REGISTRATION=true - HTTP_ALLOWED=false - AUTO_DELETE_EVERY_N_HOURS=24 ``` -啟動服務: +### 2. 啟動服務 ```bash docker compose up -d ``` -## 首次設定 +### 3. 開始使用 1. 開啟瀏覽器訪問 `http://localhost:3000` -2. 建立第一個帳號(此帳號即為管理員) -3. 登入後即可開始使用 +2. 點擊「Register」建立帳號 +3. 登入後即可開始轉換檔案! + +--- + +## 首次設定 + +### 建立管理員帳號 + +首次訪問時,ConvertX-CN 會顯示設定頁面,讓您建立第一個帳號。此帳號即為管理員。 + +### 註冊功能 + +- `ACCOUNT_REGISTRATION=true`:允許其他人註冊 +- `ACCOUNT_REGISTRATION=false`:停用註冊(單人使用) + +--- + +## 驗證安裝 + +### 檢查容器狀態 + +```bash +docker ps +# 應該看到 convertx-cn 容器正在運行 + +docker logs convertx-cn +# 應該看到 "🦊 Elysia is running at http://localhost:3000" +``` + +### 健康檢查 + +```bash +curl http://localhost:3000/healthcheck +# 應該返回 "OK" +``` + +--- ## 更新版本 ```bash +# Docker Compose docker compose pull docker compose up -d + +# 或 Docker Run +docker pull convertx/convertx-cn:latest +docker stop convertx-cn +docker rm convertx-cn +# 然後重新執行 docker run 指令 ``` +--- + +## 常見問題 + +### 無法訪問頁面 + +1. 確認容器正在運行:`docker ps` +2. 檢查連接埠是否被占用:`netstat -an | grep 3000` +3. 查看錯誤日誌:`docker logs convertx-cn` + +### 權限錯誤 + +```bash +# 確保 data 目錄有正確權限 +chmod -R 777 ./data +``` + +### 記憶體不足 + +ConvertX-CN 內建完整依賴,建議至少 4GB RAM。可透過 Docker 限制記憶體使用: + +```yaml +deploy: + resources: + limits: + memory: 4G +``` + +--- + ## 下一步 -- 查看 [環境變數設定](./configuration.md) -- 瞭解 [支援的轉換器](./converters.md) -- 閱讀 [多語言設定](./i18n.md) +- 📖 [Docker 配置](docker.md) - 進階 Docker 設定 +- ⚙️ [環境變數](environment-variables.md) - 所有可用設定 +- 🔧 [進階用法](advanced-usage.md) - 硬體加速、反向代理 +- 🌍 [多語言](i18n.md) - 語言設定與自訂 diff --git a/docs/i18n.md b/docs/i18n.md index dd58938..ffc321d 100644 --- a/docs/i18n.md +++ b/docs/i18n.md @@ -1,33 +1,158 @@ # 多語言支援(i18n) -ConvertX-CN 支援多種語言的使用者介面。 +ConvertX-CN 支援 **65 種語言**,是目前最完整的多語言檔案轉換服務。 -## 支援語言 +--- -| 語言代碼 | 語言名稱 | -| -------- | ---------------- | -| zh-TW | 繁體中文(預設) | -| zh-CN | 简体中文 | -| en | English | -| ja | 日本語 | -| ko | 한국어 | +## 支援語言列表 + +### 東亞語言(5 種) + +| 代碼 | 語言 | 原生名稱 | +|------|------|----------| +| `zh-TW` | 繁體中文(預設) | 繁體中文 | +| `zh-CN` | 簡體中文 | 简体中文 | +| `en` | 英文 | English | +| `ja` | 日文 | 日本語 | +| `ko` | 韓文 | 한국어 | + +### 西歐語言(10 種) + +| 代碼 | 語言 | 原生名稱 | +|------|------|----------| +| `de` | 德文 | Deutsch | +| `fr` | 法文 | Français | +| `es` | 西班牙文 | Español | +| `it` | 義大利文 | Italiano | +| `pt` | 葡萄牙文 | Português | +| `nl` | 荷蘭文 | Nederlands | +| `ca` | 加泰隆尼亞文 | Català | +| `eu` | 巴斯克文 | Euskara | +| `gl` | 加利西亞文 | Galego | +| `mt` | 馬爾他文 | Malti | + +### 北歐語言(5 種) + +| 代碼 | 語言 | 原生名稱 | +|------|------|----------| +| `sv` | 瑞典文 | Svenska | +| `da` | 丹麥文 | Dansk | +| `fi` | 芬蘭文 | Suomi | +| `no` | 挪威文 | Norsk | +| `is` | 冰島文 | Íslenska | + +### 東歐語言(12 種) + +| 代碼 | 語言 | 原生名稱 | +|------|------|----------| +| `ru` | 俄文 | Русский | +| `pl` | 波蘭文 | Polski | +| `uk` | 烏克蘭文 | Українська | +| `cs` | 捷克文 | Čeština | +| `hu` | 匈牙利文 | Magyar | +| `ro` | 羅馬尼亞文 | Română | +| `bg` | 保加利亞文 | Български | +| `hr` | 克羅埃西亞文 | Hrvatski | +| `sk` | 斯洛伐克文 | Slovenčina | +| `sl` | 斯洛維尼亞文 | Slovenščina | +| `sr` | 塞爾維亞文 | Српски | +| `mk` | 馬其頓文 | Македонски | + +### 波羅的海語言(3 種) + +| 代碼 | 語言 | 原生名稱 | +|------|------|----------| +| `lt` | 立陶宛文 | Lietuvių | +| `lv` | 拉脫維亞文 | Latviešu | +| `et` | 愛沙尼亞文 | Eesti | + +### 其他歐洲語言(4 種) + +| 代碼 | 語言 | 原生名稱 | +|------|------|----------| +| `el` | 希臘文 | Ελληνικά | +| `sq` | 阿爾巴尼亞文 | Shqip | +| `ga` | 愛爾蘭文 | Gaeilge | +| `cy` | 威爾斯文 | Cymraeg | + +### 中東語言(4 種) + +| 代碼 | 語言 | 原生名稱 | +|------|------|----------| +| `ar` | 阿拉伯文 | العربية | +| `he` | 希伯來文 | עברית | +| `fa` | 波斯文 | فارسی | +| `tr` | 土耳其文 | Türkçe | + +### 南亞語言(10 種) + +| 代碼 | 語言 | 原生名稱 | +|------|------|----------| +| `hi` | 印地文 | हिन्दी | +| `bn` | 孟加拉文 | বাংলা | +| `ta` | 泰米爾文 | தமிழ் | +| `te` | 泰盧固文 | తెలుగు | +| `mr` | 馬拉地文 | मराठी | +| `gu` | 古吉拉特文 | ગુજરાતી | +| `kn` | 卡納達文 | ಕನ್ನಡ | +| `ml` | 馬拉雅拉姆文 | മലയാളം | +| `ne` | 尼泊爾文 | नेपाली | +| `si` | 僧伽羅文 | සිංහල | + +### 東南亞語言(8 種) + +| 代碼 | 語言 | 原生名稱 | +|------|------|----------| +| `th` | 泰文 | ไทย | +| `vi` | 越南文 | Tiếng Việt | +| `id` | 印尼文 | Bahasa Indonesia | +| `ms` | 馬來文 | Bahasa Melayu | +| `fil` | 菲律賓文 | Filipino | +| `my` | 緬甸文 | မြန်မာ | +| `km` | 高棉文 | ខ្មែរ | +| `lo` | 寮文 | ລາວ | + +### 非洲語言(4 種) + +| 代碼 | 語言 | 原生名稱 | +|------|------|----------| +| `af` | 南非語 | Afrikaans | +| `sw` | 斯瓦希里文 | Kiswahili | +| `am` | 阿姆哈拉文 | አማርኛ | +| `zu` | 祖魯文 | isiZulu | + +--- ## 語言切換 -1. 在網站右上角的導航列可看到語言選擇器(圖示) +### 方法一:介面切換 + +1. 在網站右上角的導航列找到語言圖示(🌐) 2. 點擊後選擇偏好語言 3. 語言偏好會自動保存到 Cookie 中 -4. 下次訪問時會記住您的偏好 + +### 方法二:URL 參數 + +``` +http://localhost:3000/?lang=ja +``` + +### 方法三:瀏覽器設定 + +ConvertX-CN 會自動偵測瀏覽器的語言設定。 + +--- ## 自動偵測 -首次訪問時,系統會根據瀏覽器的語言設定自動選擇最適合的語言。 - -優先順序: +首次訪問時,系統會根據以下優先順序選擇語言: 1. Cookie 中儲存的語言偏好 -2. 瀏覽器的 `Accept-Language` 標頭 -3. 預設語言(繁體中文) +2. URL 參數中的 `lang` 值 +3. 瀏覽器的 `Accept-Language` 標頭 +4. 預設語言(繁體中文 `zh-TW`) + +--- ## 新增語言 @@ -35,55 +160,83 @@ ConvertX-CN 支援多種語言的使用者介面。 ### 1. 建立翻譯檔案 -在 `src/locales/` 目錄新增語言檔案,例如 `fr.json`(法文): +在 `src/locales/` 目錄新增語言檔案,例如 `xx.json`: ```json { "common": { "appName": "ConvertX-CN", - "poweredBy": "Propulsé par", + "poweredBy": "Powered by", + "version": "v{version}", + "loading": "...", ... }, "nav": { - "history": "Historique", + "history": "...", + "account": "...", ... - } + }, + ... } ``` -### 2. 註冊語言 +### 2. 在 index.ts 中註冊 -在 `src/i18n/index.ts` 中: +編輯 `src/i18n/index.ts`: ```typescript // 導入新語言檔案 -import fr from "../locales/fr.json"; +import xx from "../locales/xx.json"; + +// 在 SupportedLocale 類型中添加 +export type SupportedLocale = "en" | "zh-TW" | ... | "xx"; // 在 supportedLocales 陣列中添加 export const supportedLocales: LocaleConfig[] = [ - // ... 現有語言 - { code: "fr", name: "French", nativeName: "Français" }, + // ... + { code: "xx", name: "Language Name", nativeName: "原生名稱" }, ]; // 在 translations 物件中註冊 const translations: Record = { - // ... 現有翻譯 - fr: fr as TranslationData, + // ... + xx: xx as TranslationData, }; ``` -### 3. 更新類型定義 +### 3. 測試 -在 `SupportedLocale` 類型中添加新語言代碼: - -```typescript -export type SupportedLocale = "zh-TW" | "zh-CN" | "en" | "ja" | "ko" | "fr"; +```bash +bun run dev +# 訪問 http://localhost:3000/?lang=xx ``` +--- + +## 翻譯 Fallback + +如果某個翻譯鍵缺失,系統會: + +1. 嘗試使用英文(`en`)翻譯 +2. 如果英文也缺失,顯示鍵名(如 `nav.history`) + +--- + ## 貢獻翻譯 -歡迎提交 Pull Request 來新增或改進翻譯!請確保: +歡迎提交 Pull Request 來新增或改進翻譯! -- 翻譯完整(包含所有 key) -- 語法正確 -- 遵循現有的翻譯風格 +### 翻譯指南 + +1. **完整翻譯**:確保所有鍵都有翻譯 +2. **保留佔位符**:`{version}`、`{count}` 等佔位符不要翻譯 +3. **自然表達**:使用該語言的自然表達方式 +4. **一致性**:同一個詞在不同地方使用相同翻譯 +5. **測試**:在實際介面中測試翻譯效果 + +### 提交流程 + +1. Fork 此專案 +2. 建立新語言檔案或修改現有翻譯 +3. 測試確認無誤 +4. 提交 Pull Request diff --git a/docs/url-id-and-storage.md b/docs/url-id-and-storage.md new file mode 100644 index 0000000..52fe4c3 --- /dev/null +++ b/docs/url-id-and-storage.md @@ -0,0 +1,181 @@ +# URL ID 與儲存機制 + +## 檔案儲存結構 + +ConvertX-CN 使用以下目錄結構儲存檔案: + +``` +/app/data/ +├── convertx.db # SQLite 資料庫 +├── uploads/ # 上傳的原始檔案 +│ └── {user_id}/ +│ └── {job_id}/ +│ ├── file1.docx +│ └── file2.pdf +└── output/ # 轉換後的檔案 + └── {user_id}/ + └── {job_id}/ + ├── file1.pdf + └── file2.txt +``` + +--- + +## Job ID 說明 + +每次轉換任務都會產生一個唯一的 Job ID,用於: + +- 追蹤轉換進度 +- 組織檔案儲存 +- 生成下載連結 + +### Job ID 格式 + +Job ID 是一個 UUID v4 格式的字串,例如: + +``` +550e8400-e29b-41d4-a716-446655440000 +``` + +--- + +## URL 結構 + +### 結果頁面 + +``` +/results/{job_id} +``` + +例如: +``` +http://localhost:3000/results/550e8400-e29b-41d4-a716-446655440000 +``` + +### 下載單一檔案 + +``` +/download/{user_id}/{job_id}/{filename} +``` + +### 下載所有檔案(Tar) + +``` +/archive/{job_id} +``` + +--- + +## 資料持久化 + +### Docker Volume 映射 + +為了確保資料不會在容器重啟後遺失,請務必映射 `/app/data` 目錄: + +```yaml +volumes: + - ./data:/app/data +``` + +或使用 Named Volume: + +```yaml +volumes: + - convertx-data:/app/data + +volumes: + convertx-data: +``` + +--- + +## 自動清理 + +ConvertX-CN 會根據 `AUTO_DELETE_EVERY_N_HOURS` 設定自動清理過期檔案。 + +### 清理邏輯 + +1. 系統每 N 小時執行一次清理 +2. 刪除建立時間超過 N 小時的 Job +3. 同時刪除對應的上傳檔案和輸出檔案 +4. 資料庫記錄也會被清除 + +### 設定範例 + +```yaml +# 每 24 小時清理一次 +- AUTO_DELETE_EVERY_N_HOURS=24 + +# 每 1 小時清理一次(公開服務建議) +- AUTO_DELETE_EVERY_N_HOURS=1 + +# 停用自動清理 +- AUTO_DELETE_EVERY_N_HOURS=0 +``` + +--- + +## 資料庫 + +ConvertX-CN 使用 SQLite 作為資料庫,儲存於 `/app/data/convertx.db`。 + +### 資料表結構 + +#### users + +| 欄位 | 類型 | 說明 | +|------|------|------| +| id | INTEGER | 使用者 ID | +| email | TEXT | 電子郵件 | +| password | TEXT | 密碼雜湊 | + +#### jobs + +| 欄位 | 類型 | 說明 | +|------|------|------| +| id | TEXT | Job UUID | +| user_id | INTEGER | 使用者 ID | +| num_files | INTEGER | 檔案數量 | +| date_created | TEXT | 建立時間 | + +#### file_names + +| 欄位 | 類型 | 說明 | +|------|------|------| +| id | INTEGER | 檔案 ID | +| job_id | TEXT | Job UUID | +| input_file_name | TEXT | 原始檔名 | +| output_file_name | TEXT | 輸出檔名 | +| status | TEXT | 轉換狀態 | + +--- + +## 備份與還原 + +### 備份 + +```bash +# 備份整個 data 目錄 +tar -czvf convertx-backup-$(date +%Y%m%d).tar.gz ./data + +# 僅備份資料庫 +cp ./data/convertx.db ./backup-convertx-$(date +%Y%m%d).db +``` + +### 還原 + +```bash +# 還原整個 data 目錄 +tar -xzvf convertx-backup-20240101.tar.gz + +# 還原資料庫 +cp ./backup-convertx-20240101.db ./data/convertx.db +``` + +--- + +## 注意事項 + +1. **權限問題**:確保 Docker 容器有權限寫入 data 目錄 +2. **磁碟空間**:大量轉換可能佔用大量磁碟空間,建議設定自動清理 +3. **資料安全**:敏感文件轉換後建議手動刪除或縮短保留時間 diff --git a/src/i18n/index.ts b/src/i18n/index.ts index 3ecbc9e..02a6f4b 100644 --- a/src/i18n/index.ts +++ b/src/i18n/index.ts @@ -1,10 +1,90 @@ +// Core languages import en from "../locales/en.json"; import zhTW from "../locales/zh-TW.json"; import zhCN from "../locales/zh-CN.json"; import ja from "../locales/ja.json"; import ko from "../locales/ko.json"; -export type SupportedLocale = "en" | "zh-TW" | "zh-CN" | "ja" | "ko"; +// European languages +import de from "../locales/de.json"; +import fr from "../locales/fr.json"; +import es from "../locales/es.json"; +import it from "../locales/it.json"; +import pt from "../locales/pt.json"; +import ru from "../locales/ru.json"; +import nl from "../locales/nl.json"; +import pl from "../locales/pl.json"; +import uk from "../locales/uk.json"; +import cs from "../locales/cs.json"; +import sv from "../locales/sv.json"; +import da from "../locales/da.json"; +import fi from "../locales/fi.json"; +import no from "../locales/no.json"; +import el from "../locales/el.json"; +import hu from "../locales/hu.json"; +import ro from "../locales/ro.json"; +import bg from "../locales/bg.json"; +import hr from "../locales/hr.json"; +import sk from "../locales/sk.json"; +import sl from "../locales/sl.json"; +import lt from "../locales/lt.json"; +import lv from "../locales/lv.json"; +import et from "../locales/et.json"; +import sr from "../locales/sr.json"; +import ca from "../locales/ca.json"; +import eu from "../locales/eu.json"; +import gl from "../locales/gl.json"; +import is from "../locales/is.json"; +import ga from "../locales/ga.json"; +import cy from "../locales/cy.json"; +import mt from "../locales/mt.json"; +import mk from "../locales/mk.json"; +import sq from "../locales/sq.json"; + +// Middle East & Central Asian languages +import ar from "../locales/ar.json"; +import he from "../locales/he.json"; +import fa from "../locales/fa.json"; +import tr from "../locales/tr.json"; + +// South Asian languages +import hi from "../locales/hi.json"; +import bn from "../locales/bn.json"; +import ta from "../locales/ta.json"; +import te from "../locales/te.json"; +import mr from "../locales/mr.json"; +import gu from "../locales/gu.json"; +import kn from "../locales/kn.json"; +import ml from "../locales/ml.json"; +import ne from "../locales/ne.json"; +import si from "../locales/si.json"; + +// Southeast Asian languages +import th from "../locales/th.json"; +import vi from "../locales/vi.json"; +import id from "../locales/id.json"; +import ms from "../locales/ms.json"; +import fil from "../locales/fil.json"; +import my from "../locales/my.json"; +import km from "../locales/km.json"; +import lo from "../locales/lo.json"; + +// African languages +import af from "../locales/af.json"; +import sw from "../locales/sw.json"; +import am from "../locales/am.json"; +import zu from "../locales/zu.json"; + +export type SupportedLocale = + | "en" | "zh-TW" | "zh-CN" | "ja" | "ko" + | "de" | "fr" | "es" | "it" | "pt" | "ru" | "nl" | "pl" | "uk" + | "cs" | "sv" | "da" | "fi" | "no" | "el" | "hu" | "ro" | "bg" + | "hr" | "sk" | "sl" | "lt" | "lv" | "et" | "sr" | "ca" | "eu" + | "gl" | "is" | "ga" | "cy" | "mt" | "mk" | "sq" + | "ar" | "he" | "fa" | "tr" + | "hi" | "bn" | "ta" | "te" | "mr" | "gu" | "kn" | "ml" | "ne" | "si" + | "th" | "vi" | "id" | "ms" | "fil" | "my" | "km" | "lo" + | "af" | "sw" | "am" | "zu"; export interface LocaleConfig { code: SupportedLocale; @@ -13,11 +93,82 @@ export interface LocaleConfig { } export const supportedLocales: LocaleConfig[] = [ + // Primary languages { code: "zh-TW", name: "Chinese (Traditional)", nativeName: "繁體中文" }, { code: "zh-CN", name: "Chinese (Simplified)", nativeName: "简体中文" }, { code: "en", name: "English", nativeName: "English" }, { code: "ja", name: "Japanese", nativeName: "日本語" }, { code: "ko", name: "Korean", nativeName: "한국어" }, + + // European languages + { code: "de", name: "German", nativeName: "Deutsch" }, + { code: "fr", name: "French", nativeName: "Français" }, + { code: "es", name: "Spanish", nativeName: "Español" }, + { code: "it", name: "Italian", nativeName: "Italiano" }, + { code: "pt", name: "Portuguese", nativeName: "Português" }, + { code: "ru", name: "Russian", nativeName: "Русский" }, + { code: "nl", name: "Dutch", nativeName: "Nederlands" }, + { code: "pl", name: "Polish", nativeName: "Polski" }, + { code: "uk", name: "Ukrainian", nativeName: "Українська" }, + { code: "cs", name: "Czech", nativeName: "Čeština" }, + { code: "sv", name: "Swedish", nativeName: "Svenska" }, + { code: "da", name: "Danish", nativeName: "Dansk" }, + { code: "fi", name: "Finnish", nativeName: "Suomi" }, + { code: "no", name: "Norwegian", nativeName: "Norsk" }, + { code: "el", name: "Greek", nativeName: "Ελληνικά" }, + { code: "hu", name: "Hungarian", nativeName: "Magyar" }, + { code: "ro", name: "Romanian", nativeName: "Română" }, + { code: "bg", name: "Bulgarian", nativeName: "Български" }, + { code: "hr", name: "Croatian", nativeName: "Hrvatski" }, + { code: "sk", name: "Slovak", nativeName: "Slovenčina" }, + { code: "sl", name: "Slovenian", nativeName: "Slovenščina" }, + { code: "lt", name: "Lithuanian", nativeName: "Lietuvių" }, + { code: "lv", name: "Latvian", nativeName: "Latviešu" }, + { code: "et", name: "Estonian", nativeName: "Eesti" }, + { code: "sr", name: "Serbian", nativeName: "Српски" }, + { code: "ca", name: "Catalan", nativeName: "Català" }, + { code: "eu", name: "Basque", nativeName: "Euskara" }, + { code: "gl", name: "Galician", nativeName: "Galego" }, + { code: "is", name: "Icelandic", nativeName: "Íslenska" }, + { code: "ga", name: "Irish", nativeName: "Gaeilge" }, + { code: "cy", name: "Welsh", nativeName: "Cymraeg" }, + { code: "mt", name: "Maltese", nativeName: "Malti" }, + { code: "mk", name: "Macedonian", nativeName: "Македонски" }, + { code: "sq", name: "Albanian", nativeName: "Shqip" }, + + // Middle East & Central Asian languages + { code: "ar", name: "Arabic", nativeName: "العربية" }, + { code: "he", name: "Hebrew", nativeName: "עברית" }, + { code: "fa", name: "Persian", nativeName: "فارسی" }, + { code: "tr", name: "Turkish", nativeName: "Türkçe" }, + + // South Asian languages + { code: "hi", name: "Hindi", nativeName: "हिन्दी" }, + { code: "bn", name: "Bengali", nativeName: "বাংলা" }, + { code: "ta", name: "Tamil", nativeName: "தமிழ்" }, + { code: "te", name: "Telugu", nativeName: "తెలుగు" }, + { code: "mr", name: "Marathi", nativeName: "मराठी" }, + { code: "gu", name: "Gujarati", nativeName: "ગુજરાતી" }, + { code: "kn", name: "Kannada", nativeName: "ಕನ್ನಡ" }, + { code: "ml", name: "Malayalam", nativeName: "മലയാളം" }, + { code: "ne", name: "Nepali", nativeName: "नेपाली" }, + { code: "si", name: "Sinhala", nativeName: "සිංහල" }, + + // Southeast Asian languages + { code: "th", name: "Thai", nativeName: "ไทย" }, + { code: "vi", name: "Vietnamese", nativeName: "Tiếng Việt" }, + { code: "id", name: "Indonesian", nativeName: "Bahasa Indonesia" }, + { code: "ms", name: "Malay", nativeName: "Bahasa Melayu" }, + { code: "fil", name: "Filipino", nativeName: "Filipino" }, + { code: "my", name: "Burmese", nativeName: "မြန်မာ" }, + { code: "km", name: "Khmer", nativeName: "ខ្មែរ" }, + { code: "lo", name: "Lao", nativeName: "ລາວ" }, + + // African languages + { code: "af", name: "Afrikaans", nativeName: "Afrikaans" }, + { code: "sw", name: "Swahili", nativeName: "Kiswahili" }, + { code: "am", name: "Amharic", nativeName: "አማርኛ" }, + { code: "zu", name: "Zulu", nativeName: "isiZulu" }, ]; // Default to zh-TW, fallback to en @@ -30,11 +181,82 @@ export type TranslationKey = keyof TranslationData; export type NestedTranslationKey = keyof TranslationData[T]; const translations: Record = { + // Core languages en, "zh-TW": zhTW as TranslationData, "zh-CN": zhCN as TranslationData, ja: ja as TranslationData, ko: ko as TranslationData, + + // European languages + de: de as TranslationData, + fr: fr as TranslationData, + es: es as TranslationData, + it: it as TranslationData, + pt: pt as TranslationData, + ru: ru as TranslationData, + nl: nl as TranslationData, + pl: pl as TranslationData, + uk: uk as TranslationData, + cs: cs as TranslationData, + sv: sv as TranslationData, + da: da as TranslationData, + fi: fi as TranslationData, + no: no as TranslationData, + el: el as TranslationData, + hu: hu as TranslationData, + ro: ro as TranslationData, + bg: bg as TranslationData, + hr: hr as TranslationData, + sk: sk as TranslationData, + sl: sl as TranslationData, + lt: lt as TranslationData, + lv: lv as TranslationData, + et: et as TranslationData, + sr: sr as TranslationData, + ca: ca as TranslationData, + eu: eu as TranslationData, + gl: gl as TranslationData, + is: is as TranslationData, + ga: ga as TranslationData, + cy: cy as TranslationData, + mt: mt as TranslationData, + mk: mk as TranslationData, + sq: sq as TranslationData, + + // Middle East & Central Asian languages + ar: ar as TranslationData, + he: he as TranslationData, + fa: fa as TranslationData, + tr: tr as TranslationData, + + // South Asian languages + hi: hi as TranslationData, + bn: bn as TranslationData, + ta: ta as TranslationData, + te: te as TranslationData, + mr: mr as TranslationData, + gu: gu as TranslationData, + kn: kn as TranslationData, + ml: ml as TranslationData, + ne: ne as TranslationData, + si: si as TranslationData, + + // Southeast Asian languages + th: th as TranslationData, + vi: vi as TranslationData, + id: id as TranslationData, + ms: ms as TranslationData, + fil: fil as TranslationData, + my: my as TranslationData, + km: km as TranslationData, + lo: lo as TranslationData, + + // African languages + af: af as TranslationData, + sw: sw as TranslationData, + am: am as TranslationData, + zu: zu as TranslationData, }; /** @@ -51,16 +273,14 @@ export function t( key: NestedTranslationKey, params?: Record, ): string { - const translation = translations[locale]?.[category]?.[key as keyof TranslationData[T]]; + const localeData = translations[locale]; + const translation = localeData?.[category]?.[key as keyof TranslationData[T]]; if (typeof translation !== "string") { // Fallback to English const fallback = - translations[defaultLocale]?.[category]?.[key as keyof TranslationData[T]]; + translations[fallbackLocale]?.[category]?.[key as keyof TranslationData[T]]; if (typeof fallback !== "string") { - // Log missing translation in development - // eslint-disable-next-line no-console - console.warn(`Missing translation: ${category}.${String(key)}`); return `${category}.${String(key)}`; } return interpolate(fallback, params); @@ -105,9 +325,12 @@ export function detectLocale(acceptLanguage?: string): SupportedLocale { // Try to find a match for (const lang of languages) { - // Direct match - if (isValidLocale(lang.code)) { - return lang.code as SupportedLocale; + // Direct match (case-insensitive) + const directMatch = supportedLocales.find( + (l) => l.code.toLowerCase() === lang.code + ); + if (directMatch) { + return directMatch.code; } // Check for language variants (e.g., zh-tw, zh-hant) @@ -120,11 +343,16 @@ export function detectLocale(acceptLanguage?: string): SupportedLocale { } } - // Check base language + // Check base language (e.g., "en-US" -> "en") const baseCode = lang.code.split("-")[0]; - if (baseCode === "ja") return "ja"; - if (baseCode === "ko") return "ko"; - if (baseCode === "en") return "en"; + if (baseCode) { + const baseMatch = supportedLocales.find( + (l) => l.code.toLowerCase() === baseCode || l.code.toLowerCase().startsWith(baseCode + "-") + ); + if (baseMatch) { + return baseMatch.code; + } + } } return defaultLocale; @@ -173,7 +401,7 @@ export type Translator = ReturnType; // Export all translations for client-side use export function getTranslations(locale: SupportedLocale): TranslationData { - return translations[locale] ?? translations[defaultLocale]; + return translations[locale] ?? translations[fallbackLocale]; } // Export locale codes as array diff --git a/src/locales/af.json b/src/locales/af.json new file mode 100644 index 0000000..6705f4b --- /dev/null +++ b/src/locales/af.json @@ -0,0 +1,106 @@ +{ + "common": { + "appName": "ConvertX-CN", + "poweredBy": "Aangedryf deur", + "version": "v{version}", + "loading": "Laai...", + "error": "Fout", + "success": "Sukses", + "confirm": "Bevestig", + "cancel": "Kanselleer", + "close": "Sluit", + "save": "Stoor", + "delete": "Vee uit", + "remove": "Verwyder", + "download": "Laai af", + "upload": "Laai op", + "submit": "Dien in", + "back": "Terug", + "next": "Volgende", + "yes": "Ja", + "no": "Nee" + }, + "nav": { + "history": "Geskiedenis", + "account": "Rekening", + "logout": "Teken uit", + "login": "Teken in", + "register": "Registreer", + "language": "Taal" + }, + "convert": { + "title": "Omskakel", + "titleWithType": "Omskakel .{fileType}", + "chooseFile": "Kies 'n lêer", + "orDragHere": "of sleep dit hierheen", + "searchConversions": "Soek vir omskakelings", + "convertTo": "Omskakel na", + "convertButton": "Omskakel", + "uploading": "Laai op...", + "processing": "Verwerk..." + }, + "results": { + "title": "Resultate", + "convertedFileName": "Omgeskakelde lêernaam", + "status": "Status", + "actions": "Aksies", + "downloadAll": "Alles", + "downloadTar": "Tar", + "deleteJob": "Vee uit", + "noFiles": "Nog geen lêers omgeskakel nie.", + "statusPending": "Hangend", + "statusCompleted": "Voltooi", + "statusFailed": "Misluk" + }, + "history": { + "title": "Resultate", + "time": "Tyd", + "files": "Lêers", + "filesDone": "Lêers klaar", + "status": "Status", + "actions": "Aksies", + "expandDetails": "Brei besonderhede uit", + "detailedFileInfo": "Gedetailleerde lêerinligting:", + "deleteSelected": "Vee gekose uit", + "selectAll": "Kies alles", + "confirmDelete": "Is jy seker jy wil {count} taak/take uitvee? Hierdie aksie kan nie ongedaan gemaak word nie.", + "deleteSuccess": "{deleted} taak/take suksesvol uitgevee.", + "deleteFailed": "Kon nie {failed} taak/take uitvee nie.", + "deleteError": "'n Fout het voorgekom tydens die uitvee van take. Probeer asseblief weer." + }, + "auth": { + "email": "E-pos", + "password": "Wagwoord", + "currentPassword": "Huidige wagwoord", + "newPassword": "Wagwoord (laat leeg vir onveranderd)", + "loginButton": "Teken in", + "registerButton": "Registreer", + "updateButton": "Werk op", + "createAccount": "Skep rekening", + "invalidCredentials": "Ongeldige geloofsbriewe.", + "emailInUse": "E-pos word reeds gebruik.", + "unauthorized": "Ongemagtig", + "cookiesRequired": "Koekies moet geaktiveer wees om hierdie toepassing te gebruik.", + "noCookies": "Geen verifikasie-koekie nie, miskien blokkeer jou blaaier koekies." + }, + "setup": { + "welcome": "Welkom by ConvertX-CN!", + "createYourAccount": "Skep jou rekening", + "reportIssues": "Rapporteer enige probleme op", + "github": "GitHub" + }, + "errors": { + "jobNotFound": "Taak nie gevind nie.", + "fileNotFound": "Lêer nie gevind nie.", + "uploadFailed": "Oplaai het misluk.", + "conversionFailed": "Omskakeling het misluk.", + "serverError": "Bediener fout." + }, + "upload": { + "success": "Lêers suksesvol opgelaai.", + "dragDrop": "Laat lêers hier val" + }, + "file": { + "size": "{size} kB" + } +} diff --git a/src/locales/am.json b/src/locales/am.json new file mode 100644 index 0000000..b2579fe --- /dev/null +++ b/src/locales/am.json @@ -0,0 +1,106 @@ +{ + "common": { + "appName": "ConvertX-CN", + "poweredBy": "የሚሰራው በ", + "version": "v{version}", + "loading": "በመጫን ላይ...", + "error": "ስህተት", + "success": "ተሳክቷል", + "confirm": "አረጋግጥ", + "cancel": "ሰርዝ", + "close": "ዝጋ", + "save": "አስቀምጥ", + "delete": "ሰርዝ", + "remove": "አስወግድ", + "download": "አውርድ", + "upload": "ስቀል", + "submit": "አስገባ", + "back": "ተመለስ", + "next": "ቀጣይ", + "yes": "አዎ", + "no": "አይ" + }, + "nav": { + "history": "ታሪክ", + "account": "መለያ", + "logout": "ውጣ", + "login": "ግባ", + "register": "ተመዝገብ", + "language": "ቋንቋ" + }, + "convert": { + "title": "ቀይር", + "titleWithType": ".{fileType} ቀይር", + "chooseFile": "ፋይል ይምረጡ", + "orDragHere": "ወይም እዚህ ይጎትቱ", + "searchConversions": "ቅየራዎችን ይፈልጉ", + "convertTo": "ወደ ቀይር", + "convertButton": "ቀይር", + "uploading": "በመስቀል ላይ...", + "processing": "በማስኬድ ላይ..." + }, + "results": { + "title": "ውጤቶች", + "convertedFileName": "የተቀየረ ፋይል ስም", + "status": "ሁኔታ", + "actions": "ድርጊቶች", + "downloadAll": "ሁሉም", + "downloadTar": "Tar", + "deleteJob": "ሰርዝ", + "noFiles": "እስካሁን የተቀየሩ ፋይሎች የሉም።", + "statusPending": "በመጠባበቅ ላይ", + "statusCompleted": "ተጠናቋል", + "statusFailed": "አልተሳካም" + }, + "history": { + "title": "ውጤቶች", + "time": "ጊዜ", + "files": "ፋይሎች", + "filesDone": "የተጠናቀቁ ፋይሎች", + "status": "ሁኔታ", + "actions": "ድርጊቶች", + "expandDetails": "ዝርዝሮችን አስፋ", + "detailedFileInfo": "ዝርዝር የፋይል መረጃ:", + "deleteSelected": "የተመረጡትን ሰርዝ", + "selectAll": "ሁሉንም ምረጥ", + "confirmDelete": "{count} ስራ(ዎች)ን መሰረዝ እንደሚፈልጉ እርግጠኛ ነዎት? ይህ ድርጊት ሊቀለበስ አይችልም።", + "deleteSuccess": "{deleted} ስራ(ዎች) በተሳካ ሁኔታ ተሰርዘዋል።", + "deleteFailed": "{failed} ስራ(ዎች)ን መሰረዝ አልተሳካም።", + "deleteError": "ስራዎችን በመሰረዝ ጊዜ ስህተት ተከስቷል። እባክዎ እንደገና ይሞክሩ።" + }, + "auth": { + "email": "ኢሜይል", + "password": "የይለፍ ቃል", + "currentPassword": "የአሁኑ የይለፍ ቃል", + "newPassword": "የይለፍ ቃል (ሳይቀየር ለመተው ባዶ ይተው)", + "loginButton": "ግባ", + "registerButton": "ተመዝገብ", + "updateButton": "አዘምን", + "createAccount": "መለያ ፍጠር", + "invalidCredentials": "ልክ ያልሆነ መረጃ።", + "emailInUse": "ኢሜይሉ አስቀድሞ ጥቅም ላይ ውሏል።", + "unauthorized": "ያልተፈቀደ", + "cookiesRequired": "ይህን መተግበሪያ ለመጠቀም ኩኪዎች መንቃት አለባቸው።", + "noCookies": "የማረጋገጫ ኩኪ የለም፣ ምናልባት ብራውዘርዎ ኩኪዎችን እያገደ ሊሆን ይችላል።" + }, + "setup": { + "welcome": "ወደ ConvertX-CN እንኳን ደህና መጡ!", + "createYourAccount": "መለያዎን ይፍጠሩ", + "reportIssues": "ማንኛውንም ችግር ያሳውቁ በ", + "github": "GitHub" + }, + "errors": { + "jobNotFound": "ስራ አልተገኘም።", + "fileNotFound": "ፋይል አልተገኘም።", + "uploadFailed": "መስቀል አልተሳካም።", + "conversionFailed": "መቀየር አልተሳካም።", + "serverError": "የሰርቨር ስህተት።" + }, + "upload": { + "success": "ፋይሎች በተሳካ ሁኔታ ተሰቅለዋል።", + "dragDrop": "ፋይሎችን እዚህ ይጣሉ" + }, + "file": { + "size": "{size} kB" + } +} diff --git a/src/locales/ar.json b/src/locales/ar.json new file mode 100644 index 0000000..04e9313 --- /dev/null +++ b/src/locales/ar.json @@ -0,0 +1,106 @@ +{ + "common": { + "appName": "ConvertX-CN", + "poweredBy": "مدعوم من", + "version": "v{version}", + "loading": "جاري التحميل...", + "error": "خطأ", + "success": "نجاح", + "confirm": "تأكيد", + "cancel": "إلغاء", + "close": "إغلاق", + "save": "حفظ", + "delete": "حذف", + "remove": "إزالة", + "download": "تحميل", + "upload": "رفع", + "submit": "إرسال", + "back": "رجوع", + "next": "التالي", + "yes": "نعم", + "no": "لا" + }, + "nav": { + "history": "السجل", + "account": "الحساب", + "logout": "تسجيل الخروج", + "login": "تسجيل الدخول", + "register": "التسجيل", + "language": "اللغة" + }, + "convert": { + "title": "تحويل", + "titleWithType": "تحويل .{fileType}", + "chooseFile": "اختر ملفاً", + "orDragHere": "أو اسحبه هنا", + "searchConversions": "البحث عن التحويلات", + "convertTo": "تحويل إلى", + "convertButton": "تحويل", + "uploading": "جاري الرفع...", + "processing": "جاري المعالجة..." + }, + "results": { + "title": "النتائج", + "convertedFileName": "اسم الملف المحوّل", + "status": "الحالة", + "actions": "الإجراءات", + "downloadAll": "الكل", + "downloadTar": "Tar", + "deleteJob": "حذف", + "noFiles": "لم يتم تحويل أي ملفات بعد.", + "statusPending": "قيد الانتظار", + "statusCompleted": "مكتمل", + "statusFailed": "فشل" + }, + "history": { + "title": "النتائج", + "time": "الوقت", + "files": "الملفات", + "filesDone": "الملفات المنجزة", + "status": "الحالة", + "actions": "الإجراءات", + "expandDetails": "توسيع التفاصيل", + "detailedFileInfo": "معلومات تفصيلية عن الملف:", + "deleteSelected": "حذف المحدد", + "selectAll": "تحديد الكل", + "confirmDelete": "هل أنت متأكد من حذف {count} مهمة؟ لا يمكن التراجع عن هذا الإجراء.", + "deleteSuccess": "تم حذف {deleted} مهمة بنجاح.", + "deleteFailed": "فشل حذف {failed} مهمة.", + "deleteError": "حدث خطأ أثناء حذف المهام. يرجى المحاولة مرة أخرى." + }, + "auth": { + "email": "البريد الإلكتروني", + "password": "كلمة المرور", + "currentPassword": "كلمة المرور الحالية", + "newPassword": "كلمة المرور (اتركها فارغة لعدم التغيير)", + "loginButton": "تسجيل الدخول", + "registerButton": "التسجيل", + "updateButton": "تحديث", + "createAccount": "إنشاء حساب", + "invalidCredentials": "بيانات الاعتماد غير صالحة.", + "emailInUse": "البريد الإلكتروني مستخدم بالفعل.", + "unauthorized": "غير مصرح", + "cookiesRequired": "يجب تفعيل ملفات تعريف الارتباط لاستخدام هذا التطبيق.", + "noCookies": "لا يوجد ملف تعريف ارتباط للمصادقة، ربما يقوم متصفحك بحظر ملفات تعريف الارتباط." + }, + "setup": { + "welcome": "مرحباً بك في ConvertX-CN!", + "createYourAccount": "أنشئ حسابك", + "reportIssues": "الإبلاغ عن المشاكل على", + "github": "GitHub" + }, + "errors": { + "jobNotFound": "المهمة غير موجودة.", + "fileNotFound": "الملف غير موجود.", + "uploadFailed": "فشل الرفع.", + "conversionFailed": "فشل التحويل.", + "serverError": "خطأ في الخادم." + }, + "upload": { + "success": "تم رفع الملفات بنجاح.", + "dragDrop": "أفلت الملفات هنا" + }, + "file": { + "size": "{size} كيلوبايت" + } +} diff --git a/src/locales/bg.json b/src/locales/bg.json new file mode 100644 index 0000000..2f16037 --- /dev/null +++ b/src/locales/bg.json @@ -0,0 +1,106 @@ +{ + "common": { + "appName": "ConvertX-CN", + "poweredBy": "Задвижвано от", + "version": "v{version}", + "loading": "Зареждане...", + "error": "Грешка", + "success": "Успех", + "confirm": "Потвърди", + "cancel": "Отказ", + "close": "Затвори", + "save": "Запази", + "delete": "Изтрий", + "remove": "Премахни", + "download": "Изтегли", + "upload": "Качи", + "submit": "Изпрати", + "back": "Назад", + "next": "Напред", + "yes": "Да", + "no": "Не" + }, + "nav": { + "history": "История", + "account": "Акаунт", + "logout": "Изход", + "login": "Вход", + "register": "Регистрация", + "language": "Език" + }, + "convert": { + "title": "Конвертиране", + "titleWithType": "Конвертиране на .{fileType}", + "chooseFile": "Изберете файл", + "orDragHere": "или го плъзнете тук", + "searchConversions": "Търсене на конверсии", + "convertTo": "Конвертирай в", + "convertButton": "Конвертирай", + "uploading": "Качване...", + "processing": "Обработка..." + }, + "results": { + "title": "Резултати", + "convertedFileName": "Име на конвертирания файл", + "status": "Статус", + "actions": "Действия", + "downloadAll": "Всички", + "downloadTar": "Tar", + "deleteJob": "Изтрий", + "noFiles": "Все още няма конвертирани файлове.", + "statusPending": "Изчакване", + "statusCompleted": "Завършено", + "statusFailed": "Неуспешно" + }, + "history": { + "title": "Резултати", + "time": "Време", + "files": "Файлове", + "filesDone": "Готови файлове", + "status": "Статус", + "actions": "Действия", + "expandDetails": "Разгъни детайлите", + "detailedFileInfo": "Подробна информация за файла:", + "deleteSelected": "Изтрий избраните", + "selectAll": "Избери всички", + "confirmDelete": "Сигурни ли сте, че искате да изтриете {count} задача(и)? Това действие не може да бъде отменено.", + "deleteSuccess": "Успешно изтрити {deleted} задача(и).", + "deleteFailed": "Неуспешно изтриване на {failed} задача(и).", + "deleteError": "Възникна грешка при изтриването на задачи. Моля, опитайте отново." + }, + "auth": { + "email": "Имейл", + "password": "Парола", + "currentPassword": "Текуща парола", + "newPassword": "Парола (оставете празно за непроменена)", + "loginButton": "Вход", + "registerButton": "Регистрация", + "updateButton": "Актуализиране", + "createAccount": "Създай акаунт", + "invalidCredentials": "Невалидни идентификационни данни.", + "emailInUse": "Имейлът вече се използва.", + "unauthorized": "Неоторизиран", + "cookiesRequired": "Бисквитките трябва да са активирани, за да използвате това приложение.", + "noCookies": "Няма бисквитка за удостоверяване, може би браузърът ви блокира бисквитките." + }, + "setup": { + "welcome": "Добре дошли в ConvertX-CN!", + "createYourAccount": "Създайте своя акаунт", + "reportIssues": "Докладвайте проблеми на", + "github": "GitHub" + }, + "errors": { + "jobNotFound": "Задачата не е намерена.", + "fileNotFound": "Файлът не е намерен.", + "uploadFailed": "Качването е неуспешно.", + "conversionFailed": "Конвертирането е неуспешно.", + "serverError": "Сървърна грешка." + }, + "upload": { + "success": "Файловете са качени успешно.", + "dragDrop": "Пуснете файловете тук" + }, + "file": { + "size": "{size} kB" + } +} diff --git a/src/locales/bn.json b/src/locales/bn.json new file mode 100644 index 0000000..418e8ea --- /dev/null +++ b/src/locales/bn.json @@ -0,0 +1,106 @@ +{ + "common": { + "appName": "ConvertX-CN", + "poweredBy": "দ্বারা চালিত", + "version": "v{version}", + "loading": "লোড হচ্ছে...", + "error": "ত্রুটি", + "success": "সফল", + "confirm": "নিশ্চিত করুন", + "cancel": "বাতিল", + "close": "বন্ধ করুন", + "save": "সংরক্ষণ করুন", + "delete": "মুছুন", + "remove": "সরান", + "download": "ডাউনলোড", + "upload": "আপলোড", + "submit": "জমা দিন", + "back": "পেছনে", + "next": "পরবর্তী", + "yes": "হ্যাঁ", + "no": "না" + }, + "nav": { + "history": "ইতিহাস", + "account": "অ্যাকাউন্ট", + "logout": "লগআউট", + "login": "লগইন", + "register": "নিবন্ধন", + "language": "ভাষা" + }, + "convert": { + "title": "রূপান্তর করুন", + "titleWithType": ".{fileType} রূপান্তর করুন", + "chooseFile": "একটি ফাইল নির্বাচন করুন", + "orDragHere": "অথবা এখানে টেনে আনুন", + "searchConversions": "রূপান্তর খুঁজুন", + "convertTo": "এতে রূপান্তর করুন", + "convertButton": "রূপান্তর করুন", + "uploading": "আপলোড হচ্ছে...", + "processing": "প্রক্রিয়াকরণ হচ্ছে..." + }, + "results": { + "title": "ফলাফল", + "convertedFileName": "রূপান্তরিত ফাইলের নাম", + "status": "স্থিতি", + "actions": "ক্রিয়াকলাপ", + "downloadAll": "সব", + "downloadTar": "Tar", + "deleteJob": "মুছুন", + "noFiles": "এখনও কোনো ফাইল রূপান্তরিত হয়নি।", + "statusPending": "অপেক্ষমাণ", + "statusCompleted": "সম্পন্ন", + "statusFailed": "ব্যর্থ" + }, + "history": { + "title": "ফলাফল", + "time": "সময়", + "files": "ফাইল", + "filesDone": "সম্পন্ন ফাইল", + "status": "স্থিতি", + "actions": "ক্রিয়াকলাপ", + "expandDetails": "বিস্তারিত দেখুন", + "detailedFileInfo": "বিস্তারিত ফাইল তথ্য:", + "deleteSelected": "নির্বাচিত মুছুন", + "selectAll": "সব নির্বাচন করুন", + "confirmDelete": "আপনি কি নিশ্চিত যে আপনি {count}টি কাজ মুছতে চান? এই ক্রিয়া পূর্বাবস্থায় ফেরানো যাবে না।", + "deleteSuccess": "সফলভাবে {deleted}টি কাজ মুছে ফেলা হয়েছে।", + "deleteFailed": "{failed}টি কাজ মুছতে ব্যর্থ।", + "deleteError": "কাজ মুছতে গিয়ে একটি ত্রুটি ঘটেছে। অনুগ্রহ করে আবার চেষ্টা করুন।" + }, + "auth": { + "email": "ইমেইল", + "password": "পাসওয়ার্ড", + "currentPassword": "বর্তমান পাসওয়ার্ড", + "newPassword": "পাসওয়ার্ড (অপরিবর্তিত রাখতে ফাঁকা রাখুন)", + "loginButton": "লগইন", + "registerButton": "নিবন্ধন", + "updateButton": "আপডেট", + "createAccount": "অ্যাকাউন্ট তৈরি করুন", + "invalidCredentials": "অবৈধ শংসাপত্র।", + "emailInUse": "ইমেইল ইতিমধ্যে ব্যবহৃত।", + "unauthorized": "অননুমোদিত", + "cookiesRequired": "এই অ্যাপ ব্যবহার করতে কুকি সক্ষম করা উচিত।", + "noCookies": "কোনো প্রমাণীকরণ কুকি নেই, সম্ভবত আপনার ব্রাউজার কুকি ব্লক করছে।" + }, + "setup": { + "welcome": "ConvertX-CN-এ স্বাগতম!", + "createYourAccount": "আপনার অ্যাকাউন্ট তৈরি করুন", + "reportIssues": "সমস্যা রিপোর্ট করুন", + "github": "GitHub" + }, + "errors": { + "jobNotFound": "কাজ পাওয়া যায়নি।", + "fileNotFound": "ফাইল পাওয়া যায়নি।", + "uploadFailed": "আপলোড ব্যর্থ।", + "conversionFailed": "রূপান্তর ব্যর্থ।", + "serverError": "সার্ভার ত্রুটি।" + }, + "upload": { + "success": "ফাইল সফলভাবে আপলোড হয়েছে।", + "dragDrop": "এখানে ফাইল ছেড়ে দিন" + }, + "file": { + "size": "{size} kB" + } +} diff --git a/src/locales/ca.json b/src/locales/ca.json new file mode 100644 index 0000000..67333e3 --- /dev/null +++ b/src/locales/ca.json @@ -0,0 +1,106 @@ +{ + "common": { + "appName": "ConvertX-CN", + "poweredBy": "Impulsat per", + "version": "v{version}", + "loading": "Carregant...", + "error": "Error", + "success": "Èxit", + "confirm": "Confirmar", + "cancel": "Cancel·lar", + "close": "Tancar", + "save": "Desar", + "delete": "Eliminar", + "remove": "Treure", + "download": "Descarregar", + "upload": "Pujar", + "submit": "Enviar", + "back": "Enrere", + "next": "Següent", + "yes": "Sí", + "no": "No" + }, + "nav": { + "history": "Historial", + "account": "Compte", + "logout": "Tancar sessió", + "login": "Iniciar sessió", + "register": "Registrar-se", + "language": "Idioma" + }, + "convert": { + "title": "Convertir", + "titleWithType": "Convertir .{fileType}", + "chooseFile": "Tria un fitxer", + "orDragHere": "o arrossega'l aquí", + "searchConversions": "Cercar conversions", + "convertTo": "Convertir a", + "convertButton": "Convertir", + "uploading": "Pujant...", + "processing": "Processant..." + }, + "results": { + "title": "Resultats", + "convertedFileName": "Nom del fitxer convertit", + "status": "Estat", + "actions": "Accions", + "downloadAll": "Tot", + "downloadTar": "Tar", + "deleteJob": "Eliminar", + "noFiles": "Encara no s'han convertit fitxers.", + "statusPending": "Pendent", + "statusCompleted": "Completat", + "statusFailed": "Fallat" + }, + "history": { + "title": "Resultats", + "time": "Hora", + "files": "Fitxers", + "filesDone": "Fitxers completats", + "status": "Estat", + "actions": "Accions", + "expandDetails": "Ampliar detalls", + "detailedFileInfo": "Informació detallada del fitxer:", + "deleteSelected": "Eliminar seleccionats", + "selectAll": "Seleccionar tot", + "confirmDelete": "Esteu segur que voleu eliminar {count} tasca/es? Aquesta acció no es pot desfer.", + "deleteSuccess": "S'han eliminat {deleted} tasca/es correctament.", + "deleteFailed": "No s'han pogut eliminar {failed} tasca/es.", + "deleteError": "S'ha produït un error en eliminar les tasques. Si us plau, torneu-ho a provar." + }, + "auth": { + "email": "Correu electrònic", + "password": "Contrasenya", + "currentPassword": "Contrasenya actual", + "newPassword": "Contrasenya (deixa en blanc si no canvia)", + "loginButton": "Iniciar sessió", + "registerButton": "Registrar-se", + "updateButton": "Actualitzar", + "createAccount": "Crear compte", + "invalidCredentials": "Credencials no vàlides.", + "emailInUse": "El correu electrònic ja està en ús.", + "unauthorized": "No autoritzat", + "cookiesRequired": "Les galetes han d'estar habilitades per utilitzar aquesta aplicació.", + "noCookies": "No hi ha galeta d'autenticació, potser el vostre navegador bloqueja les galetes." + }, + "setup": { + "welcome": "Benvingut a ConvertX-CN!", + "createYourAccount": "Creeu el vostre compte", + "reportIssues": "Informeu de qualsevol problema a", + "github": "GitHub" + }, + "errors": { + "jobNotFound": "Tasca no trobada.", + "fileNotFound": "Fitxer no trobat.", + "uploadFailed": "Error en pujar.", + "conversionFailed": "Error en la conversió.", + "serverError": "Error del servidor." + }, + "upload": { + "success": "Fitxers pujats correctament.", + "dragDrop": "Deixa anar els fitxers aquí" + }, + "file": { + "size": "{size} kB" + } +} diff --git a/src/locales/cs.json b/src/locales/cs.json new file mode 100644 index 0000000..4021053 --- /dev/null +++ b/src/locales/cs.json @@ -0,0 +1,106 @@ +{ + "common": { + "appName": "ConvertX-CN", + "poweredBy": "Poháněno", + "version": "v{version}", + "loading": "Načítání...", + "error": "Chyba", + "success": "Úspěch", + "confirm": "Potvrdit", + "cancel": "Zrušit", + "close": "Zavřít", + "save": "Uložit", + "delete": "Smazat", + "remove": "Odstranit", + "download": "Stáhnout", + "upload": "Nahrát", + "submit": "Odeslat", + "back": "Zpět", + "next": "Další", + "yes": "Ano", + "no": "Ne" + }, + "nav": { + "history": "Historie", + "account": "Účet", + "logout": "Odhlásit", + "login": "Přihlásit", + "register": "Registrovat", + "language": "Jazyk" + }, + "convert": { + "title": "Převést", + "titleWithType": "Převést .{fileType}", + "chooseFile": "Vyberte soubor", + "orDragHere": "nebo ho sem přetáhněte", + "searchConversions": "Hledat převody", + "convertTo": "Převést na", + "convertButton": "Převést", + "uploading": "Nahrávání...", + "processing": "Zpracování..." + }, + "results": { + "title": "Výsledky", + "convertedFileName": "Název převedeného souboru", + "status": "Stav", + "actions": "Akce", + "downloadAll": "Vše", + "downloadTar": "Tar", + "deleteJob": "Smazat", + "noFiles": "Zatím nebyly převedeny žádné soubory.", + "statusPending": "Čekající", + "statusCompleted": "Dokončeno", + "statusFailed": "Selhalo" + }, + "history": { + "title": "Výsledky", + "time": "Čas", + "files": "Soubory", + "filesDone": "Dokončené soubory", + "status": "Stav", + "actions": "Akce", + "expandDetails": "Rozbalit podrobnosti", + "detailedFileInfo": "Podrobné informace o souboru:", + "deleteSelected": "Smazat vybrané", + "selectAll": "Vybrat vše", + "confirmDelete": "Opravdu chcete smazat {count} úlohu/úloh? Tuto akci nelze vrátit zpět.", + "deleteSuccess": "Úspěšně smazáno {deleted} úloha/úloh.", + "deleteFailed": "Nepodařilo se smazat {failed} úloha/úloh.", + "deleteError": "Při mazání úloh došlo k chybě. Zkuste to prosím znovu." + }, + "auth": { + "email": "E-mail", + "password": "Heslo", + "currentPassword": "Aktuální heslo", + "newPassword": "Heslo (ponechte prázdné pro nezměnění)", + "loginButton": "Přihlásit", + "registerButton": "Registrovat", + "updateButton": "Aktualizovat", + "createAccount": "Vytvořit účet", + "invalidCredentials": "Neplatné přihlašovací údaje.", + "emailInUse": "E-mail je již používán.", + "unauthorized": "Neautorizováno", + "cookiesRequired": "Pro použití této aplikace musí být povoleny cookies.", + "noCookies": "Žádný autentizační cookie, možná váš prohlížeč blokuje cookies." + }, + "setup": { + "welcome": "Vítejte v ConvertX-CN!", + "createYourAccount": "Vytvořte si účet", + "reportIssues": "Nahlaste problémy na", + "github": "GitHub" + }, + "errors": { + "jobNotFound": "Úloha nenalezena.", + "fileNotFound": "Soubor nenalezen.", + "uploadFailed": "Nahrávání selhalo.", + "conversionFailed": "Převod selhal.", + "serverError": "Chyba serveru." + }, + "upload": { + "success": "Soubory byly úspěšně nahrány.", + "dragDrop": "Přetáhněte soubory sem" + }, + "file": { + "size": "{size} kB" + } +} diff --git a/src/locales/cy.json b/src/locales/cy.json new file mode 100644 index 0000000..65fba61 --- /dev/null +++ b/src/locales/cy.json @@ -0,0 +1,106 @@ +{ + "common": { + "appName": "ConvertX-CN", + "poweredBy": "Wedi'i bweru gan", + "version": "v{version}", + "loading": "Yn llwytho...", + "error": "Gwall", + "success": "Llwyddiant", + "confirm": "Cadarnhau", + "cancel": "Canslo", + "close": "Cau", + "save": "Cadw", + "delete": "Dileu", + "remove": "Tynnu", + "download": "Lawrlwytho", + "upload": "Uwchlwytho", + "submit": "Cyflwyno", + "back": "Yn ôl", + "next": "Nesaf", + "yes": "Ie", + "no": "Na" + }, + "nav": { + "history": "Hanes", + "account": "Cyfrif", + "logout": "Allgofnodi", + "login": "Mewngofnodi", + "register": "Cofrestru", + "language": "Iaith" + }, + "convert": { + "title": "Trosi", + "titleWithType": "Trosi .{fileType}", + "chooseFile": "Dewis ffeil", + "orDragHere": "neu llusgwch hi yma", + "searchConversions": "Chwilio am drosiadau", + "convertTo": "Trosi i", + "convertButton": "Trosi", + "uploading": "Yn uwchlwytho...", + "processing": "Yn prosesu..." + }, + "results": { + "title": "Canlyniadau", + "convertedFileName": "Enw ffeil wedi'i drosi", + "status": "Statws", + "actions": "Gweithredoedd", + "downloadAll": "Popeth", + "downloadTar": "Tar", + "deleteJob": "Dileu", + "noFiles": "Dim ffeiliau wedi'u trosi eto.", + "statusPending": "Yn aros", + "statusCompleted": "Wedi cwblhau", + "statusFailed": "Wedi methu" + }, + "history": { + "title": "Canlyniadau", + "time": "Amser", + "files": "Ffeiliau", + "filesDone": "Ffeiliau wedi'u cwblhau", + "status": "Statws", + "actions": "Gweithredoedd", + "expandDetails": "Ehangu manylion", + "detailedFileInfo": "Gwybodaeth fanwl am y ffeil:", + "deleteSelected": "Dileu'r dewisiad", + "selectAll": "Dewis popeth", + "confirmDelete": "Ydych chi'n siŵr eich bod am ddileu {count} swydd(i)? Ni ellir dadwneud y weithred hon.", + "deleteSuccess": "Dilëwyd {deleted} swydd(i) yn llwyddiannus.", + "deleteFailed": "Methwyd dileu {failed} swydd(i).", + "deleteError": "Digwyddodd gwall wrth ddileu swyddi. Rhowch gynnig arall arni." + }, + "auth": { + "email": "E-bost", + "password": "Cyfrinair", + "currentPassword": "Cyfrinair presennol", + "newPassword": "Cyfrinair (gadael yn wag os nad yw'n newid)", + "loginButton": "Mewngofnodi", + "registerButton": "Cofrestru", + "updateButton": "Diweddaru", + "createAccount": "Creu cyfrif", + "invalidCredentials": "Manylion annilys.", + "emailInUse": "Mae'r e-bost eisoes yn cael ei ddefnyddio.", + "unauthorized": "Heb awdurdod", + "cookiesRequired": "Dylai cwcis fod wedi'u galluogi i ddefnyddio'r ap hwn.", + "noCookies": "Dim cwci dilysu, efallai bod eich porwr yn blocio cwcis." + }, + "setup": { + "welcome": "Croeso i ConvertX-CN!", + "createYourAccount": "Crëwch eich cyfrif", + "reportIssues": "Adroddwch unrhyw broblemau ar", + "github": "GitHub" + }, + "errors": { + "jobNotFound": "Ni chanfuwyd y swydd.", + "fileNotFound": "Ni chanfuwyd y ffeil.", + "uploadFailed": "Methwyd uwchlwytho.", + "conversionFailed": "Methwyd trosi.", + "serverError": "Gwall gweinydd." + }, + "upload": { + "success": "Uwchlwythwyd ffeiliau'n llwyddiannus.", + "dragDrop": "Gollyngwch ffeiliau yma" + }, + "file": { + "size": "{size} kB" + } +} diff --git a/src/locales/da.json b/src/locales/da.json new file mode 100644 index 0000000..7d4a74a --- /dev/null +++ b/src/locales/da.json @@ -0,0 +1,106 @@ +{ + "common": { + "appName": "ConvertX-CN", + "poweredBy": "Drevet af", + "version": "v{version}", + "loading": "Indlæser...", + "error": "Fejl", + "success": "Succes", + "confirm": "Bekræft", + "cancel": "Annuller", + "close": "Luk", + "save": "Gem", + "delete": "Slet", + "remove": "Fjern", + "download": "Download", + "upload": "Upload", + "submit": "Send", + "back": "Tilbage", + "next": "Næste", + "yes": "Ja", + "no": "Nej" + }, + "nav": { + "history": "Historik", + "account": "Konto", + "logout": "Log ud", + "login": "Log ind", + "register": "Registrer", + "language": "Sprog" + }, + "convert": { + "title": "Konverter", + "titleWithType": "Konverter .{fileType}", + "chooseFile": "Vælg en fil", + "orDragHere": "eller træk den hertil", + "searchConversions": "Søg efter konverteringer", + "convertTo": "Konverter til", + "convertButton": "Konverter", + "uploading": "Uploader...", + "processing": "Behandler..." + }, + "results": { + "title": "Resultater", + "convertedFileName": "Konverteret filnavn", + "status": "Status", + "actions": "Handlinger", + "downloadAll": "Alle", + "downloadTar": "Tar", + "deleteJob": "Slet", + "noFiles": "Ingen filer konverteret endnu.", + "statusPending": "Afventer", + "statusCompleted": "Afsluttet", + "statusFailed": "Mislykket" + }, + "history": { + "title": "Resultater", + "time": "Tid", + "files": "Filer", + "filesDone": "Færdige filer", + "status": "Status", + "actions": "Handlinger", + "expandDetails": "Udvid detaljer", + "detailedFileInfo": "Detaljeret filinformation:", + "deleteSelected": "Slet valgte", + "selectAll": "Vælg alle", + "confirmDelete": "Er du sikker på, at du vil slette {count} job? Denne handling kan ikke fortrydes.", + "deleteSuccess": "Slettet {deleted} job med succes.", + "deleteFailed": "Kunne ikke slette {failed} job.", + "deleteError": "Der opstod en fejl under sletning af jobs. Prøv venligst igen." + }, + "auth": { + "email": "E-mail", + "password": "Adgangskode", + "currentPassword": "Nuværende adgangskode", + "newPassword": "Adgangskode (lad være tom for uændret)", + "loginButton": "Log ind", + "registerButton": "Registrer", + "updateButton": "Opdater", + "createAccount": "Opret konto", + "invalidCredentials": "Ugyldige loginoplysninger.", + "emailInUse": "E-mail er allerede i brug.", + "unauthorized": "Ikke autoriseret", + "cookiesRequired": "Cookies skal være aktiveret for at bruge denne app.", + "noCookies": "Ingen godkendelsescookie, måske blokerer din browser cookies." + }, + "setup": { + "welcome": "Velkommen til ConvertX-CN!", + "createYourAccount": "Opret din konto", + "reportIssues": "Rapporter problemer på", + "github": "GitHub" + }, + "errors": { + "jobNotFound": "Job ikke fundet.", + "fileNotFound": "Fil ikke fundet.", + "uploadFailed": "Upload mislykkedes.", + "conversionFailed": "Konvertering mislykkedes.", + "serverError": "Serverfejl." + }, + "upload": { + "success": "Filer uploadet succesfuldt.", + "dragDrop": "Slip filer her" + }, + "file": { + "size": "{size} kB" + } +} diff --git a/src/locales/de.json b/src/locales/de.json new file mode 100644 index 0000000..c861ade --- /dev/null +++ b/src/locales/de.json @@ -0,0 +1,106 @@ +{ + "common": { + "appName": "ConvertX-CN", + "poweredBy": "Unterstützt von", + "version": "v{version}", + "loading": "Laden...", + "error": "Fehler", + "success": "Erfolg", + "confirm": "Bestätigen", + "cancel": "Abbrechen", + "close": "Schließen", + "save": "Speichern", + "delete": "Löschen", + "remove": "Entfernen", + "download": "Herunterladen", + "upload": "Hochladen", + "submit": "Absenden", + "back": "Zurück", + "next": "Weiter", + "yes": "Ja", + "no": "Nein" + }, + "nav": { + "history": "Verlauf", + "account": "Konto", + "logout": "Abmelden", + "login": "Anmelden", + "register": "Registrieren", + "language": "Sprache" + }, + "convert": { + "title": "Konvertieren", + "titleWithType": ".{fileType} konvertieren", + "chooseFile": "Datei auswählen", + "orDragHere": "oder hierher ziehen", + "searchConversions": "Konvertierungen suchen", + "convertTo": "Konvertieren zu", + "convertButton": "Konvertieren", + "uploading": "Hochladen...", + "processing": "Verarbeiten..." + }, + "results": { + "title": "Ergebnisse", + "convertedFileName": "Konvertierter Dateiname", + "status": "Status", + "actions": "Aktionen", + "downloadAll": "Alle", + "downloadTar": "Tar", + "deleteJob": "Löschen", + "noFiles": "Noch keine Dateien konvertiert.", + "statusPending": "Ausstehend", + "statusCompleted": "Abgeschlossen", + "statusFailed": "Fehlgeschlagen" + }, + "history": { + "title": "Ergebnisse", + "time": "Zeit", + "files": "Dateien", + "filesDone": "Fertige Dateien", + "status": "Status", + "actions": "Aktionen", + "expandDetails": "Details erweitern", + "detailedFileInfo": "Detaillierte Dateiinformationen:", + "deleteSelected": "Ausgewählte löschen", + "selectAll": "Alle auswählen", + "confirmDelete": "Sind Sie sicher, dass Sie {count} Auftrag/Aufträge löschen möchten? Diese Aktion kann nicht rückgängig gemacht werden.", + "deleteSuccess": "{deleted} Auftrag/Aufträge erfolgreich gelöscht.", + "deleteFailed": "{failed} Auftrag/Aufträge konnten nicht gelöscht werden.", + "deleteError": "Beim Löschen der Aufträge ist ein Fehler aufgetreten. Bitte versuchen Sie es erneut." + }, + "auth": { + "email": "E-Mail", + "password": "Passwort", + "currentPassword": "Aktuelles Passwort", + "newPassword": "Passwort (leer lassen für unverändert)", + "loginButton": "Anmelden", + "registerButton": "Registrieren", + "updateButton": "Aktualisieren", + "createAccount": "Konto erstellen", + "invalidCredentials": "Ungültige Anmeldedaten.", + "emailInUse": "E-Mail wird bereits verwendet.", + "unauthorized": "Nicht autorisiert", + "cookiesRequired": "Cookies müssen aktiviert sein, um diese App zu nutzen.", + "noCookies": "Kein Auth-Cookie, möglicherweise blockiert Ihr Browser Cookies." + }, + "setup": { + "welcome": "Willkommen bei ConvertX-CN!", + "createYourAccount": "Erstellen Sie Ihr Konto", + "reportIssues": "Probleme melden auf", + "github": "GitHub" + }, + "errors": { + "jobNotFound": "Auftrag nicht gefunden.", + "fileNotFound": "Datei nicht gefunden.", + "uploadFailed": "Hochladen fehlgeschlagen.", + "conversionFailed": "Konvertierung fehlgeschlagen.", + "serverError": "Serverfehler." + }, + "upload": { + "success": "Dateien erfolgreich hochgeladen.", + "dragDrop": "Dateien hier ablegen" + }, + "file": { + "size": "{size} kB" + } +} diff --git a/src/locales/el.json b/src/locales/el.json new file mode 100644 index 0000000..4200c3b --- /dev/null +++ b/src/locales/el.json @@ -0,0 +1,106 @@ +{ + "common": { + "appName": "ConvertX-CN", + "poweredBy": "Με την υποστήριξη", + "version": "v{version}", + "loading": "Φόρτωση...", + "error": "Σφάλμα", + "success": "Επιτυχία", + "confirm": "Επιβεβαίωση", + "cancel": "Ακύρωση", + "close": "Κλείσιμο", + "save": "Αποθήκευση", + "delete": "Διαγραφή", + "remove": "Αφαίρεση", + "download": "Λήψη", + "upload": "Μεταφόρτωση", + "submit": "Υποβολή", + "back": "Πίσω", + "next": "Επόμενο", + "yes": "Ναι", + "no": "Όχι" + }, + "nav": { + "history": "Ιστορικό", + "account": "Λογαριασμός", + "logout": "Αποσύνδεση", + "login": "Σύνδεση", + "register": "Εγγραφή", + "language": "Γλώσσα" + }, + "convert": { + "title": "Μετατροπή", + "titleWithType": "Μετατροπή .{fileType}", + "chooseFile": "Επιλέξτε ένα αρχείο", + "orDragHere": "ή σύρετέ το εδώ", + "searchConversions": "Αναζήτηση μετατροπών", + "convertTo": "Μετατροπή σε", + "convertButton": "Μετατροπή", + "uploading": "Μεταφόρτωση...", + "processing": "Επεξεργασία..." + }, + "results": { + "title": "Αποτελέσματα", + "convertedFileName": "Όνομα μετατρεπόμενου αρχείου", + "status": "Κατάσταση", + "actions": "Ενέργειες", + "downloadAll": "Όλα", + "downloadTar": "Tar", + "deleteJob": "Διαγραφή", + "noFiles": "Δεν έχουν μετατραπεί αρχεία ακόμα.", + "statusPending": "Σε αναμονή", + "statusCompleted": "Ολοκληρώθηκε", + "statusFailed": "Απέτυχε" + }, + "history": { + "title": "Αποτελέσματα", + "time": "Χρόνος", + "files": "Αρχεία", + "filesDone": "Αρχεία ολοκληρωμένα", + "status": "Κατάσταση", + "actions": "Ενέργειες", + "expandDetails": "Ανάπτυξη λεπτομερειών", + "detailedFileInfo": "Λεπτομερείς πληροφορίες αρχείου:", + "deleteSelected": "Διαγραφή επιλεγμένων", + "selectAll": "Επιλογή όλων", + "confirmDelete": "Είστε βέβαιοι ότι θέλετε να διαγράψετε {count} εργασία(ες); Αυτή η ενέργεια δεν μπορεί να αναιρεθεί.", + "deleteSuccess": "Διαγράφηκαν επιτυχώς {deleted} εργασία(ες).", + "deleteFailed": "Αποτυχία διαγραφής {failed} εργασία(ες).", + "deleteError": "Παρουσιάστηκε σφάλμα κατά τη διαγραφή εργασιών. Παρακαλώ δοκιμάστε ξανά." + }, + "auth": { + "email": "Email", + "password": "Κωδικός πρόσβασης", + "currentPassword": "Τρέχων κωδικός πρόσβασης", + "newPassword": "Κωδικός πρόσβασης (αφήστε κενό για αμετάβλητο)", + "loginButton": "Σύνδεση", + "registerButton": "Εγγραφή", + "updateButton": "Ενημέρωση", + "createAccount": "Δημιουργία λογαριασμού", + "invalidCredentials": "Μη έγκυρα διαπιστευτήρια.", + "emailInUse": "Το email χρησιμοποιείται ήδη.", + "unauthorized": "Μη εξουσιοδοτημένο", + "cookiesRequired": "Τα cookies πρέπει να είναι ενεργοποιημένα για τη χρήση αυτής της εφαρμογής.", + "noCookies": "Δεν υπάρχει cookie ελέγχου ταυτότητας, ίσως ο περιηγητής σας μπλοκάρει τα cookies." + }, + "setup": { + "welcome": "Καλώς ήρθατε στο ConvertX-CN!", + "createYourAccount": "Δημιουργήστε τον λογαριασμό σας", + "reportIssues": "Αναφέρετε τυχόν προβλήματα στο", + "github": "GitHub" + }, + "errors": { + "jobNotFound": "Η εργασία δεν βρέθηκε.", + "fileNotFound": "Το αρχείο δεν βρέθηκε.", + "uploadFailed": "Η μεταφόρτωση απέτυχε.", + "conversionFailed": "Η μετατροπή απέτυχε.", + "serverError": "Σφάλμα διακομιστή." + }, + "upload": { + "success": "Τα αρχεία μεταφορτώθηκαν επιτυχώς.", + "dragDrop": "Αποθέστε αρχεία εδώ" + }, + "file": { + "size": "{size} kB" + } +} diff --git a/src/locales/es.json b/src/locales/es.json new file mode 100644 index 0000000..71f12f0 --- /dev/null +++ b/src/locales/es.json @@ -0,0 +1,106 @@ +{ + "common": { + "appName": "ConvertX-CN", + "poweredBy": "Desarrollado por", + "version": "v{version}", + "loading": "Cargando...", + "error": "Error", + "success": "Éxito", + "confirm": "Confirmar", + "cancel": "Cancelar", + "close": "Cerrar", + "save": "Guardar", + "delete": "Eliminar", + "remove": "Quitar", + "download": "Descargar", + "upload": "Subir", + "submit": "Enviar", + "back": "Atrás", + "next": "Siguiente", + "yes": "Sí", + "no": "No" + }, + "nav": { + "history": "Historial", + "account": "Cuenta", + "logout": "Cerrar sesión", + "login": "Iniciar sesión", + "register": "Registrarse", + "language": "Idioma" + }, + "convert": { + "title": "Convertir", + "titleWithType": "Convertir .{fileType}", + "chooseFile": "Elegir un archivo", + "orDragHere": "o arrástrelo aquí", + "searchConversions": "Buscar conversiones", + "convertTo": "Convertir a", + "convertButton": "Convertir", + "uploading": "Subiendo...", + "processing": "Procesando..." + }, + "results": { + "title": "Resultados", + "convertedFileName": "Nombre del archivo convertido", + "status": "Estado", + "actions": "Acciones", + "downloadAll": "Todo", + "downloadTar": "Tar", + "deleteJob": "Eliminar", + "noFiles": "No hay archivos convertidos aún.", + "statusPending": "Pendiente", + "statusCompleted": "Completado", + "statusFailed": "Fallido" + }, + "history": { + "title": "Resultados", + "time": "Hora", + "files": "Archivos", + "filesDone": "Archivos completados", + "status": "Estado", + "actions": "Acciones", + "expandDetails": "Expandir detalles", + "detailedFileInfo": "Información detallada del archivo:", + "deleteSelected": "Eliminar seleccionados", + "selectAll": "Seleccionar todo", + "confirmDelete": "¿Está seguro de que desea eliminar {count} trabajo(s)? Esta acción no se puede deshacer.", + "deleteSuccess": "Se eliminaron {deleted} trabajo(s) correctamente.", + "deleteFailed": "No se pudieron eliminar {failed} trabajo(s).", + "deleteError": "Ocurrió un error al eliminar los trabajos. Por favor, inténtelo de nuevo." + }, + "auth": { + "email": "Correo electrónico", + "password": "Contraseña", + "currentPassword": "Contraseña actual", + "newPassword": "Contraseña (dejar en blanco para no cambiar)", + "loginButton": "Iniciar sesión", + "registerButton": "Registrarse", + "updateButton": "Actualizar", + "createAccount": "Crear cuenta", + "invalidCredentials": "Credenciales inválidas.", + "emailInUse": "El correo electrónico ya está en uso.", + "unauthorized": "No autorizado", + "cookiesRequired": "Las cookies deben estar habilitadas para usar esta aplicación.", + "noCookies": "No hay cookie de autenticación, quizás su navegador está bloqueando las cookies." + }, + "setup": { + "welcome": "¡Bienvenido a ConvertX-CN!", + "createYourAccount": "Cree su cuenta", + "reportIssues": "Reportar problemas en", + "github": "GitHub" + }, + "errors": { + "jobNotFound": "Trabajo no encontrado.", + "fileNotFound": "Archivo no encontrado.", + "uploadFailed": "Error al subir.", + "conversionFailed": "Error en la conversión.", + "serverError": "Error del servidor." + }, + "upload": { + "success": "Archivos subidos correctamente.", + "dragDrop": "Suelte los archivos aquí" + }, + "file": { + "size": "{size} kB" + } +} diff --git a/src/locales/et.json b/src/locales/et.json new file mode 100644 index 0000000..f1296cd --- /dev/null +++ b/src/locales/et.json @@ -0,0 +1,106 @@ +{ + "common": { + "appName": "ConvertX-CN", + "poweredBy": "Toetab", + "version": "v{version}", + "loading": "Laadimine...", + "error": "Viga", + "success": "Õnnestus", + "confirm": "Kinnita", + "cancel": "Tühista", + "close": "Sulge", + "save": "Salvesta", + "delete": "Kustuta", + "remove": "Eemalda", + "download": "Laadi alla", + "upload": "Laadi üles", + "submit": "Esita", + "back": "Tagasi", + "next": "Järgmine", + "yes": "Jah", + "no": "Ei" + }, + "nav": { + "history": "Ajalugu", + "account": "Konto", + "logout": "Logi välja", + "login": "Logi sisse", + "register": "Registreeru", + "language": "Keel" + }, + "convert": { + "title": "Teisenda", + "titleWithType": "Teisenda .{fileType}", + "chooseFile": "Vali fail", + "orDragHere": "või lohista siia", + "searchConversions": "Otsi teisendusi", + "convertTo": "Teisenda vormingusse", + "convertButton": "Teisenda", + "uploading": "Üleslaadimine...", + "processing": "Töötlemine..." + }, + "results": { + "title": "Tulemused", + "convertedFileName": "Teisendatud faili nimi", + "status": "Olek", + "actions": "Toimingud", + "downloadAll": "Kõik", + "downloadTar": "Tar", + "deleteJob": "Kustuta", + "noFiles": "Faile pole veel teisendatud.", + "statusPending": "Ootel", + "statusCompleted": "Lõpetatud", + "statusFailed": "Ebaõnnestunud" + }, + "history": { + "title": "Tulemused", + "time": "Aeg", + "files": "Failid", + "filesDone": "Valmis failid", + "status": "Olek", + "actions": "Toimingud", + "expandDetails": "Laienda üksikasju", + "detailedFileInfo": "Üksikasjalik failiteave:", + "deleteSelected": "Kustuta valitud", + "selectAll": "Vali kõik", + "confirmDelete": "Kas olete kindel, et soovite kustutada {count} töö(d)? Seda toimingut ei saa tagasi võtta.", + "deleteSuccess": "Edukalt kustutatud {deleted} töö(d).", + "deleteFailed": "Ei õnnestunud kustutada {failed} töö(d).", + "deleteError": "Tööde kustutamisel ilmnes viga. Palun proovige uuesti." + }, + "auth": { + "email": "E-post", + "password": "Parool", + "currentPassword": "Praegune parool", + "newPassword": "Parool (jätke tühjaks, kui ei muuda)", + "loginButton": "Logi sisse", + "registerButton": "Registreeru", + "updateButton": "Uuenda", + "createAccount": "Loo konto", + "invalidCredentials": "Vigased andmed.", + "emailInUse": "E-post on juba kasutusel.", + "unauthorized": "Volitamata", + "cookiesRequired": "Selle rakenduse kasutamiseks peavad küpsised olema lubatud.", + "noCookies": "Autentimisküpsist pole, võib-olla teie brauser blokeerib küpsised." + }, + "setup": { + "welcome": "Tere tulemast ConvertX-CN-i!", + "createYourAccount": "Looge oma konto", + "reportIssues": "Teatage probleemidest", + "github": "GitHub" + }, + "errors": { + "jobNotFound": "Tööd ei leitud.", + "fileNotFound": "Faili ei leitud.", + "uploadFailed": "Üleslaadimine ebaõnnestus.", + "conversionFailed": "Teisendamine ebaõnnestus.", + "serverError": "Serveri viga." + }, + "upload": { + "success": "Failid edukalt üles laaditud.", + "dragDrop": "Lohistage failid siia" + }, + "file": { + "size": "{size} kB" + } +} diff --git a/src/locales/eu.json b/src/locales/eu.json new file mode 100644 index 0000000..d0155fe --- /dev/null +++ b/src/locales/eu.json @@ -0,0 +1,106 @@ +{ + "common": { + "appName": "ConvertX-CN", + "poweredBy": "Bultzatua", + "version": "v{version}", + "loading": "Kargatzen...", + "error": "Errorea", + "success": "Arrakasta", + "confirm": "Berretsi", + "cancel": "Utzi", + "close": "Itxi", + "save": "Gorde", + "delete": "Ezabatu", + "remove": "Kendu", + "download": "Deskargatu", + "upload": "Igo", + "submit": "Bidali", + "back": "Atzera", + "next": "Hurrengoa", + "yes": "Bai", + "no": "Ez" + }, + "nav": { + "history": "Historia", + "account": "Kontua", + "logout": "Saioa itxi", + "login": "Saioa hasi", + "register": "Erregistratu", + "language": "Hizkuntza" + }, + "convert": { + "title": "Bihurtu", + "titleWithType": "Bihurtu .{fileType}", + "chooseFile": "Aukeratu fitxategi bat", + "orDragHere": "edo arrastatu hona", + "searchConversions": "Bilatu bihurketa", + "convertTo": "Bihurtu hona", + "convertButton": "Bihurtu", + "uploading": "Igotzen...", + "processing": "Prozesatzen..." + }, + "results": { + "title": "Emaitzak", + "convertedFileName": "Bihurtutako fitxategiaren izena", + "status": "Egoera", + "actions": "Ekintzak", + "downloadAll": "Guztiak", + "downloadTar": "Tar", + "deleteJob": "Ezabatu", + "noFiles": "Oraindik ez da fitxategirik bihurtu.", + "statusPending": "Zain", + "statusCompleted": "Osatuta", + "statusFailed": "Huts egin du" + }, + "history": { + "title": "Emaitzak", + "time": "Ordua", + "files": "Fitxategiak", + "filesDone": "Amaitutako fitxategiak", + "status": "Egoera", + "actions": "Ekintzak", + "expandDetails": "Xehetasunak zabaldu", + "detailedFileInfo": "Fitxategiaren informazio zehatza:", + "deleteSelected": "Ezabatu hautatutakoak", + "selectAll": "Hautatu guztiak", + "confirmDelete": "Ziur zaude {count} lan ezabatu nahi duzula? Ekintza hau ezin da desegin.", + "deleteSuccess": "{deleted} lan ondo ezabatu dira.", + "deleteFailed": "Ezin izan dira {failed} lan ezabatu.", + "deleteError": "Errorea gertatu da lanak ezabatzean. Saiatu berriro." + }, + "auth": { + "email": "Emaila", + "password": "Pasahitza", + "currentPassword": "Uneko pasahitza", + "newPassword": "Pasahitza (utzi hutsik aldatu nahi ez baduzu)", + "loginButton": "Saioa hasi", + "registerButton": "Erregistratu", + "updateButton": "Eguneratu", + "createAccount": "Kontua sortu", + "invalidCredentials": "Kredentzial baliogabeak.", + "emailInUse": "Emaila dagoeneko erabiltzen ari da.", + "unauthorized": "Baimenik gabe", + "cookiesRequired": "Cookieak gaituta egon behar dute aplikazio hau erabiltzeko.", + "noCookies": "Ez dago autentifikazio cookierik, agian zure nabigatzaileak cookieak blokeatzen ditu." + }, + "setup": { + "welcome": "Ongi etorri ConvertX-CN-ra!", + "createYourAccount": "Sortu zure kontua", + "reportIssues": "Jakinarazi edozein arazo hemen", + "github": "GitHub" + }, + "errors": { + "jobNotFound": "Lana ez da aurkitu.", + "fileNotFound": "Fitxategia ez da aurkitu.", + "uploadFailed": "Igoerak huts egin du.", + "conversionFailed": "Bihurketak huts egin du.", + "serverError": "Zerbitzariaren errorea." + }, + "upload": { + "success": "Fitxategiak ondo igo dira.", + "dragDrop": "Jaregin fitxategiak hona" + }, + "file": { + "size": "{size} kB" + } +} diff --git a/src/locales/fa.json b/src/locales/fa.json new file mode 100644 index 0000000..354bc8d --- /dev/null +++ b/src/locales/fa.json @@ -0,0 +1,106 @@ +{ + "common": { + "appName": "ConvertX-CN", + "poweredBy": "قدرت گرفته از", + "version": "v{version}", + "loading": "در حال بارگذاری...", + "error": "خطا", + "success": "موفقیت", + "confirm": "تأیید", + "cancel": "لغو", + "close": "بستن", + "save": "ذخیره", + "delete": "حذف", + "remove": "برداشتن", + "download": "دانلود", + "upload": "آپلود", + "submit": "ارسال", + "back": "بازگشت", + "next": "بعدی", + "yes": "بله", + "no": "خیر" + }, + "nav": { + "history": "تاریخچه", + "account": "حساب کاربری", + "logout": "خروج", + "login": "ورود", + "register": "ثبت نام", + "language": "زبان" + }, + "convert": { + "title": "تبدیل", + "titleWithType": "تبدیل .{fileType}", + "chooseFile": "انتخاب فایل", + "orDragHere": "یا اینجا بکشید", + "searchConversions": "جستجوی تبدیل‌ها", + "convertTo": "تبدیل به", + "convertButton": "تبدیل", + "uploading": "در حال آپلود...", + "processing": "در حال پردازش..." + }, + "results": { + "title": "نتایج", + "convertedFileName": "نام فایل تبدیل شده", + "status": "وضعیت", + "actions": "عملیات", + "downloadAll": "همه", + "downloadTar": "Tar", + "deleteJob": "حذف", + "noFiles": "هنوز فایلی تبدیل نشده است.", + "statusPending": "در انتظار", + "statusCompleted": "تکمیل شد", + "statusFailed": "ناموفق" + }, + "history": { + "title": "نتایج", + "time": "زمان", + "files": "فایل‌ها", + "filesDone": "فایل‌های انجام شده", + "status": "وضعیت", + "actions": "عملیات", + "expandDetails": "نمایش جزئیات", + "detailedFileInfo": "اطلاعات دقیق فایل:", + "deleteSelected": "حذف انتخاب شده‌ها", + "selectAll": "انتخاب همه", + "confirmDelete": "آیا مطمئن هستید که می‌خواهید {count} کار را حذف کنید؟ این عمل قابل بازگشت نیست.", + "deleteSuccess": "{deleted} کار با موفقیت حذف شد.", + "deleteFailed": "حذف {failed} کار ناموفق بود.", + "deleteError": "هنگام حذف کارها خطایی رخ داد. لطفاً دوباره تلاش کنید." + }, + "auth": { + "email": "ایمیل", + "password": "رمز عبور", + "currentPassword": "رمز عبور فعلی", + "newPassword": "رمز عبور (برای عدم تغییر خالی بگذارید)", + "loginButton": "ورود", + "registerButton": "ثبت نام", + "updateButton": "به‌روزرسانی", + "createAccount": "ایجاد حساب", + "invalidCredentials": "اطلاعات ورود نامعتبر است.", + "emailInUse": "این ایمیل قبلاً استفاده شده است.", + "unauthorized": "غیرمجاز", + "cookiesRequired": "برای استفاده از این برنامه باید کوکی‌ها فعال باشند.", + "noCookies": "کوکی احراز هویت وجود ندارد، شاید مرورگر شما کوکی‌ها را مسدود کرده باشد." + }, + "setup": { + "welcome": "به ConvertX-CN خوش آمدید!", + "createYourAccount": "حساب کاربری خود را بسازید", + "reportIssues": "گزارش مشکلات در", + "github": "GitHub" + }, + "errors": { + "jobNotFound": "کار پیدا نشد.", + "fileNotFound": "فایل پیدا نشد.", + "uploadFailed": "آپلود ناموفق بود.", + "conversionFailed": "تبدیل ناموفق بود.", + "serverError": "خطای سرور." + }, + "upload": { + "success": "فایل‌ها با موفقیت آپلود شدند.", + "dragDrop": "فایل‌ها را اینجا رها کنید" + }, + "file": { + "size": "{size} kB" + } +} diff --git a/src/locales/fi.json b/src/locales/fi.json new file mode 100644 index 0000000..03eb072 --- /dev/null +++ b/src/locales/fi.json @@ -0,0 +1,106 @@ +{ + "common": { + "appName": "ConvertX-CN", + "poweredBy": "Käyttää", + "version": "v{version}", + "loading": "Ladataan...", + "error": "Virhe", + "success": "Onnistui", + "confirm": "Vahvista", + "cancel": "Peruuta", + "close": "Sulje", + "save": "Tallenna", + "delete": "Poista", + "remove": "Poista", + "download": "Lataa", + "upload": "Lähetä", + "submit": "Lähetä", + "back": "Takaisin", + "next": "Seuraava", + "yes": "Kyllä", + "no": "Ei" + }, + "nav": { + "history": "Historia", + "account": "Tili", + "logout": "Kirjaudu ulos", + "login": "Kirjaudu sisään", + "register": "Rekisteröidy", + "language": "Kieli" + }, + "convert": { + "title": "Muunna", + "titleWithType": "Muunna .{fileType}", + "chooseFile": "Valitse tiedosto", + "orDragHere": "tai vedä tähän", + "searchConversions": "Etsi muunnoksia", + "convertTo": "Muunna muotoon", + "convertButton": "Muunna", + "uploading": "Lähetetään...", + "processing": "Käsitellään..." + }, + "results": { + "title": "Tulokset", + "convertedFileName": "Muunnetun tiedoston nimi", + "status": "Tila", + "actions": "Toiminnot", + "downloadAll": "Kaikki", + "downloadTar": "Tar", + "deleteJob": "Poista", + "noFiles": "Ei vielä muunnettuja tiedostoja.", + "statusPending": "Odottaa", + "statusCompleted": "Valmis", + "statusFailed": "Epäonnistui" + }, + "history": { + "title": "Tulokset", + "time": "Aika", + "files": "Tiedostot", + "filesDone": "Valmiit tiedostot", + "status": "Tila", + "actions": "Toiminnot", + "expandDetails": "Laajenna tiedot", + "detailedFileInfo": "Yksityiskohtaiset tiedostotiedot:", + "deleteSelected": "Poista valitut", + "selectAll": "Valitse kaikki", + "confirmDelete": "Haluatko varmasti poistaa {count} työtä? Tätä toimintoa ei voi kumota.", + "deleteSuccess": "Poistettiin onnistuneesti {deleted} työtä.", + "deleteFailed": "Epäonnistui {failed} työn poistaminen.", + "deleteError": "Virhe poistettaessa töitä. Yritä uudelleen." + }, + "auth": { + "email": "Sähköposti", + "password": "Salasana", + "currentPassword": "Nykyinen salasana", + "newPassword": "Salasana (jätä tyhjäksi, jos ei muuteta)", + "loginButton": "Kirjaudu sisään", + "registerButton": "Rekisteröidy", + "updateButton": "Päivitä", + "createAccount": "Luo tili", + "invalidCredentials": "Virheelliset tunnistetiedot.", + "emailInUse": "Sähköposti on jo käytössä.", + "unauthorized": "Ei valtuuksia", + "cookiesRequired": "Evästeiden on oltava käytössä tämän sovelluksen käyttämiseksi.", + "noCookies": "Ei todennusevästettä, ehkä selaimesi estää evästeet." + }, + "setup": { + "welcome": "Tervetuloa ConvertX-CN:ään!", + "createYourAccount": "Luo tilisi", + "reportIssues": "Ilmoita ongelmista", + "github": "GitHub" + }, + "errors": { + "jobNotFound": "Työtä ei löytynyt.", + "fileNotFound": "Tiedostoa ei löytynyt.", + "uploadFailed": "Lähetys epäonnistui.", + "conversionFailed": "Muunnos epäonnistui.", + "serverError": "Palvelinvirhe." + }, + "upload": { + "success": "Tiedostot lähetetty onnistuneesti.", + "dragDrop": "Pudota tiedostot tähän" + }, + "file": { + "size": "{size} kB" + } +} diff --git a/src/locales/fil.json b/src/locales/fil.json new file mode 100644 index 0000000..7243e7f --- /dev/null +++ b/src/locales/fil.json @@ -0,0 +1,106 @@ +{ + "common": { + "appName": "ConvertX-CN", + "poweredBy": "Pinapagana ng", + "version": "v{version}", + "loading": "Naglo-load...", + "error": "Error", + "success": "Tagumpay", + "confirm": "Kumpirmahin", + "cancel": "Kanselahin", + "close": "Isara", + "save": "I-save", + "delete": "Burahin", + "remove": "Alisin", + "download": "I-download", + "upload": "I-upload", + "submit": "Isumite", + "back": "Bumalik", + "next": "Susunod", + "yes": "Oo", + "no": "Hindi" + }, + "nav": { + "history": "Kasaysayan", + "account": "Account", + "logout": "Mag-logout", + "login": "Mag-login", + "register": "Magrehistro", + "language": "Wika" + }, + "convert": { + "title": "I-convert", + "titleWithType": "I-convert ang .{fileType}", + "chooseFile": "Pumili ng file", + "orDragHere": "o i-drag dito", + "searchConversions": "Maghanap ng conversions", + "convertTo": "I-convert sa", + "convertButton": "I-convert", + "uploading": "Nag-a-upload...", + "processing": "Pinoproseso..." + }, + "results": { + "title": "Mga Resulta", + "convertedFileName": "Pangalan ng Na-convert na File", + "status": "Status", + "actions": "Mga Aksyon", + "downloadAll": "Lahat", + "downloadTar": "Tar", + "deleteJob": "Burahin", + "noFiles": "Walang mga file na na-convert pa.", + "statusPending": "Nakabinbin", + "statusCompleted": "Kumpleto", + "statusFailed": "Nabigo" + }, + "history": { + "title": "Mga Resulta", + "time": "Oras", + "files": "Mga File", + "filesDone": "Mga Natapos na File", + "status": "Status", + "actions": "Mga Aksyon", + "expandDetails": "Palawakin ang mga detalye", + "detailedFileInfo": "Detalyadong Impormasyon ng File:", + "deleteSelected": "Burahin ang Napili", + "selectAll": "Piliin lahat", + "confirmDelete": "Sigurado ka bang gusto mong burahin ang {count} na trabaho? Ang aksyon na ito ay hindi na maibabalik.", + "deleteSuccess": "Matagumpay na nabura ang {deleted} na trabaho.", + "deleteFailed": "Hindi nabura ang {failed} na trabaho.", + "deleteError": "May error na naganap habang nagbubura ng mga trabaho. Pakisubukang muli." + }, + "auth": { + "email": "Email", + "password": "Password", + "currentPassword": "Kasalukuyang Password", + "newPassword": "Password (iwanang blangko kung hindi babaguhin)", + "loginButton": "Mag-login", + "registerButton": "Magrehistro", + "updateButton": "I-update", + "createAccount": "Gumawa ng account", + "invalidCredentials": "Invalid na credentials.", + "emailInUse": "Ginagamit na ang email.", + "unauthorized": "Hindi awtorisado", + "cookiesRequired": "Dapat i-enable ang cookies para magamit ang app na ito.", + "noCookies": "Walang auth cookie, maaaring hinaharangan ng iyong browser ang cookies." + }, + "setup": { + "welcome": "Maligayang pagdating sa ConvertX-CN!", + "createYourAccount": "Gumawa ng iyong account", + "reportIssues": "Mag-ulat ng mga isyu sa", + "github": "GitHub" + }, + "errors": { + "jobNotFound": "Hindi nahanap ang trabaho.", + "fileNotFound": "Hindi nahanap ang file.", + "uploadFailed": "Nabigo ang pag-upload.", + "conversionFailed": "Nabigo ang conversion.", + "serverError": "Error sa server." + }, + "upload": { + "success": "Matagumpay na na-upload ang mga file.", + "dragDrop": "I-drop ang mga file dito" + }, + "file": { + "size": "{size} kB" + } +} diff --git a/src/locales/fr.json b/src/locales/fr.json new file mode 100644 index 0000000..1107561 --- /dev/null +++ b/src/locales/fr.json @@ -0,0 +1,106 @@ +{ + "common": { + "appName": "ConvertX-CN", + "poweredBy": "Propulsé par", + "version": "v{version}", + "loading": "Chargement...", + "error": "Erreur", + "success": "Succès", + "confirm": "Confirmer", + "cancel": "Annuler", + "close": "Fermer", + "save": "Enregistrer", + "delete": "Supprimer", + "remove": "Retirer", + "download": "Télécharger", + "upload": "Téléverser", + "submit": "Soumettre", + "back": "Retour", + "next": "Suivant", + "yes": "Oui", + "no": "Non" + }, + "nav": { + "history": "Historique", + "account": "Compte", + "logout": "Déconnexion", + "login": "Connexion", + "register": "S'inscrire", + "language": "Langue" + }, + "convert": { + "title": "Convertir", + "titleWithType": "Convertir .{fileType}", + "chooseFile": "Choisir un fichier", + "orDragHere": "ou glissez-le ici", + "searchConversions": "Rechercher des conversions", + "convertTo": "Convertir en", + "convertButton": "Convertir", + "uploading": "Téléversement...", + "processing": "Traitement..." + }, + "results": { + "title": "Résultats", + "convertedFileName": "Nom du fichier converti", + "status": "Statut", + "actions": "Actions", + "downloadAll": "Tout", + "downloadTar": "Tar", + "deleteJob": "Supprimer", + "noFiles": "Aucun fichier converti pour le moment.", + "statusPending": "En attente", + "statusCompleted": "Terminé", + "statusFailed": "Échoué" + }, + "history": { + "title": "Résultats", + "time": "Heure", + "files": "Fichiers", + "filesDone": "Fichiers terminés", + "status": "Statut", + "actions": "Actions", + "expandDetails": "Développer les détails", + "detailedFileInfo": "Informations détaillées sur le fichier :", + "deleteSelected": "Supprimer la sélection", + "selectAll": "Tout sélectionner", + "confirmDelete": "Êtes-vous sûr de vouloir supprimer {count} tâche(s) ? Cette action est irréversible.", + "deleteSuccess": "{deleted} tâche(s) supprimée(s) avec succès.", + "deleteFailed": "Échec de la suppression de {failed} tâche(s).", + "deleteError": "Une erreur s'est produite lors de la suppression des tâches. Veuillez réessayer." + }, + "auth": { + "email": "E-mail", + "password": "Mot de passe", + "currentPassword": "Mot de passe actuel", + "newPassword": "Mot de passe (laisser vide pour ne pas changer)", + "loginButton": "Connexion", + "registerButton": "S'inscrire", + "updateButton": "Mettre à jour", + "createAccount": "Créer un compte", + "invalidCredentials": "Identifiants invalides.", + "emailInUse": "E-mail déjà utilisé.", + "unauthorized": "Non autorisé", + "cookiesRequired": "Les cookies doivent être activés pour utiliser cette application.", + "noCookies": "Pas de cookie d'authentification, peut-être que votre navigateur bloque les cookies." + }, + "setup": { + "welcome": "Bienvenue sur ConvertX-CN !", + "createYourAccount": "Créez votre compte", + "reportIssues": "Signaler des problèmes sur", + "github": "GitHub" + }, + "errors": { + "jobNotFound": "Tâche non trouvée.", + "fileNotFound": "Fichier non trouvé.", + "uploadFailed": "Échec du téléversement.", + "conversionFailed": "Échec de la conversion.", + "serverError": "Erreur serveur." + }, + "upload": { + "success": "Fichiers téléversés avec succès.", + "dragDrop": "Déposez les fichiers ici" + }, + "file": { + "size": "{size} ko" + } +} diff --git a/src/locales/ga.json b/src/locales/ga.json new file mode 100644 index 0000000..3f1f7f1 --- /dev/null +++ b/src/locales/ga.json @@ -0,0 +1,106 @@ +{ + "common": { + "appName": "ConvertX-CN", + "poweredBy": "Cumhachtaithe ag", + "version": "v{version}", + "loading": "Ag lódáil...", + "error": "Earráid", + "success": "Éirithe", + "confirm": "Deimhnigh", + "cancel": "Cealaigh", + "close": "Dún", + "save": "Sábháil", + "delete": "Scrios", + "remove": "Bain", + "download": "Íoslódáil", + "upload": "Uaslódáil", + "submit": "Cuir isteach", + "back": "Siar", + "next": "Ar aghaidh", + "yes": "Tá", + "no": "Níl" + }, + "nav": { + "history": "Stair", + "account": "Cuntas", + "logout": "Logáil amach", + "login": "Logáil isteach", + "register": "Cláraigh", + "language": "Teanga" + }, + "convert": { + "title": "Tiontaigh", + "titleWithType": "Tiontaigh .{fileType}", + "chooseFile": "Roghnaigh comhad", + "orDragHere": "nó tarraing anseo é", + "searchConversions": "Cuardaigh tiontuithe", + "convertTo": "Tiontaigh go", + "convertButton": "Tiontaigh", + "uploading": "Ag uaslódáil...", + "processing": "Ag próiseáil..." + }, + "results": { + "title": "Torthaí", + "convertedFileName": "Ainm an chomhaid tiontaithe", + "status": "Stádas", + "actions": "Gníomhartha", + "downloadAll": "Gach rud", + "downloadTar": "Tar", + "deleteJob": "Scrios", + "noFiles": "Níl aon chomhaid tiontaithe fós.", + "statusPending": "Ar feitheamh", + "statusCompleted": "Críochnaithe", + "statusFailed": "Theip" + }, + "history": { + "title": "Torthaí", + "time": "Am", + "files": "Comhaid", + "filesDone": "Comhaid déanta", + "status": "Stádas", + "actions": "Gníomhartha", + "expandDetails": "Leathnaigh sonraí", + "detailedFileInfo": "Eolas mionsonraithe comhaid:", + "deleteSelected": "Scrios roghnaithe", + "selectAll": "Roghnaigh gach rud", + "confirmDelete": "An bhfuil tú cinnte gur mian leat {count} post(anna) a scriosadh? Ní féidir an gníomh seo a chur ar ceal.", + "deleteSuccess": "Scriosadh {deleted} post(anna) go rathúil.", + "deleteFailed": "Theip ar scriosadh {failed} post(anna).", + "deleteError": "Tharla earráid agus postanna á scriosadh. Bain triail eile as." + }, + "auth": { + "email": "Ríomhphost", + "password": "Pasfhocal", + "currentPassword": "Pasfhocal reatha", + "newPassword": "Pasfhocal (fág folamh mura n-athraítear)", + "loginButton": "Logáil isteach", + "registerButton": "Cláraigh", + "updateButton": "Nuashonraigh", + "createAccount": "Cruthaigh cuntas", + "invalidCredentials": "Dintiúir neamhbhailí.", + "emailInUse": "Tá an ríomhphost in úsáid cheana.", + "unauthorized": "Neamhúdaraithe", + "cookiesRequired": "Ba chóir fianáin a chumasú chun an feidhmchlár seo a úsáid.", + "noCookies": "Níl aon fhianán fíordheimhnithe, b'fhéidir go bhfuil do bhrabhsálaí ag blocáil fianáin." + }, + "setup": { + "welcome": "Fáilte go ConvertX-CN!", + "createYourAccount": "Cruthaigh do chuntas", + "reportIssues": "Tuairiscigh aon fhadhbanna ar", + "github": "GitHub" + }, + "errors": { + "jobNotFound": "Níor aimsíodh an post.", + "fileNotFound": "Níor aimsíodh an comhad.", + "uploadFailed": "Theip ar an uaslódáil.", + "conversionFailed": "Theip ar an tiontú.", + "serverError": "Earráid freastalaí." + }, + "upload": { + "success": "Uaslódáladh comhaid go rathúil.", + "dragDrop": "Scaoil comhaid anseo" + }, + "file": { + "size": "{size} kB" + } +} diff --git a/src/locales/gl.json b/src/locales/gl.json new file mode 100644 index 0000000..527b6c3 --- /dev/null +++ b/src/locales/gl.json @@ -0,0 +1,106 @@ +{ + "common": { + "appName": "ConvertX-CN", + "poweredBy": "Impulsado por", + "version": "v{version}", + "loading": "Cargando...", + "error": "Erro", + "success": "Éxito", + "confirm": "Confirmar", + "cancel": "Cancelar", + "close": "Pechar", + "save": "Gardar", + "delete": "Eliminar", + "remove": "Quitar", + "download": "Descargar", + "upload": "Subir", + "submit": "Enviar", + "back": "Atrás", + "next": "Seguinte", + "yes": "Si", + "no": "Non" + }, + "nav": { + "history": "Historial", + "account": "Conta", + "logout": "Pechar sesión", + "login": "Iniciar sesión", + "register": "Rexistrarse", + "language": "Idioma" + }, + "convert": { + "title": "Converter", + "titleWithType": "Converter .{fileType}", + "chooseFile": "Escolle un ficheiro", + "orDragHere": "ou arrástreo aquí", + "searchConversions": "Buscar conversións", + "convertTo": "Converter a", + "convertButton": "Converter", + "uploading": "Subindo...", + "processing": "Procesando..." + }, + "results": { + "title": "Resultados", + "convertedFileName": "Nome do ficheiro convertido", + "status": "Estado", + "actions": "Accións", + "downloadAll": "Todo", + "downloadTar": "Tar", + "deleteJob": "Eliminar", + "noFiles": "Aínda non se converteron ficheiros.", + "statusPending": "Pendente", + "statusCompleted": "Completado", + "statusFailed": "Fallou" + }, + "history": { + "title": "Resultados", + "time": "Hora", + "files": "Ficheiros", + "filesDone": "Ficheiros completados", + "status": "Estado", + "actions": "Accións", + "expandDetails": "Ampliar detalles", + "detailedFileInfo": "Información detallada do ficheiro:", + "deleteSelected": "Eliminar seleccionados", + "selectAll": "Seleccionar todo", + "confirmDelete": "Estás seguro de que queres eliminar {count} traballo(s)? Esta acción non se pode desfacer.", + "deleteSuccess": "Elimináronse {deleted} traballo(s) correctamente.", + "deleteFailed": "Non se puideron eliminar {failed} traballo(s).", + "deleteError": "Produciuse un erro ao eliminar os traballos. Por favor, téntao de novo." + }, + "auth": { + "email": "Correo electrónico", + "password": "Contrasinal", + "currentPassword": "Contrasinal actual", + "newPassword": "Contrasinal (deixa en branco se non cambia)", + "loginButton": "Iniciar sesión", + "registerButton": "Rexistrarse", + "updateButton": "Actualizar", + "createAccount": "Crear conta", + "invalidCredentials": "Credenciais non válidas.", + "emailInUse": "O correo electrónico xa está en uso.", + "unauthorized": "Non autorizado", + "cookiesRequired": "As cookies deben estar habilitadas para usar esta aplicación.", + "noCookies": "Non hai cookie de autenticación, quizais o teu navegador bloquea as cookies." + }, + "setup": { + "welcome": "Benvido a ConvertX-CN!", + "createYourAccount": "Crea a túa conta", + "reportIssues": "Informa de calquera problema en", + "github": "GitHub" + }, + "errors": { + "jobNotFound": "Traballo non atopado.", + "fileNotFound": "Ficheiro non atopado.", + "uploadFailed": "Erro ao subir.", + "conversionFailed": "Erro na conversión.", + "serverError": "Erro do servidor." + }, + "upload": { + "success": "Ficheiros subidos correctamente.", + "dragDrop": "Solta os ficheiros aquí" + }, + "file": { + "size": "{size} kB" + } +} diff --git a/src/locales/gu.json b/src/locales/gu.json new file mode 100644 index 0000000..07e3245 --- /dev/null +++ b/src/locales/gu.json @@ -0,0 +1,106 @@ +{ + "common": { + "appName": "ConvertX-CN", + "poweredBy": "દ્વારા સંચાલિત", + "version": "v{version}", + "loading": "લોડ થઈ રહ્યું છે...", + "error": "ભૂલ", + "success": "સફળતા", + "confirm": "પુષ્ટિ કરો", + "cancel": "રદ કરો", + "close": "બંધ કરો", + "save": "સાચવો", + "delete": "કાઢી નાખો", + "remove": "દૂર કરો", + "download": "ડાઉનલોડ કરો", + "upload": "અપલોડ કરો", + "submit": "સબમિટ કરો", + "back": "પાછા", + "next": "આગળ", + "yes": "હા", + "no": "ના" + }, + "nav": { + "history": "ઇતિહાસ", + "account": "એકાઉન્ટ", + "logout": "લૉગઆઉટ", + "login": "લૉગિન", + "register": "નોંધણી કરો", + "language": "ભાષા" + }, + "convert": { + "title": "રૂપાંતર કરો", + "titleWithType": ".{fileType} રૂપાંતર કરો", + "chooseFile": "ફાઇલ પસંદ કરો", + "orDragHere": "અથવા અહીં ખેંચો", + "searchConversions": "રૂપાંતરણો શોધો", + "convertTo": "આમાં રૂપાંતર કરો", + "convertButton": "રૂપાંતર કરો", + "uploading": "અપલોડ થઈ રહ્યું છે...", + "processing": "પ્રક્રિયા થઈ રહી છે..." + }, + "results": { + "title": "પરિણામો", + "convertedFileName": "રૂપાંતરિત ફાઇલ નામ", + "status": "સ્થિતિ", + "actions": "ક્રિયાઓ", + "downloadAll": "બધું", + "downloadTar": "Tar", + "deleteJob": "કાઢી નાખો", + "noFiles": "હજી કોઈ ફાઇલ રૂપાંતરિત થઈ નથી.", + "statusPending": "બાકી", + "statusCompleted": "પૂર્ણ", + "statusFailed": "નિષ્ફળ" + }, + "history": { + "title": "પરિણામો", + "time": "સમય", + "files": "ફાઇલો", + "filesDone": "પૂર્ણ થયેલ ફાઇલો", + "status": "સ્થિતિ", + "actions": "ક્રિયાઓ", + "expandDetails": "વિગતો વિસ્તૃત કરો", + "detailedFileInfo": "વિગતવાર ફાઇલ માહિતી:", + "deleteSelected": "પસંદ કરેલ કાઢી નાખો", + "selectAll": "બધું પસંદ કરો", + "confirmDelete": "શું તમે ખાતરી છો કે તમે {count} જોબ કાઢી નાખવા માંગો છો? આ ક્રિયા પૂર્વવત થઈ શકતી નથી.", + "deleteSuccess": "{deleted} જોબ સફળતાપૂર્વક કાઢી નાખવામાં આવ્યા.", + "deleteFailed": "{failed} જોબ કાઢી નાખવામાં નિષ્ફળ.", + "deleteError": "જોબ કાઢી નાખતી વખતે ભૂલ થઈ. કૃપા કરીને ફરી પ્રયાસ કરો." + }, + "auth": { + "email": "ઇમેઇલ", + "password": "પાસવર્ડ", + "currentPassword": "વર્તમાન પાસવર્ડ", + "newPassword": "પાસવર્ડ (બદલવું નથી તો ખાલી રાખો)", + "loginButton": "લૉગિન", + "registerButton": "નોંધણી કરો", + "updateButton": "અપડેટ કરો", + "createAccount": "એકાઉન્ટ બનાવો", + "invalidCredentials": "અમાન્ય ઓળખાણ.", + "emailInUse": "ઇમેઇલ પહેલેથી વપરાશમાં છે.", + "unauthorized": "અનધિકૃત", + "cookiesRequired": "આ એપ વાપરવા માટે કૂકીઝ સક્ષમ હોવી જોઈએ.", + "noCookies": "કોઈ પ્રમાણીકરણ કૂકી નથી, કદાચ તમારું બ્રાઉઝર કૂકીઝ અવરોધિત કરી રહ્યું છે." + }, + "setup": { + "welcome": "ConvertX-CN માં સ્વાગત છે!", + "createYourAccount": "તમારું એકાઉન્ટ બનાવો", + "reportIssues": "સમસ્યાઓ જણાવો", + "github": "GitHub" + }, + "errors": { + "jobNotFound": "જોબ મળ્યો નથી.", + "fileNotFound": "ફાઇલ મળી નથી.", + "uploadFailed": "અપલોડ નિષ્ફળ.", + "conversionFailed": "રૂપાંતર નિષ્ફળ.", + "serverError": "સર્વર ભૂલ." + }, + "upload": { + "success": "ફાઇલો સફળતાપૂર્વક અપલોડ થઈ.", + "dragDrop": "ફાઇલો અહીં છોડો" + }, + "file": { + "size": "{size} kB" + } +} diff --git a/src/locales/he.json b/src/locales/he.json new file mode 100644 index 0000000..422376f --- /dev/null +++ b/src/locales/he.json @@ -0,0 +1,106 @@ +{ + "common": { + "appName": "ConvertX-CN", + "poweredBy": "מופעל על ידי", + "version": "v{version}", + "loading": "טוען...", + "error": "שגיאה", + "success": "הצלחה", + "confirm": "אישור", + "cancel": "ביטול", + "close": "סגור", + "save": "שמור", + "delete": "מחק", + "remove": "הסר", + "download": "הורד", + "upload": "העלה", + "submit": "שלח", + "back": "חזור", + "next": "הבא", + "yes": "כן", + "no": "לא" + }, + "nav": { + "history": "היסטוריה", + "account": "חשבון", + "logout": "התנתק", + "login": "התחבר", + "register": "הירשם", + "language": "שפה" + }, + "convert": { + "title": "המר", + "titleWithType": "המר .{fileType}", + "chooseFile": "בחר קובץ", + "orDragHere": "או גרור לכאן", + "searchConversions": "חפש המרות", + "convertTo": "המר ל", + "convertButton": "המר", + "uploading": "מעלה...", + "processing": "מעבד..." + }, + "results": { + "title": "תוצאות", + "convertedFileName": "שם הקובץ המומר", + "status": "סטטוס", + "actions": "פעולות", + "downloadAll": "הכל", + "downloadTar": "Tar", + "deleteJob": "מחק", + "noFiles": "עדיין לא הומרו קבצים.", + "statusPending": "ממתין", + "statusCompleted": "הושלם", + "statusFailed": "נכשל" + }, + "history": { + "title": "תוצאות", + "time": "זמן", + "files": "קבצים", + "filesDone": "קבצים שהושלמו", + "status": "סטטוס", + "actions": "פעולות", + "expandDetails": "הרחב פרטים", + "detailedFileInfo": "מידע מפורט על הקובץ:", + "deleteSelected": "מחק נבחרים", + "selectAll": "בחר הכל", + "confirmDelete": "האם אתה בטוח שברצונך למחוק {count} משימה/ות? פעולה זו אינה ניתנת לביטול.", + "deleteSuccess": "נמחקו בהצלחה {deleted} משימה/ות.", + "deleteFailed": "נכשלה מחיקת {failed} משימה/ות.", + "deleteError": "אירעה שגיאה בעת מחיקת משימות. נסה שוב." + }, + "auth": { + "email": "דוא\"ל", + "password": "סיסמה", + "currentPassword": "סיסמה נוכחית", + "newPassword": "סיסמה (השאר ריק אם לא משתנה)", + "loginButton": "התחבר", + "registerButton": "הירשם", + "updateButton": "עדכן", + "createAccount": "צור חשבון", + "invalidCredentials": "פרטי התחברות שגויים.", + "emailInUse": "הדוא\"ל כבר בשימוש.", + "unauthorized": "לא מורשה", + "cookiesRequired": "יש להפעיל עוגיות כדי להשתמש באפליקציה זו.", + "noCookies": "אין עוגיית אימות, ייתכן שהדפדפן שלך חוסם עוגיות." + }, + "setup": { + "welcome": "ברוכים הבאים ל-ConvertX-CN!", + "createYourAccount": "צור את החשבון שלך", + "reportIssues": "דווח על בעיות ב", + "github": "GitHub" + }, + "errors": { + "jobNotFound": "המשימה לא נמצאה.", + "fileNotFound": "הקובץ לא נמצא.", + "uploadFailed": "ההעלאה נכשלה.", + "conversionFailed": "ההמרה נכשלה.", + "serverError": "שגיאת שרת." + }, + "upload": { + "success": "הקבצים הועלו בהצלחה.", + "dragDrop": "גרור קבצים לכאן" + }, + "file": { + "size": "{size} kB" + } +} diff --git a/src/locales/hi.json b/src/locales/hi.json new file mode 100644 index 0000000..8ce7b99 --- /dev/null +++ b/src/locales/hi.json @@ -0,0 +1,106 @@ +{ + "common": { + "appName": "ConvertX-CN", + "poweredBy": "द्वारा संचालित", + "version": "v{version}", + "loading": "लोड हो रहा है...", + "error": "त्रुटि", + "success": "सफलता", + "confirm": "पुष्टि करें", + "cancel": "रद्द करें", + "close": "बंद करें", + "save": "सहेजें", + "delete": "हटाएं", + "remove": "निकालें", + "download": "डाउनलोड", + "upload": "अपलोड", + "submit": "जमा करें", + "back": "वापस", + "next": "अगला", + "yes": "हाँ", + "no": "नहीं" + }, + "nav": { + "history": "इतिहास", + "account": "खाता", + "logout": "लॉग आउट", + "login": "लॉग इन", + "register": "पंजीकरण", + "language": "भाषा" + }, + "convert": { + "title": "कन्वर्ट करें", + "titleWithType": ".{fileType} कन्वर्ट करें", + "chooseFile": "एक फ़ाइल चुनें", + "orDragHere": "या यहाँ खींचें", + "searchConversions": "रूपांतरण खोजें", + "convertTo": "में कन्वर्ट करें", + "convertButton": "कन्वर्ट करें", + "uploading": "अपलोड हो रहा है...", + "processing": "प्रोसेसिंग..." + }, + "results": { + "title": "परिणाम", + "convertedFileName": "कन्वर्ट की गई फ़ाइल का नाम", + "status": "स्थिति", + "actions": "कार्रवाई", + "downloadAll": "सभी", + "downloadTar": "Tar", + "deleteJob": "हटाएं", + "noFiles": "अभी तक कोई फ़ाइल कन्वर्ट नहीं हुई।", + "statusPending": "लंबित", + "statusCompleted": "पूर्ण", + "statusFailed": "विफल" + }, + "history": { + "title": "परिणाम", + "time": "समय", + "files": "फ़ाइलें", + "filesDone": "पूर्ण फ़ाइलें", + "status": "स्थिति", + "actions": "कार्रवाई", + "expandDetails": "विवरण विस्तार करें", + "detailedFileInfo": "विस्तृत फ़ाइल जानकारी:", + "deleteSelected": "चयनित हटाएं", + "selectAll": "सभी चुनें", + "confirmDelete": "क्या आप वाकई {count} कार्य हटाना चाहते हैं? यह क्रिया पूर्ववत नहीं की जा सकती।", + "deleteSuccess": "{deleted} कार्य सफलतापूर्वक हटाए गए।", + "deleteFailed": "{failed} कार्य हटाने में विफल।", + "deleteError": "कार्य हटाते समय त्रुटि हुई। कृपया पुनः प्रयास करें।" + }, + "auth": { + "email": "ईमेल", + "password": "पासवर्ड", + "currentPassword": "वर्तमान पासवर्ड", + "newPassword": "पासवर्ड (अपरिवर्तित के लिए खाली छोड़ें)", + "loginButton": "लॉग इन", + "registerButton": "पंजीकरण", + "updateButton": "अपडेट करें", + "createAccount": "खाता बनाएं", + "invalidCredentials": "अमान्य क्रेडेंशियल।", + "emailInUse": "ईमेल पहले से उपयोग में है।", + "unauthorized": "अनधिकृत", + "cookiesRequired": "इस ऐप का उपयोग करने के लिए कुकीज़ सक्षम होनी चाहिए।", + "noCookies": "कोई प्रमाणीकरण कुकी नहीं, शायद आपका ब्राउज़र कुकीज़ को ब्लॉक कर रहा है।" + }, + "setup": { + "welcome": "ConvertX-CN में आपका स्वागत है!", + "createYourAccount": "अपना खाता बनाएं", + "reportIssues": "समस्याओं की रिपोर्ट करें", + "github": "GitHub" + }, + "errors": { + "jobNotFound": "कार्य नहीं मिला।", + "fileNotFound": "फ़ाइल नहीं मिली।", + "uploadFailed": "अपलोड विफल।", + "conversionFailed": "रूपांतरण विफल।", + "serverError": "सर्वर त्रुटि।" + }, + "upload": { + "success": "फ़ाइलें सफलतापूर्वक अपलोड हुईं।", + "dragDrop": "फ़ाइलें यहाँ छोड़ें" + }, + "file": { + "size": "{size} kB" + } +} diff --git a/src/locales/hr.json b/src/locales/hr.json new file mode 100644 index 0000000..69b6759 --- /dev/null +++ b/src/locales/hr.json @@ -0,0 +1,106 @@ +{ + "common": { + "appName": "ConvertX-CN", + "poweredBy": "Pokreće", + "version": "v{version}", + "loading": "Učitavanje...", + "error": "Greška", + "success": "Uspjeh", + "confirm": "Potvrdi", + "cancel": "Odustani", + "close": "Zatvori", + "save": "Spremi", + "delete": "Obriši", + "remove": "Ukloni", + "download": "Preuzmi", + "upload": "Prenesi", + "submit": "Pošalji", + "back": "Natrag", + "next": "Sljedeće", + "yes": "Da", + "no": "Ne" + }, + "nav": { + "history": "Povijest", + "account": "Račun", + "logout": "Odjava", + "login": "Prijava", + "register": "Registracija", + "language": "Jezik" + }, + "convert": { + "title": "Pretvori", + "titleWithType": "Pretvori .{fileType}", + "chooseFile": "Odaberite datoteku", + "orDragHere": "ili je povucite ovdje", + "searchConversions": "Pretraži pretvorbe", + "convertTo": "Pretvori u", + "convertButton": "Pretvori", + "uploading": "Prijenos...", + "processing": "Obrada..." + }, + "results": { + "title": "Rezultati", + "convertedFileName": "Naziv pretvorene datoteke", + "status": "Status", + "actions": "Radnje", + "downloadAll": "Sve", + "downloadTar": "Tar", + "deleteJob": "Obriši", + "noFiles": "Još nema pretvorenih datoteka.", + "statusPending": "Na čekanju", + "statusCompleted": "Završeno", + "statusFailed": "Neuspjelo" + }, + "history": { + "title": "Rezultati", + "time": "Vrijeme", + "files": "Datoteke", + "filesDone": "Završene datoteke", + "status": "Status", + "actions": "Radnje", + "expandDetails": "Proširi detalje", + "detailedFileInfo": "Detaljne informacije o datoteci:", + "deleteSelected": "Obriši odabrano", + "selectAll": "Odaberi sve", + "confirmDelete": "Jeste li sigurni da želite obrisati {count} zadatak(e)? Ova radnja se ne može poništiti.", + "deleteSuccess": "Uspješno obrisano {deleted} zadatak(a).", + "deleteFailed": "Nije uspjelo brisanje {failed} zadatak(a).", + "deleteError": "Došlo je do greške prilikom brisanja zadataka. Molimo pokušajte ponovo." + }, + "auth": { + "email": "E-pošta", + "password": "Lozinka", + "currentPassword": "Trenutna lozinka", + "newPassword": "Lozinka (ostavite prazno za nepromijenjeno)", + "loginButton": "Prijava", + "registerButton": "Registracija", + "updateButton": "Ažuriraj", + "createAccount": "Stvori račun", + "invalidCredentials": "Nevažeće vjerodajnice.", + "emailInUse": "E-pošta je već u upotrebi.", + "unauthorized": "Neovlašteno", + "cookiesRequired": "Kolačići moraju biti omogućeni za korištenje ove aplikacije.", + "noCookies": "Nema kolačića za autentifikaciju, možda vaš preglednik blokira kolačiće." + }, + "setup": { + "welcome": "Dobrodošli u ConvertX-CN!", + "createYourAccount": "Stvorite svoj račun", + "reportIssues": "Prijavite probleme na", + "github": "GitHub" + }, + "errors": { + "jobNotFound": "Zadatak nije pronađen.", + "fileNotFound": "Datoteka nije pronađena.", + "uploadFailed": "Prijenos nije uspio.", + "conversionFailed": "Pretvorba nije uspjela.", + "serverError": "Greška poslužitelja." + }, + "upload": { + "success": "Datoteke su uspješno prenesene.", + "dragDrop": "Ispustite datoteke ovdje" + }, + "file": { + "size": "{size} kB" + } +} diff --git a/src/locales/hu.json b/src/locales/hu.json new file mode 100644 index 0000000..2644196 --- /dev/null +++ b/src/locales/hu.json @@ -0,0 +1,106 @@ +{ + "common": { + "appName": "ConvertX-CN", + "poweredBy": "Működteti", + "version": "v{version}", + "loading": "Betöltés...", + "error": "Hiba", + "success": "Sikeres", + "confirm": "Megerősítés", + "cancel": "Mégse", + "close": "Bezárás", + "save": "Mentés", + "delete": "Törlés", + "remove": "Eltávolítás", + "download": "Letöltés", + "upload": "Feltöltés", + "submit": "Küldés", + "back": "Vissza", + "next": "Következő", + "yes": "Igen", + "no": "Nem" + }, + "nav": { + "history": "Előzmények", + "account": "Fiók", + "logout": "Kijelentkezés", + "login": "Bejelentkezés", + "register": "Regisztráció", + "language": "Nyelv" + }, + "convert": { + "title": "Konvertálás", + "titleWithType": ".{fileType} konvertálása", + "chooseFile": "Válasszon fájlt", + "orDragHere": "vagy húzza ide", + "searchConversions": "Konverziók keresése", + "convertTo": "Konvertálás erre", + "convertButton": "Konvertálás", + "uploading": "Feltöltés...", + "processing": "Feldolgozás..." + }, + "results": { + "title": "Eredmények", + "convertedFileName": "Konvertált fájlnév", + "status": "Állapot", + "actions": "Műveletek", + "downloadAll": "Mind", + "downloadTar": "Tar", + "deleteJob": "Törlés", + "noFiles": "Még nincsenek konvertált fájlok.", + "statusPending": "Függőben", + "statusCompleted": "Befejezve", + "statusFailed": "Sikertelen" + }, + "history": { + "title": "Eredmények", + "time": "Idő", + "files": "Fájlok", + "filesDone": "Kész fájlok", + "status": "Állapot", + "actions": "Műveletek", + "expandDetails": "Részletek kibontása", + "detailedFileInfo": "Részletes fájlinformáció:", + "deleteSelected": "Kiválasztottak törlése", + "selectAll": "Összes kijelölése", + "confirmDelete": "Biztosan törölni szeretné a(z) {count} feladatot? Ez a művelet nem vonható vissza.", + "deleteSuccess": "Sikeresen törölve {deleted} feladat.", + "deleteFailed": "Nem sikerült törölni {failed} feladatot.", + "deleteError": "Hiba történt a feladatok törlésekor. Kérjük, próbálja újra." + }, + "auth": { + "email": "E-mail", + "password": "Jelszó", + "currentPassword": "Jelenlegi jelszó", + "newPassword": "Jelszó (hagyja üresen, ha változatlan)", + "loginButton": "Bejelentkezés", + "registerButton": "Regisztráció", + "updateButton": "Frissítés", + "createAccount": "Fiók létrehozása", + "invalidCredentials": "Érvénytelen hitelesítő adatok.", + "emailInUse": "Az e-mail már használatban van.", + "unauthorized": "Jogosulatlan", + "cookiesRequired": "A sütiknek engedélyezve kell lenniük az alkalmazás használatához.", + "noCookies": "Nincs hitelesítési süti, talán a böngészője blokkolja a sütiket." + }, + "setup": { + "welcome": "Üdvözöljük a ConvertX-CN-ben!", + "createYourAccount": "Hozza létre fiókját", + "reportIssues": "Jelentse a problémákat a", + "github": "GitHub" + }, + "errors": { + "jobNotFound": "Feladat nem található.", + "fileNotFound": "Fájl nem található.", + "uploadFailed": "Feltöltés sikertelen.", + "conversionFailed": "Konvertálás sikertelen.", + "serverError": "Szerverhiba." + }, + "upload": { + "success": "Fájlok sikeresen feltöltve.", + "dragDrop": "Húzza ide a fájlokat" + }, + "file": { + "size": "{size} kB" + } +} diff --git a/src/locales/id.json b/src/locales/id.json new file mode 100644 index 0000000..b503e2f --- /dev/null +++ b/src/locales/id.json @@ -0,0 +1,106 @@ +{ + "common": { + "appName": "ConvertX-CN", + "poweredBy": "Didukung oleh", + "version": "v{version}", + "loading": "Memuat...", + "error": "Kesalahan", + "success": "Berhasil", + "confirm": "Konfirmasi", + "cancel": "Batal", + "close": "Tutup", + "save": "Simpan", + "delete": "Hapus", + "remove": "Hapus", + "download": "Unduh", + "upload": "Unggah", + "submit": "Kirim", + "back": "Kembali", + "next": "Berikutnya", + "yes": "Ya", + "no": "Tidak" + }, + "nav": { + "history": "Riwayat", + "account": "Akun", + "logout": "Keluar", + "login": "Masuk", + "register": "Daftar", + "language": "Bahasa" + }, + "convert": { + "title": "Konversi", + "titleWithType": "Konversi .{fileType}", + "chooseFile": "Pilih file", + "orDragHere": "atau seret ke sini", + "searchConversions": "Cari konversi", + "convertTo": "Konversi ke", + "convertButton": "Konversi", + "uploading": "Mengunggah...", + "processing": "Memproses..." + }, + "results": { + "title": "Hasil", + "convertedFileName": "Nama File Terkonversi", + "status": "Status", + "actions": "Tindakan", + "downloadAll": "Semua", + "downloadTar": "Tar", + "deleteJob": "Hapus", + "noFiles": "Belum ada file yang dikonversi.", + "statusPending": "Menunggu", + "statusCompleted": "Selesai", + "statusFailed": "Gagal" + }, + "history": { + "title": "Hasil", + "time": "Waktu", + "files": "File", + "filesDone": "File Selesai", + "status": "Status", + "actions": "Tindakan", + "expandDetails": "Perluas detail", + "detailedFileInfo": "Informasi File Detail:", + "deleteSelected": "Hapus Terpilih", + "selectAll": "Pilih semua", + "confirmDelete": "Apakah Anda yakin ingin menghapus {count} pekerjaan? Tindakan ini tidak dapat dibatalkan.", + "deleteSuccess": "Berhasil menghapus {deleted} pekerjaan.", + "deleteFailed": "Gagal menghapus {failed} pekerjaan.", + "deleteError": "Terjadi kesalahan saat menghapus pekerjaan. Silakan coba lagi." + }, + "auth": { + "email": "Email", + "password": "Kata Sandi", + "currentPassword": "Kata Sandi Saat Ini", + "newPassword": "Kata Sandi (kosongkan jika tidak berubah)", + "loginButton": "Masuk", + "registerButton": "Daftar", + "updateButton": "Perbarui", + "createAccount": "Buat akun", + "invalidCredentials": "Kredensial tidak valid.", + "emailInUse": "Email sudah digunakan.", + "unauthorized": "Tidak diizinkan", + "cookiesRequired": "Cookie harus diaktifkan untuk menggunakan aplikasi ini.", + "noCookies": "Tidak ada cookie autentikasi, mungkin browser Anda memblokir cookie." + }, + "setup": { + "welcome": "Selamat datang di ConvertX-CN!", + "createYourAccount": "Buat akun Anda", + "reportIssues": "Laporkan masalah di", + "github": "GitHub" + }, + "errors": { + "jobNotFound": "Pekerjaan tidak ditemukan.", + "fileNotFound": "File tidak ditemukan.", + "uploadFailed": "Unggahan gagal.", + "conversionFailed": "Konversi gagal.", + "serverError": "Kesalahan server." + }, + "upload": { + "success": "File berhasil diunggah.", + "dragDrop": "Letakkan file di sini" + }, + "file": { + "size": "{size} kB" + } +} diff --git a/src/locales/is.json b/src/locales/is.json new file mode 100644 index 0000000..b6bcce7 --- /dev/null +++ b/src/locales/is.json @@ -0,0 +1,106 @@ +{ + "common": { + "appName": "ConvertX-CN", + "poweredBy": "Keyrt af", + "version": "v{version}", + "loading": "Hleður...", + "error": "Villa", + "success": "Tókst", + "confirm": "Staðfesta", + "cancel": "Hætta við", + "close": "Loka", + "save": "Vista", + "delete": "Eyða", + "remove": "Fjarlægja", + "download": "Hlaða niður", + "upload": "Hlaða upp", + "submit": "Senda", + "back": "Til baka", + "next": "Næsta", + "yes": "Já", + "no": "Nei" + }, + "nav": { + "history": "Saga", + "account": "Reikningur", + "logout": "Útskrá", + "login": "Innskrá", + "register": "Nýskrá", + "language": "Tungumál" + }, + "convert": { + "title": "Umbreyta", + "titleWithType": "Umbreyta .{fileType}", + "chooseFile": "Veldu skrá", + "orDragHere": "eða dragðu hana hingað", + "searchConversions": "Leita að umbreytingum", + "convertTo": "Umbreyta í", + "convertButton": "Umbreyta", + "uploading": "Hleður upp...", + "processing": "Vinnur úr..." + }, + "results": { + "title": "Niðurstöður", + "convertedFileName": "Nafn umbreyttrar skráar", + "status": "Staða", + "actions": "Aðgerðir", + "downloadAll": "Allt", + "downloadTar": "Tar", + "deleteJob": "Eyða", + "noFiles": "Engar skrár hafa verið umbreyttar ennþá.", + "statusPending": "Í bið", + "statusCompleted": "Lokið", + "statusFailed": "Mistókst" + }, + "history": { + "title": "Niðurstöður", + "time": "Tími", + "files": "Skrár", + "filesDone": "Loknar skrár", + "status": "Staða", + "actions": "Aðgerðir", + "expandDetails": "Sýna nánar", + "detailedFileInfo": "Ítarlegar skráarupplýsingar:", + "deleteSelected": "Eyða völdum", + "selectAll": "Velja allt", + "confirmDelete": "Ertu viss um að þú viljir eyða {count} verki(um)? Þessa aðgerð er ekki hægt að afturkalla.", + "deleteSuccess": "{deleted} verk(um) eytt.", + "deleteFailed": "Ekki tókst að eyða {failed} verki(um).", + "deleteError": "Villa kom upp við að eyða verkum. Vinsamlegast reyndu aftur." + }, + "auth": { + "email": "Netfang", + "password": "Lykilorð", + "currentPassword": "Núverandi lykilorð", + "newPassword": "Lykilorð (skildu eftir autt ef óbreytt)", + "loginButton": "Innskrá", + "registerButton": "Nýskrá", + "updateButton": "Uppfæra", + "createAccount": "Stofna reikning", + "invalidCredentials": "Ógild skilríki.", + "emailInUse": "Netfang er þegar í notkun.", + "unauthorized": "Óheimilt", + "cookiesRequired": "Vefkökur þurfa að vera virkar til að nota þetta forrit.", + "noCookies": "Engin auðkenningarkaka, kannski vafrinn þinn lokar á vefkökur." + }, + "setup": { + "welcome": "Velkomin í ConvertX-CN!", + "createYourAccount": "Stofnaðu reikninginn þinn", + "reportIssues": "Tilkynntu vandamál á", + "github": "GitHub" + }, + "errors": { + "jobNotFound": "Verk fannst ekki.", + "fileNotFound": "Skrá fannst ekki.", + "uploadFailed": "Upphleðsla mistókst.", + "conversionFailed": "Umbreyting mistókst.", + "serverError": "Villa á þjóni." + }, + "upload": { + "success": "Skrár hlaðnar upp.", + "dragDrop": "Slepptu skrám hér" + }, + "file": { + "size": "{size} kB" + } +} diff --git a/src/locales/it.json b/src/locales/it.json new file mode 100644 index 0000000..94621a3 --- /dev/null +++ b/src/locales/it.json @@ -0,0 +1,106 @@ +{ + "common": { + "appName": "ConvertX-CN", + "poweredBy": "Offerto da", + "version": "v{version}", + "loading": "Caricamento...", + "error": "Errore", + "success": "Successo", + "confirm": "Conferma", + "cancel": "Annulla", + "close": "Chiudi", + "save": "Salva", + "delete": "Elimina", + "remove": "Rimuovi", + "download": "Scarica", + "upload": "Carica", + "submit": "Invia", + "back": "Indietro", + "next": "Avanti", + "yes": "Sì", + "no": "No" + }, + "nav": { + "history": "Cronologia", + "account": "Account", + "logout": "Esci", + "login": "Accedi", + "register": "Registrati", + "language": "Lingua" + }, + "convert": { + "title": "Converti", + "titleWithType": "Converti .{fileType}", + "chooseFile": "Scegli un file", + "orDragHere": "o trascinalo qui", + "searchConversions": "Cerca conversioni", + "convertTo": "Converti in", + "convertButton": "Converti", + "uploading": "Caricamento...", + "processing": "Elaborazione..." + }, + "results": { + "title": "Risultati", + "convertedFileName": "Nome file convertito", + "status": "Stato", + "actions": "Azioni", + "downloadAll": "Tutto", + "downloadTar": "Tar", + "deleteJob": "Elimina", + "noFiles": "Nessun file convertito ancora.", + "statusPending": "In attesa", + "statusCompleted": "Completato", + "statusFailed": "Fallito" + }, + "history": { + "title": "Risultati", + "time": "Ora", + "files": "File", + "filesDone": "File completati", + "status": "Stato", + "actions": "Azioni", + "expandDetails": "Espandi dettagli", + "detailedFileInfo": "Informazioni dettagliate sul file:", + "deleteSelected": "Elimina selezionati", + "selectAll": "Seleziona tutto", + "confirmDelete": "Sei sicuro di voler eliminare {count} lavoro/i? Questa azione non può essere annullata.", + "deleteSuccess": "{deleted} lavoro/i eliminato/i con successo.", + "deleteFailed": "Impossibile eliminare {failed} lavoro/i.", + "deleteError": "Si è verificato un errore durante l'eliminazione dei lavori. Riprova." + }, + "auth": { + "email": "Email", + "password": "Password", + "currentPassword": "Password attuale", + "newPassword": "Password (lascia vuoto per non modificare)", + "loginButton": "Accedi", + "registerButton": "Registrati", + "updateButton": "Aggiorna", + "createAccount": "Crea account", + "invalidCredentials": "Credenziali non valide.", + "emailInUse": "Email già in uso.", + "unauthorized": "Non autorizzato", + "cookiesRequired": "I cookie devono essere abilitati per utilizzare questa app.", + "noCookies": "Nessun cookie di autenticazione, forse il tuo browser sta bloccando i cookie." + }, + "setup": { + "welcome": "Benvenuto su ConvertX-CN!", + "createYourAccount": "Crea il tuo account", + "reportIssues": "Segnala problemi su", + "github": "GitHub" + }, + "errors": { + "jobNotFound": "Lavoro non trovato.", + "fileNotFound": "File non trovato.", + "uploadFailed": "Caricamento fallito.", + "conversionFailed": "Conversione fallita.", + "serverError": "Errore del server." + }, + "upload": { + "success": "File caricati con successo.", + "dragDrop": "Trascina i file qui" + }, + "file": { + "size": "{size} kB" + } +} diff --git a/src/locales/km.json b/src/locales/km.json new file mode 100644 index 0000000..a27c145 --- /dev/null +++ b/src/locales/km.json @@ -0,0 +1,106 @@ +{ + "common": { + "appName": "ConvertX-CN", + "poweredBy": "ដំណើរការដោយ", + "version": "v{version}", + "loading": "កំពុងផ្ទុក...", + "error": "កំហុស", + "success": "ជោគជ័យ", + "confirm": "បញ្ជាក់", + "cancel": "បោះបង់", + "close": "បិទ", + "save": "រក្សាទុក", + "delete": "លុប", + "remove": "ដកចេញ", + "download": "ទាញយក", + "upload": "ផ្ទុកឡើង", + "submit": "ដាក់ស្នើ", + "back": "ថយក្រោយ", + "next": "បន្ទាប់", + "yes": "បាទ/ចាស", + "no": "ទេ" + }, + "nav": { + "history": "ប្រវត្តិ", + "account": "គណនី", + "logout": "ចាកចេញ", + "login": "ចូល", + "register": "ចុះឈ្មោះ", + "language": "ភាសា" + }, + "convert": { + "title": "បម្លែង", + "titleWithType": "បម្លែង .{fileType}", + "chooseFile": "ជ្រើសរើសឯកសារ", + "orDragHere": "ឬអូសមកទីនេះ", + "searchConversions": "ស្វែងរកការបម្លែង", + "convertTo": "បម្លែងទៅ", + "convertButton": "បម្លែង", + "uploading": "កំពុងផ្ទុកឡើង...", + "processing": "កំពុងដំណើរការ..." + }, + "results": { + "title": "លទ្ធផល", + "convertedFileName": "ឈ្មោះឯកសារដែលបានបម្លែង", + "status": "ស្ថានភាព", + "actions": "សកម្មភាព", + "downloadAll": "ទាំងអស់", + "downloadTar": "Tar", + "deleteJob": "លុប", + "noFiles": "មិនទាន់មានឯកសារដែលបានបម្លែងទេ។", + "statusPending": "កំពុងរង់ចាំ", + "statusCompleted": "បានបញ្ចប់", + "statusFailed": "បរាជ័យ" + }, + "history": { + "title": "លទ្ធផល", + "time": "ពេលវេលា", + "files": "ឯកសារ", + "filesDone": "ឯកសារបានបញ្ចប់", + "status": "ស្ថានភាព", + "actions": "សកម្មភាព", + "expandDetails": "ពង្រីកព័ត៌មានលម្អិត", + "detailedFileInfo": "ព័ត៌មានលម្អិតឯកសារ:", + "deleteSelected": "លុបដែលបានជ្រើសរើស", + "selectAll": "ជ្រើសរើសទាំងអស់", + "confirmDelete": "តើអ្នកប្រាកដថាចង់លុបការងារ {count}? សកម្មភាពនេះមិនអាចត្រឡប់វិញបានទេ។", + "deleteSuccess": "បានលុបការងារ {deleted} ដោយជោគជ័យ។", + "deleteFailed": "បរាជ័យក្នុងការលុបការងារ {failed}។", + "deleteError": "មានកំហុសកើតឡើងពេលលុបការងារ។ សូមព្យាយាមម្តងទៀត។" + }, + "auth": { + "email": "អ៊ីមែល", + "password": "ពាក្យសម្ងាត់", + "currentPassword": "ពាក្យសម្ងាត់បច្ចុប្បន្ន", + "newPassword": "ពាក្យសម្ងាត់ (ទុកទទេបើមិនប្តូរ)", + "loginButton": "ចូល", + "registerButton": "ចុះឈ្មោះ", + "updateButton": "ធ្វើបច្ចុប្បន្នភាព", + "createAccount": "បង្កើតគណនី", + "invalidCredentials": "ព័ត៌មានសម្គាល់មិនត្រឹមត្រូវ។", + "emailInUse": "អ៊ីមែលមាននរណាប្រើរួចហើយ។", + "unauthorized": "គ្មានការអនុញ្ញាត", + "cookiesRequired": "គួរតែបើកខូគីដើម្បីប្រើកម្មវិធីនេះ។", + "noCookies": "គ្មានខូគីផ្ទៀងផ្ទាត់ទេ ប្រហែលជាកម្មវិធីរុករករបស់អ្នកកំពុងបិទខូគី។" + }, + "setup": { + "welcome": "សូមស្វាគមន៍មកកាន់ ConvertX-CN!", + "createYourAccount": "បង្កើតគណនីរបស់អ្នក", + "reportIssues": "រាយការណ៍បញ្ហានៅ", + "github": "GitHub" + }, + "errors": { + "jobNotFound": "រកមិនឃើញការងារ។", + "fileNotFound": "រកមិនឃើញឯកសារ។", + "uploadFailed": "ការផ្ទុកឡើងបរាជ័យ។", + "conversionFailed": "ការបម្លែងបរាជ័យ។", + "serverError": "កំហុសម៉ាស៊ីនមេ។" + }, + "upload": { + "success": "ឯកសារបានផ្ទុកឡើងដោយជោគជ័យ។", + "dragDrop": "ទម្លាក់ឯកសារទីនេះ" + }, + "file": { + "size": "{size} kB" + } +} diff --git a/src/locales/kn.json b/src/locales/kn.json new file mode 100644 index 0000000..374a828 --- /dev/null +++ b/src/locales/kn.json @@ -0,0 +1,106 @@ +{ + "common": { + "appName": "ConvertX-CN", + "poweredBy": "ಮೂಲಕ ಚಾಲಿತ", + "version": "v{version}", + "loading": "ಲೋಡ್ ಆಗುತ್ತಿದೆ...", + "error": "ದೋಷ", + "success": "ಯಶಸ್ಸು", + "confirm": "ದೃಢೀಕರಿಸಿ", + "cancel": "ರದ್ದುಮಾಡಿ", + "close": "ಮುಚ್ಚಿ", + "save": "ಉಳಿಸಿ", + "delete": "ಅಳಿಸಿ", + "remove": "ತೆಗೆದುಹಾಕಿ", + "download": "ಡೌನ್‌ಲೋಡ್", + "upload": "ಅಪ್‌ಲೋಡ್", + "submit": "ಸಲ್ಲಿಸಿ", + "back": "ಹಿಂದೆ", + "next": "ಮುಂದೆ", + "yes": "ಹೌದು", + "no": "ಇಲ್ಲ" + }, + "nav": { + "history": "ಇತಿಹಾಸ", + "account": "ಖಾತೆ", + "logout": "ಲಾಗ್ ಔಟ್", + "login": "ಲಾಗಿನ್", + "register": "ನೋಂದಣಿ", + "language": "ಭಾಷೆ" + }, + "convert": { + "title": "ಪರಿವರ್ತಿಸಿ", + "titleWithType": ".{fileType} ಪರಿವರ್ತಿಸಿ", + "chooseFile": "ಫೈಲ್ ಆಯ್ಕೆಮಾಡಿ", + "orDragHere": "ಅಥವಾ ಇಲ್ಲಿ ಎಳೆಯಿರಿ", + "searchConversions": "ಪರಿವರ್ತನೆಗಳನ್ನು ಹುಡುಕಿ", + "convertTo": "ಇದಕ್ಕೆ ಪರಿವರ್ತಿಸಿ", + "convertButton": "ಪರಿವರ್ತಿಸಿ", + "uploading": "ಅಪ್‌ಲೋಡ್ ಆಗುತ್ತಿದೆ...", + "processing": "ಪ್ರಕ್ರಿಯೆ ಆಗುತ್ತಿದೆ..." + }, + "results": { + "title": "ಫಲಿತಾಂಶಗಳು", + "convertedFileName": "ಪರಿವರ್ತಿತ ಫೈಲ್ ಹೆಸರು", + "status": "ಸ್ಥಿತಿ", + "actions": "ಕ್ರಿಯೆಗಳು", + "downloadAll": "ಎಲ್ಲಾ", + "downloadTar": "Tar", + "deleteJob": "ಅಳಿಸಿ", + "noFiles": "ಇನ್ನೂ ಯಾವುದೇ ಫೈಲ್‌ಗಳು ಪರಿವರ್ತನೆಯಾಗಿಲ್ಲ.", + "statusPending": "ಬಾಕಿ", + "statusCompleted": "ಪೂರ್ಣಗೊಂಡಿದೆ", + "statusFailed": "ವಿಫಲವಾಯಿತು" + }, + "history": { + "title": "ಫಲಿತಾಂಶಗಳು", + "time": "ಸಮಯ", + "files": "ಫೈಲ್‌ಗಳು", + "filesDone": "ಮುಗಿದ ಫೈಲ್‌ಗಳು", + "status": "ಸ್ಥಿತಿ", + "actions": "ಕ್ರಿಯೆಗಳು", + "expandDetails": "ವಿವರಗಳನ್ನು ವಿಸ್ತರಿಸಿ", + "detailedFileInfo": "ವಿವರವಾದ ಫೈಲ್ ಮಾಹಿತಿ:", + "deleteSelected": "ಆಯ್ಕೆಮಾಡಿದವುಗಳನ್ನು ಅಳಿಸಿ", + "selectAll": "ಎಲ್ಲಾ ಆಯ್ಕೆಮಾಡಿ", + "confirmDelete": "ನೀವು {count} ಕೆಲಸ(ಗಳನ್ನು) ಅಳಿಸಲು ಖಚಿತವಾಗಿದ್ದೀರಾ? ಈ ಕ್ರಿಯೆಯನ್ನು ರದ್ದುಗೊಳಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ.", + "deleteSuccess": "{deleted} ಕೆಲಸ(ಗಳು) ಯಶಸ್ವಿಯಾಗಿ ಅಳಿಸಲಾಗಿದೆ.", + "deleteFailed": "{failed} ಕೆಲಸ(ಗಳನ್ನು) ಅಳಿಸಲು ವಿಫಲವಾಯಿತು.", + "deleteError": "ಕೆಲಸಗಳನ್ನು ಅಳಿಸುವಾಗ ದೋಷ ಸಂಭವಿಸಿದೆ. ದಯವಿಟ್ಟು ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ." + }, + "auth": { + "email": "ಇಮೇಲ್", + "password": "ಪಾಸ್‌ವರ್ಡ್", + "currentPassword": "ಪ್ರಸ್ತುತ ಪಾಸ್‌ವರ್ಡ್", + "newPassword": "ಪಾಸ್‌ವರ್ಡ್ (ಬದಲಾಯಿಸದಿದ್ದರೆ ಖಾಲಿ ಬಿಡಿ)", + "loginButton": "ಲಾಗಿನ್", + "registerButton": "ನೋಂದಣಿ", + "updateButton": "ಅಪ್‌ಡೇಟ್", + "createAccount": "ಖಾತೆ ರಚಿಸಿ", + "invalidCredentials": "ಅಮಾನ್ಯ ರುಜುವಾತುಗಳು.", + "emailInUse": "ಇಮೇಲ್ ಈಗಾಗಲೇ ಬಳಕೆಯಲ್ಲಿದೆ.", + "unauthorized": "ಅನಧಿಕೃತ", + "cookiesRequired": "ಈ ಅಪ್ಲಿಕೇಶನ್ ಬಳಸಲು ಕುಕೀಗಳನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಬೇಕು.", + "noCookies": "ದೃಢೀಕರಣ ಕುಕೀ ಇಲ್ಲ, ನಿಮ್ಮ ಬ್ರೌಸರ್ ಕುಕೀಗಳನ್ನು ತಡೆಯುತ್ತಿರಬಹುದು." + }, + "setup": { + "welcome": "ConvertX-CN ಗೆ ಸುಸ್ವಾಗತ!", + "createYourAccount": "ನಿಮ್ಮ ಖಾತೆಯನ್ನು ರಚಿಸಿ", + "reportIssues": "ಸಮಸ್ಯೆಗಳನ್ನು ವರದಿ ಮಾಡಿ", + "github": "GitHub" + }, + "errors": { + "jobNotFound": "ಕೆಲಸ ಕಂಡುಬಂದಿಲ್ಲ.", + "fileNotFound": "ಫೈಲ್ ಕಂಡುಬಂದಿಲ್ಲ.", + "uploadFailed": "ಅಪ್‌ಲೋಡ್ ವಿಫಲವಾಯಿತು.", + "conversionFailed": "ಪರಿವರ್ತನೆ ವಿಫಲವಾಯಿತು.", + "serverError": "ಸರ್ವರ್ ದೋಷ." + }, + "upload": { + "success": "ಫೈಲ್‌ಗಳು ಯಶಸ್ವಿಯಾಗಿ ಅಪ್‌ಲೋಡ್ ಆಗಿವೆ.", + "dragDrop": "ಫೈಲ್‌ಗಳನ್ನು ಇಲ್ಲಿ ಬಿಡಿ" + }, + "file": { + "size": "{size} kB" + } +} diff --git a/src/locales/lo.json b/src/locales/lo.json new file mode 100644 index 0000000..7cc986b --- /dev/null +++ b/src/locales/lo.json @@ -0,0 +1,106 @@ +{ + "common": { + "appName": "ConvertX-CN", + "poweredBy": "ຂັບເຄື່ອນໂດຍ", + "version": "v{version}", + "loading": "ກຳລັງໂຫລດ...", + "error": "ຜິດພາດ", + "success": "ສຳເລັດ", + "confirm": "ຢືນຢັນ", + "cancel": "ຍົກເລີກ", + "close": "ປິດ", + "save": "ບັນທຶກ", + "delete": "ລຶບ", + "remove": "ເອົາອອກ", + "download": "ດາວໂຫລດ", + "upload": "ອັບໂຫລດ", + "submit": "ສົ່ງ", + "back": "ກັບຄືນ", + "next": "ຕໍ່ໄປ", + "yes": "ແມ່ນ", + "no": "ບໍ່" + }, + "nav": { + "history": "ປະຫວັດ", + "account": "ບັນຊີ", + "logout": "ອອກຈາກລະບົບ", + "login": "ເຂົ້າສູ່ລະບົບ", + "register": "ລົງທະບຽນ", + "language": "ພາສາ" + }, + "convert": { + "title": "ແປງ", + "titleWithType": "ແປງ .{fileType}", + "chooseFile": "ເລືອກໄຟລ໌", + "orDragHere": "ຫຼືລາກມາທີ່ນີ້", + "searchConversions": "ຄົ້ນຫາການແປງ", + "convertTo": "ແປງເປັນ", + "convertButton": "ແປງ", + "uploading": "ກຳລັງອັບໂຫລດ...", + "processing": "ກຳລັງປະມວນຜົນ..." + }, + "results": { + "title": "ຜົນລັບ", + "convertedFileName": "ຊື່ໄຟລ໌ທີ່ແປງແລ້ວ", + "status": "ສະຖານະ", + "actions": "ການກະທຳ", + "downloadAll": "ທັງໝົດ", + "downloadTar": "Tar", + "deleteJob": "ລຶບ", + "noFiles": "ຍັງບໍ່ມີໄຟລ໌ຖືກແປງ.", + "statusPending": "ລໍຖ້າ", + "statusCompleted": "ສຳເລັດ", + "statusFailed": "ລົ້ມເຫລວ" + }, + "history": { + "title": "ຜົນລັບ", + "time": "ເວລາ", + "files": "ໄຟລ໌", + "filesDone": "ໄຟລ໌ສຳເລັດ", + "status": "ສະຖານະ", + "actions": "ການກະທຳ", + "expandDetails": "ຂະຫຍາຍລາຍລະອຽດ", + "detailedFileInfo": "ຂໍ້ມູນໄຟລ໌ລະອຽດ:", + "deleteSelected": "ລຶບທີ່ເລືອກ", + "selectAll": "ເລືອກທັງໝົດ", + "confirmDelete": "ທ່ານແນ່ໃຈບໍ່ວ່າຕ້ອງການລຶບ {count} ວຽກ? ການກະທຳນີ້ບໍ່ສາມາດຍ້ອນກັບໄດ້.", + "deleteSuccess": "ລຶບ {deleted} ວຽກສຳເລັດແລ້ວ.", + "deleteFailed": "ລຶບ {failed} ວຽກບໍ່ສຳເລັດ.", + "deleteError": "ເກີດຄວາມຜິດພາດໃນການລຶບວຽກ. ກະລຸນາລອງໃໝ່." + }, + "auth": { + "email": "ອີເມວ", + "password": "ລະຫັດຜ່ານ", + "currentPassword": "ລະຫັດຜ່ານປັດຈຸບັນ", + "newPassword": "ລະຫັດຜ່ານ (ປ່ອຍວ່າງຖ້າບໍ່ປ່ຽນ)", + "loginButton": "ເຂົ້າສູ່ລະບົບ", + "registerButton": "ລົງທະບຽນ", + "updateButton": "ອັບເດດ", + "createAccount": "ສ້າງບັນຊີ", + "invalidCredentials": "ຂໍ້ມູນບໍ່ຖືກຕ້ອງ.", + "emailInUse": "ອີເມວນີ້ຖືກໃຊ້ແລ້ວ.", + "unauthorized": "ບໍ່ໄດ້ຮັບອະນຸຍາດ", + "cookiesRequired": "ຕ້ອງເປີດໃຊ້ cookies ເພື່ອໃຊ້ແອັບນີ້.", + "noCookies": "ບໍ່ມີ cookie ຢືນຢັນ, ບາງທີບຣາວເຊີຂອງທ່ານອາດປິດ cookies." + }, + "setup": { + "welcome": "ຍິນດີຕ້ອນຮັບສູ່ ConvertX-CN!", + "createYourAccount": "ສ້າງບັນຊີຂອງທ່ານ", + "reportIssues": "ລາຍງານບັນຫາໃນ", + "github": "GitHub" + }, + "errors": { + "jobNotFound": "ບໍ່ພົບວຽກ.", + "fileNotFound": "ບໍ່ພົບໄຟລ໌.", + "uploadFailed": "ອັບໂຫລດລົ້ມເຫລວ.", + "conversionFailed": "ການແປງລົ້ມເຫລວ.", + "serverError": "ຜິດພາດເຊີເວີ." + }, + "upload": { + "success": "ອັບໂຫລດໄຟລ໌ສຳເລັດແລ້ວ.", + "dragDrop": "ວາງໄຟລ໌ທີ່ນີ້" + }, + "file": { + "size": "{size} kB" + } +} diff --git a/src/locales/lt.json b/src/locales/lt.json new file mode 100644 index 0000000..91265b6 --- /dev/null +++ b/src/locales/lt.json @@ -0,0 +1,106 @@ +{ + "common": { + "appName": "ConvertX-CN", + "poweredBy": "Veikia su", + "version": "v{version}", + "loading": "Įkeliama...", + "error": "Klaida", + "success": "Sėkmė", + "confirm": "Patvirtinti", + "cancel": "Atšaukti", + "close": "Uždaryti", + "save": "Išsaugoti", + "delete": "Ištrinti", + "remove": "Pašalinti", + "download": "Atsisiųsti", + "upload": "Įkelti", + "submit": "Pateikti", + "back": "Atgal", + "next": "Kitas", + "yes": "Taip", + "no": "Ne" + }, + "nav": { + "history": "Istorija", + "account": "Paskyra", + "logout": "Atsijungti", + "login": "Prisijungti", + "register": "Registruotis", + "language": "Kalba" + }, + "convert": { + "title": "Konvertuoti", + "titleWithType": "Konvertuoti .{fileType}", + "chooseFile": "Pasirinkite failą", + "orDragHere": "arba vilkite čia", + "searchConversions": "Ieškoti konversijų", + "convertTo": "Konvertuoti į", + "convertButton": "Konvertuoti", + "uploading": "Įkeliama...", + "processing": "Apdorojama..." + }, + "results": { + "title": "Rezultatai", + "convertedFileName": "Konvertuoto failo pavadinimas", + "status": "Būsena", + "actions": "Veiksmai", + "downloadAll": "Visi", + "downloadTar": "Tar", + "deleteJob": "Ištrinti", + "noFiles": "Dar nekonvertuota jokių failų.", + "statusPending": "Laukiama", + "statusCompleted": "Baigta", + "statusFailed": "Nepavyko" + }, + "history": { + "title": "Rezultatai", + "time": "Laikas", + "files": "Failai", + "filesDone": "Baigti failai", + "status": "Būsena", + "actions": "Veiksmai", + "expandDetails": "Išskleisti detales", + "detailedFileInfo": "Išsami failo informacija:", + "deleteSelected": "Ištrinti pasirinktus", + "selectAll": "Pasirinkti visus", + "confirmDelete": "Ar tikrai norite ištrinti {count} užduotį(-is)? Šio veiksmo negalima atšaukti.", + "deleteSuccess": "Sėkmingai ištrinta {deleted} užduotis(-ių).", + "deleteFailed": "Nepavyko ištrinti {failed} užduoties(-ių).", + "deleteError": "Trinant užduotis įvyko klaida. Bandykite dar kartą." + }, + "auth": { + "email": "El. paštas", + "password": "Slaptažodis", + "currentPassword": "Dabartinis slaptažodis", + "newPassword": "Slaptažodis (palikite tuščią, jei nepakeistas)", + "loginButton": "Prisijungti", + "registerButton": "Registruotis", + "updateButton": "Atnaujinti", + "createAccount": "Sukurti paskyrą", + "invalidCredentials": "Neteisingi prisijungimo duomenys.", + "emailInUse": "El. paštas jau naudojamas.", + "unauthorized": "Neautorizuota", + "cookiesRequired": "Norint naudoti šią programą, turi būti įjungti slapukai.", + "noCookies": "Nėra autentifikacijos slapuko, galbūt jūsų naršyklė blokuoja slapukus." + }, + "setup": { + "welcome": "Sveiki atvykę į ConvertX-CN!", + "createYourAccount": "Sukurkite savo paskyrą", + "reportIssues": "Praneškite apie problemas", + "github": "GitHub" + }, + "errors": { + "jobNotFound": "Užduotis nerasta.", + "fileNotFound": "Failas nerastas.", + "uploadFailed": "Įkėlimas nepavyko.", + "conversionFailed": "Konvertavimas nepavyko.", + "serverError": "Serverio klaida." + }, + "upload": { + "success": "Failai sėkmingai įkelti.", + "dragDrop": "Numeskite failus čia" + }, + "file": { + "size": "{size} kB" + } +} diff --git a/src/locales/lv.json b/src/locales/lv.json new file mode 100644 index 0000000..73a2c6b --- /dev/null +++ b/src/locales/lv.json @@ -0,0 +1,106 @@ +{ + "common": { + "appName": "ConvertX-CN", + "poweredBy": "Darbina", + "version": "v{version}", + "loading": "Ielādē...", + "error": "Kļūda", + "success": "Veiksmīgi", + "confirm": "Apstiprināt", + "cancel": "Atcelt", + "close": "Aizvērt", + "save": "Saglabāt", + "delete": "Dzēst", + "remove": "Noņemt", + "download": "Lejupielādēt", + "upload": "Augšupielādēt", + "submit": "Iesniegt", + "back": "Atpakaļ", + "next": "Nākamais", + "yes": "Jā", + "no": "Nē" + }, + "nav": { + "history": "Vēsture", + "account": "Konts", + "logout": "Izrakstīties", + "login": "Ierakstīties", + "register": "Reģistrēties", + "language": "Valoda" + }, + "convert": { + "title": "Konvertēt", + "titleWithType": "Konvertēt .{fileType}", + "chooseFile": "Izvēlieties failu", + "orDragHere": "vai velciet to šeit", + "searchConversions": "Meklēt konversijas", + "convertTo": "Konvertēt uz", + "convertButton": "Konvertēt", + "uploading": "Augšupielādē...", + "processing": "Apstrādā..." + }, + "results": { + "title": "Rezultāti", + "convertedFileName": "Konvertētā faila nosaukums", + "status": "Statuss", + "actions": "Darbības", + "downloadAll": "Visi", + "downloadTar": "Tar", + "deleteJob": "Dzēst", + "noFiles": "Vēl nav konvertētu failu.", + "statusPending": "Gaida", + "statusCompleted": "Pabeigts", + "statusFailed": "Neizdevās" + }, + "history": { + "title": "Rezultāti", + "time": "Laiks", + "files": "Faili", + "filesDone": "Pabeigti faili", + "status": "Statuss", + "actions": "Darbības", + "expandDetails": "Izvērst detaļas", + "detailedFileInfo": "Detalizēta faila informācija:", + "deleteSelected": "Dzēst atlasītos", + "selectAll": "Atlasīt visus", + "confirmDelete": "Vai tiešām vēlaties dzēst {count} uzdevumu(-us)? Šo darbību nevar atsaukt.", + "deleteSuccess": "Veiksmīgi dzēsti {deleted} uzdevums(-i).", + "deleteFailed": "Neizdevās dzēst {failed} uzdevumu(-s).", + "deleteError": "Dzēšot uzdevumus, radās kļūda. Lūdzu, mēģiniet vēlreiz." + }, + "auth": { + "email": "E-pasts", + "password": "Parole", + "currentPassword": "Pašreizējā parole", + "newPassword": "Parole (atstājiet tukšu, ja nemainās)", + "loginButton": "Ierakstīties", + "registerButton": "Reģistrēties", + "updateButton": "Atjaunināt", + "createAccount": "Izveidot kontu", + "invalidCredentials": "Nederīgi akreditācijas dati.", + "emailInUse": "E-pasts jau tiek lietots.", + "unauthorized": "Neautorizēts", + "cookiesRequired": "Lai lietotu šo lietotni, jābūt iespējotiem sīkfailiem.", + "noCookies": "Nav autentifikācijas sīkfaila, iespējams, jūsu pārlūkprogramma bloķē sīkfailus." + }, + "setup": { + "welcome": "Laipni lūdzam ConvertX-CN!", + "createYourAccount": "Izveidojiet savu kontu", + "reportIssues": "Ziņojiet par jebkādām problēmām", + "github": "GitHub" + }, + "errors": { + "jobNotFound": "Uzdevums nav atrasts.", + "fileNotFound": "Fails nav atrasts.", + "uploadFailed": "Augšupielāde neizdevās.", + "conversionFailed": "Konvertēšana neizdevās.", + "serverError": "Servera kļūda." + }, + "upload": { + "success": "Faili veiksmīgi augšupielādēti.", + "dragDrop": "Nometiet failus šeit" + }, + "file": { + "size": "{size} kB" + } +} diff --git a/src/locales/mk.json b/src/locales/mk.json new file mode 100644 index 0000000..f200888 --- /dev/null +++ b/src/locales/mk.json @@ -0,0 +1,106 @@ +{ + "common": { + "appName": "ConvertX-CN", + "poweredBy": "Овозможено од", + "version": "v{version}", + "loading": "Се вчитува...", + "error": "Грешка", + "success": "Успех", + "confirm": "Потврди", + "cancel": "Откажи", + "close": "Затвори", + "save": "Зачувај", + "delete": "Избриши", + "remove": "Отстрани", + "download": "Преземи", + "upload": "Прикачи", + "submit": "Испрати", + "back": "Назад", + "next": "Следно", + "yes": "Да", + "no": "Не" + }, + "nav": { + "history": "Историја", + "account": "Сметка", + "logout": "Одјава", + "login": "Најава", + "register": "Регистрација", + "language": "Јазик" + }, + "convert": { + "title": "Конвертирај", + "titleWithType": "Конвертирај .{fileType}", + "chooseFile": "Изберете датотека", + "orDragHere": "или повлечете ја тука", + "searchConversions": "Пребарајте конверзии", + "convertTo": "Конвертирај во", + "convertButton": "Конвертирај", + "uploading": "Се прикачува...", + "processing": "Се обработува..." + }, + "results": { + "title": "Резултати", + "convertedFileName": "Име на конвертирана датотека", + "status": "Статус", + "actions": "Дејства", + "downloadAll": "Сите", + "downloadTar": "Tar", + "deleteJob": "Избриши", + "noFiles": "Сè уште нема конвертирани датотеки.", + "statusPending": "Во тек", + "statusCompleted": "Завршено", + "statusFailed": "Неуспешно" + }, + "history": { + "title": "Резултати", + "time": "Време", + "files": "Датотеки", + "filesDone": "Завршени датотеки", + "status": "Статус", + "actions": "Дејства", + "expandDetails": "Прошири детали", + "detailedFileInfo": "Детални информации за датотеката:", + "deleteSelected": "Избриши избрани", + "selectAll": "Избери сите", + "confirmDelete": "Дали сте сигурни дека сакате да избришете {count} задача(и)? Оваа акција не може да се поништи.", + "deleteSuccess": "Успешно избришани {deleted} задача(и).", + "deleteFailed": "Не успеа бришењето на {failed} задача(и).", + "deleteError": "Настана грешка при бришење на задачите. Ве молиме обидете се повторно." + }, + "auth": { + "email": "Е-пошта", + "password": "Лозинка", + "currentPassword": "Тековна лозинка", + "newPassword": "Лозинка (оставете празно за непроменета)", + "loginButton": "Најава", + "registerButton": "Регистрирај се", + "updateButton": "Ажурирај", + "createAccount": "Креирај сметка", + "invalidCredentials": "Невалидни акредитиви.", + "emailInUse": "Е-поштата е веќе во употреба.", + "unauthorized": "Неовластено", + "cookiesRequired": "Колачињата треба да бидат овозможени за да ја користите оваа апликација.", + "noCookies": "Нема колаче за автентикација, можеби вашиот прелистувач ги блокира колачињата." + }, + "setup": { + "welcome": "Добредојдовте во ConvertX-CN!", + "createYourAccount": "Креирајте ја вашата сметка", + "reportIssues": "Пријавете проблеми на", + "github": "GitHub" + }, + "errors": { + "jobNotFound": "Задачата не е пронајдена.", + "fileNotFound": "Датотеката не е пронајдена.", + "uploadFailed": "Прикачувањето не успеа.", + "conversionFailed": "Конверзијата не успеа.", + "serverError": "Грешка на серверот." + }, + "upload": { + "success": "Датотеките се успешно прикачени.", + "dragDrop": "Пуштете датотеки тука" + }, + "file": { + "size": "{size} kB" + } +} diff --git a/src/locales/ml.json b/src/locales/ml.json new file mode 100644 index 0000000..6188cd6 --- /dev/null +++ b/src/locales/ml.json @@ -0,0 +1,106 @@ +{ + "common": { + "appName": "ConvertX-CN", + "poweredBy": "പ്രവർത്തിപ്പിക്കുന്നത്", + "version": "v{version}", + "loading": "ലോഡ് ചെയ്യുന്നു...", + "error": "പിശക്", + "success": "വിജയം", + "confirm": "സ്ഥിരീകരിക്കുക", + "cancel": "റദ്ദാക്കുക", + "close": "അടയ്ക്കുക", + "save": "സേവ് ചെയ്യുക", + "delete": "ഇല്ലാതാക്കുക", + "remove": "നീക്കം ചെയ്യുക", + "download": "ഡൗൺലോഡ്", + "upload": "അപ്‌ലോഡ്", + "submit": "സമർപ്പിക്കുക", + "back": "പിന്നോട്ട്", + "next": "അടുത്തത്", + "yes": "അതെ", + "no": "ഇല്ല" + }, + "nav": { + "history": "ചരിത്രം", + "account": "അക്കൗണ്ട്", + "logout": "ലോഗൗട്ട്", + "login": "ലോഗിൻ", + "register": "രജിസ്റ്റർ", + "language": "ഭാഷ" + }, + "convert": { + "title": "പരിവർത്തനം ചെയ്യുക", + "titleWithType": ".{fileType} പരിവർത്തനം ചെയ്യുക", + "chooseFile": "ഒരു ഫയൽ തിരഞ്ഞെടുക്കുക", + "orDragHere": "അല്ലെങ്കിൽ ഇവിടെ വലിച്ചിടുക", + "searchConversions": "പരിവർത്തനങ്ങൾ തിരയുക", + "convertTo": "ഇതിലേക്ക് പരിവർത്തനം ചെയ്യുക", + "convertButton": "പരിവർത്തനം ചെയ്യുക", + "uploading": "അപ്‌ലോഡ് ചെയ്യുന്നു...", + "processing": "പ്രോസസ്സ് ചെയ്യുന്നു..." + }, + "results": { + "title": "ഫലങ്ങൾ", + "convertedFileName": "പരിവർത്തനം ചെയ്ത ഫയൽ പേര്", + "status": "സ്റ്റാറ്റസ്", + "actions": "പ്രവർത്തനങ്ങൾ", + "downloadAll": "എല്ലാം", + "downloadTar": "Tar", + "deleteJob": "ഇല്ലാതാക്കുക", + "noFiles": "ഇതുവരെ ഫയലുകളൊന്നും പരിവർത്തനം ചെയ്തിട്ടില്ല.", + "statusPending": "തീർപ്പാക്കാത്ത", + "statusCompleted": "പൂർത്തിയായി", + "statusFailed": "പരാജയപ്പെട്ടു" + }, + "history": { + "title": "ഫലങ്ങൾ", + "time": "സമയം", + "files": "ഫയലുകൾ", + "filesDone": "പൂർത്തിയായ ഫയലുകൾ", + "status": "സ്റ്റാറ്റസ്", + "actions": "പ്രവർത്തനങ്ങൾ", + "expandDetails": "വിശദാംശങ്ങൾ വിപുലീകരിക്കുക", + "detailedFileInfo": "വിശദമായ ഫയൽ വിവരങ്ങൾ:", + "deleteSelected": "തിരഞ്ഞെടുത്തവ ഇല്ലാതാക്കുക", + "selectAll": "എല്ലാം തിരഞ്ഞെടുക്കുക", + "confirmDelete": "{count} ജോബ്(കൾ) ഇല്ലാതാക്കണമെന്ന് തീർച്ചയാണോ? ഈ പ്രവർത്തനം പഴയപടിയാക്കാൻ കഴിയില്ല.", + "deleteSuccess": "{deleted} ജോബ്(കൾ) വിജയകരമായി ഇല്ലാതാക്കി.", + "deleteFailed": "{failed} ജോബ്(കൾ) ഇല്ലാതാക്കുന്നതിൽ പരാജയപ്പെട്ടു.", + "deleteError": "ജോബുകൾ ഇല്ലാതാക്കുമ്പോൾ ഒരു പിശക് സംഭവിച്ചു. വീണ്ടും ശ്രമിക്കുക." + }, + "auth": { + "email": "ഇമെയിൽ", + "password": "പാസ്‌വേഡ്", + "currentPassword": "നിലവിലെ പാസ്‌വേഡ്", + "newPassword": "പാസ്‌വേഡ് (മാറ്റമില്ലെങ്കിൽ ശൂന്യമായി വിടുക)", + "loginButton": "ലോഗിൻ", + "registerButton": "രജിസ്റ്റർ", + "updateButton": "അപ്‌ഡേറ്റ്", + "createAccount": "അക്കൗണ്ട് സൃഷ്ടിക്കുക", + "invalidCredentials": "അസാധുവായ ക്രെഡൻഷ്യലുകൾ.", + "emailInUse": "ഇമെയിൽ ഇതിനകം ഉപയോഗത്തിലാണ്.", + "unauthorized": "അനധികൃതം", + "cookiesRequired": "ഈ ആപ്പ് ഉപയോഗിക്കാൻ കുക്കികൾ പ്രവർത്തനക്ഷമമാക്കിയിരിക്കണം.", + "noCookies": "ഓതൻറിക്കേഷൻ കുക്കി ഇല്ല, നിങ്ങളുടെ ബ്രൗസർ കുക്കികൾ ബ്ലോക്ക് ചെയ്യുന്നുണ്ടാകാം." + }, + "setup": { + "welcome": "ConvertX-CN-ലേക്ക് സ്വാഗതം!", + "createYourAccount": "നിങ്ങളുടെ അക്കൗണ്ട് സൃഷ്ടിക്കുക", + "reportIssues": "പ്രശ്നങ്ങൾ റിപ്പോർട്ട് ചെയ്യുക", + "github": "GitHub" + }, + "errors": { + "jobNotFound": "ജോബ് കണ്ടെത്തിയില്ല.", + "fileNotFound": "ഫയൽ കണ്ടെത്തിയില്ല.", + "uploadFailed": "അപ്‌ലോഡ് പരാജയപ്പെട്ടു.", + "conversionFailed": "പരിവർത്തനം പരാജയപ്പെട്ടു.", + "serverError": "സെർവർ പിശക്." + }, + "upload": { + "success": "ഫയലുകൾ വിജയകരമായി അപ്‌ലോഡ് ചെയ്തു.", + "dragDrop": "ഫയലുകൾ ഇവിടെ ഇടുക" + }, + "file": { + "size": "{size} kB" + } +} diff --git a/src/locales/mr.json b/src/locales/mr.json new file mode 100644 index 0000000..1d162cb --- /dev/null +++ b/src/locales/mr.json @@ -0,0 +1,106 @@ +{ + "common": { + "appName": "ConvertX-CN", + "poweredBy": "द्वारे समर्थित", + "version": "v{version}", + "loading": "लोड होत आहे...", + "error": "त्रुटी", + "success": "यशस्वी", + "confirm": "पुष्टी करा", + "cancel": "रद्द करा", + "close": "बंद करा", + "save": "सेव्ह करा", + "delete": "हटवा", + "remove": "काढून टाका", + "download": "डाउनलोड करा", + "upload": "अपलोड करा", + "submit": "सबमिट करा", + "back": "मागे", + "next": "पुढे", + "yes": "होय", + "no": "नाही" + }, + "nav": { + "history": "इतिहास", + "account": "खाते", + "logout": "लॉगआउट", + "login": "लॉगिन", + "register": "नोंदणी करा", + "language": "भाषा" + }, + "convert": { + "title": "रूपांतर करा", + "titleWithType": ".{fileType} रूपांतर करा", + "chooseFile": "फाइल निवडा", + "orDragHere": "किंवा येथे ड्रॅग करा", + "searchConversions": "रूपांतरणे शोधा", + "convertTo": "यात रूपांतर करा", + "convertButton": "रूपांतर करा", + "uploading": "अपलोड होत आहे...", + "processing": "प्रक्रिया होत आहे..." + }, + "results": { + "title": "परिणाम", + "convertedFileName": "रूपांतरित फाइल नाव", + "status": "स्थिती", + "actions": "क्रिया", + "downloadAll": "सर्व", + "downloadTar": "Tar", + "deleteJob": "हटवा", + "noFiles": "अद्याप कोणत्याही फाइल्स रूपांतरित झालेल्या नाहीत.", + "statusPending": "प्रलंबित", + "statusCompleted": "पूर्ण", + "statusFailed": "अयशस्वी" + }, + "history": { + "title": "परिणाम", + "time": "वेळ", + "files": "फाइल्स", + "filesDone": "पूर्ण झालेल्या फाइल्स", + "status": "स्थिती", + "actions": "क्रिया", + "expandDetails": "तपशील विस्तारित करा", + "detailedFileInfo": "तपशीलवार फाइल माहिती:", + "deleteSelected": "निवडलेले हटवा", + "selectAll": "सर्व निवडा", + "confirmDelete": "तुम्हाला खात्री आहे की तुम्ही {count} जॉब हटवू इच्छिता? ही क्रिया पूर्ववत करता येणार नाही.", + "deleteSuccess": "{deleted} जॉब यशस्वीरित्या हटवले.", + "deleteFailed": "{failed} जॉब हटवण्यात अयशस्वी.", + "deleteError": "जॉब हटवताना त्रुटी आली. कृपया पुन्हा प्रयत्न करा." + }, + "auth": { + "email": "ईमेल", + "password": "पासवर्ड", + "currentPassword": "सध्याचा पासवर्ड", + "newPassword": "पासवर्ड (बदलायचा नसेल तर रिक्त ठेवा)", + "loginButton": "लॉगिन", + "registerButton": "नोंदणी करा", + "updateButton": "अपडेट करा", + "createAccount": "खाते तयार करा", + "invalidCredentials": "अवैध क्रेडेन्शियल्स.", + "emailInUse": "ईमेल आधीच वापरात आहे.", + "unauthorized": "अनधिकृत", + "cookiesRequired": "हे अॅप वापरण्यासाठी कुकीज सक्षम असाव्यात.", + "noCookies": "प्रमाणीकरण कुकी नाही, कदाचित तुमचा ब्राउझर कुकीज ब्लॉक करत आहे." + }, + "setup": { + "welcome": "ConvertX-CN मध्ये स्वागत आहे!", + "createYourAccount": "तुमचे खाते तयार करा", + "reportIssues": "समस्या कळवा", + "github": "GitHub" + }, + "errors": { + "jobNotFound": "जॉब सापडला नाही.", + "fileNotFound": "फाइल सापडली नाही.", + "uploadFailed": "अपलोड अयशस्वी.", + "conversionFailed": "रूपांतर अयशस्वी.", + "serverError": "सर्व्हर त्रुटी." + }, + "upload": { + "success": "फाइल्स यशस्वीरित्या अपलोड झाल्या.", + "dragDrop": "फाइल्स येथे सोडा" + }, + "file": { + "size": "{size} kB" + } +} diff --git a/src/locales/ms.json b/src/locales/ms.json new file mode 100644 index 0000000..4b1afcf --- /dev/null +++ b/src/locales/ms.json @@ -0,0 +1,106 @@ +{ + "common": { + "appName": "ConvertX-CN", + "poweredBy": "Dikuasakan oleh", + "version": "v{version}", + "loading": "Memuatkan...", + "error": "Ralat", + "success": "Berjaya", + "confirm": "Sahkan", + "cancel": "Batal", + "close": "Tutup", + "save": "Simpan", + "delete": "Padam", + "remove": "Buang", + "download": "Muat turun", + "upload": "Muat naik", + "submit": "Hantar", + "back": "Kembali", + "next": "Seterusnya", + "yes": "Ya", + "no": "Tidak" + }, + "nav": { + "history": "Sejarah", + "account": "Akaun", + "logout": "Log keluar", + "login": "Log masuk", + "register": "Daftar", + "language": "Bahasa" + }, + "convert": { + "title": "Tukar", + "titleWithType": "Tukar .{fileType}", + "chooseFile": "Pilih fail", + "orDragHere": "atau seret ke sini", + "searchConversions": "Cari penukaran", + "convertTo": "Tukar ke", + "convertButton": "Tukar", + "uploading": "Memuat naik...", + "processing": "Memproses..." + }, + "results": { + "title": "Keputusan", + "convertedFileName": "Nama Fail Ditukar", + "status": "Status", + "actions": "Tindakan", + "downloadAll": "Semua", + "downloadTar": "Tar", + "deleteJob": "Padam", + "noFiles": "Tiada fail ditukar lagi.", + "statusPending": "Menunggu", + "statusCompleted": "Selesai", + "statusFailed": "Gagal" + }, + "history": { + "title": "Keputusan", + "time": "Masa", + "files": "Fail", + "filesDone": "Fail Selesai", + "status": "Status", + "actions": "Tindakan", + "expandDetails": "Kembangkan butiran", + "detailedFileInfo": "Maklumat Fail Terperinci:", + "deleteSelected": "Padam Terpilih", + "selectAll": "Pilih semua", + "confirmDelete": "Adakah anda pasti mahu memadam {count} kerja? Tindakan ini tidak boleh dibatalkan.", + "deleteSuccess": "Berjaya memadam {deleted} kerja.", + "deleteFailed": "Gagal memadam {failed} kerja.", + "deleteError": "Ralat berlaku semasa memadam kerja. Sila cuba lagi." + }, + "auth": { + "email": "E-mel", + "password": "Kata Laluan", + "currentPassword": "Kata Laluan Semasa", + "newPassword": "Kata Laluan (kosongkan jika tidak berubah)", + "loginButton": "Log Masuk", + "registerButton": "Daftar", + "updateButton": "Kemaskini", + "createAccount": "Cipta akaun", + "invalidCredentials": "Kelayakan tidak sah.", + "emailInUse": "E-mel sudah digunakan.", + "unauthorized": "Tidak dibenarkan", + "cookiesRequired": "Kuki mesti diaktifkan untuk menggunakan aplikasi ini.", + "noCookies": "Tiada kuki pengesahan, mungkin pelayar anda menyekat kuki." + }, + "setup": { + "welcome": "Selamat datang ke ConvertX-CN!", + "createYourAccount": "Cipta akaun anda", + "reportIssues": "Laporkan isu di", + "github": "GitHub" + }, + "errors": { + "jobNotFound": "Kerja tidak dijumpai.", + "fileNotFound": "Fail tidak dijumpai.", + "uploadFailed": "Muat naik gagal.", + "conversionFailed": "Penukaran gagal.", + "serverError": "Ralat pelayan." + }, + "upload": { + "success": "Fail berjaya dimuat naik.", + "dragDrop": "Lepaskan fail di sini" + }, + "file": { + "size": "{size} kB" + } +} diff --git a/src/locales/mt.json b/src/locales/mt.json new file mode 100644 index 0000000..8f679fc --- /dev/null +++ b/src/locales/mt.json @@ -0,0 +1,106 @@ +{ + "common": { + "appName": "ConvertX-CN", + "poweredBy": "Mgħammar minn", + "version": "v{version}", + "loading": "Qed jitgħabba...", + "error": "Żball", + "success": "Suċċess", + "confirm": "Ikkonferma", + "cancel": "Ikkanċella", + "close": "Agħlaq", + "save": "Issejvja", + "delete": "Ħassar", + "remove": "Neħħi", + "download": "Niżżel", + "upload": "Tella'", + "submit": "Issottometti", + "back": "Lura", + "next": "Li jmiss", + "yes": "Iva", + "no": "Le" + }, + "nav": { + "history": "Storja", + "account": "Kont", + "logout": "Oħroġ", + "login": "Idħol", + "register": "Irreġistra", + "language": "Lingwa" + }, + "convert": { + "title": "Ikkonverti", + "titleWithType": "Ikkonverti .{fileType}", + "chooseFile": "Agħżel fajl", + "orDragHere": "jew iġbdu hawn", + "searchConversions": "Fittex konverżjonijiet", + "convertTo": "Ikkonverti għal", + "convertButton": "Ikkonverti", + "uploading": "Qed jittella'...", + "processing": "Qed jiġi pproċessat..." + }, + "results": { + "title": "Riżultati", + "convertedFileName": "Isem tal-fajl ikkonvertit", + "status": "Status", + "actions": "Azzjonijiet", + "downloadAll": "Kollox", + "downloadTar": "Tar", + "deleteJob": "Ħassar", + "noFiles": "Għad m'hemmx fajls ikkonvertiti.", + "statusPending": "Pendenti", + "statusCompleted": "Komplut", + "statusFailed": "Falla" + }, + "history": { + "title": "Riżultati", + "time": "Ħin", + "files": "Fajls", + "filesDone": "Fajls lesti", + "status": "Status", + "actions": "Azzjonijiet", + "expandDetails": "Espandi d-dettalji", + "detailedFileInfo": "Informazzjoni dettaljata tal-fajl:", + "deleteSelected": "Ħassar l-magħżulin", + "selectAll": "Agħżel kollox", + "confirmDelete": "Int żgur li trid tħassar {count} xogħol/xogħlijiet? Din l-azzjoni ma tistax tiġi rriversa.", + "deleteSuccess": "Tħassru {deleted} xogħol/xogħlijiet b'suċċess.", + "deleteFailed": "Falla t-tħassir ta' {failed} xogħol/xogħlijiet.", + "deleteError": "Sar żball waqt li kienu qed jitħassru x-xogħlijiet. Jekk jogħġbok erġa' pprova." + }, + "auth": { + "email": "Email", + "password": "Password", + "currentPassword": "Password attwali", + "newPassword": "Password (ħalli vojt jekk ma jinbidilx)", + "loginButton": "Idħol", + "registerButton": "Irreġistra", + "updateButton": "Aġġorna", + "createAccount": "Oħloq kont", + "invalidCredentials": "Kredenzjali invalidi.", + "emailInUse": "L-email diġà qed tintuża.", + "unauthorized": "Mhux awtorizzat", + "cookiesRequired": "Il-cookies għandhom ikunu attivati biex tuża din l-applikazzjoni.", + "noCookies": "M'hemmx cookie ta' awtentikazzjoni, forsi l-browser tiegħek qed jibblokka l-cookies." + }, + "setup": { + "welcome": "Merħba għal ConvertX-CN!", + "createYourAccount": "Oħloq il-kont tiegħek", + "reportIssues": "Irrapporta kwalunkwe problema fuq", + "github": "GitHub" + }, + "errors": { + "jobNotFound": "Xogħol ma nstabx.", + "fileNotFound": "Fajl ma nstabx.", + "uploadFailed": "It-tella' falla.", + "conversionFailed": "Il-konverżjoni falliet.", + "serverError": "Żball tas-server." + }, + "upload": { + "success": "Il-fajls ittellgħu b'suċċess.", + "dragDrop": "Itfa' l-fajls hawn" + }, + "file": { + "size": "{size} kB" + } +} diff --git a/src/locales/my.json b/src/locales/my.json new file mode 100644 index 0000000..f8ae925 --- /dev/null +++ b/src/locales/my.json @@ -0,0 +1,106 @@ +{ + "common": { + "appName": "ConvertX-CN", + "poweredBy": "ဖြင့် လည်ပတ်သည်", + "version": "v{version}", + "loading": "ဖွင့်နေသည်...", + "error": "အမှား", + "success": "အောင်မြင်", + "confirm": "အတည်ပြု", + "cancel": "ပယ်ဖျက်", + "close": "ပိတ်", + "save": "သိမ်း", + "delete": "ဖျက်", + "remove": "ဖယ်ရှား", + "download": "ဒေါင်းလုဒ်", + "upload": "အပ်လုဒ်", + "submit": "တင်သွင်း", + "back": "နောက်သို့", + "next": "ရှေ့သို့", + "yes": "ဟုတ်", + "no": "မဟုတ်" + }, + "nav": { + "history": "မှတ်တမ်း", + "account": "အကောင့်", + "logout": "ထွက်", + "login": "ဝင်", + "register": "စာရင်းသွင်း", + "language": "ဘာသာစကား" + }, + "convert": { + "title": "ပြောင်း", + "titleWithType": ".{fileType} ပြောင်း", + "chooseFile": "ဖိုင်ရွေး", + "orDragHere": "သို့မဟုတ် ဤနေရာသို့ ဆွဲထည့်", + "searchConversions": "ပြောင်းလဲမှုများ ရှာ", + "convertTo": "သို့ ပြောင်း", + "convertButton": "ပြောင်း", + "uploading": "အပ်လုဒ်တင်နေသည်...", + "processing": "လုပ်ဆောင်နေသည်..." + }, + "results": { + "title": "ရလဒ်များ", + "convertedFileName": "ပြောင်းပြီး ဖိုင်အမည်", + "status": "အခြေအနေ", + "actions": "လုပ်ဆောင်ချက်များ", + "downloadAll": "အားလုံး", + "downloadTar": "Tar", + "deleteJob": "ဖျက်", + "noFiles": "ဖိုင်များ မပြောင်းရသေးပါ။", + "statusPending": "စောင့်ဆိုင်း", + "statusCompleted": "ပြီးဆုံး", + "statusFailed": "မအောင်မြင်" + }, + "history": { + "title": "ရလဒ်များ", + "time": "အချိန်", + "files": "ဖိုင်များ", + "filesDone": "ပြီးဆုံးသော ဖိုင်များ", + "status": "အခြေအနေ", + "actions": "လုပ်ဆောင်ချက်များ", + "expandDetails": "အသေးစိတ် ကြည့်", + "detailedFileInfo": "အသေးစိတ် ဖိုင်အချက်အလက်:", + "deleteSelected": "ရွေးထားသည်များ ဖျက်", + "selectAll": "အားလုံးရွေး", + "confirmDelete": "{count} အလုပ်(များ) ဖျက်မည်မှာ သေချာပါသလား? ဤလုပ်ဆောင်ချက်ကို ပြန်ပြင်၍မရပါ။", + "deleteSuccess": "{deleted} အလုပ်(များ) အောင်မြင်စွာ ဖျက်ပြီး။", + "deleteFailed": "{failed} အလုပ်(များ) ဖျက်ရန် မအောင်မြင်။", + "deleteError": "အလုပ်များ ဖျက်ရာတွင် အမှားတစ်ခု ဖြစ်ပွားခဲ့သည်။ ထပ်ကြိုးစားပါ။" + }, + "auth": { + "email": "အီးမေးလ်", + "password": "စကားဝှက်", + "currentPassword": "လက်ရှိ စကားဝှက်", + "newPassword": "စကားဝှက် (မပြောင်းလျှင် ကွက်လပ်ထား)", + "loginButton": "ဝင်", + "registerButton": "စာရင်းသွင်း", + "updateButton": "အပ်ဒိတ်", + "createAccount": "အကောင့်ဖန်တီး", + "invalidCredentials": "မမှန်ကန်သော အထောက်အထား။", + "emailInUse": "အီးမေးလ် အသုံးပြုပြီး။", + "unauthorized": "ခွင့်ပြုချက်မရှိ", + "cookiesRequired": "ဤအက်ပ်ကို သုံးရန် cookies ဖွင့်ထားရမည်။", + "noCookies": "auth cookie မရှိပါ၊ သင့်ဘရောက်ဆာက cookies ပိတ်ထားနိုင်သည်။" + }, + "setup": { + "welcome": "ConvertX-CN မှ ကြိုဆိုပါသည်!", + "createYourAccount": "သင့်အကောင့် ဖန်တီးပါ", + "reportIssues": "ပြဿနာများ အကြောင်းကြားပါ", + "github": "GitHub" + }, + "errors": { + "jobNotFound": "အလုပ် မတွေ့ပါ။", + "fileNotFound": "ဖိုင် မတွေ့ပါ။", + "uploadFailed": "အပ်လုဒ် မအောင်မြင်ပါ။", + "conversionFailed": "ပြောင်းလဲခြင်း မအောင်မြင်ပါ။", + "serverError": "ဆာဗာ အမှား။" + }, + "upload": { + "success": "ဖိုင်များ အောင်မြင်စွာ အပ်လုဒ်တင်ပြီး။", + "dragDrop": "ဖိုင်များကို ဤနေရာတွင် ချပါ" + }, + "file": { + "size": "{size} kB" + } +} diff --git a/src/locales/ne.json b/src/locales/ne.json new file mode 100644 index 0000000..75fcd12 --- /dev/null +++ b/src/locales/ne.json @@ -0,0 +1,106 @@ +{ + "common": { + "appName": "ConvertX-CN", + "poweredBy": "द्वारा संचालित", + "version": "v{version}", + "loading": "लोड हुँदैछ...", + "error": "त्रुटि", + "success": "सफल", + "confirm": "पुष्टि गर्नुहोस्", + "cancel": "रद्द गर्नुहोस्", + "close": "बन्द गर्नुहोस्", + "save": "सेभ गर्नुहोस्", + "delete": "मेट्नुहोस्", + "remove": "हटाउनुहोस्", + "download": "डाउनलोड", + "upload": "अपलोड", + "submit": "पेश गर्नुहोस्", + "back": "पछाडि", + "next": "अर्को", + "yes": "हो", + "no": "होइन" + }, + "nav": { + "history": "इतिहास", + "account": "खाता", + "logout": "लग आउट", + "login": "लग इन", + "register": "दर्ता गर्नुहोस्", + "language": "भाषा" + }, + "convert": { + "title": "रूपान्तरण गर्नुहोस्", + "titleWithType": ".{fileType} रूपान्तरण गर्नुहोस्", + "chooseFile": "फाइल छान्नुहोस्", + "orDragHere": "वा यहाँ तान्नुहोस्", + "searchConversions": "रूपान्तरणहरू खोज्नुहोस्", + "convertTo": "मा रूपान्तरण गर्नुहोस्", + "convertButton": "रूपान्तरण गर्नुहोस्", + "uploading": "अपलोड हुँदैछ...", + "processing": "प्रशोधन हुँदैछ..." + }, + "results": { + "title": "परिणामहरू", + "convertedFileName": "रूपान्तरित फाइल नाम", + "status": "स्थिति", + "actions": "कार्यहरू", + "downloadAll": "सबै", + "downloadTar": "Tar", + "deleteJob": "मेट्नुहोस्", + "noFiles": "अझै कुनै फाइल रूपान्तरित भएको छैन।", + "statusPending": "पर्खिरहेको", + "statusCompleted": "पूरा भयो", + "statusFailed": "असफल" + }, + "history": { + "title": "परिणामहरू", + "time": "समय", + "files": "फाइलहरू", + "filesDone": "पूरा भएका फाइलहरू", + "status": "स्थिति", + "actions": "कार्यहरू", + "expandDetails": "विवरण विस्तार गर्नुहोस्", + "detailedFileInfo": "विस्तृत फाइल जानकारी:", + "deleteSelected": "चयन गरिएका मेट्नुहोस्", + "selectAll": "सबै चयन गर्नुहोस्", + "confirmDelete": "के तपाईं {count} कार्य(हरू) मेट्न निश्चित हुनुहुन्छ? यो कार्य पूर्ववत गर्न सकिँदैन।", + "deleteSuccess": "{deleted} कार्य(हरू) सफलतापूर्वक मेटियो।", + "deleteFailed": "{failed} कार्य(हरू) मेट्न असफल।", + "deleteError": "कार्यहरू मेट्दा त्रुटि भयो। कृपया पुन: प्रयास गर्नुहोस्।" + }, + "auth": { + "email": "इमेल", + "password": "पासवर्ड", + "currentPassword": "हालको पासवर्ड", + "newPassword": "पासवर्ड (नबदल्ने भए खाली छोड्नुहोस्)", + "loginButton": "लग इन", + "registerButton": "दर्ता गर्नुहोस्", + "updateButton": "अद्यावधिक गर्नुहोस्", + "createAccount": "खाता बनाउनुहोस्", + "invalidCredentials": "अवैध प्रमाणहरू।", + "emailInUse": "इमेल पहिले नै प्रयोगमा छ।", + "unauthorized": "अनधिकृत", + "cookiesRequired": "यो एप प्रयोग गर्न कुकीहरू सक्षम हुनुपर्छ।", + "noCookies": "कुनै प्रमाणीकरण कुकी छैन, सायद तपाईंको ब्राउजरले कुकीहरू रोक्दैछ।" + }, + "setup": { + "welcome": "ConvertX-CN मा स्वागत छ!", + "createYourAccount": "आफ्नो खाता बनाउनुहोस्", + "reportIssues": "समस्याहरू रिपोर्ट गर्नुहोस्", + "github": "GitHub" + }, + "errors": { + "jobNotFound": "कार्य फेला परेन।", + "fileNotFound": "फाइल फेला परेन।", + "uploadFailed": "अपलोड असफल।", + "conversionFailed": "रूपान्तरण असफल।", + "serverError": "सर्भर त्रुटि।" + }, + "upload": { + "success": "फाइलहरू सफलतापूर्वक अपलोड भए।", + "dragDrop": "फाइलहरू यहाँ छोड्नुहोस्" + }, + "file": { + "size": "{size} kB" + } +} diff --git a/src/locales/nl.json b/src/locales/nl.json new file mode 100644 index 0000000..8b3af15 --- /dev/null +++ b/src/locales/nl.json @@ -0,0 +1,106 @@ +{ + "common": { + "appName": "ConvertX-CN", + "poweredBy": "Aangedreven door", + "version": "v{version}", + "loading": "Laden...", + "error": "Fout", + "success": "Succes", + "confirm": "Bevestigen", + "cancel": "Annuleren", + "close": "Sluiten", + "save": "Opslaan", + "delete": "Verwijderen", + "remove": "Verwijderen", + "download": "Downloaden", + "upload": "Uploaden", + "submit": "Verzenden", + "back": "Terug", + "next": "Volgende", + "yes": "Ja", + "no": "Nee" + }, + "nav": { + "history": "Geschiedenis", + "account": "Account", + "logout": "Uitloggen", + "login": "Inloggen", + "register": "Registreren", + "language": "Taal" + }, + "convert": { + "title": "Converteren", + "titleWithType": "Converteer .{fileType}", + "chooseFile": "Kies een bestand", + "orDragHere": "of sleep het hierheen", + "searchConversions": "Zoek conversies", + "convertTo": "Converteren naar", + "convertButton": "Converteren", + "uploading": "Uploaden...", + "processing": "Verwerken..." + }, + "results": { + "title": "Resultaten", + "convertedFileName": "Geconverteerde bestandsnaam", + "status": "Status", + "actions": "Acties", + "downloadAll": "Alles", + "downloadTar": "Tar", + "deleteJob": "Verwijderen", + "noFiles": "Nog geen bestanden geconverteerd.", + "statusPending": "Wachtend", + "statusCompleted": "Voltooid", + "statusFailed": "Mislukt" + }, + "history": { + "title": "Resultaten", + "time": "Tijd", + "files": "Bestanden", + "filesDone": "Bestanden klaar", + "status": "Status", + "actions": "Acties", + "expandDetails": "Details uitvouwen", + "detailedFileInfo": "Gedetailleerde bestandsinformatie:", + "deleteSelected": "Geselecteerde verwijderen", + "selectAll": "Alles selecteren", + "confirmDelete": "Weet u zeker dat u {count} taak/taken wilt verwijderen? Deze actie kan niet ongedaan worden gemaakt.", + "deleteSuccess": "{deleted} taak/taken succesvol verwijderd.", + "deleteFailed": "Kon {failed} taak/taken niet verwijderen.", + "deleteError": "Er is een fout opgetreden bij het verwijderen van taken. Probeer het opnieuw." + }, + "auth": { + "email": "E-mail", + "password": "Wachtwoord", + "currentPassword": "Huidig wachtwoord", + "newPassword": "Wachtwoord (leeg laten om niet te wijzigen)", + "loginButton": "Inloggen", + "registerButton": "Registreren", + "updateButton": "Bijwerken", + "createAccount": "Account aanmaken", + "invalidCredentials": "Ongeldige inloggegevens.", + "emailInUse": "E-mail is al in gebruik.", + "unauthorized": "Niet geautoriseerd", + "cookiesRequired": "Cookies moeten ingeschakeld zijn om deze app te gebruiken.", + "noCookies": "Geen authenticatiecookie, misschien blokkeert uw browser cookies." + }, + "setup": { + "welcome": "Welkom bij ConvertX-CN!", + "createYourAccount": "Maak uw account aan", + "reportIssues": "Meld problemen op", + "github": "GitHub" + }, + "errors": { + "jobNotFound": "Taak niet gevonden.", + "fileNotFound": "Bestand niet gevonden.", + "uploadFailed": "Upload mislukt.", + "conversionFailed": "Conversie mislukt.", + "serverError": "Serverfout." + }, + "upload": { + "success": "Bestanden succesvol geüpload.", + "dragDrop": "Bestanden hier neerzetten" + }, + "file": { + "size": "{size} kB" + } +} diff --git a/src/locales/no.json b/src/locales/no.json new file mode 100644 index 0000000..26e3982 --- /dev/null +++ b/src/locales/no.json @@ -0,0 +1,106 @@ +{ + "common": { + "appName": "ConvertX-CN", + "poweredBy": "Drevet av", + "version": "v{version}", + "loading": "Laster...", + "error": "Feil", + "success": "Suksess", + "confirm": "Bekreft", + "cancel": "Avbryt", + "close": "Lukk", + "save": "Lagre", + "delete": "Slett", + "remove": "Fjern", + "download": "Last ned", + "upload": "Last opp", + "submit": "Send", + "back": "Tilbake", + "next": "Neste", + "yes": "Ja", + "no": "Nei" + }, + "nav": { + "history": "Historikk", + "account": "Konto", + "logout": "Logg ut", + "login": "Logg inn", + "register": "Registrer", + "language": "Språk" + }, + "convert": { + "title": "Konverter", + "titleWithType": "Konverter .{fileType}", + "chooseFile": "Velg en fil", + "orDragHere": "eller dra den hit", + "searchConversions": "Søk etter konverteringer", + "convertTo": "Konverter til", + "convertButton": "Konverter", + "uploading": "Laster opp...", + "processing": "Behandler..." + }, + "results": { + "title": "Resultater", + "convertedFileName": "Konvertert filnavn", + "status": "Status", + "actions": "Handlinger", + "downloadAll": "Alle", + "downloadTar": "Tar", + "deleteJob": "Slett", + "noFiles": "Ingen filer konvertert ennå.", + "statusPending": "Venter", + "statusCompleted": "Fullført", + "statusFailed": "Mislyktes" + }, + "history": { + "title": "Resultater", + "time": "Tid", + "files": "Filer", + "filesDone": "Filer fullført", + "status": "Status", + "actions": "Handlinger", + "expandDetails": "Utvid detaljer", + "detailedFileInfo": "Detaljert filinformasjon:", + "deleteSelected": "Slett valgte", + "selectAll": "Velg alle", + "confirmDelete": "Er du sikker på at du vil slette {count} jobb(er)? Denne handlingen kan ikke angres.", + "deleteSuccess": "Slettet {deleted} jobb(er) vellykket.", + "deleteFailed": "Kunne ikke slette {failed} jobb(er).", + "deleteError": "Det oppstod en feil under sletting av jobber. Prøv igjen." + }, + "auth": { + "email": "E-post", + "password": "Passord", + "currentPassword": "Nåværende passord", + "newPassword": "Passord (la stå tomt for uendret)", + "loginButton": "Logg inn", + "registerButton": "Registrer", + "updateButton": "Oppdater", + "createAccount": "Opprett konto", + "invalidCredentials": "Ugyldige legitimasjonsopplysninger.", + "emailInUse": "E-post er allerede i bruk.", + "unauthorized": "Uautorisert", + "cookiesRequired": "Informasjonskapsler må være aktivert for å bruke denne appen.", + "noCookies": "Ingen autentiseringsinformasjonskapsel, kanskje nettleseren din blokkerer informasjonskapsler." + }, + "setup": { + "welcome": "Velkommen til ConvertX-CN!", + "createYourAccount": "Opprett kontoen din", + "reportIssues": "Rapporter eventuelle problemer på", + "github": "GitHub" + }, + "errors": { + "jobNotFound": "Jobb ikke funnet.", + "fileNotFound": "Fil ikke funnet.", + "uploadFailed": "Opplasting mislyktes.", + "conversionFailed": "Konvertering mislyktes.", + "serverError": "Serverfeil." + }, + "upload": { + "success": "Filer lastet opp vellykket.", + "dragDrop": "Slipp filer her" + }, + "file": { + "size": "{size} kB" + } +} diff --git a/src/locales/pl.json b/src/locales/pl.json new file mode 100644 index 0000000..51f191b --- /dev/null +++ b/src/locales/pl.json @@ -0,0 +1,106 @@ +{ + "common": { + "appName": "ConvertX-CN", + "poweredBy": "Obsługiwane przez", + "version": "v{version}", + "loading": "Ładowanie...", + "error": "Błąd", + "success": "Sukces", + "confirm": "Potwierdź", + "cancel": "Anuluj", + "close": "Zamknij", + "save": "Zapisz", + "delete": "Usuń", + "remove": "Usuń", + "download": "Pobierz", + "upload": "Prześlij", + "submit": "Wyślij", + "back": "Wstecz", + "next": "Dalej", + "yes": "Tak", + "no": "Nie" + }, + "nav": { + "history": "Historia", + "account": "Konto", + "logout": "Wyloguj", + "login": "Zaloguj", + "register": "Zarejestruj", + "language": "Język" + }, + "convert": { + "title": "Konwertuj", + "titleWithType": "Konwertuj .{fileType}", + "chooseFile": "Wybierz plik", + "orDragHere": "lub przeciągnij tutaj", + "searchConversions": "Szukaj konwersji", + "convertTo": "Konwertuj na", + "convertButton": "Konwertuj", + "uploading": "Przesyłanie...", + "processing": "Przetwarzanie..." + }, + "results": { + "title": "Wyniki", + "convertedFileName": "Nazwa przekonwertowanego pliku", + "status": "Status", + "actions": "Akcje", + "downloadAll": "Wszystko", + "downloadTar": "Tar", + "deleteJob": "Usuń", + "noFiles": "Brak przekonwertowanych plików.", + "statusPending": "Oczekujące", + "statusCompleted": "Ukończone", + "statusFailed": "Niepowodzenie" + }, + "history": { + "title": "Wyniki", + "time": "Czas", + "files": "Pliki", + "filesDone": "Ukończone pliki", + "status": "Status", + "actions": "Akcje", + "expandDetails": "Rozwiń szczegóły", + "detailedFileInfo": "Szczegółowe informacje o pliku:", + "deleteSelected": "Usuń wybrane", + "selectAll": "Zaznacz wszystko", + "confirmDelete": "Czy na pewno chcesz usunąć {count} zadanie(ń)? Ta czynność jest nieodwracalna.", + "deleteSuccess": "Pomyślnie usunięto {deleted} zadanie(ń).", + "deleteFailed": "Nie udało się usunąć {failed} zadania(ń).", + "deleteError": "Wystąpił błąd podczas usuwania zadań. Spróbuj ponownie." + }, + "auth": { + "email": "E-mail", + "password": "Hasło", + "currentPassword": "Aktualne hasło", + "newPassword": "Hasło (pozostaw puste, aby nie zmieniać)", + "loginButton": "Zaloguj", + "registerButton": "Zarejestruj", + "updateButton": "Aktualizuj", + "createAccount": "Utwórz konto", + "invalidCredentials": "Nieprawidłowe dane uwierzytelniające.", + "emailInUse": "E-mail jest już używany.", + "unauthorized": "Brak autoryzacji", + "cookiesRequired": "Aby korzystać z tej aplikacji, należy włączyć obsługę plików cookie.", + "noCookies": "Brak pliku cookie uwierzytelniania, być może przeglądarka blokuje pliki cookie." + }, + "setup": { + "welcome": "Witamy w ConvertX-CN!", + "createYourAccount": "Utwórz swoje konto", + "reportIssues": "Zgłaszaj problemy na", + "github": "GitHub" + }, + "errors": { + "jobNotFound": "Nie znaleziono zadania.", + "fileNotFound": "Nie znaleziono pliku.", + "uploadFailed": "Przesyłanie nie powiodło się.", + "conversionFailed": "Konwersja nie powiodła się.", + "serverError": "Błąd serwera." + }, + "upload": { + "success": "Pliki zostały pomyślnie przesłane.", + "dragDrop": "Upuść pliki tutaj" + }, + "file": { + "size": "{size} kB" + } +} diff --git a/src/locales/pt.json b/src/locales/pt.json new file mode 100644 index 0000000..289fc36 --- /dev/null +++ b/src/locales/pt.json @@ -0,0 +1,106 @@ +{ + "common": { + "appName": "ConvertX-CN", + "poweredBy": "Desenvolvido por", + "version": "v{version}", + "loading": "Carregando...", + "error": "Erro", + "success": "Sucesso", + "confirm": "Confirmar", + "cancel": "Cancelar", + "close": "Fechar", + "save": "Salvar", + "delete": "Excluir", + "remove": "Remover", + "download": "Baixar", + "upload": "Enviar", + "submit": "Enviar", + "back": "Voltar", + "next": "Próximo", + "yes": "Sim", + "no": "Não" + }, + "nav": { + "history": "Histórico", + "account": "Conta", + "logout": "Sair", + "login": "Entrar", + "register": "Registrar", + "language": "Idioma" + }, + "convert": { + "title": "Converter", + "titleWithType": "Converter .{fileType}", + "chooseFile": "Escolha um arquivo", + "orDragHere": "ou arraste aqui", + "searchConversions": "Pesquisar conversões", + "convertTo": "Converter para", + "convertButton": "Converter", + "uploading": "Enviando...", + "processing": "Processando..." + }, + "results": { + "title": "Resultados", + "convertedFileName": "Nome do arquivo convertido", + "status": "Status", + "actions": "Ações", + "downloadAll": "Tudo", + "downloadTar": "Tar", + "deleteJob": "Excluir", + "noFiles": "Nenhum arquivo convertido ainda.", + "statusPending": "Pendente", + "statusCompleted": "Concluído", + "statusFailed": "Falhou" + }, + "history": { + "title": "Resultados", + "time": "Hora", + "files": "Arquivos", + "filesDone": "Arquivos concluídos", + "status": "Status", + "actions": "Ações", + "expandDetails": "Expandir detalhes", + "detailedFileInfo": "Informações detalhadas do arquivo:", + "deleteSelected": "Excluir selecionados", + "selectAll": "Selecionar tudo", + "confirmDelete": "Tem certeza de que deseja excluir {count} trabalho(s)? Esta ação não pode ser desfeita.", + "deleteSuccess": "{deleted} trabalho(s) excluído(s) com sucesso.", + "deleteFailed": "Falha ao excluir {failed} trabalho(s).", + "deleteError": "Ocorreu um erro ao excluir os trabalhos. Por favor, tente novamente." + }, + "auth": { + "email": "E-mail", + "password": "Senha", + "currentPassword": "Senha atual", + "newPassword": "Senha (deixe em branco para manter)", + "loginButton": "Entrar", + "registerButton": "Registrar", + "updateButton": "Atualizar", + "createAccount": "Criar conta", + "invalidCredentials": "Credenciais inválidas.", + "emailInUse": "E-mail já está em uso.", + "unauthorized": "Não autorizado", + "cookiesRequired": "Os cookies devem estar habilitados para usar este aplicativo.", + "noCookies": "Sem cookie de autenticação, talvez seu navegador esteja bloqueando cookies." + }, + "setup": { + "welcome": "Bem-vindo ao ConvertX-CN!", + "createYourAccount": "Crie sua conta", + "reportIssues": "Reportar problemas no", + "github": "GitHub" + }, + "errors": { + "jobNotFound": "Trabalho não encontrado.", + "fileNotFound": "Arquivo não encontrado.", + "uploadFailed": "Falha no envio.", + "conversionFailed": "Falha na conversão.", + "serverError": "Erro do servidor." + }, + "upload": { + "success": "Arquivos enviados com sucesso.", + "dragDrop": "Solte os arquivos aqui" + }, + "file": { + "size": "{size} kB" + } +} diff --git a/src/locales/ro.json b/src/locales/ro.json new file mode 100644 index 0000000..8a782f6 --- /dev/null +++ b/src/locales/ro.json @@ -0,0 +1,106 @@ +{ + "common": { + "appName": "ConvertX-CN", + "poweredBy": "Alimentat de", + "version": "v{version}", + "loading": "Se încarcă...", + "error": "Eroare", + "success": "Succes", + "confirm": "Confirmă", + "cancel": "Anulează", + "close": "Închide", + "save": "Salvează", + "delete": "Șterge", + "remove": "Elimină", + "download": "Descarcă", + "upload": "Încarcă", + "submit": "Trimite", + "back": "Înapoi", + "next": "Următorul", + "yes": "Da", + "no": "Nu" + }, + "nav": { + "history": "Istoric", + "account": "Cont", + "logout": "Deconectare", + "login": "Autentificare", + "register": "Înregistrare", + "language": "Limbă" + }, + "convert": { + "title": "Convertire", + "titleWithType": "Convertire .{fileType}", + "chooseFile": "Alegeți un fișier", + "orDragHere": "sau trageți-l aici", + "searchConversions": "Căutați conversii", + "convertTo": "Convertire în", + "convertButton": "Convertire", + "uploading": "Se încarcă...", + "processing": "Se procesează..." + }, + "results": { + "title": "Rezultate", + "convertedFileName": "Nume fișier convertit", + "status": "Stare", + "actions": "Acțiuni", + "downloadAll": "Toate", + "downloadTar": "Tar", + "deleteJob": "Șterge", + "noFiles": "Nu au fost convertite fișiere încă.", + "statusPending": "În așteptare", + "statusCompleted": "Finalizat", + "statusFailed": "Eșuat" + }, + "history": { + "title": "Rezultate", + "time": "Timp", + "files": "Fișiere", + "filesDone": "Fișiere finalizate", + "status": "Stare", + "actions": "Acțiuni", + "expandDetails": "Extinde detaliile", + "detailedFileInfo": "Informații detaliate despre fișier:", + "deleteSelected": "Șterge selectate", + "selectAll": "Selectează tot", + "confirmDelete": "Sunteți sigur că doriți să ștergeți {count} sarcină(i)? Această acțiune nu poate fi anulată.", + "deleteSuccess": "Au fost șterse cu succes {deleted} sarcină(i).", + "deleteFailed": "Nu s-au putut șterge {failed} sarcină(i).", + "deleteError": "A apărut o eroare la ștergerea sarcinilor. Vă rugăm să încercați din nou." + }, + "auth": { + "email": "Email", + "password": "Parolă", + "currentPassword": "Parola curentă", + "newPassword": "Parolă (lăsați gol pentru neschimbat)", + "loginButton": "Autentificare", + "registerButton": "Înregistrare", + "updateButton": "Actualizare", + "createAccount": "Creează cont", + "invalidCredentials": "Credențiale invalide.", + "emailInUse": "Email-ul este deja utilizat.", + "unauthorized": "Neautorizat", + "cookiesRequired": "Cookie-urile trebuie să fie activate pentru a utiliza această aplicație.", + "noCookies": "Nu există cookie de autentificare, poate browserul dvs. blochează cookie-urile." + }, + "setup": { + "welcome": "Bine ați venit la ConvertX-CN!", + "createYourAccount": "Creați-vă contul", + "reportIssues": "Raportați orice probleme pe", + "github": "GitHub" + }, + "errors": { + "jobNotFound": "Sarcina nu a fost găsită.", + "fileNotFound": "Fișierul nu a fost găsit.", + "uploadFailed": "Încărcarea a eșuat.", + "conversionFailed": "Conversia a eșuat.", + "serverError": "Eroare de server." + }, + "upload": { + "success": "Fișierele au fost încărcate cu succes.", + "dragDrop": "Trageți fișierele aici" + }, + "file": { + "size": "{size} kB" + } +} diff --git a/src/locales/ru.json b/src/locales/ru.json new file mode 100644 index 0000000..c730f99 --- /dev/null +++ b/src/locales/ru.json @@ -0,0 +1,106 @@ +{ + "common": { + "appName": "ConvertX-CN", + "poweredBy": "Работает на", + "version": "v{version}", + "loading": "Загрузка...", + "error": "Ошибка", + "success": "Успешно", + "confirm": "Подтвердить", + "cancel": "Отмена", + "close": "Закрыть", + "save": "Сохранить", + "delete": "Удалить", + "remove": "Убрать", + "download": "Скачать", + "upload": "Загрузить", + "submit": "Отправить", + "back": "Назад", + "next": "Далее", + "yes": "Да", + "no": "Нет" + }, + "nav": { + "history": "История", + "account": "Аккаунт", + "logout": "Выйти", + "login": "Войти", + "register": "Регистрация", + "language": "Язык" + }, + "convert": { + "title": "Конвертировать", + "titleWithType": "Конвертировать .{fileType}", + "chooseFile": "Выберите файл", + "orDragHere": "или перетащите сюда", + "searchConversions": "Поиск конвертаций", + "convertTo": "Конвертировать в", + "convertButton": "Конвертировать", + "uploading": "Загрузка...", + "processing": "Обработка..." + }, + "results": { + "title": "Результаты", + "convertedFileName": "Имя конвертированного файла", + "status": "Статус", + "actions": "Действия", + "downloadAll": "Все", + "downloadTar": "Tar", + "deleteJob": "Удалить", + "noFiles": "Файлы ещё не конвертированы.", + "statusPending": "Ожидание", + "statusCompleted": "Завершено", + "statusFailed": "Ошибка" + }, + "history": { + "title": "Результаты", + "time": "Время", + "files": "Файлы", + "filesDone": "Готовые файлы", + "status": "Статус", + "actions": "Действия", + "expandDetails": "Развернуть детали", + "detailedFileInfo": "Подробная информация о файле:", + "deleteSelected": "Удалить выбранные", + "selectAll": "Выбрать все", + "confirmDelete": "Вы уверены, что хотите удалить {count} задание(й)? Это действие нельзя отменить.", + "deleteSuccess": "Успешно удалено {deleted} задание(й).", + "deleteFailed": "Не удалось удалить {failed} задание(й).", + "deleteError": "Произошла ошибка при удалении заданий. Пожалуйста, попробуйте снова." + }, + "auth": { + "email": "Электронная почта", + "password": "Пароль", + "currentPassword": "Текущий пароль", + "newPassword": "Пароль (оставьте пустым, чтобы не менять)", + "loginButton": "Войти", + "registerButton": "Зарегистрироваться", + "updateButton": "Обновить", + "createAccount": "Создать аккаунт", + "invalidCredentials": "Неверные учётные данные.", + "emailInUse": "Электронная почта уже используется.", + "unauthorized": "Не авторизован", + "cookiesRequired": "Для использования этого приложения необходимо включить cookies.", + "noCookies": "Нет cookie аутентификации, возможно, ваш браузер блокирует cookies." + }, + "setup": { + "welcome": "Добро пожаловать в ConvertX-CN!", + "createYourAccount": "Создайте свой аккаунт", + "reportIssues": "Сообщить о проблемах на", + "github": "GitHub" + }, + "errors": { + "jobNotFound": "Задание не найдено.", + "fileNotFound": "Файл не найден.", + "uploadFailed": "Ошибка загрузки.", + "conversionFailed": "Ошибка конвертации.", + "serverError": "Ошибка сервера." + }, + "upload": { + "success": "Файлы успешно загружены.", + "dragDrop": "Перетащите файлы сюда" + }, + "file": { + "size": "{size} кБ" + } +} diff --git a/src/locales/si.json b/src/locales/si.json new file mode 100644 index 0000000..78ea4ea --- /dev/null +++ b/src/locales/si.json @@ -0,0 +1,106 @@ +{ + "common": { + "appName": "ConvertX-CN", + "poweredBy": "මගින් බලගැන්වේ", + "version": "v{version}", + "loading": "පූරණය වෙමින්...", + "error": "දෝෂය", + "success": "සාර්ථකයි", + "confirm": "තහවුරු කරන්න", + "cancel": "අවලංගු කරන්න", + "close": "වසන්න", + "save": "සුරකින්න", + "delete": "මකන්න", + "remove": "ඉවත් කරන්න", + "download": "බාගන්න", + "upload": "උඩුගත කරන්න", + "submit": "ඉදිරිපත් කරන්න", + "back": "ආපසු", + "next": "ඊළඟ", + "yes": "ඔව්", + "no": "නැත" + }, + "nav": { + "history": "ඉතිහාසය", + "account": "ගිණුම", + "logout": "පිටවන්න", + "login": "පිවිසෙන්න", + "register": "ලියාපදිංචි වන්න", + "language": "භාෂාව" + }, + "convert": { + "title": "පරිවර්තනය", + "titleWithType": ".{fileType} පරිවර්තනය", + "chooseFile": "ගොනුවක් තෝරන්න", + "orDragHere": "හෝ මෙහි ඇද දමන්න", + "searchConversions": "පරිවර්තන සොයන්න", + "convertTo": "වෙත පරිවර්තනය", + "convertButton": "පරිවර්තනය", + "uploading": "උඩුගත වෙමින්...", + "processing": "සැකසෙමින්..." + }, + "results": { + "title": "ප්‍රතිඵල", + "convertedFileName": "පරිවර්තිත ගොනු නාමය", + "status": "තත්ත්වය", + "actions": "ක්‍රියා", + "downloadAll": "සියල්ල", + "downloadTar": "Tar", + "deleteJob": "මකන්න", + "noFiles": "තවම ගොනු පරිවර්තනය කර නැත.", + "statusPending": "අපේක්ෂාවෙන්", + "statusCompleted": "සම්පූර්ණයි", + "statusFailed": "අසාර්ථකයි" + }, + "history": { + "title": "ප්‍රතිඵල", + "time": "වේලාව", + "files": "ගොනු", + "filesDone": "සම්පූර්ණ ගොනු", + "status": "තත්ත්වය", + "actions": "ක්‍රියා", + "expandDetails": "විස්තර විහිදන්න", + "detailedFileInfo": "සවිස්තර ගොනු තොරතුරු:", + "deleteSelected": "තෝරාගත්තවා මකන්න", + "selectAll": "සියල්ල තෝරන්න", + "confirmDelete": "ඔබට කාර්ය {count}ක් මැකීමට අවශ්‍ය බව විශ්වාසද? මෙම ක්‍රියාව අවලංගු කළ නොහැක.", + "deleteSuccess": "කාර්ය {deleted}ක් සාර්ථකව මකා දැමිණි.", + "deleteFailed": "කාර්ය {failed}ක් මැකීමට අසමත් විය.", + "deleteError": "කාර්යයන් මකන විට දෝෂයක් ඇති විය. කරුණාකර නැවත උත්සාහ කරන්න." + }, + "auth": { + "email": "ඊමේල්", + "password": "මුරපදය", + "currentPassword": "වත්මන් මුරපදය", + "newPassword": "මුරපදය (වෙනස් නොකරන්නේ නම් හිස්ව තබන්න)", + "loginButton": "පිවිසෙන්න", + "registerButton": "ලියාපදිංචි වන්න", + "updateButton": "යාවත්කාලීන කරන්න", + "createAccount": "ගිණුමක් සාදන්න", + "invalidCredentials": "අවලංගු අක්තපත්‍ර.", + "emailInUse": "ඊමේල් දැනටමත් භාවිතයේ පවතී.", + "unauthorized": "අනවසර", + "cookiesRequired": "මෙම යෙදුම භාවිතා කිරීමට කුකී සක්‍රීය කළ යුතුය.", + "noCookies": "සත්‍යාපන කුකී නැත, සමහර විට ඔබේ බ්‍රව්සරය කුකී අවහිර කරයි." + }, + "setup": { + "welcome": "ConvertX-CN වෙත සාදරයෙන් පිළිගනිමු!", + "createYourAccount": "ඔබේ ගිණුම සාදන්න", + "reportIssues": "ගැටලු වාර්තා කරන්න", + "github": "GitHub" + }, + "errors": { + "jobNotFound": "කාර්යය හමු නොවීය.", + "fileNotFound": "ගොනුව හමු නොවීය.", + "uploadFailed": "උඩුගත කිරීම අසාර්ථක විය.", + "conversionFailed": "පරිවර්තනය අසාර්ථක විය.", + "serverError": "සේවාදායක දෝෂය." + }, + "upload": { + "success": "ගොනු සාර්ථකව උඩුගත කරන ලදී.", + "dragDrop": "ගොනු මෙහි දමන්න" + }, + "file": { + "size": "{size} kB" + } +} diff --git a/src/locales/sk.json b/src/locales/sk.json new file mode 100644 index 0000000..5ee8494 --- /dev/null +++ b/src/locales/sk.json @@ -0,0 +1,106 @@ +{ + "common": { + "appName": "ConvertX-CN", + "poweredBy": "Poháňané", + "version": "v{version}", + "loading": "Načítava sa...", + "error": "Chyba", + "success": "Úspech", + "confirm": "Potvrdiť", + "cancel": "Zrušiť", + "close": "Zavrieť", + "save": "Uložiť", + "delete": "Vymazať", + "remove": "Odstrániť", + "download": "Stiahnuť", + "upload": "Nahrať", + "submit": "Odoslať", + "back": "Späť", + "next": "Ďalej", + "yes": "Áno", + "no": "Nie" + }, + "nav": { + "history": "História", + "account": "Účet", + "logout": "Odhlásiť sa", + "login": "Prihlásiť sa", + "register": "Registrovať", + "language": "Jazyk" + }, + "convert": { + "title": "Konvertovať", + "titleWithType": "Konvertovať .{fileType}", + "chooseFile": "Vyberte súbor", + "orDragHere": "alebo ho sem potiahnite", + "searchConversions": "Hľadať konverzie", + "convertTo": "Konvertovať na", + "convertButton": "Konvertovať", + "uploading": "Nahráva sa...", + "processing": "Spracováva sa..." + }, + "results": { + "title": "Výsledky", + "convertedFileName": "Názov konvertovaného súboru", + "status": "Stav", + "actions": "Akcie", + "downloadAll": "Všetky", + "downloadTar": "Tar", + "deleteJob": "Vymazať", + "noFiles": "Zatiaľ neboli konvertované žiadne súbory.", + "statusPending": "Čaká sa", + "statusCompleted": "Dokončené", + "statusFailed": "Zlyhalo" + }, + "history": { + "title": "Výsledky", + "time": "Čas", + "files": "Súbory", + "filesDone": "Dokončené súbory", + "status": "Stav", + "actions": "Akcie", + "expandDetails": "Rozbaliť detaily", + "detailedFileInfo": "Podrobné informácie o súbore:", + "deleteSelected": "Vymazať vybrané", + "selectAll": "Vybrať všetko", + "confirmDelete": "Ste si istí, že chcete vymazať {count} úlohu(y)? Túto akciu nie je možné vrátiť späť.", + "deleteSuccess": "Úspešne vymazaných {deleted} úloh.", + "deleteFailed": "Nepodarilo sa vymazať {failed} úloh.", + "deleteError": "Pri mazaní úloh došlo k chybe. Skúste to prosím znova." + }, + "auth": { + "email": "E-mail", + "password": "Heslo", + "currentPassword": "Aktuálne heslo", + "newPassword": "Heslo (nechajte prázdne pre nezmenené)", + "loginButton": "Prihlásiť sa", + "registerButton": "Registrovať", + "updateButton": "Aktualizovať", + "createAccount": "Vytvoriť účet", + "invalidCredentials": "Neplatné prihlasovacie údaje.", + "emailInUse": "E-mail sa už používa.", + "unauthorized": "Neautorizované", + "cookiesRequired": "Na používanie tejto aplikácie musia byť povolené súbory cookie.", + "noCookies": "Žiadny autentifikačný súbor cookie, možno váš prehliadač blokuje súbory cookie." + }, + "setup": { + "welcome": "Vitajte v ConvertX-CN!", + "createYourAccount": "Vytvorte si svoj účet", + "reportIssues": "Nahláste akékoľvek problémy na", + "github": "GitHub" + }, + "errors": { + "jobNotFound": "Úloha sa nenašla.", + "fileNotFound": "Súbor sa nenašiel.", + "uploadFailed": "Nahrávanie zlyhalo.", + "conversionFailed": "Konverzia zlyhala.", + "serverError": "Chyba servera." + }, + "upload": { + "success": "Súbory boli úspešne nahrané.", + "dragDrop": "Sem presuňte súbory" + }, + "file": { + "size": "{size} kB" + } +} diff --git a/src/locales/sl.json b/src/locales/sl.json new file mode 100644 index 0000000..cb817b7 --- /dev/null +++ b/src/locales/sl.json @@ -0,0 +1,106 @@ +{ + "common": { + "appName": "ConvertX-CN", + "poweredBy": "Poganja", + "version": "v{version}", + "loading": "Nalaganje...", + "error": "Napaka", + "success": "Uspeh", + "confirm": "Potrdi", + "cancel": "Prekliči", + "close": "Zapri", + "save": "Shrani", + "delete": "Izbriši", + "remove": "Odstrani", + "download": "Prenesi", + "upload": "Naloži", + "submit": "Pošlji", + "back": "Nazaj", + "next": "Naprej", + "yes": "Da", + "no": "Ne" + }, + "nav": { + "history": "Zgodovina", + "account": "Račun", + "logout": "Odjava", + "login": "Prijava", + "register": "Registracija", + "language": "Jezik" + }, + "convert": { + "title": "Pretvori", + "titleWithType": "Pretvori .{fileType}", + "chooseFile": "Izberite datoteko", + "orDragHere": "ali jo povlecite sem", + "searchConversions": "Išči pretvorbe", + "convertTo": "Pretvori v", + "convertButton": "Pretvori", + "uploading": "Nalaganje...", + "processing": "Obdelava..." + }, + "results": { + "title": "Rezultati", + "convertedFileName": "Ime pretvorjene datoteke", + "status": "Stanje", + "actions": "Dejanja", + "downloadAll": "Vse", + "downloadTar": "Tar", + "deleteJob": "Izbriši", + "noFiles": "Še ni pretvorjenih datotek.", + "statusPending": "V čakanju", + "statusCompleted": "Končano", + "statusFailed": "Neuspešno" + }, + "history": { + "title": "Rezultati", + "time": "Čas", + "files": "Datoteke", + "filesDone": "Končane datoteke", + "status": "Stanje", + "actions": "Dejanja", + "expandDetails": "Razširi podrobnosti", + "detailedFileInfo": "Podrobne informacije o datoteki:", + "deleteSelected": "Izbriši izbrano", + "selectAll": "Izberi vse", + "confirmDelete": "Ali ste prepričani, da želite izbrisati {count} opravilo(a)? Tega dejanja ni mogoče razveljaviti.", + "deleteSuccess": "Uspešno izbrisanih {deleted} opravil.", + "deleteFailed": "Ni uspelo izbrisati {failed} opravil.", + "deleteError": "Pri brisanju opravil je prišlo do napake. Prosimo, poskusite znova." + }, + "auth": { + "email": "E-pošta", + "password": "Geslo", + "currentPassword": "Trenutno geslo", + "newPassword": "Geslo (pustite prazno za nespremenjeno)", + "loginButton": "Prijava", + "registerButton": "Registracija", + "updateButton": "Posodobi", + "createAccount": "Ustvari račun", + "invalidCredentials": "Neveljavne poverilnice.", + "emailInUse": "E-pošta je že v uporabi.", + "unauthorized": "Nepooblaščeno", + "cookiesRequired": "Za uporabo te aplikacije morajo biti piškotki omogočeni.", + "noCookies": "Ni piškotka za preverjanje pristnosti, morda vaš brskalnik blokira piškotke." + }, + "setup": { + "welcome": "Dobrodošli v ConvertX-CN!", + "createYourAccount": "Ustvarite svoj račun", + "reportIssues": "Prijavite kakršnekoli težave na", + "github": "GitHub" + }, + "errors": { + "jobNotFound": "Opravilo ni bilo najdeno.", + "fileNotFound": "Datoteka ni bila najdena.", + "uploadFailed": "Nalaganje ni uspelo.", + "conversionFailed": "Pretvorba ni uspela.", + "serverError": "Napaka strežnika." + }, + "upload": { + "success": "Datoteke so bile uspešno naložene.", + "dragDrop": "Spustite datoteke tukaj" + }, + "file": { + "size": "{size} kB" + } +} diff --git a/src/locales/sq.json b/src/locales/sq.json new file mode 100644 index 0000000..226e7d2 --- /dev/null +++ b/src/locales/sq.json @@ -0,0 +1,106 @@ +{ + "common": { + "appName": "ConvertX-CN", + "poweredBy": "Mundësuar nga", + "version": "v{version}", + "loading": "Duke ngarkuar...", + "error": "Gabim", + "success": "Sukses", + "confirm": "Konfirmo", + "cancel": "Anulo", + "close": "Mbyll", + "save": "Ruaj", + "delete": "Fshi", + "remove": "Hiq", + "download": "Shkarko", + "upload": "Ngarko", + "submit": "Dërgo", + "back": "Prapa", + "next": "Tjetër", + "yes": "Po", + "no": "Jo" + }, + "nav": { + "history": "Historia", + "account": "Llogaria", + "logout": "Dilni", + "login": "Hyni", + "register": "Regjistrohu", + "language": "Gjuha" + }, + "convert": { + "title": "Konverto", + "titleWithType": "Konverto .{fileType}", + "chooseFile": "Zgjidhni një skedar", + "orDragHere": "ose tërhiqeni këtu", + "searchConversions": "Kërkoni konvertime", + "convertTo": "Konverto në", + "convertButton": "Konverto", + "uploading": "Duke ngarkuar...", + "processing": "Duke përpunuar..." + }, + "results": { + "title": "Rezultatet", + "convertedFileName": "Emri i skedarit të konvertuar", + "status": "Statusi", + "actions": "Veprimet", + "downloadAll": "Të gjitha", + "downloadTar": "Tar", + "deleteJob": "Fshi", + "noFiles": "Ende nuk ka skedarë të konvertuar.", + "statusPending": "Në pritje", + "statusCompleted": "Përfunduar", + "statusFailed": "Dështoi" + }, + "history": { + "title": "Rezultatet", + "time": "Koha", + "files": "Skedarët", + "filesDone": "Skedarët e përfunduar", + "status": "Statusi", + "actions": "Veprimet", + "expandDetails": "Zgjero detajet", + "detailedFileInfo": "Informacion i detajuar i skedarit:", + "deleteSelected": "Fshi të zgjedhurit", + "selectAll": "Zgjidh të gjitha", + "confirmDelete": "Jeni i sigurt që dëshironi të fshini {count} punë? Ky veprim nuk mund të zhbëhet.", + "deleteSuccess": "U fshinë me sukses {deleted} punë.", + "deleteFailed": "Dështoi fshirja e {failed} punëve.", + "deleteError": "Ndodhi një gabim gjatë fshirjes së punëve. Ju lutemi provoni përsëri." + }, + "auth": { + "email": "Email", + "password": "Fjalëkalimi", + "currentPassword": "Fjalëkalimi aktual", + "newPassword": "Fjalëkalimi (lëreni bosh nëse nuk ndryshon)", + "loginButton": "Hyni", + "registerButton": "Regjistrohu", + "updateButton": "Përditëso", + "createAccount": "Krijo llogari", + "invalidCredentials": "Kredencialet e pavlefshme.", + "emailInUse": "Emaili është tashmë në përdorim.", + "unauthorized": "I paautorizuar", + "cookiesRequired": "Cookies duhet të jenë të aktivizuara për të përdorur këtë aplikacion.", + "noCookies": "Nuk ka cookie autentifikimi, ndoshta shfletuesi juaj po bllokon cookies." + }, + "setup": { + "welcome": "Mirë se vini në ConvertX-CN!", + "createYourAccount": "Krijoni llogarinë tuaj", + "reportIssues": "Raportoni çdo problem në", + "github": "GitHub" + }, + "errors": { + "jobNotFound": "Puna nuk u gjet.", + "fileNotFound": "Skedari nuk u gjet.", + "uploadFailed": "Ngarkimi dështoi.", + "conversionFailed": "Konvertimi dështoi.", + "serverError": "Gabim i serverit." + }, + "upload": { + "success": "Skedarët u ngarkuan me sukses.", + "dragDrop": "Lëshoni skedarët këtu" + }, + "file": { + "size": "{size} kB" + } +} diff --git a/src/locales/sr.json b/src/locales/sr.json new file mode 100644 index 0000000..facb64c --- /dev/null +++ b/src/locales/sr.json @@ -0,0 +1,106 @@ +{ + "common": { + "appName": "ConvertX-CN", + "poweredBy": "Покреће", + "version": "v{version}", + "loading": "Учитавање...", + "error": "Грешка", + "success": "Успех", + "confirm": "Потврди", + "cancel": "Откажи", + "close": "Затвори", + "save": "Сачувај", + "delete": "Обриши", + "remove": "Уклони", + "download": "Преузми", + "upload": "Отпреми", + "submit": "Пошаљи", + "back": "Назад", + "next": "Следеће", + "yes": "Да", + "no": "Не" + }, + "nav": { + "history": "Историја", + "account": "Налог", + "logout": "Одјава", + "login": "Пријава", + "register": "Регистрација", + "language": "Језик" + }, + "convert": { + "title": "Конвертуј", + "titleWithType": "Конвертуј .{fileType}", + "chooseFile": "Изаберите датотеку", + "orDragHere": "или је превуците овде", + "searchConversions": "Претражи конверзије", + "convertTo": "Конвертуј у", + "convertButton": "Конвертуј", + "uploading": "Отпремање...", + "processing": "Обрада..." + }, + "results": { + "title": "Резултати", + "convertedFileName": "Име конвертоване датотеке", + "status": "Статус", + "actions": "Радње", + "downloadAll": "Све", + "downloadTar": "Tar", + "deleteJob": "Обриши", + "noFiles": "Још нема конвертованих датотека.", + "statusPending": "На чекању", + "statusCompleted": "Завршено", + "statusFailed": "Неуспешно" + }, + "history": { + "title": "Резултати", + "time": "Време", + "files": "Датотеке", + "filesDone": "Завршене датотеке", + "status": "Статус", + "actions": "Радње", + "expandDetails": "Прошири детаље", + "detailedFileInfo": "Детаљне информације о датотеци:", + "deleteSelected": "Обриши изабрано", + "selectAll": "Изабери све", + "confirmDelete": "Да ли сте сигурни да желите да обришете {count} посао(ва)? Ова радња се не може поништити.", + "deleteSuccess": "Успешно обрисано {deleted} посао(ва).", + "deleteFailed": "Неуспешно брисање {failed} посао(ва).", + "deleteError": "Дошло је до грешке при брисању послова. Покушајте поново." + }, + "auth": { + "email": "Е-пошта", + "password": "Лозинка", + "currentPassword": "Тренутна лозинка", + "newPassword": "Лозинка (оставите празно за непромењено)", + "loginButton": "Пријави се", + "registerButton": "Региструј се", + "updateButton": "Ажурирај", + "createAccount": "Направи налог", + "invalidCredentials": "Неважећи акредитиви.", + "emailInUse": "Е-пошта је већ у употреби.", + "unauthorized": "Неовлашћено", + "cookiesRequired": "Колачићи треба да буду омогућени за коришћење ове апликације.", + "noCookies": "Нема колачића за аутентификацију, можда ваш прегледач блокира колачиће." + }, + "setup": { + "welcome": "Добродошли у ConvertX-CN!", + "createYourAccount": "Направите свој налог", + "reportIssues": "Пријавите проблеме на", + "github": "GitHub" + }, + "errors": { + "jobNotFound": "Посао није пронађен.", + "fileNotFound": "Датотека није пронађена.", + "uploadFailed": "Отпремање није успело.", + "conversionFailed": "Конверзија није успела.", + "serverError": "Грешка сервера." + }, + "upload": { + "success": "Датотеке су успешно отпремљене.", + "dragDrop": "Превуците датотеке овде" + }, + "file": { + "size": "{size} kB" + } +} diff --git a/src/locales/sv.json b/src/locales/sv.json new file mode 100644 index 0000000..370ef1d --- /dev/null +++ b/src/locales/sv.json @@ -0,0 +1,106 @@ +{ + "common": { + "appName": "ConvertX-CN", + "poweredBy": "Drivs av", + "version": "v{version}", + "loading": "Laddar...", + "error": "Fel", + "success": "Lyckades", + "confirm": "Bekräfta", + "cancel": "Avbryt", + "close": "Stäng", + "save": "Spara", + "delete": "Ta bort", + "remove": "Ta bort", + "download": "Ladda ner", + "upload": "Ladda upp", + "submit": "Skicka", + "back": "Tillbaka", + "next": "Nästa", + "yes": "Ja", + "no": "Nej" + }, + "nav": { + "history": "Historik", + "account": "Konto", + "logout": "Logga ut", + "login": "Logga in", + "register": "Registrera", + "language": "Språk" + }, + "convert": { + "title": "Konvertera", + "titleWithType": "Konvertera .{fileType}", + "chooseFile": "Välj en fil", + "orDragHere": "eller dra den hit", + "searchConversions": "Sök konverteringar", + "convertTo": "Konvertera till", + "convertButton": "Konvertera", + "uploading": "Laddar upp...", + "processing": "Bearbetar..." + }, + "results": { + "title": "Resultat", + "convertedFileName": "Konverterat filnamn", + "status": "Status", + "actions": "Åtgärder", + "downloadAll": "Alla", + "downloadTar": "Tar", + "deleteJob": "Ta bort", + "noFiles": "Inga filer konverterade än.", + "statusPending": "Väntar", + "statusCompleted": "Slutförd", + "statusFailed": "Misslyckades" + }, + "history": { + "title": "Resultat", + "time": "Tid", + "files": "Filer", + "filesDone": "Färdiga filer", + "status": "Status", + "actions": "Åtgärder", + "expandDetails": "Expandera detaljer", + "detailedFileInfo": "Detaljerad filinformation:", + "deleteSelected": "Ta bort valda", + "selectAll": "Välj alla", + "confirmDelete": "Är du säker på att du vill ta bort {count} jobb? Denna åtgärd kan inte ångras.", + "deleteSuccess": "Lyckades ta bort {deleted} jobb.", + "deleteFailed": "Kunde inte ta bort {failed} jobb.", + "deleteError": "Ett fel uppstod när jobb skulle tas bort. Försök igen." + }, + "auth": { + "email": "E-post", + "password": "Lösenord", + "currentPassword": "Nuvarande lösenord", + "newPassword": "Lösenord (lämna tomt för att inte ändra)", + "loginButton": "Logga in", + "registerButton": "Registrera", + "updateButton": "Uppdatera", + "createAccount": "Skapa konto", + "invalidCredentials": "Ogiltiga inloggningsuppgifter.", + "emailInUse": "E-postadressen används redan.", + "unauthorized": "Ej auktoriserad", + "cookiesRequired": "Cookies måste vara aktiverade för att använda denna app.", + "noCookies": "Ingen autentiseringscookie, kanske din webbläsare blockerar cookies." + }, + "setup": { + "welcome": "Välkommen till ConvertX-CN!", + "createYourAccount": "Skapa ditt konto", + "reportIssues": "Rapportera problem på", + "github": "GitHub" + }, + "errors": { + "jobNotFound": "Jobb hittades inte.", + "fileNotFound": "Fil hittades inte.", + "uploadFailed": "Uppladdning misslyckades.", + "conversionFailed": "Konvertering misslyckades.", + "serverError": "Serverfel." + }, + "upload": { + "success": "Filerna laddades upp framgångsrikt.", + "dragDrop": "Släpp filer här" + }, + "file": { + "size": "{size} kB" + } +} diff --git a/src/locales/sw.json b/src/locales/sw.json new file mode 100644 index 0000000..1d4d4eb --- /dev/null +++ b/src/locales/sw.json @@ -0,0 +1,106 @@ +{ + "common": { + "appName": "ConvertX-CN", + "poweredBy": "Inayoendeshwa na", + "version": "v{version}", + "loading": "Inapakia...", + "error": "Hitilafu", + "success": "Imefanikiwa", + "confirm": "Thibitisha", + "cancel": "Ghairi", + "close": "Funga", + "save": "Hifadhi", + "delete": "Futa", + "remove": "Ondoa", + "download": "Pakua", + "upload": "Pakia", + "submit": "Wasilisha", + "back": "Rudi", + "next": "Inayofuata", + "yes": "Ndiyo", + "no": "Hapana" + }, + "nav": { + "history": "Historia", + "account": "Akaunti", + "logout": "Toka", + "login": "Ingia", + "register": "Jisajili", + "language": "Lugha" + }, + "convert": { + "title": "Badilisha", + "titleWithType": "Badilisha .{fileType}", + "chooseFile": "Chagua faili", + "orDragHere": "au iburute hapa", + "searchConversions": "Tafuta ubadilishaji", + "convertTo": "Badilisha kuwa", + "convertButton": "Badilisha", + "uploading": "Inapakia...", + "processing": "Inachakata..." + }, + "results": { + "title": "Matokeo", + "convertedFileName": "Jina la faili iliyobadilishwa", + "status": "Hali", + "actions": "Vitendo", + "downloadAll": "Zote", + "downloadTar": "Tar", + "deleteJob": "Futa", + "noFiles": "Hakuna faili zilizobadilishwa bado.", + "statusPending": "Inasubiri", + "statusCompleted": "Imekamilika", + "statusFailed": "Imeshindwa" + }, + "history": { + "title": "Matokeo", + "time": "Wakati", + "files": "Faili", + "filesDone": "Faili zilizokamilika", + "status": "Hali", + "actions": "Vitendo", + "expandDetails": "Panua maelezo", + "detailedFileInfo": "Maelezo ya kina ya faili:", + "deleteSelected": "Futa zilizochaguliwa", + "selectAll": "Chagua zote", + "confirmDelete": "Una uhakika unataka kufuta kazi {count}? Kitendo hiki hakiwezi kutenduliwa.", + "deleteSuccess": "Kazi {deleted} zimefutwa kwa mafanikio.", + "deleteFailed": "Imeshindwa kufuta kazi {failed}.", + "deleteError": "Hitilafu imetokea wakati wa kufuta kazi. Tafadhali jaribu tena." + }, + "auth": { + "email": "Barua pepe", + "password": "Nenosiri", + "currentPassword": "Nenosiri la sasa", + "newPassword": "Nenosiri (acha tupu ikiwa halijabadilishwa)", + "loginButton": "Ingia", + "registerButton": "Jisajili", + "updateButton": "Sasisha", + "createAccount": "Unda akaunti", + "invalidCredentials": "Vitambulisho batili.", + "emailInUse": "Barua pepe tayari inatumika.", + "unauthorized": "Haujaidhinishwa", + "cookiesRequired": "Kuki zinapaswa kuwezeshwa kutumia programu hii.", + "noCookies": "Hakuna kuki ya uthibitisho, labda kivinjari chako kinazuia kuki." + }, + "setup": { + "welcome": "Karibu kwenye ConvertX-CN!", + "createYourAccount": "Unda akaunti yako", + "reportIssues": "Ripoti matatizo yoyote kwenye", + "github": "GitHub" + }, + "errors": { + "jobNotFound": "Kazi haijapatikana.", + "fileNotFound": "Faili haijapatikana.", + "uploadFailed": "Upakiaji umeshindwa.", + "conversionFailed": "Ubadilishaji umeshindwa.", + "serverError": "Hitilafu ya seva." + }, + "upload": { + "success": "Faili zimepakiwa kwa mafanikio.", + "dragDrop": "Dondosha faili hapa" + }, + "file": { + "size": "{size} kB" + } +} diff --git a/src/locales/ta.json b/src/locales/ta.json new file mode 100644 index 0000000..b383056 --- /dev/null +++ b/src/locales/ta.json @@ -0,0 +1,106 @@ +{ + "common": { + "appName": "ConvertX-CN", + "poweredBy": "மூலம் இயக்கப்படுகிறது", + "version": "v{version}", + "loading": "ஏற்றுகிறது...", + "error": "பிழை", + "success": "வெற்றி", + "confirm": "உறுதிப்படுத்து", + "cancel": "ரத்து செய்", + "close": "மூடு", + "save": "சேமி", + "delete": "நீக்கு", + "remove": "அகற்று", + "download": "பதிவிறக்கு", + "upload": "பதிவேற்று", + "submit": "சமர்ப்பி", + "back": "பின்", + "next": "அடுத்து", + "yes": "ஆம்", + "no": "இல்லை" + }, + "nav": { + "history": "வரலாறு", + "account": "கணக்கு", + "logout": "வெளியேறு", + "login": "உள்நுழை", + "register": "பதிவு செய்", + "language": "மொழி" + }, + "convert": { + "title": "மாற்று", + "titleWithType": ".{fileType} மாற்று", + "chooseFile": "ஒரு கோப்பைத் தேர்ந்தெடுக்கவும்", + "orDragHere": "அல்லது இங்கே இழுக்கவும்", + "searchConversions": "மாற்றங்களைத் தேடு", + "convertTo": "இதற்கு மாற்று", + "convertButton": "மாற்று", + "uploading": "பதிவேற்றுகிறது...", + "processing": "செயலாக்குகிறது..." + }, + "results": { + "title": "முடிவுகள்", + "convertedFileName": "மாற்றப்பட்ட கோப்பு பெயர்", + "status": "நிலை", + "actions": "செயல்கள்", + "downloadAll": "அனைத்தும்", + "downloadTar": "Tar", + "deleteJob": "நீக்கு", + "noFiles": "இன்னும் கோப்புகள் மாற்றப்படவில்லை.", + "statusPending": "நிலுவையில்", + "statusCompleted": "முடிந்தது", + "statusFailed": "தோல்வி" + }, + "history": { + "title": "முடிவுகள்", + "time": "நேரம்", + "files": "கோப்புகள்", + "filesDone": "முடிந்த கோப்புகள்", + "status": "நிலை", + "actions": "செயல்கள்", + "expandDetails": "விவரங்களை விரிவாக்கு", + "detailedFileInfo": "விரிவான கோப்பு தகவல்:", + "deleteSelected": "தேர்ந்தெடுத்ததை நீக்கு", + "selectAll": "அனைத்தையும் தேர்ந்தெடு", + "confirmDelete": "{count} பணி(களை) நீக்க விரும்புகிறீர்களா? இந்த செயலை மாற்ற முடியாது.", + "deleteSuccess": "{deleted} பணி(கள்) வெற்றிகரமாக நீக்கப்பட்டன.", + "deleteFailed": "{failed} பணி(களை) நீக்க முடியவில்லை.", + "deleteError": "பணிகளை நீக்கும் போது பிழை ஏற்பட்டது. மீண்டும் முயற்சிக்கவும்." + }, + "auth": { + "email": "மின்னஞ்சல்", + "password": "கடவுச்சொல்", + "currentPassword": "தற்போதைய கடவுச்சொல்", + "newPassword": "கடவுச்சொல் (மாற்றவில்லை என்றால் காலியாக விடவும்)", + "loginButton": "உள்நுழை", + "registerButton": "பதிவு செய்", + "updateButton": "புதுப்பி", + "createAccount": "கணக்கை உருவாக்கு", + "invalidCredentials": "தவறான சான்றுகள்.", + "emailInUse": "மின்னஞ்சல் ஏற்கனவே பயன்பாட்டில் உள்ளது.", + "unauthorized": "அங்கீகரிக்கப்படவில்லை", + "cookiesRequired": "இந்த செயலியைப் பயன்படுத்த குக்கீகள் இயக்கப்பட வேண்டும்.", + "noCookies": "அங்கீகார குக்கீ இல்லை, உங்கள் உலாவி குக்கீகளைத் தடுக்கிறது." + }, + "setup": { + "welcome": "ConvertX-CN-க்கு வரவேற்கிறோம்!", + "createYourAccount": "உங்கள் கணக்கை உருவாக்கவும்", + "reportIssues": "சிக்கல்களைப் புகாரளிக்கவும்", + "github": "GitHub" + }, + "errors": { + "jobNotFound": "பணி கண்டறியப்படவில்லை.", + "fileNotFound": "கோப்பு கண்டறியப்படவில்லை.", + "uploadFailed": "பதிவேற்றம் தோல்வியடைந்தது.", + "conversionFailed": "மாற்றம் தோல்வியடைந்தது.", + "serverError": "சேவையக பிழை." + }, + "upload": { + "success": "கோப்புகள் வெற்றிகரமாக பதிவேற்றப்பட்டன.", + "dragDrop": "கோப்புகளை இங்கே விடவும்" + }, + "file": { + "size": "{size} kB" + } +} diff --git a/src/locales/te.json b/src/locales/te.json new file mode 100644 index 0000000..1ab7f4b --- /dev/null +++ b/src/locales/te.json @@ -0,0 +1,106 @@ +{ + "common": { + "appName": "ConvertX-CN", + "poweredBy": "ద్వారా శక్తి పొందింది", + "version": "v{version}", + "loading": "లోడ్ అవుతోంది...", + "error": "లోపం", + "success": "విజయం", + "confirm": "నిర్ధారించు", + "cancel": "రద్దు చేయి", + "close": "మూసివేయి", + "save": "సేవ్ చేయి", + "delete": "తొలగించు", + "remove": "తీసివేయి", + "download": "డౌన్‌లోడ్", + "upload": "అప్‌లోడ్", + "submit": "సమర్పించు", + "back": "వెనుకకు", + "next": "తదుపరి", + "yes": "అవును", + "no": "కాదు" + }, + "nav": { + "history": "చరిత్ర", + "account": "ఖాతా", + "logout": "లాగ్ అవుట్", + "login": "లాగిన్", + "register": "నమోదు", + "language": "భాష" + }, + "convert": { + "title": "మార్చు", + "titleWithType": ".{fileType} మార్చు", + "chooseFile": "ఫైల్ ఎంచుకోండి", + "orDragHere": "లేదా ఇక్కడ డ్రాగ్ చేయండి", + "searchConversions": "మార్పిడులు శోధించు", + "convertTo": "దీనికి మార్చు", + "convertButton": "మార్చు", + "uploading": "అప్‌లోడ్ అవుతోంది...", + "processing": "ప్రాసెస్ అవుతోంది..." + }, + "results": { + "title": "ఫలితాలు", + "convertedFileName": "మార్చబడిన ఫైల్ పేరు", + "status": "స్థితి", + "actions": "చర్యలు", + "downloadAll": "అన్నీ", + "downloadTar": "Tar", + "deleteJob": "తొలగించు", + "noFiles": "ఇంకా ఫైళ్లు మార్చబడలేదు.", + "statusPending": "పెండింగ్", + "statusCompleted": "పూర్తయింది", + "statusFailed": "విఫలమైంది" + }, + "history": { + "title": "ఫలితాలు", + "time": "సమయం", + "files": "ఫైళ్లు", + "filesDone": "పూర్తయిన ఫైళ్లు", + "status": "స్థితి", + "actions": "చర్యలు", + "expandDetails": "వివరాలు విస్తరించు", + "detailedFileInfo": "వివరణాత్మక ఫైల్ సమాచారం:", + "deleteSelected": "ఎంచుకున్నవి తొలగించు", + "selectAll": "అన్నీ ఎంచుకో", + "confirmDelete": "మీరు {count} జాబ్(లు) తొలగించాలనుకుంటున్నారా? ఈ చర్యను రద్దు చేయలేరు.", + "deleteSuccess": "{deleted} జాబ్(లు) విజయవంతంగా తొలగించబడ్డాయి.", + "deleteFailed": "{failed} జాబ్(లు) తొలగించడంలో విఫలమైంది.", + "deleteError": "జాబ్‌లు తొలగించేటప్పుడు లోపం సంభవించింది. దయచేసి మళ్ళీ ప్రయత్నించండి." + }, + "auth": { + "email": "ఇమెయిల్", + "password": "పాస్‌వర్డ్", + "currentPassword": "ప్రస్తుత పాస్‌వర్డ్", + "newPassword": "పాస్‌వర్డ్ (మార్చకపోతే ఖాళీగా ఉంచండి)", + "loginButton": "లాగిన్", + "registerButton": "నమోదు", + "updateButton": "అప్‌డేట్", + "createAccount": "ఖాతా సృష్టించు", + "invalidCredentials": "చెల్లని ఆధారాలు.", + "emailInUse": "ఇమెయిల్ ఇప్పటికే వాడుకలో ఉంది.", + "unauthorized": "అనధికారం", + "cookiesRequired": "ఈ యాప్ ఉపయోగించడానికి కుకీలు ఎనేబుల్ చేయాలి.", + "noCookies": "ప్రమాణీకరణ కుకీ లేదు, మీ బ్రౌజర్ కుకీలను బ్లాక్ చేస్తోంది." + }, + "setup": { + "welcome": "ConvertX-CN కు స్వాగతం!", + "createYourAccount": "మీ ఖాతాను సృష్టించండి", + "reportIssues": "సమస్యలను నివేదించండి", + "github": "GitHub" + }, + "errors": { + "jobNotFound": "జాబ్ కనుగొనబడలేదు.", + "fileNotFound": "ఫైల్ కనుగొనబడలేదు.", + "uploadFailed": "అప్‌లోడ్ విఫలమైంది.", + "conversionFailed": "మార్పిడి విఫలమైంది.", + "serverError": "సర్వర్ లోపం." + }, + "upload": { + "success": "ఫైళ్లు విజయవంతంగా అప్‌లోడ్ అయ్యాయి.", + "dragDrop": "ఫైళ్లను ఇక్కడ వదలండి" + }, + "file": { + "size": "{size} kB" + } +} diff --git a/src/locales/th.json b/src/locales/th.json new file mode 100644 index 0000000..ff15f6a --- /dev/null +++ b/src/locales/th.json @@ -0,0 +1,106 @@ +{ + "common": { + "appName": "ConvertX-CN", + "poweredBy": "ขับเคลื่อนโดย", + "version": "v{version}", + "loading": "กำลังโหลด...", + "error": "ข้อผิดพลาด", + "success": "สำเร็จ", + "confirm": "ยืนยัน", + "cancel": "ยกเลิก", + "close": "ปิด", + "save": "บันทึก", + "delete": "ลบ", + "remove": "นำออก", + "download": "ดาวน์โหลด", + "upload": "อัปโหลด", + "submit": "ส่ง", + "back": "กลับ", + "next": "ถัดไป", + "yes": "ใช่", + "no": "ไม่" + }, + "nav": { + "history": "ประวัติ", + "account": "บัญชี", + "logout": "ออกจากระบบ", + "login": "เข้าสู่ระบบ", + "register": "ลงทะเบียน", + "language": "ภาษา" + }, + "convert": { + "title": "แปลงไฟล์", + "titleWithType": "แปลงไฟล์ .{fileType}", + "chooseFile": "เลือกไฟล์", + "orDragHere": "หรือลากมาที่นี่", + "searchConversions": "ค้นหาการแปลง", + "convertTo": "แปลงเป็น", + "convertButton": "แปลง", + "uploading": "กำลังอัปโหลด...", + "processing": "กำลังประมวลผล..." + }, + "results": { + "title": "ผลลัพธ์", + "convertedFileName": "ชื่อไฟล์ที่แปลงแล้ว", + "status": "สถานะ", + "actions": "การดำเนินการ", + "downloadAll": "ทั้งหมด", + "downloadTar": "Tar", + "deleteJob": "ลบ", + "noFiles": "ยังไม่มีไฟล์ที่แปลง", + "statusPending": "รอดำเนินการ", + "statusCompleted": "เสร็จสมบูรณ์", + "statusFailed": "ล้มเหลว" + }, + "history": { + "title": "ผลลัพธ์", + "time": "เวลา", + "files": "ไฟล์", + "filesDone": "ไฟล์ที่เสร็จแล้ว", + "status": "สถานะ", + "actions": "การดำเนินการ", + "expandDetails": "ขยายรายละเอียด", + "detailedFileInfo": "ข้อมูลไฟล์โดยละเอียด:", + "deleteSelected": "ลบที่เลือก", + "selectAll": "เลือกทั้งหมด", + "confirmDelete": "คุณแน่ใจหรือไม่ว่าต้องการลบ {count} งาน? การดำเนินการนี้ไม่สามารถยกเลิกได้", + "deleteSuccess": "ลบ {deleted} งานสำเร็จ", + "deleteFailed": "ไม่สามารถลบ {failed} งาน", + "deleteError": "เกิดข้อผิดพลาดขณะลบงาน กรุณาลองอีกครั้ง" + }, + "auth": { + "email": "อีเมล", + "password": "รหัสผ่าน", + "currentPassword": "รหัสผ่านปัจจุบัน", + "newPassword": "รหัสผ่าน (เว้นว่างเพื่อไม่เปลี่ยน)", + "loginButton": "เข้าสู่ระบบ", + "registerButton": "ลงทะเบียน", + "updateButton": "อัปเดต", + "createAccount": "สร้างบัญชี", + "invalidCredentials": "ข้อมูลรับรองไม่ถูกต้อง", + "emailInUse": "อีเมลถูกใช้งานแล้ว", + "unauthorized": "ไม่ได้รับอนุญาต", + "cookiesRequired": "ต้องเปิดใช้งานคุกกี้เพื่อใช้แอปนี้", + "noCookies": "ไม่มีคุกกี้การยืนยันตัวตน อาจเป็นเพราะเบราว์เซอร์ของคุณบล็อกคุกกี้" + }, + "setup": { + "welcome": "ยินดีต้อนรับสู่ ConvertX-CN!", + "createYourAccount": "สร้างบัญชีของคุณ", + "reportIssues": "รายงานปัญหาที่", + "github": "GitHub" + }, + "errors": { + "jobNotFound": "ไม่พบงาน", + "fileNotFound": "ไม่พบไฟล์", + "uploadFailed": "อัปโหลดล้มเหลว", + "conversionFailed": "การแปลงล้มเหลว", + "serverError": "ข้อผิดพลาดเซิร์ฟเวอร์" + }, + "upload": { + "success": "อัปโหลดไฟล์สำเร็จ", + "dragDrop": "วางไฟล์ที่นี่" + }, + "file": { + "size": "{size} kB" + } +} diff --git a/src/locales/tr.json b/src/locales/tr.json new file mode 100644 index 0000000..24e620a --- /dev/null +++ b/src/locales/tr.json @@ -0,0 +1,106 @@ +{ + "common": { + "appName": "ConvertX-CN", + "poweredBy": "Tarafından desteklenmektedir", + "version": "v{version}", + "loading": "Yükleniyor...", + "error": "Hata", + "success": "Başarılı", + "confirm": "Onayla", + "cancel": "İptal", + "close": "Kapat", + "save": "Kaydet", + "delete": "Sil", + "remove": "Kaldır", + "download": "İndir", + "upload": "Yükle", + "submit": "Gönder", + "back": "Geri", + "next": "İleri", + "yes": "Evet", + "no": "Hayır" + }, + "nav": { + "history": "Geçmiş", + "account": "Hesap", + "logout": "Çıkış", + "login": "Giriş", + "register": "Kayıt Ol", + "language": "Dil" + }, + "convert": { + "title": "Dönüştür", + "titleWithType": ".{fileType} Dönüştür", + "chooseFile": "Bir dosya seçin", + "orDragHere": "veya buraya sürükleyin", + "searchConversions": "Dönüşümleri ara", + "convertTo": "Dönüştür", + "convertButton": "Dönüştür", + "uploading": "Yükleniyor...", + "processing": "İşleniyor..." + }, + "results": { + "title": "Sonuçlar", + "convertedFileName": "Dönüştürülen Dosya Adı", + "status": "Durum", + "actions": "İşlemler", + "downloadAll": "Tümü", + "downloadTar": "Tar", + "deleteJob": "Sil", + "noFiles": "Henüz dönüştürülmüş dosya yok.", + "statusPending": "Bekliyor", + "statusCompleted": "Tamamlandı", + "statusFailed": "Başarısız" + }, + "history": { + "title": "Sonuçlar", + "time": "Zaman", + "files": "Dosyalar", + "filesDone": "Tamamlanan Dosyalar", + "status": "Durum", + "actions": "İşlemler", + "expandDetails": "Ayrıntıları genişlet", + "detailedFileInfo": "Ayrıntılı Dosya Bilgisi:", + "deleteSelected": "Seçilenleri Sil", + "selectAll": "Tümünü seç", + "confirmDelete": "{count} işi silmek istediğinizden emin misiniz? Bu işlem geri alınamaz.", + "deleteSuccess": "{deleted} iş başarıyla silindi.", + "deleteFailed": "{failed} iş silinemedi.", + "deleteError": "İşler silinirken bir hata oluştu. Lütfen tekrar deneyin." + }, + "auth": { + "email": "E-posta", + "password": "Şifre", + "currentPassword": "Mevcut Şifre", + "newPassword": "Şifre (değiştirmemek için boş bırakın)", + "loginButton": "Giriş Yap", + "registerButton": "Kayıt Ol", + "updateButton": "Güncelle", + "createAccount": "Hesap oluştur", + "invalidCredentials": "Geçersiz kimlik bilgileri.", + "emailInUse": "E-posta zaten kullanımda.", + "unauthorized": "Yetkisiz", + "cookiesRequired": "Bu uygulamayı kullanmak için çerezler etkinleştirilmelidir.", + "noCookies": "Kimlik doğrulama çerezi yok, belki tarayıcınız çerezleri engelliyor." + }, + "setup": { + "welcome": "ConvertX-CN'e Hoş Geldiniz!", + "createYourAccount": "Hesabınızı oluşturun", + "reportIssues": "Sorunları bildirin", + "github": "GitHub" + }, + "errors": { + "jobNotFound": "İş bulunamadı.", + "fileNotFound": "Dosya bulunamadı.", + "uploadFailed": "Yükleme başarısız.", + "conversionFailed": "Dönüştürme başarısız.", + "serverError": "Sunucu hatası." + }, + "upload": { + "success": "Dosyalar başarıyla yüklendi.", + "dragDrop": "Dosyaları buraya bırakın" + }, + "file": { + "size": "{size} kB" + } +} diff --git a/src/locales/uk.json b/src/locales/uk.json new file mode 100644 index 0000000..a2f6e45 --- /dev/null +++ b/src/locales/uk.json @@ -0,0 +1,106 @@ +{ + "common": { + "appName": "ConvertX-CN", + "poweredBy": "Працює на", + "version": "v{version}", + "loading": "Завантаження...", + "error": "Помилка", + "success": "Успіх", + "confirm": "Підтвердити", + "cancel": "Скасувати", + "close": "Закрити", + "save": "Зберегти", + "delete": "Видалити", + "remove": "Прибрати", + "download": "Завантажити", + "upload": "Завантажити", + "submit": "Надіслати", + "back": "Назад", + "next": "Далі", + "yes": "Так", + "no": "Ні" + }, + "nav": { + "history": "Історія", + "account": "Обліковий запис", + "logout": "Вийти", + "login": "Увійти", + "register": "Реєстрація", + "language": "Мова" + }, + "convert": { + "title": "Конвертувати", + "titleWithType": "Конвертувати .{fileType}", + "chooseFile": "Виберіть файл", + "orDragHere": "або перетягніть сюди", + "searchConversions": "Пошук конвертацій", + "convertTo": "Конвертувати в", + "convertButton": "Конвертувати", + "uploading": "Завантаження...", + "processing": "Обробка..." + }, + "results": { + "title": "Результати", + "convertedFileName": "Ім'я конвертованого файлу", + "status": "Статус", + "actions": "Дії", + "downloadAll": "Усі", + "downloadTar": "Tar", + "deleteJob": "Видалити", + "noFiles": "Файли ще не конвертовані.", + "statusPending": "Очікування", + "statusCompleted": "Завершено", + "statusFailed": "Помилка" + }, + "history": { + "title": "Результати", + "time": "Час", + "files": "Файли", + "filesDone": "Готові файли", + "status": "Статус", + "actions": "Дії", + "expandDetails": "Розгорнути деталі", + "detailedFileInfo": "Детальна інформація про файл:", + "deleteSelected": "Видалити вибрані", + "selectAll": "Вибрати все", + "confirmDelete": "Ви впевнені, що хочете видалити {count} завдання? Цю дію не можна скасувати.", + "deleteSuccess": "Успішно видалено {deleted} завдання.", + "deleteFailed": "Не вдалося видалити {failed} завдання.", + "deleteError": "Сталася помилка під час видалення завдань. Спробуйте ще раз." + }, + "auth": { + "email": "Електронна пошта", + "password": "Пароль", + "currentPassword": "Поточний пароль", + "newPassword": "Пароль (залиште порожнім, щоб не змінювати)", + "loginButton": "Увійти", + "registerButton": "Зареєструватися", + "updateButton": "Оновити", + "createAccount": "Створити обліковий запис", + "invalidCredentials": "Невірні облікові дані.", + "emailInUse": "Електронна пошта вже використовується.", + "unauthorized": "Не авторизовано", + "cookiesRequired": "Для використання цього додатка потрібно увімкнути cookies.", + "noCookies": "Немає cookie автентифікації, можливо, ваш браузер блокує cookies." + }, + "setup": { + "welcome": "Ласкаво просимо до ConvertX-CN!", + "createYourAccount": "Створіть свій обліковий запис", + "reportIssues": "Повідомляйте про проблеми на", + "github": "GitHub" + }, + "errors": { + "jobNotFound": "Завдання не знайдено.", + "fileNotFound": "Файл не знайдено.", + "uploadFailed": "Помилка завантаження.", + "conversionFailed": "Помилка конвертації.", + "serverError": "Помилка сервера." + }, + "upload": { + "success": "Файли успішно завантажено.", + "dragDrop": "Перетягніть файли сюди" + }, + "file": { + "size": "{size} кБ" + } +} diff --git a/src/locales/vi.json b/src/locales/vi.json new file mode 100644 index 0000000..023bf35 --- /dev/null +++ b/src/locales/vi.json @@ -0,0 +1,106 @@ +{ + "common": { + "appName": "ConvertX-CN", + "poweredBy": "Được hỗ trợ bởi", + "version": "v{version}", + "loading": "Đang tải...", + "error": "Lỗi", + "success": "Thành công", + "confirm": "Xác nhận", + "cancel": "Hủy", + "close": "Đóng", + "save": "Lưu", + "delete": "Xóa", + "remove": "Gỡ bỏ", + "download": "Tải xuống", + "upload": "Tải lên", + "submit": "Gửi", + "back": "Quay lại", + "next": "Tiếp theo", + "yes": "Có", + "no": "Không" + }, + "nav": { + "history": "Lịch sử", + "account": "Tài khoản", + "logout": "Đăng xuất", + "login": "Đăng nhập", + "register": "Đăng ký", + "language": "Ngôn ngữ" + }, + "convert": { + "title": "Chuyển đổi", + "titleWithType": "Chuyển đổi .{fileType}", + "chooseFile": "Chọn tệp", + "orDragHere": "hoặc kéo vào đây", + "searchConversions": "Tìm kiếm chuyển đổi", + "convertTo": "Chuyển đổi sang", + "convertButton": "Chuyển đổi", + "uploading": "Đang tải lên...", + "processing": "Đang xử lý..." + }, + "results": { + "title": "Kết quả", + "convertedFileName": "Tên tệp đã chuyển đổi", + "status": "Trạng thái", + "actions": "Hành động", + "downloadAll": "Tất cả", + "downloadTar": "Tar", + "deleteJob": "Xóa", + "noFiles": "Chưa có tệp nào được chuyển đổi.", + "statusPending": "Đang chờ", + "statusCompleted": "Hoàn thành", + "statusFailed": "Thất bại" + }, + "history": { + "title": "Kết quả", + "time": "Thời gian", + "files": "Tệp", + "filesDone": "Tệp hoàn thành", + "status": "Trạng thái", + "actions": "Hành động", + "expandDetails": "Mở rộng chi tiết", + "detailedFileInfo": "Thông tin chi tiết tệp:", + "deleteSelected": "Xóa đã chọn", + "selectAll": "Chọn tất cả", + "confirmDelete": "Bạn có chắc muốn xóa {count} công việc? Hành động này không thể hoàn tác.", + "deleteSuccess": "Đã xóa thành công {deleted} công việc.", + "deleteFailed": "Không thể xóa {failed} công việc.", + "deleteError": "Đã xảy ra lỗi khi xóa công việc. Vui lòng thử lại." + }, + "auth": { + "email": "Email", + "password": "Mật khẩu", + "currentPassword": "Mật khẩu hiện tại", + "newPassword": "Mật khẩu (để trống nếu không thay đổi)", + "loginButton": "Đăng nhập", + "registerButton": "Đăng ký", + "updateButton": "Cập nhật", + "createAccount": "Tạo tài khoản", + "invalidCredentials": "Thông tin đăng nhập không hợp lệ.", + "emailInUse": "Email đã được sử dụng.", + "unauthorized": "Không được phép", + "cookiesRequired": "Cần bật cookie để sử dụng ứng dụng này.", + "noCookies": "Không có cookie xác thực, có thể trình duyệt của bạn đang chặn cookie." + }, + "setup": { + "welcome": "Chào mừng đến với ConvertX-CN!", + "createYourAccount": "Tạo tài khoản của bạn", + "reportIssues": "Báo cáo sự cố tại", + "github": "GitHub" + }, + "errors": { + "jobNotFound": "Không tìm thấy công việc.", + "fileNotFound": "Không tìm thấy tệp.", + "uploadFailed": "Tải lên thất bại.", + "conversionFailed": "Chuyển đổi thất bại.", + "serverError": "Lỗi máy chủ." + }, + "upload": { + "success": "Tải tệp lên thành công.", + "dragDrop": "Thả tệp vào đây" + }, + "file": { + "size": "{size} kB" + } +} diff --git a/src/locales/zu.json b/src/locales/zu.json new file mode 100644 index 0000000..a96181f --- /dev/null +++ b/src/locales/zu.json @@ -0,0 +1,106 @@ +{ + "common": { + "appName": "ConvertX-CN", + "poweredBy": "Iqhutshwa yi", + "version": "v{version}", + "loading": "Iyalayisha...", + "error": "Iphutha", + "success": "Impumelelo", + "confirm": "Qinisekisa", + "cancel": "Khansela", + "close": "Vala", + "save": "Londoloza", + "delete": "Susa", + "remove": "Susa", + "download": "Landa", + "upload": "Layisha", + "submit": "Thumela", + "back": "Emuva", + "next": "Okulandelayo", + "yes": "Yebo", + "no": "Cha" + }, + "nav": { + "history": "Umlando", + "account": "I-akhawunti", + "logout": "Phuma", + "login": "Ngena", + "register": "Bhalisa", + "language": "Ulimi" + }, + "convert": { + "title": "Guqula", + "titleWithType": "Guqula .{fileType}", + "chooseFile": "Khetha ifayela", + "orDragHere": "noma yihudulele lapha", + "searchConversions": "Sesha ukuguqulwa", + "convertTo": "Guqulela ku", + "convertButton": "Guqula", + "uploading": "Iyalayisha...", + "processing": "Iyacubungula..." + }, + "results": { + "title": "Imiphumela", + "convertedFileName": "Igama lefayela eliguquliwe", + "status": "Isimo", + "actions": "Izenzo", + "downloadAll": "Konke", + "downloadTar": "Tar", + "deleteJob": "Susa", + "noFiles": "Awakho amafayela aguquliwe okwamanje.", + "statusPending": "Kulindwe", + "statusCompleted": "Kuqediwe", + "statusFailed": "Kwehlulekile" + }, + "history": { + "title": "Imiphumela", + "time": "Isikhathi", + "files": "Amafayela", + "filesDone": "Amafayela aqediwe", + "status": "Isimo", + "actions": "Izenzo", + "expandDetails": "Nweba imininingwane", + "detailedFileInfo": "Imininingwane yefayela enemininingwane:", + "deleteSelected": "Susa okukhethiwe", + "selectAll": "Khetha konke", + "confirmDelete": "Uqinisekile ukuthi ufuna ukususa imisebenzi engu-{count}? Lesi senzo asinakubuyiselwa emuva.", + "deleteSuccess": "Kususiwe ngempumelelo imisebenzi engu-{deleted}.", + "deleteFailed": "Kwehlulekile ukususa imisebenzi engu-{failed}.", + "deleteError": "Kwenzeke iphutha ngenkathi kususa imisebenzi. Sicela uzame futhi." + }, + "auth": { + "email": "I-imeyili", + "password": "Iphasiwedi", + "currentPassword": "Iphasiwedi yamanje", + "newPassword": "Iphasiwedi (shiya kungenalutho uma ingashintshiwe)", + "loginButton": "Ngena", + "registerButton": "Bhalisa", + "updateButton": "Buyekeza", + "createAccount": "Dala i-akhawunti", + "invalidCredentials": "Imininingwane engavumelekile.", + "emailInUse": "I-imeyili isivele isetshenziswa.", + "unauthorized": "Akuvunyelwe", + "cookiesRequired": "Amakhukhi kufanele avunyelwe ukuze usebenzise lolu hlelo lokusebenza.", + "noCookies": "Awekho amakhukhi okuqinisekisa, mhlawumbe isiphequluli sakho sivimbela amakhukhi." + }, + "setup": { + "welcome": "Siyakwamukela ku-ConvertX-CN!", + "createYourAccount": "Dala i-akhawunti yakho", + "reportIssues": "Bika noma yiziphi izinkinga ku", + "github": "GitHub" + }, + "errors": { + "jobNotFound": "Umsebenzi awutholakali.", + "fileNotFound": "Ifayela alitholakali.", + "uploadFailed": "Ukulayisha kwehlulekile.", + "conversionFailed": "Ukuguqula kwehlulekile.", + "serverError": "Iphutha leseva." + }, + "upload": { + "success": "Amafayela alayishwe ngempumelelo.", + "dragDrop": "Lahla amafayela lapha" + }, + "file": { + "size": "{size} kB" + } +}