efl

Форк
0
/
ef_locale.c 
91 строка · 2.8 Кб
1
#ifdef HAVE_CONFIG_H
2
# include <config.h>
3
#endif
4

5
#include <stdlib.h>
6
#include <stdio.h>
7
#include <string.h>
8

9
#include <Efreet.h>
10
#define EFREET_MODULE_LOG_DOM /* no logging in this file */
11
#include "efreet_private.h"
12

13
int
14
ef_cb_locale(void)
15
{
16
   int ret = 1, i;
17
   struct
18
     {
19
        char *lc_message;
20
        char *lang;
21
        char *country;
22
        char *modifier;
23
     } langs[] = {
24
          /* these are ordered such that when we move from LANG to LC_MESSAGES
25
           * the LANG env will still be effect. Same with moving from
26
           * LC_MESSAGES to LANG */
27
            {"LANG=", NULL, NULL, NULL},
28
            {"LANG=en", "en", NULL, NULL},
29
            {"LANG=en@Latn", "en", NULL, "Latn"},
30
            {"LANG=en_US", "en", "US", NULL},
31
            {"LANG=en_US@Latn", "en", "US", "Latn"},
32
            {"LANG=en_US.blah@Latn", "en", "US", "Latn"},
33
            {"LC_MESSAGES=", "en", "US", "Latn"}, /* This will fallback to LANG */
34
            {"LC_MESSAGES=fr", "fr", NULL, NULL},
35
            {"LC_MESSAGES=fr@Blah", "fr", NULL, "Blah"},
36
            {"LC_MESSAGES=fr_FR", "fr", "FR", NULL},
37
            {"LC_MESSAGES=fr_FR@Blah", "fr", "FR", "Blah"},
38
            {"LC_MESSAGES=fr_FR.Foo@Blah", "fr", "FR", "Blah"},
39
            {"LC_ALL=", "fr", "FR", "Blah"}, /* this will fallback to LC_MESSAGES */
40
            {"LC_ALL=sr", "sr", NULL, NULL},
41
            {"LC_ALL=sr@Ret", "sr", NULL, "Ret"},
42
            {"LC_ALL=sr_YU", "sr", "YU", NULL},
43
            {"LC_ALL=sr_YU@Ret", "sr", "YU", "Ret"},
44
            {"LC_ALL=sr_YU.ssh@Ret", "sr", "YU", "Ret"},
45
            {NULL, NULL, NULL, NULL}
46
     };
47

48
   /* reset everything to blank */
49
   putenv("LC_ALL=");
50
   putenv("LC_MESSAGES=");
51
   putenv("LANG=");
52

53
   for (i = 0; langs[i].lc_message; i++)
54
     {
55
        const char *tmp;
56

57
        putenv(langs[i].lc_message);
58

59
        tmp = efreet_lang_get();
60
        if ((langs[i].lang && (!tmp || strcmp(tmp, langs[i].lang)))
61
            || (!langs[i].lang && tmp))
62
          {
63
             printf("efreet_lang_get() is wrong (%s) with %s\n",
64
                    tmp, langs[i].lang);
65
             ret = 0;
66
          }
67

68
        tmp = efreet_lang_country_get();
69
        if ((langs[i].country && (!tmp || strcmp(tmp, langs[i].country)))
70
            || (!langs[i].country && tmp))
71
          {
72
             printf("efreet_lang_country_get() is wrong (%s) with %s\n",
73
                    tmp, langs[i].lang);
74
             ret = 0;
75
          }
76

77
        tmp = efreet_lang_modifier_get();
78
        if ((langs[i].modifier && (!tmp || strcmp(tmp, langs[i].modifier)))
79
            || (!langs[i].modifier && tmp))
80
          {
81
             printf("efreet_lang_modifier_get() is wrong with %s with %s\n",
82
                    tmp, langs[i].lang);
83
             ret = 0;
84
          }
85

86
        efreet_shutdown();
87
        efreet_init();
88
     }
89

90
   return ret;
91
}
92

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.