No momento que escrevo essa postagem, meu site pessoal usa Gatsby como gerador de site estático. Há tempos que gostaria de escrever um pouco mais em português por aqui, porém, nunca tive tempo e paciência para mexer nesse site de forma que eu possa, com uma certa facilidade, escrever tanto em inglês quanto em português.
Tirei um tempinho para tentar fazer isso de uma maneira simples. O que encontrei, primeiramente, foram várias dependências desatualizadas e uma versão de Gatsby que, aparentemente, só funciona em versões mais antigas de Node.js. Minha primeira tarefa foi atualizar essas dependências, o que funcionou super bem, porém, já vi que tenho vários Warnings para olhar. O que me impressionou muito foi o fato de tudo funcionar, mesmo passando por 3 atualizações major (atualizando da versão 2 para 5)!
O próximo passo até que foi simples. Criei uma nova página chamada pt-br
para
ser a versão em português desse site. Essa página faz duas coisas bastante
simples:
content/post/pt-br
)Layout
que o mesmo deve renderizar em português
Isso por si só já fez várias coisas funcionar. Porém, os posts já escritos
passaram a ter o slug com en-us
em função de eu ter criado uma pasta para
posts de cada língua. A solução também acabou sendo bem simples: na função
createFilePath
,
posso especificar que, caso a lingua seja en-us
, o basePath
passa a ser
post/en-us
.
Um outro pequeno problema é o fato de que, quando fazia o acesso do post escrito
em português, o menu estava sendo renderizado em inglês. Resolver isso também é
relativamente simples. Adicionei um novo campo (createNodeField
) para cada
post contendo a língua escrita. Esse valor é extraído com uma expressão regular
em cima do caminho do post. Com isso, quando fazemos a renderização do post,
agora sabemos a língua e podemos passar essa informação para o componente de
Layout.
Voilà, agora temos agora posts escritos em português.
Talvez essa não seja a melhor forma de fazer isso e entendo que existem plugins que resolvem esse tipo de problema. Porém, os plugins normalmente fazem muitas mágicas. Prefiro iniciar com algo que tenho controle e contexto e, posteriormente, caso faça sentido, posso migrar para algum plugin.
Uma nota mental para mim mesmo para o futuro desse site é: