Denetimler ve düzeltmeler#
Özel kendiliğinden düzeltmeler#
Standart olanların yanında özel kendiliğinden düzeltmeleri de uygulayabilir ve bunları :setting:`AUTOFIX_LIST’ içine ekleyebilirsiniz.
Kendiliğinden düzeltmeler güçlüdür, ancak bozulmaya da neden olabilir; Bunları yazarken dikkatli olun.
Örneğin, şu kendiliğinden düzeltme, bir çevirideki foo` dizgesinin her kopyasını ``bar ile değiştirir:
# Copyright © Michal Čihař <michal@weblate.org>
#
# SPDX-License-Identifier: GPL-3.0-or-later
from django.utils.translation import gettext_lazy as _
from weblate.trans.autofixes.base import AutoFix
class ReplaceFooWithBar(AutoFix):
"""Replace foo with bar."""
name = _("Foobar")
def fix_single_target(self, target, source, unit):
if "foo" in target:
return target.replace("foo", "bar"), True
return target, False
Özel denetimler kurmak için, AUTOFIX_LIST içinde Python sınıfının tam yolunu belirtin. Bilgi almak için: :ref:`custom-check-modules’.
Parametreleri kullanarak davranışı özelleştirmek#
İmleri kullanarak Weblate davranışını ince ayarlayabilirsiniz. Bu işlem kaynak dizge düzeyinde (bilgi almak için: Kaynak dizgeler ile ilgili ek bilgiler) ya da Bileşen yapılandırması (Çeviri imleri) içinde yapılabilir. Bazı dosya biçimleri, imlerin doğrudan biçimde belirtilmesini de sağlar (bilgi almak için: Desteklenen dosya biçimleri.
İmler virgül ile ayrılır. Parametreler iki nokta üst üste ile ayrılır. Dizgeye boşluk veya özel karakterler eklemek için tırnak işaretleri kullanabilirsiniz. Örneğin:
placeholders:"special:value":"other value", regex:.*
Hem tek hem de çift tırnak işaretleri kabul edilir. Ters bölü kullanılarak özel karakterlerden kaçılır:
placeholders:"quoted \"string\"":'single \'quoted\''
Kullanılabilecek imlerin listesi şu şekildedir:
rst-textBir metnin reStructuredText belgesi olarak işlenmesini sağlar. Çeviri değiştirilmemiş parametresini etkiler.
dos-eolUnix satır sonu karakterleri yerine DOS karakterlerinin kullanılmasını sağlar (
\nyerine\r\n).read-onlyDizgenin salt okunur olduğunu ve Weblate üzerinde düzenlenemeyeceğini belirler. Bilgi almak için: Salt okunur dizgeler.
priority:NDizgenin önceliğini belirler. Yüksek öncelikli dizgeler daha çevrilir. Varsayılan öncelik değeri: 100. Bir dizgenin önceliği ne kadar yüksekse, o kadar önce çevrilmek üzere sunulur.
max-length:NBir dizgenin en fazla uzunluğunu N karakter olarak sınırlandırır. Bilgi almak için: :ref:`check-max-length.
xml-textMetnin XML belgesi olarak işlenmesini sağlar. XML söz dizimi ve XML kodlaması parametrelerini etkiler.
font-family:NAMEGörselleştirme denetimleri için yazı tipi ailesini belirler. Bilgi almak için: Yazı tiplerini yönetmek.
font-weight:WEIGHTGörselleştirme denetimleri için yazı koyuluğunu belirler. Bilgi almak için: Yazı tiplerini yönetmek.
font-size:SIZEGörselleştirme denetimleri için yazı boyutunu belirler. Bilgi almak için: Yazı tiplerini yönetmek.
font-spacing:SPACINGGörselleştirme denetimleri için harf aralığını belirler. Bilgi almak için: :ref:`fonts’.
icu-flags:FLAGSICU MessageFormat kalite denetiminin davranışını özelleştirecek imleri belirler.
icu-tag-prefix:PREFIXcheck-java-messageformat kalite denetimi için XML kod imlerinin gerekli olan ön ekini belirler.
placeholders:NAME:NAME2:...Çeviride beklenen yer belirtici dizgeleri belirler. Bilgi almak için: :ref:’check-placeholders`.
replacements:FROM:TO:FROM2:TO2...Ortaya çıkan metin parametreleri denetlenirken yapılacak değişiklikleri belirler (Çevirinin en fazla uzunluğu ya da Çevirinin en fazla uzunluğu gibi). Tipik kullanım örneği, metnin uzun değerlerle bile sığdığından emin olmak için yerleştirilebilir ögelerin genişletilmesidir. Örnek:
replacements:%s:”Ali Kaya”.variants:SOURCEBu dizgenin, eşleşen kaynağın bir dizge çeşidi olarak imlenmesini sağlar. Bilgi almak için: :ref:’variants`.
regex:REGEXÇevirilerin eşleştirileceği kurallı ifadeyi belirtir. Bilgi almak için: Kurallı ifade.
forbiddenBir sözlükte yasaklanmış bir çeviriyi belirtir. Bilgi almak için: Yasaklı çeviriler.
strict-same“Değiştirilmemiş çeviri” içinde iç kara listedeki sözcüklerin kullanmasını engeller. Bilgi almak için: Çeviri değiştirilmemiş.
check-glossarySözlük ile uyumlu değil kalite denetimini etkinleştirir.
angularjs-formatAngularJS değer ekleme dizgesi kalite denetimini etkinleştirir.
c-formatC biçimi kalite denetimini etkinleştirir.
c-sharp-formatC# biçimi kalite denetimini etkinleştirir.
es-formatECMAScript kalıbı sabitleri kalite denetimini etkinleştirir.
i18next-interpolationi18next değer eklemesi kalite denetimini etkinleştirir.
icu-message-formatICU MessageFormat kalite denetimini etkinleştirir.
java-printf-formatJava biçimi kalite denetimini etkinleştirir.
java-formatJava MessageFormat kalite denetimini etkinleştirir.
javascript-formatJavaScript biçimi kalite denetimini etkinleştirir.
lua-formatLua biçimi kalite denetimini etkinleştirir.
object-pascal-formatObject Pascal biçimi kalite denetimini etkinleştirir.
percent-placeholdersYüzde yer belirticileri kalite denetimini etkinleştirir.
perl-formatPerl biçimi kalite denetimini etkinleştirir.
php-formatPHP biçimi kalite denetimini etkinleştirir.
python-brace-formatPython parantez biçimi kalite denetimini etkinleştirir.
python-formatPython biçimi kalite denetimini etkinleştirir.
qt-formatQt biçimi kalite denetimini etkinleştirir.
qt-plural-formatQt çoğul biçimi kalite denetimini etkinleştirir.
ruby-formatRuby biçimi kalite denetimini etkinleştirir.
scheme-formatŞema biçimi kalite denetimini etkinleştirir.
vue-formatVue I18n biçimlendirmesi kalite denetimini etkinleştirir.
md-textMetnin Markdown belgesi olarak işlenmesini sağlar. Markdown bağlantıları, Markdown başvuruları ve Markdown söz dizimi kalite denetimlerini etkinleştirin.
case-insensitiveDenetim davranışını büyük/küçük harfe duyarlı olmayacak şekilde ayarlar. Şu anda yalnızca Yer belirticiler kalite denetimini etkiler.
safe-htmlGüvenli olmayan HTML kalite denetimini etkinleştirir.
urlDizge yalnızca bir adresten oluşmalıdır. Adres kalite denetimini etkinleştirin.
ignore-all-checksTüm kalite denetimlerini yok sayar.
ignore-bbcodeBBCode kodlaması kalite denetimini atlar.
ignore-duplicateArt arda yinelenen sözcükler var kalite denetimini atlar.
ignore-check-glossarySözlük ile uyumlu değil kalite denetimini atlar.
ignore-double-spaceÇift boşluk kalite denetimini atlar.
ignore-angularjs-formatAngularJS değer ekleme dizgesi kalite denetimini atlar.
ignore-c-formatC biçimi kalite denetimini atlar.
ignore-c-sharp-formatC# biçimi kalite denetimini atlar.
ignore-es-formatECMAScript kalıbı sabitleri kalite denetimini atlar.
ignore-i18next-interpolationcheck-i18next-format kalite denetimini atlar.
ignore-icu-message-formatICU MessageFormat kalite denetimini atlar.
ignore-java-formatJava MessageFormat kalite denetimini atlar.
ignore-java-printf-formatJava biçimi kalite denetimini atlar.
ignore-javascript-formatJavaScript biçimi kalite denetimini atlar.
ignore-lua-formatLua biçimi kalite denetimini atlar.
ignore-object-pascal-formatObject Pascal biçimi kalite denetimini atlar.
ignore-percent-placeholdersYüzde yer belirticileri kalite denetimini atlar.
ignore-perl-formatPerl biçimi kalite denetimini atlar.
ignore-php-formatPHP biçimi kalite denetimini atlar.
ignore-python-brace-formatPython parantez biçimi kalite denetimini atlar.
ignore-python-formatPython biçimi kalite denetimini atlar.
ignore-qt-formatQt biçimi kalite denetimini atlar.
ignore-qt-plural-formatQt çoğul biçimi kalite denetimini atlar.
ignore-ruby-formatRuby biçimi kalite denetimini atlar.
ignore-scheme-formatŞema biçimi kalite denetimini atlar.
ignore-vue-formatVue I18n biçimlendirmesi kalite denetimini atlar.
ignore-translatedÇevrilmiş kalite denetimini atlar.
ignore-inconsistentTutarsız kalite denetimini atlar.
ignore-kashidaKashida harfi kullanılmış kalite denetimini atlar.
ignore-md-linkMarkdown bağlantıları kalite denetimini atlar.
ignore-md-reflinkMarkdown başvuruları kalite denetimini atlar.
ignore-md-syntaxMarkdown söz dizimi kalite denetimini atlar.
ignore-max-lengthÇevirinin en fazla uzunluğu kalite denetimini atlar.
ignore-max-sizeÇevirinin en fazla uzunluğu kalite denetimini atlar.
ignore-escaped-newline\n aynı değil kalite denetimini atlar.
ignore-end-colonİki nokta üst üste farklı kalite denetimini atlar.
ignore-end-ellipsisÜç nokta karakteri farklı kalite denetimini atlar.
ignore-end-exclamationÜnlem işareti farklı kalite denetimini atlar.
ignore-end-stopNokta işareti farklı kalite denetimini atlar.
ignore-end-questionSoru işareti farklı kalite denetimini atlar.
ignore-end-semicolonNoktalı virgül farklı kalite denetimini atlar.
ignore-newline-countSatır sonları farklı kalite denetimini atlar.
ignore-pluralsÇoğul biçim eksik kalite denetimini atlar.
ignore-placeholdersYer belirticiler kalite denetimini atlar.
ignore-punctuation-spacingNoktalama aralığı kalite denetimini atlar.
ignore-regexKurallı ifade kalite denetimini atlar.
ignore-same-pluralsTekil ile çoğul biçim aynı kalite denetimini atlar.
ignore-begin-newlineBaşta yeni satır var kalite denetimini atlar.
ignore-begin-spaceBaştaki boşluk kalite denetimini atlar.
ignore-end-newlineSondaki yeni satır kalite denetimini atlar.
ignore-end-spaceSondaki boşluk kalite denetimini atlar.
ignore-sameÇeviri değiştirilmemiş kalite denetimini atlar.
ignore-safe-htmlGüvenli olmayan HTML kalite denetimini atlar.
ignore-urlAdres kalite denetimini atlar.
ignore-xml-tagsXML kodlaması kalite denetimini atlar.
ignore-xml-invalidXML söz dizimi kalite denetimini atlar.
ignore-zero-width-spaceSıfır genişlikli boşluk kalite denetimini atlar.
ignore-ellipsisÜç nokta kalite denetimini atlar.
ignore-icu-message-format-syntaxICU MessageFormat söz dizimi kalite denetimini atlar.
ignore-long-untranslatedUzun süredir çevrilmemiş kalite denetimini atlar.
ignore-multiple-failuresBirden çok denetim hatası kalite denetimini atlar.
ignore-unnamed-formatBirden çok değişken adlandırılmamış kalite denetimini atlar.
ignore-optional-pluralÇoğul değil kalite denetimini atlar.
Not
Kural genellikle, belirteci kullanılarak herhangi bir denetim için ìgnore-*` olarak adlandırılır. Böylece bunu kendi özel denetimleriniz için bile kullanabilirsiniz.
Bu imler hem Bileşen yapılandırması ayarlarında, her kaynak dizge ayarı için hem de çeviri dosyasının kendisinde (GNU gettext gibi) anlaşılır.
Denetimleri dayatmak#
3.11 sürümünde geldi.
Bileşen yapılandırması içinde Zorunlu denetimler ayarını yaparak yok sayılmayacak denetimlerin listesini yapılandırabilirsiniz. Listelenen denetimler kullanıcı arayüzünden kapatılamaz ve bu denetimde hatalı bulunan dizgeler Düzenlenmesi gerekli olarak imlenir (bilgi almak için: :ref:`states’).
Not
Denetim dayatması kendiliğinden etkinleştirilmez. Denetim, dizge ya da bileşen imlerine karşılık gelen im eklenerek açılabilir.
Ayrıca bakınız
Yazı tiplerini yönetmek#
3.7 sürümünde geldi.
İpucu
Weblate üzerine yüklenen yazı tipleri yalnızca Çevirinin en fazla uzunluğu denetimi için kullanılır. Weblate kullanıcı arayüzünde bir etkisi yoktur.
İşlenen metnin boyutlarını hesaplamak için kullanılan Çevirinin en fazla uzunluğu denetiminin yazı tipinin Weblate üzerine yüklenmesi ve bir çeviri imi kullanılarak seçilmesi gerekir (bilgi almak için: Parametreleri kullanarak davranışı özelleştirmek).
Çeviri projenizin Yönetim menüsü altındaki Yazı tipleri içindeki Weblate yazı tipi yönetimi aracı, yazı tiplerinin yüklenip yönetilebileceği bir arayüz sağlar. TrueType veya OpenType yazı tipleri yüklenebilir, yazı tipi grupları ayarlanabilir ve bunlar denetimde kullanılabilir.
Yazı tipi grupları, genellikle Latince olmayan farklı diller için gerekli olan farklı yazı tiplerini tanımlanmanızı sağlar:
Yazı tipi grupları, boşluk veya özel karakterler içeremeyen bir ad ile tanımlanır. Böylece denetim tanımında kolayca kullanılabilir:
Yazı tipi ailesi ve biçemi, yüklendikten sonra kendiliğinden tanınır:
Weblate üzerine çeşitli yazı tipleri yükleyebilirsiniz:
Dizge uzunluğunu denetleme üzere yazı tiplerini kullanmak için, uygun imleri aktarın (bilgi almak için: Parametreleri kullanarak davranışı özelleştirmek). Büyük olasılıkla şunlara gerek duyacaksınız:
max-size:500En fazla genişliği piksel olarak belirler.
font-family:ubuntuBelirteci ile kullanılacak yazı tipi grubunu tanımlar.
font-size:22Yazı boyutunu piksel olarak tanımlar.
Kendi denetimlerinizi oluşturmak#
Çok çeşitli kalite denetimleri hazır olarak bulunur (bilgi almak için: Kalite denetimleri). Ancak denetlemek istediğiniz her şey kapsanmamış olabilir. Yapılabilecek denetimlerin listesi CHECK_LIST kullanılarak ayarlanabilir. Ayrıca kendi özel denetimlerinizi de ekleyebilirsiniz.
weblate.checks.Check alt sınıfı
Birkaç öznitelik ayarlayın.
check(kodunuzdaki çoğulları işlemek istiyorsanız) ya dacheck_singleyöntemini uygulayın (sizin için hangisi işe yarıyorsa).
Bazı örnekler:
Özel denetimler kurmak için, CHECK_LIST içinde Python sınıfının tam yolunu belirtin. Bilgi almak için: :ref:`custom-check-modules’.
“foo” içermeyen çeviri metinlerini denetlemek#
Çeviride “foo” dizgesinin eksik olup olmadığına bakan basit bir denetim.
# Copyright © Michal Čihař <michal@weblate.org>
#
# SPDX-License-Identifier: GPL-3.0-or-later
"""Simple quality check example."""
from django.utils.translation import gettext_lazy as _
from weblate.checks.base import TargetCheck
class FooCheck(TargetCheck):
# Used as identifier for check, should be unique
# Has to be shorter than 50 characters
check_id = "foo"
# Short name used to display failing check
name = _("Foo check")
# Description for failing check
description = _("Your translation is foo")
# Real check code
def check_single(self, source, target, unit):
return "foo" in target
Çekçe çeviri metinlerinde çoğulların farklı olup olmadığı denetlemek#
Çekçe iki çoğul biçimin aynı olmadığını doğrulamak için dil bilgilerini kullanan denetim.
# Copyright © Michal Čihař <michal@weblate.org>
#
# SPDX-License-Identifier: GPL-3.0-or-later
"""Quality check example for Czech plurals."""
from django.utils.translation import gettext_lazy as _
from weblate.checks.base import TargetCheck
class PluralCzechCheck(TargetCheck):
# Used as identifier for check, should be unique
# Has to be shorter than 50 characters
check_id = "foo"
# Short name used to display failing check
name = _("Foo check")
# Description for failing check
description = _("Your translation is foo")
# Real check code
def check_target_unit(self, sources, targets, unit):
if self.is_language(unit, ("cs",)):
return targets[1] == targets[2]
return False
def check_single(self, source, target, unit):
"""We don't check target strings here."""
return False