By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
454,783 Members | 1,347 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 454,783 IT Pros & Developers. It's quick & easy.

Get Culture Info from Language Name

P: n/a
hi guys,
right now i'm going through System.Globalization Namespace. and i
found very intersting class there called CultureInfo.

i was trying to get cultureInfo on the basis of name but i didnt find
the way to do it. for example, if i pass the language name
"Danish","German",Russian", i'm suppose to get the cultureInfo object
of the language.

can anyone help me out here?
i would appriciate any help.

thanks,
Lucky

Jan 31 '07 #1
Share this Question
Share on Google+
12 Replies


P: n/a
On Jan 31, 11:29 am, "lucky" <tushar.n.pa...@gmail.comwrote:
hi guys,
right now i'm going through System.Globalization Namespace. and i
found very intersting class there called CultureInfo.

i was trying to get cultureInfo on the basis of name but i didnt find
the way to do it. for example, if i pass the language name
"Danish","German",Russian", i'm suppose to get the cultureInfo object
of the language.

can anyone help me out here?
i would appriciate any help.

thanks,
Lucky
Lucky,

My implementation through asp.net works like so;
if (Request.UserLanguages != null)
{
if (Request.UserLanguages.Length 0)
{
Lang = Request.UserLanguages[0]; // just use the first entry
for now
ci = CultureInfo.CreateSpecificCulture(Lang);
}
else
ci = CultureInfo.CreateSpecificCulture("en-gb");
}
else
ci = CultureInfo.CreateSpecificCulture("en-gb");

Not sure if this is what your after, but hopefully it'll help.

Jan 31 '07 #2

P: n/a
You need to pass the culture name, i.e. "da-DK", "de-DE" or "ru-RU". The
following link shows the complete list:
http://msdn2.microsoft.com/en-us/lib...ltureinfo.aspx

Regards, Jakob.
--
http://www.dotninjas.dk

"lucky" wrote:
hi guys,
right now i'm going through System.Globalization Namespace. and i
found very intersting class there called CultureInfo.

i was trying to get cultureInfo on the basis of name but i didnt find
the way to do it. for example, if i pass the language name
"Danish","German",Russian", i'm suppose to get the cultureInfo object
of the language.

can anyone help me out here?
i would appriciate any help.

thanks,
Lucky

Jan 31 '07 #3

P: n/a
Hi,

"NL-nl" Holland
"NL-be" Belgium
"EN-uk" Greath Brittain

is this what you mean?

Cor

"lucky" <tu************@gmail.comschreef in bericht
news:11*********************@a75g2000cwd.googlegro ups.com...
hi guys,
right now i'm going through System.Globalization Namespace. and i
found very intersting class there called CultureInfo.

i was trying to get cultureInfo on the basis of name but i didnt find
the way to do it. for example, if i pass the language name
"Danish","German",Russian", i'm suppose to get the cultureInfo object
of the language.

can anyone help me out here?
i would appriciate any help.

thanks,
Lucky

Jan 31 '07 #4

P: n/a
On 31 Jan 2007 03:29:07 -0800, "lucky" <tu************@gmail.com>
wrote:
>hi guys,
right now i'm going through System.Globalization Namespace. and i
found very intersting class there called CultureInfo.

i was trying to get cultureInfo on the basis of name but i didnt find
the way to do it. for example, if i pass the language name
"Danish","German",Russian", i'm suppose to get the cultureInfo object
of the language.

can anyone help me out here?
i would appriciate any help.

thanks,
Lucky
There is a full set of "Culture Names and Identifiers" in .NET, they
are shown if you search the internal Help for the CultureInfo class.

"The culture names follow the RFC 1766 standard in the format
"<languagecode2>-<country/regioncode2>", where <languagecode2is a
lowercase two-letter code derived from ISO 639-1 and
<country/regioncode2is an uppercase two-letter code derived from ISO
3166. For example, U.S. English is "en-US". In cases where a
two-letter language code is not available, the three-letter code
derived from ISO 639-2 is used; for example, the three-letter code
"div" is used for cultures that use the Dhivehi language. Some culture
names have suffixes that specify the script; for example, "-Cyrl"
specifies the Cyrillic script, "-Latn" specifies the Latin script."

