2016-06-09 131 views
2

我正在嘗試編寫Go代碼來檢查字符串是否代表有效的語言環境。從文檔,我已經得到了到這裏:驗證Golang中的語言環境字符串

import "golang.org/x/text/language" 

locale := "en" 
tag, err := language.Parse(locale) 
if err != nil { 
    return errors.New("Invalid locale: " + locale) 
} 

我認爲這應該工作,它似乎工作的大部分時間,但它並不總是給我一個錯誤,當我期望它。例如,如果我說locale := "bcd"我沒有收到錯誤。

我在這裏錯過了什麼?

+0

它可能是你混淆*有效的*語言環境字符串與標識語言環境*已知的包* *我的意思是,「bcd」看起來像一個完全合法的語言環境名稱給我。在相應的RFC中定義的語言環境命名規則很複雜,但是它們對預定義的語言環境名稱沒有任何限制(這將是一件愚蠢的事情)。 – kostix

+0

因此,如果確實將這些內容混淆了,我建議深入探究包的源代碼,以瞭解如何將用戶提供的語言環境名稱與包已知的語言環境列表進行比較。 – kostix

+0

你可以將這個文件複製並粘貼到你的軟件包中並進行編輯以品嚐https://github.com/golang/text/blob/master/language/tables.go – Plato

回答

4

bcd是North Babar語言的有效ISO 639-3語言代碼,並且通過擴展它是一個有效的語言環境名稱。

相關問題