diff --git a/projects/test-app/src/app/app.component.html b/projects/test-app/src/app/app.component.html index b1dbfb9..4a9190f 100644 --- a/projects/test-app/src/app/app.component.html +++ b/projects/test-app/src/app/app.component.html @@ -1,3 +1,5 @@ + +

{{ 'demo.title' | translate }}

diff --git a/projects/test-app/src/app/app.component.scss b/projects/test-app/src/app/app.component.scss deleted file mode 100644 index 04798aa..0000000 --- a/projects/test-app/src/app/app.component.scss +++ /dev/null @@ -1,38 +0,0 @@ -div -{ - font-family: Arial, Helvetica, sans-serif; - margin: 0; - padding: 1rem 2rem; -} - -p, .translated -{ - background-color: #d4f3ff; - padding:0.5rem 1rem; -} - -button { - background-color: #008CBA; - border: none; - color: white; - padding: 0.25rem 0.5rem; - text-align: center; - text-decoration: none; - display: inline-block; - font-size: 16px; - margin-left: 1rem; - border-radius: 0.5rem; - transition: background-color 0.3s ease; - - &:hover { - background-color: #005f73; - } -} - -.title { - background-color: #bde8f8; - padding: 0.5rem 2rem 1.5rem 2rem; - position: sticky; - top: 0; - z-index: 1000; -} \ No newline at end of file diff --git a/projects/test-app/src/app/app.component.ts b/projects/test-app/src/app/app.component.ts index 172fa85..22a4ee2 100644 --- a/projects/test-app/src/app/app.component.ts +++ b/projects/test-app/src/app/app.component.ts @@ -1,16 +1,26 @@ -import { Component } from "@angular/core"; +import { Component, OnInit } from "@angular/core"; import { _, TranslateDirective, TranslatePipe, TranslateService } from "@ngx-translate/core"; -import { StandaloneComponent } from "./standalone.component"; +import { map } from 'rxjs'; +import { TranslationObject } from '../../../ngx-translate/src/public-api'; +import { LanguageSwitchComponent } from './language-switch/language-switch.component'; +import { StandaloneComponent } from "./standalone/standalone.component"; @Component({ selector: "app-root", standalone: true, - imports: [TranslateDirective, TranslatePipe, StandaloneComponent], - templateUrl: "./app.component.html", - styleUrl: "./app.component.scss" + imports: [ + // Components + LanguageSwitchComponent, + StandaloneComponent, + + // Vendors + TranslateDirective, + TranslatePipe, + ], + templateUrl: "./app.component.html" }) -export class AppComponent +export class AppComponent implements OnInit { title = _("test-app"); @@ -19,4 +29,14 @@ export class AppComponent this.translate.setDefaultLang('en'); this.translate.use('en'); } + + ngOnInit() { + // Service Get method with a set of string[] + this.translate + .get(['demo.simple.text-as-attribute', 'demo.simple.text-as-content']) + .pipe(map((arr: TranslationObject) => { + return Object.values(arr).join(', ') + })) + .subscribe(console.info); + } } diff --git a/projects/test-app/src/app/language-switch/language-switch.component.html b/projects/test-app/src/app/language-switch/language-switch.component.html new file mode 100644 index 0000000..54b8890 --- /dev/null +++ b/projects/test-app/src/app/language-switch/language-switch.component.html @@ -0,0 +1,3 @@ +@for(lang of translateService.getLangs(); track lang) { + +} diff --git a/projects/test-app/src/app/language-switch/language-switch.component.scss b/projects/test-app/src/app/language-switch/language-switch.component.scss new file mode 100644 index 0000000..c8b6673 --- /dev/null +++ b/projects/test-app/src/app/language-switch/language-switch.component.scss @@ -0,0 +1,36 @@ +:host{ + display: block; + margin: 0 auto; + text-align: center; + + button { + background-color: var(--mat-sys-secondary); + border: none; + color: var(--mat-sys-on-secondary); + padding: 0.25rem 0.5rem; + text-align: center; + text-decoration: none; + display: inline-block; + font-size: 16px; + margin-left: 1rem; + border-radius: 0.5rem; + transition: all 0.3s ease; + min-width: 120px; + min-height: 46px; + cursor: pointer; + box-shadow: var(--mat-sys-level2); + + &:hover { + box-shadow: var(--mat-sys-level3); + &:active { + box-shadow: var(--mat-sys-level1); + } + } + + &.active { + background-color: var(--mat-sys-primary); + color: var(--mat-sys-on-primary); + + } + } +} diff --git a/projects/test-app/src/app/language-switch/language-switch.component.ts b/projects/test-app/src/app/language-switch/language-switch.component.ts new file mode 100644 index 0000000..e992915 --- /dev/null +++ b/projects/test-app/src/app/language-switch/language-switch.component.ts @@ -0,0 +1,12 @@ +import { Component, inject } from '@angular/core'; +import { TranslateService } from '@ngx-translate/core'; + +@Component({ + selector: 'app-language-switch', + standalone: true, + styleUrl: './language-switch.component.scss', + templateUrl: './language-switch.component.html', +}) +export class LanguageSwitchComponent { + translateService = inject(TranslateService); +} diff --git a/projects/test-app/src/app/standalone.component.html b/projects/test-app/src/app/standalone.component.html deleted file mode 100644 index a4f5585..0000000 --- a/projects/test-app/src/app/standalone.component.html +++ /dev/null @@ -1,10 +0,0 @@ -
-

{{ 'standalone-component.title' | translate }}

-
-
-

Simple translations without parameters

- -

- -

demo.simple.text-as-content

-
\ No newline at end of file diff --git a/projects/test-app/src/app/standalone.component.ts b/projects/test-app/src/app/standalone.component.ts deleted file mode 100644 index 81a17f1..0000000 --- a/projects/test-app/src/app/standalone.component.ts +++ /dev/null @@ -1,14 +0,0 @@ -import {Component} from "@angular/core"; -import {TranslatePipe, TranslateDirective} from "@ngx-translate/core"; - - -@Component({ - selector: "app-standalone-component", - standalone: true, - imports: [TranslateDirective, TranslatePipe], - templateUrl: "./standalone.component.html" -}) -export class StandaloneComponent -{ - -} diff --git a/projects/test-app/src/app/standalone/standalone.component.html b/projects/test-app/src/app/standalone/standalone.component.html new file mode 100644 index 0000000..8bd870f --- /dev/null +++ b/projects/test-app/src/app/standalone/standalone.component.html @@ -0,0 +1,12 @@ +
+
+

{{ 'standalone-component.title' | translate }}

+
+
+

Simple translations without parameters

+ +

+ +

demo.simple.text-as-content

+
+
diff --git a/projects/test-app/src/app/standalone/standalone.component.scss b/projects/test-app/src/app/standalone/standalone.component.scss new file mode 100644 index 0000000..94298a2 --- /dev/null +++ b/projects/test-app/src/app/standalone/standalone.component.scss @@ -0,0 +1,5 @@ +.standalone-container { + border: 1px solid var(--mat-sys-outline); + border-radius: var(--mat-sys-corner-small); + padding: 0 var(--space); +} diff --git a/projects/test-app/src/app/standalone/standalone.component.ts b/projects/test-app/src/app/standalone/standalone.component.ts new file mode 100644 index 0000000..418f7d8 --- /dev/null +++ b/projects/test-app/src/app/standalone/standalone.component.ts @@ -0,0 +1,16 @@ +import { ChangeDetectionStrategy, Component } from "@angular/core"; +import { TranslateDirective, TranslatePipe } from "@ngx-translate/core"; + + +@Component({ + selector: "app-standalone-component", + standalone: true, + imports: [TranslateDirective, TranslatePipe], + styleUrl: "./standalone.component.scss", + templateUrl: "./standalone.component.html", + changeDetection: ChangeDetectionStrategy.OnPush, +}) +export class StandaloneComponent +{ + +} diff --git a/projects/test-app/src/styles.scss b/projects/test-app/src/styles.scss index 90d4ee0..ab35d7c 100644 --- a/projects/test-app/src/styles.scss +++ b/projects/test-app/src/styles.scss @@ -1 +1,43 @@ -/* You can add global styles to this file, and also import other style files */ +:root { + --mat-sys-primary: #c2282b; + --mat-sys-on-primary: #fff; + + --mat-sys-secondary: #3f4258; + --mat-sys-on-secondary: #fff; + + --mat-sys-surface-dim: #ffe8f1; + + --mat-sys-outline: #e5e5e5; + + --mat-sys-corner-small: 8px; + --mat-sys-corner-medium: 12px; + + --mat-sys-level0: 0px 0px 0px 0px rgba(0, 0, 0, .2), 0px 0px 0px 0px rgba(0, 0, 0, .14), 0px 0px 0px 0px rgba(0, 0, 0, .12); + --mat-sys-level1: 0px 2px 1px -1px rgba(0, 0, 0, .2), 0px 1px 1px 0px rgba(0, 0, 0, .14), 0px 1px 3px 0px rgba(0, 0, 0, .12); + --mat-sys-level2: 0px 3px 3px -2px rgba(0, 0, 0, .2), 0px 3px 4px 0px rgba(0, 0, 0, .14), 0px 1px 8px 0px rgba(0, 0, 0, .12); + --mat-sys-level3: 0px 3px 5px -1px rgba(0, 0, 0, .2), 0px 6px 10px 0px rgba(0, 0, 0, .14), 0px 1px 18px 0px rgba(0, 0, 0, .12); + + --space-smallest: 4px; + --space-smaller: 8px; + --space-small: 12px; + --space: 16px; +} + + +body { + font-family: Arial, Helvetica, sans-serif; +} + +p, .translated{ + background-color: var(--mat-sys-surface-dim); + padding:0.5rem 1rem; +} + +.title { + + h1 { + background-color: var(--mat-sys-surface-dim); + border-radius: var(--mat-sys-corner-small); + padding: var(--space) var(--space-small); + } +}