Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add setup for internationalization #123

Open
wants to merge 5 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,13 @@
"private": true,
"dependencies": {
"caniuse-lite": "^1.0.30000974",
"i18next": "^19.0.0",
"i18next-browser-languagedetector": "^4.0.1",
"i18next-xhr-backend": "^3.2.2",
"node-sass": "^4.11.0",
"react": "^16.8.6",
"react-dom": "^16.8.6",
"react-i18next": "^11.2.1",
"react-image-magnify": "^2.7.4",
"react-markdown": "^4.0.8",
"react-router-dom": "^5.0.1",
Expand All @@ -28,4 +32,4 @@
"not ie <= 11",
"not op_mini all"
]
}
}
3 changes: 3 additions & 0 deletions public/locales/en-us/translation.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"welcome": "Welcome to react and react-i18next"
}
5 changes: 5 additions & 0 deletions public/locales/en/translation.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"about": { "h1": "What is Habitica?" },
"disciplina": { "h1": "About the discipline" },
"contributors": "Contributors"
}
Empty file.
284 changes: 183 additions & 101 deletions src/App.js

Large diffs are not rendered by default.

18 changes: 11 additions & 7 deletions src/components/LandingPage/sections/AboutHabitica/AboutHabitica.js
Original file line number Diff line number Diff line change
@@ -1,14 +1,18 @@
import React from 'react'
import './AboutHabitica.scss'
import React from "react";
import "./AboutHabitica.scss";
import { Trans } from "react-i18next";

const AboutHabitica = () => (
<section className="content about-habitica">
<h1>O que é o Habitica ?</h1>
<h1>
<Trans i18nKey="about.h1">O que é o Habitica ?</Trans>
</h1>
<p className="about-habitica__text">
Habitica é uma aplicação gamificada para ajudar seus usuários a criar ou melhorar hábitos na vida real.
O app contém prêmios e punições para motivar o usuário e uma rede social para inspirá-lo.
Habitica é uma aplicação gamificada para ajudar seus usuários a criar ou
melhorar hábitos na vida real. O app contém prêmios e punições para
motivar o usuário e uma rede social para inspirá-lo.
</p>
</section>
)
);

export default AboutHabitica
export default AboutHabitica;
21 changes: 13 additions & 8 deletions src/components/LandingPage/sections/Contributors/Contributors.js
Original file line number Diff line number Diff line change
@@ -1,15 +1,20 @@
import React from 'react'
import contributors from '../../../../utils/contributors'
import Contributor from '../../../UI/Contributor/Contributor'
import './Contributors.scss'
import React from "react";
import contributors from "../../../../utils/contributors";
import Contributor from "../../../UI/Contributor/Contributor";
import "./Contributors.scss";
import { Trans } from "react-i18next";

const Contributors = () => (
<section className="content contributors">
<h1>Contribuidores</h1>
<h1>
<Trans i18nKey="contributors">Contribuidores</Trans>
</h1>
<div className="contributors__container">
{ contributors.map(contributor => <Contributor key={ contributor.name } { ...contributor }/>) }
{contributors.map(contributor => (
<Contributor key={contributor.name} {...contributor} />
))}
</div>
</section>
)
);

export default Contributors
export default Contributors;
44 changes: 32 additions & 12 deletions src/components/docs/Disciplina/Disciplina.js
Original file line number Diff line number Diff line change
@@ -1,26 +1,43 @@
import React from 'react'
import './Disciplina.scss'
import React from "react";
import "./Disciplina.scss";
import { Trans } from "react-i18next";

