fd79d54c36ed2b38dffcee90478d13d667ff6ef7
[ldapsaisie.git] / public_html / lang / generate_lang_file.php
1 #!/usr/bin/php
2 <?php
3 /*******************************************************************************
4  * Copyright (C) 2007 Easter-eggs
5  * http://ldapsaisie.labs.libre-entreprise.org
6  *
7  * Author: See AUTHORS file in top-level directory.
8  *
9  * This program is free software; you can redistribute it and/or
10  * modify it under the terms of the GNU General Public License version 2
11  * as published by the Free Software Foundation.
12  *
13  * This program is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16  * GNU General Public License for more details.
17  *
18  * You should have received a copy of the GNU General Public License
19  * along with this program; if not, write to the Free Software
20  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
21
22 ******************************************************************************/
23
24 error_reporting(E_ERROR);
25
26 require_once('../core.php');
27 require_once('../conf/config.inc.php');
28
29 $withoutselectlist=False;
30 $copyoriginalvalue=False;
31 $additionalfileformat=False;
32 $translations=array();
33 if ($argc > 1) {
34   for ($i=1;$i<$argc;$i++) {
35     if (is_file($argv[$i])) {
36       @include($argv[$i]);
37       foreach($GLOBALS['LSlang'] as $msg => $trans) {
38         $translations[$msg]=$trans;
39       }
40     }
41     elseif($argv[$i]=='--without-select-list') {
42       $withoutselectlist=True;
43     }
44     elseif($argv[$i]=='--copy-original-value') {
45       $copyoriginalvalue=True;
46     }
47     elseif($argv[$i]=='--additional-file-format') {
48       $additionalfileformat=True;
49     }
50     elseif($argv[$i]=='-h') {
51       echo "Usage : ".$argv[0]." [file1] [file2] [-h] [options]\n";
52       echo "  --without-select-list    Don't add possibles values of select list\n";
53       echo "  --copy-original-value    Copy original value as translated value when no translated value exists\n";
54       echo "  --additional-file-format Additional file format output\n";
55       exit(0);
56     }
57   }
58 }
59
60 $data=array();
61
62 function add($msg) {
63   if ($msg!='') {
64     global $data, $translations;
65     $data[$msg]=$translations[$msg];
66   }
67 }
68
69 // LDAP Servers
70 foreach($GLOBALS['LSconfig']['ldap_servers'] as $conf) {
71   add($conf['name']);
72   add($conf['subDnLabel']);
73   add($conf['recoverPassword']['recoveryHashMail']['subject']);
74   add($conf['recoverPassword']['recoveryHashMail']['msg']);
75   add($conf['recoverPassword']['newPasswordMail']['subject']);
76   add($conf['recoverPassword']['newPasswordMail']['msg']);
77   if (is_array($conf['subDn'])) {
78     foreach($conf['subDn'] as $name => $cf) {
79       if ($name!='LSobject') {
80         add($name);
81       }
82     }
83   }
84 }
85
86
87 // LSobject
88 if (loadDir('../'.LS_OBJECTS_DIR) && loadDir('../'.LS_LOCAL_DIR.LS_OBJECTS_DIR)) {
89   foreach($GLOBALS['LSobjects'] as $name => $conf) {
90     add($conf['label']);
91     
92     // LSrelation
93     if (is_array($conf['LSrelation'])) {
94       foreach($conf['LSrelation'] as $rel) {
95         add($rel['label']);
96         add($rel['emptyText']);
97       }
98     }
99     // Custom Actions
100     if (is_array($conf['customActions'])) {
101       foreach($conf['customActions'] as $act) {
102         add($act['label']);
103         add($act['question_format']);
104         add($act['onSuccessMsgFormat']);
105       }
106     }
107
108     // LSform
109     if (is_array($conf['LSform']['layout'])) {
110       foreach($conf['LSform']['layout'] as $lay) {
111         add($lay['label']);
112       }
113     }
114     if (is_array($conf['LSform']['dataEntryForm'])) {
115       foreach($conf['LSform']['dataEntryForm'] as $def) {
116         add($def['label']);
117       }
118     }
119     // LSsearch
120     if (is_array($conf['LSsearch']['predefinedFilters'])) {
121       foreach($conf['LSsearch']['predefinedFilters'] as $lay) {
122         add($lay);
123       }
124     }
125     if (is_array($conf['LSsearch']['extraDisplayedColumns'])) {
126       foreach($conf['LSsearch']['extraDisplayedColumns'] as $cid => $cconf) {
127         add($cconf['label']);
128       }
129     }
130     if (is_array($conf['LSsearch']['customActions'])) {
131       foreach($conf['LSsearch']['customActions'] as $act) {
132         add($act['label']);
133         add($act['question_format']);
134         add($act['onSuccessMsgFormat']);
135       }
136     }
137
138
139     
140     if(is_array($conf['attrs'])) {
141       foreach($conf['attrs'] as $attr) {
142         add($attr['label']);
143         add($attr['help_info']);
144         add($attr['no_value_label']);
145         add($attr['html_options']['mail']['subject']);
146         add($attr['html_options']['mail']['msg']);
147         
148         // LSattr_html_select_list
149         if (($attr['html_type']=='select_list' || $attr['html_type']=='select_box') && is_array($attr['html_options']['possible_values']) && !$withoutselectlist) {
150           foreach($attr['html_options']['possible_values'] as $pkey => $pname) {
151             if (is_array($pname)) {
152               add($pname['label']);
153               if (is_array($pname['possible_values'])) {
154                 foreach($pname['possible_values'] as $pk => $pn) {
155                   if ($pk == 'OTHER_OBJECT') continue;
156                   add($pn);
157                 }
158               }
159             }
160             elseif ($pkey != 'OTHER_OBJECT') {
161               add($pname);
162             }
163           }
164         }
165
166         // LSattr_html_valueWithUnit
167         if ($attr['html_type']=='valueWithUnit' && is_array($attr['html_options']['units'])) {
168           foreach($attr['html_options']['units'] as $pname) {
169             add($pname);
170           }
171         }
172         
173         // Check data
174         if (is_array($attr['check_data'])) {
175           foreach($attr['check_data'] as $check) {
176             add($check['msg']);
177           }
178         }
179         
180         // validation
181         if (is_array($attr['validation'])) {
182           foreach($attr['validation'] as $valid) {
183             add($valid['msg']);
184           }
185         }
186       }
187     }
188   }
189 }
190
191 ksort($data);
192
193 echo "<?php\n\n";
194
195 if (!$additionalfileformat) print "\$GLOBALS['LSlang'] = array (\n";
196
197 foreach($data as $key => $val) {
198   if ($copyoriginalvalue && $val=="") {
199     $val=$key;
200   }
201   if ($additionalfileformat) {
202     print "\$GLOBALS['LSlang'][\"$key\"] = \"$val\";\n";
203   }
204   else {
205     print "\n\"$key\" =>\n  \"$val\",\n";
206   }
207 }
208
209 if (!$additionalfileformat) echo "\n);\n";
210
211 ?>