Skip to content

Instantly share code, notes, and snippets.

@DuaelFr
Last active September 11, 2015 14:53
Show Gist options
  • Save DuaelFr/17c7eb2fff4127157e76 to your computer and use it in GitHub Desktop.
Save DuaelFr/17c7eb2fff4127157e76 to your computer and use it in GitHub Desktop.
Small hook to make field form elements translatables without i18n_field.
<?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