Skip to content

Commit 0b649b3

Browse files
timbltimea-solid
authored andcommitted
Always add on the deafult languages in case the preferred languages fail, to prevent random choice
1 parent bfd04f9 commit 0b649b3

1 file changed

Lines changed: 10 additions & 5 deletions

File tree

src/widgets/forms/autocomplete/language.ts

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ export interface Binding {
2424

2525
export const languageCodeURIBase = 'https://www.w3.org/ns/iana/language-code/' /// @@ unsupported on the web (2021)
2626

27-
export const defaultPreferedLangages = ['en', 'fr', 'de', 'it']
27+
export const defaultPreferedLangages = ['en', 'fr', 'de', 'it', 'ar']
2828

2929
export async function getPreferredLanagugesFor (person: NamedNode) {
3030
await kb.fetcher.load(person.doc())
@@ -60,20 +60,25 @@ export async function getPreferredLanagugesFor (person: NamedNode) {
6060
*/
6161
export async function getPreferredLanguages () {
6262
// In future: cache in the login session for speed, but get from profile and private prefs
63+
// We append the defaults so if someone's first choice is not available they don't get something very obscure
64+
// See https://github.com/solid/solidos/issues/42
65+
function addDefaults (array) {
66+
return array.concat(defaultPreferedLangages.filter(code => !array.includes(code)))
67+
}
6368
const me = await authn.currentUser() as NamedNode
6469
if (me) { // If logged in
6570
const solidLanguagePrefs = await getPreferredLanagugesFor(me)
66-
if (solidLanguagePrefs) return solidLanguagePrefs
71+
if (solidLanguagePrefs) return addDefaults(solidLanguagePrefs)
6772
}
6873
if (typeof navigator !== 'undefined') { // use browser settings
6974
if (navigator.languages) {
70-
return navigator.languages.map(longForm => longForm.split('-')[0])
75+
return addDefaults(navigator.languages.map(longForm => longForm.split('-')[0]))
7176
}
7277
if (navigator.language) {
73-
return [navigator.language.split('-')[0]]
78+
return addDefaults([navigator.language.split('-')[0]])
7479
}
7580
}
76-
return defaultPreferedLangages // @@ or null?
81+
return defaultPreferedLangages
7782
}
7883

7984
/* From an array of bindings with a names for each row,

0 commit comments

Comments
 (0)