mirror of
https://github.com/snapotter-hq/SnapOtter.git
synced 2026-08-03 07:46:42 +02:00
3440 lines
124 KiB
TypeScript
3440 lines
124 KiB
TypeScript
import type { TranslationKeys } from "./en.js";
|
|
|
|
export const vi: TranslationKeys = {
|
|
common: {
|
|
upload: "Tải lên từ máy tính",
|
|
process: "Xử lý",
|
|
download: "Tải xuống",
|
|
cancel: "Hủy",
|
|
save: "Lưu",
|
|
delete: "Xóa",
|
|
settings: "Cài đặt",
|
|
search: "Tìm kiếm công cụ...",
|
|
dropFiles: "Kéo thả tệp vào đây hoặc nhấn nút tải lên",
|
|
loading: "Đang tải...",
|
|
error: "Đã xảy ra lỗi",
|
|
confirm: "Xác nhận",
|
|
close: "Đóng",
|
|
back: "Quay lại",
|
|
next: "Tiếp theo",
|
|
clear: "Xóa",
|
|
copy: "Sao chép",
|
|
copied: "Đã sao chép!",
|
|
noResults: "Không tìm thấy kết quả",
|
|
showLess: "Thu gọn",
|
|
showMore: "Hiển thị thêm {count}",
|
|
experimental: "Thử nghiệm",
|
|
enabled: "Đã bật",
|
|
disabled: "Đã tắt",
|
|
rename: "Đổi tên",
|
|
edit: "Chỉnh sửa",
|
|
actions: "Thao tác",
|
|
create: "Tạo mới",
|
|
or: "hoặc",
|
|
goHome: "Về trang chủ",
|
|
somethingWentWrong: "Đã xảy ra lỗi",
|
|
unexpectedError: "Đã xảy ra lỗi không mong muốn.",
|
|
retry: "Thử lại",
|
|
privacyPolicy: "Chính sách bảo mật",
|
|
pageNotFound: "Page not found",
|
|
pageNotFoundDescription: "The page you are looking for does not exist or has been moved.",
|
|
},
|
|
categories: {
|
|
essentials: "Cơ bản",
|
|
adjustments: "Điều chỉnh",
|
|
enhance: "Enhance & AI",
|
|
watermark: "Hình mờ & Lớp phủ",
|
|
layout: "Bố cục & Kết hợp",
|
|
utilities: "Tiện ích",
|
|
optimization: "Tối ưu hóa",
|
|
format: "Định dạng & Chuyển đổi",
|
|
"video-edit": "Video",
|
|
"video-convert": "Convert",
|
|
"video-effects": "Effects & Compose",
|
|
"video-subtitles": "Subtitles",
|
|
"video-metadata": "Metadata",
|
|
"audio-edit": "Edit",
|
|
"audio-convert": "Convert",
|
|
"audio-effects": "Effects & Compose",
|
|
"audio-metadata": "Metadata",
|
|
"pdf-organize": "Organize",
|
|
"pdf-edit": "Edit & Annotate",
|
|
"pdf-security": "Security",
|
|
"pdf-optimize": "Optimize",
|
|
"doc-convert": "Convert",
|
|
data: "Data Files",
|
|
archives: "Archives",
|
|
},
|
|
modalities: {
|
|
image: "Image",
|
|
video: "Video",
|
|
audio: "Audio",
|
|
documentsAndFiles: "Documents & Files",
|
|
},
|
|
tools: {
|
|
resize: {
|
|
name: "Thay đổi kích thước",
|
|
description: "Thay đổi kích thước theo pixel, phần trăm hoặc mẫu mạng xã hội",
|
|
},
|
|
crop: {
|
|
name: "Cắt ảnh",
|
|
description: "Cắt tự do, tỷ lệ khung hình có sẵn, cắt theo hình dạng",
|
|
},
|
|
rotate: {
|
|
name: "Xoay & Lật",
|
|
description: "Xoay, lật và chỉnh thẳng hình ảnh",
|
|
},
|
|
convert: {
|
|
name: "Chuyển đổi",
|
|
description: "Chuyển đổi giữa các định dạng ảnh",
|
|
},
|
|
compress: {
|
|
name: "Nén ảnh",
|
|
description: "Giảm dung lượng tệp theo chất lượng hoặc kích thước mục tiêu",
|
|
},
|
|
"optimize-for-web": {
|
|
name: "Tối ưu cho Web",
|
|
description:
|
|
"Tối ưu hình ảnh cho web với chuyển đổi định dạng, kiểm soát chất lượng và xem trước trực tiếp",
|
|
},
|
|
"strip-metadata": {
|
|
name: "Xóa siêu dữ liệu",
|
|
description: "Xóa EXIF, GPS và thông tin máy ảnh",
|
|
},
|
|
"edit-metadata": {
|
|
name: "Chỉnh sửa siêu dữ liệu",
|
|
description: "Chỉnh sửa EXIF, IPTC, XMP, GPS, từ khóa và ngày tháng",
|
|
},
|
|
"bulk-rename": {
|
|
name: "Đổi tên hàng loạt",
|
|
description: "Đổi tên nhiều tệp với các mẫu tên",
|
|
},
|
|
"image-to-pdf": {
|
|
name: "Ảnh sang PDF",
|
|
description: "Kết hợp nhiều ảnh thành tài liệu PDF",
|
|
},
|
|
"pdf-to-image": {
|
|
name: "PDF sang ảnh",
|
|
description: "Chuyển đổi các trang PDF thành hình ảnh",
|
|
},
|
|
favicon: {
|
|
name: "Tạo Favicon",
|
|
description: "Tạo tất cả kích thước Favicon và biểu tượng ứng dụng",
|
|
},
|
|
"adjust-colors": {
|
|
name: "Điều chỉnh màu sắc",
|
|
description:
|
|
"Độ sáng, độ tương phản, phơi sáng, độ bão hòa, nhiệt độ màu, độ nét và hiệu ứng",
|
|
},
|
|
sharpening: {
|
|
name: "Làm nét",
|
|
description: "Làm nét thích ứng, mặt nạ không sắc nét và làm nét cao tần với các mẫu",
|
|
},
|
|
"replace-color": {
|
|
name: "Thay thế & Đảo ngược màu",
|
|
description: "Thay thế màu cụ thể hoặc đảo ngược màu",
|
|
},
|
|
"color-blindness": {
|
|
name: "Mô phỏng mù màu",
|
|
description: "Mô phỏng cách hình ảnh hiển thị với các dạng khiếm thị màu khác nhau",
|
|
},
|
|
"remove-background": {
|
|
name: "Xóa nền",
|
|
description: "Xóa nền bằng AI",
|
|
},
|
|
upscale: {
|
|
name: "Phóng to ảnh",
|
|
description: "Nâng cấp độ phân giải bằng AI",
|
|
},
|
|
"erase-object": {
|
|
name: "Xóa đối tượng",
|
|
description: "Xóa các đối tượng không mong muốn bằng AI",
|
|
},
|
|
ocr: {
|
|
name: "OCR / Trích xuất văn bản",
|
|
description: "Trích xuất văn bản từ hình ảnh với độ chính xác cao nhờ AI",
|
|
},
|
|
"ocr-pdf": {
|
|
name: "OCR PDF",
|
|
description: "Trich xuat van ban tu tai lieu PDF bang OCR ho tro boi AI",
|
|
},
|
|
"blur-faces": {
|
|
name: "Làm mờ khuôn mặt / Thông tin nhạy cảm",
|
|
description: "Tự động phát hiện và làm mờ khuôn mặt cùng thông tin nhạy cảm",
|
|
},
|
|
"enhance-faces": {
|
|
name: "Nâng cao khuôn mặt",
|
|
description: "Phục hồi và nâng cao khuôn mặt bằng AI",
|
|
},
|
|
"smart-crop": {
|
|
name: "Cắt thông minh",
|
|
description: "Cắt thông minh theo chủ thể, khuôn mặt hoặc viền",
|
|
},
|
|
"image-enhancement": {
|
|
name: "Nâng cao hình ảnh",
|
|
description:
|
|
"Tự động cải thiện với hiệu chỉnh phơi sáng, độ tương phản, màu sắc và độ nét thông minh",
|
|
},
|
|
"noise-removal": {
|
|
name: "Khử nhiễu",
|
|
description: "Khử nhiễu và hạt bằng AI",
|
|
},
|
|
"red-eye-removal": {
|
|
name: "Xóa mắt đỏ",
|
|
description: "Phát hiện và sửa mắt đỏ bằng AI cho ảnh chụp có đèn flash",
|
|
},
|
|
"restore-photo": {
|
|
name: "Phục chế ảnh",
|
|
description: "Sửa vết xước, rách và hư hỏng trên ảnh cũ bằng AI",
|
|
},
|
|
"content-aware-resize": {
|
|
name: "Thay đổi kích thước thông minh",
|
|
description: "Thay đổi kích thước thông minh trong khi bảo toàn nội dung quan trọng",
|
|
},
|
|
"ai-canvas-expand": {
|
|
name: "Mở rộng khung vẽ AI",
|
|
description: "Mở rộng khung vẽ với tính năng tô AI",
|
|
},
|
|
colorize: {
|
|
name: "Tô màu AI",
|
|
description: "Chuyển ảnh đen trắng sang màu đầy đủ bằng mô hình học sâu AI",
|
|
},
|
|
"passport-photo": {
|
|
name: "Ảnh hộ chiếu",
|
|
description:
|
|
"Tạo ảnh hộ chiếu, thị thực và giấy tờ tùy thân đạt chuẩn với phát hiện khuôn mặt tự động",
|
|
},
|
|
"transcribe-audio": {
|
|
name: "Phien am thanh",
|
|
description: "Chuyen doi giong noi thanh van ban voi phien am bang AI",
|
|
},
|
|
"auto-subtitles": {
|
|
name: "Phu De Tu Dong",
|
|
description: "Tao tep phu de tu ban am thanh video",
|
|
},
|
|
"transparency-fixer": {
|
|
name: "Sửa trong suốt PNG",
|
|
description: "Sửa ảnh PNG giả trong suốt chỉ với một cú nhấp",
|
|
},
|
|
"background-replace": {
|
|
name: "Thay doi nen",
|
|
description: "Thay the nen hinh anh bang mau don sac",
|
|
},
|
|
"blur-background": {
|
|
name: "Lam mo nen",
|
|
description: "Lam mo nen trong khi giu cho chu the sac net",
|
|
},
|
|
"watermark-text": {
|
|
name: "Hình mờ văn bản",
|
|
description: "Thêm lớp phủ hình mờ văn bản",
|
|
},
|
|
"watermark-image": {
|
|
name: "Hình mờ hình ảnh",
|
|
description: "Phủ logo làm hình mờ",
|
|
},
|
|
"text-overlay": {
|
|
name: "Lớp phủ văn bản",
|
|
description: "Thêm văn bản được định dạng vào hình ảnh",
|
|
},
|
|
compose: {
|
|
name: "Ghép ảnh",
|
|
description: "Xếp lớp hình ảnh với vị trí và độ mờ",
|
|
},
|
|
"meme-generator": {
|
|
name: "Tạo Meme",
|
|
description:
|
|
"Tạo meme với các mẫu phổ biến hoặc ảnh của bạn. Kiểu chữ Impact cổ điển với phông chữ, màu sắc và vị trí tùy chỉnh.",
|
|
},
|
|
info: {
|
|
name: "Thông tin ảnh",
|
|
description: "Xem tất cả siêu dữ liệu và thuộc tính hình ảnh",
|
|
},
|
|
compare: {
|
|
name: "So sánh ảnh",
|
|
description: "So sánh hai hình ảnh cạnh nhau",
|
|
},
|
|
"find-duplicates": {
|
|
name: "Tìm ảnh trùng",
|
|
description: "Phát hiện ảnh trùng lặp và gần trùng lặp",
|
|
},
|
|
"color-palette": {
|
|
name: "Bảng màu",
|
|
description: "Trích xuất các màu chủ đạo từ hình ảnh",
|
|
},
|
|
"qr-generate": {
|
|
name: "Tạo mã QR",
|
|
description: "Tạo mã QR có kiểu dáng với màu sắc, hoa văn và logo tùy chỉnh",
|
|
},
|
|
"html-to-image": {
|
|
name: "HTML to Image",
|
|
description: "Capture webpages as high-quality images",
|
|
},
|
|
"barcode-read": {
|
|
name: "Đọc mã vạch",
|
|
description: "Quét hình ảnh để tìm mã QR, mã vạch và mã 2D",
|
|
},
|
|
collage: {
|
|
name: "Ảnh ghép / Lưới",
|
|
description: "Kết hợp hình ảnh thành ảnh ghép dạng lưới đẹp mắt với hơn 25 mẫu",
|
|
},
|
|
stitch: {
|
|
name: "Ghép nối / Kết hợp",
|
|
description: "Nối hình ảnh cạnh nhau, xếp chồng hoặc theo lưới",
|
|
},
|
|
split: {
|
|
name: "Tách ảnh",
|
|
description:
|
|
"Tách hình ảnh thành các ô lưới hoặc theo kích thước pixel với xem trước trực tiếp",
|
|
},
|
|
border: {
|
|
name: "Viền & Khung",
|
|
description: "Thêm viền, khoảng đệm, bo góc và bóng đổ với các mẫu một cú nhấp",
|
|
},
|
|
beautify: {
|
|
name: "Làm đẹp ảnh chụp màn hình",
|
|
description:
|
|
"Thêm nền chuyển sắc, khung thiết bị, bóng đổ và kích thước mạng xã hội cho ảnh chụp màn hình",
|
|
},
|
|
"circle-crop": {
|
|
name: "Circle Crop",
|
|
description: "Crop image to a centered circle with transparent corners",
|
|
},
|
|
duotone: {
|
|
name: "Duotone",
|
|
description: "Apply a two-color duotone effect with custom shadow and highlight colors",
|
|
},
|
|
"image-pad": {
|
|
name: "Image Pad",
|
|
description: "Pad image to a target aspect ratio with a solid color background",
|
|
},
|
|
pixelate: {
|
|
name: "Pixelate",
|
|
description: "Apply a pixelation effect to the full image or a specific region",
|
|
},
|
|
vignette: {
|
|
name: "Vignette",
|
|
description: "Add a vignette effect with adjustable strength and color",
|
|
},
|
|
"gif-webp": {
|
|
name: "GIF/WebP Converter",
|
|
description: "Convert animated GIF to WebP and vice versa, preserving all frames",
|
|
},
|
|
histogram: {
|
|
name: "Histogram",
|
|
description: "Generate an RGB histogram chart from an image",
|
|
},
|
|
"lqip-placeholder": {
|
|
name: "LQIP Placeholder",
|
|
description: "Generate a tiny low-quality image placeholder with base64 data URI",
|
|
},
|
|
"sprite-sheet": {
|
|
name: "Sprite Sheet",
|
|
description: "Combine multiple images into a single sprite sheet grid",
|
|
},
|
|
"svg-to-raster": {
|
|
name: "SVG sang ảnh raster",
|
|
description:
|
|
"Chuyển đổi SVG sang PNG, JPEG, WebP, AVIF, TIFF, GIF hoặc HEIF với tỷ lệ và DPI tùy chỉnh",
|
|
},
|
|
vectorize: {
|
|
name: "Ảnh sang SVG",
|
|
description: "Chuyển đổi hình ảnh sang đồ họa véc-tơ có thể thu phóng",
|
|
},
|
|
"gif-tools": {
|
|
name: "Công cụ GIF",
|
|
description:
|
|
"Thay đổi kích thước, tối ưu, thay đổi tốc độ, đảo ngược, trích xuất khung hình và xoay GIF động",
|
|
},
|
|
"image-to-base64": {
|
|
name: "Ảnh sang Base64",
|
|
description:
|
|
"Chuyển đổi hình ảnh sang chuỗi Base64 để nhúng trong HTML, CSS và nhiều hơn nữa",
|
|
},
|
|
"barcode-generate": {
|
|
name: "Barcode Generator",
|
|
description: "Generate barcodes in Code 128, EAN-13, UPC-A, Code 39, ITF-14, and Data Matrix",
|
|
},
|
|
"chart-maker": {
|
|
name: "Chart Maker",
|
|
description: "Create bar, line, or pie charts from CSV or JSON data",
|
|
},
|
|
"convert-video": {
|
|
name: "Convert Video",
|
|
description: "Convert videos between MP4, MOV, and WebM",
|
|
},
|
|
"compress-video": {
|
|
name: "Compress Video",
|
|
description: "Shrink video file size with quality control",
|
|
},
|
|
"trim-video": {
|
|
name: "Trim Video",
|
|
description: "Cut a clip out of a video",
|
|
},
|
|
"mute-video": {
|
|
name: "Mute Video",
|
|
description: "Remove the audio track from a video",
|
|
},
|
|
"video-to-gif": {
|
|
name: "Video to GIF",
|
|
description: "Turn a video clip into an animated GIF",
|
|
},
|
|
"resize-video": {
|
|
name: "Resize Video",
|
|
description: "Scale a video to a new resolution or preset size",
|
|
},
|
|
"crop-video": {
|
|
name: "Crop Video",
|
|
description: "Crop a region out of a video",
|
|
},
|
|
"rotate-video": {
|
|
name: "Rotate Video",
|
|
description: "Rotate or flip a video",
|
|
},
|
|
"change-fps": {
|
|
name: "Change FPS",
|
|
description: "Change the frame rate of a video",
|
|
},
|
|
"video-color": {
|
|
name: "Video Color",
|
|
description: "Adjust brightness, contrast, saturation, and gamma",
|
|
},
|
|
"video-speed": {
|
|
name: "Video Speed",
|
|
description: "Speed up or slow down a video",
|
|
},
|
|
"reverse-video": {
|
|
name: "Reverse Video",
|
|
description: "Play a video clip backwards",
|
|
},
|
|
"video-loudnorm": {
|
|
name: "Normalize Audio",
|
|
description: "Normalize video audio volume to broadcast standard",
|
|
},
|
|
"aspect-pad": {
|
|
name: "Aspect Pad",
|
|
description: "Add solid-color bars to fit a target aspect ratio",
|
|
},
|
|
"blur-pad": {
|
|
name: "Blur Pad",
|
|
description: "Fill bars with a blurred copy of the video",
|
|
},
|
|
"watermark-video": {
|
|
name: "Watermark Video",
|
|
description: "Burn a text watermark onto video frames",
|
|
},
|
|
"stabilize-video": {
|
|
name: "Stabilize Video",
|
|
description: "Reduce camera shake with two-pass stabilization",
|
|
},
|
|
"gif-to-video": {
|
|
name: "GIF to Video",
|
|
description: "Convert an animated GIF into an MP4 or WebM video",
|
|
},
|
|
"video-to-webp": {
|
|
name: "Video to WebP",
|
|
description: "Convert a video clip into an animated WebP image",
|
|
},
|
|
"video-to-frames": {
|
|
name: "Video to Frames",
|
|
description: "Extract frames from a video as a ZIP of images",
|
|
},
|
|
"merge-videos": {
|
|
name: "Merge Videos",
|
|
description: "Join multiple video clips into one file",
|
|
},
|
|
"replace-audio": {
|
|
name: "Replace Audio",
|
|
description: "Swap the audio track of a video with another file",
|
|
},
|
|
"burn-subtitles": {
|
|
name: "Burn Subtitles",
|
|
description: "Permanently render subtitles onto video frames",
|
|
},
|
|
"embed-subtitles": {
|
|
name: "Embed Subtitles",
|
|
description: "Mux a subtitle track into the video container",
|
|
},
|
|
"extract-subtitles": {
|
|
name: "Extract Subtitles",
|
|
description: "Pull the subtitle track out of a video as an SRT file",
|
|
},
|
|
"images-to-video": {
|
|
name: "Images to Video",
|
|
description: "Turn a set of images into a slideshow video",
|
|
},
|
|
"video-metadata": {
|
|
name: "Clean Video Metadata",
|
|
description: "Strip metadata from a video and report what was found",
|
|
},
|
|
"convert-audio": {
|
|
name: "Convert Audio",
|
|
description: "Convert audio between MP3, WAV, OGG, and more",
|
|
},
|
|
"trim-audio": {
|
|
name: "Trim Audio",
|
|
description: "Cut a section out of an audio file",
|
|
},
|
|
"extract-audio": {
|
|
name: "Extract Audio",
|
|
description: "Pull the audio track out of a video",
|
|
},
|
|
"volume-adjust": {
|
|
name: "Volume Adjust",
|
|
description: "Increase or decrease audio volume by a fixed gain",
|
|
},
|
|
"normalize-audio": {
|
|
name: "Normalize Audio",
|
|
description: "Even out loudness to broadcast standard levels",
|
|
},
|
|
"fade-audio": {
|
|
name: "Fade Audio",
|
|
description: "Add fade-in and fade-out effects to audio",
|
|
},
|
|
"reverse-audio": {
|
|
name: "Reverse Audio",
|
|
description: "Play audio backwards",
|
|
},
|
|
"audio-speed": {
|
|
name: "Audio Speed",
|
|
description: "Speed up or slow down audio playback",
|
|
},
|
|
"pitch-shift": {
|
|
name: "Pitch Shift",
|
|
description: "Raise or lower pitch by semitones without changing speed",
|
|
},
|
|
"audio-channels": {
|
|
name: "Audio Channels",
|
|
description: "Convert between mono, stereo, or swap left and right channels",
|
|
},
|
|
"silence-removal": {
|
|
name: "Silence Removal",
|
|
description: "Strip silent sections from audio",
|
|
},
|
|
"noise-reduction": {
|
|
name: "Noise Reduction",
|
|
description: "Reduce background noise with FFT-based denoising",
|
|
},
|
|
"merge-audio": {
|
|
name: "Merge Audio",
|
|
description: "Combine multiple audio files into one",
|
|
},
|
|
"split-audio": {
|
|
name: "Split Audio",
|
|
description: "Split audio by time, equal parts, or silence detection",
|
|
},
|
|
"ringtone-maker": {
|
|
name: "Ringtone Maker",
|
|
description: "Create a ringtone clip from any audio file",
|
|
},
|
|
"waveform-image": {
|
|
name: "Waveform Image",
|
|
description: "Generate a waveform visualization as a PNG image",
|
|
},
|
|
"audio-metadata": {
|
|
name: "Audio Metadata",
|
|
description: "View, edit, or strip audio tags (ID3)",
|
|
},
|
|
"merge-pdf": {
|
|
name: "Merge PDFs",
|
|
description: "Combine multiple PDFs into one",
|
|
},
|
|
"split-pdf": {
|
|
name: "Split PDF",
|
|
description: "Extract pages or split into parts",
|
|
},
|
|
"compress-pdf": {
|
|
name: "Compress PDF",
|
|
description: "Shrink PDF file size",
|
|
},
|
|
"rotate-pdf": {
|
|
name: "Rotate PDF",
|
|
description: "Rotate pages in a PDF",
|
|
},
|
|
"convert-document": {
|
|
name: "Convert Document",
|
|
description: "Convert between Word, OpenDocument, RTF, and plain text formats",
|
|
},
|
|
"convert-presentation": {
|
|
name: "Convert Presentation",
|
|
description: "Convert between PowerPoint and OpenDocument presentation formats",
|
|
},
|
|
"convert-spreadsheet": {
|
|
name: "Convert Spreadsheet",
|
|
description:
|
|
"Convert between Excel, OpenDocument, and CSV formats. Multi-sheet workbooks export the first sheet to CSV.",
|
|
},
|
|
"excel-to-pdf": {
|
|
name: "Excel to PDF",
|
|
description: "Convert spreadsheets to PDF. Wide sheets may paginate across multiple pages.",
|
|
},
|
|
"word-to-pdf": {
|
|
name: "Word to PDF",
|
|
description: "Convert Word documents to PDF",
|
|
},
|
|
"extract-pages": {
|
|
name: "Extract Pages",
|
|
description: "Pull selected pages into a new PDF",
|
|
},
|
|
"remove-pages": {
|
|
name: "Remove Pages",
|
|
description: "Delete specific pages from a PDF",
|
|
},
|
|
"organize-pdf": {
|
|
name: "Organize PDF",
|
|
description: "Reorder pages with an explicit page order",
|
|
},
|
|
"protect-pdf": {
|
|
name: "Protect PDF",
|
|
description: "Add password protection (AES-256 encryption)",
|
|
},
|
|
"unlock-pdf": {
|
|
name: "Unlock PDF",
|
|
description: "Remove password protection from a PDF",
|
|
},
|
|
"repair-pdf": {
|
|
name: "Repair PDF",
|
|
description: "Attempt to repair a damaged or corrupted PDF",
|
|
},
|
|
"linearize-pdf": {
|
|
name: "Web-Optimize PDF",
|
|
description: "Linearize a PDF for fast web viewing",
|
|
},
|
|
"grayscale-pdf": {
|
|
name: "Grayscale PDF",
|
|
description: "Convert all colors to grayscale",
|
|
},
|
|
"pdfa-convert": {
|
|
name: "PDF/A Convert",
|
|
description: "Convert to archival PDF/A-2",
|
|
},
|
|
"crop-pdf": {
|
|
name: "Crop PDF",
|
|
description: "Crop all pages with a uniform margin",
|
|
},
|
|
"nup-pdf": {
|
|
name: "N-up PDF",
|
|
description: "Arrange multiple pages per sheet",
|
|
},
|
|
"booklet-pdf": {
|
|
name: "Booklet PDF",
|
|
description: "Arrange pages for folding into a booklet",
|
|
},
|
|
"watermark-pdf": {
|
|
name: "Watermark PDF",
|
|
description: "Add a text watermark to every page",
|
|
},
|
|
"pdf-page-numbers": {
|
|
name: "PDF Page Numbers",
|
|
description: "Add page numbers to every page",
|
|
},
|
|
"flatten-pdf": {
|
|
name: "Flatten PDF",
|
|
description: "Bake forms and annotations into page content",
|
|
},
|
|
"redact-pdf": {
|
|
name: "Redact PDF",
|
|
description: "Permanently remove text occurrences (verified true redaction)",
|
|
},
|
|
"pdf-to-text": {
|
|
name: "PDF to Text",
|
|
description: "Extract plain text from a PDF",
|
|
},
|
|
"pdf-to-word": {
|
|
name: "PDF to Word",
|
|
description: "Best for text-based PDFs; scanned pages need OCR",
|
|
},
|
|
"pdf-metadata": {
|
|
name: "PDF Metadata",
|
|
description: "Read and write PDF document metadata",
|
|
},
|
|
"powerpoint-to-pdf": {
|
|
name: "PowerPoint to PDF",
|
|
description: "Convert presentations to PDF",
|
|
},
|
|
"html-to-pdf": {
|
|
name: "HTML to PDF",
|
|
description: "Convert an HTML file to PDF. Remote resources are disabled for privacy.",
|
|
},
|
|
"markdown-to-docx": {
|
|
name: "Markdown to Word",
|
|
description: "Convert a Markdown file to a Word document (DOCX)",
|
|
},
|
|
"markdown-to-html": {
|
|
name: "Markdown to HTML",
|
|
description:
|
|
"Convert a Markdown file to a standalone HTML page. Remote images in the source are left as-is in the output.",
|
|
},
|
|
"markdown-to-pdf": {
|
|
name: "Markdown to PDF",
|
|
description:
|
|
"Convert a Markdown file to a styled PDF. Remote resources are disabled for privacy.",
|
|
},
|
|
"epub-convert": {
|
|
name: "Convert EPUB",
|
|
description:
|
|
"Convert an EPUB to PDF, DOCX, HTML, or Markdown. Remote resources inside the book are not fetched.",
|
|
},
|
|
"to-epub": {
|
|
name: "Convert to EPUB",
|
|
description: "Convert Word, Markdown, HTML, or plain text files to EPUB",
|
|
},
|
|
"csv-excel": {
|
|
name: "CSV to Excel",
|
|
description: "Convert between CSV and Excel (XLSX), both directions",
|
|
},
|
|
"csv-json": {
|
|
name: "CSV to JSON",
|
|
description: "Convert between CSV and JSON, both directions",
|
|
},
|
|
"json-xml": {
|
|
name: "JSON to XML",
|
|
description: "Convert between JSON and XML, both directions",
|
|
},
|
|
"split-csv": {
|
|
name: "Split CSV",
|
|
description: "Split a CSV into smaller files by row count",
|
|
},
|
|
"merge-csvs": {
|
|
name: "Merge CSVs",
|
|
description: "Combine multiple CSV or TSV files with matching columns into one",
|
|
},
|
|
"yaml-json": {
|
|
name: "YAML / JSON",
|
|
description: "Convert between YAML and JSON, both directions",
|
|
},
|
|
"xml-to-csv": {
|
|
name: "XML to CSV",
|
|
description: "Extract repeating elements from XML into a CSV table",
|
|
},
|
|
"create-zip": {
|
|
name: "Create ZIP",
|
|
description: "Bundle multiple files into a single ZIP archive",
|
|
},
|
|
"extract-zip": {
|
|
name: "Extract ZIP",
|
|
description:
|
|
"Safely extract files from a ZIP archive with bomb protection. Single-file archives return the file directly.",
|
|
},
|
|
pipeline: {
|
|
name: "Trình xây dựng Pipeline",
|
|
description: "Kết nối nhiều công cụ thành một quy trình làm việc",
|
|
},
|
|
processing: { canceled: "Processing canceled" },
|
|
mediaPlayer: {
|
|
unsupported: "Your browser does not support this media format.",
|
|
},
|
|
documentView: {
|
|
loadFailed: "Failed to load document.",
|
|
previousPage: "Previous page",
|
|
nextPage: "Next page",
|
|
},
|
|
},
|
|
toolSettings: {
|
|
compress: {
|
|
compressionMode: "Chế độ nén",
|
|
targetSize: "Kích thước mục tiêu",
|
|
quality: "Chất lượng",
|
|
smallestFile: "Tệp nhỏ nhất",
|
|
bestQuality: "Chất lượng tốt nhất",
|
|
submit: "Nén",
|
|
submitBatch: "Nén ({count} tệp)",
|
|
progressLabel: "Đang nén",
|
|
original: "Gốc: {size} KB",
|
|
processed: "Đã xử lý: {size} KB",
|
|
saved: "Tiết kiệm: {percent}%",
|
|
},
|
|
resize: {
|
|
customSize: "Kích thước tùy chỉnh",
|
|
scale: "Tỷ lệ",
|
|
presets: "Mẫu có sẵn",
|
|
contentAware: "Nhận diện nội dung",
|
|
widthPx: "Chiều rộng (px)",
|
|
heightPx: "Chiều cao (px)",
|
|
fitMode: "Chế độ vừa vặn",
|
|
cropToFit: "Cắt vừa khung",
|
|
fitInside: "Vừa bên trong",
|
|
stretch: "Kéo giãn",
|
|
limitToOriginalSize: "Giới hạn kích thước gốc",
|
|
limitToOriginalSizeHint:
|
|
"Nếu hình ảnh của bạn đã nhỏ hơn kích thước mục tiêu, giữ nguyên thay vì phóng to",
|
|
scalePercent: "Tỷ lệ (%)",
|
|
resizeToSquare: "Đổi kích thước thành hình vuông",
|
|
protectFaces: "Bảo vệ khuôn mặt",
|
|
smoothing: "Làm mịn",
|
|
edgeSensitivity: "Độ nhạy cạnh",
|
|
submit: "Thay đổi kích thước",
|
|
submitBatch: "Thay đổi kích thước ({count} tệp)",
|
|
progressLabel: "Đang thay đổi kích thước",
|
|
},
|
|
crop: {
|
|
aspectRatio: "Tỷ lệ khung hình",
|
|
custom: "Tùy chỉnh",
|
|
positionAndSize: "Vị trí & Kích thước",
|
|
ruleOfThirds: "Quy tắc phần ba",
|
|
leftOffsetPx: "Lệch trái (px)",
|
|
topOffsetPx: "Lệch trên (px)",
|
|
submit: "Cắt",
|
|
submitBatch: "Cắt ({count} tệp)",
|
|
progressLabel: "Đang cắt",
|
|
},
|
|
rotate: {
|
|
rotate: "Xoay",
|
|
angle: "Góc",
|
|
straighten: "Chỉnh thẳng",
|
|
flip: "Lật",
|
|
horizontal: "Ngang",
|
|
vertical: "Dọc",
|
|
resetAllChanges: "Đặt lại tất cả thay đổi",
|
|
submit: "Áp dụng",
|
|
submitBatch: "Áp dụng ({count} tệp)",
|
|
progressLabel: "Đang áp dụng",
|
|
},
|
|
convert: {
|
|
targetFormat: "Định dạng đích",
|
|
sourceFormat: "Định dạng nguồn",
|
|
quality: "Chất lượng",
|
|
submit: "Chuyển đổi",
|
|
submitBatch: "Chuyển đổi ({count} tệp)",
|
|
progressLabel: "Đang chuyển đổi",
|
|
},
|
|
"optimize-for-web": {
|
|
outputFormat: "Định dạng đầu ra",
|
|
quality: "Chất lượng",
|
|
smallestFile: "Tệp nhỏ nhất",
|
|
bestQuality: "Chất lượng tốt nhất",
|
|
maxDimensions: "Kích thước tối đa",
|
|
maxWidth: "Chiều rộng tối đa",
|
|
maxHeight: "Chiều cao tối đa",
|
|
stripMetadata: "Xóa siêu dữ liệu",
|
|
sizeComparison: "So sánh kích thước",
|
|
optimized: "Đã tối ưu:",
|
|
smaller: "Nhỏ hơn {percent}%",
|
|
larger: "Lớn hơn {percent}%",
|
|
submit: "Xử lý & Tải xuống",
|
|
submitBatch: "Xử lý & Tải xuống ({count} tệp)",
|
|
progressLabel: "Đang tối ưu",
|
|
},
|
|
"strip-metadata": {
|
|
currentMetadata: "Siêu dữ liệu hiện tại",
|
|
readingMetadata: "Đang đọc siêu dữ liệu...",
|
|
noMetadataFound: "Không tìm thấy siêu dữ liệu trong hình ảnh này.",
|
|
removeAllMetadata: "Xóa tất cả siêu dữ liệu",
|
|
selectSpecific: "Hoặc chọn siêu dữ liệu cụ thể:",
|
|
stripExif: "Xóa EXIF (thông tin máy ảnh, ngày, phơi sáng)",
|
|
stripGps: "Xóa GPS (dữ liệu vị trí)",
|
|
stripIcc: "Xóa ICC (cấu hình màu)",
|
|
stripXmp: "Xóa XMP (siêu dữ liệu mở rộng)",
|
|
locationFound: "đã tìm thấy vị trí",
|
|
locationWarning:
|
|
"Hình ảnh này chứa vị trí chính xác của bạn. Hãy cân nhắc xóa dữ liệu GPS trước khi chia sẻ.",
|
|
metadataSections: "Đã tìm thấy {count} phần siêu dữ liệu",
|
|
metadataSectionsPlural: "Đã tìm thấy {count} phần siêu dữ liệu",
|
|
metadataRemoved: "Đã xóa siêu dữ liệu: {size} KB",
|
|
submit: "Xóa siêu dữ liệu",
|
|
progressLabel: "Đang xóa siêu dữ liệu",
|
|
},
|
|
"edit-metadata": {
|
|
readingMetadata: "Đang đọc siêu dữ liệu...",
|
|
couldNotReadMetadata: "Không thể đọc siêu dữ liệu - các trường sẽ bắt đầu trống.",
|
|
basicInfo: "Thông tin cơ bản",
|
|
description: "Mô tả",
|
|
artist: "Tác giả",
|
|
copyright: "Bản quyền",
|
|
software: "Phần mềm",
|
|
iptc: "IPTC",
|
|
title: "Tiêu đề",
|
|
headline: "Đầu đề",
|
|
city: "Thành phố",
|
|
stateProvince: "Tỉnh/Thành phố",
|
|
country: "Quốc gia",
|
|
dateAndTime: "Ngày & Giờ",
|
|
editDates: "Chỉnh sửa ngày",
|
|
shiftAllDates: "Dịch chuyển tất cả ngày",
|
|
dateModified: "Ngày sửa đổi",
|
|
dateTaken: "Ngày chụp",
|
|
shiftHint: "Dịch chuyển tất cả trường ngày theo khoảng lệch (hữu ích cho hiệu chỉnh múi giờ)",
|
|
direction: "Hướng",
|
|
forward: "+ Tiến",
|
|
backward: "- Lùi",
|
|
hoursMinutes: "Giờ:Phút",
|
|
locationGps: "Vị trí (GPS)",
|
|
locationDataFound: "Đã tìm thấy dữ liệu vị trí",
|
|
noGpsData: "Không có dữ liệu GPS. Thêm tọa độ bên dưới.",
|
|
latitude: "Vĩ độ",
|
|
longitude: "Kinh độ",
|
|
altitudeMeters: "Độ cao (mét)",
|
|
removeAllGpsData: "Xóa tất cả dữ liệu GPS",
|
|
keywords: "Từ khóa",
|
|
addKeywordPlaceholder: "Thêm từ khóa và nhấn Enter",
|
|
addToExisting: "Thêm vào hiện có",
|
|
replaceAll: "Thay thế tất cả",
|
|
allMetadata: "Tất cả siêu dữ liệu",
|
|
templates: "Mẫu",
|
|
templateNamePlaceholder: "Tên mẫu",
|
|
uploadPrompt: "Tải lên hình ảnh để chỉnh sửa siêu dữ liệu.",
|
|
changes: "{count} thay đổi:",
|
|
modified: "{count} đã sửa đổi",
|
|
removed: "{count} đã xóa",
|
|
gpsCleared: "Đã xóa GPS",
|
|
gpsAdded: "Đã thêm GPS",
|
|
datesShifted: "đã dịch chuyển ngày",
|
|
submit: "Áp dụng siêu dữ liệu",
|
|
progressLabel: "Đang ghi siêu dữ liệu",
|
|
},
|
|
"bulk-rename": {
|
|
pattern: "Mẫu",
|
|
patternHint: "Biến: {{index}}, {{padded}}, {{original}}",
|
|
startIndex: "Chỉ số bắt đầu",
|
|
preview: "Xem trước",
|
|
andMore: "... và {count} khác",
|
|
renaming: "Đang đổi tên...",
|
|
submit: "Đổi tên {count} tệp",
|
|
zipDownloaded: "Đã tải xuống tệp ZIP thành công",
|
|
},
|
|
"image-to-pdf": {
|
|
imageCount: "{count} hình ảnh sẽ được chuyển đổi thành {mode}",
|
|
imageCountPlural: "{count} hình ảnh sẽ được chuyển đổi thành {mode}",
|
|
singlePdfMode: "một tệp PDF duy nhất, mỗi ảnh một trang",
|
|
separatePdfMode: "các tệp PDF riêng lẻ, mỗi ảnh một tệp",
|
|
combineAllImages: "Kết hợp tất cả ảnh vào một PDF",
|
|
pageSize: "Khổ giấy",
|
|
orientation: "Hướng",
|
|
portrait: "Dọc",
|
|
landscape: "Ngang",
|
|
margin: "Lề",
|
|
targetSizeLabel: "Kích thước tệp mục tiêu (tùy chọn)",
|
|
targetSizePlaceholder: "ví dụ: 2",
|
|
targetSizeHint: "Để trống để có chất lượng tối đa",
|
|
targetSizeMet: "Đã đạt mục tiêu",
|
|
targetSizeNotMet: "Không thể đạt mục tiêu. Tệp đã nén ở chất lượng tối thiểu.",
|
|
targetSizeTooSmall: "Kích thước mục tiêu phải ít nhất 50KB",
|
|
jpegQualityLabel: "Chất lượng JPEG đã sử dụng",
|
|
noImage: "Không có ảnh",
|
|
submitCollate: "Tạo PDF ({count} trang)",
|
|
submitSeparate: "Tạo {count} PDF",
|
|
downloadPdf: "Tải xuống PDF",
|
|
downloadZip: "Tải xuống ZIP",
|
|
progressLabel: "Đang tạo PDF",
|
|
uploadingImages: "Đang tải lên hình ảnh...",
|
|
processingPages: "Đang xử lý {count} trang...",
|
|
},
|
|
"pdf-to-image": {
|
|
dropPdf: "Kéo thả PDF vào đây hoặc nhấp để chọn",
|
|
readingPdf: "Đang đọc PDF...",
|
|
pageCount: "{count} trang",
|
|
pageCountPlural: "{count} trang",
|
|
outputFormat: "Định dạng đầu ra",
|
|
quality: "Chất lượng",
|
|
resolutionDpi: "Độ phân giải (DPI)",
|
|
dpiScreen: "Màn hình",
|
|
dpiStandard: "Tiêu chuẩn",
|
|
dpiPrint: "In ấn",
|
|
dpiHighQuality: "Chất lượng cao",
|
|
colorMode: "Chế độ màu",
|
|
colorModeColor: "Màu",
|
|
colorModeGrayscale: "Xám",
|
|
colorModeBw: "Đen trắng",
|
|
pages: "Trang",
|
|
allPages: "Tất cả trang",
|
|
pagesHint: "ví dụ: 1-3, 5, 8-10 (tài liệu có {count} trang)",
|
|
converting: "Đang chuyển đổi...",
|
|
submit: "Chuyển đổi {count} trang",
|
|
submitPlural: "Chuyển đổi {count} trang",
|
|
downloadAllZip: "Tải tất cả (ZIP)",
|
|
},
|
|
favicon: {
|
|
uploadHint:
|
|
"Tải lên hình ảnh vuông (khuyến nghị 512x512 trở lên) để tạo tất cả kích thước Favicon và biểu tượng ứng dụng.",
|
|
multipleHint: "Mỗi hình ảnh trong số {count} ảnh sẽ có thư mục riêng trong tệp ZIP.",
|
|
generatedSizes: "Kích thước được tạo (mỗi ảnh)",
|
|
plusManifest: "+ manifest.json + đoạn mã HTML",
|
|
submit: "Tạo Favicon ({count} ảnh)",
|
|
submitPlural: "Tạo Favicon ({count} ảnh)",
|
|
downloadZip: "Tải xuống Favicon ZIP",
|
|
progressLabel: "Đang tạo Favicon",
|
|
},
|
|
"adjust-colors": {
|
|
light: "Ánh sáng",
|
|
brightness: "Độ sáng",
|
|
contrast: "Độ tương phản",
|
|
exposure: "Phơi sáng",
|
|
color: "Màu sắc",
|
|
saturation: "Độ bão hòa",
|
|
temperature: "Nhiệt độ màu",
|
|
temperatureHint: "lạnh / ấm",
|
|
tint: "Sắc thái",
|
|
tintHint: "xanh lá / hồng tím",
|
|
hue: "Sắc độ",
|
|
detail: "Chi tiết",
|
|
sharpness: "Độ nét",
|
|
effects: "Hiệu ứng",
|
|
none: "không",
|
|
grayscale: "xám",
|
|
sepia: "nâu đỏ",
|
|
invert: "đảo ngược",
|
|
colorChannels: "Kênh màu",
|
|
channelModified: "đã sửa đổi",
|
|
red: "Đỏ",
|
|
green: "Xanh lá",
|
|
blue: "Xanh dương",
|
|
resetAll: "Đặt lại tất cả",
|
|
submit: "Áp dụng",
|
|
submitBatch: "Áp dụng ({count} tệp)",
|
|
progressLabel: "Đang điều chỉnh màu sắc",
|
|
},
|
|
sharpening: {
|
|
method: "Phương pháp",
|
|
adaptive: "Thích ứng",
|
|
unsharpMask: "Mặt nạ không sắc nét",
|
|
highPass: "Cao tần",
|
|
presets: "Mẫu có sẵn",
|
|
textureAmount: "Mức độ kết cấu",
|
|
amount: "Mức độ",
|
|
strength: "Cường độ",
|
|
noiseReduction: "Khử nhiễu",
|
|
off: "tắt",
|
|
lightDenoise: "nhẹ",
|
|
mediumDenoise: "vừa",
|
|
strongDenoise: "mạnh",
|
|
advancedControls: "Điều khiển nâng cao",
|
|
radius: "Bán kính",
|
|
flatProtection: "Bảo vệ vùng phẳng",
|
|
detailThreshold: "Ngưỡng chi tiết",
|
|
haloLimitLight: "Giới hạn quầng sáng (Sáng)",
|
|
haloLimitDark: "Giới hạn quầng sáng (Tối)",
|
|
threshold: "Ngưỡng",
|
|
kernelSize: "Kích thước nhân",
|
|
submit: "Làm nét",
|
|
submitBatch: "Làm nét ({count} tệp)",
|
|
progressLabel: "Đang làm nét",
|
|
},
|
|
"replace-color": {
|
|
sourceColor: "Màu nguồn (cần thay thế)",
|
|
targetColor: "Màu đích (thay thế bằng)",
|
|
makeTransparent: "Làm trong suốt thay thế",
|
|
tolerance: "Dung sai",
|
|
exactMatch: "Khớp chính xác",
|
|
wideRange: "Phạm vi rộng",
|
|
submit: "Thay thế màu",
|
|
submitBatch: "Thay thế màu ({count} tệp)",
|
|
progressLabel: "Đang thay thế màu",
|
|
},
|
|
"color-blindness": {
|
|
simulationType: "Loại mô phỏng",
|
|
redGreen: "Đỏ-Xanh lá",
|
|
blueYellow: "Xanh dương-Vàng",
|
|
monochromatic: "Đơn sắc",
|
|
submit: "Mô phỏng",
|
|
submitBatch: "Mô phỏng ({count} tệp)",
|
|
progressLabel: "Đang mô phỏng mù màu",
|
|
},
|
|
"remove-background": {
|
|
subject: "Chủ thể",
|
|
people: "Con người",
|
|
products: "Sản phẩm",
|
|
general: "Chung",
|
|
passportIdPhoto: "Ảnh hộ chiếu / Giấy tờ",
|
|
quality: "Chất lượng",
|
|
fast: "Nhanh",
|
|
hd: "HD",
|
|
max: "Tối đa",
|
|
ultra: "Siêu nét",
|
|
background: "Nền",
|
|
transparent: "Trong suốt",
|
|
bgColor: "Màu nền",
|
|
gradient: "Chuyển sắc",
|
|
image: "Hình ảnh",
|
|
gradientDirection: "Hướng chuyển sắc",
|
|
chooseBackgroundImage: "Chọn ảnh nền",
|
|
effectsSection: "Hiệu ứng",
|
|
effectsActive: "đang hoạt động",
|
|
blurBackground: "Làm mờ nền",
|
|
intensity: "Cường độ",
|
|
addShadow: "Thêm bóng đổ",
|
|
opacity: "Độ mờ",
|
|
outputFormat: "Output Format",
|
|
edgeSmoothing: "Edge Smoothing",
|
|
edgeSmoothingOff: "Off",
|
|
edgeSmoothingLight: "Light",
|
|
edgeSmoothingMedium: "Medium",
|
|
edgeSmoothingStrong: "Strong",
|
|
colorDecontamination: "Color Decontamination",
|
|
rendering: "Đang kết xuất...",
|
|
submit: "Xóa nền",
|
|
submitBatch: "Xóa nền ({count} tệp)",
|
|
progressLabel: "Đang xóa nền",
|
|
},
|
|
upscale: {
|
|
scaleFactor: "Hệ số phóng đại",
|
|
quality: "Chất lượng",
|
|
enhanceFaces: "Nâng cao khuôn mặt",
|
|
noiseReduction: "Khử nhiễu",
|
|
noiseReductionHint:
|
|
"Làm mịn nhiễu và hạt. Giá trị cao hơn khử nhiễu nhiều hơn nhưng có thể làm mờ chi tiết.",
|
|
outputFormat: "Định dạng đầu ra",
|
|
submit: "Phóng to {scale}x",
|
|
submitBatch: "Phóng to {scale}x ({count} tệp)",
|
|
progressLabel: "Đang phóng to ảnh",
|
|
progressLabelBatch: "Đang phóng to {count} ảnh",
|
|
},
|
|
"erase-object": {
|
|
brushSize: "Kích thước cọ",
|
|
fine: "Mảnh",
|
|
wide: "Rộng",
|
|
undo: "Hoàn tác",
|
|
clear: "Xóa",
|
|
outputFormat: "Định dạng đầu ra",
|
|
quality: "Chất lượng",
|
|
paintHint: "Tô lên các đối tượng bạn muốn xóa. Nhấn Ctrl+Z để hoàn tác.",
|
|
submit: "Xóa đối tượng",
|
|
submitBatch: "Xóa tất cả ({count})",
|
|
progressLabel: "Đang xóa đối tượng",
|
|
},
|
|
ocr: {
|
|
quality: "Chất lượng",
|
|
enhanceBeforeScanning: "Nâng cao trước khi quét",
|
|
enhanceHint:
|
|
"Tự động chỉnh xoay, tăng độ tương phản, khử nhiễu và phóng to ảnh trước khi quét để có độ chính xác tốt hơn.",
|
|
language: "Ngôn ngữ",
|
|
autoDetect: "Tự động nhận diện",
|
|
extractedText: "Văn bản trích xuất",
|
|
noTextDetected: "Không phát hiện văn bản trong hình ảnh này",
|
|
characters: "{count} ký tự",
|
|
submit: "Trích xuất văn bản",
|
|
submitBatch: "Trích xuất văn bản ({count} tệp)",
|
|
progressLabel: "Đang trích xuất văn bản",
|
|
},
|
|
"ocr-pdf": {
|
|
quality: "Chat luong",
|
|
language: "Ngon ngu",
|
|
autoDetect: "Tu dong nhan dien",
|
|
pages: "Trang",
|
|
pagesPlaceholder: "all, 1-3, 5",
|
|
pagesHint: "Nhap so trang hoac pham vi (vd. 1-3, 5, 8-10). Toi da 50 trang.",
|
|
submit: "Trich xuat van ban",
|
|
submitBatch: "Trich xuat van ban ({count} tep)",
|
|
progressLabel: "Dang trich xuat van ban tu PDF",
|
|
},
|
|
"blur-faces": {
|
|
blurRadius: "Bán kính làm mờ",
|
|
blurLight: "Nhẹ",
|
|
blurHeavy: "Mạnh",
|
|
detectionSensitivity: "Độ nhạy phát hiện",
|
|
moreFaces: "Nhiều khuôn mặt hơn",
|
|
fewerFaces: "Ít khuôn mặt hơn",
|
|
submit: "Làm mờ khuôn mặt",
|
|
progressLabel: "Đang làm mờ khuôn mặt",
|
|
},
|
|
"enhance-faces": {
|
|
quality: "Chất lượng",
|
|
enhancementStrength: "Cường độ nâng cao",
|
|
onlyCenterFace: "Chỉ khuôn mặt ở giữa",
|
|
detectionSensitivity: "Độ nhạy phát hiện",
|
|
submit: "Nâng cao khuôn mặt",
|
|
submitBatch: "Nâng cao khuôn mặt ({count} tệp)",
|
|
progressLabel: "Đang nâng cao khuôn mặt",
|
|
},
|
|
"smart-crop": {
|
|
subjectFocus: "Lấy nét chủ thể",
|
|
faceFocus: "Lấy nét khuôn mặt",
|
|
autoTrim: "Tự động cắt viền",
|
|
customSize: "Kích thước tùy chỉnh",
|
|
socialPresets: "Mẫu mạng xã hội",
|
|
detectionStrategy: "Chiến lược phát hiện",
|
|
detectionStrategyHint:
|
|
"Sự chú ý tìm vùng nổi bật nhất. Entropy tìm vùng có nhiều chi tiết và thông tin nhất.",
|
|
attention: "Sự chú ý",
|
|
entropy: "Entropy",
|
|
padding: "Khoảng đệm",
|
|
paddingHint: "Khoảng trống thêm xung quanh vùng lấy nét",
|
|
outputQuality: "Chất lượng đầu ra",
|
|
outputQualityHint: "Cho đầu ra JPEG và WebP. PNG luôn không mất dữ liệu.",
|
|
subjectDescription:
|
|
"Phát hiện vùng thú vị nhất bằng phân tích nổi bật và cắt theo kích thước mục tiêu.",
|
|
framing: "Đóng khung",
|
|
facePadding: "Khoảng đệm khuôn mặt",
|
|
facePaddingHint: "Khoảng trống thêm xung quanh khuôn mặt phát hiện được",
|
|
fewerFalsePositives: "Ít phát hiện sai hơn",
|
|
faceDescription:
|
|
"Sử dụng AI phát hiện khuôn mặt để giữ khuôn mặt được đóng khung đúng. Chuyển sang Lấy nét chủ thể nếu không phát hiện khuôn mặt.",
|
|
trimTolerance: "Dung sai",
|
|
trimDescription:
|
|
"Mức độ khác biệt của pixel viền so với màu cạnh mà vẫn bị cắt. Cao hơn = cắt mạnh hơn.",
|
|
padToSquare: "Đệm thành hình vuông",
|
|
targetSizePx: "Kích thước mục tiêu (px)",
|
|
padColor: "Màu đệm",
|
|
trimHint:
|
|
'Xóa viền đồng màu xung quanh chủ thể. Bật "Đệm thành hình vuông" cho ảnh sẵn sàng thương mại điện tử.',
|
|
submitSubject: "Cắt thông minh",
|
|
submitFace: "Cắt khuôn mặt",
|
|
submitTrim: "Cắt viền",
|
|
},
|
|
imageEnhancement: {
|
|
enhancementMode: "Chế độ nâng cao",
|
|
auto: "Tự động",
|
|
portrait: "Chân dung",
|
|
landscape: "Phong cảnh",
|
|
lowLight: "Thiếu sáng",
|
|
food: "Ẩm thực",
|
|
document: "Tài liệu",
|
|
intensity: "Cường độ",
|
|
deepEnhance: "Nâng cao sâu (AI)",
|
|
deepEnhanceDescription: "Khử nhiễu và hiện tượng lỗi bằng AI",
|
|
deepEnhanceRequires: "Yêu cầu gói Phóng to & Nâng cao",
|
|
analyzingImage: "Đang phân tích hình ảnh...",
|
|
detectedIssues: "Vấn đề phát hiện được",
|
|
imageLooksGood: "Hình ảnh trông tốt. Tinh chỉnh bằng thanh trượt cường độ.",
|
|
issueUnderexposed: "Thiếu sáng",
|
|
issueOverexposed: "Quá sáng",
|
|
issueLowContrast: "Tương phản phẳng",
|
|
issueColorCast: "Sai lệch màu",
|
|
issueDesaturated: "Nhạt màu",
|
|
issueSoftFocus: "Mờ nét",
|
|
issueNoisy: "Nhiễu",
|
|
submit: "Nâng cao",
|
|
submitDeep: "Nâng cao sâu",
|
|
submitBatch: "Nâng cao ({count} tệp)",
|
|
submitDeepBatch: "Nâng cao sâu ({count} tệp)",
|
|
progressLabel: "Đang nâng cao hình ảnh",
|
|
progressLabelBatch: "Đang nâng cao {count} hình ảnh",
|
|
},
|
|
"noise-removal": {
|
|
denoisingTier: "Mức khử nhiễu",
|
|
quick: "Nhanh",
|
|
balanced: "Cân bằng",
|
|
quality: "Chất lượng",
|
|
maximum: "Tối đa",
|
|
quickDesc: "Nhanh, nhẹ",
|
|
balancedDesc: "Chất lượng tốt, tốc độ vừa phải",
|
|
qualityDesc: "AI, chậm hơn",
|
|
maximumDesc: "Mô hình AI tốt nhất, chậm nhất",
|
|
strength: "Cường độ",
|
|
subtle: "Nhẹ nhàng",
|
|
aggressive: "Mạnh mẽ",
|
|
detailPreservation: "Bảo toàn chi tiết",
|
|
smooth: "Mịn",
|
|
sharp: "Nét",
|
|
colorNoise: "Nhiễu màu",
|
|
heavy: "Nặng",
|
|
outputFormat: "Định dạng đầu ra",
|
|
gifAiWarning:
|
|
"Khử nhiễu AI cho tệp GIF chỉ xử lý khung hình đầu tiên. Với GIF động, hãy sử dụng mức Nhanh hoặc Cân bằng.",
|
|
submit: "Khử nhiễu",
|
|
submitBatch: "Khử nhiễu ({count} tệp)",
|
|
progressLabel: "Đang khử nhiễu",
|
|
progressLabelBatch: "Đang khử nhiễu {count} ảnh",
|
|
},
|
|
"red-eye-removal": {
|
|
sensitivity: "Độ nhạy",
|
|
strict: "Nghiêm ngặt",
|
|
aggressive: "Mạnh mẽ",
|
|
correctionStrength: "Cường độ sửa chữa",
|
|
subtle: "Nhẹ nhàng",
|
|
dark: "Đậm",
|
|
outputFormat: "Định dạng đầu ra",
|
|
quality: "Chất lượng",
|
|
submit: "Sửa mắt đỏ",
|
|
submitBatch: "Sửa mắt đỏ ({count} tệp)",
|
|
progressLabel: "Đang sửa mắt đỏ",
|
|
progressLabelBatch: "Đang sửa mắt đỏ {count} ảnh",
|
|
},
|
|
"restore-photo": {
|
|
scratchRemoval: "Xóa vết xước",
|
|
scratchRemovalDesc: "Phát hiện và sửa chữa vết xước, rách, vết bẩn",
|
|
faceEnhancement: "Nâng cao khuôn mặt",
|
|
faceEnhancementDesc: "Phục hồi khuôn mặt bị xuống cấp bằng CodeFormer AI",
|
|
faceFidelity: "Độ trung thực khuôn mặt",
|
|
enhanced: "Nâng cao",
|
|
faithful: "Trung thực",
|
|
noiseReduction: "Khử nhiễu",
|
|
noiseReductionDesc: "Khử hạt và nhiễu từ ảnh cũ",
|
|
denoiseStrength: "Cường độ khử nhiễu",
|
|
autoColorize: "Tự động tô màu",
|
|
autoColorizeDesc: "Thêm màu cho ảnh đen trắng bằng DDColor AI",
|
|
colorizeStrength: "Cường độ tô màu",
|
|
vivid: "Rực rỡ",
|
|
submit: "Phục chế ảnh",
|
|
submitBatch: "Phục chế ảnh ({count})",
|
|
progressLabel: "Đang phục chế ảnh",
|
|
progressLabelBatch: "Đang phục chế {count} ảnh",
|
|
},
|
|
"content-aware-resize": {
|
|
widthPx: "Chiều rộng (px)",
|
|
heightPx: "Chiều cao (px)",
|
|
resizeToSquare: "Đổi kích thước thành hình vuông",
|
|
protectFaces: "Bảo vệ khuôn mặt",
|
|
protectFacesHint:
|
|
"Phát hiện và bảo vệ vùng khuôn mặt khỏi bị xóa đường nối bằng phát hiện khuôn mặt",
|
|
smoothing: "Làm mịn",
|
|
edgeSensitivity: "Độ nhạy cạnh",
|
|
submit: "Thay đổi kích thước",
|
|
submitBatch: "Thay đổi kích thước ({count} tệp)",
|
|
progressLabel: "Đang thay đổi kích thước thông minh",
|
|
},
|
|
"ai-canvas-expand": {
|
|
quality: "Chất lượng",
|
|
fast: "Nhanh",
|
|
balanced: "Cân bằng",
|
|
highQuality: "Chất lượng cao",
|
|
fastDesc: "Xem trước nhanh, ít lượt AI",
|
|
balancedDesc: "Chất lượng tốt, tốc độ vừa phải",
|
|
highQualityDesc: "Kết quả tốt nhất, chậm hơn",
|
|
extendToAspectRatio: "Mở rộng theo tỷ lệ",
|
|
extendByPixels: "Mở rộng thêm (pixel)",
|
|
top: "Trên",
|
|
right: "Phải",
|
|
bottom: "Dưới",
|
|
left: "Trái",
|
|
newSize: "Kích thước mới: {width} x {height}",
|
|
submit: "Mở rộng khung vẽ",
|
|
submitBatch: "Mở rộng ({count} tệp)",
|
|
progressLabel: "Đang mở rộng khung vẽ",
|
|
},
|
|
colorize: {
|
|
aiModel: "Mô hình AI",
|
|
fast: "Nhanh",
|
|
fastDesc: "Kết quả nhanh",
|
|
balanced: "Cân bằng",
|
|
balancedDesc: "Tốt nhất hiện có",
|
|
best: "Tốt nhất",
|
|
bestDesc: "Chất lượng cao nhất",
|
|
colorIntensity: "Cường độ màu",
|
|
grayscaleLabel: "Xám",
|
|
subtleLabel: "Nhẹ nhàng",
|
|
naturalLabel: "Tự nhiên",
|
|
vividLabel: "Rực rỡ",
|
|
intensityHint: "Giá trị thấp tạo màu trầm hơn, kiểu hoài cổ.",
|
|
strength: "Cường độ tô màu",
|
|
submit: "Tô màu",
|
|
submitBatch: "Tô màu ({count} tệp)",
|
|
progressLabel: "Đang tô màu",
|
|
progressLabelBatch: "Đang tô màu {count} ảnh",
|
|
},
|
|
"passport-photo": {
|
|
country: "Quốc gia",
|
|
searchCountries: "Tìm kiếm quốc gia...",
|
|
noCountriesFound: "Không tìm thấy quốc gia",
|
|
customDimensions: "Kích thước tùy chỉnh",
|
|
documentType: "Loại giấy tờ",
|
|
dimensionsMm: "Kích thước (mm)",
|
|
dpi: "DPI",
|
|
pixelsPerInch: "pixel trên inch",
|
|
backgroundColor: "Màu nền",
|
|
maxFileSize: "Kích thước tệp tối đa",
|
|
noLimit: "Không giới hạn",
|
|
customKb: "Tùy chỉnh KB...",
|
|
uploadPortrait: "Tải lên ảnh chân dung",
|
|
uploadHint: "Kéo thả hoặc tải lên hình ảnh ở bảng bên trái để xem trước ảnh hộ chiếu",
|
|
analyzingPhoto: "Đang phân tích ảnh",
|
|
detectingLandmarks: "Đang phát hiện các điểm mốc khuôn mặt và xóa nền...",
|
|
generatePassportPhoto: "Tạo ảnh hộ chiếu",
|
|
generating: "Đang tạo...",
|
|
downloadPhoto: "Tải ảnh xuống",
|
|
faceCentered: "Khuôn mặt ở giữa",
|
|
headLevel: "Đầu thẳng",
|
|
lookingStraight: "Nhìn thẳng",
|
|
faceSize: "Kích thước khuôn mặt",
|
|
whatYouSee: "Những gì bạn thấy là những gì bạn tải xuống",
|
|
dragToAdjust: "Kéo để điều chỉnh",
|
|
scrollToZoom: "Cuộn để thu phóng",
|
|
photoGenerated: "Ảnh đã được tạo. Tải xuống từ bảng bên trái.",
|
|
},
|
|
"transcribe-audio": {
|
|
language: "Ngon ngu",
|
|
autoDetect: "Tu dong phat hien",
|
|
outputFormat: "Dinh dang dau ra",
|
|
plainText: "Van ban thuan",
|
|
submit: "Phien am",
|
|
submitBatch: "Phien am ({count} tep)",
|
|
progressLabel: "Dang phien am",
|
|
},
|
|
"auto-subtitles": {
|
|
language: "Ngon ngu",
|
|
autoDetect: "Tu dong phat hien",
|
|
format: "Dinh dang phu de",
|
|
submit: "Tao phu de",
|
|
submitBatch: "Tao phu de ({count} tep)",
|
|
progressLabel: "Dang tao phu de",
|
|
},
|
|
"transparency-fixer": {
|
|
description: "Tải lên PNG có nền giả trong suốt và chúng tôi sẽ sửa chỉ với một cú nhấp.",
|
|
removeWatermark: "Xóa hình mờ",
|
|
removeWatermarkHelp: "Phát hiện và xóa hình mờ bán trong suốt",
|
|
requiresEraser: "Yêu cầu gói Xóa đối tượng",
|
|
advanced: "Nâng cao",
|
|
defringe: "Khử viền",
|
|
outputFormat: "Định dạng đầu ra",
|
|
submit: "Sửa trong suốt",
|
|
submitBatch: "Sửa trong suốt ({count} tệp)",
|
|
progressLabel: "Đang sửa trong suốt",
|
|
},
|
|
"background-replace": {
|
|
color: "Mau nen",
|
|
submit: "Thay doi nen",
|
|
submitBatch: "Thay doi nen ({count} tep)",
|
|
progressLabel: "Dang thay doi nen",
|
|
},
|
|
"blur-background": {
|
|
intensity: "Cuong do lam mo",
|
|
submit: "Lam mo nen",
|
|
submitBatch: "Lam mo nen ({count} tep)",
|
|
progressLabel: "Dang lam mo nen",
|
|
},
|
|
"watermark-text": {
|
|
watermarkText: "Văn bản hình mờ",
|
|
fontSize: "Cỡ chữ",
|
|
color: "Màu sắc",
|
|
opacity: "Độ mờ",
|
|
position: "Vị trí",
|
|
rotation: "Xoay",
|
|
center: "Giữa",
|
|
topLeft: "Trên trái",
|
|
topRight: "Trên phải",
|
|
bottomLeft: "Dưới trái",
|
|
bottomRight: "Dưới phải",
|
|
tiled: "Lát gạch",
|
|
submit: "Thêm hình mờ",
|
|
submitBatch: "Thêm hình mờ ({count} tệp)",
|
|
progressLabel: "Đang thêm hình mờ",
|
|
},
|
|
"watermark-image": {
|
|
uploadWatermark: "Tải lên ảnh hình mờ",
|
|
position: "Vị trí",
|
|
opacity: "Độ mờ",
|
|
scale: "Tỷ lệ",
|
|
submit: "Áp dụng hình mờ",
|
|
submitBatch: "Áp dụng hình mờ ({count} tệp)",
|
|
},
|
|
"text-overlay": {
|
|
text: "Văn bản",
|
|
fontSize: "Cỡ chữ",
|
|
color: "Màu sắc",
|
|
position: "Vị trí",
|
|
top: "Trên",
|
|
center: "Giữa",
|
|
bottom: "Dưới",
|
|
backgroundBox: "Hộp nền",
|
|
backgroundColor: "Màu nền",
|
|
shadow: "Bóng đổ",
|
|
submit: "Thêm văn bản",
|
|
submitBatch: "Thêm văn bản ({count} tệp)",
|
|
progressLabel: "Đang thêm lớp phủ văn bản",
|
|
download: "Download",
|
|
defaultText: "Your Text Here",
|
|
},
|
|
compose: {
|
|
uploadOverlay: "Tải lên ảnh lớp phủ",
|
|
xPosition: "Vị trí X",
|
|
yPosition: "Vị trí Y",
|
|
opacity: "Độ mờ",
|
|
blendMode: "Chế độ hòa trộn",
|
|
submit: "Ghép ảnh",
|
|
},
|
|
"meme-generator": {
|
|
selectTemplate: "Chọn một mẫu từ bộ sưu tập hoặc tải lên ảnh của bạn để bắt đầu.",
|
|
chooseLayout: "Chọn bố cục văn bản cho ảnh tùy chỉnh của bạn.",
|
|
textContent: "Nội dung văn bản",
|
|
textStyle: "Kiểu văn bản",
|
|
font: "Phông chữ",
|
|
fontSize: "Cỡ chữ",
|
|
textColor: "Màu chữ",
|
|
strokeColor: "Màu viền chữ",
|
|
allCaps: "TẤT CẢ CHỮ HOA",
|
|
generate: "Tạo Meme",
|
|
generating: "Đang tạo...",
|
|
downloadMeme: "Tải xuống Meme",
|
|
backToGallery: "Quay lại bộ sưu tập",
|
|
},
|
|
info: {
|
|
loadingInfo: "Đang tải thông tin...",
|
|
filename: "Tên tệp",
|
|
fileSize: "Dung lượng tệp",
|
|
dimensions: "Kích thước",
|
|
format: "Định dạng",
|
|
channels: "Kênh",
|
|
colorSpace: "Không gian màu",
|
|
density: "Mật độ",
|
|
bitDepth: "Độ sâu bit",
|
|
progressive: "Luỹ tiến",
|
|
pages: "Trang",
|
|
hasAlpha: "Có kênh Alpha",
|
|
hasProfile: "Có cấu hình",
|
|
hasExif: "Có EXIF",
|
|
hasIcc: "Có ICC",
|
|
hasXmp: "Có XMP",
|
|
readInfo: "Read Info",
|
|
reading: "Reading...",
|
|
channelStats: "Channel Stats",
|
|
yes: "Yes",
|
|
no: "No",
|
|
na: "N/A",
|
|
failedToRead: "Failed to read info",
|
|
},
|
|
compare: {
|
|
uploadSecondImage: "Tải lên ảnh thứ hai",
|
|
similarity: "Độ giống nhau: {percent}%",
|
|
submit: "So sánh",
|
|
downloadDiff: "Tải xuống ảnh khác biệt",
|
|
},
|
|
"find-duplicates": {
|
|
preset: "Mẫu",
|
|
exact: "Chính xác",
|
|
similar: "Tương tự",
|
|
loose: "Lỏng",
|
|
exactDesc: "Bản sao giống hệt pixel, cùng ảnh ở định dạng khác.",
|
|
similarDesc: "Bản sao đã thay đổi kích thước, nén lại hoặc chỉnh sửa nhẹ.",
|
|
looseDesc: "Hình ảnh liên quan trực quan, cắt nhẹ, phơi sáng khác nhau.",
|
|
threshold: "Ngưỡng",
|
|
submit: "Quét tìm ảnh trùng",
|
|
scanning: "Đang quét...",
|
|
},
|
|
"color-palette": {
|
|
submit: "Trích xuất bảng màu",
|
|
extracting: "Đang trích xuất...",
|
|
dominantColors: "Màu chủ đạo",
|
|
clickToCopy: "Nhấp để sao chép",
|
|
},
|
|
"qr-generate": {
|
|
contentType: "Loại nội dung",
|
|
url: "URL",
|
|
text: "Văn bản",
|
|
wifi: "WiFi",
|
|
vcard: "vCard",
|
|
email: "Email",
|
|
phone: "Điện thoại",
|
|
sms: "SMS",
|
|
styling: "Kiểu dáng",
|
|
dotStyle: "Kiểu chấm",
|
|
cornerSquareStyle: "Kiểu ô vuông góc",
|
|
cornerDotStyle: "Kiểu chấm góc",
|
|
foregroundColor: "Màu tiền cảnh",
|
|
bgColor: "Màu nền",
|
|
logo: "Logo",
|
|
downloadFormat: "Định dạng tải xuống",
|
|
submit: "Tạo mã QR",
|
|
download: "Tải xuống mã QR",
|
|
},
|
|
"html-to-image": {
|
|
modeUrl: "URL",
|
|
modeHtml: "HTML File",
|
|
htmlFile: "HTML File",
|
|
url: "URL",
|
|
urlPlaceholder: "https://snapotter.com",
|
|
format: "Output Format",
|
|
quality: "Quality",
|
|
devicePreset: "Device",
|
|
viewportWidth: "Width",
|
|
viewportHeight: "Height",
|
|
fullPage: "Full Page",
|
|
submit: "Capture",
|
|
download: "Download Screenshot",
|
|
capturing: "Capturing webpage...",
|
|
errorTimeout: "Page took too long to load",
|
|
errorBlocked: "This URL cannot be captured",
|
|
errorUnavailable: "Screenshot service is not available",
|
|
errorFailed: "Failed to capture the page",
|
|
placeholder: "Enter a URL and click Capture",
|
|
presets: {
|
|
desktop: "Desktop",
|
|
tablet: "Tablet",
|
|
mobile: "Mobile",
|
|
custom: "Custom",
|
|
},
|
|
},
|
|
"barcode-read": {
|
|
submit: "Quét mã vạch",
|
|
submitBatch: "Quét ({count} tệp)",
|
|
scanning: "Đang quét...",
|
|
noBarcodesFound: "Không tìm thấy mã vạch",
|
|
barcodesFound: "Tìm thấy {count} mã vạch",
|
|
barcodesFoundPlural: "Tìm thấy {count} mã vạch",
|
|
},
|
|
collage: {
|
|
template: "Mẫu",
|
|
aspectRatio: "Tỷ lệ khung hình",
|
|
gap: "Khoảng cách",
|
|
cornerRadius: "Bán kính bo góc",
|
|
backgroundColor: "Màu nền",
|
|
outputFormat: "Định dạng đầu ra",
|
|
quality: "Chất lượng",
|
|
submit: "Tạo ảnh ghép",
|
|
downloadCollage: "Tải xuống ảnh ghép",
|
|
},
|
|
stitch: {
|
|
direction: "Hướng",
|
|
horizontal: "Ngang",
|
|
vertical: "Dọc",
|
|
grid: "Lưới",
|
|
gridColumns: "Cột lưới",
|
|
resizeMode: "Chế độ kích thước",
|
|
fit: "Vừa vặn",
|
|
original: "Gốc",
|
|
stretchMode: "Kéo giãn",
|
|
cropMode: "Cắt",
|
|
alignment: "Căn chỉnh",
|
|
start: "Đầu",
|
|
center: "Giữa",
|
|
end: "Cuối",
|
|
gap: "Khoảng cách",
|
|
border: "Viền",
|
|
cornerRadius: "Bán kính bo góc",
|
|
backgroundColor: "Màu nền",
|
|
outputFormat: "Định dạng đầu ra",
|
|
quality: "Chất lượng",
|
|
submit: "Ghép nối ảnh",
|
|
},
|
|
split: {
|
|
modeGrid: "Lưới",
|
|
modeTileSize: "Kích thước ô",
|
|
presets: "Mẫu có sẵn",
|
|
columns: "Cột",
|
|
rows: "Hàng",
|
|
tileWidth: "Chiều rộng ô",
|
|
tileHeight: "Chiều cao ô",
|
|
outputFormat: "Định dạng đầu ra",
|
|
quality: "Chất lượng",
|
|
submit: "Tách ảnh",
|
|
downloadAll: "Tải tất cả (ZIP)",
|
|
},
|
|
border: {
|
|
presets: "Mẫu có sẵn",
|
|
borderWidth: "Độ rộng viền",
|
|
borderColor: "Màu viền",
|
|
padding: "Khoảng đệm",
|
|
paddingColor: "Màu khoảng đệm",
|
|
cornerRadius: "Bán kính bo góc",
|
|
shadow: "Bóng đổ",
|
|
shadowBlur: "Độ mờ bóng",
|
|
shadowOffsetX: "Lệch bóng X",
|
|
shadowOffsetY: "Lệch bóng Y",
|
|
shadowColor: "Màu bóng",
|
|
shadowOpacity: "Độ mờ bóng",
|
|
submit: "Thêm viền",
|
|
submitBatch: "Thêm viền ({count} tệp)",
|
|
progressLabel: "Đang thêm viền",
|
|
},
|
|
beautify: {
|
|
preset: "Mẫu",
|
|
backgroundType: "Loại nền",
|
|
solidColor: "Màu đơn",
|
|
linearGradient: "Chuyển sắc tuyến tính",
|
|
radialGradient: "Chuyển sắc tỏa tròn",
|
|
customImage: "Ảnh tùy chỉnh",
|
|
gradientAngle: "Góc chuyển sắc",
|
|
padding: "Khoảng đệm",
|
|
borderRadius: "Bán kính bo góc",
|
|
shadowPreset: "Mẫu bóng đổ",
|
|
deviceFrame: "Khung thiết bị",
|
|
submit: "Làm đẹp",
|
|
submitBatch: "Làm đẹp ({count} tệp)",
|
|
progressLabel: "Đang làm đẹp ảnh chụp màn hình",
|
|
},
|
|
"circle-crop": {
|
|
submit: "Circle Crop",
|
|
submitBatch: "Circle Crop ({count} files)",
|
|
progressLabel: "Cropping to circle",
|
|
},
|
|
duotone: {
|
|
shadow: "Shadow Color",
|
|
highlight: "Highlight Color",
|
|
submit: "Apply Duotone",
|
|
submitBatch: "Apply Duotone ({count} files)",
|
|
progressLabel: "Applying duotone",
|
|
},
|
|
"image-pad": {
|
|
target: "Target Ratio",
|
|
color: "Background Color",
|
|
submit: "Pad Image",
|
|
submitBatch: "Pad Image ({count} files)",
|
|
progressLabel: "Padding image",
|
|
},
|
|
pixelate: {
|
|
blockSize: "Block Size",
|
|
submit: "Pixelate",
|
|
submitBatch: "Pixelate ({count} files)",
|
|
progressLabel: "Pixelating",
|
|
},
|
|
vignette: {
|
|
strength: "Strength",
|
|
color: "Vignette Color",
|
|
submit: "Apply Vignette",
|
|
submitBatch: "Apply Vignette ({count} files)",
|
|
progressLabel: "Applying vignette",
|
|
},
|
|
"gif-webp": {
|
|
submit: "Convert",
|
|
submitBatch: "Convert ({count} files)",
|
|
progressLabel: "Converting animation",
|
|
},
|
|
histogram: {
|
|
submit: "Generate Histogram",
|
|
submitBatch: "Generate Histogram ({count} files)",
|
|
progressLabel: "Generating histogram",
|
|
},
|
|
"lqip-placeholder": {
|
|
width: "Width",
|
|
blur: "Blur",
|
|
submit: "Generate Placeholder",
|
|
submitBatch: "Generate Placeholder ({count} files)",
|
|
progressLabel: "Generating placeholder",
|
|
},
|
|
"sprite-sheet": {
|
|
columns: "Columns",
|
|
padding: "Padding",
|
|
background: "Background Color",
|
|
submit: "Create Sprite Sheet",
|
|
submitBatch: "Create Sprite Sheet",
|
|
progressLabel: "Creating sprite sheet",
|
|
},
|
|
"svg-to-raster": {
|
|
outputFormat: "Định dạng đầu ra",
|
|
sizing: "Kích thước",
|
|
scaleMode: "Tỷ lệ",
|
|
customMode: "Tùy chỉnh",
|
|
scalePresets: "Mẫu tỷ lệ",
|
|
dpiPresets: "Mẫu DPI",
|
|
customWidth: "Chiều rộng (px)",
|
|
customHeight: "Chiều cao (px)",
|
|
background: "Nền",
|
|
bgTransparent: "Trong suốt",
|
|
bgColor: "Màu nền",
|
|
quality: "Chất lượng",
|
|
submit: "Chuyển đổi SVG",
|
|
submitBatch: "Chuyển đổi ({count} tệp)",
|
|
progressLabel: "Đang chuyển đổi SVG",
|
|
},
|
|
vectorize: {
|
|
preset: "Mẫu",
|
|
logo: "Logo",
|
|
illustration: "Minh họa",
|
|
photo: "Ảnh chụp",
|
|
sketch: "Phác thảo",
|
|
customPreset: "Tùy chỉnh",
|
|
colorMode: "Chế độ màu",
|
|
bw: "Đen trắng",
|
|
colorModeColor: "Màu",
|
|
threshold: "Ngưỡng",
|
|
colorPrecision: "Độ chính xác màu",
|
|
layerDifference: "Khác biệt lớp",
|
|
filterSpeckle: "Lọc đốm",
|
|
pathMode: "Chế độ đường dẫn",
|
|
cornerThreshold: "Ngưỡng góc",
|
|
invertColors: "Đảo ngược màu",
|
|
submit: "Véc-tơ hóa",
|
|
submitBatch: "Véc-tơ hóa ({count} tệp)",
|
|
progressLabel: "Đang véc-tơ hóa",
|
|
},
|
|
"gif-tools": {
|
|
mode: "Chế độ",
|
|
resize: "Thay đổi kích thước",
|
|
optimize: "Tối ưu",
|
|
speed: "Tốc độ",
|
|
reverse: "Đảo ngược",
|
|
extract: "Trích xuất",
|
|
rotateMode: "Xoay",
|
|
pixel: "Pixel",
|
|
percentage: "Phần trăm",
|
|
colors: "Màu sắc",
|
|
dither: "Phân tán",
|
|
effort: "Mức nỗ lực",
|
|
speedFactor: "Hệ số tốc độ",
|
|
loopControl: "Điều khiển lặp",
|
|
infinite: "Vô hạn",
|
|
once: "Một lần",
|
|
customLoop: "Tùy chỉnh",
|
|
loopCount: "Số lần lặp",
|
|
extractSingle: "Đơn lẻ",
|
|
extractRange: "Phạm vi",
|
|
extractAll: "Tất cả",
|
|
frameNumber: "Số khung hình",
|
|
frameStart: "Khung hình bắt đầu",
|
|
frameEnd: "Khung hình kết thúc",
|
|
extractFormat: "Định dạng",
|
|
submit: "Xử lý GIF",
|
|
submitBatch: "Xử lý ({count} tệp)",
|
|
progressLabel: "Đang xử lý GIF",
|
|
},
|
|
"image-to-base64": {
|
|
outputFormat: "Định dạng đầu ra",
|
|
keepOriginal: "Giữ nguyên gốc",
|
|
quality: "Chất lượng",
|
|
maxWidth: "Chiều rộng tối đa",
|
|
maxHeight: "Chiều cao tối đa",
|
|
submit: "Chuyển sang Base64",
|
|
submitBatch: "Chuyển đổi ({count} tệp)",
|
|
copyBase64: "Sao chép Base64",
|
|
copyDataUri: "Sao chép Data URI",
|
|
copyImgTag: "Sao chép thẻ <img>",
|
|
copyCssUrl: "Sao chép CSS url()",
|
|
},
|
|
"barcode-generate": {
|
|
text: "Text",
|
|
type: "Barcode Type",
|
|
scale: "Scale",
|
|
includeText: "Include Text",
|
|
submit: "Generate Barcode",
|
|
download: "Download Barcode",
|
|
},
|
|
"chart-maker": {
|
|
kind: "Chart Type",
|
|
title: "Title",
|
|
width: "Width",
|
|
height: "Height",
|
|
submit: "Create Chart",
|
|
submitBatch: "Create Chart ({count} files)",
|
|
progressLabel: "Creating chart",
|
|
},
|
|
"enhance-faces-standalone": {
|
|
model: "Mô hình",
|
|
fast: "Nhanh",
|
|
balanced: "Cân bằng",
|
|
best: "Tốt nhất",
|
|
},
|
|
"convert-video": {
|
|
format: "Output format",
|
|
quality: "Quality",
|
|
high: "High",
|
|
balanced: "Balanced",
|
|
small: "Smallest",
|
|
submit: "Convert",
|
|
submitBatch: "Convert ({count} files)",
|
|
progressLabel: "Converting",
|
|
},
|
|
"compress-video": {
|
|
quality: "Compression",
|
|
light: "Light",
|
|
balanced: "Balanced",
|
|
strong: "Strong",
|
|
resolution: "Resolution",
|
|
original: "Original",
|
|
submit: "Compress",
|
|
submitBatch: "Compress ({count} files)",
|
|
progressLabel: "Compressing",
|
|
},
|
|
"trim-video": {
|
|
start: "Start (seconds)",
|
|
end: "End (seconds)",
|
|
precise: "Frame-accurate (re-encodes)",
|
|
submit: "Trim",
|
|
submitBatch: "Trim ({count} files)",
|
|
progressLabel: "Trimming",
|
|
},
|
|
"mute-video": {
|
|
submit: "Remove audio",
|
|
submitBatch: "Remove audio ({count} files)",
|
|
progressLabel: "Muting",
|
|
},
|
|
"video-to-gif": {
|
|
fps: "Frames per second",
|
|
width: "Width (px)",
|
|
start: "Start (seconds)",
|
|
duration: "Duration (seconds)",
|
|
submit: "Create GIF",
|
|
submitBatch: "Create GIFs ({count} files)",
|
|
progressLabel: "Creating GIF",
|
|
},
|
|
"resize-video": {
|
|
preset: "Preset",
|
|
width: "Width (px)",
|
|
height: "Height (px)",
|
|
hint: "Leave one dimension empty to keep aspect ratio",
|
|
submit: "Resize",
|
|
submitBatch: "Resize ({count} files)",
|
|
progressLabel: "Resizing",
|
|
},
|
|
"crop-video": {
|
|
width: "Width (px)",
|
|
height: "Height (px)",
|
|
x: "X offset",
|
|
y: "Y offset",
|
|
submit: "Crop",
|
|
submitBatch: "Crop ({count} files)",
|
|
progressLabel: "Cropping",
|
|
},
|
|
"rotate-video": {
|
|
transform: "Transform",
|
|
cw90: "Rotate 90 clockwise",
|
|
ccw90: "Rotate 90 counter-clockwise",
|
|
rotate180: "Rotate 180",
|
|
hflip: "Flip horizontal",
|
|
vflip: "Flip vertical",
|
|
submit: "Rotate",
|
|
submitBatch: "Rotate ({count} files)",
|
|
progressLabel: "Rotating",
|
|
},
|
|
"change-fps": {
|
|
fps: "Frames per second",
|
|
submit: "Change FPS",
|
|
submitBatch: "Change FPS ({count} files)",
|
|
progressLabel: "Changing FPS",
|
|
},
|
|
"video-color": {
|
|
brightness: "Brightness",
|
|
contrast: "Contrast",
|
|
saturation: "Saturation",
|
|
gamma: "Gamma",
|
|
submit: "Apply",
|
|
submitBatch: "Apply ({count} files)",
|
|
progressLabel: "Adjusting color",
|
|
},
|
|
"video-speed": {
|
|
factor: "Speed factor",
|
|
keepPitch: "Keep original pitch",
|
|
submit: "Change speed",
|
|
submitBatch: "Change speed ({count} files)",
|
|
progressLabel: "Changing speed",
|
|
},
|
|
"reverse-video": {
|
|
hint: "Limited to clips up to 5 minutes",
|
|
submit: "Reverse",
|
|
submitBatch: "Reverse ({count} files)",
|
|
progressLabel: "Reversing",
|
|
},
|
|
"video-loudnorm": {
|
|
hint: "Normalizes audio to EBU R128 broadcast standard",
|
|
submit: "Normalize",
|
|
submitBatch: "Normalize ({count} files)",
|
|
progressLabel: "Normalizing",
|
|
},
|
|
"aspect-pad": {
|
|
target: "Target ratio",
|
|
color: "Background color",
|
|
colorHint: "Hex color, e.g. #000000",
|
|
submit: "Pad",
|
|
submitBatch: "Pad ({count} files)",
|
|
progressLabel: "Padding",
|
|
},
|
|
"blur-pad": {
|
|
target: "Target ratio",
|
|
blur: "Blur strength",
|
|
submit: "Pad",
|
|
submitBatch: "Pad ({count} files)",
|
|
progressLabel: "Padding",
|
|
},
|
|
"watermark-video": {
|
|
text: "Watermark text",
|
|
position: "Position",
|
|
fontSize: "Font size",
|
|
opacity: "Opacity",
|
|
color: "Color",
|
|
colorHint: "Hex color, e.g. #ffffff",
|
|
submit: "Watermark",
|
|
submitBatch: "Watermark ({count} files)",
|
|
progressLabel: "Watermarking",
|
|
},
|
|
"stabilize-video": {
|
|
smoothing: "Smoothing",
|
|
hint: "Runs two passes and takes longer than most tools",
|
|
submit: "Stabilize",
|
|
submitBatch: "Stabilize ({count} files)",
|
|
progressLabel: "Stabilizing",
|
|
},
|
|
"gif-to-video": {
|
|
format: "Output format",
|
|
submit: "Convert",
|
|
submitBatch: "Convert ({count} files)",
|
|
progressLabel: "Converting",
|
|
},
|
|
"video-to-webp": {
|
|
fps: "Frames per second",
|
|
width: "Width (px)",
|
|
quality: "Quality",
|
|
loop: "Loop animation",
|
|
submit: "Convert",
|
|
submitBatch: "Convert ({count} files)",
|
|
progressLabel: "Converting",
|
|
},
|
|
"video-to-frames": {
|
|
mode: "Extraction mode",
|
|
modeAll: "All frames",
|
|
modeNth: "Every Nth frame",
|
|
modeTimestamps: "Specific timestamps",
|
|
n: "Take every Nth frame",
|
|
timestamps: "Timestamps (seconds)",
|
|
timestampsHint: "Comma-separated, e.g. 0.5, 2, 4.5",
|
|
format: "Image format",
|
|
submit: "Extract Frames",
|
|
submitBatch: "Extract Frames ({count} files)",
|
|
progressLabel: "Extracting frames",
|
|
},
|
|
"merge-videos": {
|
|
hint: "Files are joined in upload order",
|
|
submit: "Merge",
|
|
submitBatch: "Merge ({count} files)",
|
|
progressLabel: "Merging",
|
|
},
|
|
"replace-audio": {
|
|
hint: "Upload the video first, then the audio",
|
|
submit: "Replace Audio",
|
|
submitBatch: "Replace Audio ({count} files)",
|
|
progressLabel: "Replacing audio",
|
|
},
|
|
"burn-subtitles": {
|
|
fontSize: "Font size",
|
|
hint: "Upload a video and a subtitle file (.srt or .vtt)",
|
|
submit: "Burn Subtitles",
|
|
submitBatch: "Burn Subtitles ({count} files)",
|
|
progressLabel: "Burning subtitles",
|
|
},
|
|
"embed-subtitles": {
|
|
language: "Language code",
|
|
languageHint: "Three-letter ISO 639-2 code, e.g. eng, spa, fra",
|
|
submit: "Embed Subtitles",
|
|
submitBatch: "Embed Subtitles ({count} files)",
|
|
progressLabel: "Embedding subtitles",
|
|
},
|
|
"extract-subtitles": {
|
|
submit: "Extract Subtitles",
|
|
submitBatch: "Extract Subtitles ({count} files)",
|
|
progressLabel: "Extracting subtitles",
|
|
},
|
|
"images-to-video": {
|
|
secondsPerImage: "Seconds per image",
|
|
resolution: "Resolution",
|
|
fps: "Frames per second",
|
|
submit: "Create Video",
|
|
submitBatch: "Create Video ({count} files)",
|
|
progressLabel: "Creating slideshow",
|
|
},
|
|
"video-metadata": {
|
|
hint: "Metadata report appears in the result",
|
|
submit: "Strip Metadata",
|
|
submitBatch: "Strip Metadata ({count} files)",
|
|
progressLabel: "Stripping metadata",
|
|
},
|
|
"convert-audio": {
|
|
format: "Output format",
|
|
bitrate: "Bitrate (kbps)",
|
|
submit: "Convert",
|
|
submitBatch: "Convert ({count} files)",
|
|
progressLabel: "Converting",
|
|
},
|
|
"trim-audio": {
|
|
start: "Start (seconds)",
|
|
end: "End (seconds)",
|
|
submit: "Trim",
|
|
submitBatch: "Trim ({count} files)",
|
|
progressLabel: "Trimming",
|
|
},
|
|
"extract-audio": {
|
|
format: "Output format",
|
|
submit: "Extract",
|
|
submitBatch: "Extract ({count} files)",
|
|
progressLabel: "Extracting",
|
|
},
|
|
"volume-adjust": {
|
|
"gain-db": "Gain (dB)",
|
|
submit: "Adjust Volume",
|
|
submitBatch: "Adjust Volume ({count} files)",
|
|
progressLabel: "Adjusting volume",
|
|
},
|
|
"normalize-audio": {
|
|
hint: "EBU R128 loudness normalization",
|
|
submit: "Normalize",
|
|
submitBatch: "Normalize ({count} files)",
|
|
progressLabel: "Normalizing",
|
|
},
|
|
"fade-audio": {
|
|
"fade-in-s": "Fade in (seconds)",
|
|
"fade-out-s": "Fade out (seconds)",
|
|
submit: "Apply Fade",
|
|
submitBatch: "Apply Fade ({count} files)",
|
|
progressLabel: "Applying fade",
|
|
},
|
|
"reverse-audio": {
|
|
submit: "Reverse",
|
|
submitBatch: "Reverse ({count} files)",
|
|
progressLabel: "Reversing",
|
|
},
|
|
"audio-speed": {
|
|
factor: "Speed factor",
|
|
submit: "Change Speed",
|
|
submitBatch: "Change Speed ({count} files)",
|
|
progressLabel: "Changing speed",
|
|
},
|
|
"pitch-shift": {
|
|
semitones: "Semitones",
|
|
hint: "0 semitones is not allowed",
|
|
submit: "Shift Pitch",
|
|
submitBatch: "Shift Pitch ({count} files)",
|
|
progressLabel: "Shifting pitch",
|
|
},
|
|
"audio-channels": {
|
|
mode: "Channel mode",
|
|
"stereo-to-mono": "Stereo to mono",
|
|
"mono-to-stereo": "Mono to stereo",
|
|
swap: "Swap left/right",
|
|
submit: "Convert Channels",
|
|
submitBatch: "Convert Channels ({count} files)",
|
|
progressLabel: "Converting channels",
|
|
},
|
|
"silence-removal": {
|
|
"threshold-db": "Silence threshold (dB)",
|
|
"min-silence-s": "Minimum silence duration (seconds)",
|
|
submit: "Remove Silence",
|
|
submitBatch: "Remove Silence ({count} files)",
|
|
progressLabel: "Removing silence",
|
|
},
|
|
"noise-reduction": {
|
|
strength: "Strength",
|
|
light: "Light",
|
|
medium: "Medium",
|
|
strong: "Strong",
|
|
submit: "Reduce Noise",
|
|
submitBatch: "Reduce Noise ({count} files)",
|
|
progressLabel: "Reducing noise",
|
|
},
|
|
"merge-audio": {
|
|
format: "Output format",
|
|
mp3: "MP3",
|
|
wav: "WAV",
|
|
flac: "FLAC",
|
|
m4a: "M4A",
|
|
"order-hint": "Files will be joined in upload order",
|
|
submit: "Merge Audio",
|
|
submitBatch: "Merge Audio ({count} files)",
|
|
progressLabel: "Merging audio",
|
|
},
|
|
"split-audio": {
|
|
mode: "Split mode",
|
|
time: "By time",
|
|
parts: "Equal parts",
|
|
silence: "By silence",
|
|
"segment-s": "Segment length (seconds)",
|
|
"num-parts": "Number of parts",
|
|
"threshold-db": "Silence threshold (dB)",
|
|
"min-silence-s": "Minimum silence duration (seconds)",
|
|
submit: "Split Audio",
|
|
submitBatch: "Split Audio ({count} files)",
|
|
progressLabel: "Splitting audio",
|
|
},
|
|
"ringtone-maker": {
|
|
"start-s": "Start time (seconds)",
|
|
"duration-s": "Duration (seconds)",
|
|
"max-hint": "Maximum 30 seconds",
|
|
submit: "Create Ringtone",
|
|
submitBatch: "Create Ringtone ({count} files)",
|
|
progressLabel: "Creating ringtone",
|
|
},
|
|
"waveform-image": {
|
|
width: "Width (px)",
|
|
height: "Height (px)",
|
|
color: "Waveform color",
|
|
submit: "Generate Waveform",
|
|
submitBatch: "Generate Waveform ({count} files)",
|
|
progressLabel: "Generating waveform",
|
|
},
|
|
"audio-metadata": {
|
|
strip: "Strip all metadata",
|
|
title: "Title",
|
|
artist: "Artist",
|
|
album: "Album",
|
|
submit: "Apply Metadata",
|
|
submitBatch: "Apply Metadata ({count} files)",
|
|
progressLabel: "Applying metadata",
|
|
},
|
|
"merge-pdf": {
|
|
addFiles: "Add PDFs to merge",
|
|
needTwo: "At least two PDFs are required",
|
|
orderHint: "{count} PDFs will merge in this order",
|
|
submit: "Merge",
|
|
submitBatch: "Merge ({count} files)",
|
|
progressLabel: "Merging",
|
|
},
|
|
"split-pdf": {
|
|
mode: "Split mode",
|
|
range: "Page range",
|
|
rangeHint: "e.g. 1-3, 5, 7-z",
|
|
everyN: "Pages per part",
|
|
submit: "Split",
|
|
submitBatch: "Split ({count} files)",
|
|
progressLabel: "Splitting",
|
|
},
|
|
"compress-pdf": {
|
|
preset: "Quality preset",
|
|
screen: "Screen (smallest)",
|
|
ebook: "Ebook (balanced)",
|
|
printer: "Printer (best quality)",
|
|
submit: "Compress",
|
|
submitBatch: "Compress ({count} files)",
|
|
progressLabel: "Compressing",
|
|
},
|
|
"rotate-pdf": {
|
|
angle: "Rotation angle",
|
|
range: "Page range",
|
|
rangeHint: "e.g. 1-3, 5, 1-z (all pages)",
|
|
submit: "Rotate",
|
|
submitBatch: "Rotate ({count} files)",
|
|
progressLabel: "Rotating",
|
|
},
|
|
"convert-document": {
|
|
format: "Output format",
|
|
submit: "Convert",
|
|
submitBatch: "Convert ({count} files)",
|
|
progressLabel: "Converting",
|
|
},
|
|
"convert-presentation": {
|
|
format: "Output format",
|
|
submit: "Convert",
|
|
submitBatch: "Convert ({count} files)",
|
|
progressLabel: "Converting",
|
|
},
|
|
"convert-spreadsheet": {
|
|
format: "Output format",
|
|
hint: "Multi-sheet workbooks export the first sheet to CSV.",
|
|
submit: "Convert",
|
|
submitBatch: "Convert ({count} files)",
|
|
progressLabel: "Converting",
|
|
},
|
|
"excel-to-pdf": {
|
|
submit: "Convert to PDF",
|
|
submitBatch: "Convert ({count} files)",
|
|
progressLabel: "Converting",
|
|
},
|
|
"powerpoint-to-pdf": {
|
|
submit: "Convert to PDF",
|
|
submitBatch: "Convert ({count} files)",
|
|
progressLabel: "Converting",
|
|
},
|
|
"word-to-pdf": {
|
|
submit: "Convert to PDF",
|
|
submitBatch: "Convert ({count} files)",
|
|
progressLabel: "Converting",
|
|
},
|
|
"extract-pages": {
|
|
range: "Page range",
|
|
rangeHint: "e.g. 1-3, 5, 7-z",
|
|
submit: "Extract",
|
|
submitBatch: "Extract ({count} files)",
|
|
progressLabel: "Extracting",
|
|
},
|
|
"remove-pages": {
|
|
pages: "Pages to remove",
|
|
pagesHint: "e.g. 2, 4-6, z (last page)",
|
|
submit: "Remove",
|
|
submitBatch: "Remove ({count} files)",
|
|
progressLabel: "Removing",
|
|
},
|
|
"organize-pdf": {
|
|
order: "Page order",
|
|
orderHint: "e.g. 3,1,2 or 1-z (identity)",
|
|
submit: "Reorder",
|
|
submitBatch: "Reorder ({count} files)",
|
|
progressLabel: "Reordering",
|
|
},
|
|
"protect-pdf": {
|
|
userPassword: "User password",
|
|
ownerPassword: "Owner password (optional)",
|
|
ownerPasswordHint: "Defaults to user password if empty",
|
|
submit: "Protect",
|
|
submitBatch: "Protect ({count} files)",
|
|
progressLabel: "Encrypting",
|
|
},
|
|
"unlock-pdf": {
|
|
password: "Password",
|
|
submit: "Unlock",
|
|
submitBatch: "Unlock ({count} files)",
|
|
progressLabel: "Decrypting",
|
|
},
|
|
"repair-pdf": {
|
|
submit: "Repair",
|
|
submitBatch: "Repair ({count} files)",
|
|
progressLabel: "Repairing",
|
|
},
|
|
"linearize-pdf": {
|
|
submit: "Optimize",
|
|
submitBatch: "Optimize ({count} files)",
|
|
progressLabel: "Linearizing",
|
|
},
|
|
"grayscale-pdf": {
|
|
submit: "Convert",
|
|
submitBatch: "Convert ({count} files)",
|
|
progressLabel: "Converting",
|
|
},
|
|
"pdfa-convert": {
|
|
submit: "Convert",
|
|
submitBatch: "Convert ({count} files)",
|
|
progressLabel: "Converting",
|
|
},
|
|
"crop-pdf": {
|
|
margin: "Margin (points)",
|
|
submit: "Crop",
|
|
submitBatch: "Crop ({count} files)",
|
|
progressLabel: "Cropping",
|
|
},
|
|
"nup-pdf": {
|
|
perSheet: "Pages per sheet",
|
|
submit: "Arrange",
|
|
submitBatch: "Arrange ({count} files)",
|
|
progressLabel: "Arranging",
|
|
},
|
|
"booklet-pdf": {
|
|
perSheet: "Pages per sheet",
|
|
submit: "Create Booklet",
|
|
submitBatch: "Create Booklet ({count} files)",
|
|
progressLabel: "Creating booklet",
|
|
},
|
|
"watermark-pdf": {
|
|
text: "Watermark text",
|
|
position: "Position",
|
|
fontSize: "Font size",
|
|
opacity: "Opacity",
|
|
rotation: "Rotation",
|
|
submit: "Watermark",
|
|
submitBatch: "Watermark ({count} files)",
|
|
progressLabel: "Watermarking",
|
|
},
|
|
"pdf-page-numbers": {
|
|
position: "Position",
|
|
fontSize: "Font size",
|
|
submit: "Add Numbers",
|
|
submitBatch: "Add Numbers ({count} files)",
|
|
progressLabel: "Numbering",
|
|
},
|
|
"flatten-pdf": {
|
|
submit: "Flatten",
|
|
submitBatch: "Flatten ({count} files)",
|
|
progressLabel: "Flattening",
|
|
},
|
|
"redact-pdf": {
|
|
terms: "Terms to redact",
|
|
termsHint: "One term per line (max 50)",
|
|
caseSensitive: "Case sensitive",
|
|
submit: "Redact",
|
|
submitBatch: "Redact ({count} files)",
|
|
progressLabel: "Redacting",
|
|
},
|
|
"pdf-to-text": {
|
|
submit: "Extract Text",
|
|
submitBatch: "Extract Text ({count} files)",
|
|
progressLabel: "Extracting",
|
|
},
|
|
"pdf-to-word": {
|
|
hint: "Best for text-based PDFs; scanned pages need OCR",
|
|
submit: "Convert to Word",
|
|
submitBatch: "Convert to Word ({count} files)",
|
|
progressLabel: "Converting",
|
|
},
|
|
"pdf-metadata": {
|
|
title: "Title",
|
|
author: "Author",
|
|
subject: "Subject",
|
|
keywords: "Keywords",
|
|
submit: "Set Metadata",
|
|
submitBatch: "Set Metadata ({count} files)",
|
|
progressLabel: "Setting metadata",
|
|
},
|
|
"html-to-pdf": {
|
|
hint: "Remote resources are disabled for privacy.",
|
|
submit: "Convert to PDF",
|
|
submitBatch: "Convert to PDF ({count} files)",
|
|
progressLabel: "Converting",
|
|
},
|
|
"markdown-to-docx": {
|
|
submit: "Convert to DOCX",
|
|
submitBatch: "Convert ({count} files)",
|
|
progressLabel: "Converting",
|
|
},
|
|
"markdown-to-html": {
|
|
hint: "Remote images in the source are left as-is in the output.",
|
|
submit: "Convert to HTML",
|
|
submitBatch: "Convert ({count} files)",
|
|
progressLabel: "Converting",
|
|
},
|
|
"markdown-to-pdf": {
|
|
hint: "Remote resources are disabled for privacy.",
|
|
submit: "Convert to PDF",
|
|
submitBatch: "Convert to PDF ({count} files)",
|
|
progressLabel: "Converting",
|
|
},
|
|
"epub-convert": {
|
|
format: "Output format",
|
|
hint: "Remote resources inside the book are not fetched.",
|
|
submit: "Convert",
|
|
submitBatch: "Convert ({count} files)",
|
|
progressLabel: "Converting",
|
|
},
|
|
"to-epub": {
|
|
submit: "Convert to EPUB",
|
|
submitBatch: "Convert ({count} files)",
|
|
progressLabel: "Converting",
|
|
},
|
|
"csv-excel": {
|
|
sheet: "Worksheet number",
|
|
submit: "Convert",
|
|
submitBatch: "Convert ({count} files)",
|
|
progressLabel: "Converting",
|
|
},
|
|
"csv-json": {
|
|
pretty: "Pretty print",
|
|
submit: "Convert",
|
|
submitBatch: "Convert ({count} files)",
|
|
progressLabel: "Converting",
|
|
},
|
|
"json-xml": {
|
|
pretty: "Pretty print",
|
|
submit: "Convert",
|
|
submitBatch: "Convert ({count} files)",
|
|
progressLabel: "Converting",
|
|
},
|
|
"split-csv": {
|
|
rowsPerFile: "Rows per file",
|
|
keepHeader: "Keep header in each file",
|
|
submit: "Split",
|
|
submitBatch: "Split ({count} files)",
|
|
progressLabel: "Splitting",
|
|
},
|
|
"merge-csvs": {
|
|
submit: "Merge",
|
|
submitBatch: "Merge ({count} files)",
|
|
progressLabel: "Merging",
|
|
},
|
|
"yaml-json": {
|
|
submit: "Convert",
|
|
submitBatch: "Convert ({count} files)",
|
|
progressLabel: "Converting",
|
|
},
|
|
"xml-to-csv": {
|
|
submit: "Convert",
|
|
submitBatch: "Convert ({count} files)",
|
|
progressLabel: "Converting",
|
|
},
|
|
"create-zip": {
|
|
submit: "Create ZIP",
|
|
submitBatch: "Create ZIP ({count} files)",
|
|
progressLabel: "Zipping",
|
|
},
|
|
"extract-zip": {
|
|
submit: "Extract",
|
|
submitBatch: "Extract ({count} files)",
|
|
progressLabel: "Extracting",
|
|
},
|
|
},
|
|
urlImport: {
|
|
title: "Nhập từ URL",
|
|
placeholder: "Dán URL hình ảnh, mỗi dòng một URL...",
|
|
importButton: "Nhập URL",
|
|
addButton: "Thêm {count} tệp",
|
|
adding: "Đang thêm...",
|
|
retryButton: "Thử lại",
|
|
cancelButton: "Hủy",
|
|
readyCount: "{count} sẵn sàng",
|
|
failedStatus: "Thất bại",
|
|
},
|
|
comparison: {
|
|
original: "Gốc",
|
|
processed: "Đã xử lý",
|
|
before: "Trước",
|
|
after: "Sau",
|
|
savings: "Tiết kiệm",
|
|
},
|
|
toolPage: {
|
|
emptyPrompt: "Kéo thả hoặc tải lên hình ảnh để bắt đầu",
|
|
filesCount: "Tệp ({count})",
|
|
addMore: "+ Thêm",
|
|
clearAll: "Xóa tất cả",
|
|
acceptDescription: "Chỉ tệp {exts}",
|
|
notFound: "Không tìm thấy công cụ",
|
|
configureAndGenerate: "Cấu hình cài đặt và tạo.",
|
|
processingFailed: "Xử lý thất bại cho tệp này",
|
|
conversionComplete: "Chuyển đổi hoàn tất",
|
|
cannotPreviewDownload:
|
|
"Không thể xem trước tệp {type} trong trình duyệt. Sử dụng nút tải xuống để lưu tệp.",
|
|
generatingPreview: "Đang tạo bản xem trước...",
|
|
cannotPreviewWillProcess:
|
|
"Không thể xem trước tệp {ext} trong trình duyệt. Công cụ vẫn sẽ xử lý tệp này bình thường.",
|
|
previousImage: "Ảnh trước",
|
|
nextImage: "Ảnh tiếp theo",
|
|
imageCounter: "{current} / {total}",
|
|
settingsLabel: "Cài đặt",
|
|
downloadAllZip: "Tải tất cả (ZIP)",
|
|
hideSettings: "Ẩn cài đặt",
|
|
imageArea: "Vùng ảnh",
|
|
disabledByAdmin: "This tool has been disabled by your administrator",
|
|
browseOtherTools: "Browse other tools",
|
|
privacyNote: "Files are processed on your server and never leave your network",
|
|
andMore: "and {count} more",
|
|
adjustSettings: "Adjust settings",
|
|
startOver: "Start over with a new file",
|
|
backToTools: "Back to Tools",
|
|
original: "Original",
|
|
processed: "Processed",
|
|
saved: "Saved",
|
|
noChange: "no change",
|
|
download: "Download",
|
|
},
|
|
homePage: {
|
|
generatingPreview: "Đang tạo bản xem trước...",
|
|
loadingPreview: "Đang tải bản xem trước...",
|
|
changeFile: "Đổi tệp",
|
|
quickActions: "Thao tác nhanh",
|
|
allTools: "Tất cả công cụ",
|
|
searchPlaceholder: "Search {count} tools...",
|
|
recent: "Recent",
|
|
popular: "Popular",
|
|
browseByCategory: "Browse by Category",
|
|
gettingStarted: "Getting Started",
|
|
noToolsMatch: "No tools match '{query}'",
|
|
clearSearch: "Clear search",
|
|
all: "All",
|
|
documents: "Documents",
|
|
data: "Data",
|
|
toolCount: "{count} tools",
|
|
},
|
|
fullscreenGrid: {
|
|
searchPlaceholder: "Tìm kiếm công cụ...",
|
|
hideDetails: "Ẩn chi tiết",
|
|
showDetails: "Hiển thị chi tiết",
|
|
switchToSidebar: "Chuyển sang chế độ thanh bên",
|
|
sidebarButton: "Thanh bên",
|
|
noToolsFound: "Không tìm thấy công cụ",
|
|
tryDifferent: "Thử từ khóa tìm kiếm khác",
|
|
},
|
|
editor: {
|
|
menu: {
|
|
file: {
|
|
label: "Tệp",
|
|
new: "Mới",
|
|
open: "Mở",
|
|
save: "Lưu",
|
|
exportAs: "Xuất dưới dạng...",
|
|
quickExportPng: "Xuất nhanh PNG",
|
|
close: "Đóng",
|
|
},
|
|
edit: {
|
|
label: "Chỉnh sửa",
|
|
undo: "Hoàn tác",
|
|
redo: "Làm lại",
|
|
cut: "Cắt",
|
|
copy: "Sao chép",
|
|
copyMerged: "Sao chép đã gộp",
|
|
paste: "Dán",
|
|
pasteInPlace: "Dán tại chỗ",
|
|
delete: "Xóa",
|
|
freeTransform: "Biến đổi tự do",
|
|
transform: {
|
|
label: "Biến đổi",
|
|
scale: "Thu phóng",
|
|
rotate: "Xoay",
|
|
skew: "Nghiêng",
|
|
flipHorizontal: "Lật ngang",
|
|
flipVertical: "Lật dọc",
|
|
},
|
|
},
|
|
image: {
|
|
label: "Hình ảnh",
|
|
imageSize: "Kích thước hình ảnh...",
|
|
canvasSize: "Kích thước khung vẽ...",
|
|
rotation: {
|
|
label: "Xoay hình ảnh",
|
|
cw90: "90° theo chiều kim đồng hồ",
|
|
ccw90: "90° ngược chiều kim đồng hồ",
|
|
r180: "180°",
|
|
flipHorizontal: "Lật ngang",
|
|
flipVertical: "Lật dọc",
|
|
},
|
|
trim: "Cắt viền",
|
|
adjustments: {
|
|
label: "Điều chỉnh",
|
|
brightnessContrast: "Độ sáng/Độ tương phản",
|
|
hueSaturation: "Sắc độ/Độ bão hòa",
|
|
colorBalance: "Cân bằng màu",
|
|
levels: "Mức độ",
|
|
curves: "Đường cong",
|
|
},
|
|
},
|
|
layer: {
|
|
label: "Lớp",
|
|
newLayer: "Lớp mới",
|
|
duplicateLayer: "Nhân đôi lớp",
|
|
deleteLayer: "Xóa lớp",
|
|
arrange: {
|
|
label: "Sắp xếp",
|
|
bringToFront: "Đưa lên trước",
|
|
bringForward: "Đưa lên một bậc",
|
|
sendBackward: "Đưa xuống một bậc",
|
|
sendToBack: "Đưa xuống cuối",
|
|
},
|
|
mergeDown: "Gộp xuống",
|
|
flattenImage: "Làm phẳng hình ảnh",
|
|
},
|
|
select: {
|
|
label: "Chọn",
|
|
all: "Tất cả",
|
|
deselect: "Bỏ chọn",
|
|
inverse: "Đảo ngược",
|
|
colorRange: "Phạm vi màu...",
|
|
},
|
|
filter: {
|
|
label: "Bộ lọc",
|
|
blur: {
|
|
label: "Làm mờ",
|
|
gaussian: "Làm mờ Gaussian",
|
|
motion: "Làm mờ chuyển động",
|
|
radial: "Làm mờ tỏa tròn",
|
|
surface: "Làm mờ bề mặt",
|
|
},
|
|
sharpen: {
|
|
label: "Làm nét",
|
|
sharpen: "Làm nét",
|
|
unsharpMask: "Mặt nạ không sắc nét",
|
|
},
|
|
noise: {
|
|
label: "Nhiễu",
|
|
addNoise: "Thêm nhiễu",
|
|
reduceNoise: "Giảm nhiễu",
|
|
},
|
|
pixelate: {
|
|
label: "Pixelate",
|
|
pixelate: "Pixelate",
|
|
mosaic: "Khảm",
|
|
},
|
|
stylize: {
|
|
label: "Phong cách hóa",
|
|
emboss: "Dập nổi",
|
|
solarize: "Solarize",
|
|
posterize: "Posterize",
|
|
},
|
|
grayscale: "Xám",
|
|
sepia: "Nâu đỏ",
|
|
invert: "Đảo ngược",
|
|
},
|
|
view: {
|
|
label: "Xem",
|
|
zoomIn: "Phóng to",
|
|
zoomOut: "Thu nhỏ",
|
|
fitOnScreen: "Vừa màn hình",
|
|
actualPixels: "Pixel thực tế",
|
|
rulers: "Thước kẻ",
|
|
grid: "Lưới",
|
|
guides: "Đường dẫn",
|
|
snap: "Hút dính",
|
|
panels: "Bảng điều khiển",
|
|
},
|
|
},
|
|
menuBar: {
|
|
backTitle: "Quay lại SnapOtter",
|
|
},
|
|
welcome: {
|
|
ariaLabel: "Vùng thả hình ảnh",
|
|
heading: "Trình chỉnh sửa ảnh",
|
|
dropDescription: "Kéo thả hình ảnh vào đây để bắt đầu",
|
|
openImageButton: "Mở hình ảnh",
|
|
newDocumentButton: "Tài liệu mới",
|
|
pasteHint: "Hoặc dán từ bộ nhớ tạm (Ctrl+V)",
|
|
},
|
|
mobile: {
|
|
heading: "Khuyến nghị dùng máy tính",
|
|
description:
|
|
"Trình chỉnh sửa ảnh hoạt động tốt nhất trên màn hình máy tính. Vui lòng chuyển sang thiết bị có màn hình lớn hơn để có trải nghiệm chỉnh sửa đầy đủ.",
|
|
},
|
|
errors: {
|
|
serverDecodeFailed: "Máy chủ giải mã thất bại",
|
|
},
|
|
shapes: {
|
|
shape: "Shape",
|
|
fill: "Fill",
|
|
stroke: "Stroke",
|
|
strokeWidth: "Width",
|
|
cornerRadius: "Radius",
|
|
sides: "Sides",
|
|
points: "Points",
|
|
dashStyle: "Dash",
|
|
solid: "Solid",
|
|
dashed: "Dashed",
|
|
dotted: "Dotted",
|
|
none: "None",
|
|
opacity: "Opacity",
|
|
rectangle: "Rectangle",
|
|
ellipse: "Ellipse",
|
|
line: "Line",
|
|
arrow: "Arrow",
|
|
polygon: "Polygon",
|
|
star: "Star",
|
|
},
|
|
},
|
|
settings: {
|
|
heading: "Cài đặt",
|
|
nav: {
|
|
general: "Chung",
|
|
systemSettings: "Cài đặt hệ thống",
|
|
security: "Bảo mật",
|
|
people: "Thành viên",
|
|
teams: "Nhóm",
|
|
roles: "Vai trò",
|
|
auditLog: "Nhật ký kiểm tra",
|
|
usage: "Usage",
|
|
apiKeys: "Khóa API",
|
|
aiFeatures: "Tính năng AI",
|
|
tools: "Công cụ",
|
|
productAnalytics: "Phân tích sản phẩm",
|
|
about: "Giới thiệu",
|
|
},
|
|
general: {
|
|
heading: "Chung",
|
|
description: "Tùy chọn người dùng và cài đặt hiển thị.",
|
|
loading: "Đang tải...",
|
|
logOut: "Đăng xuất",
|
|
defaultToolViewLabel: "Chế độ xem công cụ mặc định",
|
|
defaultToolViewDescription: "Cách hiển thị công cụ trên trang chủ",
|
|
sidebarOption: "Thanh bên",
|
|
fullscreenGridOption: "Lưới toàn màn hình",
|
|
appVersionLabel: "Phiên bản ứng dụng",
|
|
appVersionDescription: "Phiên bản hiện tại của SnapOtter",
|
|
saveButton: "Lưu cài đặt",
|
|
saveSuccess: "Đã lưu cài đặt.",
|
|
saveFailed: "Lưu cài đặt thất bại.",
|
|
},
|
|
system: {
|
|
heading: "Cài đặt hệ thống",
|
|
description: "Cấu hình phía máy chủ và giới hạn.",
|
|
fileUploadLimitLabel: "Giới hạn tải lên (MB)",
|
|
fileUploadLimitDescription: "Dung lượng tệp tối đa mỗi lần tải lên",
|
|
defaultThemeLabel: "Giao diện mặc định",
|
|
defaultThemeDescription: "Giao diện áp dụng cho phiên mới",
|
|
lightOption: "Sáng",
|
|
darkOption: "Tối",
|
|
systemOption: "Hệ thống",
|
|
languageLabel: "Ngôn ngữ",
|
|
languageDescription: "Ngôn ngữ giao diện",
|
|
loginAttemptLimitLabel: "Giới hạn đăng nhập",
|
|
loginAttemptLimitDescription: "Số lần đăng nhập thất bại tối đa mỗi phút trước khi khóa",
|
|
fileManagementHeading: "Quản lý tệp",
|
|
maxFileAgeLabel: "Thời gian lưu tệp tối đa (giờ)",
|
|
maxFileAgeDescription: "Thời gian lưu giữ tệp đã xử lý trước khi tự động dọn dẹp",
|
|
startupCleanupLabel: "Dọn dẹp khi khởi động",
|
|
startupCleanupDescription: "Dọn dẹp tệp tạm cũ khi máy chủ khởi động",
|
|
saveButton: "Lưu cài đặt",
|
|
saveSuccess: "Đã lưu cài đặt.",
|
|
saveFailed: "Lưu cài đặt thất bại.",
|
|
limitsAndResources: "Giới hạn & Tài nguyên",
|
|
maxFileSize: "Dung lượng tệp tối đa",
|
|
maxBatchSize: "Kích thước lô tối đa",
|
|
concurrentJobs: "Tác vụ đồng thời",
|
|
workerThreads: "Luồng xử lý",
|
|
maxPipelineSteps: "Số bước Pipeline tối đa",
|
|
processingTimeout: "Thời gian chờ xử lý",
|
|
rateLimitPerMin: "Giới hạn tốc độ (yêu cầu/phút)",
|
|
unlimited: "Không giới hạn",
|
|
auto: "Tự động",
|
|
envOverride: "Được đặt bởi biến môi trường",
|
|
maxCanvasPixels: "Pixel khung vẽ tối đa",
|
|
maxSvgSize: "Kích thước SVG tối đa",
|
|
maxSplitGrid: "Lưới tách tối đa",
|
|
maxPdfPages: "Số trang PDF tối đa",
|
|
sessionDuration: "Thời lượng phiên",
|
|
supportBundleButton: "Download Support Bundle",
|
|
supportBundleDescription:
|
|
"Download a diagnostic zip with redacted config, logs, and job data for troubleshooting.",
|
|
supportBundleFailed: "Failed to download support bundle.",
|
|
},
|
|
security: {
|
|
heading: "Bảo mật",
|
|
description: "Cài đặt mật khẩu và xác thực.",
|
|
changePasswordHeading: "Đổi mật khẩu",
|
|
currentPasswordPlaceholder: "Mật khẩu hiện tại",
|
|
newPasswordPlaceholder: "Mật khẩu mới",
|
|
confirmPasswordPlaceholder: "Xác nhận mật khẩu mới",
|
|
passwordsMismatch: "Mật khẩu không khớp",
|
|
passwordTooShort: "Mật khẩu phải có ít nhất 4 ký tự",
|
|
changeSuccess: "Đã đổi mật khẩu thành công",
|
|
changeFailed: "Đổi mật khẩu thất bại",
|
|
currentPasswordIncorrect: "Mật khẩu hiện tại không đúng",
|
|
changePasswordButton: "Đổi mật khẩu",
|
|
loginAttemptLimitNote: "Giới hạn đăng nhập có thể được cấu hình trong Cài đặt hệ thống.",
|
|
adminHeading: "Admin Security Settings",
|
|
adminDescription: "Enterprise security policy settings. These apply to all users.",
|
|
sessionIdleTimeout: "Session Idle Timeout (minutes)",
|
|
sessionIdleTimeoutDesc: "Automatically log out idle sessions. 0 = disabled.",
|
|
maxSessionsPerUser: "Max Sessions Per User",
|
|
maxSessionsPerUserDesc: "Limit concurrent sessions per user. 0 = unlimited.",
|
|
mfaPolicy: "MFA Policy",
|
|
mfaPolicyDesc: "Require multi-factor authentication for users.",
|
|
mfaPolicyOptional: "Optional",
|
|
mfaPolicyAdminsOnly: "Required for admins",
|
|
mfaPolicyRequired: "Required for all users",
|
|
ssoEnforcement: "SSO Enforcement",
|
|
ssoEnforcementDesc: "Require SSO login for all non-break-glass users.",
|
|
ssoBreakGlassUsername: "Break Glass Admin Username",
|
|
ssoBreakGlassUsernameDesc:
|
|
"This admin can still log in with local credentials when SSO is enforced.",
|
|
passwordMinLength: "Minimum Password Length",
|
|
passwordMinLengthDesc: "Minimum number of characters required for passwords.",
|
|
passwordRequireUppercase: "Require Uppercase",
|
|
passwordRequireUppercaseDesc: "Require at least one uppercase letter.",
|
|
passwordRequireNumber: "Require Number",
|
|
passwordRequireNumberDesc: "Require at least one number.",
|
|
passwordRequireSpecial: "Require Special Character",
|
|
passwordRequireSpecialDesc: "Require at least one special character.",
|
|
passwordPolicyHeading: "Password Policy",
|
|
securitySettingsSaved: "Security settings saved",
|
|
securitySettingsFailed: "Failed to save security settings",
|
|
},
|
|
people: {
|
|
heading: "Thành viên",
|
|
description: "Quản lý thành viên không gian làm việc và quyền của họ",
|
|
userCount: "{count} người dùng",
|
|
userCountPlural: "{count} người dùng",
|
|
searchPlaceholder: "Tìm kiếm thành viên...",
|
|
addMembersButton: "Thêm thành viên",
|
|
newMemberHeading: "Thành viên mới",
|
|
usernamePlaceholder: "Tên đăng nhập",
|
|
passwordPlaceholder: "Mật khẩu",
|
|
roleUserOption: "Người dùng",
|
|
roleEditorOption: "Biên tập viên",
|
|
roleAdminOption: "Quản trị viên",
|
|
roleUserDescription: "Truy cập công cụ cơ bản",
|
|
roleEditorDescription: "Tất cả tệp & pipeline",
|
|
roleAdminDescription: "Toàn quyền truy cập",
|
|
noDescription: "Không có mô tả",
|
|
defaultTeamOption: "Mặc định",
|
|
createButton: "Tạo",
|
|
cancelButton: "Hủy",
|
|
createSuccess: "Đã tạo người dùng thành công",
|
|
createFailed: "Tạo người dùng thất bại",
|
|
userLimitReached: "Đã đạt giới hạn người dùng (tối đa {max})",
|
|
deleteConfirm: 'Xóa người dùng "{username}"? Thao tác này không thể hoàn tác.',
|
|
deleteSuccess: 'Đã xóa người dùng "{username}"',
|
|
deleteFailed: "Xóa người dùng thất bại",
|
|
editHeading: "Chỉnh sửa {username}",
|
|
updateSuccess: "Đã cập nhật người dùng",
|
|
updateFailed: "Cập nhật người dùng thất bại",
|
|
cannotRemoveOwnAdmin: "Không thể xóa vai trò quản trị của chính bạn",
|
|
resetPasswordHeading: "Đặt lại mật khẩu cho {username}",
|
|
newPasswordLabel: "Mật khẩu mới (tối thiểu 8 ký tự)",
|
|
resetPasswordButton: "Đặt lại mật khẩu",
|
|
resetPasswordWarning:
|
|
"Thao tác này sẽ vô hiệu hóa tất cả phiên và khóa API của người dùng này.",
|
|
resetSuccess: "Đã đặt lại mật khẩu thành công",
|
|
resetFailed: "Đặt lại mật khẩu thất bại",
|
|
tableHeaderUser: "Người dùng",
|
|
tableHeaderRole: "Vai trò",
|
|
tableHeaderTeam: "Nhóm",
|
|
noSearchResults: "Không có thành viên phù hợp với tìm kiếm.",
|
|
noUsersFound: "Không tìm thấy người dùng.",
|
|
authBadgeLocalOidc: "Nội bộ + OIDC",
|
|
authBadgeOidc: "OIDC",
|
|
editRoleTeamAction: "Chỉnh sửa vai trò / Nhóm",
|
|
resetPasswordAction: "Đặt lại mật khẩu",
|
|
deleteUserAction: "Xóa người dùng",
|
|
saveButton: "Lưu",
|
|
copyPasswordButton: "Sao chep mat khau",
|
|
passwordCopied: "Da sao chep!",
|
|
copyPasswordWarning:
|
|
"Sao chep mat khau nay ngay bay gio. Ban se khong the xem lai sau khi tao nguoi dung.",
|
|
},
|
|
teams: {
|
|
heading: "Nhóm",
|
|
description: "Tổ chức thành viên thành nhóm để quản lý tốt hơn.",
|
|
createButton: "Tạo nhóm mới",
|
|
newTeamHeading: "Nhóm mới",
|
|
teamNamePlaceholder: "Tên nhóm",
|
|
createSubmitButton: "Tạo",
|
|
cancelButton: "Hủy",
|
|
createSuccess: "Đã tạo nhóm thành công",
|
|
createFailed: "Tạo nhóm thất bại",
|
|
duplicateTeamError: "Đã tồn tại nhóm có tên này",
|
|
renameSuccess: "Đã đổi tên nhóm",
|
|
renameFailed: "Đổi tên nhóm thất bại",
|
|
deleteConfirm: 'Xóa nhóm "{name}"? Thành viên sẽ bị bỏ phân công.',
|
|
deleteSuccess: 'Đã xóa nhóm "{name}"',
|
|
deleteFailed: "Xóa nhóm thất bại",
|
|
cannotDeleteDefault: "Không thể xóa nhóm mặc định hoặc nhóm có thành viên",
|
|
tableHeaderTeamName: "Tên nhóm",
|
|
tableHeaderMembers: "Thành viên",
|
|
emptyState: "Không tìm thấy nhóm.",
|
|
renameSaveButton: "Lưu",
|
|
renameCancelButton: "Hủy",
|
|
renameAction: "Đổi tên",
|
|
deleteAction: "Xóa",
|
|
totalMembers: "Tổng thành viên",
|
|
nameRequired: "Tên nhóm là bắt buộc",
|
|
nameTooLong: "Tên nhóm phải tối đa 50 ký tự",
|
|
duplicateName: "Đã tồn tại nhóm có tên này",
|
|
teamStorageQuota: "Storage Quota (MB)",
|
|
teamStorageQuotaDesc: "Maximum storage for this team in MB. Leave empty for no limit.",
|
|
teamRetentionHours: "Retention (hours)",
|
|
teamRetentionHoursDesc:
|
|
"Processing file retention for this team. Leave empty to use global default.",
|
|
quotaSaved: "Team settings saved",
|
|
},
|
|
roles: {
|
|
heading: "Vai trò",
|
|
description: "Quản lý vai trò và quyền. Vai trò tích hợp không thể sửa đổi.",
|
|
createButton: "Tạo vai trò tùy chỉnh",
|
|
newRoleHeading: "Vai trò mới",
|
|
roleNamePlaceholder: "Tên vai trò",
|
|
descriptionPlaceholder: "Mô tả (tùy chọn)",
|
|
permissionsLabel: "Quyền",
|
|
createSubmitButton: "Tạo",
|
|
cancelButton: "Hủy",
|
|
createSuccess: "Đã tạo vai trò thành công",
|
|
createFailed: "Tạo vai trò thất bại",
|
|
duplicateRoleError: "Đã tồn tại vai trò có tên này",
|
|
editHeading: "Chỉnh sửa vai trò: {name}",
|
|
editSaveButton: "Lưu",
|
|
editCancelButton: "Hủy",
|
|
updateSuccess: "Đã cập nhật vai trò",
|
|
updateFailed: "Cập nhật vai trò thất bại",
|
|
deleteConfirm: 'Xóa vai trò "{name}"? {count} người dùng sẽ cần được phân công lại.',
|
|
deleteConfirmSimple: 'Xóa vai trò "{name}"?',
|
|
deleteSuccess: 'Đã xóa vai trò "{name}"',
|
|
deleteFailed: "Xóa vai trò thất bại",
|
|
emptyState: "Không tìm thấy vai trò.",
|
|
builtInBadge: "Tích hợp",
|
|
userCountBadge: "{count} người dùng",
|
|
editRoleTitle: "Chỉnh sửa vai trò",
|
|
deleteRoleTitle: "Xóa vai trò",
|
|
permGroup: {
|
|
tools: "Công cụ",
|
|
files: "Tệp",
|
|
apiKeys: "Khóa API",
|
|
pipelines: "Pipeline",
|
|
settings: "Cài đặt",
|
|
users: "Người dùng",
|
|
teams: "Nhóm",
|
|
system: "Hệ thống",
|
|
},
|
|
},
|
|
auditLog: {
|
|
heading: "Nhật ký kiểm tra",
|
|
allActionsFilter: "Tất cả hành động",
|
|
emptyState: "Không có mục nhật ký kiểm tra.",
|
|
tableHeaderTime: "Thời gian",
|
|
tableHeaderUser: "Người dùng",
|
|
tableHeaderAction: "Hành động",
|
|
tableHeaderTarget: "Mục tiêu",
|
|
paginationInfo: "Trang {page} / {totalPages} ({total} mục)",
|
|
previousButton: "Trước",
|
|
nextButton: "Tiếp",
|
|
justNow: "vừa xong",
|
|
minutesAgo: "{mins} phút trước",
|
|
hoursAgo: "{hrs} giờ trước",
|
|
daysAgo: "{days} ngày trước",
|
|
},
|
|
usage: {
|
|
heading: "Usage",
|
|
description: "Local usage statistics from jobs and file storage.",
|
|
periodLabel: "Period",
|
|
days7: "7 days",
|
|
days30: "30 days",
|
|
days90: "90 days",
|
|
jobsPerDayHeading: "Jobs per day",
|
|
topToolsHeading: "Top tools",
|
|
perUserHeading: "Per-user volume",
|
|
durationsHeading: "Duration percentiles",
|
|
noData: "No data for this period.",
|
|
dayColumn: "Day",
|
|
totalColumn: "Total",
|
|
completedColumn: "Completed",
|
|
failedColumn: "Failed",
|
|
toolColumn: "Tool",
|
|
runsColumn: "Runs",
|
|
userColumn: "User",
|
|
bytesInColumn: "Bytes in",
|
|
poolColumn: "Pool",
|
|
p50Column: "p50",
|
|
p95Column: "p95",
|
|
storageHeading: "Library storage",
|
|
storageFiles: "{count} files",
|
|
unknownUser: "(unknown)",
|
|
storageByTeam: "Storage by Team",
|
|
teamColumn: "Team",
|
|
storageColumn: "Storage",
|
|
usersColumn: "Users",
|
|
},
|
|
apiKeys: {
|
|
heading: "Khóa API",
|
|
description: "Quản lý khóa API để truy cập SnapOtter theo chương trình.",
|
|
keyNamePlaceholder: "Tên khóa (tùy chọn)",
|
|
generateButton: "Tạo khóa API",
|
|
removeScopingLabel: "Bỏ giới hạn quyền",
|
|
restrictPermissionsLabel: "Hạn chế quyền (tùy chọn)",
|
|
expiresLabel: "Hết hạn:",
|
|
clearButton: "Xóa",
|
|
copyTitle: "Sao chép",
|
|
keyWarning: "Lưu trữ khóa này an toàn. Khóa sẽ không được hiển thị lại.",
|
|
existingKeysHeading: "Khóa hiện có",
|
|
createdPrefix: "Đã tạo {date}",
|
|
scopedPrefix: "Phạm vi:",
|
|
expiresPrefix: "Hết hạn {date}",
|
|
deleteKeyTitle: "Xóa khóa",
|
|
deleteConfirm: "Xóa khóa API này? Mọi tích hợp sử dụng khóa này sẽ ngừng hoạt động.",
|
|
emptyState: "Chưa có khóa API. Tạo một khóa để bắt đầu.",
|
|
},
|
|
tools: {
|
|
heading: "Công cụ",
|
|
description: "Bật hoặc tắt từng công cụ. Công cụ bị tắt sẽ bị ẩn khỏi tất cả người dùng.",
|
|
restartBanner: "Cần khởi động lại để thay đổi có hiệu lực.",
|
|
searchPlaceholder: "Tìm kiếm công cụ...",
|
|
noSearchResults: "Không có công cụ phù hợp với tìm kiếm.",
|
|
loadFailedError: "Tải cài đặt công cụ thất bại. Lưu bị vô hiệu hóa để tránh mất dữ liệu.",
|
|
saveButton: "Lưu cài đặt công cụ",
|
|
disabledCount: "{count} công cụ bị tắt",
|
|
},
|
|
experimental: {
|
|
label: "Bật công cụ thử nghiệm",
|
|
description: "Hiển thị các công cụ đang phát triển. Chúng có thể không ổn định.",
|
|
},
|
|
fileManagement: {
|
|
title: "Quản lý tệp",
|
|
maxAge: "Thời gian lưu tệp tối đa (giờ)",
|
|
maxAgeDescription: "Thời gian lưu giữ tệp đã xử lý trước khi tự động dọn dẹp",
|
|
startupCleanup: "Dọn dẹp khi khởi động",
|
|
startupCleanupDescription: "Dọn dẹp tệp tạm cũ khi máy chủ khởi động",
|
|
},
|
|
dataRetention: {
|
|
title: "Data Retention",
|
|
fileMaxAgeHours: "Processing file retention (hours)",
|
|
fileMaxAgeHoursDesc: "How long to keep uploaded and processed files. Default: 72 hours.",
|
|
jobsRetentionDays: "Job record retention (days)",
|
|
jobsRetentionDaysDesc: "How long to keep job metadata. 0 = keep forever. Default: 30 days.",
|
|
auditRetentionDays: "Audit log retention (days)",
|
|
auditRetentionDaysDesc:
|
|
"How long to keep audit log entries. 0 = keep forever. Default: forever.",
|
|
},
|
|
analytics: {
|
|
heading: "Phân tích sản phẩm",
|
|
description: "Chia sẻ dữ liệu sử dụng ẩn danh để giúp cải thiện SnapOtter.",
|
|
privacyNote: "Hình ảnh của bạn không bao giờ rời khỏi máy.",
|
|
disabledByAdmin: "Phân tích sản phẩm đã bị vô hiệu hóa bởi quản trị viên máy chủ.",
|
|
enabledLabel: "Đã bật phân tích",
|
|
disabledLabel: "Đã tắt phân tích",
|
|
learnMore: "Tìm hiểu thêm",
|
|
},
|
|
aiFeatures: {
|
|
title: "AI Features",
|
|
description: "Manage AI model bundles for advanced image processing.",
|
|
installAll: "Install All",
|
|
diskUsage: "Disk usage:",
|
|
installed: "Installed",
|
|
notInstalled: "Not installed",
|
|
queued: "Queued",
|
|
install: "Install",
|
|
repair: "Repair",
|
|
uninstall: "Uninstall",
|
|
installing: "Installing...",
|
|
importBundle: "Import Bundle",
|
|
importDescription: "Upload a .tar.gz bundle archive exported from another installation.",
|
|
importButton: "Import from file",
|
|
importing: "Importing...",
|
|
importSuccess: "Bundle imported successfully.",
|
|
importError: "Bundle import failed: {error}",
|
|
},
|
|
about: {
|
|
heading: "Giới thiệu",
|
|
appName: "SnapOtter",
|
|
appDescription:
|
|
"Bộ công cụ xử lý ảnh tự lưu trữ, ưu tiên quyền riêng tư với 70+ công cụ. Thay đổi kích thước, nén, chuyển đổi, thêm hình mờ và tự động hóa quy trình xử lý ảnh mà không cần gửi dữ liệu lên đám mây.",
|
|
versionLabel: "Phiên bản:",
|
|
linksHeading: "Liên kết",
|
|
githubLink: "Kho mã nguồn GitHub",
|
|
docsLink: "Tài liệu",
|
|
apiRefLink: "Tham chiếu API (Swagger)",
|
|
licenseLabel: "License:",
|
|
licenseDescription:
|
|
"SnapOtter is open-source software licensed under the GNU Affero General Public License v3 (AGPLv3).",
|
|
},
|
|
},
|
|
auth: {
|
|
login: "Đăng nhập",
|
|
logout: "Đăng xuất",
|
|
username: "Tên đăng nhập",
|
|
password: "Mật khẩu",
|
|
loginButton: "Đăng nhập",
|
|
loggingIn: "Đang đăng nhập...",
|
|
invalidCredentials: "Tên đăng nhập hoặc mật khẩu không đúng",
|
|
connectionError: "Lỗi kết nối",
|
|
signInWith: "Đăng nhập với {provider}",
|
|
signInWithSso: "Đăng nhập với SSO",
|
|
or: "hoặc",
|
|
methodLocal: "Nội bộ",
|
|
methodOidc: "OIDC",
|
|
methodBoth: "Nội bộ + OIDC",
|
|
oidcAuthFailed: "Xác thực thất bại. Vui lòng thử lại.",
|
|
oidcProviderUnreachable: "Không thể kết nối với nhà cung cấp danh tính. Vui lòng thử lại sau.",
|
|
oidcSessionExpired: "Phiên đăng nhập đã hết hạn. Vui lòng thử lại.",
|
|
oidcUserNotAuthorized:
|
|
"Tài khoản của bạn không được phép truy cập ứng dụng này. Liên hệ quản trị viên.",
|
|
oidcUserLimitReached: "Đã đạt giới hạn người dùng. Liên hệ quản trị viên.",
|
|
oidcGenericError: "Lỗi xác thực. Vui lòng thử lại.",
|
|
samlAuthFailed: "SAML authentication failed. Please try again.",
|
|
samlUserNotAuthorized:
|
|
"Your account is not authorized to access this application. Contact your administrator.",
|
|
samlUserLimitReached: "User limit reached. Contact your administrator.",
|
|
ssoEnforcedLocalRestricted: "Local login is restricted to authorized administrators.",
|
|
mfaRequired: "Enter your authentication code",
|
|
mfaRecoveryHint: "You can also use a recovery code",
|
|
verify: "Verify",
|
|
verifying: "Verifying...",
|
|
mfaInvalidCode: "Invalid code. Please try again.",
|
|
mfaEnrollmentRequired:
|
|
"Your organization requires multi-factor authentication. Please set up MFA in your account settings.",
|
|
methodSaml: "SAML",
|
|
passwordManagedByProvider: "Việc đổi mật khẩu được quản lý bởi nhà cung cấp danh tính của bạn.",
|
|
enterUsername: "Nhập tên đăng nhập",
|
|
enterPassword: "Nhập mật khẩu của bạn",
|
|
heroTitle: "Ảnh của bạn. Thuộc về bạn.",
|
|
heroSubtitle: "Mọi công cụ xử lý ảnh bạn cần.",
|
|
rotatingPhrases: [
|
|
"Không cần đăng ký. Không cần tài khoản.",
|
|
"Không tải lên đám mây. Tuyệt đối không.",
|
|
"100% xử lý ngay trên máy bạn.",
|
|
"Miễn phí. Mãi mãi.",
|
|
"Không giới hạn. Không ẩn giấu.",
|
|
"Hoạt động hoàn toàn ngoại tuyến.",
|
|
"Xử lý hàng loạt không giới hạn.",
|
|
"70+ công cụ xử lý ảnh.",
|
|
"15 mô hình AI. Chạy trên phần cứng của bạn.",
|
|
"Nhanh như chớp. Xây dựng trên Sharp.",
|
|
"Sẵn sàng cho môi trường cách ly mạng.",
|
|
"Chỉ một container Docker.",
|
|
"Mã nguồn mở. Luôn luôn.",
|
|
"Mọi pixel đều ở trên phần cứng của bạn.",
|
|
"Máy chủ của bạn. Quy tắc của bạn.",
|
|
"Triển khai chỉ với một lệnh docker pull.",
|
|
"Giải pháp thay thế tự lưu trữ.",
|
|
"Thay đổi kích thước, nén, chuyển đổi. Ngay tại máy.",
|
|
"Trình chỉnh sửa ảnh miễn phí. Không hình mờ.",
|
|
"Xử lý ảnh hàng loạt. Không giới hạn.",
|
|
"Xóa nền ngay trên máy.",
|
|
"Thay thế Canva tự lưu trữ.",
|
|
"Không cần khóa API.",
|
|
"Tuân thủ GDPR theo thiết kế.",
|
|
"Hoạt động không cần Internet.",
|
|
],
|
|
},
|
|
changePassword: {
|
|
title: "Đổi mật khẩu của bạn",
|
|
description:
|
|
"Bạn cần đặt mật khẩu mới trước khi tiếp tục. Mật khẩu phải có ít nhất 8 ký tự bao gồm chữ hoa, chữ thường và số.",
|
|
usernameLabel: "Tên đăng nhập",
|
|
currentPasswordLabel: "Mật khẩu hiện tại",
|
|
currentPasswordPlaceholder: "Nhập mật khẩu hiện tại",
|
|
newPasswordLabel: "Mật khẩu mới",
|
|
generateButton: "Tạo mật khẩu mạnh",
|
|
newPasswordPlaceholder: "Ít nhất 8 ký tự",
|
|
confirmPasswordLabel: "Xác nhận mật khẩu mới",
|
|
confirmPasswordPlaceholder: "Nhập lại mật khẩu mới",
|
|
passwordsMismatch: "Mật khẩu không khớp",
|
|
failedError: "Đổi mật khẩu thất bại",
|
|
connectionError: "Lỗi kết nối",
|
|
changingButton: "Đang đổi...",
|
|
changeButton: "Đổi mật khẩu",
|
|
sidebarTitle: "Sắp xong rồi",
|
|
sidebarDescription: "Đặt mật khẩu mạnh để bảo mật tài khoản, sau đó bạn có thể sử dụng ngay.",
|
|
},
|
|
automate: {
|
|
title: "Tự động hóa",
|
|
invalidPipelineFile: "Không phải tệp Pipeline SnapOtter hợp lệ",
|
|
newerVersion: "Pipeline này được tạo với phiên bản SnapOtter mới hơn",
|
|
missingName: "Tệp Pipeline thiếu tên",
|
|
noSteps: "Tệp Pipeline không có bước nào",
|
|
importFailed: "Nhập thất bại",
|
|
couldNotRead: "Không thể đọc tệp Pipeline",
|
|
fileCount: "{count} tệp",
|
|
fileCountPlural: "{count} tệp",
|
|
importFromLibrary: "Nhập từ thư viện",
|
|
addButton: "+ Thêm",
|
|
libraryButton: "Thư viện",
|
|
clearButton: "Xóa",
|
|
processingFailed: "Xử lý thất bại cho tệp này",
|
|
processingMultiple: "Đang xử lý {count} tệp...",
|
|
processingPipeline: "Đang xử lý Pipeline...",
|
|
processButton: "Xử lý",
|
|
processButtonMultiple: "Xử lý ({count})",
|
|
processAllButton: "Xử lý tất cả ({count})",
|
|
addTool: "Thêm công cụ",
|
|
toolPalette: "Bảng công cụ",
|
|
clickToAdd: "Nhấp để thêm vào Pipeline",
|
|
savedLabel: "Đã lưu",
|
|
importButton: "Nhập",
|
|
noSavedPipelines: "Không có Pipeline đã lưu",
|
|
stepCount: "({count} bước)",
|
|
stepCountPlural: "({count} bước)",
|
|
exportPipeline: "Xuất Pipeline",
|
|
deletePipeline: "Xóa Pipeline",
|
|
moreCount: "+{count} khác",
|
|
pipelineBuilder: "Trình xây dựng Pipeline",
|
|
addToolsPrompt: "Thêm công cụ từ bảng công cụ để bắt đầu",
|
|
stepsConfigured: "{count} bước đã cấu hình",
|
|
stepsConfiguredPlural: "{count} bước đã cấu hình",
|
|
noFilesLoaded: "Chưa tải tệp nào",
|
|
downloadZip: "Tải xuống ZIP",
|
|
saveButton: "Lưu",
|
|
pipelineNamePlaceholder: "Tên Pipeline",
|
|
descriptionPlaceholder: "Mô tả",
|
|
savingIndicator: "...",
|
|
cancelButton: "Hủy",
|
|
preview: "Xem trước",
|
|
previousImage: "Ảnh trước",
|
|
nextImage: "Ảnh tiếp theo",
|
|
imageCounter: "{current} / {total}",
|
|
imageArea: "Vùng ảnh",
|
|
templateSocialMedia: "Sẵn sàng cho mạng xã hội",
|
|
templatePrivacyClean: "Dọn dẹp quyền riêng tư",
|
|
templateWebOptimization: "Tối ưu cho Web",
|
|
templateProfilePicture: "Ảnh đại diện",
|
|
templateWatermarkBatch: "Hình mờ hàng loạt",
|
|
createNew: "Tạo tự động hóa mới",
|
|
savedAutomations: "Tự động hóa đã lưu",
|
|
templates: "Mẫu",
|
|
addStep: "Thêm bước",
|
|
removeStep: "Xóa",
|
|
moveUp: "Di chuyển lên",
|
|
moveDown: "Di chuyển xuống",
|
|
savePipeline: "Lưu Pipeline",
|
|
runPipeline: "Xử lý",
|
|
pipelineName: "Tên Pipeline",
|
|
pipelineDescription: "Mô tả (tùy chọn)",
|
|
noStepsPrompt: "Thêm các bước để xây dựng tự động hóa",
|
|
noStepsHeading: "No steps yet",
|
|
searchToolsPlaceholder: "Search tools...",
|
|
step: "Bước",
|
|
},
|
|
nav: {
|
|
tools: "Công cụ",
|
|
reader: "Đọc",
|
|
automate: "Tự động hóa",
|
|
editor: "Chỉnh sửa",
|
|
files: "Tệp",
|
|
help: "Trợ giúp",
|
|
settings: "Cài đặt",
|
|
grid: "Lưới",
|
|
},
|
|
files: {
|
|
myFiles: "My Files",
|
|
recentTab: "Recent",
|
|
uploadTab: "Upload Files",
|
|
fileDetailsAriaLabel: "File Details",
|
|
fileDetailsHeading: "File Details",
|
|
searchPlaceholder: "Search files...",
|
|
selectedCount: "{count} selected",
|
|
fileCount: "{count} files",
|
|
fileCountSingular: "{count} file",
|
|
noFilesFound: "No files found",
|
|
selectFilePrompt: "Select a file to view details",
|
|
openFile: "Open File",
|
|
openInPipeline: "Open in Pipeline",
|
|
name: "Name",
|
|
format: "Format",
|
|
size: "Size",
|
|
dimensions: "Dimensions",
|
|
version: "Version",
|
|
toolsUsed: "Tools Used",
|
|
none: "None",
|
|
delete: "Delete",
|
|
pipeline: "Pipeline",
|
|
download: "Download",
|
|
},
|
|
dropzone: {
|
|
unsupportedFileType: "Loại tệp này không được công cụ này hỗ trợ",
|
|
urlFetchFailed: "Không thể tải ảnh từ URL",
|
|
ariaLabel: "Vùng thả tệp",
|
|
dropPrompt: "Kéo thả hình ảnh vào đây",
|
|
browseOrPaste: "nhấp để duyệt hoặc dán từ bộ nhớ tạm",
|
|
uploadButton: "Tải lên",
|
|
defaultFormats: "PNG, JPG, WebP, HEIC, RAW, PSD và hơn 65 định dạng",
|
|
orSeparator: "hoặc",
|
|
urlPlaceholder: "Dán URL hình ảnh...",
|
|
urlLoadingIndicator: "...",
|
|
addUrlButton: "Thêm",
|
|
importMultipleUrls: "Nhập nhiều URL...",
|
|
filesSelected: "Đã chọn {count} tệp",
|
|
dropToAdd: "Tha de them tep",
|
|
dropToReplace: "Tha de thay the tep",
|
|
},
|
|
reviewPanel: {
|
|
processedResultAlt: "Kết quả đã xử lý",
|
|
sizeLabel: "Dung lượng: {size}",
|
|
typeLabel: "Loại: {type}",
|
|
processedLabel: "Đã xử lý: {time}",
|
|
undoButton: "Hoàn tác",
|
|
downloadButton: "Tải xuống",
|
|
openInEditor: "Mở trong trình chỉnh sửa",
|
|
reviewHeading: "Xem lại",
|
|
continueEditing: "Tiếp tục chỉnh sửa",
|
|
},
|
|
features: {
|
|
notEnabledTitle: "Tính năng chưa được bật",
|
|
notEnabledDescription:
|
|
"Tính năng này chưa được bật. Hãy yêu cầu quản trị viên bật trong Cài đặt.",
|
|
requiresDownload: "Tính năng này cần tải thêm (~{size})",
|
|
retryButton: "Thử lại",
|
|
queued: "Đang xếp hàng để cài đặt...",
|
|
enableButton: "Bật {name}",
|
|
repairRequired: "Repair Required",
|
|
repairDescription: "Some model files are missing or corrupted. Repair will re-download them.",
|
|
repairButton: "Repair {name}",
|
|
lessThanMinute: "Còn chưa đầy một phút",
|
|
oneMinuteLeft: "Còn khoảng 1 phút",
|
|
minutesLeft: "Còn khoảng {mins} phút",
|
|
progressMessages: [
|
|
"Sắp xong rồi... có lẽ thế...",
|
|
"Của ngon phải chờ...",
|
|
"Vẫn nhanh hơn đợi sơn khô...",
|
|
"Sự kiên nhẫn của bạn thật đáng ngưỡng mộ...",
|
|
"Đang làm việc chăm chỉ hơn vẻ ngoài...",
|
|
"Đây là phần hấp dẫn nhất đấy, tin đi...",
|
|
"Đang xử lý những thứ quan trọng phía sau...",
|
|
"Nếu bạn đang đọc dòng này, nghĩa là đang hoạt động...",
|
|
"Đang chuẩn bị điều tuyệt vời...",
|
|
"Xứng đáng với từng giây chờ đợi, hứa đấy...",
|
|
"Sự hồi hộp cũng là một phần trải nghiệm...",
|
|
"Đang dạy máy tính của bạn kỹ năng mới...",
|
|
"Đang thiết lập siêu năng lực cho bạn...",
|
|
"Ảnh của bạn sẽ cảm ơn bạn sau...",
|
|
"Đang tải... nhưng kiểu sang chảnh...",
|
|
"Lúc này pha cà phê uống cũng hay phết...",
|
|
"Thành Rome cũng không xây trong một ngày...",
|
|
"Suỵt... thiên tài đang làm việc...",
|
|
"Đang khiến ảnh của bạn ghen tị với điều sắp tới...",
|
|
"Đang tập hợp đội ngũ trong mơ...",
|
|
"Đang mở gói quà tuyệt vời...",
|
|
"Sắp xong phần suy nghĩ... đùa thôi...",
|
|
"Bất ngờ: thực ra đang làm việc thật đấy...",
|
|
"Đang khởi động động cơ sáng tạo...",
|
|
"Trí tưởng tượng đang tải...",
|
|
"Không phải màn hình chờ đâu, hứa đấy...",
|
|
"Nghệ thuật đỉnh cao cần thời gian để cài đặt...",
|
|
"Bản thân tương lai của bạn sẽ cảm ơn...",
|
|
"Đang tải về những tệp thông minh...",
|
|
"Giữ vững tinh thần, điều tốt nhất sắp đến...",
|
|
],
|
|
},
|
|
help: {
|
|
heading: "Trợ giúp",
|
|
gettingStarted: {
|
|
heading: "Bắt đầu",
|
|
description:
|
|
"Chọn một công cụ từ thanh bên hoặc tìm kiếm. Tải lên hình ảnh bằng cách kéo thả vào trang hoặc nhấp vào vùng tải lên. Điều chỉnh cài đặt và tải xuống kết quả.",
|
|
},
|
|
keyboardShortcuts: {
|
|
heading: "Phím tắt",
|
|
focusSearchBar: "Lấy nét thanh tìm kiếm",
|
|
goToTools: "Đến công cụ",
|
|
toggleTheme: "Chuyển đổi giao diện",
|
|
goToResize: "Đến Thay đổi kích thước",
|
|
goToCrop: "Đến Cắt ảnh",
|
|
goToCompress: "Đến Nén ảnh",
|
|
goToConvert: "Đến Chuyển đổi",
|
|
goToRemoveBackground: "Đến Xóa nền",
|
|
goToWatermarkText: "Đến Hình mờ văn bản",
|
|
goToStripMetadata: "Đến Xóa siêu dữ liệu",
|
|
goToImageInfo: "Đến Thông tin ảnh",
|
|
},
|
|
resources: {
|
|
heading: "Tài nguyên",
|
|
githubLink: "Kho mã nguồn GitHub",
|
|
reportIssueLink: "Báo cáo lỗi",
|
|
docsLink: "Tài liệu",
|
|
apiRefLink: "Tham chiếu API (Swagger)",
|
|
},
|
|
versionLabel: "SnapOtter v{version}",
|
|
},
|
|
errors: {
|
|
generic: "Đã xảy ra lỗi",
|
|
offline: "Bạn đang ngoại tuyến",
|
|
reconnecting: "Đang kết nối lại với máy chủ...",
|
|
connected: "Đã kết nối",
|
|
processingFailed: "Xử lý thất bại cho tệp này",
|
|
timeout: "Yêu cầu đã hết thời gian. Máy chủ có thể đang quá tải. Vui lòng thử lại.",
|
|
networkError: "Lỗi mạng. Kiểm tra kết nối của bạn.",
|
|
invalidCredentials: "Tên đăng nhập hoặc mật khẩu không đúng",
|
|
connectionError: "Lỗi kết nối",
|
|
},
|
|
analytics: {
|
|
consentTitle: "Giúp cải thiện SnapOtter",
|
|
consentDescription:
|
|
"Thống kê sử dụng ẩn danh giúp chúng tôi sửa lỗi và xây dựng các công cụ bạn thực sự cần. Hình ảnh và tệp của bạn luôn ở trên máy bạn.",
|
|
consentChangeable: "Bạn có thể tắt bất cứ lúc nào trong Cài đặt.",
|
|
acceptButton: "Được thôi, nghe hay đấy",
|
|
declineButton: "Để sau",
|
|
settingsTitle: "Phân tích sản phẩm",
|
|
settingsDescription: "Chia sẻ dữ liệu sử dụng ẩn danh để giúp cải thiện SnapOtter.",
|
|
settingsPrivacy: "Hình ảnh của bạn không bao giờ rời khỏi máy.",
|
|
settingsDisabledByAdmin: "Phân tích sản phẩm đã bị vô hiệu hóa bởi quản trị viên máy chủ.",
|
|
learnMore: "Tìm hiểu thêm",
|
|
},
|
|
sidebar: {
|
|
tools: "Công cụ",
|
|
grid: "Lưới",
|
|
automate: "Tự động hóa",
|
|
editor: "Chỉnh sửa",
|
|
files: "Tệp",
|
|
help: "Trợ giúp",
|
|
settings: "Cài đặt",
|
|
},
|
|
toolCard: {
|
|
addToFavourites: "Thêm vào yêu thích",
|
|
},
|
|
appLayout: {
|
|
mobileNavTools: "Công cụ",
|
|
mobileNavAutomate: "Tự động hóa",
|
|
mobileNavEditor: "Chỉnh sửa",
|
|
mobileNavFiles: "Tệp",
|
|
mobileNavSettings: "Cài đặt",
|
|
},
|
|
a11y: {
|
|
skipToContent: "Skip to main content",
|
|
openSidebar: "Open sidebar",
|
|
closeSidebar: "Close sidebar",
|
|
closeSettings: "Close settings",
|
|
closeHelp: "Close help",
|
|
closeDialog: "Close dialog",
|
|
zoomIn: "Zoom in",
|
|
zoomOut: "Zoom out",
|
|
fitToView: "Fit to view",
|
|
actualSize: "Actual size",
|
|
previousImage: "Previous image",
|
|
nextImage: "Next image",
|
|
imageArea: "Image area",
|
|
imageViewer: "Image viewer",
|
|
fileDropZone: "File drop zone",
|
|
imageDropZone: "Image drop zone",
|
|
beforeAfterSlider: "Before/after comparison slider",
|
|
imageControls: "Image controls",
|
|
zoomControls: "Zoom controls",
|
|
dragToReorder: "Drag to reorder",
|
|
whiteBackground: "White background",
|
|
blackBackground: "Black background",
|
|
expandPanel: "Expand panel",
|
|
collapsePanel: "Collapse panel",
|
|
swapDimensions: "Swap dimensions",
|
|
applyCrop: "Apply crop",
|
|
cancelCrop: "Cancel crop",
|
|
fontFamily: "Font family",
|
|
textColor: "Text color",
|
|
flipHorizontal: "Flip horizontal",
|
|
flipVertical: "Flip vertical",
|
|
hexColorValue: "Hex color value",
|
|
backgroundColor: "Background color",
|
|
foregroundColor: "Foreground color",
|
|
swapColors: "Swap foreground and background colors",
|
|
resetColors: "Reset to default black and white",
|
|
foregroundHex: "Foreground color hex value",
|
|
undo: "Undo",
|
|
redo: "Redo",
|
|
layers: "Layers",
|
|
addLayer: "Add layer",
|
|
deleteLayer: "Delete layer",
|
|
cancelOperation: "Cancel operation",
|
|
fill: "Fill",
|
|
fileDetails: "File details",
|
|
language: "Language",
|
|
selected: "Selected",
|
|
deleteKey: "Delete key",
|
|
editRole: "Edit role",
|
|
deleteRole: "Delete role",
|
|
notInstalled: "Not installed",
|
|
queued: "Queued for install",
|
|
installing: "Installing",
|
|
imageNOfTotal: "Image {n} of {total}",
|
|
processingComplete: "Image processed successfully",
|
|
processingFailed: "Processing failed",
|
|
settingsDialog: "Settings",
|
|
helpDialog: "Help",
|
|
navigationMenu: "Navigation",
|
|
},
|
|
} as const;
|