Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Language declaration is not consistent for all platforms #1626

Closed
pautiina opened this issue May 10, 2018 · 13 comments
Closed

Language declaration is not consistent for all platforms #1626

pautiina opened this issue May 10, 2018 · 13 comments

Comments

@pautiina
Copy link
Contributor

The latest develop branch on httpd-error.log have next message:

Fontconfig warning: ignoring ru-RU: not a valid language tag (ru-RU.UTF-8)

About this also say rrdtool:

RRDtool Command:
/usr/local/bin/rrdtool graph - \
--imgformat=PNG \
--start='1525917841' \
--end='1525939385' \
--pango-markup  \
--title='HERMES - Traffic - 1 -=PITLINE-10Gbit/s=-' \
--vertical-label='bits per second' \
--slope-mode \
--base=1000 \
--height=150 \
--width=550 \
--rigid \
--alt-autoscale-max \
--lower-limit='0' \
COMMENT:"From 2018/05/10 05\:04\:01 To 2018/05/10 11\:03\:05\c" \
COMMENT:"  \n" \
--color BACK#F3F3F3 \
--color CANVAS#FDFDFD \
--color SHADEA#CBCBCB \
--color SHADEB#999999 \
--color FONT#000000 \
--color AXIS#2C4D43 \
--color ARROW#2C4D43 \
--color FRAME#2C4D43 \
--border 1 --font TITLE:11:'Arial' \
--font AXIS:8:'Arial' \
--font LEGEND:8:'Courier' \
--font UNIT:8:'Arial' \
--font WATERMARK:6:'Arial' \
--slope-mode \
--watermark 'Copyright (C) 2004-2018 AC "CIT Kharkiv Online"' \
DEF:a='/var/www/cacti/rra/488/7300.rrd':'traffic_in':MAX \
DEF:b='/var/www/cacti/rra/488/7300.rrd':'traffic_in':AVERAGE \
DEF:c='/var/www/cacti/rra/488/7300.rrd':'traffic_out':MAX \
DEF:d='/var/www/cacti/rra/488/7300.rrd':'traffic_out':AVERAGE \
CDEF:cdefa='a,8,*' \
CDEF:cdefb='b,8,*' \
CDEF:cdeff='c,8,*' \
CDEF:cdefg='d,8,*' \
LINE1:cdefa#00CF00FF:  \
AREA:cdefb#00CF007F:'Inbound '  \
GPRINT:cdefb:LAST:'Current\:%8.2lf %s'  \
GPRINT:cdefb:AVERAGE:'Average\:%8.2lf %s'  \
GPRINT:cdefa:MAX:'Maximum\:%8.2lf %s\n'  \
LINE1:cdeff#002A97FF:  \
AREA:cdefg#002A977F:'Outbound'  \
GPRINT:cdefg:LAST:'Current\:%8.2lf %s'  \
GPRINT:cdefg:AVERAGE:'Average\:%8.2lf %s'  \
GPRINT:cdeff:MAX:'Maximum\:%8.2lf %s\n' 
RRDtool Says:
Fontconfig warning: ignoring ru-RU: not a valid language tag (ru-RU.UTF-8)
@netniV
Copy link
Member

netniV commented May 10, 2018

As you are not specifying the language as an option on that debug output I’d have to search and see where fontconfig is being used.

It may be a setting outside of cacti or may not.

@netniV
Copy link
Member

netniV commented May 10, 2018

Did a quick internet search and this is apparently down to the locale that you have set for your session. See LC_ALL variable. You can find valid settings for this using locales -a

See ariya/phantomjs#13433 (comment)

That's just one example, if you do a search you'll find this issue has cropped up all over the place so not a cacti-issue itself.

@netniV netniV closed this as completed May 10, 2018
@pautiina
Copy link
Contributor Author

@netniV This is not a solution to the problem

Did a quick internet search and this is apparently down to the locale that you have set for your session. See LC_ALL variable. You can find valid settings for this using locales -a

See ariya/phantomjs#13433 (comment)

That's just one example, if you do a search you'll find this issue has cropped up all over the place so not a cacti-issue itself.

Similar situations exist for different products, as the definition and local variables differ on different OSes.

@pautiina
Copy link
Contributor Author

Here I once did a patch for locale definition on FreePBX pautiina/framework@b7a9577

@netniV
Copy link
Member

