1------------------------------------------------------------------------------
2--                                                                          --
3--                         GNAT RUN-TIME COMPONENTS                         --
4--                                                                          --
5--                           A D A . L O C A L E S                          --
6--                                                                          --
7--                                 S p e c                                  --
8--                                                                          --
9--          Copyright (C) 2010-2021, Free Software Foundation, Inc.         --
10--                                                                          --
11-- This specification is derived from the Ada Reference Manual for use with --
12-- GNAT.  In accordance with the copyright of that document, you can freely --
13-- copy and modify this specification,  provided that if you redistribute a --
14-- modified version,  any changes that you have made are clearly indicated. --
15--                                                                          --
16------------------------------------------------------------------------------
17
18package Ada.Locales is
19   pragma Preelaborate (Locales);
20   pragma Remote_Types (Locales);
21
22   --  A locale identifies a geopolitical place or region and its associated
23   --  language, which can be used to determine other internationalization-
24   --  related characteristics. The active locale is the locale associated with
25   --  the partition of the current task.
26
27   type Language_Code is new String (1 .. 3)
28      with Dynamic_Predicate =>
29         (for all E of Language_Code => E in 'a' .. 'z');
30   --  Lower-case string representation of an ISO 639-3 alpha-3 code that
31   --  identifies a language.
32
33   type Country_Code is new String (1 .. 2)
34      with Dynamic_Predicate =>
35         (for all E of Country_Code => E in 'A' .. 'Z');
36   --  Upper-case string representation of an ISO 3166-1 alpha-2 code that
37   --  identifies a country.
38
39   Language_Unknown : constant Language_Code := "und";
40   Country_Unknown  : constant Country_Code := "ZZ";
41
42   function Language return Language_Code;
43   --  Returns the code of the language associated with the active locale. If
44   --  the Language_Code associated with the active locale cannot be determined
45   --  from the environment, then Language returns Language_Unknown.
46
47   function Country return Country_Code;
48   --  Returns the code of the country associated with the active locale. If
49   --  the Country_Code associated with the active locale cannot be determined
50   --  from the environment, then Country returns Country_Unknown.
51
52end Ada.Locales;
53