]>
Commit | Line | Data |
---|---|---|
53e1b683 | 1 | /* SPDX-License-Identifier: LGPL-2.1+ */ |
75683450 LP |
2 | #pragma once |
3 | ||
8752c575 | 4 | #include <libintl.h> |
81a12ba6 | 5 | #include <stdbool.h> |
e520e0fc | 6 | #include <locale.h> |
81a12ba6 RC |
7 | |
8 | #include "macro.h" | |
9 | ||
a3428668 MS |
10 | typedef enum LocaleVariable { |
11 | /* We don't list LC_ALL here on purpose. People should be | |
12 | * using LANG instead. */ | |
13 | ||
14 | VARIABLE_LANG, | |
15 | VARIABLE_LANGUAGE, | |
16 | VARIABLE_LC_CTYPE, | |
17 | VARIABLE_LC_NUMERIC, | |
18 | VARIABLE_LC_TIME, | |
19 | VARIABLE_LC_COLLATE, | |
20 | VARIABLE_LC_MONETARY, | |
21 | VARIABLE_LC_MESSAGES, | |
22 | VARIABLE_LC_PAPER, | |
23 | VARIABLE_LC_NAME, | |
24 | VARIABLE_LC_ADDRESS, | |
25 | VARIABLE_LC_TELEPHONE, | |
26 | VARIABLE_LC_MEASUREMENT, | |
27 | VARIABLE_LC_IDENTIFICATION, | |
28 | _VARIABLE_LC_MAX, | |
29 | _VARIABLE_LC_INVALID = -1 | |
30 | } LocaleVariable; | |
31 | ||
75683450 LP |
32 | int get_locales(char ***l); |
33 | bool locale_is_valid(const char *name); | |
23fa786c | 34 | int locale_is_installed(const char *name); |
a3428668 | 35 | |
8752c575 LP |
36 | #define _(String) gettext(String) |
37 | #define N_(String) String | |
38 | void init_gettext(void); | |
39 | ||
40 | bool is_locale_utf8(void); | |
41 | ||
323b7dc9 | 42 | typedef enum { |
9a6f746f LP |
43 | SPECIAL_GLYPH_TREE_VERTICAL, |
44 | SPECIAL_GLYPH_TREE_BRANCH, | |
45 | SPECIAL_GLYPH_TREE_RIGHT, | |
46 | SPECIAL_GLYPH_TREE_SPACE, | |
47 | SPECIAL_GLYPH_TRIANGULAR_BULLET, | |
48 | SPECIAL_GLYPH_BLACK_CIRCLE, | |
49 | SPECIAL_GLYPH_BULLET, | |
9a6f746f LP |
50 | SPECIAL_GLYPH_MU, |
51 | SPECIAL_GLYPH_CHECK_MARK, | |
52 | SPECIAL_GLYPH_CROSS_MARK, | |
67861acd LP |
53 | SPECIAL_GLYPH_ARROW, |
54 | SPECIAL_GLYPH_ELLIPSIS, | |
1d2a1a0c LP |
55 | SPECIAL_GLYPH_LIGHT_SHADE, |
56 | SPECIAL_GLYPH_DARK_SHADE, | |
7e70f2cb | 57 | SPECIAL_GLYPH_SIGMA, |
a90fb08c | 58 | SPECIAL_GLYPH_EXTERNAL_LINK, |
48d70b4a LP |
59 | _SPECIAL_GLYPH_FIRST_EMOJI, |
60 | SPECIAL_GLYPH_ECSTATIC_SMILEY = _SPECIAL_GLYPH_FIRST_EMOJI, | |
9a6f746f LP |
61 | SPECIAL_GLYPH_HAPPY_SMILEY, |
62 | SPECIAL_GLYPH_SLIGHTLY_HAPPY_SMILEY, | |
63 | SPECIAL_GLYPH_NEUTRAL_SMILEY, | |
64 | SPECIAL_GLYPH_SLIGHTLY_UNHAPPY_SMILEY, | |
65 | SPECIAL_GLYPH_UNHAPPY_SMILEY, | |
66 | SPECIAL_GLYPH_DEPRESSED_SMILEY, | |
48d70b4a | 67 | SPECIAL_GLYPH_LOCK_AND_KEY, |
428d32af LP |
68 | SPECIAL_GLYPH_TOUCH, |
69 | _SPECIAL_GLYPH_MAX, | |
323b7dc9 | 70 | } SpecialGlyph; |
8752c575 | 71 | |
dff4bf93 | 72 | const char *special_glyph(SpecialGlyph code) _const_; |
8752c575 | 73 | |
539ee098 LP |
74 | bool emoji_enabled(void); |
75 | ||
a3428668 MS |
76 | const char* locale_variable_to_string(LocaleVariable i) _const_; |
77 | LocaleVariable locale_variable_from_string(const char *s) _pure_; | |
ed457f13 | 78 | |
e520e0fc LP |
79 | static inline void freelocalep(locale_t *p) { |
80 | if (*p == (locale_t) 0) | |
81 | return; | |
82 | ||
83 | freelocale(*p); | |
84 | } | |
e6755a33 LP |
85 | |
86 | void locale_variables_free(char* l[_VARIABLE_LC_MAX]); | |
87 | static inline void locale_variables_freep(char*(*l)[_VARIABLE_LC_MAX]) { | |
88 | locale_variables_free(*l); | |
89 | } |