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 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-only

String tersebut hanya baca dan tidak boleh disunting di Weblate, lihat String hanya baca.

terminology

Digunakan 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:N

Prioritas 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:N

Batasi panjang maksimal string menjadi N karakter, lihat Panjang maksimum terjemahan.

xml-text

Perlakukan teks sebagai dokumen XML, memengaruhi Sintaksis XML dan Markah XML.

font-family:NAME

Tentukan jenis huruf untuk pemeriksaan rendering, lihat Mengelola huruf.

font-weight:WEIGHT

Tentukan bobot huruf untuk pemeriksaan rendering, lihat Mengelola huruf.

font-size:SIZE

Tentukan ukuran huruf untuk pemeriksaan rendering, lihat Mengelola huruf.

font-spacing:SPACING

Tentukan spasi huruf untuk pemeriksaan rendering, lihat Mengelola huruf.

icu-flags:FLAGS

Tentukan penanda untuk menyesuaikan perilaku pemeriksaan kualitas ICU MessageFormat.

icu-tag-prefix:PREFIX

Atur 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:SOURCE

Tandai string ini sebagai varian string dengan sumber yang cocok. Lihat Varian string.

regex:REGEX

Ekspresi reguler untuk mencocokkan terjemahan, lihat Ekspresi reguler.

discard:NAME

Membuang penanda yang didefinisikan pada tingkat yang lebih tinggi.

forbidden

Menunjukkan terjemahan terlarang dalam glosarium, lihat Terjemahan terlarang.

strict-same

Buat Terjemahan tidak berubah menghindari penggunaan pengecualian kata bawaan.

strict-format

Buat pemeriksaan format diberlakukan menggunakan format bahkan untuk bentuk jamak dengan nilai tunggal, lihat String yang diformat.

case-insensitive

Sesuaikan perilaku pemeriksaan agar tidak peka huruf kapital. Saat ini hanya memengaruhi pemeriksaan kualitas Pengganti.

bbcode-text

Perlakukan teks sebagai dokumen Bulletin Board Code (BBCode), memengaruhi Terjemahan tidak berubah. Mengaktifkan pemeriksaan kualitas Markah BBCode.

check-glossary

Mengaktifkan pemeriksaan kualitas Tidak mengikuti glosarium.

fluent-parts

Mengaktifkan pemeriksaan kualitas Bagian Fluent.

fluent-references

Mengaktifkan pemeriksaan kualitas Referensi Fluent.

fluent-target-inner-html

Mengaktifkan pemeriksaan kualitas HTML dalam terjemahan Fluent.

fluent-target-syntax

Mengaktifkan pemeriksaan kualitas Sintaksis sumber Fluent.

angularjs-format

Mengaktifkan pemeriksaan kualitas String interpolasi AngularJS.

automattic-components-format

Mengaktifkan pemeriksaan kualitas Pemformatan komponen Automattic.

c-format

Mengaktifkan pemeriksaan kualitas Format C.

c-sharp-format

Mengaktifkan pemeriksaan kualitas Format C#.

csharp-format

Mengaktifkan pemeriksaan kualitas Format C#.

es-format

Mengaktifkan pemeriksaan kualitas Literal templat ECMAScript.

i18next-interpolation

Mengaktifkan pemeriksaan kualitas Interpolasi i18next.

icu-message-format

Mengaktifkan pemeriksaan kualitas ICU MessageFormat dan Sintaksis ICU MessageFormat.

java-printf-format

Mengaktifkan pemeriksaan kualitas Format Java.

java-format

Mengaktifkan pemeriksaan kualitas Java MessageFormat.

auto-java-messageformat

Treat a text as conditional Java MessageFormat, enabling Java MessageFormat only when the source contains Java MessageFormat placeholders. Enables the Java MessageFormat quality check.

javascript-format

Mengaktifkan pemeriksaan kualitas Format JavaScript.

laravel-format

Mengaktifkan pemeriksaan kualitas Format Laravel.

lua-format

Mengaktifkan pemeriksaan kualitas Format Lua.

object-pascal-format

Mengaktifkan pemeriksaan kualitas Format Object Pascal.

objc-format

Enables the Format Objective-C quality check.

percent-placeholders

Mengaktifkan pemeriksaan kualitas Pengganti persen.

perl-brace-format

Mengaktifkan pemeriksaan kualitas Format kurung kurawal Perl.

perl-format

Mengaktifkan pemeriksaan kualitas Format Perl.

php-format

Mengaktifkan pemeriksaan kualitas Format PHP.

python-brace-format

Mengaktifkan pemeriksaan kualitas Format kurung kurawal Python.

python-format

Mengaktifkan pemeriksaan kualitas Format Python.

qt-format

Mengaktifkan pemeriksaan kualitas Format Qt.

qt-plural-format

Mengaktifkan pemeriksaan kualitas Format jamak Qt.

ruby-format

Mengaktifkan pemeriksaan kualitas Format Ruby.

scheme-format

Mengaktifkan pemeriksaan kualitas Format Scheme.

vue-format

Mengaktifkan pemeriksaan kualitas Pemformatan Vue I18n.

rst-text

Perlakukan teks sebagai dokumen reStructuredText, mempengaruhi Terjemahan tidak berubah. Mengaktifkan pemeriksaan kualitas reStructuredText tidak konsisten dan Galat sintaksis reStructuredText.

md-text

Perlakukan teks sebagai dokumen Markdown, and berikan penyorotan sintaksis Markdown pada area teks terjemahan. Mengaktifkan pemeriksaan kualitas Tautan markdown, Referensi Markdown dan Sintaksis Markdown.

max-length

Mengaktifkan pemeriksaan kualitas Panjang maksimum terjemahan.

max-size

Mengaktifkan pemeriksaan kualitas Ukuran maksimum terjemahan.

placeholders

Mengaktifkan pemeriksaan kualitas Pengganti.

regex

Mengaktifkan pemeriksaan kualitas Ekspresi reguler.

safe-html

Mengaktifkan pemeriksaan kualitas HTML Tidak Aman.

auto-safe-html

Treat 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.

url

String harus hanya berisi URL. Mengaktifkan pemeriksaan kualitas URL.

fluent-source-inner-html

Mengaktifkan pemeriksaan kualitas HTML dalam sumber Fluent.

fluent-source-syntax

Mengaktifkan pemeriksaan kualitas Sintaksis sumber Fluent.

ignore-all-checks

Abaikan semua pemeriksaan kualitas.

ignore-bbcode

Lewati pemeriksaan kualitas Markah BBCode.

ignore-xml-chars-around-tags

Lewati pemeriksaan kualitas Karakter di sekitar tag XML.

ignore-duplicate

Lewati pemeriksaan kualitas Kata ganda yang berulang.

ignore-check-glossary

Lewati pemeriksaan kualitas Tidak mengikuti glosarium.

ignore-double-space

Lewati pemeriksaan kualitas Spasi ganda.

ignore-fluent-parts

Lewati pemeriksaan kualitas Bagian Fluent.

ignore-fluent-references

Lewati pemeriksaan kualitas Referensi Fluent.

ignore-fluent-target-inner-html

Lewati pemeriksaan kualitas HTML dalam terjemahan Fluent.

ignore-fluent-target-syntax

Lewati pemeriksaan kualitas Sintaksis sumber Fluent.

ignore-angularjs-format

Lewati pemeriksaan kualitas String interpolasi AngularJS.

ignore-automattic-components-format

Lewati pemeriksaan kualitas Pemformatan komponen Automattic.

ignore-c-format

Lewati pemeriksaan kualitas Format C.

ignore-c-sharp-format

Lewati pemeriksaan kualitas Format C#.

ignore-es-format

Lewati pemeriksaan kualitas Literal templat ECMAScript.

ignore-i18next-interpolation

Lewati pemeriksaan kualitas Interpolasi i18next.

ignore-icu-message-format

Lewati pemeriksaan kualitas ICU MessageFormat.

ignore-java-printf-format

Lewati pemeriksaan kualitas Format Java.

ignore-java-format

Lewati pemeriksaan kualitas Java MessageFormat.

ignore-javascript-format

Lewati pemeriksaan kualitas Format JavaScript.

ignore-laravel-format

Lewati pemeriksaan kualitas Format Laravel.

ignore-lua-format

Lewati pemeriksaan kualitas Format Lua.

ignore-object-pascal-format

Lewati pemeriksaan kualitas Format Object Pascal.

ignore-objc-format

Skip the Format Objective-C quality check.

ignore-percent-placeholders

Lewati pemeriksaan kualitas Pengganti persen.

ignore-perl-brace-format

Lewati pemeriksaan kualitas Format kurung kurawal Perl.

ignore-perl-format

Lewati pemeriksaan kualitas Format Perl.

ignore-php-format

Lewati pemeriksaan kualitas Format PHP.

ignore-python-brace-format

Lewati pemeriksaan kualitas Format kurung kurawal Python.

ignore-python-format

Lewati pemeriksaan kualitas Format Python.

ignore-qt-format

Lewati pemeriksaan kualitas Format Qt.

ignore-qt-plural-format

Lewati pemeriksaan kualitas Format jamak Qt.

ignore-ruby-format

Lewati pemeriksaan kualitas Format Ruby.

ignore-scheme-format

Lewati pemeriksaan kualitas Format Scheme.

ignore-vue-format

Lewati pemeriksaan kualitas Pemformatan Vue I18n.

ignore-translated

Lewati pemeriksaan kualitas Telah diterjemahkan.

ignore-inconsistent

Lewati pemeriksaan kualitas Tidak konsisten.

ignore-rst-references

Lewati pemeriksaan kualitas reStructuredText tidak konsisten.

ignore-kashida

Lewati pemeriksaan kualitas Huruf kashida digunakan.

ignore-md-link

Lewati pemeriksaan kualitas Tautan markdown.

ignore-md-reflink

Lewati pemeriksaan kualitas Referensi Markdown.

ignore-md-syntax

Lewati pemeriksaan kualitas Sintaksis Markdown.

ignore-max-length

Lewati pemeriksaan kualitas Panjang maksimum terjemahan.

ignore-max-size

Lewati pemeriksaan kualitas Ukuran maksimum terjemahan.

ignore-escaped-newline

Lewati pemeriksaan kualitas \n tidak cocok.

ignore-end-colon

Lewati pemeriksaan kualitas Tanda titik dua tidak cocok.

ignore-end-ellipsis

Lewati pemeriksaan kualitas Tanda elipsis tidak cocok.

ignore-end-exclamation

Lewati pemeriksaan kualitas Tanda seru tidak cocok.

ignore-end-stop

Lewati pemeriksaan kualitas Tanda titik tidak cocok.

ignore-end-interrobang

Lewati pemeriksaan kualitas Tanda interrobang tidak cocok.

ignore-end-question

Lewati pemeriksaan kualitas Tanda tanya tidak cocok.

ignore-end-semicolon

Lewati pemeriksaan kualitas Tanda titik koma tidak cocok.

ignore-newline-count

Lewati pemeriksaan kualitas Jeda baris tidak cocok.

ignore-plurals

Lewati pemeriksaan kualitas Jamak hilang.

ignore-multiple-capital

Lewati pemeriksaan kualitas Beberapa kapital.

ignore-kabyle-characters

Lewati pemeriksaan kualitas Karakter non-standar dalam Kabyle.

ignore-placeholders

Lewati pemeriksaan kualitas Pengganti.

ignore-prohibited-initial-character

Lewati pemeriksaan kualitas Karakter awal terlarang.

ignore-punctuation-spacing

Lewati pemeriksaan kualitas Spasi tanda baca.

ignore-regex

Lewati pemeriksaan kualitas Ekspresi reguler.

ignore-rst-syntax

Lewati pemeriksaan kualitas Galat sintaksis reStructuredText.

ignore-reused

Lewati pemeriksaan kualitas Terjemahan yang digunakan ulang.

ignore-same-plurals

Lewati pemeriksaan kualitas Jamak yang sama.

ignore-begin-newline

Lewati pemeriksaan kualitas Mulai baris baru.

ignore-begin-space

Lewati pemeriksaan kualitas Spasi di awal.

ignore-end-newline

Lewati pemeriksaan kualitas Baris baru di belakang.

ignore-end-space

Lewati pemeriksaan kualitas Spasi di belakang.

ignore-same

Lewati pemeriksaan kualitas Terjemahan tidak berubah.

ignore-safe-html

Lewati pemeriksaan kualitas HTML Tidak Aman.

ignore-url

Lewati pemeriksaan kualitas URL.

ignore-xml-tags

Lewati pemeriksaan kualitas Markah XML.

ignore-xml-invalid

Lewati pemeriksaan kualitas Sintaksis XML.

ignore-zero-width-space

Lewati pemeriksaan kualitas Spasi lebar nol.

ignore-ellipsis

Lewati pemeriksaan kualitas Elipsis.

ignore-fluent-source-inner-html

Lewati pemeriksaan kualitas HTML dalam sumber Fluent.

ignore-fluent-source-syntax

Lewati pemeriksaan kualitas Sintaksis sumber Fluent.

ignore-icu-message-format

Lewati pemeriksaan kualitas Sintaksis ICU MessageFormat.

ignore-long-untranslated

Lewati pemeriksaan kualitas Lama belum diterjemahkan.

ignore-multiple-failures

Lewati pemeriksaan kualitas Beberapa pemeriksaan gagal.

ignore-unnamed-format

Lewati pemeriksaan kualitas Beberapa variabel tanpa nama.

ignore-optional-plural

Lewati 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:

../_images/font-group-edit.webp

Grup huruf diidentifikasikan berdasarkan nama, yang tidak boleh berisi spasi atau karakter khusus, sehingga dapat dengan mudah digunakan dalam definisi pemeriksaan:

../_images/font-group-list.webp

Font-family and style are automatically recognized after uploading them:

../_images/font-edit.webp

Anda dapat memuat sejumlah huruf ke Weblate:

../_images/font-list.webp

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:5

Mendefinisikan lebar maksimal dalam piksel dan, secara opsional, jumlah baris maksimum (pembungkusan kata diterapkan).

font-family:ubuntu

Mendefinisikan grup huruf yang akan digunakan dengan menspesifikasikan pengenalnya.

font-size:22

Mendefinisikan 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.

  1. Subkelas weblate.checks.Check

  2. Atur beberapa atribut.

  3. Implementasikan check (jika Anda ingin menangani jamak dalam kode Anda) atau metode check_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