'Table to track entity translations', 'fields' => array( 'entity_type' => array( 'type' => 'varchar', 'length' => 128, 'not null' => TRUE, 'default' => '', 'description' => 'The entity type this translation relates to', ), 'entity_id' => array( 'type' => 'varchar', 'length' => 128, 'not null' => TRUE, 'default' => '', 'description' => 'The entity id this translation relates to', ), 'langcode' => array( 'type' => 'varchar', 'length' => 32, 'not null' => TRUE, 'default' => '', 'description' => 'The target language for this translation.', ), 'source' => array( 'type' => 'varchar', 'length' => 32, 'not null' => TRUE, 'default' => '', 'description' => 'The source language from which this translation was created.', ), 'translate' => array( 'description' => 'A boolean indicating whether this translation needs to be updated.', 'type' => 'int', 'not null' => TRUE, 'default' => 0, ), ), 'primary key' => array('entity_type', 'entity_id', 'langcode'), ); return $schema; } /** * Implements hook_install(). */ function translation_entity_install() { // Assign a fairly low weight to ensure our implementation of // hook_module_implements_alter() is run among the last ones. module_set_weight('translation_entity', 10); language_negotiation_include(); language_negotiation_set(LANGUAGE_TYPE_CONTENT, array(LANGUAGE_NEGOTIATION_URL => 0)); } /** * Implements hook_enable(). */ function translation_entity_enable() { // Translation works when at least two languages are enabled. if (count(language_list()) < 2) { $t_args = array('!language_url' => url('admin/config/regional/language')); $message = t('Be sure to enable at least two languages to translate content.', $t_args); drupal_set_message($message, 'warning'); } // Point the user to the content translation settings. $t_args = array('!settings_url' => url('admin/config/regional/content-language')); $message = t('Enable translation for content types, taxonomy vocabularies, accounts, or any other element you wish to translate.', $t_args); drupal_set_message($message, 'warning'); }