PC Review


Reply
Thread Tools Rate Thread

VS2005 Resource Editor - How to make new line from string resource?

 
 
Peter Hartlén
Guest
Posts: n/a
 
      30th Aug 2007
I understand that the\n and \r only means something to the C# compiler so
when retrieving a line like "Hello\r\nWorld" from a resource file (localized
form or self made resource file), it prints the text as just like it was
written.

Is there any easy way to introduce a newline (tab etc.) into a string
retrieved from a resource file? Or should I create a resource string for
each line?

Thanks,

Peter


 
Reply With Quote
 
 
 
 
Michael Nemtsev
Guest
Posts: n/a
 
      30th Aug 2007
Hello Peter,

Why not just read it into the string Properties.Resources.<your_resource>
and then add the new lines ?

---
WBR,
Michael Nemtsev [.NET/C# MVP] :: blog: http://spaces.live.com/laflour

"The greatest danger for most of us is not that our aim is too high and we
miss it, but that it is too low and we reach it" (c) Michelangelo


PH> I understand that the\n and \r only means something to the C#
PH> compiler so when retrieving a line like "Hello\r\nWorld" from a
PH> resource file (localized form or self made resource file), it prints
PH> the text as just like it was written.
PH>
PH> Is there any easy way to introduce a newline (tab etc.) into a
PH> string retrieved from a resource file? Or should I create a resource
PH> string for each line?
PH>
PH> Thanks,
PH>
PH> Peter
PH>


 
Reply With Quote
 
 
 
 
Peter Hartlen
Guest
Posts: n/a
 
      30th Aug 2007
> Why not just read it into the string Properties.Resources.<your_resource>
> and then add the new lines ?


Hmm, I'm not sure I follow...

I have a resource file with the following tag and text:
MsgHelloWorld "Hello\r\nWorld"

I then retrieve the resource with a resource manager like this:
resMan = new ResourceManager( ... )
string msg = resMan.GetString("MsgHelloWorld");
MessageBox.Show(msg);

This will print "Hello\r\nWorld", but I want it to print:
"Hello
World"

How did you mean I could solve this?

/ Peter


> PH> I understand that the\n and \r only means something to the C#
> PH> compiler so when retrieving a line like "Hello\r\nWorld" from a
> PH> resource file (localized form or self made resource file), it prints
> PH> the text as just like it was written.
> PH> PH> Is there any easy way to introduce a newline (tab etc.) into a
> PH> string retrieved from a resource file? Or should I create a resource
> PH> string for each line?
> PH> PH> Thanks,
> PH> PH> Peter
> PH>
>



 
Reply With Quote
 
Michael Nemtsev
Guest
Posts: n/a
 
      30th Aug 2007
Hello Peter,

hmmmmm, interesting.
seems that smth wrong with the text encoding. need to investigate

---
WBR,
Michael Nemtsev [.NET/C# MVP] :: blog: http://spaces.live.com/laflour

"The greatest danger for most of us is not that our aim is too high and we
miss it, but that it is too low and we reach it" (c) Michelangelo


>> Why not just read it into the string
>> Properties.Resources.<your_resource> and then add the new lines ?
>>

PH> Hmm, I'm not sure I follow...
PH>
PH> I have a resource file with the following tag and text:
PH> MsgHelloWorld "Hello\r\nWorld"
PH>
PH> I then retrieve the resource with a resource manager like this:
PH> resMan = new ResourceManager( ... )
PH> string msg = resMan.GetString("MsgHelloWorld");
PH> MessageBox.Show(msg);
PH> This will print "Hello\r\nWorld", but I want it to print:
PH> "Hello
PH> World"
PH> How did you mean I could solve this?
PH>
PH> / Peter
PH>
>> PH> I understand that the\n and \r only means something to the C#
>> PH> compiler so when retrieving a line like "Hello\r\nWorld" from a
>> PH> resource file (localized form or self made resource file), it
>> prints
>> PH> the text as just like it was written.
>> PH> PH> Is there any easy way to introduce a newline (tab etc.) into
>> a
>> PH> string retrieved from a resource file? Or should I create a
>> resource
>> PH> string for each line?
>> PH> PH> Thanks,
>> PH> PH> Peter
>> PH



 
Reply With Quote
 
Michael Nemtsev
Guest
Posts: n/a
 
      30th Aug 2007
Hello Michael,

ahh, damn, almost forgot, it's old trick.
when u read from the resources, you lost your escape sequece. u need to restore
it. changing \\r on \r

the following code fix it

string str = Properties.Resources.MsgHelloWorld;
str = str.Replace("\\n", "\n");
str = str.Replace("\\r", "\r");

---
WBR,
Michael Nemtsev [.NET/C# MVP] :: blog: http://spaces.live.com/laflour

"The greatest danger for most of us is not that our aim is too high and we
miss it, but that it is too low and we reach it" (c) Michelangelo


MN> Hello Peter,
MN>
MN> hmmmmm, interesting.
MN> seems that smth wrong with the text encoding. need to investigate
MN> ---
MN> WBR,
MN> Michael Nemtsev [.NET/C# MVP] :: blog:
MN> http://spaces.live.com/laflour
MN> "The greatest danger for most of us is not that our aim is too high
MN> and we miss it, but that it is too low and we reach it" (c)
MN> Michelangelo
MN>
>>> Why not just read it into the string
>>> Properties.Resources.<your_resource> and then add the new lines ?

PH>> Hmm, I'm not sure I follow...
PH>>
PH>> I have a resource file with the following tag and text:
PH>> MsgHelloWorld "Hello\r\nWorld"
PH>>
PH>> I then retrieve the resource with a resource manager like this:
PH>> resMan = new ResourceManager( ... )
PH>> string msg = resMan.GetString("MsgHelloWorld");
PH>> MessageBox.Show(msg);
PH>> This will print "Hello\r\nWorld", but I want it to print:
PH>> "Hello
PH>> World"
PH>> How did you mean I could solve this?
PH>> / Peter
PH>>
>>> PH> I understand that the\n and \r only means something to the C#
>>> PH> compiler so when retrieving a line like "Hello\r\nWorld" from a
>>> PH> resource file (localized form or self made resource file), it
>>> prints
>>> PH> the text as just like it was written.
>>> PH> PH> Is there any easy way to introduce a newline (tab etc.) into
>>> a
>>> PH> string retrieved from a resource file? Or should I create a
>>> resource
>>> PH> string for each line?
>>> PH> PH> Thanks,
>>> PH> PH> Peter
>>> PH



 
Reply With Quote
 
Willy Denoyette [MVP]
Guest
Posts: n/a
 
      30th Aug 2007
"Peter Hartlen" <(E-Mail Removed)> wrote in message
news:eA%(E-Mail Removed)...
>> Why not just read it into the string Properties.Resources.<your_resource>
>> and then add the new lines ?

>
> Hmm, I'm not sure I follow...
>
> I have a resource file with the following tag and text:
> MsgHelloWorld "Hello\r\nWorld"
>
> I then retrieve the resource with a resource manager like this:
> resMan = new ResourceManager( ... )
> string msg = resMan.GetString("MsgHelloWorld");
> MessageBox.Show(msg);
>
> This will print "Hello\r\nWorld", but I want it to print:
> "Hello
> World"
>
> How did you mean I could solve this?
>


MsgHelloWorld "Hello{0}World"
....

string msg = String.Format(resMan.GetString("MsgHelloWorld"),
Environment.NewLine));

Willy.



 
Reply With Quote
 
Grant Frisken
Guest
Posts: n/a
 
      31st Aug 2007
On Aug 31, 1:19 am, "Peter Hartlen" <pe...@data.se> wrote:
> > Why not just read it into the string Properties.Resources.<your_resource>
> > and then add the new lines ?

>
> Hmm, I'm not sure I follow...
>
> I have a resource file with the following tag and text:
> MsgHelloWorld "Hello\r\nWorld"
>
> I then retrieve the resource with a resource manager like this:
> resMan = new ResourceManager( ... )
> string msg = resMan.GetString("MsgHelloWorld");
> MessageBox.Show(msg);
>
> This will print "Hello\r\nWorld", but I want it to print:
> "Hello
> World"
>


You really shouldn't add the new lines programmatically - because when
you come to localize your application to another language you may want
to have the line breaks in different positions. The best way is to
include the new lines in your actual resources. You can do this in
one of two ways:

1. Open the resx file in the VS designer and use Shift+Enter when you
want want a line break. You will need to resize the row using the
grab bars to make it big enough to see multiple lines.

2. Open the resx file as code and add the line breaks directly in the
XML.

The Visual Studio Resource editor really is fairly basic and quite
irritating to use for large amounts of text when localizing so you
could also consider using a tool like our Globalizer.NET that allows
you to see and edit all your resources (for all languages) in a single
easy to edit form (see http://www.infralution.com/globalizer.html).

Regards
Grant Frisken
Infralution
www.infralution.com

Globalizer.NET - makes localizing .NET Application easy

 
Reply With Quote
 
Peter Hartlen
Guest
Posts: n/a
 
      31st Aug 2007
> ahh, damn, almost forgot, it's old trick. when u read from the resources,
> you lost your escape sequece. u need to restore it. changing \\r on \r
>
> the following code fix it
>
> string str = Properties.Resources.MsgHelloWorld;
> str = str.Replace("\\n", "\n");
> str = str.Replace("\\r", "\r");
>


Hello Michael, thanks for your reply.

Using this technique I assume you could use any "unique character set" to
represent the various escape sequences. So I could write something like this
in my resource file:

"HelloBlaBlaWorld" and then use

str = str.Replace("BlaBla","\n");

However, I'm not really fond of this solution, as it could come to a
situation where a string is "newlined" in one language and not in another
language. Also it provides a rather large amount of extra code...

Regards,

Peter


 
Reply With Quote
 
Peter Hartlén
Guest
Posts: n/a
 
      31st Aug 2007
> You really shouldn't add the new lines programmatically - because when
> you come to localize your application to another language you may want
> to have the line breaks in different positions. The best way is to
> include the new lines in your actual resources. You can do this in
> one of two ways:
>
> 1. Open the resx file in the VS designer and use Shift+Enter when you
> want want a line break. You will need to resize the row using the
> grab bars to make it big enough to see multiple lines.


Perfect! Thanks!

/ Peter


 
Reply With Quote
 
Deepankar S
Guest
Posts: n/a
 
      21st Jul 2008
Dim resReader As ResourceReader = Nothing
Dim dicEnumerator As IDictionaryEnumerator = Nothing
Dim keyValuePair As StringBuilder

resReader = New ResourceReader(path)
dicEnumerator = resReader.GetEnumerator()

While dicEnumerator.MoveNext()
'Environment.NewLine is the new line char most appropriate for the 'environment
keyValuePair.Append(dicEnumerator.Key + "=" + dicEnumerator.Value.ToString().Replace("\n", Environment.NewLine))
End While

As you can see that we have replaced \n coming as part of resource string by Environment.NewLine. Similar approach will work in C#.

Regards,
Deepankar
 
Reply With Quote
 
 
 
Reply

Thread Tools
Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
String lists resource editor for localization. Advice please Claire Microsoft C# .NET 1 3rd Mar 2007 06:22 AM
How do can I make a Resource default to Resource when scheduling? =?Utf-8?B?QVNJIElUIE1hbmFnZXI=?= Microsoft Outlook Calendar 1 3rd Apr 2006 09:52 PM
Any way to expand a string resource in another resource? =?Utf-8?B?Uml0dWFsRGF2ZQ==?= Microsoft Dot NET Framework 0 9th Dec 2005 08:17 PM
String table in resource editor full??? =?Utf-8?B?U3VzYW5uZQ==?= Microsoft VC .NET 0 28th Oct 2004 10:33 PM
can I call getString() to get a string from a separate resource file instead of embedded resource? babylon Microsoft Dot NET Framework 2 7th Oct 2003 04:13 PM


Features
 

Advertising
 

Newsgroups
 


All times are GMT +1. The time now is 01:50 PM.