Yeni özel dosya biçimlerinin desteğini eklemek için bu modülü kullanın. Özel bir dosya biçimi modülüne sahip bir uygulamaya ayrıştırma, kaynak dosya temsilen geçirilerek uygulanır. Çeviriler tamamlandığında Crowdin, çeviri dosyaları oluşturma için Özel dosya biçimi uygulamasına çevirileri olan bir kaynak dosya ve dizgi dizilimi geçirir.
Bu modüle aşağıdaki kullanıcı kategorilerinden biri için erişim verebilirsiniz:
Crowdin için:
Crowdin Enterprise için:
{
"custom-file-format": [
{
"key": "modül-anahtarınız-türü-xyz",
"type": "type-xyz",
"url": "/process",
"multilingual": true,
"signaturePatterns": {
"fileName": "^.+\\.xyz$",
"fileContent": "<properties>\\s*<property\\s+name=.*value=.*/>"
},
"stringsExport": false,
"customSrxSupported": false
}
]
}
key | Tür: Zorunlu: evet Açıklama: Crowdin uygulaması içindeki modül tanımlayıcısı. |
type | Tür: Zorunlu: evet Açıklama: Özel dosya biçimi tanımlayıcısı. Özel dosya biçimi uygulaması tarafından dosyaların işlenmesini zorlamak için API’de kullanılabilir. Eğer API’de |
url | Tür: Zorunlu: evet Açıklama: Dosya içe aktarma, güncelleme, çeviri yükleme ve dışa aktarmada tetiklenen göreceli URL. |
multilingual | Tür: Zorunlu: hayır İzin verilen değerler: Açıklama: Bu parametre, Crowdin projenizde çevirileri yüklerken ve indirirken birden çok dilin içeriğini tek bir istekte birleştirmek için kullanılır. |
signaturePatterns | Tür: Açıklama: Kullanıcı arayüzü (veya belirtilen Not: fileContent düzenli ifadesi, dosya içeriğinin sadece ilk 64 KB’ını denetler. |
stringsExport | Tür: Zorunlu: hayır İzin verilen değerler: Açıklama: Bu parametre, uygulama tarafından özel paket oluşturma desteğini tanımlamak için kullanılır. |
customSrxSupported | Tür: Zorunlu: hayır İzin verilen değerler: Açıklama: Bu parametre, uygulamanın özel SRX kurallarını destekleyip desteklemediğini gösterir. Eğer |
İlk dosya içe aktarma işleminde, sistem signaturePatterns
veya type
parametrelerini kullanarak özel dosya biçimini algılar ve daha fazla işlem için uygulamanın URL’sine ($baseUrl . $url
) bir HTTP isteğinde bulunur. Ardından uygulama dosyayı özel bir biçimde işler ve sisteme yanıt verir. Özel dosya biçimi uygulamalarına gelen ve uygulamalardan gelen istek ve yanıtların iki dakikalık zaman aşımı vardır. En büyük istek ve yanıt yükü boyutu 5 MB ile sınırlıdır.
İstek yükü örneği:
// en fazla istek yükü - 5 MB
// bekleme zaman aşımı - 2 dakika
{
"jobType": "parse-file | build-file",
"organization": {
"id": 1,
"domain": "{domain}",
"baseUrl": "https://{domain}.crowdin.com",
"apiBaseUrl": "https://{domain}.api.crowdin.com"
},
"project": {
"id": 1,
"identifier": "proje-tanımlayıcınız",
"name": "Proje Adınız"
},
"file": {
"id": 1,
"name": "dosya.xml",
"content": "VGhpcyBpcyBmaWxlIGNvbnRlbnQ=", // base64 kodlanmış kaynak dosya içeriği
"contentUrl": "https://crowdin-tmp.downloads.crowdin.com/1/dosya.xml?aws-signature=..." // kaynak dosya ortak URL’si
},
"sourceLanguage": {
"id": "tr",
"name": "Turkish",
"editorCode": "tr",
"twoLettersCode": "tr",
"threeLettersCode": "tur",
"locale": "tr-TR",
"androidCode": "tr-rTR",
"osxCode": "tr.lproj",
"osxLocale": "tr",
"pluralCategoryNames": ["one"],
"pluralRules": "(n != 1)"
},
"targetLanguages": [{
// sourceLanguage ile aynı yapı, yeni bir kaynak dosya yüklerken boş, çevirileri içe aktarma ve dışa aktarma için bir öğe, çokdilli dosyalar için daha fazla olabilir
}],
"strings": [...], // yapı dosyası işleri için parça dizilimi
"stringsUrl": "https://tmp.downloads.crowdin.com/strings.ndjson", // yapı dosyası işleri için, parçaların olduğu dosya, yeni satırla ayrılmış json biçiminde
"customSrx": "..." // eğer CustomSrxSupported true olarak tanımlanmışsa
}
Özellikler:
jobType | Tür: Olası değerler: Açıklama: Uygulama tarafından yürütülmesi gereken eylemi belirtir. |
file.content , file.contentUrl | Tür: Açıklama: Base64 kodlanmış kaynak dosya içeriğini ( |
strings , stringsUrl | Tür(strings): Tür(stringsUrl) Açıklama: Çevirileri indirmek için kullanılan parametreler (sadece |
Yanıt yükü örneği:
// en fazla yanıt yükü - 5 MB
// bekleme zaman aşımı - 2 dakika
{
"data": {
"strings": [...], // parçaların dizilimi
"stringsUrl": "https://app.ornek.com/jKe8ujs7a-parcalar.ndjson", // ayrıştırılmış dizgileri olan yeni satırla ayrılmış json dosyası
"preview": "VGhpbmdzIGFyZSBvbmx5IGltcG9zc2libGUgdW50aWwgdGhleSdyZSBub3Qu", // isteğe bağlı, base64 kodlanmış önizleme html dosyası içeriği, çoğul dizgiler varsa desteklenmez
"previewUrl": "https://app.ornek.com/LN3km2K6M-preview.html", // isteğe bağlı, önizleme html dosyasının URL’si, çoğul dizgiler varsa desteklenmez
},
"error": {
"message": "Hata iletiniz"
}
}
Özellikler:
data.strings , data.stringsUrl | Tür(data.strings): Tür(data.stringsUrl) Açıklama: Ayrıştırılmış dizgilerin içeriğini geçirmek için kullanılan parametreler. |
preview , previewUrl | Tür(preview): Tür(previewUrl) Açıklama: Uygulama tarafından oluşturulabilen ayrıştırılmış dizgiler içeriğinin isteğe bağlı HTML önizlemesini geçirmek için kullanılan parametreler. Oluşturulan HTML önizlemesi Düzenleyicide görüntülenecektir. HTML Önizleme dosyası örneğine bakın. Not: Uygulama çoğul olan dizgileri geçirirse HTML önizlemesi Crowdin Düzenleyicisi’nde görüntülenmeyecektir. |
error.message | Tür: Açıklama: Uygulamadan Crowdin Enterprise’a geçirilebilen ve kullanıcı arayüzündeki bir kullanıcı tarafından görülebilecek bir hata iletisi. |
Yanıt yükü örneği:
// en fazla yanıt yükü - 5 MB
// bekleme zaman aşımı - 2 dakika
{
"data": {
"content": "TWF5IHRoZSBGb3JjZSBiZSB3aXRoIHlvdS4=", // base64 kodlanmış çeviri dosyası içeriği
"contentUrl": "https://app.ornek.com/p5uLEpq8p-result.xml", // çeviri dosyası ortak URL’si
},
"error": {
"message": "Hata iletiniz"
}
}
Özellikler:
data.content , data.contentUrl | Tür(data.content) Tür(data.contentUrl) Açıklama: Base64 kodlanmış çeviri dosyası içeriğini ( |
error.message | Tür: Açıklama: Uygulamadan Crowdin Enterprise’a geçirilebilen ve kullanıcı arayüzündeki bir kullanıcı tarafından görülebilecek bir hata iletisi. |
Aşağıda, parse-file
iş türü için uygulamadan beklenen ve build-file
iş türü için uygulamaya geçirilen dizgilerin yapısının bir örneğini görebilirsiniz.
Yük örneği:
// URL’den geçiriliyorsalar dizgiler "yeni satırla ayrılmış json" biçiminde olmalıdır
[{ // çoğul olmayan dizgi
"previewId": 1, // sadece dosyanın HTML önizlemesi oluşturulduğunda gerekli olan "parse-file" jobType içindir
"id": 1, // sadece "build-file" jobType içindir
"identifier": "dizgi-anahtarı-1", // zorunlu
"context": "Bazı bağlamlar", // isteğe bağlı
"customData": "en fazla 4 KB özel veri", // isteğe bağlı
"maxLength": 10, // isteğe bağlı, varsayılan null
"isHidden": false, // isteğe bağlı, varsayılan null
"hasPlurals": false, // isteğe bağlı, varsayılan false
"labels": ["etiket-bir", "etiket-iki"], // isteğe bağlı, varsayılan []
"text": "Dizgi kaynak metni", // zorunlu
"translations": { // isteğe bağlı
"tr": { // targetLanguage.id
"text": "Metnin çevirisi", // zorunlu
"status": "untranslated | translated | approved" // isteğe bağlı, varsayılan "translated"
},
// çok dilli için diğer diller olabilir, istek yükünde "targetLanguages" seçeneğini işaretleyin
}
},
{ // plural string
"previewId": 2,
"id": 2,
"identifier": "dizgi-anahtarı-2",
"context": "Bazı isteğe bağlı bağlamlar",
"customData": "en fazla 4 KB özel veri",
"maxLength": 15,
"isHidden": false,
"hasPlurals": true,
"labels": [],
"text": { // sourceLanguage.pluralCategoryNames parametresinden gelen anahtarlar
"one": "One file",
"other": "%d files",
},
"translations": {
"tr": {
"text": { // targetLanguage.pluralCategoryNames parametresinden gelen anahtarlar
"one": "Bir dosya",
"few": "%d dosya",
"many": "%d dosya",
},
"status": {
"one": "untranslated",
"few": "translated",
"many": "approved",
}
}
}
}]
Özellikler:
previewId | Tür: Zorunlu: evet (sadece dosyanın HTML önizlemesi oluşturulduğunda Açıklama: HTML Önizleme dosyasındaki dizginin sayısal tanımlayıcısı. Sadece |
id | Tür: Açıklama: Crowdin Enterprise projenizde dizginin sayısal tanımlayıcısı. Sadece |
identifier | Tür: Açıklama: Dosya içinde benzersiz dizgi anahtarı. |
customData | Tür: Açıklama: Dizgiye bağlantılanması gereken tüm özel veriler. Eklenen özel veriler, çeviri dışa aktarmada karşılık gelen dizgiler boyunca dışa aktarılacaktır. |
Dosyanın HTML Önizlemesi
Dosyanın HTML Önizlemesi örneği:
<html lang="en">
<head>
<title>İsteğe Bağlı Başlık</title>
<style>
table, th, td { border: 1px solid #aaa; }
</style>
</head>
<body>
<h1 style="text-align: center">Dosyanın HTML önizlemesi</h1>
<table style="width: 100%">
<tr>
<th>Anahtar:</th>
<th>Metin:</th>
</tr>
<tr>
<td>Anahtar 1</td>
<td><span id="string_preview_id_1">Kaynak Metin 1</span></td> <!-- 1, dizgilerin json içindeki previewId’dir -->
</tr>
<tr>
<td>Anahtar 2</td>
<td><span id="string_preview_id_2">Kaynak Metin 2</span></td> <!-- 2, dizgilerin json içindeki previewId’dir -->
</tr>
</table>
</body>
</html>