Fluent 1.0: sistema de localização flexível



Fluent é uma família de especificações, implementações e práticas para localização desenvolvidas pela Mozilla. Agora ele é usado no navegador Firefox. Usando o Fluent, os tradutores podem escrever traduções mais naturais em seu idioma nativo. Hoje estamos introduzindo a especificação do formato de arquivo da versão 1.0 do Fluent. Convidamos desenvolvedores de ferramentas de tradução para experimentá-lo e contar sobre suas impressões.


Quais problemas o Fluent resolve?


O navegador Firefox suporta cerca de cem idiomas e desafia os desenvolvedores em termos de localização. Muitos problemas são difíceis de resolver usando abordagens tradicionais. A localização do software é dominada pelo princípio de marcar traduções um a um com o texto de origem. A gramática do idioma de origem (no caso do Mozilla - inglês) impõe sérias restrições à disponibilidade de meios expressivos na tradução.


Considere a seguinte mensagem que aparece quando um usuário tenta fechar uma janela do Firefox com várias guias.


tabs-close-warning-multiple = You are about to close {$count} tabs. Are you sure you want to continue? 

Uma mensagem é exibida apenas se houver 2 ou mais guias. Em inglês, a palavra tab estará sempre nas guias do plural. Um desenvolvedor que fala inglês ficará satisfeito com essa mensagem. Parece correto para qualquer valor de $ count.

fluent_en

Em inglês, para todos os valores de $ count, uma variante da mensagem é suficiente.


Muitos tradutores perceberão que a guia palavra pode assumir diferentes formas, dependendo do valor de $ count.


Na abordagem tradicional da localização, a responsabilidade pelo processamento correto da mensagem ficará com os tradutores. Eles devem levar em conta que em outros idiomas pode haver várias formas múltiplas da palavra, mesmo que em inglês seja apenas uma. Quanto mais idiomas o aplicativo suportar, mais sério o problema se tornará.


  • Em algumas línguas, os substantivos têm um gênero, o que exigirá alterações em adjetivos e particípios. Em francês, as palavras connecté, connectée, connectés e connectées são traduzidas para o inglês como conectado.
  • O guia de estilo pode exigir o uso de certos termos, dependendo da plataforma na qual o software é executado. Na versão em inglês do Firefox, por exemplo, o Settings é usado na plataforma Windows e o Preferences em outros sistemas, a fim de cumprir os padrões adotados nesses sistemas. Em japonês, a diferença pode ser ainda mais interessante: a escolha de um sistema de escrita para alguns termos de computador depende do sistema operacional.
  • O contexto e o público-alvo do aplicativo podem exigir modificações adicionais no texto. Um aplicativo em inglês para trabalhar com contabilidade pode usar a formatação de números diferentes dos usados ​​em sites regulares da Internet. Mas em outros idiomas, essa separação pode não ser necessária.

Existem muitas variações gramaticais e estilísticas que não podem ser diretamente correlacionadas entre os dois idiomas. Apoiar todas essas nuances usando a abordagem tradicional pode ser difícil. Em alguns idiomas você precisa se comprometer; em outros, não haverá solução adequada.


Localização assimétrica


Fluente altera a distribuição de funções na localização. Em vez de exigir que os desenvolvedores considerem todas as nuances possíveis de todos os idiomas, o Fluent tenta manter os textos no idioma de origem da forma mais simples possível.


Tornamos possível transmitir a gramática e o estilo de outros idiomas, independentemente do texto de origem. Tudo acontece isoladamente. O fato de um idioma poder usar lógica mais avançada na localização não afeta outros idiomas de tradução. Cada localização no próprio programa decide quão complexo o texto da tradução deve ser.


Por exemplo, vejamos a tradução de uma mensagem sobre como fechar guias em tcheco. O painel de palavras (guia) deve ter uma das duas formas: panly para o número de guias 2, 3 e 4 e panelů para todos os outros valores.


 tabs-close-warning-multiple = {$count -> [few] Chystáte se zavřít {$count} panely. Opravdu chcete pokračovat? *[other] Chystáte se zavřít {$count} panelů. Opravdu chcete pokračovat? } 

Fluente oferece aos tradutores a capacidade de escrever frases gramaticalmente corretas e usar livremente os meios expressivos de seu idioma. Graças ao Fluent, a tradução tcheca usa as formas plurais corretas para quaisquer possíveis valores de $ count.

fluent_cz Em tcheco, com valores de $ count de 2, 3 e 4, o substantivo requer uma forma plural especial.

Ao mesmo tempo, nenhuma alteração é necessária no código-fonte ou no código. A lógica na localização tcheca não afeta todas as outras localizações do programa. Em francês, esta frase será tão simples quanto o inglês:



 tabs-close-warning-multiple = Vous êtes sur le point de fermer {$count} onglets. Voulez-vous vraiment continuer ? 

O conceito de localização assimétrica é uma inovação chave da Fluent, possibilitada pela experiência da Mozilla no desenvolvimento de software multilíngue por mais de 20 anos. Muitas idéias importantes para o Fluent foram emprestadas do MessageFormat do ICU (International Component for Unicode) e do formato XLIFF .


À primeira vista, o Fluent é como outras soluções de localização que permitem usar variantes de palavras para vários substantivos e palavras com um gênero gramatical. Por outro lado, o Fluent adota uma abordagem holística da localização. Fluent desenvolve essas idéias, definindo a sintaxe para todo o arquivo de texto em que as traduções são armazenadas e permitindo links de uma mensagem para outra.


Termos e links


Um arquivo Fluente pode conter muitas mensagens, cada uma traduzida para o idioma do tradutor. As mensagens podem se referir a outras mensagens dentro do mesmo arquivo ou a mensagens de outros arquivos. No tempo de execução, o Fluent mescla arquivos em pacotes e os links são resolvidos dentro desse conjunto.


