forked from tashfeenahmed/freellmapi
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathms.json
More file actions
844 lines (844 loc) · 41.2 KB
/
Copy pathms.json
File metadata and controls
844 lines (844 loc) · 41.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
{
"nav": {
"models": "Model",
"playground": "Taman Permainan",
"keys": "Kunci",
"analytics": "Analitik",
"premium": "Premium",
"upgrade": "Naik Taraf",
"settings": "Tetapan",
"signOut": "Log keluar",
"openMenu": "Buka menu navigasi",
"switchLight": "Beralih ke tema cahaya",
"switchDark": "Beralih ke tema gelap",
"switchToChinese": "Beralih ke Bahasa Cina",
"switchToEnglish": "Beralih ke Bahasa Inggeris",
"modelsMenu": "Semak jenis model",
"agents": "Ejen"
},
"auth": {
"createYourAccount": "Cipta akaun anda",
"signIn": "Dafar masuk",
"email": "E-mel",
"password": "Kata Laluan",
"emailPlaceholder": "you@example.com",
"passwordPlaceholderSetup": "sekurang-kurangnya 8 aksara",
"passwordPlaceholderLogin": "kata laluan anda",
"setupDescription": "Tetapkan emel dan kata laluan yang akan melindungi papan pemuka ini.",
"loginDescription": "Log masuk untuk mengurus kunci, penghalaan, dan analitik anda.",
"createAccount": "Cipta akaun",
"creating": "Mencipta...",
"signingIn": "Log masuk...",
"loading": "Memuatkan...",
"newPasswordAutoComplete": "kata laluan baru",
"currentPasswordAutoComplete": "kata laluan semasa",
"serverUnreachableBefore": "Tidak dapat menghubungi pelayan. Pastikan backend berjalan (",
"serverUnreachableAfter": ").",
"setupCode": "Kod persediaan",
"setupCodePlaceholder": "kod daripada log pelayan",
"setupCodeHint": "Penyediaan dari peranti lain memerlukan kod sekali sahaja dicetak dalam log pelayan semasa permulaan.",
"changePassword": "Tukar kata laluan",
"changeEmail": "Tukar e-mel",
"forgotPassword": "Lupa kata laluan?",
"currentPassword": "Kata laluan semasa",
"newPassword": "Kata laluan baharu",
"newEmail": "E-mel baharu",
"resetCode": "Kod set semula",
"resetCodePlaceholder": "kod daripada log pelayan",
"resetCodeHint": "Lihat kod set semula kata laluan dalam log pelayan.",
"forgotPasswordDescription": "Klik di bawah untuk menjana kod set semula. Kod akan muncul dalam log pelayan — masukkan di sini untuk menetapkan kata laluan baharu.",
"requestResetCode": "Hantar kod",
"requestingResetCode": "Menghantar…",
"resetPassword": "Set semula kata laluan",
"resettingPassword": "Menetapkan semula…",
"changingPassword": "Menukar…",
"changingEmail": "Menukar…",
"backToLogin": "Kembali ke log masuk",
"passwordChanged": "Kata laluan berjaya ditukar.",
"emailChanged": "E-mel berjaya ditukar.",
"passwordReset": "Kata laluan telah ditetapkan semula. Sila log masuk."
},
"common": {
"save": "Simpan",
"saving": "Menyimpan...",
"cancel": "Batal",
"discard": "Buang",
"delete": "Padam",
"confirm": "Sahkan",
"copy": "Salin",
"copied": "disalin",
"copyFailed": "Gagal menyalin — pilih teks dan salin secara manual",
"show": "Tunjuk",
"hide": "sembunyikan",
"apply": "Mohon",
"applied": "Digunakan",
"applying": "Memohon...",
"active": "Aktif",
"inactive": "Tidak Aktif",
"never": "tidak pernah",
"loading": "Memuatkan...",
"error": "Ralat",
"noData": "Tiada data lagi",
"unsavedChanges": "Perubahan yang belum disimpan",
"saveChanges": "Simpan perubahan",
"remove": "Buang",
"unknownError": "Ralat tidak diketahui",
"model": "Model",
"provider": "Penyedia",
"success": "Kejayaan",
"failures": "Kegagalan",
"dismiss": "Bubarkan",
"status": "Status"
},
"settings": {
"title": "Tetapan",
"language": "Bahasa",
"theme": "Tema",
"themeSystem": "Sistem",
"themeLight": "Cerah",
"themeDark": "Gelap",
"searchLanguage": "Bahasa carian...",
"noLanguages": "Tiada bahasa ditemui",
"sections": "Bahagian tetapan",
"sectionGeneral": "Umum",
"sectionCompression": "Pemampatan",
"sectionAdvanced": "Lanjutan",
"sectionPreview": "Pratonton",
"generalDescription": "Bahasa dan penampilan papan pemuka ini.",
"advancedDescription": "Ambang dan suis keselamatan untuk saluran pemampatan.",
"compressionTitle": "Pemampatan prompt",
"compressionDescription": "Kurangkan saiz permintaan sebelum penghalaan sambil mengekalkan kod, ralat, laluan, nombor, dan definisi alat.",
"compressionHelp": "Menulis semula setiap permintaan sebelum dihantar kepada penyedia supaya menggunakan lebih sedikit token. Kod, ralat, laluan fail dan nombor dilindungi, dan sebarang penulisan semula yang merosakkannya akan dibuang.",
"compressionMode": "Mod",
"compressionModeHelp": "Mati menghantar permintaan tanpa diubah. Tanpa kehilangan hanya membuang teks berulang dan terbuang. Standard turut memendekkan output alat. Agresif turut memadatkan giliran perbualan lama.",
"compressionOff": "Mati",
"compressionLossless": "Tanpa kehilangan",
"compressionStandard": "Standard",
"compressionAggressive": "Agresif",
"compressionLossy": "Dengan kehilangan",
"compressionEngines": "Enjin",
"compressionEnginesHelp": "Setiap enjin ialah satu langkah penulisan semula. Mod menentukan enjin mana yang berjalan; mematikan salah satunya di sini mengeluarkannya daripada semua mod.",
"engineDedup": "Blok berulang",
"engineDedupHelp": "Menggantikan blok teks yang telah muncul lebih awal dalam perbualan dengan rujukan ringkas kepadanya.",
"engineLite": "Pembersihan ruang kosong",
"engineLiteHelp": "Memangkas ruang di hujung baris, menggabungkan baris kosong berulang dan membuang mesej sistem yang berulang.",
"engineReadLifecycle": "Bacaan fail yang digantikan",
"engineReadLifecycleHelp": "Menggantikan hasil bacaan fail terdahulu dengan nota apabila fail yang sama dibaca atau disunting semula kemudian.",
"engineToolfilter": "Penapis output alat",
"engineToolfilterHelp": "Memendekkan output perintah dan alat seperti binaan, ujian dan pemasangan. Baris ralat dan surih tindanan sentiasa dikekalkan.",
"engineJsoncompact": "Jadual JSON",
"engineJsoncompactHelp": "Mengekod semula tatasusunan JSON panjang yang berkongsi medan sama sebagai jadual padat. Boleh diterbalikkan, jadi tiada apa yang hilang.",
"engineRelevance": "Penapis kaitan",
"engineRelevanceHelp": "Membuang ayat yang paling kurang berkaitan dengan mesej terkini apabila mesej melebihi bajet saiznya.",
"engineAging": "Giliran lama",
"engineAgingHelp": "Memadatkan giliran perbualan selain beberapa yang terkini menjadi ringkasan pendek yang mengekalkan laluan, ralat dan keputusan.",
"engineHardBudget": "Siling token",
"engineHardBudgetHelp": "Membuang baris yang paling kurang bernilai sehingga permintaan muat dengan sasaran token.",
"compressionAutoTrigger": "Cetus automatik melebihi anggaran token",
"compressionAutoTriggerHelp": "Permintaan yang dianggarkan melebihi jumlah token ini bertukar kepada Agresif secara automatik. Biarkan kosong untuk melumpuhkan.",
"compressionPrefixFreeze": "Bekukan awalan prompt yang berulang",
"compressionPrefixFreezeHelp": "Membiarkan prompt sistem tidak diubah setelah teks yang sama dilihat tiga kali, supaya cache prompt di pihak penyedia terus berfungsi.",
"compressionTrustProjectFilters": "Percayai fail penapis projek",
"compressionTrustProjectFiltersHelp": "Turut memuatkan penapis output alat daripada direktori kerja. Dimatikan secara lalai, kerana sesebuah repositori boleh menggunakannya untuk menyembunyikan output daripada model.",
"compressionStats": "Saiz dijimatkan",
"compressionEstimatedTokensSaved": "Anggaran token dijimatkan",
"compressionPreview": "Pratonton langsung",
"compressionPreviewDescription": "Hantar badan permintaan melalui saluran pemampatan untuk melihat apa yang akan diterima oleh penyedia.",
"compressionPreviewPlaceholder": "Tampal JSON permintaan atau teks biasa",
"compressionRunPreview": "Jalankan pratonton",
"updatesTitle": "Kemas kini",
"checkForUpdates": "Semak kemas kini",
"lastChecked": "Terakhir diperiksa: {when}",
"currentVersion": "Binaan semasa:",
"updateAvailable": "Kemas kini tersedia",
"changelog": "Perubahan",
"upToDate": "Sudah dikemas kini",
"buildAhead": "Binaan ini mendahului cabang main rasmi.",
"buildDiverged": "Binaan ini telah menyimpang daripada cabang main rasmi.",
"buildUnknown": "Binaan tersuai ini tidak dapat dibandingkan dengan cabang main rasmi.",
"notGitInstall": "Pemasangan ini tidak menyertakan maklumat komit.",
"checkFailed": "Tidak dapat menyemak kemas kini.",
"contactsGithub": "Semakan dijalankan secara manual dan menghubungi GitHub.",
"openReleases": "Buka Keluaran GitHub",
"restartAfterUpdate": "Mulakan semula FreeLLMAPI selepas binaan selesai."
},
"models": {
"title": "Model",
"chatModelsTab": "Model sembang",
"fusionTab": "Fusi",
"embeddingsTab": "Penyisipan",
"imageTab": "Imej",
"audioTab": "Audio",
"imageDesc": "Model penjanaan teks-ke-imej.",
"audioDesc": "Model teks-ke-ucapan dan pertuturan-ke-teks.",
"mediaHint": "Jana melalui",
"mediaEmpty": "Belum ada model lagi. Mereka diselaraskan dari katalog.",
"ttsHeading": "Teks ke ucapan",
"sttHeading": "Pertuturan ke teks",
"sttHint": "Transkrip melalui",
"sttEmpty": "Tiada model pertuturan-ke-teks lagi. Mereka diselaraskan dari katalog.",
"newBadge": "Baru",
"monthlyTokenBudget": "Bajet token bulanan",
"remaining": "baki",
"used": "digunakan",
"of": "daripada",
"showAllModels": "Tunjukkan semua model {count}",
"showLess": "Tunjukkan kurang",
"vision": "Visi",
"visionTitle": "Menerima input imej",
"tools": "Alat",
"toolsTitle": "Memancarkan panggilan alat berstruktur, jadi ia layak untuk permintaan yang membawa alat",
"retired": "Dihentikan",
"penalty": "Penalti −{value}",
"obs": "{count} obs",
"tokPerMonth": "{count} Tok/Bulan",
"rpmLimit": "{count} rpm",
"rpdLimit": "{count} rpd",
"noKey": "tiada kunci",
"dragToReorder": "Seret untuk menyusun semula",
"dragToReorderGroup": "Seret untuk menyusun semula model",
"providerCount": "{count} penyedia",
"servedBy": "Dihidangkan oleh {providers}",
"viewProviders": "Lihat penyedia",
"backToModels": "Kembali ke model",
"providersHeading": "Penyedia yang melayani model ini",
"codeSnippetHeading": "Gunakan model ini",
"modelNotFound": "Model ini tidak tersedia, atau tiada penyedia yang dikonfigurasikan.",
"providerIdsHeading": "ID model penyedia",
"providerIdsHint": "Hantar id model bersatu untuk failover merentasi setiap penyedia, atau id khusus penyedia untuk pin satu penyedia.",
"copyModelName": "Salin nama model",
"settingsHeading": "Tetapan penyedia",
"settingsHint": "Suntingan tempatan pada model katalog dikekalkan merentasi penyelarasan katalog. Model katalog yang dipadam akan kekal dipadam sehingga anda menambahnya semula melalui konfigurasi.",
"catalogModel": "katalog",
"customModel": "adat",
"localOverride": "penggantian tempatan",
"displayName": "Nama paparan",
"sizeLabel": "Tahap keupayaan",
"sizeLabelHint": "Frontier/Large/Medium/Small menentukan paksi perisikan. Model tanpa tahap yang dikenali mendapat skor 0.",
"sizeLabelNone": "Tiada (tanpa skor)",
"contextWindow": "Konteks",
"inFallback": "Dalam rangkaian",
"saveModelSettings": "Simpan tetapan model",
"aggregateBudget": "{count}/bulan",
"aggregateBudgetTitle": "Jumlah token percuma setiap bulan merentasi penyedia model ini",
"rateRpm": "{count} RPM",
"rateRpd": "{count} RPD",
"rateTitle": "Kadar terhad — tiada bajet token bulanan tetap",
"splitOut": "Jangan gabungkan salinan ini",
"splitOutHint": "Berikan salinan pembekal ini entri berasingan sendiri dan bukannya menggabungkannya ke dalam model bersatu. Anda boleh menggabungkannya kembali dari halaman salinan itu sendiri.",
"splitUndo": "Gabung kembali",
"splitUndoHint": "Salinan ini disimpan berasingan daripada model bersatunya. Gabungkannya kembali untuk gagal merentas semua penyedianya sekali lagi.",
"splitBadge": "disimpan berasingan",
"noData": "tiada data",
"noDataTitle": "Tiada permintaan direkodkan lagi — kebolehpercayaan dan kelajuan tidak diukur untuk pembekal ini.",
"bestOfN": "terbaik dari {count}",
"perProviderScores": "Markah setiap penyedia: {list}",
"columnModel": "Model",
"columnOn": "On",
"noModelsBefore": "Tiada model tersedia. Tambah kekunci API pada",
"keysPageLink": "Halaman Keys",
"noModelsAfter": "Pertama.",
"hiddenNoKeys": "Tersembunyi (tiada kunci): {platforms}",
"searchPlaceholder": "Model atau penyedia carian...",
"clearSearch": "Kosongkan carian",
"ctxAny": "Apa-apa konteks",
"ctxBadge": "{size} ctx",
"ctxTitle": "Tetingkap konteks",
"copyModelId": "Salin id model",
"showingCount": "{shown} model {total}",
"clearFilters": "Padam penapis",
"noMatches": "Tiada model yang sepadan dengan penapis anda.",
"noModelsTitle": "Tiada model yang dikonfigurasikan",
"intelligenceRank": "Perisikan",
"speedRank": "Kelajuan",
"rankHint": "Kedudukan dalam katalog — 1 adalah yang terbaik.",
"limitRpm": "RPM",
"limitRpd": "RPD",
"limitTpm": "TPM",
"limitTpd": "TPD",
"limitHint": "Biarkan kosong untuk tiada had.",
"usageThisMonth": "Penggunaan bulanan",
"usageEmpty": "Tiada permintaan lagi bulan ini.",
"usageRequestsMonth": "{count} permintaan bulan ini"
},
"strategies": {
"explore": "Teroka model yang belum diukur",
"exploreHint": "Beri model tanpa data kebolehpercayaan/kelajuan peluang 10% untuk dicuba supaya sampel terkumpul.",
"title": "Strategi penghalaan",
"description": "Pilih strategi penghalaan. Dalam mod Manual anda seret untuk menetapkan susunan; Strategi lain menghala berdasarkan skor langsung merentasi kebolehpercayaan, kelajuan dan kecerdasan.",
"weightsSummary": "kebolehpercayaan {reliability}% · kelajuan {speed}% · {intelligence}% kecerdasan",
"guardrails": "pagar penghadang",
"guardrailsTooltip": "Pagar keselamatan sentiasa aktif: ruang kuota bebas × penalti had kadar hidup. Di bawah 1.0 bermakna model ini ditahan.",
"scoreTooltip": "Skor penghalaan akhir = purata berwajaran bagi ketiga-tiga paksi, didarab dengan pagar penghalang. Laluan yang lebih tinggi dahulu.",
"modeManualHint": "Mod manual: permintaan mengikut susunan di bawah, dari atas ke bawah. Seret untuk menyusun semula.",
"modeScoreHint": "Skor dikemas kini daripada trafik langsung. Pesanan di bawah adalah bagaimana permintaan diarahkan sekarang.",
"manual": "Manual",
"manualBlurb": "Laluan mengikut susunan tepat yang anda tetapkan di bawah. Seret pemegang untuk menyusun semula. Tiada jaringan; rantai ini diikuti dari atas ke bawah.",
"balanced": "seimbang",
"balancedBlurb": "Kelebihan kebolehpercayaan (50%), dengan kelajuan dan kecerdasan diberi berat sama rata (25% setiap satu). Satu kegagalan yang munasabah dan menyeluruh.",
"smartest": "paling bijak",
"smartestBlurb": "Lebih suka model yang paling berkemampuan tetapi masih berfungsi. Kecerdasan 55%, kebolehpercayaan 35%, kelajuan 10%.",
"fastest": "Terpantas",
"fastestBlurb": "Lebih suka model terpantas yang masih berfungsi. Kelajuan 55%, kebolehpercayaan 35%, kecerdasan 10%.",
"reliable": "Paling boleh dipercayai",
"reliableBlurb": "Maksimumkan kadar kejayaan di atas segalanya. Kebolehpercayaan 70%, kelajuan dan kecerdasan 15% setiap satu.",
"custom": "Custom",
"customBlurb": "Tetapkan keseimbangan anda sendiri antara kebolehpercayaan, kelajuan dan kecerdasan dengan slider. Enjin yang sama seperti pratetap, cuma berat anda.",
"adjust": "Laraskan",
"customWeights": "Berat khas",
"customWeightsHelp": "Slider adalah bebas; Saham seimbang automatik ke 100%.",
"weightReliability": "Kebolehpercayaan",
"weightSpeed": "Kelajuan",
"weightIntelligence": "Perisikan",
"weightRequired": "Sekurang-kurangnya satu berat mesti melebihi sifar.",
"scoreColumn": "Skor"
},
"penaltyInspector": {
"title": "Tekanan penghala",
"subtitle": "Penalti, cooldown, dan kegagalan dari {minutes} minit terakhir",
"rowCount": "{count} aktif",
"offChain": "tidak berantai",
"penaltyValue": "Penalti {value}",
"factor": "skor x{factor}",
"noCooldown": "Tiada masa sejuk",
"cooldownChip": "{key} - {time}",
"errorsHeading": "{count} ralat terkini",
"noRecentErrors": "Tiada ralat terkini",
"noKey": "tiada kunci",
"reasons": {
"penalty": "dipenalti",
"cooldown": "masa sejuk",
"recent_errors": "gagal"
}
},
"keys": {
"pageTitle": "Kunci",
"pageDescription": "Kelayakan penyedia dan kunci API bersatu yang aplikasi anda sambungkan.",
"tabProviders": "Penyedia",
"checklistSummary": "{configured} daripada {total} penyedia telah dikonfigurasi",
"checklistKeyless": "tiada kunci diperlukan",
"tabQuotaSignals": "Isyarat kuota",
"tabApiKey": "Kunci API bersatu",
"tabAnthropic": "Anthropic",
"unifiedKey": "Kunci API bersatu anda",
"regenerate": "menjana semula",
"showKey": "Tunjuk",
"hideKey": "sembunyikan",
"copyKey": "Salin",
"copyFullKey": "Salin kunci penuh",
"copiedKey": "disalin",
"baseUrl": "URL asas",
"endpointChat": "Sembang",
"endpointResponses": "Respons",
"endpointEmbeddings": "Penyisipan",
"endpointEmbeddingsHint": "model: \"auto\" atau keluarga dari tab Embeddings",
"endpointMessages": "Mesej",
"endpointMessagesHint": "Anthropic-serasi (Claude)",
"anthropicTitle": "Model Claude (Anthropic)",
"anthropicDesc": "Tunjukkan klien SDK Claude atau Anthropic pada pelayan ini. Anthropic klien menghantar nama model Claude — memetakan setiap satu ke Auto (penghala memilih model percuma) atau pin model tertentu.",
"anthropicBaseUrl": "URL asas",
"anthropicAuth": "Tajuk pengesahan",
"anthropicAuto": "Auto — router memilih model terbaik",
"anthropicSave": "Simpan pemetaan",
"anthropicSaved": "Disimpan",
"anthropicNote": "Anthropic pelanggan mengekalkan nama model Claude terbina dalam mereka; Pemetaan di atas menentukan bagaimana setiap satu menghala ke dalam kolam anda.",
"familyDefault": "Lalai",
"familyOpus": "Opus",
"familySonnet": "Soneta",
"familyHaiku": "Haiku",
"selectPlatform": "Pilih penyedia",
"addKey": "Tambah kekunci",
"keyAdded": "Kunci ditambah",
"endpointKeysShareModels": "Kunci untuk endpoint yang sama berkongsi modelnya.",
"export": "Eksport",
"exportAll": "Semua kekunci",
"exportHealthy": "Hanya sihat",
"exportKeys": "Eksport kekunci API",
"exportFormat": "Format",
"exportHealthyOnly": "Kekunci sihat sahaja",
"exportHealthyOnlyDesc": "Kecualikan kunci yang sedang gagal pemeriksaan kesihatan",
"exportWillExport": "Akan eksport",
"exportKey": "kunci",
"exportKeys plural": "kekunci",
"exporting": "Mengeksport...",
"exportDownload": "Muat turun",
"exportSuccess": "Kekunci {count} dieksport",
"adding": "Menambah...",
"selectProvider": "Pilih penyedia...",
"accountId": "ID Akaun",
"label": "Label",
"noKeyNeeded": "(tidak perlu kunci)",
"outboundProxy": "Proksi keluar",
"outboundProxyDescription": "Lalukan permintaan LLM keluar melalui proksi. Menyokong SOCKS5, HTTP, dan HTTPS.",
"proxyUrl": "Proxy URL",
"saveProxy": "Simpan",
"savingProxy": "Menyimpan...",
"proxyLoadFailed": "Tidak dapat memuatkan tetapan proksi.",
"addCustom": "Tambah model yang serasi dengan OpenAI tersuai",
"addCustomDescription": "Arahkan model chat, penyenaman, imej, atau audio pada mana-mana titik akhir yang serasi OpenAI. Kunci API adalah pilihan untuk pelayan tempatan.",
"customType": "Jenis",
"customTypeChat": "Sembang",
"customTypeEmbedding": "penyenaman",
"customTypeImage": "Imej",
"customTypeAudio": "Audio",
"customBaseUrl": "URL asas",
"customModels": "Model",
"customModel": "Model",
"customDisplayName": "Nama paparan",
"customDisplayNamePerModel": "setiap model",
"customDisplayNameOptional": "pilihan",
"customFamily": "Keluarga",
"customFamilyPlaceholder": "lalai kepada id model",
"customApiKey": "kunci API",
"customCapabilities": "Keupayaan",
"addModel": "Tambah model",
"modelAdded": "Model ditambah",
"addModels": "Tambah model {count}",
"addEmbeddingModel": "Tambah penyisipan",
"addImageModel": "Tambah model imej",
"addAudioModel": "Tambah model audio",
"addingCustom": "Menambah...",
"discoverModels": "Dapatkan model",
"probeNow": "Uji endpoint",
"probeSuccess": "{model} diuji dalam {latency}ms",
"probeFailed": "Ujian gagal: {reason}",
"discoverTitle": "Model pada endpoint ini",
"discoverHint": "Pilih model untuk didaftarkan. Yang sudah ditambah kekal terkunci.",
"discoverEmpty": "Endpoint ini tidak mengembalikan sebarang model.",
"discoverAlreadyAdded": "Ditambah",
"discoverSelectAll": "Pilih semua",
"modelsAdded": "{count} model ditambah",
"getApiKey": "Dapatkan kunci API",
"deleteKeyConfirm": "Padamkan kunci ini? Ini tidak boleh dibatalkan.",
"checkAll": "Semak semua",
"checking": "Periksa...",
"editLabel": "Sunting label",
"saveLabel": "Simpan label",
"unifiedKeyDescBefore": "Gunakan ini sebagai OpenAI",
"unifiedKeyDescAfter": "; Ia mengesahkan permintaan kepada proksi ini.",
"serverUnreachableBefore": "Tidak dapat menghubungi pelayan pada",
"serverUnreachableAfter": ". Pastikan backend berjalan. NPM run dev memulakan kedua-duanya, dan log pelayan mencetak di bawah awalan pelayan.",
"paneProviderKey": "Kunci penyedia",
"paneImportFile": "Import fail",
"paneCustomEndpoint": "Titik akhir tersuai",
"platform": "Platform",
"apiToken": "token API",
"noKeyNeededPlaceholder": "Tiada kunci API diperlukan",
"bearerTokenPlaceholder": "Token pembawa",
"pasteKeyPlaceholder": "tampal kekunci di sini",
"pasteSeveral": "Tampal beberapa",
"keylessHint": "Tiada kunci API diperlukan: tahap percuma penyedia ini adalah tanpa nama (kadar terhad mengikut IP).",
"enable": "Aktifkan",
"noProviderKeys": "Tiada kunci penyedia lagi. Tambah satu di atas untuk mula penghalaan.",
"filterPlaceholder": "Tapis penyedia atau kunci",
"filterAll": "Semua",
"filterHealthy": "Sihat",
"filterIssues": "Isu",
"filterDisabled": "Kurang upaya",
"noFilterMatch": "Tiada penyedia yang sepadan dengan penapis anda.",
"providerCountSummary": "{providers} penyedia · kekunci {keys}",
"summaryHealthy": "{count} sihat",
"summaryIssueOne": "isu {count}",
"summaryIssueOther": "{count} isu",
"providerActions": "Tindakan penyedia",
"routeViaProxy": "Laluan melalui proksi",
"checkNow": "Semak sekarang",
"proxyEnvHintBefore": "Juga boleh dikonfigurasikan melalui",
"proxyEnvHintAfter": "pembolehubah persekitaran (diberi keutamaan). Biarkan kosong untuk dinyahaktifkan. Contoh:",
"importKeys": "Import kunci penyedia",
"importKeysDescription": "Muat naik fail .env, JSON, JSONC, CSV, Markdown, atau teks.",
"importFiles": "Fail",
"importFileCount": "{count} dipilih",
"previewFiles": "Pratonton",
"previewing": "Pratonton...",
"selected": "Dipilih",
"provider": "Penyedia",
"keyName": "Nama utama",
"keyValue": "Nilai utama",
"chooseProvider": "Pilih penyedia",
"noPreviewKeys": "Tiada kunci ditemui dalam fail-fail itu.",
"skippedItems": "Dilangkau:",
"moreItems": "+{count} lagi",
"importSelected": "Import {count}",
"importing": "Mengimport...",
"noImportSelection": "Pilih sekurang-kurangnya satu baris dengan penyedia.",
"duplicate": "Duplikat",
"duplicatesFound": "{count} pendua yang dikesan — sudah wujud dan akan diabaikan.",
"importResult": "{imported} import; gagal {failed}.",
"importModelCount": "+{count} model",
"importResultWithModels": "{imported} import; {models} model didaftarkan; gagal {failed}.",
"confirmRemove": "Sahkan?",
"quotaSignalsTitle": "Isyarat kuota",
"quotaSignalsEmptyTitle": "Tiada pemerhatian kuota lagi",
"quotaSignalsEmptyDesc": "Ini diisi selepas penyedia mengembalikan header had kadar, ralat kuota, atau isyarat pengesahan.",
"quotaKeyRef": "#{id} utama",
"quotaPoolRef": "{pool} kolam",
"quotaLimit": "Had",
"quotaRemaining": "Baki",
"quotaReset": "Tetapkan Semula",
"quotaObserved": "diperhatikan",
"tabAgents": "Ejen",
"familyGeminiPro": "Gemini Pro",
"familyGeminiFlash": "Gemini Flash",
"familyGeminiFlashLite": "Gemini Flash-Lite",
"geminiTitle": "Pemetaan model Gemini",
"geminiDesc": "Petakan nama Gemini Pro, Flash dan Flash-Lite kepada Auto atau model katalog tertentu.",
"compatibilityTitle": "Keserasian ejen",
"compatibilityDesc": "Kawal permukaan keserasian pilihan dan penemuan model Claude Code.",
"ollamaMode": "Emulasi Ollama",
"ollamaModeHint": "Loopback terbuka tidak sekali-kali menerima trafik LAN yang tidak disahkan.",
"ollamaOff": "Mati",
"ollamaLoopback": "Terbuka pada loopback",
"ollamaKeyRequired": "Kunci API diperlukan",
"claudeAliases": "Alias penemuan Claude Code",
"claudeAliasesHint": "Dedahkan alias claude/<model> supaya pemilih model gateway dapat menyenaraikan katalog.",
"urlTokensTitle": "Token URL boleh dibatalkan",
"urlTokensDesc": "Untuk klien tanpa pengepala sahaja. Token URL boleh bocor ke dalam sejarah dan log, jadi batalkannya apabila tidak lagi diperlukan.",
"urlTokenLabel": "Label token",
"createUrlToken": "Cipta token",
"urlTokenOnce": "Salin token ini sekarang. Ia tidak akan dipaparkan lagi.",
"revoked": "Dibatalkan",
"revoke": "Batalkan",
"modelScope": "Skop model",
"modelScopeDesc": "Hadkan kunci ini kepada ID model tertentu. Penghala melangkau kunci ini untuk model lain.",
"modelScopeAdd": "Masukkan ID model dan tekan Enter",
"modelScopeEmpty": "Tiada skop ditetapkan — kunci ini melayani semua model penyedianya.",
"modelScopeClear": "Kosongkan skop",
"modelScopeBadgeOne": "terhad · 1 model",
"modelScopeBadgeOther": "terhad · {count} model",
"cpTitle": "Profil klien",
"cpDesc": "Kunci API bagi setiap klien, masing-masing dengan prompt sistem yang sentiasa digunakan oleh pelayan.",
"cpEmpty": "Belum ada profil klien.",
"cpNameLabel": "Nama",
"cpNamePlaceholder": "cth. Bot sokongan",
"cpPromptLabel": "Prompt sistem (pilihan)",
"cpPromptPlaceholder": "Arahan yang ditambah oleh pelayan di hadapan setiap permintaan dengan kunci ini.",
"cpCreate": "Cipta profil",
"cpRotate": "Putar kunci",
"cpKeyOnce": "Salin kunci ini sekarang — ia tidak akan dipaparkan lagi.",
"cpEnabledAria": "Profil diaktifkan"
},
"status": {
"healthy": "sihat",
"rateLimited": "terhad kadar",
"invalid": "tidak sah",
"error": "ralat",
"unchecked": "tidak diperiksa"
},
"analytics": {
"title": "Analitik",
"description": "Permintaan volum, latensi, penggunaan token, dan kegagalan.",
"range24h": "24 jam",
"range7d": "7d",
"range30d": "30d",
"range90d": "90d",
"requests": "Permintaan",
"successRate": "Kadar kejayaan",
"inputTokens": "Token input",
"outputTokens": "Token output",
"avgLatency": "Kependaman purata",
"p95Latency": "Latensi P95",
"avgTtft": "Purata TTFT",
"estSavings": "Anggaran simpanan",
"requestsByProvider": "Permintaan oleh penyedia",
"avgLatencyByProvider": "Purata kependaman mengikut penyedia",
"ttftByProvider": "Masa untuk token pertama mengikut penyedia",
"ttftEmpty": "Belum ada masa untuk token pertama direkodkan lagi.",
"requestsOverTime": "Permintaan dari masa ke masa",
"tokensOverTime": "Token dari masa ke masa",
"byModel": "Mengikut model",
"byPlatform": "Mengikut platform",
"errors": "Ralat",
"errorDistribution": "Taburan ralat",
"pinnedRequests": "Permintaan yang disematkan",
"pinnedHonored": "Dihormati",
"fallbackAttempts": "Cubaan sandaran",
"savingsHint": "Anda sebenarnya telah menyimpan ${actual} dalam {range} lepas. Itulah kos token yang sama pada API berbayar, dinilai mengikut model. Nombor yang dipaparkan meramalkan kadar anda dari {span} data terakhir hingga 30 hari penuh.",
"savingsHintExact": "Anda sebenarnya telah menyimpan ${actual} dalam {range} lepas. Itulah kos token yang sama pada API berbayar, dinilai mengikut model. Nombor yang ditunjukkan adalah jumlah sebenar 30 hari anda.",
"requestsHintPinned": "{pinned} permintaan ini menyematkan model tertentu dengan nama. {honored} dihidangkan oleh model yang disematkan; {failed} gagal beralih ke yang lain. Yang lain adalah laluan automatik.",
"requestsHintAuto": "Semua permintaan dalam tempoh ini adalah laluan automatik; Tiada klien yang menyematkan model tertentu dengan nama.",
"requestsHintTypes": "{chat} sembang dan {embedding} permintaan penyematan.",
"rangeLabel24h": "24 jam",
"rangeLabel7d": "7 hari",
"rangeLabel30d": "30 hari",
"rangeLabel90d": "90 hari",
"spanDays": "{count} hari",
"spanHours": "{count} jam",
"latencyMs": "Latensi (ms)",
"latency": "Latensi",
"pinned": "disematkan",
"inTokens": "Dalam token",
"outTokens": "Token keluar",
"saved": "Disimpan",
"message": "Mesej",
"time": "Masa",
"perModelBreakdown": "Pecahan setiap model",
"usageByKey": "Penggunaan mengikut kunci",
"keyColumn": "Kunci",
"keyLabelFallback": "#{id} utama",
"errorsByProvider": "Ralat mengikut penyedia",
"recentErrors": "Ralat terkini",
"noErrors": "Tiada ralat",
"recentCalls": "Panggilan terkini",
"clientIp": "IP Klien",
"clientAgent": "Aplikasi klien",
"requestedModelHint": "Permintaan {model}, dilayani sebagai sandaran",
"attempts": "Percubaan",
"filterAll": "Semua",
"filterCanceled": "Dibatalkan",
"providerBreakdown": "Pecahan setiap penyedia",
"tokensPerSec": "Tok/s",
"allProviders": "Semua penyedia",
"requestDetailTitle": "Permintaan #{id}",
"failoverLadder": "Tangga failover",
"failoverLadderHint": "Setiap lompatan permintaan ini melalui rantai sandaran, mengikut urutan.",
"noAttemptTrace": "Tiada cubaan jejak direkodkan untuk permintaan ini.",
"keyOrdinal": "#{n} utama",
"attemptTimingHint": "Offset mula dari permintaan mula · tempoh cubaan",
"requestedModel": "Model yang diminta",
"ttft": "TTFT",
"requestsByAgent": "Permintaan mengikut ejen"
},
"playground": {
"title": "Taman Permainan",
"description": "Hantar penyempurnaan sembang melalui router dan lihat penyedia mana yang melayaninya.",
"autoModel": "Auto (rantai sandaran)",
"fusionModel": "Fusi (sintesis pelbagai model)",
"selectModel": "Pilih model",
"searchModels": "Cari model...",
"noModelsFound": "Tiada model ditemui",
"send": "Hantar",
"sending": "Menghantar...",
"clear": "Clear",
"inputPlaceholder": "Taip mesej... (⏎ untuk menghantar, ⇧⏎ untuk newline)",
"emptyTitle": "Hantar mesej untuk bermula.",
"emptyDescription": "Menggunakan {model}. Tukar model dalam pemilih di atas.",
"noModels": "Belum ada model lagi. Tambah kekunci API pada halaman Kunci untuk mengisi senarai ini.",
"copyReply": "Salin balasan",
"fallback": "sandaran",
"fallbacks": "sandaran",
"fusionPanel": "Panel",
"fusionJudge": "Hakim",
"fusionTrace": "Respons model {count}",
"fusionFailed": "tiada respons",
"fusionJudgeSynth": "mensintesis jawapan akhir",
"errorPrefix": "Ralat:",
"systemPromptLabel": "Arahan sistem",
"systemPromptPlaceholder": "Pilihan. Dihantar sebagai mesej sistem sebelum sembang anda.",
"errorTitle": "Permintaan gagal",
"attach": "Lampirkan fail",
"attachTooMany": "Anda boleh melampirkan sehingga {count} fail bagi setiap mesej.",
"attachTooLarge": "{name} terlalu besar. Hadnya ialah {max}.",
"attachUnsupported": "{name} tidak disokong. Lampirkan imej (PNG, JPEG, WebP, GIF) atau fail teks (TXT, MD, CSV, JSON, LOG).",
"attachFailed": "Tidak dapat membaca {name}.",
"noVisionBadge": "Tiada imej",
"visionWarning": "{model} tidak menerima imej. Pilih model yang menyokong imej atau Auto."
},
"embeddings": {
"title": "Model",
"description": "Embedding gagal dalam satu keluarga sahaja: model yang sama dilayan oleh penyedia lain. Vektor dari model yang berbeza tidak serasi, jadi router tidak pernah menukar model pada anda.",
"defaultBadge": "Lalai · auto",
"makeDefault": "Jadikan lalai",
"moveUp": "Naik ke atas",
"moveDown": "Gerak ke bawah",
"usageToday": "{count} keperluan hari ini",
"usageMonth": "{count} TOK bulan ini",
"autoDescription": "model: \"auto\" pada laluan POST /v1/embeddings ke keluarga lalai. Menamakan keluarga (atau id model penyedia) akan menandakan keluarga itu; Penyedia di dalamnya diuji mengikut urutan.",
"unsavedChanges": "Perubahan yang belum disimpan",
"saveChanges": "Simpan perubahan",
"savingChanges": "Menyimpan...",
"tokMax": "{tokens} tok max",
"emptyTitle": "Belum ada model yang disematkan lagi",
"emptyDesc": "Keluarga penyematan akan muncul di sini apabila anda menambah kunci penyedia yang menyokong penyembatan.",
"dragToReorder": "Seret untuk menyusun semula penyedia"
},
"fusion": {
"title": "Fusi",
"description": "Panel model menjawab secara selari, kemudian hakim mensintesis satu jawapan yang lebih kuat. Gunakan dengan memanggil API model sebagai \"fusion\".",
"panelSource": "Sumber panel",
"panelSourceHelp": "Dari mana model panel datang apabila permintaan tidak menyatakan permintaannya sendiri.",
"mode": {
"auto": "Auto (Rantai Fallback)",
"autoHelp": "Pilih set model yang pelbagai dari Rantaian Fallback anda, disusun mengikut strategi penghalaan aktif anda.",
"explicit": "Panel eksplisit",
"explicitHelp": "Sentiasa gunakan model khusus yang anda pilih di bawah."
},
"panelModels": "Model panel",
"selectedCount": "{count} {max} dipilih",
"noModels": "Tiada model yang disambungkan lagi. Tambah kunci API, kemudian aktifkan model dalam Rantaian Fallback.",
"panelSize": "Saiz panel",
"panelSizeHelp": "Berapa banyak model pelbagai yang perlu dipilih secara automatik (1–{max}).",
"judge": "Model Hakim",
"judgeHelp": "Model yang mensintesis jawapan panel menjadi satu. Auto menggunakan model teratas yang tersedia.",
"judgeAuto": "Auto (kedudukan teratas tersedia)",
"strategy": "Strategi",
"strategySynthesize": "Sintesis — gabungkan panel menjadi satu jawapan",
"strategyBestOf": "Terbaik — pulangkan jawapan paling kuat (tiada keputusan hakim)",
"strategySynthesizeShort": "mensintesis",
"strategyBestOfShort": "Yang terbaik",
"exposePanel": "Dedahkan butiran panel",
"exposePanelHelp": "Lampirkan jawapan setiap model dan metadata hakim di bawah medan x_fusion dalam respons.",
"howToUse": "Cara menggunakan",
"howToUseHelp": "Hantar permintaan sembang biasa dengan model \"fusion\". Tetapan ini adalah lalai; Mana-mana permintaan boleh menggantikannya dengan medan \"fusion\".",
"unsavedChanges": "Perubahan yang belum disimpan",
"save": "Simpan"
},
"premium": {
"title": "Premium",
"description": "Katalog model langsung, pada setiap peranti.",
"loading": "Memuatkan...",
"checkForUpdates": "Semak kemas kini",
"syncing": "Menyelaraskan...",
"catalogFeed": "Suapan katalog",
"liveFeed": "Siaran langsung",
"monthlySnapshot": "Snapshot bulanan",
"lastChecked": "Terakhir diperiksa: {when}",
"liveDescription": "Model percuma baru, perubahan kuota, dan pembaikan quirk akan tiba di sini dalam beberapa jam selepas dihantar. Aplikasi ini memeriksa secara automatik dua kali sehari; Tiada apa yang boleh dibuat.",
"snapshotDescription": "Tahap percuma: katalog dikemas kini daripada snapshot bulanan, diperiksa secara automatik dua kali sehari. Premium menukar ini ke siaran langsung, dikemas kini setiap 2-3 hari.",
"lastSyncProblem": "Masalah penyelarasan terakhir: {error}",
"license": "Lesen",
"planAnnual": "Premium Tahunan",
"planLifetime": "Jangka Hayat Premium",
"expired": "Tamat Tempoh",
"inactive": "Tidak Aktif",
"lifetimeNote": "Lesen seumur hidup: tidak pernah tamat tempoh.",
"renewsOn": "Diperbaharui pada {date}.",
"willNotRenew": "Tidak akan memperbaharui. Premium sehingga {date}, kemudian pemasangan ini kembali ke katalog bulanan percuma.",
"keyInactive": "Kunci ini tidak lagi aktif. Aplikasi ini terus berfungsi pada katalog bulanan percuma.",
"manageSubscription": "Urus langganan",
"openingPortal": "Membuka...",
"removeKey": "Buang kunci dari peranti ini",
"manageHint": "Urus langganan membuka portal pengebilan Stripe: batalkan, kemas kini kad anda, atau muat turun invois. Mengeluarkan kunci hanya akan mematikan peranti ini; Pembelian anda tidak disentuh.",
"licenseKey": "Kunci lesen",
"licenseKeyPlaceholder": "fla_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"activate": "Aktifkan",
"activating": "Mengaktifkan...",
"keyHint": "Kunci anda ada dalam emel pembelian dan di halaman selepas pembayaran. Hilang?",
"recoverKey": "Pulihkan di laman web",
"upsellTitle": "Siaran langsung dengan harga $19 setahun",
"upsellDescription": "Model percuma baru sebaik sahaja ia wujud, bukannya 30 hari kemudian. Satu kunci, setiap peranti. Batalkan bila-bila masa; Router kekal kosong selama-lamanya.",
"goPremium": "Pilih Premium",
"bundled": "dibundel",
"planGeneric": "Premium"
},
"languages": {
"en": "English",
"zh-CN": "中文 (简体)",
"es": "Español",
"fr": "Français",
"pt-BR": "Português (Brasil)",
"it": "Italiano",
"hi": "हिन्दी",
"ar": "العربية",
"bn": "বাংলা",
"ru": "Русский",
"ur": "اردو",
"id": "Bahasa Indonesia",
"de": "Deutsch",
"ja": "日本語",
"sw": "Kiswahili",
"mr": "मराठी",
"te": "తెలుగు",
"tr": "Türkçe",
"ta": "தமிழ்",
"vi": "Tiếng Việt",
"ko": "한국어",
"fa": "فارسی",
"th": "ไทย",
"gu": "ગુજરાતી",
"pl": "Polski",
"uk": "Українська",
"kn": "ಕನ್ನಡ",
"ml": "മലയാളം",
"or": "ଓଡ଼ିଆ",
"my": "မြန်မာဘာသာ",
"pa": "ਪੰਜਾਬੀ",
"ro": "Română",
"nl": "Nederlands",
"ms": "Bahasa Melayu",
"tl": "Filipino",
"ha": "Hausa",
"yo": "Yorùbá",
"ig": "Igbo",
"am": "አማርኛ",
"uz": "Oʻzbekcha",
"az": "Azərbaycanca",
"si": "සිංහල",
"ne": "नेपाली",
"km": "ខ្មែរ",
"el": "Ελληνικά",
"cs": "Čeština",
"hu": "Magyar",
"sv": "Svenska",
"he": "עברית",
"da": "Dansk",
"fi": "Suomi",
"no": "Norsk",
"sk": "Slovenčina",
"bg": "Български",
"hr": "Hrvatski",
"sr": "Српски",
"lt": "Lietuvių",
"zh-TW": "中文 (繁體)",
"pt-PT": "Português (Portugal)",
"ka": "ქართული"
},
"errors": {
"boundaryTitle": "Ada sesuatu yang tidak kena",
"boundaryDescription": "Papan pemuka mengalami ralat yang tidak dijangka. Data anda selamat. Cuba lagi atau kembali ke halaman model.",
"tryAgain": "Cuba lagi",
"goHome": "Kembali ke model"
},
"notFound": {
"title": "Halaman tidak ditemui",
"description": "Halaman ini tidak wujud atau mungkin telah berpindah."
},
"setup": {
"title": "Memulakan",
"subtitle": "Tiga langkah untuk menghala permintaan pertama anda.",
"progress": "{done} of {total}",
"step1Title": "Tambah kunci penyedia",
"step1Desc": "Sambungkan sekurang-kurangnya satu akaun penyedia. Kunci percuma berfungsi.",
"step1Cta": "Tambah kekunci",
"step2Title": "Hantar permintaan ujian",
"step2Desc": "Pilih mana-mana model di Playground dan ucapkan hello.",
"step2Cta": "Taman Permainan Terbuka",
"step3Title": "Sambungkan aplikasi anda",
"step3Desc": "Gunakan kunci API bersatu anda dengan mana-mana klien yang serasi dengan OpenAI.",
"copyKey": "Salin kunci API",
"copyUrl": "Salin URL asas",
"copiedKey": "API kekunci disalin ke papan klip",
"copiedUrl": "URL asas disalin ke papan klip"
},
"palette": {
"title": "Palet arahan",
"placeholder": "Halaman carian, model, tindakan...",
"empty": "Tiada hasil",
"groupPages": "Halaman",
"groupActions": "Tindakan",
"groupModels": "Model",
"toggleTheme": "Togol mod gelap"
},
"validation": {
"required": "Diperlukan",
"url": "Masukkan URL yang sah bermula dengan http:// atau https://",
"email": "Masukkan alamat emel yang sah",
"passwordMin": "Sekurang-kurangnya {min} watak"
},
"agents": {
"title": "Ejen pengekodan",
"description": "Sambungkan alat pengekodan kepada satu gateway model percuma dengan konfigurasi terjana yang selamat untuk sandaran.",
"apiKey": "Kunci API",
"quickstartTitle": "Mula pantas",
"quickstart": "Laluan terpantas: konfigurasikan Claude Code daripada katalog langsung.",
"currentKey": "Kunci bersatu semasa:",
"seenRecently": "Dilihat baru-baru ini",
"setupLabel": "Persediaan automatik",
"setupHint": "Menulis fail konfigurasi alat ini untuk anda, menghala ke get laluan ini.",
"setupGuideHint": "Memaparkan langkah persediaan alat ini; tiada fail ditulis.",
"manualLabel": "Sambungan manual",
"manualHint": "URL asas dan kunci untuk dimasukkan dalam tetapan alat itu sendiri.",
"endpoint": "Titik akhir",
"documentation": "Dokumentasi"
}
}