Merge lp:~dpm/ubuntu-rssreader-app/enable-translations into lp:~ubuntu-shorts-dev/ubuntu-rssreader-app/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
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
=== modified file '.bzrignore'
--- .bzrignore 2013-08-20 15:17:56 +0000
+++ .bzrignore 2013-09-26 09:05:34 +0000
@@ -5,4 +5,5 @@
5debian/*.debhelper.log5debian/*.debhelper.log
6debian/*.substvars6debian/*.substvars
7RE:\.?[^.]+7RE:\.?[^.]+
8./ubuntu-rssreader-app.qmlproject8.build
9po/Makefile
910
=== added file 'README.translations'
--- README.translations 1970-01-01 00:00:00 +0000
+++ README.translations 2013-09-26 09:05:34 +0000
@@ -0,0 +1,36 @@
1# Updating translations
2
3Translations for the Shorts app happen in [Launchpad Translations][] and
4are automatically committed daily on the trunk branch in the po/ folder.
5
6They are then built and installed as part of the package build, so that
7developers don't really need to worry about them.
8
9However, there is one task that needs to be taken care of: exposing new
10translatable messages to translators. So whenever you add new translatable
11messages in the code, make sure to follow these steps:
12
13 1. Change directory to the po/ folder: `cd po`
14 2. Update the translations template: `qmake && make pot`
15 3. Commit the generated .pot file: `bzr commit -m"Updated translation template"`
16 4. Push the branch and send a merge proposal as usual
17
18And that's it, once the branch lands Launchpad should take care of all the rest!
19
20# Behind the scenes
21
22Behind the scenes, whenever the po/*.pot file (also known as translations template)
23is committed to trunk Launchpad reads it and updates the translatable strings
24exposed in the web UI. This will enable translators to work on the new strings.
25The translations template contains all translatable strings that have been
26extracted from the source code files.
27
28Launchpad will then store translations in its database and will commit them daily
29in the form of textual po/*.po files to trunk. The PO files are also usually
30referred to as the translations files. You'll find a translation file for each
31language the app has got at least a translated message available for.
32
33Translations for core apps follow the standard [gettext format].
34
35 [Launchpad Translations]: https://translations.launchpad.net/ubuntu-rssreader-app
36 [gettext format]: https://www.gnu.org/software/gettext/
037
=== modified file 'dateutils.js'
--- dateutils.js 2013-09-04 15:34:28 +0000
+++ dateutils.js 2013-09-26 09:05:34 +0000
@@ -34,6 +34,8 @@
34function formatRelativeTime(i18n, date) {34function formatRelativeTime(i18n, date) {
35 // fallback if none of the other formatters matched35 // fallback if none of the other formatters matched
36 function defaultFallbackFormat(then) {36 function defaultFallbackFormat(then) {
37 // TRANSLATORS: this is a time formatting string,
38 // see http://qt-project.org/doc/qt-5.0/qtqml/qml-qtquick2-date.html#details for valid expressions
37 return Qt.formatDateTime(then, i18n.tr("MMMM d"))39 return Qt.formatDateTime(then, i18n.tr("MMMM d"))
38 }40 }
3941
@@ -50,6 +52,8 @@
50 }52 }
51 this.format = function (now, then, diff) {53 this.format = function (now, then, diff) {
52 return i18n.tr("Yesterday at %1").arg(54 return i18n.tr("Yesterday at %1").arg(
55 /* TRANSLATORS: this is a time formatting string,
56 see http://qt-project.org/doc/qt-5.0/qtqml/qml-qtquick2-date.html#details for valid expressions */
53 Qt.formatDateTime(then, i18n.tr("h:mm AP")))57 Qt.formatDateTime(then, i18n.tr("h:mm AP")))
54 }58 }
55 }59 }
@@ -60,6 +64,8 @@
60 return diff < 7 * DAY_LIMIT64 return diff < 7 * DAY_LIMIT
61 }65 }
62 this.format = function (now, then, diff) {66 this.format = function (now, then, diff) {
67 // TRANSLATORS: this is a time formatting string,
68 // see http://qt-project.org/doc/qt-5.0/qtqml/qml-qtquick2-date.html#details for valid expressions
63 return Qt.formatDateTime(then, i18n.tr("ddd, h:mm AP"));69 return Qt.formatDateTime(then, i18n.tr("ddd, h:mm AP"));
64 }70 }
65 }71 }
6672
=== modified file 'debian/changelog'
--- debian/changelog 2013-02-12 16:27:23 +0000
+++ debian/changelog 2013-09-26 09:05:34 +0000
@@ -1,3 +1,10 @@
1ubuntu-rssreader-app (0.2) saucy; urgency=low
2
3 * Added translations support, dropped ubuntu- prefix from desktop file
4 and installation path
5
6 -- David Planella <david.planella@ubuntu.com> Thu, 26 Sep 2013 09:29:27 +0200
7
1ubuntu-rssreader-app (0.1) raring; urgency=low8ubuntu-rssreader-app (0.1) raring; urgency=low
29
3 * Initial release10 * Initial release
411
=== modified file 'debian/control'
--- debian/control 2013-08-15 15:54:31 +0000
+++ debian/control 2013-09-26 09:05:34 +0000
@@ -1,30 +1,30 @@
1Source: ubuntu-rssreader-app1Source: ubuntu-rssreader-app
2Priority: extra2Priority: extra
3Maintainer: Ubuntu App Cats <ubuntu-touch-coreapps@lists.launchpad.net>3Maintainer: Ubuntu App Cats <ubuntu-touch-coreapps@lists.launchpad.net>
4Build-Depends: debhelper (>= 9),4Build-Depends: debhelper (>= 9)
5Standards-Version: 3.9.45Standards-Version: 3.9.4
6Section: misc6Section: misc
7Homepage: https://launchpad.net/ubuntu-rssreader-app7Homepage: https://launchpad.net/ubuntu-rssreader-app
8Vcs-Bzr: https://code.launchpad.net/~ubuntu-rssreader-dev/ubuntu-rssreader-app/trunk8Vcs-Bzr: https://code.launchpad.net/~ubuntu-rssreader-dev/ubuntu-rssreader-app/trunk
99
10Package: ubuntu-rssreader-app10Package: rssreader-app
11Section: misc
12Architecture: all11Architecture: all
13Depends: ${misc:Depends},12Depends: libqt5webkit5-qmlwebkitplugin,
14 qmlscene,13 qmlscene,
14 qtdeclarative5-localstorage-plugin,
15 qtdeclarative5-qtquick2-plugin,
15 qtdeclarative5-ubuntu-ui-toolkit-plugin | qt-components-ubuntu,16 qtdeclarative5-ubuntu-ui-toolkit-plugin | qt-components-ubuntu,
16 qtdeclarative5-qtquick2-plugin,
17 qtdeclarative5-xmllistmodel-plugin,17 qtdeclarative5-xmllistmodel-plugin,
18 libqt5webkit5-qmlwebkitplugin,18 ${misc:Depends}
19 qtdeclarative5-localstorage-plugin,
20Description: RSS Reader application19Description: RSS Reader application
21 Core RSS Reader application20 Core RSS Reader application
2221
23Package: ubuntu-rssreader-app-autopilot22Package: rssreader-app-autopilot
24Architecture: all23Architecture: all
25Depends: libautopilot-qt,24Depends: libautopilot-qt,
26 libqt5test5,25 libqt5test5,
26 rssreader-app (= ${source:Version}),
27 ubuntu-ui-toolkit-autopilot,27 ubuntu-ui-toolkit-autopilot,
28 ubuntu-rssreader-app (= ${source:Version})28 ${misc:Depends}
29Description: Autopilot tests for RSS reader Application29Description: Autopilot tests for RSS reader Application
30 This package contains the autopilot tests for the RSS reader30 This package contains the autopilot tests for the RSS reader
3131
=== renamed file 'debian/ubuntu-rssreader-app-autopilot.install' => 'debian/rssreader-app-autopilot.install'
=== renamed file 'debian/ubuntu-rssreader-app.install' => 'debian/rssreader-app.install'
--- debian/ubuntu-rssreader-app.install 2013-08-10 09:29:03 +0000
+++ debian/rssreader-app.install 2013-09-26 09:05:34 +0000
@@ -1,9 +1,9 @@
1ubuntu-rssreader-app usr/bin/
2ubuntu-rssreader-app.desktop usr/share/applications/
3*.qml usr/share/ubuntu-rssreader-app/
4*.png usr/share/ubuntu-rssreader-app/
5*.js usr/share/ubuntu-rssreader-app/
6feeds usr/share/ubuntu-rssreader-app/
7listview usr/share/ubuntu-rssreader-app/
8article_items usr/share/ubuntu-rssreader-app/
9icons_tmp usr/share/ubuntu-rssreader-app/
10\ No newline at end of file1\ No newline at end of file
2*.js usr/share/rssreader-app/
3*.png usr/share/rssreader-app/
4*.qml usr/share/rssreader-app/
5article_items usr/share/rssreader-app/
6feeds usr/share/rssreader-app/
7icons_tmp usr/share/rssreader-app/
8listview usr/share/rssreader-app/
9rssreader-app usr/bin/
10rssreader-app.desktop usr/share/applications/
1111
=== modified file 'debian/rules'
--- debian/rules 2013-04-11 21:21:44 +0000
+++ debian/rules 2013-09-26 09:05:34 +0000
@@ -9,3 +9,12 @@
99
10override_dh_install:10override_dh_install:
11 dh_install --fail-missing11 dh_install --fail-missing
12 appname=rssreader-app; \
13 for pofile in $(shell find ./po -name "*.po"); do \
14 pofilename="$${pofile##*/}"; \
15 langcode="$${pofilename%.*}"; \
16 localedir="debian/$$appname/usr/share/locale/$$langcode/LC_MESSAGES"; \
17 mkdir -p $$localedir; \
18 mofile="$$localedir/$$appname.mo"; \
19 msgfmt -o $$mofile $$pofile; \
20 done
1221
=== modified file 'feeds/AppendFeedPage.qml'
--- feeds/AppendFeedPage.qml 2013-09-21 09:27:59 +0000
+++ feeds/AppendFeedPage.qml 2013-09-26 09:05:34 +0000
@@ -106,7 +106,7 @@
106 // No need to show dialog in case of abort.106 // No need to show dialog in case of abort.
107 if (result.responseStatus !== 0) {107 if (result.responseStatus !== 0) {
108 PopupUtils.open(errorDialogComponent, appendFeedPage,108 PopupUtils.open(errorDialogComponent, appendFeedPage,
109 {"text" : i18n.tr("Failed to perform search feeds by keywords"),109 {"text" : i18n.tr("Failed to perform a feed search by keyword"),
110 "title" : i18n.tr("Search failed")})110 "title" : i18n.tr("Search failed")})
111 console.log(JSON.stringify(result))111 console.log(JSON.stringify(result))
112 }112 }
@@ -133,7 +133,7 @@
133 // No need to show dialog in case of abort.133 // No need to show dialog in case of abort.
134 if (result.responseStatus !== 0) {134 if (result.responseStatus !== 0) {
135 PopupUtils.open(errorDialogComponent, appendFeedPage,135 PopupUtils.open(errorDialogComponent, appendFeedPage,
136 {"text" : i18n.tr("Failed to perform search feed by url"),136 {"text" : i18n.tr("Failed to perform a feed search by URL"),
137 "title" : i18n.tr("Search failed")})137 "title" : i18n.tr("Search failed")})
138 console.log(JSON.stringify(result))138 console.log(JSON.stringify(result))
139 }139 }
140140
=== modified file 'feeds/ChooseTopicPage.qml'
--- feeds/ChooseTopicPage.qml 2013-09-11 15:18:51 +0000
+++ feeds/ChooseTopicPage.qml 2013-09-26 09:05:34 +0000
@@ -120,7 +120,7 @@
120120
121 if (dbResult.error) {121 if (dbResult.error) {
122 PopupUtils.open(errorDialogComponent, chooseTopicPage,122 PopupUtils.open(errorDialogComponent, chooseTopicPage,
123 {"text" : i18n.tr("Topic with such name already exists"),123 {"text" : i18n.tr("A topic with this name already exists"),
124 "title" : i18n.tr("Warning")})124 "title" : i18n.tr("Warning")})
125 return125 return
126 }126 }
127127
=== modified file 'feeds/CreateTopicPage.qml'
--- feeds/CreateTopicPage.qml 2013-08-19 19:38:53 +0000
+++ feeds/CreateTopicPage.qml 2013-09-26 09:05:34 +0000
@@ -57,7 +57,7 @@
57 var dbResult = DB.addTag(topicName)57 var dbResult = DB.addTag(topicName)
58 if (dbResult.error) {58 if (dbResult.error) {
59 PopupUtils.open(errorDialogComponent, createTopicPage,59 PopupUtils.open(errorDialogComponent, createTopicPage,
60 {"text" : i18n.tr("Topic with such name already exists"),60 {"text" : i18n.tr("A topic with this name already exists"),
61 "title" : i18n.tr("Warning")})61 "title" : i18n.tr("Warning")})
62 return62 return
63 } else {63 } else {
6464
=== modified file 'feeds/ManageFeedsPage.qml'
--- feeds/ManageFeedsPage.qml 2013-08-29 12:04:41 +0000
+++ feeds/ManageFeedsPage.qml 2013-09-26 09:05:34 +0000
@@ -344,7 +344,7 @@
344 id: tfFeedUrl344 id: tfFeedUrl
345 anchors.horizontalCenter: parent.horizontalCenter345 anchors.horizontalCenter: parent.horizontalCenter
346 width: parent.width346 width: parent.width
347 placeholderText: isForEdit? i18n.tr("Enter new name here...") : i18n.tr("Enter url here...")347 placeholderText: isForEdit? i18n.tr("Type a new name here...") : i18n.tr("Type a URL here...")
348 }348 }
349349
350 Item {350 Item {
351351
=== modified file 'listview/ArticleListPage.qml'
--- listview/ArticleListPage.qml 2013-08-06 20:45:50 +0000
+++ listview/ArticleListPage.qml 2013-09-26 09:05:34 +0000
@@ -90,7 +90,7 @@
90 Label {90 Label {
91 id: lblEmptyBase91 id: lblEmptyBase
9292
93 text: i18n.tr("There are no articles in selected feed")93 text: i18n.tr("There are no articles in the selected feed")
94 anchors.centerIn: parent94 anchors.centerIn: parent
95 visible: articleListModel.count == 095 visible: articleListModel.count == 0
96 fontSize: "large"96 fontSize: "large"
9797
=== modified file 'po/po.pro'
--- po/po.pro 2013-02-12 16:18:48 +0000
+++ po/po.pro 2013-09-26 09:05:34 +0000
@@ -1,48 +1,59 @@
1## This .pro file is used to create a Makefile with the necessary rules
2## to create an initial translations template and to update it whenever
3## there are new translatable strings in the project that are ready to be
4## exposed to translators
5##
6## See the ../README.translations file for more information
7
1TEMPLATE = subdirs8TEMPLATE = subdirs
29
3PROJECTNAME = $$system(basename ../*.qmlproject)10PROJECTNAME = $$system(basename ../*.qmlproject)
4PROJECTNAME = $$replace(PROJECTNAME,.qmlproject,)11PROJECTNAME = $$replace(PROJECTNAME,.qmlproject,)
512
6SOURCECODE = ../*.qml13DESKTOPFILE = ../$${PROJECTNAME}.desktop
14
15SOURCECODE = ../*.qml \
16 ../*.js \
17 ../article_items/*.qml \
18 ../feeds/*.qml \
19 ../listview/*.qml
20
21BUILDDIR = ../.build
22DESKTOPFILETEMP = $${BUILDDIR}/$${PROJECTNAME}.desktop.js
723
8message("")24message("")
9message(" Project Name: $$PROJECTNAME ")25message(" Project Name: $$PROJECTNAME ")
10message(" Source Code: $$SOURCECODE ")26message(" Source Code: $$SOURCECODE ")
11message("")27message("")
12message(" run 'make pot' to generate the pot file from source code. ")28message(" Run 'make pot' to generate the pot file from source code. ")
13message(" run 'make translate' to create a new translation (po) based on pot. ")
14message(" run 'make mo' to generate the mo files from po files. ")
15message(" run 'qmake; make install' to install the mo files. ")
16message("")29message("")
1730
18## generate pot file 'make pot'31## Generate pot file 'make pot'
19potfile.target = pot32potfile.target = pot
20potfile.commands = xgettext -o $${PROJECTNAME}.pot --package-name $${PROJECTNAME} --qt --c++ --add-comments=TRANSLATORS --keyword=tr $${SOURCECODE}33potfile.commands = xgettext \
34 -o $${PROJECTNAME}.pot \
35 --copyright=\"Canonical Ltd. \" \
36 --package-name $${PROJECTNAME} \
37 --qt --c++ --add-comments=TRANSLATORS \
38 --keyword=tr --keyword=tr:1,2 \
39 $${SOURCECODE} $${DESKTOPFILETEMP}
40potfile.depends = desktopfile
21QMAKE_EXTRA_TARGETS += potfile41QMAKE_EXTRA_TARGETS += potfile
2242
23## poedit target for new translations 'make translate'43## Do not use this rule directly. It's a dependency rule to
24poedit.target = translate44## generate an intermediate .js file to extract translatable
25poedit.commands = cp messages.pot new_language.po; poedit new_language.po45## strings from the .desktop file
26QMAKE_EXTRA_TARGETS += poedit46desktopfile.target = desktopfile
2747desktopfile.commands = awk \'BEGIN { FS=\"=\" }; /Name/ {print \"var s = i18n.tr(\42\" \$$2 \"\42);\"}\' $${DESKTOPFILE} > $${DESKTOPFILETEMP}
28## generate mo files 'make mo'48desktopfile.depends = makebuilddir
29mofiles.target = mo49QMAKE_EXTRA_TARGETS += desktopfile
30mofiles.commands = msgfmt *.po50
31QMAKE_EXTRA_TARGETS += mofiles51## Dependency rule to create the temporary build dir
3252makebuilddir.target = makebuilddir
33## Installation steps for mo files. 'make install'53makebuilddir.commands = mkdir -p $${BUILDDIR}
34MO_FILES = $$system(ls *.mo)54QMAKE_EXTRA_TARGETS += makebuilddir
3555
36install_mo_commands =56## Rule to clean the products of the build
37for(mo_file, MO_FILES) {57clean.target = clean
38 mo_name = $$replace(mo_file,.mo,)58clean.commands = rm -Rf $${BUILDDIR}
39 mo_targetpath = $(INSTALL_ROOT)/usr/share/locale/$${mo_name}/LC_MESSAGES59QMAKE_EXTRA_TARGETS += clean
40 mo_target = $${mo_targetpath}/$${PROJECTNAME}.mo
41 !isEmpty(install_mo_commands): install_mo_commands += &&
42 install_mo_commands += test -d $$mo_targetpath || mkdir -p $$mo_targetpath
43 install_mo_commands += && cp $$mo_file $$mo_target
44}
45
46install.commands = $$install_mo_commands
47QMAKE_EXTRA_TARGETS += install
48
4960
=== added file 'po/rssreader-app.pot'
--- po/rssreader-app.pot 1970-01-01 00:00:00 +0000
+++ po/rssreader-app.pot 2013-09-26 09:05:34 +0000
@@ -0,0 +1,336 @@
1# SOME DESCRIPTIVE TITLE.
2# Copyright (C) YEAR Canonical Ltd.
3# This file is distributed under the same license as the PACKAGE package.
4# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
5#
6#, fuzzy
7msgid ""
8msgstr ""
9"Project-Id-Version: rssreader-app\n"
10"Report-Msgid-Bugs-To: \n"
11"POT-Creation-Date: 2013-09-26 09:12+0200\n"
12"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
13"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
14"Language-Team: LANGUAGE <LL@li.org>\n"
15"Language: \n"
16"MIME-Version: 1.0\n"
17"Content-Type: text/plain; charset=CHARSET\n"
18"Content-Transfer-Encoding: 8bit\n"
19"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
20
21#: ../RssFeedPage.qml:50
22msgid "Save"
23msgstr ""
24
25#: ../RssFeedPage.qml:50
26msgid "Unsave"
27msgstr ""
28
29#: ../RssFeedPage.qml:73 ../listview/FeedListPage.qml:170
30msgid "Open site"
31msgstr ""
32
33#: ../rssreader-app.qml:115
34msgid "Refresh"
35msgstr ""
36
37#: ../rssreader-app.qml:129
38msgid "Grid View"
39msgstr ""
40
41#: ../rssreader-app.qml:129
42msgid "List view"
43msgstr ""
44
45#: ../rssreader-app.qml:142
46msgid "Add reads"
47msgstr ""
48
49#: ../rssreader-app.qml:153
50msgid "Edit topics"
51msgstr ""
52
53#: ../rssreader-app.qml:185 ../.build/rssreader-app.desktop.js:1
54msgid "Shorts"
55msgstr ""
56
57#: ../rssreader-app.qml:210
58msgid "Saved"
59msgstr ""
60
61#: ../rssreader-app.qml:244 ../feeds/AppendFeedPage.qml:14
62#: ../feeds/ManageFeedsPage.qml:335
63msgid "Add feeds"
64msgstr ""
65
66#: ../rssreader-app.qml:301
67msgid "Checking for new articles"
68msgstr ""
69
70#: ../rssreader-app.qml:308 ../feeds/AppendFeedPage.qml:32
71#: ../feeds/CreateTopicPage.qml:29 ../feeds/TopicManagement.qml:66
72msgid "Cancel"
73msgstr ""
74
75#: ../rssreader-app.qml:338
76msgid "+ Add feeds"
77msgstr ""
78
79#: ../rssreader-app.qml:357
80msgid "Add online accounts"
81msgstr ""
82
83#: ../rssreader-app.qml:364
84msgid "Import subscriptions"
85msgstr ""
86
87#: ../rssreader-app.qml:380
88msgid "Ok"
89msgstr ""
90
91#. TRANSLATORS: this is a time formatting string,
92#. see http://qt-project.org/doc/qt-5.0/qtqml/qml-qtquick2-date.html#details for valid expressions
93#: ../dateutils.js:39
94msgid "MMMM d"
95msgstr ""
96
97#: ../dateutils.js:54
98#, qt-format
99msgid "Yesterday at %1"
100msgstr ""
101
102#. TRANSLATORS: this is a time formatting string,
103#. see http://qt-project.org/doc/qt-5.0/qtqml/qml-qtquick2-date.html#details for valid expressions
104#: ../dateutils.js:57
105msgid "h:mm AP"
106msgstr ""
107
108#. TRANSLATORS: this is a time formatting string,
109#. see http://qt-project.org/doc/qt-5.0/qtqml/qml-qtquick2-date.html#details for valid expressions
110#: ../dateutils.js:69
111msgid "ddd, h:mm AP"
112msgstr ""
113
114#: ../dateutils.js:76
115msgid "A few seconds ago..."
116msgstr ""
117
118#: ../dateutils.js:79
119#, qt-format
120msgid "%1 minute ago"
121msgid_plural "%1 minutes ago"
122msgstr[0] ""
123msgstr[1] ""
124
125#: ../dateutils.js:83
126#, qt-format
127msgid "%1 hour ago"
128msgid_plural "%1 hours ago"
129msgstr[0] ""
130msgstr[1] ""
131
132#: ../dateutils.js:89
133#, qt-format
134msgid "%1 day ago"
135msgid_plural "%1 days ago"
136msgstr[0] ""
137msgstr[1] ""
138
139#: ../feeds/AppendFeedPage.qml:58
140msgid "Next"
141msgstr ""
142
143#: ../feeds/AppendFeedPage.qml:109
144msgid "Failed to perform a feed search by keyword"
145msgstr ""
146
147#: ../feeds/AppendFeedPage.qml:110 ../feeds/AppendFeedPage.qml:137
148msgid "Search failed"
149msgstr ""
150
151#: ../feeds/AppendFeedPage.qml:136
152msgid "Failed to perform a feed search by URL"
153msgstr ""
154
155#: ../feeds/AppendFeedPage.qml:173
156msgid "Type a keyword or URL"
157msgstr ""
158
159#: ../feeds/AppendFeedPage.qml:200
160msgid "Search results"
161msgstr ""
162
163#: ../feeds/AppendFeedPage.qml:242 ../feeds/CreateTopicPage.qml:157
164msgid "No feeds"
165msgstr ""
166
167#: ../feeds/ChooseTopicPage.qml:13
168msgid "Choose topic"
169msgstr ""
170
171#: ../feeds/ChooseTopicPage.qml:29
172msgid "Previous"
173msgstr ""
174
175#: ../feeds/ChooseTopicPage.qml:96
176msgid "Add your new feeds to a topic"
177msgstr ""
178
179#: ../feeds/ChooseTopicPage.qml:107
180msgid " + New topic"
181msgstr ""
182
183#: ../feeds/ChooseTopicPage.qml:123 ../feeds/CreateTopicPage.qml:60
184msgid "A topic with this name already exists"
185msgstr ""
186
187#: ../feeds/ChooseTopicPage.qml:124 ../feeds/ChooseTopicPage.qml:137
188#: ../feeds/CreateTopicPage.qml:61
189msgid "Warning"
190msgstr ""
191
192#: ../feeds/ChooseTopicPage.qml:136
193msgid "Topic name can't contain only whitespaces"
194msgstr ""
195
196#: ../feeds/CreateTopicPage.qml:12
197msgid "Create new topic"
198msgstr ""
199
200#: ../feeds/CreateTopicPage.qml:43
201msgid "Add topic"
202msgstr ""
203
204#: ../feeds/CreateTopicPage.qml:108
205msgid "Type topic name"
206msgstr ""
207
208#: ../feeds/CreateTopicPage.qml:120
209msgid "Select feeds (optional)"
210msgstr ""
211
212#: ../feeds/EditFeed.qml:12
213msgid "Edit Feed"
214msgstr ""
215
216#: ../feeds/EditFeed.qml:31
217msgid "Delete"
218msgstr ""
219
220#: ../feeds/EditFeed.qml:46
221msgid "Apply"
222msgstr ""
223
224#: ../feeds/EditFeed.qml:120
225msgid "Title: "
226msgstr ""
227
228#: ../feeds/EditFeed.qml:141
229msgid "URL: "
230msgstr ""
231
232#: ../feeds/EditFeed.qml:156
233msgid "Topic: "
234msgstr ""
235
236#: ../feeds/ManageFeedsPage.qml:13
237msgid "Feeds"
238msgstr ""
239
240#: ../feeds/ManageFeedsPage.qml:62 ../feeds/ManageFeedsPage.qml:172
241#: ../listview/FeedListPage.qml:49
242msgid "No topic"
243msgstr ""
244
245#: ../feeds/ManageFeedsPage.qml:103 ../feeds/ManageTopicsPage.qml:12
246msgid "Topics"
247msgstr ""
248
249#: ../feeds/ManageFeedsPage.qml:132
250msgid "Move to..."
251msgstr ""
252
253#: ../feeds/ManageFeedsPage.qml:146
254msgid "Deselect"
255msgstr ""
256
257#: ../feeds/ManageFeedsPage.qml:242
258msgid "Append feed"
259msgstr ""
260
261#: ../feeds/ManageFeedsPage.qml:296
262msgid "Use toolbar to append feeds"
263msgstr ""
264
265#: ../feeds/ManageFeedsPage.qml:335
266msgid "Edit feed"
267msgstr ""
268
269#: ../feeds/ManageFeedsPage.qml:347
270msgid "Type a new name here..."
271msgstr ""
272
273#: ../feeds/ManageFeedsPage.qml:347
274msgid "Type a URL here..."
275msgstr ""
276
277#: ../feeds/ManageFeedsPage.qml:360
278msgid "Show in inbox"
279msgstr ""
280
281#: ../feeds/ManageFeedsPage.qml:389 ../feeds/ManageTopicsPage.qml:114
282#: ../listview/FeedListPage.qml:155
283msgid "Edit"
284msgstr ""
285
286#: ../feeds/ManageFeedsPage.qml:404 ../listview/FeedListPage.qml:179
287msgid "Remove"
288msgstr ""
289
290#: ../feeds/ManageTopicsPage.qml:122
291msgid "Delete with feeds"
292msgstr ""
293
294#: ../feeds/ManageTopicsPage.qml:139
295msgid "Use toolbar to append topics"
296msgstr ""
297
298#: ../feeds/TopicManagement.qml:13
299msgid "Management"
300msgstr ""
301
302#: ../feeds/TopicManagement.qml:48
303msgid "Add Feed"
304msgstr ""
305
306#: ../feeds/TopicManagement.qml:79
307msgid "Confirm"
308msgstr ""
309
310#: ../feeds/TopicManagement.qml:112
311msgid "Add a Topic"
312msgstr ""
313
314#: ../listview/ArticleListPage.qml:93
315msgid "There are no articles in the selected feed"
316msgstr ""
317
318#: ../listview/FeedListPage.qml:73
319msgid "All articles"
320msgstr ""
321
322#: ../listview/FeedListPage.qml:74
323msgid "View news from all channels"
324msgstr ""
325
326#: ../listview/FeedListPage.qml:140
327msgid "Update"
328msgstr ""
329
330#: ../listview/FeedListPage.qml:205
331msgid "There are no RSS feeds to show"
332msgstr ""
333
334#: ../listview/ListModePage.qml:220
335msgid "There are no articles to show"
336msgstr ""
0337
=== renamed file 'ubuntu-rssreader-app' => 'rssreader-app'
--- ubuntu-rssreader-app 2013-04-11 21:21:44 +0000
+++ rssreader-app 2013-09-26 09:05:34 +0000
@@ -1,2 +1,2 @@
1#!/bin/bash1#!/bin/bash
2qmlscene /usr/share/ubuntu-rssreader-app/ubuntu-rssreader-app.qml2qmlscene /usr/share/rssreader-app/rssreader-app.qml
33
=== renamed file 'ubuntu-rssreader-app.desktop' => 'rssreader-app.desktop'
--- ubuntu-rssreader-app.desktop 2013-08-29 11:38:46 +0000
+++ rssreader-app.desktop 2013-09-26 09:05:34 +0000
@@ -1,10 +1,10 @@
1[Desktop Entry]1[Desktop Entry]
2Encoding=UTF-8
3Version=1.02Version=1.0
4Type=Application3Type=Application
5Terminal=false4Terminal=false
6Exec=qmlscene /usr/share/ubuntu-rssreader-app/ubuntu-rssreader-app.qml5Exec=qmlscene /usr/share/rssreader-app/rssreader-app.qml
7Icon=/usr/share/ubuntu-rssreader-app/rssreader64.png6Icon=/usr/share/rssreader-app/rssreader64.png
8Name=Shorts7Name=Shorts
8Keywords=shorts;rss;reader
9X-Ubuntu-Touch=true9X-Ubuntu-Touch=true
10X-Ubuntu-StageHint=SideStage10X-Ubuntu-StageHint=SideStage
1111
=== renamed file 'ubuntu-rssreader-app.qml' => 'rssreader-app.qml'
=== renamed file 'rssreader.qmlproject' => 'rssreader-app.qmlproject'
--- rssreader.qmlproject 2013-07-24 21:19:03 +0000
+++ rssreader-app.qmlproject 2013-09-26 09:05:34 +0000
@@ -3,7 +3,7 @@
3import QmlProject 1.13import QmlProject 1.1
44
5Project {5Project {
6 mainFile: "ubuntu-rssreader-app.qml"6 mainFile: "rssreader-app.qml"
77
8 /* Include .qml, .js, and image files from current directory and subdirectories */8 /* Include .qml, .js, and image files from current directory and subdirectories */
9 QmlFiles {9 QmlFiles {
@@ -15,6 +15,21 @@
15 ImageFiles {15 ImageFiles {
16 directory: [".", "./icons_tmp"]16 directory: [".", "./icons_tmp"]
17 }17 }
18 /* Shows the desktop file in the project view */
19 Files {
20 filter: "*.desktop"
21 }
22 /* Shows the README files in the project view */
23 Files {
24 filter: "README*"
25 }
26 /* Shows the translation files and the .pro file used to generate the .pot template */
27 Files {
28 filter: "*.po*"
29 }
30 Files {
31 filter: "*.pro"
32 }
18 /* List of plugin directories passed to QML runtime */33 /* List of plugin directories passed to QML runtime */
19 importPaths: [ "." ,"/usr/lib/x86_64-linux-gnu/qt5/qml", "/usr/lib/i386-linux-gnu/qt5/qml/" ]34 importPaths: [ "." ,"/usr/lib/x86_64-linux-gnu/qt5/qml", "/usr/lib/i386-linux-gnu/qt5/qml/" ]
20}35}
2136
=== modified file 'tests/autopilot/ubuntu_rssreader_app/tests/__init__.py'
--- tests/autopilot/ubuntu_rssreader_app/tests/__init__.py 2013-09-06 01:46:41 +0000
+++ tests/autopilot/ubuntu_rssreader_app/tests/__init__.py 2013-09-26 09:05:34 +0000
@@ -43,7 +43,7 @@
43 else:43 else:
44 scenarios = [('with touch', dict(input_device_class=Touch))]44 scenarios = [('with touch', dict(input_device_class=Touch))]
4545
46 local_location = "../../ubuntu-rssreader-app.qml"46 local_location = "../../rssreader-app.qml"
47 sqlite_dir = os.path.expanduser(47 sqlite_dir = os.path.expanduser(
48 "~/.local/share/Qt Project/QtQmlViewer/QML/OfflineStorage/Databases")48 "~/.local/share/Qt Project/QtQmlViewer/QML/OfflineStorage/Databases")
49 backup_dir = sqlite_dir + ".backup"49 backup_dir = sqlite_dir + ".backup"
@@ -75,9 +75,9 @@
75 def launch_test_installed(self):75 def launch_test_installed(self):
76 self.app = self.launch_test_application(76 self.app = self.launch_test_application(
77 "qmlscene",77 "qmlscene",
78 "/usr/share/ubuntu-rssreader-app/ubuntu-rssreader-app.qml",78 "/usr/share/rssreader-app/rssreader-app.qml",
79 "--desktop_file_hint=/usr/share/applications/"79 "--desktop_file_hint=/usr/share/applications/"
80 "ubuntu-rssreader-app.desktop",80 "rssreader-app.desktop",
81 app_type='qt',81 app_type='qt',
82 emulator_base=toolkit_emulators.UbuntuUIToolkitEmulatorBase)82 emulator_base=toolkit_emulators.UbuntuUIToolkitEmulatorBase)
8383

Subscribers

People subscribed via source and target branches