Merge lp:~dpm/telegram-app/telegram-app-dev-i18nizedates into lp:telegram-app/app-dev

Proposed by David Planella
Status: Merged
Approved by: MichaƂ Karnicki
Approved revision: 315
Merged at revision: 315
Proposed branch: lp:~dpm/telegram-app/telegram-app-dev-i18nizedates
Merge into: lp:telegram-app/app-dev
Prerequisite: lp:~dpm/telegram-app/app-dev-notypingsplit
Diff against target: 171 lines (+39/-18)
7 files modified
components/TelegramDelegate.qml (+1/-1)
components/TelegramDialogsListItem.qml (+1/-1)
js/time.js (+32/-11)
ui/AddContactPage.qml (+1/-1)
ui/DialogPage.qml (+2/-2)
ui/ProfilePage.qml (+1/-1)
ui/SettingsPage.qml (+1/-1)
To merge this branch: bzr merge lp:~dpm/telegram-app/telegram-app-dev-i18nizedates
Reviewer Review Type Date Requested Status
libqtelegram team Pending
Review via email: mp+256767@code.launchpad.net

This proposal supersedes a proposal from 2015-04-20.

Description of the change

- Add internationalization to dates
- Improve internationalization of "last seen" string

To post a comment you must log in.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'components/TelegramDelegate.qml'
2--- components/TelegramDelegate.qml 2015-04-10 14:46:33 +0000
3+++ components/TelegramDelegate.qml 2015-04-20 05:18:31 +0000
4@@ -17,7 +17,7 @@
5 property bool isRead: false
6
7 property bool isNewDay: false
8- property string newDayText: Time.formatSection(messageDate * 1000)
9+ property string newDayText: Time.formatSection(i18n, messageDate * 1000)
10
11 property bool isAction: false
12 property string actionType: TLMessageAction.TypeMessageActionEmpty
13
14=== modified file 'components/TelegramDialogsListItem.qml'
15--- components/TelegramDialogsListItem.qml 2015-04-20 05:18:30 +0000
16+++ components/TelegramDialogsListItem.qml 2015-04-20 05:18:31 +0000
17@@ -37,7 +37,7 @@
18 property string senderName: ""
19 property int unreadCount: 0
20 property int messageDate: 0
21- property string time: Time.format(messageDate * 1000)
22+ property string time: Time.format(i18n, messageDate * 1000)
23
24 property string subtitle: {
25 if (isTyping) {
26
27=== modified file 'js/time.js'
28--- js/time.js 2014-10-09 21:13:59 +0000
29+++ js/time.js 2015-04-20 05:18:31 +0000
30@@ -3,13 +3,19 @@
31 var MILLIS_IN_DAY = 1000 * 60 * 60 * 24;
32 var MILLIS_IN_WEEK = 7 * MILLIS_IN_DAY;
33
34-function format(time) {
35+function format(i18n, time) {
36 var date = new Date(time);
37 var today = new Date();
38+ // TRANSLATORS: localized time string, see available formats at
39+ // http://doc.qt.io/qt-5/qml-qtqml-qt.html#formatDateTime-method
40+ var timeFormatted = Qt.formatTime(date, i18n.tr("hh:mm"));
41+ // TRANSLATORS: localized date string, see available formats at
42+ // http://doc.qt.io/qt-5/qml-qtqml-qt.html#formatDateTime-method
43+ var dateFormatted = Qt.formatDate(date, i18n.tr("MMM d"));
44
45 var isToday = date.getDate() === today.getDate();
46 if (isToday) {
47- return Qt.formatTime(date, "hh:mm");
48+ return timeFormatted;
49 } else {
50 var oneWeekAgo = new Date(today.getTime() - MILLIS_IN_WEEK);
51 var isLessThanWeek =
52@@ -19,34 +25,49 @@
53 return Qt.formatDate(date, "ddd");
54 }
55 }
56- return Qt.formatDate(date, "MMM d");
57+ return dateFormatted;
58 }
59
60-function formatSection(time) {
61+function formatSection(i18n, time) {
62 var date = new Date(time);
63+ // TRANSLATORS: localized date string, see available formats at
64+ // http://doc.qt.io/qt-5/qml-qtqml-qt.html#formatDateTime-method
65+ var dateFormatted = Qt.formatDate(date, i18n.tr("MMM d"));
66
67- return Qt.formatDate(date, "MMMM d");
68+ return dateFormatted;
69 }
70
71-function formatLastSeen(time) {
72+function formatLastSeen(i18n, time) {
73 var date = new Date(time);
74 var today = new Date();
75 var yesterday = new Date(today - MILLIS_IN_DAY);
76+ // TRANSLATORS: localized time string, see available formats at
77+ // http://doc.qt.io/qt-5/qml-qtqml-qt.html#formatDateTime-method
78+ var timeFormatted = Qt.formatTime(date, i18n.tr("hh:mm"));
79+ // TRANSLATORS: localized date string, see available formats at
80+ // http://doc.qt.io/qt-5/qml-qtqml-qt.html#formatDateTime-method
81+ var dateFormatted = Qt.formatDate(date, i18n.tr("MMM d"));
82
83 var isToday = date.getDate() === today.getDate();
84 if (isToday) {
85- return "today at " + Qt.formatTime(date, "hh:mm");
86+ // TRANSLATORS %1 refers to a time of the day
87+ return i18n.tr("today at %1").arg(timeFormatted);
88 } else if (date.getDate() === yesterday.getDate()) {
89- return "yesterday at " + Qt.formatTime(date, "hh:mm");
90+ // TRANSLATORS %1 refers to a time of the day
91+ return i18n.tr("yesterday at %1").arg(timeFormatted);
92 } else {
93- return Qt.formatDate(date, "MMM d") + " at " + Qt.formatTime(date, "hh:mm");
94+ // TRANSLATORS %1 refers to a date, and %1 to a time of the day
95+ return i18n.tr("%1 at %2").arg(dateFormatted).arg(timeFormatted);
96 }
97 }
98
99-function formatTimeOnly(time) {
100+function formatTimeOnly(i18n, time) {
101 var date = new Date(time);
102+ // TRANSLATORS: localized time string, see available formats at
103+ // http://doc.qt.io/qt-5/qml-qtqml-qt.html#formatDateTime-method
104+ var timeFormatted = Qt.formatTime(date, i18n.tr("hh:mm"));
105
106- return Qt.formatTime(date, "hh:mm");
107+ return timeFormatted;
108 }
109
110 function areSameDay(date1, date2) {
111
112=== modified file 'ui/AddContactPage.qml'
113--- ui/AddContactPage.qml 2015-04-01 21:01:52 +0000
114+++ ui/AddContactPage.qml 2015-04-20 05:18:31 +0000
115@@ -333,7 +333,7 @@
116 if (contact.hasOwnProperty("online") && contact.online) {
117 lastSeen = i18n.tr("online");
118 } else if (contact.hasOwnProperty("lastSeenOnline")) {
119- var lastSeenTime = Time.formatLastSeen(contact.lastSeenOnline * 1000);
120+ var lastSeenTime = Time.formatLastSeen(i18n, contact.lastSeenOnline * 1000);
121 lastSeen = i18n.tr("last seen %1").arg(lastSeenTime);
122 }
123
124
125=== modified file 'ui/DialogPage.qml'
126--- ui/DialogPage.qml 2015-04-20 05:18:30 +0000
127+++ ui/DialogPage.qml 2015-04-20 05:18:31 +0000
128@@ -31,7 +31,7 @@
129 pageSubtitle: {
130 var lastSeenOnline = dialogItem.lastSeenOnline;
131 if (lastSeenOnline !== 0) {
132- var lastSeenString = Time.formatLastSeen(lastSeenOnline * 1000);
133+ var lastSeenString = Time.formatLastSeen(i18n, lastSeenOnline * 1000);
134 return i18n.tr("last seen %1").arg(lastSeenString);
135 } else {
136 return "";
137@@ -540,7 +540,7 @@
138 }
139 return "";
140 }
141- time: Time.formatTimeOnly(model.date * 1000)
142+ time: Time.formatTimeOnly(i18n, model.date * 1000)
143 thumbnail: isAction ? "" : model.thumbnail
144 photo: model.photo
145 video: model.video
146
147=== modified file 'ui/ProfilePage.qml'
148--- ui/ProfilePage.qml 2015-04-10 14:46:33 +0000
149+++ ui/ProfilePage.qml 2015-04-20 05:18:31 +0000
150@@ -86,7 +86,7 @@
151 if (profileModel.isOnline) {
152 return i18n.tr("online");
153 } else if (profileModel.lastSeen > 0) {
154- var lastSeenString = Time.formatLastSeen(profileModel.lastSeen * 1000);
155+ var lastSeenString = Time.formatLastSeen(i18n, profileModel.lastSeen * 1000);
156 return i18n.tr("last seen %1").arg(lastSeenString);
157 } else {
158 return "";
159
160=== modified file 'ui/SettingsPage.qml'
161--- ui/SettingsPage.qml 2015-04-09 11:59:22 +0000
162+++ ui/SettingsPage.qml 2015-04-20 05:18:31 +0000
163@@ -19,7 +19,7 @@
164 return i18n.tr("online");
165 } else {
166 if (lastSeenOnline !== "") {
167- return i18n.tr("last seen %1").arg(Time.formatLastSeen(lastSeenOnline * 1000));
168+ return i18n.tr("last seen %1").arg(Time.formatLastSeen(i18n, lastSeenOnline * 1000));
169 } else {
170 return "";
171 }

Subscribers

People subscribed via source and target branches