Merge pull request #8 from Open-Xchange-Frontend/multiline_headers

add support for multiline string in headers
This commit is contained in:
Ruben Vermeersch 2014-03-21 11:08:05 +01:00
commit 06571c89fc
3 changed files with 24 additions and 2 deletions

View File

@ -74,7 +74,18 @@ PO.parse = function (data) {
'Plural-Forms': '', 'Plural-Forms': '',
}; };
headers.split(/\n/).forEach(function (header) { headers.split(/\n/).reduce(function (acc, line) {
if (acc.merge) {
//join lines, remove last resp. first "
line = acc.pop().slice(0, -1) + line.slice(1);
delete acc.merge;
}
if (/^".*"$/.test(line) && !/^".*\\n"$/.test(line)) {
acc.merge = true;
}
acc.push(line);
return acc;
}, []).forEach(function (header) {
if (header.match(/^#/)) { if (header.match(/^#/)) {
po.comments.push(header.replace(/^#\s*/, '')); po.comments.push(header.replace(/^#\s*/, ''));
} }

View File

@ -1,6 +1,8 @@
# French translation of Link (6.x-2.9) # French translation of Link (6.x-2.9)
# Copyright (c) 2011 by the French translation team # Copyright (c) 2011 by the French translation team
# #
## Plural-Forms by polish translation team to demonstrate multi-line ##
#
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Link (6.x-2.9)\n" "Project-Id-Version: Link (6.x-2.9)\n"
@ -10,7 +12,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n" "Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
"|| n%100>=20) ? 1 : 2;\n"
"Last-Translator: Ruben Vermeersch <ruben@rocketeer.be>\n" "Last-Translator: Ruben Vermeersch <ruben@rocketeer.be>\n"
"Language: fr\n" "Language: fr\n"
"X-Generator: Poedit 1.6.2\n" "X-Generator: Poedit 1.6.2\n"

View File

@ -23,6 +23,14 @@ describe('Parse', function () {
assert.equal(item.msgstr, "Les ébauches de jetons suivantes peuvent être utilisées à la fois dans les chemins et dans les titres. Lorsqu'elles sont utilisées dans un chemin ou un titre, elles seront remplacées par les valeurs appropriées."); assert.equal(item.msgstr, "Les ébauches de jetons suivantes peuvent être utilisées à la fois dans les chemins et dans les titres. Lorsqu'elles sont utilisées dans un chemin ou un titre, elles seront remplacées par les valeurs appropriées.");
}); });
it('Handles multi-line headers', function () {
var po = PO.parse(fs.readFileSync(__dirname + '/fixtures/multi-line.po', 'utf8'));
assert.notEqual(po, null);
assert.equal(po.items.length, 1);
assert.equal(po.headers['Plural-Forms'], 'nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;');
});
it('Handles translator comments', function () { it('Handles translator comments', function () {
var po = PO.parse(fs.readFileSync(__dirname + '/fixtures/comment.po', 'utf8')); var po = PO.parse(fs.readFileSync(__dirname + '/fixtures/comment.po', 'utf8'));
assert.notEqual(po, null); assert.notEqual(po, null);