1.0.39 • Published 7 months ago

rtk-translate v1.0.39

Weekly downloads
-
License
MIT
Repository
github
Last release
7 months ago

🌍 RTK - Translate (React Kit Translate)

RTK - Translate é uma biblioteca criada para simplificar a tradução de seu site, portfólio, software e muito mais. Projetada para ser simples, intuitiva e prática. Integre-a facilmente em seus projetos e suporte quantos idiomas desejar.


📦 Instalação

  • Usando npm:
npm install rtk-translate
  • Usando yarn:
yarn add rtk-translate

🚀 Como começar

1. Configuração Inicial

Envolva o componente principal da sua aplicação com o TranslationProvider e passe as propriedades necessárias:

import { TranslationProvider } from 'rtk-translate';

function App() {
  return (
    <TranslationProvider 
        storageKey='sua-chave-no-storage' // Chave usada para salvar o idioma selecionado no storage.
        languages={...} // Forneça seus idiomas e traduções aqui. Veja o exemplo abaixo.
        defaultLanguage="seu-idioma-default" // Idioma padrão da aplicação.
        availableLanguages={['pt', 'en', ...]} // Idiomas que você disponibilizou nas traduções. Exemplo abaixo.
    >
      <MyComponent />
    </TranslationProvider>
  );
}

📝 Propriedades do TranslationProvider

PropriedadeTipoDescrição
storageKeystringUsado para salvar o idioma atual no localStorage, ela é opcional, caso não seja passada será salvo com a chave rtk::language.
languagesobjectObjeto contendo os idiomas, chaves de identificação e as traduções desejadas.
defaultLanguagestringDefine um idioma padrão para o seu projeto, caso não seja passado será usado o valor default pt.
availableLanguagesstring[]Array contendo todos os idiomas disponíveis no seu array languages.

Exemplo de languages:

const languages = {
  pt: {
    heading: 'Título 1',
    subheading: 'Subtítulo A',
    buttonLabel: 'Clique Aqui',
    contactUs: 'Fale Conosco'
  },
  en: {
    heading: 'Title 1',
    subheading: 'Subheading A',
    buttonLabel: 'Click Here',
    contactUs: 'Contact Us'
  },
  fr: {
    heading: 'Titre 1',
    subheading: 'Sous-titre A',
    buttonLabel: 'Cliquez ici',
    contactUs: 'Contactez-nous'
  },
  es: {
    heading: 'Título 1',
    subheading: 'Subtítulo A',
    buttonLabel: 'Haz clic aquí',
    contactUs: 'Contáctenos'
  }
  // ...
}

Exemplo de availableLanguages:

const availableLanguages = ['pt', 'en', 'fr', 'es'];

2. Uso dentro dos componentes

Exemplo de uso com select:

import { useTranslation } from 'rtk-translate';

function SellectLang() {
  const { translateText, setCurrentLanguage, currentLanguage } = useTranslation();

  const handleLanguageChange = (event) => {
    setCurrentLanguage(event.target.value);
  };

  return (
  <div>
      // Exemplo de uso com um select padrão para mudar o idioma
      <select onChange={handleLanguageChange} defaultValue={currentLanguage}>
        <option value="en">English</option>
        <option value="pt">Português</option>
        <option value="fr">Français</option>
        <option value="es">Español</option>
      </select>
      <div>
        <h1>{translateText('heading')}</h1> // traduz o texto com a chave 'heading'
        <h2>{translateText('subheading')}</h2> // traduz o texto com a chave 'subheading'
        <button>{translateText('buttonLabel')}</button> // traduz o texto com a chave 'buttonLabel'
        <a href="/contact">{translateText('contactUs')}</a> // traduz o texto com a chave 'contactUs'
      </div>
    </div>
  );
}

Exemplo de uso com botões:

⚠️ o onClick precisa ter uma callback, conforme o código abaixo!

import { useTranslation } from 'rtk-translate';

function ButtonsLang() {
  const { setCurrentLanguage } = useTranslation();

  const handleLanguageChange = (lang) =>  setCurrentLanguage(lang);

  return (
    <section>
      <ul>
        <li><button onClick={() => handleLanguageChange('pt')}>🇧🇷 PT-BR</button></li>
        <li><button onClick={() => handleLanguageChange('en')}>🇺🇸 EN</button></li>
      </ul>
    </section>
  )
}

3. Componente LanguageSelect

O componente LanguageSelect é um seletor de idiomas desenvolvido para facilitar a experiência de internacionalização no seu site. Ele foi projetado pensando na usabilidade e eficiência, por isso apresenta as seguintes características:

  • Idioma e Bandeira: Cada opção no dropdown é representada pelo nome do idioma e uma bandeira correspondente, tornando visualmente intuitivo para os usuários. Se preferir uma abordagem mais minimalista, é possível ocultar o nome e exibir apenas a bandeira.

  • Pesquisa Rápida: Sabendo que alguns sites podem suportar uma extensa lista de idiomas, um campo de pesquisa foi incorporado ao dropdown. Ao clicar no seletor, um input é renderizado no topo do menu dropdown, permitindo que os usuários digitem e filtrem rapidamente para encontrar o idioma desejado.

⚠️ O nome e o input funcionam em conjunto, ou seja, se o nome do idioma estiver oculto, o input de pesquisa também será oculto. Para exibir o input de pesquisa, o nome do idioma deve estar visível.

Utilize o LanguageSelect para oferecer uma navegação fluída e uma experiência de usuário enriquecedora, independente do número de idiomas que seu site suporta.

