Dapatkan drupal bahasa dipilih hosting
Ia adalah mungkin untuk menyesuaikan proses rundingan bahasa kedua-dua untuk bagaimana kita mengesan bahasa pengguna dan juga kepada jenis data yang mereka minta.
API rundingan bahasa adalah berdasarkan dua konsep utama:
- jenis bahasa. yang menerangkan jenis kemungkinan kandungan yang boleh diterjemahkan
- penyedia bahasa. yang membolehkan Drupal untuk mengesan bahasa yang ia perlu berkhidmat untuk user (ambil perhatian bahawa pembekal bahasa dipanggil kaedah bahasa dalam Drupal 8)
Mungkir disediakan oleh Drupal
Jenis bahasa
Drupal teras mentakrifkan tiga terbina dalam jenis bahasa:
Bahasa antara muka Ia adalah bahasa utama di halaman. Ia digunakan untuk membentangkan elemen antara muka pengguna diterjemahkan seperti tajuk, label, teks bantuan, dan mesej. bahasa kandungan ini digunakan untuk memilih di mana bahasa untuk memaparkan kandungan yang boleh didapati dalam lebih daripada satu bahasa (lihat keupayaan berbilang bahasa API Field baru untuk maklumat lanjut). bahasa URL Ini adalah bahasa yang dikaitkan dengan URL. Apabila menjana URL, nilai ini akan digunakan oleh url () sebagai lalai jika tidak ada keutamaan yang jelas disediakan.
jenis bahasa yang berbeza sering berkongsi nilai yang sama, tetapi kemudian mereka boleh mempunyai nilai-nilai bebas jika perlu.
Providers bahasa
Teras termasuk pembekal berikut:
- URL - Tentukan bahasa dari URL (jalan awalan atau domain).
- Sesi - Tentukan bahasa dari parameter permintaan / sesi.
- Pengguna - Ikuti pilihan bahasa pengguna.
- Browser - Tentukan bahasa dari tetapan bahasa penyemak imbas.
- bahasa lalai - Gunakan bahasa tapak lalai.
Berikut adalah gambar yang menunjukkan hubungan antara jenis dan pembekal:
Menentukan jenis bahasa
Bermula pada Drupal 7, API bahasa membolehkan menyumbang modul untuk menentukan jenis bahasa tambahan melalui hook_language_types_info () dan mengubah definisi jenis bahasa yang sedia ada melalui hook_language_types_info_alter ().
Sejenis bahasa mungkin boleh dikonfigurasikan atau tetap. Sejenis bahasa dikonfigurasikan muncul dalam Penyelarasan ini> Wilayah dan bahasa> Bahasa> Pengesanan dan laman pemilihan, di mana penyedia bahasa untuk jenis bahasa boleh dikonfigurasikan. Terdapat beberapa jenis bahasa juga tetap yang telah ditentukan terlebih dahulu tetapan (modul ditetapkan) rundingan dan oleh itu, tidak muncul dalam halaman konfigurasi. Berikut adalah coretan kod yang menjadikan bahasa kandungan (yang secara lalai mewarisi nilai-nilai bahasa antara muka ini) dikonfigurasikan:
Setiap jenis bahasa dikonfigurasikan akan mempunyai penukar blok (bebas) bahasa sendiri. Jelas sekali, jika dua jenis bahasa dikonfigurasi dengan cara yang sama, blok penukar bahasa mereka akan menjadi fungsi serupa dan akan bertindak ke atas kedua-dua jenis bahasa.
Dalam Drupal 6.x, terdapat jenis hanya satu bahasa, yang dinamakan hanya bahasa. Semasa pengawalan bahasa tetapan rundingan bahasa yang dipilih digunakan untuk menentukan nilainya. Dalam Drupal 7.x, proses yang sama berlaku bagi setiap jenis bahasa ditakrifkan, lihat drupal_language_initialize () untuk maklumat lanjut.
Menentukan penyedia bahasa adat
Setiap jenis bahasa boleh mempunyai tetapan rundingan bahasa yang berbeza, iaitu setiap jenis bahasa boleh mempunyai satu set yang berbeza kaedah pengesanan bahasa. atau pembekal. diberikan kepadanya.
penyedia bahasa adalah fungsi panggilan balik mudah yang melaksanakan logik tertentu untuk mengembalikan kod bahasa. Sebagai contoh, locale_language_from_url yang () mencari untuk awalan laluan yang sah atau nama domain dalam permintaan URL semasa. Jika pembekal bahasa tidak mengembalikan kod bahasa yang sah, pembekal akan datang yang berkaitan dengan jenis bahasa (berdasarkan berat pembekal) dirujuk. cara ini, konsep fallback adalah umum dan membuka ikatan dari awalan jalan tetap> keutamaan pengguna> tetapan penyemak imbas> skim bahasa lalai digunakan dalam Drupal 6.x.
Juga penyedia bahasa adalah modul boleh ditakrif melalui hook_language_negotiation_info () dan penyedia bahasa definisi boleh diubah melalui hook_language_negotiation_info_alter (). Berikut adalah contoh coretan yang membolehkan awalan jalan diabaikan untuk laluan pentadbiran:
Dalam usaha untuk perubahan di atas dapat dilaksanakan, "Pengesanan bahasa dan pemilihan" borang perlu dikemukakan.
definisi pembekal bahasa mungkin termasuk dua lagi panggilan balas selain pembekal bahasa itu sendiri:
- Jika pembekal bahasa boleh mengambil kesempatan daripada satu blok penukar bahasa, panggil balik penukar yang akan membolehkan ia kembali pautan suis bahasa yang sesuai dengan logik, lihat locale_language_switcher_url () untuk contoh.
- Jika pembekal bahasa perlu menulis semula URL, ia boleh menentukan panggil balik url_rewrite yang akan menyediakan logik menulis semula.