@@ -26,8 +26,6 @@ LocalComponents.Page {
26 title: i18n.tr("Language")
26 title: i18n.tr("Language")
27 forwardButtonSourceComponent: forwardButton
27 forwardButtonSourceComponent: forwardButton
29− readonly property string defaultLanguage: "en" // default language
31 UbuntuLanguagePlugin {
29 UbuntuLanguagePlugin {
32 id: plugin
30 id: plugin
@@ -41,26 +39,38 @@ LocalComponents.Page {
41 Connections {
39 Connections {
42 target: modemManager
40 target: modemManager
43 onModemsChanged: {
41 onModemsChanged: {
44− print("Modems changed")
42+ print("Modems changed");
49 function init()
47 function init()
51− var detectedLangs = []
49+ var detectedLang = "";
50+ // try to detect the language from the SIM card
52 if (simManager0.present && simManager0.preferredLanguages.length > 0) {
51 if (simManager0.present && simManager0.preferredLanguages.length > 0) {
53− detectedLangs = simManager0.preferredLanguages;
52+ detectedLang = simManager0.preferredLanguages[0];
54− print("SIM 0 detected langs:", detectedLangs);
53+ print("SIM 0 detected lang:", detectedLang);
55 } else if (simManager1.present && simManager1.preferredLanguages.length > 0) {
54 } else if (simManager1.present && simManager1.preferredLanguages.length > 0) {
56− detectedLangs = simManager1.preferredLanguages;
55+ detectedLang = simManager1.preferredLanguages[0];
57− print("SIM 1 detected langs:", detectedLangs);
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");
59− print("No lang detected, falling back to default:", defaultLanguage);
61+ print("No lang detected, falling back to default (en_US)");
60− detectedLangs = [defaultLanguage]; // fallback to default lang
62+ detectedLang = "en_US"; // fallback to default lang
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,7 +81,7 @@ LocalComponents.Page {
71 id: languagesListView
81 id: languagesListView
72 boundsBehavior: Flickable.StopAtBounds
82 boundsBehavior: Flickable.StopAtBounds
73 clip: true
83 clip: true
74− currentIndex: plugin.currentLanguage
84+ currentIndex: -1
75 snapMode: ListView.SnapToItem
85 snapMode: ListView.SnapToItem
@@ -84,7 +94,7 @@ LocalComponents.Page {
84 model: plugin.languageNames
94 model: plugin.languageNames
86 delegate: ListItem {
96 delegate: ListItem {
87− id: itemDelegate;
97+ id: itemDelegate
89 readonly property bool isCurrent: index === ListView.view.currentIndex
99 readonly property bool isCurrent: index === ListView.view.currentIndex
@@ -93,8 +103,8 @@ LocalComponents.Page {
93 text: modelData
103 text: modelData
95 anchors {
105 anchors {
96− left: parent.left;
106+ left: parent.left
97− verticalCenter: parent.verticalCenter;
107+ verticalCenter: parent.verticalCenter
100 fontSize: "medium"
110 fontSize: "medium"
@@ -134,7 +144,7 @@ LocalComponents.Page {
134 System.updateSessionLocale(plugin.languageCodes[plugin.currentLanguage]);
144 System.updateSessionLocale(plugin.languageCodes[plugin.currentLanguage]);
136 i18n.language = plugin.languageCodes[plugin.currentLanguage]; // re-notify of change after above call (for qlocale change)
146 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
138 pageStack.next();
148 pageStack.next();