1<?php
2// +-----------------------------------------------------------------------+
3// | This file is part of Piwigo.                                          |
4// |                                                                       |
5// | For copyright and license information, please view the COPYING.txt    |
6// | file that was distributed with this source code.                      |
7// +-----------------------------------------------------------------------+
8
9define('PHPWG_ROOT_PATH', '../');
10include_once( PHPWG_ROOT_PATH.'include/common.inc.php' );
11include_once( PHPWG_ROOT_PATH.'tools/language/translation_validated.inc.php' );
12$languages = array_keys(get_languages());
13sort($languages);
14
15$page['ref_compare'] = 'en_UK';
16$page['ref_default_values'] = 'en_UK';
17
18if (!isset($_GET['lang']))
19{
20  echo '<a href="?lang=all">All languages</a><br><br>';
21  echo '<ul>';
22  foreach ($languages as $language)
23  {
24    if ($page['ref_compare'] == $language)
25    {
26      continue;
27    }
28    echo '<li><a href="?lang='.$language.'">'.$language.'</a></li>';
29  }
30  echo '</ul>';
31  exit();
32}
33else if (in_array($_GET['lang'], $languages))
34{
35  $languages = array($_GET['lang']);
36}
37
38$file_list = array('common', 'admin', 'install', 'upgrade');
39
40$metalang = array();
41
42// preload reference languages
43$metalang[ $page['ref_compare'] ] = load_metalang($page['ref_compare'], $file_list);
44$metalang[ $page['ref_default_values'] ] = load_metalang($page['ref_default_values'], $file_list);
45
46foreach ($languages as $language)
47{
48  if (in_array($language, array($page['ref_compare'], $page['ref_default_values'])))
49  {
50    continue;
51  }
52  echo '<h2>'.$language.'</h2>';
53  $metalang[$language] = load_metalang($language, $file_list);
54
55  foreach ($file_list as $file)
56  {
57    if (isset($metalang[ $language ][$file]))
58    {
59      $missing_keys = array_diff(
60        array_keys($metalang[ $page['ref_compare'] ][$file]),
61        array_keys($metalang[ $language ][$file])
62        );
63
64      $output_missing = '';
65      foreach ($missing_keys as $key)
66      {
67        $output_missing.= get_line_to_translate($file, $key);
68      }
69
70      // strings not "really" translated?
71      $output_duplicated = '';
72      $output_lost = '';
73      foreach (array_keys($metalang[$language][$file]) as $key)
74      {
75        $exceptions = array('Level 0');
76        if (in_array($key, $exceptions))
77        {
78          continue;
79        }
80
81        if (isset($validated_keys[$language]) and in_array($key, $validated_keys[$language]))
82        {
83          continue;
84        }
85
86        $local_value = $metalang[$language][$file][$key];
87        if (!isset($metalang[ $page['ref_default_values'] ][$file][$key]))
88        {
89          $output_lost.= '#'.$key.'# does not exist in the reference language'."\n";
90        }
91        else
92        {
93          $ref_value = $metalang[ $page['ref_default_values'] ][$file][$key];
94          if ($local_value == $ref_value)
95          {
96            $output_duplicated.= get_line_to_translate($file, $key);
97          }
98        }
99      }
100
101      echo '<h3>'.$file.'.lang.php</h3>';
102
103      if ('' != $output_missing or '' != $output_duplicated)
104      {
105        $output = '';
106        if ('' != $output_missing)
107        {
108          $output.= "// missing translations\n".$output_missing;
109        }
110        if ('' != $output_duplicated)
111        {
112          $output.= "\n// untranslated yet\n".$output_duplicated;
113        }
114        echo '<textarea style="width:100%;height:250px;">'.$output.'</textarea>';
115      }
116
117      if ('' != $output_lost)
118      {
119        echo '<pre>'.$output_lost.'</pre>';
120      }
121    }
122    else
123    {
124      echo '<h3>'.$file.'.lang.php is missing</h3>';
125    }
126  }
127}
128
129function load_metalang($language, $file_list)
130{
131  global $lang, $user;
132
133  $metalang = array();
134  foreach ($file_list as $file)
135  {
136    $lang = array();
137    $user['language'] = $language;
138    if (load_language($file.'.lang', '', array('language'=>$language, 'no_fallback'=>true)))
139    {
140      $metalang[$file] = $lang;
141    }
142  }
143  return $metalang;
144}
145
146function get_line_to_translate($file, $key)
147{
148  global $metalang, $page;
149
150  $print_key = str_replace("'", '\\\'', $key);
151  $print_value = str_replace("'", '\\\'', $metalang[ $page['ref_default_values'] ][$file][$key]);
152  return '$'."lang['".$print_key."'] = '".$print_value."';\n";
153}
154?>