From 977a500e682f2633e5d72cf94fdda4a924181b79 Mon Sep 17 00:00:00 2001 From: filip Date: Sun, 4 Sep 2016 00:16:03 +0200 Subject: prepare also _ts_diff function for comparison (not done yet) and fix fuzzy_or_missing and untrans arrays in _po_diff function --- langs/lib.php | 53 ++++++++++++++++++++++++++++++++++------------------- 1 file changed, 34 insertions(+), 19 deletions(-) (limited to 'langs/lib.php') diff --git a/langs/lib.php b/langs/lib.php index dc4dbd8a4..1b016c8a4 100644 --- a/langs/lib.php +++ b/langs/lib.php @@ -129,16 +129,14 @@ function _po_diff($locale, $resource, $source_l = NULL, $path = NULL, $compared // process $target_l translation if (!isset($target_l[$msgid])) { - // adding fuzzy or missing string or plurals - $fuzzy_or_missing[$msgid] = $subarray; + // adding fuzzy or missing string + $fuzzy_or_missing[] = $msgid; $msgstr_target_l = NULL; } else { $msgstr_target_l = $target_l[$msgid][$context_or_num]; // are there any plurals untranslated? $untranslated_plural_target_l = FALSE; if (!is_null($msgid_plural)) { - // filter out msgid_plural - unset($msgstr_target_l['msgid_plural']); foreach ($msgstr_target_l as $nplural) { if (empty($nplural)) { $untranslated_plural_target_l = TRUE; @@ -147,7 +145,7 @@ function _po_diff($locale, $resource, $source_l = NULL, $path = NULL, $compared } // untranslated string if ($untranslated_plural_target_l || empty($msgstr_target_l[0])) { - $untrans[$msgid] = $subarray; // adding untranslated string or plurals + $untrans[] = $msgid; // adding untranslated string } } @@ -161,8 +159,8 @@ function _po_diff($locale, $resource, $source_l = NULL, $path = NULL, $compared $msgstr_compared[0] = ''; } if ($msgstr_target_l != $msgstr_compared) { - $differences[$msgid]['target_l'][$context_or_num] = $msgstr_target_l; - $differences[$msgid]['compared'][$context_or_num] = $msgstr_compared; + $differences[$msgid][$context_or_num]['target_l'] = $msgstr_target_l; + $differences[$msgid][$context_or_num]['compared'] = $msgstr_compared; } } } @@ -191,15 +189,17 @@ function _po_diff($locale, $resource, $source_l = NULL, $path = NULL, $compared * @param string $resource file name ('mageiaSync') * @param array $source_l array with source file strings (to avoid duplicated parsing) * @param string $path directly passed path for nonlocal files + * @param array $compared array with strings for comparing * * @return array */ -function _ts_diff($locale, $resource, $source_l = NULL, $path = NULL) +function _ts_diff($locale, $resource, $source_l = NULL, $path = NULL, $compared = NULL) { $source_path_filename = sprintf('%s%s_%s.ts', $path, $resource, $locale); // mageiaSync_sl.ts $source_strings = array(); $untranslated_strings = array(); $obsoleted_strings = array(); + $num_of_original_str = 0; // read .ts file $file_handle = @fopen($source_path_filename, 'r'); if ($file_handle === false) { @@ -209,29 +209,44 @@ function _ts_diff($locale, $resource, $source_l = NULL, $path = NULL) // iterate over lines while(($line = fgets($file_handle, 65536)) !== false) { - // count ??? lines - if (false !== strpos($line, '')) { - preg_match_all("/()([a-z_A-Z@-]+)(<\/source>)/", $line, $source_string); - $source_strings[] = $source_string[2]; + // store context name + if (false !== strpos($line, '')) { + preg_match_all("/()(.+)(<\/name>)/", $line, $context_name); + } + // store source lines + else if (false !== strpos($line, '')) { + preg_match_all("/()(.+)(<\/source>)/", $line, $source_string); + $num_of_original_str++; } - // count lines - if (false !== strpos($line, '')) { + preg_match_all("/()(.+)(<\/translation>)/", $line, $translation_string); + $source_strings[$source_string[2][0]][$context_name[2][0]] = $translation_string[2]; } - // count lines - if (false !== strpos($line, ' count($source_strings), // # of original strings + 'a' => $num_of_original_str - count($obsoleted_strings), // # of original strings // 'b' => , // # of target strings 'source_strings' => $source_strings, // array of original strings 'fuzzy_or_missing' => array(), // array of fuzzy or missing strings 'notrans' => $untranslated_strings, // array of untranslated strings + 'differences' => $differences, // array of different strings from two translations 'extra' => $obsoleted_strings, 'dup_str' => array(), ); -- cgit v1.2.1