Skip to content

Commit 30a4a33

Browse files
committed
feat: add support for placeholders in ngxGlagolize
1 parent 56a8d84 commit 30a4a33

File tree

4 files changed

+16
-5
lines changed

4 files changed

+16
-5
lines changed
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
{
22
"test": "Test",
3-
"test_test": ""
3+
"test_test": "",
4+
"greeting": "Hallo {{name}}!"
45
}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
<div ngxGlagolize key="test" >test translation</div>
2-
<div ngxGlagolize key="test_test">test translation</div>
2+
<div ngxGlagolize key="greeting" [placeholder]="placeholderValues">test translation</div>

projects/demo-app/src/app/app.component.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,11 @@ import { NgxGlagolizeDirective, NgxGlagolizeService } from 'ngx-glagolize';
99
})
1010
export class AppComponent {
1111
title = 'demo-app';
12+
placeholderValues = { name: 'Mirko' };
1213

1314
ngxGlagolizeService = inject(NgxGlagolizeService);
1415

1516
constructor() {
16-
this.ngxGlagolizeService.init('en');
17+
this.ngxGlagolizeService.init('de');
1718
}
1819
}

projects/ngx-glagolize/src/lib/ngx-glagolize.directive.ts

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,18 +10,27 @@ export class NgxGlagolizeDirective {
1010
private elementRef = inject(ElementRef);
1111
key = input.required<string>();
1212
plural = input<boolean>();
13+
placeholder = input<{ [key: string]: string}>();
1314

1415
constructor() {
1516
effect(() => {
1617
const translation = this.ngxGlagolizeService.get(this.key());
1718
if(translation){
1819

20+
let translationString = '';
1921
if (typeof translation === 'string') {
20-
this.elementRef.nativeElement.innerHTML = translation;
22+
translationString = translation;
2123
}else{
22-
this.elementRef.nativeElement.innerHTML = this.plural() ? translation.other : translation.one;
24+
translationString = this.plural() ? translation.other : translation.one;
25+
}
26+
27+
if(this.placeholder()){
28+
for (const key in this.placeholder()) {
29+
translationString = translationString.replaceAll(`{{${key}}}`, this.placeholder()![key]);
30+
}
2331
}
2432

33+
this.elementRef.nativeElement.innerHTML = translationString;
2534
}
2635

2736
});

0 commit comments

Comments
 (0)