@@ -26,8 +26,6 @@ LocalComponents.Page {
2626 title: i18n.tr("Language")
2727 forwardButtonSourceComponent: forwardButton
2828
29− readonly property string defaultLanguage: "en" // default language
30−
3129 UbuntuLanguagePlugin {
3230 id: plugin
3331 }
@@ -41,26 +39,38 @@ LocalComponents.Page {
4139 Connections {
4240 target: modemManager
4341 onModemsChanged: {
44− print("Modems changed")
45− init()
42+ print("Modems changed");
43+ init();
4644 }
4745 }
4846
4947 function init()
5048 {
51− var detectedLangs = []
49+ var detectedLang = "";
50+ // try to detect the language from the SIM card
5251 if (simManager0.present && simManager0.preferredLanguages.length > 0) {
53− detectedLangs = simManager0.preferredLanguages;
54− print("SIM 0 detected langs:", detectedLangs);
52+ detectedLang = simManager0.preferredLanguages[0];
53+ print("SIM 0 detected lang:", detectedLang);
5554 } else if (simManager1.present && simManager1.preferredLanguages.length > 0) {
56− detectedLangs = simManager1.preferredLanguages;
57− print("SIM 1 detected langs:", detectedLangs);
55+ detectedLang = simManager1.preferredLanguages[0];
56+ print("SIM 1 detected lang:", detectedLang);
57+ } else if (plugin.currentLanguage != -1) {
58+ detectedLang = plugin.currentLanguage;
59+ print("Using current language", plugin.currentLanguage, "as default");
5860 } else {
59− print("No lang detected, falling back to default:", defaultLanguage);
60− detectedLangs = [defaultLanguage]; // fallback to default lang
61+ print("No lang detected, falling back to default (en_US)");
62+ detectedLang = "en_US"; // fallback to default lang
6163 }
6264
63− //populateModel(false, detectedLangs)
65+ // preselect the detected language
66+ for (var i = 0; i < plugin.languageCodes.length; i++) {
67+ var code = plugin.languageCodes[i].split(".")[0]; // remove the encoding part, after dot (en_US.utf8 -> en_US)
68+ if (detectedLang === code) {
69+ languagesListView.currentIndex = i;
70+ languagesListView.positionViewAtIndex(i, ListView.Center);
71+ break;
72+ }
73+ }
6474 }
6575
6676 Column {
@@ -71,7 +81,7 @@ LocalComponents.Page {
7181 id: languagesListView
7282 boundsBehavior: Flickable.StopAtBounds
7383 clip: true
74− currentIndex: plugin.currentLanguage
84+ currentIndex: -1
7585 snapMode: ListView.SnapToItem
7686
7787 anchors {
@@ -84,7 +94,7 @@ LocalComponents.Page {
8494 model: plugin.languageNames
8595
8696 delegate: ListItem {
87− id: itemDelegate;
97+ id: itemDelegate
8898
8999 readonly property bool isCurrent: index === ListView.view.currentIndex
90100
@@ -93,8 +103,8 @@ LocalComponents.Page {
93103 text: modelData
94104
95105 anchors {
96− left: parent.left;
97− verticalCenter: parent.verticalCenter;
106+ left: parent.left
107+ verticalCenter: parent.verticalCenter
98108 }
99109
100110 fontSize: "medium"
@@ -134,7 +144,7 @@ LocalComponents.Page {
134144 System.updateSessionLocale(plugin.languageCodes[plugin.currentLanguage]);
135145 }
136146 i18n.language = plugin.languageCodes[plugin.currentLanguage]; // re-notify of change after above call (for qlocale change)
137− root.countryCode = plugin.languageCodes[plugin.currentLanguage].split('_')[1].split('.')[0] // extract the country code, save it for the timezone page
147+ root.countryCode = plugin.languageCodes[plugin.currentLanguage].split('_')[1].split('.')[0]; // extract the country code, save it for the timezone page
138148 pageStack.next();
139149 }
140150 }