- Localização assimétrica: busca traduções naturais usando gênero/maiúsculas e minúsculas apenas quando necessário. A expressividade não fica limitada pela gramática do idioma de origem
- Aprimoramento progressivo: cada tradução é gerenciada de forma independente e não afeta outros locais. É possível melhorar iterativamente as traduções sem impactar outros idiomas
- Vários recursos: formatação de data, hora e números. Categorias de plural. Suporte bidirecional. Formatação personalizada. Sintaxe legível. Tradução e retradução em tempo de execução. Tratamento robusto de erros
- Open source sob licença Apache. Implementações de servidor disponíveis em JS, Python e Rust, além de bindings para React
Por que o Fluent foi criado
- A localização de software tem sido dominada por um paradigma ultrapassado de tradução como mapeamento um a um da cópia em inglês
- A gramática do idioma de origem limita a expressividade da tradução
- O Fluent foi criado para mudar esse paradigma
- Tradutores devem poder usar todo o potencial expressivo do idioma sem precisar pedir permissão aos desenvolvedores
- No Fluent, a tradução é assimétrica. Uma string simples em inglês pode ser mapeada para uma tradução complexa com múltiplas variantes em outro idioma
- Com o Fluent, é possível atender à gramática e ao estilo de vários idiomas independentemente do idioma de origem
- É independente
- O fato de um idioma aproveitar os benefícios de uma lógica avançada não exige que outras localizações também a adotem
- Cada localização controla individualmente o nível de complexidade das suas traduções
4 comentários
Nossa, é bem impressionante ver isso saindo do antigo paradigma de correspondência 1:1.
Versão degradada do gettext exclusiva para JavaScript.
https://github.com/projectfluent/fluent/wiki/Fluent-vs-gettext
Se você colocar nesses termos, está tratando este projeto de forma leve demais.
A resposta foi tão sem capricho(?) que talvez dê para entender por que você viu dessa forma. Vou tentar escrever com mais cuidado.
A tabela comparativa, de qualquer forma, acaba sendo definida por quem é o objeto da comparação, então não tem muito significado,
O motivo de eu ter sentido que era uma versão inferior é... que me passou a impressão de não respeitar o know-how acumulado no
gettextao longo de muitos anos por muita gente.Foi dito que o
gettextsó funciona com C, mas entre as linguagens principais, qual não oferece suporte agettext?Disseram que usaram parâmetros baseados em chave para levar em conta o problema da ordem das palavras, mas nem toda linguagem tem dicionário embutido como padrão; nessas linguagens, passa a ser necessário algum recurso adicional (por exemplo, em Java algo como
Map). Ogettexté baseado em posição, mas também leva em conta a mudança da ordem das palavras.Enfim, escrevi um monte,
mas, na verdade... o motivo de eu não ter gostado desde o começo foi porque era
{$...}e não${...}^^Pessoalmente, gosto muito de "reinventar a roda", mas sair alardeando isso como se tivesse inventado uma roda que nunca existiu no mundo não me parece muito bom.