Traduza um arquivo PO ou POT online, com plurais e contexto tratados
Envie um modelo .pot ou um arquivo .po parcialmente traduzido e receba de volta um .po com todos os msgstr vazios preenchidos. msgid e msgctxt nunca mudam, comentários e referências permanecem, e as entradas de plural recebem quantas formas o idioma de destino precisar. As primeiras strings são grátis, sem cadastro; o arquivo inteiro, com até 5,000 strings, custa $5, em pagamento único.
- Entradas vazias e fuzzy são traduzidas; as que você já traduziu são mantidas
- Entradas msgid_plural recebem msgstr[0], msgstr[1] … para o idioma de destino, com Plural-Forms no cabeçalho
- msgctxt, comentários do tradutor (#.) e referências (#:) são enviados como contexto e mantidos no arquivo
- Placeholders php-format, c-format e python-format verificados em cada string
- Funciona com plugins e temas do WordPress e com projetos em Django, Python, PHP e C
{
"home.greeting": "Good morning, {name}Buenos días, {name}",
"home.nearby": "{count, plural, =0 {No trails near you yet} one {# trail near you} other {# trails near you}}{count, plural, =0 {Aún no hay rutas cerca de ti} one {# ruta cerca de ti} other {# rutas cerca de ti}}",
"trail.offline_done": "<b>{name}</b> is saved on this phone. You can use the map without a signal.<b>{name}</b> está guardado en este teléfono. Puedes usar el mapa sin señal.",
"trail.share_text": "I just finished {trail} with Trailbook! {km} km and {meters} m up. 🥾¡Acabo de terminar {trail} con Trailbook! {km} km y {meters} m de subida. 🥾",
"saved.empty": "You have not saved any trails yet.\nTap the heart on a trail to keep it here.Aún no has guardado ninguna ruta.\nToca el corazón en una ruta para guardarla aquí."
}
Amarelo: placeholders e sintaxe de plural ICU, verificados em cada texto. Verde-azulado: tags, escapes e emojis, mantidos como estão.
Mesmas chaves. Mesmos placeholders. Novo idioma.
Só os valores mudam. O arquivo volta com o mesmo aninhamento e a mesma ordem, com o nome es.json, e qualquer texto que perca um placeholder é refeito antes de chegar ao seu build.
App de demonstração criado para esta página; os textos em espanhol são resultado real da ferramenta, a partir de um arquivo de 85 textos.
De um modelo POT para um arquivo PO
Um arquivo .pot é a lista de strings que um projeto precisa traduzir, com todos os msgstr vazios. Envie o arquivo, escolha um idioma e você recebe um .po com o cabeçalho preenchido: Language, uma linha Plural-Forms para esse idioma e UTF-8 como charset. O arquivo recebe o nome do idioma, por exemplo myplugin.pot vira myplugin-de.po; renomeie para o que o seu projeto espera, como myplugin-de_DE.po no WordPress, e compile para .mo com a sua ferramenta de costume.
Formas de plural e entradas fuzzy
Cada idioma conta de um jeito. O inglês tem duas formas; polonês e russo usam três no gettext; o árabe usa seis. Para cada entrada de plural, o tradutor recebe as formas do idioma de destino com números de exemplo ("forma 1: 2, 3, 4, 22") e escreve uma string por forma. Se o seu .po já tem um cabeçalho Plural-Forms para o mesmo idioma, essa regra é usada.
Entradas marcadas como fuzzy são traduzidas de novo; a flag fuzzy e as linhas antigas #| msgid são removidas, e outras flags, como php-format, são mantidas. Entradas obsoletas #~ não são tocadas.
Como a ferramenta funciona, quanto custa e como seus arquivos são tratados está na página Tradutor de arquivos de localização; os preços de todas as ferramentas estão na página de preços.
Última atualização:
Perguntas e respostas
Isso vai sobrescrever as traduções que já tenho?
Não. Entradas que já têm um msgstr e não são fuzzy são mantidas exatamente como estão; só as entradas vazias e fuzzy são traduzidas.
Ele gera um arquivo .mo?
Não, você recebe o .po. Compile com msgfmt, Poedit ou o comando do seu framework, por exemplo wp i18n make-mo ou compilemessages no Django.
Os placeholders do printf estão seguros?
Todo %s, %d, %1$s e %(name)s do msgid precisa estar na tradução. Uma string que perde algum deles é traduzida de novo; se ainda assim falhar, o msgstr permanece como estava (vazio ou fuzzy) e a string é listada, assim o gettext usa o texto original em vez de mostrar uma string quebrada.
Quanto custa?
As primeiras strings são grátis. O arquivo inteiro, com até 5,000 strings, custa $5, em pagamento único, sem assinatura. As tarefas pequenas são a exceção: uma tarefa de até 300 strings é grátis por inteiro, downloads incluídos.