Özel Dosya Biçimi Modülü

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:

  • Sadece ben (yani proje sahibi)
  • Tüm proje üyeleri
  • Seçilen kullanıcılar

Crowdin Enterprise için:

  • Sadece kuruluş üst yöneticileri
  • Kuruluş projelerindeki tüm kullanıcılar
  • Seçilen kullanıcılar

Yapı

{
  "custom-file-format": [
    {
      "key": "modül-anahtar-türünüz-xyz",
      "type": "tür-xyz",
      "url": "/process",
      "multilingual": true,
      "signaturePatterns": {
        "fileName": "^.+\\.xyz$",
        "fileContent": "<properties>\\s*<property\\s+name=.*value=.*/>"
      }
    }
  ]
}

Özellikler

key

Tür: dizgi

Zorunlu: evet

Açıklama: Crowdin uygulaması içindeki modül tanımlayıcısı.

type

Tür: dizgi

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 type parametresi kullanılırsa, signaturePatterns yoksayılacaktır.

url

Tür: dizgi

Zorunlu: evet

Açıklama: Dosya içe aktarma, güncelleme, çeviri yükleme ve dışa aktarmada tetiklenen göreceli URL.

multilingual

Tür: bool

Zorunlu: hayır

İzin verilen değerler: true, false. Varsayılanı false

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: nesne

Açıklama: Kullanıcı arayüzü (veya belirtilen type parametresi olmadan API aracılığıyla) aracılığıyla yeni bir kaynak dosya yüklerken dosya türünü algılamak için kullanılan fileName ve/veya fileContent düzenli ifadelerini içerir. Eğer dosya düzenli ifadelerle eşleşiyorsa, özel biçim dosyası olarak etiketlenmiştir.

Not: fileContent düzenli ifadesi, dosya içeriğinin sadece ilk 64 KB’ını denetler.

Özel Dosya Biçimi Uygulaması ve Crowdin arasındaki İletişim

İ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.

Uygulamaya İstek

İ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
}

Özellikler:

jobType

Tür: dizgi

Olası değerler: parse-file, build-file

Açıklama: Uygulama tarafından yürütülmesi gereken eylemi belirtir.
parse-file işi ilk kaynak dosya yükleme, kaynak dosya güncelleme ve çeviri yükleme için kullanılır. parse-file işleri için sistem, uygulamaya bir kaynak dosya geçirir ve yanıtta ayrıştırılmış bir kaynak dizgi dizilimi bekler.
build-file işi çeviri indirme için kullanılır. build-file işleri için sistem, çevirileri olan bir kaynak dosyayı ve bir dizgi dizilimini uygulamaya geçirir ve yanıtta oluşturulan bir çeviri dosyası bekler.

file.content, file.contentUrl

Tür: dizgi

Açıklama: Base64 kodlanmış kaynak dosya içeriğini (file.content) veya bir kaynak dosya ortak URL’sini (file.contentUrl) geçirmek için kullanılan parametreler.
Bu iki parametreden biri kullanılabilir (Not: En fazla istek yükü sınırı 5 MB’tır).

strings, stringsUrl

Tür(strings): dizilim

Tür(stringsUrl) dizgi

Açıklama: Çevirileri indirmek için kullanılan parametreler (sadece build-file iş türü için). strings - çeviri dizgileri dizilimi. stringsUrl - çeviri dizgilerine sahip yeni satırla ayrılmış json ortak URL’si.
Bu iki parametreden biri kullanılabilir (Not: En fazla istek yükü sınırı 5 MB’tır).

parse-file İş Türü için Uygulamadan Beklenen Yanıt

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): dizilim

Tür(data.stringsUrl) dizgi

Açıklama: Ayrıştırılmış dizgilerin içeriğini geçirmek için kullanılan parametreler.
data.strings - ayrıştırılmış dizgiler dizilimi.
data.stringsUrl - ayrıştırılmış dizgileri olan yeni satırla ayrılmış json ortak URL’si.
Bu iki parametreden biri kullanılabilir (Not: En fazla istek yükü sınırı 5 MB’tır).

preview, previewUrl

Tür(preview): dizilim

Tür(previewUrl) dizgi

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: dizgi

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.

build-file İş Türü için Uygulamadan Beklenen Yanıt

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) dizgi

Tür(data.contentUrl) dizgi

Açıklama: Base64 kodlanmış çeviri dosyası içeriğini (data.content) veya bir çeviri dosyası ortak URL’sini (data.contentUrl) geçirmek için kullanılan parametreler.
Bu iki parametreden biri kullanılabilir (Not: En fazla yanıt yükü sınırı 5 MB’tır).

error.message

Tür: dizgi

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.

Dizgilerin Dizilim Yapısı

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: tamsayı

Zorunlu: evet (sadece dosyanın HTML önizlemesi oluşturulduğunda parse-file işi için)

Açıklama: HTML Önizleme dosyasındaki dizginin sayısal tanımlayıcısı. Sadece parse-file iş türü için kullanılır.

id

Tür: tamsayı

Açıklama: Crowdin Enterprise projenizde dizginin sayısal tanımlayıcısı. Sadece build-file iş türü için kullanılır.

identifier

Tür: dizgi

Açıklama: Dosya içinde benzersiz dizgi anahtarı.

customData

Tür: dizgi

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>

Bu makale yararlı oldu mu?