Ich versuche, Go-Code zu schreiben, der überprüft, ob eine Zeichenfolge ein gültiges Gebietsschema darstellt.Validate Locale Zeichenfolge in Golang
import "golang.org/x/text/language"
locale := "en"
tag, err := language.Parse(locale)
if err != nil {
return errors.New("Invalid locale: " + locale)
}
Ich glaube, das sollte funktionieren, und es scheint die meiste Zeit zu arbeiten, aber es gibt mir nicht immer einen Fehler, wenn ich es erwarten: Von der Dokumentation, habe ich hier bekommen . Zum Beispiel, wenn ich sage locale := "bcd"
bekomme ich keinen Fehler.
Was fehlt mir hier?
Könnte es sein, dass du verwirrst * valide * locale strings mit Strings zur Identifizierung von Locales * dem Paket bekannt? * Ich meine, "bcd" sieht für mich wie ein vollkommen legaler Locale-Name aus. Die Regeln für die Gebietsschemabenennung, die im entsprechenden RFC definiert sind, sind kompliziert, aber sie stellen keine Einschränkung für die vordefinierten Gebietsschema-Namen dar (und das wäre eine dumme Sache). – kostix
Also, wenn Sie diese Dinge wirklich verwechseln, würde ich empfehlen, in den Quellcode des Pakets einzutauchen, um zu sehen, wie Sie einen vom Benutzer angegebenen Gebietsschema-Namen mit der Liste der Länder vergleichen können, die dem Paket bekannt sind. – kostix
können Sie diese Datei kopieren und in Ihr Paket einfügen und nach Belieben bearbeiten https://github.com/golang/text/blob/master/language/tables.go – Plato