field_multilingual_available_languages
- Versions
- 7
field_multilingual_available_languages($obj_type, $field, $suggested_languages = NULL)
Collect the available languages for the given entity type and field.
If an entity has a translation handler and the given field is translatable, a (not necessarily strict) subset of the current enabled languages will be returned, otherwise only LANGUAGE_NONE will be returned. Since the default value for a 'translatable' entity property is FALSE, we ensure that only entities that are able to handle translations actually get translatable fields.
Parameters
$obj_type The type of the entity the field is attached to, e.g. 'node' or 'user'.
$field A field structure.
$suggested_languages An array of language preferences which will be intersected with the enabled languages.
Return value
An array of valid language codes.
Code
modules/field/field.multilingual.inc, line 35
<?php
function field_multilingual_available_languages($obj_type, $field, $suggested_languages = NULL) {
$field_languages = &drupal_static(__FUNCTION__, array());
$field_name = $field['field_name'];
if (!isset($field_languages[$field_name]) || !empty($suggested_languages)) {
$translation_handlers = field_multilingual_check_translation_handlers($obj_type);
if ($translation_handlers && $field['translatable']) {
// The returned languages are a subset of the intersection of enabled ones
// and suggested ones.
$available_languages = field_multilingual_content_languages();
$languages = !empty($suggested_languages) ? $available_languages = array_intersect($available_languages, $suggested_languages) : $available_languages;
foreach (module_implements('field_languages') as $module) {
$function = $module . '_field_languages';
$function($obj_type, $field, $languages);
}
// Accept only available languages.
$result = array_values(array_intersect($available_languages, $languages));
// Do not cache suggested values as they might alter the general result.
if (empty($suggested_languages)) {
$field_languages[$field_name] = $result;
}
}
else {
$result = $field_languages[$field_name] = array(LANGUAGE_NONE);
}
}
else {
$result = $field_languages[$field_name];
}
return $result;
}
?>Login or register to post comments 