I18n: Default regional format to Accept-Language header value (#108468)
* I18n: Default regional format to Accept-Language header value * comment * rejigger * rejigger preferences
This commit is contained in:
+27
-7
@@ -69,8 +69,18 @@ func (hs *HTTPServer) setIndexViewData(c *contextmodel.ReqContext) (*dtos.IndexV
|
||||
// Locale is used for some number and date/time formatting, whereas language is used just for
|
||||
// translating words in the interface
|
||||
acceptLangHeader := c.Req.Header.Get("Accept-Language")
|
||||
acceptLangHeaderFirstValue := ""
|
||||
|
||||
if len(acceptLangHeader) > 0 {
|
||||
parts := strings.Split(acceptLangHeader, ",")
|
||||
acceptLangHeaderFirstValue = parts[0]
|
||||
}
|
||||
|
||||
locale := "en-US" // default to en formatting, but use the accept-lang header or user's preference
|
||||
var regionalFormat string
|
||||
if acceptLangHeaderFirstValue != "" {
|
||||
locale = acceptLangHeaderFirstValue
|
||||
}
|
||||
|
||||
language := "" // frontend will set the default language
|
||||
urlPrefs := getURLPrefs(c)
|
||||
|
||||
@@ -80,17 +90,27 @@ func (hs *HTTPServer) setIndexViewData(c *contextmodel.ReqContext) (*dtos.IndexV
|
||||
language = prefs.JSONData.Language
|
||||
}
|
||||
|
||||
if len(acceptLangHeader) > 0 {
|
||||
parts := strings.Split(acceptLangHeader, ",")
|
||||
locale = parts[0]
|
||||
}
|
||||
|
||||
var regionalFormat string
|
||||
if hs.Features.IsEnabled(c.Req.Context(), featuremgmt.FlagLocaleFormatPreference) {
|
||||
regionalFormat = "en" // default to "en", not "en-US", matching the regionalFormat code
|
||||
regionalFormat = "en"
|
||||
|
||||
// We default the regional format (locale) to the Accept-Language header rather than the language preference
|
||||
// mainly because we want to avoid defaulting to en-US for most users who have not set a preference, and we
|
||||
// don't have more specific English language preferences yet.
|
||||
|
||||
// Regional format preference order (from most-preferred to least):
|
||||
// 1. URL parameter
|
||||
// 2. regionalFormat User preference
|
||||
// 3. Accept-Language header
|
||||
// 4. Language preference
|
||||
if urlPrefs.RegionalFormat != "" {
|
||||
regionalFormat = urlPrefs.RegionalFormat
|
||||
} else if prefs.JSONData.RegionalFormat != "" {
|
||||
regionalFormat = prefs.JSONData.RegionalFormat
|
||||
} else if acceptLangHeaderFirstValue != "" {
|
||||
regionalFormat = acceptLangHeaderFirstValue
|
||||
} else if language != "" {
|
||||
regionalFormat = language
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user