Handling of multilingual fields.
Fields natively implement multilingual support, and all fields use the following structure:
$entity->{$field_name}[$langcode][$delta][$column_name];
Every field can hold a single or multiple value for each language belonging to the available languages set:
The available languages for a particular field are returned by field_available_languages(). Whether a field is translatable is determined by calling field_is_translatable(), which checks the $field['translatable'] property returned by field_info_field(), and whether there is at least one translation handler available for the field. A translation handler is a module registering itself via hook_entity_info() to handle field translations.
By default, _field_invoke() and _field_invoke_multiple() are processing a field in all available languages, unless they are given a language suggestion. Based on that suggestion, _field_language_suggestion() determines the languages to act on.
Most field_attach_*() functions act on all available languages, except for the following:
The field language fallback logic relies on the global language fallback configuration. Therefore, the displayed field values can be in the requested language, but may be different if no values for the requested language are available. The default language fallback rules inspect all the enabled languages ordered by their weight. This behavior can be altered or even disabled by modules implementing hook_field_language_alter(), making it possible to choose the first approach. The display language for each field is returned by field_language().
See Field API for information about the other parts of the Field API.
Name | Location | Description |
---|---|---|
field_available_languages |
drupal/ |
Collects the available languages for the given entity type and field. |
field_content_languages |
drupal/ |
Returns available content languages. |
field_has_translation_handler |
drupal/ |
Checks if a module is registered as a translation handler for a given entity. |
field_is_translatable |
drupal/ |
Checks whether a field has language support. |
field_language |
drupal/ |
Returns the display language for the fields attached to the given entity. |
field_multilingual_settings_changed |
drupal/ |
Implements hook_multilingual_settings_changed(). |
field_valid_language |
drupal/ |
Ensures that a given language code is valid. |
hook_field_available_languages_alter |
drupal/ |
Alter field_available_languages() values. |
hook_field_language_alter |
drupal/ |
Perform alterations on field_language() values. |
hook_field_prepare_translation |
drupal/ |
Define custom prepare_translation behavior for this module's field types. |
_field_language_suggestion |
drupal/ |
Process the given language suggestion based on the available languages. |