Skip to content

Commit cf4ca08

Browse files
committed
feat(i18n): add Portuguese (PT) and Portuguese (BR) translations
1 parent 1b15b5e commit cf4ca08

3 files changed

Lines changed: 624 additions & 0 deletions

File tree

i18n/i18n.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,18 @@ const locales: LocaleObject[] = [
3737
name: 'Deutsch',
3838
emoji: '🇩🇪',
3939
},
40+
{
41+
code: 'pt-PT',
42+
file: 'pt-PT.json',
43+
name: 'Português (PT)',
44+
emoji: '🇵🇹',
45+
},
46+
{
47+
code: 'pt-BR',
48+
file: 'pt-BR.json',
49+
name: 'Português (BR)',
50+
emoji: '🇧🇷',
51+
},
4052
]
4153

4254
function buildLocales() {

i18n/locales/pt-BR.json

Lines changed: 306 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,306 @@
1+
{
2+
"common": {
3+
"i18n": "Multi idiomas",
4+
"abbreviations": "Br",
5+
"current_language": "Português (BR)",
6+
"try_again": "Tente novamente",
7+
"cancel": "Cancelar",
8+
"continue": "Continuar",
9+
"close": "Fechar",
10+
"save": "Salvar",
11+
"edit": "Editar",
12+
"delete": "Excluir",
13+
"delete_success": "Excluído com sucesso!",
14+
"search": "Buscar"
15+
},
16+
"theme": {
17+
"toggle": "Alternar tema",
18+
"light": "Claro",
19+
"dark": "Escuro",
20+
"system": "Sistema"
21+
},
22+
"login": {
23+
"title": "Login",
24+
"description": "Insira seu token do site para entrar",
25+
"tips": "Dicas",
26+
"preview_token": "O token do site para modo de visualização é",
27+
"submit": "Entrar",
28+
"failed": "Falha no login, por favor tente novamente",
29+
"token_label": "Token do site",
30+
"token_required": "Token é obrigatório"
31+
},
32+
"logout": {
33+
"title": "Sair?",
34+
"confirm": "Tem certeza que deseja sair?",
35+
"action": "Sair"
36+
},
37+
"layouts": {
38+
"footer": {
39+
"copyright": "Produtos da HTML.ZONE",
40+
"social": {
41+
"email": "E-mail",
42+
"telegram": "Telegram",
43+
"blog": "Blog",
44+
"twitter": "Twitter",
45+
"mastodon": "Mastodon",
46+
"github": "GitHub"
47+
}
48+
},
49+
"header": {
50+
"select_language": "Selecionar idioma"
51+
}
52+
},
53+
"nav": {
54+
"links": "Links",
55+
"analysis": "Análise",
56+
"realtime": "Tempo Real",
57+
"migrate": "Importar/Exportar"
58+
},
59+
"sidebar": {
60+
"subtitle": "Encurtador de links",
61+
"platform": "Plataforma",
62+
"settings": "Configurações",
63+
"import": "Importar",
64+
"export": "Exportar",
65+
"coffee": "Pague-me um café",
66+
"github": "GitHub",
67+
"stars": "Estrelas",
68+
"update": "Nova versão {version} disponível (atual: {current})"
69+
},
70+
"home": {
71+
"hero": {
72+
"github_repo": "Repositório GitHub"
73+
},
74+
"features": {
75+
"title": "Funcionalidades",
76+
"subtitle": "Funcionalidade simples e suficiente",
77+
"url_shortening": {
78+
"title": "Encurtamento de URL",
79+
"description": "Comprima suas URLs ao tamanho mínimo"
80+
},
81+
"analytics": {
82+
"title": "Analytics",
83+
"description": "Monitore a análise de links e obtenha estatísticas detalhadas"
84+
},
85+
"serverless": {
86+
"title": "Serverless",
87+
"description": "Implante sem a necessidade de servidores tradicionais"
88+
},
89+
"customizable_slug": {
90+
"title": "Slug Personalizável",
91+
"description": "Suporte para slugs personalizados e sensibilidade a maiúsculas/minúsculas"
92+
},
93+
"ai_slug": {
94+
"title": "Slug via IA",
95+
"description": "Use IA para gerar slugs automaticamente"
96+
},
97+
"link_expiration": {
98+
"title": "Expiração de Link",
99+
"description": "Defina datas de expiração para seus links"
100+
},
101+
"device_routing": {
102+
"title": "Roteamento por aparelho",
103+
"description": "Redirecione usuários iOS/Android para links da App Store"
104+
},
105+
"og_preview": {
106+
"title": "Prévia Social",
107+
"description": "Prévias OpenGraph personalizadas para redes sociais"
108+
},
109+
"realtime_analytics": {
110+
"title": "Analytics em Tempo Real",
111+
"description": "Globo 3D ao vivo e logs de eventos em tempo real"
112+
},
113+
"qr_code": {
114+
"title": "QR Code",
115+
"description": "Gere códigos QR para seus links curtos"
116+
},
117+
"import_export": {
118+
"title": "Importar/Exportar",
119+
"description": "Migração em massa via arquivos JSON"
120+
},
121+
"multi_language": {
122+
"title": "Multi-idioma",
123+
"description": "Suporte completo de i18n para o painel"
124+
}
125+
},
126+
"cta": {
127+
"title": "Implantação imediata",
128+
"description": "Com apenas alguns cliques simples, você pode começar a implantar sem custos",
129+
"button": "Iniciar implantação"
130+
},
131+
"logos": {
132+
"title": "Construído com tecnologias incríveis"
133+
},
134+
"twitter": {
135+
"follow": "Siga no X (Twitter)"
136+
},
137+
"stats": {
138+
"title": "Mergulhe nos números",
139+
"subtitle": "Confiado por desenvolvedores ao redor do mundo",
140+
"stars": "Estrelas no GitHub",
141+
"forks": "Forks"
142+
},
143+
"testimonials": {
144+
"title": "Amado pelos usuários",
145+
"subtitle": "Veja o que os desenvolvedores estão dizendo sobre o Sink"
146+
}
147+
},
148+
"dashboard": {
149+
"title": "Dashboard",
150+
"visits": "Visitas",
151+
"views": "Visualizações",
152+
"visitors": "Visitantes",
153+
"referers": "Origens",
154+
"stats": " - Estatísticas",
155+
"trend": "Tendência",
156+
"weekly_trend": "Tendência semanal",
157+
"custom_date": "Data personalizada",
158+
"date": "Data",
159+
"date_range": "Intervalo de datas",
160+
"locations": "Localizações",
161+
"details": "Detalhes",
162+
"name": "Nome",
163+
"count": "Contagem",
164+
"loading": "Carregando",
165+
"no_data": "Sem dados",
166+
"none": "(Nenhum)",
167+
"filter_placeholder": "Filtrar links...",
168+
"date_picker": {
169+
"today": "Hoje",
170+
"last_24h": "Últimas 24 horas",
171+
"this_week": "Esta semana",
172+
"last_7d": "Últimos 7 dias",
173+
"this_month": "Este mês",
174+
"last_30d": "Últimos 30 dias",
175+
"last_90d": "Últimos 90 dias",
176+
"custom": "Personalizado",
177+
"custom_title": "Data personalizada",
178+
"single_date": "Data",
179+
"date_range": "Intervalo"
180+
},
181+
"metrics": {
182+
"country": "País",
183+
"region": "Região",
184+
"city": "Cidade",
185+
"referer": "Referência",
186+
"slug": "Slug",
187+
"language": "Idioma",
188+
"timezone": "Fuso horário",
189+
"device": "Aparelho",
190+
"deviceType": "Tipo de aparelho",
191+
"os": "SO",
192+
"browser": "Navegador",
193+
"browserType": "Tipo de navegador"
194+
},
195+
"time_picker": {
196+
"today": "Hoje",
197+
"last_5m": "Últimos 5 minutos",
198+
"last_10m": "Últimos 10 minutos",
199+
"last_30m": "Últimos 30 minutos",
200+
"last_1h": "Última 1 hora",
201+
"last_6h": "Últimas 6 horas",
202+
"last_12h": "Últimas 12 horas",
203+
"last_24h": "Últimas 24 horas"
204+
}
205+
},
206+
"links": {
207+
"create": "Criar Link",
208+
"edit": "Editar Link",
209+
"delete_confirm_title": "Você tem certeza absoluta?",
210+
"delete_confirm_desc": "Esta ação não pode ser desfeita. Isso excluirá permanentemente seu link dos servidores.",
211+
"delete_success": "Excluído com sucesso!",
212+
"delete_failed": "Falha ao excluir!",
213+
"update_success": "Link atualizado com sucesso",
214+
"create_success": "Link gerado com sucesso",
215+
"preview_mode_tip": "O link do modo de visualização é válido por até 5 minutos.",
216+
"search_placeholder": "Buscar links...",
217+
"no_results": "Nenhum link encontrado.",
218+
"group_title": "Links",
219+
"copy_success": "Copiado com sucesso!",
220+
"created_at": "Criado em",
221+
"updated_at": "Atualizado em",
222+
"expires_at": "Expira em",
223+
"no_more": "Não há mais links",
224+
"load_failed": "Falha ao carregar links,",
225+
"download_qr_code": "Baixar QR Code",
226+
"change_qr_color": "Alterar cor do QR code",
227+
"form": {
228+
"url": "URL",
229+
"slug": "Slug",
230+
"comment": "Comentário",
231+
"expiration": "Expiração",
232+
"pick_date": "Escolha uma data",
233+
"device_redirect": "Redirecionamento de aparelho",
234+
"google_play": "URL do Google Play",
235+
"app_store": "URL da App Store",
236+
"link_settings": "Configurações do link",
237+
"redirect_with_query_label": "Redirecionar com parâmetros de consulta",
238+
"redirect_with_query_description": "Anexar parâmetros de consulta do link curto à URL de destino. Substitui a configuração global.",
239+
"cloaking_label": "Habilitar mascaramento de link",
240+
"cloaking_description": "Mostrar seu link curto na barra de endereço do navegador em vez da URL de destino. Pode não funcionar em sites que bloqueiam incorporação de iframe.",
241+
"password_label": "Proteção por senha",
242+
"password_description": "Exigir uma senha para acessar este link curto.",
243+
"password_placeholder": "Deixe vazio para desativar",
244+
"og_settings": "Configurações OpenGraph",
245+
"og_title": "Título",
246+
"og_title_placeholder": "Deixe vazio para usar o nome do host da URL",
247+
"og_description": "Descrição",
248+
"og_description_placeholder": "Descrição do link",
249+
"og_image": "Imagem",
250+
"advanced": "Avançado",
251+
"more_options": "Mais opções",
252+
"image_invalid_type": "Por favor, envie um arquivo de imagem",
253+
"image_size_limit": "O tamanho da imagem não pode exceder 5MB",
254+
"image_upload_success": "Imagem enviada com sucesso",
255+
"image_upload_failed": "Falha ao enviar imagem",
256+
"image_upload_hint": "Clique ou arraste para enviar a imagem",
257+
"image_ratio_hint": "Recomendado: 1200×630",
258+
"slug_required": "Por favor, insira um slug primeiro"
259+
},
260+
"sort": {
261+
"newest": "Mais recentes primeiro",
262+
"oldest": "Mais antigos primeiro",
263+
"az": "Slug A-Z",
264+
"za": "Slug Z-A",
265+
"tip": "Experiência: Apenas para links carregados"
266+
},
267+
"update_failed": "Falha ao atualizar link",
268+
"create_failed": "Falha ao criar link",
269+
"ai_slug_failed": "Falha ao gerar slug via IA"
270+
},
271+
"migrate": {
272+
"export": {
273+
"title": "Exportar links",
274+
"description": "Baixe todos os seus links como um arquivo JSON",
275+
"button": "Exportar tudo",
276+
"total_links": "Total de links",
277+
"success": "Exportação bem-sucedida",
278+
"failed": "Falha na exportação"
279+
},
280+
"import": {
281+
"title": "Importar links",
282+
"description": "Envie um arquivo JSON para importar links",
283+
"dropzone": "Arraste o arquivo JSON aqui ou clique para enviar",
284+
"links_found": "links encontrados",
285+
"button": "Iniciar importação",
286+
"importing": "Importando...",
287+
"import_more": "Importar mais",
288+
"download_success": "Baixar itens com sucesso",
289+
"download_skipped": "Baixar itens ignorados",
290+
"download_failed": "Baixar itens com falha",
291+
"result": {
292+
"title": "Resultado da importação",
293+
"success": "Importado com sucesso",
294+
"skipped": "Ignorado (já existe)",
295+
"failed": "Falhou",
296+
"success_message": "{count} links importados com sucesso"
297+
},
298+
"errors": {
299+
"invalid_json": "Arquivo JSON inválido",
300+
"invalid_format": "Formato de arquivo inválido. Por favor, use um arquivo exportado do Sink.",
301+
"no_links": "Nenhum link encontrado no arquivo",
302+
"parse_error": "Falha ao analisar o arquivo"
303+
}
304+
}
305+
}
306+
}

0 commit comments

Comments
 (0)