Repository navigation
Expand file tree
/
Copy pathLocalization.cs
More file actions
165 lines (165 loc) · 16.4 KB
/
Copy pathLocalization.cs
File metadata and controls
165 lines (165 loc) · 16.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
using System;
using System.Collections.Generic;
namespace FileTracker {
public static class Loc {
public static volatile string Language = "vi";
public static readonly string[] CategoryKeys = {"", "Tài liệu", "Hình ảnh", "Video / Âm thanh", "Ứng dụng", "File nén", "Mã nguồn", "Kỹ thuật", "Khác"};
static readonly Dictionary<string,string> English = new Dictionary<string,string> {
{ "Bật", "On" },
{ "Tắt", "Off" },
{ "Chung", "General" },
{ "Ngôn ngữ", "Language" },
{ "Hủy thay đổi", "Discard changes" },
{ "Tùy chỉnh cách FileTracker hoạt động trên máy bạn.", "Make FileTracker work the way you do." },
{ "Khởi động cùng Windows", "Launch on Windows startup" },
{ "Tự mở FileTracker dưới khay hệ thống khi đăng nhập.", "Start in the system tray when you sign in to Windows." },
{ "Tiếp tục chạy khi đóng cửa sổ", "Keep running when the window closes" },
{ "Giữ theo dõi file dưới khay hệ thống.", "Continue monitoring files in the system tray." },
{ "Bỏ qua thư mục lập trình", "Skip development folders" },
{ "Bỏ qua .git, node_modules, __pycache__, .venv và venv.", "Exclude .git, node_modules, __pycache__, .venv and venv." },
{ "Áp dụng ngay cho giao diện và menu của ứng dụng.", "Apply immediately to the interface and app menus." },
{ "KHÔNG GIAN LÀM VIỆC", "WORKSPACE" },
{ "Tìm kiếm", "Search" },
{ "Chỉ lưu trên máy", "Stored locally" },
{ "Thư mục", "Folder" },
{ "Loại file", "File type" },
{ "Sắp xếp", "Sort order" },
{ "Đặt lại bộ lọc", "Reset filters" },
{ "Xóa tìm kiếm", "Clear search" },
{ "Danh sách file", "File list" },
{ "Trang trước", "Previous page" },
{ "Trang sau", "Next page" },
{ "Bỏ đánh dấu", "Unstar" },
{ "Đang theo dõi", "Monitoring" },
{ "Đã tạm dừng", "Paused" },
{ "Đang đồng bộ…", "Syncing…" },
{ "Không có file phù hợp", "No matching files" },
{ "Thử đổi từ khóa hoặc đặt lại bộ lọc.", "Try another search or reset the filters." },
{ "Kh\u00f4ng m\u1edf \u0111\u01b0\u1ee3c FileTracker. N\u1ebfu app \u0111ang ch\u1ea1y, m\u1edf t\u1eeb bi\u1ec3u t\u01b0\u1ee3ng \u1edf khay h\u1ec7 th\u1ed1ng.\n\n", "Could not open FileTracker. If it is already running, open it from the system tray.\n\n" },
{ "FileTracker \u00b7 L\u1ed7i", "FileTracker \u00b7 Error" },
{ "FileTracker \u00b7 Theo d\u00f5i file", "FileTracker \u00b7 File monitoring" },
{ "M\u1edf FileTracker", "Open FileTracker" },
{ "T\u1ea1m d\u1eebng / Ti\u1ebfp t\u1ee5c", "Pause / Resume" },
{ "Tho\u00e1t", "Exit" },
{ "V\u1eabn theo d\u00f5i trong khay h\u1ec7 th\u1ed1ng. Nh\u1ea5p \u0111\u00f4i bi\u1ec3u t\u01b0\u1ee3ng \u0111\u1ec3 m\u1edf l\u1ea1i.", "Monitoring continues in the system tray. Double-click the icon to reopen." },
{ "\u0110ang d\u1eebng theo d\u00f5i\u2026", "Stopping monitoring\u2026" },
{ "L\u1ecaCH S\u1eec FILE TR\u00caN M\u00c1Y", "YOUR LOCAL FILE HISTORY" },
{ "File g\u1ea7n \u0111\u00e2y", "Recent files" },
{ "L\u1ecbch s\u1eed thay \u0111\u1ed5i", "Activity history" },
{ "File \u0111\u00e3 \u0111\u00e1nh d\u1ea5u", "Starred files" },
{ "File l\u1edbn \u2265 100 MB", "Large files \u2265 100 MB" },
{ "D\u1eef li\u1ec7u l\u01b0u tr\u00ean m\u00e1y\nKh\u00f4ng t\u1ea3i n\u1ed9i dung file l\u00ean m\u1ea1ng\n\nCtrl + F \u00b7 T\u00ecm ki\u1ebfm\nF5 \u00b7 \u0110\u1ed3ng b\u1ed9 l\u1ea1i", "Stored on your computer\nNo file content is uploaded\n\nCtrl + F \u00b7 Search\nF5 \u00b7 Rescan" },
{ "File c\u00f3 s\u1eb5n \u0111\u01b0\u1ee3c s\u1eafp theo th\u1eddi gian Windows ghi nh\u1eadn.", "Existing files use timestamps recorded by Windows." },
{ "\u0110\u1ed3ng b\u1ed9 l\u1ea1i", "Rescan" },
{ "T\u1ea1m d\u1eebng", "Pause" },
{ "Th\u01b0 m\u1ee5c & C\u00e0i \u0111\u1eb7t", "Folders & Settings" },
{ "Xu\u1ea5t CSV", "Export CSV" },
{ "Tr\u1ee3 gi\u00fap", "Help" },
{ "T\u00ecm t\u00ean file ho\u1eb7c \u0111\u01b0\u1eddng d\u1eabn", "Search file names or paths" },
{ "T\u00ecm t\u00ean file ho\u1eb7c \u0111\u01b0\u1eddng d\u1eabn (Ctrl+F)", "Search file names or paths (Ctrl+F)" },
{ "T\u1ea5t c\u1ea3 th\u01b0 m\u1ee5c", "All folders" },
{ "T\u1ea5t c\u1ea3 lo\u1ea1i", "All types" },
{ "T\u00e0i li\u1ec7u", "Documents" },
{ "H\u00ecnh \u1ea3nh", "Images" },
{ "Video / \u00c2m thanh", "Video / Audio" },
{ "\u1ee8ng d\u1ee5ng", "Applications" },
{ "File n\u00e9n", "Archives" },
{ "M\u00e3 ngu\u1ed3n", "Source code" },
{ "K\u1ef9 thu\u1eadt", "Technical" },
{ "Kh\u00e1c", "Other" },
{ "M\u1ecdi th\u1eddi gian", "Any time" },
{ "H\u00f4m nay", "Today" },
{ "7 ng\u00e0y qua", "Last 7 days" },
{ "30 ng\u00e0y qua", "Last 30 days" },
{ "\u1ea8n file k\u1ef9 thu\u1eadt", "Hide technical files" },
{ "Ng\u00e0y t\u1ea1o m\u1edbi nh\u1ea5t", "Newest created" },
{ "Ng\u00e0y s\u1eeda m\u1edbi nh\u1ea5t", "Newest modified" },
{ "Dung l\u01b0\u1ee3ng l\u1edbn nh\u1ea5t", "Largest first" },
{ "\u0110ang l\u1eadp ch\u1ec9 m\u1ee5c\u2026", "Indexing\u2026" },
{ "T\u00ean file", "File name" },
{ "Th\u1eddi gian", "Time" },
{ "Lo\u1ea1i / Ho\u1ea1t \u0111\u1ed9ng", "Type / Activity" },
{ "Dung l\u01b0\u1ee3ng", "Size" },
{ "\u0110\u01b0\u1eddng d\u1eabn", "Path" },
{ "Ch\u1ecdn file \u0111\u1ec3 xem \u0111\u01b0\u1eddng d\u1eabn v\u00e0 thao t\u00e1c.", "Select a file to view its path and available actions." },
{ "\nTr\u01b0\u1edbc \u0111\u00f3: ", "\nPrevious path: " },
{ "M\u1edf file", "Open file" },
{ "M\u1edf th\u01b0 m\u1ee5c ch\u1ee9a", "Open containing folder" },
{ "Sao ch\u00e9p \u0111\u01b0\u1eddng d\u1eabn", "Copy path" },
{ "\u0110\u00e1nh d\u1ea5u / B\u1ecf \u0111\u00e1nh d\u1ea5u", "Star / Unstar" },
{ "M\u1edf th\u01b0 m\u1ee5c", "Open folder" },
{ "Copy \u0111\u01b0\u1eddng d\u1eabn", "Copy path" },
{ "\u0110\u00e1nh d\u1ea5u", "Star" },
{ "Trang 1", "Page 1" },
{ "Trang ", "Page " },
{ "Chu\u1ea9n b\u1ecb theo d\u00f5i\u2026", "Preparing to monitor\u2026" },
{ "Chi ti\u1ebft l\u1ea7n b\u1ecf qua g\u1ea7n nh\u1ea5t", "Most recent skipped item" },
{ "Thay \u0111\u1ed5i \u0111\u01b0\u1ee3c ghi nh\u1eadn khi app ch\u1ea1y; k\u1ebft qu\u1ea3 qu\u00e9t l\u1ea1i c\u00f3 nh\u00e3n \u201cPh\u00e1t hi\u1ec7n\u201d.", "Live changes are recorded while running; scan results are labeled \u201cDetected\u201d." },
{ "C\u00e1c file t\u1eeb 100 MB, \u01b0u ti\u00ean dung l\u01b0\u1ee3ng l\u1edbn nh\u1ea5t.", "Files of 100 MB or more, largest first." },
{ "Nh\u1eefng file b\u1ea1n \u0111\u00e1nh d\u1ea5u \u0111\u1ec3 m\u1edf l\u1ea1i nhanh.", "Files you have starred for quick access." },
{ "Ti\u1ebfp t\u1ee5c", "Resume" },
{ " l\u1ea7n kh\u00f4ng \u0111\u1ecdc \u0111\u01b0\u1ee3c (b\u1ea5m xem)", " read errors (click for details)" },
{ "THEO DUNG L\u01af\u1ee2NG", "BY SIZE" },
{ "H\u00d4M NAY", "TODAY" },
{ "H\u00d4M QUA", "YESTERDAY" },
{ "Th\u00eam", "Added" },
{ "S\u1eeda", "Modified" },
{ "X\u00f3a", "Deleted" },
{ "\u0110\u1ed5i t\u00ean / Di chuy\u1ec3n", "Renamed / Moved" },
{ "Ph\u00e1t hi\u1ec7n th\u00eam", "Detected addition" },
{ "Ph\u00e1t hi\u1ec7n s\u1eeda", "Detected modification" },
{ "Ph\u00e1t hi\u1ec7n m\u1ea5t", "Detected missing" },
{ "Ra kh\u1ecfi ph\u1ea1m vi", "Moved out of scope" },
{ "Kh\u00f4ng c\u00f3 k\u1ebft qu\u1ea3 \u00b7 th\u1eed \u0111\u1ed5i b\u1ed9 l\u1ecdc", "No results \u00b7 try changing filters" },
{ " m\u1ee5c / trang \u00b7 ", " items / page \u00b7 " },
{ "l\u1ecbch s\u1eed ghi nh\u1eadn", "recorded activity" },
{ "file hi\u1ec7n c\u00f3", "existing files" },
{ "App \u0111ang qu\u00e9t l\u1ea7n \u0111\u1ea7u. K\u1ebft qu\u1ea3 s\u1ebd t\u1ef1 xu\u1ea5t hi\u1ec7n.", "The initial scan is running. Results will appear automatically." },
{ "Ch\u01b0a c\u00f3 m\u1ee5c ph\u00f9 h\u1ee3p. Th\u1eed b\u1ecf b\u1ed9 l\u1ecdc ho\u1eb7c ch\u1ecdn \u0110\u1ed3ng b\u1ed9 l\u1ea1i.", "No matching items yet. Clear filters or select Rescan." },
{ "Kh\u00f4ng t\u1ea3i \u0111\u01b0\u1ee3c danh s\u00e1ch: ", "Could not load the list: " },
{ "Th\u01b0 m\u1ee5c kh\u00f4ng c\u00f2n t\u1ed3n t\u1ea1i ho\u1eb7c \u1ed5 \u0111\u0129a ch\u01b0a k\u1ebft n\u1ed1i.", "The folder no longer exists or the drive is disconnected." },
{ "File kh\u00f4ng c\u00f2n \u1edf \u0111\u01b0\u1eddng d\u1eabn n\u00e0y. Xem L\u1ecbch s\u1eed thay \u0111\u1ed5i ho\u1eb7c \u0111\u1ed3ng b\u1ed9 l\u1ea1i.", "The file is no longer at this path. Check Activity history or rescan." },
{ "File n\u00e0y c\u00f3 th\u1ec3 ch\u1ea1y ch\u01b0\u01a1ng tr\u00ecnh ho\u1eb7c l\u1ec7nh:\n\n", "This file may run a program or command:\n\n" },
{ "\n\nB\u1ea1n mu\u1ed1n m\u1edf?", "\n\nDo you want to open it?" },
{ "Kh\u00f4ng m\u1edf \u0111\u01b0\u1ee3c file", "Could not open the file" },
{ "\u0110\u00e3 sao ch\u00e9p \u0111\u01b0\u1eddng d\u1eabn.", "Path copied." },
{ "Kh\u00f4ng \u0111\u00e1nh d\u1ea5u \u0111\u01b0\u1ee3c file", "Could not star the file" },
{ "T\u00ean file,Th\u1eddi gian,Lo\u1ea1i ho\u1eb7c ho\u1ea1t \u0111\u1ed9ng,Dung l\u01b0\u1ee3ng (byte),\u0110\u01b0\u1eddng d\u1eabn,\u0110\u01b0\u1eddng d\u1eabn c\u0169", "File name,Time,Type or activity,Size (bytes),Path,Previous path" },
{ "\u0110\u00e3 xu\u1ea5t ", "Exported " },
{ " m\u1ee5c theo b\u1ed9 l\u1ecdc hi\u1ec7n t\u1ea1i.", " items using the current filters." },
{ "\n\u0110\u00e3 ch\u1ea1m gi\u1edbi h\u1ea1n 50.000 m\u1ee5c; h\u00e3y l\u1ecdc theo th\u01b0 m\u1ee5c/ng\u00e0y \u0111\u1ec3 xu\u1ea5t ti\u1ebfp.", "\nThe 50,000-item limit was reached. Filter by folder or date to export more." },
{ "Kh\u00f4ng xu\u1ea5t \u0111\u01b0\u1ee3c CSV", "Could not export CSV" },
{ "C\u00e1c th\u01b0 m\u1ee5c \u0111\u01b0\u1ee3c theo d\u00f5i (bao g\u1ed3m th\u01b0 m\u1ee5c con)", "Monitored folders (including subfolders)" },
{ "Th\u00eam th\u01b0 m\u1ee5c", "Add folder" },
{ "Th\u01b0 m\u1ee5c n\u00e0y \u0111\u00e3 \u0111\u01b0\u1ee3c theo d\u00f5i ho\u1eb7c tr\u00f9ng ph\u1ea1m vi v\u1edbi m\u1ed9t th\u01b0 m\u1ee5c \u0111ang c\u00f3.", "This folder is already monitored or overlaps an existing folder." },
{ "B\u1ecf theo d\u00f5i m\u1ee5c ch\u1ecdn", "Remove selected folder" },
{ "B\u1ecf qua .git, node_modules, __pycache__, .venv v\u00e0 venv", "Skip .git, node_modules, __pycache__, .venv and venv" },
{ "\u0110\u00f3ng c\u1eeda s\u1ed5 \u2192 ti\u1ebfp t\u1ee5c theo d\u00f5i d\u01b0\u1edbi khay h\u1ec7 th\u1ed1ng", "Keep monitoring in the system tray when the window is closed" },
{ "Kh\u1edfi \u0111\u1ed9ng c\u00f9ng Windows (\u1ea9n d\u01b0\u1edbi khay h\u1ec7 th\u1ed1ng)", "Start with Windows (minimized to the system tray)" },
{ "Thay \u0111\u1ed5i ph\u1ea1m vi \u00e1p d\u1ee5ng sau khi m\u1edf l\u1ea1i app. File g\u1ed1c kh\u00f4ng b\u1ecb thay \u0111\u1ed5i.", "Folder changes apply after restarting. Original files are not modified." },
{ "L\u01b0u c\u00e0i \u0111\u1eb7t", "Save settings" },
{ "\u0110\u00e3 l\u01b0u. Ch\u1ecdn Tho\u00e1t \u1edf khay h\u1ec7 th\u1ed1ng r\u1ed3i m\u1edf l\u1ea1i app \u0111\u1ec3 \u00e1p d\u1ee5ng ph\u1ea1m vi m\u1edbi.", "Saved. Select Exit in the system tray, then reopen to apply the new folder scope." },
{ "C\u00e0i \u0111\u1eb7t", "Settings" },
{ "Kh\u00f4ng l\u01b0u \u0111\u01b0\u1ee3c c\u00e0i \u0111\u1eb7t", "Could not save settings" },
{ "H\u01b0\u1edbng d\u1eabn", "User guide" },
{ "\n\nNh\u1ea5p \u0111\u00f4i file \u0111\u1ec3 m\u1edf. Ctrl+F: t\u00ecm ki\u1ebfm; Ctrl+C tr\u00ean d\u00f2ng ch\u1ecdn: copy \u0111\u01b0\u1eddng d\u1eabn; F5: \u0111\u1ed3ng b\u1ed9.", "\n\nDouble-click to open. Ctrl+F: search; Ctrl+C on a selected row: copy path; F5: rescan." },
{ "Ng\u00f4n ng\u1eef / Language", "Language / Ng\u00f4n ng\u1eef" },
{ "\u0110\u00e3 l\u01b0u c\u00e0i \u0111\u1eb7t.", "Settings saved." },
{ "settings.json kh\u00f4ng h\u1ee3p l\u1ec7.", "Invalid settings.json." },
{ "Kh\u00f4ng m\u1edf \u0111\u01b0\u1ee3c c\u01a1 s\u1edf d\u1eef li\u1ec7u.", "Could not open the database." },
{ "Chu\u1ea9n b\u1ecb\u2026", "Preparing\u2026" },
{ "Kh\u00f4ng truy c\u1eadp \u0111\u01b0\u1ee3c: ", "Cannot access: " },
{ "B\u1ed9 theo d\u00f5i c\u1ea7n \u0111\u1ed3ng b\u1ed9 l\u1ea1i: ", "Monitoring needs a rescan: " },
{ "Th\u01b0 m\u1ee5c kh\u00f4ng s\u1eb5n s\u00e0ng: ", "Folder is unavailable: " },
{ "\u0110ang qu\u00e9t nh\u1eb9 ", "Scanning in the background: " },
{ " file", " files" },
{ "M\u1ea5t k\u1ebft n\u1ed1i th\u01b0 m\u1ee5c trong l\u00fac qu\u00e9t: ", "Folder disconnected during the scan: " },
{ "\u0110\u00e3 t\u1ea1m d\u1eebng \u00b7 Ti\u1ebfp t\u1ee5c \u0111\u1ec3 \u0111\u1ed3ng b\u1ed9 l\u1ea1i", "Paused \u00b7 Resume to resync" },
{ "\u0110ang theo d\u00f5i ", "Monitoring " },
{ " th\u01b0 m\u1ee5c \u00b7 \u0110\u1ed3ng b\u1ed9 m\u1ed7i 30 ph\u00fat", " folders \u00b7 Rescans every 30 minutes" },
{ "Theo d\u00f5i \u0111\u00e3 d\u1eebng: ", "Monitoring stopped: " },
{ "FILETRACKER\n\n\u2022 File g\u1ea7n \u0111\u00e2y: th\u1eddi gian t\u1ea1o/s\u1eeda do Windows ghi nh\u1eadn; kh\u00f4ng kh\u1eb3ng \u0111\u1ecbnh \u0111\u00e2y l\u00e0 l\u00fac t\u1ea3i file.\n\u2022 L\u1ecbch s\u1eed thay \u0111\u1ed5i: Th\u00eam, S\u1eeda, X\u00f3a, \u0110\u1ed5i t\u00ean khi app ch\u1ea1y. Nh\u00e3n 'Ph\u00e1t hi\u1ec7n' l\u00e0 k\u1ebft qu\u1ea3 so s\u00e1nh khi qu\u00e9t l\u1ea1i, kh\u00f4ng bi\u1ebft ch\u00ednh x\u00e1c l\u00fac thao t\u00e1c x\u1ea3y ra.\n\u2022 Kh\u00f4ng kh\u00f4i ph\u1ee5c n\u1ed9i dung ho\u1eb7c phi\u00ean b\u1ea3n file c\u0169.\n\u2022 \u0110\u1ed5i t\u00ean th\u01b0 m\u1ee5c \u0111\u01b0\u1ee3c \u0111\u1ed1i so\u00e1t th\u00e0nh c\u00e1c file m\u1ea5t/th\u00eam; chuy\u1ec3n gi\u1eefa hai th\u01b0 m\u1ee5c theo d\u00f5i c\u00f3 th\u1ec3 hi\u1ec7n l\u00e0 X\u00f3a v\u00e0 Th\u00eam.\n\u2022 \u1ea8n file k\u1ef9 thu\u1eadt ch\u1ec9 l\u1ecdc giao di\u1ec7n. B\u1ecf qua th\u01b0 m\u1ee5c l\u1eadp tr\u00ecnh l\u00e0 c\u00e0i \u0111\u1eb7t ph\u1ea1m vi qu\u00e9t.\n\u2022 B\u1ecf qua junction/symlink, th\u00f9ng r\u00e1c v\u00e0 th\u01b0 m\u1ee5c h\u1ec7 th\u1ed1ng kh\u00f4ng \u0111\u1ecdc \u0111\u01b0\u1ee3c. Kh\u00f4ng c\u1ea7n quy\u1ec1n Administrator.\n\u2022 Gi\u1eef t\u1ed1i \u0111a 100.000 s\u1ef1 ki\u1ec7n g\u1ea7n nh\u1ea5t; m\u1ed7i trang 200 m\u1ee5c.\n\u2022 App kh\u00f4ng ghi nh\u1eadn l\u00fac \u0111\u00e3 tho\u00e1t/t\u1ea1m d\u1eebng. Qu\u00e9t l\u1ea1i kh\u00f4ng th\u1ec3 t\u00ecm file \u0111\u00e3 t\u1ea1o r\u1ed3i x\u00f3a trong th\u1eddi gian \u0111\u00f3.\n\u2022 Database ch\u1ec9 ch\u1ee9a t\u00ean, \u0111\u01b0\u1eddng d\u1eabn v\u00e0 th\u00f4ng tin file, \u1edf:\n", "FILETRACKER\n\n\u2022 Recent files: Windows creation/modification timestamps are not necessarily download times.\n\u2022 Activity history: live additions, modifications, deletions and renames. \u201cDetected\u201d events come from rescans; their exact original time is unknown.\n\u2022 Previous file contents and deleted files cannot be restored.\n\u2022 Folder renames are reconciled as missing/added files. Moving between monitored roots may appear as Deleted and Added.\n\u2022 Hide technical files only filters the view. Skipping development folders changes scan scope.\n\u2022 Directory junctions/symlinks, the recycle bin and unreadable system folders are skipped. Administrator access is not required.\n\u2022 Keeps up to 100,000 recent events after resync; 200 items per page.\n\u2022 No live recording while exited or paused. Rescanning cannot recover a file created and deleted during that gap.\n\u2022 The database stores only names, paths and file metadata at:\n" },
};
public static string T(string key) { string value; return Language=="en"&&English.TryGetValue(key,out value)?value:key; }
}
}