Sözdizimi
genstrings [-a] [-SwiftUI] [-s rutin [-s rutin ...]] \
[-skipTable Tablo [-skipTable Tablo ...]] [-noPositionalParameters] [-u] \
[-encoding karakter_kümesi_adı] [-macRoman] [-d] [-q] [-bigEndian | -littleEndian] \
[-o cikisDizini] dosya ...
Açıklama
genstrings aracı, argüman olarak sağlanan C, Objective-C, C++, Objective-C++ veya Swift kaynak kod dosyalarından bir veya daha fazla .strings dosyası oluşturur. Bir .strings dosyası, Geliştirici Dokümantasyonu (Developer Documentation) altındaki Uluslararasılaştırma (Internationalization) bölümünde açıklandığı gibi bir uygulamanın farklı diller için yerelleştirilmesinde kullanılır.
Kaynak Kod genstrings, dize içeriklerini ayıklamak ve yerelleştirme için dize tabloları üretmek amacıyla sağlanan kaynak dosyaları aşağıdaki fonksiyon çağrıları için tarar. Aşağıda örnek olarak NSLocalizedString() makrosu kullanılmıştır; varsayılan olarak genstrings bu makroyu ve CFCopyLocalizedString() makrosunu tanır.
SwiftUI Text() başlatıcısına (initializer) destek sağlamak için -SwiftUI bayrağını kullanın.
Diğer kalıpların nasıl tanınacağı hakkında bilgi edinmek için aşağıdaki -s rutin seçeneği belgelendirmesine bakın.
genstrings'in kaynak koddan ayıklama yapabilmesi için "key" (anahtar), "Table" (Tablo) ve "value" (değer) argümanlarının sabit dizeler (literal strings) olması gerekir. Yorum (comment) argümanı sabit bir dize veya nil olabilir, ancak yerelleştiricilere bağlam sağlamak için kullanılması önemle tavsiye edilir.
NSLocalizedString("key", comment)
Bu biçimi içeren kaynak satırları, Localizable.strings adlı bir dosyaya uygun bir dize tablosu girişi oluşturacaktır.
NSLocalizedStringFromTable("key", "Table", comment)
NSLocalizedStringFromTableInBundle("key", "Table", bundle, comment)
Bu biçimlerden herhangi birini içeren kaynak satırları, Table.strings adlı bir dosyada uygun bir dize tablosu girişi oluşturacaktır.
NSLocalizedStringWithDefaultValue("key", "Table", bundle, "value", comment)
Bu biçimi içeren kaynak satırları, Table.strings adlı bir dosyada farklı bir anahtar ve değer ile uygun bir dize tablosu girişi oluşturacaktır; diğer tüm biçimler anahtarı değer olarak yeniden kullanır.
Biçim Dizeleri ve Konumsal Parametreler Dize dosyası girişlerinin anahtarları ve değerleri biçimlendirme karakterleri içerebilir. Birden çok biçimlendirme argümanına sahip değer dizeleri için konumsal parametreler (positional parameters) oluşturulur. Bunlar, her yerelleştirmenin gerektirdiği şekilde argüman sırasının değiştirilmesine olanak tanır. Örneğin, "File %1$@ contains %2$d bytes." ifadesi başka bir yerelleştirmede "%2$d bytes are contained in file %1$@." haline gelebilir.
Dize tablosu girişlerinde konumsal parametrelerin oluşturulmasını engellemek için -noPositionalParameters bayrağı kullanılabilir.
Önemli: NSLocalizedString() gibi bir makro bir biçim dizesi olarak kullanıldığında, çalışma zamanında argüman türü uyuşmazlıklarını önlemek için, çevrilen tüm dize tablolarında tüm biçimlendirme argümanlarının aynı türlerle aynı sırada mevcut olduğundan emin olmak son derece önemlidir.
Kodlama (Encoding) Varsayılan olarak genstrings, kaynak dosyaların UTF-8 olarak kodlandığını veya ASCII dışı karakter içermediğini varsayar. Diğer kodlamalardaki dosyalar, kodlamalarını bir IANA karakter kümesi adı olarak belirtmek üzere -encoding karakter_kümesi_adı bayrağı kullanılmadığı sürece başarıyla okunamayacaktır. Girdi dosyalarının Mac Roman kodlamasında olmasının beklendiğini belirtmek için -macRoman bayrağı da kullanılabilir. Ancak, gelecekteki sürümlerde -macRoman seçeneği kaldırılabileceğinden, geliştiricilerin kaynak dosyalar için kodlama olarak UTF-8'e geçmeleri önemle tavsiye edilir.
Eğer bir girdi dosyası UTF-8 olarak veya belirtilen kodlama kullanılarak başarıyla okunamıyorsa, genstrings'in dosyanın kodlamasını algılamaya çalışmasını talep etmek için -d bayrağı kullanılabilir.
UTF-8 dosyalarındaki yerleşik ASCII dışı karakterler ve \uxxxx ile \Uxxxxxxxx kaçış dizileri tarafından belirtilen ASCII dışı karakterler genstrings tarafından otomatik olarak okunur. -u seçeneği ve genstrings'e özgü kaçış dizisi de desteklenmektedir.
Oluşturulan .strings dosyaları varsayılan olarak UTF-16 kodlamalıdır. -bigEndian veya -littleEndian seçeneği belirtilmediği sürece ana makinenin endianness yapısı kullanılır. Endian seçenekleri, -a seçeneğiyle sonuna ekleme yapılan .strings dosyalarını etkilemez. Mevcut dosyanın bayt sırası (byte order) korunur.
Seçenekler
-a: Çıktının eski çıkış dosyalarının sonuna eklenmesine izin verir. Ancak -a seçeneği, sonuçların eski dosyanın sonuna eklenmesine neden olur ve birleştirme (merge) işlemi yapmaz.-SwiftUI: Tek argümanlı varyantı da dahil olmak üzere SwiftUI Text() başlatıcısının tanınması desteğini etkinleştirir.
-s rutin [-s rutin ...]
rutin() işlevini NSLocalizedString() işlevine eşdeğer olarak tanır. Örneğin, -s MyLocalString, MyLocalString(), MyLocalStringFromTable() vb. çağrılarını yakalayacaktır.
Bu bayrak herhangi bir sayıda geçirilebilir.
Not: NSLocalizedString() ile eşdeğer olarak kabul edilecek rutin adlarının belirtilmesi, NSLocalizedString(), CFCopyLocalizedString() veya bunların türevlerinin tanınmasını engellemez.
-skipTable Tablo [-skipTable Tablo ...]
genstrings'in Tablo için olan dosyayı atlamasını sağlar. Bu tablodaki girişlerin oluşturulmayacağını unutmayın.
Bu bayrak herhangi bir sayıda geçirilebilir.
-noPositionalParameters Konumsal parametrelerin oluşturulmasını kapatır.
-u: Strings dosyalarının değerlerinde unicode karakterlerine izin verir. Kaynak koddaki herhangi bir \Uxxxx (xxxx'in dört veya sekiz onaltılık basamak olduğu) ifadesi, strings dosyasına anahtar için kendi Unicode değeriyle (\Uxxxx cinsinden), ancak değeri için gerçek Unicode değeriyle yazılacaktır.
Örneğin, NSLocalizedString(@"AB\U0043D", @"Comment") ifadesi dize tablosunda "AB\U0043D" = "ABCD" şeklinde bir girişle sonuçlanacaktır.
ASCII dışı karakterlerin artık bu seçenek olmadan otomatik olarak işlenebildiğini unutmayın. Ayrıntılar için yukarıdaki Kodlama bölümüne bakın.
-encoding karakter_kümesi_adı Kaynak dosyaları belirtilen IANA karakter kümesi adını kullanarak oku. Ayrıntılar için yukarıdaki Kodlama bölümüne bakın.
-macRoman: Uyumluluk amacıyla kaynak dosyaları Mac Roman kodlamasını kullanarak oku. Ayrıntılar için yukarıdaki Kodlama bölümüne bakın.-q: Birden çok anahtar/değer çifti uyarısını kapatır.
-bigEndian | -littleEndian Çıkış dosyalarının belirtilen endianness ile yazılmasını ve uygun bir bayt sırası işareti (byte-order marker) ile ön ek almasını sağlar.
-o cikisDizini Çıkış dize tablolarının oluşturulması gereken dizini belirtir.
Xcode 12 Haziran 2019 Xcode