EleXorZ
EleXorZ

Reputation: 47

Calling a JSON value in scss for internalization

I want to add internalization in my app. So I have a JSON file with all my values.

HTML side I manage to retrieve the values but css side I use a before.

In my HTML i use the class "menu-input" available right here :

    <div class="header">
      <app-game class="menu-input" [gameId]="gameId"></app-game>
      <h1>{{'GAME.TITLE' | translate}}</h1>
    </div>

This class is called in my scss file where I add a before :

.menu-input {
  user-select: none;
  display: block;
  &::before {
    content: 'Partie : ';
  }

For the moment the content of my before is not yet translated. The goal is to transform my content with the value {{'GAME.NAME'}}

Upvotes: 2

Views: 217

Answers (1)

Akirus
Akirus

Reputation: 574

You can use css variables to solve this.

Working example: https://stackblitz.com/edit/angular-oaxdve?file=src%2Fapp%2Fapp.component.html

Taking in account reusability, you can define variables in your styles.css / scss:

:root {
   --custom-text: 'Default';
   --custom-text-2: 'Default';
}

And in your local css file you make use of the above variables like:

div::before {
  content: var(--custom-text);
}

Then on app load or language change you get your translated text and go over the list of 'custom-text' options and set them using:

document.documentElement.style.setProperty('--custom-text', "'Hello'");

Upvotes: 1

Related Questions