Question

Je recherche un moyen sensible à la culture d'insérer correctement un nom dans une phrase tout en utilisant l'article approprié (a / an). Il pourrait utiliser String.Format, ou éventuellement autre chose, si la manière appropriée de le faire existe ailleurs.

Par exemple:

Phrase de base: "Vous consultez un / une {0}"

.

Cela devrait être formaté comme suit: "Vous êtes en train de regarder une carotte". ou "vous êtes en train de regarder un œuf".

Je le fais actuellement en vérifiant manuellement le premier caractère du mot à insérer, puis en insérant manuellement "a". ou "an." Mais je crains que cela ne me limite lorsque l'application est localisée dans d'autres langues.

Existe-t-il une bonne pratique pour aborder ce problème?

RÉSOLUTION: Il semble que le problème soit compliqué au point qu’il n’existe pas d’utilitaire ou de cadre permettant de résoudre ce problème de la manière que j’ai énoncée à l’origine. Il semble que la meilleure solution (dans mon cas) consiste à stocker l'article dans la base de données avec le nom afin que les traducteurs puissent avoir le niveau de contrôle nécessaire. Merci pour toutes les suggestions!

Était-ce utile?

La solution

Outre le problème noté par lc (une heure, un chapeau), les règles de grammaire varient considérablement d’une langue à l’autre. Par exemple, beaucoup de langues latines changent d'articles de noms basés sur le 'genre' et le 'nombre' du nom, ce qui peut parfois être déduit des derniers caractères du mot mais pose le même problème que l'anglais ... il y a de nombreuses exceptions.

Si vous parlez de la localisation d'une interface, je stockerais l'article avec le nom de l'élément d'interface dans chaque langue. Si vous traitez une entrée utilisateur, je ne vois pas de moyen facile de le faire.

Autres conseils

Le problème est même en anglais, a-vs-an n'est pas déterminé par la lettre de départ , mais par le son de départ . Vous pouvez faire une bonne supposition en anglais en vous basant sur la lettre de départ, mais il existe quelques exceptions (par exemple, "heure", "utilisateur").

La meilleure chose à faire est d'avoir accès à la prononciation d'un mot pour pouvoir choisir.

À part cela, la meilleure chose à faire est d’avoir une liste des exceptions communes, puis de deviner le reste.

De Wikipedia :

  

Le choix de " a " ou " un " est   déterminé par des règles phonétiques plutôt   que par convention d'orthographe. " Un " est   employé dans le discours pour enlever le   arrêt glottal maladroit (momentané silencieux   pause) qui est par ailleurs nécessaire   entre " a " et un mot suivant, par exemple   "une radiographie" ... Le suivant   les paragraphes sont des règles d'orthographe pour " un "   qui peut être utilisé si la règle phonétique   n'est pas compris.

À l'époque des vieux jeux informatiques d'aventure en texte , un moyen de résoudre ce problème consistait à: faire "un", "un", "le" etc. fait partie du nom réel de la chose. Lorsque dans ces jeux, vous voyez "une boîte aux lettres", il n’ya pas d’IA intelligente pour déterminer le "a". Le nom de l'objet est "une boîte aux lettres". Dans certains jeux, cela pourrait dire "vous ouvrez une boîte aux lettres", ce qui semble stupide, et dans d'autres, il pourrait dire "vous ouvrez la boîte aux lettres", ce qui signifie qu'il y avait un autre nom de l'objet entré, à utiliser dans différents contextes grammaticaux . Je vous suggère d’utiliser cet itinéraire à la place de celui sur lequel vous vous dirigez maintenant.

D'autres langues ont des problèmes similaires mais dans des contextes différents, par exemple en fonction du genre des objets ou du nombre d'objets (et certaines langues ne différencient pas seulement un ou deux objets, mais la grammaire est différente pour un, deux ou plus de deux objets en russe).

Pour utiliser un exemple de la langue allemande:

L’équivalent de "Vous consultez un X" serait:

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

en fonction du sexe de l'objet X. Et le genre d'un objet est quelque chose que vous ne pouvez pas deviner, il est lié au nom de l'objet basé sur la tradition historique.

Il n’existe donc pas de moyen simple d’appliquer de telles distinctions dans la plupart des langues. Mon conseil serait de toujours utiliser des formulations qui fonctionneront dans tous les cas, par exemple

.

"Vous consultez un objet de type X"

ou "Vous êtes en train de regarder un X"

ou "Vous êtes en train de regarder un X"

Comment cela est-il sensible à la culture? Ce que vous essayez de faire seulement a un sens en anglais. D'autres langues peuvent nécessiter des modifications complètement différentes de la phrase. Certains peuvent modifier le nom, certains peuvent modifier la structure de la phrase, certains peuvent réorganiser les mots, etc.

Ce que vous essayez de faire va être interrompu lors de la localisation dans d'autres langues. Il n'y a pas de moyen automatique pour résoudre ce problème.

À titre d'exemple simple, considérons ce qui se passe lorsque vous essayez d'écrire "le {quelque chose}}". En anglais, il vous suffit de préfixer le mot "&"; et tout va bien. En français, vous le préfixez avec le, la ou les, selon le sexe et le pluriel ou non. En danois, vous ajoutez plutôt un suffixe "en" ou "et". Donc, là où le mot table se traduit par "bord", "la table" devient "bordet". Et " chaise " (stol) devient "volé".

La seule solution valable consiste à donner au traducteur le contrôle de la phrase entière . Ne supposez pas que vous pouvez simplement insérer quelques mots liés à la culture ici et là.

Donc, dans la pratique, la meilleure solution peut être d’accepter que votre application ne puisse pas être localisée de manière triviale. Peut-être pouvez-vous vous assurer que c'est possible pour quelques langues clés et que, sinon, ignorez le problème. Ensuite, si vous avez besoin de traduire l’application dans la langue X ultérieurement, collaborez avec le traducteur pour apporter les modifications nécessaires au code de l’application.

Sinon, vous devrez complètement renoncer à essayer de construire des phrases vous-même. Le seul moyen de s’assurer que la phrase est correcte est de demander à un traducteur d’écrire la phrase entière . Et bien sûr, cela pose des problèmes lorsque vous voulez pouvoir échanger des mots individuels.

Il existe une bibliothèque appelée inflecteur .NET qui est utilisée pour la pluralisation / singularisation et qui pourrait éventuellement être modifiée. ou étendu de la même manière pour une telle chose. Ce que vous recherchez ici est une règle générale que vous pouvez ensuite modifier avec des exceptions ... par exemple, des mots commençant par des combinaisons de lettres généralement prononcées sous forme de voyelles. Bien que cela ne [soit pas à proprement parler] sensible à la culture, vous devriez au moins commencer en anglais.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top