const Disciplina = () => (
<div className="content artefact disciplina">
<h1>Sobre a Disciplina</h1>
<h1>
<Trans i18nKey="disciplina.h1">Sobre a Disciplina</Trans>
</h1>

<h2>Engenharia de Software</h2>
<p>
A Engenharia de Software é uma disciplina da engenharia dedicada aos aspectos da produção de software. Assim como em toda engenharia, os engenheiros de software adotam abordagens sistemáticas e organizadas, através de diversos conhecimentos específicos, visando criar a melhor solução para um problema, levando em consideração as restrições e recursos disponíveis.
O curso de Engenharia de Software da Universidade de Brasília contempla diversas áreas, onde se encontra a disciplina Requisitos de Software.
A Engenharia de Software é uma disciplina da engenharia dedicada aos
aspectos da produção de software. Assim como em toda engenharia, os
engenheiros de software adotam abordagens sistemáticas e organizadas,
através de diversos conhecimentos específicos, visando criar a melhor
solução para um problema, levando em consideração as restrições e recursos
disponíveis. O curso de Engenharia de Software da Universidade de Brasília
contempla diversas áreas, onde se encontra a disciplina Requisitos de
Software.
</p>

<h2>Requisitos de Software</h2>
<p>
Engenharia de Requisitos é o ramo da engenharia de Software responsável por elicitar, modelar, validar e rastrear toda a vida útil de um requisito ao decorrer de um projeto. A área se mostra muito importante tendo em vista que a maior parte dos fracassos de produtos de software ocorrem devido à má elicitação de seus requisitos.
A disciplina da UnB possui como objetivo capacitar o estudante a compreender conceitos, técnicas, procedimentos e ferramentas para o levantamento de requisitos.
Engenharia de Requisitos é o ramo da engenharia de Software responsável
por elicitar, modelar, validar e rastrear toda a vida útil de um requisito
ao decorrer de um projeto. A área se mostra muito importante tendo em
vista que a maior parte dos fracassos de produtos de software ocorrem
devido à má elicitação de seus requisitos. A disciplina da UnB possui como
objetivo capacitar o estudante a compreender conceitos, técnicas,
procedimentos e ferramentas para o levantamento de requisitos.
</p>

<h2>Grupo 2 - Habitica</h2>
<p>
Ao decorrer da disciplina, a equipe utilizou-se dos conhecimentos adquiridos durante as aulas de Requisitos de Software para consolidar o conhecimento dos casos estudados e serem avaliados pelos professores responsáveis pela matéria.
O Grupo 2 é composto pelos seguintes integrantes:
Ao decorrer da disciplina, a equipe utilizou-se dos conhecimentos
adquiridos durante as aulas de Requisitos de Software para consolidar o
conhecimento dos casos estudados e serem avaliados pelos professores
responsáveis pela matéria. O Grupo 2 é composto pelos seguintes
integrantes:
</p>

<table cellSpacing="8">
Expand Down Expand Up @@ -94,13 +111,16 @@ const Disciplina = () => (

<h2>Professores</h2>
<p>
Os professores responsáveis por ministrar a matéria de Requisitos de Software forneceram os materiais de estudo a respeito do conteúdo dado em sala de aula e avaliaram os grupos pelo seus trabalhos entregues. Os professores responsáveis são:
Os professores responsáveis por ministrar a matéria de Requisitos de
Software forneceram os materiais de estudo a respeito do conteúdo dado em
sala de aula e avaliaram os grupos pelo seus trabalhos entregues. Os
professores responsáveis são:
</p>
<ul>
<li>Maurício Serrano</li>
<li>Milene Serrano</li>
</ul>
</div>
)
);

export default Disciplina
export default Disciplina;
27 changes: 27 additions & 0 deletions src/i18n.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
import i18n from "i18next";
import { initReactI18next } from "react-i18next";

import Backend from "i18next-xhr-backend";
import LanguageDetector from "i18next-browser-languagedetector";

i18n
// load translation using xhr -> see /public/locales
// learn more: https://github.com/i18next/i18next-xhr-backend
.use(Backend)
// detect user language
// learn more: https://github.com/i18next/i18next-browser-languageDetector
.use(LanguageDetector)
// pass the i18n instance to react-i18next.
.use(initReactI18next)
// init i18next
// for all options read: https://www.i18next.com/overview/configuration-options
.init({
fallbackLng: "pt-br",
debug: false,

interpolation: {
escapeValue: false // not needed for react as it escapes by default
}
});

export default i18n;
10 changes: 6 additions & 4 deletions src/index.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
import React from 'react';
import ReactDOM from 'react-dom';
import App from './App';
import React from "react";
import ReactDOM from "react-dom";
import AppWithTranslationFooter from "./App";

ReactDOM.render(<App />, document.getElementById('root'));
import "./i18n";

ReactDOM.render(<AppWithTranslationFooter />, document.getElementById("root"));
Loading