vendor/symfony/src/Symfony/Component/Locale/Resources/data/update-data.php
author cavaliet
Mon, 07 Jul 2014 17:23:47 +0200
changeset 122 d672f7dd74dc
parent 0 7f95f8617b0b
permissions -rwxr-xr-x
Added tag V00.17 for changeset ada5f3d8b5b4
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
     1
<?php
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
     2
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
     3
/*
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
     4
 * This file is part of the Symfony package.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
     5
 *
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
     6
 * (c) Fabien Potencier <fabien@symfony.com>
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
     7
 *
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
     8
 * For the full copyright and license information, please view the LICENSE
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
     9
 * file that was distributed with this source code.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    10
 */
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    11
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    12
function bailout($message)
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    13
{
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    14
    exit($message."\n");
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    15
}
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    16
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    17
function check_dir($source)
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    18
{
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    19
    if (!file_exists($source)) {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    20
        bailout('The directory '.$source.' does not exist');
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    21
    }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    22
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    23
    if (!is_dir($source)) {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    24
        bailout('The file '.$source.' is not a directory');
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    25
    }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    26
}
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    27
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    28
function check_command($command)
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    29
{
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    30
    exec('which '.$command, $output, $result);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    31
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    32
    if ($result !== 0) {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    33
        bailout('The command "'.$command.'" is not installed');
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    34
    }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    35
}
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    36
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    37
function clear_directory($directory)
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    38
{
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    39
    $iterator = new \DirectoryIterator($directory);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    40
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    41
    foreach ($iterator as $file) {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    42
        if (!$file->isDot()) {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    43
            if ($file->isDir()) {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    44
                clear_directory($file->getPathname());
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    45
            } else {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    46
                unlink($file->getPathname());
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    47
            }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    48
        }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    49
    }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    50
}
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    51
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    52
function make_directory($directory)
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    53
{
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    54
    if (!file_exists($directory)) {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    55
        mkdir($directory);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    56
    }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    57
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    58
    if (!is_dir($directory)) {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    59
        bailout('The file '.$directory.' already exists but is no directory');
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    60
    }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    61
}
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    62
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    63
function list_files($directory, $extension)
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    64
{
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    65
    $files = array();
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    66
    $iterator = new \DirectoryIterator($directory);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    67
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    68
    foreach ($iterator as $file) {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    69
        if (!$file->isDot() && substr($file->getFilename(), -strlen($extension)) === $extension) {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    70
            $files[] = substr($file->getFilename(), 0, -strlen($extension));
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    71
        }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    72
    }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    73
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    74
    return $files;
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    75
}
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    76
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    77
function genrb($source, $target)
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    78
{
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    79
    exec('genrb -d '.$target.' '.$source.DIRECTORY_SEPARATOR.'*.txt', $output, $result);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    80
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    81
    if ($result !== 0) {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    82
        bailout('genrb failed');
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    83
    }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    84
}
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    85
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    86
function genrb_file($target, $source, $locale)
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    87
{
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    88
    exec('genrb -v -d '.$target.' '.$source.DIRECTORY_SEPARATOR.$locale.'.txt', $output, $result);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    89
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    90
    if ($result !== 0) {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    91
        bailout('genrb failed');
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    92
    }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    93
}
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    94
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    95
function load_resource_bundle($locale, $directory)
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    96
{
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    97
    $bundle = \ResourceBundle::create($locale, $directory);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    98
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    99
    if (null === $bundle) {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   100
        bailout('The resource bundle for locale '.$locale.' could not be loaded from directory '.$directory);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   101
    }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   102
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   103
    return $bundle;
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   104
}
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   105
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   106
function get_data($index, $dataDir, $locale = 'en', $constraint = null)
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   107
{
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   108
    $data = array();
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   109
    $bundle = load_resource_bundle($locale, __DIR__.DIRECTORY_SEPARATOR.$dataDir);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   110
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   111
    foreach ($bundle->get($index) as $code => $name) {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   112
        if (null !== $constraint) {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   113
            if ($constraint($code)) {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   114
                $data[$code] = $name;
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   115
            }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   116
            continue;
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   117
        }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   118
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   119
        $data[$code] = $name;
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   120
    }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   121
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   122
    $collator = new \Collator($locale);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   123
    $collator->asort($data);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   124
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   125
    return $data;
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   126
}
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   127
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   128
function create_stub_datafile($locale, $target, $data) {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   129
    $template = <<<TEMPLATE
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   130
<?php
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   131
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   132
/*
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   133
 * This file is part of the Symfony package.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   134
 *
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   135
 * (c) Fabien Potencier <fabien@symfony.com>
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   136
 *
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   137
 * For the full copyright and license information, please view the LICENSE
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   138
 * file that was distributed with this source code.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   139
 */
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   140
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   141
return %s;
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   142
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   143
TEMPLATE;
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   144
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   145
    $data = var_export($data, true);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   146
    $data = preg_replace('/array \(/', 'array(', $data);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   147
    $data = preg_replace('/\n {1,10}array\(/', 'array(', $data);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   148
    $data = preg_replace('/  /', '    ', $data);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   149
    $data = sprintf($template, $data);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   150
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   151
    file_put_contents($target.DIRECTORY_SEPARATOR.$locale.'.php', $data);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   152
}
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   153
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   154
if ($GLOBALS['argc'] !== 2) {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   155
    bailout(<<<MESSAGE
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   156
Usage: php update-data.php [icu-data-directory]
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   157
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   158
Updates the ICU resources in Symfony2 from the given ICU data directory. You
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   159
can checkout the ICU data directory via SVN:
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   160
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   161
    $ svn co http://source.icu-project.org/repos/icu/icu/trunk/source/data icu-data
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   162
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   163
MESSAGE
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   164
    );
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   165
}
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   166
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   167
// Verify that all required directories exist
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   168
$source = $GLOBALS['argv'][1];
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   169
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   170
check_dir($source);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   171
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   172
$source = realpath($source);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   173
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   174
check_dir($source.DIRECTORY_SEPARATOR.'curr');
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   175
check_dir($source.DIRECTORY_SEPARATOR.'lang');
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   176
check_dir($source.DIRECTORY_SEPARATOR.'locales');
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   177
check_dir($source.DIRECTORY_SEPARATOR.'region');
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   178
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   179
check_command('genrb');
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   180
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   181
// Convert the *.txt resource bundles to *.res files
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   182
$target = __DIR__;
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   183
$currDir = $target.DIRECTORY_SEPARATOR.'curr';
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   184
$langDir = $target.DIRECTORY_SEPARATOR.'lang';
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   185
$localesDir = $target.DIRECTORY_SEPARATOR.'locales';
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   186
$namesDir = $target.DIRECTORY_SEPARATOR.'names';
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   187
$namesGeneratedDir = $namesDir.DIRECTORY_SEPARATOR.'generated';
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   188
$regionDir = $target.DIRECTORY_SEPARATOR.'region';
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   189
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   190
make_directory($currDir);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   191
clear_directory($currDir);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   192
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   193
genrb_file($currDir, $source.DIRECTORY_SEPARATOR.'curr', 'en');
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   194
genrb_file($currDir, $source.DIRECTORY_SEPARATOR.'curr', 'supplementalData');
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   195
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   196
// It seems \ResourceBundle does not like locale names with uppercase chars then we rename the binary file
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   197
// See: http://bugs.php.net/bug.php?id=54025
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   198
$filename_from = $currDir.DIRECTORY_SEPARATOR.'supplementalData.res';
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   199
$filename_to   = $currDir.DIRECTORY_SEPARATOR.'supplementaldata.res';
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   200
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   201
if (!rename($filename_from, $filename_to)) {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   202
    bailout('The file '.$filename_from.' could not be renamed');
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   203
}
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   204
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   205
make_directory($langDir);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   206
clear_directory($langDir);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   207
genrb($source.DIRECTORY_SEPARATOR.'lang', $langDir);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   208
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   209
make_directory($localesDir);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   210
clear_directory($localesDir);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   211
genrb($source.DIRECTORY_SEPARATOR.'locales', $localesDir);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   212
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   213
make_directory($regionDir);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   214
clear_directory($regionDir);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   215
genrb($source.DIRECTORY_SEPARATOR.'region', $regionDir);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   216
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   217
make_directory($namesDir);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   218
clear_directory($namesDir);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   219
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   220
make_directory($namesGeneratedDir);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   221
clear_directory($namesGeneratedDir);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   222
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   223
// Discover the list of supported locales, which are the names of the resource
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   224
// bundles in the "locales" directory
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   225
$supportedLocales = list_files($localesDir, '.res');
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   226
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   227
sort($supportedLocales);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   228
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   229
// Delete unneeded locales
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   230
foreach ($supportedLocales as $key => $supportedLocale) {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   231
    // Delete all aliases from the list
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   232
    // i.e., "az_AZ" is an alias for "az_Latn_AZ"
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   233
    $localeBundleOrig = file_get_contents($source.DIRECTORY_SEPARATOR.'locales'.DIRECTORY_SEPARATOR.$supportedLocale.'.txt');
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   234
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   235
    // The key "%%ALIAS" is not accessible through the \ResourceBundle class
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   236
    if (strpos($localeBundleOrig, '%%ALIAS') !== false) {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   237
        unset($supportedLocales[$key]);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   238
    }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   239
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   240
    // Delete locales that have no content (i.e. only "Version" key)
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   241
    $localeBundle = load_resource_bundle($supportedLocale, $localesDir);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   242
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   243
    // There seems to be no other way for identifying all keys in this specific
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   244
    // resource bundle
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   245
    $bundleKeys = array();
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   246
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   247
    foreach ($localeBundle as $bundleKey => $_) {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   248
        $bundleKeys[] = $bundleKey;
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   249
    }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   250
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   251
    if ($bundleKeys === array('Version')) {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   252
        unset($supportedLocales[$key]);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   253
    }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   254
}
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   255
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   256
// Discover the list of locales for which individual language/region names
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   257
// exist. This list contains for example "de" and "de_CH", but not "de_DE" which
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   258
// is equal to "de"
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   259
$translatedLocales = array_unique(array_merge(
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   260
    list_files($langDir, '.res'),
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   261
    list_files($regionDir, '.res')
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   262
));
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   263
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   264
sort($translatedLocales);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   265
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   266
// For each translated locale, generate a list of locale names
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   267
// Each locale name has the form: "Language (Script, Region, Variant1, ...)
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   268
// Script, Region and Variants are optional. If none of them is available,
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   269
// the braces are not printed.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   270
foreach ($translatedLocales as $translatedLocale) {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   271
    // Don't include ICU's root resource bundle
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   272
    if ($translatedLocale === 'root') {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   273
        continue;
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   274
    }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   275
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   276
    $langBundle = load_resource_bundle($translatedLocale, $langDir);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   277
    $regionBundle = load_resource_bundle($translatedLocale, $regionDir);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   278
    $localeNames = array();
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   279
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   280
    foreach ($supportedLocales as $supportedLocale) {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   281
        // Don't include ICU's root resource bundle
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   282
        if ($supportedLocale === 'root') {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   283
            continue;
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   284
        }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   285
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   286
        $lang = \Locale::getPrimaryLanguage($supportedLocale);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   287
        $script = \Locale::getScript($supportedLocale);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   288
        $region = \Locale::getRegion($supportedLocale);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   289
        $variants = \Locale::getAllVariants($supportedLocale);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   290
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   291
        // Currently the only available variant is POSIX, which we don't want
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   292
        // to include in the list
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   293
        if (count($variants) > 0) {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   294
            continue;
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   295
        }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   296
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   297
        $langName = $langBundle->get('Languages')->get($lang);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   298
        $extras = array();
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   299
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   300
        // Some languages are simply not translated
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   301
        // Example: "az" (Azerbaijani) has no translation in "af" (Afrikaans)
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   302
        if (!$langName) {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   303
            continue;
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   304
        }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   305
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   306
        // "af" (Afrikaans) has no "Scripts" block
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   307
        if (!$langBundle->get('Scripts')) {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   308
            continue;
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   309
        }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   310
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   311
        // "as" (Assamese) has no "Variants" block
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   312
        if (!$langBundle->get('Variants')) {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   313
            continue;
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   314
        }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   315
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   316
        // Discover the name of the script part of the locale
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   317
        // i.e. in zh_Hans_MO, "Hans" is the script
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   318
        if ($script) {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   319
            // Some languages are translated together with their script,
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   320
            // i.e. "zh_Hans" is translated as "Simplified Chinese"
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   321
            if ($langBundle->get('Languages')->get($lang.'_'.$script)) {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   322
                $langName = $langBundle->get('Languages')->get($lang.'_'.$script);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   323
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   324
                // If the script is appended in braces, extract it
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   325
                // i.e. "zh_Hans" is translated as "Chinesisch (vereinfacht)"
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   326
                // in "de"
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   327
                if (strpos($langName, '(') !== false) {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   328
                    list($langName, $scriptName) = preg_split('/[\s()]/', $langName, null, PREG_SPLIT_NO_EMPTY);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   329
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   330
                    $extras[] = $scriptName;
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   331
                }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   332
            } else {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   333
                $scriptName = $langBundle->get('Scripts')->get($script);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   334
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   335
                // Some scripts are not translated into every language
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   336
                if (!$scriptName) {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   337
                    continue;
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   338
                }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   339
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   340
                $extras[] = $scriptName;
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   341
            }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   342
        }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   343
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   344
        // Discover the name of the region part of the locale
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   345
        // i.e. in de_AT, "AT" is the region
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   346
        if ($region) {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   347
            // Some languages are translated together with their region,
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   348
            // i.e. "en_GB" is translated as "British English"
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   349
            // we don't include these languages though because they mess up
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   350
            // the locale sorting
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   351
            // if ($langBundle->get('Languages')->get($lang.'_'.$region)) {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   352
            //     $langName = $langBundle->get('Languages')->get($lang.'_'.$region);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   353
            // } else {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   354
            $regionName = $regionBundle->get('Countries')->get($region);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   355
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   356
            // Some regions are not translated into every language
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   357
            if (!$regionName) {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   358
                continue;
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   359
            }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   360
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   361
            $extras[] = $regionName;
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   362
            // }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   363
        }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   364
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   365
        if (count($extras) > 0) {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   366
            $langName .= ' ('.implode(', ', $extras).')';
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   367
        }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   368
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   369
        $localeNames[$supportedLocale] = $langName;
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   370
    }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   371
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   372
    // If no names could be generated for the current locale, skip it
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   373
    if (count($localeNames) === 0) {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   374
        continue;
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   375
    }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   376
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   377
    echo "Generating $translatedLocale...\n";
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   378
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   379
    $file = fopen($namesGeneratedDir.DIRECTORY_SEPARATOR.$translatedLocale.'.txt', 'w');
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   380
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   381
    fwrite($file, "$translatedLocale{\n");
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   382
    fwrite($file, "    Locales{\n");
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   383
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   384
    foreach ($localeNames as $supportedLocale => $langName) {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   385
        fwrite($file, "        $supportedLocale{\"$langName\"}\n");
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   386
    }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   387
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   388
    fwrite($file, "    }\n");
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   389
    fwrite($file, "}\n");
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   390
    fclose($file);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   391
}
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   392
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   393
// Convert generated files to binary format
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   394
genrb($namesGeneratedDir, $namesDir);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   395
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   396
// Clean up
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   397
clear_directory($namesGeneratedDir);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   398
rmdir($namesGeneratedDir);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   399
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   400
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   401
// Generate the data to the stubbed intl classes We only extract data for the 'en' locale
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   402
// The extracted data is used only by the stub classes
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   403
$defaultLocale = 'en';
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   404
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   405
$currencies = array();
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   406
$currenciesMeta = array();
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   407
$defaultMeta = array();
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   408
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   409
$bundle = load_resource_bundle('supplementaldata', __DIR__.'/curr');
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   410
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   411
foreach ($bundle->get('CurrencyMeta') as $code => $data) {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   412
    // The 'DEFAULT' key contains the fraction digits and the rounding increment that are common for a lot of currencies
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   413
    // Only currencies with different values are added to the icu-data (e.g: CHF and JPY)
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   414
    if ('DEFAULT' == $code) {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   415
        $defaultMeta = array(
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   416
            'fractionDigits'    => $data[0],
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   417
            'roundingIncrement' => $data[1],
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   418
        );
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   419
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   420
        continue;
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   421
    }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   422
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   423
    $currenciesMeta[$code]['fractionDigits'] = $data[0];
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   424
    $currenciesMeta[$code]['roundingIncrement'] = $data[1];
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   425
}
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   426
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   427
$bundle = load_resource_bundle('en', __DIR__.'/curr');
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   428
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   429
foreach ($bundle->get('Currencies') as $code => $data) {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   430
    $currencies[$code]['symbol'] = $data[0];
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   431
    $currencies[$code]['name']   = $data[1];
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   432
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   433
    if (!isset($currenciesMeta[$code])) {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   434
        $currencies[$code]['fractionDigits'] = $defaultMeta['fractionDigits'];
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   435
        $currencies[$code]['roundingIncrement'] = $defaultMeta['roundingIncrement'];
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   436
        continue;
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   437
    }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   438
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   439
    $currencies[$code]['fractionDigits'] = $currenciesMeta[$code]['fractionDigits'];
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   440
    $currencies[$code]['roundingIncrement'] = $currenciesMeta[$code]['roundingIncrement'];
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   441
}
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   442
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   443
// Countries.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   444
$countriesConstraint = function($code)
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   445
{
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   446
    // Global countries (f.i. "America") have numeric codes
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   447
    // Countries have alphabetic codes
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   448
    // "ZZ" is the code for unknown country
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   449
    if (ctype_alpha($code) && 'ZZ' !== $code) {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   450
        return true;
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   451
    }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   452
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   453
    return false;
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   454
};
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   455
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   456
$countries = get_data('Countries', 'region', $defaultLocale, $countriesConstraint);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   457
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   458
// Languages
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   459
$languagesConstraint = function($code)
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   460
{
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   461
    // "mul" is the code for multiple languages
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   462
    if ('mul' !== $code) {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   463
        return true;
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   464
    }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   465
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   466
    return false;
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   467
};
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   468
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   469
$languages = get_data('Languages', 'lang', $defaultLocale, $languagesConstraint);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   470
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   471
// Display locales
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   472
$displayLocales = get_data('Locales', 'names', $defaultLocale);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   473
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   474
// Create the stubs datafiles
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   475
$stubDir = $target.DIRECTORY_SEPARATOR.'stub';
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   476
$stubCurrDir = $stubDir.DIRECTORY_SEPARATOR.'curr';
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   477
$stubLangDir = $stubDir.DIRECTORY_SEPARATOR.'lang';
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   478
$stubNamesDir = $stubDir.DIRECTORY_SEPARATOR.'names';
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   479
$stubRegionDir = $stubDir.DIRECTORY_SEPARATOR.'region';
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   480
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   481
// Create the directories
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   482
make_directory($stubDir);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   483
make_directory($stubCurrDir);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   484
make_directory($stubLangDir);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   485
make_directory($stubNamesDir);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   486
make_directory($stubRegionDir);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   487
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   488
clear_directory($stubCurrDir);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   489
clear_directory($stubLangDir);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   490
clear_directory($stubNamesDir);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   491
clear_directory($stubRegionDir);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   492
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   493
create_stub_datafile($defaultLocale, $stubCurrDir, $currencies);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   494
create_stub_datafile($defaultLocale, $stubLangDir, $languages);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   495
create_stub_datafile($defaultLocale, $stubNamesDir, $displayLocales);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   496
create_stub_datafile($defaultLocale, $stubRegionDir, $countries);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   497
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   498
// Clean up
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   499
clear_directory($currDir);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   500
rmdir($currDir);