O link para postagens é uma ferramenta poderosa para manter traduções consistentes. Uma vez que uma determinada tradução pode ser reutilizada em outras traduções. O Fluent suporta um tipo especial de mensagem chamado termo, adequado para reutilização. O termo identificador sempre começa com um traço.



 -sync-brand-name =  Firefox 

Uma vez definido, o termo -sync-brand-name pode ser usado em outras mensagens como uma variável, sempre retornando o texto correto. Os termos ajudam a introduzir uniformidade de acordo com as diretrizes de estilo. Por exemplo, eles podem ser modificados para marcar especificamente compilações não oficiais ou versões beta.


 sync-dialog-title = {-sync-brand-name} sync-headline-title = {-sync-brand-name}: The best way to bring your data always with you sync-signedout-account-title =    {-sync-brand-name} 

O uso do termo diretamente no meio de uma frase pode causar problemas em idiomas flexíveis ou em idiomas com outras regras de uso de maiúsculas e minúsculas. O significado do termo pode ser definido em vários aspectos, dependendo do contexto. Considere a seguinte definição do termo -sync-brand-name em italiano.


 -sync-brand-name = {$capitalization -> *[uppercase] Account Firefox [lowercase] account Firefox } 

Devido à natureza assimétrica do Fluent, um tradutor italiano pode definir duas formas de escrever uma marca. A variante maiúscula (padrão) é adequada para uso independente ou no início de uma frase. Uma opção em minúscula pode ser solicitada passando um parâmetro de maiúscula quando o termo é usado dentro de uma frase grande.


 sync-dialog-title = {-sync-brand-name} sync-headline-title = {-sync-brand-name}: il modo migliore per avere i tuoi dati sempre con te #      . sync-signedout-account-title = Connetti il tuo {-sync-brand-name(capitalization: "lowercase")} 

A definição de várias variantes do termo é uma técnica conveniente que permite cumprir as regras gramaticais de muitos idiomas. No exemplo a seguir, o tradutor de polonês pode usar as declinações para criar a sentença correta na mensagem de sincronização com logoff de conta.


 -sync-brand-name = {$case -> *[nominative] Konto Firefox [genitive] Konta Firefox [accusative] Kontem Firefox } sync-signedout-account-title = Zaloguj do {-sync-brand-name(case: "genitive")} 

Fluent permite incorporar lógica complexa de construção de linguagem onde você precisar. Ao mesmo tempo, a simples tradução permanece simples. O Fluent não adiciona implementações complexas a projetos simples.


 sync-signedout-caption = Take Your Web With You sync-signedout-caption = Il tuo Web, sempre con te sync-signedout-caption = Zabierz swoją sieć ze sobą sync-signedout-caption = So haben Sie das Web überall dabei. 

Sintaxe fluente


Hoje anunciamos o primeiro lançamento estável da Fluent Syntax. Esta é uma especificação do formato de arquivo para armazenar traduções, bem como uma versão beta de analisadores para JavaScript, Python e Rust.


Nos exemplos acima, você viu o que é a sintaxe do Fluent. Foi criado para ser compreensível para pessoas com pouco conhecimento técnico e permite verificar e editar texto com um número mínimo de erros. A recuperação de erros é um ponto importante: uma tradução incorreta não interromperá o arquivo inteiro ou as traduções adjacentes a ele. Os comentários são úteis para transmitir o contexto de uma mensagem específica ou de um grupo inteiro. As traduções podem ter várias linhas, o que facilita o trabalho e a marcação de grandes fragmentos de texto.


Arquivos fluentes podem ser abertos em qualquer editor de texto, o que reduz o limite de entrada para desenvolvedores e localizadores. O formato já é suportado pela plataforma de tradução de software Pontoon da Mozilla, de código aberto.

fluent_playground O Fluent Playground é uma sandbox para testar o Fluent diretamente no navegador.

Para detalhes da sintaxe, consulte o Fluent Syntax Guide . Uma definição formal pode ser encontrada na especificação Fluent Syntax . E se você quiser experimentar o Fluent, use o Fluent Playground , um editor on-line com trechos para compartilhar.


Comentários


O Firefox é um fator importante no desenvolvimento do Fluent. O Firefox já usa mais de 3.000 posts fluentes . A migração para o Fluent começou no ano passado e agora está em pleno andamento. O formato Fluent provou ser uma solução estável e flexível para interfaces complexas, como a página de configurações do Firefox. Também é usado em muitas páginas da Mozilla, como Firefox Send e Common Voice .


Acreditamos que o Fluent é uma excelente opção para aplicações em que a simplicidade e a velocidade são importantes, mas ao mesmo tempo exigem a exibição dos elementos da interface, dependendo de muitas variáveis. Em particular, o Fluent ajuda a criar frases naturais em diferentes idiomas em um espaço limitado de interfaces móveis; em plataformas de mídia social ricas em informação; e em jogos para transmitir estatísticas do jogo e explicar mecânica ao jogador.


Gostaríamos muito de ouvir de desenvolvedores ou fornecedores fluentes. Como o Fluent está sendo desenvolvido como um padrão do futuro, convidamos todos a experimentá-lo e nos contar quais outros problemas você enfrenta no seu trabalho. Com sua ajuda, poderemos melhorar o Fluent para trabalhar em muitas plataformas e em muitas situações.


Estamos abertos a críticas construtivas. Saiba mais sobre o Fluent no site do projeto . Se você tem uma história para contar, entre em contato conosco no Discurso Fluente .



De um tradutor: documentação de sintaxe em russo .

Source: https://habr.com/ru/post/pt448944/


All Articles