Remember that what you program sees initially might not be "German"
but "Deutsch" and that "Russian" could well be in Cyrillic characters.
In general this is not a simple problem.

rossum

Jan 31 '07 #5

P: n/a

"lucky" <tu************@gmail.comwrote in message
news:11*********************@a75g2000cwd.googlegro ups.com...
hi guys,
right now i'm going through System.Globalization Namespace. and i
found very intersting class there called CultureInfo.

i was trying to get cultureInfo on the basis of name but i didnt find
the way to do it. for example, if i pass the language name
"Danish","German",Russian", i'm suppose to get the cultureInfo object
of the language.
foreach ( CultureInfo ci in
CultureInfo.GetCultures(CultureTypes.NeutralCultur es) ) {

if (ci.EnglishName == "Danish") {

....

}

}
Jan 31 '07 #6

P: n/a
Or, you could simply use these :

CultureInfo.CurrentCulture.EnglishName
CultureInfo.CurrentCulture.DisplayName
CultureInfo.CurrentCulture.NativeName


Juan T. Llibre, asp.net MVP
asp.net faq : http://asp.net.do/faq/
foros de asp.net, en español : http://asp.net.do/foros/
===================================
"Jakob Christensen" <Ja**************@discussions.microsoft.comwrote in message
news:4F**********************************@microsof t.com...
You need to pass the culture name, i.e. "da-DK", "de-DE" or "ru-RU". The
following link shows the complete list:
http://msdn2.microsoft.com/en-us/lib...ltureinfo.aspx

Regards, Jakob.
--
http://www.dotninjas.dk

"lucky" wrote:
>hi guys,
right now i'm going through System.Globalization Namespace. and i
found very intersting class there called CultureInfo.

i was trying to get cultureInfo on the basis of name but i didnt find
the way to do it. for example, if i pass the language name
"Danish","German",Russian", i'm suppose to get the cultureInfo object
of the language.

can anyone help me out here?
i would appriciate any help.

thanks,
Lucky


Jan 31 '07 #7

P: n/a
The OP wants to create a new CultureInfo from EnglishName which can not be
done easily. I do not think that CurrentCulture is of much use here.

:-) Jakob.

"Juan T. Llibre" wrote:
Or, you could simply use these :

CultureInfo.CurrentCulture.EnglishName
CultureInfo.CurrentCulture.DisplayName
CultureInfo.CurrentCulture.NativeName


Juan T. Llibre, asp.net MVP
asp.net faq : http://asp.net.do/faq/
foros de asp.net, en español : http://asp.net.do/foros/
===================================
"Jakob Christensen" <Ja**************@discussions.microsoft.comwrote in message
news:4F**********************************@microsof t.com...
You need to pass the culture name, i.e. "da-DK", "de-DE" or "ru-RU". The
following link shows the complete list:
http://msdn2.microsoft.com/en-us/lib...ltureinfo.aspx

Regards, Jakob.
--
http://www.dotninjas.dk

"lucky" wrote:
hi guys,
right now i'm going through System.Globalization Namespace. and i
found very intersting class there called CultureInfo.

i was trying to get cultureInfo on the basis of name but i didnt find
the way to do it. for example, if i pass the language name
"Danish","German",Russian", i'm suppose to get the cultureInfo object
of the language.

can anyone help me out here?
i would appriciate any help.

thanks,
Lucky



Jan 31 '07 #8

P: n/a
re:
create a new CultureInfo from EnglishName which can not be done easily
Aw, that's not so hard to do :

http://asp.net.do/test/culture3.aspx

Juan T. Llibre, asp.net MVP
asp.net faq : http://asp.net.do/faq/
foros de asp.net, en español : http://asp.net.do/foros/
===================================
"Jakob Christensen" <Ja**************@discussions.microsoft.comwrote in message
news:5A**********************************@microsof t.com...
The OP wants to create a new CultureInfo from EnglishName which can not be
done easily. I do not think that CurrentCulture is of much use here.

:-) Jakob.

"Juan T. Llibre" wrote:
>Or, you could simply use these :

