blob: e1daf3028780317b7e6bb30b941fa402aa2fa8b7 [file] [log] [blame]
gobrien1a8e02f2008-01-30 01:46:26 +00001<?php
2/*******************************************************************************
3 * Copyright (c) 2008 Eclipse Foundation and others.
4 * All rights reserved. This program and the accompanying materials
5 * are made available under the terms of the Eclipse Public License v1.0
6 * which accompanies this distribution, and is available at
7 * http://www.eclipse.org/legal/epl-v10.html
8 *
9 * Contributors:
10 * Eclipse Foundation - Initial API and implementation
droy133e7462008-05-13 17:37:24 +000011 * Motoki MORT mori-m@mxa.nes.nec.co.jp - patch, bug 227366
kitlo9c7c62a2008-10-05 16:05:19 +000012 * Kit Lo (IBM) - patch, bug 217339, generate pseudo translations language packs
13 * Kit Lo (IBM) - patch, bug 234430, need language packs by means of other than update site
kitlo7f522672008-10-21 14:15:54 +000014 * Kit Lo (IBM) - patch, bug 251536, newline char missing after copyright comment on first line
kitlo1173dbd2008-10-21 15:58:36 +000015 * Kit Lo (IBM) - patch, bug 238580, language packs should not include strings that are marked "non-translatable"
kitlo5c9da712008-10-27 12:45:40 +000016 * Kit Lo (IBM) - patch, bug 252140, Illegal token characters in babel fragment names
kitlo58d8a5a2008-09-24 20:08:44 +000017 *******************************************************************************/
gobrien1a8e02f2008-01-30 01:46:26 +000018
19/*
kitlo58d8a5a2008-09-24 20:08:44 +000020 * Documentation: http://wiki.eclipse.org/Babel_/_Server_Tool_Specification#Outputs
gobrien1a8e02f2008-01-30 01:46:26 +000021 */
gobrienb854dcb2008-01-30 18:50:45 +000022
droyb6e25c72008-07-18 13:01:13 +000023ob_start();
kitlo9c7c62a2008-10-05 16:05:19 +000024ini_set("memory_limit", "64M");
kitlo58d8a5a2008-09-24 20:08:44 +000025define("BABEL_BASE_DIR", "../../");
kitlo9c7c62a2008-10-05 16:05:19 +000026require(BABEL_BASE_DIR . "html/common_functions.php");
27require(BABEL_BASE_DIR . "classes/system/dbconnection.class.php");
kitlo399df202008-09-30 15:32:25 +000028$dbc = new DBConnection();
29$dbh = $dbc->connect();
droyb6e25c72008-07-18 13:01:13 +000030
kitlo58d8a5a2008-09-24 20:08:44 +000031$work_dir = "/home/babel-working/";
kitlo9c7c62a2008-10-05 16:05:19 +000032if (!($ini = @parse_ini_file(BABEL_BASE_DIR . "classes/base.conf"))) {
gobrienb854dcb2008-01-30 18:50:45 +000033 errorLog("Failed to find/read database conf file - aborting.");
34 exitTo("error.php?errNo=101300","error: 101300 - database conf can not be found");
35}
gobrienb854dcb2008-01-30 18:50:45 +000036$context = $ini['context'];
gobrienb854dcb2008-01-30 18:50:45 +000037
kitlo9c7c62a2008-10-05 16:05:19 +000038$work_context_dir = $work_dir . $context . "/";
39$tmp_dir = $work_context_dir . "tmp/";
40$babel_language_packs_dir = $work_context_dir . "babel_language_packs/";
41$output_dir = $work_context_dir . "output/";
kitlo58d8a5a2008-09-24 20:08:44 +000042$source_files_dir = "source_files_for_generate/";
gobrienb854dcb2008-01-30 18:50:45 +000043
droydfd5d622008-11-10 20:16:39 +000044# Language pack URL leader, to enable mirrors on download.eclipse.org
45$language_pack_leader = "";
46if($context == "live") {
47 $language_pack_leader = "http://www.eclipse.org/downloads/download.php?r=1&file=/technology/babel/babel_language_packs/";
48}
49
gobrien1a8e02f2008-01-30 01:46:26 +000050$leader = ". . ";
kitlo58d8a5a2008-09-24 20:08:44 +000051$timestamp = date("Ymdhis");
gobrien1a8e02f2008-01-30 01:46:26 +000052
droyd157aac2008-10-07 21:14:33 +000053$rm_command = "rm -rf $work_dir" . "*";
54exec($rm_command);
droy082976e2008-10-07 21:02:23 +000055exec("mkdir -p $output_dir");
56
kitlo9c7c62a2008-10-05 16:05:19 +000057/*
58 * Create language pack links file
59 */
60exec("mkdir -p $babel_language_packs_dir");
droydfd5d622008-11-10 20:16:39 +000061$language_pack_links_file = fopen("${babel_language_packs_dir}index.php", "w");
62fwrite($language_pack_links_file, "<?php\n\$pageTitle = \"Babel Language Packs\";\n");
63fwrite($language_pack_links_file, "<include \$_SERVER['DOCUMENT_ROOT'] . '/eclipse.org-common/themes/Phoenix/header.php';\n");
64fwrite($language_pack_links_file, "?>\n");
65fwrite($language_pack_links_file, "\n\t<h1>Babel Language Packs</h1>" .
kitlo9c7c62a2008-10-05 16:05:19 +000066 "\n\t<h2>Build ID: $timestamp</h2>");
droy0b08d292008-05-28 15:18:11 +000067
kitlo58d8a5a2008-09-24 20:08:44 +000068echo "Generating update site\n";
kitlo9c7c62a2008-10-05 16:05:19 +000069$train_result = mysql_query("SELECT DISTINCT train_id FROM release_train_projects");
kitlo58d8a5a2008-09-24 20:08:44 +000070while (($train_row = mysql_fetch_assoc($train_result)) != null) {
71 $train_id = $train_row['train_id'];
72 $train_version = "3.4.0";
73 if (strcmp($train_id, "europa") == 0) {
74 $train_version = "3.3.0";
droy0b08d292008-05-28 15:18:11 +000075 }
kitlo9c7c62a2008-10-05 16:05:19 +000076 $train_version_timestamp = "$train_version.v$timestamp";
77 $site_xml = "";
kitlo58d8a5a2008-09-24 20:08:44 +000078
79 $output_dir_for_train = $output_dir . $train_row['train_id'] . "/";
80 exec("mkdir $output_dir_for_train");
81 exec("mkdir ${output_dir_for_train}features/");
82 exec("mkdir ${output_dir_for_train}plugins/");
83
kitlo9c7c62a2008-10-05 16:05:19 +000084 fwrite($language_pack_links_file, "\n\t<h3>Release Train: $train_id</h3>\n\t<ul>");
85
86 $language_result = mysql_query("SELECT * FROM languages WHERE languages.is_active");
87 while (($language_row = mysql_fetch_assoc($language_result)) != null) {
droy0b08d292008-05-28 15:18:11 +000088 $language_name = $language_row['name'];
kitlo58d8a5a2008-09-24 20:08:44 +000089 $language_iso = $language_row['iso_code'];
90 $language_locale = $language_row['locale'];
91 $language_id = $language_row['language_id'];
92 if (strcmp($language_iso, "en") == 0) {
93 $language_iso = "en_AA";
94 $language_name = "Pseudo Translations";
95 }
96 if ($language_locale != null) {
droy0b08d292008-05-28 15:18:11 +000097 $language_name = $language_locale . " " . $language_name;
gobrien1a8e02f2008-01-30 01:46:26 +000098 }
kitlo9c7c62a2008-10-05 16:05:19 +000099
100 $site_xml .= "\n\t<category-def name=\"Babel Language Packs in $language_name\" label=\"Babel Language Packs in $language_name\">";
101 $site_xml .= "\n\t\t<description>Babel Language Packs in $language_name</description>";
102 $site_xml .= "\n\t</category-def>";
103
104 fwrite($language_pack_links_file, "\n\t<h4>Language: $language_name</h4>\n\t<ul>");
105
kitlo58d8a5a2008-09-24 20:08:44 +0000106 echo "${leader}Generating language pack for $train_id - $language_name ($language_iso) (language_id=" . $language_id . ")\n";
107
gobrien1a8e02f2008-01-30 01:46:26 +0000108 /*
droy0b08d292008-05-28 15:18:11 +0000109 * Determine which plug-ins need to be in this language pack.
gobrien1a8e02f2008-01-30 01:46:26 +0000110 */
kitlo58d8a5a2008-09-24 20:08:44 +0000111 if (strcmp($language_iso, "en_AA") == 0) {
112 $file_result = mysql_query("SELECT DISTINCT f.project_id, f.version, f.file_id, f.name
113 FROM files AS f
114 INNER JOIN strings AS s ON f.file_id = s.file_id
115 INNER JOIN release_train_projects as v ON (f.project_id = v.project_id AND f.version = v.version)
116 WHERE f.is_active
117 AND v.train_id = '" . $train_row['train_id'] . "'");
kitlo58d8a5a2008-09-24 20:08:44 +0000118 } else {
119 $file_result = mysql_query("SELECT DISTINCT f.project_id, f.version, f.file_id, f.name
120 FROM files AS f
121 INNER JOIN strings AS s ON f.file_id = s.file_id
122 INNER JOIN translations AS t ON (s.string_id = t.string_id AND t.is_active)
123 INNER JOIN release_train_projects as v ON (f.project_id = v.project_id AND f.version = v.version)
124 WHERE t.language_id = " . $language_id . "
125 AND f.is_active
126 AND v.train_id = '" . $train_row['train_id'] . "'");
127 }
128
droy0b08d292008-05-28 15:18:11 +0000129 $plugins = array();
kitlo9c7c62a2008-10-05 16:05:19 +0000130 $projects = array();
131 $project_versions = array();
132 $pseudo_translations_indexes = array();
kitlo58d8a5a2008-09-24 20:08:44 +0000133 while (($file_row = mysql_fetch_assoc($file_result)) != null) {
134 # save original filename
135 $file_row['origname'] = $file_row['name'];
136
droy02c430a2008-06-02 19:42:08 +0000137 # strip useless CVS structure before the plugin name (bug 221675 c14):
138 $pattern = '/^([a-zA-Z0-9\/_-])+\/([a-zA-Z0-9_-]+)\.([a-zA-Z0-9_-]+)(.*)\.properties$/i';
139 $replace = '${2}.${3}${4}.properties';
140 $file_row['name'] = preg_replace($pattern, $replace, $file_row['name']);
kitlo58d8a5a2008-09-24 20:08:44 +0000141
droy02c430a2008-06-02 19:42:08 +0000142 # strip source folder (bug 221675) (org.eclipse.plugin/source_folder/org/eclipse/plugin)
143 $pattern = '/^([a-zA-Z0-9_-]+)\.([a-zA-Z0-9_-]+)\.([a-zA-Z0-9\._-]+)(.*)\/(\1)([\.\/])(\2)([\.\/])(.*)\.properties$/i';
144 $replace = '${1}.${2}.${3}/${5}${6}${7}${8}${9}.properties';
droy0b08d292008-05-28 15:18:11 +0000145 $file_row['name'] = preg_replace($pattern, $replace, $file_row['name']);
kitlo58d8a5a2008-09-24 20:08:44 +0000146
147 if (preg_match("/^([a-zA-Z0-9\.]+)\/(.*)$/", $file_row['name'], $matches)) {
droy0b08d292008-05-28 15:18:11 +0000148 $file_row['subname'] = $matches[2];
149 $plugins[$matches[1]][] = $file_row;
150 } else {
151 echo " WARNING: no plug-in name found in file " . $file_row['file_id'] . " \"" . $file_row['name'] . "\"\n";
gobrien1a8e02f2008-01-30 01:46:26 +0000152 }
droy0b08d292008-05-28 15:18:11 +0000153 }
kitlo58d8a5a2008-09-24 20:08:44 +0000154
droy0b08d292008-05-28 15:18:11 +0000155 /*
156 * Generate one plug-in fragment for each plug-in
157 */
kitlo58d8a5a2008-09-24 20:08:44 +0000158 foreach ($plugins as $plugin_name => $plugin_row) {
159 echo "${leader}${leader}Generating plug-in fragment $plugin_name\n";
gobrien1a8e02f2008-01-30 01:46:26 +0000160 /*
droy0b08d292008-05-28 15:18:11 +0000161 * Clean and create the temporary directory
gobrien1a8e02f2008-01-30 01:46:26 +0000162 */
kitlo58d8a5a2008-09-24 20:08:44 +0000163 if (file_exists($tmp_dir)) {
164 exec("rm -rf $tmp_dir; mkdir $tmp_dir");
droy0b08d292008-05-28 15:18:11 +0000165 } else {
kitlo58d8a5a2008-09-24 20:08:44 +0000166 exec("mkdir $tmp_dir");
droy0b08d292008-05-28 15:18:11 +0000167 }
gobrien1a8e02f2008-01-30 01:46:26 +0000168 /*
droy0b08d292008-05-28 15:18:11 +0000169 * Generate each *.properties file
gobrien1a8e02f2008-01-30 01:46:26 +0000170 */
droy0b08d292008-05-28 15:18:11 +0000171 foreach ($plugin_row as $properties_file) {
172 /*
173 * Convert the filename to *_lang.properties, e.g., foo_fr.properties
174 */
175 $filename = $properties_file['subname'];
kitlo58d8a5a2008-09-24 20:08:44 +0000176 if (preg_match( "/^(.*)\.properties$/", $filename, $matches)) {
droy0b08d292008-05-28 15:18:11 +0000177 $filename = $matches[1] . '_' . $language_iso . '.properties';
gobrien1a8e02f2008-01-30 01:46:26 +0000178 }
kitlo58d8a5a2008-09-24 20:08:44 +0000179 echo "${leader}${leader}${leader}Generating properties file $filename (file_id=" . $properties_file['file_id'] . ")\n";
droy0b08d292008-05-28 15:18:11 +0000180 /*
181 * Create any needed sub-directories
182 */
kitlo58d8a5a2008-09-24 20:08:44 +0000183 $fullpath = $tmp_dir . $filename;
184 preg_match("/^((.*)\/)?(.+?)$/", $fullpath, $matches);
185 exec("mkdir -p \"" . $matches[1] . "\"");
droy0b08d292008-05-28 15:18:11 +0000186 /*
187 * Start writing to the file
188 */
kitlo58d8a5a2008-09-24 20:08:44 +0000189 $outp = fopen($fullpath, "w");
kitlo9c7c62a2008-10-05 16:05:19 +0000190 fwrite($outp, "# Copyright by many contributors; see http://babel.eclipse.org/");
kitlo58d8a5a2008-09-24 20:08:44 +0000191 if (strcmp($language_iso, "en_AA") == 0) {
192 $sql = "SELECT string_id, name, value FROM strings WHERE file_id = " . $properties_file['file_id'] .
193 " AND is_active AND non_translatable = 0";
194 $strings_result = mysql_query($sql);
195 while (($strings_row = mysql_fetch_assoc($strings_result)) != null) {
kitlo9c7c62a2008-10-05 16:05:19 +0000196 fwrite($outp, "\n" . $strings_row['name'] . "=" . $properties_file['project_id'] . $strings_row['string_id'] .
197 ":" . $strings_row['value']);
kitlo58d8a5a2008-09-24 20:08:44 +0000198
199 $value = htmlspecialchars($strings_row['value']);
200 if (strlen($value) > 100) {
201 $value = substr($value, 0, 100) . " ...";
202 }
kitlo9c7c62a2008-10-05 16:05:19 +0000203 $pseudo_translations_indexes[$properties_file['project_id']][] = "\n\t\t<li><a href=\"http://babel.eclipse.org/babel/translate.php?project=" .
204 $properties_file['project_id'] . "&version=" . $properties_file['version'] . "&file=" .
205 $properties_file['origname'] . "&string=" . $strings_row['name'] . "\">" .
206 $properties_file['project_id'] . $strings_row['string_id'] . "</a>&nbsp;" . $value . "</li>";
kitlo58d8a5a2008-09-24 20:08:44 +0000207 }
208 } else {
209 $sql = "SELECT
210 strings.name AS 'key',
211 strings.value AS orig,
212 translations.value AS trans
droy0b08d292008-05-28 15:18:11 +0000213 FROM strings, translations
214 WHERE strings.string_id = translations.string_id
droy0b08d292008-05-28 15:18:11 +0000215 AND strings.file_id = " . $properties_file['file_id'] . "
kitlo1173dbd2008-10-21 15:58:36 +0000216 AND strings.is_active
217 AND strings.non_translatable = 0
218 AND translations.language_id = " . $language_id . "
kitlo58d8a5a2008-09-24 20:08:44 +0000219 AND translations.is_active";
220 $strings_result = mysql_query($sql);
221 while (($strings_row = mysql_fetch_assoc($strings_result)) != null) {
kitlo7f522672008-10-21 14:15:54 +0000222 fwrite($outp, "\n" . $strings_row['key'] . "=");
kitlo9c7c62a2008-10-05 16:05:19 +0000223 # echo "${leader1S}${leaderS}${leaderS}${leaderS}" . $strings_row['key'] . "=";
kitlo58d8a5a2008-09-24 20:08:44 +0000224 if ($strings_row['trans']) {
225 # json_encode returns the string with quotes fore and aft. Need to strip them.
226 # $tr_string = preg_replace('/^"(.*)"$/', '${1}', json_encode($strings_row['trans']));
227 # $tr_string = str_replace('\\\\', '\\', $tr_string);
228 $tr_string = toescapedunicode($strings_row['trans']);
229 fwrite($outp, $tr_string);
230 # echo $strings_row['trans'];
231 } else {
232 fwrite($outp, $strings_row['orig']);
233 }
234 fwrite($outp, "\n");
droy0b08d292008-05-28 15:18:11 +0000235 }
droy0b08d292008-05-28 15:18:11 +0000236 }
237 /*
238 * Finish the properties file
239 */
kitlo58d8a5a2008-09-24 20:08:44 +0000240 fclose($outp);
241 echo "${leader}${leader}${leader}Completed properties file $filename\n";
gobrien1a8e02f2008-01-30 01:46:26 +0000242 }
243 /*
droy0b08d292008-05-28 15:18:11 +0000244 * Copy in the various legal files
gobrien1a8e02f2008-01-30 01:46:26 +0000245 */
kitlo9c7c62a2008-10-05 16:05:19 +0000246 exec("cp ${source_files_dir}about.html $tmp_dir");
droy0b08d292008-05-28 15:18:11 +0000247 /*
248 * Generate the META-INF/MANIFEST.MF file
249 */
250 $parent_plugin_id = $plugin_name;
kitlo9c7c62a2008-10-05 16:05:19 +0000251 $project_id = $properties_file['project_id'];
kitlo5c9da712008-10-27 12:45:40 +0000252 $fragment_id = "$parent_plugin_id.nl_$language_iso";
kitlo9c7c62a2008-10-05 16:05:19 +0000253 $fragment_filename = "${fragment_id}_$train_version_timestamp.jar";
kitlo58d8a5a2008-09-24 20:08:44 +0000254
droy0b08d292008-05-28 15:18:11 +0000255 $plugins[$plugin_name]['id'] = $fragment_id;
kitlo9c7c62a2008-10-05 16:05:19 +0000256 $plugins[$plugin_name]['version'] = $train_version_timestamp;
kitlo58d8a5a2008-09-24 20:08:44 +0000257
258 exec("mkdir $tmp_dir/META-INF" );
259 $outp = fopen("$tmp_dir/META-INF/MANIFEST.MF", "w");
260 fwrite($outp, "Manifest-Version: 1.0\n");
261 fwrite($outp, "Bundle-Name: $parent_plugin_id $language_name NLS Support\n");
262 fwrite($outp, "Bundle-SymbolicName: $fragment_id ;singleton=true\n");
kitlo9c7c62a2008-10-05 16:05:19 +0000263 fwrite($outp, "Bundle-Version: $train_version_timestamp\n");
264 fwrite($outp, "Bundle-Vendor: Eclipse.org\n");
kitlo58d8a5a2008-09-24 20:08:44 +0000265 fwrite($outp, "Fragment-Host: $parent_plugin_id\n");
266 fclose($outp);
droy0b08d292008-05-28 15:18:11 +0000267 /*
268 * Jar up this directory as the fragment plug-in jar
269 */
kitlo58d8a5a2008-09-24 20:08:44 +0000270 system("cd $tmp_dir; jar cfM ${output_dir_for_train}plugins/$fragment_filename .");
271 echo "${leader}${leader}Completed plug-in fragment $plugin_name\n";
kitlo58d8a5a2008-09-24 20:08:44 +0000272
kitlo9c7c62a2008-10-05 16:05:19 +0000273 $projects[$project_id][] = $fragment_id;
274 $project_versions[$project_id] = $properties_file['version'];
droy0b08d292008-05-28 15:18:11 +0000275 }
kitlo9c7c62a2008-10-05 16:05:19 +0000276 foreach ($projects as $project_id => $fragment_ids) {
277 /*
278 * Sort fragment names
279 */
280 asort($fragment_ids);
281 /*
282 * Create ${babel_language_packs_dir}tmp
283 */
284 exec("mkdir -p ${babel_language_packs_dir}tmp/eclipse/features");
285 exec("mkdir -p ${babel_language_packs_dir}tmp/eclipse/plugins");
286 /*
287 * Clean and create the temporary directory
288 */
289 if (file_exists($tmp_dir)) {
290 exec("rm -rf $tmp_dir; mkdir $tmp_dir");
291 } else {
292 exec("mkdir $tmp_dir");
293 }
294 /*
295 * Create the feature.xml
296 *
297 * TODO <url><update label=... url=... and <url><discovery label=... url=... are not implemented
298 *
299 * <url>
300 * <update label="%updateSiteName" url="http://update.eclipse.org/updates/3.2" />
301 * <discovery label="%updateSiteName" url="http://update.eclipse.org/updates/3.2" />
302 * </url>
303 */
kitlo5c9da712008-10-27 12:45:40 +0000304 $feature_id = "org.eclipse.babel.nls_${project_id}_$language_iso";
kitlo9c7c62a2008-10-05 16:05:19 +0000305 $feature_version = "$train_version.v$timestamp";
306 $feature_filename = "${feature_id}_$train_version_timestamp.jar";
307
308 $project_version = $project_versions[$project_id];
309 $sql = "SELECT pct_complete
310 FROM project_progress
311 WHERE project_id = \"$project_id\"
312 AND version = \"$project_version\"
313 AND language_id = $language_id";
314 $project_pct_complete_result = mysql_query($sql);
315 $project_pct_complete = mysql_result($project_pct_complete_result, 0);
316 if (strcmp($language_iso, "en_AA") == 0) {
317 $project_pct_complete = 100;
318 }
319
320 $outp = fopen("$tmp_dir/feature.xml", "w");
321 fwrite($outp, "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>" .
322 "\n<feature" .
323 "\n\tid=\"$feature_id\"" .
324 "\n\tlabel=\"Babel Language Pack for $project_id in $language_name ($project_pct_complete%)\"" .
325 "\n\timage=\"eclipse_update_120.jpg\"" .
326 "\n\tprovider-name=\"%providerName\"" .
327 "\n\tversion=\"$train_version_timestamp\">" .
328 "\n\t<copyright>\n\t\t%copyright\n\t</copyright>" .
329 "\n\t<license url=\"%licenseURL\">\n\t\t%license\n\t</license>" .
330 "\n\t<description>Babel Language Pack for $project_id in $language_name</description>" );
331 foreach ($fragment_ids as $fragment_id) {
332 $jar_name = "${output_dir_for_train}plugins/${fragment_id}_$train_version_timestamp.jar";
333 $size = filesize($jar_name);
334 fwrite($outp, "\n\t<plugin fragment=\"true\" id=\"$fragment_id\" unpack=\"false\" " .
335 "version=\"$train_version_timestamp\" download-size=\"$size\" install-size=\"$size\" />");
336 /*
337 * Copy the plugin to ${babel_language_packs_dir}tmp
338 */
339 exec("cp ${output_dir_for_train}plugins/${fragment_id}_$train_version_timestamp.jar ${babel_language_packs_dir}tmp/eclipse/plugins");
340 }
341 fwrite($outp, "\n</feature>");
342 fclose($outp);
343 /*
344 * Copy in the various legal files
345 */
346 exec("cp ${source_files_dir}about.html $tmp_dir");
347 exec("cp ${source_files_dir}eclipse_update_120.jpg $tmp_dir");
348 exec("cp ${source_files_dir}epl-v10.html $tmp_dir");
349 exec("cp ${source_files_dir}feature.properties $tmp_dir");
350 exec("cp ${source_files_dir}license.html $tmp_dir");
351 /*
352 * Copy in the Babel Pseudo Translations Index file
353 */
354 if (strcmp($language_iso, "en_AA") == 0) {
355 $pseudo_translations_index_file = fopen("${output_dir}BabelPseudoTranslationsIndex-$project_id.html", "w");
356 fwrite($pseudo_translations_index_file, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\">" .
357 "\n<html>\n<head>\n<title>Babel Pseudo Translations Index for $project_id</title>" .
358 "\n<meta http-equiv=Content-Type content=\"text/html; charset=UTF-8\">\n</head>" .
359 "\n<body>\n\t<h1>Babel Pseudo Translations Index for $project_id</h1>" .
360 "\n\t<h2>Version: $train_version_timestamp</h2>\n\t<ul>");
361 foreach ($pseudo_translations_indexes[$project_id] as $index) {
362 fwrite($pseudo_translations_index_file, $index);
363 }
364 fwrite($pseudo_translations_index_file, "\n\t</ul>\n</body>\n</html>");
365 fclose($pseudo_translations_index_file);
366 exec("cp ${output_dir}BabelPseudoTranslationsIndex-$project_id.html $tmp_dir");
367 exec("rm ${output_dir}BabelPseudoTranslationsIndex-$project_id.html");
368 }
369 /*
370 * Copy the feature to ${babel_language_packs_dir}tmp before jar'ing up
371 */
372 exec("mkdir -p ${babel_language_packs_dir}tmp/eclipse/features/${fragment_id}_$train_version_timestamp");
373 exec("cd $tmp_dir; cp * ${babel_language_packs_dir}tmp/eclipse/features/${fragment_id}_$train_version_timestamp");
374 /*
375 * Zip up language pack
376 */
377 $language_pack_name = "BabelLanguagePack-$project_id-${language_iso}_$train_version_timestamp.zip";
378 exec("cd ${babel_language_packs_dir}tmp; zip -r $babel_language_packs_dir$language_pack_name eclipse");
379 /*
380 * Clean up ${babel_language_packs_dir}tmp
381 */
382 exec("rm -rf ${babel_language_packs_dir}tmp");
383 /*
384 * Add project language pack link to language pack links file
385 */
droydfd5d622008-11-10 20:16:39 +0000386 fwrite($language_pack_links_file, "\n\t<li><a href=\"${language_pack_leader}${language_pack_name}\">$language_pack_name</a></li>");
kitlo9c7c62a2008-10-05 16:05:19 +0000387 /*
388 * Jar up this directory as the feature jar
389 */
390 system("cd $tmp_dir; jar cfM ${output_dir_for_train}features/$feature_filename .");
391 /*
392 * Register this feature with the site.xml
393 */
394 $site_xml .= "\n\t<feature url=\"features/$feature_filename\" id=\"$feature_id\" version=\"$feature_version\">";
395 $site_xml .= "\n\t\t<category name=\"Babel Language Packs in $language_name\"/>";
396 $site_xml .= "\n\t</feature>";
397 echo "${leader}Completed language pack for $language_name ($language_iso)\n";
kitlo58d8a5a2008-09-24 20:08:44 +0000398 }
kitlo9c7c62a2008-10-05 16:05:19 +0000399 fwrite($language_pack_links_file, "\n\t</ul>");
gobrien1a8e02f2008-01-30 01:46:26 +0000400 }
gobrien1a8e02f2008-01-30 01:46:26 +0000401 /*
droy0b08d292008-05-28 15:18:11 +0000402 * <site mirrorsURL=... implemented in the weekly build process by sed'ing <site>
gobrien1a8e02f2008-01-30 01:46:26 +0000403 */
kitlo58d8a5a2008-09-24 20:08:44 +0000404 $outp = fopen("${output_dir_for_train}site.xml", "w");
kitlo9c7c62a2008-10-05 16:05:19 +0000405 fwrite($outp, "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" .
406 "\n<site>" .
407 "\n\t<description url=\"http://babel.eclipse.org/\">" .
408 "\n\t\tThis update site contains user-contributed translations of the strings in all Eclipse projects." .
409 "\n\t\tPlease see the http://babel.eclipse.org/ Babel project web pages for a full how-to-use explanation of" .
410 "\n\t\tthese translations as well as how you can contribute to the translations of this and future versions of Eclipse." .
411 "\n\t</description>");
kitlo58d8a5a2008-09-24 20:08:44 +0000412 fwrite($outp, $site_xml);
kitlo9c7c62a2008-10-05 16:05:19 +0000413 fwrite($outp, "\n</site>");
kitlo58d8a5a2008-09-24 20:08:44 +0000414 fclose($outp);
kitlo9c7c62a2008-10-05 16:05:19 +0000415
416 fwrite($language_pack_links_file, "\n\t</ul>");
gobrien1a8e02f2008-01-30 01:46:26 +0000417}
gobrien1a8e02f2008-01-30 01:46:26 +0000418echo "Completed generating update site\n";
419
kitlo9c7c62a2008-10-05 16:05:19 +0000420fwrite($language_pack_links_file, "\n</body>\n</html>");
421fclose($language_pack_links_file);
422
gobrien1a8e02f2008-01-30 01:46:26 +0000423/*
kitlo58d8a5a2008-09-24 20:08:44 +0000424 2. what happens if the translation feature includes plug-in fragments for
425 plug-ins that are not in the current image?
426 does it load correctly and ignore those fragments? if so, good
427 A: warnings appear in the run-time error log
428 does it fail to load? if so, then we need to generate different features, perhaps
429 one feature for each plug or else we need to know more about the project
430 distro structure to know which plug-ins to put in each feature
431 what happens if those plug-ins are later added - does it load the strings now?
432 A: probably not
433 3. need to handle different versions of each feature/plugin/platform; generate different
434 language packs for each
435 */
gobrien1a8e02f2008-01-30 01:46:26 +0000436
kitlo58d8a5a2008-09-24 20:08:44 +0000437$alloutput = fopen($output_dir."langpack_output_".date("m_d_Y"), "w");
438fwrite($alloutput,ob_get_contents());
kitlo399df202008-09-30 15:32:25 +0000439?>