1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 | import PO from 'pofile';
|
14 |
|
15 | import version from './version';
|
16 |
|
17 |
|
18 | const defaultHeaders = {
|
19 | "Project-Id-Version": "PROJECT VERSION",
|
20 | "Report-Msgid-Bugs-To": "EMAIL@ADDRESS",
|
21 | "POT-Creation-Date": "2016-02-25 13:15-0800",
|
22 | "PO-Revision-Date": "YEAR-MO-DA HO:MI+ZONE",
|
23 | "Last-Translator": "FULL NAME <EMAIL@ADDRESS>",
|
24 | "Language-Team": "LANGUAGE <LL@li.org>",
|
25 | "MIME-Version": "1.0",
|
26 | "Content-Type": "text/plain; charset=utf-8",
|
27 | "Content-Transfer-Encoding": "8bit",
|
28 | "Generated-By": `jsxlate ${version()}`,
|
29 | };
|
30 |
|
31 |
|
32 | export default {
|
33 | json: {
|
34 | out(messages) {
|
35 | return JSON.stringify(
|
36 | Object.keys(messages).reduce((json, msg) => {
|
37 | json[msg] = msg;
|
38 | return json;
|
39 | }, {})
|
40 | );
|
41 | },
|
42 |
|
43 | in(json) {
|
44 | return JSON.parse(json);
|
45 | }
|
46 | },
|
47 |
|
48 | po: {
|
49 | out(messages, {root = process.cwd(), headers = defaultHeaders} = {}) {
|
50 | const po = new PO();
|
51 | Object.assign(po.headers, headers);
|
52 | Object.keys(messages).forEach(message => {
|
53 | const items = messages[message];
|
54 | const item = new PO.Item();
|
55 | item.msgid = message;
|
56 | item.references = items.map(
|
57 | ({sourceFile, line,}) => `${sourceFile.replace(root || '', '')}:${line}`
|
58 | );
|
59 | po.items.push(item);
|
60 | });
|
61 | return po.toString();
|
62 | },
|
63 |
|
64 | in(poFile) {
|
65 | return PO.parse(poFile).items.reduce((messages, message) => {
|
66 | messages[message.msgid] = message.msgstr[0];
|
67 | return messages;
|
68 | }, {});
|
69 | }
|
70 | },
|
71 |
|
72 |
|
73 | js: {
|
74 | out: messages => messages,
|
75 | in: messages => messages
|
76 | },
|
77 | };
|