@@ -81,17 +81,25 @@ and parse_string_2 buffer = parse
81
81
82
82
{
83
83
84
+ let print_type fmt langs =
85
+ Format. fprintf fmt
86
+ " [%%%%shared type t = %a]\n "
87
+ (Format. pp_print_list
88
+ ~pp_sep: (fun fmt () -> Format. pp_print_string fmt " |" )
89
+ Format. pp_print_string ) langs
90
+
84
91
let print_header fmt default_lang =
85
92
Format. pp_print_string fmt @@
86
- " [%%server\n \
93
+ " [%%shared let default_language = " ^ default_lang ^ " ]\n \
94
+ [%%server\n \
87
95
let _language_ =\n \
88
96
Eliom_reference.Volatile.eref\n \
89
- ~scope:Eliom_common.default_process_scope " ^ default_lang ^ " \n \
97
+ ~scope:Eliom_common.default_process_scope default_language \n \
90
98
let get_lang () = Eliom_reference.Volatile.get _language_\n \
91
99
let set_lang lang = Eliom_reference.Volatile.set _language_ lang\n \
92
100
]\n \
93
101
[%%client\n \
94
- let _language_ = ref " ^ default_lang ^ " \n \
102
+ let _language_ = ref default_language \n \
95
103
let get_lang () = !_language_\n \
96
104
let set_lang lang = _language_ := lang\n \
97
105
]\n \
@@ -167,19 +175,24 @@ let input_file = ref "-"
167
175
let output_file = ref " -"
168
176
let langs = ref " "
169
177
let default_lang = ref " "
178
+ let external_type = ref false
170
179
171
180
let options = Arg. align
172
181
[ ( " --langs" , Arg. Set_string langs
173
182
, " Comma-separated langs (from ocaml sum type) (e.g. Us,Fr). \
174
183
Must be ordered as in source TSV file." )
175
184
; ( " --default-lang" , Arg. Set_string default_lang
176
- , " Set the default lang." )
185
+ , " Set the default lang (default is the first one in --langs) ." )
177
186
; ( " --input-file" , Arg. Set_string input_file
178
187
, " TSV file containing keys and translations. \
179
188
If option is omited or set to -, read on stdin." )
180
189
; ( " --ouput-file" , Arg. Set_string output_file
181
190
, " File TSV file containing keys and translations. \
182
- If option is omited or set to -, write on stdout." ) ]
191
+ If option is omited or set to -, write on stdout." )
192
+ ; ( " --external-type" , Arg. Set external_type
193
+ , " Values passed to --langs option come from a predefined type \
194
+ (do not generate the type)." )
195
+ ]
183
196
184
197
let usage = " usage: ocsigen-i18n-generator [options] [< input] [> output]"
185
198
@@ -195,11 +208,12 @@ let _ =
195
208
| "-" -> stdout
196
209
| file -> open_out file in
197
210
let langs = Str. split (Str. regexp " ," ) ! langs in
198
- let default_lang = ! default_lang in
211
+ let default_lang = match ! default_lang with " " -> List. hd langs | x -> x in
199
212
assert (List. mem default_lang langs) ;
200
213
let lexbuf = Lexing. from_channel in_chan in
201
214
(try let key_values = parse_lines langs [] lexbuf in
202
215
let output = Format. formatter_of_out_channel out_chan in
216
+ if not (! external_type) then print_type output langs ;
203
217
print_header output default_lang ;
204
218
Format. fprintf output " module Tr = struct\n " ;
205
219
print_module_body print_expr_html output key_values ;
0 commit comments