diff --git a/modules/mailchimp_signup/includes/mailchimp_signup.admin.inc b/modules/mailchimp_signup/includes/mailchimp_signup.admin.inc index fc31e7e..43225ab 100644 --- a/modules/mailchimp_signup/includes/mailchimp_signup.admin.inc +++ b/modules/mailchimp_signup/includes/mailchimp_signup.admin.inc @@ -259,20 +259,33 @@ function mailchimp_signup_form_submit($form, &$form_state) { $signup->settings['doublein'] = $form_state['values']['doublein']; $signup->settings['send_welcome'] = $form_state['values']['send_welcome']; $signup->settings['include_interest_groups'] = $form_state['values']['include_interest_groups']; if ($signup->save()) { if (isset($form_state['values']['settings']['path'])) { if (!isset($prior_settings['path']) || $prior_settings['path'] != $signup->settings['path'] || !($signup->mode & MAILCHIMP_SIGNUP_PAGE)) { // We have a new (or removed) path. Rebuild menus. menu_rebuild(); } } + + // update i18n translation sources + $language = language_default('language'); + $t_strings = array('title', 'name', 'description'); + foreach($t_strings as $key){ + mailchimp_signup_tt("field:mailchimp_signup:form:$signup->mcs_id:$key", $form_state['values'][$key], $language->language, TRUE); + } + foreach ($mergefields as $id => $val) { + mailchimp_signup_tt("field:mailchimp_signup:form:$signup->mcs_id:mergefield:$id", $val['name'], $language->language, TRUE); + } + mailchimp_signup_tt("field:mailchimp_signup:form:$signup->mcs_id:confirmation_message", $form_state['values']['settings']['confirmation_message'], $language->language, TRUE); + mailchimp_signup_tt("field:mailchimp_signup:form:$signup->mcs_id:submit_button", $form_state['values']['settings']['submit_button'], $language->language, TRUE); + drupal_set_message(t('Signup form @name has been saved.', array('@name' => $signup->name))); $form_state['redirect'] = 'admin/config/services/mailchimp/signup'; } else { drupal_set_message(t('There has been an error saving your signup form.'), 'error'); } } /** diff --git a/modules/mailchimp_signup/mailchimp_signup.module b/modules/mailchimp_signup/mailchimp_signup.module index 53a803f..2fca4eb 100644 --- a/modules/mailchimp_signup/mailchimp_signup.module +++ b/modules/mailchimp_signup/mailchimp_signup.module @@ -32,32 +32,42 @@ function mailchimp_signup_menu() { 'page arguments' => array('mailchimp_signup_signup_delete_form', 5), 'access arguments' => array('administer mailchimp'), 'file' => 'includes/mailchimp_signup.admin.inc', ); $signups = mailchimp_signup_load_multiple(); foreach ($signups as $signup) { if (intval($signup->mode) == MAILCHIMP_SIGNUP_PAGE || intval($signup->mode) == MAILCHIMP_SIGNUP_BOTH) { $items[$signup->settings['path']] = array( 'title' => $signup->title, + 'title callback' => 'mailchimp_signup_title', + 'title arguments' => array($signup->identifier()), 'page callback' => 'mailchimp_signup_page', 'page arguments' => array($signup->identifier()), 'access callback' => 'user_access', 'access arguments' => array('access mailchimp signup pages'), 'type' => MENU_SUGGESTED_ITEM, ); } } return $items; } /** + * callback function for translatable title + */ +function mailchimp_signup_title($signup_id){ + $signup = mailchimp_signup_load($signup_id); + return mailchimp_signup_tt("field:mailchimp_signup:form:$signup->mcs_id:title", $signup->title); +} + +/** * Implements hook_permission(). */ function mailchimp_signup_permission() { $return = array(); $return['administer mailchimp signup entities'] = array( 'title' => t('Administer Mailchimp Signup Entities.'), ); $return['access mailchimp signup pages'] = array( 'title' => t('Access all Mailchimp Signup Pages.'), 'description' => t('This does not effect Signup Blocks: only Pages.'), @@ -244,21 +254,21 @@ function mailchimp_signup_forms($form_id, $args) { } /** * Returns a subscription form for mailchimp lists. * * If there are multiple lists, this generates a single form for all of them. */ function mailchimp_signup_subscribe_form($form, &$form_state, $signup, $type) { $form['#attributes'] = array('class' => array('mailchimp-signup-subscribe-form')); $form['description'] = array( - '#markup' => filter_xss($signup->settings['description']), + '#markup' => mailchimp_signup_tt("field:mailchimp_signup:form:$signup->mcs_id:description", filter_xss($signup->settings['description'])), ); $form['mailchimp_lists'] = array('#tree' => TRUE); $lists = mailchimp_get_lists($signup->mc_lists); $lists_count = (!empty($lists)) ? count($lists) : 0; if (empty($lists)) { drupal_set_message('The subscription service is currently unavailable. Please try again later.', 'warning'); } $list = array(); @@ -297,31 +307,32 @@ function mailchimp_signup_subscribe_form($form, &$form_state, $signup, $type) { $form['mailchimp_lists']['interest_groups'] = mailchimp_interest_groups_form_elements($list); } } $form['mergevars'] = array( '#prefix' => '
', '#suffix' => '
', '#tree' => TRUE, ); foreach ($signup->settings['mergefields'] as $tag => $mergevar) { if (!empty($mergevar)) { + $mergevar['name'] = mailchimp_signup_tt("field:mailchimp_signup:form:$signup->mcs_id:mergefield:$tag", $mergevar['name']); $form['mergevars'][$tag] = mailchimp_insert_drupal_form_tag($mergevar); if (empty($lists)) { $form['mergevars'][$tag]['#disabled'] = TRUE; } } } $form['submit'] = array( '#type' => 'submit', '#weight' => 10, - '#value' => $signup->settings['submit_button'], + '#value' => mailchimp_signup_tt("field:mailchimp_signup:form:$signup->mcs_id:submit_button", $signup->settings['submit_button']), '#disabled' => (empty($lists)), ); return $form; } /** * Validation handler for mailchimp_signup_subscribe_form. */ function mailchimp_signup_subscribe_form_validate($form, &$form_state) { @@ -373,39 +384,56 @@ function mailchimp_signup_subscribe_form_submit($form, &$form_state) { if (empty($result)) { drupal_set_message(t('There was a problem with your newsletter signup to %list.', array( '%list' => $list_details[$list_id]['name'], )), 'warning'); } else { $successes[] = $list_details[$list_id]['name']; } } if (count($successes) && isset($signup->settings['confirmation_message']) && strlen($signup->settings['confirmation_message'])) { - drupal_set_message(check_plain($signup->settings['confirmation_message']), 'status'); + $message = mailchimp_signup_tt("field:mailchimp_signup:form:$signup->mcs_id:confirmation_message", check_plain($signup->settings['confirmation_message'])); + drupal_set_message($message, 'status'); } if (!empty($signup->settings['destination'])) { $form_state['redirect'] = $signup->settings['destination']; } } /** * Implements hook_entity_delete(). */ function mailchimp_signup_entity_delete($entity, $type) { if ($type == 'mailchimp_signup') { if ($entity->mode & MAILCHIMP_SIGNUP_PAGE) { menu_rebuild(); } } } /** + * Wrapper function for i18n_string() if i18nstrings enabled. + */ +function mailchimp_signup_tt($name, $string, $langcode = NULL, $update = FALSE) { + if (function_exists('i18n_string')) { + $options = array( + 'langcode' => $langcode, + 'update' => $update, + ); + return i18n_string($name, $string, $options); + } + else { + return $string; + } +} + +/** * Implements hook_feeds_node_processor_targets_alter(). */ function mailchimp_signup_feeds_processor_targets_alter(&$targets, $type, $bundle) { // Create target for all MailChimp list subscription fields. $field_info = field_info_field_types('mailchimp_lists_subscription'); $field_instances = field_info_instances($type, $bundle); foreach ($field_instances as $field_name => $field) { if ($field['widget']['type'] == $field_info['default_widget']) { $targets[$field_name . ':subscribe'] = array( 'name' => t($field['label']),