Sayangnya, jawaban-diri Anda tidak terlalu universal. Bahasa bidang dan bahasa simpul bukan hal yang sama.
Bahasa bidang hanya diperlukan jika Anda menggunakan API Terjemahan Bidang (misalnya terjemahan Entitas ). Ketika Anda mulai menggunakannya, beberapa bidang dikonversi menjadi dapat diterjemahkan.
Bidang yang dapat diterjemahkan memiliki kode bahasa, yang benar-benar masuk akal. Tetapi jika bidang tidak dapat diterjemahkan, kode bahasa akan selalu (dan untuk semua jenis konten, entitas, dll) - LANGUAGE_NONE
(terbaik menggunakan konstanta LANGUAGE_NONE
dan bukan string 'und'
).
Jadi dengan solusi Anda, Anda bisa mendapatkan situasi ketika sebuah simpul adalah Rusia, tetapi bidang simpul menggunakan LANGUAGE_NONE
.
Untungnya, bidang dilampirkan ke formulir dengan '#language'
kunci, yang selalu berisi kode bahasa yang benar.
$lang = $form['FIELDNAME']['#language'];
$form['FIELDNAME'][$lang][0]['value']['#value'] = $value;
Jika Anda tidak memiliki akses ke formulir terlampir, fungsi API Bahasa Bidang dapat bermanfaat.
foreach
loop. Jika hanya LANGUAGE_NONE, itu hanya sekali jalan. Dalam pengertian form_alter, harus secara teknis mengubah bahasa apa pun yang dimiliki formulir.