Adding translations variable transformations scripts from PHP to po files

skala
Julio Montoya 12 years ago
parent a6fe7c4dc6
commit 9144e59cae
  1. 79
      tests/translations/translate_all_languages_array_to_po.php
  2. 75
      tests/translations/translate_array_to_po.php

@ -0,0 +1,79 @@
<?php
/* For licensing terms, see /license.txt */
require_once 'main/inc/global.inc.php';
//Source language do not change
$dir = api_get_path(SYS_CODE_PATH).'lang/';
//Destination
$save_path = api_get_path(SYS_PATH).'resources/locale/';
if (!is_dir(api_get_path(SYS_PATH).'resources')) {
mkdir(api_get_path(SYS_PATH).'resources');
}
//The new po files will be saved in $dir.'/LC_MESSAGES/';
if (!is_dir($save_path)) {
mkdir($save_path);
}
/*
if (!is_dir($save_dir_path).'/LC_MESSAGES') {
mkdir($save_dir_path.'/LC_MESSAGES');
}*/
$englishDir = api_get_path(SYS_CODE_PATH).'lang/english';
$iterator = new FilesystemIterator($dir);
foreach ($iterator as $folder) {
if ($folder->isDir()) {
$langPath = $folder->getPathname();
if ($folder->getBasename() != 'spanish') {
//continue;
}
$langIterator = new FilesystemIterator($langPath);
$filter = new RegexIterator($langIterator, '/\.(php)$/');
foreach ($filter as $phpFile) {
$phpFilePath = $phpFile->getPathname();
$po = file($phpFilePath);
$translations = array();
$englishFile = $englishDir.'/'.$phpFile->getBasename();
foreach ($po as $line) {
$pos = strpos($line, '=');
if ($pos) {
$variable = (substr($line, 1, $pos-1));
$variable = trim($variable);
require $englishFile;
$my_variable_in_english = $variable;
require $phpFilePath;
$my_variable = $$variable;
$translations[] = array('msgid' => $my_variable_in_english, 'msgstr' =>$my_variable);
}
}
$code = api_get_language_isocode($folder->getBasename());
//LC_MESSAGES
$new_po_file = $save_path.$folder->getBasename().'/'.$phpFile->getBasename('.php').'.po';
if (!is_dir($save_path.$folder->getBasename())) {
mkdir($save_path.$folder->getBasename());
}
$fp = fopen($new_po_file, 'w');
foreach ($translations as $item) {
$line = 'msgid "'.addslashes($item['msgid']).'"'."\n";
$line .= 'msgstr "'.addslashes($item['msgstr']).'"'."\n\n";
fwrite($fp, $line);
}
fclose($fp);
}
if ($folder->getBasename() == 'bosnian') {
//exit;
}
}
}

@ -0,0 +1,75 @@
<?php
/* For licensing terms, see /license.txt */
require_once 'main/inc/global.inc.php';
//Source language do not change
$dir = api_get_path(SYS_CODE_PATH).'lang/english';
//Translate this language
$to_dir = api_get_path(SYS_CODE_PATH).'lang/spanish';
$po_lang = 'es_ES';
$save_path = api_get_path(SYS_PATH).'resources/locale/';
$save_dir_path = $save_path.$po_lang;
//The new po files will be saved in $dir.'/LC_MESSAGES/';
if (!is_dir($save_path)) {
mkdir($save_path);
}
if (!is_dir($save_dir_path)) {
mkdir($save_dir_path);
}
if (!is_dir($save_dir_path).'/LC_MESSAGES') {
mkdir($save_dir_path.'/LC_MESSAGES');
}
if (is_dir($dir)) {
if ($dh = opendir($dir)) {
while (($file = readdir($dh)) !== false) {
$info = pathinfo($file);
if ($info['extension'] != 'php') {
continue;
}
echo "filename: $file : filetype: " . filetype($dir.'/'.$file) . "<br >";
$translations = array();
$filename = $dir.'/'.$file;
$po = file($filename);
if (!file_exists($filename) || !file_exists($to_dir.'/'.$file)) {
continue;
}
foreach ($po as $line) {
$pos = strpos($line, '=');
if ($pos) {
$variable = (substr($line, 1, $pos-1));
$variable = trim($variable);
require $filename;
$my_variable_in_english = $$variable;
require $to_dir.'/'.$file;
$my_variable = $$variable;
$translations[] = array('msgid' =>$my_variable_in_english, 'msgstr' =>$my_variable);
}
}
//var_dump($translations);
$info['filename'] = explode('.', $info['filename']);
$info['filename'] = $info['filename'][0];
$new_po_file = $save_dir_path.'/LC_MESSAGES/'.$info['filename'].'.po';
var_dump($new_po_file);
$fp = fopen($new_po_file, 'w');
var_dump($fp);
foreach ($translations as $item) {
$line = 'msgid "'.addslashes($item['msgid']).'"'."\n";
$line .= 'msgstr "'.addslashes($item['msgstr']).'"'."\n\n";
fwrite($fp, $line);
}
fclose($fp);
}
closedir($dh);
}
}
Loading…
Cancel
Save