दुर्भाग्य से, आपका आत्म-उत्तर इतना सार्वभौमिक नहीं है। क्षेत्र भाषा और नोड भाषा समान चीजें नहीं हैं।
फ़ील्ड भाषा की आवश्यकता तभी है जब आप फ़ील्ड अनुवाद एपीआई (उदाहरण के लिए अनुवाद अनुवाद ) का उपयोग कर रहे हों । जब आप इसका उपयोग करना शुरू करते हैं, तो कुछ क्षेत्रों को अनुवाद योग्य में बदल दिया जाता है।
अनुवाद योग्य फ़ील्ड में भाषा कोड होता है, जो वास्तव में समझ में आता है। लेकिन यदि क्षेत्र अनुवाद योग्य नहीं है, तो भाषा कोड हमेशा (और सभी सामग्री प्रकार, निकाय, आदि के लिए) होगा - LANGUAGE_NONE(निरंतर LANGUAGE_NONEऔर स्ट्रिंग का उपयोग करने के लिए सबसे अच्छा 'und')।
तो अपने समाधान के साथ आप एक स्थिति प्राप्त कर सकते हैं जब एक नोड रूसी है, लेकिन नोड का एक क्षेत्र उपयोग करता है LANGUAGE_NONE।
खुशी से, फ़ील्ड '#language'कुंजी के साथ फ़ॉर्म से जुड़ी होती हैं , जिसमें हमेशा सही भाषा कोड होता है।
$lang = $form['FIELDNAME']['#language'];
$form['FIELDNAME'][$lang][0]['value']['#value'] = $value;
यदि आपके पास संलग्न फ़ॉर्म तक पहुंच नहीं है, तो फ़ील्ड भाषा एपीआई फ़ंक्शन उपयोगी हो सकते हैं।
foreachलूप का उपयोग करके इसका उपयोग करता हूं । यदि यह सिर्फ LANGUAGE_NONE है, तो यह एक ही रन है। Form_alter अर्थ में, यह तकनीकी रूप से जो भी भाषा है, उसे बदलना चाहिए।