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: Additional info on source strings) ya da Bileşen yapılandırması (Çeviri işaretleri) 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 parametrelerin listesi şu şekildedir:
rst-text
Bir metnin reStructuredText belgesi olarak işlenmesini sağlar. Çeviri değiştirilmemiş parametresini etkiler.
dos-eol
Unix satır sonu karakterleri yerine DOS karakterlerinin kullanılmasını sağlar (
\n
yerine\r\n
).read-only
Dizgenin salt okunur olduğunu ve Weblate üzerinde düzenlenemeyeceğini belirler. Bilgi almak için: Salt okunur dizgeler.
priority:N
Dizgenin ö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:N
Bir dizgenin en fazla uzunluğunu N karakter olarak sınırlandırır. Bilgi almak için: :ref:`check-max-length.
xml-text
Metnin XML belgesi olarak işlenmesini sağlar. XML söz dizimi ve XML kodlaması parametrelerini etkiler.
font-family:NAME
Görselleştirme denetimleri için yazı tipi ailesini belirler. Bilgi almak için: Yazı tiplerini yönetmek.
font-weight:WEIGHT
Görselleştirme denetimleri için yazı koyuluğunu belirler. Bilgi almak için: Yazı tiplerini yönetmek.
font-size:SIZE
Görselleştirme denetimleri için yazı boyutunu belirler. Bilgi almak için: Yazı tiplerini yönetmek.
font-spacing:SPACING
Görselleştirme denetimleri için harf aralığını belirler. Bilgi almak için: :ref:`fonts’.
icu-flags:FLAGS
ICU MessageFormat kalite denetiminin davranışını özelleştirecek parametreleri belirler.
icu-tag-prefix:PREFIX
check-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 (Çeviri 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:SOURCE
Bu 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.
forbidden
Bir 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-glossary
Sözlük ile uyumlu değil kalite denetimini etkinleştirir.
angularjs-format
AngularJS değer ekleme dizgesi kalite denetimini etkinleştirir.
c-format
C biçimi kalite denetimini etkinleştirir.
c-sharp-format
C# biçimi kalite denetimini etkinleştirir.
es-format
ECMAScript kalıbı sabitleri kalite denetimini etkinleştirir.
i18next-interpolation
i18next değer eklemesi kalite denetimini etkinleştirir.
icu-message-format
ICU MessageFormat kalite denetimini etkinleştirir.
java-printf-format
Java biçimi kalite denetimini etkinleştirir.
java-format
Java MessageFormat kalite denetimini etkinleştirir.
javascript-format
JavaScript biçimi kalite denetimini etkinleştirir.
lua-format
Lua biçimi kalite denetimini etkinleştirir.
object-pascal-format
Object Pascal biçimi kalite denetimini etkinleştirir.
percent-placeholders
Yüzde yer belirticileri kalite denetimini etkinleştirir.
perl-format
Perl biçimi kalite denetimini etkinleştirir.
php-format
PHP biçimi kalite denetimini etkinleştirir.
python-brace-format
Python parantez biçimi kalite denetimini etkinleştirir.
python-format
Python biçimi kalite denetimini etkinleştirir.
qt-format
Qt biçimi kalite denetimini etkinleştirir.
qt-plural-format
Qt çoğul biçimi kalite denetimini etkinleştirir.
ruby-format
Ruby biçimi kalite denetimini etkinleştirir.
scheme-format
Şema biçimi kalite denetimini etkinleştirir.
vue-format
Vue I18n biçimlendirmesi kalite denetimini etkinleştirir.
md-text
Metnin Markdown belgesi olarak işlenmesini sağlar. Markdown bağlantıları, Markdown başvuruları ve Markdown söz dizimi kalite denetimlerini etkinleştirin.
case-insensitive
Denetim davranışını büyük/küçük harfe duyarlı olmayacak şekilde ayarlar. Şu anda yalnızca Yer belirticiler kalite denetimini etkiler.
safe-html
Güvenli olmayan HTML kalite denetimini etkinleştirir.
url
Dizge yalnızca bir adresten oluşmalıdır. Adres kalite denetimini etkinleştirin.
ignore-all-checks
Tüm kalite denetimlerini yok sayar.
ignore-bbcode
BBCode kodlaması kalite denetimini atlar.
ignore-duplicate
Art arda yinelenen sözcükler kalite denetimini atlar.
ignore-check-glossary
Sözlük ile uyumlu değil kalite denetimini atlar.
ignore-double-space
Çift boşluk kalite denetimini atlar.
ignore-angularjs-format
AngularJS değer ekleme dizgesi kalite denetimini atlar.
ignore-c-format
C biçimi kalite denetimini atlar.
ignore-c-sharp-format
C# biçimi kalite denetimini atlar.
ignore-es-format
ECMAScript kalıbı sabitleri kalite denetimini atlar.
ignore-i18next-interpolation
check-i18next-format kalite denetimini atlar.
ignore-icu-message-format
ICU MessageFormat kalite denetimini atlar.
ignore-java-format
Java MessageFormat kalite denetimini atlar.
ignore-java-printf-format
Java biçimi kalite denetimini atlar.
ignore-javascript-format
JavaScript biçimi kalite denetimini atlar.
ignore-lua-format
Lua biçimi kalite denetimini atlar.
ignore-object-pascal-format
Object Pascal biçimi kalite denetimini atlar.
ignore-percent-placeholders
Yüzde yer belirticileri kalite denetimini atlar.
ignore-perl-format
Perl biçimi kalite denetimini atlar.
ignore-php-format
PHP biçimi kalite denetimini atlar.
ignore-python-brace-format
Python parantez biçimi kalite denetimini atlar.
ignore-python-format
Python biçimi kalite denetimini atlar.
ignore-qt-format
Qt biçimi kalite denetimini atlar.
ignore-qt-plural-format
Qt çoğul biçimi kalite denetimini atlar.
ignore-ruby-format
Ruby biçimi kalite denetimini atlar.
ignore-scheme-format
Şema biçimi kalite denetimini atlar.
ignore-vue-format
Vue I18n biçimlendirmesi kalite denetimini atlar.
ignore-translated
Çevrilmiş kalite denetimini atlar.
ignore-inconsistent
Tutarsız kalite denetimini atlar.
ignore-kashida
Kashida harfi kullanılmış kalite denetimini atlar.
ignore-md-link
Markdown bağlantıları kalite denetimini atlar.
ignore-md-reflink
Markdown başvuruları kalite denetimini atlar.
ignore-md-syntax
Markdown söz dizimi kalite denetimini atlar.
ignore-max-length
Çevirinin en fazla uzunluğu kalite denetimini atlar.
ignore-max-size
Çeviri 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 farklı kalite denetimini atlar.
ignore-end-exclamation
Ünlem işareti farklı kalite denetimini atlar.
ignore-end-stop
Nokta işareti farklı kalite denetimini atlar.
ignore-end-question
Soru işareti farklı kalite denetimini atlar.
ignore-end-semicolon
Noktalı virgül farklı kalite denetimini atlar.
ignore-newline-count
Satır sonları farklı kalite denetimini atlar.
ignore-plurals
Çoğul biçim eksik kalite denetimini atlar.
ignore-placeholders
Yer belirticiler kalite denetimini atlar.
ignore-punctuation-spacing
Noktalama aralığı kalite denetimini atlar.
ignore-regex
Kurallı ifade kalite denetimini atlar.
ignore-same-plurals
Tekil ile çoğul biçim aynı kalite denetimini atlar.
ignore-begin-newline
Başta yeni satır var kalite denetimini atlar.
ignore-begin-space
Baştaki boşluk kalite denetimini atlar.
ignore-end-newline
Sonda yeni satır var kalite denetimini atlar.
ignore-end-space
Sondaki boşluk kalite denetimini atlar.
ignore-same
Çeviri değiştirilmemiş kalite denetimini atlar.
ignore-safe-html
Güvenli olmayan HTML kalite denetimini atlar.
ignore-url
Adres kalite denetimini atlar.
ignore-xml-tags
XML kodlaması kalite denetimini atlar.
ignore-xml-invalid
XML söz dizimi kalite denetimini atlar.
ignore-zero-width-space
Sıfır genişlikli boşluk kalite denetimini atlar.
ignore-ellipsis
Üç nokta kalite denetimini atlar.
ignore-icu-message-format-syntax
ICU MessageFormat söz dizimi kalite denetimini atlar.
ignore-long-untranslated
Uzun süredir çevrilmemiş kalite denetimini atlar.
ignore-multiple-failures
Birden çok denetim hatası kalite denetimini atlar.
ignore-unnamed-format
Birden ç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 işaretlenir (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 Çeviri 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 Çeviri 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:500
En fazla genişliği piksel olarak belirler.
font-family:ubuntu
Belirteci ile kullanılacak yazı tipi grubunu tanımlar.
font-size:22
Yazı boyutunu piksel olarak tanımlar.
Kendi denetimlerinizi oluşturmak
Çok çeşitli kalite denetimleri hazır olarak bulunur (bilgi almak için: Quality checks). 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_single
yö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