Pergunta

Eu estou procurando uma maneira culturalmente sensíveis para inserir corretamente um substantivo em uma frase ao usar o artigo apropriado (a / a). Ele poderia usar String.Format, ou possivelmente algo mais, se a forma adequada de fazer isso existe em outro lugar.

Por exemplo:

Sentence Base: "Você está olhando para um / uma {0}"

Isso deve formatar a: "Você está olhando para um ovo" "Você está olhando para uma cenoura" ou

Atualmente estou fazendo isso verificando manualmente o primeiro caractere da palavra a ser inserido e, em seguida, inserindo manualmente "a" ou "um". Mas eu estou preocupado que isso pode me limitar quando a aplicação é localizada para outros idiomas.

Existe uma prática recomendada para abordar este problema?

Resolução: Parece que o problema é complicada a ponto de que não existe um utilitário ou estrutura para resolver este problema na forma como eu originalmente formulada. Parece que a melhor solução (na minha situação) é armazenar o artigo na base de dados juntamente com o substantivo para que os tradutores podem ter o nível de controle que eles precisam. Obrigado por todas as sugestões!

Foi útil?

Solução

Além do problema observado por lc (uma hora, um chapéu) as regras gramaticais em diferentes idiomas variam amplamente. Por exemplo, muitas linguagens baseadas latino mudar artigos de substantivos com base no 'gênero' e 'número' do substantivo, que às vezes pode ser inferida a partir dos últimos caracteres da palavra, mas tem o mesmo problema como o Inglês ... há muitas exceções.

Se você está falando sobre a localização de uma interface eu iria armazenar o artigo com o substantivo para o elemento de interface em cada língua. Se você estiver processando a entrada do usuário não vejo uma maneira fácil de fazer isso.

Outras dicas

O problema é ainda em Inglês, uma vs-um não é determinado pelo arranque carta , mas a iniciar som . Você pode fazer uma boa suposição bastante em Inglês com base na letra inicial, mas há algumas exceções (por exemplo, "hora", "usuário").

A melhor coisa a fazer é ter acesso a pronúncia de uma palavra para ser capaz de escolher.

Exceto que, a próxima melhor coisa a fazer é ter uma lista de exceções comuns, então acho que o resto.


A partir Wikipedia :

A escolha de "a" ou "um" é determinado pelas regras fonético um pouco do que, por convenção, a ortografia. "Um" é empregue na fala para remover o parada glotal estranho (momentânea silenciosa pausa) que é de outra forma exigida entre "um" e uma palavra seguinte e.g. "Um raio-X" ... A seguir parágrafos são soletrando regras para "um" que pode ser usado se a regra fonética não é compreendido.

Nos dias de antigos jogos de computador de aventura de texto , uma maneira de resolver este era fazer "a", "an", "o" etc parte do nome real da coisa. Quando nestes jogos que você vê "uma caixa de correio", não há AI inteligente para determinar a "a". O nome do objeto é "uma caixa de correio". Em alguns jogos ele poderia dizer "você abre uma caixa de correio", que soa mudo, e em outros, poderia dizer "você abre a caixa de correio", o que significa que havia outro nome do objeto entrou, para ser usado em diferentes contextos grammatic. Eu sugiro que você ir por esse caminho em vez da rota que você está agora.

Outros idiomas têm problemas semelhantes, mas em diferentes contextos, por exemplo dependendo do sexo de objetos ou o número real de objetos (e algumas línguas que não só diferenciar entre um e dois objetos, mas a gramática é diferente para um, dois ou mais de dois objetos em russo).

Para usar um exemplo do idioma alemão:

O equivalente a "Você está olhando para um (n) X" seria:

"Du siehst ein X"
ou "Du siehst eine X"
ou "Du siehst einen X"

dependendo do sexo do objeto X. E o sexo de um objeto é algo que você não pode imaginar, ela está ligada ao nome do objeto apenas com base na tradição histórica.

Assim, não há nenhuma maneira simples de implementar tais distinções na maioria dos idiomas. Meu conselho seria usar sempre formulações que irão funcionar em todos os casos, por exemplo.

"Você está olhando para um objeto do tipo X"
ou "Você está olhando para um (n) X"
ou "Você está olhando para um X"

Como este é culturalmente sensível? O que você está tentando fazer única faz sentido em Inglês. Outros idiomas podem requerer completamente diferentes alterações na sentença. Alguns podem modificar o substantivo, alguns podem alterar a estrutura da frase, alguns podem reordenar as palavras e assim por diante.

O que você está tentando fazer irá quebrar quando localizada para outras línguas. Não há nenhuma maneira automática para resolver isso.

Como um exemplo simples, considere o que acontece quando você tenta escrever "o {algo}" Em Inglês, você simplesmente prefixar com a palavra com "a" e está tudo bem. Em francês, você prefixo com le, la ou les, dependendo do sexo e se é ou não é plural. Em dinamarquês, você, em vez adicionar um 'en' ou sufixo 'et'. Assim que a tabela a palavra traduz em "bord", "a mesa" se torna "Bordet". E "cadeira" (stol) torna-se "roubado".

A única maneira significativa em torno deste é dar o controle tradutor sobre o inteira sentença. Não assuma que você pode basta ligar ALGUMAS PALAVRAS cultura dependente aqui e ali.

Assim, na prática, a melhor solução pode ser a aceitar que a sua aplicação não pode ser trivialmente localizada. Talvez você pode garantir que é possível para algumas línguas principais, e para além disso, ignorar o problema. Então, se você precisa traduzir o aplicativo para a linguagem X, em algum momento no futuro, o trabalho com o tradutor para fazer as mudanças que são necessárias no código do aplicativo.

Como alternativa, você teria que abandonar completamente na tentativa de construir frases si mesmo. A única maneira de garantir que uma frase é correto é ter um tradutor escrever o toda sentença. E, claro, que causa problemas quando você quer ser capaz de trocar palavras individuais.

Há uma biblioteca chamada .NET inflector que é usado para pluralização / singularização que poderia ser reaproveitado ou estendido da mesma maneira para tal coisa a. O que você está procurando aqui é uma regra geral, que você pode ajustar com exceções ... por exemplo, palavras que começam com combinações de letras que geralmente são pronunciadas como vogais. Embora esta não seja [estritamente falando] culturalmente sensíveis, que deve começar em Inglês, pelo menos.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top