1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
|
<?php
/**
* Migrate PHP array to .lang files.
*
* PHP 5.3
*
* @license MIT
* @author Romain d'Alverny, rdalverny, rda
* @copyright 2012/05
*/
if (php_sapi_name() !== 'cli') {
echo "CLI only.\n";
exit(1);
}
if (version_compare(PHP_VERSION, '5.3.0') < 0) {
echo "PHP 5.3 needed.\n";
exit(1);
}
define('APP_ROOT', realpath(__DIR__ . '/..'));
$php_source = isset($argv[1]) ? $argv[1] : null;
$var = isset($argv[2]) ? $argv[2] : null;
$domain = isset($argv[3]) ? $argv[3] : null;
if (is_null($php_source) || is_null($var) || is_null($domain)) {
echo <<<U
Usage:
pa2lang.php path/to/source.php var_name domain_name
U;
exit(1);
}
echo "ohai!\n";
$dest = sprintf('%s/langs/{LOC}/%s.{LOC}.lang', APP_ROOT, $domain);
$php_source = realpath(APP_ROOT . '/' . $php_source);
if (is_null($php_source)) {
echo "$php_source is not found. kthxbye.\n";
exit(1);
}
echo "Loading " . $php_source . " looking for \$$var\n";
include $php_source;
if (!isset($$var)) {
echo "$var is not set. kthxbye\n";
exit(1);
}
echo sprintf("Found %d locales here: %s.\n",
count($$var), implode(', ', array_keys($$var)));
$files = array();
$eng_array = $$var;
$eng_array = $eng_array['en'];
$number_of_eng_strings = count($eng_array);
foreach ($$var as $k => $v) {
echo sprintf("> %s has %d translated strings, adding the rest %d untranslated.", $k, count($v), ($number_of_eng_strings - count($v)));
$v = array_merge($eng_array, $v); // add untranslated strings
$f = array();
$f[] = sprintf('# Generated by pa2lang.php on %s', date('c'));
$f[] = sprintf('# from %s $%s', $php_source, $var);
foreach ($v as $s0 => $s1) {
$s0 = str_replace("\n", ' ', $s0);
$s0 = preg_replace('/\s+/', ' ', $s0); // remove multiple spaces
$s0 = str_replace("\'", "'", $s0); // remove also backslashes
if (is_array($s1)) {
echo "\nWe have an array for string $k:'$s0':\n";
foreach ($s1 as $sv)
echo " * ", $sv, "\n";
echo "\nThis can't be inserted into this .lang file. Fix this upstream and come back.\n\n";
exit(1);
}
$s1 = str_replace("\n", ' ', $s1);
$s1 = preg_replace('/\s+/', ' ', $s1);
$s1 = str_replace("\'", "'", $s1);
$f[] = '';
$f[] = ';' . $s0;
$f[] = $s1;
$f[] = "\n";
}
echo " ok\n";
$files[$k] = implode("\n", $f);
}
echo "Saving those into ...\n";
foreach ($files as $k => $data) {
$file = str_replace('{LOC}', $k, $dest);
// file_put_contents($file, $data);
}
echo "Done.\n";
exit(0);
|