Sebahagian besar akhbar yang mahukan e-akhbar diterbitkan dalam bahasa Bengali, Hindi, Urdu atau Arab. Pembacanya tidak sepatutnya melihat bar alat bahasa Inggeris di atas muka depan bahasa Bengali. Untuk Inkfold 1.1 kami menterjemah seluruh laman pembaca ke bahasa Bengali, Hindi dan Arab, termasuk susun atur kanan ke kiri, manakala bilik berita kekal dalam bahasa Inggeris untuk kakitangan yang mengendalikannya.
Semua teks yang kelihatan melalui satu fungsi
Langkah pertama paling tidak menarik: semua teks di laman awam kini melalui __() Laravel, bentuk jamak melalui trans_choice() dan tarikh melalui translatedFormat() Carbon, jadi “Monday, 26 October” menjadi “সোমবার, 26 অক্টোবর” tanpa templat berasingan. Terjemahan disimpan dalam fail JSON biasa, satu bagi setiap bahasa, dengan ayat bahasa Inggeris sebagai kunci. Menambah bahasa Perancis atau Urdu kemudian hanya perlu menyalin satu fail dan menterjemah nilainya.
Memilih bahasa
Satu middleware kecil memilih bahasa bagi setiap permintaan mengikut susunan ini: pilihan pelawat yang disimpan dalam sesi, bahasa yang disimpan dalam akaun pembaca yang log masuk, pengepala Accept-Language pelayar apabila lebih daripada satu bahasa ditawarkan, dan akhir sekali bahasa lalai laman. Permintaan ke bilik berita melangkau middleware ini. Penerbit menentukan bahasa yang ditawarkan dalam tetapan.

Kanan ke kiri tanpa mencerminkan akhbar
Setiap bahasa membawa arah tulisannya dalam konfigurasi, dan susun atur menulisnya pada atribut dir halaman. Kebanyakan antara muka kemudian mengikut dengan sendirinya. Satu blok peraturan RTL mengurus selebihnya: panel sisi bertukar sisi, anak panah sebelum dan seterusnya diterbalikkan, dan penanda “bersambung di” dalam tetingkap berita beralih ke sebelah lain.
Satu perkara sengaja tidak diterbalikkan: halaman akhbar. Akhbar bahasa Bengali atau Inggeris dicetak dari kiri ke kanan, dan susunan halaman serta kedudukan berita mesti kekal seperti dicetak walaupun antara muka di sekelilingnya dibaca dari kanan ke kiri. Bekas halaman mengekalkan direction: ltr, jadi koordinat setiap berita yang boleh diklik kekal tepat.

Fon hanya untuk bahasa yang aktif
Tulisan Bengali, Devanagari dan Arab memerlukan fon tersendiri. Memuatkan kesemuanya untuk setiap pelawat hanya menambah beban tanpa faedah, jadi susun atur hanya meminta fon Noto bagi bahasa yang aktif dan menambahkannya ke susunan fon melalui pemboleh ubah CSS.
Ujian yang gagal apabila terjemahan tertinggal
Terjemahan reput secara senyap: seseorang menambah butang dan terlupa fail JSON. Satu ujian kini mengimbas templat laman pembaca untuk teks yang boleh diterjemah dan gagal jika mana-mana fail bahasa tertinggal. Ia menemui satu kejutan: kunci bernama “Pagination”, pada sistem fail yang tidak membezakan huruf besar dan kecil, dibaca daripada fail pagination.php milik Laravel dan memulangkan tatasusunan. Elakkan kunci yang sama dengan nama fail terjemahan.
Perkara utama
- Salurkan semua teks awam melalui
__()dan simpan terjemahan dalam JSON dengan ayat asal sebagai kunci. - Tentukan bahasa daripada sesi, akaun, pelayar dan lalai, mengikut susunan itu.
- Tetapkan
dirpada dokumen dan tulis peraturan RTL yang khusus, tetapi kekalkan arah kandungan bercetak. - Muatkan fon tulisan khas hanya untuk bahasa aktif, dan uji teks yang tertinggal.
Sebelum ini dalam siri: bacaan luar talian dengan service worker. Tukar bahasa di bahagian atas demo Inkfold; perisiannya ada di Charming Theme.
Perlukan laman Laravel atau WordPress dalam bahasa Bengali, Arab atau beberapa bahasa sekali gus? Mari berbincang — ArtinTech Solution membina laman pelbagai bahasa setiap minggu.