Ans: 這通常是會發生在 Ubuntu 或其他非 CentOS 的 Linux OS,檢查 OS 是否已支援所選擇語言的 UTF-8 語系。
以 Ubuntu 為例:
檢查系統所有語系的支援
locale -a
如果只有 cs_CZ,但沒有 cs_CZ.utf8,執行指令
sudo locale-gen cs_CZ.utf8
安裝所有目前 UI 會用到的各國語系
locale-gen en_US pt_BR.UTF-8 zh_TW.UTF-8 es_ES fr_FR de_DE it_IT pt_PT ro_RO ru_RU.UTF-8 tr_TR.UTF-8 ur_PK uk_UA.UTF-8 fa_IR el_GR.UTF-8 id_ID
TIPs:
新增語系後,必須重啟 apache2 服務,才能生效。
要檢查 Ubuntu 可支援哪些語系,可以開啟 /usr/share/i18n/SUPPORTED。
A2B UI 的多國語系的設定相關參數,在 /var/www/common/lib/languageSettings.php,這裡的參數定義必須與系統的語系名稱相同。
Ans: 這是因為 PHP Bug:
https://bugs.php.net/bug.php?id=42526
https://bugs.php.net/bug.php?id=18556
解決方法:加上 setlocale(LC_CTYPE, 'C')
編輯 /var/www/html/common/lib/languageSettings.php
putenv("LANGUAGE=$slectedLanguage"); setlocale(LC_ALL, $slectedLanguage); setlocale(LC_MESSAGES, $languageEncoding); // Fix for language Turkish issue if ($slectedLanguage == "tr_TR.UTF-8") { //setlocale(LC_CTYPE, 'C'); setlocale(LC_CTYPE, 'en_US' . '.utf8'); }