Frontend Weblate¶
Frontend saat ini dibangun menggunakan Bootstrap, jQuery dan beberapa pustaka pihak ketiga.
Peramban yang didukung¶
Weblate mendukung rilis terbaru dan stabil dari semua peramban dan platform besar.
Peramban alternatif yang menggunakan versi terbaru WebKit, Blink, atau Gecko, baik secara langsung maupun melalui API tampilan web platform, tidak didukung secara eksplisit. Namun, Weblate seharusnya (dalam kebanyakan kasus) ditampilkan dan berfungsi dengan benar di peramban tersebut.
Peramban lama mungkin berfungsi, tetapi beberapa fiturnya mungkin terbatas.
Accessibility¶
Weblate targets WCAG 2.2 Level AA for new and changed user-facing functionality where practical. Use semantic HTML and Bootstrap components before adding custom interaction code.
When changing the frontend:
Make all interactive controls reachable and usable with a keyboard.
Keep focus order logical and preserve visible focus styling.
Prefer native buttons, links, inputs, selects, and tables over custom widgets.
Associate every form control with a label, help text, and validation errors where applicable.
Do not use color, icon shape, or position as the only way to convey state.
Announce dynamic status changes that are not otherwise visible to assistive technology.
Respect reduced-motion preferences for animation or scrolling behavior.
Test changed workflows with keyboard-only navigation and, when practical, a screen reader spot check.
Pengelolaan dependensi¶
Memasang dan mengelola pustaka pihak ketiga di sisi klien proyek Django bisa jadi agak rumit. Bagian ini menyediakan panduan langkah demi langkah tentang cara memasang dan mengelola pustaka pihak ketiga yang digunakan di sisi klien Weblate menggunakan Webpack.
Prasyarat¶
Sebelum melanjutkan pemasangan, pastikan Anda memiliki prasyarat berikut:
A supported
Node.jsrelease.Pengelola paket
yarnterpasang di sistem Anda.Jalankan
cd client.Run
yarn install --check-files.
Pemasangan¶
Untuk memasang pustaka, pertama jalankan perintah berikut:
yarn add <lib-name>
Mengimpor Pustaka¶
Lalu, ada dua cara untuk mengimpor pustaka:
- Jika ini adalah pustaka untuk seluruh proyek (digunakan/dibutuhkan di semua/sebagian besar halaman):
Impor pustaka di
src/main.js.Dan mendeklarasikannya dalam cakupan global (jika diperlukan).
- Jika pustaka tersebut bersifat spesifik halaman (pustaka digunakan pada halaman atau templat tertentu):
Buat berkas baru bernama
src/<lib-name>.js.Impor pustaka ke dalamnya. Lalu, masukkan ke dalam objek
windowagar dapat diakses secara global.Tambahkan entri di
webpack.config.js:<lib-name>: "src/<lib-name>.js".Tambahkan nama pustaka dalam deretan
excludePrefixesdimainLicenseTransformdiwebpack.config.js.Tambahkan nama berkas lisensi dalam
additionalFilesdiLicensePlugindalam deretanpluginsdiwebpack.config.js.Buat fungsi
<lib-name>LicenseTransformuntuk berkas lisensi yang diperkenalkan pada langkah sebelumnya dan gunakan fungsi tersebut.
Catatan: Ganti
<lib-name>dengan nama sebenarnya dari pustaka pihak ketiga.
Membangun Pustaka¶
Bangun pustaka yang digunakan oleh proyek, dengan menjalankan perintah berikut:
yarn build
Menyertakan Pustaka¶
Pustaka sekarang telah dibangun dan siap digunakan. Untuk mengaktifkannya, ikuti langkah berikut:
Jika pustaka diimpor dalam
src/main.js, tidak ada langkah lebih lanjut yang diperlukan (karena sudah disertakan dalambase.html).Jika pustaka diimpor dalam berkas spesifiknya
src/<lib-name>.js, dalamweblate/templatesgunakan tag include untuk menautkan ke berkas JavaScript statis yang dibangun:
{% load static %}
<script src="{% static 'js/vendor/<lib-name>.js' %}"></script>
Gaya pengkodean¶
Weblate relies on Biome for formatting and linting the JavaScript and CSS code. Django templates are formatted and linted separately by djade and djlint.
Lokalisasi¶
Jika Anda membutuhkan teks yang terlihat oleh pengguna dalam kode frontend, teks tersebut harus dapat dilokalisasikan. Umumnya, Anda hanya perlu membungkus teks Anda di dalam fungsi gettext, tetapi ada fitur yang lebih kompleks yang tersedia:
document.write(gettext("this is to be translated"));
var object_count = 1 // or 0, or 2, or 3, ...
s = ngettext("literal for the singular case",
"literal for the plural case", object_count);
fmts = ngettext("There is %s object. Remaining: %s",
"There are %s objects. Remaining: %s", 11);
s = interpolate(fmts, [11, 20]);
// s is "There are 11 objects. Remaining: 20"
Lihat juga
Ikon¶
Weblate saat ini menggunakan Material Design Icons, jika Anda mencari simbol baru, periksa itu.
Selain itu, ada scripts/optimize-svg untuk mengurangi ukuran SVG karena sebagian besar ikon tersemat di dalam HTML untuk memungkinkan penataan gaya jalur.