@molecule/app-locales-ide 1.10.13 → 1.11.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (240) hide show
  1. package/README.md +12 -3
  2. package/dist/af.d.ts.map +1 -1
  3. package/dist/af.js +160 -155
  4. package/dist/af.js.map +1 -1
  5. package/dist/am.d.ts.map +1 -1
  6. package/dist/am.js +163 -158
  7. package/dist/am.js.map +1 -1
  8. package/dist/ar.d.ts.map +1 -1
  9. package/dist/ar.js +88 -75
  10. package/dist/ar.js.map +1 -1
  11. package/dist/az.d.ts.map +1 -1
  12. package/dist/az.js +158 -153
  13. package/dist/az.js.map +1 -1
  14. package/dist/be.d.ts.map +1 -1
  15. package/dist/be.js +162 -153
  16. package/dist/be.js.map +1 -1
  17. package/dist/bg.d.ts.map +1 -1
  18. package/dist/bg.js +77 -72
  19. package/dist/bg.js.map +1 -1
  20. package/dist/bn.d.ts.map +1 -1
  21. package/dist/bn.js +159 -154
  22. package/dist/bn.js.map +1 -1
  23. package/dist/bs.d.ts.map +1 -1
  24. package/dist/bs.js +159 -152
  25. package/dist/bs.js.map +1 -1
  26. package/dist/ca.d.ts.map +1 -1
  27. package/dist/ca.js +161 -154
  28. package/dist/ca.js.map +1 -1
  29. package/dist/cs.d.ts.map +1 -1
  30. package/dist/cs.js +84 -77
  31. package/dist/cs.js.map +1 -1
  32. package/dist/cy.d.ts.map +1 -1
  33. package/dist/cy.js +167 -154
  34. package/dist/cy.js.map +1 -1
  35. package/dist/da.d.ts.map +1 -1
  36. package/dist/da.js +79 -74
  37. package/dist/da.js.map +1 -1
  38. package/dist/de.d.ts.map +1 -1
  39. package/dist/de.js +80 -75
  40. package/dist/de.js.map +1 -1
  41. package/dist/el.d.ts.map +1 -1
  42. package/dist/el.js +84 -79
  43. package/dist/el.js.map +1 -1
  44. package/dist/en.d.ts.map +1 -1
  45. package/dist/en.js +14 -0
  46. package/dist/en.js.map +1 -1
  47. package/dist/es.d.ts.map +1 -1
  48. package/dist/es.js +83 -76
  49. package/dist/es.js.map +1 -1
  50. package/dist/et.d.ts.map +1 -1
  51. package/dist/et.js +81 -76
  52. package/dist/et.js.map +1 -1
  53. package/dist/eu.d.ts.map +1 -1
  54. package/dist/eu.js +160 -155
  55. package/dist/eu.js.map +1 -1
  56. package/dist/fa.d.ts.map +1 -1
  57. package/dist/fa.js +158 -153
  58. package/dist/fa.js.map +1 -1
  59. package/dist/fi.d.ts.map +1 -1
  60. package/dist/fi.js +81 -76
  61. package/dist/fi.js.map +1 -1
  62. package/dist/fil.d.ts.map +1 -1
  63. package/dist/fil.js +159 -154
  64. package/dist/fil.js.map +1 -1
  65. package/dist/fr.d.ts.map +1 -1
  66. package/dist/fr.js +78 -71
  67. package/dist/fr.js.map +1 -1
  68. package/dist/ga.d.ts.map +1 -1
  69. package/dist/ga.js +163 -152
  70. package/dist/ga.js.map +1 -1
  71. package/dist/gl.d.ts.map +1 -1
  72. package/dist/gl.js +159 -154
  73. package/dist/gl.js.map +1 -1
  74. package/dist/gu.d.ts.map +1 -1
  75. package/dist/gu.js +158 -153
  76. package/dist/gu.js.map +1 -1
  77. package/dist/ha.d.ts.map +1 -1
  78. package/dist/ha.js +159 -154
  79. package/dist/ha.js.map +1 -1
  80. package/dist/he.d.ts.map +1 -1
  81. package/dist/he.js +166 -159
  82. package/dist/he.js.map +1 -1
  83. package/dist/hi.d.ts.map +1 -1
  84. package/dist/hi.js +158 -153
  85. package/dist/hi.js.map +1 -1
  86. package/dist/hr.d.ts.map +1 -1
  87. package/dist/hr.js +160 -153
  88. package/dist/hr.js.map +1 -1
  89. package/dist/hu.d.ts.map +1 -1
  90. package/dist/hu.js +77 -72
  91. package/dist/hu.js.map +1 -1
  92. package/dist/hy.d.ts.map +1 -1
  93. package/dist/hy.js +161 -156
  94. package/dist/hy.js.map +1 -1
  95. package/dist/id.d.ts.map +1 -1
  96. package/dist/id.js +84 -79
  97. package/dist/id.js.map +1 -1
  98. package/dist/ig.d.ts.map +1 -1
  99. package/dist/ig.js +160 -155
  100. package/dist/ig.js.map +1 -1
  101. package/dist/is.d.ts.map +1 -1
  102. package/dist/is.js +158 -153
  103. package/dist/is.js.map +1 -1
  104. package/dist/it.d.ts.map +1 -1
  105. package/dist/it.js +86 -79
  106. package/dist/it.js.map +1 -1
  107. package/dist/ja.d.ts.map +1 -1
  108. package/dist/ja.js +80 -75
  109. package/dist/ja.js.map +1 -1
  110. package/dist/ka.d.ts.map +1 -1
  111. package/dist/ka.js +160 -155
  112. package/dist/ka.js.map +1 -1
  113. package/dist/kk.d.ts.map +1 -1
  114. package/dist/kk.js +157 -152
  115. package/dist/kk.js.map +1 -1
  116. package/dist/km.d.ts.map +1 -1
  117. package/dist/km.js +160 -155
  118. package/dist/km.js.map +1 -1
  119. package/dist/kn.d.ts.map +1 -1
  120. package/dist/kn.js +158 -153
  121. package/dist/kn.js.map +1 -1
  122. package/dist/ko.d.ts.map +1 -1
  123. package/dist/ko.js +91 -86
  124. package/dist/ko.js.map +1 -1
  125. package/dist/ky.d.ts.map +1 -1
  126. package/dist/ky.js +158 -153
  127. package/dist/ky.js.map +1 -1
  128. package/dist/lo.d.ts.map +1 -1
  129. package/dist/lo.js +157 -152
  130. package/dist/lo.js.map +1 -1
  131. package/dist/lt.d.ts.map +1 -1
  132. package/dist/lt.js +77 -70
  133. package/dist/lt.js.map +1 -1
  134. package/dist/lv.d.ts.map +1 -1
  135. package/dist/lv.js +79 -72
  136. package/dist/lv.js.map +1 -1
  137. package/dist/mk.d.ts.map +1 -1
  138. package/dist/mk.js +158 -153
  139. package/dist/mk.js.map +1 -1
  140. package/dist/ml.d.ts.map +1 -1
  141. package/dist/ml.js +156 -151
  142. package/dist/ml.js.map +1 -1
  143. package/dist/mn.d.ts.map +1 -1
  144. package/dist/mn.js +158 -153
  145. package/dist/mn.js.map +1 -1
  146. package/dist/mr.d.ts.map +1 -1
  147. package/dist/mr.js +156 -151
  148. package/dist/mr.js.map +1 -1
  149. package/dist/ms.d.ts.map +1 -1
  150. package/dist/ms.js +159 -154
  151. package/dist/ms.js.map +1 -1
  152. package/dist/mt.d.ts.map +1 -1
  153. package/dist/mt.js +164 -153
  154. package/dist/mt.js.map +1 -1
  155. package/dist/my.d.ts.map +1 -1
  156. package/dist/my.js +156 -151
  157. package/dist/my.js.map +1 -1
  158. package/dist/nb.d.ts.map +1 -1
  159. package/dist/nb.js +79 -74
  160. package/dist/nb.js.map +1 -1
  161. package/dist/ne.d.ts.map +1 -1
  162. package/dist/ne.js +159 -154
  163. package/dist/ne.js.map +1 -1
  164. package/dist/nl.d.ts.map +1 -1
  165. package/dist/nl.js +80 -75
  166. package/dist/nl.js.map +1 -1
  167. package/dist/pa.d.ts.map +1 -1
  168. package/dist/pa.js +157 -152
  169. package/dist/pa.js.map +1 -1
  170. package/dist/pl.d.ts.map +1 -1
  171. package/dist/pl.js +84 -75
  172. package/dist/pl.js.map +1 -1
  173. package/dist/pt.d.ts.map +1 -1
  174. package/dist/pt.js +94 -87
  175. package/dist/pt.js.map +1 -1
  176. package/dist/ro.d.ts.map +1 -1
  177. package/dist/ro.js +84 -77
  178. package/dist/ro.js.map +1 -1
  179. package/dist/ru.d.ts.map +1 -1
  180. package/dist/ru.js +81 -72
  181. package/dist/ru.js.map +1 -1
  182. package/dist/si.d.ts.map +1 -1
  183. package/dist/si.js +160 -155
  184. package/dist/si.js.map +1 -1
  185. package/dist/sk.d.ts.map +1 -1
  186. package/dist/sk.js +81 -74
  187. package/dist/sk.js.map +1 -1
  188. package/dist/sl.d.ts.map +1 -1
  189. package/dist/sl.js +82 -73
  190. package/dist/sl.js.map +1 -1
  191. package/dist/sq.d.ts.map +1 -1
  192. package/dist/sq.js +157 -152
  193. package/dist/sq.js.map +1 -1
  194. package/dist/sr.d.ts.map +1 -1
  195. package/dist/sr.js +160 -153
  196. package/dist/sr.js.map +1 -1
  197. package/dist/sv.d.ts.map +1 -1
  198. package/dist/sv.js +84 -79
  199. package/dist/sv.js.map +1 -1
  200. package/dist/sw.d.ts.map +1 -1
  201. package/dist/sw.js +160 -155
  202. package/dist/sw.js.map +1 -1
  203. package/dist/ta.d.ts.map +1 -1
  204. package/dist/ta.js +156 -151
  205. package/dist/ta.js.map +1 -1
  206. package/dist/te.d.ts.map +1 -1
  207. package/dist/te.js +157 -152
  208. package/dist/te.js.map +1 -1
  209. package/dist/th.d.ts.map +1 -1
  210. package/dist/th.js +155 -150
  211. package/dist/th.js.map +1 -1
  212. package/dist/tr.d.ts.map +1 -1
  213. package/dist/tr.js +77 -72
  214. package/dist/tr.js.map +1 -1
  215. package/dist/types.d.ts +8 -3
  216. package/dist/types.d.ts.map +1 -1
  217. package/dist/uk.d.ts.map +1 -1
  218. package/dist/uk.js +81 -72
  219. package/dist/uk.js.map +1 -1
  220. package/dist/ur.d.ts.map +1 -1
  221. package/dist/ur.js +159 -154
  222. package/dist/ur.js.map +1 -1
  223. package/dist/uz.d.ts.map +1 -1
  224. package/dist/uz.js +157 -152
  225. package/dist/uz.js.map +1 -1
  226. package/dist/vi.d.ts.map +1 -1
  227. package/dist/vi.js +159 -154
  228. package/dist/vi.js.map +1 -1
  229. package/dist/yo.d.ts.map +1 -1
  230. package/dist/yo.js +161 -156
  231. package/dist/yo.js.map +1 -1
  232. package/dist/zh-TW.js +77 -72
  233. package/dist/zh-TW.js.map +1 -1
  234. package/dist/zh.d.ts.map +1 -1
  235. package/dist/zh.js +78 -73
  236. package/dist/zh.js.map +1 -1
  237. package/dist/zu.d.ts.map +1 -1
  238. package/dist/zu.js +162 -157
  239. package/dist/zu.js.map +1 -1
  240. package/package.json +1 -1
