# Windows Language

**URL:** <https://www.ruby-forum.com/t/windows-language/85311>\
**Category:** Ruby\
**Created:** [February 12, 2007, 4:30pm UTC](https://www.ruby-forum.com/t/windows-language/85311 "2007-02-12T16:30:22Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![AndrSSSS](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/e99b99/32.png) [@AndrSSSS](https://www.ruby-forum.com/u/AndrSSSS)\
**Post date:** [February 12, 2007, 4:30pm UTC](https://www.ruby-forum.com/t/windows-language/85311/1 "2007-02-12T16:30:22Z")

</div>

Hello,

Is it possible to find the Windows natural language (ex. English,  
French, Russian, etc…) from Ruby?

Thank you in advance,

Andr

---

<div class="post-metadata">

**Author:** ![AndrSSSS](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/e99b99/32.png) [@AndrSSSS](https://www.ruby-forum.com/u/AndrSSSS)\
**Post date:** [February 12, 2007, 5:17pm UTC](https://www.ruby-forum.com/t/windows-language/85311/2 "2007-02-12T17:17:29Z")

</div>

On 2/12/07, AndrÃ© [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> Hello,
> 
> Is it possible to find the Windows natural language (ex. English,  
> French, Russian, etc…) from Ruby?
> 
> Thank you in advance,
> 
> AndrÃ©

If you don’t mind using some good old fashioned command line tools,  
here’s a  
solution.

variables = `set`  
lang\_used = variables.scan(%r{LANG=.})  
puts lang\_used

Hope that helps.

---

<div class="post-metadata">

**Author:** ![AndrSSSS](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/e99b99/32.png) [@AndrSSSS](https://www.ruby-forum.com/u/AndrSSSS)\
**Post date:** [February 12, 2007, 7:09pm UTC](https://www.ruby-forum.com/t/windows-language/85311/3 "2007-02-12T19:09:43Z")

</div>

On 2/12/07, Jason M. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> If you don’t mind using some good old fashioned command line tools, here’s a  
> solution.
> 
> variables = `set`  
> lang\_used = variables.scan(%r{LANG=.})  
> puts lang\_used
> 
> Hope that helps.

I have no such variable set (XP SP2).

---

<div class="post-metadata">

**Author:** ![AndrSSSS](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/e99b99/32.png) [@AndrSSSS](https://www.ruby-forum.com/u/AndrSSSS)\
**Post date:** [February 12, 2007, 7:38pm UTC](https://www.ruby-forum.com/t/windows-language/85311/4 "2007-02-12T19:38:49Z")

</div>

On 2/12/07, Jan S. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> > > André
> 
> I have no such variable set (XP SP2).  
> The list of languages is here:  
> [Technical documentation | Microsoft Learn](http://msdn.microsoft.com/library/default.asp?url=/library/en-us/intl/nls_61df.asp)  
> (The table is inwin32utils/windows-pr as well).

The function to retrieve is here:

> **[Technical documentation](https://learn.microsoft.com/en-us/docs/)**

or here:

> **[Technical documentation](https://learn.microsoft.com/en-us/docs/)**

depending on whether you want the system language or the user one  
(multiple users can specify different languages)

Use WIN32API to glue them together (I don’t have time now to write the  
function, sorry)

---

<div class="post-metadata">

**Author:** ![AndrSSSS](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/e99b99/32.png) [@AndrSSSS](https://www.ruby-forum.com/u/AndrSSSS)\
**Post date:** [February 12, 2007, 7:40pm UTC](https://www.ruby-forum.com/t/windows-language/85311/5 "2007-02-12T19:40:49Z")

</div>

> Is it possible to find the Windows natural language (ex. English,  
> French, Russian, etc…) from Ruby?

It’s ok, I found already. Here’s the code:

require ‘Win32API’  
language = Win32API.new(“kernel32.dll”, “GetLocaleInfoA”, [‘L’, ‘L’,  
‘P’, ‘L’], ‘L’)  
x = " " \* 255  
language.Call(1024, 4097, x, 255)  
puts x.strip

Regards!

Andr

---

<div class="post-metadata">

**Author:** ![AndrSSSS](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/e99b99/32.png) [@AndrSSSS](https://www.ruby-forum.com/u/AndrSSSS)\
**Post date:** [February 12, 2007, 8:22pm UTC](https://www.ruby-forum.com/t/windows-language/85311/6 "2007-02-12T20:22:58Z")

</div>

On 2/12/07, AndrÃ© [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> x = " " \* 255  
> language.Call(1024, 4097, x, 255)  
> puts x.strip

Here’s another way to do it that might work.

variables = `systeminfo`  
lang\_used = variables.scan(%r{System Locale:.\*})  
puts lang\_used

I like that way though.
