3 * Convert Language files to .po files !
6 * - generate .po header
10 /** This is a command line script */
11 require_once('commandLine.inc');
12 require_once('languages.inc');
14 define('ALL_LANGUAGES', true);
15 define('XGETTEXT_BIN', 'xgettext');
16 define('XGETTEXT_OPTIONS', '-n --keyword=wfMsg');
18 define('LOCALE_OUTPUT_DIR', $IP.'/locale');
21 if( isset($options['help']) ) { usage(); die(); }
22 // default output is WikiText
23 if( !isset($options['lang']) ) { $options['lang'] = ALL_LANGUAGES
; }
27 Usage: php lang2po.php [--help] [--lang=<langcode>] [--stdout]
29 --lang: a lang code you want to generate a .po for (default: all languages).
36 * generate and write a file in .po format.
38 * @param string $langcode Code of a language it will process.
39 * @param array &$messages Array containing the various messages.
40 * @return string Filename where stuff got saved or false.
42 function generatePo($langcode, &$messages) {
43 $data = ''; // TODO a .po header ?
45 // Generate .po entries
46 foreach($messages as $identifier => $content) {
47 $data .= "msgid \"$identifier\"\n";
49 // Double quotes escaped for $content:
50 $tmp = 'msgstr "'.str_replace('"', '\"', $content)."\"";
51 // New line should end with "\n not \n
52 $data .= str_replace("\n", "\"\n\"", $tmp);
56 // Write the content to a file in locale/XX/messages.po
57 $dir = LOCALE_OUTPUT_DIR
.'/'.$langcode;
58 if( !is_dir($dir) ) { mkdir( $dir, 0770 ); }
59 $filename = $dir.'/fromlanguagefile.po';
61 $file = fopen( $filename , 'wb' );
62 if( fwrite( $file, $data ) ) {
71 $langTool = new languages();
74 foreach ( $langTool->getList() as $langcode) {
75 echo "Loading messages for $langcode:\t";
76 require_once( 'languages/Language' . $langcode . '.php' );
77 $arr = 'wgAllMessages'.$langcode;
78 if(!@is_array
($
$arr)) {
82 if( ! generatePo($langcode, $
$arr) ) {
83 echo "ERROR: Failed to wrote file.\n";
88 // Generate a default .po based source tree
89 echo "Getting 'gettext' default messages from sources\n";
92 .' -o '.$IP.'/locale/wfMsg.po'
93 .' '.$IP.'/includes/*php'