Merge lp:~dpm/ubuntu-rssreader-app/enable-translations into lp:~ubuntu-shorts-dev/ubuntu-rssreader-app/trunk
- enable-translations
- Merge into trunk
Proposed by
David Planella
Status: | Merged | ||||
---|---|---|---|---|---|
Approved by: | Roman Shchekin | ||||
Approved revision: | 79 | ||||
Merged at revision: | 72 | ||||
Proposed branch: | lp:~dpm/ubuntu-rssreader-app/enable-translations | ||||
Merge into: | lp:~ubuntu-shorts-dev/ubuntu-rssreader-app/trunk | ||||
Diff against target: |
781 lines (+487/-66) 18 files modified
.bzrignore (+2/-1) README.translations (+36/-0) dateutils.js (+6/-0) debian/changelog (+7/-0) debian/control (+9/-9) debian/rssreader-app.install (+9/-9) debian/rules (+9/-0) feeds/AppendFeedPage.qml (+2/-2) feeds/ChooseTopicPage.qml (+1/-1) feeds/CreateTopicPage.qml (+1/-1) feeds/ManageFeedsPage.qml (+1/-1) listview/ArticleListPage.qml (+1/-1) po/po.pro (+44/-33) po/rssreader-app.pot (+336/-0) rssreader-app (+1/-1) rssreader-app.desktop (+3/-3) rssreader-app.qmlproject (+16/-1) tests/autopilot/ubuntu_rssreader_app/tests/__init__.py (+3/-3) |
||||
To merge this branch: | bzr merge lp:~dpm/ubuntu-rssreader-app/enable-translations | ||||
Related bugs: |
|
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Ubuntu Phone Apps Jenkins Bot | continuous-integration | Approve | |
Ubuntu Shorts Developers | Pending | ||
Review via email: mp+187690@code.launchpad.net |
Commit message
Enable the translations infrastructure: expose translations in Launchpad and build/ship them in the Debian package.
Description of the change
NOTE: if you do a review, feel free to approve/disapprove in the comments, but do not top-approve yet, as this needs to be coordinated with the package name change in the seeds.
Enable the translations infrastructure: expose translations in Launchpad and build/ship them in the Debian package.
To post a comment you must log in.
Revision history for this message
Ubuntu Phone Apps Jenkins Bot (ubuntu-phone-apps-jenkins-bot) wrote : | # |
review:
Needs Fixing
(continuous-integration)
Revision history for this message
Ubuntu Phone Apps Jenkins Bot (ubuntu-phone-apps-jenkins-bot) : | # |
review:
Approve
(continuous-integration)
Revision history for this message
Joey Chan (qqworini) wrote : | # |
Oh no... Roman, didn't u read the "Description of the Change" ? David said "do not top-approve" because of some reasons
Revision history for this message
David Planella (dpm) wrote : | # |
Yes, please read the comments on the next occasion.
We'll sort it out, it's all good, but we need to do some extra coordination to get this landed, as it changes the package name.
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === modified file '.bzrignore' |
2 | --- .bzrignore 2013-08-20 15:17:56 +0000 |
3 | +++ .bzrignore 2013-09-26 09:05:34 +0000 |
4 | @@ -5,4 +5,5 @@ |
5 | debian/*.debhelper.log |
6 | debian/*.substvars |
7 | RE:\.?[^.]+ |
8 | -./ubuntu-rssreader-app.qmlproject |
9 | +.build |
10 | +po/Makefile |
11 | |
12 | === added file 'README.translations' |
13 | --- README.translations 1970-01-01 00:00:00 +0000 |
14 | +++ README.translations 2013-09-26 09:05:34 +0000 |
15 | @@ -0,0 +1,36 @@ |
16 | +# Updating translations |
17 | + |
18 | +Translations for the Shorts app happen in [Launchpad Translations][] and |
19 | +are automatically committed daily on the trunk branch in the po/ folder. |
20 | + |
21 | +They are then built and installed as part of the package build, so that |
22 | +developers don't really need to worry about them. |
23 | + |
24 | +However, there is one task that needs to be taken care of: exposing new |
25 | +translatable messages to translators. So whenever you add new translatable |
26 | +messages in the code, make sure to follow these steps: |
27 | + |
28 | + 1. Change directory to the po/ folder: `cd po` |
29 | + 2. Update the translations template: `qmake && make pot` |
30 | + 3. Commit the generated .pot file: `bzr commit -m"Updated translation template"` |
31 | + 4. Push the branch and send a merge proposal as usual |
32 | + |
33 | +And that's it, once the branch lands Launchpad should take care of all the rest! |
34 | + |
35 | +# Behind the scenes |
36 | + |
37 | +Behind the scenes, whenever the po/*.pot file (also known as translations template) |
38 | +is committed to trunk Launchpad reads it and updates the translatable strings |
39 | +exposed in the web UI. This will enable translators to work on the new strings. |
40 | +The translations template contains all translatable strings that have been |
41 | +extracted from the source code files. |
42 | + |
43 | +Launchpad will then store translations in its database and will commit them daily |
44 | +in the form of textual po/*.po files to trunk. The PO files are also usually |
45 | +referred to as the translations files. You'll find a translation file for each |
46 | +language the app has got at least a translated message available for. |
47 | + |
48 | +Translations for core apps follow the standard [gettext format]. |
49 | + |
50 | + [Launchpad Translations]: https://translations.launchpad.net/ubuntu-rssreader-app |
51 | + [gettext format]: https://www.gnu.org/software/gettext/ |
52 | |
53 | === modified file 'dateutils.js' |
54 | --- dateutils.js 2013-09-04 15:34:28 +0000 |
55 | +++ dateutils.js 2013-09-26 09:05:34 +0000 |
56 | @@ -34,6 +34,8 @@ |
57 | function formatRelativeTime(i18n, date) { |
58 | // fallback if none of the other formatters matched |
59 | function defaultFallbackFormat(then) { |
60 | + // TRANSLATORS: this is a time formatting string, |
61 | + // see http://qt-project.org/doc/qt-5.0/qtqml/qml-qtquick2-date.html#details for valid expressions |
62 | return Qt.formatDateTime(then, i18n.tr("MMMM d")) |
63 | } |
64 | |
65 | @@ -50,6 +52,8 @@ |
66 | } |
67 | this.format = function (now, then, diff) { |
68 | return i18n.tr("Yesterday at %1").arg( |
69 | + /* TRANSLATORS: this is a time formatting string, |
70 | + see http://qt-project.org/doc/qt-5.0/qtqml/qml-qtquick2-date.html#details for valid expressions */ |
71 | Qt.formatDateTime(then, i18n.tr("h:mm AP"))) |
72 | } |
73 | } |
74 | @@ -60,6 +64,8 @@ |
75 | return diff < 7 * DAY_LIMIT |
76 | } |
77 | this.format = function (now, then, diff) { |
78 | + // TRANSLATORS: this is a time formatting string, |
79 | + // see http://qt-project.org/doc/qt-5.0/qtqml/qml-qtquick2-date.html#details for valid expressions |
80 | return Qt.formatDateTime(then, i18n.tr("ddd, h:mm AP")); |
81 | } |
82 | } |
83 | |
84 | === modified file 'debian/changelog' |
85 | --- debian/changelog 2013-02-12 16:27:23 +0000 |
86 | +++ debian/changelog 2013-09-26 09:05:34 +0000 |
87 | @@ -1,3 +1,10 @@ |
88 | +ubuntu-rssreader-app (0.2) saucy; urgency=low |
89 | + |
90 | + * Added translations support, dropped ubuntu- prefix from desktop file |
91 | + and installation path |
92 | + |
93 | + -- David Planella <david.planella@ubuntu.com> Thu, 26 Sep 2013 09:29:27 +0200 |
94 | + |
95 | ubuntu-rssreader-app (0.1) raring; urgency=low |
96 | |
97 | * Initial release |
98 | |
99 | === modified file 'debian/control' |
100 | --- debian/control 2013-08-15 15:54:31 +0000 |
101 | +++ debian/control 2013-09-26 09:05:34 +0000 |
102 | @@ -1,30 +1,30 @@ |
103 | Source: ubuntu-rssreader-app |
104 | Priority: extra |
105 | Maintainer: Ubuntu App Cats <ubuntu-touch-coreapps@lists.launchpad.net> |
106 | -Build-Depends: debhelper (>= 9), |
107 | +Build-Depends: debhelper (>= 9) |
108 | Standards-Version: 3.9.4 |
109 | Section: misc |
110 | Homepage: https://launchpad.net/ubuntu-rssreader-app |
111 | Vcs-Bzr: https://code.launchpad.net/~ubuntu-rssreader-dev/ubuntu-rssreader-app/trunk |
112 | |
113 | -Package: ubuntu-rssreader-app |
114 | -Section: misc |
115 | +Package: rssreader-app |
116 | Architecture: all |
117 | -Depends: ${misc:Depends}, |
118 | +Depends: libqt5webkit5-qmlwebkitplugin, |
119 | qmlscene, |
120 | + qtdeclarative5-localstorage-plugin, |
121 | + qtdeclarative5-qtquick2-plugin, |
122 | qtdeclarative5-ubuntu-ui-toolkit-plugin | qt-components-ubuntu, |
123 | - qtdeclarative5-qtquick2-plugin, |
124 | qtdeclarative5-xmllistmodel-plugin, |
125 | - libqt5webkit5-qmlwebkitplugin, |
126 | - qtdeclarative5-localstorage-plugin, |
127 | + ${misc:Depends} |
128 | Description: RSS Reader application |
129 | Core RSS Reader application |
130 | |
131 | -Package: ubuntu-rssreader-app-autopilot |
132 | +Package: rssreader-app-autopilot |
133 | Architecture: all |
134 | Depends: libautopilot-qt, |
135 | libqt5test5, |
136 | + rssreader-app (= ${source:Version}), |
137 | ubuntu-ui-toolkit-autopilot, |
138 | - ubuntu-rssreader-app (= ${source:Version}) |
139 | + ${misc:Depends} |
140 | Description: Autopilot tests for RSS reader Application |
141 | This package contains the autopilot tests for the RSS reader |
142 | |
143 | === renamed file 'debian/ubuntu-rssreader-app-autopilot.install' => 'debian/rssreader-app-autopilot.install' |
144 | === renamed file 'debian/ubuntu-rssreader-app.install' => 'debian/rssreader-app.install' |
145 | --- debian/ubuntu-rssreader-app.install 2013-08-10 09:29:03 +0000 |
146 | +++ debian/rssreader-app.install 2013-09-26 09:05:34 +0000 |
147 | @@ -1,9 +1,9 @@ |
148 | -ubuntu-rssreader-app usr/bin/ |
149 | -ubuntu-rssreader-app.desktop usr/share/applications/ |
150 | -*.qml usr/share/ubuntu-rssreader-app/ |
151 | -*.png usr/share/ubuntu-rssreader-app/ |
152 | -*.js usr/share/ubuntu-rssreader-app/ |
153 | -feeds usr/share/ubuntu-rssreader-app/ |
154 | -listview usr/share/ubuntu-rssreader-app/ |
155 | -article_items usr/share/ubuntu-rssreader-app/ |
156 | -icons_tmp usr/share/ubuntu-rssreader-app/ |
157 | \ No newline at end of file |
158 | +*.js usr/share/rssreader-app/ |
159 | +*.png usr/share/rssreader-app/ |
160 | +*.qml usr/share/rssreader-app/ |
161 | +article_items usr/share/rssreader-app/ |
162 | +feeds usr/share/rssreader-app/ |
163 | +icons_tmp usr/share/rssreader-app/ |
164 | +listview usr/share/rssreader-app/ |
165 | +rssreader-app usr/bin/ |
166 | +rssreader-app.desktop usr/share/applications/ |
167 | |
168 | === modified file 'debian/rules' |
169 | --- debian/rules 2013-04-11 21:21:44 +0000 |
170 | +++ debian/rules 2013-09-26 09:05:34 +0000 |
171 | @@ -9,3 +9,12 @@ |
172 | |
173 | override_dh_install: |
174 | dh_install --fail-missing |
175 | + appname=rssreader-app; \ |
176 | + for pofile in $(shell find ./po -name "*.po"); do \ |
177 | + pofilename="$${pofile##*/}"; \ |
178 | + langcode="$${pofilename%.*}"; \ |
179 | + localedir="debian/$$appname/usr/share/locale/$$langcode/LC_MESSAGES"; \ |
180 | + mkdir -p $$localedir; \ |
181 | + mofile="$$localedir/$$appname.mo"; \ |
182 | + msgfmt -o $$mofile $$pofile; \ |
183 | + done |
184 | |
185 | === modified file 'feeds/AppendFeedPage.qml' |
186 | --- feeds/AppendFeedPage.qml 2013-09-21 09:27:59 +0000 |
187 | +++ feeds/AppendFeedPage.qml 2013-09-26 09:05:34 +0000 |
188 | @@ -106,7 +106,7 @@ |
189 | // No need to show dialog in case of abort. |
190 | if (result.responseStatus !== 0) { |
191 | PopupUtils.open(errorDialogComponent, appendFeedPage, |
192 | - {"text" : i18n.tr("Failed to perform search feeds by keywords"), |
193 | + {"text" : i18n.tr("Failed to perform a feed search by keyword"), |
194 | "title" : i18n.tr("Search failed")}) |
195 | console.log(JSON.stringify(result)) |
196 | } |
197 | @@ -133,7 +133,7 @@ |
198 | // No need to show dialog in case of abort. |
199 | if (result.responseStatus !== 0) { |
200 | PopupUtils.open(errorDialogComponent, appendFeedPage, |
201 | - {"text" : i18n.tr("Failed to perform search feed by url"), |
202 | + {"text" : i18n.tr("Failed to perform a feed search by URL"), |
203 | "title" : i18n.tr("Search failed")}) |
204 | console.log(JSON.stringify(result)) |
205 | } |
206 | |
207 | === modified file 'feeds/ChooseTopicPage.qml' |
208 | --- feeds/ChooseTopicPage.qml 2013-09-11 15:18:51 +0000 |
209 | +++ feeds/ChooseTopicPage.qml 2013-09-26 09:05:34 +0000 |
210 | @@ -120,7 +120,7 @@ |
211 | |
212 | if (dbResult.error) { |
213 | PopupUtils.open(errorDialogComponent, chooseTopicPage, |
214 | - {"text" : i18n.tr("Topic with such name already exists"), |
215 | + {"text" : i18n.tr("A topic with this name already exists"), |
216 | "title" : i18n.tr("Warning")}) |
217 | return |
218 | } |
219 | |
220 | === modified file 'feeds/CreateTopicPage.qml' |
221 | --- feeds/CreateTopicPage.qml 2013-08-19 19:38:53 +0000 |
222 | +++ feeds/CreateTopicPage.qml 2013-09-26 09:05:34 +0000 |
223 | @@ -57,7 +57,7 @@ |
224 | var dbResult = DB.addTag(topicName) |
225 | if (dbResult.error) { |
226 | PopupUtils.open(errorDialogComponent, createTopicPage, |
227 | - {"text" : i18n.tr("Topic with such name already exists"), |
228 | + {"text" : i18n.tr("A topic with this name already exists"), |
229 | "title" : i18n.tr("Warning")}) |
230 | return |
231 | } else { |
232 | |
233 | === modified file 'feeds/ManageFeedsPage.qml' |
234 | --- feeds/ManageFeedsPage.qml 2013-08-29 12:04:41 +0000 |
235 | +++ feeds/ManageFeedsPage.qml 2013-09-26 09:05:34 +0000 |
236 | @@ -344,7 +344,7 @@ |
237 | id: tfFeedUrl |
238 | anchors.horizontalCenter: parent.horizontalCenter |
239 | width: parent.width |
240 | - placeholderText: isForEdit? i18n.tr("Enter new name here...") : i18n.tr("Enter url here...") |
241 | + placeholderText: isForEdit? i18n.tr("Type a new name here...") : i18n.tr("Type a URL here...") |
242 | } |
243 | |
244 | Item { |
245 | |
246 | === modified file 'listview/ArticleListPage.qml' |
247 | --- listview/ArticleListPage.qml 2013-08-06 20:45:50 +0000 |
248 | +++ listview/ArticleListPage.qml 2013-09-26 09:05:34 +0000 |
249 | @@ -90,7 +90,7 @@ |
250 | Label { |
251 | id: lblEmptyBase |
252 | |
253 | - text: i18n.tr("There are no articles in selected feed") |
254 | + text: i18n.tr("There are no articles in the selected feed") |
255 | anchors.centerIn: parent |
256 | visible: articleListModel.count == 0 |
257 | fontSize: "large" |
258 | |
259 | === modified file 'po/po.pro' |
260 | --- po/po.pro 2013-02-12 16:18:48 +0000 |
261 | +++ po/po.pro 2013-09-26 09:05:34 +0000 |
262 | @@ -1,48 +1,59 @@ |
263 | +## This .pro file is used to create a Makefile with the necessary rules |
264 | +## to create an initial translations template and to update it whenever |
265 | +## there are new translatable strings in the project that are ready to be |
266 | +## exposed to translators |
267 | +## |
268 | +## See the ../README.translations file for more information |
269 | + |
270 | TEMPLATE = subdirs |
271 | |
272 | PROJECTNAME = $$system(basename ../*.qmlproject) |
273 | PROJECTNAME = $$replace(PROJECTNAME,.qmlproject,) |
274 | |
275 | -SOURCECODE = ../*.qml |
276 | +DESKTOPFILE = ../$${PROJECTNAME}.desktop |
277 | + |
278 | +SOURCECODE = ../*.qml \ |
279 | + ../*.js \ |
280 | + ../article_items/*.qml \ |
281 | + ../feeds/*.qml \ |
282 | + ../listview/*.qml |
283 | + |
284 | +BUILDDIR = ../.build |
285 | +DESKTOPFILETEMP = $${BUILDDIR}/$${PROJECTNAME}.desktop.js |
286 | |
287 | message("") |
288 | message(" Project Name: $$PROJECTNAME ") |
289 | message(" Source Code: $$SOURCECODE ") |
290 | message("") |
291 | -message(" run 'make pot' to generate the pot file from source code. ") |
292 | -message(" run 'make translate' to create a new translation (po) based on pot. ") |
293 | -message(" run 'make mo' to generate the mo files from po files. ") |
294 | -message(" run 'qmake; make install' to install the mo files. ") |
295 | +message(" Run 'make pot' to generate the pot file from source code. ") |
296 | message("") |
297 | |
298 | -## generate pot file 'make pot' |
299 | +## Generate pot file 'make pot' |
300 | potfile.target = pot |
301 | -potfile.commands = xgettext -o $${PROJECTNAME}.pot --package-name $${PROJECTNAME} --qt --c++ --add-comments=TRANSLATORS --keyword=tr $${SOURCECODE} |
302 | +potfile.commands = xgettext \ |
303 | + -o $${PROJECTNAME}.pot \ |
304 | + --copyright=\"Canonical Ltd. \" \ |
305 | + --package-name $${PROJECTNAME} \ |
306 | + --qt --c++ --add-comments=TRANSLATORS \ |
307 | + --keyword=tr --keyword=tr:1,2 \ |
308 | + $${SOURCECODE} $${DESKTOPFILETEMP} |
309 | +potfile.depends = desktopfile |
310 | QMAKE_EXTRA_TARGETS += potfile |
311 | |
312 | -## poedit target for new translations 'make translate' |
313 | -poedit.target = translate |
314 | -poedit.commands = cp messages.pot new_language.po; poedit new_language.po |
315 | -QMAKE_EXTRA_TARGETS += poedit |
316 | - |
317 | -## generate mo files 'make mo' |
318 | -mofiles.target = mo |
319 | -mofiles.commands = msgfmt *.po |
320 | -QMAKE_EXTRA_TARGETS += mofiles |
321 | - |
322 | -## Installation steps for mo files. 'make install' |
323 | -MO_FILES = $$system(ls *.mo) |
324 | - |
325 | -install_mo_commands = |
326 | -for(mo_file, MO_FILES) { |
327 | - mo_name = $$replace(mo_file,.mo,) |
328 | - mo_targetpath = $(INSTALL_ROOT)/usr/share/locale/$${mo_name}/LC_MESSAGES |
329 | - mo_target = $${mo_targetpath}/$${PROJECTNAME}.mo |
330 | - !isEmpty(install_mo_commands): install_mo_commands += && |
331 | - install_mo_commands += test -d $$mo_targetpath || mkdir -p $$mo_targetpath |
332 | - install_mo_commands += && cp $$mo_file $$mo_target |
333 | -} |
334 | - |
335 | -install.commands = $$install_mo_commands |
336 | -QMAKE_EXTRA_TARGETS += install |
337 | - |
338 | +## Do not use this rule directly. It's a dependency rule to |
339 | +## generate an intermediate .js file to extract translatable |
340 | +## strings from the .desktop file |
341 | +desktopfile.target = desktopfile |
342 | +desktopfile.commands = awk \'BEGIN { FS=\"=\" }; /Name/ {print \"var s = i18n.tr(\42\" \$$2 \"\42);\"}\' $${DESKTOPFILE} > $${DESKTOPFILETEMP} |
343 | +desktopfile.depends = makebuilddir |
344 | +QMAKE_EXTRA_TARGETS += desktopfile |
345 | + |
346 | +## Dependency rule to create the temporary build dir |
347 | +makebuilddir.target = makebuilddir |
348 | +makebuilddir.commands = mkdir -p $${BUILDDIR} |
349 | +QMAKE_EXTRA_TARGETS += makebuilddir |
350 | + |
351 | +## Rule to clean the products of the build |
352 | +clean.target = clean |
353 | +clean.commands = rm -Rf $${BUILDDIR} |
354 | +QMAKE_EXTRA_TARGETS += clean |
355 | |
356 | === added file 'po/rssreader-app.pot' |
357 | --- po/rssreader-app.pot 1970-01-01 00:00:00 +0000 |
358 | +++ po/rssreader-app.pot 2013-09-26 09:05:34 +0000 |
359 | @@ -0,0 +1,336 @@ |
360 | +# SOME DESCRIPTIVE TITLE. |
361 | +# Copyright (C) YEAR Canonical Ltd. |
362 | +# This file is distributed under the same license as the PACKAGE package. |
363 | +# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. |
364 | +# |
365 | +#, fuzzy |
366 | +msgid "" |
367 | +msgstr "" |
368 | +"Project-Id-Version: rssreader-app\n" |
369 | +"Report-Msgid-Bugs-To: \n" |
370 | +"POT-Creation-Date: 2013-09-26 09:12+0200\n" |
371 | +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" |
372 | +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" |
373 | +"Language-Team: LANGUAGE <LL@li.org>\n" |
374 | +"Language: \n" |
375 | +"MIME-Version: 1.0\n" |
376 | +"Content-Type: text/plain; charset=CHARSET\n" |
377 | +"Content-Transfer-Encoding: 8bit\n" |
378 | +"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" |
379 | + |
380 | +#: ../RssFeedPage.qml:50 |
381 | +msgid "Save" |
382 | +msgstr "" |
383 | + |
384 | +#: ../RssFeedPage.qml:50 |
385 | +msgid "Unsave" |
386 | +msgstr "" |
387 | + |
388 | +#: ../RssFeedPage.qml:73 ../listview/FeedListPage.qml:170 |
389 | +msgid "Open site" |
390 | +msgstr "" |
391 | + |
392 | +#: ../rssreader-app.qml:115 |
393 | +msgid "Refresh" |
394 | +msgstr "" |
395 | + |
396 | +#: ../rssreader-app.qml:129 |
397 | +msgid "Grid View" |
398 | +msgstr "" |
399 | + |
400 | +#: ../rssreader-app.qml:129 |
401 | +msgid "List view" |
402 | +msgstr "" |
403 | + |
404 | +#: ../rssreader-app.qml:142 |
405 | +msgid "Add reads" |
406 | +msgstr "" |
407 | + |
408 | +#: ../rssreader-app.qml:153 |
409 | +msgid "Edit topics" |
410 | +msgstr "" |
411 | + |
412 | +#: ../rssreader-app.qml:185 ../.build/rssreader-app.desktop.js:1 |
413 | +msgid "Shorts" |
414 | +msgstr "" |
415 | + |
416 | +#: ../rssreader-app.qml:210 |
417 | +msgid "Saved" |
418 | +msgstr "" |
419 | + |
420 | +#: ../rssreader-app.qml:244 ../feeds/AppendFeedPage.qml:14 |
421 | +#: ../feeds/ManageFeedsPage.qml:335 |
422 | +msgid "Add feeds" |
423 | +msgstr "" |
424 | + |
425 | +#: ../rssreader-app.qml:301 |
426 | +msgid "Checking for new articles" |
427 | +msgstr "" |
428 | + |
429 | +#: ../rssreader-app.qml:308 ../feeds/AppendFeedPage.qml:32 |
430 | +#: ../feeds/CreateTopicPage.qml:29 ../feeds/TopicManagement.qml:66 |
431 | +msgid "Cancel" |
432 | +msgstr "" |
433 | + |
434 | +#: ../rssreader-app.qml:338 |
435 | +msgid "+ Add feeds" |
436 | +msgstr "" |
437 | + |
438 | +#: ../rssreader-app.qml:357 |
439 | +msgid "Add online accounts" |
440 | +msgstr "" |
441 | + |
442 | +#: ../rssreader-app.qml:364 |
443 | +msgid "Import subscriptions" |
444 | +msgstr "" |
445 | + |
446 | +#: ../rssreader-app.qml:380 |
447 | +msgid "Ok" |
448 | +msgstr "" |
449 | + |
450 | +#. TRANSLATORS: this is a time formatting string, |
451 | +#. see http://qt-project.org/doc/qt-5.0/qtqml/qml-qtquick2-date.html#details for valid expressions |
452 | +#: ../dateutils.js:39 |
453 | +msgid "MMMM d" |
454 | +msgstr "" |
455 | + |
456 | +#: ../dateutils.js:54 |
457 | +#, qt-format |
458 | +msgid "Yesterday at %1" |
459 | +msgstr "" |
460 | + |
461 | +#. TRANSLATORS: this is a time formatting string, |
462 | +#. see http://qt-project.org/doc/qt-5.0/qtqml/qml-qtquick2-date.html#details for valid expressions |
463 | +#: ../dateutils.js:57 |
464 | +msgid "h:mm AP" |
465 | +msgstr "" |
466 | + |
467 | +#. TRANSLATORS: this is a time formatting string, |
468 | +#. see http://qt-project.org/doc/qt-5.0/qtqml/qml-qtquick2-date.html#details for valid expressions |
469 | +#: ../dateutils.js:69 |
470 | +msgid "ddd, h:mm AP" |
471 | +msgstr "" |
472 | + |
473 | +#: ../dateutils.js:76 |
474 | +msgid "A few seconds ago..." |
475 | +msgstr "" |
476 | + |
477 | +#: ../dateutils.js:79 |
478 | +#, qt-format |
479 | +msgid "%1 minute ago" |
480 | +msgid_plural "%1 minutes ago" |
481 | +msgstr[0] "" |
482 | +msgstr[1] "" |
483 | + |
484 | +#: ../dateutils.js:83 |
485 | +#, qt-format |
486 | +msgid "%1 hour ago" |
487 | +msgid_plural "%1 hours ago" |
488 | +msgstr[0] "" |
489 | +msgstr[1] "" |
490 | + |
491 | +#: ../dateutils.js:89 |
492 | +#, qt-format |
493 | +msgid "%1 day ago" |
494 | +msgid_plural "%1 days ago" |
495 | +msgstr[0] "" |
496 | +msgstr[1] "" |
497 | + |
498 | +#: ../feeds/AppendFeedPage.qml:58 |
499 | +msgid "Next" |
500 | +msgstr "" |
501 | + |
502 | +#: ../feeds/AppendFeedPage.qml:109 |
503 | +msgid "Failed to perform a feed search by keyword" |
504 | +msgstr "" |
505 | + |
506 | +#: ../feeds/AppendFeedPage.qml:110 ../feeds/AppendFeedPage.qml:137 |
507 | +msgid "Search failed" |
508 | +msgstr "" |
509 | + |
510 | +#: ../feeds/AppendFeedPage.qml:136 |
511 | +msgid "Failed to perform a feed search by URL" |
512 | +msgstr "" |
513 | + |
514 | +#: ../feeds/AppendFeedPage.qml:173 |
515 | +msgid "Type a keyword or URL" |
516 | +msgstr "" |
517 | + |
518 | +#: ../feeds/AppendFeedPage.qml:200 |
519 | +msgid "Search results" |
520 | +msgstr "" |
521 | + |
522 | +#: ../feeds/AppendFeedPage.qml:242 ../feeds/CreateTopicPage.qml:157 |
523 | +msgid "No feeds" |
524 | +msgstr "" |
525 | + |
526 | +#: ../feeds/ChooseTopicPage.qml:13 |
527 | +msgid "Choose topic" |
528 | +msgstr "" |
529 | + |
530 | +#: ../feeds/ChooseTopicPage.qml:29 |
531 | +msgid "Previous" |
532 | +msgstr "" |
533 | + |
534 | +#: ../feeds/ChooseTopicPage.qml:96 |
535 | +msgid "Add your new feeds to a topic" |
536 | +msgstr "" |
537 | + |
538 | +#: ../feeds/ChooseTopicPage.qml:107 |
539 | +msgid " + New topic" |
540 | +msgstr "" |
541 | + |
542 | +#: ../feeds/ChooseTopicPage.qml:123 ../feeds/CreateTopicPage.qml:60 |
543 | +msgid "A topic with this name already exists" |
544 | +msgstr "" |
545 | + |
546 | +#: ../feeds/ChooseTopicPage.qml:124 ../feeds/ChooseTopicPage.qml:137 |
547 | +#: ../feeds/CreateTopicPage.qml:61 |
548 | +msgid "Warning" |
549 | +msgstr "" |
550 | + |
551 | +#: ../feeds/ChooseTopicPage.qml:136 |
552 | +msgid "Topic name can't contain only whitespaces" |
553 | +msgstr "" |
554 | + |
555 | +#: ../feeds/CreateTopicPage.qml:12 |
556 | +msgid "Create new topic" |
557 | +msgstr "" |
558 | + |
559 | +#: ../feeds/CreateTopicPage.qml:43 |
560 | +msgid "Add topic" |
561 | +msgstr "" |
562 | + |
563 | +#: ../feeds/CreateTopicPage.qml:108 |
564 | +msgid "Type topic name" |
565 | +msgstr "" |
566 | + |
567 | +#: ../feeds/CreateTopicPage.qml:120 |
568 | +msgid "Select feeds (optional)" |
569 | +msgstr "" |
570 | + |
571 | +#: ../feeds/EditFeed.qml:12 |
572 | +msgid "Edit Feed" |
573 | +msgstr "" |
574 | + |
575 | +#: ../feeds/EditFeed.qml:31 |
576 | +msgid "Delete" |
577 | +msgstr "" |
578 | + |
579 | +#: ../feeds/EditFeed.qml:46 |
580 | +msgid "Apply" |
581 | +msgstr "" |
582 | + |
583 | +#: ../feeds/EditFeed.qml:120 |
584 | +msgid "Title: " |
585 | +msgstr "" |
586 | + |
587 | +#: ../feeds/EditFeed.qml:141 |
588 | +msgid "URL: " |
589 | +msgstr "" |
590 | + |
591 | +#: ../feeds/EditFeed.qml:156 |
592 | +msgid "Topic: " |
593 | +msgstr "" |
594 | + |
595 | +#: ../feeds/ManageFeedsPage.qml:13 |
596 | +msgid "Feeds" |
597 | +msgstr "" |
598 | + |
599 | +#: ../feeds/ManageFeedsPage.qml:62 ../feeds/ManageFeedsPage.qml:172 |
600 | +#: ../listview/FeedListPage.qml:49 |
601 | +msgid "No topic" |
602 | +msgstr "" |
603 | + |
604 | +#: ../feeds/ManageFeedsPage.qml:103 ../feeds/ManageTopicsPage.qml:12 |
605 | +msgid "Topics" |
606 | +msgstr "" |
607 | + |
608 | +#: ../feeds/ManageFeedsPage.qml:132 |
609 | +msgid "Move to..." |
610 | +msgstr "" |
611 | + |
612 | +#: ../feeds/ManageFeedsPage.qml:146 |
613 | +msgid "Deselect" |
614 | +msgstr "" |
615 | + |
616 | +#: ../feeds/ManageFeedsPage.qml:242 |
617 | +msgid "Append feed" |
618 | +msgstr "" |
619 | + |
620 | +#: ../feeds/ManageFeedsPage.qml:296 |
621 | +msgid "Use toolbar to append feeds" |
622 | +msgstr "" |
623 | + |
624 | +#: ../feeds/ManageFeedsPage.qml:335 |
625 | +msgid "Edit feed" |
626 | +msgstr "" |
627 | + |
628 | +#: ../feeds/ManageFeedsPage.qml:347 |
629 | +msgid "Type a new name here..." |
630 | +msgstr "" |
631 | + |
632 | +#: ../feeds/ManageFeedsPage.qml:347 |
633 | +msgid "Type a URL here..." |
634 | +msgstr "" |
635 | + |
636 | +#: ../feeds/ManageFeedsPage.qml:360 |
637 | +msgid "Show in inbox" |
638 | +msgstr "" |
639 | + |
640 | +#: ../feeds/ManageFeedsPage.qml:389 ../feeds/ManageTopicsPage.qml:114 |
641 | +#: ../listview/FeedListPage.qml:155 |
642 | +msgid "Edit" |
643 | +msgstr "" |
644 | + |
645 | +#: ../feeds/ManageFeedsPage.qml:404 ../listview/FeedListPage.qml:179 |
646 | +msgid "Remove" |
647 | +msgstr "" |
648 | + |
649 | +#: ../feeds/ManageTopicsPage.qml:122 |
650 | +msgid "Delete with feeds" |
651 | +msgstr "" |
652 | + |
653 | +#: ../feeds/ManageTopicsPage.qml:139 |
654 | +msgid "Use toolbar to append topics" |
655 | +msgstr "" |
656 | + |
657 | +#: ../feeds/TopicManagement.qml:13 |
658 | +msgid "Management" |
659 | +msgstr "" |
660 | + |
661 | +#: ../feeds/TopicManagement.qml:48 |
662 | +msgid "Add Feed" |
663 | +msgstr "" |
664 | + |
665 | +#: ../feeds/TopicManagement.qml:79 |
666 | +msgid "Confirm" |
667 | +msgstr "" |
668 | + |
669 | +#: ../feeds/TopicManagement.qml:112 |
670 | +msgid "Add a Topic" |
671 | +msgstr "" |
672 | + |
673 | +#: ../listview/ArticleListPage.qml:93 |
674 | +msgid "There are no articles in the selected feed" |
675 | +msgstr "" |
676 | + |
677 | +#: ../listview/FeedListPage.qml:73 |
678 | +msgid "All articles" |
679 | +msgstr "" |
680 | + |
681 | +#: ../listview/FeedListPage.qml:74 |
682 | +msgid "View news from all channels" |
683 | +msgstr "" |
684 | + |
685 | +#: ../listview/FeedListPage.qml:140 |
686 | +msgid "Update" |
687 | +msgstr "" |
688 | + |
689 | +#: ../listview/FeedListPage.qml:205 |
690 | +msgid "There are no RSS feeds to show" |
691 | +msgstr "" |
692 | + |
693 | +#: ../listview/ListModePage.qml:220 |
694 | +msgid "There are no articles to show" |
695 | +msgstr "" |
696 | |
697 | === renamed file 'ubuntu-rssreader-app' => 'rssreader-app' |
698 | --- ubuntu-rssreader-app 2013-04-11 21:21:44 +0000 |
699 | +++ rssreader-app 2013-09-26 09:05:34 +0000 |
700 | @@ -1,2 +1,2 @@ |
701 | #!/bin/bash |
702 | -qmlscene /usr/share/ubuntu-rssreader-app/ubuntu-rssreader-app.qml |
703 | +qmlscene /usr/share/rssreader-app/rssreader-app.qml |
704 | |
705 | === renamed file 'ubuntu-rssreader-app.desktop' => 'rssreader-app.desktop' |
706 | --- ubuntu-rssreader-app.desktop 2013-08-29 11:38:46 +0000 |
707 | +++ rssreader-app.desktop 2013-09-26 09:05:34 +0000 |
708 | @@ -1,10 +1,10 @@ |
709 | [Desktop Entry] |
710 | -Encoding=UTF-8 |
711 | Version=1.0 |
712 | Type=Application |
713 | Terminal=false |
714 | -Exec=qmlscene /usr/share/ubuntu-rssreader-app/ubuntu-rssreader-app.qml |
715 | -Icon=/usr/share/ubuntu-rssreader-app/rssreader64.png |
716 | +Exec=qmlscene /usr/share/rssreader-app/rssreader-app.qml |
717 | +Icon=/usr/share/rssreader-app/rssreader64.png |
718 | Name=Shorts |
719 | +Keywords=shorts;rss;reader |
720 | X-Ubuntu-Touch=true |
721 | X-Ubuntu-StageHint=SideStage |
722 | |
723 | === renamed file 'ubuntu-rssreader-app.qml' => 'rssreader-app.qml' |
724 | === renamed file 'rssreader.qmlproject' => 'rssreader-app.qmlproject' |
725 | --- rssreader.qmlproject 2013-07-24 21:19:03 +0000 |
726 | +++ rssreader-app.qmlproject 2013-09-26 09:05:34 +0000 |
727 | @@ -3,7 +3,7 @@ |
728 | import QmlProject 1.1 |
729 | |
730 | Project { |
731 | - mainFile: "ubuntu-rssreader-app.qml" |
732 | + mainFile: "rssreader-app.qml" |
733 | |
734 | /* Include .qml, .js, and image files from current directory and subdirectories */ |
735 | QmlFiles { |
736 | @@ -15,6 +15,21 @@ |
737 | ImageFiles { |
738 | directory: [".", "./icons_tmp"] |
739 | } |
740 | + /* Shows the desktop file in the project view */ |
741 | + Files { |
742 | + filter: "*.desktop" |
743 | + } |
744 | + /* Shows the README files in the project view */ |
745 | + Files { |
746 | + filter: "README*" |
747 | + } |
748 | + /* Shows the translation files and the .pro file used to generate the .pot template */ |
749 | + Files { |
750 | + filter: "*.po*" |
751 | + } |
752 | + Files { |
753 | + filter: "*.pro" |
754 | + } |
755 | /* List of plugin directories passed to QML runtime */ |
756 | importPaths: [ "." ,"/usr/lib/x86_64-linux-gnu/qt5/qml", "/usr/lib/i386-linux-gnu/qt5/qml/" ] |
757 | } |
758 | |
759 | === modified file 'tests/autopilot/ubuntu_rssreader_app/tests/__init__.py' |
760 | --- tests/autopilot/ubuntu_rssreader_app/tests/__init__.py 2013-09-06 01:46:41 +0000 |
761 | +++ tests/autopilot/ubuntu_rssreader_app/tests/__init__.py 2013-09-26 09:05:34 +0000 |
762 | @@ -43,7 +43,7 @@ |
763 | else: |
764 | scenarios = [('with touch', dict(input_device_class=Touch))] |
765 | |
766 | - local_location = "../../ubuntu-rssreader-app.qml" |
767 | + local_location = "../../rssreader-app.qml" |
768 | sqlite_dir = os.path.expanduser( |
769 | "~/.local/share/Qt Project/QtQmlViewer/QML/OfflineStorage/Databases") |
770 | backup_dir = sqlite_dir + ".backup" |
771 | @@ -75,9 +75,9 @@ |
772 | def launch_test_installed(self): |
773 | self.app = self.launch_test_application( |
774 | "qmlscene", |
775 | - "/usr/share/ubuntu-rssreader-app/ubuntu-rssreader-app.qml", |
776 | + "/usr/share/rssreader-app/rssreader-app.qml", |
777 | "--desktop_file_hint=/usr/share/applications/" |
778 | - "ubuntu-rssreader-app.desktop", |
779 | + "rssreader-app.desktop", |
780 | app_type='qt', |
781 | emulator_base=toolkit_emulators.UbuntuUIToolkitEmulatorBase) |
782 |
FAILED: Continuous integration, rev:79 91.189. 93.70:8080/ job/ubuntu- rssreader- app-ci/ 53/ 91.189. 93.70:8080/ job/generic- mediumtests/ 479 91.189. 93.70:8080/ job/ubuntu- rssreader- app-precise- amd64-ci/ 53 91.189. 93.70:8080/ job/ubuntu- rssreader- app-quantal- amd64-ci/ 53 91.189. 93.70:8080/ job/ubuntu- rssreader- app-raring- amd64-ci/ 53 91.189. 93.70:8080/ job/ubuntu- rssreader- app-saucy- amd64-ci/ 53
http://
Executed test runs:
UNSTABLE: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
Click here to trigger a rebuild: 91.189. 93.70:8080/ job/ubuntu- rssreader- app-ci/ 53/rebuild
http://