2016-09-06 34 views
0

我目前正在開發一個支持多種語言的系統。我想在數據庫中儘可能精確地指定這些語言,以備將來進行集成。 (是的,我知道這是一個有點YAGNI)如何在存儲字符串時指定語言?

我已經發現了幾個方法來定義語言

  • nb-NO
  • nb_NO
  • nb-no
  • nb_no
  • nb

這些都可以表示「挪威博克馬爾」。哪一個,如果有的話,是最正確的?

ArchLinux Wiki上的Locale文章指定的區域設置爲language[_territory][.codeset][@modifier]。我猜想codesetmodifier只與輸入有關。但是language是最低限度,territory可能會很好,我們應該實施有關貨幣和小數點等文化差異。

我是否在推翻它?

回答

0

看BCP 47 https://tools.ietf.org/html/bcp47

在這個時代,你需要在至少支持的語言,文字,區(唯一的語言是強制性的存在)

這在很大程度上取決於什麼你使用這個標籤。 如果是口語內容,你可能會關心方言(例如廣東話和普通話),但不是腳本。以書面形式,你會關心腳本(繁體中文或簡體中文),而不是方言。

這也很重要很多,你用它來處理事物的完整的堆棧。您可以使用減號作爲分隔符,使用祖先風格的id或-u-擴展名(請參閱bcp),然後發現您使用的是一種編程語言,它會「扼殺」它。或者你用希伯來語的「he」,但是你的語言(咳嗽Java咳嗽)想要棄用的「iw」

所以你可能會決定使用相同的locale id作爲技術堆棧,或者有一個「轉換層」。 如果您希望通過多種技術訪問某些東西,那麼轉換層是您唯一(合理的)選項。