Add carriage return to string resource in WPF

后端 未结 3 518
醉话见心
醉话见心 2020-12-31 07:15

My applications store all localized text in a string resource dictionary as suggested here http://msdn.microsoft.com/en-us/library/bb295251(VS.85).aspx

             


        
相关标签:
3条回答
  • 2020-12-31 08:01

    UPDATE: updated answer - better option

    The XAML parser normalized whitespace according to the following rules.

    http://msdn.microsoft.com/en-us/library/cc189036(VS.95).aspx#whitespace

    To instruct your sys:String to preserve whitespace, apply xml:space="preserved to it:

    <sys:String x:Key="MyLocalizedString" xml:space="preserve">this&#13;&#10;is&#13;&#10;my&#13;&#10;resource</sys:String>
    
    0 讨论(0)
  • When you are entering a string resource in the resource view you can add CR/LF by hitting Shift + Enter. It will add the newline and you'll be able to see it. Retrieving the resource string and setting it as text on the text block will then yield the desired effect of reproducing the newline (or multiple newlines). In my case I wanted to simulate two paragraphs in a single text block. I didn't like the other approaches because it required the translation into another language to deal with two strings. I wanted to treat this as a single string resource so that the translator had the full context of what they were translating.

    0 讨论(0)
  • 2020-12-31 08:13

    So, it's obviously been a while but for those in my situation perhaps this will help. In my case, I had a stand-alone XML resource file where I was already using ...

    var strVal = (string)Application.Current.FindResource(key);
    return strVal;
    

    ... within my own helper class to load the resource string. So for me the simplest solution was to just insert a call to Replace as follows:

    var strVal = (string)Application.Current.FindResource(key);
    strVal = strVal.Replace(@"\n", Environment.NewLine);
    return strVal;
    

    My example from my StringResources.xaml allows me to use the escape character \n as follows....

    <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                    xmlns:system="clr-namespace:System;assembly=mscorlib">
    
        <system:String x:Key="resKeyValue1">The source field "{0}" is already mapped to the destination field "{1}".\n\n
        Do you want to additionally map the source field "{0}" to the destination field "{2}"?</system:String>
    
        ...
    </ResourceDictionary>
    
    0 讨论(0)
提交回复
热议问题