diff --git a/src/lang.js b/src/lang.js index 8d4fc16..d78d296 100644 --- a/src/lang.js +++ b/src/lang.js @@ -236,8 +236,8 @@ var segments = key.split('.'); return { - source: locale + '.' + segments[0].replace('/', '.'), - sourceFallback: this.getFallback() + '.' + segments[0].replace('/', '.'), + source: locale + '.' + segments[0].replace(/\//g, '.'), + sourceFallback: this.getFallback() + '.' + segments[0].replace(/\//g, '.'), entries: segments.slice(1) }; }; diff --git a/test/fixture/messages.json b/test/fixture/messages.json index 3eaab54..3777055 100644 --- a/test/fixture/messages.json +++ b/test/fixture/messages.json @@ -126,6 +126,9 @@ "en.forum.thread": { "viewAllThreads": "View all threads" }, + "en.dir1.dir2.child": { + "deeplynestedmessage": "Message from file 2 directories down" + }, "ht.messages": { "home": "Ak\u00e8y", "login": "Aksede", diff --git a/test/spec/lang_trans_spec.js b/test/spec/lang_trans_spec.js index edca80d..7290ff2 100644 --- a/test/spec/lang_trans_spec.js +++ b/test/spec/lang_trans_spec.js @@ -39,6 +39,10 @@ describe('The lang.trans() method', function () { expect(lang.trans('forum/thread.viewAllThreads')).toBe('View all threads'); }); + it('should return the expected message inside a deeply nested directory', function () { + expect(lang.trans('dir1/dir2/child.deeplynestedmessage')).toBe('Message from file 2 directories down'); + }); + it('should return the passed key when nested message does not point to a message', function () { expect(lang.trans('messages.family.children')).toBe('messages.family.children'); expect(lang.trans('a.b.c.d.f.g.h.i.j.k')).toBe('a.b.c.d.f.g.h.i.j.k');