@tduncan / Cortana / commits / da60d10

refactor: replace model top bar with model chip and migrate attachment menu to dedicated sheet component

abdulmominsakib committed Jul 27, 2026 at 16:17 UTC da60d109b1f2e844ee0f3592bed94b5c58a5c76e
29 files changed +4354 -3748
l10n.yaml
+1
@@ -1,3 +1,4 @@
1 arb-dir: lib/l10n
2 template-arb-file: app_en.arb
3 output-localization-file: app_localizations.dart
4 +untranslated-messages-file: lib/l10n/untranslated.txt
lib/features/chat/views/chat_screen.dart
-2
@@ -21,7 +21,6 @@ import '../data/export_service.dart';
21 import '../providers/chat_providers.dart';
22 import 'components/chat_auto_scroll_controller.dart';
23 import 'components/notification_permission_banner.dart';
24 -import 'components/top_bar/model_top_bar.dart';
24 import 'components/top_bar/connection_banner.dart';
25 import 'components/top_bar/persona_indicator.dart';
26 import 'components/top_bar/screen_app_bar.dart';
@@ -311,7 +310,6 @@ class _ChatBody extends ConsumerWidget {
310
311 return Column(
312 children: [
314 - ModelTopBar(selectedModel: selectedModel, onModelTap: onModelPicker),
313 ScreenAppBar(
314 activeConversation: activeConversation,
315 isDark: isDark,
lib/features/chat/views/components/attach_sheet.dart new
+227
@@ -0,0 +1,227 @@
1 +import 'package:flutter/material.dart';
2 +import 'package:hugeicons/hugeicons.dart';
3 +
4 +import 'package:localmind/core/theme/colors.dart';
5 +import 'package:localmind/l10n/app_localizations.dart';
6 +
7 +/// Shows the modern, grid-style attachment picker bottom sheet.
8 +///
9 +/// Returns a result the caller can act on, or `null` if the user dismissed
10 +/// the sheet. Designed to mirror the clean action-sheet pattern used in
11 +/// iOS / Android system pickers — large rounded card, three short tile
12 +/// actions, drag handle, and tappable outside-to-dismiss.
13 +enum AttachAction { documents, images, savedMessage }
14 +
15 +Future<AttachAction?> showAttachSheet(BuildContext context) {
16 + return showModalBottomSheet<AttachAction>(
17 + context: context,
18 + backgroundColor: Colors.transparent,
19 + barrierColor: Colors.black.withValues(alpha: 0.45),
20 + isScrollControlled: true,
21 + showDragHandle: false,
22 + useSafeArea: true,
23 + builder: (_) => const _AttachSheet(),
24 + );
25 +}
26 +
27 +class _AttachSheet extends StatelessWidget {
28 + const _AttachSheet();
29 +
30 + @override
31 + Widget build(BuildContext context) {
32 + final l10n = AppLocalizations.of(context)!;
33 + final theme = Theme.of(context);
34 + final isDark = theme.brightness == Brightness.dark;
35 +
36 + final bg = isDark ? AppColors.darkSurface : AppColors.lightSurface;
37 + final tileBg = isDark
38 + ? AppColors.darkSurfaceInput
39 + : theme.colorScheme.surfaceContainerHighest.withValues(alpha: 0.45);
40 + final fg = isDark ? AppColors.darkPrimaryText : AppColors.lightPrimaryText;
41 + final mutedFg =
42 + isDark ? AppColors.darkMutedText : AppColors.lightMutedText;
43 +
44 + return Padding(
45 + padding: const EdgeInsets.fromLTRB(12, 0, 12, 12),
46 + child: Container(
47 + decoration: BoxDecoration(
48 + color: bg,
49 + borderRadius: BorderRadius.circular(24),
50 + boxShadow: [
51 + BoxShadow(
52 + color: Colors.black.withValues(alpha: isDark ? 0.4 : 0.12),
53 + blurRadius: 30,
54 + offset: const Offset(0, 8),
55 + ),
56 + ],
57 + ),
58 + child: SafeArea(
59 + top: false,
60 + child: Column(
61 + mainAxisSize: MainAxisSize.min,
62 + children: [
63 + const SizedBox(height: 8),
64 + Container(
65 + width: 40,
66 + height: 4,
67 + decoration: BoxDecoration(
68 + color: mutedFg.withValues(alpha: 0.4),
69 + borderRadius: BorderRadius.circular(2),
70 + ),
71 + ),
72 + const SizedBox(height: 16),
73 + Padding(
74 + padding: const EdgeInsets.symmetric(horizontal: 20),
75 + child: Row(
76 + children: [
77 + Expanded(
78 + child: Column(
79 + crossAxisAlignment: CrossAxisAlignment.start,
80 + children: [
81 + Text(
82 + l10n.add_to_chat,
83 + style: TextStyle(
84 + fontSize: 17,
85 + fontWeight: FontWeight.w700,
86 + color: fg,
87 + ),
88 + ),
89 + const SizedBox(height: 2),
90 + Text(
91 + l10n.choose_attachment_subtitle,
92 + style: TextStyle(
93 + fontSize: 13,
94 + color: mutedFg,
95 + ),
96 + ),
97 + ],
98 + ),
99 + ),
100 + IconButton(
101 + icon: HugeIcon(
102 + icon: HugeIcons.strokeRoundedCancel01,
103 + color: mutedFg,
104 + size: 20,
105 + ),
106 + onPressed: () => Navigator.of(context).pop(),
107 + ),
108 + ],
109 + ),
110 + ),
111 + const SizedBox(height: 8),
112 + Padding(
113 + padding: const EdgeInsets.fromLTRB(16, 8, 16, 20),
114 + child: Row(
115 + children: [
116 + Expanded(
117 + child: _AttachTile(
118 + icon: HugeIcons.strokeRoundedImage01,
119 + label: l10n.attach_shortcut_images,
120 + tileColor: tileBg,
121 + foreground: fg,
122 + accent: const Color(0xFF7C5CFF),
123 + onTap: () =>
124 + Navigator.of(context).pop(AttachAction.images),
125 + ),
126 + ),
127 + const SizedBox(width: 10),
128 + Expanded(
129 + child: _AttachTile(
130 + icon: HugeIcons.strokeRoundedFile01,
131 + label: l10n.attach_shortcut_documents,
132 + tileColor: tileBg,
133 + foreground: fg,
134 + accent: const Color(0xFFFF8A4C),
135 + onTap: () =>
136 + Navigator.of(context).pop(AttachAction.documents),
137 + ),
138 + ),
139 + const SizedBox(width: 10),
140 + Expanded(
141 + child: _AttachTile(
142 + icon: HugeIcons.strokeRoundedBookmark01,
143 + label: l10n.attach_shortcut_saved,
144 + tileColor: tileBg,
145 + foreground: fg,
146 + accent: const Color(0xFF22C55E),
147 + onTap: () => Navigator.of(context)
148 + .pop(AttachAction.savedMessage),
149 + ),
150 + ),
151 + ],
152 + ),
153 + ),
154 + ],
155 + ),
156 + ),
157 + ),
158 + );
159 + }
160 +}
161 +
162 +class _AttachTile extends StatelessWidget {
163 + const _AttachTile({
164 + required this.icon,
165 + required this.label,
166 + required this.tileColor,
167 + required this.foreground,
168 + required this.accent,
169 + required this.onTap,
170 + });
171 +
172 + final dynamic icon;
173 + final String label;
174 + final Color tileColor;
175 + final Color foreground;
176 + final Color accent;
177 + final VoidCallback onTap;
178 +
179 + @override
180 + Widget build(BuildContext context) {
181 + return Material(
182 + color: Colors.transparent,
183 + child: InkWell(
184 + onTap: onTap,
185 + borderRadius: BorderRadius.circular(16),
186 + child: Container(
187 + padding: const EdgeInsets.symmetric(vertical: 14, horizontal: 8),
188 + decoration: BoxDecoration(
189 + color: tileColor,
190 + borderRadius: BorderRadius.circular(16),
191 + ),
192 + child: Column(
193 + mainAxisSize: MainAxisSize.min,
194 + children: [
195 + Container(
196 + width: 40,
197 + height: 40,
198 + decoration: BoxDecoration(
199 + color: accent.withValues(alpha: 0.14),
200 + borderRadius: BorderRadius.circular(12),
201 + ),
202 + child: Center(
203 + child: HugeIcon(
204 + icon: icon,
205 + color: accent,
206 + size: 22,
207 + ),
208 + ),
209 + ),
210 + const SizedBox(height: 8),
211 + Text(
212 + label,
213 + maxLines: 1,
214 + overflow: TextOverflow.ellipsis,
215 + style: TextStyle(
216 + fontSize: 12,
217 + fontWeight: FontWeight.w600,
218 + color: foreground,
219 + ),
220 + ),
221 + ],
222 + ),
223 + ),
224 + ),
225 + );
226 + }
227 +}
\ No newline at end of file
lib/features/chat/views/components/chat_input_bar.dart
+198 -179
@@ -20,7 +20,9 @@ import '../../providers/chat_providers.dart';
20 import '../../utils/attachment_helpers.dart';
21 import '../../utils/image_upload_utils.dart';
22 import '../../../models/views/model_picker_sheet.dart';
23 +import 'attach_sheet.dart';
24 import 'image_preview_dialog.dart';
25 +import 'model_chip.dart';
26
27 class ChatInputBar extends ConsumerStatefulWidget {
28 const ChatInputBar({
@@ -283,51 +285,17 @@ class ChatInputBarState extends ConsumerState<ChatInputBar>
285 }
286 }
287
286 - void _showAttachMenu() {
287 - final l10n = AppLocalizations.of(context)!;
288 -
289 - showModalBottomSheet(
290 - context: context,
291 -
292 - builder: (ctx) => SafeArea(
293 - child: Column(
294 - mainAxisSize: MainAxisSize.min,
295 -
296 - children: [
297 - ListTile(
298 - leading: const HugeIcon(icon: HugeIcons.strokeRoundedFile01),
299 - title: Text(l10n.attach_text_document),
300 - onTap: () {
301 - Navigator.pop(ctx);
302 - _pickTextDocument();
303 - },
304 - ),
305 - ListTile(
306 - leading: const HugeIcon(icon: HugeIcons.strokeRoundedImage01),
307 - title: Text(l10n.attach_image),
308 - onTap: () {
309 - Navigator.pop(ctx);
310 - _pickImages();
311 - },
312 - ),
313 -
314 - ListTile(
315 - leading: const HugeIcon(icon: HugeIcons.strokeRoundedBookmark01),
316 -
317 - title: Text(l10n.insert_saved_message),
318 -
319 - onTap: () {
320 - Navigator.pop(ctx);
321 -
322 - _handleInsertSavedMessage();
323 - },
324 - ),
325 -
326 - const SizedBox(height: 8),
327 - ],
328 - ),
329 - ),
330 - );
288 + void _showAttachMenu() async {
289 + final result = await showAttachSheet(context);
290 + if (!mounted || result == null) return;
291 + switch (result) {
292 + case AttachAction.documents:
293 + _pickTextDocument();
294 + case AttachAction.images:
295 + _pickImages();
296 + case AttachAction.savedMessage:
297 + _handleInsertSavedMessage();
298 + }
299 }
300
301 Future<void> _handleMicToggle() async {
@@ -425,6 +393,31 @@ class ChatInputBarState extends ConsumerState<ChatInputBar>
393 );
394 }
395
396 + Widget _buildAddButton(bool isConnected, ThemeData theme) {
397 + final l10n = AppLocalizations.of(context)!;
398 + final isDark = theme.brightness == Brightness.dark;
399 + return Container(
400 + width: 36,
401 + height: 36,
402 + decoration: BoxDecoration(
403 + color: isDark
404 + ? Colors.white.withValues(alpha: 0.06)
405 + : Colors.black.withValues(alpha: 0.05),
406 + shape: BoxShape.circle,
407 + ),
408 + child: IconButton(
409 + padding: EdgeInsets.zero,
410 + icon: HugeIcon(
411 + icon: HugeIcons.strokeRoundedAdd01,
412 + size: 22,
413 + color: theme.colorScheme.onSurface.withValues(alpha: 0.7),
414 + ),
415 + onPressed: isConnected ? _showAttachMenu : null,
416 + tooltip: l10n.add_attachment,
417 + ),
418 + );
419 + }
420 +
421 void _handleSubmit() {
422 final text = _controller.text.trim();
423
@@ -638,6 +631,11 @@ class ChatInputBarState extends ConsumerState<ChatInputBar>
631 static const _holdDuration = Duration(milliseconds: 3000);
632 static const _insertHoldThreshold = 500 / 3000;
633
634 + /// Reserve space on the right edge of the text field so long
635 + /// messages never slide underneath the overlaid token-usage
636 + /// indicator. Sized to comfortably fit a 6-digit token count.
637 + static const double _tokenUsageReservedWidth = 70;
638 +
639 Widget _buildActionButton(bool canSend, ThemeData theme) {
640 final l10n = AppLocalizations.of(context)!;
641
@@ -883,19 +881,28 @@ class ChatInputBarState extends ConsumerState<ChatInputBar>
881 top: false,
882
883 child: Container(
886 - margin: const EdgeInsets.only(left: 16, right: 16, top: 8, bottom: 8),
884 + margin: const EdgeInsets.only(left: 12, right: 12, top: 8, bottom: 8),
885
888 - padding: const EdgeInsets.fromLTRB(6, 4, 6, 4),
886 + padding: const EdgeInsets.fromLTRB(8, 8, 8, 8),
887
888 decoration: BoxDecoration(
889 color: isDark ? AppColors.darkSurfaceInput : AppColors.lightSurface,
890
893 - borderRadius: BorderRadius.circular(28),
891 + borderRadius: BorderRadius.circular(26),
892
893 border: Border.all(
896 - color: isDark ? AppColors.darkBorder : AppColors.lightBorder,
894 + color: isDark
895 + ? AppColors.darkBorder.withValues(alpha: 0.6)
896 + : AppColors.lightBorder,
897 width: 1,
898 ),
899 + boxShadow: [
900 + BoxShadow(
901 + color: Colors.black.withValues(alpha: isDark ? 0.25 : 0.06),
902 + blurRadius: 18,
903 + offset: const Offset(0, 4),
904 + ),
905 + ],
906 ),
907
908 child: Column(
@@ -1010,148 +1017,160 @@ class ChatInputBarState extends ConsumerState<ChatInputBar>
1017 const SizedBox(height: 8),
1018 ],
1019
1013 - if (selectedModel?.supportsReasoning == true ||
1014 - showRoleSwapButton) ...[
1015 - Padding(
1016 - padding: const EdgeInsets.only(left: 8, right: 8, bottom: 4),
1017 - child: Row(
1018 - children: [
1019 - if (selectedModel?.supportsReasoning == true)
1020 - _buildThinkButton(theme),
1021 - const Spacer(),
1022 - if (showRoleSwapButton) _buildRoleSwapButton(theme),
1023 - ],
1024 - ),
1025 - ),
1026 - const SizedBox(height: 4),
1027 - ],
1028 -
1029 - Row(
1030 - crossAxisAlignment: CrossAxisAlignment.center,
1031 - children: [
1032 - IconButton(
1033 - visualDensity: VisualDensity.compact,
1034 -
1035 - padding: const EdgeInsets.all(8),
1036 -
1037 - constraints: const BoxConstraints(
1038 - minWidth: 36,
1039 - minHeight: 36,
1040 - ),
1041 -
1042 - icon: HugeIcon(icon:
1043 - HugeIcons.strokeRoundedAdd01,
1044 -
1045 - size: 24,
1046 -
1047 - color: theme.colorScheme.onSurface.withValues(alpha: 0.6),
1048 - ),
1049 -
1050 - onPressed: isConnected ? _showAttachMenu : null,
1051 -
1052 - tooltip: l10n.add_attachment,
1053 - ),
1054 -
1055 - const SizedBox(width: 4),
1056 -
1057 - Expanded(
1058 - child: Stack(
1059 - children: [
1060 - IgnorePointer(
1061 - ignoring: widget.keyboardIncognito,
1062 - child: Opacity(
1063 - opacity: widget.keyboardIncognito ? 0 : 1,
1064 - child: TextField(
1065 - controller: _normalController,
1066 - focusNode: _focusNode,
1067 - enabled: widget.enabled,
1068 - maxLines: 6,
1069 - minLines: 1,
1070 - textInputAction: TextInputAction.newline,
1071 - keyboardType: TextInputType.multiline,
1072 - enableSuggestions: true,
1073 - autocorrect: true,
1074 - enableIMEPersonalizedLearning: true,
1075 - onChanged: (_) => setState(() {}),
1076 - style: TextStyle(
1077 - fontSize: 16,
1078 - color: theme.colorScheme.onSurface,
1079 - ),
1080 - decoration: InputDecoration(
1081 - filled: false,
1082 - border: InputBorder.none,
1083 - enabledBorder: InputBorder.none,
1084 - focusedBorder: InputBorder.none,
1085 - disabledBorder: InputBorder.none,
1086 - hintText: l10n.chat_input_hint,
1087 - hintStyle: TextStyle(
1088 - color: theme.colorScheme.onSurface.withValues(
1089 - alpha: 0.38,
1090 - ),
1091 - fontSize: 16,
1092 - ),
1093 - isDense: true,
1094 - contentPadding: const EdgeInsets.symmetric(
1095 - vertical: 8,
1096 - ),
1020 + // Text input row. Sits on top of the action row so the action
1021 + // controls stay visually grouped below. The token usage
1022 + // indicator is overlaid on the right edge of the input so
1023 + // the bottom row stays focused on composer actions.
1024 + Padding(
1025 + padding: const EdgeInsets.symmetric(vertical: 2),
1026 + child: Stack(
1027 + children: [
1028 + IgnorePointer(
1029 + ignoring: widget.keyboardIncognito,
1030 + child: Opacity(
1031 + opacity: widget.keyboardIncognito ? 0 : 1,
1032 + child: TextField(
1033 + controller: _normalController,
1034 + focusNode: _focusNode,
1035 + enabled: widget.enabled,
1036 + maxLines: 6,
1037 + minLines: 1,
1038 + textInputAction: TextInputAction.newline,
1039 + keyboardType: TextInputType.multiline,
1040 + enableSuggestions: true,
1041 + autocorrect: true,
1042 + enableIMEPersonalizedLearning: true,
1043 + onChanged: (_) => setState(() {}),
1044 + style: TextStyle(
1045 + fontSize: 16,
1046 + color: theme.colorScheme.onSurface,
1047 + ),
1048 + decoration: InputDecoration(
1049 + filled: false,
1050 + border: InputBorder.none,
1051 + enabledBorder: InputBorder.none,
1052 + focusedBorder: InputBorder.none,
1053 + disabledBorder: InputBorder.none,
1054 + hintText: l10n.chat_input_hint,
1055 + hintStyle: TextStyle(
1056 + color: theme.colorScheme.onSurface.withValues(
1057 + alpha: 0.38,
1058 ),
1059 + fontSize: 16,
1060 + ),
1061 + isDense: true,
1062 + contentPadding: const EdgeInsets.fromLTRB(
1063 + 4,
1064 + 8,
1065 + // Leave room on the right for the token-usage
1066 + // indicator so long messages don't slide
1067 + // underneath it.
1068 + _tokenUsageReservedWidth,
1069 + 8,
1070 ),
1071 ),
1072 ),
1101 - IgnorePointer(
1102 - ignoring: !widget.keyboardIncognito,
1103 - child: Opacity(
1104 - opacity: widget.keyboardIncognito ? 1 : 0,
1105 - child: TextField(
1106 - controller: _incognitoController,
1107 - focusNode: _incognitoFocus,
1108 - enabled: widget.enabled,
1109 - maxLines: 6,
1110 - minLines: 1,
1111 - textInputAction: TextInputAction.newline,
1112 - keyboardType: TextInputType.multiline,
1113 - enableSuggestions: false,
1114 - autocorrect: false,
1115 - enableIMEPersonalizedLearning: false,
1116 - spellCheckConfiguration:
1117 - const SpellCheckConfiguration.disabled(),
1118 - smartDashesType: SmartDashesType.disabled,
1119 - smartQuotesType: SmartQuotesType.disabled,
1120 - onChanged: (_) => setState(() {}),
1121 - style: TextStyle(
1122 - fontSize: 16,
1123 - color: theme.colorScheme.onSurface,
1124 - ),
1125 - decoration: InputDecoration(
1126 - filled: false,
1127 - border: InputBorder.none,
1128 - enabledBorder: InputBorder.none,
1129 - focusedBorder: InputBorder.none,
1130 - disabledBorder: InputBorder.none,
1131 - hintText: l10n.chat_input_hint,
1132 - hintStyle: TextStyle(
1133 - color: theme.colorScheme.onSurface.withValues(
1134 - alpha: 0.38,
1135 - ),
1136 - fontSize: 16,
1137 - ),
1138 - isDense: true,
1139 - contentPadding: const EdgeInsets.symmetric(
1140 - vertical: 8,
1141 - ),
1073 + ),
1074 + ),
1075 + IgnorePointer(
1076 + ignoring: !widget.keyboardIncognito,
1077 + child: Opacity(
1078 + opacity: widget.keyboardIncognito ? 1 : 0,
1079 + child: TextField(
1080 + controller: _incognitoController,
1081 + focusNode: _incognitoFocus,
1082 + enabled: widget.enabled,
1083 + maxLines: 6,
1084 + minLines: 1,
1085 + textInputAction: TextInputAction.newline,
1086 + keyboardType: TextInputType.multiline,
1087 + enableSuggestions: false,
1088 + autocorrect: false,
1089 + enableIMEPersonalizedLearning: false,
1090 + spellCheckConfiguration:
1091 + const SpellCheckConfiguration.disabled(),
1092 + smartDashesType: SmartDashesType.disabled,
1093 + smartQuotesType: SmartQuotesType.disabled,
1094 + onChanged: (_) => setState(() {}),
1095 + style: TextStyle(
1096 + fontSize: 16,
1097 + color: theme.colorScheme.onSurface,
1098 + ),
1099 + decoration: InputDecoration(
1100 + filled: false,
1101 + border: InputBorder.none,
1102 + enabledBorder: InputBorder.none,
1103 + focusedBorder: InputBorder.none,
1104 + disabledBorder: InputBorder.none,
1105 + hintText: l10n.chat_input_hint,
1106 + hintStyle: TextStyle(
1107 + color: theme.colorScheme.onSurface.withValues(
1108 + alpha: 0.38,
1109 ),
1110 + fontSize: 16,
1111 + ),
1112 + isDense: true,
1113 + contentPadding: const EdgeInsets.fromLTRB(
1114 + 4,
1115 + 8,
1116 + _tokenUsageReservedWidth,
1117 + 8,
1118 ),
1119 ),
1120 ),
1146 - ],
1121 + ),
1122 ),
1123 + if (_controller.text.isEmpty)
1124 + Positioned(
1125 + right: 4,
1126 + top: 0,
1127 + bottom: 0,
1128 + child: Center(
1129 + child: TokenUsageIndicator(
1130 + totalTokenCount: widget.totalTokenCount,
1131 + ),
1132 + ),
1133 + ),
1134 + ],
1135 + ),
1136 + ),
1137 +
1138 + // Bottom action row: attach button, model picker chip, optional
1139 + // reasoning/role controls, mic, send. Mirrors the modern
1140 + // composer layout where composer actions sit in a single
1141 + // horizontal row directly below the text input.
1142 + Row(
1143 + crossAxisAlignment: CrossAxisAlignment.center,
1144 + children: [
1145 + _buildAddButton(isConnected, theme),
1146 +
1147 + const SizedBox(width: 8),
1148 +
1149 + ModelChip(
1150 + model: selectedModel,
1151 + enabled: isConnected && widget.enabled,
1152 + onTap: () {
1153 + Haptics.vibrate(HapticsType.light);
1154 + showModalBottomSheet(
1155 + context: context,
1156 + isScrollControlled: true,
1157 + useSafeArea: true,
1158 + builder: (_) => const ModelPickerSheet(),
1159 + );
1160 + },
1161 ),
1162
1150 - if (_controller.text.isEmpty) ...[
1151 - const SizedBox(width: 8),
1152 - TokenUsageIndicator(totalTokenCount: widget.totalTokenCount),
1163 + if (selectedModel?.supportsReasoning == true) ...[
1164 + const SizedBox(width: 6),
1165 + _buildThinkButton(theme),
1166 ],
1154 - const SizedBox(width: 8),
1167 + if (showRoleSwapButton) ...[
1168 + const SizedBox(width: 4),
1169 + _buildRoleSwapButton(theme),
1170 + ],
1171 +
1172 + const Spacer(),
1173 +
1174 _buildMicButton(isListening, theme),
1175
1176 const SizedBox(width: 8),
lib/features/chat/views/components/model_chip.dart new
+87
@@ -0,0 +1,87 @@
1 +import 'package:flutter/material.dart';
2 +import 'package:hugeicons/hugeicons.dart';
3 +
4 +import 'package:localmind/core/theme/colors.dart';
5 +import 'package:localmind/features/models/data/models/model_info.dart';
6 +import 'package:localmind/l10n/app_localizations.dart';
7 +
8 +/// Compact model picker chip that lives inside the chat input bar.
9 +///
10 +/// Shows the active model's display name (or a "Select model" placeholder
11 +/// when none is set) and opens the model picker bottom sheet on tap.
12 +/// Designed as a pure text pill — no leading icon — to keep the bottom
13 +/// action row visually quiet.
14 +class ModelChip extends StatelessWidget {
15 + const ModelChip({
16 + super.key,
17 + required this.model,
18 + required this.onTap,
19 + required this.enabled,
20 + });
21 +
22 + final ModelInfo? model;
23 + final VoidCallback onTap;
24 + final bool enabled;
25 +
26 + @override
27 + Widget build(BuildContext context) {
28 + final l10n = AppLocalizations.of(context)!;
29 + final theme = Theme.of(context);
30 + final isDark = theme.brightness == Brightness.dark;
31 +
32 + final hasModel = model != null;
33 + final fg = hasModel
34 + ? (isDark ? AppColors.darkPrimaryText : AppColors.lightPrimaryText)
35 + : (isDark ? AppColors.darkMutedText : AppColors.lightMutedText);
36 + final bg = hasModel
37 + ? theme.colorScheme.primary.withValues(alpha: 0.12)
38 + : (isDark
39 + ? AppColors.darkSurfaceInput
40 + : AppColors.lightSurface.withValues(alpha: 0.0));
41 + final borderColor = hasModel
42 + ? theme.colorScheme.primary.withValues(alpha: 0.4)
43 + : (isDark ? AppColors.darkBorder : AppColors.lightBorder);
44 +
45 + final label = hasModel ? model!.displayName : l10n.select_model_prompt;
46 +
47 + return Material(
48 + color: Colors.transparent,
49 + child: InkWell(
50 + onTap: enabled ? onTap : null,
51 + borderRadius: BorderRadius.circular(999),
52 + child: Container(
53 + padding: const EdgeInsetsDirectional.fromSTEB(12, 6, 10, 6),
54 + decoration: BoxDecoration(
55 + color: bg,
56 + border: Border.all(color: borderColor),
57 + borderRadius: BorderRadius.circular(999),
58 + ),
59 + child: Row(
60 + mainAxisSize: MainAxisSize.min,
61 + children: [
62 + ConstrainedBox(
63 + constraints: const BoxConstraints(maxWidth: 160),
64 + child: Text(
65 + label,
66 + maxLines: 1,
67 + overflow: TextOverflow.ellipsis,
68 + style: TextStyle(
69 + fontSize: 13,
70 + fontWeight: FontWeight.w600,
71 + color: fg,
72 + ),
73 + ),
74 + ),
75 + const SizedBox(width: 4),
76 + HugeIcon(
77 + icon: HugeIcons.strokeRoundedArrowDown01,
78 + size: 12,
79 + color: fg.withValues(alpha: 0.7),
80 + ),
81 + ],
82 + ),
83 + ),
84 + ),
85 + );
86 + }
87 +}
\ No newline at end of file
lib/features/chat/views/components/top_bar/model_top_bar.dart deleted
-173
@@ -1,173 +0,0 @@
1 -import 'package:flutter/material.dart';
2 -import 'package:flutter_riverpod/flutter_riverpod.dart';
3 -import 'package:hugeicons/hugeicons.dart';
4 -
5 -import 'package:localmind/core/models/enums.dart';
6 -import 'package:localmind/l10n/app_localizations.dart';
7 -import 'package:localmind/features/servers/data/models/server.dart';
8 -import 'package:localmind/features/servers/providers/server_providers.dart';
9 -import 'package:localmind/features/servers/views/components/server_icon_picker.dart';
10 -import 'package:localmind/features/servers/views/components/server_picker_sheet.dart';
11 -
12 -class ModelTopBar extends ConsumerWidget {
13 - const ModelTopBar({
14 - super.key,
15 - required this.selectedModel,
16 - required this.onModelTap,
17 - });
18 -
19 - final dynamic selectedModel;
20 - final VoidCallback onModelTap;
21 -
22 - @override
23 - Widget build(BuildContext context, WidgetRef ref) {
24 - final l10n = AppLocalizations.of(context)!;
25 - final theme = Theme.of(context);
26 - final isDark = theme.brightness == Brightness.dark;
27 - final activeServer = ref.watch(activeServerProvider);
28 - final connectionStatus = ref.watch(connectionStatusProvider);
29 - final mutedColor = isDark ? Colors.white54 : Colors.black45;
30 - final textColor = isDark ? Colors.white70 : Colors.black87;
31 -
32 - return Container(
33 - width: double.infinity,
34 - color: theme.colorScheme.surface,
35 - child: SafeArea(
36 - bottom: false,
37 - child: Padding(
38 - padding: const EdgeInsets.symmetric(vertical: 6, horizontal: 12),
39 - child: Row(
40 - children: [
41 - if (activeServer != null) ...[
42 - InkWell(
43 - onTap: () => showServerPickerSheet(context, ref),
44 - borderRadius: BorderRadius.circular(6),
45 - child: Padding(
46 - padding: const EdgeInsets.symmetric(
47 - horizontal: 4,
48 - vertical: 2,
49 - ),
50 - child: Row(
51 - mainAxisSize: MainAxisSize.min,
52 - children: [
53 - _ServerGlyph(
54 - server: activeServer,
55 - connectionStatus: connectionStatus,
56 - isDark: isDark,
57 - ),
58 - const SizedBox(width: 4),
59 - ConstrainedBox(
60 - constraints: BoxConstraints(
61 - maxWidth: MediaQuery.sizeOf(context).width * 0.28,
62 - ),
63 - child: Text(
64 - activeServer.name,
65 - style: TextStyle(
66 - fontSize: 11,
67 - fontWeight: FontWeight.w500,
68 - color: textColor,
69 - ),
70 - maxLines: 1,
71 - overflow: TextOverflow.ellipsis,
72 - ),
73 - ),
74 - ],
75 - ),
76 - ),
77 - ),
78 - Padding(
79 - padding: const EdgeInsets.symmetric(horizontal: 6),
80 - child: Text('·', style: TextStyle(color: mutedColor, fontSize: 12)),
81 - ),
82 - ],
83 - Expanded(
84 - child: InkWell(
85 - onTap: onModelTap,
86 - borderRadius: BorderRadius.circular(6),
87 - child: Padding(
88 - padding: const EdgeInsets.symmetric(
89 - horizontal: 4,
90 - vertical: 2,
91 - ),
92 - child: Row(
93 - children: [
94 - Expanded(
95 - child: Text(
96 - selectedModel?.displayName ?? l10n.select_model,
97 - style: TextStyle(
98 - fontSize: 11,
99 - fontWeight: FontWeight.w500,
100 - color: textColor,
101 - ),
102 - maxLines: 1,
103 - overflow: TextOverflow.ellipsis,
104 - ),
105 - ),
106 - HugeIcon(icon: HugeIcons.strokeRoundedArrowDown01, size: 14, color: mutedColor),
107 - ],
108 - ),
109 - ),
110 - ),
111 - ),
112 - ],
113 - ),
114 - ),
115 - ),
116 - );
117 - }
118 -}
119 -
120 -class _ServerGlyph extends StatelessWidget {
121 - const _ServerGlyph({
122 - required this.server,
123 - required this.connectionStatus,
124 - required this.isDark,
125 - });
126 -
127 - final Server server;
128 - final ConnectionStatus connectionStatus;
129 - final bool isDark;
130 -
131 - @override
132 - Widget build(BuildContext context) {
133 - final iconName = server.iconName;
134 - final serverIcon = iconName != null
135 - ? (getHugeIconByName(iconName)?.icon ??
136 - getDefaultServerIcon(server.type.name)?.icon)
137 - : getDefaultServerIcon(server.type.name)?.icon;
138 -
139 - final statusColor = switch (connectionStatus) {
140 - ConnectionStatus.connected => Colors.green,
141 - ConnectionStatus.error => Colors.red,
142 - ConnectionStatus.checking => Colors.orange,
143 - ConnectionStatus.disconnected => Colors.grey,
144 - };
145 -
146 - return Stack(
147 - clipBehavior: Clip.none,
148 - children: [
149 - HugeIcon(
150 - icon: serverIcon ?? HugeIcons.strokeRoundedServerStack01,
151 - size: 14,
152 - color: isDark ? Colors.white70 : Colors.black87,
153 - ),
154 - Positioned(
155 - right: -2,
156 - bottom: -2,
157 - child: Container(
158 - width: 6,
159 - height: 6,
160 - decoration: BoxDecoration(
161 - color: statusColor,
162 - shape: BoxShape.circle,
163 - border: Border.all(
164 - color: Theme.of(context).colorScheme.surface,
165 - width: 1,
166 - ),
167 - ),
168 - ),
169 - ),
170 - ],
171 - );
172 - }
173 -}
lib/features/chat/views/components/top_bar/screen_app_bar.dart
+88 -7
@@ -3,7 +3,9 @@ import 'package:flutter_riverpod/flutter_riverpod.dart';
3 import 'package:hugeicons/hugeicons.dart';
4 import 'package:shadcn_ui/shadcn_ui.dart';
5 import 'package:auto_size_text_plus/auto_size_text_plus.dart';
6 +import 'package:localmind/core/models/enums.dart';
7 import 'package:localmind/core/providers/app_providers.dart';
8 +import 'package:localmind/core/theme/colors.dart';
9 import 'package:localmind/l10n/app_localizations.dart';
10 import 'package:localmind/core/services/export_choice_dialog.dart';
11 import 'package:localmind/features/conversations/data/models/conversation.dart';
@@ -11,6 +13,7 @@ import 'package:localmind/features/chat/views/components/chat_settings_sheet.dar
13 import 'package:localmind/features/chat/providers/chat_mcp_providers.dart';
14 import 'package:localmind/features/chat/providers/chat_providers.dart';
15 import 'package:localmind/features/chat/data/export_service.dart';
16 +import 'package:localmind/features/servers/providers/server_providers.dart';
17
18 class ScreenAppBar extends ConsumerWidget {
19 const ScreenAppBar({
@@ -44,7 +47,10 @@ class ScreenAppBar extends ConsumerWidget {
47 final selectedMessageIds = ref.watch(selectedMessageIdsProvider);
48
49 if (messageSelectionMode) {
47 - return Container(
50 + return SafeArea(
51 + top: true,
52 + bottom: false,
53 + child: Container(
54 height: 56,
55 padding: const EdgeInsets.symmetric(horizontal: 4),
56 child: Row(
@@ -87,10 +93,14 @@ class ScreenAppBar extends ConsumerWidget {
93 ),
94 ],
95 ),
96 + ),
97 );
98 }
99
93 - return Container(
100 + return SafeArea(
101 + top: true,
102 + bottom: false,
103 + child: Container(
104 height: 56,
105 padding: const EdgeInsets.symmetric(horizontal: 4),
106 child: Row(
@@ -108,11 +118,9 @@ class ScreenAppBar extends ConsumerWidget {
118 ),
119 const SizedBox(width: 8),
120 Expanded(
111 - child: AutoSizeText(
112 - _appBarTitle(l10n),
113 - style: const TextStyle(fontSize: 18, fontWeight: FontWeight.bold),
114 - maxLines: 1,
115 - overflow: TextOverflow.ellipsis,
121 + child: _TitleBlock(
122 + title: _appBarTitle(l10n),
123 + isDark: isDark,
124 ),
125 ),
126 Stack(
@@ -223,6 +231,7 @@ class ScreenAppBar extends ConsumerWidget {
231 ),
232 ],
233 ),
234 + ),
235 );
236 }
237
@@ -345,3 +354,75 @@ class ChatModeIconButton extends StatelessWidget {
354 );
355 }
356 }
357 +
358 +/// Title block shown in the chat app bar — conversation title on top,
359 +/// active server name directly below it with a small status dot
360 +/// (green when connected, grey otherwise). The row is intentionally
361 +/// non-interactive; server switching still lives in the sidebar.
362 +class _TitleBlock extends ConsumerWidget {
363 + const _TitleBlock({
364 + required this.title,
365 + required this.isDark,
366 + });
367 +
368 + final String title;
369 + final bool isDark;
370 +
371 + @override
372 + Widget build(BuildContext context, WidgetRef ref) {
373 + final activeServer = ref.watch(activeServerProvider);
374 + final connectionStatus = ref.watch(connectionStatusProvider);
375 + final mutedColor = isDark
376 + ? AppColors.darkMutedText
377 + : AppColors.lightMutedText;
378 + final isConnected = connectionStatus == ConnectionStatus.connected;
379 + final statusColor = isConnected ? Colors.green : Colors.grey;
380 +
381 + return Padding(
382 + padding: const EdgeInsets.symmetric(horizontal: 4, vertical: 2),
383 + child: Column(
384 + mainAxisSize: MainAxisSize.min,
385 + crossAxisAlignment: CrossAxisAlignment.start,
386 + children: [
387 + AutoSizeText(
388 + title,
389 + style: const TextStyle(
390 + fontSize: 17,
391 + fontWeight: FontWeight.bold,
392 + ),
393 + maxLines: 1,
394 + overflow: TextOverflow.ellipsis,
395 + ),
396 + if (activeServer != null)
397 + Row(
398 + mainAxisSize: MainAxisSize.min,
399 + children: [
400 + Container(
401 + width: 6,
402 + height: 6,
403 + decoration: BoxDecoration(
404 + color: statusColor,
405 + shape: BoxShape.circle,
406 + ),
407 + ),
408 + const SizedBox(width: 4),
409 + Flexible(
410 + child: Text(
411 + activeServer.name,
412 + style: TextStyle(fontSize: 11, color: mutedColor),
413 + maxLines: 1,
414 + overflow: TextOverflow.ellipsis,
415 + ),
416 + ),
417 + ],
418 + )
419 + else
420 + Text(
421 + '',
422 + style: TextStyle(fontSize: 11, color: mutedColor),
423 + ),
424 + ],
425 + ),
426 + );
427 + }
428 +}
lib/l10n/app_ar.arb
+91 -81
@@ -34,6 +34,8 @@
34 "none": "لا شيء",
35 "none_selected": "لم يتم اختيار شيء",
36 "online": "متصل",
37 + "connected": "متصل",
38 + "checking": "جاري التحقق",
39 "offline": "غير متصل",
40 "error": "خطأ",
41 "unknown_error": "خطأ غير معروف",
@@ -80,6 +82,50 @@
82 "delete_message_title": "حذف الرسالة؟",
83 "delete_persona_title": "حذف \"{name}\"؟",
84 "delete_persona_body": "لا يمكن التراجع عن هذا.",
85 + "delete_builtin_persona_body": "هذه شخصية مدمجة. يمكنك استعادتها لاحقًا من الإعدادات.",
86 + "restore_builtin_personas": "استعادة الشخصيات الافتراضية",
87 + "restore_builtin_personas_desc": "إعادة إضافة أي شخصيات مدمجة قمت بحذفها",
88 + "restore_builtin_personas_success": "تم استعادة الشخصيات الافتراضية",
89 + "clear_personas": "مسح الشخصيات",
90 + "enable_image_compression": "ضغط الصور قبل الإرسال",
91 + "enable_image_compression_desc": "تغيير حجم الصور المرفقة وضغطها لتبقى عمليات التحميل ضمن حدود الخادم",
92 + "image_compression_level": "درجة ضغط الصور",
93 + "image_compression_level_desc": "الضغط العالي ينتج أحجام تحميل أصغر بجودة أقل",
94 + "image_compression_level_low": "منخفض",
95 + "image_compression_level_medium": "متوسط",
96 + "image_compression_level_high": "مرتفع",
97 + "sort_models_tooltip": "فرز النماذج",
98 + "sort_by_favorites": "المفضلة أولاً",
99 + "sort_by_name": "الاسم (أ-ي)",
100 + "sort_by_size_smallest": "الحجم (الأصغر أولاً)",
101 + "sort_by_size_largest": "الحجم (الأكبر أولاً)",
102 + "sort_by_context_length": "طول السياق",
103 + "bulk_ai_rename_progress": "إعادة تسمية {done}/{total}...",
104 + "selected_count": "تم تحديد {count}",
105 + "ai_rename_tooltip": "إعادة تسمية العناصر المحددة بواسطة الذكاء الاصطناعي",
106 + "new_chat_in_folder_tooltip": "دردشة جديدة في هذا المجلد",
107 + "total_tokens_count": "{count} من الرموز",
108 + "smart_replies_use_persona": "استخدام الشخصية في الردود الذكية",
109 + "smart_replies_use_persona_desc": "تتطابق الردود المقترحة مع نبرة الشخصية النشطة بدلاً من مساعد عام",
110 + "keep_persona_on_new_chat": "الاحتفاظ بالشخصية عند بدء دردشة جديدة",
111 + "keep_persona_on_new_chat_desc": "لا تقم بمسح الشخصية المحددة بعد بدء دردشة جديدة",
112 + "role_swap_button_enabled": "إظهار زر تبديل الأدوار",
113 + "role_swap_button_enabled_desc": "إظهار زر في مدخلات الدردشة لإرسال رسالتك كدور مساعد بدلاً من المستخدم، دون إنشاء رد",
114 + "send_as_user_tooltip": "إرسال كمستخدم",
115 + "send_as_assistant_tooltip": "إرسال كمساعد (بدون رد)",
116 + "insert_without_generating_tooltip": "إدراج دون إنشاء رد",
117 + "token_usage_title": "استخدام الرموز (Tokens)",
118 + "total_tokens_label": "الرموز المستخدمة",
119 + "usage_percent_label": "السياق المستخدم",
120 + "export_choice_title": "تصدير",
121 + "export_choice_body": "كيف ترغب في تصدير هذا؟",
122 + "copy_to_clipboard": "نسخ إلى الحافظة",
123 + "bulk_export_conversations_success": "تم تصدير {count} من المحادثات",
124 + "bulk_ai_rename_confirm_title": "إعادة التسمية بالذكاء الاصطناعي؟",
125 + "bulk_ai_rename_confirm_body": "سيؤدي هذا إلى جعل الذكاء الاصطناعي ينشئ عنوانًا جديدًا لكل من المحادثات المحددة الـ {count}، ليحل محل عناوينها الحالية. قد يستغرق هذا بعض الوقت ولا يمكن التراجع عنه.",
126 + "sort_by_modified_date": "آخر تعديل",
127 + "sort_by_created_date": "تاريخ الإنشاء",
128 + "sort_title": "فرز",
129 "clear_conversation_title": "مسح المحادثة؟",
130 "clear_conversation_body": "سيؤدي هذا إلى حذف جميع الرسائل في هذه المحادثة.",
131 "clear": "مسح",
@@ -109,9 +155,6 @@
155 "add_more": "أضف المزيد",
156 "on_github": "على GitHub",
157 "could_not_open_github": "تعذر فتح GitHub.",
112 - "openai_compatible_api": "واجهة متوافقة مع OpenAI",
113 - "https_requires_ssl": "يتطلب HTTPS استخدام SSL",
114 - "most_local_setups_use_http": "تستخدم معظم الإعدادات المحلية http://",
158 "settings_title": "الإعدادات",
159 "settings_appearance": "المظهر",
160 "settings_language": "اللغة",
@@ -147,10 +190,16 @@
190 "manage_tts_models": "إدارة نماذج TTS",
191 "manage_on_device_models": "إدارة النماذج المحلية",
192 "enable_smart_reply": "الردود الذكية المحلية",
193 + "ai_user_response_enabled": "رسالة مستخدم بالذكاء الاصطناعي (اضغط مطولاً)",
194 + "ai_user_response_enabled_desc": "اضغط مع الاستمرار على زر الإرسال لمدة 3 ثوانٍ ليقوم الذكاء الاصطناعي بكتابة وإرسال رسالتك التالية",
195 + "ai_user_response_tooltip": "إنشاء رسالة مستخدم بالذكاء الاصطناعي",
196 "streaming_responses": "الردود المتدفقة",
197 "auto_generate_titles": "إنشاء العناوين تلقائياً",
198 "send_on_enter": "إرسال عند الضغط على Enter",
199 "show_system_messages": "إظهار رسائل النظام",
200 + "show_system_messages_desc": "عند عدم تحديد أي شخصية، أرسل مطالبة نظام المساعد الافتراضية مع كل طلب",
201 + "show_system_messages_in_chat": "إظهار رسائل النظام في الدردشة",
202 + "show_system_messages_in_chat_desc": "عرض رسائل النظام (على سبيل المثال من نسخة احتياطية مستوردة) كفقاعات مرئية في المحادثة",
203 "haptic_feedback": "الاستجابة اللمسية",
204 "enable_mcp": "تفعيل MCP",
205 "new_chat_mcp_default": "تفعيل MCP افتراضياً في المحادثات الجديدة",
@@ -169,6 +218,8 @@
218 "configure": "إعداد",
219 "select_model": "اختيار نموذج",
220 "select_persona": "اختيار شخصية",
221 + "manage_personas": "إدارة الشخصيات",
222 + "personas_combine_hint": "سيتم دمج الشخصيات المحددة",
223 "start_conversation": "ابدأ محادثة",
224 "recent_chats": "المحادثات الأخيرة",
225 "see_all": "عرض الكل",
@@ -189,6 +240,8 @@
240 "send_message_tooltip": "إرسال الرسالة",
241 "stop_generation_tooltip": "إيقاف التوليد",
242 "attach_images_tooltip": "إرفاق صور",
243 + "start_listening_tooltip": "بدء الاستماع",
244 + "stop_listening_tooltip": "إيقاف الاستماع",
245 "tool_label": "أداة: {toolCallId}",
246 "tool_unknown": "أداة: غير معروفة",
247 "message_options": "خيارات الرسالة",
@@ -249,13 +302,13 @@
302 "onboarding_localmind": "LOCALMIND",
303 "onboarding_connect_server": "اتصل\nبخادمك",
304 "onboarding_connect_desc": "اتصل بـ LM Studio أو Ollama أو\nOpenRouter لبدء تجربة الذكاء\nالاصطناعي الخاصة بك.",
305 + "openai_compatible_api": "واجهة متوافقة مع OpenAI",
306 + "https_requires_ssl": "يتطلب HTTPS استخدام SSL",
307 + "most_local_setups_use_http": "تستخدم معظم الإعدادات المحلية http://",
308 "onboarding_welcome": "مرحباً بك في LocalMind",
309 "server_type_on_device": "محلي",
254 - "server_type_on_device_sub": "لا يحتاج خادماً",
310 "server_type_lm_studio": "LM Studio",
256 - "server_type_lm_studio_sub": "API محلي",
311 "server_type_ollama": "Ollama",
258 - "server_type_ollama_sub": "محرك أوامر",
312 "server_type_openrouter": "OpenRouter",
313 "server_type_openrouter_sub": "سحابة موحدة",
314 "ready_continue": "جاهز للمتابعة",
@@ -428,6 +481,19 @@
481 "tts_piper_desc": "أصوات Piper سريعة دون اتصال مع صوتين معبرين.\nيتطلب تنزيل {size} لكل صوت.",
482 "engine_spec": "{sizeMb} ميجابايت · {ramMb} ميجابايت ذاكرة · {voiceCount} أصوات",
483 "on_device_models_title": "النماذج المحلية",
484 + "settings_huggingface_token": "رمز Hugging Face (اختياري)",
485 + "settings_huggingface_token_desc": "مطلوب فقط للنماذج المقيّدة (مثل Gemma). احصل على رمز من huggingface.co/settings/tokens.",
486 + "settings_huggingface_token_set": "تم حفظ الرمز",
487 + "settings_huggingface_token_cleared": "تم مسح الرمز",
488 + "model_requires_huggingface_token": "يتطلب رمز Hugging Face",
489 + "model_missing_huggingface_token": "هذا النموذج مقيّد على Hugging Face. أضف رمزاً في الإعدادات ← الاستدلال المحلي لتنزيله.",
490 + "set_huggingface_token": "تعيين الرمز",
491 + "clear_huggingface_token": "مسح",
492 + "edit_huggingface_token_dialog_title": "رمز وصول Hugging Face",
493 + "huggingface_token_dialog_hint": "hf_…",
494 + "server_type_ollama_desc": "محرك ذكاء اصطناعي محلي. لا يتطلب مفتاح API.",
495 + "server_type_on_device_desc": "يعمل على هاتفك. بعض النماذج تحتاج إلى رمز Hugging Face.",
496 + "server_type_lm_studio_desc": "خادم API محلي. لا يتطلب مفتاح API.",
497 "available_models": "النماذج المتاحة",
498 "device_memory": "ذاكرة الجهاز",
499 "ram_usage": "استخدام الذاكرة",
@@ -457,6 +523,13 @@
523 "model_unload_failed": "فشل تفريغ النموذج: {error}",
524 "unload_from_server": "تفريغ من الخادم",
525 "context_chip": "{ctx} سياق",
526 + "unload_all_models": "إلغاء تحميل جميع النماذج",
527 + "loaded_models_count": "تم تحميل {count} نموذج",
528 + "all_models_unloaded": "تم إلغاء تحميل جميع النماذج",
529 + "branch_chat": "تفريع الدردشة",
530 + "branch_chat_desc": "إنشاء دردشة جديدة بدءًا من هذه الرسالة",
531 + "edit_assistant_message_desc": "تعديل محتوى رسالة المساعد",
532 + "switch_to_model": "التبديل إلى النموذج {model}",
533 "download_notification_title": "جارٍ تنزيل {modelName}...",
534 "download_complete_notification": "اكتمل التنزيل!",
535 "download_complete_body": "تم تنزيل {modelName} بنجاح.",
@@ -506,21 +579,6 @@
579 "test_notification_body": "هذا إشعار تجريبي لتقدم تنزيل النموذج.",
580 "tts_supports_background": "يدعم التشغيل في الخلفية كصوت أصلي",
581 "tts_other_services_background_note": "ملاحظة: تدعم خدمات TTS الأخرى التشغيل في الخلفية كصوت أصلي.",
509 - "start_listening_tooltip": "بدء الاستماع",
510 - "stop_listening_tooltip": "إيقاف الاستماع",
511 - "settings_huggingface_token": "رمز Hugging Face (اختياري)",
512 - "settings_huggingface_token_desc": "مطلوب فقط للنماذج المقيّدة (مثل Gemma). احصل على رمز من huggingface.co/settings/tokens.",
513 - "settings_huggingface_token_set": "تم حفظ الرمز",
514 - "settings_huggingface_token_cleared": "تم مسح الرمز",
515 - "model_requires_huggingface_token": "يتطلب رمز Hugging Face",
516 - "model_missing_huggingface_token": "هذا النموذج مقيّد على Hugging Face. أضف رمزاً في الإعدادات ← الاستدلال المحلي لتنزيله.",
517 - "set_huggingface_token": "تعيين الرمز",
518 - "clear_huggingface_token": "مسح",
519 - "edit_huggingface_token_dialog_title": "رمز وصول Hugging Face",
520 - "huggingface_token_dialog_hint": "hf_…",
521 - "server_type_ollama_desc": "محرك ذكاء اصطناعي محلي. لا يتطلب مفتاح API.",
522 - "server_type_on_device_desc": "يعمل على هاتفك. بعض النماذج تحتاج إلى رمز Hugging Face.",
523 - "server_type_lm_studio_desc": "خادم API محلي. لا يتطلب مفتاح API.",
582 "gguf_imported_models_title": "Imported GGUF models",
583 "gguf_imported_models_empty_subtitle": "Import a GGUF from your device or add one from Hugging Face. Imported models run locally with llama.cpp.",
584 "gguf_imported_models_ready": "imported models ready for local inference.",
@@ -603,65 +661,6 @@
661 "tool_status_running": "Running",
662 "tool_status_done": "Done",
663 "tool_status_failed": "Failed",
606 - "delete_builtin_persona_body": "هذه شخصية مدمجة. يمكنك استعادتها لاحقًا من الإعدادات.",
607 - "restore_builtin_personas": "استعادة الشخصيات الافتراضية",
608 - "restore_builtin_personas_desc": "إعادة إضافة أي شخصيات مدمجة قمت بحذفها",
609 - "restore_builtin_personas_success": "تم استعادة الشخصيات الافتراضية",
610 - "clear_personas": "مسح الشخصيات",
611 - "enable_image_compression": "ضغط الصور قبل الإرسال",
612 - "enable_image_compression_desc": "تغيير حجم الصور المرفقة وضغطها لتبقى عمليات التحميل ضمن حدود الخادم",
613 - "image_compression_level": "درجة ضغط الصور",
614 - "image_compression_level_desc": "الضغط العالي ينتج أحجام تحميل أصغر بجودة أقل",
615 - "image_compression_level_low": "منخفض",
616 - "image_compression_level_medium": "متوسط",
617 - "image_compression_level_high": "مرتفع",
618 - "sort_models_tooltip": "فرز النماذج",
619 - "sort_by_favorites": "المفضلة أولاً",
620 - "sort_by_name": "الاسم (أ-ي)",
621 - "sort_by_size_smallest": "الحجم (الأصغر أولاً)",
622 - "sort_by_size_largest": "الحجم (الأكبر أولاً)",
623 - "sort_by_context_length": "طول السياق",
624 - "bulk_ai_rename_progress": "إعادة تسمية {done}/{total}...",
625 - "selected_count": "تم تحديد {count}",
626 - "ai_rename_tooltip": "إعادة تسمية العناصر المحددة بواسطة الذكاء الاصطناعي",
627 - "new_chat_in_folder_tooltip": "دردشة جديدة في هذا المجلد",
628 - "total_tokens_count": "{count} من الرموز",
629 - "smart_replies_use_persona": "استخدام الشخصية في الردود الذكية",
630 - "smart_replies_use_persona_desc": "تتطابق الردود المقترحة مع نبرة الشخصية النشطة بدلاً من مساعد عام",
631 - "keep_persona_on_new_chat": "الاحتفاظ بالشخصية عند بدء دردشة جديدة",
632 - "keep_persona_on_new_chat_desc": "لا تقم بمسح الشخصية المحددة بعد بدء دردشة جديدة",
633 - "role_swap_button_enabled": "إظهار زر تبديل الأدوار",
634 - "role_swap_button_enabled_desc": "إظهار زر في مدخلات الدردشة لإرسال رسالتك كدور مساعد بدلاً من المستخدم، دون إنشاء رد",
635 - "send_as_user_tooltip": "إرسال كمستخدم",
636 - "send_as_assistant_tooltip": "إرسال كمساعد (بدون رد)",
637 - "insert_without_generating_tooltip": "إدراج دون إنشاء رد",
638 - "token_usage_title": "استخدام الرموز (Tokens)",
639 - "total_tokens_label": "الرموز المستخدمة",
640 - "usage_percent_label": "السياق المستخدم",
641 - "export_choice_title": "تصدير",
642 - "export_choice_body": "كيف ترغب في تصدير هذا؟",
643 - "copy_to_clipboard": "نسخ إلى الحافظة",
644 - "bulk_export_conversations_success": "تم تصدير {count} من المحادثات",
645 - "bulk_ai_rename_confirm_title": "إعادة التسمية بالذكاء الاصطناعي؟",
646 - "bulk_ai_rename_confirm_body": "سيؤدي هذا إلى جعل الذكاء الاصطناعي ينشئ عنوانًا جديدًا لكل من المحادثات المحددة الـ {count}، ليحل محل عناوينها الحالية. قد يستغرق هذا بعض الوقت ولا يمكن التراجع عنه.",
647 - "sort_by_modified_date": "آخر تعديل",
648 - "sort_by_created_date": "تاريخ الإنشاء",
649 - "sort_title": "فرز",
650 - "ai_user_response_enabled": "رسالة مستخدم بالذكاء الاصطناعي (اضغط مطولاً)",
651 - "ai_user_response_enabled_desc": "اضغط مع الاستمرار على زر الإرسال لمدة 3 ثوانٍ ليقوم الذكاء الاصطناعي بكتابة وإرسال رسالتك التالية",
652 - "ai_user_response_tooltip": "إنشاء رسالة مستخدم بالذكاء الاصطناعي",
653 - "show_system_messages_desc": "عند عدم تحديد أي شخصية، أرسل مطالبة نظام المساعد الافتراضية مع كل طلب",
654 - "show_system_messages_in_chat": "إظهار رسائل النظام في الدردشة",
655 - "show_system_messages_in_chat_desc": "عرض رسائل النظام (على سبيل المثال من نسخة احتياطية مستوردة) كفقاعات مرئية في المحادثة",
656 - "manage_personas": "إدارة الشخصيات",
657 - "personas_combine_hint": "سيتم دمج الشخصيات المحددة",
658 - "unload_all_models": "إلغاء تحميل جميع النماذج",
659 - "loaded_models_count": "تم تحميل {count} نموذج",
660 - "all_models_unloaded": "تم إلغاء تحميل جميع النماذج",
661 - "branch_chat": "تفريع الدردشة",
662 - "branch_chat_desc": "إنشاء دردشة جديدة بدءًا من هذه الرسالة",
663 - "edit_assistant_message_desc": "تعديل محتوى رسالة المساعد",
664 - "switch_to_model": "التبديل إلى النموذج {model}",
664 "model_favorite_toggle": "تبديل المفضلة",
665 "model_note_label": "ملاحظة",
666 "model_note_hint": "أضف ملاحظة خاصة لهذا النموذج...",
@@ -758,8 +757,15 @@
757 "stream_generation_time": "وقت الإنشاء",
758 "attach_image": "إرفاق صورة",
759 "attach_text_document": "إرفاق مستند نصي",
760 + "attach_shortcut_images": "الصور",
761 + "attach_shortcut_documents": "الملفات",
762 + "attach_shortcut_saved": "المحفوظات",
763 "add_attachment": "إضافة مرفق",
764 + "add_to_chat": "إضافة إلى الدردشة",
765 + "choose_what_to_attach": "ما الذي ترغب في إضافته؟",
766 + "choose_attachment_subtitle": "اختر مصدرًا لإرفاقه برسالتك",
767 "photo_permission_denied": "تم رفض إذن الوصول إلى الصور",
768 + "select_model_prompt": "اختر النموذج",
769 "characters_label": "الحروف",
770 "exit_temporary_chat_title": "الخروج من الدردشة المؤقتة؟",
771 "exit_temporary_chat_body": "سيؤدي هذا إلى حذف المحادثة الحالية نهائيًا. هل تريد الاستمرار؟",
@@ -860,5 +866,9 @@
866 "delete_folder": "حذف المجلد",
867 "delete_folder_title": "حذف المجلد؟",
868 "delete_folder_body": "هل أنت متأكد من رغبتك في حذف \"{name}\"؟ سيتم نقل المحادثات أو الرسائل المحفوظة بداخله إلى \"غير مصنّف\". لا يمكن التراجع.",
863 - "folder_name_required": "الرجاء إدخال اسم المجلد"
869 + "folder_name_required": "الرجاء إدخال اسم المجلد",
870 + "model_required_toast": "يجب عليك اختيار نموذج أولاً",
871 + "server_type_on_device_sub": "لا يحتاج خادماً",
872 + "server_type_lm_studio_sub": "API محلي",
873 + "server_type_ollama_sub": "محرك أوامر"
874 }
lib/l10n/app_bn.arb
+526 -516
@@ -1,513 +1,486 @@
1 {
2 "@@locale": "bn",
3 - "active": "সক্রিয়",
4 - "active_integrations": "সক্রিয় ইন্টিগ্রেশনসমূহ",
5 - "add_ephemeral_mcp": "সাময়িক MCP সার্ভার যুক্ত করুন",
6 - "add_server": "সার্ভার যুক্ত করুন",
7 - "add_server_first": "উপলব্ধ মডেলগুলো দেখতে প্রথমে একটি সার্ভার যুক্ত করুন।",
8 - "add_server_title": "সার্ভার যুক্ত করুন",
9 - "advanced_settings": "উন্নত সেটিংস",
10 - "all": "সব",
11 - "allow_notifications": "নোটিফিকেশন অনুমোদন করুন",
12 - "always_available": "সর্বদা উপলব্ধ",
13 - "api_key_format": "OpenRouter API কি sk- দিয়ে শুরু হয়",
14 - "api_key_hint_generic": "প্রমাণিত সার্ভারের জন্য",
15 - "api_key_hint_openrouter": "sk-...",
16 - "api_key_optional": "এপিআই কি (ঐচ্ছিক)",
17 - "api_key_required": "এপিআই কি *",
18 - "api_key_required_openrouter": "OpenRouter-এর জন্য এপিআই কি প্রয়োজন",
3 "app_name": "LocalMind",
4 "app_tagline": "আপনার এআই। আপনার ডিভাইস। আপনার নিয়ম।",
5 "app_version": "1.0.0",
22 - "attach_images_tooltip": "ছবি সংযুক্ত করুন",
23 - "auto_execute_tools": "স্বয়ংক্রিয়ভাবে টুলস নির্বাহ করুন",
24 - "auto_generate_titles": "স্বয়ংক্রিয় শিরোনাম তৈরি করুন",
25 - "available": "উপলব্ধ",
26 - "beta_label": "বেটা",
27 - "experimental_label": "পরীক্ষামূলক",
28 - "available_models": "উপলব্ধ মডেলসমূহ",
29 - "available_ram": "উপলব্ধ র‍্যাম (RAM)",
30 - "backend_cpu_desc": "সব ডিভাইসে কাজ করে। সবচেয়ে বেশি সামঞ্জস্যপূর্ণ।",
31 - "backend_gpu_desc": "OpenCL ত্বরণ। সমর্থিত ডিভাইসে দ্রুততর।",
32 - "backend_ios_notice": "iOS-এ শুধুমাত্র CPU ব্যাকএন্ড উপলব্ধ।",
33 - "backend_npu_desc": "ভেন্ডর NPU (Qualcomm/MediaTek)। দ্রুততম ইনফারেন্স।",
34 - "builtin_badge": "বিল্ট-ইন",
35 - "calculating": "গণনা করা হচ্ছে...",
6 "cancel": "বাতিল করুন",
37 - "cannot_undo": "এই কাজটি আর পূর্বাবস্থায় ফিরিয়ে আনা যাবে না।",
38 - "category_label": "বিভাগ",
39 - "change_persona": "পার্সোনা পরিবর্তন করুন",
40 - "character_count": "{length}টি অক্ষর",
41 - "character_count_max": "{currentLen}/৪০০০",
42 - "chat_history_title": "চ্যাটের ইতিহাস",
43 - "chat_input_hint": "যেকোনো কিছু জিজ্ঞাসা করুন",
44 - "chat_parameters_tooltip": "চ্যাটের প্যারামিটারসমূহ",
45 - "chat_settings_title": "চ্যাট সেটিংস",
46 - "chat_title": "LocalMind",
47 - "choose_theme": "থিম নির্বাচন করুন",
48 - "choose_theme_desc": "অ্যাপের চেহারা ব্যক্তিগতকৃত করুন। আপনি পরবর্তীতে সেটিংস থেকে এটি যেকোনো সময় পরিবর্তন করতে পারবেন।",
49 - "clear": "মুছুন",
50 - "clear_conversation": "কথোপকথন মুছুন",
51 - "clear_conversation_body": "এটি এই কথোপকথনের সমস্ত বার্তা মুছে ফেলবে।",
52 - "clear_conversation_title": "কথোপকথন মুছে ফেলবেন?",
53 - "clone_edit": "ক্লোন ও সম্পাদনা করুন",
54 - "close": "বন্ধ করুন",
55 - "code_theme_dark": "কোড থিম (ডার্ক)",
56 - "code_theme_desc": "কোড ব্লকের জন্য সিনট্যাক্স হাইলাইটিং থিম নির্বাচন করুন।",
57 - "code_theme_light": "কোড থিম (লাইট)",
58 - "configure": "কনফিগার করুন",
59 - "configuring_server": "সার্ভার কনফিগার করা হচ্ছে...",
7 "confirm": "নিশ্চিত করুন",
61 - "connection_error": "সংযোগ ত্রুটি। আপনার সার্ভার পরীক্ষা করুন।",
62 - "connection_failed": "সংযোগ ব্যর্থ হয়েছে। আপনার সেটিংস পরীক্ষা করুন।",
63 - "connection_successful": "সংযোগ সফল হয়েছে!",
64 - "context_chip": "{ctx} ctx",
65 - "context_length": "কনটেক্সট দৈর্ঘ্য",
66 - "context_length_desc": "ইতিহাসের উইন্ডো",
67 - "continue_action": "চালিয়ে যান",
68 - "conversation_date": "{month}/{day}/{year}",
69 - "conversation_days_ago": "{days}দিন আগে",
70 - "conversation_hours_ago": "{hours}ঘণ্টা আগে",
71 - "conversation_id": "কথোপকথন আইডি",
72 - "conversation_just_now": "এইমাত্র",
73 - "conversation_minutes_ago": "{minutes}মিনিট আগে",
74 - "conversation_yesterday": "গতকাল",
75 - "copied": "কপি করা হয়েছে!",
76 - "copied_markdown": "মার্কডাউন হিসেবে কপি করা হয়েছে",
77 - "copied_to_clipboard": "ক্লিপবোর্ডে কপি করা হয়েছে",
78 - "copy": "কপি করুন",
79 - "copy_info": "তথ্য কপি করুন",
80 - "copy_markdown": "মার্কডাউন হিসেবে কপি করুন",
81 - "create_persona": "পার্সোনা তৈরি করুন",
82 - "create_persona_button": "তৈরি করুন",
83 - "created_at": "তৈরির সময়",
84 - "debug_dialog_desc": "সিঙ্ক্রোনাইজেশন সমস্যাগুলো সনাক্ত করতে সাহায্য করার জন্য ডায়াগনস্টিক তথ্য।",
85 - "default_badge": "ডিফল্ট",
86 - "default_icon": "ডিফল্ট আইকন",
8 "delete": "মুছে ফেলুন",
88 - "delete_all_conversations": "সমস্ত কথোপকথন মুছে ফেলুন",
89 - "delete_conversation": "কথোপকথন মুছে ফেলবেন?",
90 - "delete_conversation_body": "আপনি কি নিশ্চিত যে আপনি \"{title}\" মুছে ফেলতে চান? এটি আর পূর্বাবস্থায় ফিরিয়ে আনা যাবে না।",
91 - "delete_conversation_title": "কথোপকথন মুছে ফেলবেন?",
92 - "delete_message_title": "বার্তা মুছে ফেলবেন?",
93 - "delete_model_body": "আপনি কি নিশ্চিত যে আপনি {name} মুছে ফেলতে চান?",
94 - "delete_model_body_with_size": "আপনি কি নিশ্চিত যে আপনি {name} মুছে ফেলতে চান? এতে প্রায় {size} খালি জায়গা তৈরি হবে।\n\nপ্রয়োজন হলে আপনি পরবর্তীতে এই মডেলটি আবার ডাউনলোড করতে পারেন।",
95 - "delete_model_title": "মডেল মুছে ফেলুন",
96 - "delete_persona_body": "এটি আর পূর্বাবস্থায় ফিরিয়ে আনা যাবে না।",
97 - "delete_persona_title": "\"{name}\" মুছে ফেলবেন?",
98 - "delete_server_body": "আপনি কি নিশ্চিত যে আপনি \"{name}\" মুছে ফেলতে চান? এটি আর পূর্বাবস্থায় ফিরিয়ে আনা যাবে না।",
99 - "delete_server_title": "সার্ভার মুছে ফেলুন",
100 - "delete_voice_body": "আপনি কি নিশ্চিত যে আপনি {name} মুছে ফেলতে চান? এতে প্রায় {size} খালি জায়গা তৈরি হবে।\n\nপ্রয়োজন হলে আপনি পরবর্তীতে এই ভয়েসটি আবার ডাউনলোড করতে পারেন।",
101 - "delete_voice_title": "ভয়েস মুছে ফেলুন",
102 - "description_hint": "এই পার্সোনাটি কী কাজ করে...",
103 - "description_optional": "বিবরণ (ঐচ্ছিক)",
104 - "device_memory": "ডিভাইসের মেমরি",
105 - "disconnected": "সার্ভার থেকে সংযোগ বিচ্ছিন্ন হয়েছে।",
9 + "save": "সংরক্ষণ করুন",
10 + "retry": "আবার চেষ্টা করুন",
11 + "close": "বন্ধ করুন",
12 "done": "সম্পন্ন",
13 + "continue_action": "চালিয়ে যান",
14 + "skip": "এড়িয়ে যান",
15 + "install": "ইনস্টল করুন",
16 "download": "ডাউনলোড করুন",
108 - "download_complete_body": "{modelName} সফলভাবে ডাউনলোড করা হয়েছে।",
109 - "download_complete_notification": "ডাউনলোড সম্পন্ন হয়েছে!",
110 - "download_failed": "ডাউনলোড ব্যর্থ হয়েছে",
111 - "download_failed_body": "{modelName} ডাউনলোড করতে ব্যর্থ হয়েছে।",
112 - "download_failed_notification": "ডাউনলোড ব্যর্থ হয়েছে: {error}",
113 - "download_model_desc": "ডাউনলোড করার জন্য একটি মডেল চয়ন করুন।\nএটি আপনার ডিভাইসে স্থানীয়ভাবে চলবে।",
114 - "download_model_title": "মডেল ডাউনলোড করুন",
115 - "download_notification_title": "{modelName} ডাউনলোড করা হচ্ছে...",
116 - "download_progress": "{percent}% • {speed}",
117 - "downloaded": "ডাউনলোড করা হয়েছে",
118 - "downloading_status": "ডাউনলোড করা হচ্ছে...",
17 + "resume": "পুনরায় শুরু করুন",
18 + "pause": "বিরতি দিন",
19 + "stop": "বন্ধ করুন",
20 "edit": "সম্পাদনা করুন",
120 - "edit_message": "বার্তা সম্পাদনা করুন",
121 - "edit_message_desc": "সংরক্ষণ করলে নিচের অ্যাসিস্ট্যান্টের প্রতিক্রিয়াটি মুছে যাবে এবং পুনরায় জেনারেট হবে।",
122 - "edit_persona": "পার্সোনা সম্পাদনা করুন",
123 - "edit_server": "সার্ভার সম্পাদনা করুন",
124 - "emoji_label": "ইমোজি",
125 - "enable": "সক্ষম করুন",
126 - "enable_mcp": "MCP সক্ষম করুন",
127 - "enable_notifications": "নোটিফিকেশন সক্ষম করুন",
128 - "enable_notifications_desc": "মডেল ডাউনলোডিং শেষ হলে নোটিফিকেশন পান।",
129 - "engine_name_kitten": "Kitten TTS",
130 - "engine_name_sherpa": "Sherpa ONNX VITS",
131 - "engine_name_system": "System TTS",
132 - "engine_spec": "{sizeMb} MB · {ramMb} MB RAM · {voiceCount}টি ভয়েস",
133 - "engine_tagline_kitten": "উচ্চ-গতির নিউরাল টিটিএস (TTS)",
134 - "engine_tagline_sherpa": "অফলাইন পাইপার (Piper) ভয়েসসমূহ",
135 - "engine_tagline_system": "ডিভাইসের বিল্ট-ইন ইঞ্জিন",
136 - "enter_new_title": "নতুন শিরোনাম লিখুন",
21 + "preview": "প্রিভিউ",
22 + "unload": "আনলোড করুন",
23 + "load": "লোড করুন",
24 + "rename": "নাম পরিবর্তন করুন",
25 + "pin": "পিন করুন",
26 + "unpin": "আনপিন করুন",
27 + "share": "শেয়ার করুন",
28 + "copy": "কপি করুন",
29 + "copied": "কপি করা হয়েছে!",
30 + "copied_to_clipboard": "ক্লিপবোর্ডে কপি করা হয়েছে",
31 + "select": "নির্বাচন করুন",
32 + "active": "সক্রিয়",
33 + "all": "সব",
34 + "none": "কোনোটিই নয়",
35 + "none_selected": "কোনোটিই নির্বাচন করা হয়নি",
36 + "online": "অনলাইন",
37 + "connected": "সংযুক্ত",
38 + "checking": "যাচাই করা হচ্ছে",
39 + "offline": "অফলাইন",
40 "error": "ত্রুটি",
138 - "error_with_message": "ত্রুটি: {error}",
139 - "eta_label": "অবশিষ্ট সময় (ETA): {eta}",
140 - "expected_messages": "প্রত্যাশিত বার্তাসমূহ",
141 - "export_header": "*LocalMind থেকে রপ্তানি করা হয়েছে — {date}*",
142 - "export_label_assistant": "অ্যাসিস্ট্যান্ট",
143 - "export_label_system": "সিস্টেম",
144 - "export_label_tool": "টুল",
145 - "export_label_user": "ব্যবহারকারী",
146 - "export_role_assistant": "## 🤖 অ্যাসিস্ট্যান্ট",
147 - "export_role_system": "## ⚙️ সিস্টেম",
148 - "export_role_tool": "## 🔧 টুল",
149 - "export_role_user": "## 👤 ব্যবহারকারী",
150 - "export_text_assistant": "[অ্যাসিস্ট্যান্ট]",
151 - "export_text_system": "[সিস্টেম]",
152 - "export_text_tool": "[টুল]",
153 - "export_text_user": "[ব্যবহারকারী]",
154 - "failed_load_models": "মডেল লোড করতে ব্যর্থ হয়েছে",
41 + "unknown_error": "অজানা ত্রুটি",
42 + "not_now": "এখন নয়",
43 + "enable": "সক্ষম করুন",
44 + "proceed_anyway": "তবুও এগিয়ে যান",
45 + "test_connection": "সংযোগ পরীক্ষা করুন",
46 + "testing": "পরীক্ষা করা হচ্ছে...",
47 + "connection_successful": "সংযোগ সফল হয়েছে!",
48 + "connection_failed": "সংযোগ ব্যর্থ হয়েছে। আপনার সেটিংস পরীক্ষা করুন।",
49 + "save_continue": "সংরক্ষণ করুন এবং এগিয়ে যান",
50 + "save_changes": "পরিবর্তনগুলো সংরক্ষণ করুন",
51 "finish_setup": "সেটআপ সম্পন্ন করুন",
156 - "font_preview": "যেকোনো লেখার সাইজ কেমন দেখাবে তা এখানে দেখা যাবে।",
157 - "font_size": "ফন্টের সাইজ",
158 - "font_size_desc": "চ্যাটে লেখার সাইজ সামঞ্জস্য করুন।",
159 - "haptic_feedback": "হ্যাপটিক ফিডব্যাক",
160 - "history_missing_desc": "হয় এই চ্যাটের বার্তাগুলো মুছে ফেলা হয়েছে অথবা চ্যাটের ইতিহাসটি দূষিত (corrupted) হয়েছে।",
161 - "history_missing_title": "চ্যাটের ইতিহাস পাওয়া যায়নি",
162 - "host_label": "হোস্ট / আইপি (IP) ঠিকানা",
163 - "host_required": "হোস্টের ঠিকানা আবশ্যক",
164 - "host_valid": "একটি বৈধ হোস্টনেম বা আইপি ঠিকানা লিখুন",
165 - "inference_backend": "ইনফারেন্স ব্যাকএন্ড",
52 + "start_new_chat": "নতুন চ্যাট শুরু করুন",
53 + "cannot_undo": "এই কাজটি আর পূর্বাবস্থায় ফিরিয়ে আনা যাবে না।",
54 + "ram_warning": "র‍্যাম সংক্রান্ত সতর্কবার্তা",
55 + "recommended": "সুপারিশকৃত",
56 + "may_be_large": "এই ডিভাইসের জন্য অনেক বড় হতে পারে",
57 + "calculating": "গণনা করা হচ্ছে...",
58 + "download_failed": "ডাউনলোড ব্যর্থ হয়েছে",
59 + "downloaded": "ডাউনলোড করা হয়েছে",
60 + "not_downloaded": "ডাউনলোড করা হয়নি",
61 + "installed": "ইনস্টল করা হয়েছে",
62 + "not_installed": "ইনস্টল করা হয়নি",
63 + "loading": "লোড হচ্ছে...",
64 + "thinking": "চিন্তা করছে",
65 + "processing": "প্রসেস করা হচ্ছে...",
66 "initializing": "আরম্ভ করা হচ্ছে...",
67 + "ready": "প্রস্তুত",
68 + "preparing_app": "অ্যাপ প্রস্তুত করা হচ্ছে...",
69 "initializing_services": "সার্ভিসসমূহ আরম্ভ করা হচ্ছে...",
168 - "install": "ইনস্টল করুন",
169 - "installed": "ইনস্টল করা হয়েছে",
70 + "configuring_server": "সার্ভার কনফিগার করা হচ্ছে...",
71 + "startup_failed": "স্টার্টআপ ব্যর্থ হয়েছে",
72 + "something_went_wrong": "কিছু একটা ভুল হয়েছে",
73 + "delete_model_title": "মডেল মুছে ফেলুন",
74 + "delete_model_body": "আপনি কি নিশ্চিত যে আপনি {name} মুছে ফেলতে চান?",
75 + "delete_model_body_with_size": "আপনি কি নিশ্চিত যে আপনি {name} মুছে ফেলতে চান? এতে প্রায় {size} খালি জায়গা তৈরি হবে।\n\nপ্রয়োজন হলে আপনি পরবর্তীতে এই মডেলটি আবার ডাউনলোড করতে পারেন।",
76 + "delete_voice_title": "ভয়েস মুছে ফেলুন",
77 + "delete_voice_body": "আপনি কি নিশ্চিত যে আপনি {name} মুছে ফেলতে চান? এতে প্রায় {size} খালি জায়গা তৈরি হবে।\n\nপ্রয়োজন হলে আপনি পরবর্তীতে এই ভয়েসটি আবার ডাউনলোড করতে পারেন।",
78 + "delete_server_title": "সার্ভার মুছে ফেলুন",
79 + "delete_server_body": "আপনি কি নিশ্চিত যে আপনি \"{name}\" মুছে ফেলতে চান? এটি আর পূর্বাবস্থায় ফিরিয়ে আনা যাবে না।",
80 + "delete_conversation_title": "কথোপকথন মুছে ফেলবেন?",
81 + "delete_conversation_body": "আপনি কি নিশ্চিত যে আপনি \"{title}\" মুছে ফেলতে চান? এটি আর পূর্বাবস্থায় ফিরিয়ে আনা যাবে না।",
82 + "delete_message_title": "বার্তা মুছে ফেলবেন?",
83 + "delete_persona_title": "\"{name}\" মুছে ফেলবেন?",
84 + "delete_persona_body": "এটি আর পূর্বাবস্থায় ফিরিয়ে আনা যাবে না।",
85 + "delete_builtin_persona_body": "এটি একটি বিল্ট-ইন ব্যক্তিত্ব (Persona)। আপনি এটিকে পরবর্তীতে সেটিংস থেকে পুনরুদ্ধার করতে পারেন।",
86 + "restore_builtin_personas": "ডিফল্ট ব্যক্তিত্ব পুনরুদ্ধার করুন",
87 + "restore_builtin_personas_desc": "আপনার মুছে ফেলা যেকোনো বিল্ট-ইন ব্যক্তিত্ব আবার যুক্ত করুন",
88 + "restore_builtin_personas_success": "ডিফল্ট ব্যক্তিত্ব পুনরুদ্ধার করা হয়েছে",
89 + "clear_personas": "ব্যক্তিত্ব পরিষ্কার করুন",
90 + "enable_image_compression": "পাঠানোর আগে ছবি কম্প্রেস করুন",
91 + "enable_image_compression_desc": "সংযুক্ত চিত্রগুলির আকার পরিবর্তন এবং কম্প্রেস করুন যাতে আপলোডগুলি সার্ভার সীমার মধ্যে থাকে",
92 + "image_compression_level": "কম্প্রেশনের আগ্রাসন",
93 + "image_compression_level_desc": "উচ্চতর আগ্রাসন কম মানের ছোট আকারের আপলোড তৈরি করে",
94 + "image_compression_level_low": "কম",
95 + "image_compression_level_medium": "মাঝারি",
96 + "image_compression_level_high": "উচ্চ",
97 + "sort_models_tooltip": "মডেল সাজান",
98 + "sort_by_favorites": "প্রিয়গুলো আগে",
99 + "sort_by_name": "নাম (A-Z)",
100 + "sort_by_size_smallest": "আকার (সবচেয়ে ছোট আগে)",
101 + "sort_by_size_largest": "আকার (সবচেয়ে বড় আগে)",
102 + "sort_by_context_length": "প্রসঙ্গের দৈর্ঘ্য",
103 + "bulk_ai_rename_progress": "নাম পরিবর্তন করা হচ্ছে {done}/{total}...",
104 + "selected_count": "{count}টি নির্বাচিত",
105 + "ai_rename_tooltip": "এআই দিয়ে নির্বাচিতগুলোর নাম পরিবর্তন করুন",
106 + "new_chat_in_folder_tooltip": "এই ফোল্ডারে নতুন চ্যাট",
107 + "total_tokens_count": "{count}টি টোকেন",
108 + "smart_replies_use_persona": "স্মার্ট উত্তরে ব্যক্তিত্ব ব্যবহার করুন",
109 + "smart_replies_use_persona_desc": "প্রস্তাবিত উত্তরগুলি সাধারণ সহকারীর পরিবর্তে সক্রিয় ব্যক্তিত্বের সুরের সাথে মেলে",
110 + "keep_persona_on_new_chat": "নতুন চ্যাটে ব্যক্তিত্ব ধরে রাখুন",
111 + "keep_persona_on_new_chat_desc": "নতুন চ্যাট শুরু করার পরে নির্বাচিত ব্যক্তিত্ব পরিষ্কার করবেন না",
112 + "role_swap_button_enabled": "ভূমিকা-বদল বোতাম দেখান",
113 + "role_swap_button_enabled_desc": "কোনো প্রতিক্রিয়া তৈরি না করে, ব্যবহারকারীর পরিবর্তে সহকারী ভূমিকা হিসাবে আপনার বার্তা পাঠাতে চ্যাট ইনপুটে একটি বোতাম দেখান",
114 + "send_as_user_tooltip": "ব্যবহারকারী হিসেবে পাঠান",
115 + "send_as_assistant_tooltip": "সহকারী হিসেবে পাঠান (কোনো প্রতিক্রিয়া নেই)",
116 + "insert_without_generating_tooltip": "তৈরি না করে ঢোকান",
117 + "token_usage_title": "টোকেন ব্যবহার",
118 + "total_tokens_label": "ব্যবহৃত টোকেন",
119 + "usage_percent_label": "ব্যবহৃত প্রসঙ্গ",
120 + "export_choice_title": "রপ্তানি (Export) করুন",
121 + "export_choice_body": "আপনি এটি কীভাবে রপ্তানি করতে চান?",
122 + "copy_to_clipboard": "ক্লিপবোর্ডে কপি করুন",
123 + "bulk_export_conversations_success": "{count}টি কথোপকথন রপ্তানি করা হয়েছে",
124 + "bulk_ai_rename_confirm_title": "এআই দিয়ে নাম পরিবর্তন করবেন?",
125 + "bulk_ai_rename_confirm_body": "এটি এআই-কে বর্তমান শিরোনামগুলি প্রতিস্থাপন করে নির্বাচিত {count}টি কথোপকথনের প্রতিটির জন্য একটি নতুন শিরোনাম তৈরি করতে বলবে। এটি কিছুটা সময় নিতে পারে এবং পূর্বাবস্থায় ফেরানো যাবে না।",
126 + "sort_by_modified_date": "শেষ পরিবর্তন",
127 + "sort_by_created_date": "তৈরির তারিখ",
128 + "sort_title": "সাজান",
129 + "clear_conversation_title": "কথোপকথন মুছে ফেলবেন?",
130 + "clear_conversation_body": "এটি এই কথোপকথনের সমস্ত বার্তা মুছে ফেলবে।",
131 + "clear": "মুছুন",
132 "label_completed": "{label} সম্পন্ন হয়েছে",
171 - "language_system_default": "সিস্টেম ডিফল্ট",
172 - "last_error": "শেষ ত্রুটি:",
173 - "load": "লোড করুন",
174 - "loaded_status": "লোড করা হয়েছে",
175 - "loading": "লোড হচ্ছে...",
133 + "error_with_message": "ত্রুটি: {error}",
134 + "preview_failed": "প্রিভিউ ব্যর্থ হয়েছে: {error}",
135 "loading_model": "{modelId} লোড করা হচ্ছে...",
177 - "loading_model_error": "ত্রুটি: {error}",
178 - "manage_on_device_models": "অন-ডিভাইস মডেল পরিচালনা করুন",
179 - "enable_smart_reply": "অন-ডিভাইস স্মার্ট রিপ্লাই",
180 - "manage_servers": "সার্ভার পরিচালনা করুন",
181 - "manage_tts_models": "টিটিএস (TTS) মডেল পরিচালনা করুন",
182 - "max_tokens": "সর্বোচ্চ টোকেন",
183 - "max_tokens_desc": "প্রতিক্রিয়ার সীমা",
184 - "may_be_large": "এই ডিভাইসের জন্য অনেক বড় হতে পারে",
185 - "mcp_disabled_warning": "MCP বিশ্বব্যাপী নিষ্ক্রিয় করা আছে। এই বৈশিষ্ট্যগুলো ব্যবহার করতে সেটিংসে এটি সক্ষম করুন।",
186 - "mcp_enable_chat": "এই চ্যাটের জন্য MCP সক্ষম করুন",
187 - "mcp_label_placeholder": "লেবেল",
188 - "mcp_tab": "MCP",
189 - "mcp_url_placeholder": "ইউআরএল (https://...)",
190 - "memory_critical": "সংকটপূর্ণ",
191 - "memory_healthy": "স্বাস্থ্যকর",
192 - "memory_low": "কম",
193 - "message_options": "বার্তার বিকল্পসমূহ",
194 - "model_deepseek": "DeepSeek R1 Distill Qwen 1.5B",
195 - "model_deepseek_desc": "রিজনিং এবং চেইন-অফ-থট মডেল। যৌক্তিক কাজের জন্য সেরা।",
196 - "model_gemma": "Gemma 4 E2B Instruct",
197 - "model_gemma_desc": "গুগলের ফ্ল্যাগশিপ মডেল। সর্বোচ্চ মানসম্পন্ন, অধিক র‍্যাম প্রয়োজন।",
198 - "model_license_apache": "Apache-2.0",
199 - "model_license_mit": "MIT",
200 - "model_load_failed": "মডেল লোড করতে ব্যর্থ হয়েছে: {error}",
136 "model_loaded": "মডেল লোড করা হয়েছে: {modelId} ({backend})",
202 - "model_qwen_25": "Qwen 2.5 1.5B Instruct",
203 - "model_qwen_25_desc": "মান এবং আকারের চমৎকার ভারসাম্য। সাধারণ কথোপকথনের জন্য ভালো।",
204 - "model_qwen_3": "Qwen 3 0.6B",
205 - "model_qwen_3_desc": "সবচেয়ে ছোট সাধারণ ব্যবহারের চ্যাট মডেল। দ্রুত প্রতিক্রিয়া, কম মেমরি ব্যবহার।",
206 - "model_unload_failed": "মডেল আনলোড করতে ব্যর্থ হয়েছে: {error}",
207 - "model_unloaded_ollama": "কিপ-অ্যালাইভ (keep-alive) সময় পার হলে {name} আনলোড করা হবে",
208 - "model_unloaded_success": "{name} সফলভাবে আনলোড করা হয়েছে",
209 - "more": "আরও",
210 - "my_persona_hint": "আমার পার্সোনা",
211 - "my_server_hint": "আমার সার্ভার",
212 - "name_label": "নাম",
213 - "name_length_validation": "নাম অবশ্যই ৫০ অক্ষরের বা তার কম হতে হবে",
214 - "name_max_50": "সর্বোচ্চ ৫০টি অক্ষর",
215 - "name_required": "নাম আবশ্যক",
137 + "no_model_loaded": "কোনো মডেল লোড করা নেই। একটি মডেল ডাউনলোড এবং লোড করতে \"অন-ডিভাইস মডেল পরিচালনা করুন\" ট্যাপ করুন।",
138 + "loading_model_error": "ত্রুটি: {error}",
139 + "delete_conversation": "কথোপকথন মুছে ফেলবেন?",
140 "nav_history": "ইতিহাস",
141 + "nav_servers": "সার্ভারসমূহ",
142 "nav_local_models": "লোকাল মডেলসমূহ",
218 - "nav_new_chat": "নতুন চ্যাট",
143 + "nav_tts": "টেক্সট টু স্পিচ",
144 "nav_personas": "পার্সোনা",
220 - "nav_servers": "সার্ভারসমূহ",
145 "nav_settings": "সেটিংস",
222 - "nav_tts": "টেক্সট টু স্পিচ",
223 - "new_chat_mcp_default": "নতুন চ্যাটে ডিফল্ট MCP",
224 - "no_conversations_yet": "এখনও কোনো কথোপকথন নেই",
225 - "no_model_loaded": "কোনো মডেল লোড করা নেই। একটি মডেল ডাউনলোড এবং লোড করতে \"অন-ডিভাইস মডেল পরিচালনা করুন\" ট্যাপ করুন।",
226 - "no_models_available": "কোনো মডেল উপলব্ধ নেই",
227 - "no_models_match": "\"{searchQuery}\"-এর সাথে কোনো মডেল মেলেনি",
228 - "no_personas_desc": "এআই আচরণ কাস্টমাইজ করতে আপনার প্রথম পার্সোনা তৈরি করুন।",
229 - "no_personas_found": "কোনো পার্সোনা পাওয়া যায়নি",
230 - "no_prompt_placeholder": "এখনও কোনো প্রম্পট নেই...",
231 - "no_results_found": "কোনো ফলাফল পাওয়া যায়নি",
232 - "no_server_connected": "কোনো সার্ভার সংযুক্ত নেই",
146 + "nav_new_chat": "নতুন চ্যাট",
147 + "search_hint": "কথোপকথন খুঁজুন...",
148 "no_server_selected": "কোনো সার্ভার নির্বাচিত নেই",
234 - "no_servers_desc": "এআই মডেলগুলোর সাথে চ্যাট করা শুরু করতে আপনার প্রথম সার্ভার যুক্ত করুন।",
235 - "no_servers_yet": "এখনও কোনো সার্ভার নেই",
236 - "none": "কোনোটিই নয়",
237 - "none_selected": "কোনোটিই নির্বাচন করা হয়নি",
238 - "not_downloaded": "ডাউনলোড করা হয়নি",
239 - "not_installed": "ইনস্টল করা হয়নি",
240 - "not_now": "এখন নয়",
241 - "notification_benefit_background": "ব্যাকগ্রাউন্ড কাজের অবস্থা",
242 - "notification_benefit_completions": "জেনারেশন সম্পন্ন হওয়ার তথ্য",
243 - "notification_benefit_downloads": "মডেল ডাউনলোডের অগ্রগতি",
244 - "offline": "অফলাইন",
245 - "older_section": "পূর্বের",
246 - "on_device_android_only": "অন-ডিভাইস ইনফারেন্স বর্তমানে শুধুমাত্র অ্যান্ড্রয়েডেই উপলব্ধ।",
247 - "on_device_models_title": "অন-ডিভাইস মডেলসমূহ",
248 - "onboarding_choose_language": "ভাষা নির্বাচন করুন",
249 - "onboarding_choose_language_desc": "আপনার পছন্দের ভাষা নির্বাচন করুন। আপনি সেটিংস থেকে যেকোনো সময় এটি পরিবর্তন করতে পারবেন।",
250 - "onboarding_connect_desc": "আপনার নিজস্ব ব্যক্তিগত এআই অভিজ্ঞতা শুরু করতে\nLM Studio, Ollama, অথবা OpenRouter-এর সাথে\nসংযোগ করুন।",
251 - "onboarding_connect_server": "আপনার সার্ভার\nসংযোগ করুন",
252 - "onboarding_localmind": "LOCALMIND",
253 - "onboarding_welcome": "LocalMind-এ স্বাগতম",
254 - "online": "অনলাইন",
149 + "switch_server": "সার্ভার পরিবর্তন করুন",
150 + "switch_server_subtitle": "সংযোগ করার জন্য একটি সার্ভার চয়ন করুন",
151 + "manage_servers": "সার্ভার পরিচালনা করুন",
152 "open_source": "ওপেন সোর্স",
153 "open_source_desc": "LocalMind একটি ওপেন সোর্স প্রকল্প। গিটহাবে (GitHub) আমাদের অগ্রগতি অনুসরণ করুন বা অবদান রাখুন।",
154 + "star_on_github": "গিটহাবে স্টার দিন",
155 "add_more": "আরও যোগ করুন",
156 "on_github": "GitHub-এ",
157 "could_not_open_github": "GitHub খুলতে পারিনি।",
260 - "openai_compatible_api": "OpenAI-সামঞ্জস্যপূর্ণ API",
261 - "https_requires_ssl": "HTTPS-এর জন্য SSL প্রয়োজন",
262 - "most_local_setups_use_http": "বেশিরভাগ লোকাল সেটআপে http:// ব্যবহৃত হয়",
263 - "options_tooltip": "বিকল্পসমূহ",
158 + "settings_title": "সেটিংস",
159 + "settings_appearance": "চেহারা ও থিম",
160 + "settings_language": "ভাষা",
161 + "language_system_default": "সিস্টেম ডিফল্ট",
162 + "settings_tts": "টেক্সট-টু-স্পিচ",
163 + "settings_behavior": "আচরণ",
164 + "settings_on_device": "অন-ডিভাইস ইনফারেন্স",
165 + "settings_default_server": "ডিফল্ট সার্ভার",
166 + "settings_default_persona": "ডিফল্ট পার্সোনা",
167 + "settings_privacy": "গোপনীয়তা",
168 + "settings_data_management": "ডেটা পরিচালনা",
169 + "settings_about": "পরিচিতি",
170 + "theme": "থিম",
171 + "theme_system": "সিস্টেম",
172 + "theme_light": "লাইট",
173 + "theme_dark": "ডার্ক",
174 + "theme_claude": "Claude",
175 + "font_size": "ফন্টের সাইজ",
176 + "font_size_desc": "চ্যাটে লেখার সাইজ সামঞ্জস্য করুন।",
177 + "font_preview": "যেকোনো লেখার সাইজ কেমন দেখাবে তা এখানে দেখা যাবে।",
178 + "code_theme_dark": "কোড থিম (ডার্ক)",
179 + "code_theme_light": "কোড থিম (লাইট)",
180 + "code_theme_desc": "কোড ব্লকের জন্য সিনট্যাক্স হাইলাইটিং থিম নির্বাচন করুন।",
181 + "tts_engine": "টিটিএস (TTS) ইঞ্জিন",
182 + "tts_engine_system": "System TTS",
183 + "tts_engine_kitten": "Kitten TTS",
184 + "voice": "ভয়েস (Voice)",
185 + "voice_female": "নারী",
186 + "voice_male": "পুরুষ",
187 + "voice_other": "অন্যান্য",
188 + "tts_speed": "টিটিএস স্পিড",
189 + "tts_speed_desc": "প্লেব্যাকের গতি সামঞ্জস্য করুন।",
190 + "manage_tts_models": "টিটিএস (TTS) মডেল পরিচালনা করুন",
191 + "manage_on_device_models": "অন-ডিভাইস মডেল পরিচালনা করুন",
192 + "enable_smart_reply": "অন-ডিভাইস স্মার্ট রিপ্লাই",
193 + "ai_user_response_enabled": "এআই ব্যবহারকারী বার্তা (সেন্ড বোতাম ধরে রাখুন)",
194 + "ai_user_response_enabled_desc": "এআই দিয়ে আপনার পরবর্তী বার্তাটি লেখাতে এবং পাঠাতে ৩ সেকেন্ডের জন্য সেন্ড বোতামটি চেপে ধরে রাখুন",
195 + "ai_user_response_tooltip": "এআই দিয়ে ব্যবহারকারী বার্তা তৈরি করুন",
196 + "streaming_responses": "স্ট্রিমিং প্রতিক্রিয়া",
197 + "auto_generate_titles": "স্বয়ংক্রিয় শিরোনাম তৈরি করুন",
198 + "send_on_enter": "এন্টার (Enter) চাপলে পাঠান",
199 + "show_system_messages": "সিস্টেম বার্তাসমূহ দেখান",
200 + "show_system_messages_desc": "যখন কোনো ব্যক্তিত্ব নির্বাচিত না থাকে, তখন প্রতিটি অনুরোধের সাথে একটি ডিফল্ট সহকারী সিস্টেম প্রম্পট পাঠান",
201 + "show_system_messages_in_chat": "চ্যাটে সিস্টেম বার্তা দেখান",
202 + "show_system_messages_in_chat_desc": "কথোপকথনে দৃশ্যমান বুদবুদ হিসাবে সিস্টেম বার্তাগুলি (যেমন আমদানিকৃত ব্যাকআপ থেকে) প্রদর্শন করুন",
203 + "haptic_feedback": "হ্যাপটিক ফিডব্যাক",
204 + "enable_mcp": "MCP সক্ষম করুন",
205 + "new_chat_mcp_default": "নতুন চ্যাটে ডিফল্ট MCP",
206 + "show_data_indicator": "ডেটা নির্দেশক দেখান",
207 + "privacy_info": "\"LocalMind আপনার ডেটা কখনোই দেখে না\"",
208 + "delete_all_conversations": "সমস্ত কথোপকথন মুছে ফেলুন",
209 + "reset_settings_defaults": "সেটিংস ডিফল্ট মানে রিসেট করুন",
210 + "chat_title": "LocalMind",
211 + "chat_parameters_tooltip": "চ্যাটের প্যারামিটারসমূহ",
212 + "change_persona": "পার্সোনা পরিবর্তন করুন",
213 + "set_persona": "পার্সোনা সেট করুন",
214 + "remove_persona": "পার্সোনা সরিয়ে ফেলুন",
215 + "clear_conversation": "কথোপকথন মুছুন",
216 + "connection_error": "সংযোগ ত্রুটি। আপনার সার্ভার পরীক্ষা করুন।",
217 + "disconnected": "সার্ভার থেকে সংযোগ বিচ্ছিন্ন হয়েছে।",
218 + "configure": "কনফিগার করুন",
219 + "select_model": "মডেল নির্বাচন করুন",
220 + "select_persona": "পার্সোনা নির্বাচন করুন",
221 + "manage_personas": "ব্যক্তিত্ব পরিচালনা করুন",
222 + "personas_combine_hint": "নির্বাচিত ব্যক্তিত্বগুলো একত্রিত করা হবে",
223 + "start_conversation": "কথোপকথন শুরু করুন",
224 + "recent_chats": "সাম্প্রতিক চ্যাটসমূহ",
225 + "see_all": "সব দেখুন",
226 + "quick_write": "আমাকে একটি ফাংশন লিখতে সাহায্য করুন",
227 + "quick_explain": "এই কোডটি ব্যাখ্যা করুন",
228 + "quick_debug": "এটি আমার জন্য ডিবাগ করে দিন",
229 + "quick_async": "আমি কীভাবে async/await ব্যবহার করব?",
230 + "history_missing_title": "চ্যাটের ইতিহাস পাওয়া যায়নি",
231 + "history_missing_desc": "হয় এই চ্যাটের বার্তাগুলো মুছে ফেলা হয়েছে অথবা চ্যাটের ইতিহাসটি দূষিত (corrupted) হয়েছে।",
232 + "technical_details": "প্রযুক্তিগত বিবরণ",
233 + "last_error": "শেষ ত্রুটি:",
234 + "copy_info": "তথ্য কপি করুন",
235 + "conversation_id": "কথোপকথন আইডি",
236 + "created_at": "তৈরির সময়",
237 + "expected_messages": "প্রত্যাশিত বার্তাসমূহ",
238 + "debug_dialog_desc": "সিঙ্ক্রোনাইজেশন সমস্যাগুলো সনাক্ত করতে সাহায্য করার জন্য ডায়াগনস্টিক তথ্য।",
239 + "chat_input_hint": "যেকোনো কিছু জিজ্ঞাসা করুন",
240 + "send_message_tooltip": "বার্তা পাঠান",
241 + "stop_generation_tooltip": "জেনারেশন বন্ধ করুন",
242 + "attach_images_tooltip": "ছবি সংযুক্ত করুন",
243 + "start_listening_tooltip": "শোনা শুরু করুন",
244 + "stop_listening_tooltip": "শোনা বন্ধ করুন",
245 + "tool_label": "টুল: {toolCallId}",
246 + "tool_unknown": "টুল: অজানা",
247 + "message_options": "বার্তার বিকল্পসমূহ",
248 + "copy_markdown": "মার্কডাউন হিসেবে কপি করুন",
249 + "copied_markdown": "মার্কডাউন হিসেবে কপি করা হয়েছে",
250 + "read_aloud": "জোরে পড়ুন",
251 + "stop_reading": "পড়া বন্ধ করুন",
252 + "more": "আরও",
253 + "character_count": "{length}টি অক্ষর",
254 + "edit_message": "বার্তা সম্পাদনা করুন",
255 + "edit_message_desc": "সংরক্ষণ করলে নিচের অ্যাসিস্ট্যান্টের প্রতিক্রিয়াটি মুছে যাবে এবং পুনরায় জেনারেট হবে।",
256 + "save_regenerate": "সংরক্ষণ করুন এবং পুনরায় জেনারেট করুন",
257 + "chat_settings_title": "চ্যাট সেটিংস",
258 + "reset_defaults": "ডিফল্ট মানে রিসেট করুন",
259 "parameters_tab": "প্যারামিটারসমূহ",
265 - "pause": "বিরতি দিন",
266 - "paused_progress": "সাময়িক বিরতি - {percent}%",
267 - "persona_builtin_section": "বিল্ট-ইন",
268 - "persona_category_coding": "কোডিং",
269 - "persona_category_creative": "সৃজনশীল",
270 - "persona_category_education": "শিক্ষা",
271 - "persona_category_general": "সাধারণ",
272 - "persona_created": "পার্সোনা তৈরি করা হয়েছে",
273 - "persona_my_section": "আমার পার্সোনা",
274 - "persona_updated": "পার্সোনা আপডেট করা হয়েছে",
275 - "personas_title": "পার্সোনা",
276 - "pin": "পিন করুন",
260 + "mcp_tab": "MCP",
261 + "temperature": "টেম্পারেচার (Temperature)",
262 + "temperature_desc": "র্যান্ডমনেস নিয়ন্ত্রণ করে: উচ্চমান = সৃজনশীল, নিম্নমান = নিবদ্ধ",
263 + "top_p": "টপ পি (Top P)",
264 + "top_p_desc": "নিউক্লিয়াস স্যাম্পলিং থ্রেশহোল্ড",
265 + "max_tokens": "সর্বোচ্চ টোকেন",
266 + "max_tokens_desc": "প্রতিক্রিয়ার সীমা",
267 + "context_length": "কনটেক্সট দৈর্ঘ্য",
268 + "context_length_desc": "ইতিহাসের উইন্ডো",
269 + "mcp_disabled_warning": "MCP বিশ্বব্যাপী নিষ্ক্রিয় করা আছে। এই বৈশিষ্ট্যগুলো ব্যবহার করতে সেটিংসে এটি সক্ষম করুন।",
270 + "mcp_enable_chat": "এই চ্যাটের জন্য MCP সক্ষম করুন",
271 + "auto_execute_tools": "স্বয়ংক্রিয়ভাবে টুলস নির্বাহ করুন",
272 + "beta_label": "বেটা",
273 + "experimental_label": "পরীক্ষামূলক",
274 + "add_ephemeral_mcp": "সাময়িক MCP সার্ভার যুক্ত করুন",
275 + "mcp_label_placeholder": "লেবেল",
276 + "mcp_url_placeholder": "ইউআরএল (https://...)",
277 + "active_integrations": "সক্রিয় ইন্টিগ্রেশনসমূহ",
278 + "enable_notifications": "নোটিফিকেশন সক্ষম করুন",
279 + "enable_notifications_desc": "মডেল ডাউনলোডিং শেষ হলে নোটিফিকেশন পান।",
280 + "chat_history_title": "চ্যাটের ইতিহাস",
281 + "conversation_just_now": "এইমাত্র",
282 + "conversation_minutes_ago": "{minutes}মিনিট আগে",
283 + "conversation_hours_ago": "{hours}ঘণ্টা আগে",
284 + "conversation_yesterday": "গতকাল",
285 + "conversation_days_ago": "{days}দিন আগে",
286 + "conversation_date": "{month}/{day}/{year}",
287 + "options_tooltip": "বিকল্পসমূহ",
288 + "no_results_found": "কোনো ফলাফল পাওয়া যায়নি",
289 + "no_conversations_yet": "এখনও কোনো কথোপকথন নেই",
290 + "try_different_search": "অন্য কোনো অনুসন্ধান শব্দ দিয়ে চেষ্টা করুন",
291 + "start_new_conversation": "নতুন কথোপকথন শুরু করুন",
292 + "rename_conversation": "কথোপকথন পুনর্নামকরণ করুন",
293 + "enter_new_title": "নতুন শিরোনাম লিখুন",
294 "pinned_section": "পিন করা কথোপকথন",
278 - "port_invalid": "অবশ্যই একটি সংখ্যা হতে হবে",
295 + "today_section": "আজ",
296 + "yesterday_section": "গতকাল",
297 + "previous_7_days": "বিগত ৭ দিন",
298 + "previous_30_days": "বিগত ৩০ দিন",
299 + "older_section": "পূর্বের",
300 + "onboarding_choose_language": "ভাষা নির্বাচন করুন",
301 + "onboarding_choose_language_desc": "আপনার পছন্দের ভাষা নির্বাচন করুন। আপনি সেটিংস থেকে যেকোনো সময় এটি পরিবর্তন করতে পারবেন।",
302 + "onboarding_localmind": "LOCALMIND",
303 + "onboarding_connect_server": "আপনার সার্ভার\nসংযোগ করুন",
304 + "onboarding_connect_desc": "আপনার নিজস্ব ব্যক্তিগত এআই অভিজ্ঞতা শুরু করতে\nLM Studio, Ollama, অথবা OpenRouter-এর সাথে\nসংযোগ করুন।",
305 + "openai_compatible_api": "OpenAI-সামঞ্জস্যপূর্ণ API",
306 + "https_requires_ssl": "HTTPS-এর জন্য SSL প্রয়োজন",
307 + "most_local_setups_use_http": "বেশিরভাগ লোকাল সেটআপে http:// ব্যবহৃত হয়",
308 + "onboarding_welcome": "LocalMind-এ স্বাগতম",
309 + "server_type_on_device": "অন-ডিভাইস (On-Device)",
310 + "server_type_lm_studio": "LM Studio",
311 + "server_type_ollama": "Ollama",
312 + "server_type_openrouter": "OpenRouter",
313 + "server_type_openrouter_sub": "ইউনিফাইড ক্লাউড",
314 + "ready_continue": "এগিয়ে যাওয়ার জন্য প্রস্তুত",
315 + "waiting_selection": "নির্বাচনের জন্য অপেক্ষা করা হচ্ছে",
316 + "setup_connection": "সংযোগ সেটআপ করুন",
317 + "setup_connection_desc": "চ্যাট শুরু করতে আপনার {server} সার্ভার কনফিগার করুন।",
318 + "server_name": "সার্ভারের নাম",
319 + "name_required": "নাম আবশ্যক",
320 + "name_max_50": "সর্বোচ্চ ৫০টি অক্ষর",
321 + "host_label": "হোস্ট / আইপি (IP) ঠিকানা",
322 + "host_required": "হোস্টের ঠিকানা আবশ্যক",
323 "port_label": "পোর্ট (Port)",
280 - "port_range": "একটি বৈধ পোর্ট নম্বর লিখুন (১-৬৫৫৩৫)",
324 "port_required": "পোর্ট আবশ্যক",
282 - "preparing_app": "অ্যাপ প্রস্তুত করা হচ্ছে...",
283 - "preview": "প্রিভিউ",
284 - "preview_failed": "প্রিভিউ ব্যর্থ হয়েছে: {error}",
285 - "previous_30_days": "বিগত ৩০ দিন",
286 - "previous_7_days": "বিগত ৭ দিন",
287 - "privacy_info": "\"LocalMind আপনার ডেটা কখনোই দেখে না\"",
288 - "proceed_anyway": "তবুও এগিয়ে যান",
289 - "processing": "প্রসেস করা হচ্ছে...",
290 - "prompt_hint": "আপনি একজন সহায়ক অ্যাসিস্ট্যান্ট...",
291 - "prompt_max_chars": "সর্বোচ্চ ৪০০০ অক্ষর",
292 - "prompt_required": "সিস্টেম প্রম্পট আবশ্যক",
293 - "quick_async": "আমি কীভাবে async/await ব্যবহার করব?",
294 - "quick_debug": "এটি আমার জন্য ডিবাগ করে দিন",
295 - "quick_explain": "এই কোডটি ব্যাখ্যা করুন",
296 - "quick_write": "আমাকে একটি ফাংশন লিখতে সাহায্য করুন",
325 + "port_invalid": "অবশ্যই একটি সংখ্যা হতে হবে",
326 + "port_range": "একটি বৈধ পোর্ট নম্বর লিখুন (১-৬৫৫৩৫)",
327 + "api_key_required": "এপিআই কি *",
328 + "api_key_optional": "এপিআই কি (ঐচ্ছিক)",
329 + "api_key_required_openrouter": "OpenRouter-এর জন্য এপিআই কি প্রয়োজন",
330 + "api_key_format": "OpenRouter API কি sk- দিয়ে শুরু হয়",
331 + "my_server_hint": "আমার সার্ভার",
332 + "name_length_validation": "নাম অবশ্যই ৫০ অক্ষরের বা তার কম হতে হবে",
333 + "host_valid": "একটি বৈধ হোস্টনেম বা আইপি ঠিকানা লিখুন",
334 + "api_key_hint_openrouter": "sk-...",
335 + "api_key_hint_generic": "প্রমাণিত সার্ভারের জন্য",
336 + "update_server": "সার্ভার আপডেট করুন",
337 + "save_server": "সার্ভার সংরক্ষণ করুন",
338 + "server_updated": "সার্ভার আপডেট করা হয়েছে",
339 + "server_added": "সার্ভার যুক্ত করা হয়েছে",
340 + "download_model_title": "মডেল ডাউনলোড করুন",
341 + "download_model_desc": "ডাউনলোড করার জন্য একটি মডেল চয়ন করুন।\nএটি আপনার ডিভাইসে স্থানীয়ভাবে চলবে।",
342 + "on_device_android_only": "অন-ডিভাইস ইনফারেন্স বর্তমানে শুধুমাত্র অ্যান্ড্রয়েডেই উপলব্ধ।",
343 + "total_ram": "মোট র‍্যাম",
344 + "available": "উপলব্ধ",
345 "ram_min_required": "সর্বনিম্ন {fileSize} GB র‍্যাম (RAM) প্রয়োজন",
298 - "ram_usage": "র‍্যাম ব্যবহার",
299 - "ram_used": "{percent}% ব্যবহৃত",
300 - "ram_warning": "র‍্যাম সংক্রান্ত সতর্কবার্তা",
346 + "download_progress": "{percent}% • {speed}",
347 + "eta_label": "অবশিষ্ট সময় (ETA): {eta}",
348 + "paused_progress": "সাময়িক বিরতি - {percent}%",
349 "ram_warning_body_download": "এই মডেলটির জন্য অন্তত {ram} GB র‍্যাম প্রয়োজন, কিন্তু আপনার ডিভাইসে {totalMemory} রয়েছে। এটি সঠিকভাবে নাও চলতে পারে অথবা অ্যাপটি ক্র্যাশ করতে পারে।",
350 "ram_warning_body_load": "আপনার ডিভাইসে {availableRAM} খালি র‍্যাম রয়েছে, কিন্তু এই মডেলটির জন্য অন্তত {ram} GB প্রয়োজন। এটি লোড করতে ব্যর্থ হতে পারে অথবা সিস্টেমে অস্থিরতা দেখা দিতে পারে।",
303 - "range_0_1": "0.0-1.0",
304 - "range_0_2": "0.0-2.0",
305 - "read_aloud": "জোরে পড়ুন",
306 - "ready": "প্রস্তুত",
307 - "ready_continue": "এগিয়ে যাওয়ার জন্য প্রস্তুত",
308 - "recent_chats": "সাম্প্রতিক চ্যাটসমূহ",
309 - "recommended": "সুপারিশকৃত",
310 - "refresh_models": "মডেল রিফ্রেশ করুন",
311 - "remove_persona": "পার্সোনা সরিয়ে ফেলুন",
312 - "rename": "নাম পরিবর্তন করুন",
313 - "rename_conversation": "কথোপকথন পুনর্নামকরণ করুন",
314 - "reset_defaults": "ডিফল্ট মানে রিসেট করুন",
315 - "reset_settings_defaults": "সেটিংস ডিফল্ট মানে রিসেট করুন",
316 - "resume": "পুনরায় শুরু করুন",
317 - "retry": "আবার চেষ্টা করুন",
318 - "save": "সংরক্ষণ করুন",
319 - "save_changes": "পরিবর্তনগুলো সংরক্ষণ করুন",
320 - "save_continue": "সংরক্ষণ করুন এবং এগিয়ে যান",
321 - "save_regenerate": "সংরক্ষণ করুন এবং পুনরায় জেনারেট করুন",
322 - "save_server": "সার্ভার সংরক্ষণ করুন",
323 - "search_hint": "কথোপকথন খুঁজুন...",
324 - "search_icons_hint": "আইকন খুঁজুন...",
325 - "search_models_hint": "মডেল খুঁজুন...",
326 - "see_all": "সব দেখুন",
327 - "select": "নির্বাচন করুন",
351 + "choose_theme": "থিম নির্বাচন করুন",
352 + "choose_theme_desc": "অ্যাপের চেহারা ব্যক্তিগতকৃত করুন। আপনি পরবর্তীতে সেটিংস থেকে এটি যেকোনো সময় পরিবর্তন করতে পারবেন।",
353 + "theme_card_system": "সিস্টেম",
354 + "theme_card_system_sub": "আপনার ডিভাইসের সেটিংসের সাথে মিলে যায়",
355 + "theme_card_light": "লাইট",
356 + "theme_card_light_sub": "পরিষ্কার এবং উজ্জ্বল",
357 + "theme_card_dark": "ডার্ক",
358 + "theme_card_dark_sub": "চোখের জন্য আরামদায়ক",
359 + "theme_card_claude": "Claude",
360 + "theme_card_claude_sub": "একটি উষ্ণ, পিচ রঙের থিম",
361 + "stay_updated": "আপ-টু-ডেট থাকুন",
362 + "stay_updated_desc": "আপনার এআই মডেলগুলোর ডাউনলোড সম্পন্ন হলে অথবা দীর্ঘস্থায়ী কাজগুলো শেষ হলে নোটিফিকেশন পান।",
363 + "notification_benefit_downloads": "মডেল ডাউনলোডের অগ্রগতি",
364 + "notification_benefit_completions": "জেনারেশন সম্পন্ন হওয়ার তথ্য",
365 + "notification_benefit_background": "ব্যাকগ্রাউন্ড কাজের অবস্থা",
366 + "allow_notifications": "নোটিফিকেশন অনুমোদন করুন",
367 + "servers_title": "সার্ভারসমূহ",
368 + "no_servers_yet": "এখনও কোনো সার্ভার নেই",
369 + "no_servers_desc": "এআই মডেলগুলোর সাথে চ্যাট করা শুরু করতে আপনার প্রথম সার্ভার যুক্ত করুন।",
370 + "add_server": "সার্ভার যুক্ত করুন",
371 + "switched_to_server": "{name}-এ স্থানান্তরিত হয়েছে",
372 + "edit_server": "সার্ভার সম্পাদনা করুন",
373 + "add_server_title": "সার্ভার যুক্ত করুন",
374 + "server_type_label": "সার্ভারের ধরন",
375 + "server_icon_label": "সার্ভার আইকন",
376 + "default_icon": "ডিফল্ট আইকন",
377 + "server_type_lm_studio_display": "LM Studio",
378 + "server_type_openai_display": "ওপেনএআই সামঞ্জস্যপূর্ণ",
379 + "server_type_ollama_display": "Ollama",
380 + "server_type_openrouter_display": "OpenRouter",
381 + "server_type_on_device_display": "অন-ডিভাইস (On-Device)",
382 + "server_address_openrouter": "openrouter.ai",
383 + "server_address_on_device": "স্থানীয় ইনফারেন্স (Local Inference)",
384 + "server_address_format": "{host}:{port}",
385 + "default_badge": "ডিফল্ট",
386 + "set_as_default": "ডিফল্ট হিসেবে সেট করুন",
387 "select_icon": "আইকন নির্বাচন করুন",
388 "select_icon_desc": "আপনার সার্ভারের জন্য একটি আইকন চয়ন করুন",
330 - "select_model": "মডেল নির্বাচন করুন",
331 - "select_model_hint": "চ্যাট শুরু করতে একটি মডেল নির্বাচন করুন",
332 - "select_model_title": "মডেল নির্বাচন করুন",
333 - "select_persona": "পার্সোনা নির্বাচন করুন",
334 - "send_message_tooltip": "বার্তা পাঠান",
335 - "send_on_enter": "এন্টার (Enter) চাপলে পাঠান",
336 - "server_added": "সার্ভার যুক্ত করা হয়েছে",
337 - "server_address_format": "{host}:{port}",
338 - "server_address_on_device": "স্থানীয় ইনফারেন্স (Local Inference)",
339 - "server_address_openrouter": "openrouter.ai",
340 - "server_icon_ai_brain": "এআই ব্রেইন (AI Brain)",
341 - "server_icon_ai_brain2": "এআই ব্রেইন ০২ (AI Brain 02)",
342 - "server_icon_ai_chat": "এআই চ্যাট (AI Chat)",
343 - "server_icon_ai_cloud": "এআই ক্লাউড (AI Cloud)",
344 - "server_icon_ai_network": "এআই নেটওয়ার্ক (AI Network)",
345 - "server_icon_alert": "সতর্কীকরণ বৃত্ত",
346 - "server_icon_api": "এপিআই (API)",
347 - "server_icon_arrow_right": "ডানমুখী তীর ০১",
348 - "server_icon_bot": "বট (Bot)",
349 - "server_icon_bot2": "বট ০২",
350 - "server_icon_cellular": "সেলুলার নেটওয়ার্ক",
351 - "server_icon_check": "টিকচিহ্ন বৃত্ত",
352 - "server_icon_chip": "চিপ (Chip)",
353 - "server_icon_chip2": "চিপ ০২",
389 + "search_icons_hint": "আইকন খুঁজুন...",
390 + "server_icon_stack": "সার্ভার স্ট্যাক",
391 + "server_icon_stack2": "সার্ভার স্ট্যাক ০২",
392 + "server_icon_stack3": "সার্ভার স্ট্যাক ০৩",
393 "server_icon_cloud": "ক্লাউড",
355 - "server_icon_cloud_download": "ক্লাউড ডাউনলোড",
394 "server_icon_cloud_server": "ক্লাউড সার্ভার",
357 - "server_icon_cloud_upload": "ক্লাউড আপলোড",
358 - "server_icon_code": "কোড",
359 - "server_icon_computer": "কম্পিউটার",
360 - "server_icon_cpu": "সিপিইউ (CPU)",
395 + "server_icon_mcp": "MCP সার্ভার",
396 "server_icon_database": "ডেটাবেস",
397 "server_icon_database1": "ডেটাবেস ০১",
398 "server_icon_database2": "ডেটাবেস ০২",
364 - "server_icon_drive": "ড্রাইভ",
365 - "server_icon_file1": "ফাইল ০১",
366 - "server_icon_folder1": "ফোল্ডার ০১",
367 - "server_icon_folder2": "ফোল্ডার ০২",
368 - "server_icon_globe": "গ্লোব",
369 - "server_icon_hard_drive": "হার্ড ড্রাইভ",
370 - "server_icon_home1": "হোম ০১",
371 - "server_icon_home2": "হোম ০২",
372 - "server_icon_info": "তথ্য বৃত্ত",
373 - "server_icon_key": "কি ০১",
374 - "server_icon_label": "সার্ভার আইকন",
399 + "server_icon_cpu": "সিপিইউ (CPU)",
400 + "server_icon_chip": "চিপ (Chip)",
401 + "server_icon_chip2": "চিপ ০২",
402 + "server_icon_computer": "কম্পিউটার",
403 "server_icon_laptop": "ল্যাপটপ",
376 - "server_icon_link": "লিঙ্ক ০১",
377 - "server_icon_lock": "লক",
378 - "server_icon_mcp": "MCP সার্ভার",
404 + "server_icon_terminal": "কম্পিউটার টার্মিনাল",
405 + "server_icon_code": "কোড",
406 + "server_icon_ai_brain": "এআই ব্রেইন (AI Brain)",
407 + "server_icon_ai_brain2": "এআই ব্রেইন ০২ (AI Brain 02)",
408 + "server_icon_ai_cloud": "এআই ক্লাউড (AI Cloud)",
409 + "server_icon_ai_network": "এআই নেটওয়ার্ক (AI Network)",
410 + "server_icon_ai_chat": "এআই চ্যাট (AI Chat)",
411 + "server_icon_cellular": "সেলুলার নেটওয়ার্ক",
412 "server_icon_plug1": "প্লাগ ০১",
413 "server_icon_plug2": "প্লাগ ০২",
381 - "server_icon_refresh": "রিফ্রেশ",
414 + "server_icon_bot": "বট (Bot)",
415 + "server_icon_bot2": "বট ০২",
416 "server_icon_robotic": "রোবোটিক",
417 "server_icon_rocket": "রকেট",
418 + "server_icon_star": "তারা",
419 "server_icon_settings1": "সেটিংস ০১",
420 "server_icon_settings2": "সেটিংস ০২",
386 - "server_icon_stack": "সার্ভার স্ট্যাক",
387 - "server_icon_stack2": "সার্ভার স্ট্যাক ০২",
388 - "server_icon_stack3": "সার্ভার স্ট্যাক ০৩",
389 - "server_icon_star": "তারা",
390 - "server_icon_terminal": "কম্পিউটার টার্মিনাল",
391 - "server_icon_zap": "জ্যাপ",
392 - "server_name": "সার্ভারের নাম",
393 - "server_type_label": "সার্ভারের ধরন",
394 - "server_type_lm_studio": "LM Studio",
395 - "server_type_lm_studio_display": "LM Studio",
396 - "server_type_lm_studio_sub": "লোকাল এপিআই",
397 - "server_type_ollama": "Ollama",
398 - "server_type_ollama_display": "Ollama",
399 - "server_type_ollama_sub": "সিএলআই ইঞ্জিন",
400 - "server_type_on_device": "অন-ডিভাইস (On-Device)",
401 - "server_type_on_device_display": "অন-ডিভাইস (On-Device)",
402 - "server_type_on_device_sub": "কোনো সার্ভারের প্রয়োজন নেই",
403 - "server_type_openai_display": "ওপেনএআই সামঞ্জস্যপূর্ণ",
404 - "server_type_openrouter": "OpenRouter",
405 - "server_type_openrouter_display": "OpenRouter",
406 - "server_type_openrouter_sub": "ইউনিফাইড ক্লাউড",
407 - "server_updated": "সার্ভার আপডেট করা হয়েছে",
408 - "servers_title": "সার্ভারসমূহ",
409 - "set_as_default": "ডিফল্ট হিসেবে সেট করুন",
410 - "set_persona": "পার্সোনা সেট করুন",
411 - "settings_about": "পরিচিতি",
412 - "settings_appearance": "চেহারা ও থিম",
413 - "settings_behavior": "আচরণ",
414 - "settings_data_management": "ডেটা পরিচালনা",
415 - "settings_default_persona": "ডিফল্ট পার্সোনা",
416 - "settings_default_server": "ডিফল্ট সার্ভার",
417 - "settings_language": "ভাষা",
418 - "settings_on_device": "অন-ডিভাইস ইনফারেন্স",
419 - "settings_privacy": "গোপনীয়তা",
420 - "settings_title": "সেটিংস",
421 - "settings_tts": "টেক্সট-টু-স্পিচ",
422 - "setup_connection": "সংযোগ সেটআপ করুন",
423 - "setup_connection_desc": "চ্যাট শুরু করতে আপনার {server} সার্ভার কনফিগার করুন।",
424 - "share": "শেয়ার করুন",
425 - "show_data_indicator": "ডেটা নির্দেশক দেখান",
426 - "show_system_messages": "সিস্টেম বার্তাসমূহ দেখান",
427 - "skip": "এড়িয়ে যান",
428 - "something_went_wrong": "কিছু একটা ভুল হয়েছে",
429 - "star_on_github": "গিটহাবে স্টার দিন",
430 - "start_conversation": "কথোপকথন শুরু করুন",
431 - "start_new_chat": "নতুন চ্যাট শুরু করুন",
432 - "start_new_conversation": "নতুন কথোপকথন শুরু করুন",
433 - "startup_failed": "স্টার্টআপ ব্যর্থ হয়েছে",
434 - "stay_updated": "আপ-টু-ডেট থাকুন",
435 - "stay_updated_desc": "আপনার এআই মডেলগুলোর ডাউনলোড সম্পন্ন হলে অথবা দীর্ঘস্থায়ী কাজগুলো শেষ হলে নোটিফিকেশন পান।",
436 - "stop": "বন্ধ করুন",
437 - "stop_generation_tooltip": "জেনারেশন বন্ধ করুন",
438 - "stop_reading": "পড়া বন্ধ করুন",
439 - "streaming_responses": "স্ট্রিমিং প্রতিক্রিয়া",
440 - "switch_server": "সার্ভার পরিবর্তন করুন",
441 - "switch_server_subtitle": "সংযোগ করার জন্য একটি সার্ভার চয়ন করুন",
442 - "switched_to_server": "{name}-এ স্থানান্তরিত হয়েছে",
421 + "server_icon_home1": "হোম ০১",
422 + "server_icon_home2": "হোম ০২",
423 + "server_icon_folder1": "ফোল্ডার ০১",
424 + "server_icon_folder2": "ফোল্ডার ০২",
425 + "server_icon_file1": "ফাইল ০১",
426 + "server_icon_lock": "লক",
427 + "server_icon_key": "কি ০১",
428 + "server_icon_link": "লিঙ্ক ০১",
429 + "server_icon_globe": "গ্লোব",
430 + "server_icon_api": "এপিআই (API)",
431 + "server_icon_arrow_right": "ডানমুখী তীর ০১",
432 + "server_icon_check": "টিকচিহ্ন বৃত্ত",
433 + "server_icon_alert": "সতর্কীকরণ বৃত্ত",
434 + "server_icon_info": "তথ্য বৃত্ত",
435 + "server_icon_zap": "জ্যাপ",
436 + "server_icon_cloud_upload": "ক্লাউড আপলোড",
437 + "server_icon_cloud_download": "ক্লাউড ডাউনলোড",
438 + "server_icon_refresh": "রিফ্রেশ",
439 + "server_icon_hard_drive": "হার্ড ড্রাইভ",
440 + "server_icon_drive": "ড্রাইভ",
441 + "personas_title": "পার্সোনা",
442 + "persona_category_general": "সাধারণ",
443 + "persona_category_coding": "কোডিং",
444 + "persona_category_education": "শিক্ষা",
445 + "persona_category_creative": "সৃজনশীল",
446 + "persona_builtin_section": "বিল্ট-ইন",
447 + "persona_my_section": "আমার পার্সোনা",
448 + "clone_edit": "ক্লোন ও সম্পাদনা করুন",
449 + "builtin_badge": "বিল্ট-ইন",
450 + "no_personas_found": "কোনো পার্সোনা পাওয়া যায়নি",
451 + "no_personas_desc": "এআই আচরণ কাস্টমাইজ করতে আপনার প্রথম পার্সোনা তৈরি করুন।",
452 + "edit_persona": "পার্সোনা সম্পাদনা করুন",
453 + "create_persona": "পার্সোনা তৈরি করুন",
454 + "create_persona_button": "তৈরি করুন",
455 + "emoji_label": "ইমোজি",
456 + "name_label": "নাম",
457 + "my_persona_hint": "আমার পার্সোনা",
458 + "category_label": "বিভাগ",
459 + "description_optional": "বিবরণ (ঐচ্ছিক)",
460 + "description_hint": "এই পার্সোনাটি কী কাজ করে...",
461 "system_prompt": "সিস্টেম প্রম্পট",
444 - "technical_details": "প্রযুক্তিগত বিবরণ",
445 - "temp_hint": "0.7",
446 - "temperature": "টেম্পারেচার (Temperature)",
447 - "temperature_desc": "র্যান্ডমনেস নিয়ন্ত্রণ করে: উচ্চমান = সৃজনশীল, নিম্নমান = নিবদ্ধ",
462 + "character_count_max": "{currentLen}/৪০০০",
463 + "no_prompt_placeholder": "এখনও কোনো প্রম্পট নেই...",
464 + "prompt_hint": "আপনি একজন সহায়ক অ্যাসিস্ট্যান্ট...",
465 + "prompt_required": "সিস্টেম প্রম্পট আবশ্যক",
466 + "prompt_max_chars": "সর্বোচ্চ ৪০০০ অক্ষর",
467 + "advanced_settings": "উন্নত সেটিংস",
468 "temperature_label": "টেম্পারেচার (০.০-২.০)",
449 - "test_connection": "সংযোগ পরীক্ষা করুন",
450 - "test_notification_body": "এটি মডেল ডাউনলোডের অগ্রগতির জন্য একটি পরীক্ষা নোটিফিকেশন।",
451 - "test_notification_title": "পরীক্ষা নোটিফিকেশন",
452 - "testing": "পরীক্ষা করা হচ্ছে...",
453 - "theme": "থিম",
454 - "theme_card_claude": "Claude",
455 - "theme_card_claude_sub": "একটি উষ্ণ, পিচ রঙের থিম",
456 - "theme_card_dark": "ডার্ক",
457 - "theme_card_dark_sub": "চোখের জন্য আরামদায়ক",
458 - "theme_card_light": "লাইট",
459 - "theme_card_light_sub": "পরিষ্কার এবং উজ্জ্বল",
460 - "theme_card_system": "সিস্টেম",
461 - "theme_card_system_sub": "আপনার ডিভাইসের সেটিংসের সাথে মিলে যায়",
462 - "theme_claude": "Claude",
463 - "theme_dark": "ডার্ক",
464 - "theme_light": "লাইট",
465 - "theme_system": "সিস্টেম",
466 - "thinking": "চিন্তা করছে",
467 - "today_section": "আজ",
468 - "tool_label": "টুল: {toolCallId}",
469 - "tool_unknown": "টুল: অজানা",
470 - "top_p": "টপ পি (Top P)",
471 - "top_p_desc": "নিউক্লিয়াস স্যাম্পলিং থ্রেশহোল্ড",
472 - "top_p_hint": "0.9",
469 "top_p_label": "টপ পি (০.০-১.০)",
474 - "total_capacity": "মোট ক্ষমতা",
475 - "total_ram": "মোট র‍্যাম",
476 - "try_different_search": "অন্য কোনো অনুসন্ধান শব্দ দিয়ে চেষ্টা করুন",
477 - "tts_engine": "টিটিএস (TTS) ইঞ্জিন",
478 - "tts_engine_kitten": "Kitten TTS",
479 - "tts_engine_system": "System TTS",
480 - "tts_kitten_desc": "৮টি অভিব্যক্তিপূর্ণ ভয়েসসহ বিদ্যুৎ-গতির নিউরাল টিটিএস।\nএটি ডাউনলোড করতে {size} প্রয়োজন।",
470 + "temp_hint": "0.7",
471 + "top_p_hint": "0.9",
472 + "range_0_2": "0.0-2.0",
473 + "range_0_1": "0.0-1.0",
474 + "persona_updated": "পার্সোনা আপডেট করা হয়েছে",
475 + "persona_created": "পার্সোনা তৈরি করা হয়েছে",
476 "tts_models_title": "টেক্সট টু স্পিচ মডেলসমূহ",
482 - "tts_piper_desc": "২টি অভিব্যক্তিপূর্ণ ভয়েসসহ দ্রুত অফলাইন পাইপার ভয়েস।\nভয়েস প্রতি ডাউনলোড করতে {size} প্রয়োজন।",
483 - "tts_speed": "টিটিএস স্পিড",
484 - "tts_speed_desc": "প্লেব্যাকের গতি সামঞ্জস্য করুন।",
477 + "always_available": "সর্বদা উপলব্ধ",
478 "tts_system_desc": "আপনার ডিভাইসের বিল্ট-ইন টেক্সট-টু-স্পিচ ইঞ্জিন ব্যবহার করে।\nকোনো ডাউনলোডের প্রয়োজন নেই। ভয়েস নির্বাচন আপনার ডিভাইসের সিস্টেম সেটিংস ব্যবহার করে।",
486 - "unknown_error": "অজানা ত্রুটি",
487 - "unload": "আনলোড করুন",
488 - "unload_from_server": "সার্ভার থেকে আনলোড করুন",
489 - "unpin": "আনপিন করুন",
490 - "update_server": "সার্ভার আপডেট করুন",
491 - "voice": "ভয়েস (Voice)",
492 - "voice_bella": "Bella",
493 - "voice_bruno": "Bruno",
494 - "voice_female": "নারী",
495 - "voice_hugo": "Hugo",
496 - "voice_jasper": "Jasper",
497 - "voice_kiki": "Kiki",
498 - "voice_leo": "Leo",
499 - "voice_lessac": "Lessac (US)",
500 - "voice_luna": "Luna",
501 - "voice_male": "পুরুষ",
502 - "voice_other": "অন্যান্য",
503 - "voice_rosie": "Rosie",
504 - "voice_ryan": "Ryan (US)",
505 - "waiting_selection": "নির্বাচনের জন্য অপেক্ষা করা হচ্ছে",
506 - "yesterday_section": "গতকাল",
507 - "tts_supports_background": "নেটিভ অডিও হিসাবে ব্যাকগ্রাউন্ড প্লেব্যাক সমর্থন করে",
508 - "tts_other_services_background_note": "দ্রষ্টব্য: অন্যান্য টিটিএস পরিষেবাগুলি নেটিভ অডিও হিসাবে ব্যাকগ্রাউন্ড প্লেব্যাক সমর্থন করে।",
509 - "start_listening_tooltip": "শোনা শুরু করুন",
510 - "stop_listening_tooltip": "শোনা বন্ধ করুন",
479 + "downloading_status": "ডাউনলোড করা হচ্ছে...",
480 + "tts_kitten_desc": "৮টি অভিব্যক্তিপূর্ণ ভয়েসসহ বিদ্যুৎ-গতির নিউরাল টিটিএস।\nএটি ডাউনলোড করতে {size} প্রয়োজন।",
481 + "tts_piper_desc": "২টি অভিব্যক্তিপূর্ণ ভয়েসসহ দ্রুত অফলাইন পাইপার ভয়েস।\nভয়েস প্রতি ডাউনলোড করতে {size} প্রয়োজন।",
482 + "engine_spec": "{sizeMb} MB · {ramMb} MB RAM · {voiceCount}টি ভয়েস",
483 + "on_device_models_title": "অন-ডিভাইস মডেলসমূহ",
484 "settings_huggingface_token": "Hugging Face টোকেন (ঐচ্ছিক)",
485 "settings_huggingface_token_desc": "শুধু gated মডেলের জন্য প্রয়োজন (যেমন Gemma)। huggingface.co/settings/tokens থেকে একটি টোকেন নিন।",
486 "settings_huggingface_token_set": "টোকেন সংরক্ষিত হয়েছে",
@@ -521,6 +494,91 @@
494 "server_type_ollama_desc": "লোকাল AI ইঞ্জিন। API key প্রয়োজন নেই।",
495 "server_type_on_device_desc": "আপনার ফোনে চলে। কিছু মডেলের জন্য Hugging Face টোকেন লাগে।",
496 "server_type_lm_studio_desc": "লোকাল API সার্ভার। API key প্রয়োজন নেই।",
497 + "available_models": "উপলব্ধ মডেলসমূহ",
498 + "device_memory": "ডিভাইসের মেমরি",
499 + "ram_usage": "র‍্যাম ব্যবহার",
500 + "memory_healthy": "স্বাস্থ্যকর",
501 + "memory_critical": "সংকটপূর্ণ",
502 + "memory_low": "কম",
503 + "ram_used": "{percent}% ব্যবহৃত",
504 + "available_ram": "উপলব্ধ র‍্যাম (RAM)",
505 + "total_capacity": "মোট ক্ষমতা",
506 + "loaded_status": "লোড করা হয়েছে",
507 + "inference_backend": "ইনফারেন্স ব্যাকএন্ড",
508 + "backend_ios_notice": "iOS-এ শুধুমাত্র CPU ব্যাকএন্ড উপলব্ধ।",
509 + "backend_cpu_desc": "সব ডিভাইসে কাজ করে। সবচেয়ে বেশি সামঞ্জস্যপূর্ণ।",
510 + "backend_gpu_desc": "OpenCL ত্বরণ। সমর্থিত ডিভাইসে দ্রুততর।",
511 + "backend_npu_desc": "ভেন্ডর NPU (Qualcomm/MediaTek)। দ্রুততম ইনফারেন্স।",
512 + "select_model_title": "মডেল নির্বাচন করুন",
513 + "refresh_models": "মডেল রিফ্রেশ করুন",
514 + "search_models_hint": "মডেল খুঁজুন...",
515 + "no_server_connected": "কোনো সার্ভার সংযুক্ত নেই",
516 + "add_server_first": "উপলব্ধ মডেলগুলো দেখতে প্রথমে একটি সার্ভার যুক্ত করুন।",
517 + "failed_load_models": "মডেল লোড করতে ব্যর্থ হয়েছে",
518 + "no_models_available": "কোনো মডেল উপলব্ধ নেই",
519 + "no_models_match": "\"{searchQuery}\"-এর সাথে কোনো মডেল মেলেনি",
520 + "model_load_failed": "মডেল লোড করতে ব্যর্থ হয়েছে: {error}",
521 + "model_unloaded_ollama": "কিপ-অ্যালাইভ (keep-alive) সময় পার হলে {name} আনলোড করা হবে",
522 + "model_unloaded_success": "{name} সফলভাবে আনলোড করা হয়েছে",
523 + "model_unload_failed": "মডেল আনলোড করতে ব্যর্থ হয়েছে: {error}",
524 + "unload_from_server": "সার্ভার থেকে আনলোড করুন",
525 + "context_chip": "{ctx} ctx",
526 + "unload_all_models": "সব মডেল আনলোড করুন",
527 + "loaded_models_count": "{count}টি মডেল লোড করা হয়েছে",
528 + "all_models_unloaded": "সব মডেল আনলোড করা হয়েছে",
529 + "branch_chat": "ব্রাঞ্চ চ্যাট",
530 + "branch_chat_desc": "এই বার্তা থেকে শুরু করে একটি নতুন চ্যাট তৈরি করুন",
531 + "edit_assistant_message_desc": "সহকারী বার্তার বিষয়বস্তু সম্পাদনা করুন",
532 + "switch_to_model": "{model} মডেলে পরিবর্তন করুন",
533 + "download_notification_title": "{modelName} ডাউনলোড করা হচ্ছে...",
534 + "download_complete_notification": "ডাউনলোড সম্পন্ন হয়েছে!",
535 + "download_complete_body": "{modelName} সফলভাবে ডাউনলোড করা হয়েছে।",
536 + "download_failed_notification": "ডাউনলোড ব্যর্থ হয়েছে: {error}",
537 + "download_failed_body": "{modelName} ডাউনলোড করতে ব্যর্থ হয়েছে।",
538 + "engine_name_system": "System TTS",
539 + "engine_tagline_system": "ডিভাইসের বিল্ট-ইন ইঞ্জিন",
540 + "engine_name_kitten": "Kitten TTS",
541 + "engine_tagline_kitten": "উচ্চ-গতির নিউরাল টিটিএস (TTS)",
542 + "engine_name_sherpa": "Sherpa ONNX VITS",
543 + "engine_tagline_sherpa": "অফলাইন পাইপার (Piper) ভয়েসসমূহ",
544 + "voice_jasper": "Jasper",
545 + "voice_bella": "Bella",
546 + "voice_bruno": "Bruno",
547 + "voice_luna": "Luna",
548 + "voice_hugo": "Hugo",
549 + "voice_rosie": "Rosie",
550 + "voice_leo": "Leo",
551 + "voice_kiki": "Kiki",
552 + "voice_lessac": "Lessac (US)",
553 + "voice_ryan": "Ryan (US)",
554 + "model_qwen_3": "Qwen 3 0.6B",
555 + "model_qwen_3_desc": "সবচেয়ে ছোট সাধারণ ব্যবহারের চ্যাট মডেল। দ্রুত প্রতিক্রিয়া, কম মেমরি ব্যবহার।",
556 + "model_license_apache": "Apache-2.0",
557 + "model_qwen_25": "Qwen 2.5 1.5B Instruct",
558 + "model_qwen_25_desc": "মান এবং আকারের চমৎকার ভারসাম্য। সাধারণ কথোপকথনের জন্য ভালো।",
559 + "model_deepseek": "DeepSeek R1 Distill Qwen 1.5B",
560 + "model_deepseek_desc": "রিজনিং এবং চেইন-অফ-থট মডেল। যৌক্তিক কাজের জন্য সেরা।",
561 + "model_license_mit": "MIT",
562 + "model_gemma": "Gemma 4 E2B Instruct",
563 + "model_gemma_desc": "গুগলের ফ্ল্যাগশিপ মডেল। সর্বোচ্চ মানসম্পন্ন, অধিক র‍্যাম প্রয়োজন।",
564 + "export_header": "*LocalMind থেকে রপ্তানি করা হয়েছে — {date}*",
565 + "export_role_user": "## 👤 ব্যবহারকারী",
566 + "export_role_assistant": "## 🤖 অ্যাসিস্ট্যান্ট",
567 + "export_role_system": "## ⚙️ সিস্টেম",
568 + "export_role_tool": "## 🔧 টুল",
569 + "export_text_user": "[ব্যবহারকারী]",
570 + "export_text_assistant": "[অ্যাসিস্ট্যান্ট]",
571 + "export_text_system": "[সিস্টেম]",
572 + "export_text_tool": "[টুল]",
573 + "export_label_user": "ব্যবহারকারী",
574 + "export_label_assistant": "অ্যাসিস্ট্যান্ট",
575 + "export_label_system": "সিস্টেম",
576 + "export_label_tool": "টুল",
577 + "select_model_hint": "চ্যাট শুরু করতে একটি মডেল নির্বাচন করুন",
578 + "test_notification_title": "পরীক্ষা নোটিফিকেশন",
579 + "test_notification_body": "এটি মডেল ডাউনলোডের অগ্রগতির জন্য একটি পরীক্ষা নোটিফিকেশন।",
580 + "tts_supports_background": "নেটিভ অডিও হিসাবে ব্যাকগ্রাউন্ড প্লেব্যাক সমর্থন করে",
581 + "tts_other_services_background_note": "দ্রষ্টব্য: অন্যান্য টিটিএস পরিষেবাগুলি নেটিভ অডিও হিসাবে ব্যাকগ্রাউন্ড প্লেব্যাক সমর্থন করে।",
582 "gguf_imported_models_title": "Imported GGUF models",
583 "gguf_imported_models_empty_subtitle": "Import a GGUF from your device or add one from Hugging Face. Imported models run locally with llama.cpp.",
584 "gguf_imported_models_ready": "imported models ready for local inference.",
@@ -603,65 +661,6 @@
661 "tool_status_running": "Running",
662 "tool_status_done": "Done",
663 "tool_status_failed": "Failed",
606 - "delete_builtin_persona_body": "এটি একটি বিল্ট-ইন ব্যক্তিত্ব (Persona)। আপনি এটিকে পরবর্তীতে সেটিংস থেকে পুনরুদ্ধার করতে পারেন।",
607 - "restore_builtin_personas": "ডিফল্ট ব্যক্তিত্ব পুনরুদ্ধার করুন",
608 - "restore_builtin_personas_desc": "আপনার মুছে ফেলা যেকোনো বিল্ট-ইন ব্যক্তিত্ব আবার যুক্ত করুন",
609 - "restore_builtin_personas_success": "ডিফল্ট ব্যক্তিত্ব পুনরুদ্ধার করা হয়েছে",
610 - "clear_personas": "ব্যক্তিত্ব পরিষ্কার করুন",
611 - "enable_image_compression": "পাঠানোর আগে ছবি কম্প্রেস করুন",
612 - "enable_image_compression_desc": "সংযুক্ত চিত্রগুলির আকার পরিবর্তন এবং কম্প্রেস করুন যাতে আপলোডগুলি সার্ভার সীমার মধ্যে থাকে",
613 - "image_compression_level": "কম্প্রেশনের আগ্রাসন",
614 - "image_compression_level_desc": "উচ্চতর আগ্রাসন কম মানের ছোট আকারের আপলোড তৈরি করে",
615 - "image_compression_level_low": "কম",
616 - "image_compression_level_medium": "মাঝারি",
617 - "image_compression_level_high": "উচ্চ",
618 - "sort_models_tooltip": "মডেল সাজান",
619 - "sort_by_favorites": "প্রিয়গুলো আগে",
620 - "sort_by_name": "নাম (A-Z)",
621 - "sort_by_size_smallest": "আকার (সবচেয়ে ছোট আগে)",
622 - "sort_by_size_largest": "আকার (সবচেয়ে বড় আগে)",
623 - "sort_by_context_length": "প্রসঙ্গের দৈর্ঘ্য",
624 - "bulk_ai_rename_progress": "নাম পরিবর্তন করা হচ্ছে {done}/{total}...",
625 - "selected_count": "{count}টি নির্বাচিত",
626 - "ai_rename_tooltip": "এআই দিয়ে নির্বাচিতগুলোর নাম পরিবর্তন করুন",
627 - "new_chat_in_folder_tooltip": "এই ফোল্ডারে নতুন চ্যাট",
628 - "total_tokens_count": "{count}টি টোকেন",
629 - "smart_replies_use_persona": "স্মার্ট উত্তরে ব্যক্তিত্ব ব্যবহার করুন",
630 - "smart_replies_use_persona_desc": "প্রস্তাবিত উত্তরগুলি সাধারণ সহকারীর পরিবর্তে সক্রিয় ব্যক্তিত্বের সুরের সাথে মেলে",
631 - "keep_persona_on_new_chat": "নতুন চ্যাটে ব্যক্তিত্ব ধরে রাখুন",
632 - "keep_persona_on_new_chat_desc": "নতুন চ্যাট শুরু করার পরে নির্বাচিত ব্যক্তিত্ব পরিষ্কার করবেন না",
633 - "role_swap_button_enabled": "ভূমিকা-বদল বোতাম দেখান",
634 - "role_swap_button_enabled_desc": "কোনো প্রতিক্রিয়া তৈরি না করে, ব্যবহারকারীর পরিবর্তে সহকারী ভূমিকা হিসাবে আপনার বার্তা পাঠাতে চ্যাট ইনপুটে একটি বোতাম দেখান",
635 - "send_as_user_tooltip": "ব্যবহারকারী হিসেবে পাঠান",
636 - "send_as_assistant_tooltip": "সহকারী হিসেবে পাঠান (কোনো প্রতিক্রিয়া নেই)",
637 - "insert_without_generating_tooltip": "তৈরি না করে ঢোকান",
638 - "token_usage_title": "টোকেন ব্যবহার",
639 - "total_tokens_label": "ব্যবহৃত টোকেন",
640 - "usage_percent_label": "ব্যবহৃত প্রসঙ্গ",
641 - "export_choice_title": "রপ্তানি (Export) করুন",
642 - "export_choice_body": "আপনি এটি কীভাবে রপ্তানি করতে চান?",
643 - "copy_to_clipboard": "ক্লিপবোর্ডে কপি করুন",
644 - "bulk_export_conversations_success": "{count}টি কথোপকথন রপ্তানি করা হয়েছে",
645 - "bulk_ai_rename_confirm_title": "এআই দিয়ে নাম পরিবর্তন করবেন?",
646 - "bulk_ai_rename_confirm_body": "এটি এআই-কে বর্তমান শিরোনামগুলি প্রতিস্থাপন করে নির্বাচিত {count}টি কথোপকথনের প্রতিটির জন্য একটি নতুন শিরোনাম তৈরি করতে বলবে। এটি কিছুটা সময় নিতে পারে এবং পূর্বাবস্থায় ফেরানো যাবে না।",
647 - "sort_by_modified_date": "শেষ পরিবর্তন",
648 - "sort_by_created_date": "তৈরির তারিখ",
649 - "sort_title": "সাজান",
650 - "ai_user_response_enabled": "এআই ব্যবহারকারী বার্তা (সেন্ড বোতাম ধরে রাখুন)",
651 - "ai_user_response_enabled_desc": "এআই দিয়ে আপনার পরবর্তী বার্তাটি লেখাতে এবং পাঠাতে ৩ সেকেন্ডের জন্য সেন্ড বোতামটি চেপে ধরে রাখুন",
652 - "ai_user_response_tooltip": "এআই দিয়ে ব্যবহারকারী বার্তা তৈরি করুন",
653 - "show_system_messages_desc": "যখন কোনো ব্যক্তিত্ব নির্বাচিত না থাকে, তখন প্রতিটি অনুরোধের সাথে একটি ডিফল্ট সহকারী সিস্টেম প্রম্পট পাঠান",
654 - "show_system_messages_in_chat": "চ্যাটে সিস্টেম বার্তা দেখান",
655 - "show_system_messages_in_chat_desc": "কথোপকথনে দৃশ্যমান বুদবুদ হিসাবে সিস্টেম বার্তাগুলি (যেমন আমদানিকৃত ব্যাকআপ থেকে) প্রদর্শন করুন",
656 - "manage_personas": "ব্যক্তিত্ব পরিচালনা করুন",
657 - "personas_combine_hint": "নির্বাচিত ব্যক্তিত্বগুলো একত্রিত করা হবে",
658 - "unload_all_models": "সব মডেল আনলোড করুন",
659 - "loaded_models_count": "{count}টি মডেল লোড করা হয়েছে",
660 - "all_models_unloaded": "সব মডেল আনলোড করা হয়েছে",
661 - "branch_chat": "ব্রাঞ্চ চ্যাট",
662 - "branch_chat_desc": "এই বার্তা থেকে শুরু করে একটি নতুন চ্যাট তৈরি করুন",
663 - "edit_assistant_message_desc": "সহকারী বার্তার বিষয়বস্তু সম্পাদনা করুন",
664 - "switch_to_model": "{model} মডেলে পরিবর্তন করুন",
664 "model_favorite_toggle": "প্রিয় টগল করুন",
665 "model_note_label": "নোট",
666 "model_note_hint": "এই মডেলটির জন্য একটি ব্যক্তিগত নোট যোগ করুন...",
@@ -758,8 +757,15 @@
757 "stream_generation_time": "তৈরি করার সময়",
758 "attach_image": "ছবি সংযুক্ত করুন",
759 "attach_text_document": "টেক্সট ডকুমেন্ট সংযুক্ত করুন",
760 + "attach_shortcut_images": "ফটো",
761 + "attach_shortcut_documents": "ফাইল",
762 + "attach_shortcut_saved": "সংরক্ষিত",
763 "add_attachment": "সংযুক্তি যোগ করুন",
764 + "add_to_chat": "চ্যাটে যোগ করুন",
765 + "choose_what_to_attach": "আপনি কি যোগ করতে চান?",
766 + "choose_attachment_subtitle": "আপনার বার্তায় সংযুক্ত করার জন্য একটি উৎস বেছে নিন",
767 "photo_permission_denied": "ছবির অনুমতি অস্বীকার করা হয়েছে",
768 + "select_model_prompt": "মডেল নির্বাচন করুন",
769 "characters_label": "অক্ষর (Characters)",
770 "exit_temporary_chat_title": "অস্থায়ী চ্যাট থেকে প্রস্থান করবেন?",
771 "exit_temporary_chat_body": "এটি বর্তমান কথোপকথনটি স্থায়ীভাবে মুছে ফেলবে। আপনি কি চালিয়ে যেতে চান?",
@@ -860,5 +866,9 @@
866 "delete_folder": "ফোল্ডার মুছুন",
867 "delete_folder_title": "ফোল্ডার মুছে ফেলবেন?",
868 "delete_folder_body": "আপনি কি নিশ্চিত যে \"{name}\" মুছে ফেলতে চান? ভিতরের কথোপকথন বা সংরক্ষিত বার্তা \"অবিভাজিত\"-এ ফিরে যাবে। এটি পূর্বাবস্থায় ফেরানো যাবে না।",
863 - "folder_name_required": "অনুগ্রহ করে একটি ফোল্ডারের নাম লিখুন"
869 + "folder_name_required": "অনুগ্রহ করে একটি ফোল্ডারের নাম লিখুন",
870 + "model_required_toast": "আপনাকে প্রথমে একটি মডেল নির্বাচন করতে হবে",
871 + "server_type_lm_studio_sub": "লোকাল এপিআই",
872 + "server_type_ollama_sub": "সিএলআই ইঞ্জিন",
873 + "server_type_on_device_sub": "কোনো সার্ভারের প্রয়োজন নেই"
874 }
lib/l10n/app_en.arb
+9 -2
@@ -2881,10 +2881,17 @@
2881 "stream_input_tokens": "Input tokens",
2882 "stream_output_tokens": "Output tokens",
2883 "stream_generation_time": "Generation time",
2884 - "attach_image": "Image",
2885 - "attach_text_document": "Text document",
2884 + "attach_image": "Photos",
2885 + "attach_text_document": "Documents",
2886 + "attach_shortcut_images": "Photos",
2887 + "attach_shortcut_documents": "Files",
2888 + "attach_shortcut_saved": "Saved",
2889 "add_attachment": "Add attachment",
2890 + "add_to_chat": "Add to chat",
2891 + "choose_what_to_attach": "What would you like to add?",
2892 + "choose_attachment_subtitle": "Pick a source to attach to your message",
2893 "photo_permission_denied": "Photo access is required to attach images",
2894 + "select_model_prompt": "Select model",
2895 "characters_label": "Characters",
2896 "exit_temporary_chat_title": "Exit temporary chat?",
2897 "exit_temporary_chat_body": "This will discard the current temporary chat and return to a new chat.",
lib/l10n/app_es.arb
+526 -516
@@ -1,513 +1,486 @@
1 {
2 "@@locale": "es",
3 - "active": "Activo",
4 - "active_integrations": "Integraciones activas",
5 - "add_ephemeral_mcp": "Añadir servidor MCP efímero",
6 - "add_server": "Añadir servidor",
7 - "add_server_first": "Añada un servidor primero para ver los modelos disponibles.",
8 - "add_server_title": "Añadir servidor",
9 - "advanced_settings": "Ajustes avanzados",
10 - "all": "Todo",
11 - "allow_notifications": "Permitir notificaciones",
12 - "always_available": "Siempre disponible",
13 - "api_key_format": "Las claves de API de OpenRouter comienzan con sk-",
14 - "api_key_hint_generic": "Para servidores autenticados",
15 - "api_key_hint_openrouter": "sk-...",
16 - "api_key_optional": "Clave API (Opcional)",
17 - "api_key_required": "Clave API *",
18 - "api_key_required_openrouter": "Clave API requerida para OpenRouter",
3 "app_name": "LocalMind",
4 "app_tagline": "Su IA. Su dispositivo. Sus normas.",
5 "app_version": "1.0.0",
22 - "attach_images_tooltip": "Adjuntar imágenes",
23 - "auto_execute_tools": "Ejecutar herramientas automáticamente",
24 - "auto_generate_titles": "Autogenerar títulos",
25 - "available": "Disponible",
26 - "beta_label": "Beta",
27 - "experimental_label": "Experimental",
28 - "available_models": "Modelos disponibles",
29 - "available_ram": "RAM disponible",
30 - "backend_cpu_desc": "Funciona en todos los dispositivos. Más compatible.",
31 - "backend_gpu_desc": "Aceleración OpenCL. Más rápido en dispositivos compatibles.",
32 - "backend_ios_notice": "Solo el motor de CPU está disponible en iOS.",
33 - "backend_npu_desc": "NPU del fabricante (Qualcomm/MediaTek). Inferencia más rápida.",
34 - "builtin_badge": "Integrado",
35 - "calculating": "Calculando...",
6 "cancel": "Cancelar",
37 - "cannot_undo": "Esta acción no se puede deshacer.",
38 - "category_label": "Categoría",
39 - "change_persona": "Cambiar personaje",
40 - "character_count": "{length} caracteres",
41 - "character_count_max": "{currentLen}/4000",
42 - "chat_history_title": "Historial de chat",
43 - "chat_input_hint": "Pregunte cualquier cosa",
44 - "chat_parameters_tooltip": "Parámetros del chat",
45 - "chat_settings_title": "Ajustes de chat",
46 - "chat_title": "LocalMind",
47 - "choose_theme": "Elegir tema",
48 - "choose_theme_desc": "Personalice la apariencia de la aplicación. Siempre puede cambiar esto más tarde en los ajustes.",
49 - "clear": "Limpiar",
50 - "clear_conversation": "Limpiar conversación",
51 - "clear_conversation_body": "Esto eliminará todos los mensajes de esta conversación.",
52 - "clear_conversation_title": "¿Limpiar conversación?",
53 - "clone_edit": "Clonar y editar",
54 - "close": "Cerrar",
55 - "code_theme_dark": "Tema de código (Oscuro)",
56 - "code_theme_desc": "Elija el tema de resaltado de sintaxis para los bloques de código.",
57 - "code_theme_light": "Tema de código (Claro)",
58 - "configure": "Configurar",
59 - "configuring_server": "Configurando servidor...",
7 "confirm": "Confirmar",
61 - "connection_error": "Error de conexión. Compruebe su servidor.",
62 - "connection_failed": "Conexión fallida. Compruebe sus ajustes.",
63 - "connection_successful": "¡Conexión exitosa!",
64 - "context_chip": "{ctx} ctx",
65 - "context_length": "Longitud del contexto",
66 - "context_length_desc": "Ventana de historial",
67 - "continue_action": "Continuar",
68 - "conversation_date": "{month}/{day}/{year}",
69 - "conversation_days_ago": "hace {days}d",
70 - "conversation_hours_ago": "hace {hours}h",
71 - "conversation_id": "ID de conversación",
72 - "conversation_just_now": "Hace un momento",
73 - "conversation_minutes_ago": "hace {minutes}m",
74 - "conversation_yesterday": "Ayer",
75 - "copied": "¡Copiado!",
76 - "copied_markdown": "Copiado como Markdown",
77 - "copied_to_clipboard": "Copiado al portapapeles",
78 - "copy": "Copiar",
79 - "copy_info": "Copiar información",
80 - "copy_markdown": "Copiar como Markdown",
81 - "create_persona": "Crear personaje",
82 - "create_persona_button": "Crear",
83 - "created_at": "Creado el",
84 - "debug_dialog_desc": "Información de diagnóstico para ayudar a identificar problemas de sincronización.",
85 - "default_badge": "Predeterminado",
86 - "default_icon": "Icono predeterminado",
8 "delete": "Eliminar",
88 - "delete_all_conversations": "Eliminar todas las conversaciones",
89 - "delete_conversation": "¿Eliminar conversación?",
90 - "delete_conversation_body": "¿Está seguro de que desea eliminar \"{title}\"? Esto no se puede deshacer.",
91 - "delete_conversation_title": "¿Eliminar conversación?",
92 - "delete_message_title": "¿Eliminar mensaje?",
93 - "delete_model_body": "¿Está seguro de que desea eliminar {name}?",
94 - "delete_model_body_with_size": "¿Está seguro de que desea eliminar {name}? Esto liberará aproximadamente {size} de espacio.\n\nPuede volver a descargar este modelo más tarde si es necesario.",
95 - "delete_model_title": "Eliminar modelo",
96 - "delete_persona_body": "Esto no se puede deshacer.",
97 - "delete_persona_title": "¿Eliminar \"{name}\"?",
98 - "delete_server_body": "¿Está seguro de que desea eliminar \"{name}\"? Esto no se puede deshacer.",
99 - "delete_server_title": "Eliminar servidor",
100 - "delete_voice_body": "¿Está seguro de que desea eliminar {name}? Esto liberará aproximadamente {size} de espacio.\n\nPuede volver a descargar esta voz más tarde si es necesario.",
101 - "delete_voice_title": "Eliminar voz",
102 - "description_hint": "Lo que hace este personaje...",
103 - "description_optional": "Descripción (opcional)",
104 - "device_memory": "Memoria del dispositivo",
105 - "disconnected": "Desconectado del servidor.",
9 + "save": "Guardar",
10 + "retry": "Reintentar",
11 + "close": "Cerrar",
12 "done": "Listo",
13 + "continue_action": "Continuar",
14 + "skip": "Omitir",
15 + "install": "Instalar",
16 "download": "Descargar",
108 - "download_complete_body": "{modelName} se ha descargado correctamente.",
109 - "download_complete_notification": "¡Descarga completa!",
110 - "download_failed": "Descarga fallida",
111 - "download_failed_body": "No se pudo descargar {modelName}.",
112 - "download_failed_notification": "Descarga fallida: {error}",
113 - "download_model_desc": "Elija un modelo para descargar.\nSe ejecutará localmente en su dispositivo.",
114 - "download_model_title": "Descargar un modelo",
115 - "download_notification_title": "Descargando {modelName}...",
116 - "download_progress": "{percent}% • {speed}",
117 - "downloaded": "Descargado",
118 - "downloading_status": "Descargando...",
17 + "resume": "Reanudar",
18 + "pause": "Pausar",
19 + "stop": "Detener",
20 "edit": "Editar",
120 - "edit_message": "Editar mensaje",
121 - "edit_message_desc": "Al guardar se eliminará la respuesta del asistente que aparece a continuación y se volverá a generar.",
122 - "edit_persona": "Editar personaje",
123 - "edit_server": "Editar servidor",
124 - "emoji_label": "Emoji",
125 - "enable": "Habilitar",
126 - "enable_mcp": "Habilitar MCP",
127 - "enable_notifications": "Habilitar notificaciones",
128 - "enable_notifications_desc": "Reciba notificaciones cuando los modelos terminen de descargarse.",
129 - "engine_name_kitten": "Kitten TTS",
130 - "engine_name_sherpa": "Sherpa ONNX VITS",
131 - "engine_name_system": "TTS del sistema",
132 - "engine_spec": "{sizeMb} MB · {ramMb} MB de RAM · {voiceCount} voces",
133 - "engine_tagline_kitten": "TTS neural de alta velocidad",
134 - "engine_tagline_sherpa": "Voces Piper sin conexión",
135 - "engine_tagline_system": "Motor integrado en el dispositivo",
136 - "enter_new_title": "Introduzca un nuevo título",
21 + "preview": "Vista previa",
22 + "unload": "Liberar de memoria",
23 + "load": "Cargar",
24 + "rename": "Renombrar",
25 + "pin": "Fijar",
26 + "unpin": "Desfijar",
27 + "share": "Compartir",
28 + "copy": "Copiar",
29 + "copied": "¡Copiado!",
30 + "copied_to_clipboard": "Copiado al portapapeles",
31 + "select": "Seleccionar",
32 + "active": "Activo",
33 + "all": "Todo",
34 + "none": "Ninguno",
35 + "none_selected": "Ninguno seleccionado",
36 + "online": "En línea",
37 + "connected": "Conectado",
38 + "checking": "Comprobando",
39 + "offline": "Sin conexión",
40 "error": "Error",
138 - "error_with_message": "Error: {error}",
139 - "eta_label": "Tiempo restante: {eta}",
140 - "expected_messages": "Mensajes esperados",
141 - "export_header": "*Exportado de LocalMind — {date}*",
142 - "export_label_assistant": "ASISTENTE",
143 - "export_label_system": "SISTEMA",
144 - "export_label_tool": "HERRAMIENTA",
145 - "export_label_user": "USUARIO",
146 - "export_role_assistant": "## 🤖 Asistente",
147 - "export_role_system": "## ⚙️ Sistema",
148 - "export_role_tool": "## 🔧 Herramienta",
149 - "export_role_user": "## 👤 Usuario",
150 - "export_text_assistant": "[ASISTENTE]",
151 - "export_text_system": "[SISTEMA]",
152 - "export_text_tool": "[HERRAMIENTA]",
153 - "export_text_user": "[USUARIO]",
154 - "failed_load_models": "No se pudieron cargar los modelos",
41 + "unknown_error": "Error desconocido",
42 + "not_now": "Ahora no",
43 + "enable": "Habilitar",
44 + "proceed_anyway": "Proceder de todos modos",
45 + "test_connection": "Probar conexión",
46 + "testing": "Probando...",
47 + "connection_successful": "¡Conexión exitosa!",
48 + "connection_failed": "Conexión fallida. Compruebe sus ajustes.",
49 + "save_continue": "Guardar y continuar",
50 + "save_changes": "Guardar cambios",
51 "finish_setup": "Finalizar configuración",
156 - "font_preview": "El rápido zorro marrón salta sobre el perro perezoso.",
157 - "font_size": "Tamaño de fuente",
158 - "font_size_desc": "Ajustar el tamaño del texto en el chat.",
159 - "haptic_feedback": "Comentarios hápticos",
160 - "history_missing_desc": "O bien los mensajes de este chat fueron eliminados o el registro de historial está dañado.",
161 - "history_missing_title": "Historial faltante",
162 - "host_label": "Host / Dirección IP",
163 - "host_required": "Host requerido",
164 - "host_valid": "Introduzca un nombre de host o dirección IP válida",
165 - "inference_backend": "Motor de inferencia",
52 + "start_new_chat": "Comenzar nuevo chat",
53 + "cannot_undo": "Esta acción no se puede deshacer.",
54 + "ram_warning": "Advertencia de RAM",
55 + "recommended": "RECOMENDADO",
56 + "may_be_large": "Puede ser demasiado grande para este dispositivo",
57 + "calculating": "Calculando...",
58 + "download_failed": "Descarga fallida",
59 + "downloaded": "Descargado",
60 + "not_downloaded": "No descargado",
61 + "installed": "Instalado",
62 + "not_installed": "No instalado",
63 + "loading": "Cargando...",
64 + "thinking": "Pensando",
65 + "processing": "Procesando...",
66 "initializing": "Inicializando...",
67 + "ready": "Listo",
68 + "preparing_app": "Preparando aplicación...",
69 "initializing_services": "Inicializando servicios...",
168 - "install": "Instalar",
169 - "installed": "Instalado",
70 + "configuring_server": "Configurando servidor...",
71 + "startup_failed": "Fallo en el inicio",
72 + "something_went_wrong": "Algo salió mal",
73 + "delete_model_title": "Eliminar modelo",
74 + "delete_model_body": "¿Está seguro de que desea eliminar {name}?",
75 + "delete_model_body_with_size": "¿Está seguro de que desea eliminar {name}? Esto liberará aproximadamente {size} de espacio.\n\nPuede volver a descargar este modelo más tarde si es necesario.",
76 + "delete_voice_title": "Eliminar voz",
77 + "delete_voice_body": "¿Está seguro de que desea eliminar {name}? Esto liberará aproximadamente {size} de espacio.\n\nPuede volver a descargar esta voz más tarde si es necesario.",
78 + "delete_server_title": "Eliminar servidor",
79 + "delete_server_body": "¿Está seguro de que desea eliminar \"{name}\"? Esto no se puede deshacer.",
80 + "delete_conversation_title": "¿Eliminar conversación?",
81 + "delete_conversation_body": "¿Está seguro de que desea eliminar \"{title}\"? Esto no se puede deshacer.",
82 + "delete_message_title": "¿Eliminar mensaje?",
83 + "delete_persona_title": "¿Eliminar \"{name}\"?",
84 + "delete_persona_body": "Esto no se puede deshacer.",
85 + "delete_builtin_persona_body": "Este es un personaje incorporado. Puedes restaurarlo más tarde desde Configuración.",
86 + "restore_builtin_personas": "Restaurar personajes predeterminados",
87 + "restore_builtin_personas_desc": "Vuelve a añadir cualquier personaje incorporado que hayas eliminado",
88 + "restore_builtin_personas_success": "Personajes predeterminados restaurados",
89 + "clear_personas": "Limpiar personajes",
90 + "enable_image_compression": "Comprimir imágenes antes de enviar",
91 + "enable_image_compression_desc": "Redimensionar y comprimir imágenes adjuntas para que las cargas se mantengan dentro de los límites del servidor",
92 + "image_compression_level": "Agresividad de la compresión",
93 + "image_compression_level_desc": "Una mayor agresividad produce cargas más pequeñas a menor calidad",
94 + "image_compression_level_low": "Baja",
95 + "image_compression_level_medium": "Media",
96 + "image_compression_level_high": "Alta",
97 + "sort_models_tooltip": "Ordenar modelos",
98 + "sort_by_favorites": "Favoritos primero",
99 + "sort_by_name": "Nombre (A-Z)",
100 + "sort_by_size_smallest": "Tamaño (más pequeño primero)",
101 + "sort_by_size_largest": "Tamaño (más grande primero)",
102 + "sort_by_context_length": "Longitud de contexto",
103 + "bulk_ai_rename_progress": "Renombrando {done}/{total}...",
104 + "selected_count": "{count} seleccionados",
105 + "ai_rename_tooltip": "Renombrar seleccionados con IA",
106 + "new_chat_in_folder_tooltip": "Nuevo chat en esta carpeta",
107 + "total_tokens_count": "{count} tokens",
108 + "smart_replies_use_persona": "Usar personaje en respuestas inteligentes",
109 + "smart_replies_use_persona_desc": "Las respuestas sugeridas coinciden con el tono del personaje activo en lugar de un asistente genérico",
110 + "keep_persona_on_new_chat": "Mantener personaje al iniciar chat nuevo",
111 + "keep_persona_on_new_chat_desc": "No limpiar la selección de personaje al comenzar un nuevo chat",
112 + "role_swap_button_enabled": "Mostrar botón de cambio de rol",
113 + "role_swap_button_enabled_desc": "Mostrar un botón en la entrada de chat para enviar tu mensaje con el rol de asistente en lugar de usuario, sin generar respuesta",
114 + "send_as_user_tooltip": "Enviar como usuario",
115 + "send_as_assistant_tooltip": "Enviar como asistente (sin respuesta)",
116 + "insert_without_generating_tooltip": "Insertar sin generar",
117 + "token_usage_title": "Uso de Tokens",
118 + "total_tokens_label": "Tokens usados",
119 + "usage_percent_label": "Contexto usado",
120 + "export_choice_title": "Exportar",
121 + "export_choice_body": "¿Cómo te gustaría exportar esto?",
122 + "copy_to_clipboard": "Copiar al portapapeles",
123 + "bulk_export_conversations_success": "Exportado {count} conversaciones",
124 + "bulk_ai_rename_confirm_title": "¿Renombrar con IA?",
125 + "bulk_ai_rename_confirm_body": "Esto le pedirá a la IA que genere un nuevo título para cada una de las {count} conversaciones seleccionadas, reemplazando sus títulos actuales. Esto puede tardar un poco y no se puede deshacer.",
126 + "sort_by_modified_date": "Última modificación",
127 + "sort_by_created_date": "Fecha de creación",
128 + "sort_title": "Ordenar",
129 + "clear_conversation_title": "¿Limpiar conversación?",
130 + "clear_conversation_body": "Esto eliminará todos los mensajes de esta conversación.",
131 + "clear": "Limpiar",
132 "label_completed": "{label} completado",
171 - "language_system_default": "Predeterminado del sistema",
172 - "last_error": "Último error:",
173 - "load": "Cargar",
174 - "loaded_status": "Cargado",
175 - "loading": "Cargando...",
133 + "error_with_message": "Error: {error}",
134 + "preview_failed": "Vista previa fallida: {error}",
135 "loading_model": "Cargando {modelId}...",
177 - "loading_model_error": "Error: {error}",
178 - "manage_on_device_models": "Gestionar modelos locales",
179 - "enable_smart_reply": "Respuestas inteligentes locales",
180 - "manage_servers": "Gestionar servidores",
181 - "manage_tts_models": "Gestionar modelos TTS",
182 - "max_tokens": "Máximo de tokens",
183 - "max_tokens_desc": "Límite de respuesta",
184 - "may_be_large": "Puede ser demasiado grande para este dispositivo",
185 - "mcp_disabled_warning": "MCP está deshabilitado globalmente. Habilítelo en Ajustes para usar estas funciones.",
186 - "mcp_enable_chat": "Habilitar MCP para este chat",
187 - "mcp_label_placeholder": "Etiqueta",
188 - "mcp_tab": "MCP",
189 - "mcp_url_placeholder": "URL (https://...)",
190 - "memory_critical": "Crítico",
191 - "memory_healthy": "Saludable",
192 - "memory_low": "Bajo",
193 - "message_options": "Opciones de mensaje",
194 - "model_deepseek": "DeepSeek R1 Distill Qwen 1.5B",
195 - "model_deepseek_desc": "Modelo de razonamiento y cadena de pensamiento. El mejor para tareas lógicas.",
196 - "model_gemma": "Gemma 4 E2B Instruct",
197 - "model_gemma_desc": "Modelo insignia de Google. Máxima calidad, requiere más RAM.",
198 - "model_license_apache": "Apache-2.0",
199 - "model_license_mit": "MIT",
200 - "model_load_failed": "No se pudo cargar el modelo: {error}",
136 "model_loaded": "Modelo cargado: {modelId} ({backend})",
202 - "model_qwen_25": "Qwen 2.5 1.5B Instruct",
203 - "model_qwen_25_desc": "Calidad y tamaño equilibrados. Bueno para conversación general.",
204 - "model_qwen_3": "Qwen 3 0.6B",
205 - "model_qwen_3_desc": "Modelo de chat de propósito general más pequeño. Respuestas rápidas, bajo uso de memoria.",
206 - "model_unload_failed": "No se pudo descargar el modelo de la memoria: {error}",
207 - "model_unloaded_ollama": "{name} se liberará de la memoria una vez que pase el tiempo de espera activo",
208 - "model_unloaded_success": "{name} liberado de memoria correctamente",
209 - "more": "Más",
210 - "my_persona_hint": "Mi personaje",
211 - "my_server_hint": "Mi servidor",
212 - "name_label": "Nombre",
213 - "name_length_validation": "El nombre debe tener 50 caracteres o menos",
214 - "name_max_50": "Máx. 50 caracteres",
215 - "name_required": "Nombre requerido",
137 + "no_model_loaded": "Ningún modelo cargado. Toque \"Gestionar modelos locales\" para descargar y cargar un modelo.",
138 + "loading_model_error": "Error: {error}",
139 + "delete_conversation": "¿Eliminar conversación?",
140 "nav_history": "Historial",
141 + "nav_servers": "Servidores",
142 "nav_local_models": "Modelos locales",
218 - "nav_new_chat": "Nuevo chat",
143 + "nav_tts": "Texto a voz",
144 "nav_personas": "Personajes",
220 - "nav_servers": "Servidores",
145 "nav_settings": "Ajustes",
222 - "nav_tts": "Texto a voz",
223 - "new_chat_mcp_default": "Nuevo chat MCP predeterminado",
224 - "no_conversations_yet": "Aún sin conversaciones",
225 - "no_model_loaded": "Ningún modelo cargado. Toque \"Gestionar modelos locales\" para descargar y cargar un modelo.",
226 - "no_models_available": "No hay modelos disponibles",
227 - "no_models_match": "Ningún modelo coincide con \"{searchQuery}\"",
228 - "no_personas_desc": "Cree su primer personaje para personalizar el comportamiento de la IA.",
229 - "no_personas_found": "No se encontraron personajes",
230 - "no_prompt_placeholder": "Aún sin indicaciones...",
231 - "no_results_found": "No se encontraron resultados",
232 - "no_server_connected": "Ningún servidor conectado",
146 + "nav_new_chat": "Nuevo chat",
147 + "search_hint": "Buscar conversaciones...",
148 "no_server_selected": "Ningún servidor seleccionado",
234 - "no_servers_desc": "Añada su primer servidor para comenzar a chatear con modelos de IA.",
235 - "no_servers_yet": "Aún sin servidores",
236 - "none": "Ninguno",
237 - "none_selected": "Ninguno seleccionado",
238 - "not_downloaded": "No descargado",
239 - "not_installed": "No instalado",
240 - "not_now": "Ahora no",
241 - "notification_benefit_background": "Estado de las tareas en segundo plano",
242 - "notification_benefit_completions": "Completados de generación",
243 - "notification_benefit_downloads": "Progreso de descarga del modelo",
244 - "offline": "Sin conexión",
245 - "older_section": "MÁS ANTIGUOS",
246 - "on_device_android_only": "La inferencia local está disponible actualmente solo en Android.",
247 - "on_device_models_title": "Modelos locales",
248 - "onboarding_choose_language": "Elija el idioma",
249 - "onboarding_choose_language_desc": "Seleccione su idioma preferido. Puede cambiar esto en cualquier momento en la configuración.",
250 - "onboarding_connect_desc": "Conéctese a LM Studio, Ollama o\nOpenRouter para comenzar su experiencia\nprivada de IA.",
251 - "onboarding_connect_server": "Conecte su\nservidor",
252 - "onboarding_localmind": "LOCALMIND",
253 - "onboarding_welcome": "Bienvenido a LocalMind",
254 - "online": "En línea",
149 + "switch_server": "Cambiar de servidor",
150 + "switch_server_subtitle": "Elija un servidor al que conectarse",
151 + "manage_servers": "Gestionar servidores",
152 "open_source": "Código abierto",
153 "open_source_desc": "LocalMind es de código abierto. Siga nuestro progreso o contribuya en GitHub.",
154 + "star_on_github": "Dar estrella en GitHub",
155 "add_more": "Añadir más",
156 "on_github": "en GitHub",
157 "could_not_open_github": "No se pudo abrir GitHub.",
260 - "openai_compatible_api": "API compatible con OpenAI",
261 - "https_requires_ssl": "HTTPS requiere SSL",
262 - "most_local_setups_use_http": "La mayoría de las configuraciones locales usan http://",
263 - "options_tooltip": "Opciones",
158 + "settings_title": "Ajustes",
159 + "settings_appearance": "Apariencia",
160 + "settings_language": "Idioma",
161 + "language_system_default": "Predeterminado del sistema",
162 + "settings_tts": "Texto a voz",
163 + "settings_behavior": "Comportamiento",
164 + "settings_on_device": "Inferencia local",
165 + "settings_default_server": "Servidor predeterminado",
166 + "settings_default_persona": "Personaje predeterminado",
167 + "settings_privacy": "Privacidad",
168 + "settings_data_management": "Gestión de datos",
169 + "settings_about": "Acerca de",
170 + "theme": "Tema",
171 + "theme_system": "Sistema",
172 + "theme_light": "Claro",
173 + "theme_dark": "Oscuro",
174 + "theme_claude": "Claude",
175 + "font_size": "Tamaño de fuente",
176 + "font_size_desc": "Ajustar el tamaño del texto en el chat.",
177 + "font_preview": "El rápido zorro marrón salta sobre el perro perezoso.",
178 + "code_theme_dark": "Tema de código (Oscuro)",
179 + "code_theme_light": "Tema de código (Claro)",
180 + "code_theme_desc": "Elija el tema de resaltado de sintaxis para los bloques de código.",
181 + "tts_engine": "Motor TTS",
182 + "tts_engine_system": "TTS del sistema",
183 + "tts_engine_kitten": "Kitten TTS",
184 + "voice": "Voz",
185 + "voice_female": "Femenino",
186 + "voice_male": "Masculino",
187 + "voice_other": "Otro",
188 + "tts_speed": "Velocidad de TTS",
189 + "tts_speed_desc": "Ajustar la velocidad de reproducción.",
190 + "manage_tts_models": "Gestionar modelos TTS",
191 + "manage_on_device_models": "Gestionar modelos locales",
192 + "enable_smart_reply": "Respuestas inteligentes locales",
193 + "ai_user_response_enabled": "Mensaje de usuario de IA (mantener presionado)",
194 + "ai_user_response_enabled_desc": "Mantén presionado el botón de enviar durante 3 segundos para que la IA escriba y envíe tu próximo mensaje",
195 + "ai_user_response_tooltip": "Generar mensaje de usuario con IA",
196 + "streaming_responses": "Respuestas en tiempo real (streaming)",
197 + "auto_generate_titles": "Autogenerar títulos",
198 + "send_on_enter": "Enviar al presionar Enter",
199 + "show_system_messages": "Mostrar mensajes del sistema",
200 + "show_system_messages_desc": "Cuando no se seleccione ningún personaje, enviar un prompt de sistema de asistente predeterminado con cada solicitud",
201 + "show_system_messages_in_chat": "Mostrar mensajes del sistema en el chat",
202 + "show_system_messages_in_chat_desc": "Mostrar mensajes de sistema (por ejemplo, de una copia de seguridad importada) como burbujas visibles en la conversación",
203 + "haptic_feedback": "Comentarios hápticos",
204 + "enable_mcp": "Habilitar MCP",
205 + "new_chat_mcp_default": "Nuevo chat MCP predeterminado",
206 + "show_data_indicator": "Mostrar indicador de datos",
207 + "privacy_info": "\"LocalMind nunca ve sus datos\"",
208 + "delete_all_conversations": "Eliminar todas las conversaciones",
209 + "reset_settings_defaults": "Restablecer ajustes a los predeterminados",
210 + "chat_title": "LocalMind",
211 + "chat_parameters_tooltip": "Parámetros del chat",
212 + "change_persona": "Cambiar personaje",
213 + "set_persona": "Establecer personaje",
214 + "remove_persona": "Eliminar personaje",
215 + "clear_conversation": "Limpiar conversación",
216 + "connection_error": "Error de conexión. Compruebe su servidor.",
217 + "disconnected": "Desconectado del servidor.",
218 + "configure": "Configurar",
219 + "select_model": "Seleccionar modelo",
220 + "select_persona": "Seleccionar personaje",
221 + "manage_personas": "Gestionar personajes",
222 + "personas_combine_hint": "Los personajes seleccionados se combinarán",
223 + "start_conversation": "Comenzar una conversación",
224 + "recent_chats": "Chats recientes",
225 + "see_all": "Ver todo",
226 + "quick_write": "Ayúdame a escribir una función",
227 + "quick_explain": "Explica este código",
228 + "quick_debug": "Depura esto por mí",
229 + "quick_async": "¿Cómo uso async/await?",
230 + "history_missing_title": "Historial faltante",
231 + "history_missing_desc": "O bien los mensajes de este chat fueron eliminados o el registro de historial está dañado.",
232 + "technical_details": "Detalles técnicos",
233 + "last_error": "Último error:",
234 + "copy_info": "Copiar información",
235 + "conversation_id": "ID de conversación",
236 + "created_at": "Creado el",
237 + "expected_messages": "Mensajes esperados",
238 + "debug_dialog_desc": "Información de diagnóstico para ayudar a identificar problemas de sincronización.",
239 + "chat_input_hint": "Pregunte cualquier cosa",
240 + "send_message_tooltip": "Enviar mensaje",
241 + "stop_generation_tooltip": "Detener generación",
242 + "attach_images_tooltip": "Adjuntar imágenes",
243 + "start_listening_tooltip": "Iniciar escucha",
244 + "stop_listening_tooltip": "Detener escucha",
245 + "tool_label": "Herramienta: {toolCallId}",
246 + "tool_unknown": "Herramienta: Desconocida",
247 + "message_options": "Opciones de mensaje",
248 + "copy_markdown": "Copiar como Markdown",
249 + "copied_markdown": "Copiado como Markdown",
250 + "read_aloud": "Leer en voz alta",
251 + "stop_reading": "Detener lectura",
252 + "more": "Más",
253 + "character_count": "{length} caracteres",
254 + "edit_message": "Editar mensaje",
255 + "edit_message_desc": "Al guardar se eliminará la respuesta del asistente que aparece a continuación y se volverá a generar.",
256 + "save_regenerate": "Guardar y regenerar",
257 + "chat_settings_title": "Ajustes de chat",
258 + "reset_defaults": "Restablecer valores predeterminados",
259 "parameters_tab": "Parámetros",
265 - "pause": "Pausar",
266 - "paused_progress": "Pausado - {percent}%",
267 - "persona_builtin_section": "INTEGRADO",
268 - "persona_category_coding": "Programación",
269 - "persona_category_creative": "Creativo",
270 - "persona_category_education": "Educación",
271 - "persona_category_general": "General",
272 - "persona_created": "Personaje creado",
273 - "persona_my_section": "MIS PERSONAJES",
274 - "persona_updated": "Personaje actualizado",
275 - "personas_title": "Personajes",
276 - "pin": "Fijar",
260 + "mcp_tab": "MCP",
261 + "temperature": "Temperatura",
262 + "temperature_desc": "Controla la aleatoriedad: Mayor = Creativo, Menor = Enfocado",
263 + "top_p": "Top P",
264 + "top_p_desc": "Umbral de muestreo de núcleo",
265 + "max_tokens": "Máximo de tokens",
266 + "max_tokens_desc": "Límite de respuesta",
267 + "context_length": "Longitud del contexto",
268 + "context_length_desc": "Ventana de historial",
269 + "mcp_disabled_warning": "MCP está deshabilitado globalmente. Habilítelo en Ajustes para usar estas funciones.",
270 + "mcp_enable_chat": "Habilitar MCP para este chat",
271 + "auto_execute_tools": "Ejecutar herramientas automáticamente",
272 + "beta_label": "Beta",
273 + "experimental_label": "Experimental",
274 + "add_ephemeral_mcp": "Añadir servidor MCP efímero",
275 + "mcp_label_placeholder": "Etiqueta",
276 + "mcp_url_placeholder": "URL (https://...)",
277 + "active_integrations": "Integraciones activas",
278 + "enable_notifications": "Habilitar notificaciones",
279 + "enable_notifications_desc": "Reciba notificaciones cuando los modelos terminen de descargarse.",
280 + "chat_history_title": "Historial de chat",
281 + "conversation_just_now": "Hace un momento",
282 + "conversation_minutes_ago": "hace {minutes}m",
283 + "conversation_hours_ago": "hace {hours}h",
284 + "conversation_yesterday": "Ayer",
285 + "conversation_days_ago": "hace {days}d",
286 + "conversation_date": "{month}/{day}/{year}",
287 + "options_tooltip": "Opciones",
288 + "no_results_found": "No se encontraron resultados",
289 + "no_conversations_yet": "Aún sin conversaciones",
290 + "try_different_search": "Pruebe con un término de búsqueda diferente",
291 + "start_new_conversation": "Comenzar una nueva conversación",
292 + "rename_conversation": "Renombrar conversación",
293 + "enter_new_title": "Introduzca un nuevo título",
294 "pinned_section": "FIJADOS",
278 - "port_invalid": "Debe ser un número",
295 + "today_section": "HOY",
296 + "yesterday_section": "AYER",
297 + "previous_7_days": "ÚLTIMOS 7 DÍAS",
298 + "previous_30_days": "ÚLTIMOS 30 DÍAS",
299 + "older_section": "MÁS ANTIGUOS",
300 + "onboarding_choose_language": "Elija el idioma",
301 + "onboarding_choose_language_desc": "Seleccione su idioma preferido. Puede cambiar esto en cualquier momento en la configuración.",
302 + "onboarding_localmind": "LOCALMIND",
303 + "onboarding_connect_server": "Conecte su\nservidor",
304 + "onboarding_connect_desc": "Conéctese a LM Studio, Ollama o\nOpenRouter para comenzar su experiencia\nprivada de IA.",
305 + "openai_compatible_api": "API compatible con OpenAI",
306 + "https_requires_ssl": "HTTPS requiere SSL",
307 + "most_local_setups_use_http": "La mayoría de las configuraciones locales usan http://",
308 + "onboarding_welcome": "Bienvenido a LocalMind",
309 + "server_type_on_device": "Local",
310 + "server_type_lm_studio": "LM Studio",
311 + "server_type_ollama": "Ollama",
312 + "server_type_openrouter": "OpenRouter",
313 + "server_type_openrouter_sub": "NUBE UNIFICADA",
314 + "ready_continue": "LISTO PARA CONTINUAR",
315 + "waiting_selection": "ESPERANDO SELECCIÓN",
316 + "setup_connection": "Configurar conexión",
317 + "setup_connection_desc": "Configure su servidor {server} para comenzar a chatear.",
318 + "server_name": "Nombre de servidor",
319 + "name_required": "Nombre requerido",
320 + "name_max_50": "Máx. 50 caracteres",
321 + "host_label": "Host / Dirección IP",
322 + "host_required": "Host requerido",
323 "port_label": "Puerto",
280 - "port_range": "Introduzca un puerto válido (1-65535)",
324 "port_required": "Puerto requerido",
282 - "preparing_app": "Preparando aplicación...",
283 - "preview": "Vista previa",
284 - "preview_failed": "Vista previa fallida: {error}",
285 - "previous_30_days": "ÚLTIMOS 30 DÍAS",
286 - "previous_7_days": "ÚLTIMOS 7 DÍAS",
287 - "privacy_info": "\"LocalMind nunca ve sus datos\"",
288 - "proceed_anyway": "Proceder de todos modos",
289 - "processing": "Procesando...",
290 - "prompt_hint": "Usted es un asistente servicial...",
291 - "prompt_max_chars": "Máx. 4000 caracteres",
292 - "prompt_required": "La instrucción del sistema es requerida",
293 - "quick_async": "¿Cómo uso async/await?",
294 - "quick_debug": "Depura esto por mí",
295 - "quick_explain": "Explica este código",
296 - "quick_write": "Ayúdame a escribir una función",
325 + "port_invalid": "Debe ser un número",
326 + "port_range": "Introduzca un puerto válido (1-65535)",
327 + "api_key_required": "Clave API *",
328 + "api_key_optional": "Clave API (Opcional)",
329 + "api_key_required_openrouter": "Clave API requerida para OpenRouter",
330 + "api_key_format": "Las claves de API de OpenRouter comienzan con sk-",
331 + "my_server_hint": "Mi servidor",
332 + "name_length_validation": "El nombre debe tener 50 caracteres o menos",
333 + "host_valid": "Introduzca un nombre de host o dirección IP válida",
334 + "api_key_hint_openrouter": "sk-...",
335 + "api_key_hint_generic": "Para servidores autenticados",
336 + "update_server": "Actualizar servidor",
337 + "save_server": "Guardar servidor",
338 + "server_updated": "Servidor actualizado",
339 + "server_added": "Servidor añadido",
340 + "download_model_title": "Descargar un modelo",
341 + "download_model_desc": "Elija un modelo para descargar.\nSe ejecutará localmente en su dispositivo.",
342 + "on_device_android_only": "La inferencia local está disponible actualmente solo en Android.",
343 + "total_ram": "RAM total",
344 + "available": "Disponible",
345 "ram_min_required": "{fileSize} GB de RAM mín.",
298 - "ram_usage": "Uso de RAM",
299 - "ram_used": "{percent}% usado",
300 - "ram_warning": "Advertencia de RAM",
346 + "download_progress": "{percent}% • {speed}",
347 + "eta_label": "Tiempo restante: {eta}",
348 + "paused_progress": "Pausado - {percent}%",
349 "ram_warning_body_download": "Este modelo requiere al menos {ram} GB de RAM, pero su dispositivo tiene {totalMemory}. Es posible que no se ejecute correctamente o que cause el cierre de la aplicación.",
350 "ram_warning_body_load": "Su dispositivo tiene {availableRAM} de RAM disponible, pero este modelo recomienda al menos {ram} GB. Cargarlo podría fallar o causar inestabilidad.",
303 - "range_0_1": "0.0-1.0",
304 - "range_0_2": "0.0-2.0",
305 - "read_aloud": "Leer en voz alta",
306 - "ready": "Listo",
307 - "ready_continue": "LISTO PARA CONTINUAR",
308 - "recent_chats": "Chats recientes",
309 - "recommended": "RECOMENDADO",
310 - "refresh_models": "Actualizar modelos",
311 - "remove_persona": "Eliminar personaje",
312 - "rename": "Renombrar",
313 - "rename_conversation": "Renombrar conversación",
314 - "reset_defaults": "Restablecer valores predeterminados",
315 - "reset_settings_defaults": "Restablecer ajustes a los predeterminados",
316 - "resume": "Reanudar",
317 - "retry": "Reintentar",
318 - "save": "Guardar",
319 - "save_changes": "Guardar cambios",
320 - "save_continue": "Guardar y continuar",
321 - "save_regenerate": "Guardar y regenerar",
322 - "save_server": "Guardar servidor",
323 - "search_hint": "Buscar conversaciones...",
324 - "search_icons_hint": "Buscar iconos...",
325 - "search_models_hint": "Buscar modelos...",
326 - "see_all": "Ver todo",
327 - "select": "Seleccionar",
351 + "choose_theme": "Elegir tema",
352 + "choose_theme_desc": "Personalice la apariencia de la aplicación. Siempre puede cambiar esto más tarde en los ajustes.",
353 + "theme_card_system": "Sistema",
354 + "theme_card_system_sub": "Coincide con los ajustes de su dispositivo",
355 + "theme_card_light": "Claro",
356 + "theme_card_light_sub": "Limpio y brillante",
357 + "theme_card_dark": "Oscuro",
358 + "theme_card_dark_sub": "Fácil para los ojos",
359 + "theme_card_claude": "Claude",
360 + "theme_card_claude_sub": "Un tema cálido con tonos durazno",
361 + "stay_updated": "Manténgase al día",
362 + "stay_updated_desc": "Reciba notificaciones cuando sus modelos de IA terminen de descargarse o cuando se completen tareas largas.",
363 + "notification_benefit_downloads": "Progreso de descarga del modelo",
364 + "notification_benefit_completions": "Completados de generación",
365 + "notification_benefit_background": "Estado de las tareas en segundo plano",
366 + "allow_notifications": "Permitir notificaciones",
367 + "servers_title": "Servidores",
368 + "no_servers_yet": "Aún sin servidores",
369 + "no_servers_desc": "Añada su primer servidor para comenzar a chatear con modelos de IA.",
370 + "add_server": "Añadir servidor",
371 + "switched_to_server": "Cambiado a {name}",
372 + "edit_server": "Editar servidor",
373 + "add_server_title": "Añadir servidor",
374 + "server_type_label": "Tipo de servidor",
375 + "server_icon_label": "Icono de servidor",
376 + "default_icon": "Icono predeterminado",
377 + "server_type_lm_studio_display": "LM Studio",
378 + "server_type_openai_display": "Compatible con OpenAI",
379 + "server_type_ollama_display": "Ollama",
380 + "server_type_openrouter_display": "OpenRouter",
381 + "server_type_on_device_display": "Local",
382 + "server_address_openrouter": "openrouter.ai",
383 + "server_address_on_device": "Inferencia local",
384 + "server_address_format": "{host}:{port}",
385 + "default_badge": "Predeterminado",
386 + "set_as_default": "Establecer como predeterminado",
387 "select_icon": "Seleccionar icono",
388 "select_icon_desc": "Elija un icono para su servidor",
330 - "select_model": "Seleccionar modelo",
331 - "select_model_hint": "Seleccione un modelo para empezar a chatear",
332 - "select_model_title": "Seleccionar modelo",
333 - "select_persona": "Seleccionar personaje",
334 - "send_message_tooltip": "Enviar mensaje",
335 - "send_on_enter": "Enviar al presionar Enter",
336 - "server_added": "Servidor añadido",
337 - "server_address_format": "{host}:{port}",
338 - "server_address_on_device": "Inferencia local",
339 - "server_address_openrouter": "openrouter.ai",
340 - "server_icon_ai_brain": "Cerebro de IA",
341 - "server_icon_ai_brain2": "Cerebro de IA 02",
342 - "server_icon_ai_chat": "Chat de IA",
343 - "server_icon_ai_cloud": "Nube de IA",
344 - "server_icon_ai_network": "Red de IA",
345 - "server_icon_alert": "Círculo de alerta",
346 - "server_icon_api": "API",
347 - "server_icon_arrow_right": "Flecha derecha 01",
348 - "server_icon_bot": "Bot",
349 - "server_icon_bot2": "Bot 02",
350 - "server_icon_cellular": "Red celular",
351 - "server_icon_check": "Círculo de verificación",
352 - "server_icon_chip": "Chip",
353 - "server_icon_chip2": "Chip 02",
389 + "search_icons_hint": "Buscar iconos...",
390 + "server_icon_stack": "Pila de servidores",
391 + "server_icon_stack2": "Pila de servidores 02",
392 + "server_icon_stack3": "Pila de servidores 03",
393 "server_icon_cloud": "Nube",
355 - "server_icon_cloud_download": "Descarga en la nube",
394 "server_icon_cloud_server": "Servidor en la nube",
357 - "server_icon_cloud_upload": "Subida a la nube",
358 - "server_icon_code": "Código",
359 - "server_icon_computer": "Computadora",
360 - "server_icon_cpu": "CPU",
395 + "server_icon_mcp": "Servidor MCP",
396 "server_icon_database": "Base de datos",
397 "server_icon_database1": "Base de datos 01",
398 "server_icon_database2": "Base de datos 02",
364 - "server_icon_drive": "Unidad",
365 - "server_icon_file1": "Archivo 01",
366 - "server_icon_folder1": "Carpeta 01",
367 - "server_icon_folder2": "Carpeta 02",
368 - "server_icon_globe": "Globo",
369 - "server_icon_hard_drive": "Disco duro",
370 - "server_icon_home1": "Inicio 01",
371 - "server_icon_home2": "Inicio 02",
372 - "server_icon_info": "Círculo de información",
373 - "server_icon_key": "Clave 01",
374 - "server_icon_label": "Icono de servidor",
399 + "server_icon_cpu": "CPU",
400 + "server_icon_chip": "Chip",
401 + "server_icon_chip2": "Chip 02",
402 + "server_icon_computer": "Computadora",
403 "server_icon_laptop": "Laptop",
376 - "server_icon_link": "Enlace 01",
377 - "server_icon_lock": "Bloqueo",
378 - "server_icon_mcp": "Servidor MCP",
404 + "server_icon_terminal": "Terminal de computadora",
405 + "server_icon_code": "Código",
406 + "server_icon_ai_brain": "Cerebro de IA",
407 + "server_icon_ai_brain2": "Cerebro de IA 02",
408 + "server_icon_ai_cloud": "Nube de IA",
409 + "server_icon_ai_network": "Red de IA",
410 + "server_icon_ai_chat": "Chat de IA",
411 + "server_icon_cellular": "Red celular",
412 "server_icon_plug1": "Enchufe 01",
413 "server_icon_plug2": "Enchufe 02",
381 - "server_icon_refresh": "Actualizar",
414 + "server_icon_bot": "Bot",
415 + "server_icon_bot2": "Bot 02",
416 "server_icon_robotic": "Robótico",
417 "server_icon_rocket": "Cohete",
418 + "server_icon_star": "Estrella",
419 "server_icon_settings1": "Ajustes 01",
420 "server_icon_settings2": "Ajustes 02",
386 - "server_icon_stack": "Pila de servidores",
387 - "server_icon_stack2": "Pila de servidores 02",
388 - "server_icon_stack3": "Pila de servidores 03",
389 - "server_icon_star": "Estrella",
390 - "server_icon_terminal": "Terminal de computadora",
391 - "server_icon_zap": "Zap",
392 - "server_name": "Nombre de servidor",
393 - "server_type_label": "Tipo de servidor",
394 - "server_type_lm_studio": "LM Studio",
395 - "server_type_lm_studio_display": "LM Studio",
396 - "server_type_lm_studio_sub": "API LOCAL",
397 - "server_type_ollama": "Ollama",
398 - "server_type_ollama_display": "Ollama",
399 - "server_type_ollama_sub": "MOTOR CLI",
400 - "server_type_on_device": "Local",
401 - "server_type_on_device_display": "Local",
402 - "server_type_on_device_sub": "NO SE REQUIERE SERVIDOR",
403 - "server_type_openai_display": "Compatible con OpenAI",
404 - "server_type_openrouter": "OpenRouter",
405 - "server_type_openrouter_display": "OpenRouter",
406 - "server_type_openrouter_sub": "NUBE UNIFICADA",
407 - "server_updated": "Servidor actualizado",
408 - "servers_title": "Servidores",
409 - "set_as_default": "Establecer como predeterminado",
410 - "set_persona": "Establecer personaje",
411 - "settings_about": "Acerca de",
412 - "settings_appearance": "Apariencia",
413 - "settings_behavior": "Comportamiento",
414 - "settings_data_management": "Gestión de datos",
415 - "settings_default_persona": "Personaje predeterminado",
416 - "settings_default_server": "Servidor predeterminado",
417 - "settings_language": "Idioma",
418 - "settings_on_device": "Inferencia local",
419 - "settings_privacy": "Privacidad",
420 - "settings_title": "Ajustes",
421 - "settings_tts": "Texto a voz",
422 - "setup_connection": "Configurar conexión",
423 - "setup_connection_desc": "Configure su servidor {server} para comenzar a chatear.",
424 - "share": "Compartir",
425 - "show_data_indicator": "Mostrar indicador de datos",
426 - "show_system_messages": "Mostrar mensajes del sistema",
427 - "skip": "Omitir",
428 - "something_went_wrong": "Algo salió mal",
429 - "star_on_github": "Dar estrella en GitHub",
430 - "start_conversation": "Comenzar una conversación",
431 - "start_new_chat": "Comenzar nuevo chat",
432 - "start_new_conversation": "Comenzar una nueva conversación",
433 - "startup_failed": "Fallo en el inicio",
434 - "stay_updated": "Manténgase al día",
435 - "stay_updated_desc": "Reciba notificaciones cuando sus modelos de IA terminen de descargarse o cuando se completen tareas largas.",
436 - "stop": "Detener",
437 - "stop_generation_tooltip": "Detener generación",
438 - "stop_reading": "Detener lectura",
439 - "streaming_responses": "Respuestas en tiempo real (streaming)",
440 - "switch_server": "Cambiar de servidor",
441 - "switch_server_subtitle": "Elija un servidor al que conectarse",
442 - "switched_to_server": "Cambiado a {name}",
421 + "server_icon_home1": "Inicio 01",
422 + "server_icon_home2": "Inicio 02",
423 + "server_icon_folder1": "Carpeta 01",
424 + "server_icon_folder2": "Carpeta 02",
425 + "server_icon_file1": "Archivo 01",
426 + "server_icon_lock": "Bloqueo",
427 + "server_icon_key": "Clave 01",
428 + "server_icon_link": "Enlace 01",
429 + "server_icon_globe": "Globo",
430 + "server_icon_api": "API",
431 + "server_icon_arrow_right": "Flecha derecha 01",
432 + "server_icon_check": "Círculo de verificación",
433 + "server_icon_alert": "Círculo de alerta",
434 + "server_icon_info": "Círculo de información",
435 + "server_icon_zap": "Zap",
436 + "server_icon_cloud_upload": "Subida a la nube",
437 + "server_icon_cloud_download": "Descarga en la nube",
438 + "server_icon_refresh": "Actualizar",
439 + "server_icon_hard_drive": "Disco duro",
440 + "server_icon_drive": "Unidad",
441 + "personas_title": "Personajes",
442 + "persona_category_general": "General",
443 + "persona_category_coding": "Programación",
444 + "persona_category_education": "Educación",
445 + "persona_category_creative": "Creativo",
446 + "persona_builtin_section": "INTEGRADO",
447 + "persona_my_section": "MIS PERSONAJES",
448 + "clone_edit": "Clonar y editar",
449 + "builtin_badge": "Integrado",
450 + "no_personas_found": "No se encontraron personajes",
451 + "no_personas_desc": "Cree su primer personaje para personalizar el comportamiento de la IA.",
452 + "edit_persona": "Editar personaje",
453 + "create_persona": "Crear personaje",
454 + "create_persona_button": "Crear",
455 + "emoji_label": "Emoji",
456 + "name_label": "Nombre",
457 + "my_persona_hint": "Mi personaje",
458 + "category_label": "Categoría",
459 + "description_optional": "Descripción (opcional)",
460 + "description_hint": "Lo que hace este personaje...",
461 "system_prompt": "Instrucción del sistema",
444 - "technical_details": "Detalles técnicos",
445 - "temp_hint": "0.7",
446 - "temperature": "Temperatura",
447 - "temperature_desc": "Controla la aleatoriedad: Mayor = Creativo, Menor = Enfocado",
462 + "character_count_max": "{currentLen}/4000",
463 + "no_prompt_placeholder": "Aún sin indicaciones...",
464 + "prompt_hint": "Usted es un asistente servicial...",
465 + "prompt_required": "La instrucción del sistema es requerida",
466 + "prompt_max_chars": "Máx. 4000 caracteres",
467 + "advanced_settings": "Ajustes avanzados",
468 "temperature_label": "Temperatura (0.0-2.0)",
449 - "test_connection": "Probar conexión",
450 - "test_notification_body": "Esta es una notificación de prueba para el progreso de descarga de modelos.",
451 - "test_notification_title": "Notificación de prueba",
452 - "testing": "Probando...",
453 - "theme": "Tema",
454 - "theme_card_claude": "Claude",
455 - "theme_card_claude_sub": "Un tema cálido con tonos durazno",
456 - "theme_card_dark": "Oscuro",
457 - "theme_card_dark_sub": "Fácil para los ojos",
458 - "theme_card_light": "Claro",
459 - "theme_card_light_sub": "Limpio y brillante",
460 - "theme_card_system": "Sistema",
461 - "theme_card_system_sub": "Coincide con los ajustes de su dispositivo",
462 - "theme_claude": "Claude",
463 - "theme_dark": "Oscuro",
464 - "theme_light": "Claro",
465 - "theme_system": "Sistema",
466 - "thinking": "Pensando",
467 - "today_section": "HOY",
468 - "tool_label": "Herramienta: {toolCallId}",
469 - "tool_unknown": "Herramienta: Desconocida",
470 - "top_p": "Top P",
471 - "top_p_desc": "Umbral de muestreo de núcleo",
472 - "top_p_hint": "0.9",
469 "top_p_label": "Top P (0.0-1.0)",
474 - "total_capacity": "Capacidad total",
475 - "total_ram": "RAM total",
476 - "try_different_search": "Pruebe con un término de búsqueda diferente",
477 - "tts_engine": "Motor TTS",
478 - "tts_engine_kitten": "Kitten TTS",
479 - "tts_engine_system": "TTS del sistema",
480 - "tts_kitten_desc": "TTS neural ultrarrápido con 8 voces expresivas.\nRequiere descarga de {size}.",
470 + "temp_hint": "0.7",
471 + "top_p_hint": "0.9",
472 + "range_0_2": "0.0-2.0",
473 + "range_0_1": "0.0-1.0",
474 + "persona_updated": "Personaje actualizado",
475 + "persona_created": "Personaje creado",
476 "tts_models_title": "Modelos de texto a voz",
482 - "tts_piper_desc": "Voces Piper sin conexión rápidas con 2 voces expresivas.\nRequiere una descarga de {size} por voz.",
483 - "tts_speed": "Velocidad de TTS",
484 - "tts_speed_desc": "Ajustar la velocidad de reproducción.",
477 + "always_available": "Siempre disponible",
478 "tts_system_desc": "Utiliza el motor de texto a voz integrado de su dispositivo.\nNo requiere descargas. La selección de voz utiliza los ajustes del sistema de su dispositivo.",
486 - "unknown_error": "Error desconocido",
487 - "unload": "Liberar de memoria",
488 - "unload_from_server": "Liberar del servidor",
489 - "unpin": "Desfijar",
490 - "update_server": "Actualizar servidor",
491 - "voice": "Voz",
492 - "voice_bella": "Bella",
493 - "voice_bruno": "Bruno",
494 - "voice_female": "Femenino",
495 - "voice_hugo": "Hugo",
496 - "voice_jasper": "Jasper",
497 - "voice_kiki": "Kiki",
498 - "voice_leo": "Leo",
499 - "voice_lessac": "Lessac (US)",
500 - "voice_luna": "Luna",
501 - "voice_male": "Masculino",
502 - "voice_other": "Otro",
503 - "voice_rosie": "Rosie",
504 - "voice_ryan": "Ryan (US)",
505 - "waiting_selection": "ESPERANDO SELECCIÓN",
506 - "yesterday_section": "AYER",
507 - "tts_supports_background": "Soporta reproducción en segundo plano como audio nativo",
508 - "tts_other_services_background_note": "Nota: Los otros servicios de TTS soportan reproducción en segundo plano como audio nativo.",
509 - "start_listening_tooltip": "Iniciar escucha",
510 - "stop_listening_tooltip": "Detener escucha",
479 + "downloading_status": "Descargando...",
480 + "tts_kitten_desc": "TTS neural ultrarrápido con 8 voces expresivas.\nRequiere descarga de {size}.",
481 + "tts_piper_desc": "Voces Piper sin conexión rápidas con 2 voces expresivas.\nRequiere una descarga de {size} por voz.",
482 + "engine_spec": "{sizeMb} MB · {ramMb} MB de RAM · {voiceCount} voces",
483 + "on_device_models_title": "Modelos locales",
484 "settings_huggingface_token": "Token de Hugging Face (Opcional)",
485 "settings_huggingface_token_desc": "Solo se requiere para modelos restringidos (p. ej., Gemma). Obtenga un token en huggingface.co/settings/tokens.",
486 "settings_huggingface_token_set": "Token guardado",
@@ -521,6 +494,91 @@
494 "server_type_ollama_desc": "Motor de IA local. No requiere clave API.",
495 "server_type_on_device_desc": "Se ejecuta en su teléfono. Algunos modelos necesitan un token de Hugging Face.",
496 "server_type_lm_studio_desc": "Servidor API local. No requiere clave API.",
497 + "available_models": "Modelos disponibles",
498 + "device_memory": "Memoria del dispositivo",
499 + "ram_usage": "Uso de RAM",
500 + "memory_healthy": "Saludable",
501 + "memory_critical": "Crítico",
502 + "memory_low": "Bajo",
503 + "ram_used": "{percent}% usado",
504 + "available_ram": "RAM disponible",
505 + "total_capacity": "Capacidad total",
506 + "loaded_status": "Cargado",
507 + "inference_backend": "Motor de inferencia",
508 + "backend_ios_notice": "Solo el motor de CPU está disponible en iOS.",
509 + "backend_cpu_desc": "Funciona en todos los dispositivos. Más compatible.",
510 + "backend_gpu_desc": "Aceleración OpenCL. Más rápido en dispositivos compatibles.",
511 + "backend_npu_desc": "NPU del fabricante (Qualcomm/MediaTek). Inferencia más rápida.",
512 + "select_model_title": "Seleccionar modelo",
513 + "refresh_models": "Actualizar modelos",
514 + "search_models_hint": "Buscar modelos...",
515 + "no_server_connected": "Ningún servidor conectado",
516 + "add_server_first": "Añada un servidor primero para ver los modelos disponibles.",
517 + "failed_load_models": "No se pudieron cargar los modelos",
518 + "no_models_available": "No hay modelos disponibles",
519 + "no_models_match": "Ningún modelo coincide con \"{searchQuery}\"",
520 + "model_load_failed": "No se pudo cargar el modelo: {error}",
521 + "model_unloaded_ollama": "{name} se liberará de la memoria una vez que pase el tiempo de espera activo",
522 + "model_unloaded_success": "{name} liberado de memoria correctamente",
523 + "model_unload_failed": "No se pudo descargar el modelo de la memoria: {error}",
524 + "unload_from_server": "Liberar del servidor",
525 + "context_chip": "{ctx} ctx",
526 + "unload_all_models": "Descargar todos los modelos",
527 + "loaded_models_count": "{count} modelos cargados",
528 + "all_models_unloaded": "Todos los modelos descargados",
529 + "branch_chat": "Ramificar chat",
530 + "branch_chat_desc": "Crear un nuevo chat a partir de este mensaje",
531 + "edit_assistant_message_desc": "Editar el contenido del mensaje del asistente",
532 + "switch_to_model": "Cambiar al modelo {model}",
533 + "download_notification_title": "Descargando {modelName}...",
534 + "download_complete_notification": "¡Descarga completa!",
535 + "download_complete_body": "{modelName} se ha descargado correctamente.",
536 + "download_failed_notification": "Descarga fallida: {error}",
537 + "download_failed_body": "No se pudo descargar {modelName}.",
538 + "engine_name_system": "TTS del sistema",
539 + "engine_tagline_system": "Motor integrado en el dispositivo",
540 + "engine_name_kitten": "Kitten TTS",
541 + "engine_tagline_kitten": "TTS neural de alta velocidad",
542 + "engine_name_sherpa": "Sherpa ONNX VITS",
543 + "engine_tagline_sherpa": "Voces Piper sin conexión",
544 + "voice_jasper": "Jasper",
545 + "voice_bella": "Bella",
546 + "voice_bruno": "Bruno",
547 + "voice_luna": "Luna",
548 + "voice_hugo": "Hugo",
549 + "voice_rosie": "Rosie",
550 + "voice_leo": "Leo",
551 + "voice_kiki": "Kiki",
552 + "voice_lessac": "Lessac (US)",
553 + "voice_ryan": "Ryan (US)",
554 + "model_qwen_3": "Qwen 3 0.6B",
555 + "model_qwen_3_desc": "Modelo de chat de propósito general más pequeño. Respuestas rápidas, bajo uso de memoria.",
556 + "model_license_apache": "Apache-2.0",
557 + "model_qwen_25": "Qwen 2.5 1.5B Instruct",
558 + "model_qwen_25_desc": "Calidad y tamaño equilibrados. Bueno para conversación general.",
559 + "model_deepseek": "DeepSeek R1 Distill Qwen 1.5B",
560 + "model_deepseek_desc": "Modelo de razonamiento y cadena de pensamiento. El mejor para tareas lógicas.",
561 + "model_license_mit": "MIT",
562 + "model_gemma": "Gemma 4 E2B Instruct",
563 + "model_gemma_desc": "Modelo insignia de Google. Máxima calidad, requiere más RAM.",
564 + "export_header": "*Exportado de LocalMind — {date}*",
565 + "export_role_user": "## 👤 Usuario",
566 + "export_role_assistant": "## 🤖 Asistente",
567 + "export_role_system": "## ⚙️ Sistema",
568 + "export_role_tool": "## 🔧 Herramienta",
569 + "export_text_user": "[USUARIO]",
570 + "export_text_assistant": "[ASISTENTE]",
571 + "export_text_system": "[SISTEMA]",
572 + "export_text_tool": "[HERRAMIENTA]",
573 + "export_label_user": "USUARIO",
574 + "export_label_assistant": "ASISTENTE",
575 + "export_label_system": "SISTEMA",
576 + "export_label_tool": "HERRAMIENTA",
577 + "select_model_hint": "Seleccione un modelo para empezar a chatear",
578 + "test_notification_title": "Notificación de prueba",
579 + "test_notification_body": "Esta es una notificación de prueba para el progreso de descarga de modelos.",
580 + "tts_supports_background": "Soporta reproducción en segundo plano como audio nativo",
581 + "tts_other_services_background_note": "Nota: Los otros servicios de TTS soportan reproducción en segundo plano como audio nativo.",
582 "gguf_imported_models_title": "Imported GGUF models",
583 "gguf_imported_models_empty_subtitle": "Import a GGUF from your device or add one from Hugging Face. Imported models run locally with llama.cpp.",
584 "gguf_imported_models_ready": "imported models ready for local inference.",
@@ -603,65 +661,6 @@
661 "tool_status_running": "Running",
662 "tool_status_done": "Done",
663 "tool_status_failed": "Failed",
606 - "delete_builtin_persona_body": "Este es un personaje incorporado. Puedes restaurarlo más tarde desde Configuración.",
607 - "restore_builtin_personas": "Restaurar personajes predeterminados",
608 - "restore_builtin_personas_desc": "Vuelve a añadir cualquier personaje incorporado que hayas eliminado",
609 - "restore_builtin_personas_success": "Personajes predeterminados restaurados",
610 - "clear_personas": "Limpiar personajes",
611 - "enable_image_compression": "Comprimir imágenes antes de enviar",
612 - "enable_image_compression_desc": "Redimensionar y comprimir imágenes adjuntas para que las cargas se mantengan dentro de los límites del servidor",
613 - "image_compression_level": "Agresividad de la compresión",
614 - "image_compression_level_desc": "Una mayor agresividad produce cargas más pequeñas a menor calidad",
615 - "image_compression_level_low": "Baja",
616 - "image_compression_level_medium": "Media",
617 - "image_compression_level_high": "Alta",
618 - "sort_models_tooltip": "Ordenar modelos",
619 - "sort_by_favorites": "Favoritos primero",
620 - "sort_by_name": "Nombre (A-Z)",
621 - "sort_by_size_smallest": "Tamaño (más pequeño primero)",
622 - "sort_by_size_largest": "Tamaño (más grande primero)",
623 - "sort_by_context_length": "Longitud de contexto",
624 - "bulk_ai_rename_progress": "Renombrando {done}/{total}...",
625 - "selected_count": "{count} seleccionados",
626 - "ai_rename_tooltip": "Renombrar seleccionados con IA",
627 - "new_chat_in_folder_tooltip": "Nuevo chat en esta carpeta",
628 - "total_tokens_count": "{count} tokens",
629 - "smart_replies_use_persona": "Usar personaje en respuestas inteligentes",
630 - "smart_replies_use_persona_desc": "Las respuestas sugeridas coinciden con el tono del personaje activo en lugar de un asistente genérico",
631 - "keep_persona_on_new_chat": "Mantener personaje al iniciar chat nuevo",
632 - "keep_persona_on_new_chat_desc": "No limpiar la selección de personaje al comenzar un nuevo chat",
633 - "role_swap_button_enabled": "Mostrar botón de cambio de rol",
634 - "role_swap_button_enabled_desc": "Mostrar un botón en la entrada de chat para enviar tu mensaje con el rol de asistente en lugar de usuario, sin generar respuesta",
635 - "send_as_user_tooltip": "Enviar como usuario",
636 - "send_as_assistant_tooltip": "Enviar como asistente (sin respuesta)",
637 - "insert_without_generating_tooltip": "Insertar sin generar",
638 - "token_usage_title": "Uso de Tokens",
639 - "total_tokens_label": "Tokens usados",
640 - "usage_percent_label": "Contexto usado",
641 - "export_choice_title": "Exportar",
642 - "export_choice_body": "¿Cómo te gustaría exportar esto?",
643 - "copy_to_clipboard": "Copiar al portapapeles",
644 - "bulk_export_conversations_success": "Exportado {count} conversaciones",
645 - "bulk_ai_rename_confirm_title": "¿Renombrar con IA?",
646 - "bulk_ai_rename_confirm_body": "Esto le pedirá a la IA que genere un nuevo título para cada una de las {count} conversaciones seleccionadas, reemplazando sus títulos actuales. Esto puede tardar un poco y no se puede deshacer.",
647 - "sort_by_modified_date": "Última modificación",
648 - "sort_by_created_date": "Fecha de creación",
649 - "sort_title": "Ordenar",
650 - "ai_user_response_enabled": "Mensaje de usuario de IA (mantener presionado)",
651 - "ai_user_response_enabled_desc": "Mantén presionado el botón de enviar durante 3 segundos para que la IA escriba y envíe tu próximo mensaje",
652 - "ai_user_response_tooltip": "Generar mensaje de usuario con IA",
653 - "show_system_messages_desc": "Cuando no se seleccione ningún personaje, enviar un prompt de sistema de asistente predeterminado con cada solicitud",
654 - "show_system_messages_in_chat": "Mostrar mensajes del sistema en el chat",
655 - "show_system_messages_in_chat_desc": "Mostrar mensajes de sistema (por ejemplo, de una copia de seguridad importada) como burbujas visibles en la conversación",
656 - "manage_personas": "Gestionar personajes",
657 - "personas_combine_hint": "Los personajes seleccionados se combinarán",
658 - "unload_all_models": "Descargar todos los modelos",
659 - "loaded_models_count": "{count} modelos cargados",
660 - "all_models_unloaded": "Todos los modelos descargados",
661 - "branch_chat": "Ramificar chat",
662 - "branch_chat_desc": "Crear un nuevo chat a partir de este mensaje",
663 - "edit_assistant_message_desc": "Editar el contenido del mensaje del asistente",
664 - "switch_to_model": "Cambiar al modelo {model}",
664 "model_favorite_toggle": "Alternar favorito",
665 "model_note_label": "Nota",
666 "model_note_hint": "Añade una nota privada para este modelo...",
@@ -758,8 +757,15 @@
757 "stream_generation_time": "Tiempo de generación",
758 "attach_image": "Adjuntar imagen",
759 "attach_text_document": "Adjuntar documento de texto",
760 + "attach_shortcut_images": "Fotos",
761 + "attach_shortcut_documents": "Archivos",
762 + "attach_shortcut_saved": "Guardados",
763 "add_attachment": "Añadir adjunto",
764 + "add_to_chat": "Añadir al chat",
765 + "choose_what_to_attach": "¿Qué te gustaría añadir?",
766 + "choose_attachment_subtitle": "Elige una fuente para adjuntar a tu mensaje",
767 "photo_permission_denied": "Permiso de fotos denegado",
768 + "select_model_prompt": "Seleccionar modelo",
769 "characters_label": "Caracteres",
770 "exit_temporary_chat_title": "¿Salir del chat temporal?",
771 "exit_temporary_chat_body": "Esto eliminará permanentemente la conversación actual. ¿Continuar?",
@@ -860,5 +866,9 @@
866 "delete_folder": "Eliminar carpeta",
867 "delete_folder_title": "¿Eliminar carpeta?",
868 "delete_folder_body": "¿Seguro que quieres eliminar \"{name}\"? Las conversaciones o mensajes guardados dentro se moverán a \"Sin clasificar\". No se puede deshacer.",
863 - "folder_name_required": "Introduce un nombre de carpeta"
869 + "folder_name_required": "Introduce un nombre de carpeta",
870 + "model_required_toast": "Primero debes seleccionar un modelo",
871 + "server_type_lm_studio_sub": "API LOCAL",
872 + "server_type_ollama_sub": "MOTOR CLI",
873 + "server_type_on_device_sub": "NO SE REQUIERE SERVIDOR"
874 }
lib/l10n/app_hi.arb
+526 -516
@@ -1,513 +1,486 @@
1 {
2 "@@locale": "hi",
3 - "active": "सक्रिय",
4 - "active_integrations": "सक्रिय एकीकरण",
5 - "add_ephemeral_mcp": "अस्थायी MCP सर्वर जोड़ें",
6 - "add_server": "सर्वर जोड़ें",
7 - "add_server_first": "उपलब्ध मॉडल देखने के लिए पहले एक सर्वर जोड़ें।",
8 - "add_server_title": "सर्वर जोड़ें",
9 - "advanced_settings": "उन्नत सेटिंग्स",
10 - "all": "सभी",
11 - "allow_notifications": "सूचनाओं की अनुमति दें",
12 - "always_available": "हमेशा उपलब्ध",
13 - "api_key_format": "OpenRouter API कुंजियाँ sk- से शुरू होती हैं",
14 - "api_key_hint_generic": "प्रमाणित सर्वर के लिए",
15 - "api_key_hint_openrouter": "sk-...",
16 - "api_key_optional": "API कुंजी (वैकल्पिक)",
17 - "api_key_required": "API कुंजी *",
18 - "api_key_required_openrouter": "OpenRouter के लिए API कुंजी आवश्यक है",
3 "app_name": "LocalMind",
4 "app_tagline": "आपका AI. आपका डिवाइस. आपके नियम।",
5 "app_version": "1.0.0",
22 - "attach_images_tooltip": "छवियाँ संलग्न करें",
23 - "auto_execute_tools": "स्वचालित रूप से उपकरण निष्पादित करें",
24 - "auto_generate_titles": "स्वचालित रूप से शीर्षक उत्पन्न करें",
25 - "available": "उपलब्ध",
26 - "beta_label": "बीटा",
27 - "experimental_label": "प्रायोगिक",
28 - "available_models": "उपलब्ध मॉडल",
29 - "available_ram": "उपलब्ध रैम (RAM)",
30 - "backend_cpu_desc": "सभी उपकरणों पर काम करता है। सबसे अनुकूल।",
31 - "backend_gpu_desc": "OpenCL त्वरण। समर्थित उपकरणों पर तेज़।",
32 - "backend_ios_notice": "iOS पर केवल CPU बैकएंड उपलब्ध है।",
33 - "backend_npu_desc": "विक्रेता NPU (Qualcomm/MediaTek)। सबसे तेज़ अनुमान।",
34 - "builtin_badge": "इन-बिल्ट",
35 - "calculating": "गणना की जा रही है...",
6 "cancel": "रद्द करें",
37 - "cannot_undo": "इस क्रिया को पूर्ववत नहीं किया जा सकता।",
38 - "category_label": "श्रेणी",
39 - "change_persona": "चरित्र बदलें",
40 - "character_count": "{length} वर्ण",
41 - "character_count_max": "{currentLen}/4000",
42 - "chat_history_title": "चैट इतिहास",
43 - "chat_input_hint": "कुछ भी पूछें",
44 - "chat_parameters_tooltip": "चैट पैरामीटर",
45 - "chat_settings_title": "चैट सेटिंग्स",
46 - "chat_title": "LocalMind",
47 - "choose_theme": "थीम चुनें",
48 - "choose_theme_desc": "ऐप के रूप को निजीकृत करें। आप इसे बाद में सेटिंग्स में कभी भी बदल सकते हैं।",
49 - "clear": "साफ़ करें",
50 - "clear_conversation": "बातचीत साफ़ करें",
51 - "clear_conversation_body": "यह इस बातचीत के सभी संदेशों को हटा देगा।",
52 - "clear_conversation_title": "बातचीत साफ़ करें?",
53 - "clone_edit": "क्लोन और संपादित करें",
54 - "close": "बंद करें",
55 - "code_theme_dark": "कोड थीम (डार्क)",
56 - "code_theme_desc": "कोड ब्लॉक के लिए सिंटैक्स हाइलाइटिंग थीम चुनें।",
57 - "code_theme_light": "कोड थीम (लाइट)",
58 - "configure": "कॉन्फ़िगर करें",
59 - "configuring_server": "सर्वर कॉन्फ़िगर किया जा रहा है...",
7 "confirm": "पुष्टि करें",
61 - "connection_error": "कनेक्शन त्रुटि। अपने सर्वर की जांच करें।",
62 - "connection_failed": "कनेक्शन विफल रहा। अपनी सेटिंग्स की जांच करें।",
63 - "connection_successful": "कनेक्शन सफल रहा!",
64 - "context_chip": "{ctx} संदर्भ (ctx)",
65 - "context_length": "संदर्भ लंबाई (Context Length)",
66 - "context_length_desc": "इतिहास विंडो",
67 - "continue_action": "जारी रखें",
68 - "conversation_date": "{month}/{day}/{year}",
69 - "conversation_days_ago": "{days} दिन पहले",
70 - "conversation_hours_ago": "{hours} घंटे पहले",
71 - "conversation_id": "बातचीत आईडी",
72 - "conversation_just_now": "अभी-अभी",
73 - "conversation_minutes_ago": "{minutes} मिनट पहले",
74 - "conversation_yesterday": "कल",
75 - "copied": "कॉपी किया गया!",
76 - "copied_markdown": "Markdown के रूप में कॉपी किया गया",
77 - "copied_to_clipboard": "क्लिपबोर्ड पर कॉपी किया गया",
78 - "copy": "कॉपी करें",
79 - "copy_info": "जानकारी कॉपी करें",
80 - "copy_markdown": "Markdown के रूप में कॉपी करें",
81 - "create_persona": "चरित्र बनाएं",
82 - "create_persona_button": "बनाएं",
83 - "created_at": "निर्माण का समय",
84 - "debug_dialog_desc": "सिंक्रनाइज़ेशन समस्याओं की पहचान करने में सहायता के लिए नैदानिक जानकारी।",
85 - "default_badge": "डिफ़ॉल्ट",
86 - "default_icon": "डिफ़ॉल्ट आइकन",
8 "delete": "हटाएं",
88 - "delete_all_conversations": "सभी बातचीत हटाएं",
89 - "delete_conversation": "बातचीत हटाएं?",
90 - "delete_conversation_body": "क्या आप निश्चित रूप से \"{title}\" को हटाना चाहते हैं? इसे पूर्ववत नहीं किया जा सकता।",
91 - "delete_conversation_title": "बातचीत हटाएं?",
92 - "delete_message_title": "संदेश हटाएं?",
93 - "delete_model_body": "क्या आप निश्चित रूप से {name} को हटाना चाहते हैं?",
94 - "delete_model_body_with_size": "क्या आप निश्चित रूप से {name} को हटाना चाहते हैं? इससे लगभग {size} स्थान खाली हो जाएगा।\n\nयदि आवश्यकता हो तो आप बाद में इस मॉडल को फिर से डाउनलोड कर सकते हैं।",
95 - "delete_model_title": "मॉडल हटाएं",
96 - "delete_persona_body": "इसे पूर्ववत नहीं किया जा सकता।",
97 - "delete_persona_title": "\"{name}\" हटाएं?",
98 - "delete_server_body": "क्या आप निश्चित रूप से \"{name}\" को हटाना चाहते हैं? इसे पूर्ववत नहीं किया जा सकता।",
99 - "delete_server_title": "सर्वर हटाएं",
100 - "delete_voice_body": "क्या आप निश्चित रूप से {name} को हटाना चाहते हैं? इससे लगभग {size} स्थान खाली हो जाएगा।\n\nयदि आवश्यकता हो तो आप बाद में इस आवाज को फिर से डाउनलोड कर सकते हैं।",
101 - "delete_voice_title": "आवाज हटाएं",
102 - "description_hint": "यह चरित्र क्या करता है...",
103 - "description_optional": "विवरण (वैकल्पिक)",
104 - "device_memory": "डिवाइस मेमोरी",
105 - "disconnected": "सर्वर से कनेक्शन टूट गया।",
9 + "save": "सहेजें",
10 + "retry": "पुनः प्रयास करें",
11 + "close": "बंद करें",
12 "done": "पूर्ण",
13 + "continue_action": "जारी रखें",
14 + "skip": "छोड़ें",
15 + "install": "इंस्टॉल करें",
16 "download": "डाउनलोड करें",
108 - "download_complete_body": "{modelName} सफलतापूर्वक डाउनलोड हो गया है।",
109 - "download_complete_notification": "डाउनलोड पूर्ण!",
110 - "download_failed": "डाउनलोड विफल",
111 - "download_failed_body": "{modelName} डाउनलोड करने में विफल।",
112 - "download_failed_notification": "डाउनलोड विफल: {error}",
113 - "download_model_desc": "डाउनलोड करने के लिए एक मॉडल चुनें।\nयह आपके डिवाइस पर स्थानीय रूप से चलेगा।",
114 - "download_model_title": "मॉडल डाउनलोड करें",
115 - "download_notification_title": "{modelName} डाउनलोड किया जा रहा है...",
116 - "download_progress": "{percent}% • {speed}",
117 - "downloaded": "डाउनलोड किया गया",
118 - "downloading_status": "डाउनलोड किया जा रहा है...",
17 + "resume": "फिर से शुरू करें",
18 + "pause": "विराम दें",
19 + "stop": "रोकें",
20 "edit": "संपादित करें",
120 - "edit_message": "संदेश संपादित करें",
121 - "edit_message_desc": "सहेजने से नीचे सहायक की प्रतिक्रिया हट जाएगी और पुनः उत्पन्न होगी।",
122 - "edit_persona": "चरित्र संपादित करें",
123 - "edit_server": "सर्वर संपादित करें",
124 - "emoji_label": "इमोजी",
125 - "enable": "सक्षम करें",
126 - "enable_mcp": "MCP सक्षम करें",
127 - "enable_notifications": "सूचनाएं सक्षम करें",
128 - "enable_notifications_desc": "मॉडल डाउनलोड पूरा होने पर सूचित किया जाए।",
129 - "engine_name_kitten": "Kitten TTS",
130 - "engine_name_sherpa": "Sherpa ONNX VITS",
131 - "engine_name_system": "सिस्टम TTS",
132 - "engine_spec": "{sizeMb} MB · {ramMb} MB रैम · {voiceCount} आवाजें",
133 - "engine_tagline_kitten": "उच्च गति न्यूरल TTS",
134 - "engine_tagline_sherpa": "ऑफ़लाइन पाइपर (Piper) आवाज़ें",
135 - "engine_tagline_system": "इन-बिल्ट डिवाइस इंजन",
136 - "enter_new_title": "नया शीर्षक दर्ज करें",
21 + "preview": "पूर्वावलोकन",
22 + "unload": "अनलोड करें",
23 + "load": "लोड करें",
24 + "rename": "नाम बदलें",
25 + "pin": "पिन करें",
26 + "unpin": "अनपिन करें",
27 + "share": "साझा करें",
28 + "copy": "कॉपी करें",
29 + "copied": "कॉपी किया गया!",
30 + "copied_to_clipboard": "क्लिपबोर्ड पर कॉपी किया गया",
31 + "select": "चुनें",
32 + "active": "सक्रिय",
33 + "all": "सभी",
34 + "none": "कोई नहीं",
35 + "none_selected": "कोई चयनित नहीं है",
36 + "online": "ऑनलाइन",
37 + "connected": "कनेक्टेड",
38 + "checking": "जाँच की जा रही है",
39 + "offline": "ऑफ़लाइन",
40 "error": "त्रुटि",
138 - "error_with_message": "त्रुटि: {error}",
139 - "eta_label": "शेष समय (ETA): {eta}",
140 - "expected_messages": "अपेक्षित संदेश",
141 - "export_header": "*LocalMind से निर्यात किया गया — {date}*",
142 - "export_label_assistant": "सहायक",
143 - "export_label_system": "सिस्टम",
144 - "export_label_tool": "उपकरण",
145 - "export_label_user": "उपयोगकर्ता",
146 - "export_role_assistant": "## 🤖 सहायक",
147 - "export_role_system": "## ⚙️ सिस्टम",
148 - "export_role_tool": "## 🔧 उपकरण",
149 - "export_role_user": "## 👤 उपयोगकर्ता",
150 - "export_text_assistant": "[सहायक]",
151 - "export_text_system": "[सिस्टम]",
152 - "export_text_tool": "[उपकरण]",
153 - "export_text_user": "[उपयोगकर्ता]",
154 - "failed_load_models": "मॉडल लोड करने में विफल",
41 + "unknown_error": "अज्ञात त्रुटि",
42 + "not_now": "अभी नहीं",
43 + "enable": "सक्षम करें",
44 + "proceed_anyway": "वैसे भी आगे बढ़ें",
45 + "test_connection": "कनेक्शन का परीक्षण करें",
46 + "testing": "परीक्षण किया जा रहा है...",
47 + "connection_successful": "कनेक्शन सफल रहा!",
48 + "connection_failed": "कनेक्शन विफल रहा। अपनी सेटिंग्स की जांच करें।",
49 + "save_continue": "सहेजें और जारी रखें",
50 + "save_changes": "बदलाव सहेजें",
51 "finish_setup": "सेटअप पूर्ण करें",
156 - "font_preview": "त्वरित भूरी लोमड़ी आलसी कुत्ते के ऊपर से कूदती है।",
157 - "font_size": "फ़ॉन्ट का आकार",
158 - "font_size_desc": "चैट में टेक्स्ट का आकार समायोजित करें।",
159 - "haptic_feedback": "हैप्टिक फीडबैक",
160 - "history_missing_desc": "या तो इस चैट के संदेश हटा दिए गए थे या इतिहास रिकॉर्ड दूषित हो गया है।",
161 - "history_missing_title": "इतिहास गायब है",
162 - "host_label": "होस्ट / IP पता",
163 - "host_required": "होस्ट आवश्यक है",
164 - "host_valid": "एक वैध होस्टनाम या IP पता दर्ज करें",
165 - "inference_backend": "अनुमान बैकएंड (Inference Backend)",
52 + "start_new_chat": "नई चैट शुरू करें",
53 + "cannot_undo": "इस क्रिया को पूर्ववत नहीं किया जा सकता।",
54 + "ram_warning": "रैम चेतावनी",
55 + "recommended": "अनुशंसित",
56 + "may_be_large": "इस डिवाइस के लिए बहुत बड़ा हो सकता है",
57 + "calculating": "गणना की जा रही है...",
58 + "download_failed": "डाउनलोड विफल",
59 + "downloaded": "डाउनलोड किया गया",
60 + "not_downloaded": "डाउनलोड नहीं किया गया",
61 + "installed": "इंस्टॉल किया गया",
62 + "not_installed": "इंस्टॉल नहीं किया गया",
63 + "loading": "लोड हो रहा है...",
64 + "thinking": "सोच रहा है",
65 + "processing": "प्रसंस्करण किया जा रहा है...",
66 "initializing": "प्रारंभ किया जा रहा है...",
67 + "ready": "तैयार",
68 + "preparing_app": "ऐप तैयार किया जा रहा है...",
69 "initializing_services": "सेवाएं प्रारंभ की जा रही हैं...",
168 - "install": "इंस्टॉल करें",
169 - "installed": "इंस्टॉल किया गया",
70 + "configuring_server": "सर्वर कॉन्फ़िगर किया जा रहा है...",
71 + "startup_failed": "स्टार्टअप विफल रहा",
72 + "something_went_wrong": "कुछ गलत हो गया",
73 + "delete_model_title": "मॉडल हटाएं",
74 + "delete_model_body": "क्या आप निश्चित रूप से {name} को हटाना चाहते हैं?",
75 + "delete_model_body_with_size": "क्या आप निश्चित रूप से {name} को हटाना चाहते हैं? इससे लगभग {size} स्थान खाली हो जाएगा।\n\nयदि आवश्यकता हो तो आप बाद में इस मॉडल को फिर से डाउनलोड कर सकते हैं।",
76 + "delete_voice_title": "आवाज हटाएं",
77 + "delete_voice_body": "क्या आप निश्चित रूप से {name} को हटाना चाहते हैं? इससे लगभग {size} स्थान खाली हो जाएगा।\n\nयदि आवश्यकता हो तो आप बाद में इस आवाज को फिर से डाउनलोड कर सकते हैं।",
78 + "delete_server_title": "सर्वर हटाएं",
79 + "delete_server_body": "क्या आप निश्चित रूप से \"{name}\" को हटाना चाहते हैं? इसे पूर्ववत नहीं किया जा सकता।",
80 + "delete_conversation_title": "बातचीत हटाएं?",
81 + "delete_conversation_body": "क्या आप निश्चित रूप से \"{title}\" को हटाना चाहते हैं? इसे पूर्ववत नहीं किया जा सकता।",
82 + "delete_message_title": "संदेश हटाएं?",
83 + "delete_persona_title": "\"{name}\" हटाएं?",
84 + "delete_persona_body": "इसे पूर्ववत नहीं किया जा सकता।",
85 + "delete_builtin_persona_body": "यह एक अंतर्निहित व्यक्तित्व (Persona) है। आप इसे बाद में सेटिंग्स से पुनर्स्थापित कर सकते हैं।",
86 + "restore_builtin_personas": "डिफ़ॉल्ट व्यक्तित्व पुनर्स्थापित करें",
87 + "restore_builtin_personas_desc": "आपके द्वारा हटाए गए किसी भी अंतर्निहित व्यक्तित्व को फिर से जोड़ें",
88 + "restore_builtin_personas_success": "डिफ़ॉल्ट व्यक्तित्व पुनर्स्थापित कर दिए गए हैं",
89 + "clear_personas": "व्यक्तित्व साफ़ करें",
90 + "enable_image_compression": "भेजने से पहले छवियों को कंप्रेस करें",
91 + "enable_image_compression_desc": "संलग्न छवियों का आकार बदलें और कंप्रेस करें ताकि अपलोड सर्वर सीमाओं के भीतर रहें",
92 + "image_compression_level": "कंप्रेशन की आक्रामकता",
93 + "image_compression_level_desc": "अधिक आक्रामकता कम गुणवत्ता पर छोटे आकार के अपलोड बनाती है",
94 + "image_compression_level_low": "कम",
95 + "image_compression_level_medium": "मध्यम",
96 + "image_compression_level_high": "उच्च",
97 + "sort_models_tooltip": "मॉडलों को सॉर्ट करें",
98 + "sort_by_favorites": "पसंदीदा पहले",
99 + "sort_by_name": "नाम (A-Z)",
100 + "sort_by_size_smallest": "आकार (सबसे छोटा पहले)",
101 + "sort_by_size_largest": "आकार (सबसे बड़ा पहले)",
102 + "sort_by_context_length": "संदर्भ की लंबाई",
103 + "bulk_ai_rename_progress": "नाम बदला जा रहा है {done}/{total}...",
104 + "selected_count": "{count} चयनित",
105 + "ai_rename_tooltip": "एआई के साथ चयनित का नाम बदलें",
106 + "new_chat_in_folder_tooltip": "इस फ़ोल्डर में नई चैट",
107 + "total_tokens_count": "{count} टोकन",
108 + "smart_replies_use_persona": "स्मार्ट उत्तरों में व्यक्तित्व का उपयोग करें",
109 + "smart_replies_use_persona_desc": "सुझाए गए उत्तर सामान्य सहायक के बजाय सक्रिय व्यक्तित्व के लहजे से मेल खाते हैं",
110 + "keep_persona_on_new_chat": "नई चैट पर व्यक्तित्व बनाए रखें",
111 + "keep_persona_on_new_chat_desc": "नई चैट शुरू करने के बाद चयनित व्यक्तित्व को साफ़ न करें",
112 + "role_swap_button_enabled": "भूमिका-बदल बटन दिखाएं",
113 + "role_swap_button_enabled_desc": "बिना कोई प्रतिक्रिया उत्पन्न किए, अपने संदेश को उपयोगकर्ता के बजाय सहायक भूमिका के रूप में भेजने के लिए चैट इनपुट में एक बटन दिखाएं",
114 + "send_as_user_tooltip": "उपयोगकर्ता के रूप में भेजें",
115 + "send_as_assistant_tooltip": "सहायक के रूप में भेजें (कोई प्रतिक्रिया नहीं)",
116 + "insert_without_generating_tooltip": "बिना जनरेट किए डालें",
117 + "token_usage_title": "टोकन उपयोग",
118 + "total_tokens_label": "उपयोग किए गए टोकन",
119 + "usage_percent_label": "उपयोग किया गया संदर्भ",
120 + "export_choice_title": "निर्यात (Export) करें",
121 + "export_choice_body": "आप इसे कैसे निर्यात करना चाहेंगे?",
122 + "copy_to_clipboard": "क्लिपबोर्ड पर कॉपी करें",
123 + "bulk_export_conversations_success": "{count} वार्तालाप निर्यात किए गए",
124 + "bulk_ai_rename_confirm_title": "एआई के साथ नाम बदलें?",
125 + "bulk_ai_rename_confirm_body": "यह एआई को वर्तमान शीर्षकों को प्रतिस्थापित करते हुए, प्रत्येक {count} चयनित वार्तालापों के लिए एक नया शीर्षक उत्पन्न करने के लिए कहेगा। इसमें कुछ समय लग सकता है और इसे पूर्ववत नहीं किया जा सकता है।",
126 + "sort_by_modified_date": "पिछला संशोधन",
127 + "sort_by_created_date": "निर्माण तिथि",
128 + "sort_title": "सॉर्ट करें",
129 + "clear_conversation_title": "बातचीत साफ़ करें?",
130 + "clear_conversation_body": "यह इस बातचीत के सभी संदेशों को हटा देगा।",
131 + "clear": "साफ़ करें",
132 "label_completed": "{label} पूर्ण",
171 - "language_system_default": "सिस्टम डिफ़ॉल्ट",
172 - "last_error": "अंतिम त्रुटि:",
173 - "load": "लोड करें",
174 - "loaded_status": "लोड किया गया",
175 - "loading": "लोड हो रहा है...",
133 + "error_with_message": "त्रुटि: {error}",
134 + "preview_failed": "पूर्वावलोकन विफल: {error}",
135 "loading_model": "{modelId} लोड किया जा रहा है...",
177 - "loading_model_error": "त्रुटि: {error}",
178 - "manage_on_device_models": "ऑन-डिवाइस मॉडल प्रबंधित करें",
179 - "enable_smart_reply": "ऑन-डिवाइस स्मार्ट रिप्लाइ",
180 - "manage_servers": "सर्वर प्रबंधित करें",
181 - "manage_tts_models": "TTS मॉडल प्रबंधित करें",
182 - "max_tokens": "अधिकतम टोकन",
183 - "max_tokens_desc": "प्रतिक्रिया सीमा",
184 - "may_be_large": "इस डिवाइस के लिए बहुत बड़ा हो सकता है",
185 - "mcp_disabled_warning": "MCP वैश्विक रूप से अक्षम है। इन सुविधाओं का उपयोग करने के लिए सेटिंग्स में इसे सक्षम करें।",
186 - "mcp_enable_chat": "इस चैट के लिए MCP सक्षम करें",
187 - "mcp_label_placeholder": "लेबल",
188 - "mcp_tab": "MCP",
189 - "mcp_url_placeholder": "URL (https://...)",
190 - "memory_critical": "महत्वपूर्ण",
191 - "memory_healthy": "स्वस्थ",
192 - "memory_low": "कम",
193 - "message_options": "संदेश विकल्प",
194 - "model_deepseek": "DeepSeek R1 Distill Qwen 1.5B",
195 - "model_deepseek_desc": "तर्क और विचार-श्रृंखला मॉडल। तार्किक कार्यों के लिए सर्वोत्तम।",
196 - "model_gemma": "Gemma 4 E2B Instruct",
197 - "model_gemma_desc": "गूगल का फ्लैगशिप मॉडल। उच्चतम गुणवत्ता, अधिक रैम की आवश्यकता है।",
198 - "model_license_apache": "Apache-2.0",
199 - "model_license_mit": "MIT",
200 - "model_load_failed": "मॉडल लोड करने में विफल: {error}",
136 "model_loaded": "मॉडल लोड किया गया: {modelId} ({backend})",
202 - "model_qwen_25": "Qwen 2.5 1.5B Instruct",
203 - "model_qwen_25_desc": "संतुलित गुणवत्ता और आकार। सामान्य बातचीत के लिए अच्छा है।",
204 - "model_qwen_3": "Qwen 3 0.6B",
205 - "model_qwen_3_desc": "सबसे छोटा सामान्य प्रयोजन चैट मॉडल। त्वरित प्रतिक्रियाएं, कम मेमोरी उपयोग।",
206 - "model_unload_failed": "मॉडल अनलोड करने में विफल: {error}",
207 - "model_unloaded_ollama": "कीप-अलाइव (keep-alive) समय बीतने के बाद {name} को अनलोड कर दिया जाएगा",
208 - "model_unloaded_success": "{name} सफलतापूर्वक अनलोड हो गया",
209 - "more": "अधिक",
210 - "my_persona_hint": "मेरा चरित्र",
211 - "my_server_hint": "मेरा सर्वर",
212 - "name_label": "नाम",
213 - "name_length_validation": "नाम 50 वर्ण या उससे कम होना चाहिए",
214 - "name_max_50": "अधिकतम 50 वर्ण",
215 - "name_required": "नाम आवश्यक है",
137 + "no_model_loaded": "कोई मॉडल लोड नहीं है। मॉडल डाउनलोड और लोड करने के लिए \"ऑन-डिवाइस मॉडल प्रबंधित करें\" पर टैप करें।",
138 + "loading_model_error": "त्रुटि: {error}",
139 + "delete_conversation": "बातचीत हटाएं?",
140 "nav_history": "इतिहास",
141 + "nav_servers": "सर्वर",
142 "nav_local_models": "स्थानीय मॉडल",
218 - "nav_new_chat": "नई चैट",
143 + "nav_tts": "टेक्स्ट टू स्पीच",
144 "nav_personas": "चरित्र (Personas)",
220 - "nav_servers": "सर्वर",
145 "nav_settings": "सेटिंग्स",
222 - "nav_tts": "टेक्स्ट टू स्पीच",
223 - "new_chat_mcp_default": "नई चैट MCP डिफ़ॉल्ट",
224 - "no_conversations_yet": "अभी तक कोई बातचीत नहीं",
225 - "no_model_loaded": "कोई मॉडल लोड नहीं है। मॉडल डाउनलोड और लोड करने के लिए \"ऑन-डिवाइस मॉडल प्रबंधित करें\" पर टैप करें।",
226 - "no_models_available": "कोई मॉडल उपलब्ध नहीं है",
227 - "no_models_match": "\"{searchQuery}\" से मेल खाने वाला कोई मॉडल नहीं मिला",
228 - "no_personas_desc": "AI के व्यवहार को अनुकूलित करने के लिए अपना पहला चरित्र बनाएं।",
229 - "no_personas_found": "कोई चरित्र नहीं मिला",
230 - "no_prompt_placeholder": "अभी तक कोई प्रॉम्ट नहीं...",
231 - "no_results_found": "कोई परिणाम नहीं मिला",
232 - "no_server_connected": "कोई सर्वर कनेक्ट नहीं है",
146 + "nav_new_chat": "नई चैट",
147 + "search_hint": "बातचीत खोजें...",
148 "no_server_selected": "कोई सर्वर चयनित नहीं है",
234 - "no_servers_desc": "AI मॉडल के साथ चैट करना शुरू करने के लिए अपना पहला सर्वर जोड़ें।",
235 - "no_servers_yet": "अभी तक कोई सर्वर नहीं है",
236 - "none": "कोई नहीं",
237 - "none_selected": "कोई चयनित नहीं है",
238 - "not_downloaded": "डाउनलोड नहीं किया गया",
239 - "not_installed": "इंस्टॉल नहीं किया गया",
240 - "not_now": "अभी नहीं",
241 - "notification_benefit_background": "पृष्ठभूमि कार्यों की स्थिति",
242 - "notification_benefit_completions": "उत्पादन पूर्णता",
243 - "notification_benefit_downloads": "मॉडल डाउनलोड प्रगति",
244 - "offline": "ऑफ़लाइन",
245 - "older_section": "पुराने",
246 - "on_device_android_only": "ऑन-डिवाइस अनुमान वर्तमान में केवल Android पर उपलब्ध है।",
247 - "on_device_models_title": "ऑन-डिवाइस मॉडल",
248 - "onboarding_choose_language": "भाषा चुनें",
249 - "onboarding_choose_language_desc": "अपनी पसंदीदा भाषा चुनें। आप इसे सेटिंग्स में कभी भी बदल सकते हैं।",
250 - "onboarding_connect_desc": "अपना निजी AI अनुभव शुरू करने के लिए\nLM Studio, Ollama, या OpenRouter से\nकनेक्ट करें।",
251 - "onboarding_connect_server": "अपना सर्वर\nकनेक्ट करें",
252 - "onboarding_localmind": "LOCALMIND",
253 - "onboarding_welcome": "LocalMind में आपका स्वागत है",
254 - "online": "ऑनलाइन",
149 + "switch_server": "सर्वर बदलें",
150 + "switch_server_subtitle": "कनेक्ट करने के लिए एक सर्वर चुनें",
151 + "manage_servers": "सर्वर प्रबंधित करें",
152 "open_source": "ओपन सोर्स",
153 "open_source_desc": "LocalMind ओपन सोर्स है। गिटहब (GitHub) पर हमारी प्रगति का अनुसरण करें या योगदान दें।",
154 + "star_on_github": "GitHub पर स्टार दें",
155 "add_more": "और जोड़ें",
156 "on_github": "GitHub पर",
157 "could_not_open_github": "GitHub नहीं खोल सका।",
260 - "openai_compatible_api": "OpenAI-संगत API",
261 - "https_requires_ssl": "HTTPS के लिए SSL आवश्यक है",
262 - "most_local_setups_use_http": "ज़्यादातर स्थानीय सेटअप में http:// इस्तेमाल होता है",
263 - "options_tooltip": "विकल्प",
158 + "settings_title": "सेटिंग्स",
159 + "settings_appearance": "दिखावट",
160 + "settings_language": "भाषा",
161 + "language_system_default": "सिस्टम डिफ़ॉल्ट",
162 + "settings_tts": "टेक्स्ट-टू-स्पीच",
163 + "settings_behavior": "व्यवहार",
164 + "settings_on_device": "ऑन-डिवाइस अनुमान (On-Device Inference)",
165 + "settings_default_server": "डिफ़ॉल्ट सर्वर",
166 + "settings_default_persona": "डिफ़ॉल्ट चरित्र",
167 + "settings_privacy": "गोपनीयता",
168 + "settings_data_management": "डेटा प्रबंधन",
169 + "settings_about": "परिचय",
170 + "theme": "थीम",
171 + "theme_system": "सिस्टम",
172 + "theme_light": "लाइट",
173 + "theme_dark": "डार्क",
174 + "theme_claude": "Claude",
175 + "font_size": "फ़ॉन्ट का आकार",
176 + "font_size_desc": "चैट में टेक्स्ट का आकार समायोजित करें।",
177 + "font_preview": "त्वरित भूरी लोमड़ी आलसी कुत्ते के ऊपर से कूदती है।",
178 + "code_theme_dark": "कोड थीम (डार्क)",
179 + "code_theme_light": "कोड थीम (लाइट)",
180 + "code_theme_desc": "कोड ब्लॉक के लिए सिंटैक्स हाइलाइटिंग थीम चुनें।",
181 + "tts_engine": "TTS इंजन",
182 + "tts_engine_system": "सिस्टम TTS",
183 + "tts_engine_kitten": "Kitten TTS",
184 + "voice": "आवाज",
185 + "voice_female": "महिला",
186 + "voice_male": "पुरुष",
187 + "voice_other": "अन्य",
188 + "tts_speed": "TTS गति",
189 + "tts_speed_desc": "प्लेबैक की गति समायोजित करें।",
190 + "manage_tts_models": "TTS मॉडल प्रबंधित करें",
191 + "manage_on_device_models": "ऑन-डिवाइस मॉडल प्रबंधित करें",
192 + "enable_smart_reply": "ऑन-डिवाइस स्मार्ट रिप्लाइ",
193 + "ai_user_response_enabled": "एआई उपयोगकर्ता संदेश (भेजें बटन दबाकर रखें)",
194 + "ai_user_response_enabled_desc": "एआई से अपना अगला संदेश लिखवाने और भेजने के लिए भेजें बटन को 3 सेकंड के लिए दबाकर रखें",
195 + "ai_user_response_tooltip": "एआई के साथ उपयोगकर्ता संदेश जनरेट करें",
196 + "streaming_responses": "प्रतिक्रियाएं स्ट्रीम करें",
197 + "auto_generate_titles": "स्वचालित रूप से शीर्षक उत्पन्न करें",
198 + "send_on_enter": "एंटर (Enter) दबाने पर भेजें",
199 + "show_system_messages": "सिस्टम संदेश दिखाएं",
200 + "show_system_messages_desc": "जब कोई व्यक्तित्व चयनित न हो, तो प्रत्येक अनुरोध के साथ एक डिफ़ॉल्ट सहायक सिस्टम प्रॉम्प्ट भेजें",
201 + "show_system_messages_in_chat": "चैट में सिस्टम संदेश दिखाएं",
202 + "show_system_messages_in_chat_desc": "चैट ट्रांसक्रिप्ट में दृश्यमान बुलबुले के रूप में सिस्टम संदेश (जैसे आयातित बैकअप से) प्रदर्शित करें",
203 + "haptic_feedback": "हैप्टिक फीडबैक",
204 + "enable_mcp": "MCP सक्षम करें",
205 + "new_chat_mcp_default": "नई चैट MCP डिफ़ॉल्ट",
206 + "show_data_indicator": "डेटा सूचक दिखाएं",
207 + "privacy_info": "\"LocalMind आपके डेटा को कभी नहीं देखता है\"",
208 + "delete_all_conversations": "सभी बातचीत हटाएं",
209 + "reset_settings_defaults": "सेटिंग्स को डिफ़ॉल्ट पर रीसेट करें",
210 + "chat_title": "LocalMind",
211 + "chat_parameters_tooltip": "चैट पैरामीटर",
212 + "change_persona": "चरित्र बदलें",
213 + "set_persona": "चरित्र सेट करें",
214 + "remove_persona": "चरित्र हटाएं",
215 + "clear_conversation": "बातचीत साफ़ करें",
216 + "connection_error": "कनेक्शन त्रुटि। अपने सर्वर की जांच करें।",
217 + "disconnected": "सर्वर से कनेक्शन टूट गया।",
218 + "configure": "कॉन्फ़िगर करें",
219 + "select_model": "मॉडल चुनें",
220 + "select_persona": "चरित्र चुनें",
221 + "manage_personas": "व्यक्तित्व प्रबंधित करें",
222 + "personas_combine_hint": "चयनित व्यक्तित्वों को मिला दिया जाएगा",
223 + "start_conversation": "बातचीत शुरू करें",
224 + "recent_chats": "हालिया चैट",
225 + "see_all": "सभी देखें",
226 + "quick_write": "मुझे एक फ़ंक्शन लिखने में मदद करें",
227 + "quick_explain": "इस कोड को समझाएं",
228 + "quick_debug": "इसे मेरे लिए डीबग करें",
229 + "quick_async": "मैं async/await का उपयोग कैसे करूं?",
230 + "history_missing_title": "इतिहास गायब है",
231 + "history_missing_desc": "या तो इस चैट के संदेश हटा दिए गए थे या इतिहास रिकॉर्ड दूषित हो गया है।",
232 + "technical_details": "तकनीकी विवरण",
233 + "last_error": "अंतिम त्रुटि:",
234 + "copy_info": "जानकारी कॉपी करें",
235 + "conversation_id": "बातचीत आईडी",
236 + "created_at": "निर्माण का समय",
237 + "expected_messages": "अपेक्षित संदेश",
238 + "debug_dialog_desc": "सिंक्रनाइज़ेशन समस्याओं की पहचान करने में सहायता के लिए नैदानिक जानकारी।",
239 + "chat_input_hint": "कुछ भी पूछें",
240 + "send_message_tooltip": "संदेश भेजें",
241 + "stop_generation_tooltip": "उत्पादन रोकें",
242 + "attach_images_tooltip": "छवियाँ संलग्न करें",
243 + "start_listening_tooltip": "सुनना शुरू करें",
244 + "stop_listening_tooltip": "सुनना बंद करें",
245 + "tool_label": "उपकरण: {toolCallId}",
246 + "tool_unknown": "उपकरण: अज्ञात",
247 + "message_options": "संदेश विकल्प",
248 + "copy_markdown": "Markdown के रूप में कॉपी करें",
249 + "copied_markdown": "Markdown के रूप में कॉपी किया गया",
250 + "read_aloud": "ज़ोर से पढ़ें",
251 + "stop_reading": "पढ़ना बंद करें",
252 + "more": "अधिक",
253 + "character_count": "{length} वर्ण",
254 + "edit_message": "संदेश संपादित करें",
255 + "edit_message_desc": "सहेजने से नीचे सहायक की प्रतिक्रिया हट जाएगी और पुनः उत्पन्न होगी।",
256 + "save_regenerate": "सहेजें और पुनः उत्पन्न करें",
257 + "chat_settings_title": "चैट सेटिंग्स",
258 + "reset_defaults": "डिफ़ॉल्ट पर रीसेट करें",
259 "parameters_tab": "पैरामीटर",
265 - "pause": "विराम दें",
266 - "paused_progress": "रोका गया - {percent}%",
267 - "persona_builtin_section": "इन-बिल्ट",
268 - "persona_category_coding": "कोडिंग",
269 - "persona_category_creative": "रचनात्मक",
270 - "persona_category_education": "शिक्षा",
271 - "persona_category_general": "सामान्य",
272 - "persona_created": "चरित्र निर्मित",
273 - "persona_my_section": "मेरे चरित्र (Personas)",
274 - "persona_updated": "चरित्र अद्यतित (updated)",
275 - "personas_title": "चरित्र (Personas)",
276 - "pin": "पिन करें",
260 + "mcp_tab": "MCP",
261 + "temperature": "तापमान",
262 + "temperature_desc": "यादृच्छिकता को नियंत्रित करता है: उच्च = रचनात्मक, निम्न = केंद्रित",
263 + "top_p": "Top P",
264 + "top_p_desc": "न्यूक्लियस सैंपलिंग थ्रेशोल्ड",
265 + "max_tokens": "अधिकतम टोकन",
266 + "max_tokens_desc": "प्रतिक्रिया सीमा",
267 + "context_length": "संदर्भ लंबाई (Context Length)",
268 + "context_length_desc": "इतिहास विंडो",
269 + "mcp_disabled_warning": "MCP वैश्विक रूप से अक्षम है। इन सुविधाओं का उपयोग करने के लिए सेटिंग्स में इसे सक्षम करें।",
270 + "mcp_enable_chat": "इस चैट के लिए MCP सक्षम करें",
271 + "auto_execute_tools": "स्वचालित रूप से उपकरण निष्पादित करें",
272 + "beta_label": "बीटा",
273 + "experimental_label": "प्रायोगिक",
274 + "add_ephemeral_mcp": "अस्थायी MCP सर्वर जोड़ें",
275 + "mcp_label_placeholder": "लेबल",
276 + "mcp_url_placeholder": "URL (https://...)",
277 + "active_integrations": "सक्रिय एकीकरण",
278 + "enable_notifications": "सूचनाएं सक्षम करें",
279 + "enable_notifications_desc": "मॉडल डाउनलोड पूरा होने पर सूचित किया जाए।",
280 + "chat_history_title": "चैट इतिहास",
281 + "conversation_just_now": "अभी-अभी",
282 + "conversation_minutes_ago": "{minutes} मिनट पहले",
283 + "conversation_hours_ago": "{hours} घंटे पहले",
284 + "conversation_yesterday": "कल",
285 + "conversation_days_ago": "{days} दिन पहले",
286 + "conversation_date": "{month}/{day}/{year}",
287 + "options_tooltip": "विकल्प",
288 + "no_results_found": "कोई परिणाम नहीं मिला",
289 + "no_conversations_yet": "अभी तक कोई बातचीत नहीं",
290 + "try_different_search": "कोई अन्य खोज शब्द आज़माएं",
291 + "start_new_conversation": "नई बातचीत शुरू करें",
292 + "rename_conversation": "बातचीत का नाम बदलें",
293 + "enter_new_title": "नया शीर्षक दर्ज करें",
294 "pinned_section": "पिन किया गया",
278 - "port_invalid": "एक संख्या होनी चाहिए",
295 + "today_section": "आज",
296 + "yesterday_section": "कल",
297 + "previous_7_days": "पिछले 7 दिन",
298 + "previous_30_days": "पिछले 30 दिन",
299 + "older_section": "पुराने",
300 + "onboarding_choose_language": "भाषा चुनें",
301 + "onboarding_choose_language_desc": "अपनी पसंदीदा भाषा चुनें। आप इसे सेटिंग्स में कभी भी बदल सकते हैं।",
302 + "onboarding_localmind": "LOCALMIND",
303 + "onboarding_connect_server": "अपना सर्वर\nकनेक्ट करें",
304 + "onboarding_connect_desc": "अपना निजी AI अनुभव शुरू करने के लिए\nLM Studio, Ollama, या OpenRouter से\nकनेक्ट करें।",
305 + "openai_compatible_api": "OpenAI-संगत API",
306 + "https_requires_ssl": "HTTPS के लिए SSL आवश्यक है",
307 + "most_local_setups_use_http": "ज़्यादातर स्थानीय सेटअप में http:// इस्तेमाल होता है",
308 + "onboarding_welcome": "LocalMind में आपका स्वागत है",
309 + "server_type_on_device": "ऑन-डिवाइस",
310 + "server_type_lm_studio": "LM Studio",
311 + "server_type_ollama": "Ollama",
312 + "server_type_openrouter": "OpenRouter",
313 + "server_type_openrouter_sub": "एकीकृत क्लाउड",
314 + "ready_continue": "जारी रखने के लिए तैयार",
315 + "waiting_selection": "चयन की प्रतीक्षा की जा रही है",
316 + "setup_connection": "कनेक्शन सेटअप करें",
317 + "setup_connection_desc": "चैटिंग शुरू करने के लिए अपने {server} सर्वर को कॉन्फ़िगर करें।",
318 + "server_name": "सर्वर का नाम",
319 + "name_required": "नाम आवश्यक है",
320 + "name_max_50": "अधिकतम 50 वर्ण",
321 + "host_label": "होस्ट / IP पता",
322 + "host_required": "होस्ट आवश्यक है",
323 "port_label": "पोर्ट",
280 - "port_range": "एक वैध पोर्ट दर्ज करें (1-65535)",
324 "port_required": "पोर्ट आवश्यक है",
282 - "preparing_app": "ऐप तैयार किया जा रहा है...",
283 - "preview": "पूर्वावलोकन",
284 - "preview_failed": "पूर्वावलोकन विफल: {error}",
285 - "previous_30_days": "पिछले 30 दिन",
286 - "previous_7_days": "पिछले 7 दिन",
287 - "privacy_info": "\"LocalMind आपके डेटा को कभी नहीं देखता है\"",
288 - "proceed_anyway": "वैसे भी आगे बढ़ें",
289 - "processing": "प्रसंस्करण किया जा रहा है...",
290 - "prompt_hint": "आप एक सहायक हैं...",
291 - "prompt_max_chars": "अधिकतम 4000 वर्ण",
292 - "prompt_required": "सिस्टम प्रॉम्ट आवश्यक है",
293 - "quick_async": "मैं async/await का उपयोग कैसे करूं?",
294 - "quick_debug": "इसे मेरे लिए डीबग करें",
295 - "quick_explain": "इस कोड को समझाएं",
296 - "quick_write": "मुझे एक फ़ंक्शन लिखने में मदद करें",
325 + "port_invalid": "एक संख्या होनी चाहिए",
326 + "port_range": "एक वैध पोर्ट दर्ज करें (1-65535)",
327 + "api_key_required": "API कुंजी *",
328 + "api_key_optional": "API कुंजी (वैकल्पिक)",
329 + "api_key_required_openrouter": "OpenRouter के लिए API कुंजी आवश्यक है",
330 + "api_key_format": "OpenRouter API कुंजियाँ sk- से शुरू होती हैं",
331 + "my_server_hint": "मेरा सर्वर",
332 + "name_length_validation": "नाम 50 वर्ण या उससे कम होना चाहिए",
333 + "host_valid": "एक वैध होस्टनाम या IP पता दर्ज करें",
334 + "api_key_hint_openrouter": "sk-...",
335 + "api_key_hint_generic": "प्रमाणित सर्वर के लिए",
336 + "update_server": "सर्वर अपडेट करें",
337 + "save_server": "सर्वर सहेजें",
338 + "server_updated": "सर्वर अपडेट किया गया",
339 + "server_added": "सर्वर जोड़ा गया",
340 + "download_model_title": "मॉडल डाउनलोड करें",
341 + "download_model_desc": "डाउनलोड करने के लिए एक मॉडल चुनें।\nयह आपके डिवाइस पर स्थानीय रूप से चलेगा।",
342 + "on_device_android_only": "ऑन-डिवाइस अनुमान वर्तमान में केवल Android पर उपलब्ध है।",
343 + "total_ram": "कुल रैम",
344 + "available": "उपलब्ध",
345 "ram_min_required": "न्यूनतम {fileSize} GB रैम (RAM) आवश्यक",
298 - "ram_usage": "रैम का उपयोग",
299 - "ram_used": "{percent}% प्रयुक्त",
300 - "ram_warning": "रैम चेतावनी",
346 + "download_progress": "{percent}% • {speed}",
347 + "eta_label": "शेष समय (ETA): {eta}",
348 + "paused_progress": "रोका गया - {percent}%",
349 "ram_warning_body_download": "इस मॉडल के लिए कम से कम {ram} GB रैम की आवश्यकता है, लेकिन आपके डिवाइस में {totalMemory} है। यह सही ढंग से काम नहीं कर सकता है या ऐप क्रैश हो सकता है।",
350 "ram_warning_body_load": "आपके डिवाइस में {availableRAM} उपलब्ध रैम है, लेकिन यह मॉडल कम से कम {ram} GB की सिफारिश करता है। इसे लोड करना विफल हो सकता है या अस्थिरता पैदा कर सकता है।",
303 - "range_0_1": "0.0-1.0",
304 - "range_0_2": "0.0-2.0",
305 - "read_aloud": "ज़ोर से पढ़ें",
306 - "ready": "तैयार",
307 - "ready_continue": "जारी रखने के लिए तैयार",
308 - "recent_chats": "हालिया चैट",
309 - "recommended": "अनुशंसित",
310 - "refresh_models": "मॉडल रीफ्रेश करें",
311 - "remove_persona": "चरित्र हटाएं",
312 - "rename": "नाम बदलें",
313 - "rename_conversation": "बातचीत का नाम बदलें",
314 - "reset_defaults": "डिफ़ॉल्ट पर रीसेट करें",
315 - "reset_settings_defaults": "सेटिंग्स को डिफ़ॉल्ट पर रीसेट करें",
316 - "resume": "फिर से शुरू करें",
317 - "retry": "पुनः प्रयास करें",
318 - "save": "सहेजें",
319 - "save_changes": "बदलाव सहेजें",
320 - "save_continue": "सहेजें और जारी रखें",
321 - "save_regenerate": "सहेजें और पुनः उत्पन्न करें",
322 - "save_server": "सर्वर सहेजें",
323 - "search_hint": "बातचीत खोजें...",
324 - "search_icons_hint": "आइकन खोजें...",
325 - "search_models_hint": "मॉडल खोजें...",
326 - "see_all": "सभी देखें",
327 - "select": "चुनें",
351 + "choose_theme": "थीम चुनें",
352 + "choose_theme_desc": "ऐप के रूप को निजीकृत करें। आप इसे बाद में सेटिंग्स में कभी भी बदल सकते हैं।",
353 + "theme_card_system": "सिस्टम",
354 + "theme_card_system_sub": "आपके डिवाइस की सेटिंग्स से मेल खाता है",
355 + "theme_card_light": "लाइट",
356 + "theme_card_light_sub": "साफ़ और उज्ज्वल",
357 + "theme_card_dark": "डार्क",
358 + "theme_card_dark_sub": "आँखों के लिए आरामदायक",
359 + "theme_card_claude": "Claude",
360 + "theme_card_claude_sub": "एक हल्का नारंगी-पीला (peach) थीम",
361 + "stay_updated": "अपडेट रहें",
362 + "stay_updated_desc": "जब आपके AI मॉडल डाउनलोड हो जाएं या लंबे समय तक चलने वाले कार्य पूरे हो जाएं तो सूचित किया जाए।",
363 + "notification_benefit_downloads": "मॉडल डाउनलोड प्रगति",
364 + "notification_benefit_completions": "उत्पादन पूर्णता",
365 + "notification_benefit_background": "पृष्ठभूमि कार्यों की स्थिति",
366 + "allow_notifications": "सूचनाओं की अनुमति दें",
367 + "servers_title": "सर्वर",
368 + "no_servers_yet": "अभी तक कोई सर्वर नहीं है",
369 + "no_servers_desc": "AI मॉडल के साथ चैट करना शुरू करने के लिए अपना पहला सर्वर जोड़ें।",
370 + "add_server": "सर्वर जोड़ें",
371 + "switched_to_server": "{name} पर स्विच किया गया",
372 + "edit_server": "सर्वर संपादित करें",
373 + "add_server_title": "सर्वर जोड़ें",
374 + "server_type_label": "सर्वर का प्रकार",
375 + "server_icon_label": "सर्वर आइकन",
376 + "default_icon": "डिफ़ॉल्ट आइकन",
377 + "server_type_lm_studio_display": "LM Studio",
378 + "server_type_openai_display": "OpenAI संगत",
379 + "server_type_ollama_display": "Ollama",
380 + "server_type_openrouter_display": "OpenRouter",
381 + "server_type_on_device_display": "ऑन-डिवाइस",
382 + "server_address_openrouter": "openrouter.ai",
383 + "server_address_on_device": "स्थानीय अनुमान (Local Inference)",
384 + "server_address_format": "{host}:{port}",
385 + "default_badge": "डिफ़ॉल्ट",
386 + "set_as_default": "डिफ़ॉल्ट रूप में सेट करें",
387 "select_icon": "आइकन चुनें",
388 "select_icon_desc": "अपने सर्वर के लिए एक आइकन चुनें",
330 - "select_model": "मॉडल चुनें",
331 - "select_model_hint": "चैटिंग शुरू करने के लिए एक मॉडल चुनें",
332 - "select_model_title": "मॉडल चुनें",
333 - "select_persona": "चरित्र चुनें",
334 - "send_message_tooltip": "संदेश भेजें",
335 - "send_on_enter": "एंटर (Enter) दबाने पर भेजें",
336 - "server_added": "सर्वर जोड़ा गया",
337 - "server_address_format": "{host}:{port}",
338 - "server_address_on_device": "स्थानीय अनुमान (Local Inference)",
339 - "server_address_openrouter": "openrouter.ai",
340 - "server_icon_ai_brain": "AI ब्रेन",
341 - "server_icon_ai_brain2": "AI ब्रेन 02",
342 - "server_icon_ai_chat": "AI चैट",
343 - "server_icon_ai_cloud": "AI क्लाउड",
344 - "server_icon_ai_network": "AI नेटवर्क",
345 - "server_icon_alert": "चेतावनी वृत्त",
346 - "server_icon_api": "API",
347 - "server_icon_arrow_right": "दायाँ तीर 01",
348 - "server_icon_bot": "बॉट",
349 - "server_icon_bot2": "बॉट 02",
350 - "server_icon_cellular": "सेलुलर नेटवर्क",
351 - "server_icon_check": "सत्यापन वृत्त",
352 - "server_icon_chip": "चिप",
353 - "server_icon_chip2": "चिप 02",
389 + "search_icons_hint": "आइकन खोजें...",
390 + "server_icon_stack": "सर्वर स्टैक",
391 + "server_icon_stack2": "सर्वर स्टैक 02",
392 + "server_icon_stack3": "सर्वर स्टैक 03",
393 "server_icon_cloud": "क्लाउड",
355 - "server_icon_cloud_download": "क्लाउड डाउनलोड",
394 "server_icon_cloud_server": "क्लाउड सर्वर",
357 - "server_icon_cloud_upload": "क्लाउड अपलोड",
358 - "server_icon_code": "कोड",
359 - "server_icon_computer": "कंप्यूटर",
360 - "server_icon_cpu": "CPU",
395 + "server_icon_mcp": "MCP सर्वर",
396 "server_icon_database": "डेटाबेस",
397 "server_icon_database1": "डेटाबेस 01",
398 "server_icon_database2": "डेटाबेस 02",
364 - "server_icon_drive": "ड्राइव",
365 - "server_icon_file1": "फ़ाइल 01",
366 - "server_icon_folder1": "फ़ोल्डर 01",
367 - "server_icon_folder2": "फ़ोल्डर 02",
368 - "server_icon_globe": "ग्लोब",
369 - "server_icon_hard_drive": "हार्ड ड्राइव",
370 - "server_icon_home1": "होम 01",
371 - "server_icon_home2": "होम 02",
372 - "server_icon_info": "सूचना वृत्त",
373 - "server_icon_key": "कुंजी 01",
374 - "server_icon_label": "सर्वर आइकन",
399 + "server_icon_cpu": "CPU",
400 + "server_icon_chip": "चिप",
401 + "server_icon_chip2": "चिप 02",
402 + "server_icon_computer": "कंप्यूटर",
403 "server_icon_laptop": "लैपटॉप",
376 - "server_icon_link": "लिंक 01",
377 - "server_icon_lock": "लॉक",
378 - "server_icon_mcp": "MCP सर्वर",
404 + "server_icon_terminal": "कंप्यूटर टर्मिनल",
405 + "server_icon_code": "कोड",
406 + "server_icon_ai_brain": "AI ब्रेन",
407 + "server_icon_ai_brain2": "AI ब्रेन 02",
408 + "server_icon_ai_cloud": "AI क्लाउड",
409 + "server_icon_ai_network": "AI नेटवर्क",
410 + "server_icon_ai_chat": "AI चैट",
411 + "server_icon_cellular": "सेलुलर नेटवर्क",
412 "server_icon_plug1": "प्लग 01",
413 "server_icon_plug2": "प्लग 02",
381 - "server_icon_refresh": "रीफ्रेश करें",
414 + "server_icon_bot": "बॉट",
415 + "server_icon_bot2": "बॉट 02",
416 "server_icon_robotic": "रोबोटिक",
417 "server_icon_rocket": "रॉकेट",
418 + "server_icon_star": "स्टार",
419 "server_icon_settings1": "सेटिंग्स 01",
420 "server_icon_settings2": "सेटिंग्स 02",
386 - "server_icon_stack": "सर्वर स्टैक",
387 - "server_icon_stack2": "सर्वर स्टैक 02",
388 - "server_icon_stack3": "सर्वर स्टैक 03",
389 - "server_icon_star": "स्टार",
390 - "server_icon_terminal": "कंप्यूटर टर्मिनल",
391 - "server_icon_zap": "जैप",
392 - "server_name": "सर्वर का नाम",
393 - "server_type_label": "सर्वर का प्रकार",
394 - "server_type_lm_studio": "LM Studio",
395 - "server_type_lm_studio_display": "LM Studio",
396 - "server_type_lm_studio_sub": "स्थानीय API",
397 - "server_type_ollama": "Ollama",
398 - "server_type_ollama_display": "Ollama",
399 - "server_type_ollama_sub": "CLI इंजन",
400 - "server_type_on_device": "ऑन-डिवाइस",
401 - "server_type_on_device_display": "ऑन-डिवाइस",
402 - "server_type_on_device_sub": "किसी सर्वर की आवश्यकता नहीं है",
403 - "server_type_openai_display": "OpenAI संगत",
404 - "server_type_openrouter": "OpenRouter",
405 - "server_type_openrouter_display": "OpenRouter",
406 - "server_type_openrouter_sub": "एकीकृत क्लाउड",
407 - "server_updated": "सर्वर अपडेट किया गया",
408 - "servers_title": "सर्वर",
409 - "set_as_default": "डिफ़ॉल्ट रूप में सेट करें",
410 - "set_persona": "चरित्र सेट करें",
411 - "settings_about": "परिचय",
412 - "settings_appearance": "दिखावट",
413 - "settings_behavior": "व्यवहार",
414 - "settings_data_management": "डेटा प्रबंधन",
415 - "settings_default_persona": "डिफ़ॉल्ट चरित्र",
416 - "settings_default_server": "डिफ़ॉल्ट सर्वर",
417 - "settings_language": "भाषा",
418 - "settings_on_device": "ऑन-डिवाइस अनुमान (On-Device Inference)",
419 - "settings_privacy": "गोपनीयता",
420 - "settings_title": "सेटिंग्स",
421 - "settings_tts": "टेक्स्ट-टू-स्पीच",
422 - "setup_connection": "कनेक्शन सेटअप करें",
423 - "setup_connection_desc": "चैटिंग शुरू करने के लिए अपने {server} सर्वर को कॉन्फ़िगर करें।",
424 - "share": "साझा करें",
425 - "show_data_indicator": "डेटा सूचक दिखाएं",
426 - "show_system_messages": "सिस्टम संदेश दिखाएं",
427 - "skip": "छोड़ें",
428 - "something_went_wrong": "कुछ गलत हो गया",
429 - "star_on_github": "GitHub पर स्टार दें",
430 - "start_conversation": "बातचीत शुरू करें",
431 - "start_new_chat": "नई चैट शुरू करें",
432 - "start_new_conversation": "नई बातचीत शुरू करें",
433 - "startup_failed": "स्टार्टअप विफल रहा",
434 - "stay_updated": "अपडेट रहें",
435 - "stay_updated_desc": "जब आपके AI मॉडल डाउनलोड हो जाएं या लंबे समय तक चलने वाले कार्य पूरे हो जाएं तो सूचित किया जाए।",
436 - "stop": "रोकें",
437 - "stop_generation_tooltip": "उत्पादन रोकें",
438 - "stop_reading": "पढ़ना बंद करें",
439 - "streaming_responses": "प्रतिक्रियाएं स्ट्रीम करें",
440 - "switch_server": "सर्वर बदलें",
441 - "switch_server_subtitle": "कनेक्ट करने के लिए एक सर्वर चुनें",
442 - "switched_to_server": "{name} पर स्विच किया गया",
421 + "server_icon_home1": "होम 01",
422 + "server_icon_home2": "होम 02",
423 + "server_icon_folder1": "फ़ोल्डर 01",
424 + "server_icon_folder2": "फ़ोल्डर 02",
425 + "server_icon_file1": "फ़ाइल 01",
426 + "server_icon_lock": "लॉक",
427 + "server_icon_key": "कुंजी 01",
428 + "server_icon_link": "लिंक 01",
429 + "server_icon_globe": "ग्लोब",
430 + "server_icon_api": "API",
431 + "server_icon_arrow_right": "दायाँ तीर 01",
432 + "server_icon_check": "सत्यापन वृत्त",
433 + "server_icon_alert": "चेतावनी वृत्त",
434 + "server_icon_info": "सूचना वृत्त",
435 + "server_icon_zap": "जैप",
436 + "server_icon_cloud_upload": "क्लाउड अपलोड",
437 + "server_icon_cloud_download": "क्लाउड डाउनलोड",
438 + "server_icon_refresh": "रीफ्रेश करें",
439 + "server_icon_hard_drive": "हार्ड ड्राइव",
440 + "server_icon_drive": "ड्राइव",
441 + "personas_title": "चरित्र (Personas)",
442 + "persona_category_general": "सामान्य",
443 + "persona_category_coding": "कोडिंग",
444 + "persona_category_education": "शिक्षा",
445 + "persona_category_creative": "रचनात्मक",
446 + "persona_builtin_section": "इन-बिल्ट",
447 + "persona_my_section": "मेरे चरित्र (Personas)",
448 + "clone_edit": "क्लोन और संपादित करें",
449 + "builtin_badge": "इन-बिल्ट",
450 + "no_personas_found": "कोई चरित्र नहीं मिला",
451 + "no_personas_desc": "AI के व्यवहार को अनुकूलित करने के लिए अपना पहला चरित्र बनाएं।",
452 + "edit_persona": "चरित्र संपादित करें",
453 + "create_persona": "चरित्र बनाएं",
454 + "create_persona_button": "बनाएं",
455 + "emoji_label": "इमोजी",
456 + "name_label": "नाम",
457 + "my_persona_hint": "मेरा चरित्र",
458 + "category_label": "श्रेणी",
459 + "description_optional": "विवरण (वैकल्पिक)",
460 + "description_hint": "यह चरित्र क्या करता है...",
461 "system_prompt": "सिस्टम प्रॉम्ट",
444 - "technical_details": "तकनीकी विवरण",
445 - "temp_hint": "0.7",
446 - "temperature": "तापमान",
447 - "temperature_desc": "यादृच्छिकता को नियंत्रित करता है: उच्च = रचनात्मक, निम्न = केंद्रित",
462 + "character_count_max": "{currentLen}/4000",
463 + "no_prompt_placeholder": "अभी तक कोई प्रॉम्ट नहीं...",
464 + "prompt_hint": "आप एक सहायक हैं...",
465 + "prompt_required": "सिस्टम प्रॉम्ट आवश्यक है",
466 + "prompt_max_chars": "अधिकतम 4000 वर्ण",
467 + "advanced_settings": "उन्नत सेटिंग्स",
468 "temperature_label": "तापमान (0.0-2.0)",
449 - "test_connection": "कनेक्शन का परीक्षण करें",
450 - "test_notification_body": "यह मॉडल डाउनलोड प्रगति के लिए एक परीक्षण सूचना है।",
451 - "test_notification_title": "परीक्षण सूचना",
452 - "testing": "परीक्षण किया जा रहा है...",
453 - "theme": "थीम",
454 - "theme_card_claude": "Claude",
455 - "theme_card_claude_sub": "एक हल्का नारंगी-पीला (peach) थीम",
456 - "theme_card_dark": "डार्क",
457 - "theme_card_dark_sub": "आँखों के लिए आरामदायक",
458 - "theme_card_light": "लाइट",
459 - "theme_card_light_sub": "साफ़ और उज्ज्वल",
460 - "theme_card_system": "सिस्टम",
461 - "theme_card_system_sub": "आपके डिवाइस की सेटिंग्स से मेल खाता है",
462 - "theme_claude": "Claude",
463 - "theme_dark": "डार्क",
464 - "theme_light": "लाइट",
465 - "theme_system": "सिस्टम",
466 - "thinking": "सोच रहा है",
467 - "today_section": "आज",
468 - "tool_label": "उपकरण: {toolCallId}",
469 - "tool_unknown": "उपकरण: अज्ञात",
470 - "top_p": "Top P",
471 - "top_p_desc": "न्यूक्लियस सैंपलिंग थ्रेशोल्ड",
472 - "top_p_hint": "0.9",
469 "top_p_label": "Top P (0.0-1.0)",
474 - "total_capacity": "कुल क्षमता",
475 - "total_ram": "कुल रैम",
476 - "try_different_search": "कोई अन्य खोज शब्द आज़माएं",
477 - "tts_engine": "TTS इंजन",
478 - "tts_engine_kitten": "Kitten TTS",
479 - "tts_engine_system": "सिस्टम TTS",
480 - "tts_kitten_desc": "8 अभिव्यंजक आवाज़ों के साथ बिजली की तरह तेज़ न्यूरल TTS।\n{size} डाउनलोड की आवश्यकता है।",
470 + "temp_hint": "0.7",
471 + "top_p_hint": "0.9",
472 + "range_0_2": "0.0-2.0",
473 + "range_0_1": "0.0-1.0",
474 + "persona_updated": "चरित्र अद्यतित (updated)",
475 + "persona_created": "चरित्र निर्मित",
476 "tts_models_title": "टेक्स्ट टू स्पीच मॉडल",
482 - "tts_piper_desc": "2 अभिव्यंजक आवाज़ों के साथ तेज़ ऑफ़लाइन पाइपर (Piper) आवाज़ें।\nप्रति आवाज़ {size} डाउनलोड की आवश्यकता है।",
483 - "tts_speed": "TTS गति",
484 - "tts_speed_desc": "प्लेबैक की गति समायोजित करें।",
477 + "always_available": "हमेशा उपलब्ध",
478 "tts_system_desc": "आपके डिवाइस के इन-बिल्ट टेक्स्ट-टू-स्पीच इंजन का उपयोग करता है।\nकिसी डाउनलोड की आवश्यकता नहीं है। आवाज चयन आपके डिवाइस की सिस्टम सेटिंग्स का उपयोग करता है।",
486 - "unknown_error": "अज्ञात त्रुटि",
487 - "unload": "अनलोड करें",
488 - "unload_from_server": "सर्वर से अनलोड करें",
489 - "unpin": "अनपिन करें",
490 - "update_server": "सर्वर अपडेट करें",
491 - "voice": "आवाज",
492 - "voice_bella": "Bella",
493 - "voice_bruno": "Bruno",
494 - "voice_female": "महिला",
495 - "voice_hugo": "Hugo",
496 - "voice_jasper": "Jasper",
497 - "voice_kiki": "Kiki",
498 - "voice_leo": "Leo",
499 - "voice_lessac": "Lessac (US)",
500 - "voice_luna": "Luna",
501 - "voice_male": "पुरुष",
502 - "voice_other": "अन्य",
503 - "voice_rosie": "Rosie",
504 - "voice_ryan": "Ryan (US)",
505 - "waiting_selection": "चयन की प्रतीक्षा की जा रही है",
506 - "yesterday_section": "कल",
507 - "tts_supports_background": "मूल ऑडियो के रूप में पृष्ठभूमि प्लेबैक का समर्थन करता है",
508 - "tts_other_services_background_note": "नोट: अन्य टीटीएस सेवाएं मूल ऑडियो के रूप में पृष्ठभूमि प्लेबैक का समर्थन करती हैं।",
509 - "start_listening_tooltip": "सुनना शुरू करें",
510 - "stop_listening_tooltip": "सुनना बंद करें",
479 + "downloading_status": "डाउनलोड किया जा रहा है...",
480 + "tts_kitten_desc": "8 अभिव्यंजक आवाज़ों के साथ बिजली की तरह तेज़ न्यूरल TTS।\n{size} डाउनलोड की आवश्यकता है।",
481 + "tts_piper_desc": "2 अभिव्यंजक आवाज़ों के साथ तेज़ ऑफ़लाइन पाइपर (Piper) आवाज़ें।\nप्रति आवाज़ {size} डाउनलोड की आवश्यकता है।",
482 + "engine_spec": "{sizeMb} MB · {ramMb} MB रैम · {voiceCount} आवाजें",
483 + "on_device_models_title": "ऑन-डिवाइस मॉडल",
484 "settings_huggingface_token": "Hugging Face टोकन (वैकल्पिक)",
485 "settings_huggingface_token_desc": "केवल gated मॉडलों के लिए आवश्यक (जैसे Gemma)। huggingface.co/settings/tokens पर टोकन प्राप्त करें।",
486 "settings_huggingface_token_set": "टोकन सहेजा गया",
@@ -521,6 +494,91 @@
494 "server_type_ollama_desc": "लोकल AI इंजन। API key की आवश्यकता नहीं है।",
495 "server_type_on_device_desc": "आपके फ़ोन पर चलता है। कुछ मॉडलों के लिए Hugging Face टोकन चाहिए।",
496 "server_type_lm_studio_desc": "लोकल API सर्वर। API key की आवश्यकता नहीं है।",
497 + "available_models": "उपलब्ध मॉडल",
498 + "device_memory": "डिवाइस मेमोरी",
499 + "ram_usage": "रैम का उपयोग",
500 + "memory_healthy": "स्वस्थ",
501 + "memory_critical": "महत्वपूर्ण",
502 + "memory_low": "कम",
503 + "ram_used": "{percent}% प्रयुक्त",
504 + "available_ram": "उपलब्ध रैम (RAM)",
505 + "total_capacity": "कुल क्षमता",
506 + "loaded_status": "लोड किया गया",
507 + "inference_backend": "अनुमान बैकएंड (Inference Backend)",
508 + "backend_ios_notice": "iOS पर केवल CPU बैकएंड उपलब्ध है।",
509 + "backend_cpu_desc": "सभी उपकरणों पर काम करता है। सबसे अनुकूल।",
510 + "backend_gpu_desc": "OpenCL त्वरण। समर्थित उपकरणों पर तेज़।",
511 + "backend_npu_desc": "विक्रेता NPU (Qualcomm/MediaTek)। सबसे तेज़ अनुमान।",
512 + "select_model_title": "मॉडल चुनें",
513 + "refresh_models": "मॉडल रीफ्रेश करें",
514 + "search_models_hint": "मॉडल खोजें...",
515 + "no_server_connected": "कोई सर्वर कनेक्ट नहीं है",
516 + "add_server_first": "उपलब्ध मॉडल देखने के लिए पहले एक सर्वर जोड़ें।",
517 + "failed_load_models": "मॉडल लोड करने में विफल",
518 + "no_models_available": "कोई मॉडल उपलब्ध नहीं है",
519 + "no_models_match": "\"{searchQuery}\" से मेल खाने वाला कोई मॉडल नहीं मिला",
520 + "model_load_failed": "मॉडल लोड करने में विफल: {error}",
521 + "model_unloaded_ollama": "कीप-अलाइव (keep-alive) समय बीतने के बाद {name} को अनलोड कर दिया जाएगा",
522 + "model_unloaded_success": "{name} सफलतापूर्वक अनलोड हो गया",
523 + "model_unload_failed": "मॉडल अनलोड करने में विफल: {error}",
524 + "unload_from_server": "सर्वर से अनलोड करें",
525 + "context_chip": "{ctx} संदर्भ (ctx)",
526 + "unload_all_models": "सभी मॉडल अनलोड करें",
527 + "loaded_models_count": "{count} मॉडल लोड किए गए",
528 + "all_models_unloaded": "सभी मॉडल अनलोड कर दिए गए",
529 + "branch_chat": "ब्रांच चैट",
530 + "branch_chat_desc": "इस संदेश से शुरू होने वाली एक नई चैट बनाएं",
531 + "edit_assistant_message_desc": "सहायक संदेश की सामग्री को संपादित करें",
532 + "switch_to_model": "मॉडल {model} पर स्विच करें",
533 + "download_notification_title": "{modelName} डाउनलोड किया जा रहा है...",
534 + "download_complete_notification": "डाउनलोड पूर्ण!",
535 + "download_complete_body": "{modelName} सफलतापूर्वक डाउनलोड हो गया है।",
536 + "download_failed_notification": "डाउनलोड विफल: {error}",
537 + "download_failed_body": "{modelName} डाउनलोड करने में विफल।",
538 + "engine_name_system": "सिस्टम TTS",
539 + "engine_tagline_system": "इन-बिल्ट डिवाइस इंजन",
540 + "engine_name_kitten": "Kitten TTS",
541 + "engine_tagline_kitten": "उच्च गति न्यूरल TTS",
542 + "engine_name_sherpa": "Sherpa ONNX VITS",
543 + "engine_tagline_sherpa": "ऑफ़लाइन पाइपर (Piper) आवाज़ें",
544 + "voice_jasper": "Jasper",
545 + "voice_bella": "Bella",
546 + "voice_bruno": "Bruno",
547 + "voice_luna": "Luna",
548 + "voice_hugo": "Hugo",
549 + "voice_rosie": "Rosie",
550 + "voice_leo": "Leo",
551 + "voice_kiki": "Kiki",
552 + "voice_lessac": "Lessac (US)",
553 + "voice_ryan": "Ryan (US)",
554 + "model_qwen_3": "Qwen 3 0.6B",
555 + "model_qwen_3_desc": "सबसे छोटा सामान्य प्रयोजन चैट मॉडल। त्वरित प्रतिक्रियाएं, कम मेमोरी उपयोग।",
556 + "model_license_apache": "Apache-2.0",
557 + "model_qwen_25": "Qwen 2.5 1.5B Instruct",
558 + "model_qwen_25_desc": "संतुलित गुणवत्ता और आकार। सामान्य बातचीत के लिए अच्छा है।",
559 + "model_deepseek": "DeepSeek R1 Distill Qwen 1.5B",
560 + "model_deepseek_desc": "तर्क और विचार-श्रृंखला मॉडल। तार्किक कार्यों के लिए सर्वोत्तम।",
561 + "model_license_mit": "MIT",
562 + "model_gemma": "Gemma 4 E2B Instruct",
563 + "model_gemma_desc": "गूगल का फ्लैगशिप मॉडल। उच्चतम गुणवत्ता, अधिक रैम की आवश्यकता है।",
564 + "export_header": "*LocalMind से निर्यात किया गया — {date}*",
565 + "export_role_user": "## 👤 उपयोगकर्ता",
566 + "export_role_assistant": "## 🤖 सहायक",
567 + "export_role_system": "## ⚙️ सिस्टम",
568 + "export_role_tool": "## 🔧 उपकरण",
569 + "export_text_user": "[उपयोगकर्ता]",
570 + "export_text_assistant": "[सहायक]",
571 + "export_text_system": "[सिस्टम]",
572 + "export_text_tool": "[उपकरण]",
573 + "export_label_user": "उपयोगकर्ता",
574 + "export_label_assistant": "सहायक",
575 + "export_label_system": "सिस्टम",
576 + "export_label_tool": "उपकरण",
577 + "select_model_hint": "चैटिंग शुरू करने के लिए एक मॉडल चुनें",
578 + "test_notification_title": "परीक्षण सूचना",
579 + "test_notification_body": "यह मॉडल डाउनलोड प्रगति के लिए एक परीक्षण सूचना है।",
580 + "tts_supports_background": "मूल ऑडियो के रूप में पृष्ठभूमि प्लेबैक का समर्थन करता है",
581 + "tts_other_services_background_note": "नोट: अन्य टीटीएस सेवाएं मूल ऑडियो के रूप में पृष्ठभूमि प्लेबैक का समर्थन करती हैं।",
582 "gguf_imported_models_title": "Imported GGUF models",
583 "gguf_imported_models_empty_subtitle": "Import a GGUF from your device or add one from Hugging Face. Imported models run locally with llama.cpp.",
584 "gguf_imported_models_ready": "imported models ready for local inference.",
@@ -603,65 +661,6 @@
661 "tool_status_running": "Running",
662 "tool_status_done": "Done",
663 "tool_status_failed": "Failed",
606 - "delete_builtin_persona_body": "यह एक अंतर्निहित व्यक्तित्व (Persona) है। आप इसे बाद में सेटिंग्स से पुनर्स्थापित कर सकते हैं।",
607 - "restore_builtin_personas": "डिफ़ॉल्ट व्यक्तित्व पुनर्स्थापित करें",
608 - "restore_builtin_personas_desc": "आपके द्वारा हटाए गए किसी भी अंतर्निहित व्यक्तित्व को फिर से जोड़ें",
609 - "restore_builtin_personas_success": "डिफ़ॉल्ट व्यक्तित्व पुनर्स्थापित कर दिए गए हैं",
610 - "clear_personas": "व्यक्तित्व साफ़ करें",
611 - "enable_image_compression": "भेजने से पहले छवियों को कंप्रेस करें",
612 - "enable_image_compression_desc": "संलग्न छवियों का आकार बदलें और कंप्रेस करें ताकि अपलोड सर्वर सीमाओं के भीतर रहें",
613 - "image_compression_level": "कंप्रेशन की आक्रामकता",
614 - "image_compression_level_desc": "अधिक आक्रामकता कम गुणवत्ता पर छोटे आकार के अपलोड बनाती है",
615 - "image_compression_level_low": "कम",
616 - "image_compression_level_medium": "मध्यम",
617 - "image_compression_level_high": "उच्च",
618 - "sort_models_tooltip": "मॉडलों को सॉर्ट करें",
619 - "sort_by_favorites": "पसंदीदा पहले",
620 - "sort_by_name": "नाम (A-Z)",
621 - "sort_by_size_smallest": "आकार (सबसे छोटा पहले)",
622 - "sort_by_size_largest": "आकार (सबसे बड़ा पहले)",
623 - "sort_by_context_length": "संदर्भ की लंबाई",
624 - "bulk_ai_rename_progress": "नाम बदला जा रहा है {done}/{total}...",
625 - "selected_count": "{count} चयनित",
626 - "ai_rename_tooltip": "एआई के साथ चयनित का नाम बदलें",
627 - "new_chat_in_folder_tooltip": "इस फ़ोल्डर में नई चैट",
628 - "total_tokens_count": "{count} टोकन",
629 - "smart_replies_use_persona": "स्मार्ट उत्तरों में व्यक्तित्व का उपयोग करें",
630 - "smart_replies_use_persona_desc": "सुझाए गए उत्तर सामान्य सहायक के बजाय सक्रिय व्यक्तित्व के लहजे से मेल खाते हैं",
631 - "keep_persona_on_new_chat": "नई चैट पर व्यक्तित्व बनाए रखें",
632 - "keep_persona_on_new_chat_desc": "नई चैट शुरू करने के बाद चयनित व्यक्तित्व को साफ़ न करें",
633 - "role_swap_button_enabled": "भूमिका-बदल बटन दिखाएं",
634 - "role_swap_button_enabled_desc": "बिना कोई प्रतिक्रिया उत्पन्न किए, अपने संदेश को उपयोगकर्ता के बजाय सहायक भूमिका के रूप में भेजने के लिए चैट इनपुट में एक बटन दिखाएं",
635 - "send_as_user_tooltip": "उपयोगकर्ता के रूप में भेजें",
636 - "send_as_assistant_tooltip": "सहायक के रूप में भेजें (कोई प्रतिक्रिया नहीं)",
637 - "insert_without_generating_tooltip": "बिना जनरेट किए डालें",
638 - "token_usage_title": "टोकन उपयोग",
639 - "total_tokens_label": "उपयोग किए गए टोकन",
640 - "usage_percent_label": "उपयोग किया गया संदर्भ",
641 - "export_choice_title": "निर्यात (Export) करें",
642 - "export_choice_body": "आप इसे कैसे निर्यात करना चाहेंगे?",
643 - "copy_to_clipboard": "क्लिपबोर्ड पर कॉपी करें",
644 - "bulk_export_conversations_success": "{count} वार्तालाप निर्यात किए गए",
645 - "bulk_ai_rename_confirm_title": "एआई के साथ नाम बदलें?",
646 - "bulk_ai_rename_confirm_body": "यह एआई को वर्तमान शीर्षकों को प्रतिस्थापित करते हुए, प्रत्येक {count} चयनित वार्तालापों के लिए एक नया शीर्षक उत्पन्न करने के लिए कहेगा। इसमें कुछ समय लग सकता है और इसे पूर्ववत नहीं किया जा सकता है।",
647 - "sort_by_modified_date": "पिछला संशोधन",
648 - "sort_by_created_date": "निर्माण तिथि",
649 - "sort_title": "सॉर्ट करें",
650 - "ai_user_response_enabled": "एआई उपयोगकर्ता संदेश (भेजें बटन दबाकर रखें)",
651 - "ai_user_response_enabled_desc": "एआई से अपना अगला संदेश लिखवाने और भेजने के लिए भेजें बटन को 3 सेकंड के लिए दबाकर रखें",
652 - "ai_user_response_tooltip": "एआई के साथ उपयोगकर्ता संदेश जनरेट करें",
653 - "show_system_messages_desc": "जब कोई व्यक्तित्व चयनित न हो, तो प्रत्येक अनुरोध के साथ एक डिफ़ॉल्ट सहायक सिस्टम प्रॉम्प्ट भेजें",
654 - "show_system_messages_in_chat": "चैट में सिस्टम संदेश दिखाएं",
655 - "show_system_messages_in_chat_desc": "चैट ट्रांसक्रिप्ट में दृश्यमान बुलबुले के रूप में सिस्टम संदेश (जैसे आयातित बैकअप से) प्रदर्शित करें",
656 - "manage_personas": "व्यक्तित्व प्रबंधित करें",
657 - "personas_combine_hint": "चयनित व्यक्तित्वों को मिला दिया जाएगा",
658 - "unload_all_models": "सभी मॉडल अनलोड करें",
659 - "loaded_models_count": "{count} मॉडल लोड किए गए",
660 - "all_models_unloaded": "सभी मॉडल अनलोड कर दिए गए",
661 - "branch_chat": "ब्रांच चैट",
662 - "branch_chat_desc": "इस संदेश से शुरू होने वाली एक नई चैट बनाएं",
663 - "edit_assistant_message_desc": "सहायक संदेश की सामग्री को संपादित करें",
664 - "switch_to_model": "मॉडल {model} पर स्विच करें",
664 "model_favorite_toggle": "पसंदीदा टॉगल करें",
665 "model_note_label": "टिप्पणी (Note)",
666 "model_note_hint": "इस मॉडल के लिए एक निजी टिप्पणी जोड़ें...",
@@ -758,8 +757,15 @@
757 "stream_generation_time": "जेनरेशन का समय",
758 "attach_image": "छवि संलग्न करें",
759 "attach_text_document": "पाठ दस्तावेज़ संलग्न करें",
760 + "attach_shortcut_images": "फ़ोटो",
761 + "attach_shortcut_documents": "फ़ाइलें",
762 + "attach_shortcut_saved": "सहेजे गए",
763 "add_attachment": "संलग्नक जोड़ें",
764 + "add_to_chat": "चैट में जोड़ें",
765 + "choose_what_to_attach": "आप क्या जोड़ना चाहते हैं?",
766 + "choose_attachment_subtitle": "अपने संदेश में संलग्न करने के लिए एक स्रोत चुनें",
767 "photo_permission_denied": "फ़ोटो अनुमति अस्वीकृत",
768 + "select_model_prompt": "मॉडल चुनें",
769 "characters_label": "वर्ण (Characters)",
770 "exit_temporary_chat_title": "अस्थायी चैट से बाहर निकलें?",
771 "exit_temporary_chat_body": "यह वर्तमान वार्तालाप को स्थायी रूप से हटा देगा। क्या आप जारी रखना चाहते हैं?",
@@ -860,5 +866,9 @@
866 "delete_folder": "फ़ोल्डर हटाएँ",
867 "delete_folder_title": "फ़ोल्डर हटाएँ?",
868 "delete_folder_body": "क्या आप वाकई \"{name}\" हटाना चाहते हैं? अंदर की बातचीत या सहेजे गए संदेश \"अवर्गीकृत\" में वापस चले जाएंगे। इसे पूर्ववत नहीं किया जा सकता।",
863 - "folder_name_required": "कृपया फ़ोल्डर का नाम दर्ज करें"
869 + "folder_name_required": "कृपया फ़ोल्डर का नाम दर्ज करें",
870 + "model_required_toast": "आपको पहले एक मॉडल चुनना होगा",
871 + "server_type_lm_studio_sub": "स्थानीय API",
872 + "server_type_ollama_sub": "CLI इंजन",
873 + "server_type_on_device_sub": "किसी सर्वर की आवश्यकता नहीं है"
874 }
lib/l10n/app_it.arb
+93 -83
@@ -34,6 +34,8 @@
34 "none": "Nessuna",
35 "none_selected": "Nessuna selezione",
36 "online": "Online",
37 + "connected": "Connesso",
38 + "checking": "Verifica in corso",
39 "offline": "Offline",
40 "error": "Errore",
41 "unknown_error": "Errore sconosciuto",
@@ -72,8 +74,6 @@
74 "delete_model_body": "Eliminare",
75 "delete_model_body_with_size": "Sei sicuro di voler eliminare {name}? In questo modo libererai circa {size} di spazio.\n\nÈ possibile scaricare nuovamente questo modello in seguito, se necessario.",
76 "delete_voice_title": "Elimina tag vocale",
75 - "chat_title": "LocalMind",
76 - "api_key_hint_openrouter": "sk-...",
77 "delete_voice_body": "Sei sicuro di voler eliminare {name}? In questo modo libererai circa {size} di spazio.\n\nPuoi scaricare di nuovo questa voce in un secondo momento, se necessario.",
78 "delete_server_title": "Elimina server",
79 "delete_server_body": "Sei sicuro di voler eliminare \"{name}\"? L'operazione non può essere annullata.",
@@ -82,6 +82,50 @@
82 "delete_message_title": "Eliminare il messaggio?",
83 "delete_persona_title": "Eliminare \"{name}\"?",
84 "delete_persona_body": "L'operazione non può essere annullata.",
85 + "delete_builtin_persona_body": "Questo è un personaggio predefinito. Puoi ripristinarlo in seguito dalle Impostazioni.",
86 + "restore_builtin_personas": "Ripristina personaggi predefiniti",
87 + "restore_builtin_personas_desc": "Aggiungi di nuovo i personaggi predefiniti che hai eliminato",
88 + "restore_builtin_personas_success": "Personaggi predefiniti ripristinati",
89 + "clear_personas": "Cancella personaggi",
90 + "enable_image_compression": "Comprimi immagini prima di inviare",
91 + "enable_image_compression_desc": "Ridimensiona e comprimi le immagini allegate affinché i caricamenti rimangano entro i limiti del server",
92 + "image_compression_level": "Intensità di compressione",
93 + "image_compression_level_desc": "Un'intensità maggiore produce file più piccoli con qualità inferiore",
94 + "image_compression_level_low": "Bassa",
95 + "image_compression_level_medium": "Media",
96 + "image_compression_level_high": "Alta",
97 + "sort_models_tooltip": "Ordina modelli",
98 + "sort_by_favorites": "Preferiti prima",
99 + "sort_by_name": "Nome (A-Z)",
100 + "sort_by_size_smallest": "Dimensione (più piccolo prima)",
101 + "sort_by_size_largest": "Dimensione (più grande prima)",
102 + "sort_by_context_length": "Lunghezza del contesto",
103 + "bulk_ai_rename_progress": "Ridenominazione in corso {done}/{total}...",
104 + "selected_count": "{count} selezionati",
105 + "ai_rename_tooltip": "Rinomina selezionati con l'IA",
106 + "new_chat_in_folder_tooltip": "Nuova chat in questa cartella",
107 + "total_tokens_count": "{count} token",
108 + "smart_replies_use_persona": "Usa personaggio nelle risposte intelligenti",
109 + "smart_replies_use_persona_desc": "Le risposte suggerite corrispondono al tono del personaggio attivo invece di un assistente generico",
110 + "keep_persona_on_new_chat": "Mantieni personaggio con una nuova chat",
111 + "keep_persona_on_new_chat_desc": "Non cancellare la selezione del personaggio all'inizio di una nuova chat",
112 + "role_swap_button_enabled": "Mostra pulsante cambio ruolo",
113 + "role_swap_button_enabled_desc": "Mostra un pulsante nell'input di chat per inviare il tuo messaggio con il ruolo assistente invece di utente, senza generare risposte",
114 + "send_as_user_tooltip": "Invia come utente",
115 + "send_as_assistant_tooltip": "Invia come assistente (nessuna risposta)",
116 + "insert_without_generating_tooltip": "Inserisci senza generare",
117 + "token_usage_title": "Utilizzo dei Token",
118 + "total_tokens_label": "Token usati",
119 + "usage_percent_label": "Contesto usato",
120 + "export_choice_title": "Esporta",
121 + "export_choice_body": "Come desideri esportare?",
122 + "copy_to_clipboard": "Copia negli appunti",
123 + "bulk_export_conversations_success": "Esportate {count} conversazioni",
124 + "bulk_ai_rename_confirm_title": "Rinominare con l'IA?",
125 + "bulk_ai_rename_confirm_body": "Questo chiederà all'IA di generare un nuovo titolo per ciascuna delle {count} conversazioni selezionate, sostituendo i titoli attuali. Questa operazione può richiedere del tempo e non può essere annullata.",
126 + "sort_by_modified_date": "Ultima modifica",
127 + "sort_by_created_date": "Data di creazione",
128 + "sort_title": "Ordina",
129 "clear_conversation_title": "Conversazioni chiare?",
130 "clear_conversation_body": "Questo eliminerà tutti i messaggi in questa conversazione.",
131 "clear": "Cancella",
@@ -111,9 +155,6 @@
155 "add_more": "Aggiungi altro",
156 "on_github": "su GitHub",
157 "could_not_open_github": "Impossibile aprire GitHub.",
114 - "openai_compatible_api": "API compatibile con OpenAI",
115 - "https_requires_ssl": "HTTPS richiede SSL",
116 - "most_local_setups_use_http": "La maggior parte delle configurazioni locali usa http://",
158 "settings_title": "Impostazioni",
159 "settings_appearance": "Aspetto",
160 "settings_language": "Lingua",
@@ -149,10 +190,16 @@
190 "manage_tts_models": "Gestisci modelli TTS",
191 "manage_on_device_models": "Gestisci modelli sul dispositivo",
192 "enable_smart_reply": "Risposte intelligenti sul dispositivo",
193 + "ai_user_response_enabled": "Messaggio utente IA (tieni premuto invia)",
194 + "ai_user_response_enabled_desc": "Tieni premuto il pulsante di invio per 3 secondi per consentire all'IA di scrivere e inviare il tuo prossimo messaggio",
195 + "ai_user_response_tooltip": "Genera messaggio utente con l'IA",
196 "streaming_responses": "Risposte in streaming",
197 "auto_generate_titles": "Genera automaticamente titoli",
198 "send_on_enter": "Invia su Invio",
199 "show_system_messages": "Mostra messaggi di sistema",
200 + "show_system_messages_desc": "Quando nessun personaggio è selezionato, invia un prompt di sistema dell'assistente predefinito con ogni richiesta",
201 + "show_system_messages_in_chat": "Mostra messaggi di sistema in chat",
202 + "show_system_messages_in_chat_desc": "Visualizza i messaggi di sistema (es. da un backup importato) come bolle visibili nella conversazione",
203 "haptic_feedback": "Feedback aptico",
204 "enable_mcp": "Abilita MCP",
205 "new_chat_mcp_default": "Nuova chat MCP predefinita",
@@ -160,6 +207,7 @@
207 "privacy_info": "\"LocalMind non vede mai i tuoi dati\"",
208 "delete_all_conversations": "Elimina tutte le conversazioni",
209 "reset_settings_defaults": "Ripristina impostazioni predefinite",
210 + "chat_title": "LocalMind",
211 "chat_parameters_tooltip": "Parametri della chat",
212 "change_persona": "Cambia persona",
213 "set_persona": "Imposta persona",
@@ -170,6 +218,8 @@
218 "configure": "Configura",
219 "select_model": "Seleziona modello",
220 "select_persona": "Seleziona Persona",
221 + "manage_personas": "Gestisci personaggi",
222 + "personas_combine_hint": "I personaggi selezionati verranno combinati",
223 "start_conversation": "Avvia una conversazione",
224 "recent_chats": "Chat recenti",
225 "see_all": "Vedi tutto",
@@ -190,6 +240,8 @@
240 "send_message_tooltip": "Invia messaggio",
241 "stop_generation_tooltip": "Interrompi generazione",
242 "attach_images_tooltip": "Allega immagini",
243 + "start_listening_tooltip": "Avvia ascolto",
244 + "stop_listening_tooltip": "Interrompi ascolto",
245 "tool_label": "Strumento: {toolCallId}",
246 "tool_unknown": "Strumento: sconosciuto",
247 "message_options": "Opzioni messaggio",
@@ -250,13 +302,13 @@
302 "onboarding_localmind": "LOCALMIND",
303 "onboarding_connect_server": "Collega il tuo\nServer",
304 "onboarding_connect_desc": "Connettiti a LM Studio, Ollama o\nOpenRouter per avviare la tua IA privata\nesperienza.",
305 + "openai_compatible_api": "API compatibile con OpenAI",
306 + "https_requires_ssl": "HTTPS richiede SSL",
307 + "most_local_setups_use_http": "La maggior parte delle configurazioni locali usa http://",
308 "onboarding_welcome": "Benvenuto in LocalMind",
309 "server_type_on_device": "On-Device",
255 - "server_type_on_device_sub": "NESSUN SERVER NECESSARIO",
310 "server_type_lm_studio": "LM Studio",
257 - "server_type_lm_studio_sub": "API LOCALE",
311 "server_type_ollama": "Ollama",
259 - "server_type_ollama_sub": "MOTORE CLI",
312 "server_type_openrouter": "OpenRouter",
313 "server_type_openrouter_sub": "CLOUD UNIFICATO",
314 "ready_continue": "PRONTO A CONTINUARE",
@@ -279,6 +331,7 @@
331 "my_server_hint": "Il mio server",
332 "name_length_validation": "Il nome deve contenere al massimo 50 caratteri",
333 "host_valid": "Inserisci un nome host o un indirizzo IP valido",
334 + "api_key_hint_openrouter": "sk-...",
335 "api_key_hint_generic": "Per server autenticati",
336 "update_server": "Aggiorna server",
337 "save_server": "Salva server",
@@ -428,6 +481,19 @@
481 "tts_piper_desc": "Veloce voce Piper offline con 2 voci espressive.\nRichiede {size} download per voce.",
482 "engine_spec": "{sizeMb} MB · {ramMb} MB RAM · {voiceCount} voci",
483 "on_device_models_title": "Modelli sul dispositivo",
484 + "settings_huggingface_token": "Token Hugging Face (Opzionale)",
485 + "settings_huggingface_token_desc": "Richiesto solo per i modelli con accesso limitato (ad es. Gemma). Ottieni un token su huggingface.co/settings/tokens.",
486 + "settings_huggingface_token_set": "Token salvato",
487 + "settings_huggingface_token_cleared": "Token cancellato",
488 + "model_requires_huggingface_token": "Richiede un token Hugging Face",
489 + "model_missing_huggingface_token": "Questo modello ha accesso limitato su Hugging Face. Aggiungi un token in Impostazioni → Inferenza sul dispositivo per scaricarlo.",
490 + "set_huggingface_token": "Imposta token",
491 + "clear_huggingface_token": "Cancella",
492 + "edit_huggingface_token_dialog_title": "Token di accesso Hugging Face",
493 + "huggingface_token_dialog_hint": "hf_…",
494 + "server_type_ollama_desc": "Motore AI locale. Nessuna chiave API richiesta.",
495 + "server_type_on_device_desc": "Funziona sul tuo telefono. Alcuni modelli richiedono un token Hugging Face.",
496 + "server_type_lm_studio_desc": "Server API locale. Nessuna chiave API richiesta.",
497 "available_models": "Modelli disponibili",
498 "device_memory": "Memoria del dispositivo",
499 "ram_usage": "Utilizzo della RAM",
@@ -457,6 +523,13 @@
523 "model_unload_failed": "Impossibile scaricare il modello: {error}",
524 "unload_from_server": "Scarica dal server",
525 "context_chip": "{ctx} ctx",
526 + "unload_all_models": "Scarica tutti i modelli",
527 + "loaded_models_count": "{count} modelli caricati",
528 + "all_models_unloaded": "Tutti i modelli scaricati",
529 + "branch_chat": "Crea ramo chat",
530 + "branch_chat_desc": "Crea una nuova chat a partire da questo messaggio",
531 + "edit_assistant_message_desc": "Modifica il contenuto del messaggio dell'assistente",
532 + "switch_to_model": "Passa al modello {model}",
533 "download_notification_title": "Download di {modelName} in corso...",
534 "download_complete_notification": "Download completato!",
535 "download_complete_body": "{modelName} è stato scaricato correttamente.",
@@ -506,21 +579,6 @@
579 "test_notification_body": "Questa è una notifica di prova per l'avanzamento del download del modello.",
580 "tts_supports_background": "Supporta la riproduzione in background come audio nativo",
581 "tts_other_services_background_note": "Nota: Gli altri servizi TTS supportano la riproduzione in background come audio nativo.",
509 - "start_listening_tooltip": "Avvia ascolto",
510 - "stop_listening_tooltip": "Interrompi ascolto",
511 - "settings_huggingface_token": "Token Hugging Face (Opzionale)",
512 - "settings_huggingface_token_desc": "Richiesto solo per i modelli con accesso limitato (ad es. Gemma). Ottieni un token su huggingface.co/settings/tokens.",
513 - "settings_huggingface_token_set": "Token salvato",
514 - "settings_huggingface_token_cleared": "Token cancellato",
515 - "model_requires_huggingface_token": "Richiede un token Hugging Face",
516 - "model_missing_huggingface_token": "Questo modello ha accesso limitato su Hugging Face. Aggiungi un token in Impostazioni → Inferenza sul dispositivo per scaricarlo.",
517 - "set_huggingface_token": "Imposta token",
518 - "clear_huggingface_token": "Cancella",
519 - "edit_huggingface_token_dialog_title": "Token di accesso Hugging Face",
520 - "huggingface_token_dialog_hint": "hf_…",
521 - "server_type_ollama_desc": "Motore AI locale. Nessuna chiave API richiesta.",
522 - "server_type_on_device_desc": "Funziona sul tuo telefono. Alcuni modelli richiedono un token Hugging Face.",
523 - "server_type_lm_studio_desc": "Server API locale. Nessuna chiave API richiesta.",
582 "gguf_imported_models_title": "Imported GGUF models",
583 "gguf_imported_models_empty_subtitle": "Import a GGUF from your device or add one from Hugging Face. Imported models run locally with llama.cpp.",
584 "gguf_imported_models_ready": "imported models ready for local inference.",
@@ -603,65 +661,6 @@
661 "tool_status_running": "Running",
662 "tool_status_done": "Done",
663 "tool_status_failed": "Failed",
606 - "delete_builtin_persona_body": "Questo è un personaggio predefinito. Puoi ripristinarlo in seguito dalle Impostazioni.",
607 - "restore_builtin_personas": "Ripristina personaggi predefiniti",
608 - "restore_builtin_personas_desc": "Aggiungi di nuovo i personaggi predefiniti che hai eliminato",
609 - "restore_builtin_personas_success": "Personaggi predefiniti ripristinati",
610 - "clear_personas": "Cancella personaggi",
611 - "enable_image_compression": "Comprimi immagini prima di inviare",
612 - "enable_image_compression_desc": "Ridimensiona e comprimi le immagini allegate affinché i caricamenti rimangano entro i limiti del server",
613 - "image_compression_level": "Intensità di compressione",
614 - "image_compression_level_desc": "Un'intensità maggiore produce file più piccoli con qualità inferiore",
615 - "image_compression_level_low": "Bassa",
616 - "image_compression_level_medium": "Media",
617 - "image_compression_level_high": "Alta",
618 - "sort_models_tooltip": "Ordina modelli",
619 - "sort_by_favorites": "Preferiti prima",
620 - "sort_by_name": "Nome (A-Z)",
621 - "sort_by_size_smallest": "Dimensione (più piccolo prima)",
622 - "sort_by_size_largest": "Dimensione (più grande prima)",
623 - "sort_by_context_length": "Lunghezza del contesto",
624 - "bulk_ai_rename_progress": "Ridenominazione in corso {done}/{total}...",
625 - "selected_count": "{count} selezionati",
626 - "ai_rename_tooltip": "Rinomina selezionati con l'IA",
627 - "new_chat_in_folder_tooltip": "Nuova chat in questa cartella",
628 - "total_tokens_count": "{count} token",
629 - "smart_replies_use_persona": "Usa personaggio nelle risposte intelligenti",
630 - "smart_replies_use_persona_desc": "Le risposte suggerite corrispondono al tono del personaggio attivo invece di un assistente generico",
631 - "keep_persona_on_new_chat": "Mantieni personaggio con una nuova chat",
632 - "keep_persona_on_new_chat_desc": "Non cancellare la selezione del personaggio all'inizio di una nuova chat",
633 - "role_swap_button_enabled": "Mostra pulsante cambio ruolo",
634 - "role_swap_button_enabled_desc": "Mostra un pulsante nell'input di chat per inviare il tuo messaggio con il ruolo assistente invece di utente, senza generare risposte",
635 - "send_as_user_tooltip": "Invia come utente",
636 - "send_as_assistant_tooltip": "Invia come assistente (nessuna risposta)",
637 - "insert_without_generating_tooltip": "Inserisci senza generare",
638 - "token_usage_title": "Utilizzo dei Token",
639 - "total_tokens_label": "Token usati",
640 - "usage_percent_label": "Contesto usato",
641 - "export_choice_title": "Esporta",
642 - "export_choice_body": "Come desideri esportare?",
643 - "copy_to_clipboard": "Copia negli appunti",
644 - "bulk_export_conversations_success": "Esportate {count} conversazioni",
645 - "bulk_ai_rename_confirm_title": "Rinominare con l'IA?",
646 - "bulk_ai_rename_confirm_body": "Questo chiederà all'IA di generare un nuovo titolo per ciascuna delle {count} conversazioni selezionate, sostituendo i titoli attuali. Questa operazione può richiedere del tempo e non può essere annullata.",
647 - "sort_by_modified_date": "Ultima modifica",
648 - "sort_by_created_date": "Data di creazione",
649 - "sort_title": "Ordina",
650 - "ai_user_response_enabled": "Messaggio utente IA (tieni premuto invia)",
651 - "ai_user_response_enabled_desc": "Tieni premuto il pulsante di invio per 3 secondi per consentire all'IA di scrivere e inviare il tuo prossimo messaggio",
652 - "ai_user_response_tooltip": "Genera messaggio utente con l'IA",
653 - "show_system_messages_desc": "Quando nessun personaggio è selezionato, invia un prompt di sistema dell'assistente predefinito con ogni richiesta",
654 - "show_system_messages_in_chat": "Mostra messaggi di sistema in chat",
655 - "show_system_messages_in_chat_desc": "Visualizza i messaggi di sistema (es. da un backup importato) come bolle visibili nella conversazione",
656 - "manage_personas": "Gestisci personaggi",
657 - "personas_combine_hint": "I personaggi selezionati verranno combinati",
658 - "unload_all_models": "Scarica tutti i modelli",
659 - "loaded_models_count": "{count} modelli caricati",
660 - "all_models_unloaded": "Tutti i modelli scaricati",
661 - "branch_chat": "Crea ramo chat",
662 - "branch_chat_desc": "Crea una nuova chat a partire da questo messaggio",
663 - "edit_assistant_message_desc": "Modifica il contenuto del messaggio dell'assistente",
664 - "switch_to_model": "Passa al modello {model}",
664 "model_favorite_toggle": "Attiva/disattiva preferito",
665 "model_note_label": "Nota",
666 "model_note_hint": "Aggiungi una nota privata per questo modello...",
@@ -758,8 +757,15 @@
757 "stream_generation_time": "Tempo di generazione",
758 "attach_image": "Allega immagine",
759 "attach_text_document": "Allega documento di testo",
760 + "attach_shortcut_images": "Foto",
761 + "attach_shortcut_documents": "File",
762 + "attach_shortcut_saved": "Salvati",
763 "add_attachment": "Aggiungi allegato",
764 + "add_to_chat": "Aggiungi alla chat",
765 + "choose_what_to_attach": "Cosa vorresti aggiungere?",
766 + "choose_attachment_subtitle": "Scegli una sorgente da allegare al tuo messaggio",
767 "photo_permission_denied": "Permesso foto negato",
768 + "select_model_prompt": "Seleziona modello",
769 "characters_label": "Caratteri",
770 "exit_temporary_chat_title": "Uscire dalla chat temporanea?",
771 "exit_temporary_chat_body": "Questo eliminerà permanentemente la conversazione corrente. Continuare?",
@@ -860,5 +866,9 @@
866 "delete_folder": "Elimina cartella",
867 "delete_folder_title": "Eliminare la cartella?",
868 "delete_folder_body": "Sei sicuro di voler eliminare \"{name}\"? Le conversazioni o i messaggi salvati al suo interno verranno spostati in \"Senza cartella\". Operazione irreversibile.",
863 - "folder_name_required": "Inserisci un nome per la cartella"
869 + "folder_name_required": "Inserisci un nome per la cartella",
870 + "model_required_toast": "Devi prima selezionare un modello",
871 + "server_type_on_device_sub": "NESSUN SERVER NECESSARIO",
872 + "server_type_lm_studio_sub": "API LOCALE",
873 + "server_type_ollama_sub": "MOTORE CLI"
874 }
lib/l10n/app_ja.arb
+91 -81
@@ -34,6 +34,8 @@
34 "none": "なし",
35 "none_selected": "未選択",
36 "online": "オンライン",
37 + "connected": "接続済み",
38 + "checking": "確認中",
39 "offline": "オフライン",
40 "error": "エラー",
41 "unknown_error": "不明なエラー",
@@ -80,6 +82,50 @@
82 "delete_message_title": "メッセージを削除しますか?",
83 "delete_persona_title": "「{name}」を削除しますか?",
84 "delete_persona_body": "この操作は取り消せません。",
85 + "delete_builtin_persona_body": "これは組み込みのペルソナです。後で「設定」から復元できます。",
86 + "restore_builtin_personas": "デフォルトのペルソナを復元",
87 + "restore_builtin_personas_desc": "削除した組み込みペルソナを再追加する",
88 + "restore_builtin_personas_success": "デフォルトのペルソナが復元されました",
89 + "clear_personas": "ペルソナをクリア",
90 + "enable_image_compression": "送信前に画像を圧縮",
91 + "enable_image_compression_desc": "添付画像のサイズ変更と圧縮を行い、送信がサーバー制限内に収まるようにします",
92 + "image_compression_level": "圧縮率の強さ",
93 + "image_compression_level_desc": "圧縮率が高いほど、より低画質で小さいファイルサイズになります",
94 + "image_compression_level_low": "低",
95 + "image_compression_level_medium": "中",
96 + "image_compression_level_high": "高",
97 + "sort_models_tooltip": "モデルを並べ替え",
98 + "sort_by_favorites": "お気に入りを優先",
99 + "sort_by_name": "名前順 (A-Z)",
100 + "sort_by_size_smallest": "サイズ順 (小さい順)",
101 + "sort_by_size_largest": "サイズ順 (大きい順)",
102 + "sort_by_context_length": "コンテキスト長順",
103 + "bulk_ai_rename_progress": "名前変更中 {done}/{total}...",
104 + "selected_count": "{count} 件選択中",
105 + "ai_rename_tooltip": "AIで選択項目の名前を変更",
106 + "new_chat_in_folder_tooltip": "このフォルダー内に新規チャット",
107 + "total_tokens_count": "{count} トークン",
108 + "smart_replies_use_persona": "スマートリプライにペルソナを使用",
109 + "smart_replies_use_persona_desc": "提案される返信が一般的なアシスタントではなく、有効なペルソナのトーンに沿ったものになります",
110 + "keep_persona_on_new_chat": "新規チャット時にペルソナを維持",
111 + "keep_persona_on_new_chat_desc": "新しいチャットの開始時に選択したペルソナをクリアしない",
112 + "role_swap_button_enabled": "ロール切替ボタンを表示",
113 + "role_swap_button_enabled_desc": "チャット入力欄に、回答を生成せずにユーザーではなくアシスタントとしてメッセージを送信できるボタンを表示します",
114 + "send_as_user_tooltip": "ユーザーとして送信",
115 + "send_as_assistant_tooltip": "アシスタントとして送信 (回答なし)",
116 + "insert_without_generating_tooltip": "回答を生成せずに挿入",
117 + "token_usage_title": "トークン使用量",
118 + "total_tokens_label": "使用トークン",
119 + "usage_percent_label": "使用されたコンテキスト",
120 + "export_choice_title": "エクスポート",
121 + "export_choice_body": "どのようにエクスポートしますか?",
122 + "copy_to_clipboard": "クリップボードにコピー",
123 + "bulk_export_conversations_success": "{count} 件の会話をエクスポートしました",
124 + "bulk_ai_rename_confirm_title": "AIで名前を変更しますか?",
125 + "bulk_ai_rename_confirm_body": "これにより、AIが選択した {count} 件の会話それぞれに対して新しいタイトルを生成し、現在のタイトルを上書きします。処理には時間がかかる場合があり、元に戻すことはできません。",
126 + "sort_by_modified_date": "最終更新日",
127 + "sort_by_created_date": "作成日",
128 + "sort_title": "並べ替え",
129 "clear_conversation_title": "チャット履歴をクリアしますか?",
130 "clear_conversation_body": "このチャット内のすべてのメッセージが削除されます。",
131 "clear": "クリア",
@@ -109,9 +155,6 @@
155 "add_more": "さらに追加",
156 "on_github": "GitHub で",
157 "could_not_open_github": "GitHub を開けませんでした。",
112 - "openai_compatible_api": "OpenAI 互換 API",
113 - "https_requires_ssl": "HTTPS には SSL が必要です",
114 - "most_local_setups_use_http": "ほとんどのローカル設定では http:// を使います",
158 "settings_title": "設定",
159 "settings_appearance": "外観",
160 "settings_language": "言語",
@@ -147,10 +190,16 @@
190 "manage_tts_models": "音声合成モデルの管理",
191 "manage_on_device_models": "ローカルモデルの管理",
192 "enable_smart_reply": "スマートリプライ",
193 + "ai_user_response_enabled": "AIユーザーメッセージ (送信長押し)",
194 + "ai_user_response_enabled_desc": "送信ボタンを3秒間長押しすると、AIが次のメッセージを執筆して送信します",
195 + "ai_user_response_tooltip": "AIでユーザーメッセージを生成",
196 "streaming_responses": "ストリーミング応答",
197 "auto_generate_titles": "タイトルの自動生成",
198 "send_on_enter": "Enterキーで送信",
199 "show_system_messages": "システムメッセージを表示",
200 + "show_system_messages_desc": "ペルソナが選択されていない場合、リクエストごとに関連するデフォルトのアシスタントシステムプロンプトを送信する",
201 + "show_system_messages_in_chat": "チャット内にシステムメッセージを表示",
202 + "show_system_messages_in_chat_desc": "インポートされたバックアップなどからのシステムメッセージを、チャット画面上に吹き出しとして表示します",
203 "haptic_feedback": "触覚フィードバック",
204 "enable_mcp": "MCPを有効化",
205 "new_chat_mcp_default": "新規チャットでMCPをデフォルトにする",
@@ -169,6 +218,8 @@
218 "configure": "構成",
219 "select_model": "モデルを選択",
220 "select_persona": "ペルソナを選択",
221 + "manage_personas": "ペルソナの管理",
222 + "personas_combine_hint": "選択したペルソナは統合されます",
223 "start_conversation": "チャットを開始しましょう",
224 "recent_chats": "最近のチャット",
225 "see_all": "すべて見る",
@@ -189,6 +240,8 @@
240 "send_message_tooltip": "メッセージを送信",
241 "stop_generation_tooltip": "生成を停止",
242 "attach_images_tooltip": "画像を添付",
243 + "start_listening_tooltip": "聞き取りを開始",
244 + "stop_listening_tooltip": "聞き取りを停止",
245 "tool_label": "ツール: {toolCallId}",
246 "tool_unknown": "ツール: 不明",
247 "message_options": "メッセージオプション",
@@ -249,13 +302,13 @@
302 "onboarding_localmind": "LOCALMIND",
303 "onboarding_connect_server": "サーバーへの接続",
304 "onboarding_connect_desc": "LM Studio、Ollama、またはOpenRouterに接続して、プライベートAI体験を開始しましょう。",
305 + "openai_compatible_api": "OpenAI 互換 API",
306 + "https_requires_ssl": "HTTPS には SSL が必要です",
307 + "most_local_setups_use_http": "ほとんどのローカル設定では http:// を使います",
308 "onboarding_welcome": "Welcome to LocalMind",
309 "server_type_on_device": "ローカル",
254 - "server_type_on_device_sub": "サーバー不要",
310 "server_type_lm_studio": "LM Studio",
256 - "server_type_lm_studio_sub": "ローカルAPI",
311 "server_type_ollama": "Ollama",
258 - "server_type_ollama_sub": "CLIエンジン",
312 "server_type_openrouter": "OpenRouter",
313 "server_type_openrouter_sub": "統合クラウド",
314 "ready_continue": "続行可能",
@@ -428,6 +481,19 @@
481 "tts_piper_desc": "2つの表現力豊かな音声を備えた高速オフラインPiper音声。\n音声ごとに {size} のダウンロードが必要です。",
482 "engine_spec": "{sizeMb} MB · {ramMb} MB RAM · {voiceCount} 音声",
483 "on_device_models_title": "ローカルモデル",
484 + "settings_huggingface_token": "Hugging Faceトークン(任意)",
485 + "settings_huggingface_token_desc": "制限付きモデル(例: Gemma)でのみ必要です。トークンは huggingface.co/settings/tokens で取得できます。",
486 + "settings_huggingface_token_set": "トークンを保存しました",
487 + "settings_huggingface_token_cleared": "トークンを消去しました",
488 + "model_requires_huggingface_token": "Hugging Faceトークンが必要です",
489 + "model_missing_huggingface_token": "このモデルはHugging Faceで制限されています。ダウンロードするには、設定 → 端末内推論 にトークンを追加してください。",
490 + "set_huggingface_token": "トークンを設定",
491 + "clear_huggingface_token": "クリア",
492 + "edit_huggingface_token_dialog_title": "Hugging Faceアクセストークン",
493 + "huggingface_token_dialog_hint": "hf_…",
494 + "server_type_ollama_desc": "ローカルAIエンジン。APIキーは不要です。",
495 + "server_type_on_device_desc": "スマートフォン上で動作します。一部のモデルにはHugging Faceトークンが必要です。",
496 + "server_type_lm_studio_desc": "ローカルAPIサーバー。APIキーは不要です。",
497 "available_models": "利用可能なモデル",
498 "device_memory": "デバイスのメモリ",
499 "ram_usage": "RAM使用量",
@@ -457,6 +523,13 @@
523 "model_unload_failed": "モデルのアンロードに失敗しました: {error}",
524 "unload_from_server": "サーバーからアンロード",
525 "context_chip": "{ctx} コンテキスト",
526 + "unload_all_models": "すべてのモデルをアンロード",
527 + "loaded_models_count": "{count} 個のモデルがロード済み",
528 + "all_models_unloaded": "すべてのモデルがアンロードされました",
529 + "branch_chat": "チャットを分岐",
530 + "branch_chat_desc": "このメッセージから新しいチャットを作成",
531 + "edit_assistant_message_desc": "アシスタントメッセージの内容を編集",
532 + "switch_to_model": "モデル {model} に切り替え",
533 "download_notification_title": "{modelName} をダウンロード中...",
534 "download_complete_notification": "ダウンロード完了!",
535 "download_complete_body": "{modelName} のダウンロードが正常に完了しました。",
@@ -506,21 +579,6 @@
579 "test_notification_body": "これはモデルのダウンロード進捗用のテスト通知です。",
580 "tts_supports_background": "ネイティブオーディオとしてバックグラウンド再生をサポート",
581 "tts_other_services_background_note": "注意: 他のTTSサービスはネイティブオーディオとしてバックグラウンド再生をサポートしています。",
509 - "start_listening_tooltip": "聞き取りを開始",
510 - "stop_listening_tooltip": "聞き取りを停止",
511 - "settings_huggingface_token": "Hugging Faceトークン(任意)",
512 - "settings_huggingface_token_desc": "制限付きモデル(例: Gemma)でのみ必要です。トークンは huggingface.co/settings/tokens で取得できます。",
513 - "settings_huggingface_token_set": "トークンを保存しました",
514 - "settings_huggingface_token_cleared": "トークンを消去しました",
515 - "model_requires_huggingface_token": "Hugging Faceトークンが必要です",
516 - "model_missing_huggingface_token": "このモデルはHugging Faceで制限されています。ダウンロードするには、設定 → 端末内推論 にトークンを追加してください。",
517 - "set_huggingface_token": "トークンを設定",
518 - "clear_huggingface_token": "クリア",
519 - "edit_huggingface_token_dialog_title": "Hugging Faceアクセストークン",
520 - "huggingface_token_dialog_hint": "hf_…",
521 - "server_type_ollama_desc": "ローカルAIエンジン。APIキーは不要です。",
522 - "server_type_on_device_desc": "スマートフォン上で動作します。一部のモデルにはHugging Faceトークンが必要です。",
523 - "server_type_lm_studio_desc": "ローカルAPIサーバー。APIキーは不要です。",
582 "gguf_imported_models_title": "Imported GGUF models",
583 "gguf_imported_models_empty_subtitle": "Import a GGUF from your device or add one from Hugging Face. Imported models run locally with llama.cpp.",
584 "gguf_imported_models_ready": "imported models ready for local inference.",
@@ -603,65 +661,6 @@
661 "tool_status_running": "Running",
662 "tool_status_done": "Done",
663 "tool_status_failed": "Failed",
606 - "delete_builtin_persona_body": "これは組み込みのペルソナです。後で「設定」から復元できます。",
607 - "restore_builtin_personas": "デフォルトのペルソナを復元",
608 - "restore_builtin_personas_desc": "削除した組み込みペルソナを再追加する",
609 - "restore_builtin_personas_success": "デフォルトのペルソナが復元されました",
610 - "clear_personas": "ペルソナをクリア",
611 - "enable_image_compression": "送信前に画像を圧縮",
612 - "enable_image_compression_desc": "添付画像のサイズ変更と圧縮を行い、送信がサーバー制限内に収まるようにします",
613 - "image_compression_level": "圧縮率の強さ",
614 - "image_compression_level_desc": "圧縮率が高いほど、より低画質で小さいファイルサイズになります",
615 - "image_compression_level_low": "低",
616 - "image_compression_level_medium": "中",
617 - "image_compression_level_high": "高",
618 - "sort_models_tooltip": "モデルを並べ替え",
619 - "sort_by_favorites": "お気に入りを優先",
620 - "sort_by_name": "名前順 (A-Z)",
621 - "sort_by_size_smallest": "サイズ順 (小さい順)",
622 - "sort_by_size_largest": "サイズ順 (大きい順)",
623 - "sort_by_context_length": "コンテキスト長順",
624 - "bulk_ai_rename_progress": "名前変更中 {done}/{total}...",
625 - "selected_count": "{count} 件選択中",
626 - "ai_rename_tooltip": "AIで選択項目の名前を変更",
627 - "new_chat_in_folder_tooltip": "このフォルダー内に新規チャット",
628 - "total_tokens_count": "{count} トークン",
629 - "smart_replies_use_persona": "スマートリプライにペルソナを使用",
630 - "smart_replies_use_persona_desc": "提案される返信が一般的なアシスタントではなく、有効なペルソナのトーンに沿ったものになります",
631 - "keep_persona_on_new_chat": "新規チャット時にペルソナを維持",
632 - "keep_persona_on_new_chat_desc": "新しいチャットの開始時に選択したペルソナをクリアしない",
633 - "role_swap_button_enabled": "ロール切替ボタンを表示",
634 - "role_swap_button_enabled_desc": "チャット入力欄に、回答を生成せずにユーザーではなくアシスタントとしてメッセージを送信できるボタンを表示します",
635 - "send_as_user_tooltip": "ユーザーとして送信",
636 - "send_as_assistant_tooltip": "アシスタントとして送信 (回答なし)",
637 - "insert_without_generating_tooltip": "回答を生成せずに挿入",
638 - "token_usage_title": "トークン使用量",
639 - "total_tokens_label": "使用トークン",
640 - "usage_percent_label": "使用されたコンテキスト",
641 - "export_choice_title": "エクスポート",
642 - "export_choice_body": "どのようにエクスポートしますか?",
643 - "copy_to_clipboard": "クリップボードにコピー",
644 - "bulk_export_conversations_success": "{count} 件の会話をエクスポートしました",
645 - "bulk_ai_rename_confirm_title": "AIで名前を変更しますか?",
646 - "bulk_ai_rename_confirm_body": "これにより、AIが選択した {count} 件の会話それぞれに対して新しいタイトルを生成し、現在のタイトルを上書きします。処理には時間がかかる場合があり、元に戻すことはできません。",
647 - "sort_by_modified_date": "最終更新日",
648 - "sort_by_created_date": "作成日",
649 - "sort_title": "並べ替え",
650 - "ai_user_response_enabled": "AIユーザーメッセージ (送信長押し)",
651 - "ai_user_response_enabled_desc": "送信ボタンを3秒間長押しすると、AIが次のメッセージを執筆して送信します",
652 - "ai_user_response_tooltip": "AIでユーザーメッセージを生成",
653 - "show_system_messages_desc": "ペルソナが選択されていない場合、リクエストごとに関連するデフォルトのアシスタントシステムプロンプトを送信する",
654 - "show_system_messages_in_chat": "チャット内にシステムメッセージを表示",
655 - "show_system_messages_in_chat_desc": "インポートされたバックアップなどからのシステムメッセージを、チャット画面上に吹き出しとして表示します",
656 - "manage_personas": "ペルソナの管理",
657 - "personas_combine_hint": "選択したペルソナは統合されます",
658 - "unload_all_models": "すべてのモデルをアンロード",
659 - "loaded_models_count": "{count} 個のモデルがロード済み",
660 - "all_models_unloaded": "すべてのモデルがアンロードされました",
661 - "branch_chat": "チャットを分岐",
662 - "branch_chat_desc": "このメッセージから新しいチャットを作成",
663 - "edit_assistant_message_desc": "アシスタントメッセージの内容を編集",
664 - "switch_to_model": "モデル {model} に切り替え",
664 "model_favorite_toggle": "お気に入りの切り替え",
665 "model_note_label": "メモ",
666 "model_note_hint": "このモデル用の非公開メモを追加...",
@@ -758,8 +757,15 @@
757 "stream_generation_time": "生成時間",
758 "attach_image": "画像を添付",
759 "attach_text_document": "テキストファイルを添付",
760 + "attach_shortcut_images": "写真",
761 + "attach_shortcut_documents": "ファイル",
762 + "attach_shortcut_saved": "保存済み",
763 "add_attachment": "添付ファイルを追加",
764 + "add_to_chat": "チャットに追加",
765 + "choose_what_to_attach": "何を追加しますか?",
766 + "choose_attachment_subtitle": "メッセージに添付するソースを選択してください",
767 "photo_permission_denied": "写真のアクセス許可が拒否されました",
768 + "select_model_prompt": "モデルを選択",
769 "characters_label": "文字数",
770 "exit_temporary_chat_title": "一時チャットを終了しますか?",
771 "exit_temporary_chat_body": "これにより、現在の会話が完全に削除されます。続行しますか?",
@@ -860,5 +866,9 @@
866 "delete_folder": "フォルダを削除",
867 "delete_folder_title": "フォルダを削除しますか?",
868 "delete_folder_body": "「{name}」を削除してもよろしいですか?フォルダ内の会話や保存済みメッセージは「未分類」に戻されます。この操作は元に戻せません。",
863 - "folder_name_required": "フォルダ名を入力してください"
869 + "folder_name_required": "フォルダ名を入力してください",
870 + "model_required_toast": "最初にモデルを選択する必要があります",
871 + "server_type_on_device_sub": "サーバー不要",
872 + "server_type_lm_studio_sub": "ローカルAPI",
873 + "server_type_ollama_sub": "CLIエンジン"
874 }
lib/l10n/app_localizations.dart
+44 -2
@@ -4646,27 +4646,69 @@ abstract class AppLocalizations {
4646 /// No description provided for @attach_image.
4647 ///
4648 /// In en, this message translates to:
4649 - /// **'Image'**
4649 + /// **'Photos'**
4650 String get attach_image;
4651
4652 /// No description provided for @attach_text_document.
4653 ///
4654 /// In en, this message translates to:
4655 - /// **'Text document'**
4655 + /// **'Documents'**
4656 String get attach_text_document;
4657
4658 + /// No description provided for @attach_shortcut_images.
4659 + ///
4660 + /// In en, this message translates to:
4661 + /// **'Photos'**
4662 + String get attach_shortcut_images;
4663 +
4664 + /// No description provided for @attach_shortcut_documents.
4665 + ///
4666 + /// In en, this message translates to:
4667 + /// **'Files'**
4668 + String get attach_shortcut_documents;
4669 +
4670 + /// No description provided for @attach_shortcut_saved.
4671 + ///
4672 + /// In en, this message translates to:
4673 + /// **'Saved'**
4674 + String get attach_shortcut_saved;
4675 +
4676 /// No description provided for @add_attachment.
4677 ///
4678 /// In en, this message translates to:
4679 /// **'Add attachment'**
4680 String get add_attachment;
4681
4682 + /// No description provided for @add_to_chat.
4683 + ///
4684 + /// In en, this message translates to:
4685 + /// **'Add to chat'**
4686 + String get add_to_chat;
4687 +
4688 + /// No description provided for @choose_what_to_attach.
4689 + ///
4690 + /// In en, this message translates to:
4691 + /// **'What would you like to add?'**
4692 + String get choose_what_to_attach;
4693 +
4694 + /// No description provided for @choose_attachment_subtitle.
4695 + ///
4696 + /// In en, this message translates to:
4697 + /// **'Pick a source to attach to your message'**
4698 + String get choose_attachment_subtitle;
4699 +
4700 /// No description provided for @photo_permission_denied.
4701 ///
4702 /// In en, this message translates to:
4703 /// **'Photo access is required to attach images'**
4704 String get photo_permission_denied;
4705
4706 + /// No description provided for @select_model_prompt.
4707 + ///
4708 + /// In en, this message translates to:
4709 + /// **'Select model'**
4710 + String get select_model_prompt;
4711 +
4712 /// No description provided for @characters_label.
4713 ///
4714 /// In en, this message translates to:
lib/l10n/app_localizations_ar.dart
+24 -3
@@ -111,10 +111,10 @@ class AppLocalizationsAr extends AppLocalizations {
111 String get online => 'متصل';
112
113 @override
114 - String get connected => 'Connected';
114 + String get connected => 'متصل';
115
116 @override
117 - String get checking => 'Checking';
117 + String get checking => 'جاري التحقق';
118
119 @override
120 String get offline => 'غير متصل';
@@ -2469,12 +2469,33 @@ class AppLocalizationsAr extends AppLocalizations {
2469 @override
2470 String get attach_text_document => 'إرفاق مستند نصي';
2471
2472 + @override
2473 + String get attach_shortcut_images => 'الصور';
2474 +
2475 + @override
2476 + String get attach_shortcut_documents => 'الملفات';
2477 +
2478 + @override
2479 + String get attach_shortcut_saved => 'المحفوظات';
2480 +
2481 @override
2482 String get add_attachment => 'إضافة مرفق';
2483
2484 + @override
2485 + String get add_to_chat => 'إضافة إلى الدردشة';
2486 +
2487 + @override
2488 + String get choose_what_to_attach => 'ما الذي ترغب في إضافته؟';
2489 +
2490 + @override
2491 + String get choose_attachment_subtitle => 'اختر مصدرًا لإرفاقه برسالتك';
2492 +
2493 @override
2494 String get photo_permission_denied => 'تم رفض إذن الوصول إلى الصور';
2495
2496 + @override
2497 + String get select_model_prompt => 'اختر النموذج';
2498 +
2499 @override
2500 String get characters_label => 'الحروف';
2501
@@ -2804,5 +2825,5 @@ class AppLocalizationsAr extends AppLocalizations {
2825 String get folder_name_required => 'الرجاء إدخال اسم المجلد';
2826
2827 @override
2807 - String get model_required_toast => 'You need to select a model first';
2828 + String get model_required_toast => 'يجب عليك اختيار نموذج أولاً';
2829 }
lib/l10n/app_localizations_bn.dart
+26 -3
@@ -111,10 +111,10 @@ class AppLocalizationsBn extends AppLocalizations {
111 String get online => 'অনলাইন';
112
113 @override
114 - String get connected => 'Connected';
114 + String get connected => 'সংযুক্ত';
115
116 @override
117 - String get checking => 'Checking';
117 + String get checking => 'যাচাই করা হচ্ছে';
118
119 @override
120 String get offline => 'অফলাইন';
@@ -2490,12 +2490,34 @@ class AppLocalizationsBn extends AppLocalizations {
2490 @override
2491 String get attach_text_document => 'টেক্সট ডকুমেন্ট সংযুক্ত করুন';
2492
2493 + @override
2494 + String get attach_shortcut_images => 'ফটো';
2495 +
2496 + @override
2497 + String get attach_shortcut_documents => 'ফাইল';
2498 +
2499 + @override
2500 + String get attach_shortcut_saved => 'সংরক্ষিত';
2501 +
2502 @override
2503 String get add_attachment => 'সংযুক্তি যোগ করুন';
2504
2505 + @override
2506 + String get add_to_chat => 'চ্যাটে যোগ করুন';
2507 +
2508 + @override
2509 + String get choose_what_to_attach => 'আপনি কি যোগ করতে চান?';
2510 +
2511 + @override
2512 + String get choose_attachment_subtitle =>
2513 + 'আপনার বার্তায় সংযুক্ত করার জন্য একটি উৎস বেছে নিন';
2514 +
2515 @override
2516 String get photo_permission_denied => 'ছবির অনুমতি অস্বীকার করা হয়েছে';
2517
2518 + @override
2519 + String get select_model_prompt => 'মডেল নির্বাচন করুন';
2520 +
2521 @override
2522 String get characters_label => 'অক্ষর (Characters)';
2523
@@ -2824,5 +2846,6 @@ class AppLocalizationsBn extends AppLocalizations {
2846 String get folder_name_required => 'অনুগ্রহ করে একটি ফোল্ডারের নাম লিখুন';
2847
2848 @override
2827 - String get model_required_toast => 'You need to select a model first';
2849 + String get model_required_toast =>
2850 + 'আপনাকে প্রথমে একটি মডেল নির্বাচন করতে হবে';
2851 }
lib/l10n/app_localizations_en.dart
+24 -2
@@ -2467,18 +2467,40 @@ class AppLocalizationsEn extends AppLocalizations {
2467 String get stream_generation_time => 'Generation time';
2468
2469 @override
2470 - String get attach_image => 'Image';
2470 + String get attach_image => 'Photos';
2471
2472 @override
2473 - String get attach_text_document => 'Text document';
2473 + String get attach_text_document => 'Documents';
2474 +
2475 + @override
2476 + String get attach_shortcut_images => 'Photos';
2477 +
2478 + @override
2479 + String get attach_shortcut_documents => 'Files';
2480 +
2481 + @override
2482 + String get attach_shortcut_saved => 'Saved';
2483
2484 @override
2485 String get add_attachment => 'Add attachment';
2486
2487 + @override
2488 + String get add_to_chat => 'Add to chat';
2489 +
2490 + @override
2491 + String get choose_what_to_attach => 'What would you like to add?';
2492 +
2493 + @override
2494 + String get choose_attachment_subtitle =>
2495 + 'Pick a source to attach to your message';
2496 +
2497 @override
2498 String get photo_permission_denied =>
2499 'Photo access is required to attach images';
2500
2501 + @override
2502 + String get select_model_prompt => 'Select model';
2503 +
2504 @override
2505 String get characters_label => 'Characters';
2506
lib/l10n/app_localizations_es.dart
+25 -3
@@ -111,10 +111,10 @@ class AppLocalizationsEs extends AppLocalizations {
111 String get online => 'En línea';
112
113 @override
114 - String get connected => 'Connected';
114 + String get connected => 'Conectado';
115
116 @override
117 - String get checking => 'Checking';
117 + String get checking => 'Comprobando';
118
119 @override
120 String get offline => 'Sin conexión';
@@ -2495,12 +2495,34 @@ class AppLocalizationsEs extends AppLocalizations {
2495 @override
2496 String get attach_text_document => 'Adjuntar documento de texto';
2497
2498 + @override
2499 + String get attach_shortcut_images => 'Fotos';
2500 +
2501 + @override
2502 + String get attach_shortcut_documents => 'Archivos';
2503 +
2504 + @override
2505 + String get attach_shortcut_saved => 'Guardados';
2506 +
2507 @override
2508 String get add_attachment => 'Añadir adjunto';
2509
2510 + @override
2511 + String get add_to_chat => 'Añadir al chat';
2512 +
2513 + @override
2514 + String get choose_what_to_attach => '¿Qué te gustaría añadir?';
2515 +
2516 + @override
2517 + String get choose_attachment_subtitle =>
2518 + 'Elige una fuente para adjuntar a tu mensaje';
2519 +
2520 @override
2521 String get photo_permission_denied => 'Permiso de fotos denegado';
2522
2523 + @override
2524 + String get select_model_prompt => 'Seleccionar modelo';
2525 +
2526 @override
2527 String get characters_label => 'Caracteres';
2528
@@ -2828,5 +2850,5 @@ class AppLocalizationsEs extends AppLocalizations {
2850 String get folder_name_required => 'Introduce un nombre de carpeta';
2851
2852 @override
2831 - String get model_required_toast => 'You need to select a model first';
2853 + String get model_required_toast => 'Primero debes seleccionar un modelo';
2854 }
lib/l10n/app_localizations_hi.dart
+25 -3
@@ -111,10 +111,10 @@ class AppLocalizationsHi extends AppLocalizations {
111 String get online => 'ऑनलाइन';
112
113 @override
114 - String get connected => 'Connected';
114 + String get connected => 'कनेक्टेड';
115
116 @override
117 - String get checking => 'Checking';
117 + String get checking => 'जाँच की जा रही है';
118
119 @override
120 String get offline => 'ऑफ़लाइन';
@@ -2483,12 +2483,34 @@ class AppLocalizationsHi extends AppLocalizations {
2483 @override
2484 String get attach_text_document => 'पाठ दस्तावेज़ संलग्न करें';
2485
2486 + @override
2487 + String get attach_shortcut_images => 'फ़ोटो';
2488 +
2489 + @override
2490 + String get attach_shortcut_documents => 'फ़ाइलें';
2491 +
2492 + @override
2493 + String get attach_shortcut_saved => 'सहेजे गए';
2494 +
2495 @override
2496 String get add_attachment => 'संलग्नक जोड़ें';
2497
2498 + @override
2499 + String get add_to_chat => 'चैट में जोड़ें';
2500 +
2501 + @override
2502 + String get choose_what_to_attach => 'आप क्या जोड़ना चाहते हैं?';
2503 +
2504 + @override
2505 + String get choose_attachment_subtitle =>
2506 + 'अपने संदेश में संलग्न करने के लिए एक स्रोत चुनें';
2507 +
2508 @override
2509 String get photo_permission_denied => 'फ़ोटो अनुमति अस्वीकृत';
2510
2511 + @override
2512 + String get select_model_prompt => 'मॉडल चुनें';
2513 +
2514 @override
2515 String get characters_label => 'वर्ण (Characters)';
2516
@@ -2817,5 +2839,5 @@ class AppLocalizationsHi extends AppLocalizations {
2839 String get folder_name_required => 'कृपया फ़ोल्डर का नाम दर्ज करें';
2840
2841 @override
2820 - String get model_required_toast => 'You need to select a model first';
2842 + String get model_required_toast => 'आपको पहले एक मॉडल चुनना होगा';
2843 }
lib/l10n/app_localizations_it.dart
+25 -3
@@ -111,10 +111,10 @@ class AppLocalizationsIt extends AppLocalizations {
111 String get online => 'Online';
112
113 @override
114 - String get connected => 'Connected';
114 + String get connected => 'Connesso';
115
116 @override
117 - String get checking => 'Checking';
117 + String get checking => 'Verifica in corso';
118
119 @override
120 String get offline => 'Offline';
@@ -2497,12 +2497,34 @@ class AppLocalizationsIt extends AppLocalizations {
2497 @override
2498 String get attach_text_document => 'Allega documento di testo';
2499
2500 + @override
2501 + String get attach_shortcut_images => 'Foto';
2502 +
2503 + @override
2504 + String get attach_shortcut_documents => 'File';
2505 +
2506 + @override
2507 + String get attach_shortcut_saved => 'Salvati';
2508 +
2509 @override
2510 String get add_attachment => 'Aggiungi allegato';
2511
2512 + @override
2513 + String get add_to_chat => 'Aggiungi alla chat';
2514 +
2515 + @override
2516 + String get choose_what_to_attach => 'Cosa vorresti aggiungere?';
2517 +
2518 + @override
2519 + String get choose_attachment_subtitle =>
2520 + 'Scegli una sorgente da allegare al tuo messaggio';
2521 +
2522 @override
2523 String get photo_permission_denied => 'Permesso foto negato';
2524
2525 + @override
2526 + String get select_model_prompt => 'Seleziona modello';
2527 +
2528 @override
2529 String get characters_label => 'Caratteri';
2530
@@ -2831,5 +2853,5 @@ class AppLocalizationsIt extends AppLocalizations {
2853 String get folder_name_required => 'Inserisci un nome per la cartella';
2854
2855 @override
2834 - String get model_required_toast => 'You need to select a model first';
2856 + String get model_required_toast => 'Devi prima selezionare un modello';
2857 }
lib/l10n/app_localizations_ja.dart
+24 -3
@@ -111,10 +111,10 @@ class AppLocalizationsJa extends AppLocalizations {
111 String get online => 'オンライン';
112
113 @override
114 - String get connected => 'Connected';
114 + String get connected => '接続済み';
115
116 @override
117 - String get checking => 'Checking';
117 + String get checking => '確認中';
118
119 @override
120 String get offline => 'オフライン';
@@ -2435,12 +2435,33 @@ class AppLocalizationsJa extends AppLocalizations {
2435 @override
2436 String get attach_text_document => 'テキストファイルを添付';
2437
2438 + @override
2439 + String get attach_shortcut_images => '写真';
2440 +
2441 + @override
2442 + String get attach_shortcut_documents => 'ファイル';
2443 +
2444 + @override
2445 + String get attach_shortcut_saved => '保存済み';
2446 +
2447 @override
2448 String get add_attachment => '添付ファイルを追加';
2449
2450 + @override
2451 + String get add_to_chat => 'チャットに追加';
2452 +
2453 + @override
2454 + String get choose_what_to_attach => '何を追加しますか?';
2455 +
2456 + @override
2457 + String get choose_attachment_subtitle => 'メッセージに添付するソースを選択してください';
2458 +
2459 @override
2460 String get photo_permission_denied => '写真のアクセス許可が拒否されました';
2461
2462 + @override
2463 + String get select_model_prompt => 'モデルを選択';
2464 +
2465 @override
2466 String get characters_label => '文字数';
2467
@@ -2764,5 +2785,5 @@ class AppLocalizationsJa extends AppLocalizations {
2785 String get folder_name_required => 'フォルダ名を入力してください';
2786
2787 @override
2767 - String get model_required_toast => 'You need to select a model first';
2788 + String get model_required_toast => '最初にモデルを選択する必要があります';
2789 }
lib/l10n/app_localizations_ru.dart
+25 -3
@@ -111,10 +111,10 @@ class AppLocalizationsRu extends AppLocalizations {
111 String get online => 'Онлайн';
112
113 @override
114 - String get connected => 'Connected';
114 + String get connected => 'Подключено';
115
116 @override
117 - String get checking => 'Checking';
117 + String get checking => 'Проверка';
118
119 @override
120 String get offline => 'Оффлайн';
@@ -2495,12 +2495,34 @@ class AppLocalizationsRu extends AppLocalizations {
2495 @override
2496 String get attach_text_document => 'Прикрепить текстовый документ';
2497
2498 + @override
2499 + String get attach_shortcut_images => 'Фото';
2500 +
2501 + @override
2502 + String get attach_shortcut_documents => 'Файлы';
2503 +
2504 + @override
2505 + String get attach_shortcut_saved => 'Сохраненные';
2506 +
2507 @override
2508 String get add_attachment => 'Добавить вложение';
2509
2510 + @override
2511 + String get add_to_chat => 'Добавить в чат';
2512 +
2513 + @override
2514 + String get choose_what_to_attach => 'Что вы хотите добавить?';
2515 +
2516 + @override
2517 + String get choose_attachment_subtitle =>
2518 + 'Выберите источник, чтобы прикрепить к сообщению';
2519 +
2520 @override
2521 String get photo_permission_denied => 'Доступ к фото отклонен';
2522
2523 + @override
2524 + String get select_model_prompt => 'Выбрать модель';
2525 +
2526 @override
2527 String get characters_label => 'Символы';
2528
@@ -2831,5 +2853,5 @@ class AppLocalizationsRu extends AppLocalizations {
2853 String get folder_name_required => 'Введите название папки';
2854
2855 @override
2834 - String get model_required_toast => 'You need to select a model first';
2856 + String get model_required_toast => 'Сначала выберите модель';
2857 }
lib/l10n/app_localizations_zh.dart
+54 -3
@@ -111,10 +111,10 @@ class AppLocalizationsZh extends AppLocalizations {
111 String get online => '在线';
112
113 @override
114 - String get connected => 'Connected';
114 + String get connected => '已连接';
115
116 @override
117 - String get checking => 'Checking';
117 + String get checking => '正在检查';
118
119 @override
120 String get offline => '离线';
@@ -2419,12 +2419,33 @@ class AppLocalizationsZh extends AppLocalizations {
2419 @override
2420 String get attach_text_document => '附加文本文件';
2421
2422 + @override
2423 + String get attach_shortcut_images => '照片';
2424 +
2425 + @override
2426 + String get attach_shortcut_documents => '文件';
2427 +
2428 + @override
2429 + String get attach_shortcut_saved => '已保存';
2430 +
2431 @override
2432 String get add_attachment => '添加附件';
2433
2434 + @override
2435 + String get add_to_chat => '添加到聊天';
2436 +
2437 + @override
2438 + String get choose_what_to_attach => '您想添加什么?';
2439 +
2440 + @override
2441 + String get choose_attachment_subtitle => '选择要附加到消息的来源';
2442 +
2443 @override
2444 String get photo_permission_denied => '相册权限被拒绝';
2445
2446 + @override
2447 + String get select_model_prompt => '选择模型';
2448 +
2449 @override
2450 String get characters_label => '字符数';
2451
@@ -2744,7 +2765,7 @@ class AppLocalizationsZh extends AppLocalizations {
2765 String get folder_name_required => '请输入文件夹名称';
2766
2767 @override
2747 - String get model_required_toast => 'You need to select a model first';
2768 + String get model_required_toast => '您需要先选择一个模型';
2769 }
2770
2771 /// The translations for Chinese, as used in Taiwan (`zh_TW`).
@@ -2853,6 +2874,12 @@ class AppLocalizationsZhTw extends AppLocalizationsZh {
2874 @override
2875 String get online => '線上';
2876
2877 + @override
2878 + String get connected => '已連線';
2879 +
2880 + @override
2881 + String get checking => '正在檢查';
2882 +
2883 @override
2884 String get offline => '離線';
2885
@@ -5157,12 +5184,33 @@ class AppLocalizationsZhTw extends AppLocalizationsZh {
5184 @override
5185 String get attach_text_document => '附加文字檔案';
5186
5187 + @override
5188 + String get attach_shortcut_images => '相片';
5189 +
5190 + @override
5191 + String get attach_shortcut_documents => '檔案';
5192 +
5193 + @override
5194 + String get attach_shortcut_saved => '已儲存';
5195 +
5196 @override
5197 String get add_attachment => '添加附件';
5198
5199 + @override
5200 + String get add_to_chat => '新增至聊天';
5201 +
5202 + @override
5203 + String get choose_what_to_attach => '您想新增什麼?';
5204 +
5205 + @override
5206 + String get choose_attachment_subtitle => '選擇要附加到訊息的來源';
5207 +
5208 @override
5209 String get photo_permission_denied => '相簿權限被拒絕';
5210
5211 + @override
5212 + String get select_model_prompt => '選擇模型';
5213 +
5214 @override
5215 String get characters_label => '字元數';
5216
@@ -5480,4 +5528,7 @@ class AppLocalizationsZhTw extends AppLocalizationsZh {
5528
5529 @override
5530 String get folder_name_required => '請輸入資料夾名稱';
5531 +
5532 + @override
5533 + String get model_required_toast => '您需要先選擇一個模型';
5534 }
lib/l10n/app_ru.arb
+541 -531
@@ -1,510 +1,486 @@
1 {
2 "@@locale": "ru",
3 - "active": "Активный",
4 - "active_integrations": "Активная интеграция",
5 - "add_ephemeral_mcp": "Добавить эфемерный сервер MCP",
6 - "add_server": "Добавить сервер",
7 - "add_server_first": "Сначала добавьте сервер, чтобы увидеть доступные модели.",
8 - "add_server_title": "Добавить сервер",
9 - "advanced_settings": "Расширенные настройки",
10 - "all": "Все",
11 - "allow_notifications": "Разрешить уведомления",
12 - "always_available": "Всегда доступен",
13 - "api_key_format": "Ключи API OpenRouter начинаются с sk-",
14 - "api_key_hint_generic": "Для аутентифицированных серверов",
15 - "api_key_hint_openrouter": "ск-...",
16 - "api_key_optional": "Ключ API (необязательно)",
17 - "api_key_required": "API-ключ *",
18 - "api_key_required_openrouter": "Ключ API, необходимый для OpenRouter",
3 "app_name": "LocalMind",
4 "app_tagline": "Ваш ИИ. Ваше устройство. Ваши правила.",
5 "app_version": "1.0.0",
22 - "attach_images_tooltip": "Прикрепите изображения или текст",
23 - "auto_execute_tools": "Инструменты автоматического выполнения",
24 - "auto_generate_titles": "Автоматическое создание заголовков",
25 - "available": "Доступный",
26 - "beta_label": "Бета",
27 - "experimental_label": "Экспериментальный",
28 - "available_models": "Доступные модели",
29 - "available_ram": "Доступная оперативная память",
30 - "backend_cpu_desc": "Работает на всех устройствах. Наиболее совместим.",
31 - "backend_gpu_desc": "Ускорение OpenCL. Быстрее на поддерживаемых устройствах.",
32 - "backend_ios_notice": "В iOS доступен только серверный процессор.",
33 - "backend_npu_desc": "Поставщик НПУ (Qualcomm/MediaTek). Самый быстрый вывод.",
34 - "builtin_badge": "Встроенный",
35 - "calculating": "Расчет...",
6 "cancel": "Отмена",
37 - "cannot_undo": "Это действие невозможно отменить.",
38 - "category_label": "Категория",
39 - "change_persona": "Изменить личность",
40 - "character_count": "{length} символов",
41 - "character_count_max": "{currentLen}/4000",
42 - "chat_history_title": "История чата",
43 - "chat_input_hint": "Спроси что-нибудь",
44 - "chat_parameters_tooltip": "Параметры чата",
45 - "chat_settings_title": "Настройки чата",
46 - "chat_title": "LocalMind",
47 - "choose_theme": "Выбрать тему",
48 - "choose_theme_desc": "Персонализируйте внешний вид приложения. Вы всегда можете изменить это позже в настройках.",
49 - "clear": "Прозрачный",
50 - "clear_conversation": "Чистый разговор",
51 - "clear_conversation_body": "Это приведет к удалению всех сообщений в этом разговоре.",
52 - "clear_conversation_title": "Ясный разговор?",
53 - "clone_edit": "Клонировать и редактировать",
54 - "close": "Закрывать",
55 - "code_theme_dark": "Кодовая тема (темная)",
56 - "code_theme_desc": "Выберите тему подсветки синтаксиса для блоков кода.",
57 - "code_theme_light": "Тема кода (светлая)",
58 - "configure": "Настроить",
59 - "configuring_server": "Настройка сервера...",
7 "confirm": "Подтверждать",
61 - "connection_error": "Ошибка подключения. Проверьте свой сервер.",
62 - "connection_failed": "Соединение не удалось. Проверьте свои настройки.",
63 - "connection_successful": "Подключение успешно!",
64 - "context_chip": "{ctx} ctx",
65 - "context_length": "Длина контекста",
66 - "context_length_desc": "Окно истории",
8 + "delete": "Удалить",
9 + "save": "Сохранять",
10 + "retry": "Повторить попытку",
11 + "close": "Закрывать",
12 + "done": "Сделанный",
13 "continue_action": "Продолжать",
68 - "conversation_date": "{month}/{day}/{year}",
69 - "conversation_days_ago": "{days}д назад",
70 - "conversation_hours_ago": "{hours}ч назад",
71 - "conversation_id": "Идентификатор беседы",
72 - "conversation_just_now": "Прямо сейчас",
73 - "conversation_minutes_ago": "{minutes} мин назад",
74 - "conversation_yesterday": "Вчера",
14 + "skip": "Пропускать",
15 + "install": "Установить",
16 + "download": "Скачать",
17 + "resume": "Продолжить",
18 + "pause": "Пауза",
19 + "stop": "Останавливаться",
20 + "edit": "Редактировать",
21 + "preview": "Предварительный просмотр",
22 + "unload": "Разгрузить",
23 + "load": "Нагрузка",
24 + "rename": "Переименовать",
25 + "pin": "Приколоть",
26 + "unpin": "Открепить",
27 + "share": "Делиться",
28 + "copy": "Копировать",
29 "copied": "Скопировано!",
76 - "copied_markdown": "Скопировано как Markdown",
30 "copied_to_clipboard": "Скопировано в буфер обмена",
78 - "copy": "Копировать",
79 - "copy_info": "Копировать информацию",
80 - "copy_markdown": "Скопировать как Markdown",
81 - "create_persona": "Создать Персону",
82 - "create_persona_button": "Создавать",
83 - "created_at": "Создано в",
84 - "debug_dialog_desc": "Диагностическая информация, помогающая выявить проблемы синхронизации.",
85 - "default_badge": "По умолчанию",
86 - "default_icon": "Значок по умолчанию",
87 - "delete": "Удалить",
88 - "delete_all_conversations": "Удалить все разговоры",
89 - "delete_conversation": "Удалить разговор?",
90 - "delete_conversation_body": "Вы уверены, что хотите удалить \"{title}\"? Это невозможно отменить.",
91 - "delete_conversation_title": "Удалить разговор?",
92 - "delete_message_title": "Удалить сообщение?",
31 + "select": "Выбирать",
32 + "active": "Активный",
33 + "all": "Все",
34 + "none": "Никто",
35 + "none_selected": "Ничего не выбрано",
36 + "online": "Онлайн",
37 + "connected": "Подключено",
38 + "checking": "Проверка",
39 + "offline": "Оффлайн",
40 + "error": "Ошибка",
41 + "unknown_error": "Неизвестная ошибка",
42 + "not_now": "Не сейчас",
43 + "enable": "Давать возможность",
44 + "proceed_anyway": "Продолжить в любом случае",
45 + "test_connection": "Тестовое соединение",
46 + "testing": "Тестирование...",
47 + "connection_successful": "Подключение успешно!",
48 + "connection_failed": "Соединение не удалось. Проверьте свои настройки.",
49 + "save_continue": "Сохранить и продолжить",
50 + "save_changes": "Сохранить изменения",
51 + "finish_setup": "Завершить настройку",
52 + "start_new_chat": "Начать новый чат",
53 + "cannot_undo": "Это действие невозможно отменить.",
54 + "ram_warning": "Предупреждение об оперативной памяти",
55 + "recommended": "РЕКОМЕНДУЕТСЯ",
56 + "may_be_large": "Может быть слишком большим для этого устройства",
57 + "calculating": "Расчет...",
58 + "download_failed": "Загрузка не удалась",
59 + "downloaded": "Скачано",
60 + "not_downloaded": "Не загружено",
61 + "installed": "Установлено",
62 + "not_installed": "Не установлено",
63 + "loading": "Загрузка...",
64 + "thinking": "мышление",
65 + "processing": "Обработка...",
66 + "initializing": "Инициализация...",
67 + "ready": "Готовый",
68 + "preparing_app": "Подготовка приложения...",
69 + "initializing_services": "Инициализация служб...",
70 + "configuring_server": "Настройка сервера...",
71 + "startup_failed": "Запуск не удался",
72 + "something_went_wrong": "Что-то пошло не так",
73 + "delete_model_title": "Удалить модель",
74 "delete_model_body": "Вы уверены, что хотите удалить {name}?",
75 "delete_model_body_with_size": "Вы уверены, что хотите удалить {name}? Это освободит примерно {size} места.\n\nПри необходимости вы сможете загрузить эту модель позже.",
95 - "delete_model_title": "Удалить модель",
96 - "delete_persona_body": "Это невозможно отменить.",
97 - "delete_persona_title": "Удалить \"{name}\"?",
98 - "delete_server_body": "Вы уверены, что хотите удалить \"{name}\"? Это невозможно отменить.",
99 - "delete_server_title": "Удалить сервер",
100 - "delete_voice_body": "Вы уверены, что хотите удалить {name}? Это освободит примерно {size} места.\n\nПри необходимости вы сможете скачать этот голос позже.",
76 "delete_voice_title": "Удалить голос",
102 - "description_hint": "Что делает эта личность...",
103 - "description_optional": "Описание (необязательно)",
104 - "device_memory": "Память устройства",
105 - "disconnected": "Отключился от сервера.",
106 - "done": "Сделанный",
107 - "download": "Скачать",
108 - "download_complete_body": "Модель {modelName} успешно загружена.",
109 - "download_complete_notification": "Загрузка завершена!",
110 - "download_failed": "Загрузка не удалась",
111 - "download_failed_body": "Не удалось загрузить {modelName}.",
112 - "download_failed_notification": "Загрузка не удалась: {error}",
113 - "download_model_desc": "Выберите модель для загрузки.\nОн будет работать локально на вашем устройстве.",
114 - "download_model_title": "Скачать модель",
115 - "download_notification_title": "Загрузка {modelName}...",
116 - "download_progress": "{percent}% • {speed}",
117 - "downloaded": "Скачано",
118 - "downloading_status": "Загрузка...",
119 - "edit": "Редактировать",
120 - "edit_message": "Редактировать сообщение",
121 - "edit_message_desc": "При сохранении ответ помощника ниже будет удален и восстановлен.",
122 - "edit_persona": "Изменить личность",
123 - "edit_server": "Редактировать сервер",
124 - "emoji_label": "Эмодзи",
125 - "enable": "Давать возможность",
126 - "enable_mcp": "Включить MCP",
127 - "enable_notifications": "Включить уведомления",
128 - "enable_notifications_desc": "Получайте уведомления, когда модели завершают загрузку.",
129 - "engine_name_kitten": "Котенок ТТС",
130 - "engine_name_sherpa": "Шерпа ОННКС ВИТС",
131 - "engine_name_system": "Система ТТС",
132 - "engine_spec": "{sizeMb} МБ · {ramMb} МБ ОЗУ · {voiceCount} голосов",
133 - "engine_tagline_kitten": "Высокоскоростная нейронная TTS",
134 - "engine_tagline_sherpa": "Оффлайн голоса Пайпер",
135 - "engine_tagline_system": "Встроенный движок устройства",
136 - "enter_new_title": "Введите новое название",
137 - "error": "Ошибка",
77 + "delete_voice_body": "Вы уверены, что хотите удалить {name}? Это освободит примерно {size} места.\n\nПри необходимости вы сможете скачать этот голос позже.",
78 + "delete_server_title": "Удалить сервер",
79 + "delete_server_body": "Вы уверены, что хотите удалить \"{name}\"? Это невозможно отменить.",
80 + "delete_conversation_title": "Удалить разговор?",
81 + "delete_conversation_body": "Вы уверены, что хотите удалить \"{title}\"? Это невозможно отменить.",
82 + "delete_message_title": "Удалить сообщение?",
83 + "delete_persona_title": "Удалить \"{name}\"?",
84 + "delete_persona_body": "Это невозможно отменить.",
85 + "delete_builtin_persona_body": "Это встроенный персонаж. Вы можете восстановить его позже в Настройках.",
86 + "restore_builtin_personas": "Восстановить стандартных персонажей",
87 + "restore_builtin_personas_desc": "Заново добавить всех удаленных встроенных персонажей",
88 + "restore_builtin_personas_success": "Персонажи по умолчанию восстановлены",
89 + "clear_personas": "Сбросить персонажей",
90 + "enable_image_compression": "Сжимать изображения перед отправкой",
91 + "enable_image_compression_desc": "Изменять размер и сжимать прикрепленные изображения, чтобы размер загрузки оставался в пределах лимитов сервера",
92 + "image_compression_level": "Агрессивность сжатия",
93 + "image_compression_level_desc": "Более высокая агрессивность дает файлы меньшего размера при более низком качестве",
94 + "image_compression_level_low": "Низкая",
95 + "image_compression_level_medium": "Средняя",
96 + "image_compression_level_high": "Высокая",
97 + "sort_models_tooltip": "Сортировка моделей",
98 + "sort_by_favorites": "Сначала избранные",
99 + "sort_by_name": "По имени (А-Я)",
100 + "sort_by_size_smallest": "Размер (сначала меньшие)",
101 + "sort_by_size_largest": "Размер (сначала большие)",
102 + "sort_by_context_length": "Длина контекста",
103 + "bulk_ai_rename_progress": "Переименование {done}/{total}...",
104 + "selected_count": "Выбрано: {count}",
105 + "ai_rename_tooltip": "Переименовать выбранные с помощью ИИ",
106 + "new_chat_in_folder_tooltip": "Новый чат в этой папке",
107 + "total_tokens_count": "Токенов: {count}",
108 + "smart_replies_use_persona": "Использовать персонаж в умных ответах",
109 + "smart_replies_use_persona_desc": "Предлагаемые ответы будут соответствовать тону активного персонажа, а не общего ассистента",
110 + "keep_persona_on_new_chat": "Сохранять персонаж при новом чате",
111 + "keep_persona_on_new_chat_desc": "Не сбрасывать выбранных персонажей при создании нового чата",
112 + "role_swap_button_enabled": "Показывать кнопку смены ролей",
113 + "role_swap_button_enabled_desc": "Показывать кнопку в поле ввода чата для отправки сообщения от лица ассистента, а не пользователя (без генерации ответа)",
114 + "send_as_user_tooltip": "Отправить от пользователя",
115 + "send_as_assistant_tooltip": "Отправить от ассистента (без ответа)",
116 + "insert_without_generating_tooltip": "Вставить без генерации",
117 + "token_usage_title": "Использование токенов",
118 + "total_tokens_label": "Использовано токенов",
119 + "usage_percent_label": "Использовано контекста",
120 + "export_choice_title": "Экспорт",
121 + "export_choice_body": "Как вы хотите это экспортировать?",
122 + "copy_to_clipboard": "Копировать в буфер обмена",
123 + "bulk_export_conversations_success": "Экспортировано чатов: {count}",
124 + "bulk_ai_rename_confirm_title": "Переименовать с помощью ИИ?",
125 + "bulk_ai_rename_confirm_body": "ИИ сгенерирует новые заголовки для {count} выбранных чатов, заменив текущие. Это может занять некоторое время и действие нельзя отменить.",
126 + "sort_by_modified_date": "Последнее изменение",
127 + "sort_by_created_date": "Дата создания",
128 + "sort_title": "Сортировка",
129 + "clear_conversation_title": "Ясный разговор?",
130 + "clear_conversation_body": "Это приведет к удалению всех сообщений в этом разговоре.",
131 + "clear": "Прозрачный",
132 + "label_completed": "{label} завершено",
133 "error_with_message": "Ошибка: {error}",
139 - "eta_label": "Оставшееся время: {eta}",
140 - "expected_messages": "Ожидаемые сообщения",
141 - "export_header": "*Экспортировано из LocalMind — {date}*",
142 - "export_label_assistant": "ПОМОЩНИК",
143 - "export_label_system": "СИСТЕМА",
144 - "export_label_tool": "ИНСТРУМЕНТ",
145 - "export_label_user": "ПОЛЬЗОВАТЕЛЬ",
146 - "export_role_assistant": "## 🤖 Помощник",
147 - "export_role_system": "## ⚙️ Система",
148 - "export_role_tool": "## 🔧 Инструмент",
149 - "export_role_user": "## 👤 Пользователь",
150 - "export_text_assistant": "[ПОМОЩНИК]",
151 - "export_text_system": "[СИСТЕМА]",
152 - "export_text_tool": "[ИНСТРУМЕНТ]",
153 - "export_text_user": "[ПОЛЬЗОВАТЕЛЬ]",
154 - "failed_load_models": "Не удалось загрузить модели.",
155 - "finish_setup": "Завершить настройку",
156 - "font_preview": "Быстрая бурая лиса перепрыгивает через ленивую собаку.",
134 + "preview_failed": "Не удалось выполнить предварительный просмотр: {error}",
135 + "loading_model": "Загрузка {modelId}...",
136 + "model_loaded": "Модель загружена: {modelId} ({backend})",
137 + "no_model_loaded": "Ни одна модель не загружена. Нажмите «Управление моделями на устройстве», чтобы скачать и загрузить модель.",
138 + "loading_model_error": "Ошибка: {error}",
139 + "delete_conversation": "Удалить разговор?",
140 + "nav_history": "История",
141 + "nav_servers": "Серверы",
142 + "nav_local_models": "Локальные модели",
143 + "nav_tts": "Текст в речь",
144 + "nav_personas": "Персоны",
145 + "nav_settings": "Настройки",
146 + "nav_new_chat": "Новый чат",
147 + "search_hint": "Поиск разговоров...",
148 + "no_server_selected": "Сервер не выбран",
149 + "switch_server": "Переключить сервер",
150 + "switch_server_subtitle": "Выберите сервер для подключения",
151 + "manage_servers": "Управление серверами",
152 + "open_source": "Открытый исходный код",
153 + "open_source_desc": "LocalMind имеет открытый исходный код. Следите за нашим прогрессом или вносите свой вклад на GitHub.",
154 + "star_on_github": "Звезда на GitHub",
155 + "add_more": "Добавить еще",
156 + "on_github": "на GitHub",
157 + "could_not_open_github": "Не удалось открыть GitHub.",
158 + "settings_title": "Настройки",
159 + "settings_appearance": "Появление",
160 + "settings_language": "Язык",
161 + "language_system_default": "Системные настройки по умолчанию",
162 + "settings_tts": "Преобразование текста в речь",
163 + "settings_behavior": "Поведение",
164 + "settings_on_device": "Вывод на устройстве",
165 + "settings_default_server": "Сервер по умолчанию",
166 + "settings_default_persona": "Персона по умолчанию",
167 + "settings_privacy": "Конфиденциальность",
168 + "settings_data_management": "Управление данными",
169 + "settings_about": "О",
170 + "theme": "Тема",
171 + "theme_system": "Система",
172 + "theme_light": "Свет",
173 + "theme_dark": "Темный",
174 + "theme_claude": "Клод",
175 "font_size": "Размер шрифта",
176 "font_size_desc": "Настройте размер текста в чате.",
177 + "font_preview": "Быстрая бурая лиса перепрыгивает через ленивую собаку.",
178 + "code_theme_dark": "Кодовая тема (темная)",
179 + "code_theme_light": "Тема кода (светлая)",
180 + "code_theme_desc": "Выберите тему подсветки синтаксиса для блоков кода.",
181 + "tts_engine": "Двигатель ТТС",
182 + "tts_engine_system": "Система ТТС",
183 + "tts_engine_kitten": "Котенок ТТС",
184 + "voice": "Голос",
185 + "voice_female": "Женский",
186 + "voice_male": "Мужской",
187 + "voice_other": "Другой",
188 + "tts_speed": "Скорость TTS",
189 + "tts_speed_desc": "Отрегулируйте скорость воспроизведения.",
190 + "manage_tts_models": "Управление моделями TTS",
191 + "manage_on_device_models": "Управление моделями на устройстве",
192 + "enable_smart_reply": "Умные ответы на устройстве",
193 + "ai_user_response_enabled": "Сообщение пользователя через ИИ (зажать кнопку)",
194 + "ai_user_response_enabled_desc": "Зажмите кнопку отправки на 3 секунды, чтобы ИИ написал и отправил следующее сообщение за вас",
195 + "ai_user_response_tooltip": "Сгенерировать сообщение пользователя с помощью ИИ",
196 + "streaming_responses": "Потоковая передача ответов",
197 + "auto_generate_titles": "Автоматическое создание заголовков",
198 + "send_on_enter": "Отправить при вводе",
199 + "show_system_messages": "Показать системные сообщения",
200 + "show_system_messages_desc": "Если персонаж не выбран, отправлять стандартный системный промпт ассистента с каждым запросом",
201 + "show_system_messages_in_chat": "Показывать системные сообщения в чате",
202 + "show_system_messages_in_chat_desc": "Отображать системные сообщения (например, из импортированной резервной копии) в виде облачков сообщений в чате",
203 "haptic_feedback": "Тактильная обратная связь",
160 - "history_missing_desc": "Либо сообщения в этом чате были удалены, либо запись истории повреждена.",
204 + "enable_mcp": "Включить MCP",
205 + "new_chat_mcp_default": "Новый чат MCP по умолчанию",
206 + "show_data_indicator": "Показать индикатор данных",
207 + "privacy_info": "«LocalMind никогда не видит ваши данные»",
208 + "delete_all_conversations": "Удалить все разговоры",
209 + "reset_settings_defaults": "Сброс настроек к значениям по умолчанию",
210 + "chat_title": "LocalMind",
211 + "chat_parameters_tooltip": "Параметры чата",
212 + "change_persona": "Изменить личность",
213 + "set_persona": "Установить Персону",
214 + "remove_persona": "Удалить персону",
215 + "clear_conversation": "Чистый разговор",
216 + "connection_error": "Ошибка подключения. Проверьте свой сервер.",
217 + "disconnected": "Отключился от сервера.",
218 + "configure": "Настроить",
219 + "select_model": "Выберите модель",
220 + "select_persona": "Выберите Персону",
221 + "manage_personas": "Управление персонажами",
222 + "personas_combine_hint": "Выбранные персонажи будут объединены",
223 + "start_conversation": "Начать разговор",
224 + "recent_chats": "Недавние чаты",
225 + "see_all": "Посмотреть все",
226 + "quick_write": "Помогите мне написать функцию",
227 + "quick_explain": "Объясните этот код",
228 + "quick_debug": "Отладьте это для меня",
229 + "quick_async": "Как использовать async/await?",
230 "history_missing_title": "История отсутствует",
162 - "host_label": "Хост/IP-адрес",
163 - "host_required": "Требуется хост",
164 - "host_valid": "Введите действительное имя хоста или IP-адрес.",
165 - "inference_backend": "Серверная часть вывода",
166 - "initializing": "Инициализация...",
167 - "initializing_services": "Инициализация служб...",
168 - "install": "Установить",
169 - "installed": "Установлено",
170 - "label_completed": "{label} завершено",
171 - "language_system_default": "Системные настройки по умолчанию",
231 + "history_missing_desc": "Либо сообщения в этом чате были удалены, либо запись истории повреждена.",
232 + "technical_details": "Технические детали",
233 "last_error": "Последняя ошибка:",
173 - "load": "Нагрузка",
174 - "loaded_status": "Загружено",
175 - "loading": "Загрузка...",
176 - "loading_model": "Загрузка {modelId}...",
177 - "loading_model_error": "Ошибка: {error}",
178 - "manage_on_device_models": "Управление моделями на устройстве",
179 - "enable_smart_reply": "Умные ответы на устройстве",
180 - "manage_servers": "Управление серверами",
181 - "manage_tts_models": "Управление моделями TTS",
234 + "copy_info": "Копировать информацию",
235 + "conversation_id": "Идентификатор беседы",
236 + "created_at": "Создано в",
237 + "expected_messages": "Ожидаемые сообщения",
238 + "debug_dialog_desc": "Диагностическая информация, помогающая выявить проблемы синхронизации.",
239 + "chat_input_hint": "Спроси что-нибудь",
240 + "send_message_tooltip": "Отправить сообщение",
241 + "stop_generation_tooltip": "Остановить генерацию",
242 + "attach_images_tooltip": "Прикрепите изображения или текст",
243 + "start_listening_tooltip": "Начать слушать",
244 + "stop_listening_tooltip": "Хватит слушать",
245 + "tool_label": "Инструмент: {toolCallId}",
246 + "tool_unknown": "Инструмент: Неизвестно",
247 + "message_options": "Параметры сообщения",
248 + "copy_markdown": "Скопировать как Markdown",
249 + "copied_markdown": "Скопировано как Markdown",
250 + "read_aloud": "Читать вслух",
251 + "stop_reading": "Хватит читать",
252 + "more": "Более",
253 + "character_count": "{length} символов",
254 + "edit_message": "Редактировать сообщение",
255 + "edit_message_desc": "При сохранении ответ помощника ниже будет удален и восстановлен.",
256 + "save_regenerate": "Сохранить и восстановить",
257 + "chat_settings_title": "Настройки чата",
258 + "reset_defaults": "Сбросить настройки по умолчанию",
259 + "parameters_tab": "Параметры",
260 + "mcp_tab": "МКП",
261 + "temperature": "Температура",
262 + "temperature_desc": "Управляет случайностью: выше = креативно, ниже = сосредоточено.",
263 + "top_p": "Топ П",
264 + "top_p_desc": "Порог выборки ядра",
265 "max_tokens": "Макс. жетонов",
266 "max_tokens_desc": "Предел ответа",
184 - "may_be_large": "Может быть слишком большим для этого устройства",
267 + "context_length": "Длина контекста",
268 + "context_length_desc": "Окно истории",
269 "mcp_disabled_warning": "MCP отключен глобально. Включите его в настройках, чтобы использовать эти функции.",
270 "mcp_enable_chat": "Включите MCP для этого чата",
271 + "auto_execute_tools": "Инструменты автоматического выполнения",
272 + "beta_label": "Бета",
273 + "experimental_label": "Экспериментальный",
274 + "add_ephemeral_mcp": "Добавить эфемерный сервер MCP",
275 "mcp_label_placeholder": "Этикетка",
188 - "mcp_tab": "МКП",
276 "mcp_url_placeholder": "URL-адрес (https://...)",
190 - "memory_critical": "Критический",
191 - "memory_healthy": "Здоровый",
192 - "memory_low": "Низкий",
193 - "message_options": "Параметры сообщения",
194 - "model_deepseek": "DeepSeek R1 Дистилл Qwen 1.5B",
195 - "model_deepseek_desc": "Модель рассуждения и цепочки мыслей. Лучше всего подходит для логических задач.",
196 - "model_gemma": "Джемма 4 E2B Инструктирует",
197 - "model_gemma_desc": "Флагманская модель Google. Высочайшее качество, требует больше оперативной памяти.",
198 - "model_license_apache": "Апач-2.0",
199 - "model_license_mit": "Массачусетский технологический институт",
200 - "model_load_failed": "Не удалось загрузить модель: {error}",
201 - "model_loaded": "Модель загружена: {modelId} ({backend})",
202 - "model_qwen_25": "Квен 2.5 1.5B Инструктировать",
203 - "model_qwen_25_desc": "Сбалансированное качество и размер. Подходит для общего разговора.",
204 - "model_qwen_3": "Квен 3 0.6Б",
205 - "model_qwen_3_desc": "Самая маленькая модель чата общего назначения. Быстрые ответы, низкое использование памяти.",
206 - "model_unload_failed": "Не удалось выгрузить модель: {error}",
207 - "model_unloaded_ollama": "Выгрузка запрошена для {name}. Если Оллама доступен, модель выпускается немедленно.",
208 - "model_unloaded_success": "{name} успешно выгружено",
209 - "more": "Более",
210 - "my_persona_hint": "Моя Персона",
211 - "my_server_hint": "Мой сервер",
212 - "name_label": "Имя",
213 - "name_length_validation": "Имя должно содержать не более 50 символов.",
214 - "name_max_50": "Макс. 50 символов.",
215 - "name_required": "Требуется имя",
216 - "nav_history": "История",
217 - "nav_local_models": "Локальные модели",
218 - "nav_new_chat": "Новый чат",
219 - "nav_personas": "Персоны",
220 - "nav_servers": "Серверы",
221 - "nav_settings": "Настройки",
222 - "nav_tts": "Текст в речь",
223 - "new_chat_mcp_default": "Новый чат MCP по умолчанию",
224 - "no_conversations_yet": "Пока нет разговоров",
225 - "no_model_loaded": "Ни одна модель не загружена. Нажмите «Управление моделями на устройстве», чтобы скачать и загрузить модель.",
226 - "no_models_available": "Нет доступных моделей",
227 - "no_models_match": "Нет моделей, соответствующих запросу \"{searchQuery}\".",
228 - "no_personas_desc": "Создайте свою первую личность, чтобы настроить поведение ИИ.",
229 - "no_personas_found": "Персоны не найдены",
230 - "no_prompt_placeholder": "Пока нет подсказки...",
277 + "active_integrations": "Активная интеграция",
278 + "enable_notifications": "Включить уведомления",
279 + "enable_notifications_desc": "Получайте уведомления, когда модели завершают загрузку.",
280 + "chat_history_title": "История чата",
281 + "conversation_just_now": "Прямо сейчас",
282 + "conversation_minutes_ago": "{minutes} мин назад",
283 + "conversation_hours_ago": "{hours}ч назад",
284 + "conversation_yesterday": "Вчера",
285 + "conversation_days_ago": "{days}д назад",
286 + "conversation_date": "{month}/{day}/{year}",
287 + "options_tooltip": "Параметры",
288 "no_results_found": "Результаты не найдены",
232 - "no_server_connected": "Сервер не подключен",
233 - "no_server_selected": "Сервер не выбран",
234 - "no_servers_desc": "Добавьте свой первый сервер, чтобы начать общаться с моделями ИИ.",
235 - "no_servers_yet": "Серверов пока нет",
236 - "none": "Никто",
237 - "none_selected": "Ничего не выбрано",
238 - "not_downloaded": "Не загружено",
239 - "not_installed": "Не установлено",
240 - "not_now": "Не сейчас",
241 - "notification_benefit_background": "Статус фоновых задач",
242 - "notification_benefit_completions": "Завершения генерации",
243 - "notification_benefit_downloads": "Ход загрузки модели",
244 - "offline": "Оффлайн",
289 + "no_conversations_yet": "Пока нет разговоров",
290 + "try_different_search": "Попробуйте другой поисковый запрос",
291 + "start_new_conversation": "Начать новый разговор",
292 + "rename_conversation": "Переименовать беседу",
293 + "enter_new_title": "Введите новое название",
294 + "pinned_section": "ПРИКРЕПЛЕНО",
295 + "today_section": "СЕГОДНЯ",
296 + "yesterday_section": "ВЧЕРА",
297 + "previous_7_days": "ПРЕДЫДУЩИЕ 7 ДНЕЙ",
298 + "previous_30_days": "ПРЕДЫДУЩИЕ 30 ДНЕЙ",
299 "older_section": "СТАРШЕ",
246 - "on_device_android_only": "Вывод на устройстве в настоящее время доступен только на Android.",
247 - "on_device_models_title": "Модели на устройстве",
300 "onboarding_choose_language": "Выберите язык",
301 "onboarding_choose_language_desc": "Выберите предпочитаемый язык. Вы можете изменить это в любое время в настройках.",
250 - "onboarding_connect_desc": "Подключитесь к LM Studio, Ollama или\nOpenRouter для запуска вашего частного ИИ\nопыт.",
251 - "onboarding_connect_server": "Подключите свой\nСервер",
302 "onboarding_localmind": "МЕСТНЫЙ РАЗУМ",
253 - "onboarding_welcome": "Добро пожаловать в LocalMind",
254 - "online": "Онлайн",
255 - "open_source": "Открытый исходный код",
256 - "open_source_desc": "LocalMind имеет открытый исходный код. Следите за нашим прогрессом или вносите свой вклад на GitHub.",
257 - "add_more": "Добавить еще",
258 - "on_github": "на GitHub",
259 - "could_not_open_github": "Не удалось открыть GitHub.",
303 + "onboarding_connect_server": "Подключите свой\nСервер",
304 + "onboarding_connect_desc": "Подключитесь к LM Studio, Ollama или\nOpenRouter для запуска вашего частного ИИ\nопыт.",
305 "openai_compatible_api": "OpenAI-совместимый API",
306 "https_requires_ssl": "HTTPS требует SSL",
307 "most_local_setups_use_http": "Большинство локальных установок используют http://",
263 - "options_tooltip": "Параметры",
264 - "parameters_tab": "Параметры",
265 - "pause": "Пауза",
266 - "paused_progress": "Приостановлено – {percent} %",
267 - "persona_builtin_section": "ВСТРОЕННЫЙ",
268 - "persona_category_coding": "Кодирование",
269 - "persona_category_creative": "Креатив",
270 - "persona_category_education": "Образование",
271 - "persona_category_general": "Общий",
272 - "persona_created": "Персона создана",
273 - "persona_my_section": "МОИ ПЕРСОНАЛЫ",
274 - "persona_updated": "Персона обновлена",
275 - "personas_title": "Персоны",
276 - "pin": "Приколоть",
277 - "pinned_section": "ПРИКРЕПЛЕНО",
278 - "port_invalid": "Должно быть число",
279 - "port_label": "Порт",
280 - "port_range": "Введите действительный порт (1-65535).",
281 - "port_required": "Требуется порт",
282 - "preparing_app": "Подготовка приложения...",
283 - "preview": "Предварительный просмотр",
284 - "preview_failed": "Не удалось выполнить предварительный просмотр: {error}",
285 - "previous_30_days": "ПРЕДЫДУЩИЕ 30 ДНЕЙ",
286 - "previous_7_days": "ПРЕДЫДУЩИЕ 7 ДНЕЙ",
287 - "privacy_info": "«LocalMind никогда не видит ваши данные»",
288 - "proceed_anyway": "Продолжить в любом случае",
289 - "processing": "Обработка...",
290 - "prompt_hint": "Вы полезный помощник...",
291 - "prompt_max_chars": "Макс. 4000 символов.",
292 - "prompt_required": "Требуется системное приглашение",
293 - "quick_async": "Как использовать async/await?",
294 - "quick_debug": "Отладьте это для меня",
295 - "quick_explain": "Объясните этот код",
296 - "quick_write": "Помогите мне написать функцию",
308 + "onboarding_welcome": "Добро пожаловать в LocalMind",
309 + "server_type_on_device": "На устройстве",
310 + "server_type_lm_studio": "ЛМ Студия",
311 + "server_type_ollama": "Оллама",
312 + "server_type_openrouter": "OpenRouter",
313 + "server_type_openrouter_sub": "ЕДИНОЕ ОБЛАКО",
314 + "ready_continue": "ГОТОВЫ ПРОДОЛЖИТЬ",
315 + "waiting_selection": "ОЖИДАНИЕ ВЫБОРА",
316 + "setup_connection": "Настройка соединения",
317 + "setup_connection_desc": "Настройте свой сервер {server}, чтобы начать общение.",
318 + "server_name": "Имя сервера",
319 + "name_required": "Требуется имя",
320 + "name_max_50": "Макс. 50 символов.",
321 + "host_label": "Хост/IP-адрес",
322 + "host_required": "Требуется хост",
323 + "port_label": "Порт",
324 + "port_required": "Требуется порт",
325 + "port_invalid": "Должно быть число",
326 + "port_range": "Введите действительный порт (1-65535).",
327 + "api_key_required": "API-ключ *",
328 + "api_key_optional": "Ключ API (необязательно)",
329 + "api_key_required_openrouter": "Ключ API, необходимый для OpenRouter",
330 + "api_key_format": "Ключи API OpenRouter начинаются с sk-",
331 + "my_server_hint": "Мой сервер",
332 + "name_length_validation": "Имя должно содержать не более 50 символов.",
333 + "host_valid": "Введите действительное имя хоста или IP-адрес.",
334 + "api_key_hint_openrouter": "ск-...",
335 + "api_key_hint_generic": "Для аутентифицированных серверов",
336 + "update_server": "Обновление сервера",
337 + "save_server": "Сохранить сервер",
338 + "server_updated": "Сервер обновлен",
339 + "server_added": "Сервер добавлен",
340 + "download_model_title": "Скачать модель",
341 + "download_model_desc": "Выберите модель для загрузки.\nОн будет работать локально на вашем устройстве.",
342 + "on_device_android_only": "Вывод на устройстве в настоящее время доступен только на Android.",
343 + "total_ram": "Общий объем оперативной памяти",
344 + "available": "Доступный",
345 "ram_min_required": "{fileSize} ГБ ОЗУ мин.",
298 - "ram_usage": "Использование оперативной памяти",
299 - "ram_used": "{percent} % использовано",
300 - "ram_warning": "Предупреждение об оперативной памяти",
346 + "download_progress": "{percent}% • {speed}",
347 + "eta_label": "Оставшееся время: {eta}",
348 + "paused_progress": "Приостановлено – {percent} %",
349 "ram_warning_body_download": "Для этой модели требуется не менее {ram} ГБ ОЗУ, но на вашем устройстве имеется {totalMemory}. Оно может работать неправильно или привести к сбою приложения.",
350 "ram_warning_body_load": "На вашем устройстве доступно ОЗУ {availableRAM}, но для этой модели рекомендуется не менее {ram} ГБ. Загрузка может привести к сбою или вызвать нестабильность.",
303 - "range_0_1": "0,0-1,0",
304 - "range_0_2": "0,0-2,0",
305 - "read_aloud": "Читать вслух",
306 - "ready": "Готовый",
307 - "ready_continue": "ГОТОВЫ ПРОДОЛЖИТЬ",
308 - "recent_chats": "Недавние чаты",
309 - "recommended": "РЕКОМЕНДУЕТСЯ",
310 - "refresh_models": "Обновить модели",
311 - "remove_persona": "Удалить персону",
312 - "rename": "Переименовать",
313 - "rename_conversation": "Переименовать беседу",
314 - "reset_defaults": "Сбросить настройки по умолчанию",
315 - "reset_settings_defaults": "Сброс настроек к значениям по умолчанию",
316 - "resume": "Продолжить",
317 - "retry": "Повторить попытку",
318 - "save": "Сохранять",
319 - "save_changes": "Сохранить изменения",
320 - "save_continue": "Сохранить и продолжить",
321 - "save_regenerate": "Сохранить и восстановить",
322 - "save_server": "Сохранить сервер",
323 - "search_hint": "Поиск разговоров...",
324 - "search_icons_hint": "Иконки поиска...",
325 - "search_models_hint": "Поиск моделей...",
326 - "see_all": "Посмотреть все",
327 - "select": "Выбирать",
351 + "choose_theme": "Выбрать тему",
352 + "choose_theme_desc": "Персонализируйте внешний вид приложения. Вы всегда можете изменить это позже в настройках.",
353 + "theme_card_system": "Система",
354 + "theme_card_system_sub": "Соответствует настройкам вашего устройства",
355 + "theme_card_light": "Свет",
356 + "theme_card_light_sub": "Чистый и светлый",
357 + "theme_card_dark": "Темный",
358 + "theme_card_dark_sub": "Легко для глаз",
359 + "theme_card_claude": "Клод",
360 + "theme_card_claude_sub": "Теплая тема персикового оттенка.",
361 + "stay_updated": "Оставайтесь в курсе",
362 + "stay_updated_desc": "Получайте уведомления, когда ваши модели ИИ завершают загрузку или завершаются длительные задачи.",
363 + "notification_benefit_downloads": "Ход загрузки модели",
364 + "notification_benefit_completions": "Завершения генерации",
365 + "notification_benefit_background": "Статус фоновых задач",
366 + "allow_notifications": "Разрешить уведомления",
367 + "servers_title": "Серверы",
368 + "no_servers_yet": "Серверов пока нет",
369 + "no_servers_desc": "Добавьте свой первый сервер, чтобы начать общаться с моделями ИИ.",
370 + "add_server": "Добавить сервер",
371 + "switched_to_server": "Переключено на {name}",
372 + "edit_server": "Редактировать сервер",
373 + "add_server_title": "Добавить сервер",
374 + "server_type_label": "Тип сервера",
375 + "server_icon_label": "Значок сервера",
376 + "default_icon": "Значок по умолчанию",
377 + "server_type_lm_studio_display": "ЛМ Студия",
378 + "server_type_openai_display": "Совместимость с OpenAI",
379 + "server_type_ollama_display": "Оллама",
380 + "server_type_openrouter_display": "OpenRouter",
381 + "server_type_on_device_display": "На устройстве",
382 + "server_address_openrouter": "openrouter.ai",
383 + "server_address_on_device": "Локальный вывод",
384 + "server_address_format": "{host}:{port}",
385 + "default_badge": "По умолчанию",
386 + "set_as_default": "Установить по умолчанию",
387 "select_icon": "Выберите значок",
388 "select_icon_desc": "Выберите значок для своего сервера",
330 - "select_model": "Выберите модель",
331 - "select_model_hint": "Выберите модель, чтобы начать общение",
332 - "select_model_title": "Выберите модель",
333 - "select_persona": "Выберите Персону",
334 - "send_message_tooltip": "Отправить сообщение",
335 - "send_on_enter": "Отправить при вводе",
336 - "server_added": "Сервер добавлен",
337 - "server_address_format": "{host}:{port}",
338 - "server_address_on_device": "Локальный вывод",
339 - "server_address_openrouter": "openrouter.ai",
340 - "server_icon_ai_brain": "ИИ Мозг",
341 - "server_icon_ai_brain2": "ИИ Мозг 02",
342 - "server_icon_ai_chat": "AI-чат",
343 - "server_icon_ai_cloud": "Облако ИИ",
344 - "server_icon_ai_network": "Сеть искусственного интеллекта",
345 - "server_icon_alert": "Круг оповещения",
346 - "server_icon_api": "API",
347 - "server_icon_arrow_right": "Стрелка вправо 01",
348 - "server_icon_bot": "Бот",
349 - "server_icon_bot2": "Бот 02",
350 - "server_icon_cellular": "Сотовая сеть",
351 - "server_icon_check": "Проверить круг",
352 - "server_icon_chip": "Чип",
353 - "server_icon_chip2": "Чип 02",
389 + "search_icons_hint": "Иконки поиска...",
390 + "server_icon_stack": "Серверный стек",
391 + "server_icon_stack2": "Серверный стек 02",
392 + "server_icon_stack3": "Серверный стек 03",
393 "server_icon_cloud": "Облако",
355 - "server_icon_cloud_download": "Облачная загрузка",
394 "server_icon_cloud_server": "Облачный сервер",
357 - "server_icon_cloud_upload": "Загрузка в облако",
358 - "server_icon_code": "Код",
359 - "server_icon_computer": "Компьютер",
360 - "server_icon_cpu": "Процессор",
395 + "server_icon_mcp": "MCP-сервер",
396 "server_icon_database": "База данных",
397 "server_icon_database1": "База данных 01",
398 "server_icon_database2": "База данных 02",
364 - "server_icon_drive": "Водить машину",
365 - "server_icon_file1": "Файл 01",
366 - "server_icon_folder1": "Папка 01",
367 - "server_icon_folder2": "Папка 02",
368 - "server_icon_globe": "Глобус",
369 - "server_icon_hard_drive": "Жесткий диск",
370 - "server_icon_home1": "Дом 01",
371 - "server_icon_home2": "Дом 02",
372 - "server_icon_info": "Информационный круг",
373 - "server_icon_key": "Ключ 01",
374 - "server_icon_label": "Значок сервера",
399 + "server_icon_cpu": "Процессор",
400 + "server_icon_chip": "Чип",
401 + "server_icon_chip2": "Чип 02",
402 + "server_icon_computer": "Компьютер",
403 "server_icon_laptop": "Ноутбук",
376 - "server_icon_link": "Ссылка 01",
377 - "server_icon_lock": "Замок",
378 - "server_icon_mcp": "MCP-сервер",
404 + "server_icon_terminal": "Компьютерный терминал",
405 + "server_icon_code": "Код",
406 + "server_icon_ai_brain": "ИИ Мозг",
407 + "server_icon_ai_brain2": "ИИ Мозг 02",
408 + "server_icon_ai_cloud": "Облако ИИ",
409 + "server_icon_ai_network": "Сеть искусственного интеллекта",
410 + "server_icon_ai_chat": "AI-чат",
411 + "server_icon_cellular": "Сотовая сеть",
412 "server_icon_plug1": "Вилка 01",
413 "server_icon_plug2": "Вилка 02",
381 - "server_icon_refresh": "Обновить",
414 + "server_icon_bot": "Бот",
415 + "server_icon_bot2": "Бот 02",
416 "server_icon_robotic": "Роботизированный",
417 "server_icon_rocket": "Ракета",
418 + "server_icon_star": "Звезда",
419 "server_icon_settings1": "Настройки 01",
420 "server_icon_settings2": "Настройки 02",
386 - "server_icon_stack": "Серверный стек",
387 - "server_icon_stack2": "Серверный стек 02",
388 - "server_icon_stack3": "Серверный стек 03",
389 - "server_icon_star": "Звезда",
390 - "server_icon_terminal": "Компьютерный терминал",
421 + "server_icon_home1": "Дом 01",
422 + "server_icon_home2": "Дом 02",
423 + "server_icon_folder1": "Папка 01",
424 + "server_icon_folder2": "Папка 02",
425 + "server_icon_file1": "Файл 01",
426 + "server_icon_lock": "Замок",
427 + "server_icon_key": "Ключ 01",
428 + "server_icon_link": "Ссылка 01",
429 + "server_icon_globe": "Глобус",
430 + "server_icon_api": "API",
431 + "server_icon_arrow_right": "Стрелка вправо 01",
432 + "server_icon_check": "Проверить круг",
433 + "server_icon_alert": "Круг оповещения",
434 + "server_icon_info": "Информационный круг",
435 "server_icon_zap": "Зап",
392 - "server_name": "Имя сервера",
393 - "server_type_label": "Тип сервера",
394 - "server_type_lm_studio": "ЛМ Студия",
395 - "server_type_lm_studio_display": "ЛМ Студия",
396 - "server_type_ollama": "Оллама",
397 - "server_type_ollama_display": "Оллама",
398 - "server_type_on_device": "На устройстве",
399 - "server_type_on_device_display": "На устройстве",
400 - "server_type_openai_display": "Совместимость с OpenAI",
401 - "server_type_openrouter": "OpenRouter",
402 - "server_type_openrouter_display": "OpenRouter",
403 - "server_type_openrouter_sub": "ЕДИНОЕ ОБЛАКО",
404 - "server_updated": "Сервер обновлен",
405 - "servers_title": "Серверы",
406 - "set_as_default": "Установить по умолчанию",
407 - "set_persona": "Установить Персону",
408 - "settings_about": "О",
409 - "settings_appearance": "Появление",
410 - "settings_behavior": "Поведение",
411 - "settings_data_management": "Управление данными",
412 - "settings_default_persona": "Персона по умолчанию",
413 - "settings_default_server": "Сервер по умолчанию",
414 - "settings_language": "Язык",
415 - "settings_on_device": "Вывод на устройстве",
416 - "settings_privacy": "Конфиденциальность",
417 - "settings_title": "Настройки",
418 - "settings_tts": "Преобразование текста в речь",
419 - "setup_connection": "Настройка соединения",
420 - "setup_connection_desc": "Настройте свой сервер {server}, чтобы начать общение.",
421 - "share": "Делиться",
422 - "show_data_indicator": "Показать индикатор данных",
423 - "show_system_messages": "Показать системные сообщения",
424 - "skip": "Пропускать",
425 - "something_went_wrong": "Что-то пошло не так",
426 - "star_on_github": "Звезда на GitHub",
427 - "start_conversation": "Начать разговор",
428 - "start_new_chat": "Начать новый чат",
429 - "start_new_conversation": "Начать новый разговор",
430 - "startup_failed": "Запуск не удался",
431 - "stay_updated": "Оставайтесь в курсе",
432 - "stay_updated_desc": "Получайте уведомления, когда ваши модели ИИ завершают загрузку или завершаются длительные задачи.",
433 - "stop": "Останавливаться",
434 - "stop_generation_tooltip": "Остановить генерацию",
435 - "stop_reading": "Хватит читать",
436 - "streaming_responses": "Потоковая передача ответов",
437 - "switch_server": "Переключить сервер",
438 - "switch_server_subtitle": "Выберите сервер для подключения",
439 - "switched_to_server": "Переключено на {name}",
436 + "server_icon_cloud_upload": "Загрузка в облако",
437 + "server_icon_cloud_download": "Облачная загрузка",
438 + "server_icon_refresh": "Обновить",
439 + "server_icon_hard_drive": "Жесткий диск",
440 + "server_icon_drive": "Водить машину",
441 + "personas_title": "Персоны",
442 + "persona_category_general": "Общий",
443 + "persona_category_coding": "Кодирование",
444 + "persona_category_education": "Образование",
445 + "persona_category_creative": "Креатив",
446 + "persona_builtin_section": "ВСТРОЕННЫЙ",
447 + "persona_my_section": "МОИ ПЕРСОНАЛЫ",
448 + "clone_edit": "Клонировать и редактировать",
449 + "builtin_badge": "Встроенный",
450 + "no_personas_found": "Персоны не найдены",
451 + "no_personas_desc": "Создайте свою первую личность, чтобы настроить поведение ИИ.",
452 + "edit_persona": "Изменить личность",
453 + "create_persona": "Создать Персону",
454 + "create_persona_button": "Создавать",
455 + "emoji_label": "Эмодзи",
456 + "name_label": "Имя",
457 + "my_persona_hint": "Моя Персона",
458 + "category_label": "Категория",
459 + "description_optional": "Описание (необязательно)",
460 + "description_hint": "Что делает эта личность...",
461 "system_prompt": "Системная подсказка",
441 - "technical_details": "Технические детали",
442 - "temp_hint": "0,7",
443 - "temperature": "Температура",
444 - "temperature_desc": "Управляет случайностью: выше = креативно, ниже = сосредоточено.",
462 + "character_count_max": "{currentLen}/4000",
463 + "no_prompt_placeholder": "Пока нет подсказки...",
464 + "prompt_hint": "Вы полезный помощник...",
465 + "prompt_required": "Требуется системное приглашение",
466 + "prompt_max_chars": "Макс. 4000 символов.",
467 + "advanced_settings": "Расширенные настройки",
468 "temperature_label": "Температура (0,0-2,0)",
446 - "test_connection": "Тестовое соединение",
447 - "test_notification_body": "Это тестовое уведомление о ходе загрузки модели.",
448 - "test_notification_title": "Уведомление о тестировании",
449 - "testing": "Тестирование...",
450 - "theme": "Тема",
451 - "theme_card_claude": "Клод",
452 - "theme_card_claude_sub": "Теплая тема персикового оттенка.",
453 - "theme_card_dark": "Темный",
454 - "theme_card_dark_sub": "Легко для глаз",
455 - "theme_card_light": "Свет",
456 - "theme_card_light_sub": "Чистый и светлый",
457 - "theme_card_system": "Система",
458 - "theme_card_system_sub": "Соответствует настройкам вашего устройства",
459 - "theme_claude": "Клод",
460 - "theme_dark": "Темный",
461 - "theme_light": "Свет",
462 - "theme_system": "Система",
463 - "thinking": "мышление",
464 - "today_section": "СЕГОДНЯ",
465 - "tool_label": "Инструмент: {toolCallId}",
466 - "tool_unknown": "Инструмент: Неизвестно",
467 - "top_p": "Топ П",
468 - "top_p_desc": "Порог выборки ядра",
469 - "top_p_hint": "0,9",
469 "top_p_label": "Топ П (0,0-1,0)",
471 - "total_capacity": "Общая емкость",
472 - "total_ram": "Общий объем оперативной памяти",
473 - "try_different_search": "Попробуйте другой поисковый запрос",
474 - "tts_engine": "Двигатель ТТС",
475 - "tts_engine_kitten": "Котенок ТТС",
476 - "tts_engine_system": "Система ТТС",
477 - "tts_kitten_desc": "Молниеносный нейронный TTS с 8 выразительными голосами.\nТребуется загрузка {size}.",
470 + "temp_hint": "0,7",
471 + "top_p_hint": "0,9",
472 + "range_0_2": "0,0-2,0",
473 + "range_0_1": "0,0-1,0",
474 + "persona_updated": "Персона обновлена",
475 + "persona_created": "Персона создана",
476 "tts_models_title": "Модели преобразования текста в речь",
479 - "tts_piper_desc": "Быстрые офлайн-голоса Пайпер с двумя выразительными голосами.\nТребуется загрузка {size} на голос.",
480 - "tts_speed": "Скорость TTS",
481 - "tts_speed_desc": "Отрегулируйте скорость воспроизведения.",
477 + "always_available": "Всегда доступен",
478 "tts_system_desc": "Использует встроенный в ваше устройство механизм преобразования текста в речь.\nНикаких загрузок не требуется. Выбор голоса использует системные настройки вашего устройства.",
483 - "unknown_error": "Неизвестная ошибка",
484 - "unload": "Разгрузить",
485 - "unload_from_server": "Выгрузить с сервера",
486 - "unpin": "Открепить",
487 - "update_server": "Обновление сервера",
488 - "voice": "Голос",
489 - "voice_bella": "Белла",
490 - "voice_bruno": "Бруно",
491 - "voice_female": "Женский",
492 - "voice_hugo": "Хьюго",
493 - "voice_jasper": "Джаспер",
494 - "voice_kiki": "Кики",
495 - "voice_leo": "Лео",
496 - "voice_lessac": "Лессак (США)",
497 - "voice_luna": "Луна",
498 - "voice_male": "Мужской",
499 - "voice_other": "Другой",
500 - "voice_rosie": "Рози",
501 - "voice_ryan": "Райан (США)",
502 - "waiting_selection": "ОЖИДАНИЕ ВЫБОРА",
503 - "yesterday_section": "ВЧЕРА",
504 - "tts_supports_background": "Поддерживает фоновое воспроизведение как собственный звук",
505 - "tts_other_services_background_note": "Примечание. Другие службы TTS поддерживают фоновое воспроизведение как собственный звук.",
506 - "start_listening_tooltip": "Начать слушать",
507 - "stop_listening_tooltip": "Хватит слушать",
479 + "downloading_status": "Загрузка...",
480 + "tts_kitten_desc": "Молниеносный нейронный TTS с 8 выразительными голосами.\nТребуется загрузка {size}.",
481 + "tts_piper_desc": "Быстрые офлайн-голоса Пайпер с двумя выразительными голосами.\nТребуется загрузка {size} на голос.",
482 + "engine_spec": "{sizeMb} МБ · {ramMb} МБ ОЗУ · {voiceCount} голосов",
483 + "on_device_models_title": "Модели на устройстве",
484 "settings_huggingface_token": "Жетон «Обнимающее лицо» (необязательно)",
485 "settings_huggingface_token_desc": "Требуется только для закрытых моделей (например, Gemma). Получите токен на сайтеhuggingface.co/settings/tokens.",
486 "settings_huggingface_token_set": "Токен сохранен.",
@@ -518,6 +494,91 @@
494 "server_type_ollama_desc": "Локальный ИИ-движок. Ключ API не требуется.",
495 "server_type_on_device_desc": "Работает на вашем телефоне. Некоторым моделям нужен жетон «Обнимающее лицо».",
496 "server_type_lm_studio_desc": "Локальный API-сервер. Ключ API не требуется.",
497 + "available_models": "Доступные модели",
498 + "device_memory": "Память устройства",
499 + "ram_usage": "Использование оперативной памяти",
500 + "memory_healthy": "Здоровый",
501 + "memory_critical": "Критический",
502 + "memory_low": "Низкий",
503 + "ram_used": "{percent} % использовано",
504 + "available_ram": "Доступная оперативная память",
505 + "total_capacity": "Общая емкость",
506 + "loaded_status": "Загружено",
507 + "inference_backend": "Серверная часть вывода",
508 + "backend_ios_notice": "В iOS доступен только серверный процессор.",
509 + "backend_cpu_desc": "Работает на всех устройствах. Наиболее совместим.",
510 + "backend_gpu_desc": "Ускорение OpenCL. Быстрее на поддерживаемых устройствах.",
511 + "backend_npu_desc": "Поставщик НПУ (Qualcomm/MediaTek). Самый быстрый вывод.",
512 + "select_model_title": "Выберите модель",
513 + "refresh_models": "Обновить модели",
514 + "search_models_hint": "Поиск моделей...",
515 + "no_server_connected": "Сервер не подключен",
516 + "add_server_first": "Сначала добавьте сервер, чтобы увидеть доступные модели.",
517 + "failed_load_models": "Не удалось загрузить модели.",
518 + "no_models_available": "Нет доступных моделей",
519 + "no_models_match": "Нет моделей, соответствующих запросу \"{searchQuery}\".",
520 + "model_load_failed": "Не удалось загрузить модель: {error}",
521 + "model_unloaded_ollama": "Выгрузка запрошена для {name}. Если Оллама доступен, модель выпускается немедленно.",
522 + "model_unloaded_success": "{name} успешно выгружено",
523 + "model_unload_failed": "Не удалось выгрузить модель: {error}",
524 + "unload_from_server": "Выгрузить с сервера",
525 + "context_chip": "{ctx} ctx",
526 + "unload_all_models": "Выгрузить все модели",
527 + "loaded_models_count": "Загружено моделей: {count}",
528 + "all_models_unloaded": "Все модели выгружены",
529 + "branch_chat": "Создать ветку чата",
530 + "branch_chat_desc": "Создать новый чат на основе этого сообщения",
531 + "edit_assistant_message_desc": "Редактировать текст сообщения ассистента",
532 + "switch_to_model": "Переключить на модель {model}",
533 + "download_notification_title": "Загрузка {modelName}...",
534 + "download_complete_notification": "Загрузка завершена!",
535 + "download_complete_body": "Модель {modelName} успешно загружена.",
536 + "download_failed_notification": "Загрузка не удалась: {error}",
537 + "download_failed_body": "Не удалось загрузить {modelName}.",
538 + "engine_name_system": "Система ТТС",
539 + "engine_tagline_system": "Встроенный движок устройства",
540 + "engine_name_kitten": "Котенок ТТС",
541 + "engine_tagline_kitten": "Высокоскоростная нейронная TTS",
542 + "engine_name_sherpa": "Шерпа ОННКС ВИТС",
543 + "engine_tagline_sherpa": "Оффлайн голоса Пайпер",
544 + "voice_jasper": "Джаспер",
545 + "voice_bella": "Белла",
546 + "voice_bruno": "Бруно",
547 + "voice_luna": "Луна",
548 + "voice_hugo": "Хьюго",
549 + "voice_rosie": "Рози",
550 + "voice_leo": "Лео",
551 + "voice_kiki": "Кики",
552 + "voice_lessac": "Лессак (США)",
553 + "voice_ryan": "Райан (США)",
554 + "model_qwen_3": "Квен 3 0.6Б",
555 + "model_qwen_3_desc": "Самая маленькая модель чата общего назначения. Быстрые ответы, низкое использование памяти.",
556 + "model_license_apache": "Апач-2.0",
557 + "model_qwen_25": "Квен 2.5 1.5B Инструктировать",
558 + "model_qwen_25_desc": "Сбалансированное качество и размер. Подходит для общего разговора.",
559 + "model_deepseek": "DeepSeek R1 Дистилл Qwen 1.5B",
560 + "model_deepseek_desc": "Модель рассуждения и цепочки мыслей. Лучше всего подходит для логических задач.",
561 + "model_license_mit": "Массачусетский технологический институт",
562 + "model_gemma": "Джемма 4 E2B Инструктирует",
563 + "model_gemma_desc": "Флагманская модель Google. Высочайшее качество, требует больше оперативной памяти.",
564 + "export_header": "*Экспортировано из LocalMind — {date}*",
565 + "export_role_user": "## 👤 Пользователь",
566 + "export_role_assistant": "## 🤖 Помощник",
567 + "export_role_system": "## ⚙️ Система",
568 + "export_role_tool": "## 🔧 Инструмент",
569 + "export_text_user": "[ПОЛЬЗОВАТЕЛЬ]",
570 + "export_text_assistant": "[ПОМОЩНИК]",
571 + "export_text_system": "[СИСТЕМА]",
572 + "export_text_tool": "[ИНСТРУМЕНТ]",
573 + "export_label_user": "ПОЛЬЗОВАТЕЛЬ",
574 + "export_label_assistant": "ПОМОЩНИК",
575 + "export_label_system": "СИСТЕМА",
576 + "export_label_tool": "ИНСТРУМЕНТ",
577 + "select_model_hint": "Выберите модель, чтобы начать общение",
578 + "test_notification_title": "Уведомление о тестировании",
579 + "test_notification_body": "Это тестовое уведомление о ходе загрузки модели.",
580 + "tts_supports_background": "Поддерживает фоновое воспроизведение как собственный звук",
581 + "tts_other_services_background_note": "Примечание. Другие службы TTS поддерживают фоновое воспроизведение как собственный звук.",
582 "gguf_imported_models_title": "Импортированные модели GGUF",
583 "gguf_imported_models_empty_subtitle": "Импортируйте GGUF со своего устройства или добавьте его из Hugging Face. Импортированные модели запускаются локально с помощью llama.cpp.",
584 "gguf_imported_models_ready": "импортированные модели готовы для локального вывода.",
@@ -600,89 +661,14 @@
661 "tool_status_running": "Бег",
662 "tool_status_done": "Сделанный",
663 "tool_status_failed": "Неуспешный",
603 - "exit_temporary_chat_title": "Выйти из временного чата?",
604 - "exit_temporary_chat_body": "Это навсегда удалит текущий чат. Продолжить?",
605 - "saved_message_temp_snap_unavailable": "Снимки сообщений недоступны во временных чатах",
606 - "filter_title": "Фильтр чатов",
607 - "filter_pinned": "Закрепленные",
608 - "filter_archived": "Архивные",
609 - "filter_temp_chats": "Временные чаты",
610 - "filter_user_messages": "Сообщения пользователя",
611 - "filter_assistant_messages": "Сообщения ассистента",
612 - "archive_chat": "Архивировать чат",
613 - "unarchive_chat": "Разархивировать чат",
614 - "conversation_message_count": "Сообщений: {count}",
615 - "conversation_character_count": "Символов: {count}",
616 - "generate_title_with_ai": "Создать заголовок с помощью ИИ",
617 - "generating_title": "Создание заголовка...",
618 - "generate_title_failed": "Не удалось создать заголовок",
619 - "temp_chat_keyboard_incognito": "Режим инкогнито клавиатуры во временном чате",
620 - "temp_chat_keyboard_incognito_desc": "Запрашивать у клавиатуры системы не сохранять историю ввода во временных чатах",
621 - "resume_last_chat": "Возобновить последний чат",
622 - "resume_last_chat_desc": "Автоматически открывать последний активный чат при запуске",
623 - "delete_builtin_persona_body": "Это встроенный персонаж. Вы можете восстановить его позже в Настройках.",
624 - "restore_builtin_personas": "Восстановить стандартных персонажей",
625 - "restore_builtin_personas_desc": "Заново добавить всех удаленных встроенных персонажей",
626 - "restore_builtin_personas_success": "Персонажи по умолчанию восстановлены",
627 - "clear_personas": "Сбросить персонажей",
628 - "enable_image_compression": "Сжимать изображения перед отправкой",
629 - "enable_image_compression_desc": "Изменять размер и сжимать прикрепленные изображения, чтобы размер загрузки оставался в пределах лимитов сервера",
630 - "image_compression_level": "Агрессивность сжатия",
631 - "image_compression_level_desc": "Более высокая агрессивность дает файлы меньшего размера при более низком качестве",
632 - "image_compression_level_low": "Низкая",
633 - "image_compression_level_medium": "Средняя",
634 - "image_compression_level_high": "Высокая",
635 - "sort_models_tooltip": "Сортировка моделей",
636 - "sort_by_favorites": "Сначала избранные",
637 - "sort_by_name": "По имени (А-Я)",
638 - "sort_by_size_smallest": "Размер (сначала меньшие)",
639 - "sort_by_size_largest": "Размер (сначала большие)",
640 - "sort_by_context_length": "Длина контекста",
641 - "bulk_ai_rename_progress": "Переименование {done}/{total}...",
642 - "selected_count": "Выбрано: {count}",
643 - "ai_rename_tooltip": "Переименовать выбранные с помощью ИИ",
644 - "new_chat_in_folder_tooltip": "Новый чат в этой папке",
645 - "total_tokens_count": "Токенов: {count}",
646 - "smart_replies_use_persona": "Использовать персонаж в умных ответах",
647 - "smart_replies_use_persona_desc": "Предлагаемые ответы будут соответствовать тону активного персонажа, а не общего ассистента",
648 - "keep_persona_on_new_chat": "Сохранять персонаж при новом чате",
649 - "keep_persona_on_new_chat_desc": "Не сбрасывать выбранных персонажей при создании нового чата",
650 - "role_swap_button_enabled": "Показывать кнопку смены ролей",
651 - "role_swap_button_enabled_desc": "Показывать кнопку в поле ввода чата для отправки сообщения от лица ассистента, а не пользователя (без генерации ответа)",
652 - "send_as_user_tooltip": "Отправить от пользователя",
653 - "send_as_assistant_tooltip": "Отправить от ассистента (без ответа)",
654 - "insert_without_generating_tooltip": "Вставить без генерации",
655 - "token_usage_title": "Использование токенов",
656 - "total_tokens_label": "Использовано токенов",
657 - "usage_percent_label": "Использовано контекста",
658 - "export_choice_title": "Экспорт",
659 - "export_choice_body": "Как вы хотите это экспортировать?",
660 - "copy_to_clipboard": "Копировать в буфер обмена",
661 - "bulk_export_conversations_success": "Экспортировано чатов: {count}",
662 - "bulk_ai_rename_confirm_title": "Переименовать с помощью ИИ?",
663 - "bulk_ai_rename_confirm_body": "ИИ сгенерирует новые заголовки для {count} выбранных чатов, заменив текущие. Это может занять некоторое время и действие нельзя отменить.",
664 - "sort_by_modified_date": "Последнее изменение",
665 - "sort_by_created_date": "Дата создания",
666 - "sort_title": "Сортировка",
667 - "ai_user_response_enabled": "Сообщение пользователя через ИИ (зажать кнопку)",
668 - "ai_user_response_enabled_desc": "Зажмите кнопку отправки на 3 секунды, чтобы ИИ написал и отправил следующее сообщение за вас",
669 - "ai_user_response_tooltip": "Сгенерировать сообщение пользователя с помощью ИИ",
670 - "show_system_messages_desc": "Если персонаж не выбран, отправлять стандартный системный промпт ассистента с каждым запросом",
671 - "show_system_messages_in_chat": "Показывать системные сообщения в чате",
672 - "show_system_messages_in_chat_desc": "Отображать системные сообщения (например, из импортированной резервной копии) в виде облачков сообщений в чате",
673 - "manage_personas": "Управление персонажами",
674 - "personas_combine_hint": "Выбранные персонажи будут объединены",
675 - "unload_all_models": "Выгрузить все модели",
676 - "loaded_models_count": "Загружено моделей: {count}",
677 - "all_models_unloaded": "Все модели выгружены",
678 - "branch_chat": "Создать ветку чата",
679 - "branch_chat_desc": "Создать новый чат на основе этого сообщения",
680 - "edit_assistant_message_desc": "Редактировать текст сообщения ассистента",
681 - "switch_to_model": "Переключить на модель {model}",
664 "model_favorite_toggle": "Добавить в избранное",
665 "model_note_label": "Заметка",
666 "model_note_hint": "Добавить личную заметку для этой модели...",
667 "unload_models_before_load": "Выгружать модели перед загрузкой",
668 + "temp_chat_keyboard_incognito": "Режим инкогнито клавиатуры во временном чате",
669 + "temp_chat_keyboard_incognito_desc": "Запрашивать у клавиатуры системы не сохранять историю ввода во временных чатах",
670 + "resume_last_chat": "Возобновить последний чат",
671 + "resume_last_chat_desc": "Автоматически открывать последний активный чат при запуске",
672 "export_all_data": "Экспортировать все данные",
673 "import_all_data": "Импортировать все данные",
674 "export_data_success": "Данные успешно экспортированы",
@@ -771,9 +757,32 @@
757 "stream_generation_time": "Время генерации",
758 "attach_image": "Прикрепить изображение",
759 "attach_text_document": "Прикрепить текстовый документ",
760 + "attach_shortcut_images": "Фото",
761 + "attach_shortcut_documents": "Файлы",
762 + "attach_shortcut_saved": "Сохраненные",
763 "add_attachment": "Добавить вложение",
764 + "add_to_chat": "Добавить в чат",
765 + "choose_what_to_attach": "Что вы хотите добавить?",
766 + "choose_attachment_subtitle": "Выберите источник, чтобы прикрепить к сообщению",
767 "photo_permission_denied": "Доступ к фото отклонен",
768 + "select_model_prompt": "Выбрать модель",
769 "characters_label": "Символы",
770 + "exit_temporary_chat_title": "Выйти из временного чата?",
771 + "exit_temporary_chat_body": "Это навсегда удалит текущий чат. Продолжить?",
772 + "saved_message_temp_snap_unavailable": "Снимки сообщений недоступны во временных чатах",
773 + "filter_title": "Фильтр чатов",
774 + "filter_pinned": "Закрепленные",
775 + "filter_archived": "Архивные",
776 + "filter_temp_chats": "Временные чаты",
777 + "filter_user_messages": "Сообщения пользователя",
778 + "filter_assistant_messages": "Сообщения ассистента",
779 + "archive_chat": "Архивировать чат",
780 + "unarchive_chat": "Разархивировать чат",
781 + "conversation_message_count": "Сообщений: {count}",
782 + "conversation_character_count": "Символов: {count}",
783 + "generate_title_with_ai": "Создать заголовок с помощью ИИ",
784 + "generating_title": "Создание заголовка...",
785 + "generate_title_failed": "Не удалось создать заголовок",
786 "lm_studio_model_browser_title": "Обзор моделей",
787 "lm_studio_model_search_hint": "Поиск моделей...",
788 "lm_studio_staff_picks": "Выбор редакции",
@@ -857,5 +866,6 @@
866 "delete_folder": "Удалить папку",
867 "delete_folder_title": "Удалить папку?",
868 "delete_folder_body": "Удалить папку «{name}»? Содержащиеся в ней беседы и сохранённые сообщения будут перенесены в «Без папки». Это действие нельзя отменить.",
860 - "folder_name_required": "Введите название папки"
869 + "folder_name_required": "Введите название папки",
870 + "model_required_toast": "Сначала выберите модель"
871 }
lib/l10n/app_zh.arb
+526 -516
@@ -1,513 +1,486 @@
1 {
2 "@@locale": "zh",
3 - "active": "已启用",
4 - "active_integrations": "活动集成",
5 - "add_ephemeral_mcp": "添加临时 MCP 服务器",
6 - "add_server": "添加服务器",
7 - "add_server_first": "请先添加服务器以查看可用模型。",
8 - "add_server_title": "添加服务器",
9 - "advanced_settings": "高级设置",
10 - "all": "全部",
11 - "allow_notifications": "允许通知",
12 - "always_available": "始终可用",
13 - "api_key_format": "OpenRouter API 密钥以 sk- 开头",
14 - "api_key_hint_generic": "适用于已验证的服务器",
15 - "api_key_hint_openrouter": "sk-...",
16 - "api_key_optional": "API 密钥 (可选)",
17 - "api_key_required": "API 密钥 *",
18 - "api_key_required_openrouter": "OpenRouter 需要 API 密钥",
3 "app_name": "LocalMind",
4 "app_tagline": "您的 AI。您的设备。您的规则。",
5 "app_version": "1.0.0",
22 - "attach_images_tooltip": "附加图片",
23 - "auto_execute_tools": "自动执行工具",
24 - "auto_generate_titles": "自动生成标题",
25 - "available": "可用",
26 - "beta_label": "Beta",
27 - "experimental_label": "实验性",
28 - "available_models": "可用模型",
29 - "available_ram": "可用内存",
30 - "backend_cpu_desc": "适用于所有设备。兼容性最好。",
31 - "backend_gpu_desc": "OpenCL 加速。在支持 of 设备上运行更快。",
32 - "backend_ios_notice": "iOS 上仅支持 CPU 后端。",
33 - "backend_npu_desc": "厂商 NPU (高通/联发科)。最快的推理速度。",
34 - "builtin_badge": "内置",
35 - "calculating": "正在计算...",
6 "cancel": "取消",
37 - "cannot_undo": "此操作无法撤销。",
38 - "category_label": "分类",
39 - "change_persona": "更换角色",
40 - "character_count": "{length} 个字符",
41 - "character_count_max": "{currentLen}/4000",
42 - "chat_history_title": "聊天历史",
43 - "chat_input_hint": "问任何问题",
44 - "chat_parameters_tooltip": "聊天参数",
45 - "chat_settings_title": "聊天设置",
46 - "chat_title": "LocalMind",
47 - "choose_theme": "选择主题",
48 - "choose_theme_desc": "个性化应用程序外观。您随时可以在设置中更改此项。",
49 - "clear": "清除",
50 - "clear_conversation": "清除对话",
51 - "clear_conversation_body": "这会删除此对话中的所有消息。",
52 - "clear_conversation_title": "清除对话吗?",
53 - "clone_edit": "克隆并编辑",
54 - "close": "关闭",
55 - "code_theme_dark": "代码主题 (暗色)",
56 - "code_theme_desc": "选择代码块的语法高亮主题。",
57 - "code_theme_light": "代码主题 (亮色)",
58 - "configure": "配置",
59 - "configuring_server": "正在配置服务器...",
7 "confirm": "确认",
61 - "connection_error": "连接错误。请检查您的服务器。",
62 - "connection_failed": "连接失败。请检查您的设置。",
63 - "connection_successful": "连接成功!",
64 - "context_chip": "{ctx} 上下文 (ctx)",
65 - "context_length": "上下文长度",
66 - "context_length_desc": "历史窗口",
67 - "continue_action": "继续",
68 - "conversation_date": "{month}/{day}/{year}",
69 - "conversation_days_ago": "{days}天前",
70 - "conversation_hours_ago": "{hours}小时前",
71 - "conversation_id": "对话 ID",
72 - "conversation_just_now": "刚刚",
73 - "conversation_minutes_ago": "{minutes}分钟前",
74 - "conversation_yesterday": "昨天",
75 - "copied": "已复制!",
76 - "copied_markdown": "已复制为 Markdown",
77 - "copied_to_clipboard": "已复制到剪贴板",
78 - "copy": "复制",
79 - "copy_info": "复制信息",
80 - "copy_markdown": "复制为 Markdown",
81 - "create_persona": "创建角色",
82 - "create_persona_button": "创建",
83 - "created_at": "创建于",
84 - "debug_dialog_desc": "用以帮助识别同步问题的诊断信息。",
85 - "default_badge": "默认",
86 - "default_icon": "默认图标",
8 "delete": "删除",
88 - "delete_all_conversations": "删除所有对话",
89 - "delete_conversation": "删除对话吗?",
90 - "delete_conversation_body": "您确定要删除 \"{title}\" 吗?此操作无法撤销。",
91 - "delete_conversation_title": "删除对话吗?",
92 - "delete_message_title": "删除消息吗?",
93 - "delete_model_body": "您确定要删除 {name} 吗?",
94 - "delete_model_body_with_size": "您确定要删除 {name} 吗?这释放大约 {size} 的空间。\n\n如有需要,您稍后可以重新下载此模型。",
95 - "delete_model_title": "删除模型",
96 - "delete_persona_body": "此操作无法撤销。",
97 - "delete_persona_title": "删除 \"{name}\" 吗?",
98 - "delete_server_body": "您确定要删除 \"{name}\" 吗?此操作无法撤销。",
99 - "delete_server_title": "删除服务器",
100 - "delete_voice_body": "您确定要删除 {name} 吗?这释放大约 {size} 的空间。\n\n如有需要,您稍后可以重新下载此语音。",
101 - "delete_voice_title": "删除语音",
102 - "description_hint": "此角色要做的是...",
103 - "description_optional": "描述 (可选)",
104 - "device_memory": "设备内存",
105 - "disconnected": "与服务器断开连接。",
9 + "save": "保存",
10 + "retry": "重试",
11 + "close": "关闭",
12 "done": "完成",
13 + "continue_action": "继续",
14 + "skip": "跳过",
15 + "install": "安装",
16 "download": "下载",
108 - "download_complete_body": "{modelName} 已成功下载。",
109 - "download_complete_notification": "下载完成!",
110 - "download_failed": "下载失败",
111 - "download_failed_body": "下载 {modelName} 失败。",
112 - "download_failed_notification": "下载失败: {error}",
113 - "download_model_desc": "选择要下载的模型。\n它将在您的设备上本地运行。",
114 - "download_model_title": "下载模型",
115 - "download_notification_title": "正在下载 {modelName}...",
116 - "download_progress": "{percent}% • {speed}",
117 - "downloaded": "已下载",
118 - "downloading_status": "正在下载...",
17 + "resume": "继续",
18 + "pause": "暂停",
19 + "stop": "停止",
20 "edit": "编辑",
120 - "edit_message": "编辑消息",
121 - "edit_message_desc": "保存将移除下方助手的回复并重新生成。",
122 - "edit_persona": "编辑角色",
123 - "edit_server": "编辑服务器",
124 - "emoji_label": "表情符号",
125 - "enable": "启用",
126 - "enable_mcp": "启用 MCP",
127 - "enable_notifications": "启用通知",
128 - "enable_notifications_desc": "在模型下载完成时获得通知。",
129 - "engine_name_kitten": "Kitten TTS",
130 - "engine_name_sherpa": "Sherpa ONNX VITS",
131 - "engine_name_system": "系统 TTS",
132 - "engine_spec": "{sizeMb} MB · {ramMb} MB 内存 · {voiceCount} 种语音",
133 - "engine_tagline_kitten": "高速神经网络 TTS",
134 - "engine_tagline_sherpa": "离线 Piper 语音",
135 - "engine_tagline_system": "内置设备引擎",
136 - "enter_new_title": "输入新标题",
21 + "preview": "预览",
22 + "unload": "卸载",
23 + "load": "加载",
24 + "rename": "重命名",
25 + "pin": "Pin",
26 + "unpin": "取消 Pin",
27 + "share": "分享",
28 + "copy": "复制",
29 + "copied": "已复制!",
30 + "copied_to_clipboard": "已复制到剪贴板",
31 + "select": "选择",
32 + "active": "已启用",
33 + "all": "全部",
34 + "none": "无",
35 + "none_selected": "未选择",
36 + "online": "在线",
37 + "connected": "已连接",
38 + "checking": "正在检查",
39 + "offline": "离线",
40 "error": "错误",
138 - "error_with_message": "错误: {error}",
139 - "eta_label": "预计剩余时间: {eta}",
140 - "expected_messages": "预期消息",
141 - "export_header": "*导出自 LocalMind — {date}*",
142 - "export_label_assistant": "助手",
143 - "export_label_system": "系统",
144 - "export_label_tool": "工具",
145 - "export_label_user": "用户",
146 - "export_role_assistant": "## 🤖 助手",
147 - "export_role_system": "## ⚙️ 系统",
148 - "export_role_tool": "## 🔧 工具",
149 - "export_role_user": "## 👤 用户",
150 - "export_text_assistant": "[助手]",
151 - "export_text_system": "[系统]",
152 - "export_text_tool": "[工具]",
153 - "export_text_user": "[用户]",
154 - "failed_load_models": "加载模型失败",
41 + "unknown_error": "未知错误",
42 + "not_now": "暂不",
43 + "enable": "启用",
44 + "proceed_anyway": "仍然继续",
45 + "test_connection": "测试连接",
46 + "testing": "正在测试...",
47 + "connection_successful": "连接成功!",
48 + "connection_failed": "连接失败。请检查您的设置。",
49 + "save_continue": "保存并继续",
50 + "save_changes": "保存更改",
51 "finish_setup": "完成设置",
156 - "font_preview": "敏捷的棕色狐狸跳过那只懒狗。",
157 - "font_size": "字体大小",
158 - "font_size_desc": "调整聊天中的文本大小。",
159 - "haptic_feedback": "触觉反馈",
160 - "history_missing_desc": "此聊天中的消息已被删除,或历史记录已损坏。",
161 - "history_missing_title": "历史记录丢失",
162 - "host_label": "主机 / IP 地址",
163 - "host_required": "需要主机地址",
164 - "host_valid": "输入有效的主机名或 IP 地址",
165 - "inference_backend": "推理后端",
52 + "start_new_chat": "开始新聊天",
53 + "cannot_undo": "此操作无法撤销。",
54 + "ram_warning": "内存警告",
55 + "recommended": "推荐",
56 + "may_be_large": "可能对于此设备来说过大",
57 + "calculating": "正在计算...",
58 + "download_failed": "下载失败",
59 + "downloaded": "已下载",
60 + "not_downloaded": "未下载",
61 + "installed": "已安装",
62 + "not_installed": "未安装",
63 + "loading": "正在加载...",
64 + "thinking": "正在思考",
65 + "processing": "正在处理...",
66 "initializing": "正在初始化...",
67 + "ready": "就绪",
68 + "preparing_app": "正在准备应用...",
69 "initializing_services": "正在初始化服务...",
168 - "install": "安装",
169 - "installed": "已安装",
70 + "configuring_server": "正在配置服务器...",
71 + "startup_failed": "启动失败",
72 + "something_went_wrong": "出了点问题",
73 + "delete_model_title": "删除模型",
74 + "delete_model_body": "您确定要删除 {name} 吗?",
75 + "delete_model_body_with_size": "您确定要删除 {name} 吗?这释放大约 {size} 的空间。\n\n如有需要,您稍后可以重新下载此模型。",
76 + "delete_voice_title": "删除语音",
77 + "delete_voice_body": "您确定要删除 {name} 吗?这释放大约 {size} 的空间。\n\n如有需要,您稍后可以重新下载此语音。",
78 + "delete_server_title": "删除服务器",
79 + "delete_server_body": "您确定要删除 \"{name}\" 吗?此操作无法撤销。",
80 + "delete_conversation_title": "删除对话吗?",
81 + "delete_conversation_body": "您确定要删除 \"{title}\" 吗?此操作无法撤销。",
82 + "delete_message_title": "删除消息吗?",
83 + "delete_persona_title": "删除 \"{name}\" 吗?",
84 + "delete_persona_body": "此操作无法撤销。",
85 + "delete_builtin_persona_body": "这是一个内置角色。您稍后可以在“设置”中将其恢复。",
86 + "restore_builtin_personas": "恢复默认角色",
87 + "restore_builtin_personas_desc": "重新添加您已删除的任何内置角色",
88 + "restore_builtin_personas_success": "已恢复默认角色",
89 + "clear_personas": "清除角色",
90 + "enable_image_compression": "发送前压缩图片",
91 + "enable_image_compression_desc": "调整并压缩附加图片的大小,以使上传大小保持在服务器限制内",
92 + "image_compression_level": "压缩强度",
93 + "image_compression_level_desc": "较高的压缩强度会生成质量较低但上传更小的图片",
94 + "image_compression_level_low": "低",
95 + "image_compression_level_medium": "中",
96 + "image_compression_level_high": "高",
97 + "sort_models_tooltip": "排序模型",
98 + "sort_by_favorites": "收藏优先",
99 + "sort_by_name": "名称 (A-Z)",
100 + "sort_by_size_smallest": "大小 (从小到大)",
101 + "sort_by_size_largest": "大小 (从大到小)",
102 + "sort_by_context_length": "上下文长度",
103 + "bulk_ai_rename_progress": "正在重命名 {done}/{total}...",
104 + "selected_count": "已选择 {count} 个",
105 + "ai_rename_tooltip": "使用 AI 重命名所选内容",
106 + "new_chat_in_folder_tooltip": "在此文件夹中新建聊天",
107 + "total_tokens_count": "{count} 个 Token",
108 + "smart_replies_use_persona": "在智能回复中应用角色",
109 + "smart_replies_use_persona_desc": "建议的回复将符合当前启用角色的语气,而不是通用的助手语气",
110 + "keep_persona_on_new_chat": "新聊天保留角色",
111 + "keep_persona_on_new_chat_desc": "开始新聊天时不要清除选定的角色",
112 + "role_swap_button_enabled": "显示角色切换按钮",
113 + "role_swap_button_enabled_desc": "在聊天输入框中显示一个按钮,允许您以助手而非用户的身份发送消息,而不生成任何回复",
114 + "send_as_user_tooltip": "以用户身份发送",
115 + "send_as_assistant_tooltip": "以助手身份发送 (无回复)",
116 + "insert_without_generating_tooltip": "仅插入不生成回复",
117 + "token_usage_title": "Token 使用情况",
118 + "total_tokens_label": "已用 Token",
119 + "usage_percent_label": "已用上下文",
120 + "export_choice_title": "导出",
121 + "export_choice_body": "您希望如何导出此内容?",
122 + "copy_to_clipboard": "复制到剪贴板",
123 + "bulk_export_conversations_success": "已成功导出 {count} 个对话",
124 + "bulk_ai_rename_confirm_title": "使用 AI 重命名?",
125 + "bulk_ai_rename_confirm_body": "这将请求 AI 为每个选定的 {count} 个对话生成新标题,替换其当前的标题。此操作可能需要一些时间,且无法撤销。",
126 + "sort_by_modified_date": "最近修改",
127 + "sort_by_created_date": "创建日期",
128 + "sort_title": "排序",
129 + "clear_conversation_title": "清除对话吗?",
130 + "clear_conversation_body": "这会删除此对话中的所有消息。",
131 + "clear": "清除",
132 "label_completed": "{label} 已完成",
171 - "language_system_default": "系统默认",
172 - "last_error": "上次错误:",
173 - "load": "加载",
174 - "loaded_status": "已加载",
175 - "loading": "正在加载...",
133 + "error_with_message": "错误: {error}",
134 + "preview_failed": "预览失败: {error}",
135 "loading_model": "正在加载 {modelId}...",
177 - "loading_model_error": "错误: {error}",
178 - "manage_on_device_models": "管理设备端模型",
179 - "enable_smart_reply": "设备端智能回复",
180 - "manage_servers": "管理服务器",
181 - "manage_tts_models": "管理 TTS 模型",
182 - "max_tokens": "最大 Token 数",
183 - "max_tokens_desc": "响应限制",
184 - "may_be_large": "可能对于此设备来说过大",
185 - "mcp_disabled_warning": "MCP 已在全局被禁用。请在设置中启用以使用这些功能。",
186 - "mcp_enable_chat": "为此聊天启用 MCP",
187 - "mcp_label_placeholder": "标签",
188 - "mcp_tab": "MCP",
189 - "mcp_url_placeholder": "URL (https://...)",
190 - "memory_critical": "严重警告",
191 - "memory_healthy": "健康",
192 - "memory_low": "偏低",
193 - "message_options": "消息选项",
194 - "model_deepseek": "DeepSeek R1 Distill Qwen 1.5B",
195 - "model_deepseek_desc": "推理与思维链模型。最适合逻辑任务。",
196 - "model_gemma": "Gemma 4 E2B Instruct",
197 - "model_gemma_desc": "Google 旗舰模型。最高质量,需要更多内存。",
198 - "model_license_apache": "Apache-2.0",
199 - "model_license_mit": "MIT",
200 - "model_load_failed": "加载模型失败: {error}",
136 "model_loaded": "模型已加载: {modelId} ({backend})",
202 - "model_qwen_25": "Qwen 2.5 1.5B Instruct",
203 - "model_qwen_25_desc": "平衡的质量和大小。适合一般对话。",
204 - "model_qwen_3": "Qwen 3 0.6B",
205 - "model_qwen_3_desc": "最小的通用聊天模型。响应速度快,内存消耗低。",
206 - "model_unload_failed": "卸载模型失败: {error}",
207 - "model_unloaded_ollama": "在 keep-alive 时间过去后,{name} 将被自动卸载",
208 - "model_unloaded_success": "{name} 已成功卸载",
209 - "more": "更多",
210 - "my_persona_hint": "我的角色",
211 - "my_server_hint": "我的服务器",
212 - "name_label": "名称",
213 - "name_length_validation": "名称必须在 50 个字符以内",
214 - "name_max_50": "最多 50 个字符",
215 - "name_required": "需要名称",
137 + "no_model_loaded": "未加载任何模型。点击 “管理设备端模型” 以下载并加载模型。",
138 + "loading_model_error": "错误: {error}",
139 + "delete_conversation": "删除对话吗?",
140 "nav_history": "历史",
141 + "nav_servers": "服务器",
142 "nav_local_models": "本地模型",
218 - "nav_new_chat": "新聊天",
143 + "nav_tts": "语音合成",
144 "nav_personas": "角色",
220 - "nav_servers": "服务器",
145 "nav_settings": "设置",
222 - "nav_tts": "语音合成",
223 - "new_chat_mcp_default": "新聊天默认启用 MCP",
224 - "no_conversations_yet": "尚无对话",
225 - "no_model_loaded": "未加载任何模型。点击 “管理设备端模型” 以下载并加载模型。",
226 - "no_models_available": "无可用模型",
227 - "no_models_match": "没有匹配 \"{searchQuery}\" 的模型",
228 - "no_personas_desc": "创建您的第一个角色以定制 AI 行为。",
229 - "no_personas_found": "未找到任何角色",
230 - "no_prompt_placeholder": "尚无提示词...",
231 - "no_results_found": "未找到结果",
232 - "no_server_connected": "未连接服务器",
146 + "nav_new_chat": "新聊天",
147 + "search_hint": "搜索对话...",
148 "no_server_selected": "未选择服务器",
234 - "no_servers_desc": "添加您的首个服务器以开始与 AI 模型聊天。",
235 - "no_servers_yet": "尚无服务器",
236 - "none": "无",
237 - "none_selected": "未选择",
238 - "not_downloaded": "未下载",
239 - "not_installed": "未安装",
240 - "not_now": "暂不",
241 - "notification_benefit_background": "后台任务状态",
242 - "notification_benefit_completions": "生成完成",
243 - "notification_benefit_downloads": "模型下载进度",
244 - "offline": "离线",
245 - "older_section": "更早",
246 - "on_device_android_only": "设备端推理当前仅可在 Android 上使用。",
247 - "on_device_models_title": "设备端模型",
248 - "onboarding_choose_language": "选择语言",
249 - "onboarding_choose_language_desc": "选择您首选的语言。您随时可以在设置中更改此项。",
250 - "onboarding_connect_desc": "连接到 LM Studio、Ollama 或\nOpenRouter,开启您的私有 AI\n体验。",
251 - "onboarding_connect_server": "连接您的\n服务器",
252 - "onboarding_localmind": "LOCALMIND",
253 - "onboarding_welcome": "欢迎使用 LocalMind",
254 - "online": "在线",
149 + "switch_server": "切换服务器",
150 + "switch_server_subtitle": "选择要连接的服务器",
151 + "manage_servers": "管理服务器",
152 "open_source": "开源",
153 "open_source_desc": "LocalMind 是开源项目。可在 GitHub 上关注我们的进展或参与贡献。",
154 + "star_on_github": "在 GitHub 上点亮 Star",
155 "add_more": "添加更多",
156 "on_github": "在 GitHub 上",
157 "could_not_open_github": "无法打开 GitHub。",
260 - "openai_compatible_api": "OpenAI 兼容 API",
261 - "https_requires_ssl": "HTTPS 需要 SSL",
262 - "most_local_setups_use_http": "大多数本地配置使用 http://",
263 - "options_tooltip": "选项",
158 + "settings_title": "设置",
159 + "settings_appearance": "外观",
160 + "settings_language": "语言",
161 + "language_system_default": "系统默认",
162 + "settings_tts": "语音合成 (TTS)",
163 + "settings_behavior": "行为",
164 + "settings_on_device": "设备端推理",
165 + "settings_default_server": "默认服务器",
166 + "settings_default_persona": "默认角色",
167 + "settings_privacy": "隐私",
168 + "settings_data_management": "数据管理",
169 + "settings_about": "关于",
170 + "theme": "主题",
171 + "theme_system": "系统",
172 + "theme_light": "亮色",
173 + "theme_dark": "暗色",
174 + "theme_claude": "Claude",
175 + "font_size": "字体大小",
176 + "font_size_desc": "调整聊天中的文本大小。",
177 + "font_preview": "敏捷的棕色狐狸跳过那只懒狗。",
178 + "code_theme_dark": "代码主题 (暗色)",
179 + "code_theme_light": "代码主题 (亮色)",
180 + "code_theme_desc": "选择代码块的语法高亮主题。",
181 + "tts_engine": "TTS 引擎",
182 + "tts_engine_system": "系统 TTS",
183 + "tts_engine_kitten": "Kitten TTS",
184 + "voice": "语音",
185 + "voice_female": "女声",
186 + "voice_male": "男声",
187 + "voice_other": "其他",
188 + "tts_speed": "TTS 速度",
189 + "tts_speed_desc": "调整播放速率。",
190 + "manage_tts_models": "管理 TTS 模型",
191 + "manage_on_device_models": "管理设备端模型",
192 + "enable_smart_reply": "设备端智能回复",
193 + "ai_user_response_enabled": "AI 用户消息 (长按发送)",
194 + "ai_user_response_enabled_desc": "长按发送按钮 3 秒钟以让 AI 撰写并发送您的下一条消息",
195 + "ai_user_response_tooltip": "使用 AI 生成用户消息",
196 + "streaming_responses": "流式响应",
197 + "auto_generate_titles": "自动生成标题",
198 + "send_on_enter": "按 Enter 键发送",
199 + "show_system_messages": "显示系统消息",
200 + "show_system_messages_desc": "当没有选定角色时,每次请求都发送默认的助手系统提示词",
201 + "show_system_messages_in_chat": "在聊天中显示系统消息",
202 + "show_system_messages_in_chat_desc": "将系统消息 (例如来自导入的备份) 作为对话中的可见气泡显示",
203 + "haptic_feedback": "触觉反馈",
204 + "enable_mcp": "启用 MCP",
205 + "new_chat_mcp_default": "新聊天默认启用 MCP",
206 + "show_data_indicator": "显示数据指示器",
207 + "privacy_info": "\"LocalMind 绝不查看您的数据\"",
208 + "delete_all_conversations": "删除所有对话",
209 + "reset_settings_defaults": "重置设置至默认值",
210 + "chat_title": "LocalMind",
211 + "chat_parameters_tooltip": "聊天参数",
212 + "change_persona": "更换角色",
213 + "set_persona": "设置角色",
214 + "remove_persona": "删除角色",
215 + "clear_conversation": "清除对话",
216 + "connection_error": "连接错误。请检查您的服务器。",
217 + "disconnected": "与服务器断开连接。",
218 + "configure": "配置",
219 + "select_model": "选择模型",
220 + "select_persona": "选择角色",
221 + "manage_personas": "管理角色",
222 + "personas_combine_hint": "选定的角色将被合并",
223 + "start_conversation": "开始对话",
224 + "recent_chats": "最近聊天",
225 + "see_all": "查看全部",
226 + "quick_write": "帮我写一个函数",
227 + "quick_explain": "解释这段代码",
228 + "quick_debug": "帮我调试这个",
229 + "quick_async": "我该如何使用 async/await?",
230 + "history_missing_title": "历史记录丢失",
231 + "history_missing_desc": "此聊天中的消息已被删除,或历史记录已损坏。",
232 + "technical_details": "技术细节",
233 + "last_error": "上次错误:",
234 + "copy_info": "复制信息",
235 + "conversation_id": "对话 ID",
236 + "created_at": "创建于",
237 + "expected_messages": "预期消息",
238 + "debug_dialog_desc": "用以帮助识别同步问题的诊断信息。",
239 + "chat_input_hint": "问任何问题",
240 + "send_message_tooltip": "发送消息",
241 + "stop_generation_tooltip": "停止生成",
242 + "attach_images_tooltip": "附加图片",
243 + "start_listening_tooltip": "开始聆听",
244 + "stop_listening_tooltip": "停止聆听",
245 + "tool_label": "工具: {toolCallId}",
246 + "tool_unknown": "工具: 未知",
247 + "message_options": "消息选项",
248 + "copy_markdown": "复制为 Markdown",
249 + "copied_markdown": "已复制为 Markdown",
250 + "read_aloud": "朗读",
251 + "stop_reading": "停止朗读",
252 + "more": "更多",
253 + "character_count": "{length} 个字符",
254 + "edit_message": "编辑消息",
255 + "edit_message_desc": "保存将移除下方助手的回复并重新生成。",
256 + "save_regenerate": "保存并重新生成",
257 + "chat_settings_title": "聊天设置",
258 + "reset_defaults": "重置默认值",
259 "parameters_tab": "参数",
265 - "pause": "暂停",
266 - "paused_progress": "已暂停 - {percent}%",
267 - "persona_builtin_section": "内置",
268 - "persona_category_coding": "编程",
269 - "persona_category_creative": "创意",
270 - "persona_category_education": "教育",
271 - "persona_category_general": "通用",
272 - "persona_created": "角色已创建",
273 - "persona_my_section": "我的角色",
274 - "persona_updated": "角色已更新",
275 - "personas_title": "角色",
276 - "pin": "Pin",
260 + "mcp_tab": "MCP",
261 + "temperature": "温度",
262 + "temperature_desc": "控制随机性:较高 = 创意,较低 = 专注",
263 + "top_p": "Top P",
264 + "top_p_desc": "核采样阈值",
265 + "max_tokens": "最大 Token 数",
266 + "max_tokens_desc": "响应限制",
267 + "context_length": "上下文长度",
268 + "context_length_desc": "历史窗口",
269 + "mcp_disabled_warning": "MCP 已在全局被禁用。请在设置中启用以使用这些功能。",
270 + "mcp_enable_chat": "为此聊天启用 MCP",
271 + "auto_execute_tools": "自动执行工具",
272 + "beta_label": "Beta",
273 + "experimental_label": "实验性",
274 + "add_ephemeral_mcp": "添加临时 MCP 服务器",
275 + "mcp_label_placeholder": "标签",
276 + "mcp_url_placeholder": "URL (https://...)",
277 + "active_integrations": "活动集成",
278 + "enable_notifications": "启用通知",
279 + "enable_notifications_desc": "在模型下载完成时获得通知。",
280 + "chat_history_title": "聊天历史",
281 + "conversation_just_now": "刚刚",
282 + "conversation_minutes_ago": "{minutes}分钟前",
283 + "conversation_hours_ago": "{hours}小时前",
284 + "conversation_yesterday": "昨天",
285 + "conversation_days_ago": "{days}天前",
286 + "conversation_date": "{month}/{day}/{year}",
287 + "options_tooltip": "选项",
288 + "no_results_found": "未找到结果",
289 + "no_conversations_yet": "尚无对话",
290 + "try_different_search": "尝试不同的搜索词",
291 + "start_new_conversation": "开始新对话",
292 + "rename_conversation": "重命名对话",
293 + "enter_new_title": "输入新标题",
294 "pinned_section": "已 pin",
278 - "port_invalid": "必须是数字",
295 + "today_section": "今天",
296 + "yesterday_section": "昨天",
297 + "previous_7_days": "前 7 天",
298 + "previous_30_days": "前 30 天",
299 + "older_section": "更早",
300 + "onboarding_choose_language": "选择语言",
301 + "onboarding_choose_language_desc": "选择您首选的语言。您随时可以在设置中更改此项。",
302 + "onboarding_localmind": "LOCALMIND",
303 + "onboarding_connect_server": "连接您的\n服务器",
304 + "onboarding_connect_desc": "连接到 LM Studio、Ollama 或\nOpenRouter,开启您的私有 AI\n体验。",
305 + "openai_compatible_api": "OpenAI 兼容 API",
306 + "https_requires_ssl": "HTTPS 需要 SSL",
307 + "most_local_setups_use_http": "大多数本地配置使用 http://",
308 + "onboarding_welcome": "欢迎使用 LocalMind",
309 + "server_type_on_device": "设备端",
310 + "server_type_lm_studio": "LM Studio",
311 + "server_type_ollama": "Ollama",
312 + "server_type_openrouter": "OpenRouter",
313 + "server_type_openrouter_sub": "统一云",
314 + "ready_continue": "准备好继续",
315 + "waiting_selection": "等待选择",
316 + "setup_connection": "设置连接",
317 + "setup_connection_desc": "配置您的 {server} 服务器以开始聊天。",
318 + "server_name": "服务器名称",
319 + "name_required": "需要名称",
320 + "name_max_50": "最多 50 个字符",
321 + "host_label": "主机 / IP 地址",
322 + "host_required": "需要主机地址",
323 "port_label": "端口",
280 - "port_range": "输入有效的端口号 (1-65535)",
324 "port_required": "需要端口",
282 - "preparing_app": "正在准备应用...",
283 - "preview": "预览",
284 - "preview_failed": "预览失败: {error}",
285 - "previous_30_days": "前 30 天",
286 - "previous_7_days": "前 7 天",
287 - "privacy_info": "\"LocalMind 绝不查看您的数据\"",
288 - "proceed_anyway": "仍然继续",
289 - "processing": "正在处理...",
290 - "prompt_hint": "你是一个得力的助手...",
291 - "prompt_max_chars": "最多 4000 个字符",
292 - "prompt_required": "需要系统提示词",
293 - "quick_async": "我该如何使用 async/await?",
294 - "quick_debug": "帮我调试这个",
295 - "quick_explain": "解释这段代码",
296 - "quick_write": "帮我写一个函数",
325 + "port_invalid": "必须是数字",
326 + "port_range": "输入有效的端口号 (1-65535)",
327 + "api_key_required": "API 密钥 *",
328 + "api_key_optional": "API 密钥 (可选)",
329 + "api_key_required_openrouter": "OpenRouter 需要 API 密钥",
330 + "api_key_format": "OpenRouter API 密钥以 sk- 开头",
331 + "my_server_hint": "我的服务器",
332 + "name_length_validation": "名称必须在 50 个字符以内",
333 + "host_valid": "输入有效的主机名或 IP 地址",
334 + "api_key_hint_openrouter": "sk-...",
335 + "api_key_hint_generic": "适用于已验证的服务器",
336 + "update_server": "更新服务器",
337 + "save_server": "保存服务器",
338 + "server_updated": "服务器已更新",
339 + "server_added": "服务器已添加",
340 + "download_model_title": "下载模型",
341 + "download_model_desc": "选择要下载的模型。\n它将在您的设备上本地运行。",
342 + "on_device_android_only": "设备端推理当前仅可在 Android 上使用。",
343 + "total_ram": "总内存",
344 + "available": "可用",
345 "ram_min_required": "最低要求 {fileSize} GB 内存 (RAM)",
298 - "ram_usage": "内存占用",
299 - "ram_used": "已使用 {percent}%",
300 - "ram_warning": "内存警告",
346 + "download_progress": "{percent}% • {speed}",
347 + "eta_label": "预计剩余时间: {eta}",
348 + "paused_progress": "已暂停 - {percent}%",
349 "ram_warning_body_download": "此模型需要至少 {ram} GB 内存,但您的设备仅有 {totalMemory}。它可能无法正常运行,或会导致应用崩溃。",
350 "ram_warning_body_load": "您的设备当前有 {availableRAM} 可用内存,但此模型推荐至少 {ram} GB。加载它可能会失败或导致系统不稳定。",
303 - "range_0_1": "0.0-1.0",
304 - "range_0_2": "0.0-2.0",
305 - "read_aloud": "朗读",
306 - "ready": "就绪",
307 - "ready_continue": "准备好继续",
308 - "recent_chats": "最近聊天",
309 - "recommended": "推荐",
310 - "refresh_models": "刷新模型",
311 - "remove_persona": "删除角色",
312 - "rename": "重命名",
313 - "rename_conversation": "重命名对话",
314 - "reset_defaults": "重置默认值",
315 - "reset_settings_defaults": "重置设置至默认值",
316 - "resume": "继续",
317 - "retry": "重试",
318 - "save": "保存",
319 - "save_changes": "保存更改",
320 - "save_continue": "保存并继续",
321 - "save_regenerate": "保存并重新生成",
322 - "save_server": "保存服务器",
323 - "search_hint": "搜索对话...",
324 - "search_icons_hint": "搜索图标...",
325 - "search_models_hint": "搜索模型...",
326 - "see_all": "查看全部",
327 - "select": "选择",
351 + "choose_theme": "选择主题",
352 + "choose_theme_desc": "个性化应用程序外观。您随时可以在设置中更改此项。",
353 + "theme_card_system": "系统",
354 + "theme_card_system_sub": "匹配您的设备设置",
355 + "theme_card_light": "亮色",
356 + "theme_card_light_sub": "干净明亮",
357 + "theme_card_dark": "暗色",
358 + "theme_card_dark_sub": "保护眼睛",
359 + "theme_card_claude": "Claude",
360 + "theme_card_claude_sub": "温馨的桃色色调主题",
361 + "stay_updated": "保持更新",
362 + "stay_updated_desc": "在您的 AI 模型下载完成或长时间运行的任务结束时获得通知。",
363 + "notification_benefit_downloads": "模型下载进度",
364 + "notification_benefit_completions": "生成完成",
365 + "notification_benefit_background": "后台任务状态",
366 + "allow_notifications": "允许通知",
367 + "servers_title": "服务器",
368 + "no_servers_yet": "尚无服务器",
369 + "no_servers_desc": "添加您的首个服务器以开始与 AI 模型聊天。",
370 + "add_server": "添加服务器",
371 + "switched_to_server": "已切换到 {name}",
372 + "edit_server": "编辑服务器",
373 + "add_server_title": "添加服务器",
374 + "server_type_label": "服务器类型",
375 + "server_icon_label": "服务器图标",
376 + "default_icon": "默认图标",
377 + "server_type_lm_studio_display": "LM Studio",
378 + "server_type_openai_display": "兼容 OpenAI",
379 + "server_type_ollama_display": "Ollama",
380 + "server_type_openrouter_display": "OpenRouter",
381 + "server_type_on_device_display": "设备端",
382 + "server_address_openrouter": "openrouter.ai",
383 + "server_address_on_device": "本地推理",
384 + "server_address_format": "{host}:{port}",
385 + "default_badge": "默认",
386 + "set_as_default": "设为默认",
387 "select_icon": "选择图标",
388 "select_icon_desc": "为您的服务器选择一个图标",
330 - "select_model": "选择模型",
331 - "select_model_hint": "选择一个模型以开始聊天",
332 - "select_model_title": "选择模型",
333 - "select_persona": "选择角色",
334 - "send_message_tooltip": "发送消息",
335 - "send_on_enter": "按 Enter 键发送",
336 - "server_added": "服务器已添加",
337 - "server_address_format": "{host}:{port}",
338 - "server_address_on_device": "本地推理",
339 - "server_address_openrouter": "openrouter.ai",
340 - "server_icon_ai_brain": "AI 大脑",
341 - "server_icon_ai_brain2": "AI 大脑 02",
342 - "server_icon_ai_chat": "AI 聊天",
343 - "server_icon_ai_cloud": "AI 云端",
344 - "server_icon_ai_network": "AI 网络",
345 - "server_icon_alert": "警报圆圈",
346 - "server_icon_api": "API",
347 - "server_icon_arrow_right": "右箭头 01",
348 - "server_icon_bot": "机器人",
349 - "server_icon_bot2": "机器人 02",
350 - "server_icon_cellular": "蜂窝网络",
351 - "server_icon_check": "勾选圆圈",
352 - "server_icon_chip": "芯片",
353 - "server_icon_chip2": "芯片 02",
389 + "search_icons_hint": "搜索图标...",
390 + "server_icon_stack": "服务器堆栈",
391 + "server_icon_stack2": "服务器堆栈 02",
392 + "server_icon_stack3": "服务器堆栈 03",
393 "server_icon_cloud": "云",
355 - "server_icon_cloud_download": "云端下载",
394 "server_icon_cloud_server": "云端服务器",
357 - "server_icon_cloud_upload": "云端上传",
358 - "server_icon_code": "代码",
359 - "server_icon_computer": "电脑",
360 - "server_icon_cpu": "CPU",
395 + "server_icon_mcp": "MCP 服务器",
396 "server_icon_database": "数据库",
397 "server_icon_database1": "数据库 01",
398 "server_icon_database2": "数据库 02",
364 - "server_icon_drive": "驱动器",
365 - "server_icon_file1": "文件 01",
366 - "server_icon_folder1": "文件夹 01",
367 - "server_icon_folder2": "文件夹 02",
368 - "server_icon_globe": "地球仪",
369 - "server_icon_hard_drive": "硬盘",
370 - "server_icon_home1": "主页 01",
371 - "server_icon_home2": "主页 02",
372 - "server_icon_info": "信息圆圈",
373 - "server_icon_key": "钥匙 01",
374 - "server_icon_label": "服务器图标",
399 + "server_icon_cpu": "CPU",
400 + "server_icon_chip": "芯片",
401 + "server_icon_chip2": "芯片 02",
402 + "server_icon_computer": "电脑",
403 "server_icon_laptop": "笔记本电脑",
376 - "server_icon_link": "链接 01",
377 - "server_icon_lock": "锁",
378 - "server_icon_mcp": "MCP 服务器",
404 + "server_icon_terminal": "电脑终端",
405 + "server_icon_code": "代码",
406 + "server_icon_ai_brain": "AI 大脑",
407 + "server_icon_ai_brain2": "AI 大脑 02",
408 + "server_icon_ai_cloud": "AI 云端",
409 + "server_icon_ai_network": "AI 网络",
410 + "server_icon_ai_chat": "AI 聊天",
411 + "server_icon_cellular": "蜂窝网络",
412 "server_icon_plug1": "插头 01",
413 "server_icon_plug2": "插头 02",
381 - "server_icon_refresh": "刷新",
414 + "server_icon_bot": "机器人",
415 + "server_icon_bot2": "机器人 02",
416 "server_icon_robotic": "机器人声音",
417 "server_icon_rocket": "火箭",
418 + "server_icon_star": "Star",
419 "server_icon_settings1": "设置 01",
420 "server_icon_settings2": "设置 02",
386 - "server_icon_stack": "服务器堆栈",
387 - "server_icon_stack2": "服务器堆栈 02",
388 - "server_icon_stack3": "服务器堆栈 03",
389 - "server_icon_star": "Star",
390 - "server_icon_terminal": "电脑终端",
391 - "server_icon_zap": "Zap",
392 - "server_name": "服务器名称",
393 - "server_type_label": "服务器类型",
394 - "server_type_lm_studio": "LM Studio",
395 - "server_type_lm_studio_display": "LM Studio",
396 - "server_type_lm_studio_sub": "本地 API",
397 - "server_type_ollama": "Ollama",
398 - "server_type_ollama_display": "Ollama",
399 - "server_type_ollama_sub": "CLI 引擎",
400 - "server_type_on_device": "设备端",
401 - "server_type_on_device_display": "设备端",
402 - "server_type_on_device_sub": "无需服务器",
403 - "server_type_openai_display": "兼容 OpenAI",
404 - "server_type_openrouter": "OpenRouter",
405 - "server_type_openrouter_display": "OpenRouter",
406 - "server_type_openrouter_sub": "统一云",
407 - "server_updated": "服务器已更新",
408 - "servers_title": "服务器",
409 - "set_as_default": "设为默认",
410 - "set_persona": "设置角色",
411 - "settings_about": "关于",
412 - "settings_appearance": "外观",
413 - "settings_behavior": "行为",
414 - "settings_data_management": "数据管理",
415 - "settings_default_persona": "默认角色",
416 - "settings_default_server": "默认服务器",
417 - "settings_language": "语言",
418 - "settings_on_device": "设备端推理",
419 - "settings_privacy": "隐私",
420 - "settings_title": "设置",
421 - "settings_tts": "语音合成 (TTS)",
422 - "setup_connection": "设置连接",
423 - "setup_connection_desc": "配置您的 {server} 服务器以开始聊天。",
424 - "share": "分享",
425 - "show_data_indicator": "显示数据指示器",
426 - "show_system_messages": "显示系统消息",
427 - "skip": "跳过",
428 - "something_went_wrong": "出了点问题",
429 - "star_on_github": "在 GitHub 上点亮 Star",
430 - "start_conversation": "开始对话",
431 - "start_new_chat": "开始新聊天",
432 - "start_new_conversation": "开始新对话",
433 - "startup_failed": "启动失败",
434 - "stay_updated": "保持更新",
435 - "stay_updated_desc": "在您的 AI 模型下载完成或长时间运行的任务结束时获得通知。",
436 - "stop": "停止",
437 - "stop_generation_tooltip": "停止生成",
438 - "stop_reading": "停止朗读",
439 - "streaming_responses": "流式响应",
440 - "switch_server": "切换服务器",
441 - "switch_server_subtitle": "选择要连接的服务器",
442 - "switched_to_server": "已切换到 {name}",
421 + "server_icon_home1": "主页 01",
422 + "server_icon_home2": "主页 02",
423 + "server_icon_folder1": "文件夹 01",
424 + "server_icon_folder2": "文件夹 02",
425 + "server_icon_file1": "文件 01",
426 + "server_icon_lock": "锁",
427 + "server_icon_key": "钥匙 01",
428 + "server_icon_link": "链接 01",
429 + "server_icon_globe": "地球仪",
430 + "server_icon_api": "API",
431 + "server_icon_arrow_right": "右箭头 01",
432 + "server_icon_check": "勾选圆圈",
433 + "server_icon_alert": "警报圆圈",
434 + "server_icon_info": "信息圆圈",
435 + "server_icon_zap": "Zap",
436 + "server_icon_cloud_upload": "云端上传",
437 + "server_icon_cloud_download": "云端下载",
438 + "server_icon_refresh": "刷新",
439 + "server_icon_hard_drive": "硬盘",
440 + "server_icon_drive": "驱动器",
441 + "personas_title": "角色",
442 + "persona_category_general": "通用",
443 + "persona_category_coding": "编程",
444 + "persona_category_education": "教育",
445 + "persona_category_creative": "创意",
446 + "persona_builtin_section": "内置",
447 + "persona_my_section": "我的角色",
448 + "clone_edit": "克隆并编辑",
449 + "builtin_badge": "内置",
450 + "no_personas_found": "未找到任何角色",
451 + "no_personas_desc": "创建您的第一个角色以定制 AI 行为。",
452 + "edit_persona": "编辑角色",
453 + "create_persona": "创建角色",
454 + "create_persona_button": "创建",
455 + "emoji_label": "表情符号",
456 + "name_label": "名称",
457 + "my_persona_hint": "我的角色",
458 + "category_label": "分类",
459 + "description_optional": "描述 (可选)",
460 + "description_hint": "此角色要做的是...",
461 "system_prompt": "系统提示词",
444 - "technical_details": "技术细节",
445 - "temp_hint": "0.7",
446 - "temperature": "温度",
447 - "temperature_desc": "控制随机性:较高 = 创意,较低 = 专注",
462 + "character_count_max": "{currentLen}/4000",
463 + "no_prompt_placeholder": "尚无提示词...",
464 + "prompt_hint": "你是一个得力的助手...",
465 + "prompt_required": "需要系统提示词",
466 + "prompt_max_chars": "最多 4000 个字符",
467 + "advanced_settings": "高级设置",
468 "temperature_label": "温度 (0.0-2.0)",
449 - "test_connection": "测试连接",
450 - "test_notification_body": "这是用于展示模型下载进度的测试通知。",
451 - "test_notification_title": "测试通知",
452 - "testing": "正在测试...",
453 - "theme": "主题",
454 - "theme_card_claude": "Claude",
455 - "theme_card_claude_sub": "温馨的桃色色调主题",
456 - "theme_card_dark": "暗色",
457 - "theme_card_dark_sub": "保护眼睛",
458 - "theme_card_light": "亮色",
459 - "theme_card_light_sub": "干净明亮",
460 - "theme_card_system": "系统",
461 - "theme_card_system_sub": "匹配您的设备设置",
462 - "theme_claude": "Claude",
463 - "theme_dark": "暗色",
464 - "theme_light": "亮色",
465 - "theme_system": "系统",
466 - "thinking": "正在思考",
467 - "today_section": "今天",
468 - "tool_label": "工具: {toolCallId}",
469 - "tool_unknown": "工具: 未知",
470 - "top_p": "Top P",
471 - "top_p_desc": "核采样阈值",
472 - "top_p_hint": "0.9",
469 "top_p_label": "Top P (0.0-1.0)",
474 - "total_capacity": "总容量",
475 - "total_ram": "总内存",
476 - "try_different_search": "尝试不同的搜索词",
477 - "tts_engine": "TTS 引擎",
478 - "tts_engine_kitten": "Kitten TTS",
479 - "tts_engine_system": "系统 TTS",
480 - "tts_kitten_desc": "拥有 8 种表现力声音的闪电般高速神经网络 TTS。\n需要下载 {size}。",
470 + "temp_hint": "0.7",
471 + "top_p_hint": "0.9",
472 + "range_0_2": "0.0-2.0",
473 + "range_0_1": "0.0-1.0",
474 + "persona_updated": "角色已更新",
475 + "persona_created": "角色已创建",
476 "tts_models_title": "语音合成模型",
482 - "tts_piper_desc": "快速离线 Piper 语音,拥有 2 种极具表现力的声音。\n每个声音需要下载 {size}。",
483 - "tts_speed": "TTS 速度",
484 - "tts_speed_desc": "调整播放速率。",
477 + "always_available": "始终可用",
478 "tts_system_desc": "使用您设备内置的语音合成引擎。\n无需额外下载。语音选择依赖您的设备系统设置。",
486 - "unknown_error": "未知错误",
487 - "unload": "卸载",
488 - "unload_from_server": "从服务器卸载",
489 - "unpin": "取消 Pin",
490 - "update_server": "更新服务器",
491 - "voice": "语音",
492 - "voice_bella": "Bella",
493 - "voice_bruno": "Bruno",
494 - "voice_female": "女声",
495 - "voice_hugo": "Hugo",
496 - "voice_jasper": "Jasper",
497 - "voice_kiki": "Kiki",
498 - "voice_leo": "Leo",
499 - "voice_lessac": "Lessac (美音)",
500 - "voice_luna": "Luna",
501 - "voice_male": "男声",
502 - "voice_other": "其他",
503 - "voice_rosie": "Rosie",
504 - "voice_ryan": "Ryan (美音)",
505 - "waiting_selection": "等待选择",
506 - "yesterday_section": "昨天",
507 - "tts_supports_background": "支持后台播放(原生音频格式)",
508 - "tts_other_services_background_note": "注意:其他TTS服务支持后台播放(原生音频格式)。",
509 - "start_listening_tooltip": "开始聆听",
510 - "stop_listening_tooltip": "停止聆听",
479 + "downloading_status": "正在下载...",
480 + "tts_kitten_desc": "拥有 8 种表现力声音的闪电般高速神经网络 TTS。\n需要下载 {size}。",
481 + "tts_piper_desc": "快速离线 Piper 语音,拥有 2 种极具表现力的声音。\n每个声音需要下载 {size}。",
482 + "engine_spec": "{sizeMb} MB · {ramMb} MB 内存 · {voiceCount} 种语音",
483 + "on_device_models_title": "设备端模型",
484 "settings_huggingface_token": "Hugging Face 令牌(可选)",
485 "settings_huggingface_token_desc": "仅对受限模型必需(例如 Gemma)。可在 huggingface.co/settings/tokens 获取令牌。",
486 "settings_huggingface_token_set": "令牌已保存",
@@ -521,6 +494,91 @@
494 "server_type_ollama_desc": "本地 AI 引擎。无需 API 密钥。",
495 "server_type_on_device_desc": "在您的手机上运行。某些模型需要 Hugging Face 令牌。",
496 "server_type_lm_studio_desc": "本地 API 服务器。无需 API 密钥。",
497 + "available_models": "可用模型",
498 + "device_memory": "设备内存",
499 + "ram_usage": "内存占用",
500 + "memory_healthy": "健康",
501 + "memory_critical": "严重警告",
502 + "memory_low": "偏低",
503 + "ram_used": "已使用 {percent}%",
504 + "available_ram": "可用内存",
505 + "total_capacity": "总容量",
506 + "loaded_status": "已加载",
507 + "inference_backend": "推理后端",
508 + "backend_ios_notice": "iOS 上仅支持 CPU 后端。",
509 + "backend_cpu_desc": "适用于所有设备。兼容性最好。",
510 + "backend_gpu_desc": "OpenCL 加速。在支持 of 设备上运行更快。",
511 + "backend_npu_desc": "厂商 NPU (高通/联发科)。最快的推理速度。",
512 + "select_model_title": "选择模型",
513 + "refresh_models": "刷新模型",
514 + "search_models_hint": "搜索模型...",
515 + "no_server_connected": "未连接服务器",
516 + "add_server_first": "请先添加服务器以查看可用模型。",
517 + "failed_load_models": "加载模型失败",
518 + "no_models_available": "无可用模型",
519 + "no_models_match": "没有匹配 \"{searchQuery}\" 的模型",
520 + "model_load_failed": "加载模型失败: {error}",
521 + "model_unloaded_ollama": "在 keep-alive 时间过去后,{name} 将被自动卸载",
522 + "model_unloaded_success": "{name} 已成功卸载",
523 + "model_unload_failed": "卸载模型失败: {error}",
524 + "unload_from_server": "从服务器卸载",
525 + "context_chip": "{ctx} 上下文 (ctx)",
526 + "unload_all_models": "卸载所有模型",
527 + "loaded_models_count": "已加载 {count} 个模型",
528 + "all_models_unloaded": "所有模型已卸载",
529 + "branch_chat": "分支聊天",
530 + "branch_chat_desc": "从此消息开始新建聊天",
531 + "edit_assistant_message_desc": "编辑助手消息的内容",
532 + "switch_to_model": "切换到模型 {model}",
533 + "download_notification_title": "正在下载 {modelName}...",
534 + "download_complete_notification": "下载完成!",
535 + "download_complete_body": "{modelName} 已成功下载。",
536 + "download_failed_notification": "下载失败: {error}",
537 + "download_failed_body": "下载 {modelName} 失败。",
538 + "engine_name_system": "系统 TTS",
539 + "engine_tagline_system": "内置设备引擎",
540 + "engine_name_kitten": "Kitten TTS",
541 + "engine_tagline_kitten": "高速神经网络 TTS",
542 + "engine_name_sherpa": "Sherpa ONNX VITS",
543 + "engine_tagline_sherpa": "离线 Piper 语音",
544 + "voice_jasper": "Jasper",
545 + "voice_bella": "Bella",
546 + "voice_bruno": "Bruno",
547 + "voice_luna": "Luna",
548 + "voice_hugo": "Hugo",
549 + "voice_rosie": "Rosie",
550 + "voice_leo": "Leo",
551 + "voice_kiki": "Kiki",
552 + "voice_lessac": "Lessac (美音)",
553 + "voice_ryan": "Ryan (美音)",
554 + "model_qwen_3": "Qwen 3 0.6B",
555 + "model_qwen_3_desc": "最小的通用聊天模型。响应速度快,内存消耗低。",
556 + "model_license_apache": "Apache-2.0",
557 + "model_qwen_25": "Qwen 2.5 1.5B Instruct",
558 + "model_qwen_25_desc": "平衡的质量和大小。适合一般对话。",
559 + "model_deepseek": "DeepSeek R1 Distill Qwen 1.5B",
560 + "model_deepseek_desc": "推理与思维链模型。最适合逻辑任务。",
561 + "model_license_mit": "MIT",
562 + "model_gemma": "Gemma 4 E2B Instruct",
563 + "model_gemma_desc": "Google 旗舰模型。最高质量,需要更多内存。",
564 + "export_header": "*导出自 LocalMind — {date}*",
565 + "export_role_user": "## 👤 用户",
566 + "export_role_assistant": "## 🤖 助手",
567 + "export_role_system": "## ⚙️ 系统",
568 + "export_role_tool": "## 🔧 工具",
569 + "export_text_user": "[用户]",
570 + "export_text_assistant": "[助手]",
571 + "export_text_system": "[系统]",
572 + "export_text_tool": "[工具]",
573 + "export_label_user": "用户",
574 + "export_label_assistant": "助手",
575 + "export_label_system": "系统",
576 + "export_label_tool": "工具",
577 + "select_model_hint": "选择一个模型以开始聊天",
578 + "test_notification_title": "测试通知",
579 + "test_notification_body": "这是用于展示模型下载进度的测试通知。",
580 + "tts_supports_background": "支持后台播放(原生音频格式)",
581 + "tts_other_services_background_note": "注意:其他TTS服务支持后台播放(原生音频格式)。",
582 "gguf_imported_models_title": "Imported GGUF models",
583 "gguf_imported_models_empty_subtitle": "Import a GGUF from your device or add one from Hugging Face. Imported models run locally with llama.cpp.",
584 "gguf_imported_models_ready": "imported models ready for local inference.",
@@ -603,65 +661,6 @@
661 "tool_status_running": "Running",
662 "tool_status_done": "Done",
663 "tool_status_failed": "Failed",
606 - "delete_builtin_persona_body": "这是一个内置角色。您稍后可以在“设置”中将其恢复。",
607 - "restore_builtin_personas": "恢复默认角色",
608 - "restore_builtin_personas_desc": "重新添加您已删除的任何内置角色",
609 - "restore_builtin_personas_success": "已恢复默认角色",
610 - "clear_personas": "清除角色",
611 - "enable_image_compression": "发送前压缩图片",
612 - "enable_image_compression_desc": "调整并压缩附加图片的大小,以使上传大小保持在服务器限制内",
613 - "image_compression_level": "压缩强度",
614 - "image_compression_level_desc": "较高的压缩强度会生成质量较低但上传更小的图片",
615 - "image_compression_level_low": "低",
616 - "image_compression_level_medium": "中",
617 - "image_compression_level_high": "高",
618 - "sort_models_tooltip": "排序模型",
619 - "sort_by_favorites": "收藏优先",
620 - "sort_by_name": "名称 (A-Z)",
621 - "sort_by_size_smallest": "大小 (从小到大)",
622 - "sort_by_size_largest": "大小 (从大到小)",
623 - "sort_by_context_length": "上下文长度",
624 - "bulk_ai_rename_progress": "正在重命名 {done}/{total}...",
625 - "selected_count": "已选择 {count} 个",
626 - "ai_rename_tooltip": "使用 AI 重命名所选内容",
627 - "new_chat_in_folder_tooltip": "在此文件夹中新建聊天",
628 - "total_tokens_count": "{count} 个 Token",
629 - "smart_replies_use_persona": "在智能回复中应用角色",
630 - "smart_replies_use_persona_desc": "建议的回复将符合当前启用角色的语气,而不是通用的助手语气",
631 - "keep_persona_on_new_chat": "新聊天保留角色",
632 - "keep_persona_on_new_chat_desc": "开始新聊天时不要清除选定的角色",
633 - "role_swap_button_enabled": "显示角色切换按钮",
634 - "role_swap_button_enabled_desc": "在聊天输入框中显示一个按钮,允许您以助手而非用户的身份发送消息,而不生成任何回复",
635 - "send_as_user_tooltip": "以用户身份发送",
636 - "send_as_assistant_tooltip": "以助手身份发送 (无回复)",
637 - "insert_without_generating_tooltip": "仅插入不生成回复",
638 - "token_usage_title": "Token 使用情况",
639 - "total_tokens_label": "已用 Token",
640 - "usage_percent_label": "已用上下文",
641 - "export_choice_title": "导出",
642 - "export_choice_body": "您希望如何导出此内容?",
643 - "copy_to_clipboard": "复制到剪贴板",
644 - "bulk_export_conversations_success": "已成功导出 {count} 个对话",
645 - "bulk_ai_rename_confirm_title": "使用 AI 重命名?",
646 - "bulk_ai_rename_confirm_body": "这将请求 AI 为每个选定的 {count} 个对话生成新标题,替换其当前的标题。此操作可能需要一些时间,且无法撤销。",
647 - "sort_by_modified_date": "最近修改",
648 - "sort_by_created_date": "创建日期",
649 - "sort_title": "排序",
650 - "ai_user_response_enabled": "AI 用户消息 (长按发送)",
651 - "ai_user_response_enabled_desc": "长按发送按钮 3 秒钟以让 AI 撰写并发送您的下一条消息",
652 - "ai_user_response_tooltip": "使用 AI 生成用户消息",
653 - "show_system_messages_desc": "当没有选定角色时,每次请求都发送默认的助手系统提示词",
654 - "show_system_messages_in_chat": "在聊天中显示系统消息",
655 - "show_system_messages_in_chat_desc": "将系统消息 (例如来自导入的备份) 作为对话中的可见气泡显示",
656 - "manage_personas": "管理角色",
657 - "personas_combine_hint": "选定的角色将被合并",
658 - "unload_all_models": "卸载所有模型",
659 - "loaded_models_count": "已加载 {count} 个模型",
660 - "all_models_unloaded": "所有模型已卸载",
661 - "branch_chat": "分支聊天",
662 - "branch_chat_desc": "从此消息开始新建聊天",
663 - "edit_assistant_message_desc": "编辑助手消息的内容",
664 - "switch_to_model": "切换到模型 {model}",
664 "model_favorite_toggle": "切换收藏",
665 "model_note_label": "备注",
666 "model_note_hint": "为此模型添加个人备注...",
@@ -758,8 +757,15 @@
757 "stream_generation_time": "生成时间",
758 "attach_image": "附加图片",
759 "attach_text_document": "附加文本文件",
760 + "attach_shortcut_images": "照片",
761 + "attach_shortcut_documents": "文件",
762 + "attach_shortcut_saved": "已保存",
763 "add_attachment": "添加附件",
764 + "add_to_chat": "添加到聊天",
765 + "choose_what_to_attach": "您想添加什么?",
766 + "choose_attachment_subtitle": "选择要附加到消息的来源",
767 "photo_permission_denied": "相册权限被拒绝",
768 + "select_model_prompt": "选择模型",
769 "characters_label": "字符数",
770 "exit_temporary_chat_title": "退出临时聊天?",
771 "exit_temporary_chat_body": "这将永久删除当前的对话。是否继续?",
@@ -860,5 +866,9 @@
866 "delete_folder": "删除文件夹",
867 "delete_folder_title": "删除文件夹?",
868 "delete_folder_body": "确定要删除\"{name}\"吗?其中的对话或已保存的消息将移回\"未分类\"。此操作无法撤销。",
863 - "folder_name_required": "请输入文件夹名称"
869 + "folder_name_required": "请输入文件夹名称",
870 + "model_required_toast": "您需要先选择一个模型",
871 + "server_type_lm_studio_sub": "本地 API",
872 + "server_type_ollama_sub": "CLI 引擎",
873 + "server_type_on_device_sub": "无需服务器"
874 }
lib/l10n/app_zh_TW.arb
+526 -516
@@ -1,513 +1,486 @@
1 {
2 "@@locale": "zh_TW",
3 - "active": "已啟用",
4 - "active_integrations": "活動整合",
5 - "add_ephemeral_mcp": "新增臨時 MCP 伺服器",
6 - "add_server": "新增伺服器",
7 - "add_server_first": "請先新增伺服器以查看可用模型。",
8 - "add_server_title": "新增伺服器",
9 - "advanced_settings": "進階設定",
10 - "all": "全部",
11 - "allow_notifications": "允許通知",
12 - "always_available": "始終可用",
13 - "api_key_format": "OpenRouter API 金鑰以 sk- 開頭",
14 - "api_key_hint_generic": "適用於已驗證的伺服器",
15 - "api_key_hint_openrouter": "sk-...",
16 - "api_key_optional": "API 金鑰 (選填)",
17 - "api_key_required": "API 金鑰 *",
18 - "api_key_required_openrouter": "OpenRouter 需要 API 金鑰",
3 "app_name": "LocalMind",
4 "app_tagline": "您的 AI。您的裝置。您的規則。",
5 "app_version": "1.0.0",
22 - "attach_images_tooltip": "附加圖片",
23 - "auto_execute_tools": "自動執行工具",
24 - "auto_generate_titles": "自動生成標題",
25 - "available": "可用",
26 - "beta_label": "Beta",
27 - "experimental_label": "實驗性",
28 - "available_models": "可用模型",
29 - "available_ram": "可用記憶體",
30 - "backend_cpu_desc": "適用於所有裝置。相容性最好。",
31 - "backend_gpu_desc": "OpenCL 加速。在支援的裝置上執行更快。",
32 - "backend_ios_notice": "iOS 上僅支援 CPU 後端。",
33 - "backend_npu_desc": "廠商 NPU (高通/聯發科)。最快的推論速度。",
34 - "builtin_badge": "內建",
35 - "calculating": "正在計算...",
6 "cancel": "取消",
37 - "cannot_undo": "此操作無法復原。",
38 - "category_label": "分類",
39 - "change_persona": "更換角色",
40 - "character_count": "{length} 個字元",
41 - "character_count_max": "{currentLen}/4000",
42 - "chat_history_title": "對話歷史",
43 - "chat_input_hint": "詢問任何問題",
44 - "chat_parameters_tooltip": "對話參數",
45 - "chat_settings_title": "對話設定",
46 - "chat_title": "LocalMind",
47 - "choose_theme": "選擇主題",
48 - "choose_theme_desc": "個人化應用程式外觀。您隨時可以在設定中變更此項。",
49 - "clear": "清除",
50 - "clear_conversation": "清除對話",
51 - "clear_conversation_body": "這會刪除此對話中的所有訊息。",
52 - "clear_conversation_title": "要清除對話嗎?",
53 - "clone_edit": "複製並編輯",
54 - "close": "關閉",
55 - "code_theme_dark": "程式碼主題 (深色)",
56 - "code_theme_desc": "選擇程式碼區塊的語法醒目提示主題。",
57 - "code_theme_light": "程式碼主題 (淺色)",
58 - "configure": "設定",
59 - "configuring_server": "正在設定伺服器...",
7 "confirm": "確認",
61 - "connection_error": "連線錯誤。請檢查您的伺服器。",
62 - "connection_failed": "連線失敗。請檢查您的設定。",
63 - "connection_successful": "連線成功!",
64 - "context_chip": "{ctx} 上下文 (ctx)",
65 - "context_length": "上下文長度",
66 - "context_length_desc": "歷史視窗",
67 - "continue_action": "繼續",
68 - "conversation_date": "{month}/{day}/{year}",
69 - "conversation_days_ago": "{days}天前",
70 - "conversation_hours_ago": "{hours}小時前",
71 - "conversation_id": "對話 ID",
72 - "conversation_just_now": "剛剛",
73 - "conversation_minutes_ago": "{minutes}分鐘前",
74 - "conversation_yesterday": "昨天",
75 - "copied": "已複製!",
76 - "copied_markdown": "已複製為 Markdown",
77 - "copied_to_clipboard": "已複製到剪貼簿",
78 - "copy": "複製",
79 - "copy_info": "複製資訊",
80 - "copy_markdown": "複製為 Markdown",
81 - "create_persona": "建立角色",
82 - "create_persona_button": "建立",
83 - "created_at": "建立於",
84 - "debug_dialog_desc": "用以協助識別同步問題的診斷資訊。",
85 - "default_badge": "預設",
86 - "default_icon": "預設圖示",
8 "delete": "刪除",
88 - "delete_all_conversations": "刪除所有對話",
89 - "delete_conversation": "要刪除對話嗎?",
90 - "delete_conversation_body": "您確定要刪除 \"{title}\" 嗎?此操作無法復原。",
91 - "delete_conversation_title": "要刪除對話嗎?",
92 - "delete_message_title": "要刪除訊息嗎?",
93 - "delete_model_body": "您確定要刪除 {name} 嗎?",
94 - "delete_model_body_with_size": "您確定要刪除 {name} 嗎?這將釋放約 {size} 的空間。\n\n如有需要,您稍後可以重新下載此模型。",
95 - "delete_model_title": "刪除模型",
96 - "delete_persona_body": "此操作無法復原。",
97 - "delete_persona_title": "要刪除 \"{name}\" 嗎?",
98 - "delete_server_body": "您確定要刪除 \"{name}\" 嗎?此操作無法復原。",
99 - "delete_server_title": "刪除伺服器",
100 - "delete_voice_body": "您確定要刪除 {name} 嗎?這將釋放約 {size} 的空間。\n\n如有需要,您稍後可以重新下載此語音。",
101 - "delete_voice_title": "刪除語音",
102 - "description_hint": "此角色要做的是...",
103 - "description_optional": "描述 (選填)",
104 - "device_memory": "裝置記憶體",
105 - "disconnected": "與伺服器斷開連線。",
9 + "save": "儲存",
10 + "retry": "重試",
11 + "close": "關閉",
12 "done": "完成",
13 + "continue_action": "繼續",
14 + "skip": "跳過",
15 + "install": "安裝",
16 "download": "下載",
108 - "download_complete_body": "{modelName} 已成功下載。",
109 - "download_complete_notification": "下載完成!",
110 - "download_failed": "下載失敗",
111 - "download_failed_body": "下載 {modelName} 失敗。",
112 - "download_failed_notification": "下載失敗: {error}",
113 - "download_model_desc": "選擇要下載的模型。\n它將在您的裝置上本機執行。",
114 - "download_model_title": "下載模型",
115 - "download_notification_title": "正在下載 {modelName}...",
116 - "download_progress": "{percent}% • {speed}",
117 - "downloaded": "已下載",
118 - "downloading_status": "正在下載...",
17 + "resume": "繼續",
18 + "pause": "暫停",
19 + "stop": "停止",
20 "edit": "編輯",
120 - "edit_message": "編輯訊息",
121 - "edit_message_desc": "儲存將移除下方助理的回覆並重新生成。",
122 - "edit_persona": "編輯角色",
123 - "edit_server": "編輯伺服器",
124 - "emoji_label": "表情符號",
125 - "enable": "啟用",
126 - "enable_mcp": "啟用 MCP",
127 - "enable_notifications": "啟用通知",
128 - "enable_notifications_desc": "在模型下載完成時獲得通知。",
129 - "engine_name_kitten": "Kitten TTS",
130 - "engine_name_sherpa": "Sherpa ONNX VITS",
131 - "engine_name_system": "系統 TTS",
132 - "engine_spec": "{sizeMb} MB · {ramMb} MB 記憶體 · {voiceCount} 種語音",
133 - "engine_tagline_kitten": "高速類神經網路 TTS",
134 - "engine_tagline_sherpa": "離線 Piper 語音",
135 - "engine_tagline_system": "內建裝置引擎",
136 - "enter_new_title": "輸入新標題",
21 + "preview": "預覽",
22 + "unload": "卸載",
23 + "load": "載入",
24 + "rename": "重新命名",
25 + "pin": "釘選",
26 + "unpin": "取消釘選",
27 + "share": "分享",
28 + "copy": "複製",
29 + "copied": "已複製!",
30 + "copied_to_clipboard": "已複製到剪貼簿",
31 + "select": "選擇",
32 + "active": "已啟用",
33 + "all": "全部",
34 + "none": "無",
35 + "none_selected": "未選擇",
36 + "online": "線上",
37 + "connected": "已連線",
38 + "checking": "正在檢查",
39 + "offline": "離線",
40 "error": "錯誤",
138 - "error_with_message": "錯誤: {error}",
139 - "eta_label": "預計剩餘時間: {eta}",
140 - "expected_messages": "預期訊息",
141 - "export_header": "*匯出自 LocalMind — {date}*",
142 - "export_label_assistant": "助理",
143 - "export_label_system": "系統",
144 - "export_label_tool": "工具",
145 - "export_label_user": "使用者",
146 - "export_role_assistant": "## 🤖 助理",
147 - "export_role_system": "## ⚙️ 系統",
148 - "export_role_tool": "## 🔧 工具",
149 - "export_role_user": "## 👤 使用者",
150 - "export_text_assistant": "[助理]",
151 - "export_text_system": "[系統]",
152 - "export_text_tool": "[工具]",
153 - "export_text_user": "[使用者]",
154 - "failed_load_models": "載入模型失敗",
41 + "unknown_error": "未知錯誤",
42 + "not_now": "暫不",
43 + "enable": "啟用",
44 + "proceed_anyway": "仍然繼續",
45 + "test_connection": "測試連線",
46 + "testing": "正在測試...",
47 + "connection_successful": "連線成功!",
48 + "connection_failed": "連線失敗。請檢查您的設定。",
49 + "save_continue": "儲存並繼續",
50 + "save_changes": "儲存變更",
51 "finish_setup": "完成設定",
156 - "font_preview": "敏捷的棕色狐狸跳過那隻懶狗。",
157 - "font_size": "字型大小",
158 - "font_size_desc": "調整對話中的文字大小。",
159 - "haptic_feedback": "觸覺回饋",
160 - "history_missing_desc": "此對話中的訊息已被刪除,或歷史紀錄已損壞。",
161 - "history_missing_title": "歷史紀錄遺失",
162 - "host_label": "主機 / IP 地址",
163 - "host_required": "需要主機地址",
164 - "host_valid": "輸入有效的主機名稱或 IP 地址",
165 - "inference_backend": "推論後端",
52 + "start_new_chat": "開始新對話",
53 + "cannot_undo": "此操作無法復原。",
54 + "ram_warning": "記憶體警告",
55 + "recommended": "推薦",
56 + "may_be_large": "可能對此裝置來說過大",
57 + "calculating": "正在計算...",
58 + "download_failed": "下載失敗",
59 + "downloaded": "已下載",
60 + "not_downloaded": "未下載",
61 + "installed": "已安裝",
62 + "not_installed": "未安裝",
63 + "loading": "正在載入...",
64 + "thinking": "正在思考",
65 + "processing": "正在處理...",
66 "initializing": "正在初始化...",
67 + "ready": "就緒",
68 + "preparing_app": "正在準備應用程式...",
69 "initializing_services": "正在初始化服務...",
168 - "install": "安裝",
169 - "installed": "已安裝",
70 + "configuring_server": "正在設定伺服器...",
71 + "startup_failed": "啟動失敗",
72 + "something_went_wrong": "出了點問題",
73 + "delete_model_title": "刪除模型",
74 + "delete_model_body": "您確定要刪除 {name} 嗎?",
75 + "delete_model_body_with_size": "您確定要刪除 {name} 嗎?這將釋放約 {size} 的空間。\n\n如有需要,您稍後可以重新下載此模型。",
76 + "delete_voice_title": "刪除語音",
77 + "delete_voice_body": "您確定要刪除 {name} 嗎?這將釋放約 {size} 的空間。\n\n如有需要,您稍後可以重新下載此語音。",
78 + "delete_server_title": "刪除伺服器",
79 + "delete_server_body": "您確定要刪除 \"{name}\" 嗎?此操作無法復原。",
80 + "delete_conversation_title": "要刪除對話嗎?",
81 + "delete_conversation_body": "您確定要刪除 \"{title}\" 嗎?此操作無法復原。",
82 + "delete_message_title": "要刪除訊息嗎?",
83 + "delete_persona_title": "要刪除 \"{name}\" 嗎?",
84 + "delete_persona_body": "此操作無法復原。",
85 + "delete_builtin_persona_body": "這是一個內置角色。您稍後可以在「設定」中將其恢復。",
86 + "restore_builtin_personas": "恢復預設角色",
87 + "restore_builtin_personas_desc": "重新添加您已刪除的任何內置角色",
88 + "restore_builtin_personas_success": "已恢復預設角色",
89 + "clear_personas": "清除角色",
90 + "enable_image_compression": "發送前壓縮圖片",
91 + "enable_image_compression_desc": "調整並壓縮附加圖片的大小,以使上傳大小保持在伺服器限制內",
92 + "image_compression_level": "壓縮強度",
93 + "image_compression_level_desc": "較高的壓縮強度會生成質量較低但上傳更小的圖片",
94 + "image_compression_level_low": "低",
95 + "image_compression_level_medium": "中",
96 + "image_compression_level_high": "高",
97 + "sort_models_tooltip": "排序模型",
98 + "sort_by_favorites": "收藏優先",
99 + "sort_by_name": "名稱 (A-Z)",
100 + "sort_by_size_smallest": "大小 (從小到大)",
101 + "sort_by_size_largest": "大小 (從大到小)",
102 + "sort_by_context_length": "上下文長度",
103 + "bulk_ai_rename_progress": "正在重命名 {done}/{total}...",
104 + "selected_count": "已選擇 {count} 個",
105 + "ai_rename_tooltip": "使用 AI 重命名所選內容",
106 + "new_chat_in_folder_tooltip": "在此資料夾中新建聊天",
107 + "total_tokens_count": "{count} 個 Token",
108 + "smart_replies_use_persona": "在智能回覆中應用角色",
109 + "smart_replies_use_persona_desc": "建議的回覆將符合當前啟用角色的語氣,而不是通用的助手語氣",
110 + "keep_persona_on_new_chat": "新聊天保留角色",
111 + "keep_persona_on_new_chat_desc": "開始新聊天時不要清除選定的角色",
112 + "role_swap_button_enabled": "顯示角色切換按鈕",
113 + "role_swap_button_enabled_desc": "在聊天輸入框中顯示一個按鈕,允許您以助手而非用戶的身份發送消息,而不生成任何回覆",
114 + "send_as_user_tooltip": "以用戶身份發送",
115 + "send_as_assistant_tooltip": "以助手身份發送 (無回覆)",
116 + "insert_without_generating_tooltip": "僅插入不生成回覆",
117 + "token_usage_title": "Token 使用情況",
118 + "total_tokens_label": "已用 Token",
119 + "usage_percent_label": "已用上下文",
120 + "export_choice_title": "匯出",
121 + "export_choice_body": "您希望如何匯出此內容?",
122 + "copy_to_clipboard": "複製到剪貼簿",
123 + "bulk_export_conversations_success": "已成功匯出 {count} 個對話",
124 + "bulk_ai_rename_confirm_title": "使用 AI 重命名?",
125 + "bulk_ai_rename_confirm_body": "這將請求 AI 為每個選定的 {count} 個對話生成新標題,替換其當前的標題。此操作可能需要一些時間,且無法撤銷。",
126 + "sort_by_modified_date": "最近修改",
127 + "sort_by_created_date": "創建日期",
128 + "sort_title": "排序",
129 + "clear_conversation_title": "要清除對話嗎?",
130 + "clear_conversation_body": "這會刪除此對話中的所有訊息。",
131 + "clear": "清除",
132 "label_completed": "{label} 已完成",
171 - "language_system_default": "系統預設",
172 - "last_error": "上次錯誤:",
173 - "load": "載入",
174 - "loaded_status": "已載入",
175 - "loading": "正在載入...",
133 + "error_with_message": "錯誤: {error}",
134 + "preview_failed": "預覽失敗: {error}",
135 "loading_model": "正在載入 {modelId}...",
177 - "loading_model_error": "錯誤: {error}",
178 - "manage_on_device_models": "管理裝置端模型",
179 - "enable_smart_reply": "裝置端智慧回覆",
180 - "manage_servers": "管理伺服器",
181 - "manage_tts_models": "管理 TTS 模型",
182 - "max_tokens": "最大 Token 數",
183 - "max_tokens_desc": "回應限制",
184 - "may_be_large": "可能對此裝置來說過大",
185 - "mcp_disabled_warning": "MCP 已在全域被停用。請在設定中啟用以使用這些功能。",
186 - "mcp_enable_chat": "為此對話啟用 MCP",
187 - "mcp_label_placeholder": "標籤",
188 - "mcp_tab": "MCP",
189 - "mcp_url_placeholder": "URL (https://...)",
190 - "memory_critical": "嚴重警告",
191 - "memory_healthy": "健康",
192 - "memory_low": "偏低",
193 - "message_options": "訊息選項",
194 - "model_deepseek": "DeepSeek R1 Distill Qwen 1.5B",
195 - "model_deepseek_desc": "推論與思考鏈模型。最適合邏輯任務。",
196 - "model_gemma": "Gemma 4 E2B Instruct",
197 - "model_gemma_desc": "Google 旗艦模型。最高品質,需要更多記憶體。",
198 - "model_license_apache": "Apache-2.0",
199 - "model_license_mit": "MIT",
200 - "model_load_failed": "載入模型失敗: {error}",
136 "model_loaded": "模型已載入: {modelId} ({backend})",
202 - "model_qwen_25": "Qwen 2.5 1.5B Instruct",
203 - "model_qwen_25_desc": "平衡的品質和大小。適合一般對話。",
204 - "model_qwen_3": "Qwen 3 0.6B",
205 - "model_qwen_3_desc": "最小的通用對話模型。回應速度快,記憶體消耗低。",
206 - "model_unload_failed": "卸載模型失敗: {error}",
207 - "model_unloaded_ollama": "在 keep-alive 時間過去後,{name} 將被自動卸載",
208 - "model_unloaded_success": "{name} 已成功卸載",
209 - "more": "更多",
210 - "my_persona_hint": "我的角色",
211 - "my_server_hint": "我的伺服器",
212 - "name_label": "名稱",
213 - "name_length_validation": "名稱必須在 50 個字元以內",
214 - "name_max_50": "最多 50 個字元",
215 - "name_required": "需要名稱",
137 + "no_model_loaded": "未載入任何模型。點擊「管理裝置端模型」以下載並載入模型。",
138 + "loading_model_error": "錯誤: {error}",
139 + "delete_conversation": "要刪除對話嗎?",
140 "nav_history": "歷史",
141 + "nav_servers": "伺服器",
142 "nav_local_models": "本機模型",
218 - "nav_new_chat": "新對話",
143 + "nav_tts": "語音合成",
144 "nav_personas": "角色",
220 - "nav_servers": "伺服器",
145 "nav_settings": "設定",
222 - "nav_tts": "語音合成",
223 - "new_chat_mcp_default": "新對話預設啟用 MCP",
224 - "no_conversations_yet": "尚無對話",
225 - "no_model_loaded": "未載入任何模型。點擊「管理裝置端模型」以下載並載入模型。",
226 - "no_models_available": "無可用模型",
227 - "no_models_match": "沒有符合 \"{searchQuery}\" 的模型",
228 - "no_personas_desc": "建立您的第一個角色以定制 AI 行為。",
229 - "no_personas_found": "未找到任何角色",
230 - "no_prompt_placeholder": "尚無提示詞...",
231 - "no_results_found": "未找到結果",
232 - "no_server_connected": "未連線伺服器",
146 + "nav_new_chat": "新對話",
147 + "search_hint": "搜尋對話...",
148 "no_server_selected": "未選擇伺服器",
234 - "no_servers_desc": "新增您的首個伺服器以開始與 AI 模型對話。",
235 - "no_servers_yet": "尚無伺服器",
236 - "none": "無",
237 - "none_selected": "未選擇",
238 - "not_downloaded": "未下載",
239 - "not_installed": "未安裝",
240 - "not_now": "暫不",
241 - "notification_benefit_background": "背景工作狀態",
242 - "notification_benefit_completions": "生成完成",
243 - "notification_benefit_downloads": "模型下載進度",
244 - "offline": "離線",
245 - "older_section": "更早",
246 - "on_device_android_only": "裝置端推論目前僅可在 Android 上使用。",
247 - "on_device_models_title": "裝置端模型",
248 - "onboarding_choose_language": "選擇語言",
249 - "onboarding_choose_language_desc": "選擇您偏好的語言。您隨時可以在設定中變更此項。",
250 - "onboarding_connect_desc": "連線到 LM Studio、Ollama 或\nOpenRouter,開啟您的私有 AI\n體驗。",
251 - "onboarding_connect_server": "連線您的\n伺服器",
252 - "onboarding_localmind": "LOCALMIND",
253 - "onboarding_welcome": "歡迎使用 LocalMind",
254 - "online": "線上",
149 + "switch_server": "切換伺服器",
150 + "switch_server_subtitle": "選擇要連線的伺服器",
151 + "manage_servers": "管理伺服器",
152 "open_source": "開源",
153 "open_source_desc": "LocalMind 是開源專案。可在 GitHub 上關注我們的進展或參與貢獻。",
154 + "star_on_github": "在 GitHub 上點亮 Star",
155 "add_more": "新增更多",
156 "on_github": "在 GitHub 上",
157 "could_not_open_github": "無法開啟 GitHub。",
260 - "openai_compatible_api": "OpenAI 相容 API",
261 - "https_requires_ssl": "HTTPS 需要 SSL",
262 - "most_local_setups_use_http": "大多數本機配置使用 http://",
263 - "options_tooltip": "選項",
158 + "settings_title": "設定",
159 + "settings_appearance": "外觀",
160 + "settings_language": "語言",
161 + "language_system_default": "系統預設",
162 + "settings_tts": "語音合成 (TTS)",
163 + "settings_behavior": "行為",
164 + "settings_on_device": "裝置端推論",
165 + "settings_default_server": "預設伺服器",
166 + "settings_default_persona": "預設角色",
167 + "settings_privacy": "隱私",
168 + "settings_data_management": "資料管理",
169 + "settings_about": "關於",
170 + "theme": "主題",
171 + "theme_system": "系統",
172 + "theme_light": "淺色",
173 + "theme_dark": "深色",
174 + "theme_claude": "Claude",
175 + "font_size": "字型大小",
176 + "font_size_desc": "調整對話中的文字大小。",
177 + "font_preview": "敏捷的棕色狐狸跳過那隻懶狗。",
178 + "code_theme_dark": "程式碼主題 (深色)",
179 + "code_theme_light": "程式碼主題 (淺色)",
180 + "code_theme_desc": "選擇程式碼區塊的語法醒目提示主題。",
181 + "tts_engine": "TTS 引擎",
182 + "tts_engine_system": "系統 TTS",
183 + "tts_engine_kitten": "Kitten TTS",
184 + "voice": "語音",
185 + "voice_female": "女聲",
186 + "voice_male": "男聲",
187 + "voice_other": "其他",
188 + "tts_speed": "TTS 速度",
189 + "tts_speed_desc": "調整播放速率。",
190 + "manage_tts_models": "管理 TTS 模型",
191 + "manage_on_device_models": "管理裝置端模型",
192 + "enable_smart_reply": "裝置端智慧回覆",
193 + "ai_user_response_enabled": "AI 用戶消息 (長按發送)",
194 + "ai_user_response_enabled_desc": "長按發送按鈕 3 秒鐘以讓 AI 撰寫並發送您的下一條消息",
195 + "ai_user_response_tooltip": "使用 AI 生成用戶消息",
196 + "streaming_responses": "串流響應",
197 + "auto_generate_titles": "自動生成標題",
198 + "send_on_enter": "按 Enter 鍵發送",
199 + "show_system_messages": "顯示系統訊息",
200 + "show_system_messages_desc": "當沒有選定角色時,每次請求都發送預設的助手系統提示詞",
201 + "show_system_messages_in_chat": "在聊天中顯示系統消息",
202 + "show_system_messages_in_chat_desc": "將系統消息 (例如來自導入的備份) 作為對話中的可見氣泡顯示",
203 + "haptic_feedback": "觸覺回饋",
204 + "enable_mcp": "啟用 MCP",
205 + "new_chat_mcp_default": "新對話預設啟用 MCP",
206 + "show_data_indicator": "顯示數據指示器",
207 + "privacy_info": "「LocalMind 絕不查看您的數據」",
208 + "delete_all_conversations": "刪除所有對話",
209 + "reset_settings_defaults": "重設設定至預設值",
210 + "chat_title": "LocalMind",
211 + "chat_parameters_tooltip": "對話參數",
212 + "change_persona": "更換角色",
213 + "set_persona": "設定角色",
214 + "remove_persona": "刪除角色",
215 + "clear_conversation": "清除對話",
216 + "connection_error": "連線錯誤。請檢查您的伺服器。",
217 + "disconnected": "與伺服器斷開連線。",
218 + "configure": "設定",
219 + "select_model": "選擇模型",
220 + "select_persona": "選擇角色",
221 + "manage_personas": "管理角色",
222 + "personas_combine_hint": "選定的角色將被合併",
223 + "start_conversation": "開始對話",
224 + "recent_chats": "最近對話",
225 + "see_all": "查看全部",
226 + "quick_write": "幫我寫一個函式",
227 + "quick_explain": "解釋這段程式碼",
228 + "quick_debug": "幫我偵錯這個",
229 + "quick_async": "我該如何使用 async/await?",
230 + "history_missing_title": "歷史紀錄遺失",
231 + "history_missing_desc": "此對話中的訊息已被刪除,或歷史紀錄已損壞。",
232 + "technical_details": "技術細節",
233 + "last_error": "上次錯誤:",
234 + "copy_info": "複製資訊",
235 + "conversation_id": "對話 ID",
236 + "created_at": "建立於",
237 + "expected_messages": "預期訊息",
238 + "debug_dialog_desc": "用以協助識別同步問題的診斷資訊。",
239 + "chat_input_hint": "詢問任何問題",
240 + "send_message_tooltip": "發送訊息",
241 + "stop_generation_tooltip": "停止生成",
242 + "attach_images_tooltip": "附加圖片",
243 + "start_listening_tooltip": "開始聆聽",
244 + "stop_listening_tooltip": "停止聆聽",
245 + "tool_label": "工具: {toolCallId}",
246 + "tool_unknown": "工具: 未知",
247 + "message_options": "訊息選項",
248 + "copy_markdown": "複製為 Markdown",
249 + "copied_markdown": "已複製為 Markdown",
250 + "read_aloud": "朗讀",
251 + "stop_reading": "停止朗讀",
252 + "more": "更多",
253 + "character_count": "{length} 個字元",
254 + "edit_message": "編輯訊息",
255 + "edit_message_desc": "儲存將移除下方助理的回覆並重新生成。",
256 + "save_regenerate": "儲存並重新生成",
257 + "chat_settings_title": "對話設定",
258 + "reset_defaults": "重設預設值",
259 "parameters_tab": "參數",
265 - "pause": "暫停",
266 - "paused_progress": "已暫停 - {percent}%",
267 - "persona_builtin_section": "內建",
268 - "persona_category_coding": "程式設計",
269 - "persona_category_creative": "創意",
270 - "persona_category_education": "教育",
271 - "persona_category_general": "通用",
272 - "persona_created": "角色已建立",
273 - "persona_my_section": "我的角色",
274 - "persona_updated": "角色已更新",
275 - "personas_title": "角色",
276 - "pin": "釘選",
260 + "mcp_tab": "MCP",
261 + "temperature": "溫度",
262 + "temperature_desc": "控制隨機性:較高 = 創意,較低 = 專注",
263 + "top_p": "Top P",
264 + "top_p_desc": "核取樣門檻",
265 + "max_tokens": "最大 Token 數",
266 + "max_tokens_desc": "回應限制",
267 + "context_length": "上下文長度",
268 + "context_length_desc": "歷史視窗",
269 + "mcp_disabled_warning": "MCP 已在全域被停用。請在設定中啟用以使用這些功能。",
270 + "mcp_enable_chat": "為此對話啟用 MCP",
271 + "auto_execute_tools": "自動執行工具",
272 + "beta_label": "Beta",
273 + "experimental_label": "實驗性",
274 + "add_ephemeral_mcp": "新增臨時 MCP 伺服器",
275 + "mcp_label_placeholder": "標籤",
276 + "mcp_url_placeholder": "URL (https://...)",
277 + "active_integrations": "活動整合",
278 + "enable_notifications": "啟用通知",
279 + "enable_notifications_desc": "在模型下載完成時獲得通知。",
280 + "chat_history_title": "對話歷史",
281 + "conversation_just_now": "剛剛",
282 + "conversation_minutes_ago": "{minutes}分鐘前",
283 + "conversation_hours_ago": "{hours}小時前",
284 + "conversation_yesterday": "昨天",
285 + "conversation_days_ago": "{days}天前",
286 + "conversation_date": "{month}/{day}/{year}",
287 + "options_tooltip": "選項",
288 + "no_results_found": "未找到結果",
289 + "no_conversations_yet": "尚無對話",
290 + "try_different_search": "嘗試不同的搜尋詞",
291 + "start_new_conversation": "開始新對話",
292 + "rename_conversation": "重新命名對話",
293 + "enter_new_title": "輸入新標題",
294 "pinned_section": "已釘選",
278 - "port_invalid": "必須是數字",
295 + "today_section": "今天",
296 + "yesterday_section": "昨天",
297 + "previous_7_days": "前 7 天",
298 + "previous_30_days": "前 30 天",
299 + "older_section": "更早",
300 + "onboarding_choose_language": "選擇語言",
301 + "onboarding_choose_language_desc": "選擇您偏好的語言。您隨時可以在設定中變更此項。",
302 + "onboarding_localmind": "LOCALMIND",
303 + "onboarding_connect_server": "連線您的\n伺服器",
304 + "onboarding_connect_desc": "連線到 LM Studio、Ollama 或\nOpenRouter,開啟您的私有 AI\n體驗。",
305 + "openai_compatible_api": "OpenAI 相容 API",
306 + "https_requires_ssl": "HTTPS 需要 SSL",
307 + "most_local_setups_use_http": "大多數本機配置使用 http://",
308 + "onboarding_welcome": "歡迎使用 LocalMind",
309 + "server_type_on_device": "裝置端",
310 + "server_type_lm_studio": "LM Studio",
311 + "server_type_ollama": "Ollama",
312 + "server_type_openrouter": "OpenRouter",
313 + "server_type_openrouter_sub": "統一雲端",
314 + "ready_continue": "準備好繼續",
315 + "waiting_selection": "等待選擇",
316 + "setup_connection": "設定連線",
317 + "setup_connection_desc": "設定您的 {server} 伺服器以開始對話。",
318 + "server_name": "伺服器名稱",
319 + "name_required": "需要名稱",
320 + "name_max_50": "最多 50 個字元",
321 + "host_label": "主機 / IP 地址",
322 + "host_required": "需要主機地址",
323 "port_label": "連接埠",
280 - "port_range": "輸入有效的連接埠號碼 (1-65535)",
324 "port_required": "需要連接埠",
282 - "preparing_app": "正在準備應用程式...",
283 - "preview": "預覽",
284 - "preview_failed": "預覽失敗: {error}",
285 - "previous_30_days": "前 30 天",
286 - "previous_7_days": "前 7 天",
287 - "privacy_info": "「LocalMind 絕不查看您的數據」",
288 - "proceed_anyway": "仍然繼續",
289 - "processing": "正在處理...",
290 - "prompt_hint": "你是一個得力的助手...",
291 - "prompt_max_chars": "最多 4000 個字元",
292 - "prompt_required": "需要系統提示詞",
293 - "quick_async": "我該如何使用 async/await?",
294 - "quick_debug": "幫我偵錯這個",
295 - "quick_explain": "解釋這段程式碼",
296 - "quick_write": "幫我寫一個函式",
325 + "port_invalid": "必須是數字",
326 + "port_range": "輸入有效的連接埠號碼 (1-65535)",
327 + "api_key_required": "API 金鑰 *",
328 + "api_key_optional": "API 金鑰 (選填)",
329 + "api_key_required_openrouter": "OpenRouter 需要 API 金鑰",
330 + "api_key_format": "OpenRouter API 金鑰以 sk- 開頭",
331 + "my_server_hint": "我的伺服器",
332 + "name_length_validation": "名稱必須在 50 個字元以內",
333 + "host_valid": "輸入有效的主機名稱或 IP 地址",
334 + "api_key_hint_openrouter": "sk-...",
335 + "api_key_hint_generic": "適用於已驗證的伺服器",
336 + "update_server": "更新伺服器",
337 + "save_server": "儲存伺服器",
338 + "server_updated": "伺服器已更新",
339 + "server_added": "伺服器已新增",
340 + "download_model_title": "下載模型",
341 + "download_model_desc": "選擇要下載的模型。\n它將在您的裝置上本機執行。",
342 + "on_device_android_only": "裝置端推論目前僅可在 Android 上使用。",
343 + "total_ram": "總記憶體",
344 + "available": "可用",
345 "ram_min_required": "最低要求 {fileSize} GB 記憶體 (RAM)",
298 - "ram_usage": "記憶體佔用",
299 - "ram_used": "已使用 {percent}%",
300 - "ram_warning": "記憶體警告",
346 + "download_progress": "{percent}% • {speed}",
347 + "eta_label": "預計剩餘時間: {eta}",
348 + "paused_progress": "已暫停 - {percent}%",
349 "ram_warning_body_download": "此模型需要至少 {ram} GB 記憶體,但您的裝置僅有 {totalMemory}。它可能無法正常執行,或會導致應用程式當機。",
350 "ram_warning_body_load": "您的裝置目前有 {availableRAM} 可用記憶體,但此模型推薦至少 {ram} GB。載入它可能會失敗或導致系統不穩定。",
303 - "range_0_1": "0.0-1.0",
304 - "range_0_2": "0.0-2.0",
305 - "read_aloud": "朗讀",
306 - "ready": "就緒",
307 - "ready_continue": "準備好繼續",
308 - "recent_chats": "最近對話",
309 - "recommended": "推薦",
310 - "refresh_models": "重新整理模型",
311 - "remove_persona": "刪除角色",
312 - "rename": "重新命名",
313 - "rename_conversation": "重新命名對話",
314 - "reset_defaults": "重設預設值",
315 - "reset_settings_defaults": "重設設定至預設值",
316 - "resume": "繼續",
317 - "retry": "重試",
318 - "save": "儲存",
319 - "save_changes": "儲存變更",
320 - "save_continue": "儲存並繼續",
321 - "save_regenerate": "儲存並重新生成",
322 - "save_server": "儲存伺服器",
323 - "search_hint": "搜尋對話...",
324 - "search_icons_hint": "搜尋圖示...",
325 - "search_models_hint": "搜尋模型...",
326 - "see_all": "查看全部",
327 - "select": "選擇",
351 + "choose_theme": "選擇主題",
352 + "choose_theme_desc": "個人化應用程式外觀。您隨時可以在設定中變更此項。",
353 + "theme_card_system": "系統",
354 + "theme_card_system_sub": "符合您的裝置設定",
355 + "theme_card_light": "淺色",
356 + "theme_card_light_sub": "乾淨明亮",
357 + "theme_card_dark": "深色",
358 + "theme_card_dark_sub": "保護眼睛",
359 + "theme_card_claude": "Claude",
360 + "theme_card_claude_sub": "溫馨的桃色色調主題",
361 + "stay_updated": "保持更新",
362 + "stay_updated_desc": "在您的 AI 模型下載完成或長時間執行的任務結束時獲得通知。",
363 + "notification_benefit_downloads": "模型下載進度",
364 + "notification_benefit_completions": "生成完成",
365 + "notification_benefit_background": "背景工作狀態",
366 + "allow_notifications": "允許通知",
367 + "servers_title": "伺服器",
368 + "no_servers_yet": "尚無伺服器",
369 + "no_servers_desc": "新增您的首個伺服器以開始與 AI 模型對話。",
370 + "add_server": "新增伺服器",
371 + "switched_to_server": "已切換到 {name}",
372 + "edit_server": "編輯伺服器",
373 + "add_server_title": "新增伺服器",
374 + "server_type_label": "伺服器類型",
375 + "server_icon_label": "伺服器圖示",
376 + "default_icon": "預設圖示",
377 + "server_type_lm_studio_display": "LM Studio",
378 + "server_type_openai_display": "相容 OpenAI",
379 + "server_type_ollama_display": "Ollama",
380 + "server_type_openrouter_display": "OpenRouter",
381 + "server_type_on_device_display": "裝置端",
382 + "server_address_openrouter": "openrouter.ai",
383 + "server_address_on_device": "本機推論",
384 + "server_address_format": "{host}:{port}",
385 + "default_badge": "預設",
386 + "set_as_default": "設為預設",
387 "select_icon": "選擇圖示",
388 "select_icon_desc": "為您的伺服器選擇一個圖示",
330 - "select_model": "選擇模型",
331 - "select_model_hint": "選擇一個模型以開始對話",
332 - "select_model_title": "選擇模型",
333 - "select_persona": "選擇角色",
334 - "send_message_tooltip": "發送訊息",
335 - "send_on_enter": "按 Enter 鍵發送",
336 - "server_added": "伺服器已新增",
337 - "server_address_format": "{host}:{port}",
338 - "server_address_on_device": "本機推論",
339 - "server_address_openrouter": "openrouter.ai",
340 - "server_icon_ai_brain": "AI 大腦",
341 - "server_icon_ai_brain2": "AI 大腦 02",
342 - "server_icon_ai_chat": "AI 對話",
343 - "server_icon_ai_cloud": "AI 雲端",
344 - "server_icon_ai_network": "AI 網路",
345 - "server_icon_alert": "警報圓圈",
346 - "server_icon_api": "API",
347 - "server_icon_arrow_right": "右箭頭 01",
348 - "server_icon_bot": "機器人",
349 - "server_icon_bot2": "機器人 02",
350 - "server_icon_cellular": "蜂窩網路",
351 - "server_icon_check": "勾選圓圈",
352 - "server_icon_chip": "晶片",
353 - "server_icon_chip2": "晶片 02",
389 + "search_icons_hint": "搜尋圖示...",
390 + "server_icon_stack": "伺服器堆疊",
391 + "server_icon_stack2": "伺服器堆疊 02",
392 + "server_icon_stack3": "伺服器堆疊 03",
393 "server_icon_cloud": "雲端",
355 - "server_icon_cloud_download": "雲端下載",
394 "server_icon_cloud_server": "雲端伺服器",
357 - "server_icon_cloud_upload": "雲端上傳",
358 - "server_icon_code": "程式碼",
359 - "server_icon_computer": "電腦",
360 - "server_icon_cpu": "CPU",
395 + "server_icon_mcp": "MCP 伺服器",
396 "server_icon_database": "資料庫",
397 "server_icon_database1": "資料庫 01",
398 "server_icon_database2": "資料庫 02",
364 - "server_icon_drive": "磁碟機",
365 - "server_icon_file1": "檔案 01",
366 - "server_icon_folder1": "資料夾 01",
367 - "server_icon_folder2": "資料夾 02",
368 - "server_icon_globe": "地球儀",
369 - "server_icon_hard_drive": "硬碟",
370 - "server_icon_home1": "首頁 01",
371 - "server_icon_home2": "首頁 02",
372 - "server_icon_info": "資訊圓圈",
373 - "server_icon_key": "鑰匙 01",
374 - "server_icon_label": "伺服器圖示",
399 + "server_icon_cpu": "CPU",
400 + "server_icon_chip": "晶片",
401 + "server_icon_chip2": "晶片 02",
402 + "server_icon_computer": "電腦",
403 "server_icon_laptop": "筆記型電腦",
376 - "server_icon_link": "連結 01",
377 - "server_icon_lock": "鎖",
378 - "server_icon_mcp": "MCP 伺服器",
404 + "server_icon_terminal": "終端機",
405 + "server_icon_code": "程式碼",
406 + "server_icon_ai_brain": "AI 大腦",
407 + "server_icon_ai_brain2": "AI 大腦 02",
408 + "server_icon_ai_cloud": "AI 雲端",
409 + "server_icon_ai_network": "AI 網路",
410 + "server_icon_ai_chat": "AI 對話",
411 + "server_icon_cellular": "蜂窩網路",
412 "server_icon_plug1": "插頭 01",
413 "server_icon_plug2": "插頭 02",
381 - "server_icon_refresh": "重新整理",
414 + "server_icon_bot": "機器人",
415 + "server_icon_bot2": "機器人 02",
416 "server_icon_robotic": "機器人聲音",
417 "server_icon_rocket": "火箭",
418 + "server_icon_star": "Star",
419 "server_icon_settings1": "設定 01",
420 "server_icon_settings2": "設定 02",
386 - "server_icon_stack": "伺服器堆疊",
387 - "server_icon_stack2": "伺服器堆疊 02",
388 - "server_icon_stack3": "伺服器堆疊 03",
389 - "server_icon_star": "Star",
390 - "server_icon_terminal": "終端機",
391 - "server_icon_zap": "Zap",
392 - "server_name": "伺服器名稱",
393 - "server_type_label": "伺服器類型",
394 - "server_type_lm_studio": "LM Studio",
395 - "server_type_lm_studio_display": "LM Studio",
396 - "server_type_lm_studio_sub": "本機 API",
397 - "server_type_ollama": "Ollama",
398 - "server_type_ollama_display": "Ollama",
399 - "server_type_ollama_sub": "CLI 引擎",
400 - "server_type_on_device": "裝置端",
401 - "server_type_on_device_display": "裝置端",
402 - "server_type_on_device_sub": "無需伺服器",
403 - "server_type_openai_display": "相容 OpenAI",
404 - "server_type_openrouter": "OpenRouter",
405 - "server_type_openrouter_display": "OpenRouter",
406 - "server_type_openrouter_sub": "統一雲端",
407 - "server_updated": "伺服器已更新",
408 - "servers_title": "伺服器",
409 - "set_as_default": "設為預設",
410 - "set_persona": "設定角色",
411 - "settings_about": "關於",
412 - "settings_appearance": "外觀",
413 - "settings_behavior": "行為",
414 - "settings_data_management": "資料管理",
415 - "settings_default_persona": "預設角色",
416 - "settings_default_server": "預設伺服器",
417 - "settings_language": "語言",
418 - "settings_on_device": "裝置端推論",
419 - "settings_privacy": "隱私",
420 - "settings_title": "設定",
421 - "settings_tts": "語音合成 (TTS)",
422 - "setup_connection": "設定連線",
423 - "setup_connection_desc": "設定您的 {server} 伺服器以開始對話。",
424 - "share": "分享",
425 - "show_data_indicator": "顯示數據指示器",
426 - "show_system_messages": "顯示系統訊息",
427 - "skip": "跳過",
428 - "something_went_wrong": "出了點問題",
429 - "star_on_github": "在 GitHub 上點亮 Star",
430 - "start_conversation": "開始對話",
431 - "start_new_chat": "開始新對話",
432 - "start_new_conversation": "開始新對話",
433 - "startup_failed": "啟動失敗",
434 - "stay_updated": "保持更新",
435 - "stay_updated_desc": "在您的 AI 模型下載完成或長時間執行的任務結束時獲得通知。",
436 - "stop": "停止",
437 - "stop_generation_tooltip": "停止生成",
438 - "stop_reading": "停止朗讀",
439 - "streaming_responses": "串流響應",
440 - "switch_server": "切換伺服器",
441 - "switch_server_subtitle": "選擇要連線的伺服器",
442 - "switched_to_server": "已切換到 {name}",
421 + "server_icon_home1": "首頁 01",
422 + "server_icon_home2": "首頁 02",
423 + "server_icon_folder1": "資料夾 01",
424 + "server_icon_folder2": "資料夾 02",
425 + "server_icon_file1": "檔案 01",
426 + "server_icon_lock": "鎖",
427 + "server_icon_key": "鑰匙 01",
428 + "server_icon_link": "連結 01",
429 + "server_icon_globe": "地球儀",
430 + "server_icon_api": "API",
431 + "server_icon_arrow_right": "右箭頭 01",
432 + "server_icon_check": "勾選圓圈",
433 + "server_icon_alert": "警報圓圈",
434 + "server_icon_info": "資訊圓圈",
435 + "server_icon_zap": "Zap",
436 + "server_icon_cloud_upload": "雲端上傳",
437 + "server_icon_cloud_download": "雲端下載",
438 + "server_icon_refresh": "重新整理",
439 + "server_icon_hard_drive": "硬碟",
440 + "server_icon_drive": "磁碟機",
441 + "personas_title": "角色",
442 + "persona_category_general": "通用",
443 + "persona_category_coding": "程式設計",
444 + "persona_category_education": "教育",
445 + "persona_category_creative": "創意",
446 + "persona_builtin_section": "內建",
447 + "persona_my_section": "我的角色",
448 + "clone_edit": "複製並編輯",
449 + "builtin_badge": "內建",
450 + "no_personas_found": "未找到任何角色",
451 + "no_personas_desc": "建立您的第一個角色以定制 AI 行為。",
452 + "edit_persona": "編輯角色",
453 + "create_persona": "建立角色",
454 + "create_persona_button": "建立",
455 + "emoji_label": "表情符號",
456 + "name_label": "名稱",
457 + "my_persona_hint": "我的角色",
458 + "category_label": "分類",
459 + "description_optional": "描述 (選填)",
460 + "description_hint": "此角色要做的是...",
461 "system_prompt": "系統提示詞",
444 - "technical_details": "技術細節",
445 - "temp_hint": "0.7",
446 - "temperature": "溫度",
447 - "temperature_desc": "控制隨機性:較高 = 創意,較低 = 專注",
462 + "character_count_max": "{currentLen}/4000",
463 + "no_prompt_placeholder": "尚無提示詞...",
464 + "prompt_hint": "你是一個得力的助手...",
465 + "prompt_required": "需要系統提示詞",
466 + "prompt_max_chars": "最多 4000 個字元",
467 + "advanced_settings": "進階設定",
468 "temperature_label": "溫度 (0.0-2.0)",
449 - "test_connection": "測試連線",
450 - "test_notification_body": "這是用於展示模型下載進度的測試通知。",
451 - "test_notification_title": "測試通知",
452 - "testing": "正在測試...",
453 - "theme": "主題",
454 - "theme_card_claude": "Claude",
455 - "theme_card_claude_sub": "溫馨的桃色色調主題",
456 - "theme_card_dark": "深色",
457 - "theme_card_dark_sub": "保護眼睛",
458 - "theme_card_light": "淺色",
459 - "theme_card_light_sub": "乾淨明亮",
460 - "theme_card_system": "系統",
461 - "theme_card_system_sub": "符合您的裝置設定",
462 - "theme_claude": "Claude",
463 - "theme_dark": "深色",
464 - "theme_light": "淺色",
465 - "theme_system": "系統",
466 - "thinking": "正在思考",
467 - "today_section": "今天",
468 - "tool_label": "工具: {toolCallId}",
469 - "tool_unknown": "工具: 未知",
470 - "top_p": "Top P",
471 - "top_p_desc": "核取樣門檻",
472 - "top_p_hint": "0.9",
469 "top_p_label": "Top P (0.0-1.0)",
474 - "total_capacity": "總容量",
475 - "total_ram": "總記憶體",
476 - "try_different_search": "嘗試不同的搜尋詞",
477 - "tts_engine": "TTS 引擎",
478 - "tts_engine_kitten": "Kitten TTS",
479 - "tts_engine_system": "系統 TTS",
480 - "tts_kitten_desc": "擁有 8 種表現力聲音的閃電般高速類神經網路 TTS。\n需要下載 {size}。",
470 + "temp_hint": "0.7",
471 + "top_p_hint": "0.9",
472 + "range_0_2": "0.0-2.0",
473 + "range_0_1": "0.0-1.0",
474 + "persona_updated": "角色已更新",
475 + "persona_created": "角色已建立",
476 "tts_models_title": "語音合成模型",
482 - "tts_piper_desc": "快速離線 Piper 語音,擁有 2 種極極具表現力的聲音。\n每個聲音需要下載 {size}。",
483 - "tts_speed": "TTS 速度",
484 - "tts_speed_desc": "調整播放速率。",
477 + "always_available": "始終可用",
478 "tts_system_desc": "使用您裝置內建的語音合成引擎。\n無需額外下載。語音選擇依賴您的裝置系統設定。",
486 - "unknown_error": "未知錯誤",
487 - "unload": "卸載",
488 - "unload_from_server": "從伺服器卸載",
489 - "unpin": "取消釘選",
490 - "update_server": "更新伺服器",
491 - "voice": "語音",
492 - "voice_bella": "Bella",
493 - "voice_bruno": "Bruno",
494 - "voice_female": "女聲",
495 - "voice_hugo": "Hugo",
496 - "voice_jasper": "Jasper",
497 - "voice_kiki": "Kiki",
498 - "voice_leo": "Leo",
499 - "voice_lessac": "Lessac (美音)",
500 - "voice_luna": "Luna",
501 - "voice_male": "男聲",
502 - "voice_other": "其他",
503 - "voice_rosie": "Rosie",
504 - "voice_ryan": "Ryan (美音)",
505 - "waiting_selection": "等待選擇",
506 - "yesterday_section": "昨天",
507 - "tts_supports_background": "支援背景播放(原生音訊格式)",
508 - "tts_other_services_background_note": "注意:其他 TTS 服務支援背景播放(原生音訊格式)。",
509 - "start_listening_tooltip": "開始聆聽",
510 - "stop_listening_tooltip": "停止聆聽",
479 + "downloading_status": "正在下載...",
480 + "tts_kitten_desc": "擁有 8 種表現力聲音的閃電般高速類神經網路 TTS。\n需要下載 {size}。",
481 + "tts_piper_desc": "快速離線 Piper 語音,擁有 2 種極極具表現力的聲音。\n每個聲音需要下載 {size}。",
482 + "engine_spec": "{sizeMb} MB · {ramMb} MB 記憶體 · {voiceCount} 種語音",
483 + "on_device_models_title": "裝置端模型",
484 "settings_huggingface_token": "Hugging Face 權杖(選用)",
485 "settings_huggingface_token_desc": "僅限受限制模型需要(例如 Gemma)。可在 huggingface.co/settings/tokens 取得權杖。",
486 "settings_huggingface_token_set": "權杖已儲存",
@@ -521,6 +494,91 @@
494 "server_type_ollama_desc": "本機 AI 引擎。不需要 API 金鑰。",
495 "server_type_on_device_desc": "在您的手機上執行。某些模型需要 Hugging Face 權杖。",
496 "server_type_lm_studio_desc": "本機 API 伺服器。不需要 API 金鑰。",
497 + "available_models": "可用模型",
498 + "device_memory": "裝置記憶體",
499 + "ram_usage": "記憶體佔用",
500 + "memory_healthy": "健康",
501 + "memory_critical": "嚴重警告",
502 + "memory_low": "偏低",
503 + "ram_used": "已使用 {percent}%",
504 + "available_ram": "可用記憶體",
505 + "total_capacity": "總容量",
506 + "loaded_status": "已載入",
507 + "inference_backend": "推論後端",
508 + "backend_ios_notice": "iOS 上僅支援 CPU 後端。",
509 + "backend_cpu_desc": "適用於所有裝置。相容性最好。",
510 + "backend_gpu_desc": "OpenCL 加速。在支援的裝置上執行更快。",
511 + "backend_npu_desc": "廠商 NPU (高通/聯發科)。最快的推論速度。",
512 + "select_model_title": "選擇模型",
513 + "refresh_models": "重新整理模型",
514 + "search_models_hint": "搜尋模型...",
515 + "no_server_connected": "未連線伺服器",
516 + "add_server_first": "請先新增伺服器以查看可用模型。",
517 + "failed_load_models": "載入模型失敗",
518 + "no_models_available": "無可用模型",
519 + "no_models_match": "沒有符合 \"{searchQuery}\" 的模型",
520 + "model_load_failed": "載入模型失敗: {error}",
521 + "model_unloaded_ollama": "在 keep-alive 時間過去後,{name} 將被自動卸載",
522 + "model_unloaded_success": "{name} 已成功卸載",
523 + "model_unload_failed": "卸載模型失敗: {error}",
524 + "unload_from_server": "從伺服器卸載",
525 + "context_chip": "{ctx} 上下文 (ctx)",
526 + "unload_all_models": "卸載所有模型",
527 + "loaded_models_count": "已載入 {count} 個模型",
528 + "all_models_unloaded": "所有模型已卸載",
529 + "branch_chat": "分支聊天",
530 + "branch_chat_desc": "從此消息開始新建聊天",
531 + "edit_assistant_message_desc": "編輯助手消息的內容",
532 + "switch_to_model": "切換到模型 {model}",
533 + "download_notification_title": "正在下載 {modelName}...",
534 + "download_complete_notification": "下載完成!",
535 + "download_complete_body": "{modelName} 已成功下載。",
536 + "download_failed_notification": "下載失敗: {error}",
537 + "download_failed_body": "下載 {modelName} 失敗。",
538 + "engine_name_system": "系統 TTS",
539 + "engine_tagline_system": "內建裝置引擎",
540 + "engine_name_kitten": "Kitten TTS",
541 + "engine_tagline_kitten": "高速類神經網路 TTS",
542 + "engine_name_sherpa": "Sherpa ONNX VITS",
543 + "engine_tagline_sherpa": "離線 Piper 語音",
544 + "voice_jasper": "Jasper",
545 + "voice_bella": "Bella",
546 + "voice_bruno": "Bruno",
547 + "voice_luna": "Luna",
548 + "voice_hugo": "Hugo",
549 + "voice_rosie": "Rosie",
550 + "voice_leo": "Leo",
551 + "voice_kiki": "Kiki",
552 + "voice_lessac": "Lessac (美音)",
553 + "voice_ryan": "Ryan (美音)",
554 + "model_qwen_3": "Qwen 3 0.6B",
555 + "model_qwen_3_desc": "最小的通用對話模型。回應速度快,記憶體消耗低。",
556 + "model_license_apache": "Apache-2.0",
557 + "model_qwen_25": "Qwen 2.5 1.5B Instruct",
558 + "model_qwen_25_desc": "平衡的品質和大小。適合一般對話。",
559 + "model_deepseek": "DeepSeek R1 Distill Qwen 1.5B",
560 + "model_deepseek_desc": "推論與思考鏈模型。最適合邏輯任務。",
561 + "model_license_mit": "MIT",
562 + "model_gemma": "Gemma 4 E2B Instruct",
563 + "model_gemma_desc": "Google 旗艦模型。最高品質,需要更多記憶體。",
564 + "export_header": "*匯出自 LocalMind — {date}*",
565 + "export_role_user": "## 👤 使用者",
566 + "export_role_assistant": "## 🤖 助理",
567 + "export_role_system": "## ⚙️ 系統",
568 + "export_role_tool": "## 🔧 工具",
569 + "export_text_user": "[使用者]",
570 + "export_text_assistant": "[助理]",
571 + "export_text_system": "[系統]",
572 + "export_text_tool": "[工具]",
573 + "export_label_user": "使用者",
574 + "export_label_assistant": "助理",
575 + "export_label_system": "系統",
576 + "export_label_tool": "工具",
577 + "select_model_hint": "選擇一個模型以開始對話",
578 + "test_notification_title": "測試通知",
579 + "test_notification_body": "這是用於展示模型下載進度的測試通知。",
580 + "tts_supports_background": "支援背景播放(原生音訊格式)",
581 + "tts_other_services_background_note": "注意:其他 TTS 服務支援背景播放(原生音訊格式)。",
582 "gguf_imported_models_title": "Imported GGUF models",
583 "gguf_imported_models_empty_subtitle": "Import a GGUF from your device or add one from Hugging Face. Imported models run locally with llama.cpp.",
584 "gguf_imported_models_ready": "imported models ready for local inference.",
@@ -603,65 +661,6 @@
661 "tool_status_running": "Running",
662 "tool_status_done": "Done",
663 "tool_status_failed": "Failed",
606 - "delete_builtin_persona_body": "這是一個內置角色。您稍後可以在「設定」中將其恢復。",
607 - "restore_builtin_personas": "恢復預設角色",
608 - "restore_builtin_personas_desc": "重新添加您已刪除的任何內置角色",
609 - "restore_builtin_personas_success": "已恢復預設角色",
610 - "clear_personas": "清除角色",
611 - "enable_image_compression": "發送前壓縮圖片",
612 - "enable_image_compression_desc": "調整並壓縮附加圖片的大小,以使上傳大小保持在伺服器限制內",
613 - "image_compression_level": "壓縮強度",
614 - "image_compression_level_desc": "較高的壓縮強度會生成質量較低但上傳更小的圖片",
615 - "image_compression_level_low": "低",
616 - "image_compression_level_medium": "中",
617 - "image_compression_level_high": "高",
618 - "sort_models_tooltip": "排序模型",
619 - "sort_by_favorites": "收藏優先",
620 - "sort_by_name": "名稱 (A-Z)",
621 - "sort_by_size_smallest": "大小 (從小到大)",
622 - "sort_by_size_largest": "大小 (從大到小)",
623 - "sort_by_context_length": "上下文長度",
624 - "bulk_ai_rename_progress": "正在重命名 {done}/{total}...",
625 - "selected_count": "已選擇 {count} 個",
626 - "ai_rename_tooltip": "使用 AI 重命名所選內容",
627 - "new_chat_in_folder_tooltip": "在此資料夾中新建聊天",
628 - "total_tokens_count": "{count} 個 Token",
629 - "smart_replies_use_persona": "在智能回覆中應用角色",
630 - "smart_replies_use_persona_desc": "建議的回覆將符合當前啟用角色的語氣,而不是通用的助手語氣",
631 - "keep_persona_on_new_chat": "新聊天保留角色",
632 - "keep_persona_on_new_chat_desc": "開始新聊天時不要清除選定的角色",
633 - "role_swap_button_enabled": "顯示角色切換按鈕",
634 - "role_swap_button_enabled_desc": "在聊天輸入框中顯示一個按鈕,允許您以助手而非用戶的身份發送消息,而不生成任何回覆",
635 - "send_as_user_tooltip": "以用戶身份發送",
636 - "send_as_assistant_tooltip": "以助手身份發送 (無回覆)",
637 - "insert_without_generating_tooltip": "僅插入不生成回覆",
638 - "token_usage_title": "Token 使用情況",
639 - "total_tokens_label": "已用 Token",
640 - "usage_percent_label": "已用上下文",
641 - "export_choice_title": "匯出",
642 - "export_choice_body": "您希望如何匯出此內容?",
643 - "copy_to_clipboard": "複製到剪貼簿",
644 - "bulk_export_conversations_success": "已成功匯出 {count} 個對話",
645 - "bulk_ai_rename_confirm_title": "使用 AI 重命名?",
646 - "bulk_ai_rename_confirm_body": "這將請求 AI 為每個選定的 {count} 個對話生成新標題,替換其當前的標題。此操作可能需要一些時間,且無法撤銷。",
647 - "sort_by_modified_date": "最近修改",
648 - "sort_by_created_date": "創建日期",
649 - "sort_title": "排序",
650 - "ai_user_response_enabled": "AI 用戶消息 (長按發送)",
651 - "ai_user_response_enabled_desc": "長按發送按鈕 3 秒鐘以讓 AI 撰寫並發送您的下一條消息",
652 - "ai_user_response_tooltip": "使用 AI 生成用戶消息",
653 - "show_system_messages_desc": "當沒有選定角色時,每次請求都發送預設的助手系統提示詞",
654 - "show_system_messages_in_chat": "在聊天中顯示系統消息",
655 - "show_system_messages_in_chat_desc": "將系統消息 (例如來自導入的備份) 作為對話中的可見氣泡顯示",
656 - "manage_personas": "管理角色",
657 - "personas_combine_hint": "選定的角色將被合併",
658 - "unload_all_models": "卸載所有模型",
659 - "loaded_models_count": "已載入 {count} 個模型",
660 - "all_models_unloaded": "所有模型已卸載",
661 - "branch_chat": "分支聊天",
662 - "branch_chat_desc": "從此消息開始新建聊天",
663 - "edit_assistant_message_desc": "編輯助手消息的內容",
664 - "switch_to_model": "切換到模型 {model}",
664 "model_favorite_toggle": "切換收藏",
665 "model_note_label": "備註",
666 "model_note_hint": "為此模型添加個人備註...",
@@ -758,8 +757,15 @@
757 "stream_generation_time": "生成時間",
758 "attach_image": "附加圖片",
759 "attach_text_document": "附加文字檔案",
760 + "attach_shortcut_images": "相片",
761 + "attach_shortcut_documents": "檔案",
762 + "attach_shortcut_saved": "已儲存",
763 "add_attachment": "添加附件",
764 + "add_to_chat": "新增至聊天",
765 + "choose_what_to_attach": "您想新增什麼?",
766 + "choose_attachment_subtitle": "選擇要附加到訊息的來源",
767 "photo_permission_denied": "相簿權限被拒絕",
768 + "select_model_prompt": "選擇模型",
769 "characters_label": "字元數",
770 "exit_temporary_chat_title": "退出臨時聊天?",
771 "exit_temporary_chat_body": "這將永久刪除當前的對話。是否繼續?",
@@ -860,5 +866,9 @@
866 "delete_folder": "刪除資料夾",
867 "delete_folder_title": "刪除資料夾?",
868 "delete_folder_body": "確定要刪除「{name}」嗎?其中的對話或已儲存的訊息將移回「未分類」。此操作無法復原。",
863 - "folder_name_required": "請輸入資料夾名稱"
869 + "folder_name_required": "請輸入資料夾名稱",
870 + "model_required_toast": "您需要先選擇一個模型",
871 + "server_type_lm_studio_sub": "本機 API",
872 + "server_type_ollama_sub": "CLI 引擎",
873 + "server_type_on_device_sub": "無需伺服器"
874 }
lib/l10n/untranslated.txt new
+1
@@ -0,0 +1 @@
1 +{}
\ No newline at end of file
pubspec.yaml
+1 -1
@@ -16,7 +16,7 @@ publish_to: "none" # Remove this line if you wish to publish to pub.dev
16 # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
17 # In Windows, build-name is used as the major, minor, and patch parts
18 # of the product and file versions while build-number is used as the build suffix.
19 -version: 1.5.2+57
19 +version: 1.5.5+60
20
21 environment:
22 sdk: ">=3.12.0 <4.0.0"