Skip to content

Commit

Permalink
Merge pull request #38 from martinroob/fixes-1.4.6
Browse files Browse the repository at this point in the history
Fixes 1.4.6
  • Loading branch information
martinroob committed Jun 29, 2017
2 parents 1558ecb + 20e7bb3 commit 6baa8cd
Show file tree
Hide file tree
Showing 9 changed files with 89 additions and 1 deletion.
7 changes: 7 additions & 0 deletions Changelog.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,10 @@
<a name="1.4.6"></a>
# [1.4.6](https://github.com/martinroob/ngx-i18nsupport-lib/compare/v1.4.6...v1.4.6) (2017-06-29)

### Bug Fixes

* **all formats** normalized messages: ICU-References are not converted to native strings ([#37](https://github.com/martinroob/ngx-i18nsupport-lib/issues/37)).

<a name="1.4.5"></a>
# [1.4.5](https://github.com/martinroob/ngx-i18nsupport-lib/compare/v1.4.5...v1.4.4) (2017-06-16)

Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "ngx-i18nsupport-lib",
"version": "1.4.5",
"version": "1.4.6",
"description": "A Typescript library to work with Angular generated i18n files (xliff, xmb)",
"main": "bundles/ngx-i18nsupport-lib.umd.js",
"module": "./dist/index.js",
Expand Down
9 changes: 9 additions & 0 deletions src/impl/abstract-message-parser.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import {IMessageParser} from './i-message-parser';
import {format, isNullOrUndefined} from 'util';
import {DOMUtilities} from './dom-utilities';
import {ParsedMessagePartEmptyTag} from './parsed-message-part-empty-tag';
import {ParsedMessagePartICUMessageRef} from './parsed-message-part-icu-message-ref';
/**
* Created by roobm on 10.05.2017.
* A message parser can parseICUMessage the xml content of a translatable message.
Expand Down Expand Up @@ -238,6 +239,8 @@ export abstract class AbstractMessageParser implements IMessageParser {
return this.createXmlRepresentationOfEmptyTagPart((<ParsedMessagePartEmptyTag>part), rootElem);
case ParsedMessagePartType.PLACEHOLDER:
return this.createXmlRepresentationOfPlaceholderPart((<ParsedMessagePartPlaceholder>part), rootElem);
case ParsedMessagePartType.ICU_MESSAGE_REF:
return this.createXmlRepresentationOfICUMessageRefPart((<ParsedMessagePartICUMessageRef>part), rootElem);
}
}

Expand Down Expand Up @@ -273,4 +276,10 @@ export abstract class AbstractMessageParser implements IMessageParser {
*/
protected abstract createXmlRepresentationOfPlaceholderPart(part: ParsedMessagePartPlaceholder, rootElem: Element): Node;

/**
* the xml used for icu message refs in the message.
* @param part
* @param rootElem
*/
protected abstract createXmlRepresentationOfICUMessageRefPart(part: ParsedMessagePartICUMessageRef, rootElem: Element): Node;
}
8 changes: 8 additions & 0 deletions src/impl/xliff-message-parser.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,14 @@ describe('message parse XLIFF 1.2 test spec', () => {
checkToXmlAndBack(normalizedMessage);
});

it('should parse ICU Refs', () => {
let normalizedMessage = 'a text with <ICU-Message-Ref_0/>';
let parsedMessage = parsedMessageFor(normalizedMessage);
expect(parsedMessage.asDisplayString()).toBe(normalizedMessage);
expect(parsedMessage.asNativeString()).toBe('a text with <x id="ICU"/>');
checkToXmlAndBack(normalizedMessage);
});

});

describe('xml to normalized message', () => {
Expand Down
16 changes: 16 additions & 0 deletions src/impl/xliff-message-parser.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import {ParsedMessagePartEndTag} from './parsed-message-part-end-tag';
import {ParsedMessagePartPlaceholder} from './parsed-message-part-placeholder';
import {TagMapping} from './tag-mapping';
import {ParsedMessagePartEmptyTag} from './parsed-message-part-empty-tag';
import {ParsedMessagePartICUMessageRef} from './parsed-message-part-icu-message-ref';
/**
* Created by roobm on 10.05.2017.
* A message parser for XLIFF 1.2
Expand Down Expand Up @@ -160,4 +161,19 @@ export class XliffMessageParser extends AbstractMessageParser {
return xElem;
}

/**
* the xml used for icu message refs in the message.
* @param part
* @param rootElem
*/
protected createXmlRepresentationOfICUMessageRefPart(part: ParsedMessagePartICUMessageRef, rootElem: Element): Node {
let xElem = rootElem.ownerDocument.createElement('x');
let idAttrib = 'ICU';
if (part.index() > 0) {
idAttrib = 'ICU_' + part.index().toString(10);
}
xElem.setAttribute('id', idAttrib);
return xElem;
}

}
8 changes: 8 additions & 0 deletions src/impl/xliff2-message-parser.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,14 @@ describe('message parse XLIFF 2.0 test spec', () => {
checkToXmlAndBack(normalizedMessage);
});

it('should parse ICU Refs', () => {
let normalizedMessage = 'a text with <ICU-Message-Ref_0/>';
let parsedMessage = parsedMessageFor(normalizedMessage);
expect(parsedMessage.asDisplayString()).toBe(normalizedMessage);
expect(parsedMessage.asNativeString()).toBe('a text with <ph id="0"/>');
checkToXmlAndBack(normalizedMessage);
});

});

