Crowdin CLI yönetmek için kaynakların bir açıklamasını içeren bir yapılandırma dosyası kullanır: Crowdin içine yüklenecek dosyalar ve ilgili çevirilerin yerleri.
Crowdin CLI’yi kullanmak için önce yapılandırma dosyanızı oluşturmalı ve ardından aracı çalıştırmalısınız. Varsayılan olarak, Crowdin CLI crowdin.yml adında bir yapılandırma dosyası arar (bu yüzden crowdin.yml’dan farklı değilse dosya adını belirtmek zorunda değilsiniz).
Yapılandırma dosyasını oluşturmak için aşağıdaki komutu çalıştırın:
$ crowdin init
Geçerli bir Crowdin CLI yapılandırma dosyası aşağıdaki yapıya sahiptir, bu yüzden lütfen gerekli tüm bilgileri doldurduğunuzdan emin olun:
Tipik bir yapılandırma dosyası aşağıdakine benzer:
"project_id": "proje-kimliği"
"api_token": "kişisel-erişim-belirteci"
"base_path": "/proje-temel-yolu"
"preserve_hierarchy": true
"base_url": "https://api.crowdin.com" # Crowdin Enterprise için https://{kuruluş-adı}.crowdin.com
"files": [
{
"source": "/locale/en/klasör1/[0-2].txt", #kaynak dosyalar süzgeci
"translation": "/locale/%two_letters_code%/klasör1/%original_file_name%" #çevirilerin saklandığı yer
},
{
"source": "/locale/en/klasör2/[0-2].txt",
"translation": "/locale/%two_letters_code%/klasör2/%original_file_name%"
}
]
Yukarıdaki yapılandırma dosyasını çalıştırmak ve Crowdin’e kaynak dosyaları yüklemek için:
$ crowdin upload sources
Çevirileri Crowdin’den alın ve bunları doğru yerlere koyun:
$ crowdin download
API Kimlik Bilgilerini bir ortam değişkeninden yükleyebilirsiniz, örneğin:
"project_id_env": "CROWDIN_PROJE_KİMLİĞİ"
"api_token_env": "CROWDIN_KİŞİSEL_BELİRTECİ"
"base_path_env": "CROWDIN_TEMEL_YOLU"
"base_url_env": "CROWDIN_TEMEL_URL"
Eğer karışıksa, api_token ve project_id önceliklidir:
"project_id_env": "CROWDIN_PROJE_KİMLİĞİ" # Düşük öncelikli
"api_token_env": "CROWDIN_KİŞİSEL_BELİRTECİ" # Düşük öncelikli
"base_path_env": "CROWDIN_TEMEL_YOLU" # Düşük öncelikli
"base_url_env": "CROWDIN_TEMEL_URL" # Düşük öncelikli
"project_id": "proje-kimliği" # Yüksek öncelikli
"api_token": "kişisel-erişim-belirteci" # Yüksek öncelikli
"base_path": "/proje-temel-yolu" # Yüksek öncelikli
"base_url": "https://api.crowdin.com" # Yüksek öncelikli
crowdin.yml dosyası, yönetilecek kaynakların ve API kimlik bilgilerinin (project_id, api_token, base_path, base_url) açıklamasını içerir. Bu, API anahtarının diğer kullanıcılar tarafından erişilebilir olacağından bu dosyayı kod deposuna işlemenin güvenli olmadığı anlamına gelir. Crowdin CLI, iki tür yapılandırma dosyası destekler:
Eğer kullanıcıya özgü kimlik bilgileriyle bir komut çalıştırmanız gerekiyorsa (örneğin kaynakları yükleme
), aşağıdaki komutu çalıştırın:
$ crowdin upload sources --identity 'kullanıcı-kimlik-bilgileri-dosyasına-giden-yol'
Ancak kullanıcıya özgü kimlik bilgileri dosyası $HOME/.crowdin.yml içinde bulunuyorsa çalıştırabilirisiniz:
$ crowdin upload sources
Yukarıda verilen örnek yapılandırma, çoklu dosyalarla çalışmayı kolaylaştıran standart joker karakterleri (ayrıca genelleme şekilleri olarak da bilinir) içeren kaynak ve çeviri özniteliklerine sahiptir.
İşte kullanabileceğiniz şekiller:
* (yıldız işareti)
Dosya veya dizin adındaki herhangi bir karakteri temsil eder. Eğer bir “*.json” belirtirseniz, “iletiler.json”, “hakkimizda.json” ve “.json” ile biten her şey gibi tüm dosyaları içerecektir.
** (çiftli yıldız işareti)
Herhangi bir dizgiyle art arda (alt dizinler dahil) eşleşir. Hem kaynak hem de çeviri şekillerinde ** kullanabileceğinizi unutmayın. Çeviri şeklinde ** kullanırken, belirli bir dosya için her zaman kaynaktan gelen alt yolu içerecek. Örneğin, tüm .po dosyalarını art arda Crowdin’e yüklemek için ‘/en/**/.po’ kaynağını kullanabilirsiniz. Çeviri şekli ‘/%two_letters_code%/**/%original_file_name%’ olacaktır.
? (soru işareti)
Herhangi bir tek karakterle eşleşir.
[set]
Küme içindeki herhangi bir tek karakterle eşleşir. Düzenli İfadedeki, küme değili ([^ a-z]) dahil olmak üzere karakter kümeleri gibi davranır.
\ (ters eğik çizgi)
Sonraki üst karakteri atlatır.
Crowdin CLI, sonuçta ortaya çıkan dosya adı içine uygun değişkenleri koymak için aşağıdaki yer tutucuları kullanmayı sağlar:
Ad | Açıklama |
---|---|
%original_file_name% | Orijinal dosya adı |
%original_path% | Sonuçta oluşan pakette dosya yolunu oluşturmak için Crowdin projesindeki ana klasörlerin adlarını alır |
%file_extension% | Orijinal dosya uzantısı |
%file_name% | Uzantısız dosya adı |
%language% | Dil adı (örn. Ukraynaca) |
%two_letters_code% | Dil kodu ISO 639-1 (örn. uk) |
%three_letters_code% | Dil kodu ISO 639-2/T (örn. ukr) |
%locale% | Yerel ayar (örn. uk-UA) |
%locale_with_underscore% | Yerel ayar (örn. uk_UA) |
%android_code% | "values-" dizinlerini adlandırmak için kullanılan Android Locale tanımlayıcısı |
%osx_code% | ".lproj" dizinlerini adlandırmak için kullanılan OS X Locale tanımlayıcısı |
%osx_locale% | Çeviri kaynaklarını adlandırmak için kullanılan OS X yerel ayarı (örn., uk, zh-Hans, zh_HK) |
Ayrıca şeklin başına bir eğik çizgi (/) koyarak sonuçta ortaya çıkan arşivdeki dosyalar için yolu tanımlayabilirsiniz.
Çeviri
seçeneğiniz şöyle görünebilir: “/locale/%two_letters_code%/LC_MESSAGES/%original_file_name%”.
Yerel makinedeki dosyaların ve dizinlerin yapısı:
- base_path | |-- folder | | | |-- 1.xml | |-- 1.txt | |-- 123.txt | |-- 123_deneme.txt | |-- a.txt | |-- a1.txt | |-- crowdin?deneme.txt | |-- crowdin_deneme.txt | |-- 1.xml |-- 1.txt |-- 123.txt |-- 123_deneme.txt |-- a.txt |-- a1.txt |-- crowdin?deneme.txt |-- crowdin_deneme.txt |-- 3.txt
Örnek 1. Kaynak yolunda joker karakterlerin kullanımı:
#........proje yapılandırmanız........
"files": [
{
"source": "/**/?[0-9].txt", #a1.txt, klasör/a1.txt yükle
"translation": "/**/%two_letters_code%_%original_file_name%"
},
{
"source": "/**/*\\?*.txt", #crowdin?deneme.txt, klasör/crowdin?deneme.txt yükle
"translation": "/**/%two_letters_code%_%original_file_name%"
},
{
"source": "/**/[^0-2].txt", #3.txt, klasör/3.txt, a.txt, klasör/a.txt yükle (1.txt, klasör/1.txt yoksay)
"translation": "/**/%two_letters_code%_%original_file_name%"
}
]
Örnek 2. Dosyaları yoksayma için joker karakterlerin kullanımı:
#........proje yapılandırmanız........
"files": [
{
"source": "/**/*.*", #base_path’in içerdiği tüm dosyaları yükle
"translation": "/**/%two_letters_code%_%original_file_name%",
"ignore": [
"/**/%two_letters_code%_%original_file_name%", #çevrilmiş dosyaları yoksay
"/**/?.txt", #1.txt, a.txt, klasör/1.txt, klasör/a.txt yoksay
"/**/[0-9].txt", #1.txt, klasör/1.txt yoksay
"/**/*\\?*.txt", #crowdin?deneme.txt, klasör/crowdin?deneme.txt yoksay
"/**/[0-9][0-9][0-9].txt", #123.txt , klasör/123.txt yoksay
"/**/[0-9]*_*.txt" #123_deneme.txt, klasör/123_deneme.txt yoksay
]
}
]
Genellikle yazılım projelerinin yerel dizinler için özel adları vardır. Crowdin, projelerinizde tanınması için kendi dillerinizi eşlemenizi sağlar.
Yerel dizinleriniz ‘en’, ‘uk’, ‘tr’, ‘de’ olarak adlandırılmış diyelim. Hepsi %two_letters_code% yer tutucusu ile temsil edilebilir. Yine de, ‘zh_CH’ adında bir dizine sahipsiniz. Ayrıca %android_code%, %locale% vb. gibi diğer yer tutucuları için dil kodlarını geçersiz kılabilirsiniz.
Projenizde değişiklik yapmadan Crowdin ile çalışmasını sağlamak için kullanıcı arayüzü aracılığıyla Dil Eşleme’yi ayarlayabilirsiniz.
Eğer dışa aktarmadan sonra bir dosyayı çevirilerle yeniden adlandırmanız gerekirse, bunu translation_replace
parametresi yardımıyla kolayca yapabilirsiniz.
Örneğin, dosya “en_strings.po” olarak adlandırılmışsa, “strings.po” olarak yeniden adlandırılabilir. Bunun için yapılandırma dosyasına (crowdin.yml) yeni bir parametre (translation parametresiyle aynı seviyede) ekleyin:
"files": [
{
"source": "/locale/**/en_*.po",
"translation": "/locale/**/%two_letters_code%_%original_file_name%",
"translation_replace": {
"en_": ""
}
}
]
Bu durumda, “_en” dosya adından silinecektir.
Zaman zaman, Crowdin’de çevirmeniz gerekmeyen dosyalar ve dizinler vardır. Bu gibi durumlarda, projenizdeki yapılandırma dosyasına yerel dosya başına kurallar eklenebilir.
"files": [
{
"source": "/**/*.properties",
"translation": "/**/%file_name%_%two_letters_code%.%file_extension%",
"ignore": [
"/deneme/dosya.properties",
"/ornek.properties"
]
},
{
"source": "/locale/en/**/*.po",
"translation": "/locale/%two_letters_code%/**/%original_file_name%",
"ignore": [
"/locale/en/templates",
"/locale/en/workflow"
]
}
]
Varsayılan olarak, kaynak dosyalar projenin tüm hedef dillerine çeviri için kullanılabilir. Eğer bazı kaynak dosyaların belirli hedef dillere çevrilmemesi gerekiyorsa, bunları excluded_target_languages
parametresinin yardımıyla hariç tutabilirsiniz.
Yapılandırma dosyası örneği:
"files": [
{
"source": "/resources/en/*.json",
"translation": "/resources/%two_letters_code%/%original_file_name%",
"excluded_target_languages": [
"uk",
"tr"
]
}
]
Eğer bir CSV veya XLS/XLSX dosyası tüm hedef diller için çeviriler içeriyorsa, şemada uygun dil kodlarını belirtmelisiniz.
CSV dosyası örneği:
identifier,source_phrase,context,Ukrainian,Russian,Turkish ident1,Source 1,Context 1,,, ident2,Source 2,Context 2,,, ident3,Source 3,Context 3,,,
Yapılandırma dosyası örneği:
"files": [
{
"source": "çoksütunlu.csv",
"translation": "çoksütunlu.csv",
"first_line_contains_header": true,
"scheme": "identifier,source_phrase,context,uk,ru,tr"
}
]
Eğer CSV veya XLS/XLSX dosyanız içe aktarmada atlanması gereken sütunlar içeriyorsa, şemadaki bu tür sütunlar için none
kullanın, örneğin:
"scheme" : "identifier,source_phrase,context,uk,none,ru,none,tr"
CSV veya XLS/XLSX dosyanız için şemayı oluşturmak amacıyla aşağıdaki sabitleri kullanın:
identifier
– Sütun, dizgi tanımlayıcıları içerir.
source_phrase
– Sütun, kaynak dizgileri içerir.
source_or_translation
– Sütun, kaynak dizgileri içerir, ancak dosya dışa aktarıldığında aynı sütun çevirilerle doldurulur. Varolan çevirileri yüklerken, bu sütundaki değerler çeviri olarak kullanılacaktır.
translation
– Sütun çevirileri içerir.
context
– Sütun, kaynak dizgiler için yorumları veya bağlam bilgilerini içerir.
max_length
– Sütun, dizgilerin çevirileri için en fazla uzunluk sınırı değerlerini içerir.
labels
– Sütun, kaynak dizgiler için etiketleri içerir.
none
– İçe aktarma sırasında atlanacak sütun.
"preserve_hierarchy": true
preserve_hierarchy
seçeneğini kullanarak yapılandırma dosyası örneği:
"project_id": "proje-kimliği"
"api_token": "kişisel-erişim-belirteci"
"base_path": "/proje-temel-yolu"
"base_url": "https://api.crowdin.com" # Crowdin Enterprise için https://{kuruluş-adı}.crowdin.com
"preserve_hierarchy": true
"files": [
{
"source": "/locale/en/**/*.po",
"translation": "/locale/%two_letters_code%/**/%original_file_name%"
}
]
true
’dur. Diyelim ki makinenizdeki dosya/klasör yapısı şöyle görünüyor:
- locale | |-- en |-- emails |-- app |-- foo.po |-- bar.po
Eğer yapılandırma dosyanızda "preserve_hierarchy": true
seçeneğini hiç kullanmazsanız veya false
değeriyle birlikte kullanırsanız, paylaşılan tüm dizinler atlanacak ve Crowdin’deki dosya yapısı aşağıdaki gibi temsil edilecektir:
- foo.po
- bar.po
"preserve_hierarchy": false
seçeneği, sadece kaynak dosyalarınızın paylaşılan bir kök dizini varsa çalışır. "preserve_hierarchy": true
seçeneğini kullanarak, Crowdin’deki dosya yapısı aşağıdaki gibi temsil edilecektir:
- locale | |-- en |-- app |-- foo.po |-- bar.po
Çeviri için herhangi bir dosya içermeyen dizinler Crowdin’’e oluşturulmayacaktır (yani, yukarıdaki örnekte emails
dizini olarak).
Bu özellik, yml dosya bölümüne iki isteğe bağlı parametre desteği ekler: dest
ve type
. Bu, genellikle yüklenen adın farklı olmak zorunda olduğu yerlerdeki projeler için kullanılır, böylece Crowdin, türü doğru olarak algılayabilir.
dest
parametresi, Crowdin’de bir dosya adı belirtmenizi sağlar. Aynı anda birden çok dosya için çalışır ve şu yer tutucuları destekler: %original_file_name%, %original_path%, %file_extension%, %file_name%.
Eğer dest
parametresini kullanırsanız, yapılandırma dosyası true değeri ile <1>preserve_hierarchy
parametresini içermelidir.Her iki parametre ile yapılandırma dosyası örneği:
"project_id": "proje-kimliği"
"api_token": "kişisel-erişim-belirteci"
"base_path": "/proje-temel-yolu"
"base_url": "https://api.crowdin.com" # Crowdin Enterprise için https://{kuruluş-adı}.crowdin.com
"preserve_hierarchy": true
"files": [
{
"source": "/conf/**/*.txt",
"dest": "/conf/**/%file_name%.properties",
"translation": "/conf/**/%two_letters_code%/%file_name%.properties",
"type": "properties"
},
{
"source": "/app/*.txt",
"dest": "/app/%file_name%.xml",
"translation": "/res/values-%android_code%/%original_file_name%",
"type": "android"
},
{
"source": "/conf/**/*.txt",
"dest": "/%original_path%/%file_name%.properties",
"translation": "/conf/**/%two_letters_code%/%original_file_name%",
"type": "properties"
}
]
update_option
parametresi isteğe bağlıdır. Eğer ayarlanmazsa, değiştirilen dizgilerin çevirileri kaybolacaktır. Yazım hataları düzeltmeleri ve kaynak dizgilerdeki küçük değişiklikler için yararlıdır.
Değere bağlı olarak, update_option
seçeneği çevirileri korumak ve dosya güncelleme sırasında değiştirilen dizgilerini doğrulamalarını korumak/kaldırmak için kullanılır.
Değerler:
update_option parametresine sahip yapılandırma dosyası örneği:
"project_id": "proje-kimliği"
"api_token": "kişisel-erişim-belirteci"
"base_path": "/proje-temel-yolu"
"base_url": "https://api.crowdin.com" # Crowdin Enterprise için https://{kuruluş-adı}.crowdin.com
"files": [
{
"source": "/*.csv",
"translation": "/%three_letters_code%/%file_name%.csv",
"first_line_contains_header": true,
"scheme": "identifier,source_phrase,translation,context",
"update_option": "update_as_unapproved"
},
{
"source": "/**/*.xlsx",
"translation": "/%three_letters_code%/klasör/%file_name%.xlsx",
"update_option": "update_without_changes"
}
]
XML, HTML, MD veya anahtar-değer yapısı olmayan diğer kaynak dosyalarınızı kendi bölümleme kurallarınızla yükleyin. Eğer belirtilmezse, otomatik içerik bölümlemesi için ön tanımlı bölümleme kuralları (SRX 2.0) kullanılır.
Özel bölümlemeye sahip yapılandırma dosyası örneği:
"project_id": "proje-kimliği"
"api_token": "kişisel-erişim-belirteci"
"base_path": "/proje-temel-yolu"
"base_url": "https://api.crowdin.com" # Crowdin Enterprise için https://{kuruluş-adı}.crowdin.com
"files": [
{
"source": "/emails/ornek1.html",
"translation": "/emails/%locale%/%original_file_name%",
"custom_segmentation": "/rules/ornek.srx.xml"
}
]
upload translations komutu varolan çevirileri Crowdin’e yükler. Eğer herhangi bir seçenek belirtilmezse, yüklenen çeviriler kaynak dizgilere eşit olsalar bile içe aktarılmayacak ve onaylanmayacaktır.
Değerler:
translate_content isteğe bağlı | bool | Etiketlerin içinde yer alan metinlerin çevrilip çevrilmeyeceğini tanımlar. Kabul edilebilir değerler 0 veya 1’dir. Varsayılan 1. |
translate_attributes isteğe bağlı | bool | Etiketlerin özniteliklerinin çevrilip çevrilmeyeceğini tanımlar. Kabul edilebilir değerler 0 veya 1’dir. Varsayılan 1. |
content_segmentation isteğe bağlı | bool | Uzun metinlerin daha küçük metin bölümlerine bölünüp bölünmeyeceğini tanımlar. Kabul edilebilir değerler 0 veya 1’dir. Varsayılan 1. Not: İçerik bölümlemesi etkinleştirildiğinde, çeviri yükleme bir deneysel makine öğrenme teknolojisi tarafından ele alınır. |
translatable_elements isteğe bağlı | dizilim | Bu, XPaths olan yerdeki her öğenin DOM öğesine aktarılması gereken dizgilerin bir dizilimidir. Örnek yol: /düğüme/giden/yol veya /özniteliğe/giden/yol[@attr] Not! Eğer tanımlanırsa, içe aktarılırken translate_content ve translate_attributes parametreleri dikkate alınmaz. |
Ek parametreler ile yapılandırma dosyası örneği:
"project_id": "proje-kimliği"
"api_token": "kişisel-erişim-belirteci"
"base_path": "/proje-temel-yolu"
"base_url": "https://api.crowdin.com" # Crowdin Enterprise için https://{kuruluş-adı}.crowdin.com
"files": [
{
"source": "/app/örnek1.xml",
"translation": "/app/%locale%/%original_file_name%",
"translate_attributes": 1,
"translate_content": 0
},
{
"source": "/app/ornek2.xml",
"translation": "/app/%locale%/%original_file_name%",
"translatable_elements": [
"/content/text", #çevrilebilir metinler 'content' ana düğümünün 'text' düğümlerinde saklanır
"/content/text[@value]" # çevrilebilir metinler 'text' düğümlerinin 'value' özniteliğinde saklanır
]
}
]
content_segmentation isteğe bağlı | bool | Uzun metinlerin daha küçük metin bölümlerine bölünüp bölünmeyeceğini tanımlar. Sadece TXT, DOCX, DITA, IDML, MIF, MEDIAWIKI, HTML, Front Matter HTML, Markdown, Front Matter Markdown, XML, XLIFF, XLIFF 2.0 için Kabul edilebilir değerler 0 veya 1’dir. Varsayılan 1. Not: İçerik bölümlemesi etkinleştirildiğinde, çeviri yükleme bir deneysel makine öğrenme teknolojisi tarafından ele alınır. |
Ek parametreler ile yapılandırma dosyası örneği:
"project_id": "proje-kimliği"
"api_token": "kişisel-erişim-belirteci"
"base_path": "/proje-temel-yolu"
"base_url": "https://api.crowdin.com" # Crowdin Enterprise için https://{kuruluş-adı}.crowdin.com
"files": [
{
"source": "/emails/ornek1.html",
"translation": "/emails/%locale%/%original_file_name%",
"content_segmentation": 1
}
]
Her dosya grubu için tercih edilen dışa aktarma davranışını yapılandırmak amacıyla aşağıdaki dışa aktarma seçeneklerini kullanabilirsiniz:
skip_untranslated_strings
– Dışa aktarılan çeviri dosyalarına sadece çevrilmiş dizgiler dahil edilecektir.
skip_untranslated_files
– Dışa aktarılan çeviri arşivine sadece çevrilmiş dosyalar dahil edilecektir.
export_only_approved
– Dışa aktarılan çeviri dosyalarına sadece hem çevrilmiş hem de onaylanmış metinler dahil edilecektir.
Dışa aktarma seçenekleriyle yapılandırma dosyası örneği:
"project_id": "proje-kimliği"
"api_token": "kişisel-erişim-belirteci"
"base_path": "/proje-temel-yolu"
"base_url": "https://api.crowdin.com" # Crowdin Enterprise için https://{kuruluş-adı}.crowdin.com
"preserve_hierarchy": true
"files": [
{
"source": "/locale/en/**/*.po",
"translation": "/locale/%two_letters_code%/**/%original_file_name%",
"skip_untranslated_strings": true
},
{
"source": "/locale/en/**/*.json",
"translation": "/locale/%two_letters_code%/**/%original_file_name%",
"skip_untranslated_files": true
},
{
"source": "/locale/en/**/*.yml",
"translation": "/locale/%two_letters_code%/**/%original_file_name%",
"export_only_approved": true
}
]
Dışa aktarılan çevirilerde tek tırnağın başka bir tek tırnak tarafından yoksa ters eğik çizgi tarafından atlatılması gerektiğini tanımlar. Dosya başına escape_quotes
seçeneğini ekleyebilirsiniz. Kabul edilebilir değerler 0, 1, 2, 3’tür. Varsayılan 3.
Değerler:
Özel karakterleri atlatın
Dışa aktarılan çevirilerde herhangi bir özel karakterin (=, :, ! ve #) ters eğik çizgi tarafından atlatılması gerekip gerekmediğini tanımlar. Dosya başına escape_special_characters
seçeneğini ekleyebilirsiniz.
Kabul edilebilir değerler 0, 1’dir. Varsayılan 1.
Yapılandırma dosyası örneği:
"project_id": "proje-kimliği"
"api_token": "kişisel-erişim-belirteci"
"base_path": "/proje-temel-yolu"
"base_url": "https://api.crowdin.com" # Crowdin Enterprise için https://{kuruluş-adı}.crowdin.com
"files": [
{
"source": "/en/strings.properties",
"translation": "/%two_letters_code%/%original_file_name%",
"escape_quotes": 1,
"translate_content": 0,
"escape_special_characters": 0
}
]
"project_id": "proje-kimliği"
"api_token": "kişisel-erişim-belirteci"
"base_path": "/proje-temel-yolu"
"base_url": "https://api.crowdin.com" # Crowdin Enterprise için https://{kuruluş-adı}.crowdin.com
"files": [
{
"source": "/*.csv",
"translation": "/%two_letters_code%/%original_file_name%",
# İlk satırın içe aktarılması gerekip gerekmediğini veya sütun başlıkları içerdiğini belirtir
"first_line_contains_header": true,
# sadece veri sütunları eşlemesini tanımlamak için CSV dosyası yüklenirken kullanılır
"scheme": "identifier,source_phrase,translation,context,max_length"
}
]
"project_id": "proje-kimliği"
"api_token": "kişisel-erişim-belirteci"
"base_path": "/proje-temel-yolu"
"base_url": "https://api.crowdin.com" # Crowdin Enterprise için https://{kuruluş-adı}.crowdin.com
"files" : [
{
"source" : "/locale/en/**/*.po",
"translation" : "/locale/%two_letters_code%/LC_MESSAGES/%original_file_name%",
"languages_mapping" : {
"two_letters_code" : {
"zh-CN" : "zh_CH",
"fr-QC": "fr"
}
}
}
]
"project_id": "proje-kimliği"
"api_token": "kişisel-erişim-belirteci"
"base_path": "/proje-temel-yolu"
"base_url": "https://api.crowdin.com" # Crowdin Enterprise için https://{kuruluş-adı}.crowdin.com
"files" : [
{
"source" : "/res/values/*.xml",
"translation" : "/res/values-%android_code%/%original_file_name%",
"languages_mapping" : {
"android_code" : {
"de" : "de",
"ru" : "ru"
}
}
}
]
VCS bütünleştirmeleri, CLI aracıyla aynı yapılandırma dosyasını gerektirir, yani aynı yapı desteklenir. Tek fark, proje kimlik bilgilerini güvenlik nedeniyle dosya başlığında saklamamanızdır. Ayrıca, birkaç ek parametre kullanabilirsiniz.
Varsayılan çekme isteği başlığı Yeni Crowdin güncellemeleri
’dir. Özel çekme isteği başlığınızı belirlemek ve çekme isteğine etiketler eklemek için şu parametreleri yapılandırma dosyasında kullanabilirsiniz: pull_request_title
, pull_request_labels
.
Örnek:
"base_path": "/proje-temel-yolu"
"pull_request_title": "Özel Çİ başlığı"
"pull_request_labels": [
"crowdin",
"l10n"
]
"files": [
{
"source" : "/resources/en/*.json",
"translation" : "/resources/%two_letters_code%/%original_file_name%"
}
]
Her çeviri işlendiğinde varsayılan ileti “Yeni çeviriler {fileName} ({languageName})” olarak gösterilir. Git etiketleri eklemek için commit_message
parametresini kullanabilirsiniz (örn. yapımları atlamak için).
Örnek:
"base_path": "/proje-temel-yolu"
"commit_message": "[ci skip]"
"files": [
{
"source" : "/resources/en/*.json",
"translation" : "/resources/%two_letters_code%/%original_file_name%"
}
]
Varsayılan işleme iletisini değiştirmek için append_commit_message
parametresini false değeriyle kullanın. Buna göre uygun dosya adı ve dil değişkenlerini kullanmak için isteğe bağlı iki yer tutucuyu da ekleyebilirsiniz: %original_file_name% ve %language%.
Örnek:
"commit_message": "Düzeltme: Crowdin’den yeni çeviriler %original_file_name%"
"append_commit_message": false
"files": [
{
"source" : "/resources/en/*.json",
"translation" : "/resources/%two_letters_code%/%original_file_name%"
}
]
Varsayılan olarak, tüm diller dışa aktarılır. Eğer bazı belirli dilleri dışa aktarmanız gerekiyorsa, bunları belirtmek için export_languages
parametresini kullanın.
Örnek:
"base_path": "/proje-temel-yolu"
"export_languages": [
"ru",
"uk",
"tr"
]
"files": [
{
"source" : "/resources/en/*.json",
"translation" : "/resources/%two_letters_code%/%original_file_name%"
}
]
Eğer belli kullanıcılara bir çekme isteği atamanız gerekirse, bunları belirtmek için pull_request_assignees
parametresini kullanın.
GitHub/GitHub Sunucusu
Örnek:
"base_path": "/proje-temel-yolu"
"pull_request_assignees": [
"oturumaçma1",
"oturumaçma2"
]
"files": [
{
"source" : "/resources/en/*.json",
"translation" : "/resources/%two_letters_code%/%original_file_name%"
}
]
GitLab/GitLab Kendi Kendini Yöneten
Örnek:
"base_path": "/proje-temel-yolu"
"pull_request_assignees": [
"kullanıcı_kimliği1", # sayısal kimlik
"kullanıcı_kimliği2" # sayısal kimlik
]
"files": [
{
"source" : "/resources/en/*.json",
"translation" : "/resources/%two_letters_code%/%original_file_name%"
}
]
Eğer belli kullanıcılardan bir çekme isteği incelemesi istemeniz gerekirse, bunları belirtmek için pull_request_reviewers
parametresini kullanın.
GitHub/GitHub Sunucusu
Örnek:
"base_path": "/proje-temel-yolu"
"pull_request_reviewers": [
"oturumaçma1",
"oturumaçma2"
]
"files": [
{
"source" : "/resources/en/*.json",
"translation" : "/resources/%two_letters_code%/%original_file_name%"
}
]
GitLab/GitLab Kendi Kendini Yöneten
Örnek:
"base_path": "/proje-temel-yolu"
"pull_request_reviewers": [
"kullanıcı_kimliği1", # sayısal kimlik
"kullanıcı_kimliği2" # sayısal kimlik
]
"files": [
{
"source" : "/resources/en/*.json",
"translation" : "/resources/%two_letters_code%/%original_file_name%"
}
]
Bitbucket
Örnek:
"base_path": "/proje-temel-yolu"
"pull_request_reviewers": [
"uuid1", # kullanıcı uuid
"uuid2" # kullanıcı uuid
]
"files": [
{
"source" : "/resources/en/*.json",
"translation" : "/resources/%two_letters_code%/%original_file_name%"
}
]
Bitbucket Sunucusu
Örnek:
"base_path": "/proje-temel-yolu"
"pull_request_reviewers": [
"kullanıcıadı1",
"kullanıcıadı2"
]
"files": [
{
"source" : "/resources/en/*.json",
"translation" : "/resources/%two_letters_code%/%original_file_name%"
}
]
Örnek:
"base_path": "/proje-temel-yolu"
"pull_request_reviewers": [
"guid1", # kullanıcı kimliği
"guid2" # kullanıcı kimliği
]
"files": [
{
"source" : "/resources/en/*.json",
"translation" : "/resources/%two_letters_code%/%original_file_name%"
}
]
Kaynak dizgilere varolan veya yeni etiketler eklemek için labels
parametresini kullanın. Etiketler, sadece Crowdin projesine ilk yükleme sırasında kaynak dizgilere eklenecektir.
labels
parametresi kullanılmadan önce Crowdin projesine yüklenen dizgiler etiketlenmeyecektir. Eğer doğrudan Crowdin’de ilk yükleme sırasında eklenen etiketi kaldırırsanız, sonraki eşitlemelerde yeniden eklenmeyecektir.
Etiket adları, “,
” dışında herhangi bir karakter içerebilir.
Örnek:
"base_path": "/proje-temel-yolu"
"files": [
{
"source" : "/resources/en/*.json",
"translation" : "/resources/%two_letters_code%/%original_file_name%",
"labels" : [
"android",
"emails"
]
}
]
Etiketler hakkında daha fazlasını okuyun.
Bir proje için VCS bütünleştirmesi ve CLI kullanmanın gerekli olduğu durumlar vardır. Çoğunlukla, bu tür bir durumda, VCS bütünleştirmesi için bir CLI için başka bir tane olmak üzere iki ayrı yapılandırma dosyasına sahip olmanız gerekir. Ancak, her iki durumda da tek bir yapılandırma dosyası kullanabilirsiniz.
VCS bütünleştirme yapılandırma dosyası, CLI için gereken project_id
ve api_token
kimlik bilgilerini içermediğinden, şu parametreleri kullanarak bunları doğrudan komutta iletebilirsiniz: -i/--project-id
, -T/--token
. Alternatif olarak, bu amaçla ortam değişkenlerini kullanabilirsiniz.
Sonuç olarak, CLI aracılığıyla çevirileri indirme komutunuz aşağıdaki gibi görünecek:
$ crowdin download -i {your-project-id} -T {your-token}
Crowdin CLI ile çalışırken yardıma mı ihtiyacınız var ya da herhangi bir sorunuz mu var? Destek Ekibine Ulaşın.