CultureInfo.CurrentCulture.EnglishName
CultureInfo.CurrentCulture.DisplayName
CultureInfo.CurrentCulture.NativeName


Juan T. Llibre, asp.net MVP
asp.net faq : http://asp.net.do/faq/
foros de asp.net, en español : http://asp.net.do/foros/
===================================
"Jakob Christensen" <Ja**************@discussions.microsoft.comwrote in message
news:4F**********************************@microso ft.com...
You need to pass the culture name, i.e. "da-DK", "de-DE" or "ru-RU". The
following link shows the complete list:
http://msdn2.microsoft.com/en-us/lib...ltureinfo.aspx

Regards, Jakob.
--
http://www.dotninjas.dk

"lucky" wrote:

hi guys,
right now i'm going through System.Globalization Namespace. and i
found very intersting class there called CultureInfo.

i was trying to get cultureInfo on the basis of name but i didnt find
the way to do it. for example, if i pass the language name
"Danish","German",Russian", i'm suppose to get the cultureInfo object
of the language.

can anyone help me out here?
i would appriciate any help.

thanks,
Lucky




Jan 31 '07 #9

P: n/a
Excellent. You might want to post the code here for the OP to see?

:-) Jakob.
"Juan T. Llibre" wrote:
re:
create a new CultureInfo from EnglishName which can not be done easily

Aw, that's not so hard to do :

http://asp.net.do/test/culture3.aspx

Juan T. Llibre, asp.net MVP
asp.net faq : http://asp.net.do/faq/
foros de asp.net, en español : http://asp.net.do/foros/
===================================
"Jakob Christensen" <Ja**************@discussions.microsoft.comwrote in message
news:5A**********************************@microsof t.com...
The OP wants to create a new CultureInfo from EnglishName which can not be
done easily. I do not think that CurrentCulture is of much use here.

:-) Jakob.

"Juan T. Llibre" wrote:
Or, you could simply use these :

CultureInfo.CurrentCulture.EnglishName
CultureInfo.CurrentCulture.DisplayName
CultureInfo.CurrentCulture.NativeName


Juan T. Llibre, asp.net MVP
asp.net faq : http://asp.net.do/faq/
foros de asp.net, en español : http://asp.net.do/foros/
===================================
"Jakob Christensen" <Ja**************@discussions.microsoft.comwrote in message
news:4F**********************************@microsof t.com...
You need to pass the culture name, i.e. "da-DK", "de-DE" or "ru-RU". The
following link shows the complete list:
http://msdn2.microsoft.com/en-us/lib...ltureinfo.aspx

Regards, Jakob.
--
http://www.dotninjas.dk

"lucky" wrote:

hi guys,
right now i'm going through System.Globalization Namespace. and i
found very intersting class there called CultureInfo.

i was trying to get cultureInfo on the basis of name but i didnt find
the way to do it. for example, if i pass the language name
"Danish","German",Russian", i'm suppose to get the cultureInfo object
of the language.

can anyone help me out here?
i would appriciate any help.

thanks,
Lucky




Jan 31 '07 #10

P: n/a
re:
You might want to post the code here for the OP to see?
Why not?

If I had a nickel for every line of code I've given away for free here
....well, you know how the rest of that goes. :-)

Here's the crux...and the trick.

<%@ Page Language="VB" uiculture="auto" %>
<%@ Import Namespace="System.Threading" %>
<%@ Import Namespace="System.Globalization" %>

<script runat="server">
Protected Overrides Sub InitializeCulture()
If Request.Form("ListBox1") IsNot Nothing Then
Dim selectedLanguage As String = Request.Form("ListBox1")
UICulture = Request.Form("ListBox1")
Culture = Request.Form("ListBox1")
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(selectedLanguage )
Thread.CurrentThread.CurrentUICulture = New CultureInfo(selectedLanguage)
End If
MyBase.InitializeCulture()
End Sub
</script>

<form id="form1" runat="server">
<div>
<asp:ListBox ID="ListBox1" runat="server">
<asp:ListItem Value="en-US" Selected="True">English</asp:ListItem>
<asp:ListItem Value="es-MX">Español</asp:ListItem>
<asp:ListItem Value="de-DE">Deutsch</asp:ListItem>
</asp:ListBox><br />
<asp:Button ID="Button1" runat="server"
Text="Set Language"
meta:resourcekey="Button1" />
<br />
</div>

