Çeviriler
Müşteri site çevirilerinin yönetimi. Key-value formatında çeviri anahtarları ve değerleri saklanır.
Base URL: /api/tenant/translations
Yetkilendirme: Bearer Token + X-Api-Key
Modül: Translations modülü müşteriye atanmış olmalıdır.
Headers:
Authorization: Bearer eyJhbGciOiJIUzI1NiIs...
X-Api-Key: customer-api-key
GET /
Çevirileri sayfalanmış olarak listeler.
Query Parametreleri:
| Parametre | Tip | Varsayılan | Açıklama |
|---|---|---|---|
page | int | 1 | Sayfa numarası |
pageSize | int | 10 | Sayfa başına kayıt |
search | string | — | Anahtar veya değerde arama |
languageId | Guid | — | Dil filtresi |
Response — 200 OK:
{
"success": true,
"data": {
"items": [
{
"id": "3fa85f64-...",
"languageId": "9cd14a82-...",
"languageCode": "tr",
"key": "home.title",
"value": "Hoş Geldiniz"
},
{
"id": "3fa85f64-...",
"languageId": "9cd14a82-...",
"languageCode": "tr",
"key": "home.subtitle",
"value": "Sitemize hoş geldiniz"
}
],
"page": 1,
"pageSize": 10,
"totalCount": 25,
"totalPages": 3
}
}
GET /{key}
Belirli bir çeviri anahtarının değerini getirir.
Query Parametreleri:
| Parametre | Tip | Açıklama |
|---|---|---|
languageId | Guid | Dil ID (zorunlu) |
Response — 200 OK:
{
"success": true,
"data": {
"id": "3fa85f64-...",
"languageId": "9cd14a82-...",
"languageCode": "tr",
"key": "home.title",
"value": "Hoş Geldiniz"
}
}
POST /
Yeni çeviri oluşturur.
Request Body:
{
"languageId": "9cd14a82-...",
"key": "contact.email",
"value": "info@ornek.com"
}
| Alan | Tip | Zorunlu | Açıklama |
|---|---|---|---|
languageId | Guid | Evet | Dil ID |
key | string | Evet | Çeviri anahtarı (örn: home.title) |
value | string | Evet | Çeviri değeri |
Response — 201 Created:
{
"success": true,
"data": {
"id": "3fa85f64-...",
"languageId": "9cd14a82-...",
"languageCode": "tr",
"key": "contact.email",
"value": "info@ornek.com"
}
}
PUT /{key}
Çeviri değerini günceller.
Request Body:
{
"languageId": "9cd14a82-...",
"value": "destek@ornek.com"
}
| Alan | Tip | Zorunlu | Açıklama |
|---|---|---|---|
languageId | Guid | Evet | Dil ID |
value | string | Evet | Yeni çeviri değeri |
Response — 200 OK:
{
"success": true,
"data": {
"id": "3fa85f64-...",
"languageId": "9cd14a82-...",
"languageCode": "tr",
"key": "contact.email",
"value": "destek@ornek.com"
}
}
POST /set-translation
Çeviriyi oluşturur veya günceller (upsert). Key + LanguageId kombinasyonu varsa günceller, yoksa oluşturur.
Request Body:
{
"key": "contact.email",
"languageId": "9cd14a82-...",
"value": "destek@ornek.com"
}
| Alan | Tip | Zorunlu | Açıklama |
|---|---|---|---|
key | string | Evet | Çeviri anahtarı |
languageId | Guid | Evet | Dil ID |
value | string | Evet | Çeviri değeri |
Response — 200 OK:
{
"success": true,
"data": {
"id": "3fa85f64-...",
"languageId": "9cd14a82-...",
"languageCode": "tr",
"key": "contact.email",
"value": "destek@ornek.com"
}
}
POST /set-translation-multiple
Bir key için tüm dillerde çeviri oluşturur veya günceller. Language code ile dil belirtilir.
Request Body:
{
"key": "home.title",
"translations": {
"tr": "Hoş Geldiniz",
"en": "Welcome",
"de": "Willkommen"
}
}
| Alan | Tip | Zorunlu | Açıklama |
|---|---|---|---|
key | string | Evet | Çeviri anahtarı |
translations | object | Evet | Dil koduna göre çeviri değerleri |
Response — 200 OK:
{
"success": true,
"data": [
{
"id": "3fa85f64-...",
"languageId": "9cd14a82-...",
"languageCode": "tr",
"key": "home.title",
"value": "Hoş Geldiniz"
},
{
"id": "4bb91e75-...",
"languageId": "1ae23c56-...",
"languageCode": "en",
"key": "home.title",
"value": "Welcome"
}
]
}
DELETE /{key}
Çeviriyi siler (soft delete).
Query Parametreleri:
| Parametre | Tip | Açıklama |
|---|---|---|
languageId | Guid | Dil ID (zorunlu) |
Response — 200 OK:
{
"success": true,
"data": "Ceviri silindi"
}
POST /bulk-export
Tüm çevirileri JSON formatında export eder.
Response — 200 OK:
{
"success": true,
"data": {
"translations": {
"home.title": {
"tr": "Hoş Geldiniz",
"en": "Welcome"
},
"home.subtitle": {
"tr": "Sitemize hoş geldiniz",
"en": "Welcome to our site"
},
"contact.email": {
"tr": "info@ornek.com",
"en": "info@example.com"
}
}
}
}
POST /bulk-import
JSON formatında toplu çeviri ekler/günceller.
Request Body:
{
"translations": {
"home.title": {
"tr": "Hoş Geldiniz",
"en": "Welcome"
},
"home.subtitle": {
"tr": "Sitemize hoş geldiniz",
"en": "Welcome to our site"
},
"footer.copyright": {
"tr": "© 2026 Şirket Adı",
"en": "© 2026 Company Name"
}
}
}
Response — 200 OK:
{
"success": true,
"data": "Ceviriler import edildi"
}
Mevcut anahtarlar güncellenir, yeni anahtarlar eklenir.
POST /copy-from-language
Bir dildeki tüm çevirileri başka bir dile kopyalar.
Request Body:
{
"sourceLanguageId": "9cd14a82-...",
"targetLanguageId": "1ae23c56-...",
"overwriteExisting": false
}
| Alan | Tip | Zorunlu | Açıklama |
|---|---|---|---|
sourceLanguageId | Guid | Evet | Kaynak dil ID |
targetLanguageId | Guid | Evet | Hedef dil ID |
overwriteExisting | bool | Hayır | Mevcut çevirileri overwrite et (false varsayılan) |
Response — 200 OK:
{
"success": true,
"data": "5 ceviri kopyalandi"
}
GET /stats
Çeviri istatistiklerini döner.
Response — 200 OK:
{
"success": true,
"data": {
"totalTranslations": 50,
"totalUniqueKeys": 25,
"languages": [
{
"languageId": "9cd14a82-...",
"languageCode": "tr",
"languageName": "Türkçe",
"translationCount": 25,
"percentage": 50
},
{
"languageId": "1ae23c56-...",
"languageCode": "en",
"languageName": "English",
"translationCount": 25,
"percentage": 50
}
]
}
}
| Alan | Tip | Açıklama |
|---|---|---|
totalTranslations | int | Toplam çeviri sayısı |
totalUniqueKeys | int | Benzersiz anahtar sayısı |
languages | LanguageTranslationStats[] | Dil bazlı istatistikler |
Olası Hatalar
| Kod | Durum |
|---|---|
401 | Token eksik veya geçersiz |
403 | Tenant kullanıcısı yetkisi yok veya translations modül erişimi yok |
404 | Çeviri anahtarı bulunamadı |
409 | Aynı dil ve anahtar kombinasyonu zaten mevcut |
400 | Geçersiz istek body veya validasyon hatası |