Exemplo de uso do componente LanguageSelect:

import { LanguageSelect, useTranslation } from 'rtk-translate';

// import o arquivo css 
import 'rtk-translate/dist/index.css'

function MyComponent() {
  const { translateText, setCurrentLanguage, currentLanguage, validLanguages } = useTranslation();

  return (
    <div>
      <LanguageSelect
        selected={currentLanguage}
        onChange={setCurrentLanguage}
        availableLanguages={validLanguages}
        // isNameVisible={true}
        // showSearchInput={true}
      />
      <div>
        <h1>{translateText('heading')}</h1>
        <h2>{translateText('subheading')}</h2>
        <button>{translateText('buttonLabel')}</button>
        <a href="/contact">{translateText('contactUs')}</a>
      </div>
    </div>
  );
}

📝 Propriedades do componente LanguageSelect

PropriedadeTipoDescrição
selectedstringIdioma atual do site, pode ser obtido através da propriedade currentLanguage do useTranslation().
onChangefunctionFunção que muda o idioma atual do site. Pode ser obtida através da propriedade setCurrentLanguage do useTranslation().
availableLanguagesstring[]Array que a rtk-translate já validou com base nos seus idiomas fornecidos ao TranslationProvider. É disponibilizado através da propriedade validLanguages do useTranslation().
isNameVisiblebooleanBooleano que define se o nome do idioma será renderizado junto com a bandeira, o valor default é true.
showSearchInputbooleanBooleano que define se o campo de pesquisa será renderizado no dropdown, o valor default é true.

📝 Propriedades do useTranslation()

PropriedadeTipoDescrição
translateTextfunctionFunção que retorna a tradução correspondente à chave fornecida. Recebe a chave do texto que deseja traduzir.
setCurrentLanguagefunctionFunção que define o idioma atual do site. Recebe o novo idioma desejado como parâmetro.
currentLanguagestringRepresenta o idioma atual em uso no site.
validLanguagesstring[]Array de idiomas validados pela rtk-translate, com base nos idiomas fornecidos ao TranslationProvider.

🎨 Classes CSS para Customização do componente LanguageSelect

Aqui estão as classes CSS que você pode sobrescrever para personalizar a aparência do componente LanguageSelect:

ClasseDescriçãoSobrescrição Sugerida
.rtk-language-selectorEstilização geral do seletor de idioma..rtk-language-selector { ... !important; }
.rtk-current-languageEstilo do idioma atual exibido..rtk-current-language { ... !important; }
.rtk-current-language > imgEstilo da imagem/bandeira do idioma atual..rtk-current-language > img { ... !important; }
.rtk-languages-dropdownEstilo do menu dropdown que lista os idiomas..rtk-languages-dropdown { ... !important; }
.rtk-languages-dropdown .rtk-language-option > imgEstilo da imagem/bandeira nos itens do dropdown..rtk-languages-dropdown .rtk-language-option > img { ... !important; }
.rtk-language-option, .rtk-language-no-resultsEstilo dos itens individuais no dropdown..rtk-language-option { ... !important; }
.rtk-language-option:last-childEstilo para o último item no dropdown..rtk-language-option:last-child { ... !important; }
.rtk-language-option:hoverEstilo hover dos itens no dropdown..rtk-language-option:hover { ... !important; }
.rtk-language-input-searchEstilo do campo de busca no dropdown..rtk-language-input-search { ... !important; }

Como contribuir

Para contribuir com o projeto, leia o arquivo CONTRIBUTING.md


Mais infos


Dúvidas, sugestões e melhorias

Se você tiver dúvidas, quiser relatar um bug ou solicitar novos recursos, por favor, abra uma issue no nosso repositório, ou conecte-se comigo no Linkedin - Vitor Nogueira


Referências


Licença

Rtk Translate is MIT licensed.


Agradecimentos

Este projeto utiliza a biblioteca React Flag Kit, cujo copyright é detido por Bowtie AB e está licenciada sob a licença MIT. Detalhes sobre esta licença podem ser encontrados em MIT licensed.


🔗 Veja uma demonstração ao vivo aqui.


⭐️ Este README foi gerado a partir do Gerador de README drag in drop. Experimente aqui: Code Mark

1.0.39

7 months ago

1.0.38

7 months ago

1.0.37

7 months ago

1.0.36

7 months ago

1.0.35

7 months ago

1.0.34

7 months ago

1.0.33

7 months ago

1.0.32

7 months ago

1.0.31

7 months ago

1.0.30

7 months ago

1.0.29

7 months ago

1.0.28

7 months ago

1.0.27

7 months ago

1.0.26

7 months ago

1.0.24

7 months ago

1.0.23

7 months ago

1.0.22

7 months ago

1.0.21

7 months ago

1.0.20

7 months ago

1.0.19

7 months ago

1.0.18

7 months ago

1.0.17

7 months ago

1.0.16

7 months ago

1.0.15

7 months ago

1.0.14

7 months ago

1.0.13

7 months ago

1.0.12

7 months ago

1.0.11

7 months ago

1.0.10

7 months ago

1.0.9

7 months ago

1.0.8

7 months ago

9.0.0

7 months ago

8.0.0

7 months ago

7.0.0

7 months ago

6.0.0

7 months ago

5.0.0

7 months ago

4.0.0

7 months ago

3.0.0

7 months ago

2.0.0

7 months ago

1.0.1

7 months ago

1.0.0

7 months ago