123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301 |
- <?php
- function field_multilingual_settings_changed() {
- field_info_cache_clear();
- }
- 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 (field_is_translatable($entity_type, $field)) {
- $languages = field_content_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];
- }
- function _field_language_suggestion($available_languages, $language_suggestion, $field_name) {
-
- if (!empty($language_suggestion)) {
-
- if (is_array($language_suggestion) && isset($language_suggestion[$field_name])) {
- $language_suggestion = $language_suggestion[$field_name];
- }
-
-
- if (in_array($language_suggestion, $available_languages)) {
- $available_languages = array($language_suggestion);
- }
- }
- return $available_languages;
- }
- function field_content_languages() {
- return array_keys(language_list() + array(LANGUAGE_NONE => NULL));
- }
- function field_is_translatable($entity_type, $field) {
- return $field['translatable'] && field_has_translation_handler($entity_type);
- }
- function field_has_translation_handler($entity_type, $handler = NULL) {
- $entity_info = entity_get_info($entity_type);
- if (isset($handler)) {
- return !empty($entity_info['translation'][$handler]);
- }
- elseif (isset($entity_info['translation'])) {
- foreach ($entity_info['translation'] as $handler_info) {
-
- if (!empty($handler_info)) {
- return TRUE;
- }
- }
- }
- return FALSE;
- }
- function field_valid_language($langcode, $default = TRUE) {
- $enabled_languages = field_content_languages();
- if (in_array($langcode, $enabled_languages)) {
- return $langcode;
- }
- global $language_content;
- return $default ? language_default('language') : $language_content->language;
- }
- function field_language($entity_type, $entity, $field_name = NULL, $langcode = NULL) {
- $display_languages = &drupal_static(__FUNCTION__, array());
- list($id, , $bundle) = entity_extract_ids($entity_type, $entity);
- $langcode = field_valid_language($langcode, FALSE);
- if (!isset($display_languages[$entity_type][$id][$langcode])) {
- $display_language = array();
-
-
-
- foreach (field_info_instances($entity_type, $bundle) as $instance) {
- $display_language[$instance['field_name']] = isset($entity->{$instance['field_name']}[$langcode]) ? $langcode : LANGUAGE_NONE;
- }
- if (field_has_translation_handler($entity_type)) {
- $context = array(
- 'entity_type' => $entity_type,
- 'entity' => $entity,
- 'language' => $langcode,
- );
- drupal_alter('field_language', $display_language, $context);
- }
- $display_languages[$entity_type][$id][$langcode] = $display_language;
- }
- $display_language = $display_languages[$entity_type][$id][$langcode];
-
- if (isset($field_name)) {
- return isset($display_language[$field_name]) ? $display_language[$field_name] : FALSE;
- }
- return $display_language;
- }
|