For Programmers: Free Programming Magazines  


Home > Archive > ASP .NET > January 2007 > Get Culture Info from Language Name









You are viewing an archived Text-only version of the thread. To view this thread in it's original format and/or if you want to reply to this thread please [click here]

 

Author Get Culture Info from Language Name
lucky

2007-01-31, 8:09 am

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

Jakob Christensen

2007-01-31, 8:09 am

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/li...ultureinfo.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
>
>

Cor Ligthert \(MVP\)

2007-01-31, 8:09 am

Hi,

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

is this what you mean?

Cor

"lucky" <tushar.n.patel@gmail.com> schreef in bericht
news:1170242947.058943.45200@a75g2000cwd.googlegroups.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
>



rossum

2007-01-31, 8:09 am

On 31 Jan 2007 03:29:07 -0800, "lucky" <tushar.n.patel@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 <languagecode2> is a
lowercase two-letter code derived from ISO 639-1 and
<country/regioncode2> is 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

Alexey Smirnov

2007-01-31, 8:09 am


"lucky" <tushar.n.patel@gmail.com> wrote in message
news:1170242947.058943.45200@a75g2000cwd.googlegroups.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.NeutralCultures) ) {

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

....

}

}


Juan T. Llibre

2007-01-31, 8:09 am

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" <JakobChristensen@discussions.microsoft.com> wrote in message
news:4FD08778-BE9A-4249-8912-F2E8BB057F20@microsoft.com...[color=darkred]
> 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/li...ultureinfo.aspx
>
> Regards, Jakob.
> --
> http://www.dotninjas.dk
>
>
>
> "lucky" wrote:
>


Jakob Christensen

2007-01-31, 8:09 am

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" <JakobChristensen@discussions.microsoft.com> wrote in message
> news:4FD08778-BE9A-4249-8912-F2E8BB057F20@microsoft.com...
>
>
>

Juan T. Llibre

2007-01-31, 7:13 pm

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" <JakobChristensen@discussions.microsoft.com> wrote in message
news:5A8276AE-D0CF-4E5C-B2BA-45BE9AAD2E18@microsoft.com...[color=darkred]
> 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:
>


Jakob Christensen

2007-01-31, 7:13 pm

Excellent. You might want to post the code here for the OP to see?

:-) Jakob.


"Juan T. Llibre" wrote:

> re:
>
> 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" <JakobChristensen@discussions.microsoft.com> wrote in message
> news:5A8276AE-D0CF-4E5C-B2BA-45BE9AAD2E18@microsoft.com...
>
>
>

Juan T. Llibre

2007-01-31, 7:13 pm

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" <JakobChristensen@discussions.microsoft.com> wrote in message
news:4D6A69C9-67E3-49E5-B16A-BA0F310EB560@microsoft.com...[color=darkred]
> Excellent. You might want to post the code here for the OP to see?
>
> :-) Jakob.
>
>
> "Juan T. Llibre" wrote:
>



Jakob Christensen

2007-01-31, 7:13 pm

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:
>
> 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" <JakobChristensen@discussions.microsoft.com> wrote in message
> news:4D6A69C9-67E3-49E5-B16A-BA0F310EB560@microsoft.com...
>
>
>
>

Juan T. Llibre

2007-01-31, 7:13 pm

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" <JakobChristensen@discussions.microsoft.com> wrote in message
news:56DD4E6F-C6AA-4465-A674-6E0FD1F30892@microsoft.com...[color=darkred]
> 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:
>



Sponsored Links







Also available: Server administration forum archive | Web Design forum archive | Software forum archive | Hardware reviews archive

Copyright 2010 codecomments.com