The trick, as should be obvious by now, is that you don't *need* to pass the EnglishName.

The value that we *do* pass is CultureInfo.CurrentCulture.Name,
but we *display* whatever name we want to display to the user.

That way, it's transparent to the user *and* easy to program as well.

One of the most difficult concepts to grasp in programming
is that we should not attempt to lock a route to the desired result.

As long as we get where we want to get to, any route is OK.

Some routes are impossible and some are a waste,
but getting to where we want to get, with the least effort expended, is what counts.


Juan T. Llibre, asp.net MVP
asp.net faq : http://asp.net.do/faq/
foros de asp.net, en español : http://asp.net.do/foros/
===================================
"Jakob Christensen" <Ja**************@discussions.microsoft.comwrote in message
news:4D**********************************@microsof t.com...
Excellent. You might want to post the code here for the OP to see?

:-) Jakob.
"Juan T. Llibre" wrote:
>re:
create a new CultureInfo from EnglishName which can not be done easily

Aw, that's not so hard to do :

http://asp.net.do/test/culture3.aspx

Juan T. Llibre, asp.net MVP
asp.net faq : http://asp.net.do/faq/
foros de asp.net, en español : http://asp.net.do/foros/
===================================
"Jakob Christensen" <Ja**************@discussions.microsoft.comwrote in message
news:5A**********************************@microso ft.com...
The OP wants to create a new CultureInfo from EnglishName which can not be
done easily. I do not think that CurrentCulture is of much use here.

:-) Jakob.

"Juan T. Llibre" wrote:

Or, you could simply use these :

CultureInfo.CurrentCulture.EnglishName
CultureInfo.CurrentCulture.DisplayName
CultureInfo.CurrentCulture.NativeName


Juan T. Llibre, asp.net MVP
asp.net faq : http://asp.net.do/faq/
foros de asp.net, en español : http://asp.net.do/foros/
===================================
"Jakob Christensen" <Ja**************@discussions.microsoft.comwrote in message
news:4F**********************************@microso ft.com...
You need to pass the culture name, i.e. "da-DK", "de-DE" or "ru-RU". The
following link shows the complete list:
http://msdn2.microsoft.com/en-us/lib...ltureinfo.aspx

Regards, Jakob.
--
http://www.dotninjas.dk

"lucky" wrote:

hi guys,
right now i'm going through System.Globalization Namespace. and i
found very intersting class there called CultureInfo.

i was trying to get cultureInfo on the basis of name but i didnt find
the way to do it. for example, if i pass the language name
"Danish","German",Russian", i'm suppose to get the cultureInfo object
of the language.

can anyone help me out here?
i would appriciate any help.

thanks,
Lucky






Jan 31 '07 #11

P: n/a
Aaah, but you still have not solved Lucky's problem (the OP). You are just
using the culture name (i.e. "en-US" etc.) as I suggested in my first reply
to the OP. Lucky wants to create the CultureInfo directly from the string
"Danish" or "Russian". Nobody says that he can do what you did.

:-) Jakob.

"Juan T. Llibre" wrote:
re:
You might want to post the code here for the OP to see?

Why not?

If I had a nickel for every line of code I've given away for free here
....well, you know how the rest of that goes. :-)

Here's the crux...and the trick.

<%@ Page Language="VB" uiculture="auto" %>
<%@ Import Namespace="System.Threading" %>
<%@ Import Namespace="System.Globalization" %>

<script runat="server">
Protected Overrides Sub InitializeCulture()
If Request.Form("ListBox1") IsNot Nothing Then
Dim selectedLanguage As String = Request.Form("ListBox1")
UICulture = Request.Form("ListBox1")
Culture = Request.Form("ListBox1")
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(selectedLanguage )
Thread.CurrentThread.CurrentUICulture = New CultureInfo(selectedLanguage)
End If
MyBase.InitializeCulture()
End Sub
</script>