netniV commented May 10, 2018

Yes, but you have to have the locale installed. Have you double checked that it is installed and being used. I may not have linked to the one which shows how to double check that, but I think you can run locale -a and a dpkg reconfigure locales.

In fact, I just googled to make sure I was right:
https://opsnotice.xyz/fix-debian-locales-error/

Now different OSes may have slightly different ways of doing that but unless the locale is installed, you will get the above warning.

@pautiina
Copy link
Contributor Author

@netniV This is my locale and it is installed, but the code does not correctly define it:

LANG=ru_RU.UTF-8
LC_CTYPE="ru_RU.UTF-8"
LC_COLLATE="ru_RU.UTF-8"
LC_TIME="ru_RU.UTF-8"
LC_NUMERIC="ru_RU.UTF-8"
LC_MONETARY="ru_RU.UTF-8"
LC_MESSAGES="ru_RU.UTF-8"
LC_ALL=

And from this locale run apache, which confirms the phpinfo:
image

cigamit added a commit that referenced this issue May 10, 2018
httpd-error.log have message about Fontconfig
@cigamit
Copy link
Member

cigamit commented May 10, 2018

This issue is resolved now. Just simply update the lib/rrd.php. This was a missed change when we corrected language support a few releases ago.

@pautiina
Copy link
Contributor Author

Not resolved, but message changed:
Fontconfig warning: ignoring ru-RU: not a valid language tag (ru-RU_RU.utf8)

@pautiina
Copy link
Contributor Author

This patch completely solves the problem on my system (FreeBSD), but I can not test it on other systems:

diff --git a/include/global_languages.php b/include/global_languages.php
index 1806a3ad..f56f3a8b 100644
--- a/include/global_languages.php
+++ b/include/global_languages.php
@@ -23,7 +23,7 @@
 */

 /* default localization of Cacti */
-$cacti_locale  = 'en-US';
+$cacti_locale  = 'en_US';
 $cacti_country = 'us';

 /* an array that will contains all textdomains being in use. */
