363,924 Members | 2548 Browsing Online
Community for Developers & IT Professionals
Bytes IT Community

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

Peter Hartlén
P: n/a
Peter Hartlén
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


Aug 30 '07 #1
Share this Question
Share on Google+
9 Replies


Michael Nemtsev
P: n/a
Michael Nemtsev
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


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


Aug 30 '07 #2

Peter Hartlen
P: n/a
Peter Hartlen
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

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

Aug 30 '07 #3

Michael Nemtsev
P: n/a
Michael Nemtsev
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_resourceand then add the new lines ?
>>
PHHmm, I'm not sure I follow...
PH>
PHI have a resource file with the following tag and text:
PHMsgHelloWorld "Hello\r\nWorld"
PH>
PHI then retrieve the resource with a resource manager like this:
PHresMan = new ResourceManager( ... )
PHstring msg = resMan.GetString("MsgHelloWorld");
PHMessageBox.Show(msg);
PHThis will print "Hello\r\nWorld", but I want it to print:
PH"Hello
PHWorld"
PHHow did you mean I could solve this?
PH>
PH/ Peter
PH>
>PHI understand that the\n and \r only means something to the C#
>PHcompiler so when retrieving a line like "Hello\r\nWorld" from a
>PHresource file (localized form or self made resource file), it
>prints
>PHthe text as just like it was written.
>PHPHIs there any easy way to introduce a newline (tab etc.) into
>a
>PHstring retrieved from a resource file? Or should I create a
>resource
>PHstring for each line?
>PHPHThanks,
>PHPHPeter
>PH>

Aug 30 '07 #4

Michael Nemtsev
P: n/a
Michael Nemtsev
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


MNHello Peter,
MN>
MNhmmmmm, interesting.
MNseems that smth wrong with the text encoding. need to investigate
MN---
MNWBR,
MNMichael Nemtsev [.NET/C# MVP] :: blog:
MNhttp://spaces.live.com/laflour
MN"The greatest danger for most of us is not that our aim is too high
MNand we miss it, but that it is too low and we reach it" (c)
MNMichelangelo
MN>
>>Why not just read it into the string
>>Properties.Resources.<your_resourceand 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>>
>>PHI understand that the\n and \r only means something to the C#
>>PHcompiler so when retrieving a line like "Hello\r\nWorld" from a
>>PHresource file (localized form or self made resource file), it
>>prints
>>PHthe text as just like it was written.
>>PHPHIs there any easy way to introduce a newline (tab etc.) into
>>a
>>PHstring retrieved from a resource file? Or should I create a
>>resource
>>PHstring for each line?
>>PHPHThanks,
>>PHPHPeter
>>PH>

Aug 30 '07 #5

Willy Denoyette [MVP]
P: n/a
Willy Denoyette [MVP]
"Peter Hartlen" <peter@data.sewrote in message
news:eA%239mkx6HHA.2208@TK2MSFTNGP06.phx.gbl...
>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.



Aug 30 '07 #6

Grant Frisken
P: n/a
Grant Frisken
On Aug 31, 1:19 am, "Peter Hartlen" <pe...@data.sewrote:
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

Aug 31 '07 #7

Peter Hartlen
P: n/a
Peter Hartlen
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


Aug 31 '07 #8

Peter Hartlén
P: n/a
Peter Hartlén
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


Aug 31 '07 #9

Deepankar S
P: n/a
Deepankar S
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
Jul 21 '08 #10

Post your reply

Help answer this question



Didn't find the answer to your C# / C Sharp question?

You can also browse similar questions: C# / C Sharp