8 files changed
+4016
-180
assets/images/flag_tr.png
Binary files /dev/null and b/assets/images/flag_tr.png differ
lib/features/onboarding/screens/onboarding_language_screen.dart
+198
-180
@@ -132,6 +132,16 @@ const _languages = [
132
shortText: 'Ru',
133
gradient: [Color(0xFF3B82F6), Color(0xFF1D4ED8)],
134
),
135
+ _LanguageOption(
136
+ code: 'tr',
137
+ nativeName: 'Türkçe',
138
+ englishName: 'Turkish',
139
+ flag: '🇹🇷',
140
+ flagAsset: 'assets/images/flag_tr.png',
141
+ countryCode: 'TR',
142
+ shortText: 'Tr',
143
+ gradient: [Color(0xFFE11D48), Color(0xFFBE123C)],
144
+ ),
145
];
146
147
class OnboardingLanguageScreen extends ConsumerStatefulWidget {
@@ -200,209 +210,217 @@ class _OnboardingLanguageScreenState
210
crossAxisAlignment: CrossAxisAlignment.stretch,
211
children: [
212
Expanded(
203
- child: SingleChildScrollView(
204
- padding: const EdgeInsets.symmetric(horizontal: 24.0),
205
- child: Column(
206
- crossAxisAlignment: CrossAxisAlignment.stretch,
207
- children: [
208
- const SizedBox(height: 24),
209
- Actor(
210
- acts: [.fadeIn(), .slideY(from: 0.08)],
211
- child: Column(
212
- crossAxisAlignment: CrossAxisAlignment.stretch,
213
- children: [
214
- Text(
215
- l10n.onboarding_welcome,
216
- textAlign: TextAlign.center,
217
- style: theme.textTheme.headlineLarge?.copyWith(
218
- fontWeight: FontWeight.w800,
219
- height: 1.1,
213
+ child: Scrollbar(
214
+ thickness: 2,
215
+ radius: const Radius.circular(4),
216
+ child: SingleChildScrollView(
217
+ padding: const EdgeInsets.symmetric(horizontal: 24.0),
218
+ child: Column(
219
+ crossAxisAlignment: CrossAxisAlignment.stretch,
220
+ children: [
221
+ const SizedBox(height: 24),
222
+ Actor(
223
+ acts: [.fadeIn(), .slideY(from: 0.08)],
224
+ child: Column(
225
+ crossAxisAlignment: CrossAxisAlignment.stretch,
226
+ children: [
227
+ Text(
228
+ l10n.onboarding_welcome,
229
+ textAlign: TextAlign.center,
230
+ style: theme.textTheme.headlineLarge?.copyWith(
231
+ fontWeight: FontWeight.w800,
232
+ height: 1.1,
233
+ ),
234
),
221
- ),
222
- const SizedBox(height: 12),
223
- Text(
224
- l10n.onboarding_choose_language,
225
- textAlign: TextAlign.center,
226
- style: theme.textTheme.titleMedium?.copyWith(
227
- fontWeight: FontWeight.w600,
228
- color: theme.colorScheme.primary,
235
+ const SizedBox(height: 12),
236
+ Text(
237
+ l10n.onboarding_choose_language,
238
+ textAlign: TextAlign.center,
239
+ style: theme.textTheme.titleMedium?.copyWith(
240
+ fontWeight: FontWeight.w600,
241
+ color: theme.colorScheme.primary,
242
+ ),
243
),
230
- ),
231
- const SizedBox(height: 8),
232
- Text(
233
- l10n.onboarding_choose_language_desc,
234
- textAlign: TextAlign.center,
235
- style: theme.textTheme.bodySmall?.copyWith(
236
- color: theme.colorScheme.onSurface.withValues(
237
- alpha: 0.7,
244
+ const SizedBox(height: 8),
245
+ Text(
246
+ l10n.onboarding_choose_language_desc,
247
+ textAlign: TextAlign.center,
248
+ style: theme.textTheme.bodySmall?.copyWith(
249
+ color: theme.colorScheme.onSurface.withValues(
250
+ alpha: 0.7,
251
+ ),
252
+ height: 1.5,
253
),
239
- height: 1.5,
254
),
241
- ),
242
- ],
255
+ ],
256
+ ),
257
),
244
- ),
245
- const SizedBox(height: 32),
246
- Actor(
247
- delay: 60.ms,
248
- acts: [.fadeIn(), .slideY(from: 0.08)],
249
- child: ListView.separated(
250
- shrinkWrap: true,
251
- physics: const NeverScrollableScrollPhysics(),
252
- itemCount: _languages.length,
253
- separatorBuilder: (context, index) =>
254
- const SizedBox(height: 12),
255
- itemBuilder: (context, index) {
256
- final lang = _languages[index];
257
- final isSelected = _selectedCode == lang.code;
258
+ const SizedBox(height: 32),
259
+ Actor(
260
+ delay: 60.ms,
261
+ acts: [.fadeIn(), .slideY(from: 0.08)],
262
+ child: ListView.separated(
263
+ shrinkWrap: true,
264
+ physics: const NeverScrollableScrollPhysics(),
265
+ itemCount: _languages.length,
266
+ separatorBuilder: (context, index) =>
267
+ const SizedBox(height: 12),
268
+ itemBuilder: (context, index) {
269
+ final lang = _languages[index];
270
+ final isSelected = _selectedCode == lang.code;
271
259
- return GestureDetector(
260
- onTap: () {
261
- setState(() {
262
- _selectedCode = lang.code;
263
- });
264
- // Dynamically apply settings localization update
265
- ref
266
- .read(settingsProvider.notifier)
267
- .setLocaleCode(lang.code);
268
- },
269
- child: AnimatedContainer(
270
- duration: const Duration(milliseconds: 200),
271
- padding: const EdgeInsets.symmetric(
272
- horizontal: 16,
273
- vertical: 12,
274
- ),
275
- decoration: BoxDecoration(
276
- color: theme.colorScheme.surface,
277
- borderRadius: BorderRadius.circular(16),
278
- border: Border.all(
279
- color: isSelected
280
- ? theme.colorScheme.primary
281
- : theme.colorScheme.outline.withValues(
282
- alpha: 0.15,
283
- ),
284
- width: isSelected ? 2 : 1,
272
+ return GestureDetector(
273
+ onTap: () {
274
+ setState(() {
275
+ _selectedCode = lang.code;
276
+ });
277
+ // Dynamically apply settings localization update
278
+ ref
279
+ .read(settingsProvider.notifier)
280
+ .setLocaleCode(lang.code);
281
+ },
282
+ child: AnimatedContainer(
283
+ duration: const Duration(milliseconds: 200),
284
+ padding: const EdgeInsets.symmetric(
285
+ horizontal: 16,
286
+ vertical: 12,
287
+ ),
288
+ decoration: BoxDecoration(
289
+ color: theme.colorScheme.surface,
290
+ borderRadius: BorderRadius.circular(16),
291
+ border: Border.all(
292
+ color: isSelected
293
+ ? theme.colorScheme.primary
294
+ : theme.colorScheme.outline.withValues(
295
+ alpha: 0.15,
296
+ ),
297
+ width: isSelected ? 2 : 1,
298
+ ),
299
+ boxShadow: isSelected
300
+ ? [
301
+ BoxShadow(
302
+ color: theme.colorScheme.primary
303
+ .withValues(alpha: 0.1),
304
+ blurRadius: 8,
305
+ offset: const Offset(0, 2),
306
+ ),
307
+ ]
308
+ : null,
309
),
286
- boxShadow: isSelected
287
- ? [
288
- BoxShadow(
289
- color: theme.colorScheme.primary
290
- .withValues(alpha: 0.1),
291
- blurRadius: 8,
292
- offset: const Offset(0, 2),
310
+ child: Row(
311
+ children: [
312
+ Container(
313
+ width: 48,
314
+ height: 32,
315
+ decoration: BoxDecoration(
316
+ color: Colors.white,
317
+ borderRadius: BorderRadius.circular(6),
318
+ border: Border.all(
319
+ color: theme.colorScheme.outline
320
+ .withValues(alpha: 0.15),
321
+ width: 1,
322
),
294
- ]
295
- : null,
296
- ),
297
- child: Row(
298
- children: [
299
- Container(
300
- width: 48,
301
- height: 32,
302
- decoration: BoxDecoration(
303
- color: Colors.white,
304
- borderRadius: BorderRadius.circular(6),
305
- border: Border.all(
306
- color: theme.colorScheme.outline
307
- .withValues(alpha: 0.15),
308
- width: 1,
309
- ),
310
- boxShadow: [
311
- BoxShadow(
312
- color: Colors.black.withValues(
313
- alpha: 0.05,
323
+ boxShadow: [
324
+ BoxShadow(
325
+ color: Colors.black.withValues(
326
+ alpha: 0.05,
327
+ ),
328
+ blurRadius: 4,
329
+ offset: const Offset(0, 2),
330
),
315
- blurRadius: 4,
316
- offset: const Offset(0, 2),
331
+ ],
332
+ ),
333
+ alignment: Alignment.center,
334
+ child: ClipRRect(
335
+ borderRadius: BorderRadius.circular(5),
336
+ child: Image.asset(
337
+ lang.flagAsset,
338
+ width: 48,
339
+ height: 32,
340
+ fit: BoxFit.cover,
341
+ errorBuilder:
342
+ (context, error, stackTrace) {
343
+ return Text(
344
+ lang.flag,
345
+ style: const TextStyle(
346
+ fontSize: 18,
347
+ ),
348
+ );
349
+ },
350
),
318
- ],
351
+ ),
352
),
320
- alignment: Alignment.center,
321
- child: ClipRRect(
322
- borderRadius: BorderRadius.circular(5),
323
- child: Image.asset(
324
- lang.flagAsset,
325
- width: 48,
326
- height: 32,
327
- fit: BoxFit.cover,
328
- errorBuilder:
329
- (context, error, stackTrace) {
330
- return Text(
331
- lang.flag,
332
- style: const TextStyle(
333
- fontSize: 18,
353
+ const SizedBox(width: 16),
354
+ Expanded(
355
+ child: Column(
356
+ crossAxisAlignment:
357
+ CrossAxisAlignment.start,
358
+ mainAxisSize: MainAxisSize.min,
359
+ children: [
360
+ Text(
361
+ lang.nativeName,
362
+ style: theme.textTheme.titleMedium
363
+ ?.copyWith(
364
+ fontWeight: FontWeight.bold,
365
+ ),
366
+ ),
367
+ const SizedBox(height: 2),
368
+ Text(
369
+ '${lang.englishName} • ${lang.shortText.toUpperCase()}',
370
+ style: theme.textTheme.labelSmall
371
+ ?.copyWith(
372
+ color: theme
373
+ .colorScheme
374
+ .onSurface
375
+ .withValues(alpha: 0.5),
376
),
335
- );
336
- },
377
+ ),
378
+ ],
379
),
380
),
339
- ),
340
- const SizedBox(width: 16),
341
- Expanded(
342
- child: Column(
343
- crossAxisAlignment:
344
- CrossAxisAlignment.start,
345
- mainAxisSize: MainAxisSize.min,
346
- children: [
347
- Text(
348
- lang.nativeName,
349
- style: theme.textTheme.titleMedium
350
- ?.copyWith(
351
- fontWeight: FontWeight.bold,
352
- ),
353
- ),
354
- const SizedBox(height: 2),
355
- Text(
356
- '${lang.englishName} • ${lang.shortText.toUpperCase()}',
357
- style: theme.textTheme.labelSmall
358
- ?.copyWith(
359
- color: theme
360
- .colorScheme
361
- .onSurface
362
- .withValues(alpha: 0.5),
363
- ),
364
- ),
365
- ],
366
- ),
367
- ),
368
- const SizedBox(width: 8),
369
- AnimatedContainer(
370
- duration: const Duration(milliseconds: 200),
371
- width: 22,
372
- height: 22,
373
- decoration: BoxDecoration(
374
- shape: BoxShape.circle,
375
- color: isSelected
376
- ? theme.colorScheme.primary
377
- : Colors.transparent,
378
- border: Border.all(
381
+ const SizedBox(width: 8),
382
+ AnimatedContainer(
383
+ duration: const Duration(
384
+ milliseconds: 200,
385
+ ),
386
+ width: 22,
387
+ height: 22,
388
+ decoration: BoxDecoration(
389
+ shape: BoxShape.circle,
390
color: isSelected
391
? theme.colorScheme.primary
381
- : theme.colorScheme.outline
382
- .withValues(alpha: 0.3),
383
- width: 2,
392
+ : Colors.transparent,
393
+ border: Border.all(
394
+ color: isSelected
395
+ ? theme.colorScheme.primary
396
+ : theme.colorScheme.outline
397
+ .withValues(alpha: 0.3),
398
+ width: 2,
399
+ ),
400
),
401
+ child: isSelected
402
+ ? const HugeIcon(
403
+ icon:
404
+ HugeIcons.strokeRoundedTick01,
405
+ color: Colors.white,
406
+ size: 14,
407
+ )
408
+ : null,
409
),
386
- child: isSelected
387
- ? const HugeIcon(
388
- icon: HugeIcons.strokeRoundedTick01,
389
- color: Colors.white,
390
- size: 14,
391
- )
392
- : null,
393
- ),
394
- ],
410
+ ],
411
+ ),
412
),
396
- ),
397
- );
398
- },
413
+ );
414
+ },
415
+ ),
416
),
400
- ),
401
- const SizedBox(height: 32),
402
- ],
417
+ const SizedBox(height: 32),
418
+ ],
419
+ ),
420
),
421
),
422
),
423
+ SizedBox(height: 8),
424
Actor(
425
delay: 120.ms,
426
acts: [.fadeIn(), .slideY(from: 0.08)],
lib/features/settings/views/settings_screen.dart
+1
@@ -1038,6 +1038,7 @@ class _LanguageSetting extends StatelessWidget {
1038
('bn', 'বাংলা', 'assets/images/flag_bd.png', '🇧🇩'),
1039
('hi', 'हिन्दी', 'assets/images/flag_in.png', '🇮🇳'),
1040
('ru', 'Русский', 'assets/images/flag_ru.png', '🇷🇺'),
1041
+ ('tr', 'Türkçe', 'assets/images/flag_tr.png', '🇹🇷'),
1042
];
1043
1044
final String? current;
lib/l10n/app_localizations.dart
+5
@@ -13,6 +13,7 @@ import 'app_localizations_hi.dart';
13
import 'app_localizations_it.dart';
14
import 'app_localizations_ja.dart';
15
import 'app_localizations_ru.dart';
16
+import 'app_localizations_tr.dart';
17
import 'app_localizations_zh.dart';
18
19
// ignore_for_file: type=lint
@@ -109,6 +110,7 @@ abstract class AppLocalizations {
110
Locale('it'),
111
Locale('ja'),
112
Locale('ru'),
113
+ Locale('tr'),
114
Locale('zh'),
115
Locale('zh', 'TW'),
116
];
@@ -5407,6 +5409,7 @@ class _AppLocalizationsDelegate
5409
'it',
5410
'ja',
5411
'ru',
5412
+ 'tr',
5413
'zh',
5414
].contains(locale.languageCode);
5415
@@ -5445,6 +5448,8 @@ AppLocalizations lookupAppLocalizations(Locale locale) {
5448
return AppLocalizationsJa();
5449
case 'ru':
5450
return AppLocalizationsRu();
5451
+ case 'tr':
5452
+ return AppLocalizationsTr();
5453
case 'zh':
5454
return AppLocalizationsZh();
5455
}
lib/l10n/app_localizations_tr.dart
new
+2900
@@ -0,0 +1,2900 @@
1
+// ignore: unused_import
2
+import 'package:intl/intl.dart' as intl;
3
+import 'app_localizations.dart';
4
+
5
+// ignore_for_file: type=lint
6
+
7
+/// The translations for Turkish (`tr`).
8
+class AppLocalizationsTr extends AppLocalizations {
9
+ AppLocalizationsTr([String locale = 'tr']) : super(locale);
10
+
11
+ @override
12
+ String get app_name => 'LocalMind';
13
+
14
+ @override
15
+ String get app_tagline =>
16
+ 'Sizin Yapay Zekanız. Sizin Cihazınız. Sizin Kurallarınız.';
17
+
18
+ @override
19
+ String get app_version => '1.0.0';
20
+
21
+ @override
22
+ String get cancel => 'İptal';
23
+
24
+ @override
25
+ String get confirm => 'Onayla';
26
+
27
+ @override
28
+ String get delete => 'Sil';
29
+
30
+ @override
31
+ String get save => 'Kaydet';
32
+
33
+ @override
34
+ String get retry => 'Yeniden Dene';
35
+
36
+ @override
37
+ String get close => 'Kapat';
38
+
39
+ @override
40
+ String get done => 'Bitti';
41
+
42
+ @override
43
+ String get continue_action => 'Devam Et';
44
+
45
+ @override
46
+ String get skip => 'Atla';
47
+
48
+ @override
49
+ String get install => 'Yükle';
50
+
51
+ @override
52
+ String get download => 'İndir';
53
+
54
+ @override
55
+ String get resume => 'Devam Ettir';
56
+
57
+ @override
58
+ String get pause => 'Duraklat';
59
+
60
+ @override
61
+ String get stop => 'Durdur';
62
+
63
+ @override
64
+ String get edit => 'Düzenle';
65
+
66
+ @override
67
+ String get preview => 'Önizleme';
68
+
69
+ @override
70
+ String get unload => 'Bellekten Çıkar';
71
+
72
+ @override
73
+ String get load => 'Yükle';
74
+
75
+ @override
76
+ String get rename => 'Yeniden Adlandır';
77
+
78
+ @override
79
+ String get pin => 'Sabitle';
80
+
81
+ @override
82
+ String get unpin => 'Sabitlemeyi Kaldır';
83
+
84
+ @override
85
+ String get share => 'Paylaş';
86
+
87
+ @override
88
+ String get copy => 'Kopyala';
89
+
90
+ @override
91
+ String get copied => 'Kopyalandı!';
92
+
93
+ @override
94
+ String get copied_to_clipboard => 'Panoya kopyalandı';
95
+
96
+ @override
97
+ String get select => 'Seç';
98
+
99
+ @override
100
+ String get active => 'Aktif';
101
+
102
+ @override
103
+ String get all => 'Tümü';
104
+
105
+ @override
106
+ String get none => 'Hiçbiri';
107
+
108
+ @override
109
+ String get none_selected => 'Hiçbiri seçilmedi';
110
+
111
+ @override
112
+ String get online => 'Çevrimiçi';
113
+
114
+ @override
115
+ String get connected => 'Bağlandı';
116
+
117
+ @override
118
+ String get checking => 'Kontrol ediliyor';
119
+
120
+ @override
121
+ String get offline => 'Çevrimdışı';
122
+
123
+ @override
124
+ String get error => 'Hata';
125
+
126
+ @override
127
+ String get unknown_error => 'Bilinmeyen hata';
128
+
129
+ @override
130
+ String get not_now => 'Şimdi Değil';
131
+
132
+ @override
133
+ String get enable => 'Etkinleştir';
134
+
135
+ @override
136
+ String get proceed_anyway => 'Yine de Devam Et';
137
+
138
+ @override
139
+ String get test_connection => 'Bağlantıyı Test Et';
140
+
141
+ @override
142
+ String get testing => 'Test ediliyor...';
143
+
144
+ @override
145
+ String get connection_successful => 'Bağlantı başarılı!';
146
+
147
+ @override
148
+ String get connection_failed =>
149
+ 'Bağlantı başarısız. Ayarlarınızı kontrol edin.';
150
+
151
+ @override
152
+ String get save_continue => 'Kaydet ve Devam Et';
153
+
154
+ @override
155
+ String get save_changes => 'Değişiklikleri Kaydet';
156
+
157
+ @override
158
+ String get finish_setup => 'Kurulumu Tamamla';
159
+
160
+ @override
161
+ String get start_new_chat => 'Yeni Sohbet Başlat';
162
+
163
+ @override
164
+ String get cannot_undo => 'Bu işlem geri alınamaz.';
165
+
166
+ @override
167
+ String get ram_warning => 'RAM Uyarısı';
168
+
169
+ @override
170
+ String get recommended => 'ÖNERİLEN';
171
+
172
+ @override
173
+ String get may_be_large => 'Bu cihaz için çok büyük olabilir';
174
+
175
+ @override
176
+ String get calculating => 'Hesaplanıyor...';
177
+
178
+ @override
179
+ String get download_failed => 'İndirme Başarısız';
180
+
181
+ @override
182
+ String get downloaded => 'İndirildi';
183
+
184
+ @override
185
+ String get not_downloaded => 'İndirilmedi';
186
+
187
+ @override
188
+ String get installed => 'Yüklendi';
189
+
190
+ @override
191
+ String get not_installed => 'Yüklenmedi';
192
+
193
+ @override
194
+ String get loading => 'Yükleniyor...';
195
+
196
+ @override
197
+ String get thinking => 'Düşünüyor...';
198
+
199
+ @override
200
+ String get processing => 'İşleniyor...';
201
+
202
+ @override
203
+ String get initializing => 'Başlatılıyor...';
204
+
205
+ @override
206
+ String get ready => 'Hazır';
207
+
208
+ @override
209
+ String get preparing_app => 'Uygulama hazırlanıyor...';
210
+
211
+ @override
212
+ String get initializing_services => 'Servisler başlatılıyor...';
213
+
214
+ @override
215
+ String get configuring_server => 'Sunucu yapılandırılıyor...';
216
+
217
+ @override
218
+ String get startup_failed => 'Başlatma başarısız oldu';
219
+
220
+ @override
221
+ String get something_went_wrong => 'Bir şeyler yanlış gitti';
222
+
223
+ @override
224
+ String get delete_model_title => 'Modeli Sil';
225
+
226
+ @override
227
+ String delete_model_body(String name) {
228
+ return '$name modelini silmek istediğinizden emin misiniz?';
229
+ }
230
+
231
+ @override
232
+ String delete_model_body_with_size(String name, String size) {
233
+ return '$name modelini silmek istediğinizden emin misiniz? Bu yaklaşık $size alan boşaltacaktır.\n\nGerekirse bu modeli daha sonra tekrar indirebilirsiniz.';
234
+ }
235
+
236
+ @override
237
+ String get delete_voice_title => 'Sesi Sil';
238
+
239
+ @override
240
+ String delete_voice_body(String name, String size) {
241
+ return '$name sesini silmek istediğinizden emin misiniz? Bu yaklaşık $size alan boşaltacaktır.\n\nGerekirse bu sesi daha sonra tekrar indirebilirsiniz.';
242
+ }
243
+
244
+ @override
245
+ String get delete_server_title => 'Sunucuyu Sil';
246
+
247
+ @override
248
+ String delete_server_body(String name) {
249
+ return '\"$name\" sunucusunu silmek istediğinizden emin misiniz? Bu işlem geri alınamaz.';
250
+ }
251
+
252
+ @override
253
+ String get delete_conversation_title => 'Sohbet silinsin mi?';
254
+
255
+ @override
256
+ String delete_conversation_body(String title) {
257
+ return '\"$title\" sohbetini silmek istediğinizden emin misiniz? Bu işlem geri alınamaz.';
258
+ }
259
+
260
+ @override
261
+ String get delete_message_title => 'Mesaj silinsin mi?';
262
+
263
+ @override
264
+ String delete_persona_title(String name) {
265
+ return '\"$name\" silinsin mi?';
266
+ }
267
+
268
+ @override
269
+ String get delete_persona_body => 'Bu işlem geri alınamaz.';
270
+
271
+ @override
272
+ String get delete_builtin_persona_body =>
273
+ 'Bu yerleşik bir personalardır. Daha sonra Ayarlar\'dan geri yükleyebilirsiniz.';
274
+
275
+ @override
276
+ String get restore_builtin_personas => 'Varsayılan personaları geri yükle';
277
+
278
+ @override
279
+ String get restore_builtin_personas_desc =>
280
+ 'Sildiğiniz yerleşik personaları tekrar ekleyin';
281
+
282
+ @override
283
+ String get restore_builtin_personas_success =>
284
+ 'Varsayılan personalar geri yüklendi';
285
+
286
+ @override
287
+ String get clear_personas => 'Personaları temizle';
288
+
289
+ @override
290
+ String get enable_image_compression => 'Göndermeden önce görselleri sıkıştır';
291
+
292
+ @override
293
+ String get enable_image_compression_desc =>
294
+ 'Eklenen görsellerin boyutunu değiştirip sıkıştırarak sunucu sınırları içinde kalın';
295
+
296
+ @override
297
+ String get image_compression_level => 'Sıkıştırma seviyesi';
298
+
299
+ @override
300
+ String get image_compression_level_desc =>
301
+ 'Yüksek seviye, daha düşük kalitede daha küçük boyutlu yüklemeler sağlar';
302
+
303
+ @override
304
+ String get image_compression_level_low => 'Düşük';
305
+
306
+ @override
307
+ String get image_compression_level_medium => 'Orta';
308
+
309
+ @override
310
+ String get image_compression_level_high => 'Yüksek';
311
+
312
+ @override
313
+ String get sort_models_tooltip => 'Modelleri sırala';
314
+
315
+ @override
316
+ String get sort_by_favorites => 'Önce favoriler';
317
+
318
+ @override
319
+ String get sort_by_name => 'İsim (A-Z)';
320
+
321
+ @override
322
+ String get sort_by_size_smallest => 'Boyut (önce en küçük)';
323
+
324
+ @override
325
+ String get sort_by_size_largest => 'Boyut (önce en büyük)';
326
+
327
+ @override
328
+ String get sort_by_context_length => 'Bağlam uzunluğu';
329
+
330
+ @override
331
+ String bulk_ai_rename_progress(int done, int total) {
332
+ return '$done/$total yeniden adlandırılıyor...';
333
+ }
334
+
335
+ @override
336
+ String selected_count(int count) {
337
+ return '$count seçildi';
338
+ }
339
+
340
+ @override
341
+ String get ai_rename_tooltip => 'Seçilenleri Yapay Zeka ile yeniden adlandır';
342
+
343
+ @override
344
+ String get new_chat_in_folder_tooltip => 'Bu klasörde yeni sohbet';
345
+
346
+ @override
347
+ String total_tokens_count(int count) {
348
+ return '$count token';
349
+ }
350
+
351
+ @override
352
+ String get smart_replies_use_persona => 'Akıllı yanıtlarda personayı kullan';
353
+
354
+ @override
355
+ String get smart_replies_use_persona_desc =>
356
+ 'Önerilen yanıtlar genel asistan yerine aktif personanın tonuna uyar';
357
+
358
+ @override
359
+ String get keep_persona_on_new_chat => 'Yeni sohbette personayı koru';
360
+
361
+ @override
362
+ String get keep_persona_on_new_chat_desc =>
363
+ 'Yeni sohbet başlatıldıktan sonra seçilen persona(lar)ı temizleme';
364
+
365
+ @override
366
+ String get role_swap_button_enabled => 'Rol değiştirme düğmesini göster';
367
+
368
+ @override
369
+ String get role_swap_button_enabled_desc =>
370
+ 'Yanıt üretmeden mesajınızı kullanıcı yerine asistan olarak göndermek için sohbet girişinde bir düğme gösterin';
371
+
372
+ @override
373
+ String get send_as_user_tooltip => 'Kullanıcı olarak gönder';
374
+
375
+ @override
376
+ String get send_as_assistant_tooltip => 'Asistan olarak gönder (yanıt yok)';
377
+
378
+ @override
379
+ String get insert_without_generating_tooltip => 'Üretmeden ekle';
380
+
381
+ @override
382
+ String get token_usage_title => 'Token Kullanımı';
383
+
384
+ @override
385
+ String get total_tokens_label => 'Kullanılan token\'lar';
386
+
387
+ @override
388
+ String get usage_percent_label => 'Kullanılan bağlam';
389
+
390
+ @override
391
+ String get export_choice_title => 'Dışa Aktar';
392
+
393
+ @override
394
+ String get export_choice_body => 'Bunu nasıl dışa aktarmak istersiniz?';
395
+
396
+ @override
397
+ String get copy_to_clipboard => 'Panoya Kopyala';
398
+
399
+ @override
400
+ String bulk_export_conversations_success(int count) {
401
+ return '$count sohbet dışa aktarıldı';
402
+ }
403
+
404
+ @override
405
+ String get bulk_ai_rename_confirm_title =>
406
+ 'Yapay Zeka ile Yeniden Adlandırılsın mı?';
407
+
408
+ @override
409
+ String bulk_ai_rename_confirm_body(int count) {
410
+ return 'Bu işlem Yapay Zekadan seçilen $count sohbetin her biri için yeni bir başlık oluşturmasını ve mevcut başlıkların yerini almasını isteyecektir. Bu biraz zaman alabilir ve geri alınamaz.';
411
+ }
412
+
413
+ @override
414
+ String get sort_by_modified_date => 'Son değiştirilme';
415
+
416
+ @override
417
+ String get sort_by_created_date => 'Oluşturulma tarihi';
418
+
419
+ @override
420
+ String get sort_title => 'Sırala';
421
+
422
+ @override
423
+ String get clear_conversation_title => 'Sohbet temizlensin mi?';
424
+
425
+ @override
426
+ String get clear_conversation_body =>
427
+ 'Bu işlem sohbet içindeki tüm mesajları silecektir.';
428
+
429
+ @override
430
+ String get clear => 'Temizle';
431
+
432
+ @override
433
+ String label_completed(String label) {
434
+ return '$label tamamlandı';
435
+ }
436
+
437
+ @override
438
+ String error_with_message(String error) {
439
+ return 'Hata: $error';
440
+ }
441
+
442
+ @override
443
+ String preview_failed(String error) {
444
+ return 'Önizleme başarısız: $error';
445
+ }
446
+
447
+ @override
448
+ String loading_model(String modelId) {
449
+ return '$modelId yükleniyor...';
450
+ }
451
+
452
+ @override
453
+ String model_loaded(String modelId, String backend) {
454
+ return 'Model başarıyla yüklendi';
455
+ }
456
+
457
+ @override
458
+ String get no_model_loaded =>
459
+ 'No model loaded. Tap \"Manage On-Device Modeller\" to download and load a model.';
460
+
461
+ @override
462
+ String loading_model_error(String error) {
463
+ return 'Hata: $error';
464
+ }
465
+
466
+ @override
467
+ String get delete_conversation => 'Sohbeti Sil';
468
+
469
+ @override
470
+ String get nav_history => 'Geçmiş';
471
+
472
+ @override
473
+ String get nav_servers => 'Sunucular';
474
+
475
+ @override
476
+ String get nav_local_models => 'Local Modeller';
477
+
478
+ @override
479
+ String get nav_tts => 'Metin Okuma';
480
+
481
+ @override
482
+ String get nav_personas => 'Personalar';
483
+
484
+ @override
485
+ String get nav_settings => 'Ayarlar';
486
+
487
+ @override
488
+ String get nav_new_chat => 'Yeni Sohbet';
489
+
490
+ @override
491
+ String get search_hint => 'Sohbetleri ara...';
492
+
493
+ @override
494
+ String get no_server_selected => 'Sunucu seçilmedi';
495
+
496
+ @override
497
+ String get switch_server => 'Sunucu Değiştir';
498
+
499
+ @override
500
+ String get switch_server_subtitle => 'Bağlanmak için bir sunucu seçin';
501
+
502
+ @override
503
+ String get manage_servers => 'Manage Sunucular';
504
+
505
+ @override
506
+ String get open_source => 'Açık Kaynak';
507
+
508
+ @override
509
+ String get open_source_desc =>
510
+ 'LocalMind açık kaynaklıdır. İlerlememizi takip edin veya GitHub\'da katkıda bulunun.';
511
+
512
+ @override
513
+ String get star_on_github => 'GitHub\'da Yıldızla';
514
+
515
+ @override
516
+ String get add_more => 'Daha fazla ekle';
517
+
518
+ @override
519
+ String get on_github => 'GitHub üzerinde';
520
+
521
+ @override
522
+ String get could_not_open_github => 'GitHub açılamadı.';
523
+
524
+ @override
525
+ String get settings_title => 'Ayarlar';
526
+
527
+ @override
528
+ String get settings_appearance => 'Görünüm';
529
+
530
+ @override
531
+ String get settings_language => 'Dil';
532
+
533
+ @override
534
+ String get language_system_default => 'Sistem Varsayılanı';
535
+
536
+ @override
537
+ String get settings_tts => 'Metin Okuma';
538
+
539
+ @override
540
+ String get settings_behavior => 'Davranış';
541
+
542
+ @override
543
+ String get settings_on_device => 'Cihaz Üstü Çıkarım';
544
+
545
+ @override
546
+ String get settings_default_server => 'Varsayılan Sunucu';
547
+
548
+ @override
549
+ String get settings_default_persona => 'Varsayılan Persona';
550
+
551
+ @override
552
+ String get settings_privacy => 'Gizlilik';
553
+
554
+ @override
555
+ String get settings_data_management => 'Veri Yönetimi';
556
+
557
+ @override
558
+ String get settings_about => 'Hakkında';
559
+
560
+ @override
561
+ String get theme => 'Tema';
562
+
563
+ @override
564
+ String get theme_system => 'Sistem';
565
+
566
+ @override
567
+ String get theme_light => 'Açık';
568
+
569
+ @override
570
+ String get theme_dark => 'Koyu';
571
+
572
+ @override
573
+ String get theme_claude => 'Claude';
574
+
575
+ @override
576
+ String get font_size => 'Yazı Tipi Boyutu';
577
+
578
+ @override
579
+ String get font_size_desc => 'Sohbet içindeki metin boyutunu ayarlayın.';
580
+
581
+ @override
582
+ String get font_preview =>
583
+ 'Hızlı kahverengi tilki tembel köpeğin üzerinden atlar.';
584
+
585
+ @override
586
+ String get code_theme_dark => 'Kod Teması (Koyu)';
587
+
588
+ @override
589
+ String get code_theme_light => 'Kod Teması (Açık)';
590
+
591
+ @override
592
+ String get code_theme_desc =>
593
+ 'Kod blokları için sözdizimi vurgulama temasını seçin.';
594
+
595
+ @override
596
+ String get tts_engine => 'TTS Motoru';
597
+
598
+ @override
599
+ String get tts_engine_system => 'Sistem TTS';
600
+
601
+ @override
602
+ String get tts_engine_kitten => 'Kitten TTS';
603
+
604
+ @override
605
+ String get voice => 'Ses';
606
+
607
+ @override
608
+ String get voice_female => 'Kadın';
609
+
610
+ @override
611
+ String get voice_male => 'Erkek';
612
+
613
+ @override
614
+ String get voice_other => 'Diğer';
615
+
616
+ @override
617
+ String get tts_speed => 'Konuşma Hızı';
618
+
619
+ @override
620
+ String get tts_speed_desc => 'Oynatma hızını ayarlayın.';
621
+
622
+ @override
623
+ String get manage_tts_models => 'Manage TTS Modeller';
624
+
625
+ @override
626
+ String get manage_on_device_models => 'Manage On-Device Modeller';
627
+
628
+ @override
629
+ String get enable_smart_reply => 'Cihaz Üstü Akıllı Yanıtlar';
630
+
631
+ @override
632
+ String get ai_user_response_enabled =>
633
+ 'Yapay zeka kullanıcı mesajı (göndere basılı tutun)';
634
+
635
+ @override
636
+ String get ai_user_response_enabled_desc =>
637
+ 'Yapay zekanın sonraki mesajınızı yazıp göndermesini sağlamak için gönder düğmesini 3 saniye basılı tutun';
638
+
639
+ @override
640
+ String get ai_user_response_tooltip =>
641
+ 'Yapay zeka ile kullanıcı mesajı oluştur';
642
+
643
+ @override
644
+ String get streaming_responses => 'Akan Yanıtlar (Streaming)';
645
+
646
+ @override
647
+ String get auto_generate_titles => 'Başlıkları Otomatik Oluştur';
648
+
649
+ @override
650
+ String get send_on_enter => 'Enter ile Gönder';
651
+
652
+ @override
653
+ String get show_system_messages => 'Varsayılan Sistem Yönergesini Gönder';
654
+
655
+ @override
656
+ String get show_system_messages_desc =>
657
+ 'Persona seçilmediğinde, her istekle birlikte varsayılan asistan sistem yönergesini gönder';
658
+
659
+ @override
660
+ String get show_system_messages_in_chat =>
661
+ 'Sohbette Sistem Mesajlarını Göster';
662
+
663
+ @override
664
+ String get show_system_messages_in_chat_desc =>
665
+ 'Sistem mesajlarını (örn. içe aktarılan yedekten) konuşmada görünür baloncuklar olarak göster';
666
+
667
+ @override
668
+ String get haptic_feedback => 'Dokunsal Geri Bildirim';
669
+
670
+ @override
671
+ String get enable_mcp => 'MCP\'yi Etkinleştir';
672
+
673
+ @override
674
+ String get new_chat_mcp_default => 'Yeni Sohbet MCP Varsayılanı';
675
+
676
+ @override
677
+ String get show_data_indicator => 'Veri Göstergesini Göster';
678
+
679
+ @override
680
+ String get privacy_info => '\"LocalMind verilerinizi asla görmez\"';
681
+
682
+ @override
683
+ String get delete_all_conversations => 'Sil All Sohbetler';
684
+
685
+ @override
686
+ String get reset_settings_defaults => 'Reset Ayarlar to Defaults';
687
+
688
+ @override
689
+ String get chat_title => 'LocalMind';
690
+
691
+ @override
692
+ String get chat_parameters_tooltip => 'Sohbet Parametreleri';
693
+
694
+ @override
695
+ String get change_persona => 'Personayı Değiştir';
696
+
697
+ @override
698
+ String get set_persona => 'Personayı Ayarla';
699
+
700
+ @override
701
+ String get remove_persona => 'Kaldır Persona';
702
+
703
+ @override
704
+ String get clear_conversation => 'Sohbeti Temizle';
705
+
706
+ @override
707
+ String get connection_error => 'Bağlantı hatası. Sunucunuzu kontrol edin.';
708
+
709
+ @override
710
+ String get disconnected => 'Bağlantı Kesildi from server.';
711
+
712
+ @override
713
+ String get configure => 'Yapılandır';
714
+
715
+ @override
716
+ String get select_model => 'Model Seçin';
717
+
718
+ @override
719
+ String get select_persona => 'Persona Seç';
720
+
721
+ @override
722
+ String get manage_personas => 'Personaları yönet';
723
+
724
+ @override
725
+ String get personas_combine_hint =>
726
+ 'Sistem yönergelerini birleştirmek için sohbette birden fazla persona seçin.';
727
+
728
+ @override
729
+ String get start_conversation => 'Bir sohbet başlatın';
730
+
731
+ @override
732
+ String get recent_chats => 'Son sohbetler';
733
+
734
+ @override
735
+ String get see_all => 'Tümünü gör';
736
+
737
+ @override
738
+ String get quick_write => 'Bir fonksiyon yazmama yardım et';
739
+
740
+ @override
741
+ String get quick_explain => 'Bu kodu açıkla';
742
+
743
+ @override
744
+ String get quick_debug => 'Bunu benim için ayıkla (debug)';
745
+
746
+ @override
747
+ String get quick_async => 'async/await nasıl kullanılır?';
748
+
749
+ @override
750
+ String get history_missing_title => 'Geçmiş Eksik';
751
+
752
+ @override
753
+ String get history_missing_desc =>
754
+ 'Bu sohbetteki mesajlar silinmiş veya geçmiş kaydı bozulmuş.';
755
+
756
+ @override
757
+ String get technical_details => 'Teknik Detaylar';
758
+
759
+ @override
760
+ String get last_error => 'Last Hata:';
761
+
762
+ @override
763
+ String get copy_info => 'Copy Bilgi';
764
+
765
+ @override
766
+ String get conversation_id => 'Sohbet Kimliği (ID)';
767
+
768
+ @override
769
+ String get created_at => 'Oluşturulma Tarihi';
770
+
771
+ @override
772
+ String get expected_messages => 'Beklenen Mesajlar';
773
+
774
+ @override
775
+ String get debug_dialog_desc =>
776
+ 'Eşitleme sorunlarını belirlemeye yardımcı olacak teşhis bilgileri.';
777
+
778
+ @override
779
+ String get chat_input_hint => 'İstediğinizi sorun';
780
+
781
+ @override
782
+ String get send_message_tooltip => 'Mesaj gönder';
783
+
784
+ @override
785
+ String get stop_generation_tooltip => 'Üretimi durdur';
786
+
787
+ @override
788
+ String get attach_images_tooltip => 'Görsel veya metin ekle';
789
+
790
+ @override
791
+ String get start_listening_tooltip => 'Dinlemeyi başlat';
792
+
793
+ @override
794
+ String get stop_listening_tooltip => 'Dinlemeyi durdur';
795
+
796
+ @override
797
+ String tool_label(String toolCallId) {
798
+ return 'Araç: $toolCallId';
799
+ }
800
+
801
+ @override
802
+ String get tool_unknown => 'Araç: Bilinmeyen';
803
+
804
+ @override
805
+ String get message_options => 'Mesaj seçenekleri';
806
+
807
+ @override
808
+ String get copy_markdown => 'Markdown olarak Kopyala';
809
+
810
+ @override
811
+ String get copied_markdown => 'Markdown olarak kopyalandı';
812
+
813
+ @override
814
+ String get read_aloud => 'Sesli Oku';
815
+
816
+ @override
817
+ String get stop_reading => 'Okumayı Durdur';
818
+
819
+ @override
820
+ String get more => 'Daha fazla';
821
+
822
+ @override
823
+ String character_count(int length) {
824
+ return '$length karakter';
825
+ }
826
+
827
+ @override
828
+ String get edit_message => 'Mesajı Düzenle';
829
+
830
+ @override
831
+ String get edit_message_desc =>
832
+ 'Kaydetmek, alttaki asistan yanıtını kaldıracak ve yeniden üretecektir.';
833
+
834
+ @override
835
+ String get save_regenerate => 'Kaydet ve yeniden üret';
836
+
837
+ @override
838
+ String get chat_settings_title => 'Chat Ayarlar';
839
+
840
+ @override
841
+ String get reset_defaults => 'Varsayılanlara Sıfırla';
842
+
843
+ @override
844
+ String get parameters_tab => 'Parametreler';
845
+
846
+ @override
847
+ String get mcp_tab => 'MCP';
848
+
849
+ @override
850
+ String get temperature => 'Sıcaklık (Temperature)';
851
+
852
+ @override
853
+ String get temperature_desc =>
854
+ 'Rastgeleliği kontrol eder: Yüksek = Yaratıcı, Düşük = Odaklanmış';
855
+
856
+ @override
857
+ String get top_p => 'Top P';
858
+
859
+ @override
860
+ String get top_p_desc => 'Çekirdek örnekleme eşiği';
861
+
862
+ @override
863
+ String get max_tokens => 'Maksimum Token';
864
+
865
+ @override
866
+ String get max_tokens_desc => 'Yanıt sınırı';
867
+
868
+ @override
869
+ String get context_length => 'Bağlam Uzunluğu';
870
+
871
+ @override
872
+ String get context_length_desc => 'Geçmiş penceresi';
873
+
874
+ @override
875
+ String get mcp_disabled_warning =>
876
+ 'MCP is disabled globally. Enable it in Ayarlar to use these features.';
877
+
878
+ @override
879
+ String get mcp_enable_chat => 'Bu sohbet için MCP\'yi etkinleştir';
880
+
881
+ @override
882
+ String get auto_execute_tools => 'Araçları otomatik çalıştır';
883
+
884
+ @override
885
+ String get beta_label => 'Beta';
886
+
887
+ @override
888
+ String get experimental_label => 'Deneysel';
889
+
890
+ @override
891
+ String get add_ephemeral_mcp => 'Geçici MCP Sunucusu Ekle';
892
+
893
+ @override
894
+ String get mcp_label_placeholder => 'Etiket';
895
+
896
+ @override
897
+ String get mcp_url_placeholder => 'URL (https://...)';
898
+
899
+ @override
900
+ String get active_integrations => 'Aktif Entegrasyonlar';
901
+
902
+ @override
903
+ String get enable_notifications => 'Bildirimleri Etkinleştir';
904
+
905
+ @override
906
+ String get enable_notifications_desc =>
907
+ 'Modellerin indirilmesi tamamlandığında bildirim alın.';
908
+
909
+ @override
910
+ String get chat_history_title => 'Sohbet Geçmişi';
911
+
912
+ @override
913
+ String get conversation_just_now => 'Az önce';
914
+
915
+ @override
916
+ String conversation_minutes_ago(int minutes) {
917
+ return '${minutes}d önce';
918
+ }
919
+
920
+ @override
921
+ String conversation_hours_ago(int hours) {
922
+ return '${hours}s önce';
923
+ }
924
+
925
+ @override
926
+ String get conversation_yesterday => 'Dün';
927
+
928
+ @override
929
+ String conversation_days_ago(int days) {
930
+ return '${days}g önce';
931
+ }
932
+
933
+ @override
934
+ String conversation_date(int month, int day, int year) {
935
+ return '$day/$month/$year';
936
+ }
937
+
938
+ @override
939
+ String get options_tooltip => 'Seçenekler';
940
+
941
+ @override
942
+ String get no_results_found => 'Sonuç bulunamadı';
943
+
944
+ @override
945
+ String get no_conversations_yet => 'Henüz sohbet yok';
946
+
947
+ @override
948
+ String get try_different_search => 'Farklı bir arama terimi deneyin';
949
+
950
+ @override
951
+ String get start_new_conversation => 'Yeni bir sohbet başlatın';
952
+
953
+ @override
954
+ String get rename_conversation => 'Sohbeti Yeniden Adlandır';
955
+
956
+ @override
957
+ String get enter_new_title => 'Yeni başlık girin';
958
+
959
+ @override
960
+ String get pinned_section => 'SABİTLENENLER';
961
+
962
+ @override
963
+ String get today_section => 'BUGÜN';
964
+
965
+ @override
966
+ String get yesterday_section => 'DÜN';
967
+
968
+ @override
969
+ String get previous_7_days => 'Son 7 Gün';
970
+
971
+ @override
972
+ String get previous_30_days => 'Son 30 Gün';
973
+
974
+ @override
975
+ String get older_section => 'DAHA ESKİ';
976
+
977
+ @override
978
+ String get onboarding_choose_language => 'LocalMind dillerini keşfedin';
979
+
980
+ @override
981
+ String get onboarding_choose_language_desc =>
982
+ 'Uygulama arayüzünüz için tercih ettiğiniz dili seçin.';
983
+
984
+ @override
985
+ String get onboarding_localmind => 'LOCALMIND';
986
+
987
+ @override
988
+ String get onboarding_connect_server => 'Sunucunuzu\nBağlayın';
989
+
990
+ @override
991
+ String get onboarding_connect_desc =>
992
+ 'Özel yapay zeka deneyiminize başlamak için LM Studio, Ollama,\nOllama Cloud veya OpenRouter\'a bağlanın.';
993
+
994
+ @override
995
+ String get openai_compatible_api => 'OpenAI uyumlu API';
996
+
997
+ @override
998
+ String get https_requires_ssl => 'HTTPS, SSL gerektirir';
999
+
1000
+ @override
1001
+ String get most_local_setups_use_http =>
1002
+ 'Çoğu yerel kurulum http:// kullanır';
1003
+
1004
+ @override
1005
+ String get onboarding_welcome => 'LocalMind\'a Hoş Geldiniz';
1006
+
1007
+ @override
1008
+ String get server_type_on_device => 'Cihaz Üstü';
1009
+
1010
+ @override
1011
+ String get server_type_lm_studio => 'LM Studio';
1012
+
1013
+ @override
1014
+ String get server_type_ollama => 'Ollama';
1015
+
1016
+ @override
1017
+ String get server_type_ollama_cloud => 'Ollama Cloud';
1018
+
1019
+ @override
1020
+ String get server_type_ollama_cloud_sub => 'BULUT YÖNETİMLİ';
1021
+
1022
+ @override
1023
+ String get server_type_ollama_cloud_display => 'Ollama Cloud';
1024
+
1025
+ @override
1026
+ String get server_address_ollama_cloud => 'ollama.com';
1027
+
1028
+ @override
1029
+ String get ollama_cloud_disclosure =>
1030
+ 'Ollama Cloud\'a bağlanarak sohbet mesajlarınız ve girdileriniz çıkarım için Ollama\'nın yönetilen sunucularına gönderilir. LocalMind sohbetlerinizi izlemez veya saklamaz. Bu anahtarı ollama.com/settings/keys adresinden istediğiniz zaman iptal edebilirsiniz.';
1031
+
1032
+ @override
1033
+ String get api_key_required_ollama_cloud =>
1034
+ 'Ollama Cloud için API Anahtarı gereklidir';
1035
+
1036
+ @override
1037
+ String get api_key_hint_ollama_cloud =>
1038
+ 'Ollama Cloud API anahtarınızı yapıştırın';
1039
+
1040
+ @override
1041
+ String get add_server_ollama_cloud_subtitle =>
1042
+ 'Yönetilen bulut modellerine erişmek için ollama.com/settings/keys adresinden alacağınız API anahtarıyla Ollama Cloud\'a bağlanın.';
1043
+
1044
+ @override
1045
+ String get add_server_openrouter_subtitle =>
1046
+ 'Geçerli bir API anahtarıyla OpenRouter üzerinden bağlanın ve model yönlendirmesi için bu profili hazır tutun.';
1047
+
1048
+ @override
1049
+ String get add_server_endpoint_subtitle =>
1050
+ 'Yerel veya kendi barındırdığınız bir uç noktayı yapılandırın ve kaydetmeden önce bağlantıyı doğrulayın.';
1051
+
1052
+ @override
1053
+ String get server_type_openrouter => 'OpenRouter';
1054
+
1055
+ @override
1056
+ String get server_type_openrouter_sub => 'BİRLEŞİK BULUT';
1057
+
1058
+ @override
1059
+ String get ready_continue => 'DEVAM ETMEYE HAZIR';
1060
+
1061
+ @override
1062
+ String get waiting_selection => 'SEÇİM BEKLENİYOR';
1063
+
1064
+ @override
1065
+ String get setup_connection => 'Bağlantıyı Kur';
1066
+
1067
+ @override
1068
+ String setup_connection_desc(String server) {
1069
+ return 'Sohbet etmeye başlamak için $server sunucunuzu yapılandırın.';
1070
+ }
1071
+
1072
+ @override
1073
+ String get server_name => 'Sunucu Adı';
1074
+
1075
+ @override
1076
+ String get name_required => 'İsim gereklidir';
1077
+
1078
+ @override
1079
+ String get name_max_50 => 'En fazla 50 karakter';
1080
+
1081
+ @override
1082
+ String get host_label => 'Ana Bilgisayar / IP Adresi';
1083
+
1084
+ @override
1085
+ String get host_required => 'Ana bilgisayar gereklidir';
1086
+
1087
+ @override
1088
+ String get port_label => 'Port';
1089
+
1090
+ @override
1091
+ String get port_required => 'Port gereklidir';
1092
+
1093
+ @override
1094
+ String get port_invalid => 'Bir sayı olmalıdır';
1095
+
1096
+ @override
1097
+ String get port_range => 'Geçerli bir port girin (1-65535)';
1098
+
1099
+ @override
1100
+ String get api_key_required => 'API Anahtarı *';
1101
+
1102
+ @override
1103
+ String get api_key_optional => 'API Anahtarı (İsteğe Bağlı)';
1104
+
1105
+ @override
1106
+ String get api_key_required_openrouter =>
1107
+ 'OpenRouter için API Anahtarı gereklidir';
1108
+
1109
+ @override
1110
+ String get api_key_format => 'OpenRouter API anahtarları sk- ile başlar';
1111
+
1112
+ @override
1113
+ String get my_server_hint => 'Sunucum';
1114
+
1115
+ @override
1116
+ String get name_length_validation =>
1117
+ 'İsim 50 karakter veya daha az olmalıdır';
1118
+
1119
+ @override
1120
+ String get host_valid =>
1121
+ 'Geçerli bir ana bilgisayar adı veya IP adresi girin';
1122
+
1123
+ @override
1124
+ String get api_key_hint_openrouter => 'sk-...';
1125
+
1126
+ @override
1127
+ String get api_key_hint_generic => 'Kimlik doğrulamalı sunucular için';
1128
+
1129
+ @override
1130
+ String get update_server => 'Sunucuyu Güncelle';
1131
+
1132
+ @override
1133
+ String get save_server => 'Sunucuyu Kaydet';
1134
+
1135
+ @override
1136
+ String get server_updated => 'Sunucu güncellendi';
1137
+
1138
+ @override
1139
+ String get server_added => 'Sunucu eklendi';
1140
+
1141
+ @override
1142
+ String get download_model_title => 'Bir Model İndirin';
1143
+
1144
+ @override
1145
+ String get download_model_desc =>
1146
+ 'İndirmek için bir model seçin.\nCihazınızda yerel olarak çalışacaktır.';
1147
+
1148
+ @override
1149
+ String get on_device_android_only =>
1150
+ 'Cihaz üstü çıkarım şu anda yalnızca Android\'de kullanılabilir.';
1151
+
1152
+ @override
1153
+ String get total_ram => 'Toplam RAM';
1154
+
1155
+ @override
1156
+ String get available => 'Kullanılabilir';
1157
+
1158
+ @override
1159
+ String ram_min_required(String fileSize) {
1160
+ return 'En az $fileSize GB RAM';
1161
+ }
1162
+
1163
+ @override
1164
+ String download_progress(String percent, String speed) {
1165
+ return '%$percent • $speed';
1166
+ }
1167
+
1168
+ @override
1169
+ String eta_label(String eta) {
1170
+ return 'Kalan Süre: $eta';
1171
+ }
1172
+
1173
+ @override
1174
+ String paused_progress(String percent) {
1175
+ return 'Duraklatıldı - %$percent';
1176
+ }
1177
+
1178
+ @override
1179
+ String ram_warning_body_download(String ram, String totalMemory) {
1180
+ return 'Bu model en az $ram GB RAM gerektirir, ancak cihazınızda $totalMemory var. Düzgün çalışmayabilir veya uygulamanın çökmesine neden olabilir.';
1181
+ }
1182
+
1183
+ @override
1184
+ String ram_warning_body_load(String availableRAM, String ram) {
1185
+ return 'Cihazınızda $availableRAM kullanılabilir RAM var, ancak bu model en az $ram GB önerir. Yükleme başarısız olabilir veya kararsızlığa yol açabilir.';
1186
+ }
1187
+
1188
+ @override
1189
+ String get choose_theme => 'Tema Seçin';
1190
+
1191
+ @override
1192
+ String get choose_theme_desc =>
1193
+ 'Uygulama görünümünü kişiselleştirin. Bunu daha sonra ayarlar içinden değiştirebilirsiniz.';
1194
+
1195
+ @override
1196
+ String get theme_card_system => 'Sistem';
1197
+
1198
+ @override
1199
+ String get theme_card_system_sub => 'Cihaz ayarlarınızla eşleşir';
1200
+
1201
+ @override
1202
+ String get theme_card_light => 'Açık';
1203
+
1204
+ @override
1205
+ String get theme_card_light_sub => 'Temiz ve parlak';
1206
+
1207
+ @override
1208
+ String get theme_card_dark => 'Koyu';
1209
+
1210
+ @override
1211
+ String get theme_card_dark_sub => 'Gözleri yormaz';
1212
+
1213
+ @override
1214
+ String get theme_card_claude => 'Claude';
1215
+
1216
+ @override
1217
+ String get theme_card_claude_sub => 'Sıcak, şeftali tonlu bir tema';
1218
+
1219
+ @override
1220
+ String get stay_updated => 'Güncel Kalın';
1221
+
1222
+ @override
1223
+ String get stay_updated_desc =>
1224
+ 'Yapay zeka modellerinizin indirilmesi tamamlandığında veya uzun süren görevler bittiğinde bildirim alın.';
1225
+
1226
+ @override
1227
+ String get notification_benefit_downloads => 'Model indirme ilerlemesi';
1228
+
1229
+ @override
1230
+ String get notification_benefit_completions => 'Üretim tamamlamaları';
1231
+
1232
+ @override
1233
+ String get notification_benefit_background => 'Geriground tasks status';
1234
+
1235
+ @override
1236
+ String get allow_notifications => 'Bildirimlere İzin Ver';
1237
+
1238
+ @override
1239
+ String get servers_title => 'Sunucular';
1240
+
1241
+ @override
1242
+ String get no_servers_yet => 'No Sunucular Yet';
1243
+
1244
+ @override
1245
+ String get no_servers_desc =>
1246
+ 'Yapay zeka modelleriyle sohbet etmeye başlamak için ilk sunucunuzu ekleyin.';
1247
+
1248
+ @override
1249
+ String get add_server => 'Sunucu Ekle';
1250
+
1251
+ @override
1252
+ String switched_to_server(String name) {
1253
+ return '$name sunucusuna geçildi';
1254
+ }
1255
+
1256
+ @override
1257
+ String get edit_server => 'Sunucuyu Düzenle';
1258
+
1259
+ @override
1260
+ String get add_server_title => 'Sunucu Ekle';
1261
+
1262
+ @override
1263
+ String get server_type_label => 'Sunucu Türü';
1264
+
1265
+ @override
1266
+ String get server_icon_label => 'Sunucu Simgesi';
1267
+
1268
+ @override
1269
+ String get default_icon => 'Varsayılan simge';
1270
+
1271
+ @override
1272
+ String get server_type_lm_studio_display => 'LM Studio';
1273
+
1274
+ @override
1275
+ String get server_type_openai_display => 'OpenAI Uyumlu';
1276
+
1277
+ @override
1278
+ String get server_type_ollama_display => 'Ollama';
1279
+
1280
+ @override
1281
+ String get server_type_openrouter_display => 'OpenRouter';
1282
+
1283
+ @override
1284
+ String get server_type_on_device_display => 'Cihaz Üstü';
1285
+
1286
+ @override
1287
+ String get server_address_openrouter => 'openrouter.ai';
1288
+
1289
+ @override
1290
+ String get server_address_on_device => 'Yerel çıkarım';
1291
+
1292
+ @override
1293
+ String server_address_format(String host, String port) {
1294
+ return '$host:$port';
1295
+ }
1296
+
1297
+ @override
1298
+ String get default_badge => 'Varsayılan';
1299
+
1300
+ @override
1301
+ String get set_as_default => 'Varsayılan Olarak Ayarla';
1302
+
1303
+ @override
1304
+ String get select_icon => 'Simge Seç';
1305
+
1306
+ @override
1307
+ String get select_icon_desc => 'Sunucunuz için bir simge seçin';
1308
+
1309
+ @override
1310
+ String get search_icons_hint => 'Simgeleri ara...';
1311
+
1312
+ @override
1313
+ String get server_icon_stack => 'Sunucu Yığını';
1314
+
1315
+ @override
1316
+ String get server_icon_stack2 => 'Sunucu Yığını 02';
1317
+
1318
+ @override
1319
+ String get server_icon_stack3 => 'Sunucu Yığını 03';
1320
+
1321
+ @override
1322
+ String get server_icon_cloud => 'Bulut';
1323
+
1324
+ @override
1325
+ String get server_icon_cloud_server => 'Bulut Sunucu';
1326
+
1327
+ @override
1328
+ String get server_icon_mcp => 'MCP Sunucusu';
1329
+
1330
+ @override
1331
+ String get server_icon_database => 'Veritabanı';
1332
+
1333
+ @override
1334
+ String get server_icon_database1 => 'Veritabanı 01';
1335
+
1336
+ @override
1337
+ String get server_icon_database2 => 'Veritabanı 02';
1338
+
1339
+ @override
1340
+ String get server_icon_cpu => 'İşlemci (CPU)';
1341
+
1342
+ @override
1343
+ String get server_icon_chip => 'Yonga (Chip)';
1344
+
1345
+ @override
1346
+ String get server_icon_chip2 => 'Yonga 02';
1347
+
1348
+ @override
1349
+ String get server_icon_computer => 'Bilgisayar';
1350
+
1351
+ @override
1352
+ String get server_icon_laptop => 'Dizüstü Bilgisayar';
1353
+
1354
+ @override
1355
+ String get server_icon_terminal => 'Bilgisayar Terminali';
1356
+
1357
+ @override
1358
+ String get server_icon_code => 'Kod';
1359
+
1360
+ @override
1361
+ String get server_icon_ai_brain => 'Yapay Zeka Beyin';
1362
+
1363
+ @override
1364
+ String get server_icon_ai_brain2 => 'Yapay Zeka Beyin 02';
1365
+
1366
+ @override
1367
+ String get server_icon_ai_cloud => 'Yapay Zeka Bulut';
1368
+
1369
+ @override
1370
+ String get server_icon_ai_network => 'Yapay Zeka Ağı';
1371
+
1372
+ @override
1373
+ String get server_icon_ai_chat => 'Yapay Zeka Sohbet';
1374
+
1375
+ @override
1376
+ String get server_icon_cellular => 'Hücresel Ağ';
1377
+
1378
+ @override
1379
+ String get server_icon_plug1 => 'Fiş 01';
1380
+
1381
+ @override
1382
+ String get server_icon_plug2 => 'Fiş 02';
1383
+
1384
+ @override
1385
+ String get server_icon_bot => 'Bot';
1386
+
1387
+ @override
1388
+ String get server_icon_bot2 => 'Bot 02';
1389
+
1390
+ @override
1391
+ String get server_icon_robotic => 'Robotik';
1392
+
1393
+ @override
1394
+ String get server_icon_rocket => 'Roket';
1395
+
1396
+ @override
1397
+ String get server_icon_star => 'Yıldız';
1398
+
1399
+ @override
1400
+ String get server_icon_settings1 => 'Ayarlar 01';
1401
+
1402
+ @override
1403
+ String get server_icon_settings2 => 'Ayarlar 02';
1404
+
1405
+ @override
1406
+ String get server_icon_home1 => 'Ev 01';
1407
+
1408
+ @override
1409
+ String get server_icon_home2 => 'Ev 02';
1410
+
1411
+ @override
1412
+ String get server_icon_folder1 => 'Klasör 01';
1413
+
1414
+ @override
1415
+ String get server_icon_folder2 => 'Klasör 02';
1416
+
1417
+ @override
1418
+ String get server_icon_file1 => 'Dosya 01';
1419
+
1420
+ @override
1421
+ String get server_icon_lock => 'Kilit';
1422
+
1423
+ @override
1424
+ String get server_icon_key => 'Anahtar 01';
1425
+
1426
+ @override
1427
+ String get server_icon_link => 'Bağlantı 01';
1428
+
1429
+ @override
1430
+ String get server_icon_globe => 'Dünya';
1431
+
1432
+ @override
1433
+ String get server_icon_api => 'API';
1434
+
1435
+ @override
1436
+ String get server_icon_arrow_right => 'Sağ Ok 01';
1437
+
1438
+ @override
1439
+ String get server_icon_check => 'Onay Dairesi';
1440
+
1441
+ @override
1442
+ String get server_icon_alert => 'Uyarı Dairesi';
1443
+
1444
+ @override
1445
+ String get server_icon_info => 'Bilgi Circle';
1446
+
1447
+ @override
1448
+ String get server_icon_zap => 'Hızlı Yıldırım';
1449
+
1450
+ @override
1451
+ String get server_icon_cloud_upload => 'Buluta Yükle';
1452
+
1453
+ @override
1454
+ String get server_icon_cloud_download => 'Buluttan İndir';
1455
+
1456
+ @override
1457
+ String get server_icon_refresh => 'Yenile';
1458
+
1459
+ @override
1460
+ String get server_icon_hard_drive => 'Sabit Sürücü';
1461
+
1462
+ @override
1463
+ String get server_icon_drive => 'Sürücü';
1464
+
1465
+ @override
1466
+ String get personas_title => 'Personalar';
1467
+
1468
+ @override
1469
+ String get persona_category_general => 'Genel';
1470
+
1471
+ @override
1472
+ String get persona_category_coding => 'Kodlama';
1473
+
1474
+ @override
1475
+ String get persona_category_education => 'Eğitim';
1476
+
1477
+ @override
1478
+ String get persona_category_creative => 'Yaratıcı';
1479
+
1480
+ @override
1481
+ String get persona_builtin_section => 'YERLEŞİK';
1482
+
1483
+ @override
1484
+ String get persona_my_section => 'PERSONALARIM';
1485
+
1486
+ @override
1487
+ String get clone_edit => 'Clone & Düzenle';
1488
+
1489
+ @override
1490
+ String get builtin_badge => 'Yerleşik';
1491
+
1492
+ @override
1493
+ String get no_personas_found => 'Persona bulunamadı';
1494
+
1495
+ @override
1496
+ String get no_personas_desc =>
1497
+ 'Yapay zeka davranışını özelleştirmek için ilk personanızı oluşturun.';
1498
+
1499
+ @override
1500
+ String get edit_persona => 'Personayı Düzenle';
1501
+
1502
+ @override
1503
+ String get create_persona => 'Persona Oluştur';
1504
+
1505
+ @override
1506
+ String get create_persona_button => 'Oluştur';
1507
+
1508
+ @override
1509
+ String get emoji_label => 'Emoji';
1510
+
1511
+ @override
1512
+ String get name_label => 'İsim';
1513
+
1514
+ @override
1515
+ String get my_persona_hint => 'Personam';
1516
+
1517
+ @override
1518
+ String get category_label => 'Kategori';
1519
+
1520
+ @override
1521
+ String get description_optional => 'Açıklama (isteğe bağlı)';
1522
+
1523
+ @override
1524
+ String get description_hint => 'Bu persona ne yapar...';
1525
+
1526
+ @override
1527
+ String get system_prompt => 'Sistem Yönergesi';
1528
+
1529
+ @override
1530
+ String character_count_max(int currentLen) {
1531
+ return '$currentLen/4000';
1532
+ }
1533
+
1534
+ @override
1535
+ String get no_prompt_placeholder => 'Henüz yönerge yok...';
1536
+
1537
+ @override
1538
+ String get prompt_hint => 'Sen yardımcı bir asistansın...';
1539
+
1540
+ @override
1541
+ String get prompt_required => 'Sistem yönergesi gereklidir';
1542
+
1543
+ @override
1544
+ String get prompt_max_chars => 'En fazla 4000 karakter';
1545
+
1546
+ @override
1547
+ String get advanced_settings => 'Advanced Ayarlar';
1548
+
1549
+ @override
1550
+ String get temperature_label => 'Sıcaklık (0.0-2.0)';
1551
+
1552
+ @override
1553
+ String get top_p_label => 'Top P (0.0-1.0)';
1554
+
1555
+ @override
1556
+ String get temp_hint => '0.7';
1557
+
1558
+ @override
1559
+ String get top_p_hint => '0.9';
1560
+
1561
+ @override
1562
+ String get range_0_2 => '0.0-2.0';
1563
+
1564
+ @override
1565
+ String get range_0_1 => '0.0-1.0';
1566
+
1567
+ @override
1568
+ String get persona_updated => 'Persona güncellendi';
1569
+
1570
+ @override
1571
+ String get persona_created => 'Persona oluşturuldu';
1572
+
1573
+ @override
1574
+ String get tts_models_title => 'Text To Speech Modeller';
1575
+
1576
+ @override
1577
+ String get always_available => 'Her zaman kullanılabilir';
1578
+
1579
+ @override
1580
+ String get tts_system_desc =>
1581
+ 'Cihazınızın yerleşik metin okuma motorunu kullanır.\nİndirme gerekmez. Ses seçimi cihazınızın sistem ayarlarını kullanır.';
1582
+
1583
+ @override
1584
+ String get downloading_status => 'İndiriliyor...';
1585
+
1586
+ @override
1587
+ String tts_kitten_desc(String size) {
1588
+ return '8 ifade dolu ses içeren şimşek hızında nöral TTS.\n$size indirme gerektirir.';
1589
+ }
1590
+
1591
+ @override
1592
+ String tts_piper_desc(String size) {
1593
+ return '2 ifade dolu ses içeren hızlı çevrimdışı Piper sesleri.\nSes başına $size indirme gerektirir.';
1594
+ }
1595
+
1596
+ @override
1597
+ String engine_spec(String sizeMb, String ramMb, int voiceCount) {
1598
+ return '$sizeMb MB · $ramMb MB RAM · $voiceCount ses';
1599
+ }
1600
+
1601
+ @override
1602
+ String get on_device_models_title => 'On-Device Modeller';
1603
+
1604
+ @override
1605
+ String get settings_huggingface_token => 'Hugging Face Jetonu (İsteğe Bağlı)';
1606
+
1607
+ @override
1608
+ String get settings_huggingface_token_desc =>
1609
+ 'Yalnızca kapalı modeller (örn. Gemma) için gereklidir. huggingface.co/settings/tokens adresinden edinin.';
1610
+
1611
+ @override
1612
+ String get settings_huggingface_token_set => 'Jeton kaydedildi';
1613
+
1614
+ @override
1615
+ String get settings_huggingface_token_cleared => 'Jeton temizlendi';
1616
+
1617
+ @override
1618
+ String get model_requires_huggingface_token =>
1619
+ 'Hugging Face jetonu gerektirir';
1620
+
1621
+ @override
1622
+ String get model_missing_huggingface_token =>
1623
+ 'This model is gated on Hugging Face. Add a token in Ayarlar → On-Device Inference to download it.';
1624
+
1625
+ @override
1626
+ String get set_huggingface_token => 'Jetonu ayarla';
1627
+
1628
+ @override
1629
+ String get clear_huggingface_token => 'Temizle';
1630
+
1631
+ @override
1632
+ String get edit_huggingface_token_dialog_title =>
1633
+ 'Hugging Face Erişim Jetonu';
1634
+
1635
+ @override
1636
+ String get huggingface_token_dialog_hint => 'hf_…';
1637
+
1638
+ @override
1639
+ String get server_type_ollama_desc =>
1640
+ 'Yerel yapay zeka motoru. API anahtarı gerekmez.';
1641
+
1642
+ @override
1643
+ String get server_type_on_device_desc =>
1644
+ 'Telefonunuzda çalışır. Bazı modeller Hugging Face jetonu gerektirir.';
1645
+
1646
+ @override
1647
+ String get server_type_lm_studio_desc =>
1648
+ 'Yerel API sunucusu. API anahtarı gerekmez.';
1649
+
1650
+ @override
1651
+ String get available_models => 'Available Modeller';
1652
+
1653
+ @override
1654
+ String get device_memory => 'Cihaz Belleği';
1655
+
1656
+ @override
1657
+ String get ram_usage => 'RAM Kullanımı';
1658
+
1659
+ @override
1660
+ String get memory_healthy => 'Sağlıklı';
1661
+
1662
+ @override
1663
+ String get memory_critical => 'Kritik';
1664
+
1665
+ @override
1666
+ String get memory_low => 'Düşük';
1667
+
1668
+ @override
1669
+ String ram_used(String percent) {
1670
+ return '%$percent kullanılıyor';
1671
+ }
1672
+
1673
+ @override
1674
+ String get available_ram => 'Kullanılabilir RAM';
1675
+
1676
+ @override
1677
+ String get total_capacity => 'Toplam Kapasite';
1678
+
1679
+ @override
1680
+ String get loaded_status => 'Yüklendi';
1681
+
1682
+ @override
1683
+ String get inference_backend => 'Inference Geriend';
1684
+
1685
+ @override
1686
+ String get backend_ios_notice =>
1687
+ 'iOS\'ta yalnızca CPU arka ucu kullanılabilir.';
1688
+
1689
+ @override
1690
+ String get backend_cpu_desc => 'Tüm cihazlarda çalışır. En uyumlusu.';
1691
+
1692
+ @override
1693
+ String get backend_gpu_desc =>
1694
+ 'OpenCL hızlandırma. Desteklenen cihazlarda daha hızlı.';
1695
+
1696
+ @override
1697
+ String get backend_npu_desc =>
1698
+ 'Üretici NPU\'su (Qualcomm/MediaTek). En hızlı çıkarım.';
1699
+
1700
+ @override
1701
+ String get select_model_title => 'Model Seç';
1702
+
1703
+ @override
1704
+ String get refresh_models => 'Modelleri yenile';
1705
+
1706
+ @override
1707
+ String get search_models_hint => 'Modelleri ara...';
1708
+
1709
+ @override
1710
+ String get no_server_connected => 'Bağlı sunucu yok';
1711
+
1712
+ @override
1713
+ String get add_server_first =>
1714
+ 'Mevcut modelleri görmek için önce bir sunucu ekleyin.';
1715
+
1716
+ @override
1717
+ String get failed_load_models => 'Başarısız to load models';
1718
+
1719
+ @override
1720
+ String get no_models_available => 'Mevcut model yok';
1721
+
1722
+ @override
1723
+ String no_models_match(String searchQuery) {
1724
+ return '\"$searchQuery\" ile eşleşen model yok';
1725
+ }
1726
+
1727
+ @override
1728
+ String model_load_failed(String error) {
1729
+ return 'Başarısız to load model: $error';
1730
+ }
1731
+
1732
+ @override
1733
+ String model_unloaded_ollama(String name) {
1734
+ return '$name için bellekten çıkarma istendi. Ollama ulaşılabilirse model hemen serbest bırakılır.';
1735
+ }
1736
+
1737
+ @override
1738
+ String model_unloaded_success(String name) {
1739
+ return '$name başarıyla bellekten çıkarıldı';
1740
+ }
1741
+
1742
+ @override
1743
+ String model_unload_failed(String error) {
1744
+ return 'Başarısız to unload model: $error';
1745
+ }
1746
+
1747
+ @override
1748
+ String get unload_from_server => 'Sunucudan bellekten çıkar';
1749
+
1750
+ @override
1751
+ String context_chip(String ctx) {
1752
+ return '$ctx bağlam';
1753
+ }
1754
+
1755
+ @override
1756
+ String get unload_all_models => 'Tümünü bellekten çıkar';
1757
+
1758
+ @override
1759
+ String loaded_models_count(int count) {
1760
+ return '$count yüklendi';
1761
+ }
1762
+
1763
+ @override
1764
+ String get all_models_unloaded => 'Tüm modeller bellekten çıkarıldı';
1765
+
1766
+ @override
1767
+ String get branch_chat => 'Sohbeti Dallandır';
1768
+
1769
+ @override
1770
+ String get branch_chat_desc => 'Bu mesajdan yeni bir sohbet dalı oluşturun';
1771
+
1772
+ @override
1773
+ String get edit_assistant_message_desc =>
1774
+ 'Düzenle the assistant response text.';
1775
+
1776
+ @override
1777
+ String switch_to_model(String modelName, Object model) {
1778
+ return '$modelName modeline geç';
1779
+ }
1780
+
1781
+ @override
1782
+ String download_notification_title(String modelName) {
1783
+ return '$modelName indiriliyor...';
1784
+ }
1785
+
1786
+ @override
1787
+ String get download_complete_notification => 'İndirme tamamlandı!';
1788
+
1789
+ @override
1790
+ String download_complete_body(String modelName) {
1791
+ return '$modelName başarıyla indirildi.';
1792
+ }
1793
+
1794
+ @override
1795
+ String download_failed_notification(String error) {
1796
+ return 'İndirme başarısız: $error';
1797
+ }
1798
+
1799
+ @override
1800
+ String download_failed_body(String modelName) {
1801
+ return 'Başarısız to download $modelName.';
1802
+ }
1803
+
1804
+ @override
1805
+ String get engine_name_system => 'Sistem TTS';
1806
+
1807
+ @override
1808
+ String get engine_tagline_system => 'Cihazın yerleşik motoru';
1809
+
1810
+ @override
1811
+ String get engine_name_kitten => 'Kitten TTS';
1812
+
1813
+ @override
1814
+ String get engine_tagline_kitten => 'Yüksek hızlı nöral TTS';
1815
+
1816
+ @override
1817
+ String get engine_name_sherpa => 'Sherpa ONNX VITS';
1818
+
1819
+ @override
1820
+ String get engine_tagline_sherpa => 'Çevrimdışı Piper sesleri';
1821
+
1822
+ @override
1823
+ String get voice_jasper => 'Jasper';
1824
+
1825
+ @override
1826
+ String get voice_bella => 'Bella';
1827
+
1828
+ @override
1829
+ String get voice_bruno => 'Bruno';
1830
+
1831
+ @override
1832
+ String get voice_luna => 'Luna';
1833
+
1834
+ @override
1835
+ String get voice_hugo => 'Hugo';
1836
+
1837
+ @override
1838
+ String get voice_rosie => 'Rosie';
1839
+
1840
+ @override
1841
+ String get voice_leo => 'Leo';
1842
+
1843
+ @override
1844
+ String get voice_kiki => 'Kiki';
1845
+
1846
+ @override
1847
+ String get voice_lessac => 'Lessac (ABD)';
1848
+
1849
+ @override
1850
+ String get voice_ryan => 'Ryan (ABD)';
1851
+
1852
+ @override
1853
+ String get model_qwen_3 => 'Qwen 3 0.6B';
1854
+
1855
+ @override
1856
+ String get model_qwen_3_desc =>
1857
+ 'En küçük genel amaçlı sohbet modeli. Hızlı yanıtlar, düşük bellek kullanımı.';
1858
+
1859
+ @override
1860
+ String get model_license_apache => 'Apache-2.0';
1861
+
1862
+ @override
1863
+ String get model_qwen_25 => 'Qwen 2.5 1.5B Instruct';
1864
+
1865
+ @override
1866
+ String get model_qwen_25_desc =>
1867
+ 'Dengeli kalite ve boyut. Genel konuşmalar için iyidir.';
1868
+
1869
+ @override
1870
+ String get model_deepseek => 'DeepSeek R1 Distill Qwen 1.5B';
1871
+
1872
+ @override
1873
+ String get model_deepseek_desc =>
1874
+ 'Mantık yürütme ve düşünce zinciri modeli. Mantıksal görevler için en iyisidir.';
1875
+
1876
+ @override
1877
+ String get model_license_mit => 'MIT';
1878
+
1879
+ @override
1880
+ String get model_gemma => 'Gemma 4 E2B Instruct';
1881
+
1882
+ @override
1883
+ String get model_gemma_desc =>
1884
+ 'Google amiral gemisi modeli. En yüksek kalite, daha fazla RAM gerektirir.';
1885
+
1886
+ @override
1887
+ String export_header(String date) {
1888
+ return '*LocalMind üzerinden dışa aktarıldı — $date*';
1889
+ }
1890
+
1891
+ @override
1892
+ String get export_role_user => '## 👤 Kullanıcı';
1893
+
1894
+ @override
1895
+ String get export_role_assistant => '## 🤖 Asistan';
1896
+
1897
+ @override
1898
+ String get export_role_system => '## ⚙️ Sistem';
1899
+
1900
+ @override
1901
+ String get export_role_tool => '## 🔧 Araç';
1902
+
1903
+ @override
1904
+ String get export_text_user => '[KULLANICI]';
1905
+
1906
+ @override
1907
+ String get export_text_assistant => '[ASİSTAN]';
1908
+
1909
+ @override
1910
+ String get export_text_system => '[SİSTEM]';
1911
+
1912
+ @override
1913
+ String get export_text_tool => '[ARAÇ]';
1914
+
1915
+ @override
1916
+ String get export_label_user => 'KULLANICI';
1917
+
1918
+ @override
1919
+ String get export_label_assistant => 'ASİSTAN';
1920
+
1921
+ @override
1922
+ String get export_label_system => 'SİSTEM';
1923
+
1924
+ @override
1925
+ String get export_label_tool => 'ARAÇ';
1926
+
1927
+ @override
1928
+ String get select_model_hint => 'Sohbete başlamak için bir model seçin';
1929
+
1930
+ @override
1931
+ String get test_notification_title => 'Test bildirimi';
1932
+
1933
+ @override
1934
+ String get test_notification_body =>
1935
+ 'Bu, model indirme ilerlemesi için bir test bildirimidir.';
1936
+
1937
+ @override
1938
+ String get tts_supports_background =>
1939
+ 'Yerel ses olarak arka planda oynatmayı destekler';
1940
+
1941
+ @override
1942
+ String get tts_other_services_background_note =>
1943
+ 'Not: Diğer TTS servisleri yerel ses olarak arka planda oynatmayı destekler.';
1944
+
1945
+ @override
1946
+ String get gguf_imported_models_title => 'İçe aktarılan GGUF modelleri';
1947
+
1948
+ @override
1949
+ String get gguf_imported_models_empty_subtitle =>
1950
+ 'Cihazınızdan bir GGUF aktarın veya Hugging Face\'ten ekleyin. İçe aktarılan modeller llama.cpp ile yerel çalışır.';
1951
+
1952
+ @override
1953
+ String get gguf_imported_models_ready =>
1954
+ 'yerel çıkarım için hazır içe aktarılan modeller.';
1955
+
1956
+ @override
1957
+ String get gguf_curated_models_subtitle =>
1958
+ 'LocalMind içinde indirebileceğiniz ve yönetebileceğiniz özel cihaz üstü modeller.';
1959
+
1960
+ @override
1961
+ String get gguf_only_supported =>
1962
+ 'Bu içe aktarma için yalnızca GGUF modelleri desteklenir.';
1963
+
1964
+ @override
1965
+ String get gguf_imported_from_local_file => 'yerel dosyadan içe aktarıldı.';
1966
+
1967
+ @override
1968
+ String get gguf_import_failed => 'Başarısız to import GGUF model';
1969
+
1970
+ @override
1971
+ String get gguf_imported_from_huggingface =>
1972
+ 'Hugging Face\'ten içe aktarıldı.';
1973
+
1974
+ @override
1975
+ String get gguf_import_canceled => 'GGUF içe aktarma iptal edildi.';
1976
+
1977
+ @override
1978
+ String get gguf_enter_huggingface_url =>
1979
+ 'Bir Hugging Face GGUF URL\'si girin.';
1980
+
1981
+ @override
1982
+ String get gguf_only_official_huggingface_urls =>
1983
+ 'Yalnızca resmi Hugging Face GGUF URL\'leri desteklenir.';
1984
+
1985
+ @override
1986
+ String get gguf_use_https_url =>
1987
+ 'GGUF içe aktarımı için HTTPS Hugging Face URL\'si kullanın.';
1988
+
1989
+ @override
1990
+ String get gguf_url_must_point_to_file =>
1991
+ 'Hugging Face URL\'si doğrudan bir .gguf dosyasına işaret etmelidir.';
1992
+
1993
+ @override
1994
+ String get gguf_unable_to_detect_file_name => 'GGUF dosya adı belirlenemedi.';
1995
+
1996
+ @override
1997
+ String get gguf_download_empty => 'İndirilen GGUF dosyası boş veya eksik.';
1998
+
1999
+ @override
2000
+ String get gguf_selected_file_missing =>
2001
+ 'Seçilen model dosyası mevcut değil.';
2002
+
2003
+ @override
2004
+ String get gguf_import_action => 'GGUF İçe Aktar';
2005
+
2006
+ @override
2007
+ String get gguf_overview_title => 'Kendi GGUF modellerinizi getirin';
2008
+
2009
+ @override
2010
+ String get gguf_overview_subtitle =>
2011
+ 'Yerel depolamadan bir .gguf dosyası aktarın veya doğrudan Hugging Face\'ten indirin. İçe aktarılan modeller bu cihazda kalır ve llama.cpp ile yüklenir.';
2012
+
2013
+ @override
2014
+ String get gguf_imported_count_label => 'içe aktarıldı';
2015
+
2016
+ @override
2017
+ String get gguf_local_files_label => 'yerel dosyalar';
2018
+
2019
+ @override
2020
+ String get gguf_huggingface_label => 'Hugging Face';
2021
+
2022
+ @override
2023
+ String get gguf_import_local_title => 'Yerel GGUF İçe Aktar';
2024
+
2025
+ @override
2026
+ String get gguf_import_local_subtitle =>
2027
+ 'Bu cihazdan bir .gguf dosyası kopyalayın';
2028
+
2029
+ @override
2030
+ String get gguf_import_huggingface_title => 'Hugging Face\'ten İçe Aktar';
2031
+
2032
+ @override
2033
+ String get gguf_import_huggingface_subtitle =>
2034
+ 'Bir GGUF URL\'si veya depo yolu yapıştırın';
2035
+
2036
+ @override
2037
+ String get gguf_no_imported_title => 'Henüz içe aktarılan GGUF modeli yok';
2038
+
2039
+ @override
2040
+ String get gguf_no_imported_subtitle =>
2041
+ 'Cihaz depolamanızdan kendi GGUF dosyanızı getirebilir veya bir .gguf dosyasına işaret eden bir Hugging Face URL\'si veya depo yolu yapıştırabilirsiniz.';
2042
+
2043
+ @override
2044
+ String get gguf_import_huggingface_dialog_title =>
2045
+ 'Import GGUF from Hugging Face';
2046
+
2047
+ @override
2048
+ String get gguf_import_huggingface_dialog_subtitle =>
2049
+ 'Paste a direct GGUF URL or a Hugging Face repo path like `owner/repo/blob/main/model.gguf`. Blob links are converted automatically.';
2050
+
2051
+ @override
2052
+ String get gguf_url_or_repo_path => 'GGUF URL or repo path';
2053
+
2054
+ @override
2055
+ String get paste => 'Paste';
2056
+
2057
+ @override
2058
+ String get gguf_browse => 'Browse GGUFs';
2059
+
2060
+ @override
2061
+ String get gguf_huggingface_token_ready => 'Hugging Face token ready';
2062
+
2063
+ @override
2064
+ String get gguf_huggingface_token_optional =>
2065
+ 'Token optional but recommended';
2066
+
2067
+ @override
2068
+ String get gguf_huggingface_token_ready_desc =>
2069
+ 'Your saved token will be used automatically for gated or private repositories.';
2070
+
2071
+ @override
2072
+ String get gguf_huggingface_token_optional_desc =>
2073
+ 'Requires a Hugging Face token. Add one in Ayarlar if this GGUF is gated or private.';
2074
+
2075
+ @override
2076
+ String get gguf_downloading => 'Downloading GGUF';
2077
+
2078
+ @override
2079
+ String get gguf_preparing => 'Preparing';
2080
+
2081
+ @override
2082
+ String get gguf_preparing_download => 'Preparing download...';
2083
+
2084
+ @override
2085
+ String get gguf_cancel_import => 'İptal import';
2086
+
2087
+ @override
2088
+ String get clipboard_empty => 'Clipboard is empty.';
2089
+
2090
+ @override
2091
+ String get could_not_open_huggingface => 'Could not open Hugging Face.';
2092
+
2093
+ @override
2094
+ String get gguf_paste_url_error =>
2095
+ 'Paste a Hugging Face GGUF URL or repo path.';
2096
+
2097
+ @override
2098
+ String get gguf_blob_link => 'Blob link';
2099
+
2100
+ @override
2101
+ String get gguf_repository_label => 'Repository';
2102
+
2103
+ @override
2104
+ String get gguf_detected_path_label => 'Detected path';
2105
+
2106
+ @override
2107
+ String get gguf_imported_section_label => 'Imported GGUF';
2108
+
2109
+ @override
2110
+ String get gguf_already_available => 'Already available on this device';
2111
+
2112
+ @override
2113
+ String get gguf_curated_models_short => 'Curated on-device models';
2114
+
2115
+ @override
2116
+ String get execute_tool_title => 'Execute Tool';
2117
+
2118
+ @override
2119
+ String get execute_tool_request_desc =>
2120
+ 'The model is requesting to execute the following tool:';
2121
+
2122
+ @override
2123
+ String get reject => 'Reject';
2124
+
2125
+ @override
2126
+ String get approve => 'Approve';
2127
+
2128
+ @override
2129
+ String get server_type_help =>
2130
+ 'Pick the provider before filling connection details.';
2131
+
2132
+ @override
2133
+ String get server_identity_title => 'Identity';
2134
+
2135
+ @override
2136
+ String get server_identity_desc =>
2137
+ 'Name this server and choose how it appears in the list.';
2138
+
2139
+ @override
2140
+ String get server_connection_title => 'Connection';
2141
+
2142
+ @override
2143
+ String get server_connection_desc =>
2144
+ 'Use the address and port exposed by your server.';
2145
+
2146
+ @override
2147
+ String get server_authentication_title => 'Authentication';
2148
+
2149
+ @override
2150
+ String get server_authentication_required_desc =>
2151
+ 'OpenRouter requires an API key before testing.';
2152
+
2153
+ @override
2154
+ String get server_authentication_optional_desc =>
2155
+ 'Leave the API key empty if this server does not require one.';
2156
+
2157
+ @override
2158
+ String get mcp_tools_title => 'MCP Araçları';
2159
+
2160
+ @override
2161
+ String get available_tools => 'Available tools';
2162
+
2163
+ @override
2164
+ String get unable_load_tools => 'Unable to load tools';
2165
+
2166
+ @override
2167
+ String get no_tools_registered => 'No tools registered';
2168
+
2169
+ @override
2170
+ String get no_tools_registered_desc =>
2171
+ 'Enable the example MCP server or add MCP integrations from chat settings.';
2172
+
2173
+ @override
2174
+ String get example_mcp_server_title => 'Example MCP server';
2175
+
2176
+ @override
2177
+ String get example_mcp_server_desc =>
2178
+ 'Registers example.echo and example.word_count through the same MCP tool provider used by external servers.';
2179
+
2180
+ @override
2181
+ String get disable_example_server => 'Disable example server';
2182
+
2183
+ @override
2184
+ String get enable_example_server => 'Enable example server';
2185
+
2186
+ @override
2187
+ String get built_in_label => 'Built-in';
2188
+
2189
+ @override
2190
+ String get highlights_label => 'Highlights';
2191
+
2192
+ @override
2193
+ String get built_with_label => 'Built with';
2194
+
2195
+ @override
2196
+ String get local_label => 'Local';
2197
+
2198
+ @override
2199
+ String get gguf_format_label => 'GGUF';
2200
+
2201
+ @override
2202
+ String get tool_status_requested => 'Requested';
2203
+
2204
+ @override
2205
+ String get tool_status_approved => 'Approved';
2206
+
2207
+ @override
2208
+ String get tool_status_rejected => 'Rejected';
2209
+
2210
+ @override
2211
+ String get tool_status_running => 'Running';
2212
+
2213
+ @override
2214
+ String get tool_status_done => 'Done';
2215
+
2216
+ @override
2217
+ String get tool_status_failed => 'Başarısız';
2218
+
2219
+ @override
2220
+ String get model_favorite_toggle => 'Toggle favorite';
2221
+
2222
+ @override
2223
+ String get model_note_label => 'Note';
2224
+
2225
+ @override
2226
+ String get model_note_hint => 'Add a note about this model…';
2227
+
2228
+ @override
2229
+ String get unload_models_before_load =>
2230
+ 'Unload all models before loading a new one';
2231
+
2232
+ @override
2233
+ String get temp_chat_keyboard_incognito =>
2234
+ 'Incognito keyboard in temporary chat';
2235
+
2236
+ @override
2237
+ String get temp_chat_keyboard_incognito_desc =>
2238
+ 'Disables keyboard learning and suggestions in temporary chats (e.g. SwiftKey incognito).';
2239
+
2240
+ @override
2241
+ String get resume_last_chat => 'Resume last chat on launch';
2242
+
2243
+ @override
2244
+ String get resume_last_chat_desc =>
2245
+ 'Restore your last open conversation when reopening the app.';
2246
+
2247
+ @override
2248
+ String get export_all_data => 'Export all data';
2249
+
2250
+ @override
2251
+ String get import_all_data => 'Import all data';
2252
+
2253
+ @override
2254
+ String get export_data_success => 'Geriup exported successfully';
2255
+
2256
+ @override
2257
+ String get import_data_success => 'Geriup imported successfully';
2258
+
2259
+ @override
2260
+ String import_data_failed(String error) {
2261
+ return 'Başarısız to import backup: $error';
2262
+ }
2263
+
2264
+ @override
2265
+ String get import_data_confirm =>
2266
+ 'Import conversations and custom personas from this backup? Existing items with the same IDs will be updated.';
2267
+
2268
+ @override
2269
+ String get import_settings_confirm =>
2270
+ 'Replace current settings with the imported backup?';
2271
+
2272
+ @override
2273
+ String get export_conversations => 'Export conversations';
2274
+
2275
+ @override
2276
+ String get import_conversations => 'Import conversations';
2277
+
2278
+ @override
2279
+ String get export_personas => 'Export personas';
2280
+
2281
+ @override
2282
+ String get import_personas => 'Import personas';
2283
+
2284
+ @override
2285
+ String get export_settings => 'Ayarları dışa aktar';
2286
+
2287
+ @override
2288
+ String get import_settings => 'Ayarları içe aktar';
2289
+
2290
+ @override
2291
+ String get export_all_zip => 'Tümünü dışa aktar (ZIP)';
2292
+
2293
+ @override
2294
+ String get import_all_zip => 'Tümünü içe aktar (ZIP)';
2295
+
2296
+ @override
2297
+ String get duplicate_chat => 'Sohbeti çoğalt';
2298
+
2299
+ @override
2300
+ String get duplicate_chat_success => 'Sohbet çoğaltıldı';
2301
+
2302
+ @override
2303
+ String get move_to_folder => 'Klasöre taşı';
2304
+
2305
+ @override
2306
+ String get remove_from_folder => 'Kaldır from folder';
2307
+
2308
+ @override
2309
+ String get create_folder => 'Klasör oluştur';
2310
+
2311
+ @override
2312
+ String get new_folder => 'Yeni klasör';
2313
+
2314
+ @override
2315
+ String get folder_name_hint => 'Örn. İş, Kişisel, Araştırma';
2316
+
2317
+ @override
2318
+ String get all_chats => 'Tümü';
2319
+
2320
+ @override
2321
+ String get unfiled_chats => 'Kategorisiz';
2322
+
2323
+ @override
2324
+ String get create => 'Oluştur';
2325
+
2326
+ @override
2327
+ String get server_path_prefix_label => 'API yol öneki';
2328
+
2329
+ @override
2330
+ String get server_path_prefix_hint => '/gizli-jetonunuz';
2331
+
2332
+ @override
2333
+ String get search_message_contents => 'Mesaj içeriklerini ara';
2334
+
2335
+ @override
2336
+ String get message_search_results => 'Mesaj eşleşmeleri';
2337
+
2338
+ @override
2339
+ String get saved_messages_title => 'Kaydedilen Mesajlar';
2340
+
2341
+ @override
2342
+ String get nav_saved_messages => 'Kaydedilenler';
2343
+
2344
+ @override
2345
+ String get saved_messages_empty =>
2346
+ 'Henüz kaydedilen mesaj yok. Seçenekler menüsünden bir mesajı yer imlerine ekleyin.';
2347
+
2348
+ @override
2349
+ String get save_message => 'Mesajı kaydet';
2350
+
2351
+ @override
2352
+ String get message_saved => 'Mesaj kaydedildi';
2353
+
2354
+ @override
2355
+ String token_count(int count) {
2356
+ return '$count token';
2357
+ }
2358
+
2359
+ @override
2360
+ String estimated_token_count(int count) {
2361
+ return '~$count token (tahmini)';
2362
+ }
2363
+
2364
+ @override
2365
+ String get test_tts_section_title => 'Sesi test et';
2366
+
2367
+ @override
2368
+ String get test_tts_hint => 'Mevcut TTS motorunu duymak için metin girin…';
2369
+
2370
+ @override
2371
+ String get test_speak_button => 'Konuş';
2372
+
2373
+ @override
2374
+ String get scroll_to_bottom => 'En aşağı kaydır';
2375
+
2376
+ @override
2377
+ String get generate_ai_response => 'Yapay zeka yanıtı üret';
2378
+
2379
+ @override
2380
+ String get no_response => 'Yanıt yok';
2381
+
2382
+ @override
2383
+ String get export => 'Dışa Aktar';
2384
+
2385
+ @override
2386
+ String get import => 'İçe Aktar';
2387
+
2388
+ @override
2389
+ String get conversations_label => 'Sohbetler';
2390
+
2391
+ @override
2392
+ String get personas_label => 'Personalar';
2393
+
2394
+ @override
2395
+ String get settings_label => 'Ayarlar';
2396
+
2397
+ @override
2398
+ String get export_conversation => 'Sohbeti Dışa Aktar';
2399
+
2400
+ @override
2401
+ String get tts_process_markdown => 'Konuşma için markdown\'ı işle';
2402
+
2403
+ @override
2404
+ String get tts_process_markdown_desc =>
2405
+ 'Sesli okunmadan önce **koyu** gibi biçimlendirmeleri temizle';
2406
+
2407
+ @override
2408
+ String get tts_skip_seconds => 'Atlama aralığı';
2409
+
2410
+ @override
2411
+ String get tts_skip_seconds_desc =>
2412
+ 'Oynatma sırasında ileri ve geri sarma adımı boyutu';
2413
+
2414
+ @override
2415
+ String tts_skip_seconds_value(int seconds) {
2416
+ return '${seconds}sn';
2417
+ }
2418
+
2419
+ @override
2420
+ String get preview_system_prompts => 'Sistem yönergelerini önizle';
2421
+
2422
+ @override
2423
+ String get welcome_message_1 => 'Bugün size nasıl yardımcı olabilirim?';
2424
+
2425
+ @override
2426
+ String get welcome_message_2 =>
2427
+ 'İstediğinizi sorun — hazır olduğunuzda buradayım.';
2428
+
2429
+ @override
2430
+ String get welcome_message_3 =>
2431
+ 'Verileriniz yerel olarak işlenir ve cihazınızdan asla ayrılmaz.';
2432
+
2433
+ @override
2434
+ String get welcome_message_4 =>
2435
+ 'Fikre mi ihtiyacınız var? Hızlı yönergelerden birini deneyin.';
2436
+
2437
+ @override
2438
+ String get temporary_chat => 'Geçici sohbet';
2439
+
2440
+ @override
2441
+ String get temporary_chat_desc => 'Sohbetler geçmişe kaydedilmez.';
2442
+
2443
+ @override
2444
+ String get temporary_chat_banner => 'Geçici sohbet — geçmişe kaydedilmez';
2445
+
2446
+ @override
2447
+ String get temporary_chat_save_warning_title =>
2448
+ 'Mesaj geçici sohbete kaydedilsin mi?';
2449
+
2450
+ @override
2451
+ String get temporary_chat_save_warning_body =>
2452
+ 'Bu sohbet geçicidir ve geçmişten gizlenir. Kaydedilen mesaj yine de Kaydedilen Mesajlar bölümünde görünecektir.';
2453
+
2454
+ @override
2455
+ String get save_to_history => 'Geçmişe kaydet';
2456
+
2457
+ @override
2458
+ String get share_conversation => 'Sohbeti paylaş';
2459
+
2460
+ @override
2461
+ String get download_tts_audio => 'Sesi indir';
2462
+
2463
+ @override
2464
+ String get tts_download_unavailable =>
2465
+ 'İndirme yalnızca Piper ve Kitten TTS için mevcuttur';
2466
+
2467
+ @override
2468
+ String get tts_download_no_audio => 'Henüz indirilecek ses yok';
2469
+
2470
+ @override
2471
+ String get tts_download_success => 'Ses kaydedildi';
2472
+
2473
+ @override
2474
+ String get return_to_chat => 'Sohbete dön';
2475
+
2476
+ @override
2477
+ String get return_to_temp_chat => 'Geçici sohbete dön';
2478
+
2479
+ @override
2480
+ String get insert_saved_message => 'Kaydedilen mesajı ekle';
2481
+
2482
+ @override
2483
+ String get insert_saved_message_desc =>
2484
+ 'Girdinize eklemek için kaydedilmiş bir mesaj seçin';
2485
+
2486
+ @override
2487
+ String get model_info => 'Model bilgisi';
2488
+
2489
+ @override
2490
+ String get model_name => 'Model adı';
2491
+
2492
+ @override
2493
+ String get model_identifier => 'Kimlik (Identifier)';
2494
+
2495
+ @override
2496
+ String get not_available => 'Mevcut değil';
2497
+
2498
+ @override
2499
+ String get save_message_folders => 'Mesajı kaydet';
2500
+
2501
+ @override
2502
+ String get remove_from_saved => 'Kaldır from saved';
2503
+
2504
+ @override
2505
+ String get message_already_saved => 'Kaydedildi';
2506
+
2507
+ @override
2508
+ String get stream_ttft => 'İlk tokene kadar geçen süre (TTFT)';
2509
+
2510
+ @override
2511
+ String get stream_tokens_per_sec => 'Saniyedeki token';
2512
+
2513
+ @override
2514
+ String get stream_stop_reason => 'Durdurma nedeni';
2515
+
2516
+ @override
2517
+ String get stream_input_tokens => 'Girdi token\'ları';
2518
+
2519
+ @override
2520
+ String get stream_output_tokens => 'Çıktı token\'ları';
2521
+
2522
+ @override
2523
+ String get stream_generation_time => 'Üretim süresi';
2524
+
2525
+ @override
2526
+ String get attach_image => 'Fotoğraflar';
2527
+
2528
+ @override
2529
+ String get attach_text_document => 'Belgeler';
2530
+
2531
+ @override
2532
+ String get attach_shortcut_images => 'Fotoğraflar';
2533
+
2534
+ @override
2535
+ String get attach_shortcut_documents => 'Dosyalar';
2536
+
2537
+ @override
2538
+ String get attach_shortcut_saved => 'Kaydedilenler';
2539
+
2540
+ @override
2541
+ String get add_attachment => 'Ek ekle';
2542
+
2543
+ @override
2544
+ String get add_to_chat => 'Sohbete ekle';
2545
+
2546
+ @override
2547
+ String get choose_what_to_attach => 'Ne eklemek istersiniz?';
2548
+
2549
+ @override
2550
+ String get choose_attachment_subtitle =>
2551
+ 'Mesajınıza eklemek için bir kaynak seçin';
2552
+
2553
+ @override
2554
+ String get photo_permission_denied =>
2555
+ 'Görsel eklemek için fotoğraf erişim izni gereklidir';
2556
+
2557
+ @override
2558
+ String get select_model_prompt => 'Model seçin';
2559
+
2560
+ @override
2561
+ String get characters_label => 'Karakter';
2562
+
2563
+ @override
2564
+ String get exit_temporary_chat_title => 'Geçici sohbetten çıkılsın mı?';
2565
+
2566
+ @override
2567
+ String get exit_temporary_chat_body =>
2568
+ 'Bu işlem mevcut geçici sohbeti atacak ve yeni sohbet ekranına dönecektir.';
2569
+
2570
+ @override
2571
+ String get saved_message_temp_snap_unavailable =>
2572
+ 'Bu mesaj geçici bir sohbetten kaydedildi ve orijinal konuşmasında açılamaz.';
2573
+
2574
+ @override
2575
+ String get filter_title => 'Filtrele';
2576
+
2577
+ @override
2578
+ String get filter_pinned => 'Sabitlenenler';
2579
+
2580
+ @override
2581
+ String get filter_archived => 'Arşivlenenler';
2582
+
2583
+ @override
2584
+ String get filter_temp_chats => 'Geçici sohbetler';
2585
+
2586
+ @override
2587
+ String get filter_user_messages => 'Kullanıcı mesajları';
2588
+
2589
+ @override
2590
+ String get filter_assistant_messages => 'Asistan mesajları';
2591
+
2592
+ @override
2593
+ String get archive_chat => 'Arşivle';
2594
+
2595
+ @override
2596
+ String get unarchive_chat => 'Arşivden Çıkar';
2597
+
2598
+ @override
2599
+ String conversation_message_count(int count) {
2600
+ String _temp0 = intl.Intl.pluralLogic(
2601
+ count,
2602
+ locale: localeName,
2603
+ other: '$count mesaj',
2604
+ one: '1 mesaj',
2605
+ );
2606
+ return '$_temp0';
2607
+ }
2608
+
2609
+ @override
2610
+ String conversation_character_count(int count) {
2611
+ return '$count krk';
2612
+ }
2613
+
2614
+ @override
2615
+ String get generate_title_with_ai => 'Yapay Zeka ile oluştur';
2616
+
2617
+ @override
2618
+ String get generating_title => 'Oluşturuluyor...';
2619
+
2620
+ @override
2621
+ String get generate_title_failed => 'Başlık oluşturulamadı';
2622
+
2623
+ @override
2624
+ String get lm_studio_model_browser_title => 'Modelleri gözden geçir';
2625
+
2626
+ @override
2627
+ String get lm_studio_model_search_hint =>
2628
+ 'Modelleri ad veya yazara göre ara…';
2629
+
2630
+ @override
2631
+ String get lm_studio_staff_picks => 'Öne çıkanlar';
2632
+
2633
+ @override
2634
+ String get lm_studio_community_models => 'Topluluk modelleri';
2635
+
2636
+ @override
2637
+ String get lm_studio_no_models => 'Model bulunamadı';
2638
+
2639
+ @override
2640
+ String lm_studio_models_count(int count) {
2641
+ return '$count model';
2642
+ }
2643
+
2644
+ @override
2645
+ String get lm_studio_browse_models => 'Gözden geçir ve indir';
2646
+
2647
+ @override
2648
+ String get lm_studio_model_search => 'LMS Model Arama';
2649
+
2650
+ @override
2651
+ String get lm_studio_downloads_title => 'İndirmeler';
2652
+
2653
+ @override
2654
+ String get lm_studio_choose_quant => 'Bir indirme seçeneği belirleyin';
2655
+
2656
+ @override
2657
+ String get lm_studio_use_default_quant => 'Varsayılanı kullan';
2658
+
2659
+ @override
2660
+ String get lm_studio_recommended => 'Önerilen';
2661
+
2662
+ @override
2663
+ String get lm_studio_clear_downloads => 'Tamamlananları temizle';
2664
+
2665
+ @override
2666
+ String get lm_studio_no_downloads => 'Henüz indirme yok';
2667
+
2668
+ @override
2669
+ String get lm_studio_downloads_disclaimer =>
2670
+ 'İndirmeler LM Studio ana bilgisayarında çalışır. Duraklatma, durdurma ve model silme işlemleri bu uygulama üzerinden değil, o bilgisayarda yapılmalıdır.';
2671
+
2672
+ @override
2673
+ String get lm_studio_staff_pick => 'Öne çıkan';
2674
+
2675
+ @override
2676
+ String get lm_studio_params => 'PARAMETRE';
2677
+
2678
+ @override
2679
+ String get lm_studio_arch => 'MİMARİ';
2680
+
2681
+ @override
2682
+ String get lm_studio_domain => 'ALAN';
2683
+
2684
+ @override
2685
+ String get lm_studio_format => 'FORMAT';
2686
+
2687
+ @override
2688
+ String get lm_studio_vision => 'Görüş';
2689
+
2690
+ @override
2691
+ String get lm_studio_tool_use => 'Araç kullanımı';
2692
+
2693
+ @override
2694
+ String get lm_studio_reasoning => 'Mantık yürütme';
2695
+
2696
+ @override
2697
+ String get lm_studio_download_options => 'İndirme seçenekleri';
2698
+
2699
+ @override
2700
+ String get lm_studio_download => 'İndir';
2701
+
2702
+ @override
2703
+ String lm_studio_download_size(String size) {
2704
+ return '$size İndir';
2705
+ }
2706
+
2707
+ @override
2708
+ String lm_studio_downloading_percent(int percent) {
2709
+ return 'İndiriliyor %$percent';
2710
+ }
2711
+
2712
+ @override
2713
+ String get lm_studio_readme_unavailable =>
2714
+ 'Bu model için README mevcut değil.';
2715
+
2716
+ @override
2717
+ String get lm_studio_full_gpu_offload => 'Tam GPU yük devretmesi mümkün';
2718
+
2719
+ @override
2720
+ String get lm_studio_partial_gpu_offload => 'Kısmi GPU yük devretmesi mümkün';
2721
+
2722
+ @override
2723
+ String get lm_studio_likely_too_large => 'Muhtemelen çok büyük';
2724
+
2725
+ @override
2726
+ String get lm_studio_available_ram_gb =>
2727
+ 'Kullanılabilir RAM (GB, isteğe bağlı)';
2728
+
2729
+ @override
2730
+ String get lm_studio_available_vram_gb =>
2731
+ 'Kullanılabilir VRAM (GB, isteğe bağlı)';
2732
+
2733
+ @override
2734
+ String get lm_studio_memory_settings_title => 'Öneriler için bellek';
2735
+
2736
+ @override
2737
+ String get lm_studio_memory_settings_desc =>
2738
+ 'Model tarayıcısında modellerin makinenize sığıp sığmadığını tahmin etmek için kullanılır.';
2739
+
2740
+ @override
2741
+ String get think_button_label => 'Düşün';
2742
+
2743
+ @override
2744
+ String get thinking_mode_title => 'Düşünme modu';
2745
+
2746
+ @override
2747
+ String get reasoning_effort_low => 'Düşük';
2748
+
2749
+ @override
2750
+ String get reasoning_effort_medium => 'Orta';
2751
+
2752
+ @override
2753
+ String get reasoning_effort_high => 'Yüksek';
2754
+
2755
+ @override
2756
+ String get could_not_read_file => 'Dosya okunamadı';
2757
+
2758
+ @override
2759
+ String get server_offline => 'Sunucu Çevrimdışı';
2760
+
2761
+ @override
2762
+ String get could_not_establish_connection =>
2763
+ 'Sunucuya bağlantı kurulamadı. Lütfen sunucunuzun çalışıp çalışmadığını ve ana bilgisayar/port ayarlarının doğru olup olmadığını kontrol edin.';
2764
+
2765
+ @override
2766
+ String get retry_connection => 'Bağlantıyı Yeniden Dene';
2767
+
2768
+ @override
2769
+ String get tokens_label => 'Token\'lar';
2770
+
2771
+ @override
2772
+ String get enter_context_length => 'Bağlam uzunluğunu girin...';
2773
+
2774
+ @override
2775
+ String get openrouter_disclosure =>
2776
+ 'Bu sağlayıcıya bağlanarak sohbet mesajlarınız ve girdileriniz onların sunucularına gönderilir. LocalMind sohbetlerinizi izlemez veya saklamaz.';
2777
+
2778
+ @override
2779
+ String get welcome_message_cloud =>
2780
+ 'Mesajlarınız bağlı olan sağlayıcınıza gönderilir.';
2781
+
2782
+ @override
2783
+ String get privacy_policy => 'Gizlilik Politikası';
2784
+
2785
+ @override
2786
+ String get cloud_sync => 'S3 Bulut Eşitleme';
2787
+
2788
+ @override
2789
+ String get cloud_sync_description =>
2790
+ 'Kendi S3 uyumlu sunucunuza uçtan uca şifreli eşitleme';
2791
+
2792
+ @override
2793
+ String get cloud_sync_endpoint => 'Uç Nokta URL\'si (Endpoint)';
2794
+
2795
+ @override
2796
+ String get cloud_sync_bucket => 'Kova (Bucket)';
2797
+
2798
+ @override
2799
+ String get cloud_sync_region => 'Bölge (Region)';
2800
+
2801
+ @override
2802
+ String get cloud_sync_prefix => 'Önek (Prefix)';
2803
+
2804
+ @override
2805
+ String get cloud_sync_access_key => 'Erişim Anahtarı Kimliği';
2806
+
2807
+ @override
2808
+ String get cloud_sync_secret_key => 'Gizli Erişim Anahtarı';
2809
+
2810
+ @override
2811
+ String get cloud_sync_session_token => 'Oturum Jetonu (İsteğe Bağlı)';
2812
+
2813
+ @override
2814
+ String get cloud_sync_passphrase => 'Şifreleme Parolası';
2815
+
2816
+ @override
2817
+ String get cloud_sync_confirm_passphrase => 'Parolayı Onayla';
2818
+
2819
+ @override
2820
+ String get cloud_sync_path_style => 'Yol stili adresleme kullan';
2821
+
2822
+ @override
2823
+ String get cloud_sync_allow_http => 'Güvensiz HTTP\'ye izin ver';
2824
+
2825
+ @override
2826
+ String get cloud_sync_http_warning =>
2827
+ 'HTTP istek meta verilerini ve kimlik bilgilerini ağa açık hale getirir. Yalnızca güvenilir bir yerel S3 sunucusu için kullanın.';
2828
+
2829
+ @override
2830
+ String get cloud_sync_test => 'Bağlantıyı test et';
2831
+
2832
+ @override
2833
+ String get cloud_sync_enable => 'Şifreli eşitlemeyi etkinleştir';
2834
+
2835
+ @override
2836
+ String get cloud_sync_now => 'Şimdi eşitle';
2837
+
2838
+ @override
2839
+ String get cloud_sync_disconnect => 'Bu cihazın bağlantısını kes';
2840
+
2841
+ @override
2842
+ String get cloud_sync_last_synced => 'Son eşitleme';
2843
+
2844
+ @override
2845
+ String get cloud_sync_never => 'Hiçbir zaman';
2846
+
2847
+ @override
2848
+ String get cloud_sync_conflicts => 'Çakışmalar korundu';
2849
+
2850
+ @override
2851
+ String get cloud_sync_passphrase_mismatch => 'Parolalar eşleşmiyor';
2852
+
2853
+ @override
2854
+ String get crash_report_title => 'Bir şeyler yanlış gitti';
2855
+
2856
+ @override
2857
+ String get crash_report_stack_trace => 'Yığın izleme (Stack trace)';
2858
+
2859
+ @override
2860
+ String get crash_report_tap_to_expand => 'Genişletmek için dokunun';
2861
+
2862
+ @override
2863
+ String get crash_report_button => 'Bu çökmeyi bildir';
2864
+
2865
+ @override
2866
+ String get crash_try_again => 'Tekrar dene';
2867
+
2868
+ @override
2869
+ String get crash_report_empty_stack => '<boş>';
2870
+
2871
+ @override
2872
+ String get crash_report_disclaimer =>
2873
+ 'Bildirme işlemi, teşhis bilgileri önceden doldurulmuş olarak GitHub\'ı açar. Kontrol sizdedir — hiçbir şey otomatik olarak gönderilmez. Lütfen göndermeden önce hassas içerikleri gözden geçirin ve kaldırın.';
2874
+
2875
+ @override
2876
+ String get crash_report_copied => 'Panoya kopyalandı';
2877
+
2878
+ @override
2879
+ String get report_a_problem => 'Sorun bildir';
2880
+
2881
+ @override
2882
+ String get rename_folder => 'Klasörü yeniden adlandır';
2883
+
2884
+ @override
2885
+ String get delete_folder => 'Sil folder';
2886
+
2887
+ @override
2888
+ String get delete_folder_title => 'Sil folder?';
2889
+
2890
+ @override
2891
+ String delete_folder_body(String name) {
2892
+ return 'Silmek istediğinizden emin misiniz \"$name\"? Sohbetler or saved messages inside will be moved back to \"Unfiled\". Bu işlem geri alınamaz.';
2893
+ }
2894
+
2895
+ @override
2896
+ String get folder_name_required => 'Lütfen bir klasör adı girin';
2897
+
2898
+ @override
2899
+ String get model_required_toast => 'Önce bir model seçmeniz gerekiyor';
2900
+}
lib/l10n/app_tr.arb
new
+882
@@ -0,0 +1,882 @@
1
+{
2
+ "@@locale": "tr",
3
+ "app_name": "LocalMind",
4
+ "app_tagline": "Sizin Yapay Zekanız. Sizin Cihazınız. Sizin Kurallarınız.",
5
+ "app_version": "1.0.0",
6
+ "cancel": "İptal",
7
+ "confirm": "Onayla",
8
+ "delete": "Sil",
9
+ "save": "Kaydet",
10
+ "retry": "Yeniden Dene",
11
+ "close": "Kapat",
12
+ "done": "Bitti",
13
+ "continue_action": "Devam Et",
14
+ "skip": "Atla",
15
+ "install": "Yükle",
16
+ "download": "İndir",
17
+ "resume": "Devam Ettir",
18
+ "pause": "Duraklat",
19
+ "stop": "Durdur",
20
+ "edit": "Düzenle",
21
+ "preview": "Önizleme",
22
+ "unload": "Bellekten Çıkar",
23
+ "load": "Yükle",
24
+ "rename": "Yeniden Adlandır",
25
+ "pin": "Sabitle",
26
+ "unpin": "Sabitlemeyi Kaldır",
27
+ "share": "Paylaş",
28
+ "copy": "Kopyala",
29
+ "copied": "Kopyalandı!",
30
+ "copied_to_clipboard": "Panoya kopyalandı",
31
+ "select": "Seç",
32
+ "active": "Aktif",
33
+ "all": "Tümü",
34
+ "none": "Hiçbiri",
35
+ "none_selected": "Hiçbiri seçilmedi",
36
+ "online": "Çevrimiçi",
37
+ "connected": "Bağlandı",
38
+ "checking": "Kontrol ediliyor",
39
+ "offline": "Çevrimdışı",
40
+ "error": "Hata",
41
+ "unknown_error": "Bilinmeyen hata",
42
+ "not_now": "Şimdi Değil",
43
+ "enable": "Etkinleştir",
44
+ "proceed_anyway": "Yine de Devam Et",
45
+ "test_connection": "Bağlantıyı Test Et",
46
+ "testing": "Test ediliyor...",
47
+ "connection_successful": "Bağlantı başarılı!",
48
+ "connection_failed": "Bağlantı başarısız. Ayarlarınızı kontrol edin.",
49
+ "save_continue": "Kaydet ve Devam Et",
50
+ "save_changes": "Değişiklikleri Kaydet",
51
+ "finish_setup": "Kurulumu Tamamla",
52
+ "start_new_chat": "Yeni Sohbet Başlat",
53
+ "cannot_undo": "Bu işlem geri alınamaz.",
54
+ "ram_warning": "RAM Uyarısı",
55
+ "recommended": "ÖNERİLEN",
56
+ "may_be_large": "Bu cihaz için çok büyük olabilir",
57
+ "calculating": "Hesaplanıyor...",
58
+ "download_failed": "İndirme Başarısız",
59
+ "downloaded": "İndirildi",
60
+ "not_downloaded": "İndirilmedi",
61
+ "installed": "Yüklendi",
62
+ "not_installed": "Yüklenmedi",
63
+ "loading": "Yükleniyor...",
64
+ "thinking": "Düşünüyor...",
65
+ "processing": "İşleniyor...",
66
+ "initializing": "Başlatılıyor...",
67
+ "ready": "Hazır",
68
+ "preparing_app": "Uygulama hazırlanıyor...",
69
+ "initializing_services": "Servisler başlatılıyor...",
70
+ "configuring_server": "Sunucu yapılandırılıyor...",
71
+ "startup_failed": "Başlatma başarısız oldu",
72
+ "something_went_wrong": "Bir şeyler yanlış gitti",
73
+ "delete_model_title": "Modeli Sil",
74
+ "delete_model_body": "{name} modelini silmek istediğinizden emin misiniz?",
75
+ "delete_model_body_with_size": "{name} modelini silmek istediğinizden emin misiniz? Bu yaklaşık {size} alan boşaltacaktır.\n\nGerekirse bu modeli daha sonra tekrar indirebilirsiniz.",
76
+ "delete_voice_title": "Sesi Sil",
77
+ "delete_voice_body": "{name} sesini silmek istediğinizden emin misiniz? Bu yaklaşık {size} alan boşaltacaktır.\n\nGerekirse bu sesi daha sonra tekrar indirebilirsiniz.",
78
+ "delete_server_title": "Sunucuyu Sil",
79
+ "delete_server_body": "\"{name}\" sunucusunu silmek istediğinizden emin misiniz? Bu işlem geri alınamaz.",
80
+ "delete_conversation_title": "Sohbet silinsin mi?",
81
+ "delete_conversation_body": "\"{title}\" sohbetini silmek istediğinizden emin misiniz? Bu işlem geri alınamaz.",
82
+ "delete_message_title": "Mesaj silinsin mi?",
83
+ "delete_persona_title": "\"{name}\" silinsin mi?",
84
+ "delete_persona_body": "Bu işlem geri alınamaz.",
85
+ "delete_builtin_persona_body": "Bu yerleşik bir personalardır. Daha sonra Ayarlar'dan geri yükleyebilirsiniz.",
86
+ "restore_builtin_personas": "Varsayılan personaları geri yükle",
87
+ "restore_builtin_personas_desc": "Sildiğiniz yerleşik personaları tekrar ekleyin",
88
+ "restore_builtin_personas_success": "Varsayılan personalar geri yüklendi",
89
+ "clear_personas": "Personaları temizle",
90
+ "enable_image_compression": "Göndermeden önce görselleri sıkıştır",
91
+ "enable_image_compression_desc": "Eklenen görsellerin boyutunu değiştirip sıkıştırarak sunucu sınırları içinde kalın",
92
+ "image_compression_level": "Sıkıştırma seviyesi",
93
+ "image_compression_level_desc": "Yüksek seviye, daha düşük kalitede daha küçük boyutlu yüklemeler sağlar",
94
+ "image_compression_level_low": "Düşük",
95
+ "image_compression_level_medium": "Orta",
96
+ "image_compression_level_high": "Yüksek",
97
+ "sort_models_tooltip": "Modelleri sırala",
98
+ "sort_by_favorites": "Önce favoriler",
99
+ "sort_by_name": "İsim (A-Z)",
100
+ "sort_by_size_smallest": "Boyut (önce en küçük)",
101
+ "sort_by_size_largest": "Boyut (önce en büyük)",
102
+ "sort_by_context_length": "Bağlam uzunluğu",
103
+ "bulk_ai_rename_progress": "{done}/{total} yeniden adlandırılıyor...",
104
+ "selected_count": "{count} seçildi",
105
+ "ai_rename_tooltip": "Seçilenleri Yapay Zeka ile yeniden adlandır",
106
+ "new_chat_in_folder_tooltip": "Bu klasörde yeni sohbet",
107
+ "total_tokens_count": "{count} token",
108
+ "smart_replies_use_persona": "Akıllı yanıtlarda personayı kullan",
109
+ "smart_replies_use_persona_desc": "Önerilen yanıtlar genel asistan yerine aktif personanın tonuna uyar",
110
+ "keep_persona_on_new_chat": "Yeni sohbette personayı koru",
111
+ "keep_persona_on_new_chat_desc": "Yeni sohbet başlatıldıktan sonra seçilen persona(lar)ı temizleme",
112
+ "role_swap_button_enabled": "Rol değiştirme düğmesini göster",
113
+ "role_swap_button_enabled_desc": "Yanıt üretmeden mesajınızı kullanıcı yerine asistan olarak göndermek için sohbet girişinde bir düğme gösterin",
114
+ "send_as_user_tooltip": "Kullanıcı olarak gönder",
115
+ "send_as_assistant_tooltip": "Asistan olarak gönder (yanıt yok)",
116
+ "insert_without_generating_tooltip": "Üretmeden ekle",
117
+ "token_usage_title": "Token Kullanımı",
118
+ "total_tokens_label": "Kullanılan token'lar",
119
+ "usage_percent_label": "Kullanılan bağlam",
120
+ "export_choice_title": "Dışa Aktar",
121
+ "export_choice_body": "Bunu nasıl dışa aktarmak istersiniz?",
122
+ "copy_to_clipboard": "Panoya Kopyala",
123
+ "bulk_export_conversations_success": "{count} sohbet dışa aktarıldı",
124
+ "bulk_ai_rename_confirm_title": "Yapay Zeka ile Yeniden Adlandırılsın mı?",
125
+ "bulk_ai_rename_confirm_body": "Bu işlem Yapay Zekadan seçilen {count} sohbetin her biri için yeni bir başlık oluşturmasını ve mevcut başlıkların yerini almasını isteyecektir. Bu biraz zaman alabilir ve geri alınamaz.",
126
+ "sort_by_modified_date": "Son değiştirilme",
127
+ "sort_by_created_date": "Oluşturulma tarihi",
128
+ "sort_title": "Sırala",
129
+ "clear_conversation_title": "Sohbet temizlensin mi?",
130
+ "clear_conversation_body": "Bu işlem sohbet içindeki tüm mesajları silecektir.",
131
+ "clear": "Temizle",
132
+ "label_completed": "{label} tamamlandı",
133
+ "error_with_message": "Hata: {error}",
134
+ "preview_failed": "Önizleme başarısız: {error}",
135
+ "loading_model": "{modelId} yükleniyor...",
136
+ "model_loaded": "Model başarıyla yüklendi",
137
+ "no_model_loaded": "No model loaded. Tap \"Manage On-Device Modeller\" to download and load a model.",
138
+ "loading_model_error": "Hata: {error}",
139
+ "delete_conversation": "Sohbeti Sil",
140
+ "nav_history": "Geçmiş",
141
+ "nav_servers": "Sunucular",
142
+ "nav_local_models": "Local Modeller",
143
+ "nav_tts": "Metin Okuma",
144
+ "nav_personas": "Personalar",
145
+ "nav_settings": "Ayarlar",
146
+ "nav_new_chat": "Yeni Sohbet",
147
+ "search_hint": "Sohbetleri ara...",
148
+ "no_server_selected": "Sunucu seçilmedi",
149
+ "switch_server": "Sunucu Değiştir",
150
+ "switch_server_subtitle": "Bağlanmak için bir sunucu seçin",
151
+ "manage_servers": "Manage Sunucular",
152
+ "open_source": "Açık Kaynak",
153
+ "open_source_desc": "LocalMind açık kaynaklıdır. İlerlememizi takip edin veya GitHub'da katkıda bulunun.",
154
+ "star_on_github": "GitHub'da Yıldızla",
155
+ "add_more": "Daha fazla ekle",
156
+ "on_github": "GitHub üzerinde",
157
+ "could_not_open_github": "GitHub açılamadı.",
158
+ "settings_title": "Ayarlar",
159
+ "settings_appearance": "Görünüm",
160
+ "settings_language": "Dil",
161
+ "language_system_default": "Sistem Varsayılanı",
162
+ "settings_tts": "Metin Okuma",
163
+ "settings_behavior": "Davranış",
164
+ "settings_on_device": "Cihaz Üstü Çıkarım",
165
+ "settings_default_server": "Varsayılan Sunucu",
166
+ "settings_default_persona": "Varsayılan Persona",
167
+ "settings_privacy": "Gizlilik",
168
+ "settings_data_management": "Veri Yönetimi",
169
+ "settings_about": "Hakkında",
170
+ "theme": "Tema",
171
+ "theme_system": "Sistem",
172
+ "theme_light": "Açık",
173
+ "theme_dark": "Koyu",
174
+ "theme_claude": "Claude",
175
+ "font_size": "Yazı Tipi Boyutu",
176
+ "font_size_desc": "Sohbet içindeki metin boyutunu ayarlayın.",
177
+ "font_preview": "Hızlı kahverengi tilki tembel köpeğin üzerinden atlar.",
178
+ "code_theme_dark": "Kod Teması (Koyu)",
179
+ "code_theme_light": "Kod Teması (Açık)",
180
+ "code_theme_desc": "Kod blokları için sözdizimi vurgulama temasını seçin.",
181
+ "tts_engine": "TTS Motoru",
182
+ "tts_engine_system": "Sistem TTS",
183
+ "tts_engine_kitten": "Kitten TTS",
184
+ "voice": "Ses",
185
+ "voice_female": "Kadın",
186
+ "voice_male": "Erkek",
187
+ "voice_other": "Diğer",
188
+ "tts_speed": "Konuşma Hızı",
189
+ "tts_speed_desc": "Oynatma hızını ayarlayın.",
190
+ "manage_tts_models": "Manage TTS Modeller",
191
+ "manage_on_device_models": "Manage On-Device Modeller",
192
+ "enable_smart_reply": "Cihaz Üstü Akıllı Yanıtlar",
193
+ "ai_user_response_enabled": "Yapay zeka kullanıcı mesajı (göndere basılı tutun)",
194
+ "ai_user_response_enabled_desc": "Yapay zekanın sonraki mesajınızı yazıp göndermesini sağlamak için gönder düğmesini 3 saniye basılı tutun",
195
+ "ai_user_response_tooltip": "Yapay zeka ile kullanıcı mesajı oluştur",
196
+ "streaming_responses": "Akan Yanıtlar (Streaming)",
197
+ "auto_generate_titles": "Başlıkları Otomatik Oluştur",
198
+ "send_on_enter": "Enter ile Gönder",
199
+ "show_system_messages": "Varsayılan Sistem Yönergesini Gönder",
200
+ "show_system_messages_desc": "Persona seçilmediğinde, her istekle birlikte varsayılan asistan sistem yönergesini gönder",
201
+ "show_system_messages_in_chat": "Sohbette Sistem Mesajlarını Göster",
202
+ "show_system_messages_in_chat_desc": "Sistem mesajlarını (örn. içe aktarılan yedekten) konuşmada görünür baloncuklar olarak göster",
203
+ "haptic_feedback": "Dokunsal Geri Bildirim",
204
+ "enable_mcp": "MCP'yi Etkinleştir",
205
+ "new_chat_mcp_default": "Yeni Sohbet MCP Varsayılanı",
206
+ "show_data_indicator": "Veri Göstergesini Göster",
207
+ "privacy_info": "\"LocalMind verilerinizi asla görmez\"",
208
+ "delete_all_conversations": "Sil All Sohbetler",
209
+ "reset_settings_defaults": "Reset Ayarlar to Defaults",
210
+ "chat_title": "LocalMind",
211
+ "chat_parameters_tooltip": "Sohbet Parametreleri",
212
+ "change_persona": "Personayı Değiştir",
213
+ "set_persona": "Personayı Ayarla",
214
+ "remove_persona": "Kaldır Persona",
215
+ "clear_conversation": "Sohbeti Temizle",
216
+ "connection_error": "Bağlantı hatası. Sunucunuzu kontrol edin.",
217
+ "disconnected": "Bağlantı Kesildi from server.",
218
+ "configure": "Yapılandır",
219
+ "select_model": "Model Seçin",
220
+ "select_persona": "Persona Seç",
221
+ "manage_personas": "Personaları yönet",
222
+ "personas_combine_hint": "Sistem yönergelerini birleştirmek için sohbette birden fazla persona seçin.",
223
+ "start_conversation": "Bir sohbet başlatın",
224
+ "recent_chats": "Son sohbetler",
225
+ "see_all": "Tümünü gör",
226
+ "quick_write": "Bir fonksiyon yazmama yardım et",
227
+ "quick_explain": "Bu kodu açıkla",
228
+ "quick_debug": "Bunu benim için ayıkla (debug)",
229
+ "quick_async": "async/await nasıl kullanılır?",
230
+ "history_missing_title": "Geçmiş Eksik",
231
+ "history_missing_desc": "Bu sohbetteki mesajlar silinmiş veya geçmiş kaydı bozulmuş.",
232
+ "technical_details": "Teknik Detaylar",
233
+ "last_error": "Last Hata:",
234
+ "copy_info": "Copy Bilgi",
235
+ "conversation_id": "Sohbet Kimliği (ID)",
236
+ "created_at": "Oluşturulma Tarihi",
237
+ "expected_messages": "Beklenen Mesajlar",
238
+ "debug_dialog_desc": "Eşitleme sorunlarını belirlemeye yardımcı olacak teşhis bilgileri.",
239
+ "chat_input_hint": "İstediğinizi sorun",
240
+ "send_message_tooltip": "Mesaj gönder",
241
+ "stop_generation_tooltip": "Üretimi durdur",
242
+ "attach_images_tooltip": "Görsel veya metin ekle",
243
+ "start_listening_tooltip": "Dinlemeyi başlat",
244
+ "stop_listening_tooltip": "Dinlemeyi durdur",
245
+ "tool_label": "Araç: {toolCallId}",
246
+ "tool_unknown": "Araç: Bilinmeyen",
247
+ "message_options": "Mesaj seçenekleri",
248
+ "copy_markdown": "Markdown olarak Kopyala",
249
+ "copied_markdown": "Markdown olarak kopyalandı",
250
+ "read_aloud": "Sesli Oku",
251
+ "stop_reading": "Okumayı Durdur",
252
+ "more": "Daha fazla",
253
+ "character_count": "{length} karakter",
254
+ "edit_message": "Mesajı Düzenle",
255
+ "edit_message_desc": "Kaydetmek, alttaki asistan yanıtını kaldıracak ve yeniden üretecektir.",
256
+ "save_regenerate": "Kaydet ve yeniden üret",
257
+ "chat_settings_title": "Chat Ayarlar",
258
+ "reset_defaults": "Varsayılanlara Sıfırla",
259
+ "parameters_tab": "Parametreler",
260
+ "mcp_tab": "MCP",
261
+ "temperature": "Sıcaklık (Temperature)",
262
+ "temperature_desc": "Rastgeleliği kontrol eder: Yüksek = Yaratıcı, Düşük = Odaklanmış",
263
+ "top_p": "Top P",
264
+ "top_p_desc": "Çekirdek örnekleme eşiği",
265
+ "max_tokens": "Maksimum Token",
266
+ "max_tokens_desc": "Yanıt sınırı",
267
+ "context_length": "Bağlam Uzunluğu",
268
+ "context_length_desc": "Geçmiş penceresi",
269
+ "mcp_disabled_warning": "MCP is disabled globally. Enable it in Ayarlar to use these features.",
270
+ "mcp_enable_chat": "Bu sohbet için MCP'yi etkinleştir",
271
+ "auto_execute_tools": "Araçları otomatik çalıştır",
272
+ "beta_label": "Beta",
273
+ "experimental_label": "Deneysel",
274
+ "add_ephemeral_mcp": "Geçici MCP Sunucusu Ekle",
275
+ "mcp_label_placeholder": "Etiket",
276
+ "mcp_url_placeholder": "URL (https://...)",
277
+ "active_integrations": "Aktif Entegrasyonlar",
278
+ "enable_notifications": "Bildirimleri Etkinleştir",
279
+ "enable_notifications_desc": "Modellerin indirilmesi tamamlandığında bildirim alın.",
280
+ "chat_history_title": "Sohbet Geçmişi",
281
+ "conversation_just_now": "Az önce",
282
+ "conversation_minutes_ago": "{minutes}d önce",
283
+ "conversation_hours_ago": "{hours}s önce",
284
+ "conversation_yesterday": "Dün",
285
+ "conversation_days_ago": "{days}g önce",
286
+ "conversation_date": "{day}/{month}/{year}",
287
+ "options_tooltip": "Seçenekler",
288
+ "no_results_found": "Sonuç bulunamadı",
289
+ "no_conversations_yet": "Henüz sohbet yok",
290
+ "try_different_search": "Farklı bir arama terimi deneyin",
291
+ "start_new_conversation": "Yeni bir sohbet başlatın",
292
+ "rename_conversation": "Sohbeti Yeniden Adlandır",
293
+ "enter_new_title": "Yeni başlık girin",
294
+ "pinned_section": "SABİTLENENLER",
295
+ "today_section": "BUGÜN",
296
+ "yesterday_section": "DÜN",
297
+ "previous_7_days": "Son 7 Gün",
298
+ "previous_30_days": "Son 30 Gün",
299
+ "older_section": "DAHA ESKİ",
300
+ "onboarding_choose_language": "LocalMind dillerini keşfedin",
301
+ "onboarding_choose_language_desc": "Uygulama arayüzünüz için tercih ettiğiniz dili seçin.",
302
+ "onboarding_localmind": "LOCALMIND",
303
+ "onboarding_connect_server": "Sunucunuzu\nBağlayın",
304
+ "onboarding_connect_desc": "Özel yapay zeka deneyiminize başlamak için LM Studio, Ollama,\nOllama Cloud veya OpenRouter'a bağlanın.",
305
+ "openai_compatible_api": "OpenAI uyumlu API",
306
+ "https_requires_ssl": "HTTPS, SSL gerektirir",
307
+ "most_local_setups_use_http": "Çoğu yerel kurulum http:// kullanır",
308
+ "onboarding_welcome": "LocalMind'a Hoş Geldiniz",
309
+ "server_type_on_device": "Cihaz Üstü",
310
+ "server_type_lm_studio": "LM Studio",
311
+ "server_type_ollama": "Ollama",
312
+ "server_type_ollama_cloud": "Ollama Cloud",
313
+ "server_type_ollama_cloud_sub": "BULUT YÖNETİMLİ",
314
+ "server_type_ollama_cloud_display": "Ollama Cloud",
315
+ "server_address_ollama_cloud": "ollama.com",
316
+ "ollama_cloud_disclosure": "Ollama Cloud'a bağlanarak sohbet mesajlarınız ve girdileriniz çıkarım için Ollama'nın yönetilen sunucularına gönderilir. LocalMind sohbetlerinizi izlemez veya saklamaz. Bu anahtarı ollama.com/settings/keys adresinden istediğiniz zaman iptal edebilirsiniz.",
317
+ "api_key_required_ollama_cloud": "Ollama Cloud için API Anahtarı gereklidir",
318
+ "api_key_hint_ollama_cloud": "Ollama Cloud API anahtarınızı yapıştırın",
319
+ "add_server_ollama_cloud_subtitle": "Yönetilen bulut modellerine erişmek için ollama.com/settings/keys adresinden alacağınız API anahtarıyla Ollama Cloud'a bağlanın.",
320
+ "add_server_openrouter_subtitle": "Geçerli bir API anahtarıyla OpenRouter üzerinden bağlanın ve model yönlendirmesi için bu profili hazır tutun.",
321
+ "add_server_endpoint_subtitle": "Yerel veya kendi barındırdığınız bir uç noktayı yapılandırın ve kaydetmeden önce bağlantıyı doğrulayın.",
322
+ "server_type_openrouter": "OpenRouter",
323
+ "server_type_openrouter_sub": "BİRLEŞİK BULUT",
324
+ "ready_continue": "DEVAM ETMEYE HAZIR",
325
+ "waiting_selection": "SEÇİM BEKLENİYOR",
326
+ "setup_connection": "Bağlantıyı Kur",
327
+ "setup_connection_desc": "Sohbet etmeye başlamak için {server} sunucunuzu yapılandırın.",
328
+ "server_name": "Sunucu Adı",
329
+ "name_required": "İsim gereklidir",
330
+ "name_max_50": "En fazla 50 karakter",
331
+ "host_label": "Ana Bilgisayar / IP Adresi",
332
+ "host_required": "Ana bilgisayar gereklidir",
333
+ "port_label": "Port",
334
+ "port_required": "Port gereklidir",
335
+ "port_invalid": "Bir sayı olmalıdır",
336
+ "port_range": "Geçerli bir port girin (1-65535)",
337
+ "api_key_required": "API Anahtarı *",
338
+ "api_key_optional": "API Anahtarı (İsteğe Bağlı)",
339
+ "api_key_required_openrouter": "OpenRouter için API Anahtarı gereklidir",
340
+ "api_key_format": "OpenRouter API anahtarları sk- ile başlar",
341
+ "my_server_hint": "Sunucum",
342
+ "name_length_validation": "İsim 50 karakter veya daha az olmalıdır",
343
+ "host_valid": "Geçerli bir ana bilgisayar adı veya IP adresi girin",
344
+ "api_key_hint_openrouter": "sk-...",
345
+ "api_key_hint_generic": "Kimlik doğrulamalı sunucular için",
346
+ "update_server": "Sunucuyu Güncelle",
347
+ "save_server": "Sunucuyu Kaydet",
348
+ "server_updated": "Sunucu güncellendi",
349
+ "server_added": "Sunucu eklendi",
350
+ "download_model_title": "Bir Model İndirin",
351
+ "download_model_desc": "İndirmek için bir model seçin.\nCihazınızda yerel olarak çalışacaktır.",
352
+ "on_device_android_only": "Cihaz üstü çıkarım şu anda yalnızca Android'de kullanılabilir.",
353
+ "total_ram": "Toplam RAM",
354
+ "available": "Kullanılabilir",
355
+ "ram_min_required": "En az {fileSize} GB RAM",
356
+ "download_progress": "%{percent} • {speed}",
357
+ "eta_label": "Kalan Süre: {eta}",
358
+ "paused_progress": "Duraklatıldı - %{percent}",
359
+ "ram_warning_body_download": "Bu model en az {ram} GB RAM gerektirir, ancak cihazınızda {totalMemory} var. Düzgün çalışmayabilir veya uygulamanın çökmesine neden olabilir.",
360
+ "ram_warning_body_load": "Cihazınızda {availableRAM} kullanılabilir RAM var, ancak bu model en az {ram} GB önerir. Yükleme başarısız olabilir veya kararsızlığa yol açabilir.",
361
+ "choose_theme": "Tema Seçin",
362
+ "choose_theme_desc": "Uygulama görünümünü kişiselleştirin. Bunu daha sonra ayarlar içinden değiştirebilirsiniz.",
363
+ "theme_card_system": "Sistem",
364
+ "theme_card_system_sub": "Cihaz ayarlarınızla eşleşir",
365
+ "theme_card_light": "Açık",
366
+ "theme_card_light_sub": "Temiz ve parlak",
367
+ "theme_card_dark": "Koyu",
368
+ "theme_card_dark_sub": "Gözleri yormaz",
369
+ "theme_card_claude": "Claude",
370
+ "theme_card_claude_sub": "Sıcak, şeftali tonlu bir tema",
371
+ "stay_updated": "Güncel Kalın",
372
+ "stay_updated_desc": "Yapay zeka modellerinizin indirilmesi tamamlandığında veya uzun süren görevler bittiğinde bildirim alın.",
373
+ "notification_benefit_downloads": "Model indirme ilerlemesi",
374
+ "notification_benefit_completions": "Üretim tamamlamaları",
375
+ "notification_benefit_background": "Geriground tasks status",
376
+ "allow_notifications": "Bildirimlere İzin Ver",
377
+ "servers_title": "Sunucular",
378
+ "no_servers_yet": "No Sunucular Yet",
379
+ "no_servers_desc": "Yapay zeka modelleriyle sohbet etmeye başlamak için ilk sunucunuzu ekleyin.",
380
+ "add_server": "Sunucu Ekle",
381
+ "switched_to_server": "{name} sunucusuna geçildi",
382
+ "edit_server": "Sunucuyu Düzenle",
383
+ "add_server_title": "Sunucu Ekle",
384
+ "server_type_label": "Sunucu Türü",
385
+ "server_icon_label": "Sunucu Simgesi",
386
+ "default_icon": "Varsayılan simge",
387
+ "server_type_lm_studio_display": "LM Studio",
388
+ "server_type_openai_display": "OpenAI Uyumlu",
389
+ "server_type_ollama_display": "Ollama",
390
+ "server_type_openrouter_display": "OpenRouter",
391
+ "server_type_on_device_display": "Cihaz Üstü",
392
+ "server_address_openrouter": "openrouter.ai",
393
+ "server_address_on_device": "Yerel çıkarım",
394
+ "server_address_format": "{host}:{port}",
395
+ "default_badge": "Varsayılan",
396
+ "set_as_default": "Varsayılan Olarak Ayarla",
397
+ "select_icon": "Simge Seç",
398
+ "select_icon_desc": "Sunucunuz için bir simge seçin",
399
+ "search_icons_hint": "Simgeleri ara...",
400
+ "server_icon_stack": "Sunucu Yığını",
401
+ "server_icon_stack2": "Sunucu Yığını 02",
402
+ "server_icon_stack3": "Sunucu Yığını 03",
403
+ "server_icon_cloud": "Bulut",
404
+ "server_icon_cloud_server": "Bulut Sunucu",
405
+ "server_icon_mcp": "MCP Sunucusu",
406
+ "server_icon_database": "Veritabanı",
407
+ "server_icon_database1": "Veritabanı 01",
408
+ "server_icon_database2": "Veritabanı 02",
409
+ "server_icon_cpu": "İşlemci (CPU)",
410
+ "server_icon_chip": "Yonga (Chip)",
411
+ "server_icon_chip2": "Yonga 02",
412
+ "server_icon_computer": "Bilgisayar",
413
+ "server_icon_laptop": "Dizüstü Bilgisayar",
414
+ "server_icon_terminal": "Bilgisayar Terminali",
415
+ "server_icon_code": "Kod",
416
+ "server_icon_ai_brain": "Yapay Zeka Beyin",
417
+ "server_icon_ai_brain2": "Yapay Zeka Beyin 02",
418
+ "server_icon_ai_cloud": "Yapay Zeka Bulut",
419
+ "server_icon_ai_network": "Yapay Zeka Ağı",
420
+ "server_icon_ai_chat": "Yapay Zeka Sohbet",
421
+ "server_icon_cellular": "Hücresel Ağ",
422
+ "server_icon_plug1": "Fiş 01",
423
+ "server_icon_plug2": "Fiş 02",
424
+ "server_icon_bot": "Bot",
425
+ "server_icon_bot2": "Bot 02",
426
+ "server_icon_robotic": "Robotik",
427
+ "server_icon_rocket": "Roket",
428
+ "server_icon_star": "Yıldız",
429
+ "server_icon_settings1": "Ayarlar 01",
430
+ "server_icon_settings2": "Ayarlar 02",
431
+ "server_icon_home1": "Ev 01",
432
+ "server_icon_home2": "Ev 02",
433
+ "server_icon_folder1": "Klasör 01",
434
+ "server_icon_folder2": "Klasör 02",
435
+ "server_icon_file1": "Dosya 01",
436
+ "server_icon_lock": "Kilit",
437
+ "server_icon_key": "Anahtar 01",
438
+ "server_icon_link": "Bağlantı 01",
439
+ "server_icon_globe": "Dünya",
440
+ "server_icon_api": "API",
441
+ "server_icon_arrow_right": "Sağ Ok 01",
442
+ "server_icon_check": "Onay Dairesi",
443
+ "server_icon_alert": "Uyarı Dairesi",
444
+ "server_icon_info": "Bilgi Circle",
445
+ "server_icon_zap": "Hızlı Yıldırım",
446
+ "server_icon_cloud_upload": "Buluta Yükle",
447
+ "server_icon_cloud_download": "Buluttan İndir",
448
+ "server_icon_refresh": "Yenile",
449
+ "server_icon_hard_drive": "Sabit Sürücü",
450
+ "server_icon_drive": "Sürücü",
451
+ "personas_title": "Personalar",
452
+ "persona_category_general": "Genel",
453
+ "persona_category_coding": "Kodlama",
454
+ "persona_category_education": "Eğitim",
455
+ "persona_category_creative": "Yaratıcı",
456
+ "persona_builtin_section": "YERLEŞİK",
457
+ "persona_my_section": "PERSONALARIM",
458
+ "clone_edit": "Clone & Düzenle",
459
+ "builtin_badge": "Yerleşik",
460
+ "no_personas_found": "Persona bulunamadı",
461
+ "no_personas_desc": "Yapay zeka davranışını özelleştirmek için ilk personanızı oluşturun.",
462
+ "edit_persona": "Personayı Düzenle",
463
+ "create_persona": "Persona Oluştur",
464
+ "create_persona_button": "Oluştur",
465
+ "emoji_label": "Emoji",
466
+ "name_label": "İsim",
467
+ "my_persona_hint": "Personam",
468
+ "category_label": "Kategori",
469
+ "description_optional": "Açıklama (isteğe bağlı)",
470
+ "description_hint": "Bu persona ne yapar...",
471
+ "system_prompt": "Sistem Yönergesi",
472
+ "character_count_max": "{currentLen}/4000",
473
+ "no_prompt_placeholder": "Henüz yönerge yok...",
474
+ "prompt_hint": "Sen yardımcı bir asistansın...",
475
+ "prompt_required": "Sistem yönergesi gereklidir",
476
+ "prompt_max_chars": "En fazla 4000 karakter",
477
+ "advanced_settings": "Advanced Ayarlar",
478
+ "temperature_label": "Sıcaklık (0.0-2.0)",
479
+ "top_p_label": "Top P (0.0-1.0)",
480
+ "temp_hint": "0.7",
481
+ "top_p_hint": "0.9",
482
+ "range_0_2": "0.0-2.0",
483
+ "range_0_1": "0.0-1.0",
484
+ "persona_updated": "Persona güncellendi",
485
+ "persona_created": "Persona oluşturuldu",
486
+ "tts_models_title": "Text To Speech Modeller",
487
+ "always_available": "Her zaman kullanılabilir",
488
+ "tts_system_desc": "Cihazınızın yerleşik metin okuma motorunu kullanır.\nİndirme gerekmez. Ses seçimi cihazınızın sistem ayarlarını kullanır.",
489
+ "downloading_status": "İndiriliyor...",
490
+ "tts_kitten_desc": "8 ifade dolu ses içeren şimşek hızında nöral TTS.\n{size} indirme gerektirir.",
491
+ "tts_piper_desc": "2 ifade dolu ses içeren hızlı çevrimdışı Piper sesleri.\nSes başına {size} indirme gerektirir.",
492
+ "engine_spec": "{sizeMb} MB · {ramMb} MB RAM · {voiceCount} ses",
493
+ "on_device_models_title": "On-Device Modeller",
494
+ "settings_huggingface_token": "Hugging Face Jetonu (İsteğe Bağlı)",
495
+ "settings_huggingface_token_desc": "Yalnızca kapalı modeller (örn. Gemma) için gereklidir. huggingface.co/settings/tokens adresinden edinin.",
496
+ "settings_huggingface_token_set": "Jeton kaydedildi",
497
+ "settings_huggingface_token_cleared": "Jeton temizlendi",
498
+ "model_requires_huggingface_token": "Hugging Face jetonu gerektirir",
499
+ "model_missing_huggingface_token": "This model is gated on Hugging Face. Add a token in Ayarlar → On-Device Inference to download it.",
500
+ "set_huggingface_token": "Jetonu ayarla",
501
+ "clear_huggingface_token": "Temizle",
502
+ "edit_huggingface_token_dialog_title": "Hugging Face Erişim Jetonu",
503
+ "huggingface_token_dialog_hint": "hf_…",
504
+ "server_type_ollama_desc": "Yerel yapay zeka motoru. API anahtarı gerekmez.",
505
+ "server_type_on_device_desc": "Telefonunuzda çalışır. Bazı modeller Hugging Face jetonu gerektirir.",
506
+ "server_type_lm_studio_desc": "Yerel API sunucusu. API anahtarı gerekmez.",
507
+ "available_models": "Available Modeller",
508
+ "device_memory": "Cihaz Belleği",
509
+ "ram_usage": "RAM Kullanımı",
510
+ "memory_healthy": "Sağlıklı",
511
+ "memory_critical": "Kritik",
512
+ "memory_low": "Düşük",
513
+ "ram_used": "%{percent} kullanılıyor",
514
+ "available_ram": "Kullanılabilir RAM",
515
+ "total_capacity": "Toplam Kapasite",
516
+ "loaded_status": "Yüklendi",
517
+ "inference_backend": "Inference Geriend",
518
+ "backend_ios_notice": "iOS'ta yalnızca CPU arka ucu kullanılabilir.",
519
+ "backend_cpu_desc": "Tüm cihazlarda çalışır. En uyumlusu.",
520
+ "backend_gpu_desc": "OpenCL hızlandırma. Desteklenen cihazlarda daha hızlı.",
521
+ "backend_npu_desc": "Üretici NPU'su (Qualcomm/MediaTek). En hızlı çıkarım.",
522
+ "select_model_title": "Model Seç",
523
+ "refresh_models": "Modelleri yenile",
524
+ "search_models_hint": "Modelleri ara...",
525
+ "no_server_connected": "Bağlı sunucu yok",
526
+ "add_server_first": "Mevcut modelleri görmek için önce bir sunucu ekleyin.",
527
+ "failed_load_models": "Başarısız to load models",
528
+ "no_models_available": "Mevcut model yok",
529
+ "no_models_match": "\"{searchQuery}\" ile eşleşen model yok",
530
+ "model_load_failed": "Başarısız to load model: {error}",
531
+ "model_unloaded_ollama": "{name} için bellekten çıkarma istendi. Ollama ulaşılabilirse model hemen serbest bırakılır.",
532
+ "model_unloaded_success": "{name} başarıyla bellekten çıkarıldı",
533
+ "model_unload_failed": "Başarısız to unload model: {error}",
534
+ "unload_from_server": "Sunucudan bellekten çıkar",
535
+ "context_chip": "{ctx} bağlam",
536
+ "unload_all_models": "Tümünü bellekten çıkar",
537
+ "loaded_models_count": "{count} yüklendi",
538
+ "all_models_unloaded": "Tüm modeller bellekten çıkarıldı",
539
+ "branch_chat": "Sohbeti Dallandır",
540
+ "branch_chat_desc": "Bu mesajdan yeni bir sohbet dalı oluşturun",
541
+ "edit_assistant_message_desc": "Düzenle the assistant response text.",
542
+ "switch_to_model": "{modelName} modeline geç",
543
+ "download_notification_title": "{modelName} indiriliyor...",
544
+ "download_complete_notification": "İndirme tamamlandı!",
545
+ "download_complete_body": "{modelName} başarıyla indirildi.",
546
+ "download_failed_notification": "İndirme başarısız: {error}",
547
+ "download_failed_body": "Başarısız to download {modelName}.",
548
+ "engine_name_system": "Sistem TTS",
549
+ "engine_tagline_system": "Cihazın yerleşik motoru",
550
+ "engine_name_kitten": "Kitten TTS",
551
+ "engine_tagline_kitten": "Yüksek hızlı nöral TTS",
552
+ "engine_name_sherpa": "Sherpa ONNX VITS",
553
+ "engine_tagline_sherpa": "Çevrimdışı Piper sesleri",
554
+ "voice_jasper": "Jasper",
555
+ "voice_bella": "Bella",
556
+ "voice_bruno": "Bruno",
557
+ "voice_luna": "Luna",
558
+ "voice_hugo": "Hugo",
559
+ "voice_rosie": "Rosie",
560
+ "voice_leo": "Leo",
561
+ "voice_kiki": "Kiki",
562
+ "voice_lessac": "Lessac (ABD)",
563
+ "voice_ryan": "Ryan (ABD)",
564
+ "model_qwen_3": "Qwen 3 0.6B",
565
+ "model_qwen_3_desc": "En küçük genel amaçlı sohbet modeli. Hızlı yanıtlar, düşük bellek kullanımı.",
566
+ "model_license_apache": "Apache-2.0",
567
+ "model_qwen_25": "Qwen 2.5 1.5B Instruct",
568
+ "model_qwen_25_desc": "Dengeli kalite ve boyut. Genel konuşmalar için iyidir.",
569
+ "model_deepseek": "DeepSeek R1 Distill Qwen 1.5B",
570
+ "model_deepseek_desc": "Mantık yürütme ve düşünce zinciri modeli. Mantıksal görevler için en iyisidir.",
571
+ "model_license_mit": "MIT",
572
+ "model_gemma": "Gemma 4 E2B Instruct",
573
+ "model_gemma_desc": "Google amiral gemisi modeli. En yüksek kalite, daha fazla RAM gerektirir.",
574
+ "export_header": "*LocalMind üzerinden dışa aktarıldı — {date}*",
575
+ "export_role_user": "## 👤 Kullanıcı",
576
+ "export_role_assistant": "## 🤖 Asistan",
577
+ "export_role_system": "## ⚙️ Sistem",
578
+ "export_role_tool": "## 🔧 Araç",
579
+ "export_text_user": "[KULLANICI]",
580
+ "export_text_assistant": "[ASİSTAN]",
581
+ "export_text_system": "[SİSTEM]",
582
+ "export_text_tool": "[ARAÇ]",
583
+ "export_label_user": "KULLANICI",
584
+ "export_label_assistant": "ASİSTAN",
585
+ "export_label_system": "SİSTEM",
586
+ "export_label_tool": "ARAÇ",
587
+ "select_model_hint": "Sohbete başlamak için bir model seçin",
588
+ "test_notification_title": "Test bildirimi",
589
+ "test_notification_body": "Bu, model indirme ilerlemesi için bir test bildirimidir.",
590
+ "tts_supports_background": "Yerel ses olarak arka planda oynatmayı destekler",
591
+ "tts_other_services_background_note": "Not: Diğer TTS servisleri yerel ses olarak arka planda oynatmayı destekler.",
592
+ "gguf_imported_models_title": "İçe aktarılan GGUF modelleri",
593
+ "gguf_imported_models_empty_subtitle": "Cihazınızdan bir GGUF aktarın veya Hugging Face'ten ekleyin. İçe aktarılan modeller llama.cpp ile yerel çalışır.",
594
+ "gguf_imported_models_ready": "yerel çıkarım için hazır içe aktarılan modeller.",
595
+ "gguf_curated_models_subtitle": "LocalMind içinde indirebileceğiniz ve yönetebileceğiniz özel cihaz üstü modeller.",
596
+ "gguf_only_supported": "Bu içe aktarma için yalnızca GGUF modelleri desteklenir.",
597
+ "gguf_imported_from_local_file": "yerel dosyadan içe aktarıldı.",
598
+ "gguf_import_failed": "Başarısız to import GGUF model",
599
+ "gguf_imported_from_huggingface": "Hugging Face'ten içe aktarıldı.",
600
+ "gguf_import_canceled": "GGUF içe aktarma iptal edildi.",
601
+ "gguf_enter_huggingface_url": "Bir Hugging Face GGUF URL'si girin.",
602
+ "gguf_only_official_huggingface_urls": "Yalnızca resmi Hugging Face GGUF URL'leri desteklenir.",
603
+ "gguf_use_https_url": "GGUF içe aktarımı için HTTPS Hugging Face URL'si kullanın.",
604
+ "gguf_url_must_point_to_file": "Hugging Face URL'si doğrudan bir .gguf dosyasına işaret etmelidir.",
605
+ "gguf_unable_to_detect_file_name": "GGUF dosya adı belirlenemedi.",
606
+ "gguf_download_empty": "İndirilen GGUF dosyası boş veya eksik.",
607
+ "gguf_selected_file_missing": "Seçilen model dosyası mevcut değil.",
608
+ "gguf_import_action": "GGUF İçe Aktar",
609
+ "gguf_overview_title": "Kendi GGUF modellerinizi getirin",
610
+ "gguf_overview_subtitle": "Yerel depolamadan bir .gguf dosyası aktarın veya doğrudan Hugging Face'ten indirin. İçe aktarılan modeller bu cihazda kalır ve llama.cpp ile yüklenir.",
611
+ "gguf_imported_count_label": "içe aktarıldı",
612
+ "gguf_local_files_label": "yerel dosyalar",
613
+ "gguf_huggingface_label": "Hugging Face",
614
+ "gguf_import_local_title": "Yerel GGUF İçe Aktar",
615
+ "gguf_import_local_subtitle": "Bu cihazdan bir .gguf dosyası kopyalayın",
616
+ "gguf_import_huggingface_title": "Hugging Face'ten İçe Aktar",
617
+ "gguf_import_huggingface_subtitle": "Bir GGUF URL'si veya depo yolu yapıştırın",
618
+ "gguf_no_imported_title": "Henüz içe aktarılan GGUF modeli yok",
619
+ "gguf_no_imported_subtitle": "Cihaz depolamanızdan kendi GGUF dosyanızı getirebilir veya bir .gguf dosyasına işaret eden bir Hugging Face URL'si veya depo yolu yapıştırabilirsiniz.",
620
+ "gguf_import_huggingface_dialog_title": "Import GGUF from Hugging Face",
621
+ "gguf_import_huggingface_dialog_subtitle": "Paste a direct GGUF URL or a Hugging Face repo path like `owner/repo/blob/main/model.gguf`. Blob links are converted automatically.",
622
+ "gguf_url_or_repo_path": "GGUF URL or repo path",
623
+ "paste": "Paste",
624
+ "gguf_browse": "Browse GGUFs",
625
+ "gguf_huggingface_token_ready": "Hugging Face token ready",
626
+ "gguf_huggingface_token_optional": "Token optional but recommended",
627
+ "gguf_huggingface_token_ready_desc": "Your saved token will be used automatically for gated or private repositories.",
628
+ "gguf_huggingface_token_optional_desc": "Requires a Hugging Face token. Add one in Ayarlar if this GGUF is gated or private.",
629
+ "gguf_downloading": "Downloading GGUF",
630
+ "gguf_preparing": "Preparing",
631
+ "gguf_preparing_download": "Preparing download...",
632
+ "gguf_cancel_import": "İptal import",
633
+ "clipboard_empty": "Clipboard is empty.",
634
+ "could_not_open_huggingface": "Could not open Hugging Face.",
635
+ "gguf_paste_url_error": "Paste a Hugging Face GGUF URL or repo path.",
636
+ "gguf_blob_link": "Blob link",
637
+ "gguf_repository_label": "Repository",
638
+ "gguf_detected_path_label": "Detected path",
639
+ "gguf_imported_section_label": "Imported GGUF",
640
+ "gguf_already_available": "Already available on this device",
641
+ "gguf_curated_models_short": "Curated on-device models",
642
+ "execute_tool_title": "Execute Tool",
643
+ "execute_tool_request_desc": "The model is requesting to execute the following tool:",
644
+ "reject": "Reject",
645
+ "approve": "Approve",
646
+ "server_type_help": "Pick the provider before filling connection details.",
647
+ "server_identity_title": "Identity",
648
+ "server_identity_desc": "Name this server and choose how it appears in the list.",
649
+ "server_connection_title": "Connection",
650
+ "server_connection_desc": "Use the address and port exposed by your server.",
651
+ "server_authentication_title": "Authentication",
652
+ "server_authentication_required_desc": "OpenRouter requires an API key before testing.",
653
+ "server_authentication_optional_desc": "Leave the API key empty if this server does not require one.",
654
+ "mcp_tools_title": "MCP Araçları",
655
+ "available_tools": "Available tools",
656
+ "unable_load_tools": "Unable to load tools",
657
+ "no_tools_registered": "No tools registered",
658
+ "no_tools_registered_desc": "Enable the example MCP server or add MCP integrations from chat settings.",
659
+ "example_mcp_server_title": "Example MCP server",
660
+ "example_mcp_server_desc": "Registers example.echo and example.word_count through the same MCP tool provider used by external servers.",
661
+ "disable_example_server": "Disable example server",
662
+ "enable_example_server": "Enable example server",
663
+ "built_in_label": "Built-in",
664
+ "highlights_label": "Highlights",
665
+ "built_with_label": "Built with",
666
+ "local_label": "Local",
667
+ "gguf_format_label": "GGUF",
668
+ "tool_status_requested": "Requested",
669
+ "tool_status_approved": "Approved",
670
+ "tool_status_rejected": "Rejected",
671
+ "tool_status_running": "Running",
672
+ "tool_status_done": "Done",
673
+ "tool_status_failed": "Başarısız",
674
+ "model_favorite_toggle": "Toggle favorite",
675
+ "model_note_label": "Note",
676
+ "model_note_hint": "Add a note about this model…",
677
+ "unload_models_before_load": "Unload all models before loading a new one",
678
+ "temp_chat_keyboard_incognito": "Incognito keyboard in temporary chat",
679
+ "temp_chat_keyboard_incognito_desc": "Disables keyboard learning and suggestions in temporary chats (e.g. SwiftKey incognito).",
680
+ "resume_last_chat": "Resume last chat on launch",
681
+ "resume_last_chat_desc": "Restore your last open conversation when reopening the app.",
682
+ "export_all_data": "Export all data",
683
+ "import_all_data": "Import all data",
684
+ "export_data_success": "Geriup exported successfully",
685
+ "import_data_success": "Geriup imported successfully",
686
+ "import_data_failed": "Başarısız to import backup: {error}",
687
+ "import_data_confirm": "Import conversations and custom personas from this backup? Existing items with the same IDs will be updated.",
688
+ "import_settings_confirm": "Replace current settings with the imported backup?",
689
+ "export_conversations": "Export conversations",
690
+ "import_conversations": "Import conversations",
691
+ "export_personas": "Export personas",
692
+ "import_personas": "Import personas",
693
+ "export_settings": "Ayarları dışa aktar",
694
+ "import_settings": "Ayarları içe aktar",
695
+ "export_all_zip": "Tümünü dışa aktar (ZIP)",
696
+ "import_all_zip": "Tümünü içe aktar (ZIP)",
697
+ "duplicate_chat": "Sohbeti çoğalt",
698
+ "duplicate_chat_success": "Sohbet çoğaltıldı",
699
+ "move_to_folder": "Klasöre taşı",
700
+ "remove_from_folder": "Kaldır from folder",
701
+ "create_folder": "Klasör oluştur",
702
+ "new_folder": "Yeni klasör",
703
+ "folder_name_hint": "Örn. İş, Kişisel, Araştırma",
704
+ "all_chats": "Tümü",
705
+ "unfiled_chats": "Kategorisiz",
706
+ "create": "Oluştur",
707
+ "server_path_prefix_label": "API yol öneki",
708
+ "server_path_prefix_hint": "/gizli-jetonunuz",
709
+ "search_message_contents": "Mesaj içeriklerini ara",
710
+ "message_search_results": "Mesaj eşleşmeleri",
711
+ "saved_messages_title": "Kaydedilen Mesajlar",
712
+ "nav_saved_messages": "Kaydedilenler",
713
+ "saved_messages_empty": "Henüz kaydedilen mesaj yok. Seçenekler menüsünden bir mesajı yer imlerine ekleyin.",
714
+ "save_message": "Mesajı kaydet",
715
+ "message_saved": "Mesaj kaydedildi",
716
+ "token_count": "{count} token",
717
+ "estimated_token_count": "~{count} token (tahmini)",
718
+ "test_tts_section_title": "Sesi test et",
719
+ "test_tts_hint": "Mevcut TTS motorunu duymak için metin girin…",
720
+ "test_speak_button": "Konuş",
721
+ "scroll_to_bottom": "En aşağı kaydır",
722
+ "generate_ai_response": "Yapay zeka yanıtı üret",
723
+ "no_response": "Yanıt yok",
724
+ "export": "Dışa Aktar",
725
+ "import": "İçe Aktar",
726
+ "conversations_label": "Sohbetler",
727
+ "personas_label": "Personalar",
728
+ "settings_label": "Ayarlar",
729
+ "export_conversation": "Sohbeti Dışa Aktar",
730
+ "tts_process_markdown": "Konuşma için markdown'ı işle",
731
+ "tts_process_markdown_desc": "Sesli okunmadan önce **koyu** gibi biçimlendirmeleri temizle",
732
+ "tts_skip_seconds": "Atlama aralığı",
733
+ "tts_skip_seconds_desc": "Oynatma sırasında ileri ve geri sarma adımı boyutu",
734
+ "tts_skip_seconds_value": "{seconds}sn",
735
+ "preview_system_prompts": "Sistem yönergelerini önizle",
736
+ "welcome_message_1": "Bugün size nasıl yardımcı olabilirim?",
737
+ "welcome_message_2": "İstediğinizi sorun — hazır olduğunuzda buradayım.",
738
+ "welcome_message_3": "Verileriniz yerel olarak işlenir ve cihazınızdan asla ayrılmaz.",
739
+ "welcome_message_4": "Fikre mi ihtiyacınız var? Hızlı yönergelerden birini deneyin.",
740
+ "temporary_chat": "Geçici sohbet",
741
+ "temporary_chat_desc": "Sohbetler geçmişe kaydedilmez.",
742
+ "temporary_chat_banner": "Geçici sohbet — geçmişe kaydedilmez",
743
+ "temporary_chat_save_warning_title": "Mesaj geçici sohbete kaydedilsin mi?",
744
+ "temporary_chat_save_warning_body": "Bu sohbet geçicidir ve geçmişten gizlenir. Kaydedilen mesaj yine de Kaydedilen Mesajlar bölümünde görünecektir.",
745
+ "save_to_history": "Geçmişe kaydet",
746
+ "share_conversation": "Sohbeti paylaş",
747
+ "download_tts_audio": "Sesi indir",
748
+ "tts_download_unavailable": "İndirme yalnızca Piper ve Kitten TTS için mevcuttur",
749
+ "tts_download_no_audio": "Henüz indirilecek ses yok",
750
+ "tts_download_success": "Ses kaydedildi",
751
+ "return_to_chat": "Sohbete dön",
752
+ "return_to_temp_chat": "Geçici sohbete dön",
753
+ "insert_saved_message": "Kaydedilen mesajı ekle",
754
+ "insert_saved_message_desc": "Girdinize eklemek için kaydedilmiş bir mesaj seçin",
755
+ "model_info": "Model bilgisi",
756
+ "model_name": "Model adı",
757
+ "model_identifier": "Kimlik (Identifier)",
758
+ "not_available": "Mevcut değil",
759
+ "save_message_folders": "Mesajı kaydet",
760
+ "remove_from_saved": "Kaldır from saved",
761
+ "message_already_saved": "Kaydedildi",
762
+ "stream_ttft": "İlk tokene kadar geçen süre (TTFT)",
763
+ "stream_tokens_per_sec": "Saniyedeki token",
764
+ "stream_stop_reason": "Durdurma nedeni",
765
+ "stream_input_tokens": "Girdi token'ları",
766
+ "stream_output_tokens": "Çıktı token'ları",
767
+ "stream_generation_time": "Üretim süresi",
768
+ "attach_image": "Fotoğraflar",
769
+ "attach_text_document": "Belgeler",
770
+ "attach_shortcut_images": "Fotoğraflar",
771
+ "attach_shortcut_documents": "Dosyalar",
772
+ "attach_shortcut_saved": "Kaydedilenler",
773
+ "add_attachment": "Ek ekle",
774
+ "add_to_chat": "Sohbete ekle",
775
+ "choose_what_to_attach": "Ne eklemek istersiniz?",
776
+ "choose_attachment_subtitle": "Mesajınıza eklemek için bir kaynak seçin",
777
+ "photo_permission_denied": "Görsel eklemek için fotoğraf erişim izni gereklidir",
778
+ "select_model_prompt": "Model seçin",
779
+ "characters_label": "Karakter",
780
+ "exit_temporary_chat_title": "Geçici sohbetten çıkılsın mı?",
781
+ "exit_temporary_chat_body": "Bu işlem mevcut geçici sohbeti atacak ve yeni sohbet ekranına dönecektir.",
782
+ "saved_message_temp_snap_unavailable": "Bu mesaj geçici bir sohbetten kaydedildi ve orijinal konuşmasında açılamaz.",
783
+ "filter_title": "Filtrele",
784
+ "filter_pinned": "Sabitlenenler",
785
+ "filter_archived": "Arşivlenenler",
786
+ "filter_temp_chats": "Geçici sohbetler",
787
+ "filter_user_messages": "Kullanıcı mesajları",
788
+ "filter_assistant_messages": "Asistan mesajları",
789
+ "archive_chat": "Arşivle",
790
+ "unarchive_chat": "Arşivden Çıkar",
791
+ "conversation_message_count": "{count, plural, one{1 mesaj} other{{count} mesaj}}",
792
+ "conversation_character_count": "{count} krk",
793
+ "generate_title_with_ai": "Yapay Zeka ile oluştur",
794
+ "generating_title": "Oluşturuluyor...",
795
+ "generate_title_failed": "Başlık oluşturulamadı",
796
+ "lm_studio_model_browser_title": "Modelleri gözden geçir",
797
+ "lm_studio_model_search_hint": "Modelleri ad veya yazara göre ara…",
798
+ "lm_studio_staff_picks": "Öne çıkanlar",
799
+ "lm_studio_community_models": "Topluluk modelleri",
800
+ "lm_studio_no_models": "Model bulunamadı",
801
+ "lm_studio_models_count": "{count} model",
802
+ "lm_studio_browse_models": "Gözden geçir ve indir",
803
+ "lm_studio_model_search": "LMS Model Arama",
804
+ "lm_studio_downloads_title": "İndirmeler",
805
+ "lm_studio_choose_quant": "Bir indirme seçeneği belirleyin",
806
+ "lm_studio_use_default_quant": "Varsayılanı kullan",
807
+ "lm_studio_recommended": "Önerilen",
808
+ "lm_studio_clear_downloads": "Tamamlananları temizle",
809
+ "lm_studio_no_downloads": "Henüz indirme yok",
810
+ "lm_studio_downloads_disclaimer": "İndirmeler LM Studio ana bilgisayarında çalışır. Duraklatma, durdurma ve model silme işlemleri bu uygulama üzerinden değil, o bilgisayarda yapılmalıdır.",
811
+ "lm_studio_staff_pick": "Öne çıkan",
812
+ "lm_studio_params": "PARAMETRE",
813
+ "lm_studio_arch": "MİMARİ",
814
+ "lm_studio_domain": "ALAN",
815
+ "lm_studio_format": "FORMAT",
816
+ "lm_studio_vision": "Görüş",
817
+ "lm_studio_tool_use": "Araç kullanımı",
818
+ "lm_studio_reasoning": "Mantık yürütme",
819
+ "lm_studio_download_options": "İndirme seçenekleri",
820
+ "lm_studio_download": "İndir",
821
+ "lm_studio_download_size": "{size} İndir",
822
+ "lm_studio_downloading_percent": "İndiriliyor %{percent}",
823
+ "lm_studio_readme_unavailable": "Bu model için README mevcut değil.",
824
+ "lm_studio_full_gpu_offload": "Tam GPU yük devretmesi mümkün",
825
+ "lm_studio_partial_gpu_offload": "Kısmi GPU yük devretmesi mümkün",
826
+ "lm_studio_likely_too_large": "Muhtemelen çok büyük",
827
+ "lm_studio_available_ram_gb": "Kullanılabilir RAM (GB, isteğe bağlı)",
828
+ "lm_studio_available_vram_gb": "Kullanılabilir VRAM (GB, isteğe bağlı)",
829
+ "lm_studio_memory_settings_title": "Öneriler için bellek",
830
+ "lm_studio_memory_settings_desc": "Model tarayıcısında modellerin makinenize sığıp sığmadığını tahmin etmek için kullanılır.",
831
+ "think_button_label": "Düşün",
832
+ "thinking_mode_title": "Düşünme modu",
833
+ "reasoning_effort_low": "Düşük",
834
+ "reasoning_effort_medium": "Orta",
835
+ "reasoning_effort_high": "Yüksek",
836
+ "could_not_read_file": "Dosya okunamadı",
837
+ "server_offline": "Sunucu Çevrimdışı",
838
+ "could_not_establish_connection": "Sunucuya bağlantı kurulamadı. Lütfen sunucunuzun çalışıp çalışmadığını ve ana bilgisayar/port ayarlarının doğru olup olmadığını kontrol edin.",
839
+ "retry_connection": "Bağlantıyı Yeniden Dene",
840
+ "tokens_label": "Token'lar",
841
+ "enter_context_length": "Bağlam uzunluğunu girin...",
842
+ "openrouter_disclosure": "Bu sağlayıcıya bağlanarak sohbet mesajlarınız ve girdileriniz onların sunucularına gönderilir. LocalMind sohbetlerinizi izlemez veya saklamaz.",
843
+ "welcome_message_cloud": "Mesajlarınız bağlı olan sağlayıcınıza gönderilir.",
844
+ "privacy_policy": "Gizlilik Politikası",
845
+ "cloud_sync": "S3 Bulut Eşitleme",
846
+ "cloud_sync_description": "Kendi S3 uyumlu sunucunuza uçtan uca şifreli eşitleme",
847
+ "cloud_sync_endpoint": "Uç Nokta URL'si (Endpoint)",
848
+ "cloud_sync_bucket": "Kova (Bucket)",
849
+ "cloud_sync_region": "Bölge (Region)",
850
+ "cloud_sync_prefix": "Önek (Prefix)",
851
+ "cloud_sync_access_key": "Erişim Anahtarı Kimliği",
852
+ "cloud_sync_secret_key": "Gizli Erişim Anahtarı",
853
+ "cloud_sync_session_token": "Oturum Jetonu (İsteğe Bağlı)",
854
+ "cloud_sync_passphrase": "Şifreleme Parolası",
855
+ "cloud_sync_confirm_passphrase": "Parolayı Onayla",
856
+ "cloud_sync_path_style": "Yol stili adresleme kullan",
857
+ "cloud_sync_allow_http": "Güvensiz HTTP'ye izin ver",
858
+ "cloud_sync_http_warning": "HTTP istek meta verilerini ve kimlik bilgilerini ağa açık hale getirir. Yalnızca güvenilir bir yerel S3 sunucusu için kullanın.",
859
+ "cloud_sync_test": "Bağlantıyı test et",
860
+ "cloud_sync_enable": "Şifreli eşitlemeyi etkinleştir",
861
+ "cloud_sync_now": "Şimdi eşitle",
862
+ "cloud_sync_disconnect": "Bu cihazın bağlantısını kes",
863
+ "cloud_sync_last_synced": "Son eşitleme",
864
+ "cloud_sync_never": "Hiçbir zaman",
865
+ "cloud_sync_conflicts": "Çakışmalar korundu",
866
+ "cloud_sync_passphrase_mismatch": "Parolalar eşleşmiyor",
867
+ "crash_report_title": "Bir şeyler yanlış gitti",
868
+ "crash_report_stack_trace": "Yığın izleme (Stack trace)",
869
+ "crash_report_tap_to_expand": "Genişletmek için dokunun",
870
+ "crash_report_button": "Bu çökmeyi bildir",
871
+ "crash_try_again": "Tekrar dene",
872
+ "crash_report_empty_stack": "<boş>",
873
+ "crash_report_disclaimer": "Bildirme işlemi, teşhis bilgileri önceden doldurulmuş olarak GitHub'ı açar. Kontrol sizdedir — hiçbir şey otomatik olarak gönderilmez. Lütfen göndermeden önce hassas içerikleri gözden geçirin ve kaldırın.",
874
+ "crash_report_copied": "Panoya kopyalandı",
875
+ "report_a_problem": "Sorun bildir",
876
+ "rename_folder": "Klasörü yeniden adlandır",
877
+ "delete_folder": "Sil folder",
878
+ "delete_folder_title": "Sil folder?",
879
+ "delete_folder_body": "Silmek istediğinizden emin misiniz \"{name}\"? Sohbetler or saved messages inside will be moved back to \"Unfiled\". Bu işlem geri alınamaz.",
880
+ "folder_name_required": "Lütfen bir klasör adı girin",
881
+ "model_required_toast": "Önce bir model seçmeniz gerekiyor"
882
+}
\ No newline at end of file
test/core/utils/locale_utils_test.dart
+12
@@ -12,10 +12,22 @@ void main() {
12
test('parses locales with country codes', () {
13
expect(parseLocaleCode('zh_TW'), const Locale('zh', 'TW'));
14
expect(parseLocaleCode('zh-TW'), const Locale('zh', 'TW'));
15
+ expect(parseLocaleCode('tr_TR'), const Locale('tr', 'TR'));
16
});
17
});
18
19
group('findSupportedLocale', () {
20
+ test('matches Turkish locale exactly', () {
21
+ expect(
22
+ findSupportedLocale('tr', AppLocalizations.supportedLocales),
23
+ const Locale('tr'),
24
+ );
25
+ expect(
26
+ findSupportedLocale('tr_TR', AppLocalizations.supportedLocales),
27
+ const Locale('tr'),
28
+ );
29
+ });
30
+
31
test('matches Traditional Chinese exactly', () {
32
expect(
33
findSupportedLocale('zh_TW', AppLocalizations.supportedLocales),
test/features/onboarding/onboarding_language_screen_test.dart
new
+18
@@ -0,0 +1,18 @@
1
+import 'package:flutter/material.dart';
2
+import 'package:flutter_test/flutter_test.dart';
3
+import 'package:localmind/l10n/app_localizations.dart';
4
+
5
+void main() {
6
+ test('Turkish locale is supported and loads translations', () {
7
+ expect(
8
+ AppLocalizations.supportedLocales.contains(const Locale('tr')),
9
+ isTrue,
10
+ );
11
+
12
+ final l10n = lookupAppLocalizations(const Locale('tr'));
13
+ expect(l10n.app_name, 'LocalMind');
14
+ expect(l10n.cancel, 'İptal');
15
+ expect(l10n.settings_language, 'Dil');
16
+ expect(l10n.onboarding_choose_language, 'LocalMind dillerini keşfedin');
17
+ });
18
+}