Pemeriksaan dan perbaikan¶
Perbaikan otomatis kustom¶
Anda juga dapat menerapkan perbaikan otomatis Anda sendiri selain yang standar dan memasukkannya dalam AUTOFIX_LIST.
Perbaikan otomatis memang ampuh, tetapi juga dapat menyebabkan kerusakan; berhati-hatilah saat menuliskannya.
Misalnya, perbaikan otomatis berikut akan mengganti setiap kemunculan string foo dalam terjemahan dengan bar:
from weblate.trans.autofixes.base import AutoFix
class ReplaceFooWithBar(AutoFix):
"""Replace foo with bar."""
# Might be localized using gettext_lazy
name = "Foobar"
def fix_single_target(self, target, source, unit):
if "foo" in target:
return target.replace("foo", "bar"), True
return target, False
Untuk memasang pemeriksaan kustom, berikan jalur yang sepenuhnya memenuhi syarat ke kelas Python di AUTOFIX_LIST, lihat Pemeriksaan kualitas khusus, pengaya, saran otomatis, dan perbaikan otomatis.
Menyesuaikan perilaku menggunakan penanda¶
Anda dapat menyempurnakan perilaku Weblate dengan menggunakan penanda. Penanda ini memberikan umpan balik visual kepada penerjemah dan membantu mereka meningkatkan terjemahan. Penanda ini digabungkan dari sumber berikut:
Penanda tambahan string sumber:
Info tambahan tentang string sumber menjelaskan penyuntingan manual.
Sunting massal dapat digunakan untuk menerapkan tanda secara penjumlahan.
Pengaya Sunting massal dapat menerapkan penanda secara otomatis.
Penanda per-string yang diekstrak dari format berkas, lihat Format berkas lokalisasi.
Translation flags (currently only
read-onlyflag for bilingual source string or when monolingual template editing is turned off).Penanda spesifik format berkas.
Penanda dipisahkan dengan koma; jika memiliki parameter, dipisahkan dengan titik dua. Anda dapat menggunakan tanda kutip untuk menambahkan spasi atau karakter spesial dalam string. Misalnya:
placeholders:"special:value":"other value", regex:.*
Kutipan tunggal dan ganda diterima, karakter khusus di-escape menggunakan garis miring terbalik:
placeholders:"quoted \"string\"":'single \'quoted\''
placeholders:r"^#*"
Untuk memverifikasikan bahwa penerjemah tidak mengubah judul dokumen Markdown. Pemeriksaan gagal akan dipicu jika string ### Index diterjemahkan sebagai # Indice.
placeholders:r"\]\([^h].*?\)"
Untuk memastikan bahwa tautan internal tidak diterjemahkan (yaitu [test](../checks) tidak menjadi [test](../chequeos).
Penanda yang didefinisikan pada tingkat yang lebih tinggi dapat diabaikan menggunakan sintaksis discard:NAME. Misalnya, jika suatu komponen dikonfigurasi sebagai safe-html, Anda dapat menambahkan discard:safe-html ke penanda string untuk melewatinya pada string khusus ini.
Berikut adalah daftar penadan yang saat ini diterima:
read-onlyString tersebut hanya baca dan tidak boleh disunting di Weblate, lihat String hanya baca.
terminologyDigunakan dalam Glosarium. Menyalin string ke semua bahasa glosarium agar dapat digunakan secara konsisten dalam semua terjemahan. Juga berguna jika dikombinasikan dengan
read-only, misalnya dalam nama produk.priority:NPrioritas string. String dengan prioritas lebih tinggi ditampilkan terlebih dahulu untuk terjemahan. Prioritas bawaan adalah 100. Semakin tinggi prioritas suatu string, semakin cepat string tersebut ditawarkan untuk terjemahan.
max-length:NBatasi panjang maksimal string menjadi N karakter, lihat Panjang maksimum terjemahan.
xml-textPerlakukan teks sebagai dokumen XML, memengaruhi Sintaksis XML dan Markah XML.
font-family:NAMETentukan jenis huruf untuk pemeriksaan rendering, lihat Mengelola huruf.
font-weight:WEIGHTTentukan bobot huruf untuk pemeriksaan rendering, lihat Mengelola huruf.
font-size:SIZETentukan ukuran huruf untuk pemeriksaan rendering, lihat Mengelola huruf.
font-spacing:SPACINGTentukan spasi huruf untuk pemeriksaan rendering, lihat Mengelola huruf.
icu-flags:FLAGSTentukan penanda untuk menyesuaikan perilaku pemeriksaan kualitas ICU MessageFormat.
icu-tag-prefix:PREFIXAtur prefiks yang diperlukan untuk tag XML untuk pemeriksaan kualitas ICU MessageFormat.
placeholders:NAME:NAME2:...String pengganti diharapkan dalam terjemahan, lihat Pengganti.
replacements:FROM:TO:FROM2:TO2...Penggantian yang dilakukan saat memeriksa parameter teks yang dihasilkan (misalnya dalam Ukuran maksimum terjemahan atau Panjang maksimum terjemahan). Kasus penggunaan umum untuk ini adalah untuk memperluaskan penempatan guna memastikan teks tetap pas meskipun memiliki nilai yang panjang, misalnya:
replacements:%s:"John Doe".variants:SOURCETandai string ini sebagai varian string dengan sumber yang cocok. Lihat Varian string.
regex:REGEXEkspresi reguler untuk mencocokkan terjemahan, lihat Ekspresi reguler.
discard:NAMEMembuang penanda yang didefinisikan pada tingkat yang lebih tinggi.
forbiddenMenunjukkan terjemahan terlarang dalam glosarium, lihat Terjemahan terlarang.
strict-sameBuat Terjemahan tidak berubah menghindari penggunaan pengecualian kata bawaan.
strict-formatBuat pemeriksaan format diberlakukan menggunakan format bahkan untuk bentuk jamak dengan nilai tunggal, lihat String yang diformat.
case-insensitiveSesuaikan perilaku pemeriksaan agar tidak peka huruf kapital. Saat ini hanya memengaruhi pemeriksaan kualitas Pengganti.
bbcode-textPerlakukan teks sebagai dokumen Bulletin Board Code (BBCode), memengaruhi Terjemahan tidak berubah. Mengaktifkan pemeriksaan kualitas Markah BBCode.
check-glossaryMengaktifkan pemeriksaan kualitas Tidak mengikuti glosarium.
fluent-partsMengaktifkan pemeriksaan kualitas Bagian Fluent.
fluent-referencesMengaktifkan pemeriksaan kualitas Referensi Fluent.
fluent-target-inner-htmlMengaktifkan pemeriksaan kualitas HTML dalam terjemahan Fluent.
fluent-target-syntaxMengaktifkan pemeriksaan kualitas Sintaksis sumber Fluent.
angularjs-formatMengaktifkan pemeriksaan kualitas String interpolasi AngularJS.
automattic-components-formatMengaktifkan pemeriksaan kualitas Pemformatan komponen Automattic.
c-formatMengaktifkan pemeriksaan kualitas Format C.
c-sharp-formatMengaktifkan pemeriksaan kualitas Format C#.
csharp-formatMengaktifkan pemeriksaan kualitas Format C#.
es-formatMengaktifkan pemeriksaan kualitas Literal templat ECMAScript.
i18next-interpolationMengaktifkan pemeriksaan kualitas Interpolasi i18next.
icu-message-formatMengaktifkan pemeriksaan kualitas ICU MessageFormat dan Sintaksis ICU MessageFormat.
java-printf-formatMengaktifkan pemeriksaan kualitas Format Java.
java-formatMengaktifkan pemeriksaan kualitas Java MessageFormat.
auto-java-messageformatTreat a text as conditional Java MessageFormat, enabling Java MessageFormat only when the source contains Java MessageFormat placeholders. Enables the Java MessageFormat quality check.
javascript-formatMengaktifkan pemeriksaan kualitas Format JavaScript.
laravel-formatMengaktifkan pemeriksaan kualitas Format Laravel.
lua-formatMengaktifkan pemeriksaan kualitas Format Lua.
object-pascal-formatMengaktifkan pemeriksaan kualitas Format Object Pascal.
objc-formatEnables the Format Objective-C quality check.
percent-placeholdersMengaktifkan pemeriksaan kualitas Pengganti persen.
perl-brace-formatMengaktifkan pemeriksaan kualitas Format kurung kurawal Perl.
perl-formatMengaktifkan pemeriksaan kualitas Format Perl.
php-formatMengaktifkan pemeriksaan kualitas Format PHP.
python-brace-formatMengaktifkan pemeriksaan kualitas Format kurung kurawal Python.
python-formatMengaktifkan pemeriksaan kualitas Format Python.
qt-formatMengaktifkan pemeriksaan kualitas Format Qt.
qt-plural-formatMengaktifkan pemeriksaan kualitas Format jamak Qt.
ruby-formatMengaktifkan pemeriksaan kualitas Format Ruby.
scheme-formatMengaktifkan pemeriksaan kualitas Format Scheme.
vue-formatMengaktifkan pemeriksaan kualitas Pemformatan Vue I18n.
rst-textPerlakukan teks sebagai dokumen reStructuredText, mempengaruhi Terjemahan tidak berubah. Mengaktifkan pemeriksaan kualitas reStructuredText tidak konsisten dan Galat sintaksis reStructuredText.
md-textPerlakukan teks sebagai dokumen Markdown, and berikan penyorotan sintaksis Markdown pada area teks terjemahan. Mengaktifkan pemeriksaan kualitas Tautan markdown, Referensi Markdown dan Sintaksis Markdown.
max-lengthMengaktifkan pemeriksaan kualitas Panjang maksimum terjemahan.
max-sizeMengaktifkan pemeriksaan kualitas Ukuran maksimum terjemahan.
placeholdersMengaktifkan pemeriksaan kualitas Pengganti.
regexMengaktifkan pemeriksaan kualitas Ekspresi reguler.
safe-htmlMengaktifkan pemeriksaan kualitas HTML Tidak Aman.
auto-safe-htmlTreat a text as conditional HTML, enabling HTML Tidak Aman only for plain text or source strings that contain standard HTML markup or valid custom elements. This is useful for extended Markdown variants such as MDX, where angle-bracket syntax may not be HTML. Enables the HTML Tidak Aman quality check.
urlString harus hanya berisi URL. Mengaktifkan pemeriksaan kualitas URL.
fluent-source-inner-htmlMengaktifkan pemeriksaan kualitas HTML dalam sumber Fluent.
fluent-source-syntaxMengaktifkan pemeriksaan kualitas Sintaksis sumber Fluent.
ignore-all-checksAbaikan semua pemeriksaan kualitas.
ignore-bbcodeLewati pemeriksaan kualitas Markah BBCode.
ignore-xml-chars-around-tagsLewati pemeriksaan kualitas Karakter di sekitar tag XML.
ignore-duplicateLewati pemeriksaan kualitas Kata ganda yang berulang.
ignore-check-glossaryLewati pemeriksaan kualitas Tidak mengikuti glosarium.
ignore-double-spaceLewati pemeriksaan kualitas Spasi ganda.
ignore-fluent-partsLewati pemeriksaan kualitas Bagian Fluent.
ignore-fluent-referencesLewati pemeriksaan kualitas Referensi Fluent.
ignore-fluent-target-inner-htmlLewati pemeriksaan kualitas HTML dalam terjemahan Fluent.
ignore-fluent-target-syntaxLewati pemeriksaan kualitas Sintaksis sumber Fluent.
ignore-angularjs-formatLewati pemeriksaan kualitas String interpolasi AngularJS.
ignore-automattic-components-formatLewati pemeriksaan kualitas Pemformatan komponen Automattic.
ignore-c-formatLewati pemeriksaan kualitas Format C.
ignore-c-sharp-formatLewati pemeriksaan kualitas Format C#.
ignore-es-formatLewati pemeriksaan kualitas Literal templat ECMAScript.
ignore-i18next-interpolationLewati pemeriksaan kualitas Interpolasi i18next.
ignore-icu-message-formatLewati pemeriksaan kualitas ICU MessageFormat.
ignore-java-printf-formatLewati pemeriksaan kualitas Format Java.
ignore-java-formatLewati pemeriksaan kualitas Java MessageFormat.
ignore-javascript-formatLewati pemeriksaan kualitas Format JavaScript.
ignore-laravel-formatLewati pemeriksaan kualitas Format Laravel.
ignore-lua-formatLewati pemeriksaan kualitas Format Lua.
ignore-object-pascal-formatLewati pemeriksaan kualitas Format Object Pascal.
ignore-objc-formatSkip the Format Objective-C quality check.
ignore-percent-placeholdersLewati pemeriksaan kualitas Pengganti persen.
ignore-perl-brace-formatLewati pemeriksaan kualitas Format kurung kurawal Perl.
ignore-perl-formatLewati pemeriksaan kualitas Format Perl.
ignore-php-formatLewati pemeriksaan kualitas Format PHP.
ignore-python-brace-formatLewati pemeriksaan kualitas Format kurung kurawal Python.
ignore-python-formatLewati pemeriksaan kualitas Format Python.
ignore-qt-formatLewati pemeriksaan kualitas Format Qt.
ignore-qt-plural-formatLewati pemeriksaan kualitas Format jamak Qt.
ignore-ruby-formatLewati pemeriksaan kualitas Format Ruby.
ignore-scheme-formatLewati pemeriksaan kualitas Format Scheme.
ignore-vue-formatLewati pemeriksaan kualitas Pemformatan Vue I18n.
ignore-translatedLewati pemeriksaan kualitas Telah diterjemahkan.
ignore-inconsistentLewati pemeriksaan kualitas Tidak konsisten.
ignore-rst-referencesLewati pemeriksaan kualitas reStructuredText tidak konsisten.
ignore-kashidaLewati pemeriksaan kualitas Huruf kashida digunakan.
ignore-md-linkLewati pemeriksaan kualitas Tautan markdown.
ignore-md-reflinkLewati pemeriksaan kualitas Referensi Markdown.
ignore-md-syntaxLewati pemeriksaan kualitas Sintaksis Markdown.
ignore-max-lengthLewati pemeriksaan kualitas Panjang maksimum terjemahan.
ignore-max-sizeLewati pemeriksaan kualitas Ukuran maksimum terjemahan.
ignore-escaped-newlineLewati pemeriksaan kualitas \n tidak cocok.
ignore-end-colonLewati pemeriksaan kualitas Tanda titik dua tidak cocok.
ignore-end-ellipsisLewati pemeriksaan kualitas Tanda elipsis tidak cocok.
ignore-end-exclamationLewati pemeriksaan kualitas Tanda seru tidak cocok.
ignore-end-stopLewati pemeriksaan kualitas Tanda titik tidak cocok.
ignore-end-interrobangLewati pemeriksaan kualitas Tanda interrobang tidak cocok.
ignore-end-questionLewati pemeriksaan kualitas Tanda tanya tidak cocok.
ignore-end-semicolonLewati pemeriksaan kualitas Tanda titik koma tidak cocok.
ignore-newline-countLewati pemeriksaan kualitas Jeda baris tidak cocok.
ignore-pluralsLewati pemeriksaan kualitas Jamak hilang.
ignore-multiple-capitalLewati pemeriksaan kualitas Beberapa kapital.
ignore-kabyle-charactersLewati pemeriksaan kualitas Karakter non-standar dalam Kabyle.
ignore-placeholdersLewati pemeriksaan kualitas Pengganti.
ignore-prohibited-initial-characterLewati pemeriksaan kualitas Karakter awal terlarang.
ignore-punctuation-spacingLewati pemeriksaan kualitas Spasi tanda baca.
ignore-regexLewati pemeriksaan kualitas Ekspresi reguler.
ignore-rst-syntaxLewati pemeriksaan kualitas Galat sintaksis reStructuredText.
ignore-reusedLewati pemeriksaan kualitas Terjemahan yang digunakan ulang.
ignore-same-pluralsLewati pemeriksaan kualitas Jamak yang sama.
ignore-begin-newlineLewati pemeriksaan kualitas Mulai baris baru.
ignore-begin-spaceLewati pemeriksaan kualitas Spasi di awal.
ignore-end-newlineLewati pemeriksaan kualitas Baris baru di belakang.
ignore-end-spaceLewati pemeriksaan kualitas Spasi di belakang.
ignore-sameLewati pemeriksaan kualitas Terjemahan tidak berubah.
ignore-safe-htmlLewati pemeriksaan kualitas HTML Tidak Aman.
ignore-urlLewati pemeriksaan kualitas URL.
ignore-xml-tagsLewati pemeriksaan kualitas Markah XML.
ignore-xml-invalidLewati pemeriksaan kualitas Sintaksis XML.
ignore-zero-width-spaceLewati pemeriksaan kualitas Spasi lebar nol.
ignore-ellipsisLewati pemeriksaan kualitas Elipsis.
ignore-fluent-source-inner-htmlLewati pemeriksaan kualitas HTML dalam sumber Fluent.
ignore-fluent-source-syntaxLewati pemeriksaan kualitas Sintaksis sumber Fluent.
ignore-icu-message-formatLewati pemeriksaan kualitas Sintaksis ICU MessageFormat.
ignore-long-untranslatedLewati pemeriksaan kualitas Lama belum diterjemahkan.
ignore-multiple-failuresLewati pemeriksaan kualitas Beberapa pemeriksaan gagal.
ignore-unnamed-formatLewati pemeriksaan kualitas Beberapa variabel tanpa nama.
ignore-optional-pluralLewati pemeriksaan kualitas Tidak dijamak.
Catatan
Secara umum aturan ini diberi nama ignore-* untuk pemeriksaan apa pun, menggunakan pengenalnya, sehingga Anda dapat menggunakan ini bahkan untuk pemeriksaan kustom Anda.
Penanda ini dipahami baik dalam pengaturan Konfigurasi komponen, per pengaturan string sumber dan dalam berkas terjemahan itu sendiri (misalnya dalam GNU gettext).
Penandaberbasis lokasi¶
Beberapa penanda ditambahkan ke string secara bawaan, berdasarkan lokasinya. Ini berarti pemeriksaan tertentu akan diaktifkan secara otomatis tergantung di mana string tersebut digunakan.
rst-text: Penanda ini secara otomatis ditambahkan ke string dalam berkas reStructuredText, jika ekstensi lokasi adalah.rst.md-text: This flag is automatically added to strings in Markdown and MDX files, if location extension is.md,.markdown, or.mdx.
Memaksakan pemeriksaan¶
Pemeriksaan yang diberlakukan tidak dapat diabaikan dan menandai string sebagai Perlu disunting (lihat Status terjemahan). Hal ini mencegah penerjemah menyembunyikan pemeriksaan tersebut.
Petunjuk
Mengaktifkan pemaksaan pemeriksaan tidak otomatis mengaktifkannya. Beberapa pemeriksaan harus diaktifkan dengan menambahkan penanda yang sesuai ke string atau penanda komponen.
Ini paling baik digunakan dengan pemeriksaan yang dapat menyebabkan isu serius jika digunakan seperti pemeriksaan untuk String yang diformat. Penggunaan pemeriksaan gaya seperti Terjemahan tidak berubah tidak disarankan karena terkadang pembubaran merupakan pendekatan yang wajar dalam hal ini.
Filter kualitas terjemahan kemudian dapat digunakan untuk mengecualikan string yang memerlukan penyuntingan agar tidak dikomit ke kontrol versi.
Mengelola huruf¶
Petunjuk
Huruf yang diunggah ke Weblate digunakan murni untuk tujuan pemeriksaan Ukuran maksimum terjemahan, font tersebut tidak memiliki efek pada antarmuka pengguna Weblate.
Pemeriksaan Ukuran maksimum terjemahan yang digunakan untuk menghitung dimensi teks yang ditampilkan memerlukan huruf yang dimuat ke Weblate dan dipilih menggunakan penanda terjemahan (lihat Menyesuaikan perilaku menggunakan penanda).
Alat pengelolaan huruf Weblate di Huruf pada menu Operasi proyek terjemahan Anda menyediakan antarmuka untuk mengunggah dan mengelola huruf. Huruf TrueType atau OpenType dapat diunggah, grup huruf dapat diatur, dan huruf tersebut dapat digunakan dalam pemeriksaan.
Grup huruf memungkinkan Anda menentukan huruf yang berbeda untuk bahasa yang berbeda, yang biasanya diperlukan untuk bahasa non-latin:
Grup huruf diidentifikasikan berdasarkan nama, yang tidak boleh berisi spasi atau karakter khusus, sehingga dapat dengan mudah digunakan dalam definisi pemeriksaan:
Font-family and style are automatically recognized after uploading them:
Anda dapat memuat sejumlah huruf ke Weblate:
Untuk menggunakan huruf guna memeriksa panjang string, berikan tanda yang sesuai (lihat Menyesuaikan perilaku menggunakan penanda). Anda mungkin memerlukan tanda berikut:
max-size:500/max-size:300:5Mendefinisikan lebar maksimal dalam piksel dan, secara opsional, jumlah baris maksimum (pembungkusan kata diterapkan).
font-family:ubuntuMendefinisikan grup huruf yang akan digunakan dengan menspesifikasikan pengenalnya.
font-size:22Mendefinisikan ukuran huruf dalam piksel.
Menulis pemeriksaan sendiri¶
Berbagai macam pemeriksaan kualitas sudah tersedia (lihat Pemeriksaan kualitas), meskipun mungkin tidak mencakup semua yang ingin Anda periksa. Daftar pemeriksaan yang dilakukan dapat disesuaikan menggunakan CHECK_LIST, dan Anda juga dapat menambahkan pemeriksaan kustom.
Subkelas weblate.checks.Check
Atur beberapa atribut.
Implementasikan
check(jika Anda ingin menangani jamak dalam kode Anda) atau metodecheck_single(yang melakukannya untuk Anda).
Beberapa contoh:
Untuk memasang pemeriksaan khusus, berikan jalur yang sepenuhnya memenuhi syarat ke kelas Python di CHECK_LIST, lihat Pemeriksaan kualitas khusus, pengaya, saran otomatis, dan perbaikan otomatis.
Memeriksa teks terjemahan tidak berisi "foo"¶
Ini adalah pemeriksaan yang cukup sederhana yang hanya memeriksa apakah terjemahan kehilangan string "foo".
"""Simple quality check example."""
from django.utils.translation import gettext_lazy
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
# Might be localized using gettext_lazy
name = "Foo check"
# Description for failing check
description = gettext_lazy("Your translation is foo")
# Real check code
def check_single(self, source, target, unit):
return "foo" in target
Memeriksa bahwa teks terjemahan Ceko memiliki jamak yang berbeda¶
Periksa menggunakan info bahasa untuk memverifikasikan dua bentuk jamak dalam Ceko tidak sama.
"""Quality check example for Czech plurals."""
from django.utils.translation import gettext_lazy
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
# Might be localized using gettext_lazy
name = "Foo check"
# Description for failing check
description = gettext_lazy("Your translation is foo")
# Real check code
def check_target_unit(self, sources, targets, unit):
if unit.translation.language.is_base({"cs"}):
return targets[1] == targets[2]
return False
def check_single(self, source, target, unit) -> bool:
"""We don't check target strings here."""
return False