Skip to content

Commit

Permalink
Adding i18n option and pt-BR locale
Browse files Browse the repository at this point in the history
  • Loading branch information
kazzkiq committed Aug 31, 2018
1 parent ed32868 commit 8365b80
Show file tree
Hide file tree
Showing 8 changed files with 428 additions and 22 deletions.
3 changes: 2 additions & 1 deletion app/assets/locales/en-US.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,8 @@
"start": "Start",
"aboutLink": "about",
"options": {
"numberOfWallets": "Number of Wallets to generate (Bulk Generation):"
"numberOfWallets": "Number of Wallets to generate (Bulk Generation):",
"language": "Choose a different language:"
}
},
"about": {
Expand Down
57 changes: 57 additions & 0 deletions app/assets/locales/pt-BR.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
{
"language": "pt-BR",
"index": {
"title": "Gerador de Carteira",
"subtitle": "Para gerar uma nova carteira, clique no botão abaixo e siga as instruções.",
"start": "Gerar",
"aboutLink": "sobre",
"options": {
"numberOfWallets": "Número de carteiras a gerar (Bulk):",
"language": "Escolha outra linguagem:"
}
},
"about": {
"titleAbout": "Sobre",
"backBtn": "Voltar",
"about1": "Este gerador de carteira foi construído do zero para o Peercoin.",
"about2": "O objetivo principal é entregar uma experiência agradável e rápida para dispositivos móveis, que parecem esquecidos por geradores de carteiras clássicos. Nós usamos tecnologias de ponta, então por favor entenda que navegadores antigos podem não funcionar como esperado (ou nem funcionar) com esta aplicação.",
"titlePeercoin": "Peercoin",
"peercoin1": "Peercoin é a primeira criptomoeda a implementar o sistema Proof of Stake, e a primeira moeda híbrida a usar Proof of Work e Proof of Stake em conjunto. Criada em 2012, ela já está rodando a mais de 5 anos, gastanto uma quantidade de energia consideravelmente menor do que moedas puramente PoW como Bitcoin, por exemplo. Durante estes anos, o Peercoin também nunca teve nenhum envolvimento com pré-mineiração, ICOs fraudulentas ou falhas graves de segurança.",
"titleDisclaimer": "Sobre",
"disclaimer1": "Peercoin team, this wallet developers, or anyone involved with Peercoin do not hold any responsibility for money lost upon wallet generation from this tool, or any other means involving Peercoin or other cryptocurrencies. The owner of the wallet generated is responsible for its money and thus should follow all security steps in order to keep them safe. We do our best to keep this tool as up-to-date and secure as possible. This tool is 100% open-source. If you find any bugs or issues, please report to our repository.",
"disclaimer2": "The main focus is to deliver a good and fast experience for mobile users, which seem forsaken by classic wallet generators. We're using cutting edge browser technologies in order to deliver this better experience, so please understand that older browsers may not work as expected (or at all) with this application.",
"titleCredits": "Créditos",
"credits1": "Esta é uma ferramenta open-source, e como tal, contém bibliotecas de terceiros com suas respectivas licensas. Estas licensas podem ser encontradas no repositório deste projeto.",
"credits2": "Caso você detecte alguma ausência de licensas específicas, por favor abra uma Issue no nosso repositório.",
"credits3": "Desenvolvido por <a href=\"https://twitter.com/kazzkiq/\" target=\"_blank\">@Kazzkiq</a>, tornado possível pela Comunidade Peercoin."
},
"generator": {
"title": "Arraste o dedo aleatóriamente.",
"subtitle1": "Use seu dedo para começar a gerar pontos aleatórios pela tela, isso ajuda na singularidade e segurança da sua carteira.",
"subtitle2": "<b>Comece a arrastar a qualquer momento.</b> Nós vamos te avisar quando o processo terminar.",
"keepSwiping": "Continue Arrastando"
},
"wallet": {
"title": "Carteira gerada!",
"titlePlural": "Carteiras geradas!",
"titlePrint": "Esta carteira possui 15cmx8cm, dobrada ela ocupa o tamanho de um cartão de visitas (5cmx8cm).",
"address": "Endereço",
"privateKey": "Chave Privada",
"makeSure": "Tenha certeza de que ninguém está olhando.",
"privateQRCode": "QR Code da Chave Privada",
"clearBtn": "Limpe os dados e começe denovo",
"menu": {
"saveText": "Salvar arquivo .txt localmente",
"copyAddress": "Copiar <b>endereço/chave privada</b>",
"sendEmail": "Enviar via e-mail",
"saveJSON": "Salvar arquivo JSON",
"paperWallet": "Carteira de Papel (Imprimir)"
},
"multipleWallets": {
"titlePrint": "Estas carteiras possuem 15cmx8cm, dobradas elas ocupam o tamanho de um cartão de visitas (5cmx8cm).",
"printBtn": "Imprimir",
"publicAddress": "Endereço Público:",
"privateKey": "Chave Privada:"
}
}
}
4 changes: 3 additions & 1 deletion app/initialize.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,8 @@ import { Store } from 'svelte/store.umd.js';
document.addEventListener('DOMContentLoaded', main);

function main () {
const allowedLanguages = ['en-US'];
window['allowedLanguages'] = ['en-US', 'pt-BR'];
const allowedLanguages = window['allowedLanguages'];
let language = localStorage.getItem('ppc-user-language') || navigator.language || 'en-US';

if (!allowedLanguages.includes(language)) {
Expand All @@ -18,6 +19,7 @@ function main () {
fetch(`/locales/${language}.json`)
.then(res => res.json())
.then((dictionary) => {
document.title = dictionary.index.title;
localStorage.setItem('ppc-user-language', language);
window.Routes = new Routes();
window.store = new Store({
Expand Down
24 changes: 24 additions & 0 deletions app/pages/index/index.page.svelte.html
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,19 @@ <h2 class="subtitle">{{$dictionary.index.subtitle}}</h2>
<label>{{$dictionary.index.options.numberOfWallets}}</label>
<input class="field" type="number" min="1" max="1000" value="1" on:input="handleBulk(event.target.value)">
</div>
<div class="option">
<label>{{$dictionary.index.options.language}}</label>
<select on:change="handleLanguage(event)">
{{#each allowedLanguages as lang}}
{{#if lang === currentLang}}
<option value="{{lang}}" selected>{{lang}}</option>
{{/if}}
{{#if lang !== currentLang}}
<option value="{{lang}}">{{lang}}</option>
{{/if}}
{{/each}}
</select>
</div>
</div>
</div>
<footer class="footer">
Expand All @@ -25,6 +38,12 @@ <h2 class="subtitle">{{$dictionary.index.subtitle}}</h2>
import Icon from '../../components/icon/icon.component.svelte';

export default {
data() {
return {
allowedLanguages: window['allowedLanguages'],
currentLang: localStorage.getItem('ppc-user-language')
}
},
methods: {
goto(path, e) {
if (e) {
Expand All @@ -36,6 +55,11 @@ <h2 class="subtitle">{{$dictionary.index.subtitle}}</h2>
window.store.set({
numberOfWallets: number
});
},
handleLanguage(e) {
const lang = e.target.value;
localStorage.setItem('ppc-user-language', lang);
window.location.reload();
}
},
components: {
Expand Down
Loading

0 comments on commit 8365b80

Please sign in to comment.