From 8ae7d194c2e3ff10ceb7389292f5bd5fce12755a Mon Sep 17 00:00:00 2001 From: Larry Philps Date: Thu, 13 Oct 2016 16:41:57 -0400 Subject: [PATCH] Enable more than 1 level of nested directories in _parseKey, the replace function should replace all occurrences of / with ., not just the first occurrence. --- src/lang.js | 4 ++-- test/fixture/messages.json | 3 +++ test/spec/lang_trans_spec.js | 4 ++++ 3 files changed, 9 insertions(+), 2 deletions(-) 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');