aboutsummaryrefslogtreecommitdiffstats
path: root/langs/lib.php
diff options
context:
space:
mode:
Diffstat (limited to 'langs/lib.php')
-rw-r--r--langs/lib.php271
1 files changed, 0 insertions, 271 deletions
diff --git a/langs/lib.php b/langs/lib.php
deleted file mode 100644
index b238cdd4c..000000000
--- a/langs/lib.php
+++ /dev/null
@@ -1,271 +0,0 @@
-<?php
-/**
-*/
-
-if (isset($_SERVER['APP_MODE']) && $_SERVER['APP_MODE'] !== 'prod') {
- ini_set('error_reporting', E_ALL);
- ini_set('show_errors', true);
- ini_set('display_errors', true);
-} else {
- ini_set('error_reporting', FALSE);
- ini_set('show_errors', FALSE);
- ini_set('display_errors', FALSE);
- ini_set('log_errors', FALSE);
-}
-
-include '../langs.php';
-
-/**
- * Diff two .lang files, to get:
- * - strings count of each
- * - missing strings (in $a, not in $b)
- * - extra strings (in $b, not in $a)
- * - untranslated strings (same in $a and $b, or empty in $b)
- * - duplicate strings in $b
- *
- * @param string $a file name
- * @param string $b file name
- *
- * @return array
-*/
-function _lang_diff($a, $b)
-{
- $fa = i18n::_lang_return($a);
- $fb = i18n::_lang_return($b, true); // option to return duplicates
- $duplicates = (isset($fb['duplicates']) ? array_pop($fb) : null);
-
-/* $ret = array(
- 'aCount' => count($fa),
- 'bCount' => count($fb),
- 'diff' => count($fa) - count($fb),
- ); unused var */
- $missing = array();
- $notrans = array();
-
- $ka = array_keys($fa);
- $kb = array_keys($fb);
-
- $missing = array_diff($ka, $kb);
- $extra = array_diff($kb, $ka);
-
- // search for untranslated strings
- foreach ($fa as $k => $v) {
- if (array_key_exists($k, $fb)) {
- if ($v == $fb[$k] || '' == $fb[$k]) {
- $notrans[] = $k;
- }
- }
- }
-
- return array(
- 'a_name' => $a,
- 'b_name' => $b,
- 'a' => count($fa),
- 'b' => count($fb),
- 'missing' => $missing,
- 'notrans' => $notrans,
- 'extra' => $extra,
- 'dup_str' => $duplicates,
- );
-}
-
-/**
- * Diff pot and po files, to get:
- * - source (pot) strings count
- * - missing strings in target
- * - untranslated strings in target
- * - empty array for extra and duplicate strings for backward compatibility
- *
- * @param string $locale locale name ('sl')
- * @param string $resource file name ('about/license')
- *
- * @return array
-*/
-function _po_diff($locale, $resource)
-{
- $source_l = read_translation_file('en', $resource);
- $target_l = read_translation_file($locale, $resource);
-
- $pot_strings = array();
- $untrans = array();
- $fuzzy_or_missing = array();
-
- foreach ($source_l as $escaped_string => $subarray) {
- if (!empty($subarray["msgid"])) { // filter out header
- $pot_strings[$escaped_string] = $subarray["msgid"];
- }
- }
-
- foreach ($target_l as $escaped_string => $subarray) {
- if (!empty($subarray["msgid"])) { // filter out header
- $po_strings[$escaped_string] = $subarray["msgstr"][0];
- }
- }
-
- foreach ($pot_strings as $escaped_string => $translated_string) {
- if (isset($po_strings[$escaped_string])) {
- if (empty($po_strings[$escaped_string])) {
- $untrans[] = $escaped_string;
- }
- } else {
- $fuzzy_or_missing[] = $escaped_string;
- }
- }
-
- return array(
- 'a' => count($pot_strings), // # of original strings
-// 'b' => count($po_strings), // # of target strings
- 'fuzzy_or_missing' => $fuzzy_or_missing,
- 'notrans' => $untrans,
- 'extra' => array(),
- 'dup_str' => array(),
- );
-}
-
-/*function _lang_diff_stats($a, $b)
-{
- $diff = _lang_diff($a, $b);
-
- $diff['missing'] = count($diff['missing']);
- $diff['notrans'] = count($diff['notrans']);
- $diff['extra'] = count($diff['extra']);
- $diff['ok'] = (($diff['b'] - $diff['a']) == 0) ? true : false;
- $diff['correct'] = $diff['b'] - $diff['notrans'] - $diff['missing'];
-
- return $diff;
-} /**/
-
-if ( ! function_exists('glob_recursive'))
-{
- // Does not support flag GLOB_BRACE
-
- function glob_recursive($pattern, $flags = 0)
- {
- $files = glob($pattern, $flags);
-
-// removing dirs from $files as they are not files ;)
- $files_wo_dirs = array();
- foreach ($files as $single_file) {
- $single_file_as_string = str_split($single_file);
- $last_sign = array_pop($single_file_as_string);
- if($last_sign != '/') {
- $files_wo_dirs[] = $single_file;
- };
- }
- $files = $files_wo_dirs;
-
- foreach (glob(dirname($pattern).'/*', GLOB_ONLYDIR|GLOB_NOSORT) as $dir)
- {
- $files = array_merge($files, glob_recursive($dir.'/'.basename($pattern), $flags));
- }
-
- return $files;
- }
-}
-
-/**
- * Create 'sl/about/license.sl.lang'
- * from 'en/about/license.en.lang'
- * or ../_nav/langs/sl.lang
- * from ../_nav/langs/en.lang
- *
- * @param string $s file name with path
- * @param string $l locale name
- *
- * @return string
-*/
-function _lang_file_switch($s, $l)
-{
- $s = str_replace('en.lang', $l . '.lang', $s);
- return str_replace('en/', $l . '/', $s);
-}
-
-/**
- * Create 'sl/about/license.po'
- * from 'en/about/license.pot'
- * or ../_nav/langs/sl.po
- * from ../_nav/langs/en.pot
- *
- * @param string $s file name with path
- * @param string $l locale name
- *
- * @return string
-*/
-function _po_file_switch($s, $l)
-{
- if($l != 'en') {
- $s = str_replace('.pot', '.po', $s);
- }
- $s = str_replace('/en.', '/' . $l . '.', $s);
- return str_replace('en/', $l . '/', $s);
-}
-
-/**
- * Create 'about/license'
- * from 'en/about/license.pot' or 'en/about/license.en.lang'
- *
- * @param string $source_file file name with path
- * @param string $extension file extension to remove
- *
- * @return string
-*/
-function _extract_resource($source_file, $extension = '.pot')
-{
- $resource = str_replace($extension, '', $source_file);
- return str_replace('en/', '', $resource);
-}
-
-function get_lang_references($pattern = '*')
-{
- return glob_recursive('en/' . $pattern, GLOB_MARK);
-}
-
-function get_other_langs()
-{
- $ls = glob('*');
- $re = array();
- foreach ($ls as $l) {
- if (!is_dir($l)) continue;
- if ($l == 'en') continue;
- $re[] = $l;
- }
- array_unshift($re, 'en');
- return $re;
-}
-
-function aproximate_number_of_untranslated_constitution_lines($app_root, $lang, $unique_lines_in_eng_constitution = array())
-{
- $constitution_readable = FALSE;
- $dest_constitution = sprintf('%s/%s/%s/%s_%s.md', $app_root, $lang, 'about/constitution', 'mageia.org_statutes', $lang);
- $number_of_unique_lines_in_eng_constitution = count($unique_lines_in_eng_constitution);
- $aproximate_number_of_untranslated_lines = 0;
- if(is_readable($dest_constitution)) {
- $unique_lines_in_constitution = array_unique(file($dest_constitution));
- $number_of_unique_lines_in_constitution = count($unique_lines_in_constitution);
- $constitution_readable = TRUE;
- if ($lang == 'en') {
- $aproximate_number_of_untranslated_lines = $number_of_unique_lines_in_constitution;
- $untranslated_lines_in_constitution = array();
- } else {
- $untranslated_lines_in_constitution = array_intersect($unique_lines_in_eng_constitution, $unique_lines_in_constitution);
- $number_of_nonunique_lines_lang_constitution = count($untranslated_lines_in_constitution);
- $ratio = $number_of_nonunique_lines_lang_constitution / $number_of_unique_lines_in_eng_constitution;
- $limit_ratio = 0.15; // limit ratio of "allowed" untranslated lines
- if ($ratio > $limit_ratio) {
- // add aproximate number of untranslated constitution lines
- $aproximate_number_of_untranslated_lines = $number_of_nonunique_lines_lang_constitution - round($limit_ratio * $number_of_unique_lines_in_eng_constitution);
- }
- }
- } else {
- $unique_lines_in_constitution = $unique_lines_in_eng_constitution;
- $aproximate_number_of_untranslated_lines = $number_of_unique_lines_in_eng_constitution;
- $untranslated_lines_in_constitution = $unique_lines_in_eng_constitution;
- }
-
- return array(
- 'unique_lines_in_constitution' => $unique_lines_in_constitution,
- 'constitution_readable' => $constitution_readable,
- 'untranslated_lines_in_constitution' => $untranslated_lines_in_constitution,
- 'aproximate_number_of_untranslated_lines' => $aproximate_number_of_untranslated_lines,
- );
-}