Jadi saya mencoba menggunakan fungsi Drupal.t () di beberapa kode Javascript khusus saya (dalam tema saya).
Bagaimana cara mendapatkan string yang saya butuhkan terisi dalam objek Drupal.locale.strings? Saya melihat beberapa string di sana, tetapi tentu saja seluruh basis data tidak dapat dimuat. Apa cara terbaik untuk menambahkannya? Saya ingin menggunakan fungsi PHP t () sehingga string yang ditambahkan dapat diedit di antarmuka Translate.
Baru saja mengalami masalah yang sama hari ini dan merisetnya lebih sedikit. Chris di atas memiliki komentar yang baik, tetapi pada akhirnya tidak benar. Anda tidak perlu menggunakan Drupal. Perilaku agar bisa berfungsi.
Seperti dicatat oleh JonMcL sendiri dalam komentar terakhirnya, fungsi _locale_parse_js_file di locale.inc bertanggung jawab atas penguraian pola Drupal.t ("somestring") mulai dari baris 1493 (dalam Drupal 7.22):
Ini hanya fungsi parsing "bodoh" yang tidak peduli dengan semantik dan hanya menemukan semua contoh Drupal.t ("sesuatu") dalam file apa pun yang diterimanya.
Apa yang bisa menjadi gotcha umum adalah bahwa Anda harus memiliki seluruh string dalam kode sumber Anda dalam bentuk Drupal.t ("translateme"), karena (jelas) tidak ada javascript yang dieksekusi ketika file dibuka melalui file_get_contents di php. Itu berarti Anda tidak pernah dapat melakukan Drupal.t (somevariable) dan berharap Drupal akan menangkap semua variabel javascript yang berisi string yang Anda lemparkan ke Drupal.t.
Jika Anda ingin menerjemahkan "wanita" untuk bagan dan memberikan konteks pada string, sintaksinya adalah:
Juga, jika Anda telah menginstal drush, verifikasi file js Anda diuraikan dengan perintah;
Kemudian Anda dapat membersihkan cache dengan
... dan ulangi perintah vget di atas untuk memverifikasi daftar file yang sudah diuraikan kosong. Dengan cara ini file Anda akan mendapatkan reparasi jalankan berikutnya (verifikasi juga).
sumber
drush vget javascript_parsed
! Cara yang lebih cepat untuk memaksa membangun kembali file skrip terjemahan adalah dengan hanya menghapus file CSS dan JS yang digunakandrush @sitealias cc css-js
.Pasangan yang saya temui saat menerapkan JS multibahasa dalam Drupal 7:
Pertama, pastikan file JS Anda tidak termasuk inline . Pada Drupal 7.22,
Drupal.locale.strings
tampaknya tidak secara otomatis memperbarui sendiri jika Anda inlining file JavaScript di Drupal . Antarmuka terjemahan masih mengambil string, menambah kebingungan saya.Kedua, pastikan Anda menggunakan Drupal.behaviors untuk melampirkan JS Anda ke halaman. Penutupan JS reguler tidak akan memicu parsing
Drupal.t()
doa "ajaib" Drupal . Secara teknis ini adalah sesuatu yang seharusnya Anda lakukan;)Dari sana itu benar-benar tidak menyakitkan. Cukup gunakan
Drupal.t()
sekitar teks yang ingin Anda terjemahkan, kosongkan cache Anda setiap kali Anda memperbarui file, dan penerjemah Anda akan melihat string baru di antarmuka di/admin/config/regional/translate/translate
. Cukup bagus setelah Anda membuatnya berfungsi.sumber