Reads and parses strings of a .po file.
public parse ( sepia\InterfaceHandler $handle = null ) : array. | ||
$handle | sepia\InterfaceHandler | |
리턴 | array. |
/** * function define language and parse PO file * * @param String $lang language code */ public static function defineLanguage($lang = "") { //get language from browser if not set if (!$lang) { $lang = Lang::getLanguage(); } $poparser = new PoParser(); // path to lang file $filePath["en"] = PATH . "lang/en.po"; $filePath["de"] = PATH . "lang/de.po"; // set default language if language is not available if (!isset($filePath[$lang])) { $lang = "en"; } // returns array $po_output = $poparser->parse($filePath[$lang]); // convert array to $l_ array foreach ($po_output as $po_o) { if (isset($po_o["msgid"]) && isset($po_o["msgstr"])) { Lang::$lang_output[$po_o["msgid"][0]] = ""; foreach ($po_o["msgstr"] as $msg_str) { Lang::$lang_output[$po_o["msgid"][0]] .= $msg_str; } } } }
/** * Parses portable object (PO) format. * * @param string $resource translation catalog filename * @return Catalog translation catalog object */ public function parse($resource) { $fileHandler = new FileHandler($resource); $poParser = new PoParser($fileHandler); $entries = $poParser->parse(); $catalog = new Catalog(); foreach ($entries as $entry) { $item = new CatalogItem(); foreach ($entry as $key => $value) { if ($key == 'msgid') { $item->ID = $value[0]; } elseif ($key == 'msgid_plural') { $item->ID_plural = $value[0]; } elseif ($key == 'context') { $item->context = $value[0]; } elseif ($key == 'msgstr') { $item->translations[0] = $value[0]; } elseif (substr($key, 0, 7) === 'msgstr[') { $size = strpos($key, ']') - 7; $item->translations[(int) substr($key, 7, $size)] = $value[0]; } } $catalog->add($item); } return $catalog; }
protected function execute(InputInterface $input, OutputInterface $output) { $inFile = new FileHandler($input->getArgument('from')); $outFileLocation = $input->getArgument('to'); $poParser = new PoParser($inFile); $messages = $poParser->parse($inFile); foreach ($messages as $msgid => $message) { $message = $this->translateMessage($message); $poParser->setEntry($msgid, $message, false); } $poParser->writeFile($outFileLocation); }
protected function loadLang($config) { $scope = $config->get('environment.scope'); $lang = $config->get('environment.lang') ?: $config->get('lang'); $paths = $config->get('paths'); $file = $paths['views'] . '/' . $scope . '/langs/' . $lang . '.po'; if (file_exists($file)) { $fileHandler = new FileHandler($file); $poParser = new PoParser($fileHandler); $GLOBALS['traducciones'] = $poParser->parse(); } }
public function load($lang = null) { $this->translations = array(); $language = $lang == null ? $this->locale : $lang; if (array_key_exists($language, $this->poFiles)) { foreach ($this->poFiles[$language] as $file) { $fHandler = new FileHandler($file); $poParser = new PoParser($fHandler); $t = $poParser->parse(); $this->translations = array_merge_recursive($this->translations, $t); } } }