簡體   English   中英

不同平台上的保證語言環境

[英]Guaranteed locales on different platforms

除了默認的 C 語言環境之外,是否有任何語言環境保證存在或至少默認安裝在 windows Linux 或 macOS 上的最終用戶計算機上? 我使用 boost 屬性樹,它可以從文件中讀取 XML 並將語言環境作為參數。 如果我想編寫一個跨平台應用程序並且文件是德語和 utf-8 編碼,我應該使用哪個語言環境?

不保證語言環境,但 C (這只是在 POSIX 中)。

各種 Linux 發行版允許您選擇要安裝的語言環境,通常它只安裝國家(和地區)語言環境(現在是 UTF8 變體)。 所以不,沒有辦法。 而且我不希望有任何有用的東西:語言環境名稱不是那么標准化(但現在我們有一個 RFC,OTOH RFC 不是關於已安裝的語言環境)。

但是有一個 Unicode ;-)

Unicode 聯盟發布自己的語言環境定義: http://cldr.unicode.org/index ,您可以使用此項目查找庫。 這解決了更多的問題,例如 Python 沒有對所有功能使用語言環境,因此您可能會得到錯誤的本地化數據。

另一方面,我認為您過度設計(或尋找錯誤的問題)。

語言環境是用戶的選擇,所以要尊重用戶的選擇。 嘗試使用德語 UTF8 語言環境。 您應該期望這樣的本地安裝在用戶期望德語文本的計算機上。

如果用戶沒有德語語言環境,可能不希望有本地化的數字和日期,所以忽略它(所以讓系統選擇正確的默認值,使用應該期望的)。 注意:在我的系統上,我使用 DK 語言環境作為日期,因為我更喜歡 ISO 表示法 (2020-11-26) 而不是德語日期。 在 Windows 上,我傾向於將 select ',' 作為列表分隔符(而不是 ';',因為它很方便,所以我可以復制粘貼 excel 公式)。 我希望程序尊重我的語言環境選擇,而不是選擇他們的語言環境。

顯然有例外(答案的第一部分):您為用戶提供數據(例如 web 服務器),因此您只關心系統本地的系統消息(和日志),而不是服務數據。 或學習語言的程序(可能不需要安裝語言環境,開始課程,但可能無論如何都需要安裝正確的語言環境,只是因為需要輸入元音變音(德語)或漢字(日語)。

所以:對於跨平台程序,只使用用戶期望的,所以初始化用戶選擇的語言環境。 所以使用本地化的日期、數字。 但不要強制使用語言環境。 如果您需要向外部人員(如網絡服務器)提供數據,請使用 CLDR(系統語言環境......對於此類任務不太好)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM