Pengaya¶
Pengaya menyediakan cara untuk menyesuaikan dan mengotomatisasikan alur kerja terjemahan. Admin dapat menambahkan dan mengelola pengaya dari menu Operasi ↓ Pengaya di setiap proyek atau komponen terjemahan. Pengaya juga dapat dipasang di seluruh situs melalui Antarmuka pengelolaan.
Petunjuk
Anda juga dapat mengkonfigurasikan pengaya menggunakan API, DEFAULT_ADDONS, atau install_addon.
Add-ons that opt in to manual triggering can be run from add-on management or using the API. Results are recorded in the add-on activity log.
Add-ons that expose a component API show its base URL on the add-on's API tab, alongside a link to the API root.
Add-ons are persistent administrative configuration. They run with their service identity in the scope where they are installed, rather than repeatedly using the permissions of the administrator who configured them. This ensures that equally authorized administrators see and save the same configuration, and that saving an unrelated change does not silently alter the add-on's input scope. Removing or disabling the configuring administrator does not disable the add-on.
Project and category add-ons therefore include compatible restricted components in that scope. A component add-on can use inputs outside its destination component when documented by that add-on. Automatic translation determines its source components as follows:
Direct automatic-translation actions use the acting user's component access.
A saved automatic-translation add-on uses its persistent administrative scope. Compatible components in the target project are eligible, including restricted components.
Components in another project are eligible when that project contributes to shared translation memory. This includes restricted components even though they do not create shared translation-memory entries; the add-on reads the explicitly selected component as an administrative input instead.
Restricted components remain filtered from ordinary listings and direct access. Grant add-on management permissions only to users trusted with the add-on's complete input and effect scope. See Cakupan tim and Akses terbatas.
Peristiwa yang memicu pengaya¶
Pemasangan pengaya¶
Dipicu saat pengaya sedang dipasang.
Pembaruan komponen¶
Dipicu jika terjadi perubahan pada komponen seperti:
String diubah dalam repositori.
String ditambahkan.
Terjemahan baru ditambahkan.
Harian¶
Dipicu harian, tetapi pengaya biasanya membagi beban harian antar komponen tergantung pada BACKGROUND_TASKS.
Perubahan peristiwa¶
Dipicu setelah peristiwa Perubahan dibuat.
Manual trigger¶
Triggered when an add-on is run manually from add-on management or the API.
Pasca-penambahan repositori¶
Dipicu tepat setelah terjemahan baru ditambahkan dan dikomit.
Pasca-pengkomitan repositori¶
Dipicu tepat setelah perubahan dikomit.
Pasca-pendorongan repositori¶
Dipicu tepat setelah repositori didorong ke hulu.
Repository post-remove¶
Triggered just after a translation is removed.
Pasca-pembaruan repositori¶
Dipicu jika perubahan baru ditarik dari repositori hulu.
Pra-pengkomitan repositori¶
Dipicu tepat sebelum perubahan dikomit.
Pra-pendorongan repositori¶
Dipicu tepat sebelum repositori didorong ke hulu.
Pra-pembaruan repositori¶
Dipicu tepat sebelum pembaruan repositori dicoba.
Pasca-penyimpanan unit¶
Dipicu tepat setelah string disimpan.
Pasca-penyinkronan unit¶
Dipicu setelah string disinkronkan dengan VCS.
Pra-pembuatan unit¶
Dipicu tepat setelah string yang baru dibuat disimpan.
Pengaya bawaan¶
Evaluasi kualitas AI¶
- ID pengaya:
weblate.ai.quality- Konfigurasi:
serviceLayanan evaluasi
Pilihan yang tersedia:¶ anthropicAnthropic
openaiOpenAI
mistralMistral
ollamaOllama
azure-openaiAzure OpenAI
qKueri
intervalFrekuensi evaluasi
Pilihan yang tersedia:¶ disabledDinonaktifkan
dailyHarian
weeklyMingguan
monthlyBulanan
on_changeEvaluasi perubahan terjemahan
on_updateEvaluasi pembaruan repositori
- Pemicu:
Pemasangan pengaya, Pembaruan komponen, Harian, Perubahan peristiwa, Manual trigger
Mengevaluasi terjemahan yang ada menggunakan LLM dan mencatat pemeriksaan kualitas.
This add-on evaluates existing translations using an LLM service configured under Saran otomatis. It does not generate suggestions or change translations. Choose an Evaluation service from the configured LLM services; credentials and project overrides are reused.
The Query selects strings using the normal search syntax. By default, translated strings are selected. Source strings, read-only strings, and glossary entries are excluded. Each request includes all translation plural forms, source text, language information, string context, glossary terms, placeholders, and configured translation instructions. This data is sent to the selected provider.
Requests group strings from the same translation in file order, using the service's automatic translation batch size (currently 20 strings for built-in LLM services). All plural forms of a string stay together. Related strings share context, allowing the evaluator to check meaning and terminology across the batch. Batching reduces the number of provider requests for scheduled, manual, and change-triggered runs; it does not skip unchanged strings.
Evaluation frequency defaults to weekly. Daily and monthly schedules are also available; disabled turns off scheduled evaluation. Background processing must be enabled. A successful full run starts the next interval. Manual runs bypass the interval. Enable Evaluate translation changes or Evaluate repository updates to additionally evaluate after those events. Installation does not immediately contact the provider. Each run can incur provider costs, including reevaluation of unchanged translations.
Evaluation runs in background tasks, with results and failure counts recorded in the existing add-on activity log. Failed requests retain existing valid findings and are tried again only by a subsequent run. Evaluation shares the service's automatic translation cooldown: rate-limit responses activate it, and batches are skipped while it is active. More specific installations take precedence: component, nearest category, project, then site-wide.
Findings appear as standard checks for accuracy, fluency, terminology, style, and
formatting. Each finding includes a minor, major, or critical severity and an
explanation. Multiple findings in one category share a check, so ignoring that
check ignores the whole category for the string. Existing search filters and API
search work, for example check:ai_accuracy. Translation flags such as
ignore-ai-accuracy disable a category; ignore-all-checks disables all checks.
Changing the source or translation removes outdated findings. Results received after any source or translation in their batch changes are discarded for the whole batch. A failed or malformed response also leaves existing findings for the whole batch unchanged; other batches can still complete. Incomplete runs do not advance the scheduled evaluation date. Reevaluation of unchanged content preserves ignored categories, and a successful evaluation removes categories that no longer have findings. Removing or reconfiguring the add-on clears its findings. Evaluator metadata is internal and cannot be edited through the API; the add-on configuration uses the existing Pengaya permissions and validation.
Otomasi¶
Added in version 2026.10.
- ID pengaya:
weblate.automation.automation- Konfigurasi:
workflowAlur kerja
Masukkan definisi otomasi dalam format YAML atau JSON.
- Pemicu:
Pembaruan komponen, Harian, Perubahan peristiwa, Manual trigger, Pasca-pengkomitan repositori, Pasca-pendorongan repositori, Pasca-pembaruan repositori
Menjalankan operasi terjemahan berurutan dengan kondisi dan percabangan.
Install this add-on on a component, category, project, or site. Inherited instances run separately for each component. Multiple instances can be installed. Configuring, previewing, and running an automation requires the usual add-on management permission. Saving its configuration does not execute it.
Enter YAML or JSON in Workflow. Use Preview without changes to validate it and inspect planned actions, then Run now for real execution. Results appear in the add-on activity log.
Lihat juga
Workflow definition for the script definition and reference.
Cookbook for complete examples.
Apply translation memory before machine translation for translation memory before machine translation.
Terjemahan otomatis¶
- ID pengaya:
weblate.autotranslate.autotranslate- Konfigurasi:
modeMode terjemahan otomatis
Pilihan yang tersedia:¶ suggestTambahkan sebagai saran
translateTambahkan sebagai terjemahan
fuzzyTambahkan sebagai "Perlu disunting"
approvedTambahkan sebagai terjemahan yang disetujui
qKueri
Harap perhatikan bahwa menerjemahkan semua string akan membuang semua terjemahan yang ada.
auto_sourceSumber terjemahan otomatis
Pilihan yang tersedia:¶ othersKomponen terjemahan lainnya
mtTerjemahan mesin
componentKomponen
Enter a source component ID. With 30 or more eligible source components, a project/component path is also accepted. In that case, component and project operations also accept a component slug from the target project. Leave blank to use eligible components from each target component's project.
enginesMesin terjemahan mesin
thresholdAmbang batas skor
- Pemicu:
Pemasangan pengaya, Pembaruan komponen, Harian, Perubahan peristiwa
Terjemahkan string secara otomatis menggunakan mesin terjemahan maupun komponen lainnya.
To control translation order, use the Otomasi add-on with a separate action for each pass. Follow the Apply translation memory before machine translation cookbook example to apply local translation memory first and send only the remaining strings to a machine translation service. Selecting multiple engines here uses Prioritas layanan terjemahan mesin dan memori terjemahan; installation order of separate add-ons does not define an execution sequence.
CDN lokalisasi JavaScript¶
Added in version 4.2.
- ID pengaya:
weblate.cdn.cdnjs- Konfigurasi:
thresholdAmbang batas terjemahan
Persentase string yang diterjemahkan yang harus tersedia dalam terjemahan yang disertakan.
css_selectorPemilih CSS
Pemilih CSS untuk mendeteksi elemen yang dapat dilokalisasikan.
cookie_nameNama kuki bahasa
Nama kuki yang menyimpan preferensi bahasa.
filesEkstrak string dari berkas HTML
Daftar nama berkas dalam repositori saat ini atau URL jarak jauh yang akan diuraikan untuk string yang dapat diterjemahkan.
- Pemicu:
Pemasangan pengaya, Harian, Pasca-pengkomitan repositori, Repository post-remove, Pasca-pembaruan repositori
Kirim terjemahan ke jaringan pengiriman konten untuk digunakan di lokalisasi JavaScript atau HTML.
Dapat digunakan untuk melokalisasikan halaman HTML statis atau untuk memuat lokalisasi dalam kode JavaScript.
Menghasilkan URL unik untuk komponen Anda yang mana dapat Anda sertakan di halaman HTML untuk melokalisasikannya. Lihat Menerjemahkan HTML dan JavaScript menggunakan Weblate CDN untuk rincian lebih lanjut.
Catatan
Pengaya ini membutuhkan konfigurasi tambahan pada server Weblate. LOCALIZE_CDN_PATH mengatur di mana tempat berkas yang dihasilkan akan ditulis (pada sistem berkas), dan LOCALIZE_CDN_URL menentukan di mana tempat berkas akan disajikan (URL). Penyajian berkas tidak dilakukan oleh Weblate dan harus disiapkan secara eksternal (biasanya menggunakan layanan CDN).
Pengaya ini dikonfigurasikan pada Hosted Weblate dan menyajikan berkas melalui https://weblate-cdn.com/.
CDN berkas terjemahan¶
Added in version 2026.5.
- ID pengaya:
weblate.cdn.files- Konfigurasi:
Pengaya ini tidak memiliki konfigurasi.
- Pemicu:
Pemasangan pengaya, Pembaruan komponen, Pasca-pengkomitan repositori, Repository post-remove, Pasca-pembaruan repositori
Menerbitkan berkas terjemahan ke dalam jaringan pengiriman konten.
Publishes translation files without converting them to another format. Files
are written below the add-on specific CDN directory and served from
LOCALIZE_CDN_URL/<add-on UUID>/. Single-file translations use the language
code and original file extension, for example cs.json or de.po.
Multi-file translations are served below the language code using paths relative
to the translation directory. Monolingual components include the source
language file, while bilingual components publish only target-language files.
See CDN lokalisasi for secure serving guidance.
CDN Kotlin SDK¶
Added in version 2026.10.
- ID pengaya:
weblate.cdn.kotlin- Konfigurasi:
maximum_ageUsia build maksimum (hari)
Menghentikan build setelah sejumlah hari ini sejak pendaftaran pertamanya. Mendaftarkan ulang build tidak memperpanjang usianya.
maximum_versionsJumlah versi maksimum yang disimpan
Membatasi build yang disimpan untuk semua nama paket. Build dihentikan saat batas ini atau usia maksimum tercapai.
- Pemicu:
Pemasangan pengaya, Pembaruan komponen, Harian, Pasca-pengkomitan repositori, Repository post-remove, Pasca-pembaruan repositori
Menerbitkan sumber daya string dan plural Android untuk build Kotlin SDK yang terdaftar.
Peringatan
The Kotlin SDK API is in beta. No compatibility is guaranteed until the final Kotlin SDK is released. Endpoints, build metadata, CDN manifests, and generated resource formats may change without backward compatibility.
Install Kotlin SDK CDN on an Android string-resource component to
publish translations for builds registered by the Kotlin SDK. Configure
LOCALIZE_CDN_URL and LOCALIZE_CDN_PATH first. CDN output is
public, including translations from private components. Manifests expose the
application package name and version code. ARSC files expose published resource
names and their submitted IDs alongside translated text. Do not treat the
uploaded resource mapping as confidential; enable publication only when this
disclosure is intended. Registration and status API access remains permission-controlled.
Copy the Gradle plugin configuration from the add-on configuration page. It
includes the Weblate server URL, public CDN URL, project slug, and component
path (with any category path URL-encoded). Replace the placeholder with a
project-scoped API token whose permissions allow editing the component. Project
administrators can create one in the project's API access tab; see
Token akses per proyek.
Keep that token in the build environment, not in the application. The add-on's
API tab shows the API base URL; submit build metadata to its builds/
endpoint. See
Kotlin SDK builds for the request and response format.
For Gradle plugin and library setup, see the Kotlin SDK repository.
The add-on matches resource names and types from registered builds to current component translations. Strings, plurals, and Android styled text are supported. String arrays and resource references are not generated. Untranslated entries, read-only entries, and incomplete plural resources are omitted; applications retain their bundled values. Unsupported styling fails publication; the previous successful publication remains available.
Resource IDs must describe the final installed build. Uploading an identical mapping again is harmless; a different mapping for the same package and version is rejected. Old builds receive current translations by name, including after source text or formatting arguments change. Maintainers are responsible for compatibility with older application code.
Lifecycle settings¶
Maximum build age (days) defaults to 365 and accepts 1 through 730, measured from the first registration. Repeated uploads do not extend it.
Maximum retained versions defaults to 20 and accepts 1 through 100, counted across all package names. One additional unpublished replacement is allowed. New registrations can retire older unpublished replacements. Published builds are retired for this limit only after a replacement is published. Failed replacements preserve existing publications; maximum-age expiry still applies independently.
Either limit retires a build and immediately clears its metadata. Lightweight retired records are deleted on cleanup after 24 hours and successful manifest removal; their package/version identifiers can then be registered again. Failed or interrupted manifest removals are retried hourly. Until removal succeeds, the registration and its referenced artifacts are retained, and the files may remain publicly accessible. Resource mappings are immutable only while their registration records remain.
Each add-on permits at most 1000 registration records, including retired records. New registrations exceeding this limit return HTTP 409 until cleanup frees capacity; identical retries remain accepted. Metadata is bounded by the 5 MiB upload limit and maximum retained version count plus one replacement, without a separate byte quota. Limits are enforced during registration and scheduled cleanup.
Superseded artifacts are deleted on cleanup after a fixed 24-hour window. All artifact files, including superseded files and incomplete publication output, count towards hard limits of 5 GiB and 10000 files per add-on. The larger artifact allowance accommodates translated text and multiple locales; it does not guarantee capacity for every locale or build combination. Shared artifacts count only once. Publications exceeding either limit fail before writing new artifacts and preserve the previous manifest. Neither the window nor these limits are configurable. Limit manifest caching as described below.
Compilation stages one locale at a time on disk. A per-locale conservative encoded text and styling estimate exceeding 64 MiB fails publication.
Preparation additionally requires up to 5 GiB of temporary disk space per
publication job, separate from the published artifact allowance. Temporary
files contain staged ARSC output, shared by versions with identical resource mappings.
They are stored below LOCALIZE_CDN_PATH. Configure the server to
deny access to .kotlin-sdk-staging as described in
CDN lokalisasi before enabling this add-on.
Manifest replacement follows the database commit. Failed or interrupted writes are retried by subsequent publication jobs, with artifacts for both the old and pending manifest protected until replacement succeeds.
Uninstalling the add-on attempts to remove its published files from the CDN origin immediately. Failed or interrupted removals are retried hourly; files may remain publicly accessible until cleanup succeeds. Removal does not revoke copies already cached or downloaded by clients.
Publication and cleanup run asynchronously after build registration, component updates, translation commits and removals, and during daily add-on processing. Failures appear in the add-on activity log and registration status. Previous successful publications remain available when replacement generation fails. If the component stops using the Android resource format, hourly maintenance retires its publications. The normal artifact retention window still applies.
CDN client contract¶
Each build has a stable manifest at
<CDN base>/<packageName>/<versionCode>/manifest.json. The version 1 manifest
contains schemaVersion, packageName, versionCode, and locales.
Locale keys are Weblate language codes. Each locale contains a relative url,
sha256, and byte size for its ARSC artifact. Resolve relative URLs against
the manifest URL. Artifact contents do not change after publication.
The manifest has a JSON Schema.
Configure the CDN origin to cache manifests for at most one hour (for example,
Cache-Control: public, max-age=3600), and artifact files with
Cache-Control: public, max-age=31536000, immutable. Artifact files may use
application/octet-stream. Configure these headers on the CDN server.
Translation updates and retirements can take up to one hour to reach clients.
Use Cache-Control: no-cache when immediate revalidation is preferred.
The fixed 24-hour artifact retention window exceeds the manifest cache lifetime.
The Kotlin SDK should validate artifact length and hash, cache successful downloads locally, and load them with Android's resources-loader API on API 30 or newer. A missing manifest, missing locale, or download failure must preserve bundled resources. Retired manifests return 404 at the origin; cached copies can remain usable until they expire. Hashes detect corrupted or mismatched content; authentication relies on HTTPS and the configured CDN.
Hapus string kosong¶
Added in version 4.4.
- ID pengaya:
weblate.cleanup.blank- Konfigurasi:
Pengaya ini tidak memiliki konfigurasi.
- Pemicu:
Pemasangan pengaya, Pasca-pengkomitan repositori, Pasca-pembaruan repositori
Hapus string tanpa terjemahan dari berkas terjemahan.
Gunakan ini agar tidak ada string kosong di dalam berkas terjemahan (misalnya jika pustaka lokalisasi Anda menampilkannya sebagai string hilang alih-alih mengembalikan ke string sumber).
Bersihkan berkas terjemahan¶
- ID pengaya:
weblate.cleanup.generic- Konfigurasi:
Pengaya ini tidak memiliki konfigurasi.
- Pemicu:
Pemasangan pengaya, Pasca-pembaruan repositori, Pra-pengkomitan repositori
Memperbarui semua berkas terjemahan agar sesuai dengan berkas dasar monolingual. Untuk kebanyakan format berkas, hal ini berarti menghapus kunci terjemahan lawas yang tidak ada lagi di berkas basis.
Untuk format yang berisi konten tambahan selain string terjemahan (seperti Berkas HTML, Berkas RC Windows, atau Format OpenDocument) ini juga menyinkronkan berkas terjemahan dengan berkas dasar.
For a one-time cleanup of a single translation file, use Cleanup unused in Pemeliharaan repositori on that translation instead of installing the add-on.
Tambahkan bahasa yang hilang¶
- ID pengaya:
weblate.consistency.languages- Konfigurasi:
Pengaya ini tidak memiliki konfigurasi.
- Pemicu:
Memastikan serangkaian bahasa yang konsisten digunakan untuk semua komponen dalam proyek.
Catatan
Komponen yang dibagikan dari proyek lain tidak dipertimbangkan dalam ini.
Bahasa yang hilang akan diperiksa setiap 24 jam sekali dan ketika ada penambahan bahasa baru di Weblate.
Tidak seperti pengaya yang lainnya, pengaya ini memengaruhi seluruh proyek.
Petunjuk
Terjemahkan string yang baru ditambahkan secara otomatis dengan Terjemahan otomatis.
Penemuan komponen¶
- ID pengaya:
weblate.discovery.discovery- Konfigurasi:
matchEkspresi reguler untuk mencocokkan berkas terjemahan dengan
Ekspresi reguler harus mendefinisikan grup bernama untuk komponen. Definisikan juga grup bernama untuk bahasa saat mencocokkan berkas terjemahan. Jika masker berkas ditetapkan, abaikan bahasa dan cocokkan berkas dasar monolingual atau berkas dasar baru sebagai gantinya.
file_formatFormat berkas
name_templateSesuaikan nama komponen
Gunakan sintaks templat Django. Templat ini harus menyertakan {{ component }}.
base_file_templateDefinisikan nama berkas basis ekabahasa
Kosongkan untuk berkas terjemahan dwibahasa. Jika diisi, templat ini harus menyertakan {{ component }}.
new_base_templateDefinisikan berkas dasar untuk terjemahan baru
Nama berkas yang digunakan untuk membuat terjemahan baru. Untuk gettext pilih berkas .pot. Templat ini harus menyertakan {{ component }}.
intermediate_templateBerkas bahasa intermediasi
Nama berkas terjemahan perantara. Dalam kebanyakan kasus ini adalah berkas terjemahan yang disediakan oleh pengembang dan digunakan saat membuat string sumber yang sebenarnya. Templat ini harus menyertakan {{ component }}.
filemask_templateTentukan masker file
Biarkan kosong untuk mencocokkan berkas terjemahan secara langsung. Jika diisi, penemuan akan mencocokkan berkas dasar monolingual atau berkas dasar baru, lalu menggunakan templat ini sebagai pola file. Sertakan wildcard bahasa dan {{ component }}, misalnya locale//{{ component }}.po atau docs/{{ component }}_.md.
language_regexFilter bahasa
Ekspresi reguler untuk memfilter berkas terjemahan ketika memindai mask berkas.
copy_addonsKloning pengaya dari komponen utama ke komponen yang baru dibuat
removeHapus komponen untuk berkas yang tidak ada
- Pemicu:
Menambahkan atau menghapus komponen secara otomatis berdasarkan perubahan berkas di sistem kontrol versi.
The matching is done using regular expressions enabling complex configuration, but some knowledge is required to do so. Usually the regular expression to match translation files has to contain two named groups to match component and language. When creating components from a monolingual base or new base file, omit the language group and match that source file instead. All named groups in the regular expression can be used as variables in the template fields.
Discovery requirements¶
To discover a component successfully, the configuration has to do all of the following:
The regular expression must define a
componentnamed group. Matching translation files also requires alanguagenamed group.Template fields used to name or locate per-component files must include
{{ component }}, so the rendered value actually changes for each discovered component.For monolingual formats, the component must contain a file matching
base_file_templateand at least one translation file matchingmatch, unless you set the file mask (see below).
Discovering components without translation files¶
Set Define the file mask to discover components from a monolingual base or new base file alone, even when no translation files exist yet. In that mode:
Configure Regular expression to match translation files against to match the monolingual base or new base file, and omit the
languagegroup. Keep full control over thecomponentcapture, for examplelocale/(?P<component>[^/]+)\.potordocs/(?P<component>[^/_]+)\.md.Fill Define the file mask with a path that includes both a language wildcard and
{{ component }}, for examplelocale/*/{{ component }}.poordocs/{{ component }}_*.md.Keep using the other filename templates with any named groups from the match expression.
Worked example: news_<lang>.md¶
This is a common filename-based language variant layout:
docs/news_en.mddocs/news_cs.mddocs/guide_en.md
Use the Filename-based language variants preset for a starting point, then choose the matching file format and review the populated values.
- Ekspresi reguler:
(?:(?P<path>.*/))?(?P<component>.+?)_(?P<language>[A-Za-z]{2,3}(?:[_-][A-Za-z0-9]+)*)\.(?P<extension>[^/.]+)- Nama komponen:
{{ component }}- Discovered file masks:
docs/news_*.mddocs/guide_*.md
In this example, {{ component }} resolves to the basename before the language
suffix, so docs/news_en.md, docs/news_pt_BR.md, and
docs/news_pt-BR.md all become the news component.
Anda dapat menggunakan markah templat Django di semua kolom nama berkas, misalnya:
{{ component }}Component name parsed from the
componentmatch group{{ component|title }}Nama berkas komponen dengan huruf pertama huruf besar
{{ path }}: {{ component }}Grup pencocokan kustom dari ekspresi reguler
Setelah Anda menekan Simpan, pratinjau komponen yang cocok akan ditampilkan, dari sana Anda dapat memeriksa apakah konfigurasi sudah benar-benar sesuai dengan kebutuhan Anda:
Contoh penemuan komponen¶
The worked example above covers the most common filename-based variant layout. The following examples show other repository structures you can match.
Satu map per bahasa¶
Satu map per bahasa berisi berkas terjemahan untuk komponen.
- Ekspresi reguler:
(?P<language>[^/.]*)/(?P<component>[^/]*)\.po- Berkas yang cocok:
cs/application.pocs/website.pode/application.pode/website.po
Tata letak lokalisasi Gettext¶
Struktur biasa untuk menyimpan berkas PO gettext.
- Ekspresi reguler:
locale/(?P<language>[^/.]*)/LC_MESSAGES/(?P<component>[^/]*)\.po- Berkas yang cocok:
locale/cs/LC_MESSAGES/application.polocale/cs/LC_MESSAGES/website.polocale/de/LC_MESSAGES/application.polocale/de/LC_MESSAGES/website.po
Nama berkas yang kompleks¶
Menggunakan kedua komponen dan nama bahasa dalam nama berkas.
- Ekspresi reguler:
src/locale/(?P<component>[^/]*)\.(?P<language>[^/.]*)\.po- Berkas yang cocok:
src/locale/application.cs.posrc/locale/website.cs.posrc/locale/application.de.posrc/locale/website.de.po
Kode bahasa berulang¶
Menggunakan bahasa dalam kedua jalur dan nama berkas.
- Ekspresi reguler:
locale/(?P<language>[^/.]*)/(?P<component>[^/]*)/(?P=language)\.po- Berkas yang cocok:
locale/cs/application/cs.polocale/cs/website/cs.polocale/de/application/de.polocale/de/website/de.po
Pisahkan string Android¶
String sumber daya Android, dipisahkan menjadi beberapa berkas.
- Ekspresi reguler:
res/values-(?P<language>[^/.]*)/strings-(?P<component>[^/]*)\.xml- Berkas yang cocok:
res/values-cs/strings-about.xmlres/values-cs/strings-help.xmlres/values-de/strings-about.xmlres/values-de/strings-help.xml
Mencocokkan beberapa jalur¶
Proyek Maven multimodul dengan terjemahan properti Java.
- Ekspresi reguler:
(?P<originalHierarchy>.+/)(?P<component>[^/]*)/src/main/resources/ApplicationResources_(?P<language>[^/.]*)\.properties- Nama komponen:
{{ originalHierarchy }}: {{ component }}- Berkas yang cocok:
parent/module1/submodule/src/main/resources/ApplicationResources_fr.propertiesparent/module1/submodule/src/main/resources/ApplicationResource_es.propertiesparent/module2/src/main/resources/ApplicationResource_de.propertiesparent/module2/src/main/resources/ApplicationResource_ro.properties
Petunjuk
Pengaya penemuan komponen menggunakan URL internal Weblate. Ini merupakan cara praktis untuk berbagi pengaturan VCS antar beberapa komponen. Komponen yang terhubung menggunakan repositori lokal dari pengaturan komponen utama dengan mengisi weblate://project/main-component ke dalam kolom Repositori kode sumber (di Operasi ↓ Pengaturan ↓ Sistem kontrol versi) masing-masing komponen. Ini juga menghemat waktu konfigurasi dan sumber daya sistem.
Petunjuk
Pastikan komponen baru berisi rangkaian lengkap bahasa yang dapat diterjemahkan dengan Tambahkan bahasa yang hilang.
Lihat juga
Fedora Messaging¶
Added in version 5.15.
- ID pengaya:
weblate.fedora_messaging.publish- Konfigurasi:
amqp_urlURL broker AMQP
URL broker AMQP yang akan dihubungkan.
topic_prefixAwalan topik
Awalan opsional yang ditambahkan di depan topik pesan yang dihasilkan.
publish_timeoutBatas waktu publikasi
Jumlah detik untuk menunggu pengakuan pengiriman dari broker.
connection_attemptsUpaya koneksi
Jumlah percobaan untuk terhubung ke broker.
retry_delayJeda percobaan ulang
Jumlah detik untuk menunggu di antara percobaan koneksi.
ca_certBundel sertifikat CA (PEM)
Tempelkan hanya blok sertifikat PEM, masing-masing diawali dengan "-----BEGIN CERTIFICATE-----" dan diakhiri dengan "-----END CERTIFICATE-----".
client_keyKunci privat klien (PEM)
Tempelkan satu blok kunci privat PEM yang tidak terenkripsi. Kunci privat terenkripsi tidak didukung.
client_certSertifikat klien (PEM)
Tempelkan hanya blok sertifikat PEM yang diawali dengan "-----BEGIN CERTIFICATE-----"; jangan tempelkan keluaran dari "openssl x509 -text".
event_filterKejadian perubahan yang akan memicu
Choose which change events should trigger this add-on. Kejadian perubahan yang akan memicu
eventsKejadian perubahan yang dipilih
- Pemicu:
Mengirimkan notifikasi ke exchange AMQP yang kompatibel dengan Fedora Messaging.
Fedora Messaging adalah penerbit berbasis AMQP untuk semua perubahan yang terjadi di Weblate. Anda dapat menghubungkan layanan tambahan pada perubahan yang terjadi di Weblate menggunakan ini.
Topik pesan¶
All messages have topic
weblate.<action>.<project>.<category...>.<component>.<translation>.
When configured, topic_prefix is prepended to this topic using a single dot
separator, for example org.fedoraproject.weblate.project_backed_up.website.
The action is lowercase textual representation of action with underscores
instead of space, for example resource_updated; see Kejadian perubahan yang dipilih
for all action identifiers. The remaining parts match Weblate object path
segments.
For example, a project backup event for the website project uses
weblate.project_backed_up.website. A translation change in the website
project, frontend component, and Czech translation uses
weblate.translation_changed.website.frontend.cs. The same change in the
frontend component inside the parent and child categories uses
weblate.translation_changed.website.parent.child.frontend.cs.
Isi pesan¶
Isi formulir terdiri dari kolom berikut (dengan asumsi kolom tersebut tersedia untuk peristiwa tersebut):
change_idID numerik perubahan
actionNama perubahan yang lebih rinci.
timestampStempel waktu berformat ISO
targetNilai baru dari perubahan (mis. terjemahan baru string)
oldNilai lama dari perubahan (mis. terjemahan string sebelumnya)
sourceString sumber.
urlURL mutlak untuk melihat objek terkait.
authorNama pengguna penulis (ini bisa berbeda dari pengguna misalnya saat menerima saran)
userNama pengguna sementara
projectSlug proyek
componentSlug komponen
translationKode bahasa terjemahan
Kepala pesan¶
Terdapat kepala tambahan yang mungkin juga dapat Anda manfaatkan untuk perutean:
actionNama perubahan yang lebih rinci.
projectSlug proyek
componentSlug komponen
Contoh pesan¶
Peristiwa penggabungan repositori:
{
"id": 1,
"action": "Merged repository",
"timestamp": "2017-06-15T11:30:47.325000+00:00",
"url": "http://example.com/projects/test/test/",
"component": "test"
}
Peristiwa string sumber baru:
{
"id": 2,
"action": "New source string",
"timestamp": "2017-06-15T11:30:47.372000+00:00",
"url": "http://example.com/translate/test/test/cs/?checksum=6412684aaf018e8e",
"component": "test",
"translation": "cs",
"source": ["Hello, world!\n"]
}
Peristiwa pembaruan sumber daya:
{
"id": 6,
"action": "Resource update",
"timestamp": "2017-06-15T11:30:47.410000+00:00",
"url": "http://example.com/projects/test/test/cs/",
"project": "test",
"component": "test",
"translation": "cs"
}
{
"id": 7,
"action": "Resource update",
"timestamp": "2017-06-15T11:30:47.510000+00:00",
"url": "http://example.com/projects/test/test/de/",
"project": "test",
"component": "test",
"translation": "de"
}
{
"id": 8,
"action": "Resource update",
"timestamp": "2017-06-15T11:30:47.595000+00:00",
"url": "http://example.com/projects/test/test/it/",
"project": "test",
"component": "test",
"translation": "it"
}
Peristiwa penghapusan proyek:
{
"id": 9,
"action": "Removed project",
"timestamp": "2019-10-17T15:57:08.559420+00:00",
"target": "test",
"user": "testuser"
}
Peristiwa kontributor baru:
{
"id": 11,
"action": "New contributor",
"timestamp": "2019-10-17T15:57:08.759960+00:00",
"url": "http://example.com/translate/test/test/cs/?checksum=6412684aaf018e8e",
"author": "testuser",
"user": "testuser",
"project": "test",
"component": "test",
"translation": "cs",
"source": ["Hello, world!\n"]
}
Peristiwa terjemahan baru:
{
"id": 12,
"action": "New translation",
"timestamp": "2019-10-17T15:57:08.772591+00:00",
"url": "http://example.com/translate/test/test/cs/?checksum=6412684aaf018e8e",
"target": ["Ahoj svete!\n"],
"author": "testuser",
"user": "testuser",
"project": "test",
"component": "test",
"translation": "cs",
"source": ["Hello, world!\n"]
}
Sunting massal¶
- ID pengaya:
weblate.flags.bulk- Konfigurasi:
qKueri
stateStatus untuk diatur
Pilihan yang tersedia:¶ -1Jangan ubah
10Perlu disunting
11Perlu disunting (Perlu ditulis ulang)
12Perlu disunting (Perlu diperiksa)
20Diterjemahkan
30Disetujui
add_flagsFlag sumber yang akan ditambahkan — semua bahasa
remove_flagsFlag sumber yang akan dihapus — semua bahasa
add_translation_flagsFlag terjemahan yang akan ditambahkan — terjemahan yang cocok
Hanya berlaku untuk terjemahan yang cocok, tidak termasuk string sumber.
remove_translation_flagsFlag terjemahan yang akan dihapus — terjemahan yang cocok
Menghapus flag yang ditetapkan secara lokal. Flag yang diwariskan tetap berlaku.
add_labelsLabel yang akan ditambahkan — semua bahasa
remove_labelsLabel yang akan dihapus — semua bahasa
- Pemicu:
Sunting penanda, label, status, atau string massal.
Contoh:
Kueri pencarian |
|
|---|---|
Label untuk ditambahkan |
terkini |
Kueri pencarian |
|
|---|---|
Penanda terjemahan untuk ditambahkan |
|
Kueri pencarian |
|
|---|---|
Penanda terjemahan untuk ditambahkan |
|
Tandai terjemahan yang tidak diubah sebagai "Perlu ditulis ulang"¶
- ID pengaya:
weblate.flags.same_edit- Konfigurasi:
Pengaya ini tidak memiliki konfigurasi.
- Pemicu:
Jika string yang dapat diterjemahkan diimpor dari VCS dan cocok dengan string sumber, ia akan ditandai sebagai perlu ditulis ulang di Weblate. Hal ini sangat berguna untuk format berkas yang menyertakan string sumber untuk string yang belum diterjemahkan.
Petunjuk
Anda mungkin juga ingin memperketat pemeriksaan Terjemahan tidak berubah dengan menambahkan penanda strict-same ke Penanda terjemahan.
Lihat juga
Tandai string sumber yang baru sebagai "Perlu diperiksa"¶
- ID pengaya:
weblate.flags.source_edit- Konfigurasi:
Pengaya ini tidak memiliki konfigurasi.
- Pemicu:
Jika string sumber baru diimpor dari VCS, ia akan ditandai sebagai perlu diperiksa di Weblate. Dengan cara ini Anda dapat dengan mudah memfilter dan menyunting string sumber yang ditulis oleh pengembang.
Lihat juga
Tandai terjemahan baru sebagai "Perlu ditulis ulang"¶
- ID pengaya:
weblate.flags.target_edit- Konfigurasi:
Pengaya ini tidak memiliki konfigurasi.
- Pemicu:
Jika string terjemahan baru diimpor dari VCS, ia akan ditandai sebagai perlu ditulis ulang di Weblate. Dengan cara ini Anda dapat dengan mudah memfilter dan menyunting terjemahan yang dibuat oleh pengembang.
Lihat juga
Tandai terjemahan yang diperbarui dari repositori sebagai "Perlu ditulis ulang"¶
- ID pengaya:
weblate.flags.target_repo_update- Konfigurasi:
Pengaya ini tidak memiliki konfigurasi.
- Pemicu:
Jika terjemahan string diubah dari VCS, terjemahan tersebut akan ditandai sebagai perlu ditulis ulang di Weblate. Hal ini sangat berguna jika berkas terjemahan sering diperbarui secara manual atau oleh layanan eksternal.
Lihat juga
Isi string hanya baca dengan sumber¶
Added in version 4.18.
- ID pengaya:
weblate.generate.fill_read_only- Konfigurasi:
Pengaya ini tidak memiliki konfigurasi.
- Pemicu:
Isi terjemahan string hanya baca dengan string sumber.
Penghasilan statistik¶
- ID pengaya:
weblate.generate.generate- Konfigurasi:
scopeCakupan keluaran
Pilihan yang tersedia:¶ translationSatu berkas per terjemahan
componentSatu berkas per komponen
filenameNama berkas yang dihasilkan
templateKonten berkas yang dibuat
- Pemicu:
Pemasangan pengaya, Pembaruan komponen, Pasca-penambahan repositori, Repository post-remove, Pra-pengkomitan repositori
Menghasilkan berkas yang berisi informasi terperinci tentang status terjemahan.
Anda dapat menggunakan templat Django di nama berkas dan konten, lihat Markah templat untuk deskripsi markah yang terperinci.
Misalnya menghasilkan berkas ringkasan untuk setiap terjemahan:
- Nama berkas yang dihasilkan
locale/{{ language_code }}.json- Konten
{ "language": "{{ language_code }}", "strings": "{{ stats.all }}", "translated": "{{ stats.translated }}", "last_changed": "{{ stats.last_changed }}", "last_author": "{{ stats.last_author }}", }
Component-wide output¶
Set Output scope to One file per component to maintain one locale list or statistics file for the entire component. The default, One file per translation, preserves existing configurations.
Component output is generated on installation and configuration changes. It is updated when translations are committed, languages are added or removed, and component files are reloaded. Language metadata changes are included on the next such update or when the add-on is reconfigured. Unchanged output does not create a new commit.
Both modes support component and project variables in filenames and content.
In component mode, the content additionally receives translations, ordered
by repository language code. Each item provides:
language_code: the language code used in the repository.language_name: the English language name.language_native_name: the name translated into its own language using Weblate's catalogs, with an English fallback when unavailable.language_direction:ltrorrtl.filenameandurl: the translation filename and Weblate URL.is_source: whether this is the component's source translation.stats: the same statistics available in translation mode.
The source translation is included. Templates can exclude it using
{% if not item.is_source %}. Statistics use Weblate's completion semantics.
Custom language names are retained; there is no external locale-data lookup.
For example, generate locales.json for a website:
[
{% for item in translations %}
{
"code": {{ item.language_code|json }},
"file": {{ item.filename|json }},
"name": {{ item.language_native_name|json }},
"dir": {{ item.language_direction|json }}
}{% if not forloop.last %},{% endif %}
{% endfor %}
]
Or generate languages.py for an application:
names = {
{% for item in translations %}
{{ item.language_code|python }}: {{ item.language_native_name|python }},
{% endfor %}
}
completeness = {
{% for item in translations %}
{{ item.language_code|python }}: {{ item.stats.translated_percent|python }},
{% endfor %}
}
The json and python filters serialize complete values, including string
quotes and escaping. Do not add quotes around their output. They also support
lists and dictionaries; {{ translations|json }} exports all available data.
Dates and times are serialized as ISO-formatted strings.
Lihat juga
Isi awal terjemahan dengan sumber¶
Added in version 4.11.
- ID pengaya:
weblate.generate.prefill- Konfigurasi:
Pengaya ini tidak memiliki konfigurasi.
- Pemicu:
Mengisi string terjemahan dengan string sumber.
Semua string belum diterjemahkan di komponen akan diisi dengan string sumber, dan ditandai sebagai perlu disunting. Gunakan ini ketika Anda tidak dapat memiliki string kosong dalam berkas terjemahan. .. AUTOGENERATED START: weblate.generate.pseudolocale .. Bagian ini secara otomatis dihasilkan oleh ./manage.py list_addons. Jangan sunting secara manual.
Penghasilan lokalisasi semu¶
Added in version 4.5.
- ID pengaya:
weblate.generate.pseudolocale- Konfigurasi:
sourceString sumber
targetTerjemahan target
Semua string diterjemahan ini akan ditimpa
prefixTeks statis diisi awal
var_prefixTeks variabel diisi awal
suffixDitambahkan teks statis
var_suffixTeks variabel ditambahkan
var_multiplierPengganda teks variabel
Berapa kali mengulang teks variabel tergantung dari panjang string sumber.
include_readonlyTermasuk string hanya baca
- Pemicu:
Menghasilkan terjemahan dengan menambahkan prefiks dan sufiks ke string sumber secara otomatis.
Lokalisasi semu berguna untuk menemukan string yang tidak disiapkan untuk lokalisasi. Ini dilakukan dengan mengubah semua string sumber yang dapat diterjemahkan untuk memudahkan menemukan string yang tidak diubah saat menjalankan aplikasi dalam bahasa lokalisasi semu.
Menemukan string yang padanan lokalisasinya mungkin tidak sesuai dengan tata letak juga dimungkinkan.
Menggunakan bagian variabel membuat pencarian string yang mungkin tidak sesuai dengan antarmuka pengguna setelah lokalisasi - itu diperluaskan berdasarkan panjang string sumber. Teks variabel diulang berdasarkan panjang teks dikalikan dengan pengalinya. Misalnya, Hello world dengan teks variabel _ dan pengali variabel 1 menjadi Helo world___________ - teks diulang sekali untuk setiap karakter dalam string sumber.
String akan dihasilkan menggunakan pola berikut:
Teks statis yang ditambahkan di depan Teks variabel yang ditambahkan di depan String sumber Teks variabel yang ditambahkan di belakang Teks statis yang ditambahkan di belakang
Petunjuk
Anda dapat menggunakan bahasa asli untuk pengujian, tetapi ada lokalisasi semu khusus yang tersedia di Weblate, misalnya en_XA dan ar_XB.
Petunjuk
Anda dapat menggunakan pengaya ini untuk memulai lokalisasi ke bahasa yang baru dari bahasa yang sudah ada atau bahasa serupa. Setelah Anda menambahkan terjemahan ke komponen, ikuti ke pengaya. Contoh: Jika Anda memiliki fr dan ingin memulai terjemahan fr_CA, cukup setel fr sebagai sumber, fr_CA sebagai target, dan biarkan prefiks dan sufiks kosong.
Copot pengaya setelah terjemahan baru Anda diisi untuk mencegah Weblate mengubah terjemahan yang dibuat setelah penyalinan.
Perbarui variabel ALL_LINGUAS di berkas "configure"¶
- ID pengaya:
weblate.gettext.configure- Konfigurasi:
Pengaya ini tidak memiliki konfigurasi.
- Pemicu:
Pemasangan pengaya, Harian, Pasca-penambahan repositori, Repository post-remove
Memperbarui variabel ALL_LINGUAS dalam berkas "configure", "configure.in", atau "configure.ac", saat terjemahan ditambahkan atau dihapus.
Updates the ALL_LINGUAS variable in configure, configure.in or any
configure.ac files, when a translation is added or removed.
Sesuaikan keluaran gettext¶
Removed in version 5.13: Diganti oleh Parameter format berkas.
Perbarui templat gettext (Django)¶
Added in version 5.17.
- ID pengaya:
weblate.gettext.django- Konfigurasi:
intervalPerbarui frekuensi
Seberapa sering pengaya harus memperbarui berkas POT ketika komponen dimuatkan ulang.
Pilihan yang tersedia:¶ dailyHarian
weeklyMingguan
monthlyBulanan
normalize_headerNormalisasikan kepala POT
Memperbarui kepala gettext dan mengganti komentar POT pengganti.
location_modeLokasi sumber
Pilih cara ekstraksi menulis lokasi sumber ke file POT. Gunakan ini untuk mempertahankan lokasi dalam templat sambil menghilangkannya dari file PO yang diterjemahkan.
Pilihan yang tersedia:¶ fileGunakan pengaturan format file
keepEkstrak lokasi ke file POT
omitJangan ekstrak lokasi
- Pemicu:
Pemasangan pengaya, Manual trigger, Pasca-pembaruan repositori
Memperbarui templat gettext menggunakan perintah makemessages bawaan Django.
This add-on updates the template configured in Templat untuk terjemahan baru. It is available for gettext PO components, and the component must define a template for new translations.
The selected update frequency applies to automatic runs after repository refreshes. Installing or reconfiguring the add-on runs it immediately, and manual runs from add-on management or the API also bypass the frequency schedule. After a successful update, Weblate commits the changed template and reloads source strings.
The template update does not update translation PO files by itself. Keep Perbarui berkas PO agar sesuai dengan POT (msgmerge) installed when translation files should follow template changes automatically. The install form for this add-on can install that add-on, but existing add-on settings do not show that installation option again.
Django requirements¶
This add-on requires xgettext and msguniq. It runs Weblate's internal extraction wrapper for Django messages instead of invoking a project's manage.py makemessages, so it does not load project Django settings or applications.
The template for new translations must use the django or djangojs
domain. Supported template names are django.pot, djangojs.pot,
django.po, and djangojs.po. Weblate infers the source directory
from the template path and skips repository locale directories while extracting.
Perbarui berkas LINGUAS¶
- ID pengaya:
weblate.gettext.linguas- Konfigurasi:
Pengaya ini tidak memiliki konfigurasi.
- Pemicu:
Pemasangan pengaya, Harian, Pasca-penambahan repositori, Repository post-remove
Memperbarui berkas LINGUAS saat terjemahan ditambahkan atau dihapus.
Perbarui berkas POT (Meson)¶
Added in version 5.17.
- ID pengaya:
weblate.gettext.meson- Konfigurasi:
intervalPerbarui frekuensi
Seberapa sering pengaya harus memperbarui berkas POT ketika komponen dimuatkan ulang.
Pilihan yang tersedia:¶ dailyHarian
weeklyMingguan
monthlyBulanan
normalize_headerNormalisasikan kepala POT
Memperbarui kepala gettext dan mengganti komentar POT pengganti.
location_modeLokasi sumber
Pilih cara ekstraksi menulis lokasi sumber ke file POT. Gunakan ini untuk mempertahankan lokasi dalam templat sambil menghilangkannya dari file PO yang diterjemahkan.
Pilihan yang tersedia:¶ fileGunakan pengaturan format file
keepEkstrak lokasi ke file POT
omitJangan ekstrak lokasi
data_dirsDirektori data ITS
Direktori relatif terhadap repositori yang dipisahkan dengan baris baru dan berisi subdirektori its, misalnya po untuk po/its. Direktori yang lebih awal mengesampingkan direktori berikutnya dan aturan bawaan.
comment_modeKomentar kode
Pilih apakah xgettext harus mengekstrak tanpa komentar, semua komentar, atau hanya komentar yang ditandai dengan tag tertentu.
Pilihan yang tersedia:¶ offJangan ekstrak komentar
allEkstrak semua komentar
taggedEkstrak komentar dengan tag
comment_tagTag komentar
Tag yang diteruskan ke xgettext untuk ekstraksi komentar saat menggunakan mode komentar bertag.
checksPemeriksaan xgettext
Pemeriksaan validasi xgettext tambahan yang diaktifkan untuk pesan yang diekstrak.
Pilihan yang tersedia:¶ ellipsis-unicodeellipsis-unicode
space-ellipsisspace-ellipsis
quote-unicodequote-unicode
bullet-unicodebullet-unicode
keywordKata kunci tambahan
Kata kunci ekstra yang dipisahkan baris baru, diteruskan ke xgettext menggunakan --keyword.
keyword_exclusiveGunakan kata kunci saja
When enabled, passes
--keywordwithout a value to xgettext before the additional keyword, disabling all default keywords so that only the keyword specified above is recognized.presetPraatur Meson
Praatur argumen xgettext bawaan yang sesuai dengan integrasi gettext Meson. Praatur GLib menambahkan opsi kata kunci dan penanda format yang digunakan pembantu gettext Meson.
Pilihan yang tersedia:¶ glibGLib
- Pemicu:
Pemasangan pengaya, Manual trigger, Pasca-pembaruan repositori
Memperbarui templat gettext menggunakan konvensi gettext Meson.
This add-on updates the template configured in Templat untuk terjemahan baru. It is available for gettext PO components, and the component must define a template for new translations.
The selected update frequency applies to automatic runs after repository refreshes. Installing or reconfiguring the add-on runs it immediately, and manual runs from add-on management or the API also bypass the frequency schedule. After a successful update, Weblate commits the changed template and reloads source strings.
The template update does not update translation PO files by itself. Keep Perbarui berkas PO agar sesuai dengan POT (msgmerge) installed when translation files should follow template changes automatically. The install form for this add-on can install that add-on, but existing add-on settings do not show that installation option again.
Meson requirements¶
This add-on requires xgettext; it does not invoke Meson. It follows
Meson gettext conventions by reading POTFILES or POTFILES.in
from the gettext directory and passing the GLib keyword and format-flag preset
to xgettext.
The gettext directory is the directory containing the template configured in
Templat untuk terjemahan baru. It must contain meson.build and
POTFILES or POTFILES.in. A Meson project meson.build
must be present in that directory or one of its parent directories. If both
POTFILES and POTFILES.in exist, POTFILES is used.
An adjacent POTFILES.skip excludes listed source files from extraction.
Configure this add-on from the existing Meson gettext setup. In most Meson
projects, the gettext directory is po/, the template is named after the
gettext domain, and po/meson.build calls Meson's gettext helper. Use the
same template path in Templat untuk terjemahan baru, for example
po/example.pot, and keep POTFILES or POTFILES.in next to
that meson.build file.
Weblate does not read the source file list from meson.build. It uses
POTFILES or POTFILES.in, matching Meson's gettext convention.
When the Meson project uses a non-default gettext directory or domain, mirror
that layout in the component template path.
Hasilkan berkas MO¶
- ID pengaya:
weblate.gettext.mo- Konfigurasi:
pathLokasi berkas MO yang dihasilkan
Jika tidak dispesifikasikan, lokasi berkas PO akan digunakan.
fuzzyTermasuk string yang perlu disunting
String memerlukan penyuntingan (fuzzy) biasanya belum siap untuk digunakan sebagai terjemahan.
- Pemicu:
Menghasilkan berkas MO secara otomatis untuk setiap berkas PO yang diubah.
Lokasi berkas MO yang dihasilkan dapat dikustomisasi dan kolom untuk itu menggunakan Markah templat.
Catatan
Jika terjemahan dihapus, berkas PO-nya akan dihapus dari repositori, tetapi berkas MO yang dihasilkan oleh pengaya ini tidak akan dihapus. Berkas MO harus dihapus dari hulu secara manual.
Perbarui berkas PO agar sesuai dengan POT (msgmerge)¶
Berubah pada versi 5.13: Konfigurasi Pengaturan telah dipindahkan ke Parameter format berkas.
- ID pengaya:
weblate.gettext.msgmerge- Konfigurasi:
Pengaya ini tidak memiliki konfigurasi.
- Pemicu:
Memperbarui semua berkas PO (seperti yang dikonfigurasikan oleh "Mask berkas") agar sesuai dengan berkas POT (seperti yang dikonfigurasikan oleh "Templat untuk terjemahan baru") menggunakan msgmerge.
Pengaya ini penting saat bekerja dengan berkas gettext PO di mana berkas POT (templat) diperbarui dengan string baru atau perubahan pada string yang sudah ada. Ketika berkas POT diperbarui di repositori, pengaya ini secara otomatis menggabungkan perubahan tersebut ke dalam semua berkas PO bahasa, memastikan bahwa:
String terjemahan baru muncul dalam semua bahasa
String yang dihapus ditandai sebagai usang
String yang dimodifikasikan ditandai sebagai perlu ditinjau (fuzzy)
Most msgmerge command-line options can be set up through file format parameters
configuration. Enable the po_remove_obsolete parameter to remove obsolete
#~ entries when PO files are saved.
Perbarui berkas POT (Sphinx)¶
Added in version 5.17.
- ID pengaya:
weblate.gettext.sphinx- Konfigurasi:
intervalPerbarui frekuensi
Seberapa sering pengaya harus memperbarui berkas POT ketika komponen dimuatkan ulang.
Pilihan yang tersedia:¶ dailyHarian
weeklyMingguan
monthlyBulanan
normalize_headerNormalisasikan kepala POT
Memperbarui kepala gettext dan mengganti komentar POT pengganti.
location_modeLokasi sumber
Pilih cara ekstraksi menulis lokasi sumber ke file POT. Gunakan ini untuk mempertahankan lokasi dalam templat sambil menghilangkannya dari file PO yang diterjemahkan.
Pilihan yang tersedia:¶ fileGunakan pengaturan format file
keepEkstrak lokasi ke file POT
omitJangan ekstrak lokasi
filter_modePemfilteran
Secara opsional hapus string yang tidak berguna untuk menerjemahkan setelah ekstraksi Sphinx.
Pilihan yang tersedia:¶ noneTidak Ada
weblate_docsDokumentasi Weblate
- Pemicu:
Pemasangan pengaya, Manual trigger, Pasca-pembaruan repositori
Memperbarui templat gettext menggunakan pembangun gettext Sphinx tanpa memuat konfigurasi proyek.
This add-on updates the template configured in Templat untuk terjemahan baru. It is available for gettext PO components, and the component must define a template for new translations.
The selected update frequency applies to automatic runs after repository refreshes. Installing or reconfiguring the add-on runs it immediately, and manual runs from add-on management or the API also bypass the frequency schedule. After a successful update, Weblate commits the changed template and reloads source strings.
The template update does not update translation PO files by itself. Keep Perbarui berkas PO agar sesuai dengan POT (msgmerge) installed when translation files should follow template changes automatically. The install form for this add-on can install that add-on, but existing add-on settings do not show that installation option again.
Sphinx requirements¶
This add-on requires sphinx-build, provided by the sphinx
installation extra. The template for new translations must be a .pot
file below a locales directory. The directory before locales is
used as the Sphinx source directory and must contain conf.py.
Extraction uses Weblate's bundled Sphinx configuration and does not load the project configuration. Weblate runs the Sphinx gettext builder, normalizes source references to paths relative to the source directory, and copies the generated template back to the configured template path.
Perbarui berkas POT (xgettext)¶
Added in version 5.17.
- ID pengaya:
weblate.gettext.xgettext- Konfigurasi:
intervalPerbarui frekuensi
Seberapa sering pengaya harus memperbarui berkas POT ketika komponen dimuatkan ulang.
Pilihan yang tersedia:¶ dailyHarian
weeklyMingguan
monthlyBulanan
normalize_headerNormalisasikan kepala POT
Memperbarui kepala gettext dan mengganti komentar POT pengganti.
location_modeLokasi sumber
Pilih cara ekstraksi menulis lokasi sumber ke file POT. Gunakan ini untuk mempertahankan lokasi dalam templat sambil menghilangkannya dari file PO yang diterjemahkan.
Pilihan yang tersedia:¶ fileGunakan pengaturan format file
keepEkstrak lokasi ke file POT
omitJangan ekstrak lokasi
data_dirsDirektori data ITS
Direktori relatif terhadap repositori yang dipisahkan dengan baris baru dan berisi subdirektori its, misalnya po untuk po/its. Direktori yang lebih awal mengesampingkan direktori berikutnya dan aturan bawaan.
comment_modeKomentar kode
Pilih apakah xgettext harus mengekstrak tanpa komentar, semua komentar, atau hanya komentar yang ditandai dengan tag tertentu.
Pilihan yang tersedia:¶ offJangan ekstrak komentar
allEkstrak semua komentar
taggedEkstrak komentar dengan tag
comment_tagTag komentar
Tag yang diteruskan ke xgettext untuk ekstraksi komentar saat menggunakan mode komentar bertag.
checksPemeriksaan xgettext
Pemeriksaan validasi xgettext tambahan yang diaktifkan untuk pesan yang diekstrak.
Pilihan yang tersedia:¶ ellipsis-unicodeellipsis-unicode
space-ellipsisspace-ellipsis
quote-unicodequote-unicode
bullet-unicodebullet-unicode
keywordKata kunci tambahan
Kata kunci ekstra yang dipisahkan baris baru, diteruskan ke xgettext menggunakan --keyword.
keyword_exclusiveGunakan kata kunci saja
When enabled, passes
--keywordwithout a value to xgettext before the additional keyword, disabling all default keywords so that only the keyword specified above is recognized.input_modeSumber masukan
Pilih apakah xgettext harus membaca berkas sumber dari pola glob atau dari manifes POTFILES/POTFILES.in.
Pilihan yang tersedia:¶ patternsPola berkas sumber
potfilesManifes POTFILES
languageBahasa xgettext
Bahasa pemrograman yang diteruskan ke xgettext, misalnya Python atau C. Kosongkan agar xgettext menebak bahasa berdasarkan ekstensi file.
source_patternsPola berkas sumber
Pola glob relatif-repositori baris-baru-terpisah untuk berkas yang diekstrak dengan xgettext.
potfiles_pathJalur POTFILES
Jalur relatif-repositori ke POTFILES atau POTFILES.in. Entri adalah relatif terselesaikan ke akar repositori. Jika ditampilkan di samping manifes, POTFILES.skip mengecualikan berkas terdaftar dari ekstraksi.
- Pemicu:
Pemasangan pengaya, Manual trigger, Pasca-pembaruan repositori
Memperbarui templat gettext menggunakan xgettext pada berkas sumber yang dipilih.
This add-on updates the template configured in Templat untuk terjemahan baru. It is available for gettext PO components, and the component must define a template for new translations.
The selected update frequency applies to automatic runs after repository refreshes. Installing or reconfiguring the add-on runs it immediately, and manual runs from add-on management or the API also bypass the frequency schedule. After a successful update, Weblate commits the changed template and reloads source strings.
The template update does not update translation PO files by itself. Keep Perbarui berkas PO agar sesuai dengan POT (msgmerge) installed when translation files should follow template changes automatically. The install form for this add-on can install that add-on, but existing add-on settings do not show that installation option again.
xgettext requirements¶
This add-on requires xgettext. Configure either source file patterns
or a POTFILES / POTFILES.in manifest. Source file patterns are
repository-relative glob patterns and only matching repository files are passed
to xgettext.
Entries in POTFILES or POTFILES.in are resolved relative to the
repository root. They must be relative paths, stay inside the repository, and
point to existing files. Blank lines and lines starting with # are ignored.
If a POTFILES.skip file exists next to the manifest, its entries are
excluded from extraction.
Automatic repository refresh runs are skipped unless the changed files match the configured source patterns, match files listed in the manifest, change a watched manifest, or change the add-on configuration.
Start from the build-system extraction setup when configuring this add-on.
Autotools projects usually keep gettext inputs in po/POTFILES.in and
options such as the gettext domain and xgettext flags in
po/Makevars or related Makefile.am files. Use manifest mode
with the same POTFILES.in when its entries are plain repository-relative
source paths, and copy relevant extraction behavior into the add-on settings,
for example the language, comment extraction, checks, and additional keyword.
For other build systems, use the source list or extraction command they already
run as the source of truth. CMake, custom Makefiles, npm scripts, or project
specific extraction scripts often call xgettext directly or generate
an intermediate file list. Configure source patterns for simple layouts, or use
manifest mode when the project maintains a plain file list. If a build-system
manifest contains transformations or prefixes that are not file paths, convert
it to plain repository-relative paths before using it as POTFILES.
Mixed source formats and ITS rules¶
Leave xgettext language blank to extract messages from different
formats into the same POT. Include all inputs in the source patterns or
POTFILES, for example:
common/messages.py
qt/application.desktop
qt/application.policy
data/application.metainfo.xml
Desktop entries use the native xgettext parser. Weblate bundles ITS rules for Polkit policies, AppStream/MetaInfo, GSettings, GTK Builder, and Shared MIME Info. These rules are included in the Weblate package, including Docker installations; no additional system packages are required for these formats. The Perbarui berkas POT (Meson) add-on uses the same rules.
Extraction follows upstream gettext and ITS behavior. In particular, desktop
extraction includes keys such as Name, GenericName, and Comment;
Polkit rules select description and message elements without filtering
by gettext-domain. Use untranslated policy sources: upstream Polkit rules
also select elements carrying xml:lang.
For custom XML formats or overrides, configure ITS data directories.
Enter one repository-relative directory per line, in priority order. Each must
contain an its/ subdirectory with .loc locating rules and .its
extraction rules. For example, enter po for po/its/example.loc and
po/its/example.its, or . for its/ at the repository root.
In API add-on configuration, use a list: "data_dirs": ["po", "data"].
Earlier directories take precedence over later ones, followed by Weblate's
bundled rules and gettext's system rules. The directories are passed through
GETTEXTDATADIRS. Configure them explicitly even when using Meson; Weblate
does not read data_dirs from meson.build or inherit an administrator's
GETTEXTDATADIRS environment variable.
Rule directories and files must stay inside the repository and must not be
symbolic links. A locating rule's target must name an existing .its file
in the same directory. DTDs, entity declarations, and external rule references
are not supported. Weblate validates project-local rules before extraction and
reports invalid rules as add-on errors. Changes, additions, or deletions in the
configured its/ directories trigger extraction even when source files
have not changed.
Lihat juga
Lumatkan komit Git¶
- ID pengaya:
weblate.git.squash- Konfigurasi:
squashPelumatan komit
Pilihan yang tersedia:¶ allSemua komit menjadi satu
languagePer bahasa
filePer berkas
authorPer penulis
author-languagePer author and language
append_trailersMenambahkan trailer untuk melumat pesan komit
Garis trailer adalah garis yang terlihat sama seperti kepala surel RFC 822, pada bagian akhir dari bentuk bebas pesan komit, seperti 'Co-authored-by: …'.
commit_messagePesan komit
Pesan komit ini akan digunakan alih-alih menggunakan pesan komit yang digabungkan dari komit terlumat.
- Pemicu:
Lumatkan komit Git sebelum mendorong perubahan.
Petunjuk
Untuk menghindari konflik yang tidak perlu, disarankan untuk mengkonfigurasikan penerimaan otomatis perubahan hulu melalui webhook atau API, lihat Memperbarui repositori.
Komit Git dapat dilumatkan sebelum mendorong perubahan dalam salah satu mode berikut:
Semua komit menjadi satu
Per bahasa
Per berkas
Per penulis
Per author and language
Pesan komit asli disimpan, tetapi kepengarangannya hilang kecuali Per penulis dipilih, atau pesan komit disesuaikan untuk menyertakannya.
Pesan komit asli dapat ditimpa dengan pesan komit kustom secara opsional.
Trailer (baris komit seperti Co-authored-by: …) secara opsional dapat dihapus dari pesan komit asli dan ditambahkan ke akhir pesan komit terlumat. Ini juga menghasilkan kredit Co-authored-by: yang tepat untuk setiap penerjemah.
Sesuaikan keluaran JSON¶
Berubah pada versi 5.12: Opsi Hindari spasi setelah pemisah ditambahkan.
Removed in version 5.13: Diganti oleh Parameter format berkas.
Atur ulang repositori ke hulu¶
Added in version 5.17.
- ID pengaya:
weblate.hosted.reset- Konfigurasi:
Pengaya ini tidak memiliki konfigurasi.
- Pemicu:
Buang semua perubahan dalam repositori Weblate setiap malam.
Format berkas atribut Java¶
- ID pengaya:
weblate.properties.sort- Konfigurasi:
case_sensitiveAktifkan penyortiran tombol yang peka huruf kapital
- Pemicu:
Memformat dan menyortirkan berkas properti Java.
Mengkonsolidasikan baris baru ke jenis Unix.
Pemformatan huruf kapital dari urutan escape unicode (jika ada).
Mengestrip baris kosong dan komentar.
Menyortirkan string berdasarkan kunci.
Menghapus string ganda.
Penghapusan komentar yang lawas¶
- ID pengaya:
weblate.removal.comments- Konfigurasi:
ageHari untuk disimpan
- Pemicu:
Atur jangka waktu untuk menghapus komentar.
Ini berguna untuk menghapus komentar lama yang mungkin sudah ketinggalan zaman. Gunakan dengan hati-hati karena komentar yang usang bukan berarti mereka kehilangan arti pentingnya.
Penghapusan saran yang lawas¶
- ID pengaya:
weblate.removal.suggestions- Konfigurasi:
ageHari untuk disimpan
votesAmbang batas pemungutan suara
Ambang batas untuk penghapusan. Kosongkan untuk menghapus saran terlepas dari jumlah suara. Kolom ini tidak berpengaruh jika fitur suara dimatikan.
- Pemicu:
Atur jangka waktu untuk menghapus saran.
Dapat sangat berguna sehubungan dengan pemungutan suara (lihat Tinjauan sejawat) untuk menghapus saran yang tidak menerima cukup suara positif dalam jangka waktu tertentu.
Perbarui berkas RESX¶
- ID pengaya:
weblate.resx.update- Konfigurasi:
Pengaya ini tidak memiliki konfigurasi.
- Pemicu:
Perbarui semua berkas terjemahan agar sesuai dengan berkas dasar hulu ekabahasa. String yang tidak digunakan akan dihapus dan string baru ditambahkan sebagai salinan string sumber.
Petunjuk
Gunakan Bersihkan berkas terjemahan jika Anda hanya ingin menghapus kunci terjemahan yang lawas.
Pengait Web Slack¶
Added in version 5.12.
- ID pengaya:
weblate.webhook.slack- Konfigurasi:
webhook_urlURL pengait web
event_filterKejadian perubahan yang akan memicu
Choose which change events should trigger this add-on. Kejadian perubahan yang akan memicu
eventsKejadian perubahan yang dipilih
- Pemicu:
Mengirim notifikasi ke saluran Slack berdasarkan peristiwa yang dipilih.
Peringatan
Konten notifikasi mungkin menampilkan tag HTML. Ini adalah masalah yang diketahui yang akan segera diatasi; lihat https://github.com/WeblateOrg/weblate/issues/15056.
Petunjuk
Untuk memperoleh URL kait web, ikuti langkah yang diuraikan dalam Dokumentasi Kait Web Masuk Slack
Pengait Web¶
Added in version 5.11.
Berubah pada versi 5.15: Kesesuaian panjang rahasia dengan spesifikasi sekarang divalidasikan.
- ID pengaya:
weblate.webhook.webhook- Konfigurasi:
webhook_urlURL pengait web
secretRahasia pengait web
Rahasia pengait web standar adalah string yang dienkodekan dalam base64.
event_filterKejadian perubahan yang akan memicu
Choose which change events should trigger this add-on. Kejadian perubahan yang akan memicu
eventsKejadian perubahan yang dipilih
- Pemicu:
Mengirimkan notifikasi ke layanan eksternal berdasarkan peristiwa yang dipilih, mengikuti spesifikasi Pengait Web Standar.
The request payload complies with the Weblate Messaging schema. The
action field uses the action name listed in Kejadian perubahan yang dipilih.
The OpenAPI description can also be found at /api/docs/.
Sample request body:
{
"change_id": 99,
"action": "Translation changed",
"timestamp": "2019-08-24T14:15:22Z",
"target": "Nazdar svete!",
"old": "Nazdar!",
"source": "Hello, world",
"url": "/translate/project-slug/component-slug/cs/?checksum=46add148a53cab6f",
"author": "author-username",
"user": "user-username",
"project": "project-slug",
"component": "component-slug",
"translation": "cs"
}
Contoh isi permintaan dengan kategori:
{
"change_id": 8910,
"action": "Component renamed",
"timestamp": "2025-06-11T07:15:09Z",
"target": ["new-name"],
"old": ["component-slug"],
"url": "/projects/project-slug/parent-category/child-category/sub-category/component-slug/",
"user": "testuser",
"project": "project-slug",
"component": "component-slug",
"category": [
"sub-category",
"child-category",
"parent-category"
]
}
Contoh kepala permintaan:
{
"webhook-id": "7f1c5477f6275a69af7b83236c20cb1a",
"webhook-timestamp": "1748505623.044281",
"webhook-signature": "v1,Ceo5qEr07ixe2NLpvHk3FH9bwy/WavXrAFQ/9tdO6mc="
}
webhook-signature adalah daftar tanda tangan HMAC yang dipisahkan spasi, yang dihasilkan menggunakan string secret, muatan permintaan, webhook-timestamp, dan webhook-id. Hal ini memastikan keaslian dan integritas permintaan kait web.
secret yang diberikan adalah string yang dienkodekan dalam base64 antara 24 byte (192 bit) dan 64 byte (512 bit). Dapat diawali dengan whsec_ untuk memudahkan identifikasi.
Untuk memverifikasikan permintaan, Anda dapat menggunakan metode Webhook.verify dari pustaka standardwebhooks atau implementasi "Spesifikasi Kait Web Standar".
The Terjemahan otomatis mode Add as approved translation creates approved strings when reviews are enabled for the target language. If the project settings or a language workflow override disable reviews, it creates translated strings instead. The configured mode is preserved, including for project-wide and site-wide add-ons whose targets have different review settings. Configuring this mode requires the usual add-on management permission; it does not require the configuring user to be a reviewer.
The Penemuan komponen add-on stops with an error if the repository scan exceeds 100,000 paths or matching translation files would require more than 1,000,000 path-to-mask comparisons. The comparison limit is checked using the number of repository paths multiplied by the number of file masks. These fixed limits bound resource consumption when repository content determines the masks. When either limit is exceeded, discovery does not create or remove components.
Obsolete add-ons¶
Kontributor di komentar¶
Removed in version 2026.10: Replaced by Komentar kontributor.
Existing installations of weblate.gettext.authors are migrated to the
gettext value of the po_contributor_comments file format parameter for
each affected PO component. This includes components covered by category-,
project-, and site-wide installations. New components default to disabled unless
their file format parameters are copied from another component.
Remove weblate.addons.gettext.GettextAuthorComments from custom
WEBLATE_ADDONS lists and weblate.gettext.authors entries from
DEFAULT_ADDONS. Configure Komentar kontributor instead.
Sesuaikan keluaran XML¶
Added in version 4.15.
Removed in version 5.13: Diganti oleh Parameter format berkas.
Sesuaikan keluaran YAML¶
Removed in version 5.13: Diganti oleh Parameter format berkas.
Parameter pengaya umum¶
Mesin terjemahan mesin¶
|
Alibaba |
|
Amazon Translate |
|
Anthropic |
|
Apertium APy |
|
Azure AI Translator |
|
Azure OpenAI |
|
Baidu |
|
CyrTranslit |
|
DeepL |
|
Glosbe |
|
Google Cloud Translation Lanjutan |
|
Google Cloud Translation Dasar |
|
LTEngine |
|
LibreTranslate |
|
Mistral |
|
ModernMT |
|
MyMemory |
|
Netease Sight |
|
Ollama |
|
OpenAI |
|
SAP Translation Hub |
|
Systran |
|
Weblate |
|
Memori Terjemahan Weblate |
|
Yandex |
|
Yandex v2 |
|
Youdao Zhiyun |
|
tmserver |
Format berkas¶
|
XLIFF 1.2 dengan ekstensi Apple |
|
Berkas metadata toko aplikasi |
|
Berkas ARB |
|
String Sumber Daya Android |
|
Berkas AsciiDoc |
|
Berkas takarir Advanced SubStation Alpha |
|
Catkey Haiku |
|
Sumber Daya Compose Multiplatform |
|
Berkas CSV |
|
Berkas CSV multinilai |
|
Berkas CSV Sederhana |
|
Berkas text DokuWiki |
|
Berkas DTD |
|
Berkas Flat XML |
|
Berkas Fluent |
|
Berkas JSON Format.JS |
|
Berkas go-i18n JSON v1 |
|
Berkas go-i18n JSON v2 |
|
Berkas go-i18n TOML |
|
Berkas gotext JSON |
|
Atribut GWT |
|
Berkas HTML |
|
Berkas i18next JSON v3 |
|
Berkas i18next JSON v4 |
|
Berkas IDML |
|
Berkas INI |
|
Berkas Inno Setup INI |
|
Berkas bahasa Joomla |
|
Berkas JSON |
|
Berkas struktur bersarang JSON |
|
String PHP Laravel |
|
Berkas Markdown |
|
Berkas MDX |
|
Berkas text MediaWiki |
|
Berkas lang @draggable/i18n |
|
Sumber Daya Kotlin Seluler |
|
Berkas JSON Nextcloud |
|
Berkas OpenDocument |
|
String PHP |
|
Berkas gettext PO |
|
berkas gettext PO (ekabahasa) |
|
XLIFF 1.2 dengan ekstensi gettext |
|
Properti Java |
|
Berkas RC |
|
Berkas RESJSON |
|
Berkas ResourceDictionary |
|
Berkas sumber daya .NET |
|
Berkas YAML Ruby |
|
Berkas takarir SubRip |
|
Berkas takarir SubStation Alpha |
|
String iOS |
|
Berkas Stringsdict |
|
Berkas takarir MicroDVD |
|
Berkas TermBase eXchange |
|
Berkas TOML |
|
Berkas terjemahan Qt Linguist (versi 2) |
|
Berkas terjemahan Qt Linguist (versi 1) |
|
Berkas teks biasa |
|
Berkas JSON WebExtension |
|
Berkas WixLocalization |
|
Berkas terjemahan XLIFF 1.2 |
|
Berkas terjemahan XLIFF 2.0 |
|
Excel Open XML |
|
Halaman Lengkap XWiki |
|
Properti Java XWiki |
|
Properti Halaman XWiki |
|
Berkas YAML |
Kejadian perubahan yang akan memicu¶
|
Kejadian konten terjemahan |
|
Semua kejadian perubahan |
|
Kejadian perubahan yang dipilih |
Kejadian perubahan yang dipilih¶
The following change actions can appear in notification payloads. Fedora Messaging uses the identifier column in message topics, while webhook payloads use the name column in the action field.
ID |
Identifier |
Nama |
Deskripsi |
|---|---|---|---|
|
|
Sumber daya diperbarui |
Berkas terjemahan telah disinkronkan dengan repositorinya. |
|
|
Terjemahan selesai |
Terjemahan suatu bahasa menjadi sepenuhnya diterjemahkan setelah pengeditan individual. Terjemahan otomatis, unggahan, dan pengeditan massal tidak memicu peristiwa ini. |
|
|
Terjemahan diubah |
Terjemahan yang sudah ada diedit oleh pengguna. |
|
|
Komentar ditambahkan |
Komentar ditambahkan ke sebuah string. |
|
|
Saran ditambahkan |
Saran terjemahan ditambahkan. |
|
|
Terjemahan ditambahkan |
String yang sebelumnya belum diterjemahkan telah diterjemahkan oleh pengguna. |
|
|
Diterjemahkan secara otomatis |
Terjemahan ditambahkan atau diubah oleh terjemahan otomatis. Peristiwa ini dipicu sebagai pengganti Terjemahan ditambahkan atau Terjemahan diubah. |
|
|
Saran diterima |
Saran terjemahan diterima sebagai terjemahan. |
|
|
Terjemahan dikembalikan |
Terjemahan dipulihkan ke nilai sebelumnya. |
|
|
Terjemahan diunggah |
Terjemahan ditambahkan atau diubah melalui unggahan berkas terjemahan. Peristiwa ini dipicu sebagai pengganti Terjemahan ditambahkan atau Terjemahan diubah. |
|
|
String sumber ditambahkan |
String sumber ditambahkan di luar pembaruan repositori atau unggahan. |
|
|
Komponen dikunci |
Komponen dikunci untuk penerjemahan. |
|
|
Komponen dibuka |
Komponen dibuka kuncinya untuk penerjemahan. |
|
|
Perubahan dikomit |
Perubahan komponen yang tertunda telah dikomit. |
|
|
Perubahan didorong |
Perubahan repositori telah didorong ke upstream. |
|
|
Repositori diatur ulang |
Repositori telah diatur ulang ke keadaan upstream. |
|
|
Repositori digabungkan |
Perubahan repositori upstream telah digabungkan. |
|
|
Repositori dibasis ulang |
Perubahan repositori telah di-rebase ke upstream. |
|
|
Penggabungan repositori gagal |
Gagal menggabungkan perubahan repositori upstream. |
|
|
Basis ulang repositori gagal |
Gagal melakukan rebase pada perubahan repositori. |
|
|
Penguraian gagal |
Weblate tidak dapat mengurai berkas terjemahan. |
|
|
Terjemahan dihapus |
Terjemahan bahasa dihapus. |
|
|
Saran dihapus |
Saran terjemahan dihapus. |
|
|
Terjemahan diganti |
Terjemahan diubah melalui operasi cari dan ganti. Peristiwa ini dipicu sebagai pengganti Terjemahan diubah. |
|
|
Pendorongan repositori gagal |
Gagal mendorong perubahan repositori ke upstream. |
|
|
Saran akan dihapus saat pembersihan |
Saran terjemahan usang dihapus selama pembersihan. |
|
|
String sumber diubah |
String sumber diedit di Weblate. |
|
|
String ditambahkan |
String baru ditambahkan di Weblate. |
|
|
Status massal diubah |
Status terjemahan dari satu atau beberapa string diubah secara massal. |
|
|
Keterlihatan diubah |
Visibilitas proyek atau komponen diubah. |
|
|
Pengguna ditambahkan |
Pengguna diberi akses. |
|
|
Pengguna dikeluarkan |
Akses pengguna dihapus. |
|
|
Terjemahan disetujui |
Terjemahan disetujui selama peninjauan. |
|
|
Ditandai untuk disunting |
Terjemahan ditandai perlu diedit. |
|
|
Komponen dihapus |
Komponen terjemahan dihapus. |
|
|
Proyek dihapus |
Proyek terjemahan dihapus. |
|
|
Proyek diubah namanya |
Proyek terjemahan diganti namanya. |
|
|
Komponen diubah namanya |
Komponen terjemahan diganti namanya. |
|
|
Komponen yang dipindahkan |
Komponen dipindahkan dalam proyek. |
|
|
Kontributor bergabung |
Pengguna memberikan kontribusi pertamanya pada terjemahan. |
|
|
Pengumuman diposting |
Pengumuman dipublikasikan. |
|
|
Peringatan dipicu |
Peringatan komponen dipicu. |
|
|
Bahasa ditambahkan |
Terjemahan bahasa ditambahkan. |
|
|
Bahasa diminta |
Pengguna meminta bahasa baru. |
|
|
Proyek dibuat |
Proyek terjemahan dibuat. |
|
|
Komponen dibuat |
Komponen terjemahan dibuat. |
|
|
Pengguna diundang |
Pengguna diundang ke proyek. |
|
|
Notifikasi repositori diterima |
Weblate menerima notifikasi repositori dari host kode. |
|
|
Terjemahan menggantikan berkas melalui unggahan |
Berkas terjemahan diganti oleh berkas yang diunggah. |
|
|
Lisensi diubah |
Informasi lisensi proyek atau komponen diubah. |
|
|
Perjanjian lisensi kontributor diubah |
Perjanjian lisensi kontributor diubah. |
|
|
Tangkapan layar ditambahkan |
Tangkapan layar dikaitkan dengan sebuah string. |
|
|
Tangkapan layar diunggah |
Gambar tangkapan layar diunggah. |
|
|
String diperbarui di repositori |
String diubah saat menyinkronkan dari repositori. |
|
|
Pengaya terpasang |
Add-on dipasang. |
|
|
Konfigurasi pengaya diubah |
Konfigurasi add-on diubah. |
|
|
Pengaya dicopot |
Add-on dihapus pemasangannya. |
|
|
String dihapus |
String dihapus dari terjemahan. |
|
|
Komentar dihapus |
Komentar string dihapus. |
|
|
Komentar diselesaikan |
Komentar string ditandai sebagai terselesaikan. |
|
|
Penjelasan diperbarui |
Penjelasan untuk string sumber diperbarui. |
|
|
Kategori dihapus |
Kategori komponen dihapus. |
|
|
Kategori diubah namanya |
Kategori komponen diganti namanya. |
|
|
Kategori dipindahkan |
Kategori komponen dipindahkan. |
|
|
Penyimpanan string gagal |
Weblate tidak dapat menyimpan string yang diubah. |
|
|
String ditambahkan di repositori |
String baru ditemukan saat menyinkronkan dari repositori. |
|
|
String diperbarui di unggahan |
String diubah saat memproses berkas yang diunggah. |
|
|
String ditambahkan di unggahan |
String baru ditemukan saat memproses berkas yang diunggah. |
|
|
Terjemahan diperbarui oleh sumber unggahan |
Terjemahan disinkronkan setelah mengunggah berkas sumber. |
|
|
Terjemahan komponen selesai |
Semua terjemahan bahasa dalam komponen menjadi sepenuhnya diterjemahkan setelah pengeditan individual. Terjemahan otomatis, unggahan, dan pengeditan massal tidak memicu peristiwa ini. |
|
|
Pemeriksaan paksa diterapkan |
Terjemahan ditandai perlu diedit oleh pemeriksaan yang diwajibkan. |
|
|
Perubahan dipropagasikan |
Pengeditan terjemahan diterapkan ke string lain yang cocok. |
|
|
Berkas diunggah |
Berkas diunggah ke terjemahan. |
|
|
Penanda ekstra diperbarui |
Flag tambahan string sumber diperbarui. |
|
|
Huruf diunggah |
Font diunggah. |
|
|
Huruf diubah |
Font yang diunggah diubah. |
|
|
Huruf dihapus |
Font yang diunggah dihapus. |
|
|
Sinkronkan terjemahan yang dipaksakan |
Berkas terjemahan dipaksa disinkronkan dengan repositori. |
|
|
Pindai ulang terjemahan yang dipaksakan |
Berkas terjemahan dipindai ulang secara paksa untuk perubahan. |
|
|
Tangkapan layar dihapus |
Tangkapan layar dihapus. |
|
|
Label ditambahkan |
Label ditambahkan ke string. |
|
|
Label dihapus |
Label dihapus dari string. |
|
|
Pembersihan repositori |
Pohon kerja repositori dibersihkan. |
|
|
String sumber ditambahkan dalam unggahan |
String sumber ditambahkan saat memproses berkas yang diunggah. |
|
|
String sumber ditambahkan dalam repositori |
String sumber ditambahkan saat menyinkronkan dari repositori. |
|
|
Proyek dicadangkan |
Cadangan proyek dibuat. |
|
|
Proyek dipulihkan |
Proyek dipulihkan dari cadangan. |
|
|
Komponen dipulihkan |
Komponen dipulihkan dari cadangan. |
|
|
Suntingan pengguna dikembalikan |
Semua suntingan yang dipilih oleh pengguna dibatalkan. |
|
|
Pengaturan proyek diubah |
Pengaturan proyek diubah. |
|
|
Pengaturan komponen diubah |
Pengaturan komponen diubah. |
|
|
Akses pengguna diubah |
Izin akses pengguna diubah. |
|
|
Ruang kerja dibuat |
Ruang kerja dibuat. |
|
|
Pengaturan ruang kerja diubah |
Pengaturan ruang kerja diubah. |
|
|
Proyek dipindahkan |
Proyek dipindahkan ke dalam atau ke luar dari ruang kerja. |
|
|
Repositori jarak jauh diperbarui |
Pembaruan repositori jarak jauh selesai. |
|
|
Pembaruan repositori jarak jauh gagal |
Gagal memperbarui repositori jarak jauh. |
|
|
Peringatan diberhentikan |
Peringatan komponen telah diberhentikan. |
|
|
Peringatan dibuka kembali |
Peringatan komponen dibuka kembali setelah konteksnya berubah. |
Menyesuaikan daftar pengaya¶
Daftar pengaya dikonfigurasi dengan WEBLATE_ADDONS. Untuk menambahkan pengaya lain, cukup sertakan nama kelas mutlak dalam pengaturan ini.
Menulis pengaya¶
Anda juga dapat menulis pengaya Anda sendiri, membuat subkelas dari weblate.addons.base.BaseAddon untuk mendefinisikan metadata pengaya, lalu mengimplementasikan panggilan balik untuk melakukan pemrosesan.
Lihat juga
Menjalankan skrip dari pengaya¶
Pengaya juga dapat digunakan untuk menjalankan skrip eksternal. Ini dulunya terintegrasi di Weblate, tetapi sekarang Anda harus menulis beberapa kode untuk membungkus skrip Anda dengan pengaya.
# Copyright © Michal Čihař <michal@weblate.org>
#
# SPDX-License-Identifier: GPL-3.0-or-later
"""Example pre commit script."""
from __future__ import annotations
from typing import ClassVar
from django.utils.translation import gettext_lazy
from weblate.addons.events import AddonEvent
from weblate.addons.scripts import BaseScriptAddon
class ExamplePreAddon(BaseScriptAddon):
# Event used to trigger the script
events: ClassVar[set[AddonEvent]] = {
AddonEvent.EVENT_PRE_COMMIT,
}
# Name of the addon, has to be unique
name = "weblate.example.pre"
# Verbose name and long description
verbose = gettext_lazy("Execute script before commit")
description = gettext_lazy("This add-on executes a script.")
# Script to execute
script = "/bin/true"
# File to add in commit (for pre commit event)
# does not have to be set
add_file = "po/{{ language_code }}.po"
Untuk petunjuk pemasangan, lihat Pemeriksaan kualitas khusus, pengaya, saran otomatis, dan perbaikan otomatis.
Skrip dijalankan dengan mengatur direktori saat ini ke root repositori VCS untuk komponen apa pun.
Selain itu, variabel lingkungan berikut juga tersedia:
- WL_VCS¶
Sistem kontrol versi digunakan.
- WL_REPO¶
URL repositori hulu.
- WL_PATH¶
Lokasi mutlak ke repositori VCS.
- WL_BRANCH¶
Cabang repositori dikonfigurasikan dalam komponen saat ini.
- WL_FILEMASK¶
Mask berkas untuk komponen saat ini.
- WL_TEMPLATE¶
Nama berkas templat untuk terjemahan ekabahasa (dapat dikosongkan).
- WL_NEW_BASE¶
Nama berkas dari berkas yang digunakan untuk membuat terjemahan baru (dapat dikosongkan).
- WL_FILE_FORMAT¶
Format berkas yang digunakan dalam komponen saat ini.
- WL_LANGUAGE¶
Bahasa terjemahan yang sedang diproses (tidak tersedia untuk kait tingkat komponen).
- WL_PREVIOUS_HEAD¶
HEAD sebelumnya setelah pembaruan (hanya tersedia setelah menjalankan kait pasca-pembaruan).
- WL_COMPONENT_SLUG¶
Slug komponen digunakan untuk mengonstruksikan URL.
- WL_PROJECT_SLUG¶
Slug proyek digunakan untuk mengonstruksikan URL.
- WL_COMPONENT_NAME¶
Nama komponen.
- WL_PROJECT_NAME¶
Nama proyek.
- WL_COMPONENT_URL¶
URL Komponen.
- WL_ENGAGE_URL¶
URL keterlibatan proyek.
Lihat juga
Pemrosesan pasca-pembaruan repositori¶
Dapat digunakan untuk memperbarui berkas terjemahan ketika sumber hulu VCS berubah. Untuk mencapai ini, harap ingat bahwa Weblate hanya melihat berkas yang dikomit ke VCS, jadi Anda perlu melakukan perubahan sebagai bagian dari skrip.
Misalnya dengan Gulp Anda dapat melakukannya menggunakan kode berikut:
#! /bin/sh
gulp --gulpfile gulp-i18n-extract.js
git commit -m 'Update source strings' src/languages/en.lang.json
Pemrosesan terjemahan pra-komit¶
Gunakan skrip komit untuk mengubah terjemahan secara otomatis sebelum dikomit ke repositori.
Itu diteruskan sebagai parameter tunggal yang terdiri atas nama berkas dari terjemahan saat ini.
Catatan aktivitas pengaya¶
Catatan aktivitas pengaya melacak eksekusi pengaya dan dapat digunakan untuk melacak aktivitas pengaya.
Each entry records whether processing is pending, successful, failed, or skipped. Skipped entries include the reason the add-on did not run, such as an incompatible component, no relevant changes, or a configured schedule that is not due yet. A successful entry can still mean that the add-on checked its inputs but found nothing to change.
For scope-wide add-ons that process components independently, the activity log contains a separate entry for each component.
Catatan dapat dipangkas setelah interval waktu tertentu dengan mengkonfigurasikan ADDON_ACTIVITY_LOG_EXPIRY.