diff --git a/modules/angular2/pubspec.yaml b/modules/angular2/pubspec.yaml
index 82266fc98a..008fa2d8ef 100644
--- a/modules/angular2/pubspec.yaml
+++ b/modules/angular2/pubspec.yaml
@@ -20,6 +20,8 @@ dependencies:
protobuf: '^0.5.0'
source_span: '^1.0.0'
stack_trace: '^1.1.1'
+ build:
+ git: git@github.com:dart-lang/build.git
dev_dependencies:
transformer_test: '^0.2.0'
guinness: '^0.1.18'
diff --git a/modules/angular2/src/i18n/xmb_serializer.ts b/modules/angular2/src/i18n/xmb_serializer.ts
new file mode 100644
index 0000000000..f39cefb3a6
--- /dev/null
+++ b/modules/angular2/src/i18n/xmb_serializer.ts
@@ -0,0 +1,12 @@
+import {isPresent} from 'angular2/src/facade/lang';
+import {Message, id} from './message';
+
+export function serialize(messages: Message[]): string {
+ let ms = messages.map((m) => _serializeMessage(m)).join("");
+ return `${ms}`;
+}
+
+function _serializeMessage(m: Message): string {
+ let desc = isPresent(m.description) ? ` desc='${m.description}'` : "";
+ return `${m.content}`;
+}
\ No newline at end of file
diff --git a/modules/angular2/test/i18n/xmb_serializer_spec.ts b/modules/angular2/test/i18n/xmb_serializer_spec.ts
new file mode 100644
index 0000000000..1ef4d071c3
--- /dev/null
+++ b/modules/angular2/test/i18n/xmb_serializer_spec.ts
@@ -0,0 +1,35 @@
+import {
+ AsyncTestCompleter,
+ beforeEach,
+ ddescribe,
+ describe,
+ expect,
+ iit,
+ inject,
+ it,
+ xdescribe,
+ xit
+} from 'angular2/testing_internal';
+
+import {Message, id} from 'angular2/src/i18n/message';
+import {serialize} from 'angular2/src/i18n/xmb_serializer';
+
+export function main() {
+ describe('Xmb Serialization', () => {
+ it("should return an empty message bundle for an empty list of messages",
+ () => { expect(serialize([])).toEqual(""); });
+
+ it("should serialize messages without desc", () => {
+ let m = new Message("content", "meaning", null);
+ let expected = `content`;
+ expect(serialize([m])).toEqual(expected);
+ });
+
+ it("should serialize messages with desc", () => {
+ let m = new Message("content", "meaning", "description");
+ let expected =
+ `content`;
+ expect(serialize([m])).toEqual(expected);
+ });
+ });
+}