Esempio n. 1
0
 /**
  * Returns an associative array of all parsed property files
  * 
  * The associative array keys are based on Region Code (combination of language code and country code)
  * These are retrieved from the file name (see naming convention below).
  * If no country code is available, the language code will be repeated
  * 
  * Example:	Language-code is 'nl' and Country-Code is 'NL'.
  * 			The Region Code will be 'nl-NL'
  * Example:	Language-code is 'de' and Country-Code is empty.
  * 			The Region Code will be 'de-de'
  * Example:	Language-code is empty and Country-Code is 'uk'.
  * 			The Region Code will be 'uk'
  * 
  * Array (
  * 		['fullname'] Full name of parsed file
  * 		['filename'] File name without language or encoding information and no extension
  * 		['rc'] Region-Code
  * 		['lc'] Language-Code (optional)
  * 		['cc'] Country-Code (optional)
  * 		['enc'] File encoding (optional)
  * 		['ext'] File extension
  * 		['content'] Array ($key=>$value)
  * )
  * 
  */
 public function parse()
 {
     $resources = array();
     $files = gettext::getResourceFiles('i18n');
     foreach ($files as $file) {
         preg_match_all(self::FILE_PATTERN, $file, $parts);
         $resource = array();
         $resource['fullname'] = $parts[0][0];
         $resource['filename'] = $parts[1][0];
         $resource['lc'] = $parts[2][0];
         $resource['cc'] = $parts[3][0];
         $resource['ext'] = $parts[5][0];
         $resource['content'] = $this->getResourcesFromFile(GETTEXT_ROOT . '/' . $file);
         if ($resource['lc'] == '' && $resource['cc'] == '') {
             $regionCode = '';
         } else {
             if ($resource['lc'] != '' && $resource['cc'] == '') {
                 $regionCode = $resource['lc'] . '-' . $resource['lc'];
             } else {
                 if ($resource['lc'] != '' && $resource['cc'] != '') {
                     $regionCode = $resource['lc'] . '-' . $resource['cc'];
                 } else {
                     if ($resource['lc'] == '' && $resource['cc'] != '') {
                         $regionCode = $resource['cc'];
                     }
                 }
             }
         }
         $resource['rc'] = $regionCode;
         $resources[$regionCode] = $resource;
     }
     return $resources;
 }
Esempio n. 2
0
<?php

//Example of how to use this class
require_once './gettext.php';
$gettext = new gettext();
$lines = $gettext->scan_dir();
echo count($lines) . ' lines have been collected and need to be translated <br>';
if ($gettext->create_po($lines)) {
    echo '"' . $gettext->file_name . '" file has been created in the same directory of this script find it at <a href="' . $gettext->file_name . '">download ' . $gettext->file_name . '</a>';
} else {
    echo 'Error could not create the file please check if you have the right permissions';
}
Esempio n. 3
0
 public function FrontendParamsResolve($context)
 {
     if (!gettext::addParameters()) {
         return;
     }
     $parser = gettext::getParser();
     $languageCode = gettext::getRegionCode();
     $resources = $parser->parse();
     if ($parser instanceof i18nParser) {
         // Add properties to Parameter Pool
         if (isset($resources[$languageCode])) {
             $localizedResources = $resources[$languageCode];
         } else {
             $localizedResources = $resources[''];
         }
         if (isset($localizedResources['content'])) {
             $content = $localizedResources['content'];
             if (is_array($content)) {
                 foreach ($content as $name => $value) {
                     $name = gettext::createValidParameterName($name);
                     $context["params"][$name] = $value;
                 }
             }
         }
     }
 }
Esempio n. 4
0
 public function grab(&$param_pool)
 {
     $result = new XMLElement($this->dsParamROOTELEMENT);
     $result->setAttribute('type', gettext::getParserType());
     $parser = gettext::getParser();
     $resources = $parser->parse();
     if ($parser instanceof POParser) {
         foreach ($resources as $resource) {
             $resourceNode = new XMLElement('resource');
             $resourceNode->setAttribute('regionCode', $resource['rc']);
             $resourceNode->setAttribute('languageCode', $resource['lc']);
             $resourceNode->setAttribute('countryCode', $resource['cc']);
             $content = $resource['content'];
             foreach ($content as $name => $context) {
                 $contextNode = new XMLElement('context');
                 if ($name != '') {
                     $contextNode->setAttribute('name', $name);
                 }
                 foreach ($context as $item) {
                     $itemNode = new XMLElement('item');
                     $itemNode->appendChild(new XMLElement('msgid', $item['msgid']));
                     if (isset($item['msgid_plural'])) {
                         $itemNode->appendChild(new XMLElement('msgid_plural', $item['msgid_plural']));
                     }
                     if (is_array($item['msgstr'])) {
                         for ($i = 0; $i < count($item['msgstr']); $i++) {
                             $node = new XMLElement('msgstr', $item['msgstr'][$i]);
                             $node->setAttribute('index', $i);
                             $itemNode->appendChild($node);
                         }
                     } else {
                         $itemNode->appendChild(new XMLElement('msgstr', $item['msgstr']));
                     }
                     $contextNode->appendChild($itemNode);
                 }
                 $resourceNode->appendChild($contextNode);
             }
             $result->appendChild($resourceNode);
         }
         /*
         $localizedResources = $resources[$languagCode];
         $content = $localizedResources['content'][''];
         	
         foreach($content as $item) {
         	$name = gettext::createValidParameterName($item['msgid']);
         	$value = $item['msgstr'];
         	$context["params"][$name] = $value;
         }
         */
     } else {
         if ($parser instanceof i18nParser) {
             foreach ($resources as $resource) {
                 $resourceNode = new XMLElement('resource');
                 $resourceNode->setAttribute('regionCode', $resource['rc']);
                 $resourceNode->setAttribute('languageCode', $resource['lc']);
                 $resourceNode->setAttribute('countryCode', $resource['cc']);
                 $content = $resource['content'];
                 foreach ($content as $name => $value) {
                     if (empty($value)) {
                         if (isset($resources['']['content'][$name])) {
                             $value = $resources['']['content'][$name];
                         }
                         $value = empty($value) ? $name : $value;
                     }
                     $itemNode = new XMLElement('item', $value);
                     $itemNode->setAttribute('name', $name);
                     $resourceNode->appendChild($itemNode);
                 }
                 $result->appendChild($resourceNode);
             }
         }
     }
     return $result;
 }