Last active
September 11, 2015 14:53
-
-
Save DuaelFr/17c7eb2fff4127157e76 to your computer and use it in GitHub Desktop.
Small hook to make field form elements translatables without i18n_field.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* Implements hook_form_alter(). | |
* | |
* Allow all field_* form fields title and description to be translated. | |
*/ | |
function MYMODULE_form_alter(&$form, $form_state) { | |
foreach (element_children($form) as $key) { | |
if (strpos($key, 'field_') === 0) { | |
$lang = $form[$key]['#language']; | |
// Make root element title, description and options translatables. | |
_MYMODULE_form_element_translate($form[$key][$lang]); | |
// Make each delta title, description and options translatables. | |
foreach (element_children($form[$key][$lang]) as $delta) { | |
_MYMODULE_form_element_translate($form[$key][$lang][$delta]); | |
// Make each delta's subelement title, description and options | |
// translatables. | |
foreach (element_children($form[$key][$lang][$delta]) as $subkey) { | |
_MYMODULE_form_element_translate($form[$key][$lang][$delta][$subkey]); | |
} | |
} | |
} | |
} | |
} | |
/** | |
* Helper to make a form element translatable. | |
* | |
* @param array $element | |
* The form element to make translatable. | |
*/ | |
function _MYMODULE_form_element_translate(&$element) { | |
if (!empty($element['#MYMODULE_translated'])) { | |
return; | |
} | |
$element['#MYMODULE_translated'] = TRUE; | |
if (!empty($element['#title'])) { | |
$element['#title'] = t($element['#title']); | |
} | |
if (!empty($element['#description'])) { | |
$element['#description'] = t($element['#description']); | |
} | |
if (!empty($element['#options'])) { | |
foreach ($element['#options'] as $key => $value) { | |
$element['#options'][$key] = t($value); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment