Angular 7 - Switching between imports
Below is a Service I've made that should switch between the imports en
or de
depending on the param lang
.
If I use lang
as it is I just prints this.phrases
as {0: "d", 1: "e"}
instead of what it should be.
Is this possible?
import { Injectable } from '@angular/core';
import en from '../locale/en';
import de from '../locale/de';
@Injectable({
providedIn: 'root'
})
export class TranslateService {
phrases: any = {};
constructor() { }
use(lang: string) {
this.phrases = Object.assign({}, lang || {});
return this.phrases;
}
}
if this service was called using this.translateService.use('en')
I'd expect it to return the content from en
import.
if it were this.translateService.use('de')
then I'd expect to have de
content returned.
../locale/de
export default {
"CONTINUE": "fortsetzen",
"HELLO": "Halo {{value}}",
"Email address": "E-Mail-Addresse"
}
I have been able to get this working by doing
import { Injectable } from '@angular/core';
import en from '../locale/en';
import de from '../locale/de';
@Injectable({
providedIn: 'root'
})
export class TranslateService {
phrases: any = {};
constructor() { }
use(lang: string) {
let locale;
switch(lang) {
case 'de':
locale = de;
break;
default:
locale = en;
break;
}
this.phrases = Object.assign({}, locale || {});
return this.phrases;
}
}
But I hoped there was a cleaner approach
angular typescript angular7
|
show 1 more comment
Below is a Service I've made that should switch between the imports en
or de
depending on the param lang
.
If I use lang
as it is I just prints this.phrases
as {0: "d", 1: "e"}
instead of what it should be.
Is this possible?
import { Injectable } from '@angular/core';
import en from '../locale/en';
import de from '../locale/de';
@Injectable({
providedIn: 'root'
})
export class TranslateService {
phrases: any = {};
constructor() { }
use(lang: string) {
this.phrases = Object.assign({}, lang || {});
return this.phrases;
}
}
if this service was called using this.translateService.use('en')
I'd expect it to return the content from en
import.
if it were this.translateService.use('de')
then I'd expect to have de
content returned.
../locale/de
export default {
"CONTINUE": "fortsetzen",
"HELLO": "Halo {{value}}",
"Email address": "E-Mail-Addresse"
}
I have been able to get this working by doing
import { Injectable } from '@angular/core';
import en from '../locale/en';
import de from '../locale/de';
@Injectable({
providedIn: 'root'
})
export class TranslateService {
phrases: any = {};
constructor() { }
use(lang: string) {
let locale;
switch(lang) {
case 'de':
locale = de;
break;
default:
locale = en;
break;
}
this.phrases = Object.assign({}, locale || {});
return this.phrases;
}
}
But I hoped there was a cleaner approach
angular typescript angular7
It's not really clear what you're asking. It would be great if you could provide a Minimal, Complete, and Verifiable example. You can use StackBlitz to create one.
– SiddAjmera
Nov 27 '18 at 18:57
lang || {}
will always returnlang
if it is notnull
,undefined
or anempty
string
– Almost Handsome
Nov 27 '18 at 19:00
This doesn't feel like the way to do localization... But it is far from certain what are in your imported components / classes/ resources?
– Austin T French
Nov 27 '18 at 19:03
I have added whatlocale/de.ts
is
– ngDough
Nov 27 '18 at 19:05
Maybe try using the ngx-translate library? It is what I used for my project and it works pretty nicely. My best advice is don't try to reinvent something unless all your options are crap.
– rhavelka
Nov 27 '18 at 20:26
|
show 1 more comment
Below is a Service I've made that should switch between the imports en
or de
depending on the param lang
.
If I use lang
as it is I just prints this.phrases
as {0: "d", 1: "e"}
instead of what it should be.
Is this possible?
import { Injectable } from '@angular/core';
import en from '../locale/en';
import de from '../locale/de';
@Injectable({
providedIn: 'root'
})
export class TranslateService {
phrases: any = {};
constructor() { }
use(lang: string) {
this.phrases = Object.assign({}, lang || {});
return this.phrases;
}
}
if this service was called using this.translateService.use('en')
I'd expect it to return the content from en
import.
if it were this.translateService.use('de')
then I'd expect to have de
content returned.
../locale/de
export default {
"CONTINUE": "fortsetzen",
"HELLO": "Halo {{value}}",
"Email address": "E-Mail-Addresse"
}
I have been able to get this working by doing
import { Injectable } from '@angular/core';
import en from '../locale/en';
import de from '../locale/de';
@Injectable({
providedIn: 'root'
})
export class TranslateService {
phrases: any = {};
constructor() { }
use(lang: string) {
let locale;
switch(lang) {
case 'de':
locale = de;
break;
default:
locale = en;
break;
}
this.phrases = Object.assign({}, locale || {});
return this.phrases;
}
}
But I hoped there was a cleaner approach
angular typescript angular7
Below is a Service I've made that should switch between the imports en
or de
depending on the param lang
.
If I use lang
as it is I just prints this.phrases
as {0: "d", 1: "e"}
instead of what it should be.
Is this possible?
import { Injectable } from '@angular/core';
import en from '../locale/en';
import de from '../locale/de';
@Injectable({
providedIn: 'root'
})
export class TranslateService {
phrases: any = {};
constructor() { }
use(lang: string) {
this.phrases = Object.assign({}, lang || {});
return this.phrases;
}
}
if this service was called using this.translateService.use('en')
I'd expect it to return the content from en
import.
if it were this.translateService.use('de')
then I'd expect to have de
content returned.
../locale/de
export default {
"CONTINUE": "fortsetzen",
"HELLO": "Halo {{value}}",
"Email address": "E-Mail-Addresse"
}
I have been able to get this working by doing
import { Injectable } from '@angular/core';
import en from '../locale/en';
import de from '../locale/de';
@Injectable({
providedIn: 'root'
})
export class TranslateService {
phrases: any = {};
constructor() { }
use(lang: string) {
let locale;
switch(lang) {
case 'de':
locale = de;
break;
default:
locale = en;
break;
}
this.phrases = Object.assign({}, locale || {});
return this.phrases;
}
}
But I hoped there was a cleaner approach
angular typescript angular7
angular typescript angular7
edited Dec 12 '18 at 16:12
Goncalo Peres
1,4791619
1,4791619
asked Nov 27 '18 at 18:53
ngDoughngDough
609
609
It's not really clear what you're asking. It would be great if you could provide a Minimal, Complete, and Verifiable example. You can use StackBlitz to create one.
– SiddAjmera
Nov 27 '18 at 18:57
lang || {}
will always returnlang
if it is notnull
,undefined
or anempty
string
– Almost Handsome
Nov 27 '18 at 19:00
This doesn't feel like the way to do localization... But it is far from certain what are in your imported components / classes/ resources?
– Austin T French
Nov 27 '18 at 19:03
I have added whatlocale/de.ts
is
– ngDough
Nov 27 '18 at 19:05
Maybe try using the ngx-translate library? It is what I used for my project and it works pretty nicely. My best advice is don't try to reinvent something unless all your options are crap.
– rhavelka
Nov 27 '18 at 20:26
|
show 1 more comment
It's not really clear what you're asking. It would be great if you could provide a Minimal, Complete, and Verifiable example. You can use StackBlitz to create one.
– SiddAjmera
Nov 27 '18 at 18:57
lang || {}
will always returnlang
if it is notnull
,undefined
or anempty
string
– Almost Handsome
Nov 27 '18 at 19:00
This doesn't feel like the way to do localization... But it is far from certain what are in your imported components / classes/ resources?
– Austin T French
Nov 27 '18 at 19:03
I have added whatlocale/de.ts
is
– ngDough
Nov 27 '18 at 19:05
Maybe try using the ngx-translate library? It is what I used for my project and it works pretty nicely. My best advice is don't try to reinvent something unless all your options are crap.
– rhavelka
Nov 27 '18 at 20:26
It's not really clear what you're asking. It would be great if you could provide a Minimal, Complete, and Verifiable example. You can use StackBlitz to create one.
– SiddAjmera
Nov 27 '18 at 18:57
It's not really clear what you're asking. It would be great if you could provide a Minimal, Complete, and Verifiable example. You can use StackBlitz to create one.
– SiddAjmera
Nov 27 '18 at 18:57
lang || {}
will always return lang
if it is not null
, undefined
or an empty
string– Almost Handsome
Nov 27 '18 at 19:00
lang || {}
will always return lang
if it is not null
, undefined
or an empty
string– Almost Handsome
Nov 27 '18 at 19:00
This doesn't feel like the way to do localization... But it is far from certain what are in your imported components / classes/ resources?
– Austin T French
Nov 27 '18 at 19:03
This doesn't feel like the way to do localization... But it is far from certain what are in your imported components / classes/ resources?
– Austin T French
Nov 27 '18 at 19:03
I have added what
locale/de.ts
is– ngDough
Nov 27 '18 at 19:05
I have added what
locale/de.ts
is– ngDough
Nov 27 '18 at 19:05
Maybe try using the ngx-translate library? It is what I used for my project and it works pretty nicely. My best advice is don't try to reinvent something unless all your options are crap.
– rhavelka
Nov 27 '18 at 20:26
Maybe try using the ngx-translate library? It is what I used for my project and it works pretty nicely. My best advice is don't try to reinvent something unless all your options are crap.
– rhavelka
Nov 27 '18 at 20:26
|
show 1 more comment
0
active
oldest
votes
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53506344%2fangular-7-switching-between-imports%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
0
active
oldest
votes
0
active
oldest
votes
active
oldest
votes
active
oldest
votes
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53506344%2fangular-7-switching-between-imports%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
It's not really clear what you're asking. It would be great if you could provide a Minimal, Complete, and Verifiable example. You can use StackBlitz to create one.
– SiddAjmera
Nov 27 '18 at 18:57
lang || {}
will always returnlang
if it is notnull
,undefined
or anempty
string– Almost Handsome
Nov 27 '18 at 19:00
This doesn't feel like the way to do localization... But it is far from certain what are in your imported components / classes/ resources?
– Austin T French
Nov 27 '18 at 19:03
I have added what
locale/de.ts
is– ngDough
Nov 27 '18 at 19:05
Maybe try using the ngx-translate library? It is what I used for my project and it works pretty nicely. My best advice is don't try to reinvent something unless all your options are crap.
– rhavelka
Nov 27 '18 at 20:26