Skip to content

Commit 1bc5afc

Browse files
committed
feat(i18n): add Brazilian Portuguese (pt-BR) translation support
- Add pt-BR locale to config/i18n.ts with Portuguese pluralization rules - Create i18n/locales/pt-BR.json with initial translations (~115 keys) - Create lunaria/files/pt-BR.json for Lunaria translation tracking - English fallback for untranslated keys until completed Partial translation (14% complete) with focus on core UI sections (seo, search, nav, settings, package, common). Additional sections can be translated incrementally.
1 parent 8825b0a commit 1bc5afc

3 files changed

Lines changed: 235 additions & 0 deletions

File tree

config/i18n.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -270,6 +270,11 @@ const locales: (LocaleObjectData | (Omit<LocaleObjectData, 'code'> & { code: str
270270
return { zero: 0, one: 1, two: 0, few: 2, many: 3, other: 4 }[name]
271271
},
272272
},
273+
{
274+
code: 'pt-BR',
275+
file: 'pt-BR.json',
276+
name: 'Português (Brasil)',
277+
},
273278
/*{
274279
code: 'sv',
275280
file: 'sv.json',

i18n/locales/pt-BR.json

Lines changed: 115 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,115 @@
1+
{
2+
"seo": {
3+
"home": {
4+
"title": "npmx - Navegador de Pacotes para o Registro npm",
5+
"description": "Um navegador melhor para o registro npm. Pesquise, navegue e explore pacotes com uma interface moderna."
6+
}
7+
},
8+
"version": "Versão",
9+
"built_at": "construído {0}",
10+
"alt_logo": "logo npmx",
11+
"tagline": "um navegador melhor para o registro npm",
12+
"non_affiliation_disclaimer": "não é afiliado com npm, Inc.",
13+
"trademark_disclaimer": "npm é uma marca registrada da npm, Inc. Este site não é afiliado com npm, Inc.",
14+
"footer": {
15+
"about": "sobre",
16+
"docs": "documentação",
17+
"source": "código-fonte",
18+
"social": "redes sociais",
19+
"chat": "chat"
20+
},
21+
"search": {
22+
"label": "Pesquisar pacotes npm",
23+
"placeholder": "pesquisar pacotes...",
24+
"button": "pesquisar",
25+
"clear": "Limpar pesquisa",
26+
"searching": "Pesquisando...",
27+
"found_packages": "Nenhum pacote encontrado | 1 pacote encontrado | {count} pacotes encontrados",
28+
"updating": "(atualizando...)",
29+
"no_results": "Nenhum pacote encontrado para \"{query}\"",
30+
"results": "Resultados da pesquisa",
31+
"not_taken": "{name} não está em uso",
32+
"claim_prompt": "Reivindicar este nome de pacote no npm",
33+
"claim_button": "Reivindicar \"{name}\"",
34+
"want_to_claim": "Deseja reivindicar este nome de pacote?",
35+
"start_typing": "Comece a digitar para pesquisar pacotes",
36+
"exact_match": "exato",
37+
"suggestion": {
38+
"user": "usuário",
39+
"org": "organização",
40+
"view_user_packages": "Ver pacotes deste usuário",
41+
"view_org_packages": "Ver pacotes desta organização"
42+
}
43+
},
44+
"nav": {
45+
"main_navigation": "Principal",
46+
"popular_packages": "Pacotes populares",
47+
"search": "pesquisa",
48+
"settings": "configurações",
49+
"compare": "comparar",
50+
"back": "voltar",
51+
"menu": "Menu",
52+
"mobile_menu": "Menu de navegação",
53+
"open_menu": "Abrir menu",
54+
"links": "Links",
55+
"tap_to_search": "Toque para pesquisar"
56+
},
57+
"settings": {
58+
"title": "configurações",
59+
"tagline": "personalize sua experiência npmx",
60+
"meta_description": "Customize sua experiência npmx.dev com preferências de tema, idioma e exibição.",
61+
"sections": {
62+
"appearance": "Aparência",
63+
"display": "Exibição",
64+
"language": "Idioma"
65+
},
66+
"relative_dates": "Datas relativas",
67+
"relative_dates_description": "Mostrar \"há 3 dias\" em vez de datas completas",
68+
"include_types": "Incluir {'@'}types na instalação",
69+
"include_types_description": "Adicionar pacote {'@'}types aos comandos de instalação para pacotes sem tipo",
70+
"hide_platform_packages": "Ocultar pacotes específicos de plataforma na pesquisa",
71+
"hide_platform_packages_description": "Ocultar pacotes binários nativos como {'@'}esbuild/linux-x64 dos resultados",
72+
"theme": "Tema",
73+
"theme_light": "Claro",
74+
"theme_dark": "Escuro",
75+
"theme_system": "Sistema",
76+
"language": "Idioma",
77+
"help_translate": "Ajude a traduzir npmx",
78+
"accent_colors": "Cores de destaque",
79+
"clear_accent": "Limpar cor de destaque",
80+
"translation_progress": "Progresso de tradução"
81+
},
82+
"i18n": {
83+
"missing_keys": "{count} tradução ausente | {count} traduções ausentes",
84+
"copy_keys": "Copiar chaves",
85+
"show_more_keys": "Mostrar {count} mais...",
86+
"contribute_hint": "Ajude a melhorar esta tradução adicionando as chaves ausentes.",
87+
"edit_on_github": "Editar no GitHub",
88+
"view_guide": "Guia de tradução"
89+
},
90+
"common": {
91+
"loading": "Carregando...",
92+
"loading_more": "Carregando mais...",
93+
"loading_packages": "Carregando pacotes...",
94+
"end_of_results": "Fim dos resultados",
95+
"try_again": "Tente novamente",
96+
"close": "Fechar",
97+
"retry": "Repetir",
98+
"copy": "copiar",
99+
"copied": "copiado!",
100+
"skip_link": "Pular para o conteúdo principal",
101+
"close_modal": "Fechar modal",
102+
"show_more": "mostrar mais",
103+
"warnings": "Avisos:",
104+
"go_back_home": "Voltar para a página inicial",
105+
"view_on_npm": "visualizar no npm",
106+
"per_week": "/ semana",
107+
"vanity_downloads_hint": "Número de vaidade: nenhum pacote exibido | Número de vaidade: para o pacote exibido | Número de vaidade: Soma de {count} pacotes exibidos",
108+
"sort": {
109+
"name": "nome",
110+
"role": "função",
111+
"members": "membros"
112+
},
113+
"scroll_to_top": "Rolar para o topo"
114+
}
115+
}

lunaria/files/pt-BR.json

Lines changed: 115 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,115 @@
1+
{
2+
"seo": {
3+
"home": {
4+
"title": "npmx - Navegador de Pacotes para o Registro npm",
5+
"description": "Um navegador melhor para o registro npm. Pesquise, navegue e explore pacotes com uma interface moderna."
6+
}
7+
},
8+
"version": "Versão",
9+
"built_at": "construído {0}",
10+
"alt_logo": "logo npmx",
11+
"tagline": "um navegador melhor para o registro npm",
12+
"non_affiliation_disclaimer": "não é afiliado com npm, Inc.",
13+
"trademark_disclaimer": "npm é uma marca registrada da npm, Inc. Este site não é afiliado com npm, Inc.",
14+
"footer": {
15+
"about": "sobre",
16+
"docs": "documentação",
17+
"source": "código-fonte",
18+
"social": "redes sociais",
19+
"chat": "chat"
20+
},
21+
"search": {
22+
"label": "Pesquisar pacotes npm",
23+
"placeholder": "pesquisar pacotes...",
24+
"button": "pesquisar",
25+
"clear": "Limpar pesquisa",
26+
"searching": "Pesquisando...",
27+
"found_packages": "Nenhum pacote encontrado | 1 pacote encontrado | {count} pacotes encontrados",
28+
"updating": "(atualizando...)",
29+
"no_results": "Nenhum pacote encontrado para \"{query}\"",
30+
"results": "Resultados da pesquisa",
31+
"not_taken": "{name} não está em uso",
32+
"claim_prompt": "Reivindicar este nome de pacote no npm",
33+
"claim_button": "Reivindicar \"{name}\"",
34+
"want_to_claim": "Deseja reivindicar este nome de pacote?",
35+
"start_typing": "Comece a digitar para pesquisar pacotes",
36+
"exact_match": "exato",
37+
"suggestion": {
38+
"user": "usuário",
39+
"org": "organização",
40+
"view_user_packages": "Ver pacotes deste usuário",
41+
"view_org_packages": "Ver pacotes desta organização"
42+
}
43+
},
44+
"nav": {
45+
"main_navigation": "Principal",
46+
"popular_packages": "Pacotes populares",
47+
"search": "pesquisa",
48+
"settings": "configurações",
49+
"compare": "comparar",
50+
"back": "voltar",
51+
"menu": "Menu",
52+
"mobile_menu": "Menu de navegação",
53+
"open_menu": "Abrir menu",
54+
"links": "Links",
55+
"tap_to_search": "Toque para pesquisar"
56+
},
57+
"settings": {
58+
"title": "configurações",
59+
"tagline": "personalize sua experiência npmx",
60+
"meta_description": "Customize sua experiência npmx.dev com preferências de tema, idioma e exibição.",
61+
"sections": {
62+
"appearance": "Aparência",
63+
"display": "Exibição",
64+
"language": "Idioma"
65+
},
66+
"relative_dates": "Datas relativas",
67+
"relative_dates_description": "Mostrar \"há 3 dias\" em vez de datas completas",
68+
"include_types": "Incluir {'@'}types na instalação",
69+
"include_types_description": "Adicionar pacote {'@'}types aos comandos de instalação para pacotes sem tipo",
70+
"hide_platform_packages": "Ocultar pacotes específicos de plataforma na pesquisa",
71+
"hide_platform_packages_description": "Ocultar pacotes binários nativos como {'@'}esbuild/linux-x64 dos resultados",
72+
"theme": "Tema",
73+
"theme_light": "Claro",
74+
"theme_dark": "Escuro",
75+
"theme_system": "Sistema",
76+
"language": "Idioma",
77+
"help_translate": "Ajude a traduzir npmx",
78+
"accent_colors": "Cores de destaque",
79+
"clear_accent": "Limpar cor de destaque",
80+
"translation_progress": "Progresso de tradução"
81+
},
82+
"i18n": {
83+
"missing_keys": "{count} tradução ausente | {count} traduções ausentes",
84+
"copy_keys": "Copiar chaves",
85+
"show_more_keys": "Mostrar {count} mais...",
86+
"contribute_hint": "Ajude a melhorar esta tradução adicionando as chaves ausentes.",
87+
"edit_on_github": "Editar no GitHub",
88+
"view_guide": "Guia de tradução"
89+
},
90+
"common": {
91+
"loading": "Carregando...",
92+
"loading_more": "Carregando mais...",
93+
"loading_packages": "Carregando pacotes...",
94+
"end_of_results": "Fim dos resultados",
95+
"try_again": "Tente novamente",
96+
"close": "Fechar",
97+
"retry": "Repetir",
98+
"copy": "copiar",
99+
"copied": "copiado!",
100+
"skip_link": "Pular para o conteúdo principal",
101+
"close_modal": "Fechar modal",
102+
"show_more": "mostrar mais",
103+
"warnings": "Avisos:",
104+
"go_back_home": "Voltar para a página inicial",
105+
"view_on_npm": "visualizar no npm",
106+
"per_week": "/ semana",
107+
"vanity_downloads_hint": "Número de vaidade: nenhum pacote exibido | Número de vaidade: para o pacote exibido | Número de vaidade: Soma de {count} pacotes exibidos",
108+
"sort": {
109+
"name": "nome",
110+
"role": "função",
111+
"members": "membros"
112+
},
113+
"scroll_to_top": "Rolar para o topo"
114+
}
115+
}

0 commit comments

Comments
 (0)