package/dist/vi.js CHANGED
@@ -5,12 +5,12 @@ export const vi = {
5
5
  'ide.chat.commitFileCount_one': 'Cam kết tệp {{count}}',
6
6
  'ide.chat.commitFileCount_other': 'Cam kết {{count}} tệp',
7
7
  'ide.chat.autoCommit.countedBadge': '{{commit}} trong {{countdown}}',
8
- 'ide.chat.teamMessagesUnavailable': 'Team messaging is unavailable in this workspace.',
9
- 'ide.chat.teamOnly.badge': 'Team only — visible to your team; {{agentName}} will ignore it',
10
- 'ide.chat.tip.viewerTeamOnly': 'View-only access — read along and /teamsay (or just /t) the team. This gold icon marks team-only messages ({{agentName}} ignores them). Running the assistant and changing the model or settings need editor access.',
11
- 'ide.chat.viewerReadOnly': "You have view-only access, so you can't run the assistant here. You can still read along and use /teamsay to message the team.",
12
- 'ide.chat.viewerReadOnlyCommand': 'You have view-only access, so this command is unavailable. Ask an editor to make changes.',
13
- 'ide.chat.viewerReadOnlyNote': 'View-only access — read along and /teamsay (or just /t) the team. Running the assistant and changing the model or settings need editor access.',
8
+ 'ide.chat.teamMessagesUnavailable': 'Tính năng nhắn tin nhóm không khả dụng trong không gian làm việc này.',
9
+ 'ide.chat.teamOnly.badge': 'Chỉ hiển thị cho nhóm của bạn; {{agentName}} sẽ bỏ qua',
10
+ 'ide.chat.tip.viewerTeamOnly': 'Chỉ có quyền truy cập xem — đọc và gửi tin nhắn cho nhóm qua /teamsay (hoặc chỉ /t). Biểu tượng màu vàng này đánh dấu các tin nhắn chỉ dành cho nhóm ({{agentName}} sẽ bỏ qua chúng). Việc chạy trợ lý và thay đổi mô hình hoặc cài đặt cần quyền truy cập chỉnh sửa.',
11
+ 'ide.chat.viewerReadOnly': 'Bạn chỉ có quyền truy cập xem, vì vậy bạn không thể chạy trợ lý ở đây. Bạn vẫn có thể đọc và sử dụng /teamsay để nhắn tin cho nhóm.',
12
+ 'ide.chat.viewerReadOnlyCommand': 'Bạn chỉ có quyền truy cập xem, do đó lệnh này không khả dụng. Vui lòng yêu cầu người biên tập thực hiện thay đổi.',
13
+ 'ide.chat.viewerReadOnlyNote': 'Chỉ được phép xem — đọc và gửi thông tin cho nhóm qua lệnh /teamsay (hoặc chỉ cần /t). Việc chạy trợ lý ảo và thay đổi mô hình hoặc cài đặt cần quyền chỉnh sửa.',
14
14
  'ide.chat.viewPlans': 'Xem các gói',
15
15
  'ide.chat.fileCount': '{{count}} tệp',
16
16
  'common.cancel': 'Hủy',
@@ -23,7 +23,7 @@ export const vi = {
23
23
  'ide.chat.continueButton': 'Tiếp tục',
24
24
  'upgrade.viewPlans': 'Nâng cấp',
25
25
  'upgrade.signUp': 'Đăng ký',
26
- 'ide.chat.modelUpgradeRequired': '{{model}} is available on Pro. Upgrade to access all models.',
26
+ 'ide.chat.modelUpgradeRequired': '{{model}} chỉ có trên phiên bản Pro. Nâng cấp để truy cập tất cả các mẫu.',
27
27
  'ide.chat.autoFixCountdown': 'Tiếp tục',
28
28
  'ide.chat.autoFixPause': 'Tạm dừng',
29
29
  'ide.chat.autoFixCancel': 'Hủy',
@@ -44,29 +44,29 @@ export const vi = {
44
44
  'ide.search.searching': 'Đang tìm…',
45
45
  'ide.sidebar.search': 'Tìm kiếm',
46
46
  'ide.toolCall.noMatches': 'Không có kết quả khớp',
47
- 'ide.chat.askUserMultiHint': 'You can choose more than one.',
47
+ 'ide.chat.askUserMultiHint': 'Bạn có thể chọn nhiều hơn một.',
48
48
  'ide.chat.askUserSelectedCount': '{{count}} selected',
49
49
  'ide.chat.askUserMultiConfirm': 'Confirm choice',
50
50
  'ide.chat.askUserPreview': 'Preview',
51
51
  'ide.chat.taskListTitle': 'Working plan',
52
52
  'ide.chat.taskListProgress': '{{done}} of {{total}} done',
53
- 'ide.chat.planReview.badge': 'Plan ready for review',
53
+ 'ide.chat.planReview.badge': 'Kế hoạch đã sẵn sàng để xem xét.',
54
54
  'ide.chat.planReview.fallbackTitle': 'Implementation plan',
55
55
  'ide.chat.planReview.steps': '{{count}} steps',
56
56
  'ide.chat.planReview.openPlan': 'Open plan',
57
57
  'ide.chat.planReview.more': '+ {{count}} more steps',
58
- 'ide.chat.backgroundRunning': '{{count}} task running in the background',
59
- 'ide.chat.backgroundFailed': '{{count}} background task failed',
60
- 'ide.chat.backgroundDone': '{{count}} background task finished',
58
+ 'ide.chat.backgroundRunning': '{{count}} tác vụ đang chạy ngầm',
59
+ 'ide.chat.backgroundFailed': '{{count}} tác vụ nền đã thất bại',
60
+ 'ide.chat.backgroundDone': '{{count}} tác vụ nền đã hoàn thành',
61
61
  'ide.chat.backgroundElapsed': 'running · {{elapsed}}',
62
62
  'ide.chat.backgroundExit': 'exit {{code}} · {{elapsed}}',
63
63
  'ide.chat.backgroundOk': 'done · {{elapsed}}',
64
64
  'ide.chat.subagent.build': 'Build subagent',
65
- 'ide.chat.subagent.inBackground': 'running in the background',
65
+ 'ide.chat.subagent.inBackground': 'đang chạy ngầm',
66
66
  'ide.chat.subagent.wroteFiles': '{{count}} files changed',
67
67
  'ide.toolCall.stillRunning': 'Still running',
68
- 'ide.toolCall.startedInBackground': 'Running in the background',
69
- 'ide.toolCall.onlySession': 'Only this one',
68
+ 'ide.toolCall.startedInBackground': 'Đang chạy ngầm',
69
+ 'ide.toolCall.onlySession': 'Chỉ có cái này thôi',
70
70
  'ide.toolCall.sessionCount': '{{count}} other sessions',
71
71
  'ide.toolCall.sentTo': 'Sent to {{to}}',
72
72
  'ide.chat.subagent.judge': 'Acceptance judge',
@@ -74,7 +74,7 @@ export const vi = {
74
74
  'ide.chat.subagent.working': 'working…',
75
75
  'ide.chat.subagent.verdictPass': 'PASS',
76
76
  'ide.chat.subagent.verdictFail': 'FAIL',
77
- 'ide.chat.subagent.showReport': 'Show full report',
77
+ 'ide.chat.subagent.showReport': 'Xem toàn bộ báo cáo',
78
78
  'ide.chat.subagent.hideReport': 'Show less',
79
79
  'ide.chat.askUserSubmit': 'Gửi',
80
80
  'ide.toolCall.statusRunning': 'Đang chạy…',
@@ -98,6 +98,7 @@ export const vi = {
98
98
  'ide.chat.thoughtBriefly': 'Suy nghĩ ngắn gọn',
99
99
  'ide.chat.thinking': 'Suy nghĩ',
100
100
  'ide.chat.verificationPassed': 'Đã kiểm tra thành công.',
101
+ 'ide.chat.renderCheckUnavailable': 'Kiểm tra hiển thị không khả dụng',
101
102
  'ide.chat.typeErrorCount': '1 lỗi kiểu',
102
103
  'ide.chat.lintErrorCount': '1 lỗi lint',
103
104
  'ide.chat.lintWarningCount': '1 cảnh báo',
@@ -123,20 +124,20 @@ export const vi = {
123
124
  'ide.chat.switchedToPlan': 'Đã chuyển sang chế độ lập kế hoạch',
124
125
  'ide.chat.switchedToExecute': 'Đã chuyển sang chế độ thực thi',
125
126
  'ide.chat.costError': 'Không thể lấy dữ liệu sử dụng.',
126
- 'ide.chat.usageAllowanceTodayLine': "~{{percent}}% of today's AI allowance used.",
127
- 'ide.chat.usageAllowanceUsedUpLine': "Today's AI allowance is used up — refreshes {{when}}.",
128
- 'ide.chat.usageAllowanceMonthlyLine': '~{{percent}}% of this month’s AI allowance used.',
129
- 'ide.chat.usageAllowanceUsedUpMonthlyLine': 'This month’s AI allowance is used up — refreshes {{when}}.',
127
+ 'ide.chat.usageAllowanceTodayLine': '~ {{percent}} % lượng AI được phép sử dụng hôm nay.',
128
+ 'ide.chat.usageAllowanceUsedUpLine': 'Lượng AI cho phép hôm nay đã hết — sẽ được làm mới {{when}}.',
129
+ 'ide.chat.usageAllowanceMonthlyLine': '~ {{percent}} % lượng AI được sử dụng trong tháng này.',
130
+ 'ide.chat.usageAllowanceUsedUpMonthlyLine': 'Lượng AI được phép sử dụng trong tháng này đã hết — sẽ tự động làm mới {{when}}.',
130
131
  'ide.chat.resetSoon': 'soon',
131
- 'ide.chat.resetUnderHour': 'in under an hour',
132
+ 'ide.chat.resetUnderHour': 'trong vòng chưa đầy một giờ',
132
133
  'ide.chat.resetTomorrow': 'tomorrow',
133
- 'ide.chat.resetInHours': 'in about {{hours}} hours',
134
- 'ide.chat.resetInDays': 'in about {{days}} days',
134
+ 'ide.chat.resetInHours': 'trong khoảng {{hours}} giờ',
135
+ 'ide.chat.resetInDays': 'trong khoảng {{days}} ngày',
135
136
  'ide.chat.models.colUsageRate': 'Usage rate',
136
- 'ide.chat.models.usageRateHint': 'How fast this model uses your AI allowance, relative to the most economical model',
137
+ 'ide.chat.models.usageRateHint': 'Mô hình này sử dụng dung lượng AI của bạn nhanh như thế nào so với mô hình tiết kiệm nhất.',
137
138
  'ide.chat.models.usageRateValue': '×{{rate}} usage',
138
139
  'ide.chat.models.usageRateYourKey': 'your key',
139
- 'ide.chat.models.usageRateYourKeyHint': 'Billed to your own provider key, not your plan.',
140
+ 'ide.chat.models.usageRateYourKeyHint': 'Thanh toán được thực hiện bằng mã nhà cung cấp của riêng bạn, không phải theo gói cước của bạn.',
140
141
  'ide.chat.models.peakNow': 'cao điểm ×{{multiplier}} lúc này',
141
142
  'ide.chat.models.peakLater': '×{{multiplier}} vào giờ cao điểm',
142
143
  'ide.chat.models.peakHint': 'Mô hình này có giá ×{{multiplier}} trong khoảng {{windows}}. Thời gian còn lại trong ngày áp dụng mức giá thông thường.',
@@ -150,7 +151,7 @@ export const vi = {
150
151
  'ide.chat.autoApproveEnabled': 'Tính năng tự động phê duyệt đã được bật — các lệnh có tính phá hủy sẽ chạy mà không cần hỏi. Cơ chế bảo vệ chống rò rỉ dữ liệu vẫn sẽ hỏi. Tắt bằng lệnh /autoapprove.',
151
152
  'ide.chat.autoApproveDisabled': 'Tính năng tự động phê duyệt đã bị tắt — các lệnh có tính phá hủy sẽ hỏi trước khi chạy.',
152
153
  'ide.chat.autoApproveError': 'Không thể cập nhật cài đặt tự động phê duyệt.',
153
- 'ide.chat.modelUsage': 'Cách sử dụng: /model<model-name> (ví dụ {{examples}})',
154
+ 'ide.chat.modelUsage': 'Cách sử dụng: /model <model-name> (ví dụ {{examples}})',
154
155
  'ide.chat.maxLoopsReached': 'Đã đạt giới hạn số vòng lặp tối đa.',
155
156
  'ide.chat.maxLoopsError': 'Không thể cập nhật số lần lặp tối đa của công cụ.',
156
157
  'ide.chat.dropFilesHere': 'Kéo thả tập tin vào đây',
@@ -214,7 +215,7 @@ export const vi = {
214
215
  'ide.toolCall.statusPermissionDenied': 'Quyền truy cập bị từ chối',
215
216
  'ide.toolCall.statusServerError': 'Lỗi máy chủ',
216
217
  'ide.chat.placeholder': 'Gửi tin nhắn...',
217
- 'ide.chat.placeholderViewer': 'Message your team',
218
+ 'ide.chat.placeholderViewer': 'Gửi tin nhắn cho nhóm của bạn',
218
219
  'ide.chat.emptyState': 'Hãy mô tả những gì bạn muốn xây dựng...',
219
220
  'ide.chat.molecule': 'Phân tử',
220
221
  'ide.chat.automatic': 'Sent automatically',
@@ -242,7 +243,7 @@ export const vi = {
242
243
  'ide.chat.soundEvent.loop_limit_reached': 'Đã đạt đến giới hạn vòng lặp',
243
244
  'ide.chat.soundEvent.verification_result': 'Kết quả xác minh',
244
245
  'ide.chat.soundEvent.preview_error': 'Lỗi xem trước',
245
- 'ide.chat.soundEventDesc.message': 'A teammate posted a team-only note',
246
+ 'ide.chat.soundEventDesc.message': 'Một đồng đội đã đăng một ghi chú chỉ dành cho cả nhóm.',
246
247
  'ide.chat.soundEventDesc.done': '{{agentName}} đã hoàn thành phản hồi',
247
248
  'ide.chat.soundEventDesc.error': 'Đã xảy ra lỗi trong quá trình phản hồi.',
248
249
  'ide.chat.soundEventDesc.tool_result': 'Một lệnh gọi công cụ (đọc tệp, lệnh, v.v.) đã hoàn tất.',
@@ -325,12 +326,12 @@ export const vi = {
325
326
  'ide.chat.activity.switching': 'Switching mode',
326
327
  'ide.chat.activity.thinking': 'Thinking',
327
328
  'ide.chat.activity.writing': 'Writing',
328
- 'ide.chat.activity.writingPlan': 'Writing the plan',
329
+ 'ide.chat.activity.writingPlan': 'Lập kế hoạch',
329
330
  'ide.activity.defaultSummary': '{{type}} captured',
330
- 'ide.chat.askUserPlaceholderEmpty': 'Type your answer…',
331
- 'ide.chat.awaitingSandbox': 'Waiting for the development environment to finish starting…',
332
- 'ide.chat.compactNotNeeded': 'Context usage is low — no compaction needed.',
333
- 'ide.chat.phaseBuilding': '🔨 Building your app',
331
+ 'ide.chat.askUserPlaceholderEmpty': 'Hãy nhập câu trả lời của bạn…',
332
+ 'ide.chat.awaitingSandbox': 'Đang chờ môi trường phát triển khởi tạo xong…',
333
+ 'ide.chat.compactNotNeeded': 'Mức độ sử dụng ngữ cảnh thấp — không cần nén dữ liệu.',
334
+ 'ide.chat.phaseBuilding': '🔨 Xây dựng ứng dụng của bạn',
334
335
  'ide.chat.phasePlanning': '📝 Plan mode',
335
336
  'ide.chat.autoFixResume': 'Resume',
336
337
  'ide.chat.openSettings': 'Settings',
@@ -338,24 +339,22 @@ export const vi = {
338
339
  'ide.chat.tip.getStarted': 'Mẹo: gõ / để xem tất cả các lệnh, hoặc @ tên tệp để hiển thị thông tin chi tiết.{{agentName}} một tập tin để làm việc.',
339
340
  'ide.chat.tip.mention': 'Mẹo: gõ @filename để đính kèm tệp dự án làm ngữ cảnh —{{agentName}} Đọc trực tiếp.',
340
341
  'ide.chat.tip.slash': 'Mẹo: gõ / để xem tất cả các lệnh (commit, diff, model, và nhiều lệnh khác).',
341
- 'ide.chat.tip.plan': 'Mẹo: sử dụng /plan để có{{agentName}} Hãy nghiên cứu và đề xuất kế hoạch trước khi chỉnh sửa bất kỳ tập tin nào.',
342
342
  'ide.chat.tip.undo': 'Mẹo: Sử dụng lệnh /undo để hoàn tác ngay lập tức các thay đổi trong tệp của lượt chơi AI cuối cùng nếu nó diễn ra không như ý muốn.',
343
343
  'ide.chat.tip.compact': 'Mẹo: Cuộc trò chuyện dài? /compact sẽ thu gọn ngữ cảnh để bạn có thêm không gian làm việc.',
344
- 'ide.chat.tip.commit': 'Mẹo: Sử dụng lệnh `/commit` để lưu các thay đổi của bạn dưới dạng một commit Git mà bạn có thể quay lại bất cứ lúc nào.',
345
344
  'ide.chat.tip.report': 'Mẹo: Có vấn đề gì không ổn? Lệnh /report sẽ gửi báo cáo lỗi hoặc phản hồi đến nhóm kèm theo đoạn chat gần đây nhất của bạn.',
346
- 'ide.chat.undoError': 'Failed to revert changes.',
347
- 'ide.chat.autoCommit.badge': 'Auto-commit in {{countdown}}',
348
- 'ide.chat.autoCommit.cancel': 'Cancel auto-commit',
349
- 'ide.chat.autoCommit.cancelled': 'Auto-commit cancelled.',
350
- 'ide.chat.autoCommit.enabled': 'Auto-commit on: committing {{seconds}}s after the last file change. /autocommit 0 to cancel.',
345
+ 'ide.chat.undoError': 'Không thể hoàn tác các thay đổi.',
346
+ 'ide.chat.autoCommit.badge': 'Tự động xác nhận trong {{countdown}}',
347
+ 'ide.chat.autoCommit.cancel': 'Hủy tự động xác nhận',
348
+ 'ide.chat.autoCommit.cancelled': 'Lệnh tự động xác nhận đã bị hủy.',
349
+ 'ide.chat.autoCommit.enabled': 'Tự động commit sau: commit {{seconds}} giây kể từ lần thay đổi tệp cuối cùng.\nĐặt thành 0 để tắt tính năng tự động lưu.',
351
350
  'ide.chat.autoCommit.usage': 'Usage: /autocommit <seconds> — auto-commit that many seconds after the last file change. /autocommit 0 cancels.',
352
- 'ide.chat.effort.error': 'Failed to update reasoning effort.',
353
- 'ide.chat.effort.fixedForModel': 'Reasoning effort is fixed on {{model}} ({{mode}} mode) — nothing to set.',
354
- 'ide.chat.effort.header': 'Reasoning effort per mode:',
355
- 'ide.chat.effort.modeFixed': ' {{mode}} ({{model}}): fixed — this model has one reasoning mode',
351
+ 'ide.chat.effort.error': 'Không thể cập nhật nỗ lực suy luận.',
352
+ 'ide.chat.effort.fixedForModel': 'Nỗ lực suy luận được cố định trên {{model}} ({{mode}} mode) — không có gì để thiết lập.',
353
+ 'ide.chat.effort.header': 'Mức độ nỗ lực suy luận cho mỗi phương thức:',
354
+ 'ide.chat.effort.modeFixed': ' {{mode}} ({{model}}): cố định — mô hình này có một chế độ suy luận',
356
355
  'ide.chat.effort.modeLine': ' {{mode}} ({{model}}): {{current}} — available: {{levels}}',
357
- 'ide.chat.effort.setMode': 'Reasoning effort for {{mode}} set to {{level}} ({{model}}).',
358
- 'ide.chat.setting.effort': 'Reasoning effort for {{mode}} set to {{level}}.',
356
+ 'ide.chat.effort.setMode': 'Nỗ lực suy luận cho {{mode}} được đặt thành {{level}} ({{model}}).',
357
+ 'ide.chat.setting.effort': 'Nỗ lực suy luận cho {{mode}} được đặt thành {{level}}.',
359
358
  'ide.chat.settings.effortFixed': 'fixed',
360
359
  'ide.chat.effort.usage': 'Usage: /effort <level> (current mode), /effort --plan|--execute <level>, /effort ? for status.',
361
360
  'ide.chat.models.colContext': 'Context',
@@ -366,93 +365,93 @@ export const vi = {
366
365
  'ide.chat.models.freeYes': '✓ Free',
367
366
  'ide.chat.models.sortBy': 'Sort by {{column}}',
368
367
  'ide.chat.modelsLoading': 'Loading models…',
369
- 'ide.chat.modelsNone': 'No models are available yet — ask your admin to wire an AI provider.',
368
+ 'ide.chat.modelsNone': 'Hiện chưa có mô hình nào khả dụng — hãy yêu cầu quản trị viên kết nối bạn với nhà cung cấp AI.',
370
369
  'ide.chat.modelInUse': 'Now using {{model}}',
371
370
  'ide.chat.cardBy': '{{text}} — {{name}}',
372
- 'ide.chat.modelRemoved': 'Your selected model "{{removed}}" is no longer available. Switched to "{{fallback}}". Type /model to pick another.',
373
- 'ide.chat.modelRemovedNoFallback': 'Your selected model "{{removed}}" is no longer available, and no replacement is bonded on the server. Ask your admin to wire an AI provider.',
371
+ 'ide.chat.modelRemoved': 'Mẫu bạn đã chọn " {{removed}} " hiện không còn khả dụng. Đã chuyển sang " {{fallback}} ". Vui lòng nhập /model để chọn mẫu khác.',
372
+ 'ide.chat.modelRemovedNoFallback': 'Mô hình bạn đã chọn " {{removed}} " hiện không còn khả dụng và không có mô hình thay thế nào được liên kết trên máy chủ. Vui lòng yêu cầu quản trị viên kết nối với nhà cung cấp AI.',
374
373
  'ide.chat.olderModelsCollapse': 'Older models ⌃ ({{count}})',
375
374
  'ide.chat.olderModelsExpand': 'Older models ⌄ ({{count}})',
376
- 'ide.chat.selectExecuteModel': 'Select execute-mode model',
377
- 'ide.chat.selectPlanModel': 'Select plan-mode model',
378
- 'ide.chat.executeModelSet': 'Execute-mode model set to {{name}}',
379
- 'ide.chat.planModelSet': 'Plan-mode model set to {{name}}',
380
- 'ide.chat.selectCommitModel': 'Select commit-message model',
381
- 'ide.chat.selectCompactModel': 'Select compaction model',
382
- 'ide.chat.commitModelSet': 'Commit-message model set to {{name}}',
383
- 'ide.chat.compactModelSet': 'Compaction model set to {{name}}',
375
+ 'ide.chat.selectExecuteModel': 'Chọn chế độ thực thi',
376
+ 'ide.chat.selectPlanModel': 'Chọn mô hình dạng phẳng',
377
+ 'ide.chat.executeModelSet': 'Chế độ thực thi được đặt thành {{name}}',
378
+ 'ide.chat.planModelSet': 'Chế độ thiết kế mặt bằng được đặt thành {{name}}',
379
+ 'ide.chat.selectCommitModel': 'Chọn mô hình thông báo cam kết',
380
+ 'ide.chat.selectCompactModel': 'Chọn mô hình nén',
381
+ 'ide.chat.commitModelSet': 'Mô hình thông báo cam kết được đặt thành {{name}}',
382
+ 'ide.chat.compactModelSet': 'Mô hình nén được đặt thành {{name}}',
384
383
  'ide.chat.modelModeLabel': 'Mode',
385
384
  'ide.chat.modelMode.default': 'Default',
386
385
  'ide.chat.modelMode.commit': 'Commit messages',
387
386
  'ide.chat.modelMode.compact': 'Compaction',
388
387
  'ide.chat.modelModeOption': '{{mode}} · {{model}}',
389
- 'ide.chat.manageCustomModels': 'Add or manage your own models…',
390
- 'ide.chat.freeInPlan': 'free in plan',
391
- 'ide.chat.freeInExecute': 'free in execute',
392
- 'ide.chat.freeInCommit': 'free in commit',
393
- 'ide.chat.modeOnlyPlan': 'On the free plan, this model is used in plan mode.',
394
- 'ide.chat.modeOnlyExecute': 'On the free plan, this model is used in execute mode.',
395
- 'ide.chat.modeOnlyCommit': 'On the free plan, this model is used for commit messages and compaction.',
388
+ 'ide.chat.manageCustomModels': 'Thêm hoặc quản lý các mô hình của riêng bạn…',
389
+ 'ide.chat.freeInPlan': 'miễn phí trong gói',
390
+ 'ide.chat.freeInExecute': 'giải phóng trong quá trình thực thi',
391
+ 'ide.chat.freeInCommit': 'miễn phí trong cam kết',
392
+ 'ide.chat.modeOnlyPlan': 'Trên gói miễn phí, mô hình này được sử dụng ở chế độ kế hoạch.',
393
+ 'ide.chat.modeOnlyExecute': 'Trên gói miễn phí, mô hình này được sử dụng ở chế độ thực thi.',
394
+ 'ide.chat.modeOnlyCommit': 'Ở gói miễn phí, mô hình này được sử dụng cho các thông báo cam kết và nén dữ liệu.',
396
395
  'ide.chat.streamingOutputTokens': '~{{count}} tokens',
397
- 'ide.chat.streamingOutputTokensHint': 'Estimated output tokens this turn — /cost shows input and cached.',
398
- 'ide.chat.costSummary': 'Model: {{model}}\nInput: {{input}} tokens\nOutput: {{output}} tokens',
399
- 'ide.chat.costCachedLine': 'Cached input: {{cached}} tokens (billed at a fraction of input)',
396
+ 'ide.chat.streamingOutputTokensHint': 'Số token ước tính đầu ra trong lượt này — /cost hiển thị token đầu vào và token đã được lưu vào bộ nhớ cache.',
397
+ 'ide.chat.costSummary': 'Mô hình: {{model}}\nĐầu vào: {{input}} token\nĐầu ra: {{output}} token',
398
+ 'ide.chat.costCachedLine': 'Dữ liệu đầu vào được lưu vào bộ nhớ cache: {{cached}} token (được tính phí với một phần nhỏ so với dữ liệu đầu vào)',
400
399
  'ide.chat.lintErrorsCount': '{{count}} lint errors',
401
400
  'ide.chat.lintWarningsCount': '{{count}} warnings',
402
401
  'ide.chat.typeErrorsCount': '{{count}} type errors',
403
402
  'ide.chat.help.commandsHeading': '── Commands ──',
404
- 'ide.chat.help.intro': "{{agentName}} is {{productName}}'s AI coding agent. Describe what you want to build and it will scaffold, code, and iterate with you.",
403
+ 'ide.chat.help.intro': '{{agentName}} là trợ lý lập trình AI của {{productName}}. Hãy mô tả những gì bạn muốn xây dựng và nó sẽ tạo khung sườn, lập trình và cùng bạn lặp lại quy trình.',
405
404
  'ide.chat.help.introHeading': '── Getting Started ──',
406
- 'ide.chat.help.modeDiscovery': 'Discovery — new conversations start here. {{agentName}} asks clarifying questions to nail down requirements before writing any code.',
407
- 'ide.chat.help.modeExecute': 'Execute — the default working mode. {{agentName}} writes code, runs tools, and applies changes, then verifies them.',
408
- 'ide.chat.help.modePlan': 'Plan — {{agentName}} researches the codebase and proposes a plan WITHOUT editing files. Toggle with /plan. Best for big or risky changes.',
405
+ 'ide.chat.help.modeDiscovery': 'Khám phá — những cuộc trò chuyện mới bắt đầu từ đây. {{agentName}} đặt câu hỏi làm rõ để xác định chính xác các yêu cầu trước khi viết bất kỳ đoạn mã nào.',
406
+ 'ide.chat.help.modeExecute': 'Thực thi — chế độ làm việc mặc định. {{agentName}} viết mã, chạy các công cụ và áp dụng các thay đổi, sau đó xác minh chúng.',
407
+ 'ide.chat.help.modePlan': 'Lập kế hoạch — {{agentName}} nghiên cứu mã nguồn và đề xuất một kế hoạch mà KHÔNG chỉnh sửa tệp. Bật/tắt bằng lệnh /plan. Thích hợp nhất cho những thay đổi lớn hoặc rủi ro cao.',
409
408
  'ide.chat.help.modesHeading': '── Modes ──',
410
- 'ide.chat.help.shortcuts': 'Press Cmd+/ (Ctrl+/ on Windows/Linux) to view all keyboard shortcuts.',
411
- 'ide.chat.help.tipCompact': '• Use /compact to compress context when the conversation gets long.',
409
+ 'ide.chat.help.shortcuts': 'Nhấn Cmd+/ (Ctrl+/ trên Windows/Linux) để xem tất cả các phím tắt.',
410
+ 'ide.chat.help.tipCompact': '• Sử dụng lệnh /compact để rút gọn ngữ cảnh khi cuộc hội thoại trở nên dài.',
412
411
  'ide.chat.help.tipMention': '• Type @filename to attach a project file as context (or drag & drop any file).',
413
- 'ide.chat.help.tipPlan': '• Use /plan to have {{agentName}} research before making changes.',
414
- 'ide.chat.help.tipSlash': '• Type / to browse every command above.',
415
- 'ide.chat.help.tipSpecific': '• Be specific — "Add a login page with email/password and Google OAuth" beats "add auth".',
416
- 'ide.chat.help.tipUndo': "• Use /undo to revert the last AI turn's file changes if it goes off track.",
412
+ 'ide.chat.help.tipPlan': '• Sử dụng lệnh /plan để {{agentName}} nghiên cứu trước khi thực hiện thay đổi.',
413
+ 'ide.chat.help.tipSlash': '• Gõ / để xem tất cả các lệnh ở trên.',
414
+ 'ide.chat.help.tipSpecific': '• Hãy cụ thể hơn — "Thêm trang đăng nhập với email/mật khẩu và Google OAuth" sẽ hiệu quả hơn là "thêm xác thực".',
415
+ 'ide.chat.help.tipUndo': '• Sử dụng lệnh /undo để hoàn tác các thay đổi tệp của lượt chơi AI cuối cùng nếu nó đi chệch hướng.',
417
416
  'ide.chat.help.tipsHeading': '── Tips ──',
418
417
  'ide.chat.report.heading': 'Report a bug',
419
418
  'ide.chat.report.openReport': 'Report a bug',
420
- 'ide.chat.report.subheading': 'Tell us what went wrong or what you’d like to see. Goes to {{productName}}’s team.',
419
+ 'ide.chat.report.subheading': 'Hãy cho chúng tôi biết điều gì đã xảy ra sai sót hoặc điều gì bạn muốn thấy. (Phần này dành cho nhóm của {{productName}}',
421
420
  'ide.chat.report.titleLabel': 'Title',
422
421
  'ide.chat.report.titlePlaceholder': 'Brief summary',
423
422
  'ide.chat.report.descriptionLabel': 'Description',
424
- 'ide.chat.report.descriptionPlaceholder': 'What happened? What did you expect?',
425
- 'ide.chat.report.stepsLabel': 'Steps to reproduce (optional)',
423
+ 'ide.chat.report.descriptionPlaceholder': 'Chuyện gì đã xảy ra? Bạn mong đợi điều gì?',
424
+ 'ide.chat.report.stepsLabel': 'Các bước để tái hiện lỗi (tùy chọn)',
426
425
  'ide.chat.report.stepsPlaceholder': '1. …\n2. …',
427
- 'ide.chat.report.includeChat': 'Include recent chat for context',
426
+ 'ide.chat.report.includeChat': 'Bao gồm cả đoạn chat gần đây để làm rõ ngữ cảnh.',
428
427
  'ide.chat.report.submit': 'Submit report',
429
428
  'ide.chat.report.submitting': 'Submitting…',
430
- 'ide.chat.report.error': 'Could not submit your report. Please try again.',
429
+ 'ide.chat.report.error': 'Không thể gửi báo cáo của bạn. Vui lòng thử lại.',
431
430
  'ide.chat.report.viewIssue': 'View issue',
432
431
  'ide.chat.scripts.heading': 'Scripts',
433
432
  'ide.chat.scripts.new': 'New script',
434
433
  'ide.chat.scripts.cancelNew': 'Cancel',
435
- 'ide.chat.scripts.namePlaceholder': 'Script name (e.g. run-tests)',
436
- 'ide.chat.scripts.descriptionPlaceholder': 'What does it do?',
434
+ 'ide.chat.scripts.namePlaceholder': 'Tên tập lệnh (ví dụ: run-tests)',
435
+ 'ide.chat.scripts.descriptionPlaceholder': 'Nó làm gì?',
437
436
  'ide.chat.scripts.bodyPlaceholder': '#!/bin/sh\nnpm test',
438
437
  'ide.chat.scripts.searchPlaceholder': 'Filter scripts…',
439
438
  'ide.chat.scripts.save': 'Save script',
440
439
  'ide.chat.scripts.saving': 'Saving…',
441
- 'ide.chat.scripts.saveError': 'Could not save the script. Please try again.',
442
- 'ide.chat.scripts.invalid': 'A script needs a name and a non-empty body.',
443
- 'ide.chat.scripts.empty': 'No saved scripts yet. Create one above, or ask {{agentName}} to write and save one.',
440
+ 'ide.chat.scripts.saveError': 'Không thể lưu kịch bản. Vui lòng thử lại.',
441
+ 'ide.chat.scripts.invalid': 'Một đoạn mã cần có tên và phần thân không rỗng.',
442
+ 'ide.chat.scripts.empty': 'Chưa có kịch bản nào được lưu. Hãy tạo một kịch bản ở trên, hoặc yêu cầu {{agentName}} viết và lưu một kịch bản.',
444
443
  'ide.chat.scripts.loading': 'Loading scripts…',
445
- 'ide.chat.scripts.error': 'Could not load scripts for this project.',
446
- 'ide.chat.scripts.noMatch': 'No scripts match “{{query}}”.',
444
+ 'ide.chat.scripts.error': 'Không thể tải tập lệnh cho dự án này.',
445
+ 'ide.chat.scripts.noMatch': 'Không có tập lệnh nào khớp với “ {{query}} ”.',
447
446
  'ide.chat.scripts.run': 'Run',
448
- 'ide.chat.scripts.runTitle': 'Run this script in the sandbox',
447
+ 'ide.chat.scripts.runTitle': 'Chạy đoạn mã này trong môi trường thử nghiệm (sandbox).',
449
448
  'ide.chat.scripts.running': 'Running…',
450
- 'ide.chat.scripts.runError': 'Failed to run the script.',
451
- 'ide.chat.scripts.runNone': 'No saved scripts yet. Open /scripts to create one.',
452
- 'ide.chat.scripts.runNotFound': 'No script named “{{name}}”. Available: {{names}}',
449
+ 'ide.chat.scripts.runError': 'Không thể chạy tập lệnh.',
450
+ 'ide.chat.scripts.runNone': 'Chưa có tập lệnh nào được lưu. Mở /scripts để tạo một tập lệnh.',
451
+ 'ide.chat.scripts.runNotFound': 'Không có kịch bản nào có tên “ {{name}} ”. Có sẵn: {{names}}',
453
452
  'ide.chat.scripts.runUsage': 'Usage: /run <name> — run a saved script. Use /scripts to see them.',
454
453
  'ide.chat.scripts.cmdExitOk': '{{name}} exited 0',
455
- 'ide.chat.scripts.cmdExitFail': '{{name}} exited with code {{code}}',
454
+ 'ide.chat.scripts.cmdExitFail': '{{name}} đã thoát với mã {{code}}',
456
455
  'ide.chat.scripts.exitOk': 'Exited 0',
457
456
  'ide.chat.scripts.exitFail': 'Exited {{code}}',
458
457
  'ide.chat.scripts.noOutput': '(no output)',
@@ -465,28 +464,28 @@ export const vi = {
465
464
  'ide.chat.settings.modelUnset': 'Not set',
466
465
  'ide.chat.settings.off': 'Off',
467
466
  'ide.chat.settings.on': 'On',
468
- 'ide.chat.settings.soundsSummary': '{{enabled}} of {{total}} events enabled',
467
+ 'ide.chat.settings.soundsSummary': '{{enabled}} trong tổng số {{total}} sự kiện đã được bật',
469
468
  'ide.chat.share.heading': 'Share project',
470
469
  'ide.chat.share.loading': 'Loading…',
471
- 'ide.chat.share.none': 'No public link yet.',
472
- 'ide.chat.share.copyHint': 'Click to copy',
470
+ 'ide.chat.share.none': 'Chưa có liên kết công khai nào.',
471
+ 'ide.chat.share.copyHint': 'Nhấp chuột để sao chép',
473
472
  'ide.chat.share.revoke': 'Revoke',
474
473
  'ide.chat.share.revoking': 'Revoking…',
475
- 'ide.chat.share.revokeFailed': 'Could not revoke that link. Please try again.',
474
+ 'ide.chat.share.revokeFailed': 'Không thể thu hồi liên kết đó. Vui lòng thử lại.',
476
475
  'ide.chat.share.openShare': 'Share project',
477
- 'ide.chat.share.subheading': 'Create a public link. Anyone with the link gets the role you choose — a viewer link is read-only.',
476
+ 'ide.chat.share.subheading': 'Tạo một liên kết công khai. Bất kỳ ai có liên kết đó đều sẽ có vai trò bạn chọn — liên kết người xem chỉ có quyền đọc.',
478
477
  'ide.chat.share.roleLabel': 'Role',
479
478
  'ide.chat.share.create': 'Create link',
480
479
  'ide.chat.share.creating': 'Creating…',
481
- 'ide.chat.share.created': 'Created a {{role}} share link.',
482
- 'ide.chat.share.createAnother': 'Create new link',
480
+ 'ide.chat.share.created': 'Đã tạo liên kết chia sẻ {{role}} .',
481
+ 'ide.chat.share.createAnother': 'Tạo liên kết mới',
483
482
  'ide.chat.share.linkLabel': 'Public link',
484
483
  'ide.chat.share.copy': 'Copy link',
485
484
  'ide.chat.share.copyShort': 'Copy',
486
485
  'ide.chat.share.copied': 'Copied',
487
486
  'ide.chat.share.openLink': 'Open link',
488
- 'ide.chat.share.error': 'Could not create a share link. Please try again.',
489
- 'ide.chat.share.usage': 'Usage: /share [role] — create a public link. Roles: {{roles}} (default viewer).',
487
+ 'ide.chat.share.error': 'Không thể tạo liên kết chia sẻ. Vui lòng thử lại.',
488
+ 'ide.chat.share.usage': 'Cách sử dụng: /share [role] — tạo liên kết công khai. Vai trò: {{roles}} (người xem mặc định).',
490
489
  'ide.chat.share.notAllowed': 'Quản lý liên kết chia sẻ cần vai trò quản trị viên trong dự án này.',
491
490
  'ide.chat.skills.heading': 'Skills',
492
491
  'ide.chat.skills.searchPlaceholder': 'Filter skills…',
@@ -494,9 +493,9 @@ export const vi = {
494
493
  'ide.chat.skills.loadTitle': 'Open in editor and attach as context',
495
494
  'ide.chat.skills.loaded': 'Loaded skill “{{name}}” — opened in the editor and attached as context for your next message.',
496
495
  'ide.chat.skills.loading': 'Loading skills…',
497
- 'ide.chat.skills.error': 'Could not load skills for this project.',
498
- 'ide.chat.skills.empty': 'No skills found in .agents/skills/ for this project.',
499
- 'ide.chat.skills.noMatch': 'No skills match “{{query}}”.',
496
+ 'ide.chat.skills.error': 'Không thể tải kỹ năng cho dự án này.',
497
+ 'ide.chat.skills.empty': 'Không tìm thấy kỹ năng nào trong thư mục .agents/skills/ cho dự án này.',
498
+ 'ide.chat.skills.noMatch': 'Không có kỹ năng nào phù hợp với “ {{query}} ”.',
500
499
  'ide.chat.skills.relevant.label': 'Relevant skill',
501
500
  'ide.chat.skills.relevant.dismiss': 'Dismiss suggestion',
502
501
  'ide.chat.thoughtForSecond': 'Thought for 1 second',
@@ -516,56 +515,56 @@ export const vi = {
516
515
  'ide.chat.help.card.modesTitle': 'Modes',
517
516
  'ide.chat.help.card.tipsTitle': 'Tips',
518
517
  'ide.chat.help.card.usageHint': 'Usage: {{usage}} ([…] optional, <…> required)',
519
- 'ide.chat.report.failed': 'Could not submit your report. Please try again.',
520
- 'ide.chat.report.submitted': "Thanks! Your report was submitted to {{productName}}'s team.",
521
- 'ide.chat.report.submittedWithLink': 'Thanks! Your report was submitted — track it on the linked issue.',
522
- 'ide.chat.settings.modelFollowsDefault': 'Follows default model',
518
+ 'ide.chat.report.failed': 'Không thể gửi báo cáo của bạn. Vui lòng thử lại.',
519
+ 'ide.chat.report.submitted': 'Cảm ơn! Báo cáo của bạn đã được gửi đến nhóm của {{productName}}.',
520
+ 'ide.chat.report.submittedWithLink': 'Cảm ơn! Báo cáo của bạn đã được gửi — bạn có thể theo dõi trạng thái báo cáo trên đường dẫn được đính kèm.',
521
+ 'ide.chat.settings.modelFollowsDefault': 'Tuân theo mô hình mặc định',
523
522
  'ide.chat.settings.modelDefaultFast': 'Fast default',
524
523
  'ide.chat.settings.modelDefaultNamed': 'Default ({{model}})',
525
524
  'ide.chat.settings.effortValue': 'plan: {{plan}} · execute: {{execute}}',
526
525
  'ide.resizeHandle.label': 'Resize panels',
527
526
  'ide.chat.settings.autoCommitEvery': 'Every {{seconds}}s',
528
- 'ide.chat.settings.hooksValue': 'In project settings',
527
+ 'ide.chat.settings.hooksValue': 'Trong cài đặt dự án',
529
528
  'ide.chat.skills.new': 'New skill',
530
- 'ide.chat.skills.newTitle': 'Create a new project skill',
531
- 'ide.chat.skills.newPlaceholder': 'New skill name…',
529
+ 'ide.chat.skills.newTitle': 'Tạo kỹ năng dự án mới',
530
+ 'ide.chat.skills.newPlaceholder': 'Tên kỹ năng mới…',
532
531
  'ide.chat.skills.create': 'Create',
533
532
  'ide.chat.skills.cancel': 'Cancel',
534
- 'ide.chat.skills.createError': 'Could not create the skill — please try again.',
535
- 'ide.chat.skills.created': 'Created skill “{{name}}” — opened in the editor. Fill in its description and steps.',
536
- 'ide.chat.autoCommit.on': 'Auto-commit on',
533
+ 'ide.chat.skills.createError': 'Không thể tạo kỹ năng — vui lòng thử lại.',
534
+ 'ide.chat.skills.created': 'Kỹ năng “ {{name}} ” đã được tạo — mở trong trình chỉnh sửa. Hãy điền mô tả và các bước thực hiện.',
535
+ 'ide.chat.autoCommit.on': 'Tự động cam kết khi',
537
536
  'ide.chat.mention': 'Reference a file',
538
537
  'ide.chat.slashCommands': 'Slash commands',
539
538
  'ide.chat.skills.loadedPrefix': 'Loaded ',
540
539
  'ide.chat.skills.loadedSuffix': ' skill',
541
540
  'ide.chat.viewProfile': 'View profile',
542
- 'ide.preview.loadFailed': "Preview can't load here",
543
- 'ide.preview.loadFailedHint': 'Try reloading, or open the preview in a new tab.',
541
+ 'ide.preview.loadFailed': 'Không thể tải bản xem trước tại đây',
542
+ 'ide.preview.loadFailedHint': 'Hãy thử tải lại trang hoặc mở bản xem trước trong một tab mới.',
544
543
  'ide.preview.reloadPreview': 'Reload preview',
545
- 'ide.preview.lastWorkingFrame': 'Last working preview',
546
- 'ide.chat.effort.notSupportedForModel': "{{level}} isn't available for {{model}}. Available: {{levels}}",
544
+ 'ide.preview.lastWorkingFrame': 'Bản xem trước hoạt động cuối cùng',
545
+ 'ide.chat.effort.notSupportedForModel': '{{level}} không khả dụng cho {{model}}. Khả dụng: {{levels}}',
547
546
  'ide.chat.modelSortLabel': 'Sort',
548
- 'ide.chat.modelSortDirection': 'Toggle sort direction',
547
+ 'ide.chat.modelSortDirection': 'Chuyển đổi hướng sắp xếp',
549
548
  'ide.chat.skills.loadedBadge': 'Loaded',
550
549
  'ide.chat.skills.defaultBadge': 'Default',
551
- 'ide.chat.skills.setDefault': 'Load by default',
552
- 'ide.chat.skills.unsetDefault': 'Stop loading by default',
553
- 'ide.chat.skills.matchHint': 'Suggested from keywords in your recent messages',
550
+ 'ide.chat.skills.setDefault': 'Tải mặc định',
551
+ 'ide.chat.skills.unsetDefault': 'Dừng tải theo mặc định',
552
+ 'ide.chat.skills.matchHint': 'Gợi ý từ các từ khóa trong tin nhắn gần đây của bạn',
554
553
  'ide.device.select': 'Device frame',
555
554
  'ide.device.rotate': 'Rotate',
556
555
  'ide.chat.closeOverlay': 'Close',
557
- 'ide.chat.retryCountdown': 'Server error — retrying in {{seconds}}s… (attempt {{attempt}})',
558
- 'ide.preview.blankTitle': 'The preview is blank',
559
- 'ide.preview.blankHint': 'The app loaded but didn’t render anything — it may have an error. Synthase has been notified. You can reload, or open the preview in a new tab.',
560
- 'ide.chat.previewLinkTitle': 'Open {{path}} in the preview',
561
- 'ide.chat.report.diagnosticsNote': 'Your app version, browser, and screen size are attached to help us debug.',
556
+ 'ide.chat.retryCountdown': 'Lỗi máy chủ — đang thử lại sau {{seconds}} giây… (lần thử thứ {{attempt}})',
557
+ 'ide.preview.blankTitle': 'Bản xem trước trống',
558
+ 'ide.preview.blankHint': 'Ứng dụng đã tải nhưng không hiển thị bất cứ thứ gì — có thể đã xảy ra lỗi. Synthase đã được thông báo. Bạn có thể tải lại hoặc mở bản xem trước trong một tab mới.',
559
+ 'ide.chat.previewLinkTitle': 'Mở {{path}} trong chế độ xem trước',
560
+ 'ide.chat.report.diagnosticsNote': 'Thông tin về phiên bản ứng dụng, trình duyệt và kích thước màn hình của bạn được đính kèm để giúp chúng tôi gỡ lỗi.',
562
561
  'ide.chat.skills.loadedCount': '🧠 Loaded {{count}} skills',
563
- 'ide.chat.skills.waitingForSandbox': 'Waiting for the sandbox to finish starting…',
564
- 'ide.chat.skills.resetDefaults': 'Load all by default',
565
- 'ide.search.excludedDirs': 'Excluded folders (applies to all searches, including the agent)',
566
- 'ide.chat.costStreamingNote': 'Running total — includes the response currently streaming.',
562
+ 'ide.chat.skills.waitingForSandbox': 'Đang chờ quá trình khởi động hoàn tất của môi trường thử nghiệm…',
563
+ 'ide.chat.skills.resetDefaults': 'Tải tất cả theo mặc định',
564
+ 'ide.search.excludedDirs': 'Các thư mục bị loại trừ (áp dụng cho tất cả các tìm kiếm, bao gồm cả tìm kiếm của tác nhân)',
565
+ 'ide.chat.costStreamingNote': 'Tổng số đang tính đến hiện tại — bao gồm cả phản hồi đang được truyền tải.',
567
566
  'ide.toolCall.packageCount': '{{count}} packages',
568
- 'ide.toolCall.openPackageDoc': 'Open package docs',
567
+ 'ide.toolCall.openPackageDoc': 'Mở tài liệu gói',
569
568
  'ide.chat.fastModeOn': 'Chế độ nhanh được bật — phản hồi nhanh hơn với tốc độ cao hơn',
570
569
  'ide.chat.fastModeOff': 'Chế độ nhanh tắt',
571
570
  'ide.chat.fastModeEnable': 'Chế độ nhanh — tốc độ xuất dữ liệu nhanh hơn tới 2,5 lần với tốc độ xử lý token cao hơn.',
@@ -577,7 +576,7 @@ export const vi = {
577
576
  'ide.chat.settings.effort.label': 'Nỗ lực lý luận',
578
577
  'ide.chat.timestampsShown': 'Đã hiện dấu thời gian.',
579
578
  'ide.chat.timestampsHidden': 'Đã ẩn dấu thời gian.',
580
- 'ide.chat.timestampsUsage': 'Usage: /timestamps [on | off]',
579
+ 'ide.chat.timestampsUsage': 'Cách sử dụng: /timestamps [on | off]',
581
580
  'ide.tests.testCount': '{{count}} kiểm tra',
582
581
  'ide.tests.run': 'Chạy',
583
582
  'ide.tests.runAll': 'Chạy tất cả',
@@ -586,6 +585,9 @@ export const vi = {
586
585
  'ide.tests.runGroup': 'Nhóm chạy',
587
586
  'ide.tests.stop': 'Dừng lại',
588
587
  'ide.tests.running': 'Đang chạy…',
588
+ 'ide.tests.runningAgent': '{{agent}} đang chạy kiểm thử…',
589
+ 'ide.tests.runningPlatform': 'Đang kiểm tra bản triển khai…',
590
+ 'ide.tests.runningElsewhere': 'Đang chạy trong một thẻ khác…',
589
591
  'ide.tests.passedCount': '{{count}} đi qua',
590
592
  'ide.tests.failedCount': '{{count}} thất bại',
591
593
  'ide.tests.statusPassed': 'Đi qua',
@@ -599,16 +601,16 @@ export const vi = {
599
601
  'ide.tests.e2eHint': 'Các thao tác này được thực hiện song song với bản xem trước trực tiếp, vì vậy hãy luôn mở bản xem trước.',
600
602
  'ide.tests.showOutput': 'Hiển thị kết quả',
601
603
  'ide.tests.hideOutput': 'Ẩn kết quả đầu ra',
602
- 'ide.testsBar.notRun_one': '{{count}} test not run yet',
603
- 'ide.testsBar.notRun_other': '{{count}} tests not run yet',
604
- 'ide.testsBar.counts': '{{passed}} passing, {{failed}} failing, {{skipped}} skipped',
605
- 'ide.testsBar.running': 'Running tests — {{remaining}} to go',
604
+ 'ide.testsBar.notRun_one': '{{count}} bài kiểm tra chưa được chạy',
605
+ 'ide.testsBar.notRun_other': '{{count}} bài kiểm tra chưa được chạy',
606
+ 'ide.testsBar.counts': '{{passed}} đạt, {{failed}} không đạt, {{skipped}} bỏ qua',
607
+ 'ide.testsBar.running': 'Đang chạy thử nghiệm — còn {{remaining}} thử nghiệm nữa',
606
608
  'ide.testsBar.runningLast': 'Running tests',
607
609
  'ide.testsBar.passing': 'All {{passed}} passing',
608
610
  'ide.testsBar.passingWithSkips': '{{passed}} passing, {{skipped}} skipped',
609
611
  'ide.testsBar.failing': '{{failed}} failing, {{passed}} passing',
610
- 'ide.testsBar.stopped': 'Test run stopped',
611
- 'ide.testsBar.error': 'Test run failed to finish',
612
+ 'ide.testsBar.stopped': 'Quá trình chạy thử nghiệm đã dừng lại.',
613
+ 'ide.testsBar.error': 'Quá trình chạy thử nghiệm không hoàn tất.',
612
614
  'ide.testsBar.passedLabel': 'passing',
613
615
  'ide.testsBar.failedLabel': 'failing',
614
616
  'ide.testsBar.skippedLabel': 'skipped',
@@ -616,8 +618,8 @@ export const vi = {
616
618
  'ide.testsBar.currentFile': 'Running {{file}}',
617
619
  'ide.testsBar.open': 'Tests',
618
620
  'ide.testsBar.stop': 'Stop',
619
- 'ide.chat.testsBarShown': 'Tests bar shown.',
620
- 'ide.chat.testsBarHidden': 'Tests bar hidden.',
621
+ 'ide.chat.testsBarShown': 'Biểu đồ kiểm tra được hiển thị.',
622
+ 'ide.chat.testsBarHidden': 'Thanh kiểm tra đã bị ẩn.',
621
623
  'ide.toolCall.command': 'Command',
622
624
  'ide.toolCall.request': 'Request',
623
625
  'ide.toolCall.response': 'Response',
@@ -625,8 +627,8 @@ export const vi = {
625
627
  'ide.work.running': '{{count}} running',
626
628
  'ide.work.failed': '{{count}} failed',
627
629
  'ide.work.finished': '{{count}} done',
628
- 'ide.work.waiting': 'Waiting for your answer',
629
- 'ide.work.stopped': 'Stopped before finishing',
630
+ 'ide.work.waiting': 'Tôi đang chờ câu trả lời của bạn.',
631
+ 'ide.work.stopped': 'Dừng lại trước khi hoàn thành',
630
632
  'ide.tests.cancelled': 'Cuộc chạy dừng lại.',
631
633
  'ide.tests.listError': 'Không thể liệt kê các bài kiểm tra của dự án này.',
632
634
  'ide.tests.runError': 'Quá trình chạy thử không thể bắt đầu.',
@@ -656,7 +658,7 @@ export const vi = {
656
658
  'ide.chat.viaDictation.badge': 'Được đọc chính tả bằng giọng nói',
657
659
  'ide.chat.inputLabel': 'Viết một tin nhắn',
658
660
  'ide.chat.messagesLabel': 'Tin nhắn hội thoại',
659
- 'ide.chat.backgroundCancelled': '{{count}} background task cancelled',
661
+ 'ide.chat.backgroundCancelled': '{{count}} tác vụ nền đã bị hủy',
660
662
  'ide.chat.backgroundCancelledElapsed': 'cancelled · {{elapsed}}',
661
663
  'ide.chat.backgroundOutput': '{{count}} characters produced',
662
664
  'ide.work.cancelled': '{{count}} cancelled',
@@ -665,18 +667,18 @@ export const vi = {
665
667
  'ide.chat.context.target': 'Compaction target',
666
668
  'ide.chat.context.window': 'Context window',
667
669
  'ide.chat.context.indicator': '{{tokens}} / {{limit}} tokens · {{target}} ({{percent}}%)',
668
- 'ide.chat.context.targetHelp': 'Compaction is scheduled around this target; progress can continue while the summary is prepared.',
669
- 'ide.chat.context.actual': 'Provider-reported input: {{tokens}} tokens (including cached input).',
670
- 'ide.chat.context.pending': 'Provider usage is pending; current token counts are estimates.',
671
- 'ide.chat.context.estimate': 'Known text estimate: {{tokens}} tokens. Request: {{chars}} characters / {{bytes}} bytes. Shares describe estimated tokens, not billed allocation.',
672
- 'ide.chat.context.unknown': 'Some image, attachment, or unmeasurable content has an unknown token cost and is excluded from estimated shares.',
670
+ 'ide.chat.context.targetHelp': 'Việc đầm nén được lên kế hoạch dựa trên mục tiêu này; quá trình thi công có thể tiếp tục trong khi bản tóm tắt được chuẩn bị.',
671
+ 'ide.chat.context.actual': 'Dữ liệu đầu vào do nhà cung cấp báo cáo: {{tokens}} token (bao gồm cả dữ liệu đầu vào được lưu trong bộ nhớ cache).',
672
+ 'ide.chat.context.pending': 'Việc sử dụng của nhà cung cấp đang chờ xử lý; số lượng token hiện tại chỉ là ước tính.',
673
+ 'ide.chat.context.estimate': 'Ước tính số lượng văn bản đã biết: {{tokens}} token. Yêu cầu: {{chars}} ký tự / {{bytes}} byte. Số lượng phần trăm được mô tả là số token ước tính, không phải là số token được phân bổ thực tế.',
674
+ 'ide.chat.context.unknown': 'Một số hình ảnh, tệp đính kèm hoặc nội dung không thể đo lường được có chi phí token không xác định và bị loại trừ khỏi ước tính số lượng chia sẻ.',
673
675
  'ide.chat.context.breakdown': 'Request composition',
674
676
  'ide.chat.context.category': 'Category',
675
677
  'ide.chat.context.tokens': 'Est. tokens',
676
678
  'ide.chat.context.share': 'Share',
677
679
  'ide.chat.context.bytes': 'Bytes',
678
- 'ide.chat.context.history': 'Context over time · {{count}} requests',
679
- 'ide.chat.context.chart': 'Input tokens over time; dashed line marks the current target',
680
+ 'ide.chat.context.history': 'Bối cảnh theo thời gian · {{count}} yêu cầu',
681
+ 'ide.chat.context.chart': 'Nhập mã thông báo theo thời gian; đường nét đứt đánh dấu mục tiêu hiện tại.',
680
682
  'ide.chat.context.tokenUnit': 'tokens',
681
683
  'ide.chat.context.compactions': 'Completed compactions: {{count}}',
682
684
  'ide.chat.context.compaction': '{{at}} · {{before}} → {{after}} characters · {{seconds}}s',
@@ -705,7 +707,7 @@ export const vi = {
705
707
  'ide.chat.context.session': 'Phiên hiện tại',
706
708
  'ide.chat.context.sessionTotal': '{{tokens}} mã thông báo',
707
709
  'ide.chat.context.sessionDetail': '{{input}} đầu vào (bao gồm bộ nhớ đệm) · {{output}} đầu ra',
708
- 'ide.chat.context.live': 'Sống',
710
+ 'ide.chat.context.live': 'Trực tiếp',
709
711
  'ide.chat.context.allowance': 'Tổng số tiền trợ cấp AI',
710
712
  'ide.chat.context.remainingPercent': '~ {{percent}} % còn lại',
711
713
  'ide.chat.context.unmetered': 'Không đo lường',
@@ -714,5 +716,8 @@ export const vi = {
714
716
  'ide.chat.context.monthly': 'Trợ cấp hàng tháng.',
715
717
  'ide.chat.context.daily': 'Tiền tiêu vặt hàng ngày.',
716
718
  'ide.chat.context.resets': 'Đặt lại về {{at}} .',
719
+ 'ide.error.noProvider': 'Trình cung cấp không gian làm việc IDE chưa được cấu hình. Hãy liên kết với trình cung cấp IDE trước.',
720
+ 'ide.chat.tip.plan': 'Mẹo: Sử dụng /plan để {{agentName}} nghiên cứu và đề xuất kế hoạch trước khi chỉnh sửa bất kỳ tập tin nào.',
721
+ 'ide.chat.tip.commit': 'Mẹo: dùng /commit để lưu các thay đổi của bạn thành một git commit mà bạn luôn có thể quay lại.',
717
722
  };
718
723
  //# sourceMappingURL=vi.js.map