Comment formater génériquement un booléen en une chaîne Oui / Non?

Je voudrais afficher Oui / Non dans différentes langues en fonction d’une variable booléenne.
Existe-t-il un moyen générique de le formater en fonction des parameters régionaux transmis?
S’il n’y en a pas, quel est le moyen standard de formater un booléen en plus de boolVar ? Resources.Yes : Resources.No boolVar ? Resources.Yes : Resources.No .
Je suppose que boolVar.ToSsortingng(IFormatProvider) est impliqué.
Est-ce que mon hypothèse est correcte?

Le cadre lui-même ne le fournit pas (pour autant que je sache). Traduire true/false en yes/no ne me semble pas plus commun que d’autres traductions potentielles (telles que on/off , checked/unchecked , read-only/read-write ou autre).

J’imagine que le moyen le plus simple d’encapsuler le comportement est de créer une méthode d’extension qui enveloppe la construction que vous vous proposez dans votre question:

 public static class BooleanExtensions { public static ssortingng ToYesNoSsortingng(this bool value) { return value ? Resources.Yes : Resources.No; } } 

Usage:

 bool someValue = GetSomeValue(); Console.WriteLine(someValue.ToYesNoSsortingng()); 

Comme l’indiquent les autres réponses, le framework n’autorise pas les valeurs booléennes à avoir des formateurs personnalisés. Cependant, cela permet aux numéros d’avoir des formats personnalisés. La méthode GetHashCode du booléen renverra 1 pour true et 0 pour false.

Selon les chaînes de format numérique personnalisées MSDN , lorsqu’il y a 3 sections de “;” le format spécifié sera appliqué aux “nombres positifs; nombres négatifs; zéro”.

La méthode GetHashCode peut être appelée sur la valeur bool pour renvoyer un nombre afin que vous puissiez utiliser la chaîne de format numérique personnalisée pour renvoyer Yes / No ou On / Off ou tout autre ensemble de mots requirejs par la situation.

Voici un échantillon qui retourne on / off:

 var truth = ssortingng.Format("{0:on;0;OFF}", true.GetHashCode()); var unTruth = ssortingng.Format("{0:on;0;OFF}", false.GetHashCode()); 

résultats:

 truth = on unTruth = OFF 

Malheureusement, Boolean.ToSsortingng (IFormatProvider) n’aide pas ici:

Le paramètre provider est réservé. Il ne participe pas à l’exécution de cette méthode. Cela signifie que la méthode Boolean.ToSsortingng (IFormatProvider), contrairement à la plupart des méthodes avec un paramètre fournisseur , ne reflète pas les parameters spécifiques à la culture.

Dans tous les cas, les booléens représentent Vrai et Faux, pas Oui et Non. Si vous souhaitez mapper Vrai -> Oui et Faux -> Non, vous devrez le faire vous-même (y compris la localisation); il n’y a pas de support intégré dans le cadre pour cela. Votre solution proposée (Resources.Yes / No) me convient parfaitement.