feat: add support for pt-BR and pt-PT
This commit is contained in:
@@ -9,7 +9,8 @@ import es from './locales/es'
|
||||
import fr from './locales/fr'
|
||||
import ja from './locales/ja'
|
||||
import pl from './locales/pl'
|
||||
import pt from './locales/pt'
|
||||
import pt_BR from './locales/pt-BR'
|
||||
import pt_PT from './locales/pt-PT'
|
||||
import ru from './locales/ru'
|
||||
import zh from './locales/zh'
|
||||
|
||||
@@ -22,7 +23,8 @@ const languages = {
|
||||
de: { resource: de, name: 'Deutsch' },
|
||||
ja: { resource: ja, name: '日本語' },
|
||||
ru: { resource: ru, name: 'Русский' },
|
||||
pt: { resource: pt, name: 'Português' },
|
||||
'pt-BR': { resource: pt_BR, name: 'Português (Brasil)' },
|
||||
'pt-PT': { resource: pt_PT, name: 'Português (Portugal)' },
|
||||
ar: { resource: ar, name: 'العربية' }
|
||||
} as const
|
||||
|
||||
@@ -65,7 +67,8 @@ i18n.services.formatter?.add('date', (timestamp, lng) => {
|
||||
return dayjs(timestamp).format('DD.MM.YYYY')
|
||||
case 'es':
|
||||
case 'fr':
|
||||
case 'pt':
|
||||
case 'pt-BR':
|
||||
case 'pt-PT':
|
||||
case 'ar':
|
||||
return dayjs(timestamp).format('DD/MM/YYYY')
|
||||
default:
|
||||
|
||||
212
src/i18n/locales/pt-PT.ts
Normal file
212
src/i18n/locales/pt-PT.ts
Normal file
@@ -0,0 +1,212 @@
|
||||
export default {
|
||||
translation: {
|
||||
// NOTE: The translations below were generated by ChatGPT and have not yet been verified.
|
||||
'Welcome! 🥳': 'Bem-vindo! 🥳',
|
||||
About: 'Sobre',
|
||||
'New Note': 'Nova Nota',
|
||||
Post: 'Postar',
|
||||
Home: 'Início',
|
||||
'Relay settings': 'Configurações de Relé',
|
||||
Settings: 'Configurações',
|
||||
SidebarRelays: 'Relés',
|
||||
Refresh: 'Atualizar',
|
||||
Profile: 'Perfil',
|
||||
Logout: 'Sair',
|
||||
Following: 'Seguindo',
|
||||
followings: 'seguidos',
|
||||
reposted: 'repostado',
|
||||
'just now': 'agora mesmo',
|
||||
'n minutes ago': '{{n}} minutos atrás',
|
||||
'n m': '{{n}}m',
|
||||
'n hours ago': '{{n}} horas atrás',
|
||||
'n h': '{{n}}h',
|
||||
'n days ago': '{{n}} dias atrás',
|
||||
'n d': '{{n}}d',
|
||||
date: '{{timestamp, date}}',
|
||||
Follow: 'Seguir',
|
||||
Unfollow: 'Deixar de Seguir',
|
||||
'Follow failed': 'Falha ao Seguir',
|
||||
'Unfollow failed': 'Falha ao Deixar de Seguir',
|
||||
'show new notes': 'mostrar novas notas',
|
||||
'loading...': 'carregando...',
|
||||
'no more notes': 'não há mais notas',
|
||||
'reply to': 'responder a',
|
||||
reply: 'responder',
|
||||
Reply: 'Responder',
|
||||
'load more older replies': 'carregar mais respostas antigas',
|
||||
'Write something...': 'Escreva algo...',
|
||||
Cancel: 'Cancelar',
|
||||
Mentions: 'Menções',
|
||||
'Failed to post': 'Falha ao postar',
|
||||
'Post successful': 'Postagem bem-sucedida',
|
||||
'Your post has been published': 'Sua postagem foi publicada',
|
||||
Repost: 'Repostar',
|
||||
Quote: 'Citar',
|
||||
'Copy event ID': 'Copiar ID do evento',
|
||||
'Copy user ID': 'Copiar ID do usuário',
|
||||
'View raw event': 'Ver evento bruto',
|
||||
Like: 'Curtir',
|
||||
'switch to light theme': 'alternar para tema claro',
|
||||
'switch to dark theme': 'alternar para tema escuro',
|
||||
'switch to system theme': 'alternar para tema do sistema',
|
||||
Note: 'Nota',
|
||||
note: 'nota',
|
||||
"username's following": 'seguindo de {{username}}',
|
||||
"username's used relays": 'relés usados por {{username}}',
|
||||
"username's muted": '{{username}} silenciado',
|
||||
Login: 'Entrar',
|
||||
'Follows you': 'Segue você',
|
||||
'Relay Settings': 'Configurações de Relé',
|
||||
'Relay set name': 'Nome do conjunto de relé',
|
||||
'Add a new relay set': 'Adicionar um novo conjunto de relé',
|
||||
Add: 'Adicionar',
|
||||
'n relays': '{{n}} relés',
|
||||
Rename: 'Renomear',
|
||||
'Copy share link': 'Copiar link de compartilhamento',
|
||||
Delete: 'Excluir',
|
||||
'Relay already exists': 'Relé já existe',
|
||||
'invalid relay URL': 'URL de relé inválida',
|
||||
'Add a new relay': 'Adicionar um novo relé',
|
||||
back: 'voltar',
|
||||
'Lost in the void': 'Perdido no vazio',
|
||||
'Carry me home': 'Me leve para casa',
|
||||
'no replies': 'sem respostas',
|
||||
'Reply to': 'Responder a',
|
||||
Search: 'Pesquisar',
|
||||
'The relays you are connected to do not support search':
|
||||
'Os relés aos quais você está conectado não suportam pesquisa',
|
||||
'supports search': 'suporta pesquisa',
|
||||
'Show more...': 'Mostrar mais...',
|
||||
'All users': 'Todos os usuários',
|
||||
'Display replies': 'Exibir respostas',
|
||||
Notes: 'Notas',
|
||||
Replies: 'Respostas',
|
||||
Notifications: 'Notificações',
|
||||
'no more notifications': 'não há mais notificações',
|
||||
'Using private key login is insecure. It is recommended to use a browser extension for login, such as alby, nostr-keyx or nos2x.':
|
||||
'Usar login com chave privada é inseguro. Recomenda-se utilizar uma extensão do navegador, como alby, nostr-keyx ou nos2x.',
|
||||
'Login with Browser Extension': 'Entrar com Extensão do Navegador',
|
||||
'Login with Bunker': 'Entrar com Bunker',
|
||||
'Login with Private Key': 'Entrar com Chave Privada',
|
||||
'reload notes': 'recarregar notas',
|
||||
'Logged in Accounts': 'Contas Conectadas',
|
||||
'Add an Account': 'Adicionar uma Conta',
|
||||
'More options': 'Mais opções',
|
||||
'Add client tag': 'Adicionar tag de cliente',
|
||||
'Show others this was sent via Jumble': 'Mostrar aos outros que isso foi enviado via Jumble',
|
||||
'Are you sure you want to logout?': 'Tem certeza de que deseja sair?',
|
||||
'relay sets': 'conjuntos de relé',
|
||||
edit: 'editar',
|
||||
Languages: 'Idiomas',
|
||||
Theme: 'Tema',
|
||||
System: 'Sistema',
|
||||
Light: 'Claro',
|
||||
Dark: 'Escuro',
|
||||
Temporary: 'Temporário',
|
||||
'Choose a relay set': 'Escolha um conjunto de relé',
|
||||
'Switch account': 'Trocar de Conta',
|
||||
Pictures: 'Imagens',
|
||||
'Picture note': 'Nota de Imagem',
|
||||
'A special note for picture-first clients like Olas':
|
||||
'Uma nota especial para clientes que priorizam imagens, como Olas',
|
||||
'Picture note requires images': 'Nota de imagem requer imagens',
|
||||
Relays: 'Relés',
|
||||
image: 'imagem',
|
||||
'Normal Note': 'Nota Normal',
|
||||
'Picture Note': 'Nota de Imagem',
|
||||
'R & W': 'Leitura & Escrita',
|
||||
Read: 'Ler',
|
||||
Write: 'Escrever',
|
||||
'Push to relays': 'Enviar para relés',
|
||||
'Push Successful': 'Envio Bem-sucedido',
|
||||
'Successfully pushed relay sets to relays': 'Conjuntos de relé enviados com sucesso',
|
||||
'Pull from relays': 'Receber de relés',
|
||||
'Select the relay sets you want to pull': 'Selecione os conjuntos de relé que deseja receber',
|
||||
'No relay sets found': 'Nenhum conjunto de relé encontrado',
|
||||
'Pull n relay sets': 'Receber {{n}} conjuntos de relé',
|
||||
Pull: 'Receber',
|
||||
'Select all': 'Selecionar todos',
|
||||
'Relay Sets': 'Conjuntos de relé',
|
||||
'Read & Write Relays': 'Relés de Leitura & Escrita',
|
||||
'read relays description':
|
||||
'Relés de leitura são usados para buscar eventos sobre você. Outros usuários publicarão os eventos que deseja ver nesses relés.',
|
||||
'write relays description':
|
||||
'Relés de escrita são usados para publicar seus eventos. Outros usuários buscarão seus eventos nesses relés.',
|
||||
'read & write relays notice':
|
||||
'O número de servidores de leitura e escrita deve ser mantido entre 2 e 4, idealmente.',
|
||||
"Don't have an account yet?": 'Não tem uma conta ainda?',
|
||||
'or simply generate a private key': 'ou simplesmente gere uma chave privada',
|
||||
'This is a private key. Do not share it with anyone. Keep it safe and secure. You will not be able to recover it if you lose it.':
|
||||
'Esta é uma chave privada. Não a compartilhe com ninguém. Mantenha-a segura, pois não poderá recuperá-la se perdê-la.',
|
||||
Edit: 'Editar',
|
||||
Save: 'Salvar',
|
||||
'Display Name': 'Nome de Exibição',
|
||||
Bio: 'Biografia',
|
||||
'Nostr Address (NIP-05)': 'Endereço Nostr (NIP-05)',
|
||||
'Invalid NIP-05 address': 'Endereço NIP-05 inválido',
|
||||
'Copy private key': 'Copiar chave privada',
|
||||
'Enter the password to decrypt your ncryptsec':
|
||||
'Digite a senha para descriptografar seu ncryptsec',
|
||||
Back: 'Voltar',
|
||||
'optional: encrypt nsec': 'opcional: criptografar nsec',
|
||||
password: 'senha',
|
||||
'Sign up': 'Registrar-se',
|
||||
'Save to': 'Salvar em',
|
||||
'Enter a name for the new relay set': 'Digite um nome para o novo conjunto de relé',
|
||||
'Save to a new relay set': 'Salvar em um novo conjunto de relé',
|
||||
Mute: 'Silenciar',
|
||||
Muted: 'Silenciado',
|
||||
Unmute: 'Ativar som',
|
||||
'Mute user': 'Silenciar usuário',
|
||||
'Unmute user': 'Ativar som do usuário',
|
||||
'Append n relays': 'Adicionar {{n}} relés',
|
||||
Append: 'Adicionar',
|
||||
'Select relays to append': 'Selecione os relés para adicionar',
|
||||
'calculating...': 'calculando...',
|
||||
'Calculate optimal read relays': 'Calcular relés de leitura ideais',
|
||||
'Login to set': 'Entrar no conjunto',
|
||||
'Please login to view following feed': 'Por favor, faça login para ver o feed de seguidores',
|
||||
'Send only to r': 'Enviar apenas para {{r}}',
|
||||
'Send only to these relays': 'Enviar apenas para estes relés',
|
||||
Explore: 'Explorar',
|
||||
'Search relays': 'Pesquisar relés',
|
||||
relayInfoBadgeAuth: 'Auth',
|
||||
relayInfoBadgeSearch: 'Pesquisar',
|
||||
relayInfoBadgePayment: 'Pagamento',
|
||||
Operator: 'Operador',
|
||||
Contact: 'Contato',
|
||||
Software: 'Software',
|
||||
Version: 'Versão',
|
||||
'Random Relays': 'Relés Aleatórios',
|
||||
randomRelaysRefresh: 'Atualizar',
|
||||
'Explore more': 'Explorar mais',
|
||||
'Payment page': 'Página de Pagamento',
|
||||
'Supported NIPs': 'NIPs Suportados',
|
||||
'Open in a': 'Abrir em {{a}}',
|
||||
'Cannot handle event of kind k': 'Não é possível lidar com o evento do tipo {{k}}',
|
||||
'Sorry! The note cannot be found 😔': 'Desculpe! A nota não pode ser encontrada 😔',
|
||||
'This user has been muted': 'Este usuário foi silenciado',
|
||||
Wallet: 'Carteira',
|
||||
Sats: 'Sats',
|
||||
sats: 'sats',
|
||||
'Zap to': 'Zap para',
|
||||
'Zap n sats': 'Zap {{n}} sats',
|
||||
zapComment: 'Comentário',
|
||||
'Default zap amount': 'Valor padrão do zap',
|
||||
'Default zap comment': 'Comentário padrão do zap',
|
||||
'Lightning Address (or LNURL)': 'Endereço Lightning (ou LNURL)',
|
||||
'Quick zap': 'Zap Rápido',
|
||||
'If enabled, you can zap with a single click': 'Se ativado, você pode enviar zap com um clique',
|
||||
All: 'Tudo',
|
||||
Reactions: 'Reações',
|
||||
Zaps: 'Zaps',
|
||||
'Enjoying Jumble?': 'Gostando do Jumble?',
|
||||
'Your donation helps me maintain Jumble and make it better! 😊':
|
||||
'Sua doação me ajuda a manter o Jumble e torná-lo melhor! 😊',
|
||||
'Earlier notifications': 'Notificações anteriores',
|
||||
'Temporarily display this note': 'Exibir esta nota temporariamente',
|
||||
buttonFollowing: 'Seguindo',
|
||||
'Are you sure you want to unfollow this user?':
|
||||
'Tem certeza de que deseja deixar de seguir este usuário?'
|
||||
}
|
||||
}
|
||||
@@ -45,7 +45,7 @@ const SettingsPage = forwardRef(({ index }: { index?: number }, ref) => {
|
||||
<div>{t('Languages')}</div>
|
||||
</div>
|
||||
<Select defaultValue="en" value={language} onValueChange={handleLanguageChange}>
|
||||
<SelectTrigger className="w-32">
|
||||
<SelectTrigger className="w-48">
|
||||
<SelectValue />
|
||||
</SelectTrigger>
|
||||
<SelectContent>
|
||||
@@ -63,7 +63,7 @@ const SettingsPage = forwardRef(({ index }: { index?: number }, ref) => {
|
||||
<div>{t('Theme')}</div>
|
||||
</div>
|
||||
<Select defaultValue="system" value={themeSetting} onValueChange={setThemeSetting}>
|
||||
<SelectTrigger className="w-32">
|
||||
<SelectTrigger className="w-48">
|
||||
<SelectValue />
|
||||
</SelectTrigger>
|
||||
<SelectContent>
|
||||
|
||||
Reference in New Issue
Block a user