<form id="form1" runat="server">
<div>
<asp:ListBox ID="ListBox1" runat="server">
<asp:ListItem Value="en-US" Selected="True">English</asp:ListItem>
<asp:ListItem Value="es-MX">Español</asp:ListItem>
<asp:ListItem Value="de-DE">Deutsch</asp:ListItem>
</asp:ListBox><br />
<asp:Button ID="Button1" runat="server"
Text="Set Language"
meta:resourcekey="Button1" />
<br />
</div>

The trick, as should be obvious by now, is that you don't *need* to pass the EnglishName.

The value that we *do* pass is CultureInfo.CurrentCulture.Name,
but we *display* whatever name we want to display to the user.

That way, it's transparent to the user *and* easy to program as well.

One of the most difficult concepts to grasp in programming
is that we should not attempt to lock a route to the desired result.

As long as we get where we want to get to, any route is OK.

Some routes are impossible and some are a waste,
but getting to where we want to get, with the least effort expended, is what counts.


Juan T. Llibre, asp.net MVP
asp.net faq : http://asp.net.do/faq/
foros de asp.net, en español : http://asp.net.do/foros/
===================================
"Jakob Christensen" <Ja**************@discussions.microsoft.comwrote in message
news:4D**********************************@microsof t.com...
Excellent. You might want to post the code here for the OP to see?

:-) Jakob.
"Juan T. Llibre" wrote:
re:
create a new CultureInfo from EnglishName which can not be done easily

Aw, that's not so hard to do :

http://asp.net.do/test/culture3.aspx

Juan T. Llibre, asp.net MVP
asp.net faq : http://asp.net.do/faq/
foros de asp.net, en español : http://asp.net.do/foros/
===================================
"Jakob Christensen" <Ja**************@discussions.microsoft.comwrote in message
news:5A**********************************@microsof t.com...
The OP wants to create a new CultureInfo from EnglishName which can not be
done easily. I do not think that CurrentCulture is of much use here.

:-) Jakob.

"Juan T. Llibre" wrote:

Or, you could simply use these :

CultureInfo.CurrentCulture.EnglishName
CultureInfo.CurrentCulture.DisplayName
CultureInfo.CurrentCulture.NativeName


Juan T. Llibre, asp.net MVP
asp.net faq : http://asp.net.do/faq/
foros de asp.net, en español : http://asp.net.do/foros/
===================================
"Jakob Christensen" <Ja**************@discussions.microsoft.comwrote in message
news:4F**********************************@microsof t.com...
You need to pass the culture name, i.e. "da-DK", "de-DE" or "ru-RU". The
following link shows the complete list:
http://msdn2.microsoft.com/en-us/lib...ltureinfo.aspx

Regards, Jakob.
--
http://www.dotninjas.dk

"lucky" wrote:

hi guys,
right now i'm going through System.Globalization Namespace. and i
found very intersting class there called CultureInfo.

i was trying to get cultureInfo on the basis of name but i didnt find
the way to do it. for example, if i pass the language name
"Danish","German",Russian", i'm suppose to get the cultureInfo object
of the language.

can anyone help me out here?
i would appriciate any help.

thanks,
Lucky




Jan 31 '07 #12

P: n/a
Still, working around a programming task is better than not doing anything, right ?

What I'm saying ( and it's a bit hard to understand, I know )
is that we should not get hung up on a particular way of doing a task.

As long as we deliver a solution, it's OK.

The OP certainly won't be needing to deliver a solution
for *all* the possible languages/cultures, right ?

So, the proposed solution I coded *will* work for a fairly large
subset of the available languages/cultures ( the ones which
will fit into the Listbox without making it an unwieldy instrument ).


Juan T. Llibre, asp.net MVP
asp.net faq : http://asp.net.do/faq/
foros de asp.net, en español : http://asp.net.do/foros/
===================================
"Jakob Christensen" <Ja**************@discussions.microsoft.comwrote in message
news:56**********************************@microsof t.com...
Aaah, but you still have not solved Lucky's problem (the OP). You are just
using the culture name (i.e. "en-US" etc.) as I suggested in my first reply
to the OP. Lucky wants to create the CultureInfo directly from the string
"Danish" or "Russian". Nobody says that he can do what you did.

