Expand AITURK Turkish settings and desktop surfaces for beta 5
This commit is contained in:
1 parent
237d1e2060
commit
5e76f58637
108 files changed
+6675
-1034
No files matched your search
@@ -24,25 +24,32 @@ const en = BOTS_LOCALES.en
|
||||
const ja = BOTS_LOCALES.ja
|
||||
const zh = BOTS_LOCALES.zh
|
||||
const zhHant = BOTS_LOCALES['zh-hant']
|
||||
const tr = BOTS_LOCALES.tr
|
||||
|
||||
describe('BOTS_LOCALES', () => {
|
||||
it('covers the English key tree in every shipped locale', () => {
|
||||
expect(ja).toBeDefined()
|
||||
expect(zh).toBeDefined()
|
||||
expect(zhHant).toBeDefined()
|
||||
expect(tr).toBeDefined()
|
||||
|
||||
const enPaths = leafEntries(en).map(([path]) => path)
|
||||
|
||||
expect(leafEntries(ja).map(([path]) => path)).toEqual(enPaths)
|
||||
expect(leafEntries(zh).map(([path]) => path)).toEqual(enPaths)
|
||||
expect(leafEntries(zhHant).map(([path]) => path)).toEqual(enPaths)
|
||||
expect(
|
||||
leafEntries(tr)
|
||||
.map(([path]) => path)
|
||||
.sort()
|
||||
).toEqual([...enPaths].sort())
|
||||
})
|
||||
|
||||
it('translates user-visible chrome instead of echoing English', () => {
|
||||
const samples = ['roster.emptyTitle', 'bot.newTitle', 'group.manageTitle', 'tools.skillsHub'] as const
|
||||
const enByPath = Object.fromEntries(leafEntries(en))
|
||||
|
||||
for (const locale of [ja, zh, zhHant]) {
|
||||
for (const locale of [tr, ja, zh, zhHant]) {
|
||||
const byPath = Object.fromEntries(leafEntries(locale))
|
||||
|
||||
for (const path of samples) {
|
||||
@@ -55,7 +62,7 @@ describe('BOTS_LOCALES', () => {
|
||||
const sentinel = 'QUERY_SENTINEL'
|
||||
const gateway = 'GATEWAY_SENTINEL'
|
||||
|
||||
for (const locale of [en, ja, zh, zhHant]) {
|
||||
for (const locale of [en, tr, ja, zh, zhHant]) {
|
||||
const byPath = Object.fromEntries(leafEntries(locale))
|
||||
const queryFn = byPath['roster.noMatchQuery'] as (query: string) => string
|
||||
const bothFn = byPath['roster.noMatchQueryOn'] as (query: string, gateway: string) => string
|
||||
|
||||
@@ -33,8 +33,9 @@ import { type PluginLocaleBundles, type PluginTranslate, usePluginI18n } from '@
|
||||
import { useMemo } from 'react'
|
||||
|
||||
import { getPluginCtx } from './shared'
|
||||
import { tr } from './tr'
|
||||
|
||||
type BotsMessages = {
|
||||
export type BotsMessages = {
|
||||
/** Left rail: the bot + group-chat roster. */
|
||||
roster: {
|
||||
search: string
|
||||
@@ -1128,7 +1129,7 @@ const zhHant: BotsMessages = {
|
||||
}
|
||||
|
||||
/** Registered via `ctx.i18n.register` at plugin load (disposer tracked). */
|
||||
export const BOTS_LOCALES: PluginLocaleBundles = { en, ja, zh, 'zh-hant': zhHant }
|
||||
export const BOTS_LOCALES: PluginLocaleBundles = { en, tr, ja, zh, 'zh-hant': zhHant }
|
||||
|
||||
// Bind the message SHAPE to a plugin translator: string leaves resolve now,
|
||||
// function leaves forward their args through t(path, …).
|
||||
|
||||
@@ -0,0 +1,218 @@
|
||||
import type { BotsMessages } from './i18n'
|
||||
|
||||
export const tr: BotsMessages = {
|
||||
roster: {
|
||||
search: 'Bot ve grup sohbetlerinde ara',
|
||||
searchPlaceholder: 'Bot ve grup sohbetlerinde ara…',
|
||||
newBotOrGroup: 'Yeni bot veya grup sohbeti',
|
||||
groupChats: 'Grup sohbetleri',
|
||||
emptyTitle: 'Henüz bot yok',
|
||||
emptyDesc: 'İlk botunuzu oluşturun.',
|
||||
noMatchQuery: query => `“${query}” ile eşleşen bot veya grup sohbeti yok`,
|
||||
noMatchQueryOn: (query, gateway) => `${gateway} üzerinde “${query}” ile eşleşen bot veya grup sohbeti yok`,
|
||||
noMatchFiltersOn: gateway => `${gateway} üzerinde bu filtrelere uyan bot veya grup sohbeti yok`,
|
||||
noMatchFilters: 'Bu filtrelere uyan bot veya grup sohbeti yok.',
|
||||
clearFilters: 'Filtreleri temizle',
|
||||
allHidden: 'Tüm botlar gizli',
|
||||
allHiddenDesc: 'Botlar çalışmaya devam eder ve geçmişleri korunur.',
|
||||
showHidden: 'Gizli botları göster',
|
||||
noHiddenMatch: 'Bu filtrelere uyan gizli bot yok.',
|
||||
hiddenFromRoster: 'Listede gizli',
|
||||
pinned: 'Sabitlenenler',
|
||||
needsAttention: 'ilgilenmeniz gerekiyor',
|
||||
needsInput: 'Yanıtınız gerekiyor',
|
||||
botsAndGroups: 'Botlar ve grup sohbetleri',
|
||||
botsOnly: 'Yalnızca botlar',
|
||||
groupsOnly: 'Yalnızca grup sohbetleri',
|
||||
anyActivity: 'Tüm etkinlikler',
|
||||
activeNow: 'Şu anda etkin',
|
||||
recentlyActive: 'Yakın zamanda etkin',
|
||||
older: 'Daha eski',
|
||||
gatewayRemoved: 'Ağ geçidi kaldırıldı',
|
||||
onDemand: 'Gerektiğinde',
|
||||
ready: 'Hazır',
|
||||
statusUnknown: 'Durum bilinmiyor',
|
||||
unavailable: 'Kullanılamıyor',
|
||||
retryNow: 'Şimdi yeniden dene',
|
||||
rosterUnavailable: reason =>
|
||||
`Liste kullanılamıyor: ${reason}. Ağ geçidi profiles.list özelliğini desteklemiyorsa AITURK’ü güncelleyip ağ geçidini yeniden başlatın.`,
|
||||
waitingForGateway:
|
||||
'Ağ geçidi bağlantısı bekleniyor… Uzak bağlantılar birkaç saniye sürebilir; otomatik olarak yeniden denenir.'
|
||||
},
|
||||
sections: {
|
||||
newSection: 'Yeni bölüm',
|
||||
newTitle: 'Yeni bölüm',
|
||||
renameTitle: 'Bölümü yeniden adlandır',
|
||||
nameLabel: 'Bölüm adı',
|
||||
namePlaceholder: 'ör. Müşteriler',
|
||||
create: 'Oluştur',
|
||||
rename: 'Yeniden adlandır…',
|
||||
moveUp: 'Yukarı taşı',
|
||||
moveDown: 'Aşağı taşı',
|
||||
unassigned: 'Atanmamış',
|
||||
options: name => `${name} bölümü seçenekleri`,
|
||||
headingTip: 'Botları buraya bırakın · yeniden adlandırmak için çift tıklayın',
|
||||
emptyHint: 'Botları buraya sürükleyin',
|
||||
moveTo: 'Bölüme taşı',
|
||||
newSectionEllipsis: 'Yeni bölüm…',
|
||||
removeFromSection: 'Bölümden çıkar',
|
||||
deleted: (name, count) =>
|
||||
count === 0 ? `“${name}” silindi` : `“${name}” silindi; ${count} bot Atanmamış bölümüne taşındı`,
|
||||
undo: 'Geri al'
|
||||
},
|
||||
bot: {
|
||||
newTitle: 'Yeni bot',
|
||||
editTitle: 'Profili düzenle',
|
||||
editMenu: 'Düzenle…',
|
||||
helpPromptPlaceholder: 'Bu bot hangi konuda yardımcı olsun?',
|
||||
descriptionHint: 'Botun adı ve açıklamasından otomatik oluşturmak için boş bırakın.',
|
||||
newChatWith: 'Bu botla yeni sohbet',
|
||||
openBotChat: 'Bot sohbetini aç',
|
||||
duplicate: 'Çoğalt',
|
||||
duplicateFailed: 'Çoğaltılamadı',
|
||||
deleteTitle: 'Bot ve profili silinsin mi?',
|
||||
removeFromAllGroups: 'Tüm gruplardan çıkar',
|
||||
createFirstHint: 'Botlar panelini açıp “Yeni bot” düğmesine basın.',
|
||||
createFailed: 'Profil henüz oluşturulamadı',
|
||||
advanced: 'Gelişmiş',
|
||||
advancedHint: 'Gelişmiş — model, beceriler, araç grupları, SOUL.md',
|
||||
advancedFailed: 'Gelişmiş yapılandırma başarısız oldu',
|
||||
openAnotherChatUnsupported: 'Başka bir bot sohbeti açmak için AITURK IDE’yi güncelleyin.',
|
||||
remoteConnectionsUnsupported: 'Diğer bağlantılardaki botlarla sohbet etmek için AITURK IDE’yi güncelleyin.',
|
||||
chatEmpty: 'Başlamak için bir mesaj yazın.',
|
||||
kickoff: 'Merhaba, bana kendinden bahseder misin?'
|
||||
},
|
||||
avatar: {
|
||||
classicShapes: 'Klasik şekiller',
|
||||
blobFromName: 'Botun adından oluşturulan yüz',
|
||||
unlockFollowsName: 'Kilidi aç; yüz yeniden botun adına göre oluşsun',
|
||||
randomize: 'Rastgele oluştur',
|
||||
tabBot: 'Bot',
|
||||
tabGenerate: 'Oluştur',
|
||||
upload: 'Yükle',
|
||||
tabPet: 'Maskot',
|
||||
removeImage: 'Görseli kaldır; şekil kullan',
|
||||
removeBackToShape: 'Kaldır; şekil avatarına dön',
|
||||
describePlaceholder: 'Avatarınızı tarif edin…',
|
||||
describeHint: 'Ad, unvan, açıklama ve ajan mesajlaşma listesinden otomatik oluşturmak için boş bırakın.',
|
||||
matchTheName: 'Ada uygun oluştur',
|
||||
pickPet: 'Bu botun profil resmi için bir maskot seçin.',
|
||||
petLoadFailed: 'Maskot yüklenemedi; başka birini deneyin.',
|
||||
imageTooLarge: 'Görsel çok büyük (en fazla 15 MB).',
|
||||
generationFailed: 'Avatar oluşturulamadı',
|
||||
savedLocally: 'Görünüm yerel olarak kaydedildi; uzak sunucuya kaydedilemedi',
|
||||
savedLocallyDescriptionFailed: 'Görünüm yerel olarak kaydedildi; açıklama güncellenemedi',
|
||||
generate: 'Oluştur',
|
||||
generating: 'Oluşturuluyor…'
|
||||
},
|
||||
group: {
|
||||
newTitle: 'Yeni grup sohbeti',
|
||||
manageDesc: 'Bir bot birden fazla grup sohbetine katılabilir. Üyelikler tüm bilgisayarlarla eşitlenir.',
|
||||
manageTitle: 'Grupları yönet',
|
||||
settingsTitle: 'Grup ayarları',
|
||||
settingsDesc: 'Grubu yeniden adlandırın veya oda resmi seçin. Üyeler ve geçmiş korunur.',
|
||||
nameLabel: 'Grup adı',
|
||||
searchToAdd: 'Eklenecek botları ara',
|
||||
searchToAddPlaceholder: 'Eklenecek botları ara…',
|
||||
removeFromSelection: 'Seçimden çıkar',
|
||||
disbandTitle: 'Grup sohbeti dağıtılsın mı?',
|
||||
deleteTitle: 'Grup sohbeti silinsin mi?',
|
||||
deleteAction: 'Sil',
|
||||
composerPlaceholder: 'Bir mesaj yazın; gruptaki tüm botlar odadaki mesajları duyar.',
|
||||
attachHint: 'Dosya ekleyin; yanıt veren tüm botlar dosyaları görür',
|
||||
newThread: 'Yeni konuşma',
|
||||
reply: 'Yanıtla',
|
||||
replyInThread: 'Konuşmada yanıtla',
|
||||
replyInThreadPlaceholder: 'Konuşmada yanıtla…',
|
||||
openThread: 'Bu konuşmayı aç',
|
||||
collapseThread: 'Konuşmayı daralt',
|
||||
collapseThreadLabel: 'Bu konuşmayı daralt',
|
||||
activity: 'Etkinlik',
|
||||
noActivityYet: 'Bu turda henüz etkinlik yok.',
|
||||
showActivity: 'Oda etkinliğini göster',
|
||||
hideActivity: 'Oda etkinliğini gizle',
|
||||
stop: 'Durdur',
|
||||
stopHint: 'Bu çalıştırmayı durdur; sıradaki üyeyi keser ve diğerlerini bekletir',
|
||||
allHeldStatus: count => `${count} botun tümü duraklatıldı`,
|
||||
heldMembersStatus: members => `Duraklatılanlar: ${members}`,
|
||||
holdReleaseHint: 'Sürdürmek için duraklatılan botu etiketleyin veya @all resume gönderin.',
|
||||
needsYourInput: 'Bu grup sohbetindeki bir bot yanıtınızı bekliyor',
|
||||
pictureGenerationFailed: 'Grup resmi oluşturulamadı',
|
||||
nameTaken: name => `“${name}” adlı grup zaten var.`,
|
||||
memberCount: count => `${count} bot`,
|
||||
settingsHint: group => `Grup ayarları — ${group} grubunu yeniden adlandırın veya oda resmi seçin`,
|
||||
settingsLabel: group => `${group} grup ayarları`,
|
||||
disbandHint: group => `${group} grup sohbetini dağıt`,
|
||||
disbandLabel: group => `${group} grubunu dağıt`,
|
||||
disbandAction: 'Dağıt',
|
||||
disbanding: 'Dağıtılıyor…',
|
||||
disbandDone: 'Dağıtıldı',
|
||||
disbanded: group => `“${group}” dağıtıldı`,
|
||||
disbandDescPrefix: 'Dağıtılacak grup: ',
|
||||
disbandDescSuffix: count =>
|
||||
`. ${count} botun grup bağlantısı kaldırılır ve ortak oda günlüğü temizlenir. Botlar ve gruba ait bireysel oturumları korunur.`,
|
||||
stopped: group => `${group} durduruldu; kalan turlar siz sürdürünceye kadar bekletilir`,
|
||||
removeAttachment: 'Eki kaldır',
|
||||
threadFallback: 'Konuşma',
|
||||
replyCount: replies => `${replies} yanıt`,
|
||||
dropToThread: 'Bu konuşma yanıtına eklemek için bırakın',
|
||||
dropToRoom: 'Eklemek için bırakın; yanıt veren tüm botlar görür',
|
||||
waitingForAnswer: 'Yanıtınız bekleniyor…',
|
||||
memberThinking: name => `${name} düşünüyor…`,
|
||||
roomWorking: 'Odada çalışılıyor…',
|
||||
messageRoom: group => `${group} grubuna mesaj gönder`,
|
||||
newThreadPlaceholder: group => `${group} içinde yeni konuşma… (yönlendirmek için @ad, tümü için @everyone)`,
|
||||
everyoneMeta: 'Odadaki tüm botlar',
|
||||
commandApproval: 'komut onayı',
|
||||
answerFailed: (handle, error) => `Yanıt @${handle} kullanıcısına gönderilemedi: ${error}`,
|
||||
wantsToRunCommand: handle => `@${handle} bir komut çalıştırmak istiyor:`,
|
||||
asks: handle => `@${handle} soruyor:`,
|
||||
answerTo: member => `@${member} kullanıcısına yanıt ver`
|
||||
},
|
||||
tools: {
|
||||
skillsHub: 'AITURK beceri merkezi',
|
||||
filterSkills: 'Becerileri filtrele…',
|
||||
searchHub: 'Merkezde ara (topluluk ve bilinen kaynaklar)…',
|
||||
noMcpServers: 'Yapılandırılmış veya katalogda bulunan MCP sunucusu yok.'
|
||||
},
|
||||
cron: {
|
||||
filterHint:
|
||||
'Bu profilde zamanlanmış görevler var ancak hiçbiri bu bot için etiketlenmemiş. Burada görünmesi için göreve “[bot:<ad>] …” biçiminde ad verin veya aşağıdaki zamanlanmış görevler bölümüne bakın.',
|
||||
needsRosterFirst: 'Bu bot önce listede görünmeli.',
|
||||
staleNotice: 'Zamanlanmış görevler yenilenemedi. Son alınan liste gösteriliyor.',
|
||||
readFailure: 'Liste hâlâ mevcut olabilir; okuma başarısız oldu, silme işlemi yapılmadı.',
|
||||
createDesc: bot =>
|
||||
`${bot} tarafından zamanlanarak çalıştırılan yinelenen görev. Çalıştırmalar botun kendi sohbet geçmişinde görünür.`,
|
||||
instruction: 'Talimat',
|
||||
whenToRun: 'Çalıştırma zamanı',
|
||||
dayOfMonth: 'Ayın günü',
|
||||
sendResultsTo: 'Sonuçların gönderileceği yer',
|
||||
runHistoryOnly: 'Yalnızca çalıştırma geçmişi',
|
||||
botChatTarget: bot => `${bot} sohbeti (bot yanıt verir)`,
|
||||
continuity: 'Süreklilik: her çalıştırma önceki çıktıyı görür; tekrarları önleyip kaldığı yerden sürdürür',
|
||||
onceIn: when => `Bir kez (${when})`,
|
||||
everyNDays: days => `${days} günde bir`,
|
||||
everyNHours: hours => `${hours} saatte bir`,
|
||||
everyNMinutes: minutes => `${minutes} dakikada bir`,
|
||||
freqOnce: 'Bir kez, şu süre sonra…',
|
||||
freqHourly: 'Her saat',
|
||||
freqDaily: 'Her gün',
|
||||
freqWeekdays: 'Hafta içi',
|
||||
freqWeekly: 'Her hafta',
|
||||
freqMonthly: 'Her ay',
|
||||
freqInterval: 'Aralık',
|
||||
freqAdvanced: 'Gelişmiş…',
|
||||
unitMinutes: 'dakika',
|
||||
unitHours: 'saat',
|
||||
unitDays: 'gün',
|
||||
runsOnce: (count, unit) => `${count} ${unit} sonra bir kez çalışır`,
|
||||
runsHourly: 'Her saat başında çalışır',
|
||||
runsDaily: time => `Her gün ${time} saatinde çalışır`,
|
||||
runsWeekdays: time => `Pazartesiden cumaya ${time} saatinde çalışır`,
|
||||
runsWeekly: (day, time) => `Her ${day} ${time} saatinde çalışır`,
|
||||
runsMonthly: (day, time) => `Her ayın ${day}. günü ${time} saatinde çalışır`,
|
||||
runsInterval: (count, unit) => `${count} ${unit} aralıkla çalışır`,
|
||||
runsRaw: 'Ham zamanlama — every Nm/Nh/Nd veya 5 alanlı cron ifadesi',
|
||||
timesTotal: count => `, toplam ${count} kez`
|
||||
}
|
||||
}
|
||||
@@ -8,7 +8,9 @@
|
||||
import { type PluginLocaleBundles, type PluginTranslate, usePluginI18n } from '@hermes/plugin-sdk'
|
||||
import { useMemo } from 'react'
|
||||
|
||||
type KanbanMessages = {
|
||||
import { tr } from './tr'
|
||||
|
||||
export type KanbanMessages = {
|
||||
nav: string
|
||||
openBoard: string
|
||||
/** Command label — shows in the ⌘K palette AND as the keybind panel row,
|
||||
@@ -1051,7 +1053,7 @@ const zhHant: KanbanMessages = {
|
||||
}
|
||||
|
||||
/** Registered via `ctx.i18n.register` at plugin load (disposer tracked). */
|
||||
export const KANBAN_LOCALES: PluginLocaleBundles = { en, ja, zh, 'zh-hant': zhHant }
|
||||
export const KANBAN_LOCALES: PluginLocaleBundles = { en, tr, ja, zh, 'zh-hant': zhHant }
|
||||
|
||||
// Bind the message SHAPE to a plugin translator: string leaves resolve now,
|
||||
// function leaves forward their args through t(path, …). One tiny generic
|
||||
|
||||
@@ -0,0 +1,219 @@
|
||||
import type { KanbanMessages } from './i18n'
|
||||
|
||||
export const tr: KanbanMessages = {
|
||||
nav: 'Kanban',
|
||||
openBoard: 'Kanban: Panoyu aç',
|
||||
newTaskCommand: 'Kanban: Yeni görev',
|
||||
countTip: (running, ready) => `Kanban — ${running} çalışıyor, ${ready} hazır`,
|
||||
col: {
|
||||
triage: { label: 'Ön değerlendirme', help: 'Taslak fikirler; görev tanımını bir ajan ayrıntılandırır.' },
|
||||
todo: { label: 'Yapılacak', help: 'Bağımlılıkları bekleniyor veya henüz atanmamış.' },
|
||||
scheduled: { label: 'Zamanlanmış', help: 'Zamanlanmış çalıştırma saati bekleniyor.' },
|
||||
ready: { label: 'Hazır', help: 'Bağımlılıklar tamamlandı; bir profil atadığınızda görev dağıtıcısı çalıştırır.' },
|
||||
running: { label: 'Çalışıyor', help: 'Bir çalışan ajan görevi aldı. Bu durumu görev dağıtıcısı belirler.' },
|
||||
blocked: { label: 'Yanıt bekliyor', help: 'Çalışan ajan kullanıcıdan bilgi istiyor.' },
|
||||
review: {
|
||||
label: 'İnceleme',
|
||||
help: 'Bir inceleme ajanı çalışmayı denetliyor. Bu durumu görev dağıtıcısı belirler.'
|
||||
},
|
||||
done: { label: 'Tamamlandı', help: 'Tamamlandı; bağımlı alt görevler hazır olur.' },
|
||||
archived: { label: 'Arşiv', help: 'Varsayılan pano görünümünde gizli.' }
|
||||
},
|
||||
locked: {
|
||||
review: 'Bir inceleme ajanı kartı aldığında görev dağıtıcısı İnceleme durumuna geçirir.',
|
||||
running: 'Bir çalışan ajan kartı aldığında görev dağıtıcısı Çalışıyor durumuna geçirir.',
|
||||
scheduled:
|
||||
'Zamanlanmış durumuna geçmek için çalıştırma zamanı gerekir. Bunu ajanlar ayarlar; kartı sürükleyerek bu duruma geçiremezsiniz.'
|
||||
},
|
||||
arcRunning: 'Bir ajan şu anda bu görevde çalışıyor.',
|
||||
arcStale: 'Görev alınmış ancak en az 2 dakikadır çalışan ajandan sinyal yok; görev dağıtıcısı görevi geri alacak.',
|
||||
title: 'Kanban',
|
||||
orchestrationSettings: 'Görev dağıtım ayarları',
|
||||
newTask: 'Yeni görev',
|
||||
filterCards: 'Kartları filtrele…',
|
||||
noMatch: 'Filtrelere uyan görev yok',
|
||||
noTasks: 'Bu panoda görev yok',
|
||||
open: 'Aç',
|
||||
select: modifier => `Seç (${modifier} ile tıklayın)`,
|
||||
deselect: 'Seçimi kaldır',
|
||||
moveTo: label => `${label} bölümüne taşı`,
|
||||
delete: 'Sil',
|
||||
reviewChecking: 'Bir inceleme ajanı tamamlanan çalışmayı denetliyor.',
|
||||
attachedTip: name => `${name} bağlı; görev dağıtıcısı sonraki döngüde, en geç bir dakika içinde devreder.`,
|
||||
orchestratorTip: name => `Koordinatör ${name}, sonraki döngüde bu görevi alıp görev tanımını yazar.`,
|
||||
autoAssignTip: name =>
|
||||
`Sonraki dağıtım döngüsünde otomatik olarak “${name}” profiline atanır (kanban.default_assignee).`,
|
||||
wontRun: 'çalışmayacak',
|
||||
wontRunTip:
|
||||
'Hazır kartlar ancak profil atandığında çalışır. Kartı açıp sorumlu seçin veya görev dağıtım ayarlarında varsayılan sorumlu belirleyin.',
|
||||
noHeartbeat: 'yaşam sinyali yok',
|
||||
expand: label => `${label} genişlet`,
|
||||
collapse: label => `${label} daralt`,
|
||||
newTaskIn: label => `${label} bölümünde yeni görev`,
|
||||
empty: 'Boş',
|
||||
unassigned: 'atanmamış',
|
||||
filters: 'Filtreler',
|
||||
allProfiles: 'Tüm profiller',
|
||||
allTenants: 'Tüm çalışma alanları',
|
||||
showArchived: 'Arşivlenenleri göster',
|
||||
groupRunning: 'Çalışan görevleri profile göre grupla',
|
||||
nSelected: n => `${n} seçildi`,
|
||||
moveToShort: 'Taşı',
|
||||
assign: 'Ata',
|
||||
unassignAction: 'Atamayı kaldır',
|
||||
archive: 'Arşivle',
|
||||
clearSelection: 'Seçimi temizle (Esc)',
|
||||
refused: 'reddedildi',
|
||||
bulkFailed: (failed, total, err) =>
|
||||
`${total} işlemden ${failed} tanesi başarısız oldu: ${err}. Başarısız kartlar seçili kalır.`,
|
||||
titlePlaceholderTriage: 'Taslak fikir; bir ajan ayrıntılandıracak',
|
||||
titlePlaceholder: 'Başlık',
|
||||
descPlaceholder: 'Açıklama (isteğe bağlı)',
|
||||
priority: 'Öncelik',
|
||||
workspace: 'Çalışma alanı',
|
||||
boardDefaultSuffix: ' · pano varsayılanı',
|
||||
workspaceOverride: 'Çalışma alanı yolu (isteğe bağlı özel değer)',
|
||||
model: 'Model',
|
||||
modelInherit: 'Profil varsayılanı',
|
||||
modelClear: 'Özel model seçimini temizle',
|
||||
modelHint: 'Görevi belirli bir model ve düşünme düzeyiyle çalıştırır. Seçilmezse atanan profilin ayarı kullanılır.',
|
||||
workspaceInherit: 'Panonun proje dizinini kullanır',
|
||||
workspaceInheritDir: dir => `${dir} konumunu kullanmak için boş bırakın`,
|
||||
workspaceInheritGeneric: 'Panonun proje dizinini kullanmak için boş bırakın.',
|
||||
assignee: 'Sorumlu',
|
||||
defaultOption: name => `${name} (varsayılan)`,
|
||||
parkedOption: 'atanmamış (beklemede; çalışmaz)',
|
||||
skills: 'Beceriler (virgülle ayrılmış)',
|
||||
skillsPlaceholder: 'translation, github',
|
||||
parent: 'Üst görev (tamamlanana kadar bekler)',
|
||||
noParent: '— üst görev yok —',
|
||||
goalMode: 'Hedef modu (denetçi tamamlandığını onaylayana kadar ajan çalışır)',
|
||||
creating: 'Oluşturuluyor…',
|
||||
createTask: 'Görev oluştur',
|
||||
cancel: 'İptal',
|
||||
save: 'Kaydet',
|
||||
estimate: 'Tahmin et',
|
||||
estimateEffort: 'İş yükünü tahmin et',
|
||||
estimating: 'Tahmin ediliyor…',
|
||||
reEstimate: 'Yeniden tahmin et',
|
||||
makesModelCall: 'model çağrısı yapar',
|
||||
estimateTip: 'Yardımcı modelle yaklaşık belirteç ve karmaşıklık tahmini yapar; model çağrısı kullanır.',
|
||||
estimateTipLong:
|
||||
'Belirteç ve karmaşıklığı tahmin etmek için hızlı bir yardımcı model çağrısı yapar. Sonuç yaklaşık bir rehberdir, fatura değildir.',
|
||||
roughEstimate: 'Yaklaşık tahmin',
|
||||
tokUnit: 'belirteç',
|
||||
couldNotEstimate: 'Tahmin yapılamadı',
|
||||
complexity: { S: 'Küçük', M: 'Orta', L: 'Büyük' },
|
||||
introBody:
|
||||
'Kartları ajanlar çalıştırır. Bir sorumlu atayıp kartı Hazır bölümüne taşıyın; ajan bir dakika içinde alır. Sorumlusuz kart çalışmaz. Ön değerlendirmede fikir görev tanımına dönüştürülür. Yapılacak bölümünde diğer kartlar, Zamanlanmış bölümünde çalıştırma saati beklenir. Çalışıyor ve İnceleme durumlarını ajanlar yönetir. Yanıt bekliyor durumu sizin bilginizi gerektirir. Sonuçlar kartta görünür.',
|
||||
introGotIt: 'Anladım',
|
||||
evtCreated: (where, assignee) =>
|
||||
`${where ? `${where} içinde ` : ''}oluşturuldu${assignee ? ` · ${assignee} profiline atandı` : ''}`,
|
||||
evtMovedTo: col => `${col} bölümüne taşındı`,
|
||||
evtParentReopened: parent => `${parent} üst görevi yeniden açıldı`,
|
||||
evtAssignedTo: assignee => `${assignee} profiline atandı`,
|
||||
evtUnassigned: 'atama kaldırıldı',
|
||||
evtCommentBy: author => `${author} yorum yaptı`,
|
||||
evtClaimedReview: 'inceleme ajanı görevi aldı',
|
||||
evtClaimedWorker: 'çalışan ajan görevi aldı',
|
||||
evtWorkerStarted: 'ajan çalışmaya başladı',
|
||||
evtCompleted: 'tamamlandı',
|
||||
evtBlocked: 'kullanıcı yanıtı bekleniyor',
|
||||
evtUnblocked: col => `bekleme kaldırıldı → ${col || 'Hazır'}`,
|
||||
evtReclaimed: 'geri alındı; kuyruğa döndü',
|
||||
evtSpecified: 'ön değerlendirme ajanı görev tanımını yazdı',
|
||||
evtPromoted: 'bağımlılıklar tamamlandı; Hazır bölümüne taşındı',
|
||||
evtScheduled: 'sonraya zamanlandı',
|
||||
evtArchived: 'arşivlendi',
|
||||
evtReprioritized: priority => `öncelik ${priority} olarak ayarlandı`,
|
||||
someone: 'bir kullanıcı',
|
||||
metaPriority: 'Öncelik',
|
||||
metaTenant: 'Çalışma alanı',
|
||||
metaCreatedBy: 'Oluşturan',
|
||||
metaCreated: 'Oluşturulma',
|
||||
metaWorkerPid: 'Çalışan işlem kimliği',
|
||||
readyUnassignedTitle: 'Hazır ancak atanmamış; bu kart çalışmayacak.',
|
||||
readyUnassignedBody:
|
||||
'Görev dağıtıcısı yalnızca sorumlu atanmış Hazır kartları alır. Yukarıdaki Sorumlu alanından profil seçin veya görev dağıtım ayarlarında varsayılan sorumlu belirleyin; görev bir dakika içinde başlar.',
|
||||
diagnosticsN: n => `Tanılama · ${n}`,
|
||||
commandCopied: 'Komut kopyalandı',
|
||||
description: 'Açıklama',
|
||||
editDescription: 'Açıklamayı düzenle',
|
||||
cancelEdit: 'Düzenlemeyi iptal et',
|
||||
noDescription: 'Henüz açıklama yok.',
|
||||
result: 'Sonuç',
|
||||
latestSummary: 'Son özet',
|
||||
dependencies: 'Bağımlılıklar',
|
||||
blockedBy: 'Beklediği görevler',
|
||||
blocks: 'Bunu bekleyen görevler',
|
||||
comments: n => `Yorumlar · ${n}`,
|
||||
commentsHelpRunning:
|
||||
'Görev çalışıyor. Notunuz birkaç saniye içinde ajanın geçerli turuna eklenir. “Notla yeniden kuyruğa al” işlemi ise notunuzu bağlama ekleyerek görevi baştan başlatır.',
|
||||
commentsHelp: 'Yorumlar görev konuşmasına eklenir. Ajan görevi aldığında bunları bağlamın bir parçası olarak okur.',
|
||||
send: 'Gönder',
|
||||
comment: 'Yorum',
|
||||
messageWorker: 'Çalışan ajana mesaj gönder…',
|
||||
addComment: 'Yorum ekle…',
|
||||
deliveredLive: 'Birkaç saniye içinde çalışan ajana iletilir.',
|
||||
requeueWithNote: 'Notla yeniden kuyruğa al',
|
||||
notePosted: 'Not eklendi; ajan yeniden kuyruğa alındı',
|
||||
activity: n => `Etkinlik · ${n}`,
|
||||
runs: n => `Çalıştırmalar · ${n}`,
|
||||
workerLog: 'Ajan günlüğü',
|
||||
workerLogTail: 'Ajan günlüğü · son satırlar',
|
||||
attachments: n => `Ekler · ${n}`,
|
||||
noAttachments: 'Henüz ek yok.',
|
||||
uploadAttachment: 'Ek yükle',
|
||||
taskActions: 'Görev işlemleri',
|
||||
copyTaskId: 'Görev kimliğini kopyala',
|
||||
copyTitle: 'Başlığı kopyala',
|
||||
copiedId: id => `${id} kopyalandı`,
|
||||
copiedTitle: 'Başlık kopyalandı',
|
||||
close: 'Kapat',
|
||||
working: 'çalışıyor',
|
||||
board: 'Pano',
|
||||
newBoard: 'Yeni pano',
|
||||
newBoardDots: 'Yeni pano…',
|
||||
exportDots: 'Dışa aktar…',
|
||||
importDots: 'İçe aktar…',
|
||||
renameDots: 'Yeniden adlandır…',
|
||||
settingsDots: 'Ayarlar…',
|
||||
exportBoardTitle: 'Panoyu dışa aktar…',
|
||||
importBoardTitle: 'Pano içe aktar…',
|
||||
boardExported: path => `Pano ${path} konumuna aktarıldı`,
|
||||
boardImported: name => `${name} içe aktarıldı`,
|
||||
boardImportedAs: slug => `Bu ad kullanılıyordu; ${slug} olarak içe aktarıldı`,
|
||||
renameBoardTitle: 'Panoyu yeniden adlandır',
|
||||
deleteBoardTitle: name => `“${name}” silinsin mi?`,
|
||||
deleteBoardConfirm: 'Pano arşivlenir; görevler ve ekler diskte kalır ve geri yüklenebilir.',
|
||||
boardArchived: path => `Pano ${path} konumuna arşivlendi`,
|
||||
boardSettingsFor: name => `Pano ayarları — ${name}`,
|
||||
name: 'Ad',
|
||||
boardNamePlaceholder: 'Pano adı',
|
||||
slug: slug => `kısa ad: ${slug}`,
|
||||
project: 'Proje',
|
||||
noProject: 'Proje yok (geçici çalışma ortamları)',
|
||||
projectHintPre:
|
||||
'Yeni görevler projenin deposunda, her görev için ayrı bir çalışma ağacında çalışır. Her görev oluşturulurken özel çalışma alanı seçilebilir. Projeleri yönetmek için: ',
|
||||
projectHintCmd: 'hermes project',
|
||||
createBoard: 'Pano oluştur',
|
||||
orchestratorProfile: 'Koordinatör profili',
|
||||
defaultAssignee: 'Varsayılan sorumlu',
|
||||
defaultParen: '(varsayılan)',
|
||||
autoDecompose: 'Ön değerlendirme görevlerini otomatik alt görevlere ayır',
|
||||
profileDescriptions: 'Profil açıklamaları',
|
||||
profileDescriptionsHint:
|
||||
'Açıklamalar, alt görevlerin uygun profile yönlendirilmesini sağlar. Yardımcı modelle oluşturun veya kendiniz yazın.',
|
||||
profileGoodAt: 'Bu profil hangi konuda iyi?',
|
||||
auto: 'Otomatik',
|
||||
notify: {
|
||||
completedTitle: 'Görev tamamlandı',
|
||||
blockedTitle: 'Görev yanıtınızı bekliyor',
|
||||
blockLoopTitle: 'Görev ön değerlendirmeye döndü; karar gerekiyor',
|
||||
gaveUpTitle: 'Görev sürdürülemedi',
|
||||
crashedTitle: 'Ajan beklenmedik biçimde durdu; yeniden denenecek',
|
||||
timedOutTitle: 'Görev zaman aşımına uğradı; yeniden denenecek',
|
||||
openKanban: 'Kanban’ı aç',
|
||||
artifacts: n => `${n} çıktı`
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user