From 52ba5cc84c0d6e47913392a1df666b8b6cd27952 Mon Sep 17 00:00:00 2001 From: Angie Byron Date: Tue, 28 Dec 2010 18:17:27 +0000 Subject: =?UTF-8?q?#994500=20by=20G=C3=A1bor=20Hojtsy:=20Fixed=20Drupal=20?= =?UTF-8?q?should=20not=20require=20.po=20file=20rename=20in=20installatio?= =?UTF-8?q?n?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- INSTALL.txt | 3 +-- includes/install.core.inc | 27 +++++++++++---------------- includes/install.inc | 13 +++++++++---- 3 files changed, 21 insertions(+), 22 deletions(-) diff --git a/INSTALL.txt b/INSTALL.txt index fe017c8ec..28359369a 100644 --- a/INSTALL.txt +++ b/INSTALL.txt @@ -91,8 +91,7 @@ INSTALLATION - Download a translation file for the correct Drupal version and language from the translation server: http://localize.drupal.org/download - - Rename the downloaded file to your language's ISO code (e.g., de.po or - fr.po) and place it into your installation profile's translations + - Place the file into your installation profile's translations directory. For instance, if you are using the Standard install profile, move the .po file into the directory: diff --git a/includes/install.core.inc b/includes/install.core.inc index 5a0892ce2..1acb78fd2 100644 --- a/includes/install.core.inc +++ b/includes/install.core.inc @@ -1120,6 +1120,10 @@ function install_select_profile_form($form, &$form_state, $profile_files) { function install_find_locales($profilename) { $locales = file_scan_directory('./profiles/' . $profilename . '/translations', '/\.po$/', array('recurse' => FALSE)); array_unshift($locales, (object) array('name' => 'en')); + foreach ($locales as $key => $locale) { + // The locale (file name) might be drupal-7.2.cs.po instead of cs.po. + $locales[$key]->langcode = preg_replace('!^(.+\.)?([^\.]+)$!', '\2', $locale->name); + } return $locales; } @@ -1145,8 +1149,8 @@ function install_select_locale(&$install_state) { if (!empty($_POST['locale'])) { foreach ($locales as $locale) { - if ($_POST['locale'] == $locale->name) { - $install_state['parameters']['locale'] = $locale->name; + if ($_POST['locale'] == $locale->langcode) { + $install_state['parameters']['locale'] = $locale->langcode; return; } } @@ -1164,14 +1168,6 @@ function install_select_locale(&$install_state) { $output = '

Follow these steps to translate Drupal into your language:

'; $output .= '
    '; $output .= '
  1. Download a translation from the translation server.
  2. '; - $output .= '
  3. Rename the downloaded file retaining only the language code at the end of the file name and its extension. For example, if the file name is -
    -drupal-7.0.pt-br.po
    -
    -rename it to -
    -pt-br.po
    -
  4. '; $output .= '
  5. Place it into the following directory:
     /profiles/' . $profilename . '/translations/
    @@ -1237,16 +1233,15 @@ function install_select_locale_form($form, &$form_state, $locales, $profilename)
       include_once DRUPAL_ROOT . '/includes/iso.inc';
       $languages = _locale_get_predefined_list();
       foreach ($locales as $locale) {
    -    // Try to use verbose locale name.
    -    $name = $locale->name;
    +    $name = $locale->langcode;
         if (isset($languages[$name])) {
           $name = $languages[$name][0] . (isset($languages[$name][1]) ? ' ' . st('(@language)', array('@language' => $languages[$name][1])) : '');
         }
    -    $form['locale'][$locale->name] = array(
    +    $form['locale'][$locale->langcode] = array(
           '#type' => 'radio',
    -      '#return_value' => $locale->name,
    -      '#default_value' => $locale->name == 'en' ? 'en' : '',
    -      '#title' => $name . ($locale->name == 'en' ? ' ' . st('(built-in)') : ''),
    +      '#return_value' => $locale->langcode,
    +      '#default_value' => $locale->langcode == 'en' ? 'en' : '',
    +      '#title' => $name . ($locale->langcode == 'en' ? ' ' . st('(built-in)') : ''),
           '#parents' => array('locale')
         );
       }
    diff --git a/includes/install.inc b/includes/install.inc
    index 1b7d7a796..5c53f3e80 100644
    --- a/includes/install.inc
    +++ b/includes/install.inc
    @@ -1068,11 +1068,16 @@ function st($string, array $args = array(), array $options = array()) {
       if (!isset($locale_strings)) {
         $locale_strings = array();
         if (isset($install_state['parameters']['profile']) && isset($install_state['parameters']['locale'])) {
    -      $filename = 'profiles/' . $install_state['parameters']['profile'] . '/translations/' . $install_state['parameters']['locale'] . '.po';
    -      if (file_exists(DRUPAL_ROOT . '/' . $filename)) {
    +      // If the given locale was selected, there should be at least one .po file
    +      // with its name ending in {$install_state['parameters']['locale']}.po
    +      // This might or might not be the entire filename. It is also possible
    +      // that multiple files end with the same extension, even if unlikely.
    +      $po_files = file_scan_directory('./profiles/' . $install_state['parameters']['profile'] . '/translations', '/'. $install_state['parameters']['locale'] .'\.po$/', array('recurse' => FALSE));
    +      if (count($po_files)) {
             require_once DRUPAL_ROOT . '/includes/locale.inc';
    -        $file = (object) array('uri' => $filename);
    -        _locale_import_read_po('mem-store', $file);
    +        foreach ($po_files as $po_file) {
    +          _locale_import_read_po('mem-store', $po_file);
    +        }
             $locale_strings = _locale_import_one_string('mem-report');
           }
         }
    -- 
    cgit v1.2.3