:-) Jakob.

"Juan T. Llibre" wrote:
>re:
You might want to post the code here for the OP to see?

Why not?

If I had a nickel for every line of code I've given away for free here
....well, you know how the rest of that goes. :-)

Here's the crux...and the trick.

<%@ Page Language="VB" uiculture="auto" %>
<%@ Import Namespace="System.Threading" %>
<%@ Import Namespace="System.Globalization" %>

<script runat="server">
Protected Overrides Sub InitializeCulture()
If Request.Form("ListBox1") IsNot Nothing Then
Dim selectedLanguage As String = Request.Form("ListBox1")
UICulture = Request.Form("ListBox1")
Culture = Request.Form("ListBox1")
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(selectedLanguage )
Thread.CurrentThread.CurrentUICulture = New CultureInfo(selectedLanguage)
End If
MyBase.InitializeCulture()
End Sub
</script>

<form id="form1" runat="server">
<div>
<asp:ListBox ID="ListBox1" runat="server">
<asp:ListItem Value="en-US" Selected="True">English</asp:ListItem>
<asp:ListItem Value="es-MX">Español</asp:ListItem>
<asp:ListItem Value="de-DE">Deutsch</asp:ListItem>
</asp:ListBox><br />
<asp:Button ID="Button1" runat="server"
Text="Set Language"
meta:resourcekey="Button1" />
<br />
</div>

The trick, as should be obvious by now, is that you don't *need* to pass the EnglishName.

The value that we *do* pass is CultureInfo.CurrentCulture.Name,
but we *display* whatever name we want to display to the user.

That way, it's transparent to the user *and* easy to program as well.

One of the most difficult concepts to grasp in programming
is that we should not attempt to lock a route to the desired result.

As long as we get where we want to get to, any route is OK.

Some routes are impossible and some are a waste,
but getting to where we want to get, with the least effort expended, is what counts.


Juan T. Llibre, asp.net MVP
asp.net faq : http://asp.net.do/faq/
foros de asp.net, en español : http://asp.net.do/foros/
===================================
"Jakob Christensen" <Ja**************@discussions.microsoft.comwrote in message
news:4D**********************************@microso ft.com...
Excellent. You might want to post the code here for the OP to see?

:-) Jakob.
"Juan T. Llibre" wrote:

re:
create a new CultureInfo from EnglishName which can not be done easily

Aw, that's not so hard to do :

http://asp.net.do/test/culture3.aspx

Juan T. Llibre, asp.net MVP
asp.net faq : http://asp.net.do/faq/
foros de asp.net, en español : http://asp.net.do/foros/
===================================
"Jakob Christensen" <Ja**************@discussions.microsoft.comwrote in message
news:5A**********************************@microso ft.com...
The OP wants to create a new CultureInfo from EnglishName which can not be
done easily. I do not think that CurrentCulture is of much use here.

:-) Jakob.

"Juan T. Llibre" wrote:

Or, you could simply use these :

CultureInfo.CurrentCulture.EnglishName
CultureInfo.CurrentCulture.DisplayName
CultureInfo.CurrentCulture.NativeName


Juan T. Llibre, asp.net MVP
asp.net faq : http://asp.net.do/faq/
foros de asp.net, en español : http://asp.net.do/foros/
===================================
"Jakob Christensen" <Ja**************@discussions.microsoft.comwrote in message
news:4F**********************************@microso ft.com...
You need to pass the culture name, i.e. "da-DK", "de-DE" or "ru-RU". The
following link shows the complete list:
http://msdn2.microsoft.com/en-us/lib...ltureinfo.aspx

Regards, Jakob.
--
http://www.dotninjas.dk

"lucky" wrote:

hi guys,
right now i'm going through System.Globalization Namespace. and i
found very intersting class there called CultureInfo.

i was trying to get cultureInfo on the basis of name but i didnt find
the way to do it. for example, if i pass the language name
"Danish","German",Russian", i'm suppose to get the cultureInfo object
of the language.

can anyone help me out here?
i would appriciate any help.

thanks,
Lucky






Jan 31 '07 #13

This discussion thread is closed

Replies have been disabled for this discussion.