Search code examples
c#formattingcoding-stylestring-formatting

How to generically format a boolean to a Yes/No string?


I would like to display Yes/No in different languages according to some boolean variable.
Is there a generic way to format it according to the locale passed to it?
If there isn't, what is the standard way to format a boolean besides boolVar ? Resources.Yes : Resources.No.
I'm guessing that boolVar.ToString(IFormatProvider) is involved.
Is my assumption correct?


Solution

  • The framework itself does not provide this for you (as far as I know). Translating true/false into yes/no does not strike me as more common than other potential translations (such as on/off, checked/unchecked, read-only/read-write or whatever).

    I imagine that the easiest way to encapsulate the behavior is to make an extension method that wraps the construct that you suggest yourself in your question:

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

    Usage:

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