describe('xml to normalized message', () => {
Expand Down
14 changes: 14 additions & 0 deletions src/impl/xliff2-message-parser.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import {ParsedMessagePartText} from './parsed-message-part-text';
import {ParsedMessagePartType} from './parsed-message-part';
import {TagMapping} from './tag-mapping';
import {ParsedMessagePartEmptyTag} from './parsed-message-part-empty-tag';
import {ParsedMessagePartICUMessageRef} from './parsed-message-part-icu-message-ref';
/**
* Created by roobm on 10.05.2017.
* A message parser for XLIFF 2.0
Expand Down Expand Up @@ -119,6 +120,9 @@ export class Xliff2MessageParser extends AbstractMessageParser {
case ParsedMessagePartType.PLACEHOLDER:
stack[stack.length - 1].element.appendChild(this.createXmlRepresentationOfPlaceholderPart(<ParsedMessagePartPlaceholder> part, rootElem));
break;
case ParsedMessagePartType.ICU_MESSAGE_REF:
stack[stack.length - 1].element.appendChild(this.createXmlRepresentationOfICUMessageRefPart(<ParsedMessagePartICUMessageRef> part, rootElem));
break;
case ParsedMessagePartType.START_TAG:
let newTagElem = this.createXmlRepresentationOfStartTagPart(<ParsedMessagePartStartTag> part, rootElem, tagIdCounter);
tagIdCounter++;
Expand Down Expand Up @@ -237,5 +241,15 @@ export class Xliff2MessageParser extends AbstractMessageParser {
return phElem;
}

/**
* the xml used for icu message refs in the message.
* @param part
* @param rootElem
*/
protected createXmlRepresentationOfICUMessageRefPart(part: ParsedMessagePartICUMessageRef, rootElem: Element): Node {
let phElem = rootElem.ownerDocument.createElement('ph');
phElem.setAttribute('id', part.index().toString(10));
return phElem;
}

}
8 changes: 8 additions & 0 deletions src/impl/xmb-message-parser.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,14 @@ describe('message parse XMB test spec', () => {
checkToXmlAndBack(normalizedMessage);
});

it('should parse ICU Refs', () => {
let normalizedMessage = 'a text with <ICU-Message-Ref_0/>';
let parsedMessage = parsedMessageFor(normalizedMessage);
expect(parsedMessage.asDisplayString()).toBe(normalizedMessage);
expect(parsedMessage.asNativeString()).toBe('a text with <ph name="ICU"><ex>ICU</ex></ph>');
checkToXmlAndBack(normalizedMessage);
});

});

describe('xml to normalized message', () => {
Expand Down
18 changes: 18 additions & 0 deletions src/impl/xmb-message-parser.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import {ParsedMessagePartEndTag} from './parsed-message-part-end-tag';
import {ParsedMessagePartPlaceholder} from './parsed-message-part-placeholder';
import {TagMapping} from './tag-mapping';
import {ParsedMessagePartEmptyTag} from './parsed-message-part-empty-tag';
import {ParsedMessagePartICUMessageRef} from './parsed-message-part-icu-message-ref';
/**
* Created by roobm on 10.05.2017.
* A message parser for XMB
Expand Down Expand Up @@ -242,4 +243,21 @@ export class XmbMessageParser extends AbstractMessageParser {
return phElem;
}

/**
* the xml used for icu message refs in the message.
* @param part
* @param rootElem
*/
protected createXmlRepresentationOfICUMessageRefPart(part: ParsedMessagePartICUMessageRef, rootElem: Element): Node {
let phElem = rootElem.ownerDocument.createElement('ph');
let nameAttrib = 'ICU';
if (part.index() > 0) {
nameAttrib = 'ICU_' + part.index().toString(10);
}
phElem.setAttribute('name', nameAttrib);
let exElem = rootElem.ownerDocument.createElement('ex');
exElem.appendChild(rootElem.ownerDocument.createTextNode(nameAttrib));
phElem.appendChild(exElem);
return phElem;
}
}

0 comments on commit 6baa8cd

Please sign in to comment.