Messages

O Messages servirá para traduzir o sistema a um idioma específica como pt-BR (Português Brasileiro) ou en (Inglês Americano).

Sua estrutura fica da seguinte forma:

src ├─ Crucial │ ├─ Messages │ │ ├─ lang │ │ │ ├─ default.json │ │ │ ├─ pt-BR.json │ │ │ └─ index.js │ │ └─ index.js

Sintaxe

import { Messages } from "Crucial";

export default ({})=>{
    return <div>
        <h1>Título em Inglês: {Messages.getMsg("TITLE", "en")}</h1>
    </div>
}

/* Render: <div>
    <h1>Título em Inglês: Title</h1>
</div> */

Em: src/Crucial/Messages/lang/en.json

{
    "@metadata": {
        "lang-code": "en",
        "name": "English",
        "nativeName": "English",
        "authors": []
    },
    ...
    "TITLE": "Title",
    ...
}

Idiomas

Os diálogos de um idioma específico são concentrados em um único arquivo JSON do idioma.

@ metadata

O metadata armazena os dados de identificação do idioma, nele contem os seguintes parâmetros:

  • "lang-code" : string

    • Se refere ao código em abreviação do idioma em questão, saiba mais como adquirir esse código de abreviação em: O código das línguas

  • "name" : string

    • Se refere ao nome do idioma em Inglês.

  • "nativeName" : string

    • Se refere ao nome do idioma traduzido em seu idioma nativo, por exemplo, o idioma ja - Japanese o seu nome de idioma nativo será "日本語 (にほんご/にっぽんご)".

  • "authors" : Array

    • Se refere aos autores responsáveis pelo dicionário do idioma em questão.

Tradução

A forma de traduzir é no mesmo conceito do JSON, com chave e valor.

A chave será a forma que chamará a tradução no dicionário, essa chave deve está no padrão: maiúsculo, se caracteres especiais e separados por traço (-). Exemplos: "MENU-INICIAL", "LOGIN-ERRO-EMAIL-INVALIDO", "REDEFINIR-SENHA", etc...

Para conseguir traduzir o valor da chave, essa chave deve ser utilizada da mesma forma em outros arquivos JSON do idioma, porém, com seus valores traduzidos referente ao idioma em questão. Caso se no dicionário de um idioma específico não possuir uma tradução a aquela chave, ele retornará um valor nulo se caso não tiver definido no dicionário padrão (src/Crucial/Messages/lang/default.json).

Atenção!

Evite duplicidade de chave no mesmo dicionário. Busque sempre criar uma chave única, genérica e específica.

O valor será o diálogo traduzido que retornará após ser convocado utilizando o método getMsg. Exemplo:

src/Crucial/Messages/lang/pt-BR.json

{
    "@metadata": {
        "lang-code": "pt-BR",
        "name": "Portuguese - Brazil",
        "nativeName": "Português - Brasil",
        "authors": []
    },
    "TITLE": "Título",
    "MENU-INICIAL": "Menu inicial",
    "LOGIN-ERRO-EMAIL-INVALIDO": "Email inválido, tente novamente!",
    "REDEFINIR-SENHA": "Redefinir senha"
}

src/Crucial/Messages/lang/en.json

{
    "@metadata": {
        "lang-code": "en",
        "name": "English",
        "nativeName": "English",
        "authors": []
    },
    "TITLE": "Title",
    "MENU-INICIAL": "Home menu",
    "LOGIN-ERRO-EMAIL-INVALIDO": "Invalid email, try again!",
    "REDEFINIR-SENHA": "Redefine password"
}

Propriedades

langList

static langList : Array

Se refere a lista de códigos em abreviação dos idiomas disponíveis.

lang

static lang : string

Se refere ao idioma que o sistema estará utilizando no momento, vem como padrão o idioma pt-BR (Português Brasileiro)

dic

static dic : object

Onde estará o dicionário traduzido de acordo com idioma que o sistema estará utilizando no momento.

dicKeys

static dicKeys : Array

Se refere a uma lista de chaves de vocação disponível no dicionário.

Métodos

getMsg

static getMsg ( key : string , lang : string | null ) : string | null

Esse método será responsável em consultar no dicionário a tradução do diálogo de acordo com a chave já pré-definida, se caso a chave não for encontrado, retornará valor nulo ou um diálogo semelhante.

Exemplo:

import { Messages } from "Crucial";

//Messages.lang = "en";

console.log(`Título em Inglês: ${Messages.getMsg("TITLE")}`);
// Título em Inglês: Title

console.log(`Erro: ${Messages.getMsg("LOGIN-ERRO-EMAIL-INVALIDO")}`);
// Erro: Invalid email, try again!

Last updated