@@ -177,7 +177,7 @@ function repair_locale($language) {
        $locale = $language;

        /* Repair legacy language support */
-       if (strpos($language, '-') === false) {
+       if (strpos($language, '_') === false) {
                foreach ($lang2locale as $locale => $data) {
                        if (substr($locale, 0, 2) == $language) {
                                break;
@@ -222,7 +222,7 @@ function load_fallback_procedure(){
        $_SESSION['sess_user_language'] = '';

        $cacti_textdomains = array();
-       define('CACTI_LOCALE', 'en-US');
+       define('CACTI_LOCALE', 'en_US');
        define('CACTI_COUNTRY', 'us');
        define('CACTI_LANGUAGE', 'English');
        define('CACTI_LANGUAGE_FILE', 'english_usa');
@@ -450,7 +450,7 @@ function get_list_of_locales() {
                'cs-GZ' => array('language' => 'Czech',               'country' => 'cz', 'filename' => 'czech_czech_republic'),
                'da-DK' => array('language' => 'Danish',              'country' => 'dk', 'filename' => 'danish_denmark'),
                'nl-NL' => array('language' => 'Dutch',               'country' => 'nl', 'filename' => 'dutch_netherlands'),
-               'en-US' => array('language' => 'English',             'country' => 'us', 'filename' => 'english_usa'),
+               'en_US' => array('language' => 'English',             'country' => 'us', 'filename' => 'english_usa'),
                'et-EE' => array('language' => 'Estonian',            'country' => 'ee', 'filename' => 'estonian_estonia'),
                'fi-FI' => array('language' => 'Finnish',             'country' => 'fi', 'filename' => 'finnish_finland'),
                'fr-FR' => array('language' => 'French',              'country' => 'fr', 'filename' => 'french_france'),
@@ -475,7 +475,7 @@ function get_list_of_locales() {
                'pt-PT' => array('language' => 'Portuguese',          'country' => 'pt', 'filename' => 'portuguese_portugal'),
                'pt-BR' => array('language' => 'Portuguese (Brazil)', 'country' => 'br', 'filename' => 'portuguese_brazil'),
                'ro-RO' => array('language' => 'Romanian',            'country' => 'ro', 'filename' => 'romanian_romania'),
-               'ru-RU' => array('language' => 'Russian',             'country' => 'ru', 'filename' => 'russian_russia'),
+               'ru_RU' => array('language' => 'Russian',             'country' => 'ru', 'filename' => 'russian_russia'),
                'sr-RS' => array('language' => 'Serbian',             'country' => 'rs', 'filename' => 'serbian_serbia'),
                'sk-SK' => array('language' => 'Slovak',              'country' => 'sk', 'filename' => 'slovak_slovakia'),
                'sl-SI' => array('language' => 'Slovenian',           'country' => 'si', 'filename' => 'slovenian_slovenia'),
@@ -498,7 +498,7 @@ function get_installed_locales() {
        global $config, $lang2locale;

        $locations = array();
-       $supported_languages['en-US'] = $lang2locale['en-US']['language'];
+       $supported_languages['en_US'] = $lang2locale['en_US']['language'];
        foreach ($lang2locale as $locale => $properties) {
                $locations[$properties['filename'] . '.mo'] = array(
                        'locale'   => $locale,
diff --git a/lib/rrd.php b/lib/rrd.php
index d4a556bb..6fc7c9fd 100644
--- a/lib/rrd.php
+++ b/lib/rrd.php
@@ -52,7 +52,7 @@ function rrdtool_set_language($lang = -1) {
        $prev_lang = getenv('LANG');

        if ($lang == -1) {
-               putenv('LANG=' . CACTI_LOCALE . '_' . strtoupper(CACTI_COUNTRY) . '.utf8');
+               putenv('LANG=' . CACTI_LOCALE . '.UTF-8');
        } else {
                putenv('LANG=en_EN.UTF-8');
        }
[root@noc /var/www/cacti]# git diff
diff --git a/include/global_languages.php b/include/global_languages.php
index 1806a3ad..fef4937c 100644
--- a/include/global_languages.php
+++ b/include/global_languages.php
@@ -23,7 +23,7 @@
 */

 /* default localization of Cacti */
-$cacti_locale  = 'en-US';
+$cacti_locale  = 'en_US';
 $cacti_country = 'us';

 /* an array that will contains all textdomains being in use. */
@@ -177,7 +177,7 @@ function repair_locale($language) {
        $locale = $language;

        /* Repair legacy language support */
-       if (strpos($language, '-') === false) {
+       if (strpos($language, '_') === false) {
                foreach ($lang2locale as $locale => $data) {
                        if (substr($locale, 0, 2) == $language) {
                                break;
@@ -222,7 +222,7 @@ function load_fallback_procedure(){
        $_SESSION['sess_user_language'] = '';

        $cacti_textdomains = array();
-       define('CACTI_LOCALE', 'en-US');
+       define('CACTI_LOCALE', 'en_US');
        define('CACTI_COUNTRY', 'us');
        define('CACTI_LANGUAGE', 'English');
        define('CACTI_LANGUAGE_FILE', 'english_usa');
@@ -437,53 +437,53 @@ function load_i18n_fallback_wrappers() {
  */
 function get_list_of_locales() {
        $lang2locale = array(
-               'sq-AL' => array('language' => 'Albanian',            'country' => 'al', 'filename' => 'albanian_albania'),
-               'ar-SA' => array('language' => 'Arabic',              'country' => 'sa', 'filename' => 'arabic_saudi_arabia'),
-               'hy-AM' => array('language' => 'Armenian',            'country' => 'am', 'filename' => 'armenian_armenia'),
-               'be-BY' => array('language' => 'Belarusian',          'country' => 'by', 'filename' => 'belarusian_belarus'),
-               'bg-BG' => array('language' => 'Bulgarian',           'country' => 'bg', 'filename' => 'bulgarian_bulgaria'),
-               'zh-CN' => array('language' => 'Chinese (China)',     'country' => 'cn', 'filename' => 'chinese_china_simplified'),
-               'zh-HK' => array('language' => 'Chinese (Hong Kong)', 'country' => 'hk', 'filename' => 'chinese_hong_kong'),
-               'zh-SG' => array('language' => 'Chinese (Singapore)', 'country' => 'sg', 'filename' => 'chinese_singapore'),
-               'zh-TW' => array('language' => 'Chinese (Taiwan)',    'country' => 'tw', 'filename' => 'chinese_taiwan'),
-               'hr-HR' => array('language' => 'Croatian',            'country' => 'hr', 'filename' => 'croatian_croatia'),
-               'cs-GZ' => array('language' => 'Czech',               'country' => 'cz', 'filename' => 'czech_czech_republic'),
-               'da-DK' => array('language' => 'Danish',              'country' => 'dk', 'filename' => 'danish_denmark'),
-               'nl-NL' => array('language' => 'Dutch',               'country' => 'nl', 'filename' => 'dutch_netherlands'),
-               'en-US' => array('language' => 'English',             'country' => 'us', 'filename' => 'english_usa'),
-               'et-EE' => array('language' => 'Estonian',            'country' => 'ee', 'filename' => 'estonian_estonia'),
-               'fi-FI' => array('language' => 'Finnish',             'country' => 'fi', 'filename' => 'finnish_finland'),
-               'fr-FR' => array('language' => 'French',              'country' => 'fr', 'filename' => 'french_france'),
-               'de-DE' => array('language' => 'German',              'country' => 'de', 'filename' => 'german_germany'),
-               'el-GR' => array('language' => 'Greek',               'country' => 'gr', 'filename' => 'greek_greece'),
-               'iw-IL' => array('language' => 'Hebrew',              'country' => 'il', 'filename' => 'hebrew_israel'),
-               'hi-IN' => array('language' => 'Hindi',               'country' => 'in', 'filename' => 'hindi_india'),
-               'hu-HU' => array('language' => 'Hungarian',           'country' => 'hu', 'filename' => 'hungarian_hungary'),
-               'is-IS' => array('language' => 'Icelandic',           'country' => 'is', 'filename' => 'icelandic_iceland'),
-               'id-ID' => array('language' => 'Indonesian',          'country' => 'id', 'filename' => 'indonesian_indonesia'),
-               'ga-IE' => array('language' => 'Irish',               'country' => 'ie', 'filename' => 'irish_ireland'),
-               'it-IT' => array('language' => 'Italian',             'country' => 'it', 'filename' => 'italian_italy'),
-               'ja-JP' => array('language' => 'Japanese',            'country' => 'jp', 'filename' => 'japanese_japan'),
-               'ko-KR' => array('language' => 'Korean',              'country' => 'kr', 'filename' => 'korean_korea'),
-               'lv-LV' => array('language' => 'Lativan',             'country' => 'lv', 'filename' => 'latvian_latvia'),
-               'lt-LT' => array('language' => 'Lithuanian',          'country' => 'lt', 'filename' => 'lithuanian_lithuania'),
-               'mk-MK' => array('language' => 'Macedonian',          'country' => 'mk', 'filename' => 'macedonian_macedonia'),
-               'ms-MY' => array('language' => 'Malay',               'country' => 'my', 'filename' => 'malay_malaysia'),
-               'mt-LT' => array('language' => 'Maltese',             'country' => 'lt', 'filename' => 'maltese_malta'),
-               'no-NO' => array('language' => 'Norwegian',           'country' => 'no', 'filename' => 'norwegian_norway'),
-               'pl-PL' => array('language' => 'Polish',              'country' => 'pl', 'filename' => 'polish_poland'),
-               'pt-PT' => array('language' => 'Portuguese',          'country' => 'pt', 'filename' => 'portuguese_portugal'),
-               'pt-BR' => array('language' => 'Portuguese (Brazil)', 'country' => 'br', 'filename' => 'portuguese_brazil'),
-               'ro-RO' => array('language' => 'Romanian',            'country' => 'ro', 'filename' => 'romanian_romania'),
-               'ru-RU' => array('language' => 'Russian',             'country' => 'ru', 'filename' => 'russian_russia'),
-               'sr-RS' => array('language' => 'Serbian',             'country' => 'rs', 'filename' => 'serbian_serbia'),
-               'sk-SK' => array('language' => 'Slovak',              'country' => 'sk', 'filename' => 'slovak_slovakia'),
-               'sl-SI' => array('language' => 'Slovenian',           'country' => 'si', 'filename' => 'slovenian_slovenia'),
-               'es-ES' => array('language' => 'Spanish',             'country' => 'es', 'filename' => 'spanish_spain'),
-               'sv-SE' => array('language' => 'Swedish',             'country' => 'se', 'filename' => 'swedish_sweden'),
-               'th-TH' => array('language' => 'Thai',                'country' => 'th', 'filename' => 'thai_thailand'),
-               'tr-TR' => array('language' => 'Turkish',             'country' => 'tr', 'filename' => 'turkish_turkey'),
-               'vi-VN' => array('language' => 'Vietnamese',          'country' => 'vn', 'filename' => 'vietnamese_vietnam')
+               'sq_AL' => array('language' => 'Albanian',            'country' => 'al', 'filename' => 'albanian_albania'),
+               'ar_SA' => array('language' => 'Arabic',              'country' => 'sa', 'filename' => 'arabic_saudi_arabia'),
+               'hy_AM' => array('language' => 'Armenian',            'country' => 'am', 'filename' => 'armenian_armenia'),
+               'be_BY' => array('language' => 'Belarusian',          'country' => 'by', 'filename' => 'belarusian_belarus'),
+               'bg_BG' => array('language' => 'Bulgarian',           'country' => 'bg', 'filename' => 'bulgarian_bulgaria'),
+               'zh_CN' => array('language' => 'Chinese (China)',     'country' => 'cn', 'filename' => 'chinese_china_simplified'),
+               'zh_HK' => array('language' => 'Chinese (Hong Kong)', 'country' => 'hk', 'filename' => 'chinese_hong_kong'),
+               'zh_SG' => array('language' => 'Chinese (Singapore)', 'country' => 'sg', 'filename' => 'chinese_singapore'),
+               'zh_TW' => array('language' => 'Chinese (Taiwan)',    'country' => 'tw', 'filename' => 'chinese_taiwan'),
+               'hr_HR' => array('language' => 'Croatian',            'country' => 'hr', 'filename' => 'croatian_croatia'),
+               'cs_GZ' => array('language' => 'Czech',               'country' => 'cz', 'filename' => 'czech_czech_republic'),
+               'da_DK' => array('language' => 'Danish',              'country' => 'dk', 'filename' => 'danish_denmark'),
+               'nl_NL' => array('language' => 'Dutch',               'country' => 'nl', 'filename' => 'dutch_netherlands'),
+               'en_US' => array('language' => 'English',             'country' => 'us', 'filename' => 'english_usa'),
+               'et_EE' => array('language' => 'Estonian',            'country' => 'ee', 'filename' => 'estonian_estonia'),
+               'fi_FI' => array('language' => 'Finnish',             'country' => 'fi', 'filename' => 'finnish_finland'),
+               'fr_FR' => array('language' => 'French',              'country' => 'fr', 'filename' => 'french_france'),
+               'de_DE' => array('language' => 'German',              'country' => 'de', 'filename' => 'german_germany'),
+               'el_GR' => array('language' => 'Greek',               'country' => 'gr', 'filename' => 'greek_greece'),
+               'iw_IL' => array('language' => 'Hebrew',              'country' => 'il', 'filename' => 'hebrew_israel'),
+               'hi_IN' => array('language' => 'Hindi',               'country' => 'in', 'filename' => 'hindi_india'),
+               'hu_HU' => array('language' => 'Hungarian',           'country' => 'hu', 'filename' => 'hungarian_hungary'),
+               'is_IS' => array('language' => 'Icelandic',           'country' => 'is', 'filename' => 'icelandic_iceland'),
+               'id_ID' => array('language' => 'Indonesian',          'country' => 'id', 'filename' => 'indonesian_indonesia'),
+               'ga_IE' => array('language' => 'Irish',               'country' => 'ie', 'filename' => 'irish_ireland'),
+               'it_IT' => array('language' => 'Italian',             'country' => 'it', 'filename' => 'italian_italy'),
+               'ja_JP' => array('language' => 'Japanese',            'country' => 'jp', 'filename' => 'japanese_japan'),
+               'ko_KR' => array('language' => 'Korean',              'country' => 'kr', 'filename' => 'korean_korea'),
+               'lv_LV' => array('language' => 'Lativan',             'country' => 'lv', 'filename' => 'latvian_latvia'),
+               'lt_LT' => array('language' => 'Lithuanian',          'country' => 'lt', 'filename' => 'lithuanian_lithuania'),
+               'mk_MK' => array('language' => 'Macedonian',          'country' => 'mk', 'filename' => 'macedonian_macedonia'),
+               'ms_MY' => array('language' => 'Malay',               'country' => 'my', 'filename' => 'malay_malaysia'),
+               'mt_LT' => array('language' => 'Maltese',             'country' => 'lt', 'filename' => 'maltese_malta'),
+               'no_NO' => array('language' => 'Norwegian',           'country' => 'no', 'filename' => 'norwegian_norway'),
+               'pl_PL' => array('language' => 'Polish',              'country' => 'pl', 'filename' => 'polish_poland'),
+               'pt_PT' => array('language' => 'Portuguese',          'country' => 'pt', 'filename' => 'portuguese_portugal'),
+               'pt_BR' => array('language' => 'Portuguese (Brazil)', 'country' => 'br', 'filename' => 'portuguese_brazil'),
+               'ro_RO' => array('language' => 'Romanian',            'country' => 'ro', 'filename' => 'romanian_romania'),
+               'ru_RU' => array('language' => 'Russian',             'country' => 'ru', 'filename' => 'russian_russia'),
+               'sr_RS' => array('language' => 'Serbian',             'country' => 'rs', 'filename' => 'serbian_serbia'),
+               'sk_SK' => array('language' => 'Slovak',              'country' => 'sk', 'filename' => 'slovak_slovakia'),
+               'sl_SI' => array('language' => 'Slovenian',           'country' => 'si', 'filename' => 'slovenian_slovenia'),
+               'es_ES' => array('language' => 'Spanish',             'country' => 'es', 'filename' => 'spanish_spain'),
+               'sv_SE' => array('language' => 'Swedish',             'country' => 'se', 'filename' => 'swedish_sweden'),
+               'th_TH' => array('language' => 'Thai',                'country' => 'th', 'filename' => 'thai_thailand'),
+               'tr_TR' => array('language' => 'Turkish',             'country' => 'tr', 'filename' => 'turkish_turkey'),
+               'vi_VN' => array('language' => 'Vietnamese',          'country' => 'vn', 'filename' => 'vietnamese_vietnam')
        );

        return $lang2locale;
@@ -498,7 +498,7 @@ function get_installed_locales() {
        global $config, $lang2locale;

        $locations = array();
-       $supported_languages['en-US'] = $lang2locale['en-US']['language'];
+       $supported_languages['en_US'] = $lang2locale['en_US']['language'];
        foreach ($lang2locale as $locale => $properties) {
                $locations[$properties['filename'] . '.mo'] = array(
                        'locale'   => $locale,
diff --git a/lib/rrd.php b/lib/rrd.php
index d4a556bb..6fc7c9fd 100644
--- a/lib/rrd.php
+++ b/lib/rrd.php
@@ -52,7 +52,7 @@ function rrdtool_set_language($lang = -1) {
        $prev_lang = getenv('LANG');

        if ($lang == -1) {
-               putenv('LANG=' . CACTI_LOCALE . '_' . strtoupper(CACTI_COUNTRY) . '.utf8');
+               putenv('LANG=' . CACTI_LOCALE . '.UTF-8');
        } else {
                putenv('LANG=en_EN.UTF-8');
        }

@cigamit
Copy link
Member

cigamit commented May 11, 2018

Well, it would appear that the real issue is that RHEL and other Linux's suffix with '.utf8', and FreeBSD suffixes with '.UTF-8'. Isn't that so much fun!. Additionally, for auto browser detection, the country codes come back 'en-US' and 'ru-RU'. So, though I appreciate the effort, the real fix is to either load the locales and autodetect the suffix use by the OS, or provide a setting. I'm convinced to just issue the locale -a command to detect it.

@cigamit
Copy link
Member

cigamit commented May 11, 2018

Upon further investigation, even with the locale -a command not using 'UTF-8', the default LANG variable includes it and there are no complaints.

cigamit added a commit that referenced this issue May 11, 2018
Taking another crack at this fix.
@cigamit
Copy link
Member

cigamit commented May 11, 2018

Okay, I've taken another shot at this.

cigamit added a commit that referenced this issue May 11, 2018
@pautiina
Copy link
Contributor Author

It seems to work :)
Your solution is more like me than me :) And I think it will work on different OSes.

@netniV netniV changed the title [1.2.0] httpd-error.log have message about Fontconfig Language declaration is not consistent for all platforms Dec 27, 2018
@github-actions github-actions bot locked as resolved and limited conversation to collaborators Jun 30, 2020
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants