function field_available_languages

Collects the available languages for the given entity type and field.

If the given field has language support enabled, an array of available 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

$entity_type: The type of the entity the field is attached to, e.g. 'node' or 'user'.

$field: A field structure.

Return value

An array of valid language codes.

Related topics

12 calls to field_available_languages()
FieldTranslationsTestCase::testFieldAvailableLanguages in modules/field/tests/field.test
Ensures that only valid values are returned by field_available_languages().
FieldTranslationsTestCase::testFieldFormTranslationRevisions in modules/field/tests/field.test
Tests field translations when creating a new revision.
FieldTranslationsTestCase::testFieldInvoke in modules/field/tests/field.test
Test the multilanguage logic of _field_invoke().
FieldTranslationsTestCase::testFieldInvokeMultiple in modules/field/tests/field.test
Test the multilanguage logic of _field_invoke_multiple().
FieldTranslationsTestCase::testTranslatableFieldSaveLoad in modules/field/tests/field.test
Test translatable fields storage/retrieval.

... See full list

1 string reference to 'field_available_languages'
field_info_cache_clear in modules/field/field.info.inc
Clears the field info cache without clearing the field data cache.

File

modules/field/field.multilingual.inc, line 89

Code

function field_available_languages($entity_type, $field) {
    static $drupal_static_fast;
    if (!isset($drupal_static_fast)) {
        $drupal_static_fast['field_languages'] =& drupal_static(__FUNCTION__);
    }
    $field_languages =& $drupal_static_fast['field_languages'];
    $field_name = $field['field_name'];
    if (!isset($field_languages[$entity_type][$field_name])) {
        // If the field has language support enabled we retrieve an (alterable) list
        // of enabled languages, otherwise we return just LANGUAGE_NONE.
        if (field_is_translatable($entity_type, $field)) {
            $languages = field_content_languages();
            // Let other modules alter the available languages.
            $context = array(
                'entity_type' => $entity_type,
                'field' => $field,
            );
            drupal_alter('field_available_languages', $languages, $context);
            $field_languages[$entity_type][$field_name] = $languages;
        }
        else {
            $field_languages[$entity_type][$field_name] = array(
                LANGUAGE_NONE,
            );
        }
    }
    return $field_languages[$entity_type][$field_name];
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.