blob: 646fb9fd03c3f19c5fbd4819be121515954a2091 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
#!/usr/bin/env gjs
// Copyright 2013 Endless Mobile, Inc.
const Format = imports.format;
const System = imports.system;
const Gio = imports.gi.Gio;
const Json = imports.gi.Json;
String.prototype.format = Format.format;
// Other constants, available from subcommands' code
const programVersion = "@PACKAGE_VERSION@";
/**
* usage:
*
* Print command-line help message.
*/
function usage() {
print('Extracts translatable strings from JSON configuration file.\n' +
'This is xgettext for JSON.\n');
print('Usage: %s [Options | <INPUT-FILE> <TOP-SRCDIR>]\n'.format(
System.programInvocationName));
print('Options:');
print(' --help Print this help message');
print(' --version Print version and exit');
System.exit(0);
}
/**
* version:
*
* Print command-line version output.
*/
function version() {
print('%s %s'.format(
System.programInvocationName, programVersion));
System.exit(0);
}
if(ARGV.indexOf('--version') != -1)
version();
if((ARGV.indexOf('--help') != -1) || (ARGV.length != 2)) {
usage();
}
try {
let parser = new Json.Parser();
let input_file = Gio.File.new_for_path(ARGV[0]);
let top_srcdir = Gio.File.new_for_path(ARGV[1]);
let full_path = top_srcdir.get_relative_path(input_file);
parser.connect('object-member', function(parser, object, member_name) {
if(!member_name.endsWith('_'))
return;
print('#line %d "%s"'.format(parser.get_current_line(), full_path));
print('_("%s");'.format(object.get_string_member(member_name)));
});
parser.load_from_file(input_file.get_path());
} catch (e) {
printerr('%s: %s'.format(System.programInvocationName, e.message));
System.exit(1);
}
|