|
9 | 9 | * Common User Interface state holder and changer. |
10 | 10 | */ |
11 | 11 |
|
| 12 | +import _ = require('lodash'); |
12 | 13 | import ui_constants = require('../../interfaces/ui'); |
13 | 14 | import background_ui = require('./background_ui'); |
14 | 15 | import CoreConnector = require('./core_connector'); |
@@ -78,6 +79,12 @@ export function getImageData(userId: string, oldImageData: string, |
78 | 79 | jdenticon.toSvg(userIdHash, 100).replace(/#/g, '%23') + '\''; |
79 | 80 | } |
80 | 81 |
|
| 82 | + |
| 83 | +/* Suppress `error TS2339: Property 'languages' does not exist on type |
| 84 | + * 'Navigator'` triggered by `navigator.languages` reference below. |
| 85 | + */ |
| 86 | +declare var navigator :any; |
| 87 | + |
81 | 88 | /** |
82 | 89 | * The User Interface class. |
83 | 90 | * |
@@ -1071,6 +1078,21 @@ export class UserInterface implements ui_constants.UiApi { |
1071 | 1078 | this.model.networkNames = state.networkNames; |
1072 | 1079 | this.model.cloudProviderNames = state.cloudProviderNames; |
1073 | 1080 | this.availableVersion = state.availableVersion; |
| 1081 | + if (!state.globalSettings.language) { |
| 1082 | + // Set state.globalSettings.language based on browser settings: |
| 1083 | + // Choose the first language in navigator.languages we have available. |
| 1084 | + let lang :string; |
| 1085 | + try { |
| 1086 | + lang = _(navigator.languages).map((langCode :string) => { |
| 1087 | + return langCode.substring(0, 2).toLowerCase(); // Normalize |
| 1088 | + }).find((langCode :string) => { // Return first lang we have available. |
| 1089 | + return _.includes(translator_module.i18n_languagesAvailable, langCode); |
| 1090 | + }); |
| 1091 | + } catch (e) { |
| 1092 | + lang = 'en'; |
| 1093 | + } |
| 1094 | + state.globalSettings.language = lang || 'en'; |
| 1095 | + } |
1074 | 1096 | if (state.globalSettings.language !== this.model.globalSettings.language) { |
1075 | 1097 | this.updateLanguage(state.globalSettings.language); |
1076 | 1098 | } |
|
0 commit comments