A.19 The Package Locales
A 
locale identifies a 
geopolitical place or region and its associated language, which can be 
used to determine other internationalization-related characteristics. 
 
Static Semantics
The library package 
Locales has the following declaration: 
package Ada.Locales 
is
   pragma Preelaborate(Locales);
   
pragma Remote_Types(Locales);
 
   type Language_Code 
is new String (1 .. 3)
      
with Dynamic_Predicate =>
         (
for all E 
of Language_Code => E 
in 'a' .. 'z');
   
type Country_Code 
is new String (1 .. 2)
      
with Dynamic_Predicate =>
         (
for all E 
of Country_Code  => E 
in 'A' .. 'Z');
 
   Language_Unknown : 
constant Language_Code := "und";
   
Country_Unknown : 
constant Country_Code := "ZZ";
 
   function Language 
return Language_Code;
   
function Country 
return Country_Code;
 
end Ada.Locales;
The 
active locale 
is the locale associated with the partition of the current task.
 
Language_Code is a lower-case string representation 
of an ISO 639-3 alpha-3 code that identifies a language.
 Country_Code is an upper-case string representation 
of an ISO 3166-1 alpha-2 code that identifies a country.
 Function Language returns the code of the language 
associated with the active locale. If the Language_Code associated with 
the active locale cannot be determined from the environment, then Language 
returns Language_Unknown.
 Function Country returns the code of the country 
associated with the active locale. If the Country_Code associated with 
the active locale cannot be determined from the environment, then Country 
returns Country_Unknown.
Ada 2005 and 2012 Editions sponsored in part by Ada-Europe