Compare commits

...

745 Commits
1.0.0 ... 2.1.0

Author SHA1 Message Date
Athou
68f9852790 2.1.0 release 2014-12-12 08:27:49 +01:00
Athou
d0150de003 discourage h2 usage (fix #689) 2014-12-11 15:55:40 +01:00
Athou
e2b792335b split orphan cleanup task in two 2014-12-11 08:46:09 +01:00
Athou
ece38c9e59 only add enclosure if there's one 2014-12-11 08:32:48 +01:00
Athou
a19b5090bf expose enclosures in generated feeds (fix #690) 2014-12-10 18:54:35 +01:00
Athou
e4b3c35892 extract version as a variable 2014-12-09 15:30:48 +01:00
Athou
4b229a759a frontend plugin update 2014-12-09 10:57:52 +01:00
Athou
1e9e42ac48 liquibase upgrade for faster app startup, remove when 3.3.1 is included in dropwizard 2014-12-09 10:35:24 +01:00
Athou
245a48f66e guice update 2014-12-09 10:27:56 +01:00
Athou
e6d8397550 optimize opml export (fix #687) 2014-12-08 08:07:20 +01:00
Athou
d59bd43846 querydsl update 2014-12-06 17:21:14 +01:00
Athou
c1579c83c7 junit update 2014-12-06 17:21:06 +01:00
Athou
4d782e60ad readme update 2014-12-05 08:22:00 +01:00
Athou
c702f47927 more config checks on startup 2014-12-04 14:04:03 +01:00
Athou
9110cfd923 new setting for deleting old entries (fix #524) 2014-12-04 10:27:07 +01:00
Athou
e40dd14bbf reduce default sql logging level for dev 2014-12-04 09:12:08 +01:00
Athou
90aaae9959 Merge pull request #686 from ebraminio/master
Support Android 5.0 bits
2014-12-03 18:15:28 +01:00
Ebrahim Byagowi
e81dda0fa8 Support Android 5.0 bits
http://updates.html5rocks.com/2014/11/Support-for-theme-color-in-Chrome-39-for-Android
2014-12-03 16:57:35 +00:00
Athou
f93796d036 fix for "handshake alert: unrecognized_name" (fix #685) 2014-12-01 16:19:30 +01:00
Athou
d06359cb81 remove deb package creation (fix #684) 2014-12-01 16:02:41 +01:00
Athou
8b68fb578f swagger upgrade (no longer includes logback.xml) 2014-11-27 22:04:13 +01:00
Athou
cca300e419 simpler support for single quotes (#681) 2014-11-26 15:25:38 +01:00
Athou
77c3ec0bbe support for single quotes (#681) 2014-11-26 14:19:08 +01:00
Athou
ed81fc576a fix tagging issues 2014-11-25 10:30:14 +01:00
Athou
435fcb9669 unused method 2014-11-24 16:27:32 +01:00
Athou
9020d95b62 better character encoding detection 2014-11-24 14:55:20 +01:00
Athou
84d7a501d4 directory name change since it's devicejs on bower 2014-11-24 14:17:38 +01:00
Athou
e65dd49d69 use released version of device.js 2014-11-24 13:13:43 +01:00
Athou
a705cbe6c2 instantiate filtering service only once 2014-11-24 12:56:55 +01:00
Athou
60b8af3860 typos 2014-11-24 12:53:13 +01:00
Athou
9ac4187aa8 let the module decide what tasks are registered 2014-11-24 12:49:54 +01:00
Athou
6419d29489 demo account creation is now skipped by default 2014-11-23 13:27:34 +01:00
Athou
4684e43f42 relax opml import conditions (#677) 2014-11-22 22:29:56 +01:00
Athou
a477c9fa6d fix error display 2014-11-22 11:53:53 +01:00
Athou
d1be331f99 handle nulls correctly 2014-11-22 11:53:46 +01:00
Athou
cbc792d406 use the old id generator as it's the one we were using before dropwizard 2014-11-21 16:50:20 +01:00
Athou
0313c5c560 fix placeholder display 2014-11-21 12:04:59 +01:00
Athou
18aa2fcd92 fix subscription error handling 2014-11-21 10:06:48 +01:00
Athou
10461941d7 fix nightsky loadingbar color 2014-11-21 10:01:34 +01:00
Athou
e6050219bc log runtime exceptions 2014-11-20 14:50:24 +01:00
Athou
81481c37fe use daemon threads 2014-11-20 12:26:48 +01:00
Athou
5ea92a7d18 jedis upgrade 2014-11-18 17:27:06 +01:00
Athou
f40630aced upgrade dev dependencies 2014-11-18 12:43:23 +01:00
Athou
81850acdfe enable livereload 2014-11-18 12:24:36 +01:00
Athou
6819d5aa8b highlight unread categories 2014-11-18 12:13:13 +01:00
Athou
2aef4e5d05 typo 2014-11-17 16:06:31 +01:00
Athou
6d4d2c3e7e lang() is deprecated 2014-11-17 16:05:19 +01:00
Athou
87bcaa4731 nightsky theme tweaks 2014-11-17 15:37:19 +01:00
Athou
5d2378f291 swagger ui upgrade 2014-11-17 14:44:05 +01:00
Athou
253507d14b momentjs upgrade 2014-11-17 14:37:48 +01:00
Athou
548fb7099b ui router upgrade 2014-11-17 14:28:24 +01:00
Athou
0dd7c777ee bootstrap upgrade 2014-11-17 14:24:32 +01:00
Athou
6812bf2388 jquery upgrade 2014-11-17 14:24:27 +01:00
Athou
12bcbfa9f7 angular upgrade 2014-11-17 14:24:16 +01:00
Athou
b5dfd371d9 typo 2014-11-17 06:44:11 +01:00
Athou
e09d7fb103 new dark theme 'nightsky' 2014-11-14 16:10:06 +01:00
Athou
0fe3afe254 remove underline on focused link 2014-11-12 09:05:25 +01:00
Athou
db50d50c19 remove dotted lines on focused links 2014-11-11 20:45:55 +01:00
Athou
691bdb1512 force g++ install (fix #673) 2014-11-11 08:55:29 +01:00
Athou
d50b712bca commons-codec upgrade 2014-11-10 10:23:01 +01:00
Athou
3b68e4f32b changelog update 2014-11-10 10:18:20 +01:00
Athou
259b9a90dd clarify help text 2014-11-10 10:16:15 +01:00
Athou
f4c5fd7eb4 wrap class cast exceptions 2014-11-10 10:14:19 +01:00
Athou
3cd42d03f0 reduce horizontal form height 2014-11-10 10:10:41 +01:00
Athou
3497b82e8c liquibase upgrade seems to change checksum here 2014-11-10 10:10:25 +01:00
Athou
15a24e4e75 fix components layout 2014-11-10 10:04:29 +01:00
Athou
96837f908e refactor into a service 2014-11-10 09:49:59 +01:00
Athou
4ea5ebbf9e Merge branch 'entry-filtering' 2014-11-10 09:20:26 +01:00
Athou
281e015376 help block added 2014-11-10 09:12:10 +01:00
Athou
5825a16aff changelog update 2014-11-09 21:25:03 +01:00
Athou
2586a8c433 dropwizard upgrade 2014-11-09 21:13:39 +01:00
Athou
9f7c9c3428 unused code cleanup 2014-11-07 15:02:38 +01:00
Athou
9790ba735b facebook favicon fetcher 2014-11-07 15:02:11 +01:00
Athou
e3dbcac9fb dependencies upgrade 2014-11-07 10:59:04 +01:00
Athou
1c99929429 exclude terms from search (fix #666) 2014-11-07 10:53:49 +01:00
Athou
9b2cdbbb18 fix readability icon position on safari (fix #651) 2014-11-07 10:26:58 +01:00
Athou
928cf1220e config placeholder 2014-11-07 09:41:01 +01:00
Athou
c0557856a3 configurable "from" address (fix #664) 2014-11-07 09:38:55 +01:00
Athou
97c2cc3d15 unit tests for opml importer (#636) 2014-11-07 09:00:53 +01:00
Athou
a94ef980bb cannot loop forever 2014-11-07 08:46:09 +01:00
Athou
eea0c24d2b engine is now strict and throws exceptions instead of returning nulls 2014-11-04 16:25:34 +01:00
Athou
c8fded3c56 don't crash if we cannot evaluate the filter 2014-11-04 16:19:50 +01:00
Athou
8f2ba5e186 initial ui for entry filtering 2014-11-04 16:01:37 +01:00
Athou
5ce2823d0b strip html tags 2014-11-04 15:22:43 +01:00
Athou
a0c70d326f class not used anymore 2014-11-04 15:09:45 +01:00
Athou
5f28fd4114 initial support for entry filtering 2014-11-04 15:07:12 +01:00
Athou
7151db0909 Merge pull request #662 from Athou/dw8
dropwizard upgrade
2014-11-01 11:20:44 +01:00
Athou
e82888f8f3 Merge pull request #661 from Hubcapp/master
Mark Read button now respects filters
2014-11-01 11:18:50 +01:00
Tyler Gebhard
4fb60a6ec6 The "Mark Read" button now only marks the visible entries as read, instead of the entire feed regardless of what keywords you've entered. This should allow better management of RSS feeds, if you don't want to ever look at any content which has certain keywords in it. 2014-11-01 02:10:31 -04:00
Hubcapp
27f22f6094 Merge pull request #3 from Athou/master
back up to date
2014-11-01 02:01:24 -04:00
Athou
7497a0151a upgrade instructions 2014-10-29 08:46:24 +01:00
Athou
41f133afb1 liquibade upgrade fix 2014-10-29 08:46:24 +01:00
Athou
4b15ecbc1b more comments 2014-10-29 08:46:23 +01:00
Athou
6498130850 remove app.contextPath setting 2014-10-29 08:46:23 +01:00
Athou
24bd1121af commons-lang upgrade to v3 2014-10-29 08:46:23 +01:00
Athou
3cccf741d6 dropwizard upgrade to 0.8.0 2014-10-29 08:46:10 +01:00
Athou
0a2d2c3f43 fix travis build 2014-10-29 08:42:32 +01:00
Athou
969da0f2a6 let's release 2014-10-29 08:29:32 +01:00
Athou
2061b68a2f method not used anymore 2014-10-29 08:27:04 +01:00
Athou
443dea5055 huge perf boost 2014-10-29 08:26:53 +01:00
Athou
a4c6365ede pom cleanup 2014-10-28 14:27:15 +01:00
Athou
c9c044386e Merge pull request #659 from Hubcapp/master
update README to encompass all directions to set up development environment
2014-10-27 10:12:33 +01:00
Hubcapp
2744f8285c Merge pull request #2 from Athou/master
update README to encompass all directions to set up development environment
2014-10-27 05:01:06 -04:00
Tyler Gebhard
7bf5f20b06 Moving "Local development" to the bottom; it's become really long, and I think there are more contributors who make themes and translate than contributors who need to set up a development environment.. 2014-10-27 04:56:07 -04:00
Athou
b43aa84c2a enable wadl 2014-10-27 09:54:06 +01:00
Tyler Gebhard
dd27d88309 Nope, more revisions. But this time for sure it looks good. 2014-10-27 04:53:13 -04:00
Tyler Gebhard
8dc36a72b2 I think it's done this time. 2014-10-27 04:51:20 -04:00
Tyler Gebhard
d3ca301675 Replaced arrows, revised step 1 2014-10-27 04:47:30 -04:00
Tyler Gebhard
43e3469e63 Still not happy with the formatting; removed all "\r"s 2014-10-27 04:44:21 -04:00
Tyler Gebhard
cdc3dc6740 Trying to fix formatting. 2014-10-27 04:40:53 -04:00
Tyler Gebhard
6fba8b61e7 Updating local development section to be idiot-proof. Hopefully, it's not too specific. 2014-10-27 04:34:28 -04:00
Hubcapp
b34594a1dc Merge pull request #1 from Athou/master
Merge latest changes from Athou to Hubcapp
2014-10-27 04:19:12 -04:00
Athou
19964d253e fix youtube icons (#658) 2014-10-27 05:23:36 +01:00
Athou
165f3ed25a revert to using gif for default icon 2014-10-26 19:07:52 +01:00
Athou
5058290103 remove unused images 2014-10-26 18:27:22 +01:00
Athou
358a6029a1 cache default (missing) favicon too 2014-10-26 18:27:21 +01:00
Athou
fa4bfa729d fix favicon caching 2014-10-26 18:27:20 +01:00
Athou
9c9e43cf46 readme update (fix #655) 2014-10-26 12:34:33 +01:00
Athou
b7e5bd0144 changelog update 2014-10-26 12:34:21 +01:00
Athou
58dc6f5832 Merge branch 'Hubcapp-master' 2014-10-26 12:26:30 +01:00
Athou
f409af1c37 rewrite favicon fetcher 2014-10-26 12:25:44 +01:00
Tyler Gebhard
9e0c94f1a4 changes to the way favicons are retrieved for YouTube feeds. Now instead of fetching the YouTube logo, it fetches the YouTube user's custom thumbnail. 2014-10-26 03:03:02 -04:00
Athou
3794d61a77 readme update (fix #654) 2014-10-24 11:15:17 +02:00
Athou
d22da54d53 Merge pull request #652 from rationalrevolt/master
Refactor unit tests using DRY, add tests for api login
2014-10-23 05:36:11 +02:00
Sankaranarayanan Viswanathan
8e34c44e0d Refactor unit tests using DRY, add tests for api login 2014-10-22 22:31:36 -04:00
Athou
b71434acf6 use dropwizard built-in executor service facilities 2014-10-22 15:36:21 +02:00
Athou
7e158ed9b9 for some reason, injecting the session helper is not working here 2014-10-22 11:58:03 +02:00
Athou
2ec0d067f3 add logback config for tests 2014-10-22 10:55:42 +02:00
Athou
effc65b777 SecurityCheckProvider now depends on SessionHelper instead of the request 2014-10-22 10:52:01 +02:00
Athou
c48e248283 move session related classes to subpackage 2014-10-22 10:35:50 +02:00
Athou
f9e9a4547c remove unused variable 2014-10-22 10:34:55 +02:00
Athou
63e35aba6d remove unused generic type 2014-10-22 10:34:18 +02:00
Athou
8f852fb9ac performing post login activities for the custom css is not needed since the css is only retrieved on the website and api methods are going to get called right after this 2014-10-22 10:25:14 +02:00
Athou
bf6a13b43f Merge pull request #647 from rationalrevolt/userservice-tests
Remove dependency on HttpSession in UserService
2014-10-22 10:22:54 +02:00
Sankaranarayanan Viswanathan
12030f6ce9 Provide a SessionHelper to manage the session 2014-10-22 01:17:33 -04:00
Athou
07da878bba dependencies upgrade 2014-10-17 08:30:53 +02:00
Sankaranarayanan Viswanathan
8d5c3bdec8 Rename method 2014-10-11 13:37:11 -04:00
Sankaranarayanan Viswanathan
ce95772afa Delete method UserService.login(HttpSession) and copy body to callers 2014-10-11 13:29:29 -04:00
Sankaranarayanan Viswanathan
b9f27b2b00 Make cookieLogin handle HttpSession by itself 2014-10-11 13:24:12 -04:00
Sankaranarayanan Viswanathan
0059cabebe Cover SecurityCheckProvider.SecurityCheckInjectable.cookieLogin with tests 2014-10-11 13:18:09 -04:00
Sankaranarayanan Viswanathan
326ee79c8c Remove HttpSession dependency in UserService phase 1 complete 2014-10-09 20:53:38 -04:00
Sankaranarayanan Viswanathan
54cc265ee6 Refactored UserREST login to populate session itself 2014-10-09 08:38:50 -04:00
Sankaranarayanan Viswanathan
e38778b4d0 Added tests to UserREST.login 2014-10-09 08:31:34 -04:00
Athou
6152d3c14a Merge pull request #646 from rationalrevolt/userservice-tests
Additional tests on UserService.login and refactor
2014-10-09 05:05:23 +02:00
Sankaranarayanan Viswanathan
8a172170ea Test that PostLoginActivities are executed for user after auth success 2014-10-08 22:39:32 -04:00
Sankaranarayanan Viswanathan
64b5d64709 Inject PostLoginActivities and refactor 2014-10-08 22:18:16 -04:00
Sankaranarayanan Viswanathan
67d7315003 Extract afterLogin into a separate class 2014-10-08 21:39:39 -04:00
Sankaranarayanan Viswanathan
47da4a2a1a Change visibility to package private 2014-10-08 21:03:53 -04:00
Sankaranarayanan Viswanathan
174be9c2d1 Added additional tests for UserService login 2014-10-08 20:59:05 -04:00
Athou
9b68539322 fix wrong spacing 2014-10-08 06:56:01 +02:00
Athou
2a4660ffa6 Merge pull request #645 from rationalrevolt/userservice-tests
Added a couple of unit tests on login method of UserService
2014-10-08 06:50:03 +02:00
Sankaranarayanan Viswanathan
dce0cf7ee4 Added a couple of unit tests for UserService login 2014-10-08 00:31:49 -04:00
Sankaranarayanan Viswanathan
d6c39d4aba Add jcenter repository and mockito dependency to pom.xml 2014-10-07 23:14:03 -04:00
Athou
fd7e183f40 Merge pull request #642 from fabianofranz/master
Couple fixes
2014-10-07 20:38:29 +02:00
fabianofranz
bf78a80f29 Fixes OpenShift build 2014-10-07 15:07:54 -03:00
fabianofranz
0ff630b8bd Parenthesis in unread-counter is now on CSS 2014-10-07 13:52:31 -03:00
fabianofranz
49b9e3f278 Fixes OpenShift stop script which caused issues with git push 2014-10-07 13:52:31 -03:00
fabianofranz
a4cc65c6a4 Removed parenthesis from counter labels 2014-10-07 13:52:02 -03:00
Template builder
0b46187ac5 Creating template 2014-10-07 13:52:02 -03:00
Athou
14ef5af936 Merge pull request #641 from ebraminio/patch-1
Use split limit
2014-10-06 11:18:04 +02:00
ebraminio
539d9c6d0e Use split limit 2014-10-06 11:37:37 +03:30
Athou
56bcc5ef5e Merge pull request #623 from ebraminio/patch-1
Only checking 20 first words is usually enough
2014-10-06 09:58:11 +02:00
Athou
d6b0324e24 ubuntu ships maven3 now 2014-10-06 09:57:15 +02:00
Athou
ff044e2592 produce a debian/ubuntu package during build 2014-10-06 09:53:58 +02:00
Athou
3c7747ab97 Merge pull request #638 from rationalrevolt/refactorhttpgetter
Refactor content encoding interceptor out into a separate class
2014-10-03 06:42:15 +02:00
Sankaranarayanan Viswanathan
34d97221ed Rename internal method containsUnsupportedEncodings 2014-10-03 00:39:43 -04:00
Sankaranarayanan Viswanathan
84e78d34cd Refactor content encoding interceptor out into a separate class 2014-10-03 00:31:47 -04:00
Athou
ac73806aee dependency updates 2014-09-26 10:18:42 +02:00
Athou
2105e9a5c9 jedis upgrade 2014-09-23 15:21:34 +02:00
Athou
2a36cc4327 configurable redis pool (fix #629) 2014-09-22 09:51:55 +02:00
Athou
c3feaf9a15 lombok upgrade, project should compile faster 2014-09-19 16:41:49 +02:00
ebraminio
d8537a98aa Only checking 20 first words is usually enough 2014-09-13 22:56:17 +04:30
Athou
42a6001ba5 openjdk8 is not supported by travis 2014-09-13 10:30:11 +02:00
Athou
4d9eb35230 test on openjdk8 too 2014-09-13 10:26:35 +02:00
Athou
e4ac296a1f update badge to use travis 2014-09-13 10:25:50 +02:00
Athou
01b49e7864 should fix travis builds 2014-09-13 10:19:12 +02:00
Athou
bd0b85a8d2 typo fix 2014-09-13 10:11:10 +02:00
Athou
3d59a4c516 changelog update 2014-09-13 10:10:55 +02:00
Athou
08ceff0f03 travis support 2014-09-13 10:09:12 +02:00
Athou
d6ae88ac43 Merge pull request #624 from fabianofranz/master
Fixed Commafeed on OpenShift, added deployment instructions to README
2014-09-13 07:11:58 +02:00
fabianofranz
5c8f016dd6 Fixes OpenShift 2014-09-13 00:13:48 -03:00
Athou
17288017d8 Merge pull request #621 from ebraminio/master
Format test and remove volatile, probably not needed for here
2014-09-11 16:24:43 +02:00
Ebrahim Byagowi
1e2757b52f Use final instead volatile, probably needed for GWT but not here 2014-09-11 18:48:07 +04:30
Ebrahim Byagowi
0dce2f057e Format EstimateDirectionTest 2014-09-11 18:46:09 +04:30
Athou
e017c5c304 various dependency upgrades 2014-09-11 15:45:00 +02:00
Athou
a3e828f90a remove unused variable 2014-09-11 15:43:38 +02:00
Athou
74e5c24fdc fix import 2014-09-11 15:37:09 +02:00
Athou
76c0abaa22 Merge pull request #618 from ebraminio/master
Avoid GWT depedency by bringing simplified dir estimate logic
2014-09-11 15:33:53 +02:00
Ebrahim Byagowi
a52b5fd711 Avoid GWT depedency by bringing simplified dir estimate logic 2014-09-11 17:47:33 +04:30
Athou
ffa51406b6 fix error message display 2014-09-07 19:10:04 +02:00
Athou
0b3b267e63 categories are now deletable again 2014-08-30 16:36:11 +02:00
Athou
fcdb9d8257 dropwizard already has a filter for this 2014-08-22 20:23:31 +02:00
Athou
04943ca525 fix translations not loaded correctly 2014-08-22 20:17:13 +02:00
Athou
574d4a1223 changelog update 2014-08-22 18:19:58 +02:00
Athou
7349814cb2 ie ajax cache workaround 2014-08-22 18:01:06 +02:00
Athou
114c5eb356 [maven-release-plugin] prepare for next development iteration 2014-08-21 09:04:10 +02:00
Athou
191f861f6e [maven-release-plugin] prepare release commafeed-2.0.2 2014-08-21 09:04:01 +02:00
Athou
fac1fcc3a6 git over https 2014-08-21 09:01:54 +02:00
Athou
d0490c5eb5 scm properties 2014-08-21 08:54:18 +02:00
Athou
2673efa9fc fix scrolling of subscriptions list on mobile 2014-08-19 16:20:32 +02:00
Athou
d4bce7b0a1 plugin updates 2014-08-19 13:14:48 +02:00
Athou
ba4a7ce6ab add jar version to manifest, will be printed in stacktraces 2014-08-19 13:14:37 +02:00
Athou
58f10153ab override dropwizard's getname 2014-08-19 12:51:15 +02:00
Athou
e7b65e3f26 actually this works fine, the wrong constructor was injected 2014-08-19 12:49:31 +02:00
Athou
fe91473748 correctly handle error callback (fix #614) 2014-08-19 11:30:19 +02:00
Athou
0140402ad4 don't create a session if it does not exists 2014-08-19 07:34:07 +02:00
Athou
f56cba59ae correctly handle errors 2014-08-19 01:12:19 +02:00
Athou
fed74f05fc revert to using a static user agent, fixes issues with some sites refusing our http requests 2014-08-19 01:05:24 +02:00
Athou
0888f11257 less boilerplate 2014-08-19 01:04:07 +02:00
Athou
7205d5bb9c only queue if not already queued 2014-08-19 00:43:23 +02:00
Athou
17a5ef882f smaller session boundary 2014-08-18 15:30:25 +02:00
Athou
ea68dbc56f configurable session manager 2014-08-18 13:09:54 +02:00
Athou
0cec8af074 don't show jsessionid in url 2014-08-17 17:27:08 +02:00
Athou
f7d0fc5768 db pooling tweak 2014-08-17 16:56:38 +02:00
Athou
bcaab694c8 first try to login using api key 2014-08-17 16:56:23 +02:00
Athou
247a3d5ab3 enable @formatter:on and @formatter:off 2014-08-17 14:35:31 +02:00
Athou
8e262a1e10 guicing up 2014-08-17 14:16:30 +02:00
Athou
f63695bdc7 timeout is in millis but expected in seconds 2014-08-16 17:48:53 +02:00
Athou
b051613b62 merge properties service into configuration 2014-08-16 17:27:27 +02:00
Athou
b886379d34 configuration validation 2014-08-16 12:40:39 +02:00
Athou
2a780dd2bb changelog update 2014-08-16 12:32:06 +02:00
Athou
9cf7b80110 apiKey is in the query params not in the path (Athou/commafeed-newsplus#7) 2014-08-16 12:29:17 +02:00
Athou
8fee73f1d1 fetch i18n files using relative path (#613) 2014-08-16 12:21:25 +02:00
Athou
36edb9373b added config element for context path (fix #611) 2014-08-16 07:05:49 +02:00
Athou
374c4b265a query not used anymore 2014-08-15 19:21:39 +02:00
Athou
db0b685ae1 query rewritten with querydsl 2014-08-15 17:29:58 +02:00
Athou
23d33b8402 delete feed by feed as entries are now deleted in the same transaction as the feed 2014-08-15 15:30:24 +02:00
Athou
8a57be3e63 wrap calls in db session 2014-08-15 15:20:21 +02:00
Athou
823cb03f9b let hibernate clean entries 2014-08-15 15:09:48 +02:00
Athou
e96cbcb057 only reject response if status is 401 2014-08-15 15:04:16 +02:00
Athou
fa0e7bcb54 rome upgrade 2014-08-15 13:57:10 +02:00
Athou
20292a7742 user is logged in after registration 2014-08-15 12:49:10 +02:00
Athou
943bde7eed hide session management inside UserService 2014-08-15 12:46:52 +02:00
Athou
9701af0736 user update should proc with api key and cookie login too 2014-08-15 12:18:10 +02:00
Athou
1456cc40e1 link to metrics 2014-08-14 16:31:14 +02:00
Athou
dc1f88c44c remove old settings and save button as settings are read only now 2014-08-14 16:29:43 +02:00
Athou
55c916956f update changelog 2014-08-14 16:22:13 +02:00
Athou
51eda57618 dynamic user agent string 2014-08-14 16:19:06 +02:00
Athou
d6a55e1ec0 context not needed anymore 2014-08-14 16:10:07 +02:00
Athou
b78210421c ProxyPreserveHost no longer required 2014-08-14 12:45:00 +02:00
Athou
1324269f1d code cleanup 2014-08-14 11:40:30 +02:00
Athou
cda6cb5cc0 query not used anymore 2014-08-14 11:27:43 +02:00
Athou
c1b8619b26 toString() not needed 2014-08-14 10:21:36 +02:00
Athou
4203e25321 remove unused list 2014-08-14 10:21:21 +02:00
Athou
aa02c7b93a wrapping not needed 2014-08-14 09:40:40 +02:00
Athou
0ff477579b findbugs is now happy 2014-08-14 08:38:13 +02:00
Athou
62a8e8c119 prevent timing attacks by using a time-constant comparison algorithm 2014-08-13 17:08:42 +02:00
Athou
fa212e0911 readme update 2014-08-13 14:46:07 +02:00
Athou
c8ad902a60 initial changelog 2014-08-13 14:34:05 +02:00
Athou
f05515d7d6 finer transactions 2014-08-13 13:08:54 +02:00
Athou
95bbcce941 simplify queries 2014-08-13 12:59:06 +02:00
Athou
d6b98f1518 trigger inputs on login 2014-08-13 12:35:37 +02:00
Athou
bd9b1b11c5 don't use jersey dependency directly, keep jersey version in sync with dropwizard 2014-08-13 11:56:36 +02:00
Athou
e4c4960972 remove rest methods as those are scheduled now 2014-08-13 11:49:21 +02:00
Athou
2a26031261 not a good idea 2014-08-13 11:45:35 +02:00
Athou
1d6e212955 fix documentation link 2014-08-13 11:24:42 +02:00
Athou
9fa3743d21 disable autocomplete on profile page 2014-08-13 11:23:36 +02:00
Athou
7b373c79d9 fetch user from database instead of using the one in the session to avoid hibernate exception 2014-08-13 10:15:01 +02:00
Athou
4e9266e2d5 added comment 2014-08-13 10:12:18 +02:00
Athou
ea957e297c fix translations for zn and ms 2014-08-13 10:07:21 +02:00
Athou
9320b6beb8 units of work can now be chained 2014-08-13 10:01:38 +02:00
Athou
1319bf4a8c prepare next release version 2014-08-13 03:23:54 +02:00
Athou
78b1ec6e6a 2.0.1 2014-08-13 03:23:06 +02:00
Athou
6d4cbb889d increase connections in redis pool 2014-08-13 03:03:53 +02:00
Athou
27d16265d6 autofilled fields do not trigger model update, do it manually 2014-08-13 02:51:53 +02:00
Athou
9888e23cd9 next version 2014-08-12 20:49:00 +02:00
Athou
eb5a6913e0 renamed variable for clarity 2014-08-12 19:56:21 +02:00
Athou
34d7cb949d login by name or email 2014-08-12 19:55:57 +02:00
Athou
3c935a0b67 remove potential duplicates 2014-08-12 16:56:18 +02:00
Athou
982cf044ef smarter join 2014-08-12 16:32:03 +02:00
Athou
7a21e9816c prevent NPE 2014-08-12 16:05:57 +02:00
Athou
fd6701079e logging shutdown info 2014-08-12 14:53:04 +02:00
Athou
757cfff0e6 cleanup 2014-08-12 14:39:08 +02:00
Athou
560277663f java dependencies upgrade 2014-08-12 12:02:47 +02:00
Athou
a10d0336c5 persistent sessions across app restarts and across browser restarts 2014-08-12 11:25:00 +02:00
Athou
114ab6834c admin user can be disabled now (fix #605) 2014-08-12 10:35:09 +02:00
Athou
840a96255c Merge pull request #608 from midi/patch-1
denglish  update - forgot to remove one letter...
2014-08-12 10:32:16 +02:00
midi
fd857b1298 denglish update translation (fix)
forgot to remove one character
2014-08-12 08:56:19 +09:00
Athou
281b4512e8 style messages 2014-08-11 20:08:32 +02:00
Athou
ec7081c4b5 fix demo login link 2014-08-11 20:01:24 +02:00
Athou
7dff44bcb4 don't redirect if user is not logged in 2014-08-11 19:53:29 +02:00
Athou
e62c7141af re-implement google analytics 2014-08-11 15:11:01 +02:00
Athou
dd3455d273 re-implement password recovery 2014-08-11 14:55:41 +02:00
Athou
e9cd8317aa fix tooltip translation 2014-08-11 11:07:07 +02:00
Athou
ac7fe91593 swagger ui 2014-08-11 11:05:50 +02:00
Athou
c349c28e12 readme update regarding version bump 2014-08-11 09:50:16 +02:00
Athou
cf302edabe Merge branch 'dropwizard' 2014-08-11 09:48:20 +02:00
Athou
20180eb890 backport translations to dropwizard branch 2014-08-11 09:30:38 +02:00
Athou
60b5f82adb Merge pull request #606 from midi/patch-1
reducing denglish in de translation
2014-08-11 09:30:21 +02:00
midi
a0b07196de reducing denglish 2014-08-11 15:39:57 +09:00
Athou
74907d4067 delete button was not working 2014-08-11 06:19:37 +02:00
Athou
f83a7a2ef7 better transaction granularity 2014-08-11 06:11:12 +02:00
Athou
b8cd0b024c allow admin user removal 2014-08-11 06:01:49 +02:00
Athou
397718fbb4 reimplement custom css feature 2014-08-11 05:51:44 +02:00
Athou
a41ed14fea jar built does not contain version number anymore 2014-08-11 05:33:49 +02:00
Athou
e8f0cfb4bd better detection of empty database 2014-08-11 05:33:00 +02:00
Athou
ff32b0e1c9 too much logging for info level 2014-08-10 21:52:46 +02:00
Athou
e505ed5b7f ignore local config file 2014-08-10 21:48:38 +02:00
Athou
6ef5f824da comments in yaml config files 2014-08-10 21:47:43 +02:00
Athou
7b8801f6db banner 2014-08-10 17:28:01 +02:00
Athou
c8e33aa6c7 reload app after login 2014-08-10 16:37:20 +02:00
Athou
45ea215aaf fix welcome page styling 2014-08-10 16:25:53 +02:00
Athou
8b3da58969 typo 2014-08-10 16:05:33 +02:00
Athou
04981bdcef fix select2 images 2014-08-10 16:03:25 +02:00
Athou
39be4fec4e i18n now working 2014-08-10 15:37:24 +02:00
Athou
f9e7958e8b added scheduler 2014-08-10 07:24:23 +02:00
Athou
3d8c0ca663 add license and readme 2014-08-09 20:17:00 +02:00
Athou
febb6b19dd metric names changed 2014-08-09 20:04:08 +02:00
Athou
96c4431534 plugin update 2014-08-09 19:59:29 +02:00
Athou
1a8ca2242c cache config no longer used 2014-08-09 19:40:55 +02:00
Athou
888545e857 openshift no longer supported 2014-08-09 19:35:12 +02:00
Athou
c5e9e60ab0 configs for dev and prod 2014-08-09 19:35:05 +02:00
Athou
afbbd07a13 apply theme 2014-08-09 19:21:59 +02:00
Athou
cf96a0a84e run in session 2014-08-09 19:15:11 +02:00
Athou
0329c7d876 registration module 2014-08-09 19:04:37 +02:00
Athou
0c25412f03 assets revision 2014-08-09 18:13:47 +02:00
Athou
bbf04c4687 welcome page 2014-08-09 18:13:46 +02:00
Athou
33b683d037 session support 2014-08-09 15:38:42 +02:00
Athou
21ec54408e cache config 2014-08-09 13:26:03 +02:00
Athou
f0f46169e4 next unread servlet 2014-08-09 13:25:53 +02:00
Athou
fa6a3494ae remove todo 2014-08-08 22:32:16 +02:00
Athou
4c0206324d copy favicons 2014-08-08 22:32:02 +02:00
Athou
5867b51f3b use the right user 2014-08-08 22:18:49 +02:00
Athou
c56c213da7 security revamp 2014-08-08 22:18:35 +02:00
Athou
9d070bd33c some tasks depend on the bower task 2014-08-08 17:09:25 +02:00
Athou
986fd25942 removed wicket and tomee, use dropwizard instead. remove wro4j, use gulp instead 2014-08-08 16:49:02 +02:00
Athou
bbcd79e49f Merge pull request #602 from swoga/patch-1
Added translations for german
2014-07-11 12:38:55 +02:00
Peter
4dabf47822 Update de.properties 2014-07-09 15:46:04 +02:00
Athou
db258d4ecc starred items ignore the unreadOnly flag 2014-05-07 23:27:41 +02:00
Athou
8b237db690 ignore loading bar for some requests 2014-04-29 15:55:03 +02:00
Athou
416350c004 reset latency threshold to default 2014-04-29 15:46:44 +02:00
Athou
8d63377e78 patch angular loading bar to allow undefined config 2014-04-29 13:14:54 +02:00
Athou
377176df05 don't minimize already minified files 2014-04-29 12:43:35 +02:00
Athou
95da0078b3 angularjs upgrade 2014-04-29 12:16:02 +02:00
Athou
6392b87afc upgrade to 0.4.0 2014-04-29 12:02:39 +02:00
Athou
ba04d2adfe use angular-loading-bar instead of spin.js for ajax indicator 2014-04-29 10:44:39 +02:00
Athou
517ce1a726 dependencies update 2014-04-22 16:56:31 +02:00
Athou
36492cbff5 fix opml export 2014-04-21 09:53:04 +02:00
Athou
4b46aa08ac display title texts for images on mobile (fix #585) 2014-04-21 09:47:26 +02:00
Athou
1a9a80c0da change title pattern (fix #584) 2014-04-19 06:31:41 +02:00
Athou
32a30019a7 individual settings for share buttons, and added tumblr (#582) 2014-04-16 12:30:25 +02:00
Athou
bb72131354 remove invalid content-encoding headers (fix #580) 2014-04-16 11:42:39 +02:00
Athou
3a8d72cab4 default charset for http should be iso-8859-1 (https://www.w3.org/International/O-HTTP-charset) 2014-04-09 16:21:33 +02:00
Athou
f5f7a8e63b remove invalid content encoding headers (#580) 2014-04-04 11:41:52 +02:00
Athou
570c4f3a1f display cause of invalid feed (#580) 2014-04-04 11:41:15 +02:00
Athou
172164b74b Merge pull request #574 from ekovi/patch-17
Update _svetla.scss
2014-03-22 11:46:49 +01:00
ekovi
49835ae234 Update _svetla.scss 2014-03-22 11:31:31 +01:00
Athou
c4f1e910f8 Merge pull request #573 from ekovi/patch-16
Update _svetla.scss
2014-03-21 11:44:57 +01:00
ekovi
3a621b61c6 Update _svetla.scss
hopefully finished
2014-03-21 11:44:26 +01:00
Athou
c28f0d6788 changed rest endpoint to reflect cleanup task changes 2014-03-21 11:34:29 +01:00
Athou
2db9224ffc first clean entries then clean feeds 2014-03-21 11:28:51 +01:00
Athou
043b1df585 more logging 2014-03-21 00:26:32 +01:00
Athou
0626200787 Merge pull request #572 from ekovi/patch-15
Update _svetla.scss
2014-03-20 23:39:21 +01:00
ekovi
b7ee61a8df Update _svetla.scss 2014-03-20 23:05:18 +01:00
Athou
6e1cdaf50e Merge pull request #571 from ekovi/patch-14
Update _dark.scss
2014-03-19 03:32:22 +01:00
ekovi
e770f802e7 Update _dark.scss 2014-03-18 21:39:33 +01:00
Athou
8e4cf77fcb Merge pull request #569 from ekovi/patch-12
added theme entry
2014-03-18 15:56:45 +01:00
Athou
bc3bd42ce3 Merge pull request #568 from ekovi/patch-11
new theme
2014-03-18 15:56:24 +01:00
Athou
f73e0ba307 Merge pull request #570 from ekovi/patch-13
added reference for new theme
2014-03-18 15:55:33 +01:00
ekovi
5703b5e8d4 added reference for new theme 2014-03-18 15:23:06 +01:00
ekovi
cecbb2cf72 added theme entry 2014-03-18 15:21:20 +01:00
ekovi
8638e4751d new theme 2014-03-18 15:18:19 +01:00
Athou
3b69e3b029 actually remove entries for feeds 2014-03-17 06:18:36 +01:00
Athou
dced21c8e4 revert ng-grid back to 2.0.7, fix admin user list 2014-03-16 15:17:23 +01:00
Athou
dab26af294 allow feeds without entries (fix #565) 2014-03-15 04:24:40 +01:00
Athou
65f118e561 Merge pull request #564 from ekovi/patch-9
Update _svetla.scss
2014-03-14 12:45:31 +01:00
ekovi
67f533b9f6 Update _svetla.scss
'popup-able' feedback button
2014-03-14 12:44:39 +01:00
Athou
93573bcdb7 Merge pull request #563 from ekovi/patch-8
Update _dark.scss
2014-03-14 12:44:12 +01:00
ekovi
2263801c55 Update _dark.scss
{}
2014-03-14 12:43:38 +01:00
Athou
10c34d0440 Merge pull request #562 from ekovi/patch-7
Update _dark.scss
2014-03-14 12:41:14 +01:00
ekovi
4430ef3847 Update _dark.scss
just a few minor changes (to better ofc)
2014-03-14 12:40:27 +01:00
Athou
8e331b908d Merge pull request #561 from ekovi/patch-6
Update _svetla.scss
2014-03-13 14:17:50 +01:00
ekovi
dbc6fb58e0 Update _svetla.scss 2014-03-13 14:03:38 +01:00
Athou
db298ab684 Merge pull request #560 from ekovi/patch-6
Update _dark.scss
2014-03-13 09:42:56 +01:00
ekovi
170a6095e6 Update _dark.scss 2014-03-13 09:30:28 +01:00
Athou
6dd1bf3281 restore pointer mouse icon on hover 2014-03-10 14:51:59 +01:00
Athou
b1500cebfd remove bold from labels 2014-03-10 14:37:45 +01:00
Athou
6202bdbc28 added default bootstrap theme 2014-03-10 14:37:45 +01:00
Athou
39bfb61b95 dependencies update 2014-03-10 14:37:45 +01:00
Athou
fa79524ed4 fix checkbox position 2014-03-10 14:37:44 +01:00
Athou
ab5b70e52b Merge pull request #558 from ekovi/patch-6
Update _dark.scss
2014-03-10 13:13:24 +01:00
ekovi
4f8cd53b83 Update _dark.scss
cleaned style and reworked a bit
2014-03-10 13:07:23 +01:00
Athou
afb6221e5e Merge pull request #557 from ekovi/patch-5
Update _dark.scss
2014-03-10 06:48:47 +01:00
ekovi
f78aedc30d Update _dark.scss
some minor stuff, transition, etc.
2014-03-10 00:25:20 +01:00
ekovi
80ff2c8ff7 Update _dark.scss 2014-03-09 20:40:42 +01:00
Athou
579a77dfc9 remove debug logging 2014-03-06 15:50:57 +01:00
Athou
f902d967a6 wording 2014-03-06 15:48:03 +01:00
Athou
0899e0b0bf server now returns wether the 'unread only' flag was ignored while generating the response (fix scrolling for results in a feed search) 2014-03-06 15:46:19 +01:00
Athou
65d6f8616b fix tag removal 2014-03-03 13:15:37 +01:00
Athou
5c27f0834c wait in the new spawned thread 2014-03-03 12:50:32 +01:00
Athou
a5f7b56bf2 let everything settle a little while longer 2014-03-03 12:42:16 +01:00
Athou
63ec92038c fix tagging 2014-03-03 12:03:42 +01:00
Athou
464ac36ddb added bootstrap webjar 2014-03-03 11:39:09 +01:00
Athou
840bc2ef7a added catalan language 2014-03-02 09:28:24 +01:00
Athou
e248504528 new webjars 2014-03-01 18:34:10 +01:00
Athou
f4f3d9ca48 handle invalid feeds having unescaped html entities 2014-03-01 18:19:49 +01:00
Athou
e727ee414b use webjars if possible 2014-02-28 14:45:12 +01:00
Athou
1e9295b386 wro4j upgrade 2014-02-28 13:43:30 +01:00
Athou
b980cdc2c2 Merge pull request #554 from ekovi/patch-4
Update controllers.js
2014-02-27 16:16:31 +01:00
Athou
fbe722facd Merge pull request #553 from ekovi/patch-3
Update app.scss
2014-02-27 16:16:29 +01:00
Athou
1897d8e0c0 Merge pull request #552 from ekovi/patch-2
_dark.scss
2014-02-27 16:16:27 +01:00
ekovi
3745a152aa Update controllers.js
added theme entry
2014-02-26 21:15:53 +01:00
ekovi
a7731acb08 Update app.scss
added theme entry
2014-02-26 21:11:56 +01:00
ekovi
16dd5deed4 update
forgot to enclose in #theme {}
2014-02-26 21:09:24 +01:00
ekovi
c9f70650a0 Create _dark.scss
new theme
2014-02-26 21:07:31 +01:00
Athou
eaa84253df dependencies update 2014-02-26 16:14:11 +01:00
Athou
45abcd7385 instantiate whitelist only once 2014-02-26 08:37:00 +01:00
Athou
8a633aa648 if link is empty, use guid instead if able (fix #551) 2014-02-26 08:36:40 +01:00
Athou
05e092062d wicket upgrade 2014-02-26 08:36:15 +01:00
Athou
e83602a05c load angular main js file first 2014-02-25 06:29:17 +01:00
Athou
abf8666e24 angularjs update 2014-02-25 06:15:45 +01:00
Athou
af1ccc6669 1.5.0-snapshot 2014-02-24 16:04:41 +01:00
Athou
cdcbfbff68 stable enough, time to tag 2014-02-24 16:03:38 +01:00
Athou
6860940afc fix javax.net.ssl.SSLProtocolException: handshake alert:
unrecognized_name (fix #549)
2014-02-22 13:12:55 +01:00
Athou
bfc2ee3663 readme update 2014-02-20 11:22:42 +01:00
Athou
b104622081 switch to bonecp 2014-02-20 10:32:16 +01:00
Athou
a861387bd7 handle null categories 2014-02-14 15:41:17 +01:00
Athou
b0f2260fad dependencies update 2014-02-12 21:02:00 +01:00
Athou
97f0d98ffd Merge pull request #544 from ebraminio/master
Update Persian translation
2014-02-03 04:23:11 -08:00
Ebrahim Byagowi
1ad58a029c Update Persian translation 2014-02-03 15:49:09 +03:30
Athou
4c27da0433 propagate exception 2014-02-02 12:30:41 +01:00
Athou
faf69b43c3 fix aspect ratio for large images 2014-02-02 12:19:52 +01:00
Athou
7fff561268 switch to dbcp as tomcat-pool seems to leak connections 2014-01-09 09:13:30 +01:00
Athou
5e1360a65b smarter log cleanup script (#533) 2014-01-07 12:02:15 +01:00
Athou
cc92d2f546 Merge pull request #537 from Busimus/patch-3
Fixed typo.
2014-01-07 02:53:14 -08:00
Athou
def75a250f Merge pull request #538 from Busimus/patch-6
Updated ru.properties
2014-01-07 02:52:53 -08:00
Alexander Bus
15cd7caf9b Update ru.properties 2014-01-06 23:05:41 +07:00
Alexander Bus
41a51530ef Fixed typo. 2014-01-06 22:14:13 +07:00
Athou
3a101941b3 mark as read when swiping entry title to the right 2013-12-18 18:36:22 +01:00
Athou
0976fee4df fix left padding on mobile 2013-12-13 17:42:40 +01:00
Athou
f87da777da improved support for fxos 2013-12-13 17:29:48 +01:00
Athou
e1c2bf0890 Merge pull request #534 from JKakku/patch-3
Translated confirmation messages
2013-12-12 22:46:25 -08:00
JKakku
b829defb30 Translated confirmation messages 2013-12-13 01:12:41 +02:00
Athou
fa8770d2a7 restore main content padding 2013-12-12 15:12:43 +01:00
Athou
222c8a65af git plugin update 2013-12-12 13:11:07 +01:00
Athou
76f5b67ac4 openshift changes (fix #532) 2013-12-12 11:51:48 +01:00
Athou
1791d49efe resizeable subscription list 2013-12-12 11:51:48 +01:00
Athou
64e1b5df09 fix sync during development 2013-12-12 10:25:08 +01:00
Athou
e1ff077623 Merge pull request #531 from LpSamuelm/patch-20
Translated new labels to Swedish
2013-12-11 01:24:42 -08:00
LpSamuelm
1361072558 Translated new labels to Swedish
Translatin' labels! Oh yeah!
2013-12-11 10:23:20 +01:00
Athou
5119434d21 more metrics 2013-12-10 14:02:06 +01:00
Athou
b29540b14e first add feeds from the queue, then if needed fetch feeds from the database to fill the batch 2013-12-10 11:08:52 +01:00
Athou
e69785bb89 smaller margins on mobile 2013-12-10 09:28:58 +01:00
Athou
76465fee07 remove horizontal scrolling on mobile 2013-12-06 04:12:19 +01:00
Athou
b52c459ebb calculate offset correctly for tags and starred listing (fix #530) 2013-12-05 12:25:17 +01:00
Athou
1d73982545 apply where clause when predicate list has been populated 2013-12-05 12:23:59 +01:00
Athou
74f6c45f36 Merge pull request #527 from evenorbert/patch-2
Update hu.properties
2013-12-02 07:20:56 -08:00
Norbert Evenich
0490b528e4 Update hu.properties
Updated hungarian translation.
2013-12-02 16:07:26 +01:00
Athou
ffa1e14449 feed url autofocus 2013-11-29 16:13:26 +01:00
Athou
b8fe89b2f4 tomee upgrade 2013-11-29 16:10:43 +01:00
Athou
94b293202c support for meego devices 2013-11-29 12:19:55 +01:00
Athou
7ef143a642 mousetrap upgrade 2013-11-29 11:24:35 +01:00
Athou
057f6916e9 spinjs upgrade 2013-11-29 11:24:29 +01:00
Athou
e24e892cb3 jquery upgrade 2013-11-29 11:22:03 +01:00
Athou
78976b06e2 lodash upgrade 2013-11-29 11:21:42 +01:00
Athou
96cfcd5b2b angularjs upgrade 2013-11-29 10:15:29 +01:00
Athou
12bda0122c make images fit available width 2013-11-28 19:35:31 +01:00
Athou
4ac4e5abf2 commons collection upgrade to 4.0 2013-11-28 16:56:52 +01:00
Athou
268f0f53a8 close tree when button clicked on mobile 2013-11-28 11:58:53 +01:00
Athou
71521f3428 fix mobile layout 2013-11-28 10:45:10 +01:00
Athou
6101fb2bef new translations 2013-11-28 10:12:52 +01:00
Athou
8f6aa0896b fix bootstrap dialogs 2013-11-28 10:12:10 +01:00
Athou
b8f0af5b2e fix radio buttons 2013-11-28 09:15:14 +01:00
Athou
32730f6c41 force full refreshes only when under heavy load 2013-11-27 15:54:23 +01:00
Athou
7caa99f8f2 bootstrap3 2013-11-27 15:54:23 +01:00
Athou
4f8e2ab478 limit transaction size 2013-11-27 08:07:44 +01:00
Athou
5c44f392ca remove warning 2013-11-26 15:11:44 +01:00
Athou
174d21fd4e move logic to user service 2013-11-26 15:09:32 +01:00
Athou
c2ed6d47f1 force a full refresh of the user's feeds when he logs in 2013-11-26 07:05:59 +01:00
Athou
0f6f717d09 tweaking batch size again 2013-11-20 11:33:21 +01:00
Athou
d7fb637f68 same batch size for all operations 2013-11-16 11:27:48 +01:00
Athou
fce9086b27 remove deprecated duplicate feed detection 2013-11-16 07:40:44 +01:00
Athou
97586cd2c8 batch delete entries too 2013-11-16 07:30:01 +01:00
Athou
b74458f0b0 more logging 2013-11-15 21:38:11 +01:00
Athou
7c7a0fceaf reduce batch size for feeds 2013-11-15 15:53:22 +01:00
Athou
425a8880cd smaller preview image 2013-11-14 15:27:31 +01:00
Athou
23fe90ec64 fix log message 2013-11-14 14:41:41 +01:00
Athou
c01ec5d039 fix openshift log cleanup script 2013-11-14 13:02:24 +01:00
Athou
4f284165c2 more database cleanup tasks 2013-11-14 12:56:08 +01:00
Athou
2a62ccff11 jackson upgrade 2013-11-14 12:42:07 +01:00
Athou
d09cf472dd disable services not needed 2013-11-13 16:26:23 +01:00
Athou
5c721ae6f5 prevent scanning classes twice 2013-11-13 16:18:34 +01:00
Athou
2bb8fcdb5f scan our classes only 2013-11-13 16:17:10 +01:00
Athou
6eda93098b trust should be the last filter 2013-11-12 15:52:30 +01:00
Athou
6344f554d6 rewrite iframes to use https if commafeed uses https 2013-11-12 15:44:56 +01:00
Athou
7e4c1f374c use latest wro4j in prod profile, using latest jruby version (fix #315) 2013-11-12 11:49:11 +01:00
Athou
28eaab7f7d trust enclosure urls 2013-11-12 11:35:22 +01:00
Athou
1937944f7e fix search 2013-11-12 09:57:59 +01:00
Athou
3b4b84fdab formatting 2013-11-12 09:45:26 +01:00
Athou
32325bb49c angularjs 1.2.0 upgrade 2013-11-12 09:43:42 +01:00
Athou
c01c1e93f9 lombok upgrade 2013-11-12 08:53:38 +01:00
Athou
eac096019f jsoup upgrade 2013-11-12 08:53:22 +01:00
Athou
9f9389e846 liquibase upgrade 2013-11-12 08:53:05 +01:00
Athou
a71317881f wicket upgrade 2013-11-12 08:52:46 +01:00
Athou
7092824c96 grid dates formatting (fix #421) 2013-11-08 11:37:45 +01:00
Athou
0ff998bbd7 bigger items on mobile 2013-11-08 11:37:45 +01:00
Athou
fc318ad211 smarter mobile detection (fix #255 and fix #487) 2013-11-08 11:37:44 +01:00
Athou
73323335cb cosmetic fix 2013-11-08 11:37:44 +01:00
Athou
ef57c5523d Merge pull request #523 from utimukat55/translate_ja
Add translation ja
2013-11-07 06:10:46 -08:00
utimukat55
846f4a7222 Add translation ja 2013-11-07 21:27:14 +09:00
Athou
05036778d6 httpclient upgrade 2013-11-05 15:27:19 +01:00
Athou
52df661238 mysql jdbc driver update 2013-10-29 13:26:39 +01:00
Athou
7957dc237e for generated feeds, set 'all' as default instead of 'unread' 2013-10-29 07:05:19 +01:00
Athou
3fe419ba2f disable openejb stats 2013-10-24 14:50:51 +02:00
Athou
61944656b8 allow same query parameters for entriesAsFeed (fix #521) 2013-10-24 09:50:35 +02:00
Athou
1cb997b66d moved query 2013-10-24 09:50:35 +02:00
Athou
89463808db return exception stacktrace in the body 2013-10-23 07:55:14 +02:00
Athou
6aca66d8cf prevent NPE 2013-10-20 17:12:53 +02:00
Athou
38f8102fb3 readability support (fix #108) 2013-10-20 15:26:58 +02:00
Athou
e709499240 Merge pull request #520 from LpSamuelm/patch-19
Translated new labels to Swedish
2013-10-15 18:34:45 -07:00
LpSamuelm
0b714d5e52 Translated new labels to Swedish
WOAH TAGS
2013-10-16 03:32:12 +02:00
Athou
98e4f0c6dc Merge pull request #519 from ekovi/patch-1
updated
2013-10-15 11:18:32 -07:00
ekovi
d82d0af565 updated 2013-10-15 19:21:00 +02:00
Athou
d8abb7039d Merge pull request #518 from JKakku/patch-2
Update fi.properties
2013-10-15 09:22:26 -07:00
JKakku
84dc11048d Update fi.properties
Added the missing stuff since the last update couple of months ago.
2013-10-15 18:17:31 +03:00
Athou
bad915bbaa fix warnings 2013-10-14 15:57:35 +02:00
Athou
287dea2d36 use tag for feed name is available 2013-10-14 07:41:19 +02:00
Athou
a0b937769d autofocus the input when it appears 2013-10-14 07:01:14 +02:00
Athou
6acef4a406 fix mark up to link positioning on mobile 2013-10-14 02:44:48 +02:00
Athou
8b77eb9850 add valid checksum (fix #517) 2013-10-14 02:15:03 +02:00
Athou
6f22836dcb remove double slash in image 2013-10-13 21:34:53 +02:00
Athou
a4347c8878 highlight tag if selected 2013-10-13 16:02:59 +02:00
Athou
836f7eff09 better index usage 2013-10-13 12:15:41 +02:00
Athou
c993bd472d cleanup 2013-10-13 12:04:29 +02:00
Athou
431ab92a02 tagging support (#96) 2013-10-13 11:58:22 +02:00
Athou
94f469a6b1 js dependencies update 2013-10-13 10:49:03 +02:00
Athou
3fec1c6890 dependencies update 2013-10-12 17:41:07 +02:00
Athou
f8316911bd another typo 2013-10-12 14:57:01 +02:00
Athou
642d1f6be5 typo 2013-10-12 14:56:24 +02:00
Athou
5a82c3a130 Merge pull request #515 from rthome/master
Translate new strings to German
2013-10-12 00:10:15 -07:00
Raffael Thome
6a8174afac Translate new strings to German 2013-10-12 08:17:49 +02:00
Athou
f4c86634f7 liquibase upgrade, removing dirty fix 2013-10-10 10:07:16 +02:00
Athou
322e588a4e Merge pull request #514 from LpSamuelm/patch-18
Translated new labels to Swedish
2013-10-07 22:06:03 -07:00
Athou
822dee7a13 scale better, don't block when the pool is exhausted 2013-10-08 07:05:31 +02:00
LpSamuelm
101e179788 Translated new labels to Swedish 2013-10-07 21:04:35 +02:00
Athou
57abee6cf0 use the url of the feed as the base url to resolve relative entry links when the declared link in the feed is relative 2013-10-03 12:42:05 +02:00
Athou
b615847b09 make sure entries with same update date are always sorted the same way 2013-10-03 11:05:13 +02:00
Athou
ffef87e249 customizable scrolling speed 2013-10-03 10:40:58 +02:00
Athou
ba3b8df4c9 mark older than half a day 2013-10-03 10:02:16 +02:00
Athou
40175d3e54 dependencies update 2013-09-25 13:51:09 +02:00
Athou
06b047cfe6 1.4.0 snapshot 2013-09-25 13:48:29 +02:00
Athou
1f4d62ab47 1.3.0 release 2013-09-25 13:47:13 +02:00
Athou
a7b826bd4f prevent unintentional entry list reset 2013-09-20 08:11:28 +02:00
Athou
407481faa6 delete operation does not support limit. limit on select and delete afterwards 2013-09-18 09:24:31 +02:00
Athou
305b68546c create a new transaction for each delete chunk 2013-09-18 09:24:05 +02:00
Athou
136c41c6aa delete old read statuses by chunks in order to avoid large transactions 2013-09-17 13:01:27 +02:00
Athou
587b25b18b Merge pull request #510 from Cymrodor/patch-1
Update cy.properties
2013-09-16 19:40:29 -07:00
Cymrodor
beaa40ad65 Update cy.properties
Ychwanegu, cwtogi, cywiro a thacluso.
2013-09-16 23:21:39 +01:00
Athou
1389a5a238 readme update 2013-09-16 20:32:37 +02:00
Athou
2f34ff8a9f prevent NPE if session does not exist 2013-09-16 07:01:47 +02:00
Athou
d3626b0e7c reduce blockquotes font size 2013-09-10 19:07:17 +02:00
Athou
bb4529b6f1 improve scrolling performance by registering events only once instead of once per entry 2013-09-10 16:12:39 +02:00
Athou
dd94125d52 remove unneeded synchronization locks on settings 2013-09-08 19:08:26 +02:00
Athou
a7149e3740 don't start a new reporter every time the registry is injected 2013-09-05 16:30:14 +02:00
Athou
b64d041385 Merge pull request #505 from ekovi/patch-3
Update _svetla.scss
2013-09-01 01:36:17 -07:00
Athou
cc04bdfbc5 Merge pull request #504 from LpSamuelm/patch-17
Translated new labels to Swedish
2013-09-01 01:34:53 -07:00
Athou
d8c772ed5e compact forms 2013-09-01 10:33:36 +02:00
Athou
dfcc4eeebd return an error message when feed/category is not found instead of returning an empty feed/category 2013-09-01 10:33:35 +02:00
ekovi
e491841d4a Update _svetla.scss
some changes and fixes
2013-08-30 20:37:36 +02:00
LpSamuelm
ccb72837b3 Translated new labels to Swedish 2013-08-30 09:24:47 +02:00
Athou
6560fc9d05 display gauges as well 2013-08-23 14:12:13 +02:00
Athou
14d5879735 fix issue where only the first directive was shown 2013-08-23 13:40:23 +02:00
Athou
7fa8bef3de initial metrics page setup 2013-08-23 12:58:24 +02:00
Athou
966caae727 store and use urlAfterRedirect if different than the actual url 2013-08-22 15:55:05 +02:00
Athou
a14484ee03 retrieve the final url after potential http 30x redirect 2013-08-22 15:36:04 +02:00
Athou
fb9b42ab12 added log4j entry for metrics 2013-08-22 15:27:24 +02:00
Athou
6974abdb95 don't compare strings with == 2013-08-22 12:04:00 +02:00
Athou
65efdeb1df wicket update 2013-08-22 09:13:56 +02:00
Athou
54a39ea0a9 fix scrolling issues on some mobile devices (#482) 2013-08-22 09:13:56 +02:00
Athou
641350cbde detect categories in opml files by checking if they have children 2013-08-22 06:20:44 +02:00
Athou
06ece8f5ee Merge pull request #497 from ekovi/patch-1
translation of additional entries
2013-08-21 20:44:32 -07:00
ekovi
ca87f1c47a translation of additional entries 2013-08-21 21:17:06 +02:00
Athou
c38ddb5d00 add a note about hsqldb data location (fix #496) 2013-08-21 13:04:12 +02:00
Athou
1acd7c4a01 set serialid 2013-08-20 09:47:08 +02:00
Athou
d92c2ebdf7 measure refill rate 2013-08-18 17:19:01 +02:00
Athou
8f19e9408e report through jmx 2013-08-18 17:13:45 +02:00
Athou
3ecb47da5a use timers instead of meters 2013-08-18 16:42:01 +02:00
Athou
ae03b42c6d pretty print response if method is annotated with @PrettyPrint or 'pretty' req param is set to true 2013-08-18 16:29:41 +02:00
Athou
ee4eb9bb07 use codahale metrics library instead of our own 2013-08-18 16:29:07 +02:00
Athou
a0be2e0879 added gmail social sharing button 2013-08-17 21:55:29 +02:00
Athou
a3414d7156 let's use snapshots 2013-08-17 13:47:14 +02:00
Athou
81a4b36c08 we don't need to set the default port manually as wicket does that for us 2013-08-16 21:33:59 +02:00
Athou
bf154cf83d set port too 2013-08-16 21:23:11 +02:00
Athou
0d1234ca4b use protocol from the publicUrl when rendering urls 2013-08-16 21:10:25 +02:00
Athou
a1c42f2709 preserve https across redirections if it was set 2013-08-16 19:27:13 +02:00
Athou
7608921684 readme update 2013-08-16 18:03:07 +02:00
Athou
24f2b17416 reduce session size and prevent potential session loss (and exceptions) when server restarts 2013-08-16 17:40:45 +02:00
Athou
33eb469520 silence swagger, generated warnings are distracting 2013-08-16 17:06:52 +02:00
Athou
90eef904f9 import cleanup 2013-08-16 16:40:04 +02:00
Athou
d1f72ee53a if we fail to parse the rule, return an empty rule instead 2013-08-16 16:31:43 +02:00
Athou
e0e212dfc4 trust encoding declared as windows codepages (fix #491) 2013-08-16 13:41:49 +02:00
Athou
ef0a03cb3b added link to news+ extension 2013-08-16 13:40:14 +02:00
Athou
221eeddab8 don't add already existing entries (#477) 2013-08-16 13:32:58 +02:00
Athou
1076527b62 make chrome think every bookmark click is a different url in order to create history entries (fix #488) 2013-08-14 10:43:10 +02:00
Athou
1e13c11061 prevent NPE 2013-08-13 15:35:02 +02:00
Athou
440922380d use jackson for json only 2013-08-13 12:49:57 +02:00
Athou
969a199a8e new label 2013-08-13 12:21:21 +02:00
Athou
21b0176a49 display message on details page 2013-08-13 12:15:30 +02:00
Athou
06a996cd81 added ability to exclude subscriptions from getEntries 2013-08-13 10:10:25 +02:00
Athou
e1fc33626e added ability to exclude subscriptions from markAll 2013-08-13 09:40:13 +02:00
Athou
b331626e8f don't send the OK int constant as entity 2013-08-13 09:25:55 +02:00
Athou
95d4f725f9 feed id not required anymore 2013-08-13 09:14:41 +02:00
Athou
45b54a75db annotations not needed anymore 2013-08-13 09:06:08 +02:00
Athou
e000bb05c4 don't handle byte arrays with jackson (feed icons, ...) 2013-08-12 20:53:19 +02:00
Athou
d66ca05dca don't wrap String responses with double quotes 2013-08-12 20:50:03 +02:00
Athou
321260b0a5 set disabledUntil to now instead of null when the error count threshold has not been reached yet 2013-08-12 16:20:55 +02:00
Athou
5ef8fd18ca annotations not needed anymore 2013-08-12 13:42:18 +02:00
Athou
5b5d5cca1c jackson update 2013-08-12 12:45:25 +02:00
Athou
51ac16a9e1 small refactoring 2013-08-12 10:03:34 +02:00
Athou
cf185c3877 only fetch status when we know it's there 2013-08-12 10:01:24 +02:00
Athou
71368fba62 fix reply message 2013-08-11 17:22:17 +02:00
Athou
6bae50a56a wicket update 2013-08-11 17:12:00 +02:00
Athou
27681603cd generate accessors only 2013-08-11 14:01:16 +02:00
Athou
e1be05711b use lombok data instead of getters and setters 2013-08-11 12:09:05 +02:00
Athou
7b1bb9072e modelgen upgrade 2013-08-11 12:01:08 +02:00
Athou
a58b0a0806 use lombok data instead of getters and setters 2013-08-11 11:59:24 +02:00
Athou
e26950671c clarify documentation: keywords are not required 2013-08-11 11:50:30 +02:00
Athou
0d730128f7 use lombok slf4j annotation 2013-08-11 11:45:32 +02:00
Athou
174664619b use lombok 2013-08-11 11:11:09 +02:00
Athou
f8738f10af added optional 'onlyIds' api parameter 2013-08-09 12:53:21 +02:00
Athou
677fb87f71 increase limit 2013-08-09 12:18:35 +02:00
Athou
c980e5dd67 return newly created category id 2013-08-09 09:36:06 +02:00
Athou
474995c8dd send date of the newest subscriptions item 2013-08-08 17:00:52 +02:00
Athou
74ee810757 Merge pull request #486 from swoga/patch-1
Update de.properties
2013-08-08 07:27:36 -07:00
swoga
c5b56b47ae Update de.properties 2013-08-08 16:26:47 +02:00
Athou
dccaca4972 file writing is now java vendor independent (#485) 2013-08-08 15:31:31 +02:00
Athou
92f53a0034 double click in the tree opens the edit page 2013-08-07 16:41:37 +02:00
Athou
15eb00b1ba new labels 2013-08-07 16:32:13 +02:00
Athou
041b5ad2c0 tweaking display for search results 2013-08-07 16:31:44 +02:00
Athou
4520ef4078 search is now context aware (will only search in selected category or feed) 2013-08-07 15:26:43 +02:00
Athou
701a1903ba move feedcount in its own file 2013-08-07 10:08:03 +02:00
Athou
ff7458dfc1 make sure statuses are unique 2013-08-06 16:20:50 +02:00
Athou
a72e08c0c6 try to parse given url before using embedded links 2013-08-06 13:49:03 +02:00
Athou
2bff335698 show exception in debug log 2013-08-06 13:07:50 +02:00
Athou
b8a256ac7d allow some css rules for images (#478) 2013-08-06 13:00:28 +02:00
Athou
2168c0039a Merge pull request #479 from Athou/disk-io
stay in indexes as long as possible
2013-08-06 03:48:58 -07:00
Athou
d225884ec3 stay in indexes as long as possible 2013-08-06 12:39:12 +02:00
Athou
9934c4a169 reset current entry tracking when reloading (#476) 2013-08-06 11:46:39 +02:00
Athou
9e75f23d8f display more of the feed name 2013-08-06 11:14:12 +02:00
Athou
f36471bbf3 in unread mode, use the actual number of unread items as offset instead of the size of the list of items (#462) 2013-08-03 16:32:18 +02:00
Athou
4664bef4d8 not needed anymore 2013-08-01 21:16:01 +02:00
Athou
71403d4174 if under heavy load, don't refresh feeds for users who logged in more than a month ago for the last time 2013-08-01 21:11:45 +02:00
Athou
cb1b99815c copy generated api docs even when prod flag is false 2013-08-01 18:26:10 +02:00
Athou
5668efc8a8 don't expose documentation class in the method signature as it's not available at runtime 2013-08-01 18:16:44 +02:00
Athou
d3223ec8b4 exclude api generator from war 2013-08-01 17:20:06 +02:00
Athou
bfbe39993f use an annotation processor instead of a groovy script because of classloading issues 2013-08-01 17:11:57 +02:00
Athou
e90747fd08 display the base url statically 2013-08-01 14:38:24 +02:00
Athou
8926f9784d documentation is now generated during build time and swagger is not needed for runtime anymore 2013-08-01 13:35:04 +02:00
Athou
0ff1d58dfb code formatting 2013-08-01 11:18:06 +02:00
Athou
8df587aaad don't display entries twice when refreshing during loading (fix #473) 2013-08-01 11:18:06 +02:00
Athou
10fdffc378 Merge pull request #475 from res87th/patch-1
Light changes in ru.properties
2013-07-31 23:11:35 -07:00
res87th
a7d7335970 Update ru.properties 2013-07-31 22:55:59 -07:00
Athou
bb5244c118 return headers on all requests 2013-08-01 05:33:23 +02:00
Athou
f20a5e92e2 extracted needed classes and remove crawler4j dependency and java7 requirement 2013-08-01 05:24:05 +02:00
Athou
5ce0428b15 Merge pull request #472 from gabrielrcp/translation
New labels for ptuguese translation
2013-07-31 09:56:21 -07:00
Athou
a43e738365 set default value 2013-07-31 18:47:20 +02:00
Gabriel Peixoto
f4a4eab32d New labels for portuguese translation. 2013-07-31 13:44:00 -03:00
Athou
7ffc58892a marker already present in the openshift repository, delete to avoid merge conflicts 2013-07-31 18:26:35 +02:00
Athou
8f85637bb8 invalidate cache once per feed instead of once per entry 2013-07-31 16:03:52 +02:00
Athou
a37925396a mobile view tweaks 2013-07-31 15:51:00 +02:00
Athou
b66749264a added http headers for cross origin resource sharing 2013-07-31 15:31:06 +02:00
Athou
6dcf2aabd1 pass a context object around instead of creating transient fields in model objects 2013-07-31 13:06:57 +02:00
Athou
71bb33d710 small cleanup 2013-07-31 12:07:29 +02:00
Athou
365c235e1f fix jslint warning 2013-07-31 11:35:53 +02:00
Athou
da65e85081 apply new js formatter 2013-07-31 11:16:50 +02:00
Athou
7497b88c26 added javascript formatter 2013-07-31 11:16:40 +02:00
Athou
5d5c955451 list filtering wasn't working correctly 2013-07-31 11:07:48 +02:00
Athou
c17cc5bd1c highlight search results 2013-07-31 11:02:39 +02:00
Athou
54e5621267 more infos in entry header in mobile view 2013-07-31 09:18:08 +02:00
Athou
13534b5f44 hide feedback button in mobile view 2013-07-31 08:59:30 +02:00
Athou
43a0c7be81 relationships are not needed for that query 2013-07-30 21:12:52 +02:00
Athou
8ec9705dd6 .gitkeep files not needed 2013-07-30 16:17:16 +02:00
Athou
a82e6f3402 hibernate timeout is in seconds 2013-07-30 14:38:50 +02:00
Athou
704081656e increase batch size again 2013-07-30 13:23:32 +02:00
Athou
201a3ae96f Merge pull request #468 from swoga/patch-1
Added translations to de.properties
2013-07-30 03:35:10 -07:00
swoga
2d54ec9efb Added translations to de.properties 2013-07-30 12:33:57 +02:00
Athou
c1ac273749 increase maximum allowed favicon size 2013-07-30 09:20:52 +02:00
Athou
9bc5fdf02f small batch size seems better than a large one 2013-07-30 06:18:22 +02:00
Athou
8d340e0f52 optimization not needed anymore 2013-07-29 21:31:08 +02:00
Athou
8628ac9e9a use ApplicationPropertiesService 2013-07-29 16:42:52 +02:00
Athou
737e24e7dc more push callback checks 2013-07-29 12:24:03 +02:00
Athou
f5943889ec increase batch size 2013-07-29 12:10:22 +02:00
Athou
61bdd484d3 Merge pull request #467 from yxd-works/patch-3
Update zh.properties
2013-07-29 01:44:57 -07:00
Athou
0ed901ffb6 fix error when emitting event without payload 2013-07-29 10:43:57 +02:00
Athou
5fe5b97130 configurable feed refresh interval 2013-07-29 10:40:55 +02:00
Athou
ef79cf1748 added comments for refill() 2013-07-29 09:47:21 +02:00
YANG Xudong
0f00161b93 Update zh.properties 2013-07-29 11:31:44 +09:00
Athou
0809021c25 Merge pull request #466 from JKakku/patch-1
Update fi.properties
2013-07-28 11:29:45 -07:00
JKakku
ad28b26e72 Update fi.properties 2013-07-28 21:02:22 +03:00
Athou
7827cf49d6 limit queue sizes 2013-07-28 16:36:21 +02:00
Athou
8ed58a8aa5 reduce cache size 2013-07-28 16:14:34 +02:00
Athou
068bb1a0d8 Merge pull request #465 from LpSamuelm/patch-16
Translated new labels to Swedish
2013-07-28 07:11:42 -07:00
LpSamuelm
4f1b458458 Translated new labels to Swedish
woop woop in da boop
2013-07-28 15:41:58 +02:00
Athou
7ad9c24879 fix feed cleanup 2013-07-28 14:35:10 +02:00
Athou
e3e476555a use default thread factory 2013-07-28 12:44:24 +02:00
Athou
223c2f464e index for entry lookup 2013-07-27 17:22:31 +02:00
Athou
6d396e1982 don't fetch the whole content, just return the id if it does 2013-07-27 16:42:50 +02:00
Athou
60bf96411c removed unused urlHash field 2013-07-27 15:45:15 +02:00
Athou
3dd4f140e2 refactored the way we handle feed refresh queue 2013-07-27 15:45:03 +02:00
Athou
1131d70645 move utility method to service (fix #463) 2013-07-27 13:01:28 +02:00
Athou
4b080510e7 new label 2013-07-27 11:22:04 +02:00
Athou
37437877e1 option to force refresh all feeds 2013-07-27 11:21:26 +02:00
Athou
da94880c53 added a little doc 2013-07-26 16:00:02 +02:00
Athou
68ad6d8b55 reuse existing random object 2013-07-26 15:34:14 +02:00
Athou
080c0b48d0 prevent possible NPE 2013-07-26 15:34:02 +02:00
Athou
e8bfecc07d Merge pull request #461 from Athou/statuses-revamp
Statuses revamp
2013-07-26 06:23:06 -07:00
Athou
8e43a7fa00 added update warning 2013-07-26 14:34:00 +02:00
Athou
fa45d1bfad version bump 2013-07-26 14:13:38 +02:00
Athou
9cdc364fde index title hash 2013-07-26 08:15:23 +02:00
Athou
6f29af1710 better locking mechanism 2013-07-25 16:41:48 +02:00
Athou
e77787e2cd ignore case 2013-07-25 14:37:21 +02:00
Athou
84159a3a2d filter out entries that were matched from html code 2013-07-25 14:15:30 +02:00
Athou
68e531ed0c log phrasing 2013-07-25 11:31:49 +02:00
Athou
72bdf2573c tests for fixedsizesortedset 2013-07-25 11:15:57 +02:00
Athou
00159ce1c5 moved methods around 2013-07-25 11:02:49 +02:00
Athou
d293e972f2 added logging 2013-07-25 10:55:19 +02:00
Athou
c618e22c52 revert part of caching mechanism 2013-07-25 10:48:52 +02:00
Athou
73f2871235 revamp cache service 2013-07-25 10:21:11 +02:00
Athou
bdb30a60c3 ignore utility method for (de)serialization 2013-07-25 09:27:09 +02:00
Athou
7da630ed6d run every day at midnight 2013-07-25 09:19:05 +02:00
Athou
8845c54d0c apply formatter 2013-07-25 09:17:33 +02:00
Athou
02f1090fe7 set parameters for delete query 2013-07-25 09:12:56 +02:00
Athou
9bac3f424f index for faster status deletes 2013-07-25 09:12:45 +02:00
Athou
db2264023f added code formatter 2013-07-25 09:12:33 +02:00
Athou
ec8eb4bd1f faster startup 2013-07-24 20:05:58 +02:00
Athou
ed5596636a rewrote with a backing arraylist 2013-07-24 19:41:29 +02:00
Athou
dd0fdfc89e prevent exception when hashing content 2013-07-24 19:19:50 +02:00
Athou
d212e96664 set initial capacity to minimum if unknown capacity 2013-07-24 17:34:46 +02:00
Athou
1a720e6a29 change underlying implementation of the fixedsizesortedset to priority queue 2013-07-24 17:28:10 +02:00
Athou
7316a6e07d revert comparators 2013-07-24 17:25:14 +02:00
Athou
84a75db464 treeset uses compareTo instead of equals 2013-07-24 16:57:01 +02:00
Athou
dde3d8e405 was not meant to be committed 2013-07-24 16:43:00 +02:00
Athou
9e0a39981f use capacity as limit 2013-07-24 16:42:43 +02:00
Athou
dab9f53743 fix metrics 2013-07-24 15:53:21 +02:00
Athou
645164997d move author to content 2013-07-24 15:50:05 +02:00
Athou
c2b53b117c remove many to many relationship between entries and feeds 2013-07-24 15:40:59 +02:00
Athou
6e52f60e85 Merge pull request #458 from JKakku/patch-4
Update fi.properties
2013-07-24 06:02:54 -07:00
JKakku
1498e24037 Update fi.properties
Added version label
2013-07-24 15:41:34 +03:00
Athou
fdacac74cc cleanup unneeded statuses 2013-07-24 12:13:18 +02:00
Athou
3defd982e7 only mark if markable 2013-07-24 12:13:06 +02:00
Athou
f4eb9e2a09 always join for statuses 2013-07-23 16:45:13 +02:00
Athou
08693e16f0 move method around 2013-07-23 16:32:20 +02:00
Athou
d95e1522d8 less database calls 2013-07-23 16:19:19 +02:00
Athou
150920e0c8 delete old statuses 2013-07-23 15:27:56 +02:00
Athou
074ecbf159 persist read status instead of unread status 2013-07-22 16:31:29 +02:00
480 changed files with 21798 additions and 28335 deletions

3
.bowerrc Normal file
View File

@@ -0,0 +1,3 @@
{
"directory": "src/main/app/lib"
}

24
.gitignore vendored
View File

@@ -1,19 +1,27 @@
#runtime files
commafeed.log
derby.log
data/
java_pid*
# config gile
config.yml
# Maven build directory
# build directory
target
deployments/ROOT.war
# log files
log
# jetty sessions
sessions
# node
node
node_modules
# bower
src/main/app/lib
# Eclipse files
.project
.classpath
.settings
.factorypath
/target
# IntelliJ Idea files
.idea

3
.openshift/README.md Normal file
View File

@@ -0,0 +1,3 @@
For information about .openshift directory, consult the documentation:
http://openshift.github.io/documentation/oo_user_guide.html#the-openshift-directory

View File

@@ -1,3 +1,3 @@
For information about which action hooks are supported, consult the OpenShift documentation:
For information about action hooks, consult the documentation:
https://github.com/openshift/origin-server/blob/master/node/README.writing_applications.md
http://openshift.github.io/documentation/oo_user_guide.html#action-hooks

View File

@@ -1,5 +1,22 @@
#!/bin/bash
# This is a simple build script and will be executed on your CI system if
# available. Otherwise it will execute while your application is stopped
# before the deploy step. This script gets executed directly, so it
# could be python, php, ruby, etc.
cd $OPENSHIFT_REPO_DIR
rm -rf $OPENSHIFT_REPO_DIR/node
rm -rf $OPENSHIFT_REPO_DIR/node_modules
rm -rf $OPENSHIFT_TMP_DIR/npm
rm -rf $OPENSHIFT_TMP_DIR/npmrc
rm -rf $OPENSHIFT_TMP_DIR/m2
rm -rf $OPENSHIFT_TMP_DIR/local
export NPM_CONFIG_PREFIX="$OPENSHIFT_TMP_DIR/npm"
export NPM_CONFIG_USERCONFIG="$OPENSHIFT_TMP_DIR/npmrc"
export NPM_CONFIG_CACHE="$OPENSHIFT_TMP_DIR/npm/cache"
export MAVEN_OPTS="-Dmaven.repo.local=$OPENSHIFT_TMP_DIR/m2"
export HOME="$OPENSHIFT_TMP_DIR/local"
export NPM_CONFIG_ARCH="x64"
npm install npm
export PATH="$OPENSHIFT_REPO_DIR/node_modules/.bin:$PATH"
mvn clean package -DskipTests -Dos.arch=x64

View File

@@ -1,5 +1,9 @@
#!/bin/bash
# This deploy hook gets executed after dependencies are resolved and the
# build hook has been run but before the application has been started back
# up again. This script gets executed directly, so it could be python, php,
# ruby, etc.
cd $OPENSHIFT_REPO_DIR
sed -i 's/@OPENSHIFT_DIY_IP@/'"$OPENSHIFT_DIY_IP"'/g' .openshift/config.mysql.yml
sed -i 's/@OPENSHIFT_DIY_PORT@/'"$OPENSHIFT_DIY_PORT"'/g' .openshift/config.mysql.yml
sed -i 's/@OPENSHIFT_APP_DNS@/'"$OPENSHIFT_APP_DNS"'/g' .openshift/config.mysql.yml
sed -i 's/@OPENSHIFT_APP_NAME@/'"$OPENSHIFT_APP_NAME"'/g' .openshift/config.mysql.yml
sed -i 's/@OPENSHIFT_MYSQL_DB_HOST@/'"$OPENSHIFT_MYSQL_DB_HOST"'/g' .openshift/config.mysql.yml
sed -i 's/@OPENSHIFT_MYSQL_DB_USERNAME@/'"$OPENSHIFT_MYSQL_DB_USERNAME"'/g' .openshift/config.mysql.yml
sed -i 's/@OPENSHIFT_MYSQL_DB_PASSWORD@/'"$OPENSHIFT_MYSQL_DB_PASSWORD"'/g' .openshift/config.mysql.yml

View File

@@ -1,4 +0,0 @@
#!/bin/bash
# This is a simple post deploy hook executed after your application
# is deployed and started. This script gets executed directly, so
# it could be python, php, ruby, etc.

View File

@@ -1,14 +0,0 @@
#!/bin/bash
# The pre_start_cartridge and pre_stop_cartridge hooks are *SOURCED*
# immediately before (re)starting or stopping the specified cartridge.
# They are able to make any desired environment variable changes as
# well as other adjustments to the application environment.
# The post_start_cartridge and post_stop_cartridge hooks are executed
# immediately after (re)starting or stopping the specified cartridge.
# Exercise caution when adding commands to these hooks. They can
# prevent your application from stopping cleanly or starting at all.
# Application start and stop is subject to different timeouts
# throughout the system.

View File

@@ -1,14 +0,0 @@
#!/bin/bash
# The pre_start_cartridge and pre_stop_cartridge hooks are *SOURCED*
# immediately before (re)starting or stopping the specified cartridge.
# They are able to make any desired environment variable changes as
# well as other adjustments to the application environment.
# The post_start_cartridge and post_stop_cartridge hooks are executed
# immediately after (re)starting or stopping the specified cartridge.
# Exercise caution when adding commands to these hooks. They can
# prevent your application from stopping cleanly or starting at all.
# Application start and stop is subject to different timeouts
# throughout the system.

View File

@@ -1,5 +0,0 @@
#!/bin/bash
# This is a simple script and will be executed on your CI system if
# available. Otherwise it will execute while your application is stopped
# before the build step. This script gets executed directly, so it
# could be python, php, ruby, etc.

View File

@@ -1,7 +0,0 @@
#!/bin/bash
# This is a simple bash script and will be sourced prior to building
# your application. This script can be used to modify the Maven build
# arguments for non-CI/Jenkins builds by exporting MAVEN_ARGS. The default
# is "clean package -Popenshift -DskipTests"
export MAVEN_ARGS="clean package -Popenshift -Pprod -DskipTests=true"
export MAVEN_OPTS="-Xmx512m -XX:MaxPermSize=128m -Dmaven.artifact.threads=20"

View File

@@ -1,14 +0,0 @@
#!/bin/bash
# The pre_start_cartridge and pre_stop_cartridge hooks are *SOURCED*
# immediately before (re)starting or stopping the specified cartridge.
# They are able to make any desired environment variable changes as
# well as other adjustments to the application environment.
# The post_start_cartridge and post_stop_cartridge hooks are executed
# immediately after (re)starting or stopping the specified cartridge.
# Exercise caution when adding commands to these hooks. They can
# prevent your application from stopping cleanly or starting at all.
# Application start and stop is subject to different timeouts
# throughout the system.

View File

@@ -1,14 +0,0 @@
#!/bin/bash
# The pre_start_cartridge and pre_stop_cartridge hooks are *SOURCED*
# immediately before (re)starting or stopping the specified cartridge.
# They are able to make any desired environment variable changes as
# well as other adjustments to the application environment.
# The post_start_cartridge and post_stop_cartridge hooks are executed
# immediately after (re)starting or stopping the specified cartridge.
# Exercise caution when adding commands to these hooks. They can
# prevent your application from stopping cleanly or starting at all.
# Application start and stop is subject to different timeouts
# throughout the system.

3
.openshift/action_hooks/start Executable file
View File

@@ -0,0 +1,3 @@
#!/bin/bash
cd $OPENSHIFT_REPO_DIR
nohup java -jar target/commafeed.jar server .openshift/config.mysql.yml > ${OPENSHIFT_DIY_LOG_DIR}/commafeed.log 2>&1 &

8
.openshift/action_hooks/stop Executable file
View File

@@ -0,0 +1,8 @@
#!/bin/bash
source $OPENSHIFT_CARTRIDGE_SDK_BASH
if [ -z "$(ps -ef | grep commafeed.jar | grep -v grep)" ]
then
client_result "Application is already stopped"
else
kill `ps -ef | grep commafeed.jar | grep -v grep | awk '{ print $2 }'` > /dev/null 2>&1
fi

110
.openshift/config.mysql.yml Normal file
View File

@@ -0,0 +1,110 @@
# CommaFeed settings
# ------------------
app:
# url used to access commafeed
publicUrl: https://@OPENSHIFT_APP_DNS@/
# wether to allow user registrations
allowRegistrations: false
# create a demo account the first time the app starts
createDemoAccount: false
# put your google analytics tracking code here
googleAnalyticsTrackingCode:
# number of http threads
backgroundThreads: 3
# number of database updating threads
databaseUpdateThreads: 1
# settings for sending emails (password recovery)
smtpHost:
smtpPort:
smtpTls: false
smtpUserName:
smtpPassword:
# wether this commafeed instance has a lot of feeds to refresh
# leave this to false in almost all cases
heavyLoad: false
# minimum amount of time commafeed will wait before refreshing the same feed
refreshIntervalMinutes: 15
# wether to enable pubsub
# probably not needed if refreshIntervalMinutes is low
pubsubhubbub: false
# if enabled, images in feed entries will be proxied through the server instead of accessed directly by the browser
# useful if commafeed is usually accessed through a restricting proxy
imageProxyEnabled: false
# database query timeout (in milliseconds), 0 to disable
queryTimeout: 0
# time to keep unread statuses (in days), 0 to disable
keepStatusDays: 0
# entries to keep per feed, old entries will be deleted, 0 to disable
maxFeedCapacity: 500
# cache service to use, possible values are 'noop' and 'redis'
cache: noop
# announcement string displayed on the main page
announcement:
# Database connection
# -------------------
# for MySQL
# driverClass is com.mysql.jdbc.Driver
# url is jdbc:mysql://localhost/commafeed?autoReconnect=true&failOverReadOnly=false&maxReconnects=20&rewriteBatchedStatements=true
#
# for PostgreSQL
# driverClass is org.postgresql.Driver
# url is jdbc:postgresql://localhost:5432/commafeed
#
# for Microsoft SQL Server
# driverClass is net.sourceforge.jtds.jdbc.Driver
# url is jdbc:jtds:sqlserver://localhost:1433/commafeed;instance=<instanceName, remove if not needed>
database:
driverClass: com.mysql.jdbc.Driver
url: jdbc:mysql://@OPENSHIFT_MYSQL_DB_HOST@/@OPENSHIFT_APP_NAME@?autoReconnect=true&failOverReadOnly=false&maxReconnects=20&rewriteBatchedStatements=true
user: @OPENSHIFT_MYSQL_DB_USERNAME@
password: @OPENSHIFT_MYSQL_DB_PASSWORD@
properties:
charSet: UTF-8
maxWaitForConnection: 1s
validationQuery: "/* CommaFeed Health Check */ SELECT 1"
minSize: 1
maxSize: 50
checkConnectionWhileIdle: true
maxConnectionAge: 30m
server:
applicationConnectors:
- type: http
port: @OPENSHIFT_DIY_PORT@
bindHost: @OPENSHIFT_DIY_IP@
adminConnectors:
- type: http
port: 15000
bindHost: @OPENSHIFT_DIY_IP@
logging:
level: WARN
loggers:
com.commafeed: INFO
liquibase: INFO
io.dropwizard.server.ServerFactory: INFO
appenders:
- type: console
- type: file
currentLogFilename: log/commafeed.log
threshold: ALL
archive: true
archivedLogFilenamePattern: log/commafeed-%d.log
archivedFileCount: 5
timeZone: UTC

View File

@@ -1,3 +0,0 @@
Place your jboss-as7 modules in this directory. This directory is added to the
module path of the jboss-as7 server associated with your application. It has the
same structure as the jboss-as7/modules directory.

View File

@@ -1,517 +0,0 @@
<?xml version='1.0' encoding='UTF-8'?>
<server xmlns="urn:jboss:domain:1.3">
<extensions>
<extension module="org.jboss.as.clustering.infinispan" />
<extension module="org.jboss.as.clustering.jgroups" />
<extension module="org.jboss.as.cmp" />
<extension module="org.jboss.as.configadmin" />
<extension module="org.jboss.as.connector" />
<extension module="org.jboss.as.deployment-scanner" />
<extension module="org.jboss.as.ee" />
<extension module="org.jboss.as.ejb3" />
<extension module="org.jboss.as.jacorb" />
<extension module="org.jboss.as.jaxr" />
<extension module="org.jboss.as.jaxrs" />
<extension module="org.jboss.as.jdr" />
<extension module="org.jboss.as.jmx" />
<extension module="org.jboss.as.jpa" />
<extension module="org.jboss.as.jsr77" />
<extension module="org.jboss.as.logging" />
<extension module="org.jboss.as.mail" />
<extension module="org.jboss.as.messaging" />
<extension module="org.jboss.as.naming" />
<extension module="org.jboss.as.osgi" />
<extension module="org.jboss.as.pojo" />
<extension module="org.jboss.as.remoting" />
<extension module="org.jboss.as.sar" />
<extension module="org.jboss.as.security" />
<extension module="org.jboss.as.threads" />
<extension module="org.jboss.as.transactions" />
<extension module="org.jboss.as.web" />
<extension module="org.jboss.as.webservices" />
<extension module="org.jboss.as.weld" />
</extensions>
<system-properties>
<property name="org.apache.coyote.http11.Http11Protocol.COMPRESSION" value="on"/>
</system-properties>
<management>
<management-interfaces>
<native-interface>
<socket-binding native="management-native"/>
</native-interface>
<http-interface>
<socket-binding http="management-http"/>
</http-interface>
</management-interfaces>
</management>
<profile>
<subsystem xmlns="urn:jboss:domain:logging:1.1">
<!--console-handler name="CONSOLE"> <level name="INFO"/> <formatter> <pattern-formatter
pattern="%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n"/> </formatter> </console-handler -->
<periodic-rotating-file-handler name="FILE">
<formatter>
<pattern-formatter
pattern="%d{yyyy/MM/dd HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n" />
</formatter>
<file relative-to="jboss.server.log.dir" path="server.log" />
<suffix value=".yyyy-MM-dd" />
<append value="true" />
</periodic-rotating-file-handler>
<logger category="com.arjuna">
<level name="WARN" />
</logger>
<logger category="org.apache.tomcat.util.modeler">
<level name="WARN" />
</logger>
<logger category="sun.rmi">
<level name="WARN" />
</logger>
<logger category="jacorb">
<level name="WARN" />
</logger>
<logger category="jacorb.config">
<level name="ERROR" />
</logger>
<root-logger>
<level name="INFO" />
<handlers>
<!--handler name="CONSOLE"/ -->
<handler name="FILE" />
</handlers>
</root-logger>
</subsystem>
<subsystem xmlns="urn:jboss:domain:cmp:1.0" />
<subsystem xmlns="urn:jboss:domain:configadmin:1.0" />
<subsystem xmlns="urn:jboss:domain:datasources:1.1">
<datasources>
<datasource jndi-name="java:jboss/datasources/MysqlDS"
enabled="${mysql.enabled}" use-java-context="true" pool-name="MysqlDS">
<connection-url>jdbc:mysql://${env.OPENSHIFT_MYSQL_DB_HOST}:${env.OPENSHIFT_MYSQL_DB_PORT}/${env.OPENSHIFT_APP_NAME}?useUnicode=true&amp;characterEncoding=UTF-8
</connection-url>
<driver>mysql</driver>
<security>
<user-name>${env.OPENSHIFT_MYSQL_DB_USERNAME}</user-name>
<password>${env.OPENSHIFT_MYSQL_DB_PASSWORD}</password>
</security>
</datasource>
<drivers>
<driver name="mysql" module="com.mysql.jdbc">
<xa-datasource-class>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</xa-datasource-class>
</driver>
</drivers>
</datasources>
</subsystem>
<subsystem xmlns="urn:jboss:domain:deployment-scanner:1.1">
<deployment-scanner path="deployments"
relative-to="jboss.server.base.dir" scan-interval="5000"
deployment-timeout="300" />
</subsystem>
<subsystem xmlns="urn:jboss:domain:ee:1.1">
<spec-descriptor-property-replacement>false
</spec-descriptor-property-replacement>
<jboss-descriptor-property-replacement>true
</jboss-descriptor-property-replacement>
</subsystem>
<subsystem xmlns="urn:jboss:domain:ejb3:1.3">
<session-bean>
<stateless>
<bean-instance-pool-ref pool-name="slsb-strict-max-pool" />
</stateless>
<stateful default-access-timeout="5000" cache-ref="simple"
clustered-cache-ref="clustered" />
<singleton default-access-timeout="5000" />
</session-bean>
<mdb>
<resource-adapter-ref resource-adapter-name="hornetq-ra" />
<bean-instance-pool-ref pool-name="mdb-strict-max-pool" />
</mdb>
<pools>
<bean-instance-pools>
<strict-max-pool name="slsb-strict-max-pool"
max-pool-size="20" instance-acquisition-timeout="5"
instance-acquisition-timeout-unit="MINUTES" />
<strict-max-pool name="mdb-strict-max-pool"
max-pool-size="20" instance-acquisition-timeout="5"
instance-acquisition-timeout-unit="MINUTES" />
</bean-instance-pools>
</pools>
<caches>
<cache name="simple" aliases="NoPassivationCache" />
<cache name="passivating" passivation-store-ref="file"
aliases="SimpleStatefulCache" />
<cache name="clustered" passivation-store-ref="infinispan"
aliases="StatefulTreeCache" />
</caches>
<passivation-stores>
<file-passivation-store name="file" />
<cluster-passivation-store name="infinispan"
cache-container="ejb" />
</passivation-stores>
<async thread-pool-name="default" />
<timer-service thread-pool-name="default">
<data-store path="timer-service-data" relative-to="jboss.server.data.dir" />
</timer-service>
<remote connector-ref="remoting-connector" thread-pool-name="default" />
<thread-pools>
<thread-pool name="default">
<max-threads count="10" />
<keepalive-time time="100" unit="milliseconds" />
</thread-pool>
</thread-pools>
<iiop enable-by-default="false" use-qualified-name="false" />
</subsystem>
<subsystem xmlns="urn:jboss:domain:infinispan:1.3">
<cache-container name="cluster" aliases="ha-partition"
default-cache="default">
<transport lock-timeout="60000" />
<replicated-cache name="default" mode="SYNC"
batching="true">
<locking isolation="REPEATABLE_READ" />
</replicated-cache>
</cache-container>
<cache-container name="web" aliases="standard-session-cache"
default-cache="repl">
<transport lock-timeout="60000" />
<replicated-cache name="repl" mode="ASYNC"
batching="true">
<file-store />
</replicated-cache>
<replicated-cache name="sso" mode="SYNC" batching="true" />
<distributed-cache name="dist" mode="ASYNC"
batching="true" l1-lifespan="0">
<file-store />
</distributed-cache>
</cache-container>
<cache-container name="ejb" aliases="sfsb sfsb-cache"
default-cache="repl">
<transport lock-timeout="60000" />
<replicated-cache name="repl" mode="ASYNC"
batching="true">
<eviction strategy="LRU" max-entries="10000" />
<file-store />
</replicated-cache>
<!-- ~ Clustered cache used internally by EJB subsytem for managing the
client-mapping(s) of ~ the socketbinding referenced by the EJB remoting connector -->
<replicated-cache name="remote-connector-client-mappings"
mode="SYNC" batching="true" />
<distributed-cache name="dist" mode="ASYNC"
batching="true" l1-lifespan="0">
<eviction strategy="LRU" max-entries="10000" />
<file-store />
</distributed-cache>
</cache-container>
<cache-container name="hibernate" default-cache="local-query"
module="org.jboss.as.jpa.hibernate:4">
<transport lock-timeout="60000" />
<local-cache name="local-query">
<transaction mode="NONE" />
<eviction strategy="LRU" max-entries="10000" />
<expiration max-idle="100000" />
</local-cache>
<invalidation-cache name="entity" mode="SYNC">
<transaction mode="NON_XA" />
<eviction strategy="LRU" max-entries="10000" />
<expiration max-idle="100000" />
</invalidation-cache>
<replicated-cache name="timestamps" mode="ASYNC">
<transaction mode="NONE" />
<eviction strategy="NONE" />
</replicated-cache>
</cache-container>
</subsystem>
<subsystem xmlns="urn:jboss:domain:jacorb:1.2">
<orb>
<initializers transactions="spec" security="on" />
</orb>
</subsystem>
<subsystem xmlns="urn:jboss:domain:jaxr:1.1">
<connection-factory jndi-name="java:jboss/jaxr/ConnectionFactory" />
</subsystem>
<subsystem xmlns="urn:jboss:domain:jaxrs:1.0" />
<subsystem xmlns="urn:jboss:domain:jca:1.1">
<archive-validation enabled="true" fail-on-error="true" fail-on-warn="false"/>
<bean-validation enabled="true"/>
<default-workmanager>
<short-running-threads>
<core-threads count="50" />
<queue-length count="50" />
<max-threads count="50" />
<keepalive-time time="10" unit="seconds" />
</short-running-threads>
<long-running-threads>
<core-threads count="50" />
<queue-length count="50" />
<max-threads count="50" />
<keepalive-time time="10" unit="seconds" />
</long-running-threads>
</default-workmanager>
<cached-connection-manager />
</subsystem>
<subsystem xmlns="urn:jboss:domain:jdr:1.0" />
<subsystem xmlns="urn:jboss:domain:jgroups:1.1"
default-stack="tcp">
<stack name="tcp">
<transport type="TCP" socket-binding="jgroups-tcp">
<property name="external_addr">${env.OPENSHIFT_GEAR_DNS}</property>
<property name="external_port">${env.OPENSHIFT_JBOSSEAP_CLUSTER_PROXY_PORT}
</property>
<property name="bind_port">7600</property>
<property name="bind_addr">${env.OPENSHIFT_INTERNAL_IP}</property>
</transport>
<protocol type="TCPPING">
<property name="timeout">3000</property>
<property name="initial_hosts">${env.OPENSHIFT_JBOSSEAP_CLUSTER}</property>
<property name="port_range">0</property>
<property name="num_initial_members">1</property>
</protocol>
<protocol type="MERGE2" />
<protocol type="FD" />
<protocol type="VERIFY_SUSPECT" />
<protocol type="BARRIER" />
<protocol type="pbcast.NAKACK" />
<protocol type="UNICAST2" />
<protocol type="pbcast.STABLE" />
<protocol type="AUTH">
<property name="auth_class">org.jgroups.auth.MD5Token</property>
<property name="token_hash">SHA</property>
<property name="auth_value">${env.OPENSHIFT_APP_UUID}</property>
</protocol>
<protocol type="pbcast.GMS" />
<protocol type="UFC" />
<protocol type="MFC" />
<protocol type="FRAG2" />
<!--protocol type="pbcast.STATE_TRANSFER"/> <protocol type="pbcast.FLUSH"/ -->
</stack>
</subsystem>
<subsystem xmlns="urn:jboss:domain:jmx:1.1">
<show-model value="true" />
<remoting-connector />
</subsystem>
<subsystem xmlns="urn:jboss:domain:jpa:1.0">
<jpa default-datasource="" />
</subsystem>
<subsystem xmlns="urn:jboss:domain:jsr77:1.0" />
<subsystem xmlns="urn:jboss:domain:mail:1.0">
<mail-session jndi-name="java:jboss/mail/Default">
<smtp-server outbound-socket-binding-ref="mail-smtp" />
</mail-session>
</subsystem>
<subsystem xmlns="urn:jboss:domain:messaging:1.2">
<hornetq-server>
<clustered>false</clustered>
<persistence-enabled>false</persistence-enabled>
<security-enabled>false</security-enabled>
<journal-file-size>102400</journal-file-size>
<journal-min-files>2</journal-min-files>
<thread-pool-max-size>${messaging.thread.pool.max.size}</thread-pool-max-size>
<scheduled-thread-pool-max-size>${messaging.scheduled.thread.pool.max.size}</scheduled-thread-pool-max-size>
<connectors>
<netty-connector name="netty" socket-binding="messaging" />
<netty-connector name="netty-throughput"
socket-binding="messaging-throughput">
<param key="batch-delay" value="50" />
</netty-connector>
<in-vm-connector name="in-vm" server-id="0" />
</connectors>
<acceptors>
<netty-acceptor name="netty" socket-binding="messaging" />
<netty-acceptor name="netty-throughput"
socket-binding="messaging-throughput">
<param key="batch-delay" value="50" />
<param key="direct-deliver" value="false" />
</netty-acceptor>
<in-vm-acceptor name="in-vm" server-id="0" />
</acceptors>
<!--broadcast-groups> <broadcast-group name="bg-group1"> <socket-binding>messaging-group</socket-binding>
<broadcast-period>5000</broadcast-period> <connector-ref>netty</connector-ref>
</broadcast-group> </broadcast-groups> <discovery-groups> <discovery-group
name="dg-group1"> <socket-binding>messaging-group</socket-binding> <refresh-timeout>10000</refresh-timeout>
</discovery-group> </discovery-groups> <cluster-connections> <cluster-connection
name="my-cluster"> <address>jms</address> <connector-ref>netty</connector-ref>
<discovery-group-ref discovery-group-name="dg-group1"/> </cluster-connection>
</cluster-connections -->
<address-settings>
<!--default for catch all -->
<address-setting match="#">
<dead-letter-address>jms.queue.DLQ</dead-letter-address>
<expiry-address>jms.queue.ExpiryQueue</expiry-address>
<redelivery-delay>0</redelivery-delay>
<redistribution-delay>1000</redistribution-delay>
<max-size-bytes>10485760</max-size-bytes>
<address-full-policy>BLOCK</address-full-policy>
<message-counter-history-day-limit>10
</message-counter-history-day-limit>
</address-setting>
</address-settings>
<jms-connection-factories>
<connection-factory name="InVmConnectionFactory">
<connectors>
<connector-ref connector-name="in-vm" />
</connectors>
<entries>
<entry name="java:/ConnectionFactory" />
</entries>
</connection-factory>
<!--
<connection-factory name="RemoteConnectionFactory">
<connectors>
<connector-ref connector-name="netty" />
</connectors>
<entries>
<entry name="java:jboss/exported/jms/RemoteConnectionFactory" />
</entries>
</connection-factory>
-->
<pooled-connection-factory name="hornetq-ra">
<transaction mode="xa" />
<connectors>
<connector-ref connector-name="in-vm" />
</connectors>
<entries>
<entry name="java:/JmsXA" />
</entries>
</pooled-connection-factory>
</jms-connection-factories>
<jms-destinations>
<jms-queue name="refreshQueue">
<entry name="jms/refreshQueue"/>
<entry name="java:jboss/exported/jms/refreshQueue"/>
</jms-queue>
</jms-destinations>
</hornetq-server>
</subsystem>
<subsystem xmlns="urn:jboss:domain:naming:1.2">
<remote-naming />
</subsystem>
<subsystem xmlns="urn:jboss:domain:osgi:1.2" activation="lazy">
<properties>
<!-- Specifies the beginning start level of the framework -->
<property name="org.osgi.framework.startlevel.beginning">1</property>
</properties>
<capabilities>
<!-- modules registered with the OSGi layer on startup -->
<capability name="javax.servlet.api:v25" />
<capability name="javax.transaction.api" />
<!-- bundles started in startlevel 1 -->
<capability name="org.apache.felix.log" startlevel="1" />
<capability name="org.jboss.osgi.logging" startlevel="1" />
<capability name="org.apache.felix.configadmin"
startlevel="1" />
<capability name="org.jboss.as.osgi.configadmin"
startlevel="1" />
</capabilities>
</subsystem>
<subsystem xmlns="urn:jboss:domain:pojo:1.0" />
<subsystem xmlns="urn:jboss:domain:remoting:1.1">
<connector name="remoting-connector" socket-binding="remoting" />
</subsystem>
<subsystem xmlns="urn:jboss:domain:resource-adapters:1.0" />
<subsystem xmlns="urn:jboss:domain:sar:1.0" />
<subsystem xmlns="urn:jboss:domain:security:1.2">
<security-domains>
<security-domain name="other" cache-type="default">
<authentication>
<login-module code="Remoting" flag="optional">
<module-option name="password-stacking" value="useFirstPass"/>
</login-module>
<login-module code="RealmDirect" flag="required">
<module-option name="password-stacking" value="useFirstPass"/>
</login-module>
</authentication>
</security-domain>
<security-domain name="jboss-web-policy" cache-type="default">
<authorization>
<policy-module code="Delegating" flag="required"/>
</authorization>
</security-domain>
<security-domain name="jboss-ejb-policy" cache-type="default">
<authorization>
<policy-module code="Delegating" flag="required"/>
</authorization>
</security-domain>
</security-domains>
</subsystem>
<subsystem xmlns="urn:jboss:domain:threads:1.1" />
<subsystem xmlns="urn:jboss:domain:transactions:1.2">
<core-environment>
<process-id>
<uuid />
</process-id>
</core-environment>
<recovery-environment socket-binding="txn-recovery-environment"
status-socket-binding="txn-status-manager" />
<coordinator-environment default-timeout="300" />
</subsystem>
<subsystem xmlns="urn:jboss:domain:web:1.1"
default-virtual-server="default-host" native="false">
<connector name="http" protocol="HTTP/1.1" scheme="http"
socket-binding="http" />
<virtual-server name="default-host"
enable-welcome-root="false">
<alias name="localhost" />
</virtual-server>
</subsystem>
<subsystem xmlns="urn:jboss:domain:webservices:1.1">
<modify-wsdl-address>true</modify-wsdl-address>
<wsdl-host>${env.OPENSHIFT_GEAR_DNS}</wsdl-host>
<wsdl-port>80</wsdl-port>
<endpoint-config name="Standard-Endpoint-Config" />
<endpoint-config name="Recording-Endpoint-Config">
<pre-handler-chain name="recording-handlers"
protocol-bindings="##SOAP11_HTTP ##SOAP11_HTTP_MTOM ##SOAP12_HTTP ##SOAP12_HTTP_MTOM">
<handler name="RecordingHandler"
class="org.jboss.ws.common.invocation.RecordingServerHandler" />
</pre-handler-chain>
</endpoint-config>
</subsystem>
<subsystem xmlns="urn:jboss:domain:weld:1.0" />
</profile>
<interfaces>
<interface name="management">
<loopback-address value="${env.OPENSHIFT_INTERNAL_IP}" />
</interface>
<interface name="public">
<loopback-address value="${env.OPENSHIFT_INTERNAL_IP}" />
</interface>
<interface name="unsecure">
<!-- Used for IIOP sockets in the standarad configuration. To secure JacORB
you need to setup SSL -->
<loopback-address value="${env.OPENSHIFT_INTERNAL_IP}" />
</interface>
</interfaces>
<socket-binding-group name="standard-sockets"
default-interface="public" port-offset="0">
<socket-binding name="management-native" interface="management"
port="9999" />
<socket-binding name="management-http" interface="management"
port="9990" />
<socket-binding name="http" port="8080" />
<socket-binding name="jacorb" interface="unsecure"
port="3528" />
<socket-binding name="jacorb-ssl" interface="unsecure"
port="3529" />
<socket-binding name="jgroups-tcp" port="7600" />
<socket-binding name="messaging" port="5445" />
<!--socket-binding name="messaging-group" multicast-address="${jboss.messaging.group.address:231.7.7.7}"
multicast-port="${jboss.messaging.group.port:9876}"/ -->
<socket-binding name="messaging-throughput" port="5455" />
<socket-binding name="osgi-http" interface="management"
port="8090" />
<socket-binding name="remoting" port="4447" />
<socket-binding name="txn-recovery-environment" port="4712" />
<socket-binding name="txn-status-manager" port="4713" />
<outbound-socket-binding name="mail-smtp">
<remote-destination host="localhost" port="25" />
</outbound-socket-binding>
</socket-binding-group>
</server>

View File

@@ -1,22 +0,0 @@
Run scripts or jobs on a periodic basis
=======================================
Any scripts or jobs added to the minutely, hourly, daily, weekly or monthly
directories will be run on a scheduled basis (frequency is as indicated by the
name of the directory) using run-parts.
run-parts ignores any files that are hidden or dotfiles (.*) or backup
files (*~ or *,) or named *.{rpmsave,rpmorig,rpmnew,swp,cfsaved}
The presence of two specially named files jobs.deny and jobs.allow controls
how run-parts executes your scripts/jobs.
jobs.deny ===> Prevents specific scripts or jobs from being executed.
jobs.allow ===> Only execute the named scripts or jobs (all other/non-named
scripts that exist in this directory are ignored).
The principles of jobs.deny and jobs.allow are the same as those of cron.deny
and cron.allow and are described in detail at:
http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/6/html/Deployment_Guide/ch-Automating_System_Tasks.html#s2-autotasks-cron-access
See: man crontab or above link for more details and see the the weekly/
directory for an example.

View File

@@ -1 +0,0 @@
rm -rf $OPENSHIFT_JBOSSAS_LOG_DIR\*.log.*

View File

@@ -1,22 +0,0 @@
Markers
===========
Adding marker files to this directory will have the following effects:
enable_jpda - Will enable the JPDA socket based transport on the java virtual
machine running the JBoss AS 7 application server. This enables
you to remotely debug code running inside the JBoss AS 7
application server.
skip_maven_build - Maven build step will be skipped
force_clean_build - Will start the build process by removing all non
essential Maven dependencies. Any current dependencies specified in
your pom.xml file will then be re-downloaded.
hot_deploy - Will prevent a JBoss container restart during build/deployment.
Newly build archives will be re-deployed automatically by the
JBoss HDScanner component.
java7 - Will run JBoss AS7 with Java7 if present. If no marker is present then the
baseline Java version will be used (currently Java6)

View File

@@ -0,0 +1,3 @@
For information about markers, consult the documentation:
http://openshift.github.io/documentation/oo_user_guide.html#markers

3
.openshift/settings.xml Normal file
View File

@@ -0,0 +1,3 @@
<settings>
<localRepository>$OPENSHIFT_DATA_DIR</localRepository>
</settings>

5
.travis.yml Normal file
View File

@@ -0,0 +1,5 @@
language: java
jdk:
- openjdk7
- oraclejdk7
- oraclejdk8

34
CHANGELOG Normal file
View File

@@ -0,0 +1,34 @@
v 2.1.0
- dropwizard upgrade to 0.8.0
- you have to remove the "app.contextPath" setting from your yml file, you can optionally use server.applicationContextPath instead
- new setting app.maxFeedCapacity for deleting old entries
- ability to set filtering expressions for subscriptions to automatically mark new entries as read based on title, content, author or url.
- ability to use !keyword or -keyword to exclude a keyword from a search query
- facebook feeds now show user favicon instead of facebook favicon
- new dark theme 'nightsky'
v 2.0.3
- internet explorer ajax cache workaround
- categories are now deletable again
- openshift support is back
- youtube feeds now show user favicon instead of youtube favicon
v 2.0.2
- api using the api key is now working again
- context path is now configurable in config.yml (see app.contextPath in config.yml.example)
- fix login on firefox when fields are autofilled by the browser
- fix scrolling of subscriptions list on mobile
- user is now logged in after registration
- fix link to documentation on home page and about page
- fields autocomplete is disabled on the profile page
- users are able to delete their account again
- chinese and malaysian translation files are now correctly loaded
- software version in user-agent when fetching feeds is no longer hardcoded
- admin settings page is now read only, settings are configured in config.yml
- added link to metrics on the admin settings page
- Rome (rss library) upgrade to 1.5.0
v 2.0.1
- the redis pool no longer throws an exception when it is unable to aquire a new connection
v2.0.0
- The backend has been completely rewritten using Dropwizard instead of TomEE, resulting in a lot less memory consumption and better overall performances.
See the README on how to build CommaFeed from now on.
- CommaFeed should no longer fetch the same feed multiple times in a row
- Users can use their username or email to log in

253
README.md
View File

@@ -1,132 +1,123 @@
CommaFeed [![Build Status](https://buildhive.cloudbees.com/job/Athou/job/commafeed/badge/icon)](https://buildhive.cloudbees.com/job/Athou/job/commafeed/)
=========
Sources for [CommaFeed.com](http://www.commafeed.com/).
Google Reader inspired self-hosted RSS reader, based on JAX-RS, Wicket and AngularJS.
Deploy on your own server (using TomEE, a lightweight JavaEE6 container based on Tomcat) or even in the cloud for free on OpenShift.
[Android app](https://github.com/doomrobo/CommaFeed-Android-Reader)
[Chrome extension](https://github.com/Athou/commafeed-chrome)
[Firefox extension](https://github.com/Athou/commafeed-firefox)
[Opera extension](https://github.com/Athou/commafeed-opera)
[Safari extension](https://github.com/Athou/commafeed-safari)
Deployment on OpenShift
-----------------------
Hosting an application on OpenShift is free.
At the moment those instructions are not working because the application takes too long to build on OpenShift and causes a timeout.
See [here](http://jasonwryan.com/blog/2013/05/25/greader/) for an alternative method.
* Create an account on [OpenShift](http://www.openshift.com/).
* Add an application, select `JBoss Enterprise Application Platform 6.0`.
* For the `Public URL` set the name you want (e.g. `commafeed`).
* For the `Source Code` option, click `Change` and set this repository (`https://github.com/Athou/commafeed.git`).
* Click `Create Application`.
* Click `Add cartridge` and select `MySQL`.
* Wait a couple of minutes and access your application.
* The default user is `admin` and the password is `admin`.
Deployment on your own server
-----------------------------
For storage, you can either use an embedded HSQLDB database or an external MySQL, PostgreSQL or SQLServer database.
You also need Maven 3.x (and a Java 1.7+ JDK) installed in order to build the application.
To install maven and openjdk on Ubuntu, issue the following commands
sudo add-apt-repository ppa:natecarlson/maven3
sudo apt-get update
sudo apt-get install openjdk-7-jdk maven3
Not required but if you don't, use 'mvn3' instead of 'mvn' for the rest of the instructions.
sudo ln -s /usr/bin/mvn3 /usr/bin/mvn
On Windows and other operating systems, just download maven 3.x from the [official site](http://maven.apache.org/), extract it somewhere and add the `bin` directory to your `PATH` environment variable.
Download the sources (it doesn't matter where, you can delete the directory when you're done).
If you don't have git you can download the sources as a zip file from [here](https://github.com/Athou/commafeed/archive/master.zip)
git clone https://github.com/Athou/commafeed.git
cd commafeed
Now build the application
Embedded HSQL database:
mvn clean package tomee:build -Pprod
External MySQL database:
mvn clean package tomee:build -Pprod -Pmysql
External PostgreSQL database:
mvn clean package tomee:build -Pprod -Ppgsql
External Microsoft SQL Server database:
mvn clean package tomee:build -Pprod -Pmssql
It will generate a zip file at `target/commafeed.zip` with everything you need to run the application.
* Create a directory somewhere (e.g. `/opt/commafeed/`) and extract the generated zip inside this directory.
* Create a directory called `logs` (e.g. `/opt/commafeed/logs`)
* Copy the file `conf/setenv.sh` (Linux) or `conf/setenv.bat` (Windows) to `bin/`
* If you don't use the embedded database, create a database in your external database instance, then uncomment the `Resource` element corresponding to the database engine you use from `conf/tomee.xml` and edit the default credentials.
* If you'd like to change the default port (8082), edit `conf/server.xml` and look for `<Connector port="8082" protocol="HTTP/1.1"`. Change the port to the value you'd like to use.
* CommaFeed will run on the `/commafeed` context. If you'd like to change the context, go to `webapps` and rename `commafeed.war`. Use the special name `ROOT.war` to deploy to the root context.
* To start and stop the application, use `bin/startup.sh` and `bin/shutdown.sh` on Linux (you need to `chmod +x bin/*.sh`) or `bin\startup.bat` and `bin\shutdown.bat` on Windows.
* To update the application with a newer version, pull the latest changes and use the same command you used to build the complete TomEE package, but without the `tomee:build` part (keep `-Pprod -P<database>`).
This will generate the file `target/commafeed.war`. Copy this file to your tomee `webapps/` directory.
* The application is online at [http://localhost:8082/commafeed](http://localhost:8082/commafeed). Don't forget to set the public URL in the admin settings.
* The default user is `admin` and the password is `admin`.
Local development
-----------------
Checkout the code and use maven to build and start a local TomEE instance.
`mvn clean package tomee:run`
The application is online at [http://localhost:8082/commafeed](http://localhost:8082/commafeed). Any change to the source code will be applied immediatly.
The default user is `admin` and the password is `admin`.
Translate CommaFeed into your language
--------------------------------------
Files for internationalization are located [here](https://github.com/Athou/commafeed/tree/master/src/main/resources/i18n).
To add a new language, create a new file in that directory.
The name of the file should be the two-letters [ISO-639-1 language code](http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes).
The language has to be referenced in the `languages.properties` file to be picked up.
When adding new translations, add them in en.properties then run `mvn -e groovy:execute -Pi18n`. It will parse the english file and add placeholders in the other translation files.
Themes
---------------------
To create a theme, create a new file `src/main/webapp/sass/themes/_<theme>.scss`. Your styles should be wrapped in a `#theme-<theme>` element and use the [SCSS format](http://sass-lang.com/) which is a superset of CSS.
Don't forget to reference your theme in `src/main/webapp/sass/app.scss` and in `src/main/webapp/js/controllers.js` (look for `$scope.themes`).
See [_test.scss](https://github.com/Athou/commafeed/blob/master/src/main/webapp/sass/themes/_test.scss) for an example.
Copyright and license
---------------------
Copyright 2013 CommaFeed.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this work except in compliance with the License.
You may obtain a copy of the License in the LICENSE file, or at:
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
# CommaFeed [![Build Status](https://travis-ci.org/Athou/commafeed.svg?branch=master)](https://travis-ci.org/Athou/commafeed)
Sources for [CommaFeed.com](http://www.commafeed.com/).
Google Reader inspired self-hosted RSS reader, based on Dropwizard and AngularJS.
## Related open-source projects
Android apps: [News+ extension](https://github.com/Athou/commafeed-newsplus) - [Android app](https://github.com/doomrobo/CommaFeed-Android-Reader)
Browser extensions: [Chrome](https://github.com/Athou/commafeed-chrome) - [Firefox](https://github.com/Athou/commafeed-firefox) - [Opera](https://github.com/Athou/commafeed-opera) - [Safari](https://github.com/Athou/commafeed-safari)
## Deployment on your own server
### The short version
git clone https://github.com/Athou/commafeed.git
cd commafeed
mvn clean package
cp config.yml.example config.yml
vi config.yml
java -jar target/commafeed.jar server config.yml
### The long version
CommaFeed 2.0 has been rewritten to use Dropwizard and gulp instead of using tomee and wro4j. The latest version of the 1.x branch is available [here](https://github.com/Athou/commafeed/tree/1.x).
For storage, you can either use an embedded H2 database (use it only to test CommaFeed) or an external MySQL, PostgreSQL or SQLServer database.
You also need Maven 3.x (and a Java 1.7+ JDK) installed in order to build the application.
To install maven and openjdk on Ubuntu, issue the following commands
sudo apt-get install g++ build-essential openjdk-7-jdk maven
# Make sure java7 is the selected java version
sudo update-alternatives --config java
sudo update-alternatives --config javac
On Windows and other operating systems, just download maven 3.x from the [official site](http://maven.apache.org/), extract it somewhere and add the `bin` directory to your `PATH` environment variable.
Clone this repository. If you don't have git you can download the sources as a zip file from [here](https://github.com/Athou/commafeed/archive/master.zip)
git clone https://github.com/Athou/commafeed.git
cd commafeed
Now build the application
mvn clean package
Copy `config.yml.example` to `config.yml` then edit the file to your liking.
Issue the following command to run the app, the server will listen by default on `http://localhost:8082`. The default user is `admin` and the default password is `admin`.
java -jar target/commafeed.jar server config.yml
You can use a proxy http server such as nginx or apache.
## Deployment on OpenShift
[OpenShift](https://openshift.redhat.com) is Red Hat's Platform-as-a-Service (PaaS) that allows developers to quickly develop, host, and scale applications in a cloud environment. CommaFeed runs perfectly on OpenShift and can even be used in the free tier. Follow the [Getting Started](https://developers.openshift.com/en/getting-started-overview.html) guide and after you sign up and install the Command Line Tools (RHC), do:
rhc create-app commafeed diy-0.1 mysql-5.5
cd commafeed
git remote add upstream -m master https://github.com/Athou/commafeed.git
git pull -s recursive -X theirs upstream master
git push
## Translate CommaFeed into your language
Files for internationalization are located [here](https://github.com/Athou/commafeed/tree/master/src/main/app/i18n).
To add a new language, create a new file in that directory.
The name of the file should be the two-letters [ISO-639-1 language code](http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes).
The language has to be referenced in the `src/main/app/js/i18n.js` file to be picked up.
## Themes
To create a theme, create a new file `src/main/webapp/sass/themes/_<theme>.scss`. Your styles should be wrapped in a `#theme-<theme>` element and use the [SCSS format](http://sass-lang.com/) which is a superset of CSS.
Don't forget to reference your theme in `src/main/webapp/sass/app.scss` and in `src/main/webapp/js/controllers.js` (look for `$scope.themes`).
See [_test.scss](https://github.com/Athou/commafeed/blob/master/src/main/webapp/sass/themes/_test.scss) for an example.
## Local development
Steps to configuring a development environment for CommaFeed may include, but may not be limited to:
1. `git clone https://github.com/Athou/CommaFeed` into some folder to get the project files.
2. Install Eclipse Luna (or latest) from http://www.eclipse.org/downloads/packages/eclipse-ide-java-developers/lunasr1 or your repo if available.
3. In Eclipse, Window → Preferences → Maven → Annotation Processing. Check "Automatically configure JDT APT"
* You may have to install the m2e-apt connector to have "Annotation Processing" as an option. Do so from Window → Preferences → Maven → Discovery → Open Catalog → type "m2e-apt" in the search box
* If you have installed Eclipse EE instead of Luna, you may have trouble installing m2e-apt
4. Install Lombok into Eclipse from http://projectlombok.org/download.html
* You may have to run `java -jar lombok.jar` as an administrator if your eclipse installation is not in your home folder
5. In Eclipse, File → Import → Maven → Existing Maven Projects. Navigate to where you cloned the CommaFeed files into, and select that as the root directory. Click Finish.
* You may notice some errors along the lines of "Plugin execution not covered by lifecycle configuration". These are inconsequential.
6. Find the file "CommaFeedApplication.java" under the navigation pane.
7. Right click it to bring up the context menu → Debug as... → Debug Configurations
8. Type `server config.dev.yml` under "Program arguments" in the "Arguments" tab for the Java Application setting "CommaFeedApplication"
9. Apply and hit "Debug"
10. The debugger is now working. To connect to it, open a terminal (or command prompt) and navigate to the directory where you cloned the CommaFeed files.
11. Issue the command `gulp dev` on Unix based systems or `gulp.cmd dev` in Windows.
12. The development server is now running at http://localhost:8082 and is proxying REST requests to dropwizard on port 8083.
13. Connect to the server from your browser; you should have functional breakpoints and watches on assets.
14. When you're done developing, create a fork at the top of https://github.com/Athou/CommaFeed page and commit your changes to it.
15. If you'd like to contribute to CommaFeed, create a pull request from your repository to https://github.com/Athou/CommaFeed when your changes are ready. There's a button to do so at the top of https://github.com/Athou/CommaFeed.
## Copyright and license
Copyright 2013-2014 CommaFeed.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this work except in compliance with the License.
You may obtain a copy of the License in the LICENSE file, or at:
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

37
bower.json Normal file
View File

@@ -0,0 +1,37 @@
{
"name": "commafeed",
"version": "2.0.0",
"dependencies": {
"jquery": "2.1.1",
"jquery-ui": "1.10.3",
"jquery-mousewheel": "3.1.12",
"lodash": "2.4.1",
"bootstrap": "3.3.1",
"font-awesome": "3.2.1",
"angular": "1.3.2",
"angular-resource": "1.3.2",
"angular-route": "1.3.2",
"angular-sanitize": "1.3.2",
"angular-touch": "1.3.2",
"angular-animate": "1.3.2",
"angular-ui-router": "0.2.12",
"angular-ui-utils": "0.1.0",
"angular-ui-select2": "0.0.5",
"angular-bootstrap": "0.2.0",
"angular-loading-bar": "0.6.0",
"angular-translate": "2.4.2",
"angular-translate-loader-static-files": "2.4.2",
"ngInfiniteScroll": "1.0.0",
"ng-grid": "2.0.6",
"mousetrap": "1.4.6",
"momentjs": "2.8.3",
"devicejs": "0.1.16",
"readabilicons": "arc90/readability-readabilicons#34c55561c5b8ec6e90714b50237c06b13cb9d59c",
"zocial": "samcollins/css-social-buttons#1f59ecacde475e563fb6771667597493ec4eecb6",
"swagger-ui": "2.0.24"
},
"resolutions": {
"angular": "1.3.2",
"angular-translate": "2.4.2"
}
}

View File

@@ -1 +0,0 @@
set JAVA_OPTS=-Djava.net.preferIPv4Stack=true -Xmx1024m -XX:MaxPermSize=256m -XX:+CMSClassUnloadingEnabled -XX:+UseConcMarkSweepGC

View File

@@ -1 +0,0 @@
export JAVA_OPTS="-Djava.net.preferIPv4Stack=true -Xmx1024m -XX:MaxPermSize=256m -XX:+CMSClassUnloadingEnabled -XX:+UseConcMarkSweepGC"

122
config.dev.yml Normal file
View File

@@ -0,0 +1,122 @@
# CommaFeed settings
# ------------------
app:
# url used to access commafeed
publicUrl: http://localhost:8082/
# wether to allow user registrations
allowRegistrations: true
# create a demo account the first time the app starts
createDemoAccount: false
# put your google analytics tracking code here
googleAnalyticsTrackingCode:
# number of http threads
backgroundThreads: 3
# number of database updating threads
databaseUpdateThreads: 1
# settings for sending emails (password recovery)
smtpHost: localhost
smtpPort: 25
smtpTls: false
smtpUserName: user
smtpPassword: pass
# wether this commafeed instance has a lot of feeds to refresh
# leave this to false in almost all cases
heavyLoad: false
# minimum amount of time commafeed will wait before refreshing the same feed
refreshIntervalMinutes: 5
# wether to enable pubsub
# probably not needed if refreshIntervalMinutes is low
pubsubhubbub: false
# if enabled, images in feed entries will be proxied through the server instead of accessed directly by the browser
# useful if commafeed is usually accessed through a restricting proxy
imageProxyEnabled: false
# database query timeout (in milliseconds), 0 to disable
queryTimeout: 0
# time to keep unread statuses (in days), 0 to disable
keepStatusDays: 0
# entries to keep per feed, old entries will be deleted, 0 to disable
maxFeedCapacity: 500
# cache service to use, possible values are 'noop' and 'redis'
cache: noop
# announcement string displayed on the main page
announcement:
# Database connection
# -------------------
# for MySQL
# driverClass is com.mysql.jdbc.Driver
# url is jdbc:mysql://localhost/commafeed?autoReconnect=true&failOverReadOnly=false&maxReconnects=20&rewriteBatchedStatements=true
#
# for PostgreSQL
# driverClass is org.postgresql.Driver
# url is jdbc:postgresql://localhost:5432/commafeed
#
# for Microsoft SQL Server
# driverClass is net.sourceforge.jtds.jdbc.Driver
# url is jdbc:jtds:sqlserver://localhost:1433/commafeed;instance=<instanceName, remove if not needed>
database:
driverClass: org.h2.Driver
url: jdbc:h2:./target/example;mv_store=false
user: sa
password: sa
properties:
charSet: UTF-8
maxWaitForConnection: 1s
validationQuery: "/* CommaFeed Health Check */ SELECT 1"
minSize: 1
maxSize: 50
checkConnectionWhileIdle: true
maxConnectionAge: 30m
server:
applicationConnectors:
- type: http
port: 8083
adminConnectors:
- type: http
port: 8084
logging:
level: INFO
loggers:
com.commafeed: DEBUG
liquibase: INFO
org.hibernate.SQL: INFO # or ALL for sql debugging
org.hibernate.engine.internal.StatisticalLoggingSessionEventListener: WARN
appenders:
- type: console
- type: file
currentLogFilename: log/commafeed.log
threshold: ALL
archive: true
archivedLogFilenamePattern: log/commafeed-%d.log
archivedFileCount: 5
timeZone: UTC
# Redis pool configuration
# (only used if app.cache is 'redis')
# -----------------------------------
redis:
host: localhost
port: 6379
password:
timeout: 2000
database: 0
maxTotal: 500

122
config.yml.example Normal file
View File

@@ -0,0 +1,122 @@
# CommaFeed settings
# ------------------
app:
# url used to access commafeed
publicUrl: http://localhost:8082/
# wether to allow user registrations
allowRegistrations: false
# create a demo account the first time the app starts
createDemoAccount: false
# put your google analytics tracking code here
googleAnalyticsTrackingCode:
# number of http threads
backgroundThreads: 3
# number of database updating threads
databaseUpdateThreads: 1
# settings for sending emails (password recovery)
smtpHost:
smtpPort:
smtpTls: false
smtpUserName:
smtpPassword:
smtpFromAddress:
# wether this commafeed instance has a lot of feeds to refresh
# leave this to false in almost all cases
heavyLoad: false
# minimum amount of time commafeed will wait before refreshing the same feed
refreshIntervalMinutes: 5
# wether to enable pubsub
# probably not needed if refreshIntervalMinutes is low
pubsubhubbub: false
# if enabled, images in feed entries will be proxied through the server instead of accessed directly by the browser
# useful if commafeed is usually accessed through a restricting proxy
imageProxyEnabled: false
# database query timeout (in milliseconds), 0 to disable
queryTimeout: 0
# time to keep unread statuses (in days), 0 to disable
keepStatusDays: 0
# entries to keep per feed, old entries will be deleted, 0 to disable
maxFeedCapacity: 500
# cache service to use, possible values are 'noop' and 'redis'
cache: noop
# announcement string displayed on the main page
announcement:
# Database connection
# -------------------
# for MySQL
# driverClass is com.mysql.jdbc.Driver
# url is jdbc:mysql://localhost/commafeed?autoReconnect=true&failOverReadOnly=false&maxReconnects=20&rewriteBatchedStatements=true
#
# for PostgreSQL
# driverClass is org.postgresql.Driver
# url is jdbc:postgresql://localhost:5432/commafeed
#
# for Microsoft SQL Server
# driverClass is net.sourceforge.jtds.jdbc.Driver
# url is jdbc:jtds:sqlserver://localhost:1433/commafeed;instance=<instanceName, remove if not needed>
database:
driverClass: org.h2.Driver
url: jdbc:h2:/home/commafeed/db;mv_store=false
user: sa
password: sa
properties:
charSet: UTF-8
maxWaitForConnection: 1s
validationQuery: "/* CommaFeed Health Check */ SELECT 1"
minSize: 1
maxSize: 50
checkConnectionWhileIdle: true
maxConnectionAge: 30m
server:
applicationConnectors:
- type: http
port: 8082
adminConnectors:
- type: http
port: 8084
logging:
level: WARN
loggers:
com.commafeed: INFO
liquibase: INFO
io.dropwizard.server.ServerFactory: INFO
appenders:
- type: console
- type: file
currentLogFilename: log/commafeed.log
threshold: ALL
archive: true
archivedLogFilenamePattern: log/commafeed-%d.log
archivedFileCount: 5
timeZone: UTC
# Redis pool configuration
# (only used if app.cache is 'redis')
# -----------------------------------
redis:
host: localhost
port: 6379
password:
timeout: 2000
database: 0
maxTotal: 500

View File

@@ -0,0 +1,295 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<profiles version="12">
<profile kind="CodeFormatterProfile" name="Eclipse [built-in] 140 chars" version="12">
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_ellipsis" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.blank_lines_after_imports" value="1"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.comment.format_javadoc_comments" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.indentation.size" value="4"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.disabling_tag" value="@formatter:off"/>
<setting id="org.eclipse.jdt.core.formatter.continuation_indentation" value="2"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_enum_constants" value="48"/>
<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_imports" value="1"/>
<setting id="org.eclipse.jdt.core.formatter.blank_lines_after_package" value="1"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_binary_operator" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant" value="48"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.comment.indent_root_tags" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.enabling_tag" value="@formatter:on"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations" value="1"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column" value="false"/>
<setting id="org.eclipse.jdt.core.compiler.problem.enumIdentifier" value="error"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.indent_statements_compare_to_block" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration" value="end_of_line"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.comment.line_length" value="140"/>
<setting id="org.eclipse.jdt.core.formatter.use_on_off_tags" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_method_declaration" value="end_of_line"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_binary_expression" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_block" value="end_of_line"/>
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration" value="end_of_line"/>
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_lambda_body" value="end_of_line"/>
<setting id="org.eclipse.jdt.core.formatter.compact_else_if" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration" value="16"/>
<setting id="org.eclipse.jdt.core.compiler.problem.assertIdentifier" value="error"/>
<setting id="org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_binary_operator" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_unary_operator" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve" value="1"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_ellipsis" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.comment.format_line_comments" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.align_type_members_on_columns" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_assignment" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_conditional_expression" value="80"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration" value="end_of_line"/>
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_block_in_case" value="end_of_line"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.comment.format_header" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while" value="insert"/>
<setting id="org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode" value="enabled"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_method_declaration" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.join_wrapped_lines" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration" value="end_of_line"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_resources_in_try" value="80"/>
<setting id="org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column" value="false"/>
<setting id="org.eclipse.jdt.core.compiler.source" value="1.8"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.tabulation.size" value="4"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.comment.format_source_code" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_field" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer" value="2"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_method" value="1"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration" value="48"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement" value="do not insert"/>
<setting id="org.eclipse.jdt.core.compiler.codegen.targetPlatform" value="1.8"/>
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_switch" value="end_of_line"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.comment.format_html" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_compact_if" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.indent_empty_lines" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_unary_operator" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation" value="48"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk" value="1"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_label" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_member_type" value="1"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_semicolon" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.comment.format_block_comments" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.indent_statements_compare_to_body" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_multiple_fields" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_array_initializer" value="end_of_line"/>
<setting id="org.eclipse.jdt.core.formatter.wrap_before_binary_operator" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch" value="do not insert"/>
<setting id="org.eclipse.jdt.core.compiler.compliance" value="1.8"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_enum_constant" value="end_of_line"/>
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_type_declaration" value="end_of_line"/>
<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_package" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.join_lines_in_comments" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.comment.indent_parameter_description" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.tabulation.char" value="tab"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.blank_lines_between_import_groups" value="1"/>
<setting id="org.eclipse.jdt.core.formatter.lineSplit" value="140"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch" value="insert"/>
</profile>
</profiles>

View File

@@ -0,0 +1,267 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<profiles version="11">
<profile kind="CodeFormatterProfile" name="Eclipse [built-in] 140 chars" version="11">
<setting id="org.eclipse.wst.jsdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header" value="true"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments" value="insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration" value="insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.brace_position_for_block_in_case" value="end_of_line"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_colon_in_case" value="insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.indent_empty_lines" value="false"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.alignment_for_compact_if" value="52"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.brace_position_for_annotation_type_declaration" value="end_of_line"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_new_line_after_annotation" value="insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.indent_breaks_compare_to_cases" value="true"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_assignment_operator" value="insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_paren_in_annotation" value="do not insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters" value="do not insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer" value="do not insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_bracket_in_array_reference" value="do not insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.comment.format_header" value="false"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_paren_in_method_invocation" value="do not insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.never_indent_line_comments_on_first_column" value="false"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.comment.format_block_comments" value="true"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_colon_in_object_initializer" value="insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_paren_in_enum_constant" value="do not insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_colon_in_labeled_statement" value="insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.blank_lines_between_type_declarations" value="0"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_paren_in_method_declaration" value="do not insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_enum_declarations" value="do not insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_brace_in_array_initializer" value="do not insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body" value="0"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.brace_position_for_method_declaration" value="end_of_line"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression" value="do not insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.alignment_for_assignment" value="0"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference" value="insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_semicolon_in_for" value="do not insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_paren_in_synchronized" value="do not insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.tabulation.size" value="4"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.format_guardian_clause_on_one_line" value="false"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression" value="do not insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_closing_brace_in_block" value="insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_colon_in_default" value="insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_new_line_before_else_in_if_statement" value="do not insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_paren_in_for" value="do not insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.keep_empty_array_initializer_on_one_line" value="false"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments" value="do not insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.indent_switchstatements_compare_to_cases" value="true"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call" value="16"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.align_type_members_on_columns" value="false"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_paren_in_catch" value="insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_type_arguments" value="insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_paren_in_annotation" value="do not insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.comment.clear_blank_lines_in_block_comment" value="false"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.alignment_for_arguments_in_allocation_expression" value="16"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference" value="do not insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_binary_operator" value="insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_allocation_expression" value="insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_paren_in_while" value="insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_array_initializer" value="do not insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression" value="do not insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_paren_in_switch" value="do not insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.alignment_for_arguments_in_method_invocation" value="16"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_closing_paren_in_cast" value="insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.continuation_indentation_for_objlit_initializer" value="1"/>
<setting id="org.eclipse.wst.jsdt.core.compiler.compliance" value="1.5"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_new_line_before_closing_brace_in_objlit_initializer" value="insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.comment.format_source_code" value="true"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.indent_switchstatements_compare_to_switch" value="true"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_paren_in_for" value="do not insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.wrap_before_binary_operator" value="true"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression" value="do not insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_ellipsis" value="insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_at_in_annotation" value="do not insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression" value="do not insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration" value="do not insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_prefix_operator" value="do not insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.continuation_indentation_for_array_initializer" value="2"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration" value="do not insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_colon_in_for" value="insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_paren_in_for" value="insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression" value="do not insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_paren_in_while" value="do not insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws" value="do not insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.brace_position_for_enum_constant" value="end_of_line"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments" value="do not insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters" value="insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration" value="insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_array_initializer" value="insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_between_brackets_in_array_type_reference" value="do not insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_and_in_type_parameter" value="insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration" value="do not insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.alignment_for_expressions_in_array_initializer" value="16"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations" value="do not insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.blank_lines_after_package" value="0"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_new_line_after_comma_in_objlit_initializer" value="insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_paren_in_annotation" value="do not insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_new_line_in_empty_enum_constant" value="insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_new_line_before_catch_in_try_statement" value="do not insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.never_indent_block_comments_on_first_column" value="false"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_paren_in_method_declaration" value="do not insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_paren_in_switch" value="insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_colon_in_for" value="insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_new_line_before_while_in_do_statement" value="do not insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.comment.format_javadoc_comments" value="true"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_type_parameters" value="insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_for_inits" value="insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_superinterfaces" value="do not insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration" value="insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.indentation.size" value="4"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_new_line_in_empty_annotation_declaration" value="insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression" value="do not insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_new_line_in_empty_enum_declaration" value="insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_new_line_in_empty_type_declaration" value="insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration" value="insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments" value="insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.brace_position_for_objlit_initializer" value="end_of_line"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_between_empty_parens_in_method_declaration" value="do not insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_allocation_expression" value="do not insert"/>
<setting id="org.eclipse.wst.jsdt.core.compiler.source" value="1.5"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.use_tabs_only_for_leading_indentations" value="false"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_at_in_annotation_type_declaration" value="do not insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_new_line_at_end_of_file_if_missing" value="do not insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_colon_in_conditional" value="insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_brace_in_enum_constant" value="insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_method_declaration_throws" value="do not insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_brace_in_method_declaration" value="insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_paren_in_catch" value="do not insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments" value="do not insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_binary_operator" value="insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.number_of_empty_lines_to_preserve" value="1"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_bracket_in_array_reference" value="do not insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_paren_in_synchronized" value="do not insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.brace_position_for_switch" value="end_of_line"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_colon_in_conditional" value="insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments" value="do not insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.alignment_for_parameters_in_constructor_declaration" value="16"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration" value="16"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_brace_in_type_declaration" value="insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations" value="insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_parenthesized_expression_in_return" value="insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_semicolon" value="do not insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_paren_in_method_invocation" value="do not insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_prefix_operator" value="do not insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations" value="insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_paren_in_catch" value="do not insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.continuation_indentation" value="2"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_paren_in_if" value="insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.alignment_for_conditional_expression" value="48"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.alignment_for_arguments_in_enum_constant" value="16"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.comment.indent_parameter_description" value="true"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration" value="do not insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments" value="do not insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.blank_lines_after_imports" value="0"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_unary_operator" value="do not insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header" value="true"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.alignment_for_superinterfaces_in_type_declaration" value="64"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters" value="insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_paren_in_switch" value="do not insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_type_arguments" value="do not insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration" value="insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.comment.indent_root_tags" value="true"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.blank_lines_before_package" value="0"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_paren_in_synchronized" value="insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_semicolon_in_for" value="insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_paren_in_cast" value="do not insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_brace_in_array_initializer" value="do not insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.blank_lines_before_member_type" value="0"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments" value="insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.indent_body_declarations_compare_to_type_header" value="true"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_between_empty_braces_in_array_initializer" value="do not insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_postfix_operator" value="do not insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.alignment_for_enum_constants" value="0"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_at_in_annotation_type_declaration" value="insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_type_parameters" value="do not insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters" value="do not insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.blank_lines_before_imports" value="0"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.keep_imple_if_on_one_line" value="false"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_paren_in_while" value="do not insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration" value="do not insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.alignment_for_binary_expression" value="16"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments" value="insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer" value="do not insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header" value="true"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_paren_in_cast" value="do not insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.lineSplit" value="140"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_paren_in_enum_constant" value="do not insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.comment.format_html" value="true"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_postfix_operator" value="do not insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_parenthesized_expression_in_throw" value="insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.alignment_for_throws_clause_in_method_declaration" value="16"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.comment.insert_new_line_before_root_tags" value="insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.keep_then_statement_on_same_line" value="false"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration" value="do not insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.blank_lines_before_method" value="0"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.alignment_for_superclass_in_type_declaration" value="64"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_paren_in_method_declaration" value="do not insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_new_line_in_empty_method_body" value="insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_question_in_conditional" value="insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters" value="insert"/>
<setting id="org.eclipse.wst.jsdt.core.compiler.codegen.targetPlatform" value="1.5"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression" value="16"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters" value="do not insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_for_increments" value="do not insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.keep_empty_objlit_initializer_on_one_line" value="false"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_question_in_conditional" value="insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters" value="do not insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_between_empty_parens_in_method_invocation" value="do not insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_colon_in_labeled_statement" value="insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.indent_statements_compare_to_block" value="true"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.brace_position_for_constructor_declaration" value="end_of_line"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.brace_position_for_enum_declaration" value="end_of_line"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.comment.format_line_comments" value="true"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_paren_in_method_invocation" value="do not insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters" value="do not insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_between_empty_parens_in_enum_constant" value="do not insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_new_line_in_empty_block" value="insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations" value="do not insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration" value="64"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference" value="do not insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_brace_in_switch" value="insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_brace_in_block" value="insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_superinterfaces" value="insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.brace_position_for_array_initializer" value="end_of_line"/>
<setting id="org.eclipse.wst.jsdt.core.compiler.problem.assertIdentifier" value="error"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws" value="insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_colon_in_assert" value="insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.comment.insert_new_line_for_parameter" value="insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.brace_position_for_type_declaration" value="end_of_line"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_colon_in_object_initializer" value="insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.comment.line_length" value="80"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_method_declaration_throws" value="insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.alignment_for_parameters_in_method_declaration" value="16"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.brace_position_for_block" value="end_of_line"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.alignment_for_multiple_fields" value="16"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_colon_in_case" value="insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_enum_declarations" value="insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.indent_statements_compare_to_body" value="true"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.blank_lines_before_new_chunk" value="0"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.tabulation.char" value="tab"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.put_empty_statement_on_new_line" value="false"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_paren_in_enum_constant" value="do not insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_paren_in_if" value="do not insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_unary_operator" value="do not insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.keep_else_statement_on_same_line" value="false"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_for_increments" value="insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.alignment_for_selector_in_method_invocation" value="16"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.blank_lines_between_import_groups" value="1"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_assignment_operator" value="insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_annotation" value="do not insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.blank_lines_before_field" value="0"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment" value="false"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_new_line_after_opening_brace_in_objlit_initializer" value="insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_new_line_before_finally_in_try_statement" value="do not insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.compact_else_if" value="true"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_annotation" value="insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_ellipsis" value="do not insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_for_inits" value="do not insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments" value="do not insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.blank_lines_before_first_class_body_declaration" value="0"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.brace_position_for_anonymous_type_declaration" value="end_of_line"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_paren_in_if" value="do not insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_bracket_in_array_reference" value="do not insert"/>
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_colon_in_assert" value="insert"/>
</profile>
</profiles>

2
gulp Normal file
View File

@@ -0,0 +1,2 @@
#!/bin/sh
"node/node" "node_modules/gulp/bin/gulp.js" "$@"

3
gulp.cmd Normal file
View File

@@ -0,0 +1,3 @@
@echo off
%~dp0node/node node_modules/gulp/bin/gulp.js %*
@echo on

117
gulpfile.js Normal file
View File

@@ -0,0 +1,117 @@
var gulp = require('gulp');
var rev = require('gulp-rev');
var revReplace = require('gulp-rev-replace');
var minifyCSS = require('gulp-minify-css');
var uglify = require('gulp-uglify');
var filter = require('gulp-filter');
var bower = require('gulp-bower');
var connect = require('gulp-connect');
var modRewrite = require('connect-modrewrite');
var sass = require('gulp-sass');
var useref = require('gulp-useref');
var templateCache = require('gulp-angular-templatecache');
var SRC_DIR = 'src/main/app/';
var TEMP_DIR = 'target/gulp/'
var BUILD_DIR = 'target/classes/assets/';
gulp.task('bower', function() {
return bower();
});
gulp.task('images', function() {
return gulp.src(SRC_DIR + 'images/**/*').pipe(gulp.dest(BUILD_DIR + 'images'));
});
gulp.task('i18n', function() {
return gulp.src(SRC_DIR + 'i18n/**/*.js').pipe(gulp.dest(BUILD_DIR + 'i18n'));
});
gulp.task('favicons', function() {
var favicons_png = SRC_DIR + '*.png';
var favicons_ico = SRC_DIR + '*.ico';
var favicons_svg = SRC_DIR + '*.svg';
return gulp.src([favicons_png, favicons_ico, favicons_svg]).pipe(gulp.dest(BUILD_DIR));
});
gulp.task('sass', function() {
return gulp.src(SRC_DIR + 'sass/app.scss').pipe(sass()).pipe(gulp.dest(TEMP_DIR + 'css'));
});
gulp.task('fonts', ['bower'], function() {
var font_awesome = SRC_DIR + 'lib/font-awesome/font/fontawesome-webfont.*';
var zocial = SRC_DIR + 'lib/zocial/css/zocial-regular-*';
var readabilicons = SRC_DIR + 'lib/readabilicons/webfont/fonts/readabilicons-*';
return gulp.src([font_awesome, zocial, readabilicons]).pipe(gulp.dest(BUILD_DIR + 'font'));
});
gulp.task('select2', ['bower'], function() {
var gif = SRC_DIR + 'lib/select2/*.gif';
var png = SRC_DIR + 'lib/select2/*.png';
return gulp.src([gif, png]).pipe(gulp.dest(BUILD_DIR + 'css'));
});
gulp.task('swagger-ui', ['bower'], function() {
var index_html = SRC_DIR + 'api/index.html';
var lib = SRC_DIR + 'lib/swagger-ui/dist/**/*';
return gulp.src([lib, index_html]).pipe(gulp.dest(BUILD_DIR + 'api'));
});
gulp.task('template-cache', function() {
var options = {
module : 'commafeed.services',
root : 'templates/'
};
return gulp.src(SRC_DIR + 'templates/**/*.html').pipe(templateCache(options)).pipe(gulp.dest(TEMP_DIR + 'js'));
});
gulp.task('build-dev', ['images', 'i18n', 'favicons', 'sass', 'fonts', 'select2', 'swagger-ui', 'template-cache', 'bower'], function() {
var assets = useref.assets({
searchPath : [SRC_DIR, TEMP_DIR]
});
var jsFilter = filter("**/*.js");
var cssFilter = filter("**/*.css");
return gulp.src([SRC_DIR + 'index.html', TEMP_DIR + 'app.css']).pipe(assets).pipe(rev()).pipe(assets.restore()).pipe(useref()).pipe(
revReplace()).pipe(gulp.dest(BUILD_DIR)).pipe(connect.reload());
});
gulp.task('build', ['images', 'i18n', 'favicons', 'sass', 'fonts', 'select2', 'swagger-ui', 'template-cache', 'bower'], function() {
var assets = useref.assets({
searchPath : [SRC_DIR, TEMP_DIR]
});
var jsFilter = filter("**/*.js");
var cssFilter = filter("**/*.css");
return gulp.src([SRC_DIR + 'index.html', TEMP_DIR + 'app.css']).pipe(assets)
.pipe(cssFilter).pipe(minifyCSS()).pipe(cssFilter.restore())
.pipe(jsFilter).pipe(uglify()).pipe(jsFilter.restore())
.pipe(rev()).pipe(assets.restore()).pipe(useref()).pipe(revReplace()).pipe(gulp.dest(BUILD_DIR));
});
gulp.task('watch', function() {
gulp.watch(SRC_DIR + 'sass/**/*.scss', ['build-dev']);
gulp.watch(SRC_DIR + 'js/**/*.js', ['build-dev']);
gulp.watch(SRC_DIR + 'i18n/**/*.js', ['build-dev']);
gulp.watch(SRC_DIR + 'templates/**/*.html', ['build-dev']);
});
gulp.task('serve', function() {
connect.server({
root : BUILD_DIR,
port : 8082,
livereload: true,
middleware : function() {
var rest = '^/rest/(.*)$ http://localhost:8083/rest/$1 [P]';
var next = '^/next(.*)$ http://localhost:8083/next$1 [P]';
var logout = '^/logout$ http://localhost:8083/logout [P]';
var custom_css = '^/custom_css.css$ http://localhost:8083/custom_css.css [P]';
var analytics = '^/analytics.js http://localhost:8083/analytics.js [P]';
return [modRewrite([rest, next, logout, custom_css, analytics])];
}
});
});
gulp.task('dev', ['build-dev', 'watch', 'serve']);
gulp.task('default', ['build']);

20
package.json Normal file
View File

@@ -0,0 +1,20 @@
{
"name": "commafeed",
"version": "2.0.0",
"main": "main.js",
"private": true,
"devDependencies": {
"gulp": "3.8.10",
"gulp-rev": "2.0.1",
"gulp-rev-replace": "0.3.1",
"gulp-minify-css": "0.3.11",
"gulp-uglify": "1.0.1",
"gulp-filter": "1.0.2",
"gulp-bower": "0.0.7",
"gulp-connect": "2.2.0",
"connect-modrewrite": "0.7.9",
"gulp-sass": "1.1.0",
"gulp-useref": "1.0.2",
"gulp-angular-templatecache": "1.4.2"
}
}

752
pom.xml
View File

@@ -1,11 +1,11 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<modelVersion>4.0.0</modelVersion>
<groupId>com.commafeed</groupId>
<artifactId>commafeed</artifactId>
<version>1.0.0</version>
<packaging>war</packaging>
<version>2.1.0</version>
<packaging>jar</packaging>
<name>CommaFeed</name>
<prerequisites>
@@ -14,14 +14,19 @@
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<production>false</production>
<jpa.show_sql>false</jpa.show_sql>
<jpa.datasource.name>java:openejb/Resource/My DataSource</jpa.datasource.name>
<jpa.cache>false</jpa.cache>
<jpa.table.encoding>utf8mb4</jpa.table.encoding>
<cache_service.class>com.commafeed.backend.cache.NoopCacheService</cache_service.class>
<java.version>1.7</java.version>
<dropwizard.version>0.8.0-rc1</dropwizard.version>
<guice.version>4.0-beta5</guice.version>
<querydsl.version>3.6.0</querydsl.version>
<rome.version>1.5.0</rome.version>
</properties>
<scm>
<connection>scm:git:https://github.com/Athou/commafeed.git</connection>
<developerConnection>scm:git:https://github.com/Athou/commafeed.git</developerConnection>
<url>https://github.com/Athou/commafeed</url>
</scm>
<build>
<finalName>commafeed</finalName>
<resources>
@@ -29,128 +34,21 @@
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*</include>
</includes>
<excludes>
<exclude>**/*.java</exclude>
</excludes>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
<compilerArgument>-proc:none</compilerArgument>
<source>${java.version}</source>
<target>${java.version}</target>
</configuration>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.4</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
<webResources combine.children="append">
<resource>
<directory>${basedir}/src/main/webapp/WEB-INF</directory>
<targetPath>WEB-INF</targetPath>
<filtering>true</filtering>
<includes>
<include>**/beans.xml</include>
</includes>
</resource>
</webResources>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.openejb.maven</groupId>
<artifactId>tomee-maven-plugin</artifactId>
<version>1.5.2</version>
<configuration>
<tomeeVersion>1.5.2</tomeeVersion>
<tomeeClassifier>plus</tomeeClassifier>
<tomeeHttpPort>8082</tomeeHttpPort>
<args>-Xmx1024m -XX:MaxPermSize=512m -XX:+CMSClassUnloadingEnabled</args>
<config>${project.basedir}/src/main/tomee/conf</config>
<reloadOnUpdate>true</reloadOnUpdate>
<synchronization>
<updateInterval>1</updateInterval>
<extensions>
<extension>.class</extension>
</extensions>
<updateOnlyExtensions>
<updateOnlyExtension>.properties</updateOnlyExtension>
<updateOnlyExtension>.html</updateOnlyExtension>
<updateOnlyExtension>.js</updateOnlyExtension>
<updateOnlyExtension>.css</updateOnlyExtension>
<updateOnlyExtension>.scss</updateOnlyExtension>
</updateOnlyExtensions>
</synchronization>
<libs>
<lib>org.hibernate:hibernate-entitymanager:4.1.11.Final</lib>
<lib>org.hibernate:hibernate-core:4.1.11.Final</lib>
<lib>org.hibernate.common:hibernate-commons-annotations:4.0.1.Final</lib>
<lib>org.hibernate:hibernate-validator:4.3.1.Final</lib>
<lib>org.jboss.logging:jboss-logging:3.1.3.GA</lib>
<lib>dom4j:dom4j:1.6.1</lib>
<lib>antlr:antlr:2.7.7</lib>
<lib>remove:openjpa-</lib>
<lib>remove:hsqldb</lib>
<lib>org.hsqldb:hsqldb:2.3.0</lib>
<lib>mysql:mysql-connector-java:5.1.24</lib>
<lib>postgresql:postgresql:9.1-901.jdbc4</lib>
<lib>net.sourceforge.jtds:jtds:1.3.1</lib>
<lib>org.infinispan:infinispan-core:5.1.4.FINAL</lib>
<lib>org.hibernate:hibernate-infinispan:4.1.11.Final</lib>
<lib>org.jgroups:jgroups:3.0.9.Final</lib>
<lib>org.jboss.marshalling:jboss-marshalling-river:1.3.11.GA</lib>
<lib>org.jboss.marshalling:jboss-marshalling:1.3.11.GA</lib>
<lib>org.codehaus.woodstox:woodstox-core-asl:4.1.1</lib>
<lib>org.codehaus.woodstox:stax2-api:3.1.1</lib>
<lib>org.rhq.helpers:rhq-pluginAnnotations:3.0.4</lib>
<lib>org.jboss.logmanager:jboss-logmanager:1.2.2.GA</lib>
</libs>
</configuration>
</plugin>
<plugin>
<groupId>org.bsc.maven</groupId>
<artifactId>maven-processor-plugin</artifactId>
<version>2.2.3</version>
<executions>
<execution>
<id>process</id>
<goals>
<goal>process</goal>
</goals>
<phase>generate-sources</phase>
<configuration>
<processors>
<processor>org.hibernate.jpamodelgen.JPAMetaModelEntityProcessor</processor>
</processors>
<outputDirectory>target/generated-sources/metamodel</outputDirectory>
</configuration>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-jpamodelgen</artifactId>
<version>1.2.0.Final</version>
</dependency>
</dependencies>
</plugin>
<plugin>
<groupId>pl.project13.maven</groupId>
<artifactId>git-commit-id-plugin</artifactId>
<version>2.1.5</version>
<version>2.1.11</version>
<executions>
<execution>
<goals>
@@ -161,6 +59,85 @@
<configuration>
<generateGitPropertiesFile>false</generateGitPropertiesFile>
<failOnNoGitDirectory>false</failOnNoGitDirectory>
<failOnUnableToExtractRepoInfo>false</failOnUnableToExtractRepoInfo>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.3</version>
<configuration>
<createDependencyReducedPom>false</createDependencyReducedPom>
<filters>
<filter>
<artifact>*:*</artifact>
<excludes>
<exclude>META-INF/*.SF</exclude>
<exclude>META-INF/*.DSA</exclude>
<exclude>META-INF/*.RSA</exclude>
</excludes>
</filter>
</filters>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer" />
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>com.commafeed.CommaFeedApplication</mainClass>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>com.github.eirslett</groupId>
<artifactId>frontend-maven-plugin</artifactId>
<version>0.0.19</version>
<executions>
<execution>
<id>install node and npm</id>
<goals>
<goal>install-node-and-npm</goal>
</goals>
<phase>generate-resources</phase>
<configuration>
<nodeVersion>v0.10.30</nodeVersion>
<npmVersion>1.3.8</npmVersion>
</configuration>
</execution>
<execution>
<id>npm install</id>
<goals>
<goal>npm</goal>
</goals>
<phase>generate-resources</phase>
</execution>
<execution>
<id>gulp build</id>
<goals>
<goal>gulp</goal>
</goals>
<phase>generate-resources</phase>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.5</version>
<configuration>
<archive>
<manifest>
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
@@ -168,452 +145,191 @@
<dependencies>
<dependency>
<groupId>org.jboss.spec</groupId>
<artifactId>jboss-javaee-6.0</artifactId>
<version>1.0.0.Final</version>
<type>pom</type>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.14.8</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>4.1.11.Final</version>
<scope>provided</scope>
<exclusions>
<exclusion>
<artifactId>dom4j</artifactId>
<groupId>dom4j</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.1.0</version>
</dependency>
<dependency>
<groupId>org.liquibase</groupId>
<artifactId>liquibase-core</artifactId>
<version>3.0.2</version>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.7</version>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>14.0.1</version>
<groupId>org.apache.commons</groupId>
<artifactId>commons-jexl</artifactId>
<version>2.1.1</version>
</dependency>
<dependency>
<groupId>com.google.inject</groupId>
<artifactId>guice</artifactId>
<version>${guice.version}</version>
</dependency>
<dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId>
<version>1.8.3</version>
<groupId>com.google.inject.extensions</groupId>
<artifactId>guice-multibindings</artifactId>
<version>${guice.version}</version>
</dependency>
<dependency>
<groupId>io.dropwizard</groupId>
<artifactId>dropwizard-core</artifactId>
<version>${dropwizard.version}</version>
</dependency>
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.8</version>
<groupId>io.dropwizard</groupId>
<artifactId>dropwizard-hibernate</artifactId>
<version>${dropwizard.version}</version>
</dependency>
<dependency>
<groupId>commons-collections</groupId>
<artifactId>commons-collections</artifactId>
<version>3.2.1</version>
<groupId>io.dropwizard</groupId>
<artifactId>dropwizard-client</artifactId>
<version>${dropwizard.version}</version>
</dependency>
<dependency>
<groupId>io.dropwizard</groupId>
<artifactId>dropwizard-migrations</artifactId>
<version>${dropwizard.version}</version>
</dependency>
<!-- TODO remove when dropwizard 0.8.0 is released -->
<dependency>
<groupId>org.liquibase</groupId>
<artifactId>liquibase-core</artifactId>
<version>3.3.1</version>
</dependency>
<dependency>
<groupId>io.dropwizard</groupId>
<artifactId>dropwizard-assets</artifactId>
<version>${dropwizard.version}</version>
</dependency>
<dependency>
<groupId>io.dropwizard</groupId>
<artifactId>dropwizard-forms</artifactId>
<version>${dropwizard.version}</version>
<type>pom</type>
</dependency>
<dependency>
<groupId>com.wordnik</groupId>
<artifactId>swagger-jaxrs_2.10</artifactId>
<version>1.3.11</version>
<exclusions>
<exclusion>
<groupId>javax.ws.rs</groupId>
<artifactId>jsr311-api</artifactId>
</exclusion>
<exclusion>
<artifactId>commons-lang</artifactId>
<groupId>commons-lang</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.mysema.querydsl</groupId>
<artifactId>querydsl-apt</artifactId>
<version>${querydsl.version}</version>
<scope>provided</scope>
<classifier>hibernate</classifier>
</dependency>
<dependency>
<groupId>com.mysema.querydsl</groupId>
<artifactId>querydsl-jpa</artifactId>
<version>${querydsl.version}</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.6</version>
<groupId>org.apache.commons</groupId>
<artifactId>commons-collections4</artifactId>
<version>4.0</version>
</dependency>
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.10</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-math</artifactId>
<version>2.2</version>
</dependency>
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3</version>
</dependency>
<dependency>
<groupId>com.googlecode.lambdaj</groupId>
<artifactId>lambdaj</artifactId>
<version>2.3.3</version>
</dependency>
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>2.2</version>
<artifactId>commons-math3</artifactId>
<version>3.3</version>
</dependency>
<dependency>
<groupId>net.java.dev.rome</groupId>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.6.1</version>
</dependency>
<dependency>
<groupId>com.sun.mail</groupId>
<artifactId>javax.mail</artifactId>
<version>1.5.2</version>
</dependency>
<dependency>
<groupId>com.rometools</groupId>
<artifactId>rome</artifactId>
<version>1.0.0</version>
<exclusions>
<exclusion>
<groupId>jdom</groupId>
<artifactId>jdom</artifactId>
</exclusion>
</exclusions>
<version>${rome.version}</version>
</dependency>
<dependency>
<groupId>org.rometools</groupId>
<groupId>com.rometools</groupId>
<artifactId>rome-opml</artifactId>
<version>1.0</version>
<exclusions>
<exclusion>
<groupId>rome</groupId>
<artifactId>rome</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>edu.uci.ics</groupId>
<artifactId>crawler4j</artifactId>
<version>3.5</version>
</dependency>
<dependency>
<groupId>org.jdom</groupId>
<artifactId>jdom</artifactId>
<version>1.1.3</version>
</dependency>
<dependency>
<groupId>com.googlecode.juniversalchardet</groupId>
<artifactId>juniversalchardet</artifactId>
<version>1.0.3</version>
</dependency>
<dependency>
<groupId>com.google.gwt</groupId>
<artifactId>gwt-servlet</artifactId>
<version>2.5.1</version>
</dependency>
<dependency>
<groupId>net.sourceforge.cssparser</groupId>
<artifactId>cssparser</artifactId>
<version>0.9.9</version>
</dependency>
<dependency>
<groupId>com.google.oauth-client</groupId>
<artifactId>google-oauth-client-servlet</artifactId>
<version>1.14.1-beta</version>
</dependency>
<dependency>
<groupId>com.google.http-client</groupId>
<artifactId>google-http-client-jackson2</artifactId>
<version>1.14.1-beta</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.2.5</version>
<version>${rome.version}</version>
</dependency>
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.7.2</version>
<version>1.8.1</version>
</dependency>
<dependency>
<groupId>com.ibm.icu</groupId>
<artifactId>icu4j</artifactId>
<version>54.1.1</version>
</dependency>
<dependency>
<groupId>net.sourceforge.cssparser</groupId>
<artifactId>cssparser</artifactId>
<version>0.9.14</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.jaxrs</groupId>
<artifactId>jackson-jaxrs-json-provider</artifactId>
<version>2.1.4</version>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>1.4.182</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.5</version>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.34</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<dependency>
<groupId>org.apache.wicket</groupId>
<artifactId>wicket-core</artifactId>
<version>6.8.0</version>
</dependency>
<dependency>
<groupId>org.apache.wicket</groupId>
<artifactId>wicket-auth-roles</artifactId>
<version>6.8.0</version>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>9.3-1102-jdbc41</version>
</dependency>
<dependency>
<groupId>org.apache.wicket</groupId>
<artifactId>wicket-extensions</artifactId>
<version>6.8.0</version>
</dependency>
<dependency>
<groupId>org.apache.wicket</groupId>
<artifactId>wicket-cdi</artifactId>
<version>6.8.0</version>
</dependency>
<dependency>
<groupId>ro.isdc.wro4j</groupId>
<artifactId>wro4j-extensions</artifactId>
<version>1.6.3</version>
</dependency>
<dependency>
<groupId>com.wordnik</groupId>
<artifactId>swagger-jaxrs_2.9.1</artifactId>
<version>1.2.5</version>
<exclusions>
<exclusion>
<artifactId>jersey-server</artifactId>
<groupId>com.sun.jersey</groupId>
</exclusion>
<exclusion>
<artifactId>jersey-servlet</artifactId>
<groupId>com.sun.jersey</groupId>
</exclusion>
<exclusion>
<artifactId>jersey-client</artifactId>
<groupId>com.sun.jersey</groupId>
</exclusion>
<exclusion>
<artifactId>jersey-core</artifactId>
<groupId>com.sun.jersey</groupId>
</exclusion>
</exclusions>
<groupId>net.sourceforge.jtds</groupId>
<artifactId>jtds</artifactId>
<version>1.3.1</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>1.10.8</version>
<scope>test</scope>
</dependency>
</dependencies>
<profiles>
<profile>
<id>default</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<build>
<plugins>
<plugin>
<groupId>ro.isdc.wro4j</groupId>
<artifactId>wro4j-maven-plugin</artifactId>
<version>1.6.3</version>
<executions>
<execution>
<id>js</id>
<phase>test</phase>
<goals>
<goal>jshint</goal>
</goals>
<configuration>
<targetGroups>app</targetGroups>
<options>indent,devel,noarg,quotmark,laxcomma,laxbreak</options>
</configuration>
</execution>
<execution>
<id>css</id>
<phase>test</phase>
<goals>
<goal>csslint</goal>
</goals>
<configuration>
<targetGroups>app</targetGroups>
<options>display-property-grouping,duplicate-properties,compatible-vendor-prefixes,vendor-prefix</options>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>openshift</id>
<properties>
<jpa.datasource.name>java:jboss/datasources/MysqlDS</jpa.datasource.name>
<jpa.table.encoding>utf8</jpa.table.encoding>
</properties>
<build>
<finalName>commafeed</finalName>
<plugins>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.14.1</version>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.4</version>
<configuration>
<outputDirectory>deployments</outputDirectory>
<warName>ROOT</warName>
</configuration>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>cache</id>
<properties>
<jpa.cache>true</jpa.cache>
</properties>
</profile>
<profile>
<id>redis</id>
<properties>
<cache_service.class>com.commafeed.backend.cache.RedisCacheService</cache_service.class>
</properties>
</profile>
<profile>
<id>mysql</id>
<properties>
<jpa.datasource.name>java:openejb/Resource/MySQL</jpa.datasource.name>
</properties>
</profile>
<profile>
<id>pgsql</id>
<properties>
<jpa.datasource.name>java:openejb/Resource/PostgreSQL</jpa.datasource.name>
</properties>
</profile>
<profile>
<id>mssql</id>
<properties>
<jpa.datasource.name>java:openejb/Resource/MSSQL</jpa.datasource.name>
</properties>
</profile>
<profile>
<id>prod</id>
<activation>
<property>
<name>skipTests</name>
</property>
</activation>
<properties>
<timestamp>${maven.build.timestamp}</timestamp>
<production>true</production>
<jpa.show_sql>false</jpa.show_sql>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.gmaven</groupId>
<artifactId>gmaven-plugin</artifactId>
<version>1.5</version>
<dependencies>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>
</dependencies>
<executions>
<execution>
<phase>generate-sources</phase>
<goals>
<goal>execute</goal>
</goals>
<configuration>
<properties>
<source>${basedir}/src/main/webapp/templates</source>
<prefix>templates/</prefix>
<destination>${basedir}/target/generated-sources/angularjs/all-templates.html</destination>
<i18nPath>${basedir}/src/main/resources/i18n/</i18nPath>
</properties>
<scriptpath>
<element>${basedir}/src/main/script</element>
</scriptpath>
<source>
def source = project.properties['source'];
def prefix =
project.properties['prefix'];
def dest =
project.properties['destination'];
def i18n =
project.properties['i18nPath'];
new
HTMLConcat().concat(source,
prefix, dest, i18n);
</source>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>ro.isdc.wro4j</groupId>
<artifactId>wro4j-maven-plugin</artifactId>
<version>1.6.3</version>
<executions>
<execution>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
<configuration>
<targetGroups>all</targetGroups>
<wroManagerFactory>ro.isdc.wro.maven.plugin.manager.factory.ConfigurableWroManagerFactory</wroManagerFactory>
<destinationFolder>${project.build.directory}/${project.build.finalName}/static/</destinationFolder>
</configuration>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.4</version>
<configuration>
<webResources>
<resource>
<directory>target/generated-sources/angularjs/</directory>
<targetPath>templates</targetPath>
<includes>
<include>**/*.html</include>
</includes>
</resource>
</webResources>
</configuration>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>i18n</id>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.gmaven</groupId>
<artifactId>gmaven-plugin</artifactId>
<version>1.5</version>
<dependencies>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>
</dependencies>
<configuration>
<properties>
<dir>${basedir}/src/main/resources/i18n/</dir>
</properties>
<scriptpath>
<element>${basedir}/src/main/script</element>
</scriptpath>
<source>
def dir = project.properties['dir'];
new
I18nGenerator().generate(dir);
</source>
</configuration>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>
</project>

View File

@@ -0,0 +1,88 @@
<!DOCTYPE html>
<html>
<head>
<title>Swagger UI</title>
<link href='//fonts.googleapis.com/css?family=Droid+Sans:400,700' rel='stylesheet' type='text/css'/>
<link href='css/reset.css' media='screen' rel='stylesheet' type='text/css'/>
<link href='css/screen.css' media='screen' rel='stylesheet' type='text/css'/>
<link href='css/reset.css' media='print' rel='stylesheet' type='text/css'/>
<link href='css/screen.css' media='print' rel='stylesheet' type='text/css'/>
<script type="text/javascript" src="lib/shred.bundle.js"></script>
<script src='lib/jquery-1.8.0.min.js' type='text/javascript'></script>
<script src='lib/jquery.slideto.min.js' type='text/javascript'></script>
<script src='lib/jquery.wiggle.min.js' type='text/javascript'></script>
<script src='lib/jquery.ba-bbq.min.js' type='text/javascript'></script>
<script src='lib/handlebars-1.0.0.js' type='text/javascript'></script>
<script src='lib/underscore-min.js' type='text/javascript'></script>
<script src='lib/backbone-min.js' type='text/javascript'></script>
<script src='lib/swagger.js' type='text/javascript'></script>
<script src='swagger-ui.js' type='text/javascript'></script>
<script src='lib/highlight.7.3.pack.js' type='text/javascript'></script>
<!-- enabling this will enable oauth2 implicit scope support -->
<script src='lib/swagger-oauth.js' type='text/javascript'></script>
<script type="text/javascript">
$(function () {
window.swaggerUi = new SwaggerUi({
url: "../rest/api-docs",
dom_id: "swagger-ui-container",
supportedSubmitMethods: ['get', 'post', 'put', 'delete'],
onComplete: function(swaggerApi, swaggerUi){
log("Loaded SwaggerUI");
if(typeof initOAuth == "function") {
/*
initOAuth({
clientId: "your-client-id",
realm: "your-realms",
appName: "your-app-name"
});
*/
}
$('pre code').each(function(i, e) {
hljs.highlightBlock(e)
});
},
onFailure: function(data) {
log("Unable to Load SwaggerUI");
},
docExpansion: "none",
sorter : "alpha"
});
$('#input_apiKey').change(function() {
var key = $('#input_apiKey')[0].value;
log("key: " + key);
if(key && key.trim() != "") {
log("added key " + key);
window.authorizations.add("key", new ApiKeyAuthorization("api_key", key, "query"));
}
})
window.swaggerUi.load();
});
</script>
</head>
<body class="swagger-section">
<div id='header'>
<div class="swagger-ui-wrap">
<a id="logo" href="http://swagger.wordnik.com">swagger</a>
<form id='api_selector'>
<div class='input icon-btn'>
<img id="show-pet-store-icon" src="images/pet_store_api.png" title="Show Swagger Petstore Example Apis">
</div>
<div class='input icon-btn'>
<img id="show-wordnik-dev-icon" src="images/wordnik_api.png" title="Show Wordnik Developer Apis">
</div>
<div class='input'><input placeholder="http://example.com/api" id="input_baseUrl" name="baseUrl" type="text"/></div>
<div class='input'><input placeholder="api_key" id="input_apiKey" name="apiKey" type="text"/></div>
<div class='input'><a id="explore" href="#">Explore</a></div>
</form>
</div>
</div>
<div id="message-bar" class="swagger-ui-wrap">&nbsp;</div>
<div id="swagger-ui-container" class="swagger-ui-wrap"></div>
</body>
</html>

View File

Before

Width:  |  Height:  |  Size: 6.0 KiB

After

Width:  |  Height:  |  Size: 6.0 KiB

View File

Before

Width:  |  Height:  |  Size: 6.5 KiB

After

Width:  |  Height:  |  Size: 6.5 KiB

View File

Before

Width:  |  Height:  |  Size: 7.1 KiB

After

Width:  |  Height:  |  Size: 7.1 KiB

View File

Before

Width:  |  Height:  |  Size: 556 B

After

Width:  |  Height:  |  Size: 556 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

View File

Before

Width:  |  Height:  |  Size: 9.2 KiB

After

Width:  |  Height:  |  Size: 9.2 KiB

View File

Before

Width:  |  Height:  |  Size: 8.1 KiB

After

Width:  |  Height:  |  Size: 8.1 KiB

View File

Before

Width:  |  Height:  |  Size: 3.5 KiB

After

Width:  |  Height:  |  Size: 3.5 KiB

View File

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 18 KiB

View File

Before

Width:  |  Height:  |  Size: 4.2 KiB

After

Width:  |  Height:  |  Size: 4.2 KiB

View File

Before

Width:  |  Height:  |  Size: 4.4 KiB

After

Width:  |  Height:  |  Size: 4.4 KiB

View File

Before

Width:  |  Height:  |  Size: 4.7 KiB

After

Width:  |  Height:  |  Size: 4.7 KiB

View File

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

180
src/main/app/i18n/ar.js Normal file
View File

@@ -0,0 +1,180 @@
{
"global" : {
"save" : "حفظ",
"cancel" : "إلغاء",
"delete" : "حذف",
"required" : "مطلوب",
"download" : "تحميل",
"link" : "رابط",
"bookmark" : "مرجعية",
"close" : "أغلق",
"tags" : "Tags "
},
"tree" : {
"subscribe" : "اشترك",
"import" : "استورد",
"new_category" : "فئة جديدة",
"all" : "الكل",
"starred" : "المفضل"
},
"subscribe" : {
"feed_url" : "رابط المغذي",
"feed_name" : "اسم المغذي",
"category" : "فئة"
},
"import" : {
"google_reader_prefix" : "اسمح لي استيرا المغذيات الخاص بك",
"google_reader_suffix" : "حساب.",
"google_download" : "بدلا من ذلك، يمكنك تحميل ملف subscriptions.xml الخاص بك.",
"google_download_link" : "تحميل من هنا.",
"xml_file" : "ملف OPML"
},
"new_category" : {
"name" : "الإ سم",
"parent" : "الأصل"
},
"toolbar" : {
"unread" : "غير مقروء",
"all" : "الكل",
"previous_entry" : "الإدخال السابقة",
"next_entry" : "الإدخال التالي",
"refresh" : "إعادة انعاش",
"refresh_all" : "Force refresh all my feeds ",
"sort_by_asc_desc" : "الترتيب حسب التاريخ تصاعدي / تنازلي",
"titles_only" : "العناوين فقط",
"expanded_view" : "عرض موسع",
"mark_all_as_read" : "اعتبر الكل مقروء",
"mark_all_older_12_hours" : "Items older than 12 hours ",
"mark_all_older_day" : "العناصر الأقدم من يوم",
"mark_all_older_week" : "العناصر الأقدم من أسبوع",
"mark_all_older_two_weeks" : "العناصر الأقدم من أسبوعين",
"settings" : "إعدادات",
"profile" : "الملف الشخصي",
"admin" : "المشرف",
"about" : "معلومات حول",
"logout" : "تسجيل الخروج",
"donate" : "تبرع"
},
"view" : {
"entry_source" : "from ",
"entry_author" : "by ",
"error_while_loading_feed" : "خطأ أثناء تحميل هذه التغذية",
"keep_unread" : "إبقائه غير مقروء",
"no_unread_items" : "لا يحتوي عناصر غير مقروءة.",
"mark_up_to_here" : "Mark as read up to here ",
"search_for" : "searching for: ",
"no_search_results" : "No match found for the requested keywords "
},
"feedsearch" : {
"hint" : "أدخل اشتراك ...",
"help" : "استخدام مفتاح العودة للاختيار ومفاتيح الأسهم للتنقل.",
"result_prefix" : "الاشتراكات الخاصة بك:"
},
"settings" : {
"general" : {
"value" : "General",
"language" : "Language",
"language_contribute" : "Contribute with translations",
"show_unread" : "Show feeds and categories with no unread entries",
"social_buttons" : "Show social sharing buttons",
"scroll_marks" : "In expanded view, scrolling through entries mark them as read"
},
"appearance" : "Appearance",
"scroll_speed" : "Scrolling speed when navigating between entries (in milliseconds) ",
"scroll_speed_help" : "set to 0 to disable ",
"theme" : "Theme",
"submit_your_theme" : "Submit your theme",
"custom_css" : "Custom CSS"
},
"details" : {
"feed_details" : "Feed details",
"url" : "URL",
"website" : "Website ",
"name" : "Name",
"category" : "Category",
"position" : "Position",
"last_refresh" : "Last refresh",
"message" : "Last refresh message ",
"next_refresh" : "Next refresh",
"queued_for_refresh" : "Queued for refresh",
"feed_url" : "Feed URL",
"generate_api_key_first" : "Generate an API key in your profile first.",
"unsubscribe" : "Unsubscribe",
"unsubscribe_confirmation" : "Are you sure you want to unsubscribe from this feed? ",
"delete_category_confirmation" : "Are you sure you want to delete this category? ",
"category_details" : "Category details",
"tag_details" : "Tag details ",
"parent_category" : "Parent category"
},
"profile" : {
"user_name" : "User name",
"email" : "E-mail",
"change_password" : "Change password",
"confirm_password" : "Confirm password",
"minimum_6_chars" : "Minimum 6 characters",
"passwords_do_not_match" : "Passwords do not match",
"api_key" : "API key",
"api_key_not_generated" : "Not generated yet",
"generate_new_api_key" : "Generate new API key",
"generate_new_api_key_info" : "Changing password will generate a new API key",
"opml_export" : "OPML export",
"delete_account" : "Delete account",
"delete_account_confirmation" : "Delete your acount? There's no turning back! "
},
"about" : {
"rest_api" : {
"value" : "REST API",
"line1" : "CommaFeed is built on top of JAX-RS and AngularJS. As such, a REST API is available.",
"link_to_documentation" : "Link to the documentation."
},
"keyboard_shortcuts" : "Keyboard shortcuts",
"version" : "CommaFeed version ",
"line1_prefix" : "CommaFeed is an open-source project. Sources are hosted on ",
"line1_suffix" : ".",
"line2_prefix" : "If you encounter an issue, please report it on the issues page of the ",
"line2_suffix" : " project.",
"line3" : "If you like this project, please consider a donation to support the developer and help cover the costs of keeping this website online.",
"line4" : "For those of you who prefer bitcoin, here is the address",
"goodies" : {
"value" : "Goodies",
"android_app" : "Android app ",
"subscribe_url" : "Subscribe URL",
"chrome_extension" : "Chrome extension",
"firefox_extension" : "Firefox extension",
"opera_extension" : "Opera extension",
"subscribe_bookmarklet" : "Add subscription bookmarklet (click)",
"subscribe_bookmarklet_asc" : "Oldest first ",
"subscribe_bookmarklet_desc" : "Newest first ",
"next_unread_bookmarklet" : "Next unread item bookmarklet (drag to bookmark bar)"
},
"translation" : {
"value" : "Translation",
"message" : "We need your help to translate CommaFeed.",
"link" : "See how to contribute with translations."
},
"announcements" : "Announcements",
"shortcuts" : {
"mouse_middleclick" : "mouse middleclick",
"open_next_entry" : "open next entry",
"open_previous_entry" : "open previous entry",
"spacebar" : "space/shift+space ",
"move_page_down_up" : "moves the page down/up ",
"focus_next_entry" : "set focus on next entry without opening it",
"focus_previous_entry" : "set focus on previous entry without opening it",
"open_next_feed" : "open next feed or category",
"open_previous_feed" : "open previous feed or category",
"open_close_current_entry" : "open/close current entry",
"open_current_entry_in_new_window" : "open current entry in a new window",
"open_current_entry_in_new_window_background" : "open current entry in a new window in the background",
"star_unstar" : "star/unstar current entry",
"mark_current_entry" : "mark as read/unread current entry",
"mark_all_as_read" : "mark all entries as read",
"open_in_new_tab_mark_as_read" : "open entry in new tab and mark as read",
"fullscreen" : "toggle full screen mode ",
"font_size" : "increase/decrease font size of the current entry ",
"go_to_all" : "go to the All view ",
"go_to_starred" : "go to the Starred view ",
"feed_search" : "navigate to a subscription by entering the subscription name"
}
}
}

180
src/main/app/i18n/ca.js Normal file
View File

@@ -0,0 +1,180 @@
{
"global" : {
"save" : "Desa",
"cancel" : "Cancel·la",
"delete" : "Esborra",
"required" : "Requerit",
"download" : "Descarrega",
"link" : "Enllaç",
"bookmark" : "Adreça d'interès",
"close" : "Tancar",
"tags" : "Etiquetes"
},
"tree" : {
"subscribe" : "Subscriure",
"import" : "Importa",
"new_category" : "Nova categoria",
"all" : "Tot",
"starred" : "Destacats"
},
"subscribe" : {
"feed_url" : "URL del canal",
"feed_name" : "Nom del canal",
"category" : "Categoria"
},
"import" : {
"google_reader_prefix" : "Importaré els canals del teu",
"google_reader_suffix" : " compte.",
"google_download" : "O be, carrega el teu fitxer subscriptions.xml.",
"google_download_link" : "Descarrega'l d'aquí.",
"xml_file" : "Fitxer OPML "
},
"new_category" : {
"name" : "Nom",
"parent" : "Arrel"
},
"toolbar" : {
"unread" : "Per llegir",
"all" : "Tots",
"previous_entry" : "Entrada prèvia",
"next_entry" : "Entrada següent",
"refresh" : "Actualitzar",
"refresh_all" : "Força l'actualització de tots els canals",
"sort_by_asc_desc" : "Ordenar per data asc/desc",
"titles_only" : "Només títols",
"expanded_view" : "Vista ampliada",
"mark_all_as_read" : "Marcar tots llegits",
"mark_all_older_12_hours" : "Ítems més vells de 12 hores",
"mark_all_older_day" : "Ítems més vells d'un dia",
"mark_all_older_week" : "Ítems més vells d'una setmana",
"mark_all_older_two_weeks" : "Ítems més vells de dues setmanes",
"settings" : "Configuració",
"profile" : "Perfil",
"admin" : "Admin",
"about" : "Quant a",
"logout" : "Desconnecta't",
"donate" : "Donació"
},
"view" : {
"entry_source" : "de ",
"entry_author" : "per ",
"error_while_loading_feed" : "Error carregant el canal",
"keep_unread" : "Conserva com a no llegit",
"no_unread_items" : "no té ítems sense llegir.",
"mark_up_to_here" : "Marcar com a llegit fins aquí",
"search_for" : "cercant: ",
"no_search_results" : "No hi ha coincidències per les paraules clau sol·licitades"
},
"feedsearch" : {
"hint" : "Introdueix una subscripció...",
"help" : "Utilitza la tecla de retorn per seleccionar i les tecles de cursor per navegar.",
"result_prefix" : "Les teves subscripcions:"
},
"settings" : {
"general" : {
"value" : "General",
"language" : "Idioma",
"language_contribute" : "Contribueix amb traduccions",
"show_unread" : "Mostrar canals i categories amb entrades sense llegir",
"social_buttons" : "Mostrar botons per compartir en xarxes socials",
"scroll_marks" : "A la vista ampliada si et desplaces per les entrades les marques com a llegides"
},
"appearance" : "Aparença",
"scroll_speed" : "Velocitat de desplaçament quan navegues entre entrades (en mil·lisegons)",
"scroll_speed_help" : "Fixa a 0 per desactivar",
"theme" : "Tema",
"submit_your_theme" : "Envia un tema",
"custom_css" : "CSS personalitzat"
},
"details" : {
"feed_details" : "Detalls del canal",
"url" : "URL",
"website" : "Lloc web",
"name" : "Nom",
"category" : "Categoria",
"position" : "Posició",
"last_refresh" : "Darrera actualització",
"message" : "Darrer missatge d'actualització",
"next_refresh" : "Propera actualització",
"queued_for_refresh" : "A la cua d'actualització",
"feed_url" : "URL del canal",
"generate_api_key_first" : "Abans cal que generis una clau API en el teu perfil.",
"unsubscribe" : "Cancel·la la subscripció",
"unsubscribe_confirmation" : "Segur que vols cancel·lar la subscripció del canal?",
"delete_category_confirmation" : "Segur que vols esborrar la categoria?",
"category_details" : "Detalls de la categoria",
"tag_details" : "Detalls de l'etiqueta",
"parent_category" : "Categoria arrel"
},
"profile" : {
"user_name" : "Nom d'usuari",
"email" : "Adreça electrònica",
"change_password" : "Canvia la contrasenya ",
"confirm_password" : "Confirma la contrasenya",
"minimum_6_chars" : "Mínim de 6 caracters",
"passwords_do_not_match" : "Les contrasenyes no coincideixen",
"api_key" : "Clau API ",
"api_key_not_generated" : "Encara no s'ha generat",
"generate_new_api_key" : "Genera una nova clau API ",
"generate_new_api_key_info" : "El canvi de contrasenya generarà una nova clau API",
"opml_export" : "Exporta OPML ",
"delete_account" : "Esborra el compte ",
"delete_account_confirmation" : "Vols esborrar el teu compte? No ho podràs desfer!"
},
"about" : {
"rest_api" : {
"value" : "REST API",
"line1" : "CommaFeed funciona amb JAX-RS i AngularJS. Per tant, té disponible una API REST.",
"link_to_documentation" : "Enllaç a la documentació."
},
"keyboard_shortcuts" : "Dreceres de teclat",
"version" : "Versió de CommaFeed ",
"line1_prefix" : "CommaFeed és un projecte de codi font obert. El codi font és hostatjat a ",
"line1_suffix" : ".",
"line2_prefix" : "Si trobes un problema, si us plau informa'n a la pàgina de problemes del ",
"line2_suffix" : " projecte.",
"line3" : "Si t'agrada el projecte, pensa en fer un donatiu per recolzar el desenvolupador i per ajudar amb les despeses de l'hostatge del lloc web. ",
"line4" : "I pels que preferiu bitcoin, aquí teniu l'adreça",
"goodies" : {
"value" : "Afegitons",
"android_app" : "App Android",
"subscribe_url" : "URL de subscripció",
"chrome_extension" : "Extensió del Chrome ",
"firefox_extension" : "Extensió del Firefox",
"opera_extension" : "Extensió de l'Opera",
"subscribe_bookmarklet" : "Afegeix bookmarklet de subscripció (clica)",
"subscribe_bookmarklet_asc" : "Primer els vells",
"subscribe_bookmarklet_desc" : "Primer els nous",
"next_unread_bookmarklet" : "Bookmarklet del proper ítem sense llegir (arrosega a la barra d'adreces d'interès)"
},
"translation" : {
"value" : "Traducció",
"message" : "Necessitem la teva ajuda per traduir CommaFeed.",
"link" : "Informació per contribuir amb traduccions."
},
"announcements" : "Anuncis",
"shortcuts" : {
"mouse_middleclick" : "Clic amb el botó del mig",
"open_next_entry" : "obrir entrada següent",
"open_previous_entry" : "obrir entrada prèvia",
"spacebar" : "espai/majúscula+espai",
"move_page_down_up" : "mou la pàgina avall/amunt",
"focus_next_entry" : "fixa el focus en l'entrada següent entrada sense obrir-la",
"focus_previous_entry" : "fixa el focus en l'entrada prèvia sense obrir-la",
"open_next_feed" : "obrir canal o categoria següent",
"open_previous_feed" : "obrir canal o categoria prèvia",
"open_close_current_entry" : "obre/tanca entrada actual",
"open_current_entry_in_new_window" : "obrir entrada actual en una finestra nova",
"open_current_entry_in_new_window_background" : "obrir entrada actual en una finestra nova en segon pla",
"star_unstar" : "destacar/treure destacat a l'entrada actual ",
"mark_current_entry" : "marcar com a llegida/no llegida l'entrada actual",
"mark_all_as_read" : "marcar totes les entrades com a llegides",
"open_in_new_tab_mark_as_read" : "obrir entrada en una pestanya nova i marcar com a llegida ",
"fullscreen" : "commutar el mode de pantalla completa",
"font_size" : "incrementar/reduir la mida de la font de l'entrada actual",
"go_to_all" : "anar a la vista de Tot ",
"go_to_starred" : "anar a la vista de Destacats",
"feed_search" : "navegar a una subscripció introduint-ne el nom"
}
}
}

180
src/main/app/i18n/cs.js Normal file
View File

@@ -0,0 +1,180 @@
{
"global" : {
"save " : " Uložit",
"cancel " : " Zrušit",
"delete " : " Odstranit",
"required " : " Povinné",
"download " : " Stáhnout",
"link " : " Odkaz",
"bookmark " : " Záložky",
"close " : " Zavřít",
"tags" : "Tags "
},
"tree" : {
"subscribe " : " Nový odběr",
"import " : " Importovat",
"new_category " : " Nová kategorie",
"all " : " Vše",
"starred " : " Oblíbené"
},
"subscribe" : {
"feed_url " : " URL RSS zdroje",
"feed_name " : " Název",
"category " : " Kategorie"
},
"import" : {
"google_reader_prefix " : " Importujte si RSS zdroje s vašeho",
"google_reader_suffix " : " účtu.",
"google_download " : " Anebo můžete nahrát váš subscriptions.xml soubor",
"google_download_link " : " Stáhnout jej múžete odtud",
"xml_file" : "Soubor OPML"
},
"new_category" : {
"name " : " Název",
"parent " : " Hlavní"
},
"toolbar" : {
"unread " : " Nepřečtené ",
"all " : " Vše",
"previous_entry " : " Předchozí položka",
"next_entry " : " Následující položka",
"refresh " : " Obnovit",
"refresh_all" : "Force refresh all my feeds ",
"sort_by_asc_desc " : " Seřadit podle nejnovějšího/nejstaršího",
"titles_only " : " Zobrazit jenom titulky",
"expanded_view " : " Rozšířený náhled",
"mark_all_as_read " : " Označit vše jako přečtené",
"mark_all_older_12_hours" : "Items older than 12 hours ",
"mark_all_older_day " : " Položky starší než den",
"mark_all_older_week " : " Položky starší než týden",
"mark_all_older_two_weeks " : " Položky starší než dva týdny",
"settings " : " Nastavení",
"profile " : " Profil",
"admin " : " Admin",
"about " : " O CommaFeed",
"logout " : " Odhlásit",
"donate " : " Donate"
},
"view" : {
"entry_source " : " s",
"entry_author " : " od",
"error_while_loading_feed " : " Během načítání se vyskytla chyba",
"keep_unread " : " Označit jako nepřečtené",
"no_unread_items " : " nemá žádné nepřečtené položky.",
"mark_up_to_here " : " Až potud označit položky jako přečtené",
"search_for" : "searching for: ",
"no_search_results" : "No match found for the requested keywords "
},
"feedsearch" : {
"hint " : " Zadejte název pro nový odběr ...",
"help " : " Použijte klávesu enter pro výběr a směrové klávesy pro navigaci.",
"result_prefix " : " Vaše odebírání:"
},
"settings" : {
"general" : {
"value " : " Všeobecné",
"language " : " Jazyk",
"language_contribute " : " Zapojte se a pomozte z překladem",
"show_unread " : " Zobrazit položky a kategorie z přečtenými položkami",
"social_buttons " : " Zobrazit možnosti sdílení",
"scroll_marks " : " Skrolování v rozšířeném náhledu označí položky jako přečtené"
},
"appearance " : " Vzhled",
"scroll_speed" : "Scrolling speed when navigating between entries (in milliseconds) ",
"scroll_speed_help" : "set to 0 to disable ",
"theme " : " Motiv",
"submit_your_theme " : " Nahrát vlastní motiv",
"custom_css " : " Vlastní motiv (CSS)"
},
"details" : {
"feed_details " : " Detail odběru",
"url " : " URL odkaz",
"website " : " Web stránka",
"name " : " Název",
"category " : " Kategorie",
"position " : " Pozice",
"last_refresh " : " Poslední obnovení",
"message" : "Last refresh message ",
"next_refresh " : " Nadcházející obnovení",
"queued_for_refresh " : " Ve frontě na obnovu",
"feed_url " : " URL RSS zdroje",
"generate_api_key_first " : " Vygenerujte si API klíč na stránce vašeho profilu.",
"unsubscribe " : " Odhlásit odběr.",
"unsubscribe_confirmation" : "Are you sure you want to unsubscribe from this feed? ",
"delete_category_confirmation" : "Are you sure you want to delete this category? ",
"category_details " : " Detail kategorie",
"tag_details" : "Tag details ",
"parent_category " : " Hlavní kategorie"
},
"profile" : {
"user_name " : " Uživatelské jméno",
"email " : " E-mail",
"change_password " : " Změnit heslo",
"confirm_password " : " Potvrdit heslo",
"minimum_6_chars " : " Minimum je 6 znaků",
"passwords_do_not_match " : " Hesla se neshodují",
"api_key " : " API klíč",
"api_key_not_generated " : " Není vygenerován",
"generate_new_api_key " : " Vygenerovat nový API klíč",
"generate_new_api_key_info " : " Změnou hesla vygenerujete nový API klíč",
"opml_export " : " exportovat do formátu OPML",
"delete_account " : " Odstranit účet",
"delete_account_confirmation" : "Delete your acount? There's no turning back! "
},
"about" : {
"rest_api" : {
"value " : " REST API",
"line1 " : " CommaFeed je postaven na JAX-RS a AngularJS. Dostupná je REST API.",
"link_to_documentation " : " Dokumentace."
},
"keyboard_shortcuts " : " Klávesové zkratky",
"version" : "CommaFeed version ",
"line1_prefix " : " CommaFeed je open source projekt. Zdrojový kód je dostupný na",
"line1_suffix " : ".",
"line2_prefix " : " V případě, že narazíte na problém, ohlaste ho prosím na stránkách",
"line2_suffix " : " projektu.",
"line3 " : " V případě, že se vám líbí CommaFeed, zvažte prosím finanční příspěvek. Podpoříte tak budoucí vývoj a také pomůžete udržet web stránky online.",
"line4 " : " Bitcoin",
"goodies" : {
"value " : " Rozšíření",
"android_app " : " Aplikace pro zařízení Android",
"subscribe_url " : " URL",
"chrome_extension " : " Rozšíření pro prohlížeč Chrome",
"firefox_extension " : " Rozšíření pro prohlížeč Firefox",
"opera_extension " : " Rozšíření pro prohlížeč Opera",
"subscribe_bookmarklet " : " Bookmarklet (klikněte)",
"subscribe_bookmarklet_asc " : " Seřadit od nejstaršího k nejnovějšímu",
"subscribe_bookmarklet_desc " : " Seřadit od nejnovějšího k nejstaršímu",
"next_unread_bookmarklet " : " Záložka následující nepřečtené položky (protáhnout k záložkám)"
},
"translation" : {
"value " : " Překlad",
"message " : " Pomozte z překladem CommaFeed.",
"link " : " Zjistěte jak můžete pomoct s překladem."
},
"announcements " : " Oznámení",
"shortcuts" : {
"mouse_middleclick " : " klik prostředním tlačítkem",
"open_next_entry " : " zobrazit následující položku",
"open_previous_entry " : " zobrazit předchozí položku",
"spacebar " : " space / shift + mezerník",
"move_page_down_up " : " pohyb směrem dolů/nahoru",
"focus_next_entry " : " přesun na následující položku bez jejího zobrazení",
"focus_previous_entry " : " přesun na předchozí položku bez jejího zobrazení",
"open_next_feed " : " přesun na následující odběr/kategorii",
"open_previous_feed " : " přesun na předchozí odběr/kategorii",
"open_close_current_entry " : " zobrazit/zavřít vybranou položku",
"open_current_entry_in_new_window " : " otevřít vybranou položku v novém okně",
"open_current_entry_in_new_window_background " : " otevřít vybranou položku na pozadí",
"star_unstar " : " označit vybranou položku jako oblíbenou/neoblíbenou",
"mark_current_entry " : " označit vybrané položky jako přečtené/nepřečtené",
"mark_all_as_read " : " označit všechny položky jako přečtené!",
"open_in_new_tab_mark_as_read " : " otevřít položku na nové kartě a označit ji jako přečtenou",
"fullscreen " : " přepnout zobrazení na celou obrazovku",
"font_size " : " zvětšit/zmenšit velikost písma pro vybranou položku",
"go_to_all" : "go to the All view ",
"go_to_starred" : "go to the Starred view ",
"feed_search " : " přejít na odběr vložením jeho názvu"
}
}
}

180
src/main/app/i18n/cy.js Normal file
View File

@@ -0,0 +1,180 @@
{
"global" : {
"save" : "Cadw",
"cancel" : "Diddymu",
"delete" : "Dileu",
"required" : "Gofynnol",
"download" : "Lawrlwytho",
"link" : "Dolen",
"bookmark" : "Nod tudalen",
"close" : "Cau",
"tags" : "Tags "
},
"tree" : {
"subscribe" : "Tanysgrifio",
"import" : "Mewnforio",
"new_category" : "Categori newydd",
"all" : "Popeth",
"starred" : "Serennwyd"
},
"subscribe" : {
"feed_url" : "URL Ffrwd",
"feed_name" : "Enw Ffrwd",
"category" : "Categori"
},
"import" : {
"google_reader_prefix" : "Gad i mi fewnforio dy ffrydiau o dy ",
"google_reader_suffix" : " gyfrif.",
"google_download" : "Fel arall, lanlwytha dy ffeil tanysgrifiadau.xml",
"google_download_link" : "Lawrlwytha fe yma.",
"xml_file" : "Ffeil OPML"
},
"new_category" : {
"name" : "Enw",
"parent" : "Rhiant"
},
"toolbar" : {
"unread" : "Heb ddarllen",
"all" : "Popeth",
"previous_entry" : "Eitem blaenorol",
"next_entry" : "Eitem nesaf",
"refresh" : "Adnewyddu",
"refresh_all" : "Gorfodi ail-lwytho pob ffrwd",
"sort_by_asc_desc" : "Trefnu yn ôl dyddiad",
"titles_only" : "Teitlau yn unig",
"expanded_view" : "Golwg estynedig",
"mark_all_as_read" : "Nodi'r cyfan fel wedi ei ddarllen",
"mark_all_older_12_hours" : "Items older than 12 hours ",
"mark_all_older_day" : "Eitemau hyn na diwrnod",
"mark_all_older_week" : "Eitemau hyn nag wythnos",
"mark_all_older_two_weeks" : "Eitemau hyn na phythefnos",
"settings" : "Gosodiadau",
"profile" : "Proffil",
"admin" : "Gweinyddwr",
"about" : "Ynghylch",
"logout" : "Allgofnodi",
"donate" : "Rhoddi"
},
"view" : {
"entry_source" : "o",
"entry_author" : "gan",
"error_while_loading_feed" : "Gwall wrth lwytho'r ffrwd",
"keep_unread" : "Parhau i'w nodi fel heb ei ddarllen",
"no_unread_items" : ": Dim eitemau heb eu darllen ",
"mark_up_to_here" : "Nodi'r rhai hyd yma fel wedi eu darllen",
"search_for" : "yn chwilio am:",
"no_search_results" : "Ni chanfuwyd unrhyw beth gyda'r geiriau hynny"
},
"feedsearch" : {
"hint" : "Rho'r tanysgrifiad...",
"help" : "Defnyddia'r dychwelwr i ddethol a saethau i lywio",
"result_prefix" : "Dy danysgrifiadau:"
},
"settings" : {
"general" : {
"value" : "Cyffredinol",
"language" : "Iaith",
"language_contribute" : "Cyfrannu drwy gyfieithu",
"show_unread" : "Dangos ffrydiau a chategoriau gyda dim eitemau heb eu darllen",
"social_buttons" : "Dangos botymau rhannu",
"scroll_marks" : "Marcio eitemau fel wedi eu darllen wrth sgrolio drwyddynt yn y golwg estynedig "
},
"appearance" : "Golwg",
"scroll_speed" : "Scrolling speed when navigating between entries (in milliseconds) ",
"scroll_speed_help" : "set to 0 to disable ",
"theme" : "Thema",
"submit_your_theme" : "Cyflwyna dy thema",
"custom_css" : "CSS wedi'i addasu"
},
"details" : {
"feed_details" : "Manylion ffrwd",
"url" : "URL",
"website" : "Gwefan",
"name" : "Enw",
"category" : "Categori",
"position" : "Safle",
"last_refresh" : "Adnewyddiad diwethaf",
"message" : "Neges adnewyddiad diwethaf",
"next_refresh" : "Adnewyddiad nesaf",
"queued_for_refresh" : "Ciwiwyd i'w adnewyddu",
"feed_url" : "URL Ffrwd",
"generate_api_key_first" : "Rhaid creu allwedd API yn dy broffil yn gyntaf.",
"unsubscribe" : "Dad-danysgrifio",
"unsubscribe_confirmation" : "Are you sure you want to unsubscribe from this feed? ",
"delete_category_confirmation" : "Are you sure you want to delete this category? ",
"category_details" : "Manylion categori",
"tag_details" : "Tag details ",
"parent_category" : "Categori rhiant"
},
"profile" : {
"user_name" : "Enw defnyddiwr",
"email" : "E-bost",
"change_password" : "Newid cyfrinair",
"confirm_password" : "Cadarnhau cyfrinair",
"minimum_6_chars" : "Isafswm 6 nod",
"passwords_do_not_match" : "Mae'r cyfrineiriau yn wahanol",
"api_key" : "Allwedd API",
"api_key_not_generated" : "Heb ei gynhyrchu eto",
"generate_new_api_key" : "Creu allwedd API newydd",
"generate_new_api_key_info" : "Mae newid cyfrinair yn creu allwedd API newydd",
"opml_export" : "Allforio OPML",
"delete_account" : "Dileu cyfrif",
"delete_account_confirmation" : "Delete your acount? There's no turning back! "
},
"about" : {
"rest_api" : {
"value" : "REST API",
"line1" : "Adeiladir CommaFeed ar JAX-RS ac AngularJS. Mae REST API ar gael.",
"link_to_documentation" : "Dolen i'r ddogfennaeth."
},
"keyboard_shortcuts" : "Llwybr byr bysellfwrdd",
"version" : "Fersiwn CommaFeed: ",
"line1_prefix" : "Mae CommaFeed yn prosiect cod agored. Mae'r cod ar ",
"line1_suffix" : ".",
"line2_prefix" : "Os wyt ti'n ffeindio problem, plîs gad wybod amdano ar dudalen problemau o'r ",
"line2_suffix" : " prosiect.",
"line3" : "Os wyt ti'n hoffi'r prosiect, plîs ystyria cyfrannu i gefnogi'r datblygwr a helpu gyda chynnal a chadw'r wefan hon.",
"line4" : "I'r rhai sy'n hoff o Bitcoin, dyma'r cyfeiriad",
"goodies" : {
"value" : "Goodies",
"android_app" : "Ap Android",
"subscribe_url" : "URL Tanysgrifio",
"chrome_extension" : "estyniad Chrome",
"firefox_extension" : "estyniad Firefox",
"opera_extension" : "estyniad Opera",
"subscribe_bookmarklet" : "Ychwanegu botwm tanysgrifio ",
"subscribe_bookmarklet_asc" : "Hynaf yn gyntaf",
"subscribe_bookmarklet_desc" : "Diweddaraf yn gyntaf",
"next_unread_bookmarklet" : "Botwm eitem nesaf heb ei ddarllen (llusgo i far nodau)"
},
"translation" : {
"value" : "Cyfieithiad",
"message" : "Rydym angen dy help i gyfieithu CommaFeed.",
"link" : "Gweler sut i gyfrannu i gyfieithiadau."
},
"announcements" : "Datganiadau",
"shortcuts" : {
"mouse_middleclick" : "clic botwm canol llygoden",
"open_next_entry" : "agor yr eitem nesaf",
"open_previous_entry" : "agor yr eitem flaenorol",
"spacebar" : "space/shift+space",
"move_page_down_up" : "symud y tudalen i lawr/fyny",
"focus_next_entry" : "newid ffocws i'r eitem nesaf heb ei hagor",
"focus_previous_entry" : "newid ffocws i'r eitem flaenorol heb ei hagor",
"open_next_feed" : "agor y ffrwd neu gategori nesaf",
"open_previous_feed" : "agor y ffrwd neu gategori blaenorol",
"open_close_current_entry" : "agor/cau yr eitem gyfredol",
"open_current_entry_in_new_window" : "agor yr eitem gyfredol mewn ffenestr newydd",
"open_current_entry_in_new_window_background" : "agor yr eitem gyfredol mewn ffenestr newydd yn y cefndir",
"star_unstar" : "serennu/dadserennu'r eitem gyfredol",
"mark_current_entry" : "marcio'r eitem gyfredol fel wedi/heb ei ddarllen",
"mark_all_as_read" : "marcio popeth fel wedi ei ddarllen",
"open_in_new_tab_mark_as_read" : "agor yr eitem mewn tab newydd a'i farcio fel wedi ei ddarllen",
"fullscreen" : "toglo'r golwg sgrin lawn",
"font_size" : "cynyddu/lleihau maint ffont yr eitem gyfredol",
"go_to_all" : "newid i olwg 'Popeth'",
"go_to_starred" : "newid i olwg 'Serennwyd'",
"feed_search" : "llywio i danysgrifiad gan roi ei enw mewn"
}
}
}

180
src/main/app/i18n/da.js Normal file
View File

@@ -0,0 +1,180 @@
{
"global" : {
"save" : "Gem",
"cancel" : "Annuller",
"delete" : "Slet",
"required" : "Påkrævet",
"download" : "Hent",
"link" : "Link",
"bookmark" : "Bogmærke",
"close" : "Luk",
"tags" : "Tags "
},
"tree" : {
"subscribe" : "Abonner",
"import" : "Importer",
"new_category" : "Ny kategori",
"all" : "Alle",
"starred" : "Favoritter"
},
"subscribe" : {
"feed_url" : "URL for abonnement ",
"feed_name" : "Abonnementsnavn",
"category" : "Kategori"
},
"import" : {
"google_reader_prefix" : "Lad mig importere dine abonnementer fra ",
"google_reader_suffix" : " konto.",
"google_download" : "Alternativt, upload din subscriptions.xml fil.",
"google_download_link" : "Hent den herfra.",
"xml_file" : "OPML fil"
},
"new_category" : {
"name" : "Navn",
"parent" : "Overordnet"
},
"toolbar" : {
"unread" : "Ulæst",
"all" : "Alle",
"previous_entry" : "Forrige artikkel",
"next_entry" : "Næste artikkel",
"refresh" : "Opdater",
"refresh_all" : "Force refresh all my feeds ",
"sort_by_asc_desc" : "Sorter efter dato ny/gammel",
"titles_only" : "Kun titler",
"expanded_view" : "Udvidet visning",
"mark_all_as_read" : "Marker alle som læst",
"mark_all_older_12_hours" : "Items older than 12 hours ",
"mark_all_older_day" : "Artikler ældere end én dag",
"mark_all_older_week" : "Artikler ældere end én uge",
"mark_all_older_two_weeks" : "Artikler ældere end to uger",
"settings" : "Indstillinger",
"profile" : "Profil",
"admin" : "Admin",
"about" : "Om",
"logout" : "Log ud",
"donate" : "Donér"
},
"view" : {
"entry_source" : "from ",
"entry_author" : "af ",
"error_while_loading_feed" : "Fejl under indlæsning af artikel",
"keep_unread" : "Behold som ulæst",
"no_unread_items" : "har ingen ulæste artikler.",
"mark_up_to_here" : "Mark as read up to here ",
"search_for" : "searching for: ",
"no_search_results" : "No match found for the requested keywords "
},
"feedsearch" : {
"hint" : "Angiv et abonnement...",
"help" : "Brug enter tasten til at vælge og piltasterne til at navigere.",
"result_prefix" : "Dine abonnementer:"
},
"settings" : {
"general" : {
"value" : "Generelt",
"language" : "Sprog",
"language_contribute" : "Kontribuer med en oversættelse",
"show_unread" : "Vis abonnomenter og kategorier med læste artikler",
"social_buttons" : "Vis delingsknapper",
"scroll_marks" : "I udvidet visning, marker artikler som læste når der rulles forbi dem"
},
"appearance" : "Udseende",
"scroll_speed" : "Scrolling speed when navigating between entries (in milliseconds) ",
"scroll_speed_help" : "set to 0 to disable ",
"theme" : "Tema",
"submit_your_theme" : "Indsend dit tema",
"custom_css" : "Brugerdefineret CSS"
},
"details" : {
"feed_details" : "Abonnementsdetaljer",
"url" : "URL",
"website" : "Website ",
"name" : "Navn",
"category" : "Kategori",
"position" : "Position",
"last_refresh" : "Sidste opdatering",
"message" : "Last refresh message ",
"next_refresh" : "Næste opdatering",
"queued_for_refresh" : "I kø til opdatering",
"feed_url" : "URL for abonnement",
"generate_api_key_first" : "Generer en API nøgle i din profil først.",
"unsubscribe" : "Afmeld abonnement",
"unsubscribe_confirmation" : "Are you sure you want to unsubscribe from this feed? ",
"delete_category_confirmation" : "Are you sure you want to delete this category? ",
"category_details" : "Kategori detaljer",
"tag_details" : "Tag details ",
"parent_category" : "Overordnet kategori"
},
"profile" : {
"user_name" : "Brugernavn",
"email" : "E-mail",
"change_password" : "Skift adgangskode",
"confirm_password" : "Bekræft adgangskode",
"minimum_6_chars" : "Minimum 6 karakter",
"passwords_do_not_match" : "Adgangskoderne er ikke ens",
"api_key" : "API nøgle",
"api_key_not_generated" : "Ikke genereret endnu",
"generate_new_api_key" : "Generer ny API nøgle",
"generate_new_api_key_info" : "Ændring af adgangskode vil generere en ny API nøgle",
"opml_export" : "OPML eksport",
"delete_account" : "Slet konto",
"delete_account_confirmation" : "Delete your acount? There's no turning back! "
},
"about" : {
"rest_api" : {
"value" : "REST API",
"line1" : "CommaFeed er bygget oven på JAX-RS og AngularJS. Hvilket gør et REST API tilgængeligt.",
"link_to_documentation" : "Link til dokumentationen."
},
"keyboard_shortcuts" : "Tastaturgenveje",
"version" : "CommaFeed version ",
"line1_prefix" : "CommaFeed er et open-source project. Kildekoden kan findes på ",
"line1_suffix" : ".",
"line2_prefix" : "Hvis du opdager et problem, så rapporter det venligst på ",
"line2_suffix" : " projekt.",
"line3" : "Hvis du syntes om projektet, overvej venligst at donere for at hjælpe udviklerne og dække omkostningerne til drift af hjemmesiden.",
"line4" : "Til dig der foretrækker bitcoin, her er adressen",
"goodies" : {
"value" : "Godter",
"android_app" : "Android app ",
"subscribe_url" : "Abonner URL",
"chrome_extension" : "Chrome udvidelse",
"firefox_extension" : "Firefox udvidelse",
"opera_extension" : "Opera udvidelse",
"subscribe_bookmarklet" : "Tilføj abonnoment bogmærkeprogram (click)",
"subscribe_bookmarklet_asc" : "Oldest first ",
"subscribe_bookmarklet_desc" : "Newest first ",
"next_unread_bookmarklet" : "Næste ulæste artikel bogmærkeprogram (træk til bogmærkebaren)"
},
"translation" : {
"value" : "Oversættelse",
"message" : "Vi har brug for din hjælp til at oversætte CommaFeed.",
"link" : "Se hvordan du kan kontribuere med oversættelser."
},
"announcements" : "Meddelelser",
"shortcuts" : {
"mouse_middleclick" : "mellemmuseklik",
"open_next_entry" : "åben næste artikel",
"open_previous_entry" : "åben forrige artikel",
"spacebar" : "space/shift+space ",
"move_page_down_up" : "moves the page down/up ",
"focus_next_entry" : "sæt fokus på næste arktiel uden at åbne den",
"focus_previous_entry" : "sæt fokus på forrige artikel uden at åbne den",
"open_next_feed" : "åben næste artikel eller kategori",
"open_previous_feed" : "åben forrige artikel eller kategori",
"open_close_current_entry" : "åben/luk nuværende artikel",
"open_current_entry_in_new_window" : "åben nuværende artikel i et nyt vindue",
"open_current_entry_in_new_window_background" : "åben nuværende artikel i et nyt vindue i baggrunden",
"star_unstar" : "marker/fjern favorit",
"mark_current_entry" : "marker som læst/ulæst",
"mark_all_as_read" : "marker alle artikler som læste",
"open_in_new_tab_mark_as_read" : "åben artikel i ny fane og marker som læst",
"fullscreen" : "toggle full screen mode ",
"font_size" : "increase/decrease font size of the current entry ",
"go_to_all" : "go to the All view ",
"go_to_starred" : "go to the Starred view ",
"feed_search" : "naviger til et abonnoment ved at skrive dets navn"
}
}
}

180
src/main/app/i18n/de.js Normal file
View File

@@ -0,0 +1,180 @@
{
"global" : {
"save" : "Speichern",
"cancel" : "Abbrechen",
"delete" : "Löschen",
"required" : "Erforderlich",
"download" : "Herunterladen",
"link" : "Link",
"bookmark" : "Lesezeichen",
"close" : "Schließen",
"tags" : "Tags"
},
"tree" : {
"subscribe" : "Abonnieren",
"import" : "Importieren",
"new_category" : "Neue Kategorie",
"all" : "Alles",
"starred" : "Favoriten"
},
"subscribe" : {
"feed_url" : "Feed Adresse",
"feed_name" : "Feed Name",
"category" : "Kategorie"
},
"import" : {
"google_reader_prefix" : "Importiere die Feeds von deinem",
"google_reader_suffix" : " Konto.",
"google_download" : "Alternativ kannst du eine XML-Datei hochladen.",
"google_download_link" : "Lade sie hier herunter.",
"xml_file" : "OPML Datei"
},
"new_category" : {
"name" : "Name",
"parent" : "Übergeordnet"
},
"toolbar" : {
"unread" : "Ungelesen",
"all" : "Alles",
"previous_entry" : "Vorheriger Artikel",
"next_entry" : "Nächster Artikel",
"refresh" : "Aktualisieren",
"refresh_all" : "Erzwinge Aktualisierung aller Feeds",
"sort_by_asc_desc" : "Nach Datum sortieren (auf-/absteigend)",
"titles_only" : "Nur Überschriften",
"expanded_view" : "Ausgedehnte Ansicht",
"mark_all_as_read" : "Alle Artikel als gelesen markieren",
"mark_all_older_12_hours" : "Artikel älter als 12 Stunden",
"mark_all_older_day" : "Artikel älter als ein Tag",
"mark_all_older_week" : "Artikel älter als eine Woche",
"mark_all_older_two_weeks" : "Artikel älter als zwei Wochen",
"settings" : "Einstellungen",
"profile" : "Profil",
"admin" : "Admin",
"about" : "Über",
"logout" : "Abmelden",
"donate" : "Spenden"
},
"view" : {
"entry_source" : "von",
"entry_author" : "von ",
"error_while_loading_feed" : "Fehler beim Laden des Feeds",
"keep_unread" : "Als ungelesen behalten",
"no_unread_items" : "hat keine ungelesenen Einträge.",
"mark_up_to_here" : "Bis hier alle als gelesen markieren",
"search_for" : "Suche nach:",
"no_search_results" : "Kein Treffer bei der Suche nach den angegebenen Stichworten"
},
"feedsearch" : {
"hint" : "Gib einen Feednamen ein...",
"help" : "Drück Enter zum Auswählen und die Pfeiltasten zum Navigieren.",
"result_prefix" : "Deine Feeds:"
},
"settings" : {
"general" : {
"value" : "Allgemein",
"language" : "Sprache",
"language_contribute" : "Beteilige dich mit Übersetzungen",
"show_unread" : "Zeige Feeds und Kategorien mit ungelesenen Einträgen",
"social_buttons" : "Zeige Buttons zum Teilen von Inhalten über soziale Netzwerke",
"scroll_marks" : "In der ausgedehnten Ansicht werden Artikel beim Scrollen als gelesen markiert"
},
"appearance" : "Aussehen",
"scroll_speed" : "Geschwindigkeit beim scrollen zwischen Einträgen (in Millisekunden)",
"scroll_speed_help" : "setze auf 0 zum deaktivieren",
"theme" : "Theme",
"submit_your_theme" : "Füg dein Theme hinzu",
"custom_css" : "Eigenes CSS"
},
"details" : {
"feed_details" : "Feed details",
"url" : "URL",
"website" : "Webseite",
"name" : "Name",
"category" : "Kategorie",
"position" : "Position",
"last_refresh" : "Letzte Aktualisierung",
"message" : "Nachricht der letzten Aktualisierung",
"next_refresh" : "Nächste Aktualisierung",
"queued_for_refresh" : "Wartet auf Aktualisierung",
"feed_url" : "Feed Adresse",
"generate_api_key_first" : "Generiere zuerst einen API Schlüssel in deinem Profil.",
"unsubscribe" : "Kündigen",
"unsubscribe_confirmation" : "Bist du sicher das du diesen Feed kündigen möchtest?",
"delete_category_confirmation" : "Bist du sicher das du diese Kategorie löschen möchtest?",
"category_details" : "Kategoriedetails",
"tag_details" : "Tag Details",
"parent_category" : "Übergeordnete Kategorie"
},
"profile" : {
"user_name" : "Benutzername",
"email" : "E-mail",
"change_password" : "Passwort ändern",
"confirm_password" : "Passwort bestätigen",
"minimum_6_chars" : "Mindestens 6 Zeichen",
"passwords_do_not_match" : "Passwörter stimmen nicht überein",
"api_key" : "API Schlüssel",
"api_key_not_generated" : "Noch nicht generiert",
"generate_new_api_key" : "Generiere einen neuen API key",
"generate_new_api_key_info" : "Das Ändern des Passwortes erzeugt einen neuen API Schlüssel",
"opml_export" : "OPML exportieren",
"delete_account" : "Konto löschen",
"delete_account_confirmation" : "Dein Konto löschen? Es gibt kein Zurück!"
},
"about" : {
"rest_api" : {
"value" : "REST API",
"line1" : "CommaFeed basiert auf JAX-RS und AngularJS. Daher ist eine REST API verfügbar.",
"link_to_documentation" : "Link zur Dokumentation."
},
"keyboard_shortcuts" : "Tastatur Kurzbefehle",
"version" : "CommaFeed Version",
"line1_prefix" : "CommaFeed ist ein quell-offenes Projekt. Quellen werden auf ",
"line1_suffix" : " gehosted.",
"line2_prefix" : "Wenn Probleme auftauchen, melde diese bitte auf dem ",
"line2_suffix" : " Projekt.",
"line3" : "Wenn dir dieses Projekt gefällt, würde ich mich über eine kleine Spende zur Deckung der Serverkosten freuen.",
"line4" : "Für diejenigen, die Bitcoin bevorzugen ist hier meine Adresse ",
"goodies" : {
"value" : "Goodies",
"android_app" : "Android app",
"subscribe_url" : "Abonnement-URL",
"chrome_extension" : "Chrome Erweiterung",
"firefox_extension" : "Firefox Add-on",
"opera_extension" : "Opera Erweiterung",
"subscribe_bookmarklet" : "Abonnieren-bookmarklet (klicken)",
"subscribe_bookmarklet_asc" : "Älteste zuerst",
"subscribe_bookmarklet_desc" : "Neuste zuerst",
"next_unread_bookmarklet" : "Nächster ungelesener Artikel-bookmarklet (in Lesezeichenleiste ziehen)"
},
"translation" : {
"value" : "Übersetzung",
"message" : "Wir brauchen deine Hilfe zur Übersetzung von CommaFeed.",
"link" : "Wie du uns dabei helfen kannst"
},
"announcements" : "Neuigkeiten",
"shortcuts" : {
"mouse_middleclick" : "Mittlere Maustaste",
"open_next_entry" : "nächsten Artikel öffnen",
"open_previous_entry" : "vorherigen Artikels öffnen",
"spacebar" : "Leertaste/Shift+Leertaste",
"move_page_down_up" : "Bewegt die Seite hoch/runter",
"focus_next_entry" : "nächsten Artikel fokussieren ohne ihn zu öffnen",
"focus_previous_entry" : "vorherigen Artikel fokussieren ohne ihn zu öffnen",
"open_next_feed" : "nächsten Feed oder Kategorie öffnen",
"open_previous_feed" : "vorherigen Feed oder Kategorie öffnen",
"open_close_current_entry" : "aktuellen Artikels öffnen/schließen",
"open_current_entry_in_new_window" : "aktuellen Artikel in neuem Fenster öffnen",
"open_current_entry_in_new_window_background" : "aktuellen Artikel in neuem Fenster im Hintergrund öffnen",
"star_unstar" : "de-/favorisieren des aktuellen Artikels",
"mark_current_entry" : "aktuellen Artikel als gelesen/ungelesen markieren",
"mark_all_as_read" : "alle Artikel als gelesen markieren",
"open_in_new_tab_mark_as_read" : "öffnen des Artikels in einem neuen Tab und als gelesen markieren",
"fullscreen" : "Vollbildmodus an-/ausschalten",
"font_size" : "Schriftgröße des aktuellen Artikels vergrößern/verkleinern",
"go_to_all" : "Gehe zur Ansicht \"Alle\"",
"go_to_starred" : "Gehe zur Ansicht \"Favoriten\"",
"feed_search" : "zu einem Feed springen durch durch eingeben seines Namens"
}
}
}

182
src/main/app/i18n/en.js Normal file
View File

@@ -0,0 +1,182 @@
{
"global" : {
"save" : "Save",
"cancel" : "Cancel",
"delete" : "Delete",
"required" : "Required",
"download" : "Download",
"link" : "Link",
"bookmark" : "Bookmark",
"close" : "Close",
"tags" : "Tags"
},
"tree" : {
"subscribe" : "Subscribe",
"import" : "Import",
"new_category" : "New category",
"all" : "All",
"starred" : "Starred"
},
"subscribe" : {
"feed_url" : "Feed URL",
"feed_name" : "Feed Name",
"category" : "Category"
},
"import" : {
"google_reader_prefix" : "Let me import your feeds from your ",
"google_reader_suffix" : " account.",
"google_download" : "Alternatively, upload your subscriptions.xml file.",
"google_download_link" : "Download it from here.",
"xml_file" : "OPML File"
},
"new_category" : {
"name" : "Name",
"parent" : "Parent"
},
"toolbar" : {
"unread" : "Unread",
"all" : "All",
"previous_entry" : "Previous entry",
"next_entry" : "Next entry",
"refresh" : "Refresh",
"refresh_all" : "Force refresh all my feeds",
"sort_by_asc_desc" : "Sort by date asc/desc",
"titles_only" : "Titles only",
"expanded_view" : "Expanded view",
"mark_all_as_read" : "Mark all as read",
"mark_all_older_12_hours" : "Items older than 12 hours",
"mark_all_older_day" : "Items older than a day",
"mark_all_older_week" : "Items older than a week",
"mark_all_older_two_weeks" : "Items older than two weeks",
"settings" : "Settings",
"profile" : "Profile",
"admin" : "Admin",
"about" : "About",
"logout" : "Logout",
"donate" : "Donate"
},
"view" : {
"entry_source" : "from ",
"entry_author" : "by ",
"error_while_loading_feed" : "Error while loading this feed",
"keep_unread" : "Keep unread",
"no_unread_items" : "has no unread items.",
"mark_up_to_here" : "Mark as read up to here",
"search_for" : "searching for: ",
"no_search_results" : "No match found for the requested keywords"
},
"feedsearch" : {
"hint" : "Type in a subscription...",
"help" : "Use the return key to select and arrow keys to navigate.",
"result_prefix" : "Your subscriptions:"
},
"settings" : {
"general" : {
"value" : "General",
"language" : "Language",
"language_contribute" : "Contribute with translations",
"show_unread" : "Show feeds and categories with no unread entries",
"social_buttons" : "Show social sharing buttons",
"scroll_marks" : "In expanded view, scrolling through entries mark them as read"
},
"appearance" : "Appearance",
"scroll_speed" : "Scrolling speed when navigating between entries (in milliseconds)",
"scroll_speed_help" : "set to 0 to disable",
"theme" : "Theme",
"submit_your_theme" : "Submit your theme",
"custom_css" : "Custom CSS"
},
"details" : {
"feed_details" : "Feed details",
"url" : "URL",
"website" : "Website",
"name" : "Name",
"category" : "Category",
"position" : "Position",
"last_refresh" : "Last refresh",
"message" : "Last refresh message",
"next_refresh" : "Next refresh",
"queued_for_refresh" : "Queued for refresh",
"feed_url" : "Feed URL",
"filtering_expression" : "Filtering expression",
"filtering_expression_help" : "If not empty, an expression evaluating to 'true' or 'false'. If false, new entries for this feed will be marked as read automatically.\nAvailable variables are 'title', 'content', 'url' and 'author' and their content is converted to lower case to ease string comparison.\nExample: url.contains('youtube') or (author eq 'athou' and title.contains('github').\nComplete available syntax is available <a href='http://commons.apache.org/proper/commons-jexl/reference/syntax.html' target='_blank'>here</a>.",
"generate_api_key_first" : "Generate an API key in your profile first.",
"unsubscribe" : "Unsubscribe",
"unsubscribe_confirmation" : "Are you sure you want to unsubscribe from this feed?",
"delete_category_confirmation" : "Are you sure you want to delete this category?",
"category_details" : "Category details",
"tag_details" : "Tag details",
"parent_category" : "Parent category"
},
"profile" : {
"user_name" : "User name",
"email" : "E-mail",
"change_password" : "Change password",
"confirm_password" : "Confirm password",
"minimum_6_chars" : "Minimum 6 characters",
"passwords_do_not_match" : "Passwords do not match",
"api_key" : "API key",
"api_key_not_generated" : "Not generated yet",
"generate_new_api_key" : "Generate new API key",
"generate_new_api_key_info" : "Changing password will generate a new API key",
"opml_export" : "OPML export",
"delete_account" : "Delete account",
"delete_account_confirmation" : "Delete your account? There's no turning back!"
},
"about" : {
"rest_api" : {
"value" : "REST API",
"line1" : "CommaFeed is built on top of JAX-RS and AngularJS. As such, a REST API is available.",
"link_to_documentation" : "Link to the documentation."
},
"keyboard_shortcuts" : "Keyboard shortcuts",
"version" : "CommaFeed version",
"line1_prefix" : "CommaFeed is an open-source project. Sources are hosted on ",
"line1_suffix" : ".",
"line2_prefix" : "If you encounter an issue, please report it on the issues page of the ",
"line2_suffix" : " project.",
"line3" : "If you like this project, please consider a donation to support the developer and help cover the costs of keeping this website online.",
"line4" : "For those of you who prefer bitcoin, here is the address",
"goodies" : {
"value" : "Goodies",
"android_app" : "Android app",
"subscribe_url" : "Subscribe URL",
"chrome_extension" : "Chrome extension",
"firefox_extension" : "Firefox extension",
"opera_extension" : "Opera extension",
"subscribe_bookmarklet" : "Add subscription bookmarklet (click)",
"subscribe_bookmarklet_asc" : "Oldest first",
"subscribe_bookmarklet_desc" : "Newest first",
"next_unread_bookmarklet" : "Next unread item bookmarklet (drag to bookmark bar)"
},
"translation" : {
"value" : "Translation",
"message" : "We need your help to translate CommaFeed.",
"link" : "See how to contribute with translations."
},
"announcements" : "Announcements",
"shortcuts" : {
"mouse_middleclick" : "mouse middleclick",
"open_next_entry" : "open next entry",
"open_previous_entry" : "open previous entry",
"spacebar" : "space/shift+space",
"move_page_down_up" : "moves the page down/up",
"focus_next_entry" : "set focus on next entry without opening it",
"focus_previous_entry" : "set focus on previous entry without opening it",
"open_next_feed" : "open next feed or category",
"open_previous_feed" : "open previous feed or category",
"open_close_current_entry" : "open/close current entry",
"open_current_entry_in_new_window" : "open current entry in a new window",
"open_current_entry_in_new_window_background" : "open current entry in a new window in the background",
"star_unstar" : "star/unstar current entry",
"mark_current_entry" : "mark as read/unread current entry",
"mark_all_as_read" : "mark all entries as read",
"open_in_new_tab_mark_as_read" : "open entry in new tab and mark as read",
"fullscreen" : "toggle full screen mode",
"font_size" : "increase/decrease font size of the current entry",
"go_to_all" : "go to the All view",
"go_to_starred" : "go to the Starred view",
"feed_search" : "navigate to a subscription by entering the subscription name"
}
}
}

180
src/main/app/i18n/es.js Normal file
View File

@@ -0,0 +1,180 @@
{
"global" : {
"save" : "Guardar",
"cancel" : "Cancelar",
"delete" : "Eliminar",
"required" : "Requerido",
"download" : "Descargar",
"link" : "Enlace",
"bookmark" : "Marcador",
"close" : "Close ",
"tags" : "Tags "
},
"tree" : {
"subscribe" : "Subscribir",
"import" : "Importar",
"new_category" : "Nueva categoría",
"all" : "Todos",
"starred" : "Destacado"
},
"subscribe" : {
"feed_url" : "URL del Canal",
"feed_name" : "Nombre del Canal",
"category" : "Categoría"
},
"import" : {
"google_reader_prefix" : "Déjame importar tus canales de tu",
"google_reader_suffix" : " cuenta.",
"google_download" : "También puedes subir tu archivo subscriptions.xml.",
"google_download_link" : "Descárgalo de aquí.",
"xml_file" : "Archivo OPML"
},
"new_category" : {
"name" : "Nombre",
"parent" : "Padre"
},
"toolbar" : {
"unread" : "Sin Leer",
"all" : "Todos",
"previous_entry" : "Entrada Anterior",
"next_entry" : "Próxima Entrada",
"refresh" : "Atualizar",
"refresh_all" : "Force refresh all my feeds ",
"sort_by_asc_desc" : "Ordenar por fecha asc/desc",
"titles_only" : "Sólo Títulos",
"expanded_view" : "Vista Expandida",
"mark_all_as_read" : "Marcar todos como leído",
"mark_all_older_12_hours" : "Items older than 12 hours ",
"mark_all_older_day" : "Artículos anteriores a un día",
"mark_all_older_week" : "Artículos más de una semana",
"mark_all_older_two_weeks" : "Artículos más de does semanas",
"settings" : "Ajustes",
"profile" : "Perfil",
"admin" : "Admin",
"about" : "Acerca de",
"logout" : "Cerrar sesión",
"donate" : "Donar"
},
"view" : {
"entry_source" : "from ",
"entry_author" : "by ",
"error_while_loading_feed" : "Error mientras se cargaba este canal",
"keep_unread" : "Guardar no leídos",
"no_unread_items" : "no tiene items sin leer.",
"mark_up_to_here" : "Mark as read up to here ",
"search_for" : "searching for: ",
"no_search_results" : "No match found for the requested keywords "
},
"feedsearch" : {
"hint" : "Type in a subscription... ",
"help" : "Use the return key to select and arrow keys to navigate. ",
"result_prefix" : "Your subscriptions: "
},
"settings" : {
"general" : {
"value" : "General",
"language" : "Lenguaje",
"language_contribute" : "Contribuye con traducciones",
"show_unread" : "Mostrar canales y categorías sin entradas no leídas.",
"social_buttons" : "Mostrar botones de compartir de redes sociales.",
"scroll_marks" : "En vista expandida, el desplazamiento por las entradas las marca como leídas"
},
"appearance" : "Appearance ",
"scroll_speed" : "Scrolling speed when navigating between entries (in milliseconds) ",
"scroll_speed_help" : "set to 0 to disable ",
"theme" : "Theme ",
"submit_your_theme" : "Submit your theme ",
"custom_css" : "CSS Personalizado"
},
"details" : {
"feed_details" : "Detalles de Canales",
"url" : "URL",
"website" : "Website ",
"name" : "Nombre",
"category" : "Categoría",
"position" : "Position ",
"last_refresh" : "Última actualización",
"message" : "Last refresh message ",
"next_refresh" : "Next refresh ",
"queued_for_refresh" : "Queued for refresh ",
"feed_url" : "URL del Canal",
"generate_api_key_first" : "Genera una llave API en tu perfil primero.",
"unsubscribe" : "Terminar subscripción",
"unsubscribe_confirmation" : "Are you sure you want to unsubscribe from this feed? ",
"delete_category_confirmation" : "Are you sure you want to delete this category? ",
"category_details" : "Detalles de la categoría",
"tag_details" : "Tag details ",
"parent_category" : "Categoría principal"
},
"profile" : {
"user_name" : "Nombre de usuario",
"email" : "Correo",
"change_password" : "Cambiar contraseña",
"confirm_password" : "Confirmar contraseña",
"minimum_6_chars" : "Mínimo 6 caracteres",
"passwords_do_not_match" : "Las contraseñas no coinciden",
"api_key" : "Llave API",
"api_key_not_generated" : "No generado todavía",
"generate_new_api_key" : "Generar nueva llave API",
"generate_new_api_key_info" : "Al cambiar la contraseña se generará una nueva llave API",
"opml_export" : "Exportación de OPML",
"delete_account" : "Eliminar cuenta",
"delete_account_confirmation" : "Delete your acount? There's no turning back! "
},
"about" : {
"rest_api" : {
"value" : "REST API",
"line1" : "CommaFeed está construido con el uso de JAX-RS y AngularJS. Por eso, un REST API esta disponible.",
"link_to_documentation" : "Vínculo de la documentación."
},
"keyboard_shortcuts" : "Atajos de teclado",
"version" : "CommaFeed version ",
"line1_prefix" : "CommaFeed es un proyecto open-source. El código se encuentra en ",
"line1_suffix" : ".",
"line2_prefix" : "Si encuentras un problema, por favor reportalo en la página de problemas de ",
"line2_suffix" : " del proyecto.",
"line3" : "Si te gusta este proyecto, por favor considera realizar una donacion para apoyar al desarrollador y ayudar a cubrir los costos de mantenimiento.",
"line4" : "For those of you who prefer bitcoin, here is the address ",
"goodies" : {
"value" : "Goodies",
"android_app" : "Android app ",
"subscribe_url" : "Subscribe URL ",
"chrome_extension" : "Extensión de Chrome",
"firefox_extension" : "Extensión de Firefox",
"opera_extension" : "Opera extension ",
"subscribe_bookmarklet" : "Add subscription bookmarklet (click) ",
"subscribe_bookmarklet_asc" : "Oldest first ",
"subscribe_bookmarklet_desc" : "Newest first ",
"next_unread_bookmarklet" : "Next unread item bookmarklet (drag to bookmark bar) "
},
"translation" : {
"value" : "Traducción",
"message" : "Necesitamos tu ayuda para ayudar a traducir CommaFeed.",
"link" : "Ver como contribuir con traducciones."
},
"announcements" : "Anuncios",
"shortcuts" : {
"mouse_middleclick" : "ratón botón medio",
"open_next_entry" : "abrir próxima entrada",
"open_previous_entry" : "abrir entrada previa",
"spacebar" : "space/shift+space ",
"move_page_down_up" : "moves the page down/up ",
"focus_next_entry" : "Establecer el foco en la próxima entrada sin abrirlo",
"focus_previous_entry" : "Establecer el foco en la entrada anterior sin abrirlo",
"open_next_feed" : "open next feed or category ",
"open_previous_feed" : "open previous feed or category ",
"open_close_current_entry" : "abrir/cerrar entrada actual",
"open_current_entry_in_new_window" : "abrir entrada actual en una nueva ventana",
"open_current_entry_in_new_window_background" : "open current entry in a new window in the background ",
"star_unstar" : "marcar/no marcar la entrada actual",
"mark_current_entry" : "marcar como leída/no la leída entrada actual",
"mark_all_as_read" : "marcar todas las entradas como leídas",
"open_in_new_tab_mark_as_read" : "abrir entrada en una nueva pestaña y marcar como leída",
"fullscreen" : "toggle full screen mode ",
"font_size" : "increase/decrease font size of the current entry ",
"go_to_all" : "go to the All view ",
"go_to_starred" : "go to the Starred view ",
"feed_search" : "navigate to a subscription by entering the subscription name "
}
}
}

180
src/main/app/i18n/fa.js Normal file
View File

@@ -0,0 +1,180 @@
{
"global" : {
"save" : "ذخیره",
"cancel" : "لغو",
"delete" : "حذف",
"required" : "لازم",
"download" : "بارگیری",
"link" : "پیوند",
"bookmark" : "بوکمارک",
"close" : "بستن",
"tags" : "برجسپ‌ها"
},
"tree" : {
"subscribe" : "مشترک شوید",
"import" : "درون‌ریزی",
"new_category" : "ردهٔ جدید",
"all" : "کل مطالب",
"starred" : "ستاره‌دار"
},
"subscribe" : {
"feed_url" : "نشانی خوراک",
"feed_name" : "نام خوراک",
"category" : "دسته"
},
"import" : {
"google_reader_prefix" : "اجازه بده خوراک‌هایتان را از حساب",
"google_reader_suffix" : "وارد سازم.",
"google_download" : "یا به جای آن، پروندهٔ subscriptions.xml خود را بارگذاری کنید.",
"google_download_link" : "آن را اینجا بارگیری کنید.",
"xml_file" : "پروندهٔ OPML"
},
"new_category" : {
"name" : "نام",
"parent" : "پدر"
},
"toolbar" : {
"unread" : "خوانده‌نشده",
"all" : "همه",
"previous_entry" : "مطلب قبلی",
"next_entry" : "مطلب بعدی",
"refresh" : "تازه‌سازی",
"refresh_all" : "مجبورکردن تازه‌سازی همهٔ خوراک‌ها",
"sort_by_asc_desc" : "مرتب‌کردن بر اساس تاریخ به‌صورت صعودی/نزولی",
"titles_only" : "فقط عنوان‌ها",
"expanded_view" : "نمای گسترش‌یافته",
"mark_all_as_read" : "علامت‌گذاری تمامی مطالب به‌عنوان خوانده‌شده",
"mark_all_older_12_hours" : "مطالب قدیمی‌تر از ۱۲ ساعت",
"mark_all_older_day" : "مطالب قدیمی‌تر از یک روز",
"mark_all_older_week" : "مطالب قدیمی‌تر از یک هفته",
"mark_all_older_two_weeks" : "مطالب قدیمی تر از چند هفته قیل",
"settings" : "تنظیمات",
"profile" : "نمایه",
"admin" : "مدیریت",
"about" : "درباره",
"logout" : "خروج",
"donate" : "کمک مالی"
},
"view" : {
"entry_source" : "از",
"entry_author" : "توسط",
"error_while_loading_feed" : "متأسفانه، هنگام بارگیری این خوراک خطایی رخ‌داده‌است.",
"keep_unread" : "خوانده‌نشده نگه‌دار",
"no_unread_items" : "هیچ مطلب خوانده‌نشده‌ای ندارد.",
"mark_up_to_here" : "تا اینجا را خوانده‌شده در نظر بگیر",
"search_for" : "جستجو برای:",
"no_search_results" : "هیج نتیجه‌ای برای کلیدواژه‌های درخواستی یافت نشد"
},
"feedsearch" : {
"hint" : "نوشتن بر روی یک اشتراک...",
"help" : "دکمهٔ بازگشت برای انتخاب و دکمه‌های جهت‌دار را برای ناوبری استفاده کن.",
"result_prefix" : "اشتراک‌های شما:"
},
"settings" : {
"general" : {
"value" : "همگانی",
"language" : "زبان",
"language_contribute" : "مشارکت در ترجمه",
"show_unread" : "تنها خوراک‌ها و دسته‌های را که دارای مطالب نخوانده هستند نمایش بده.",
"social_buttons" : "نشان‌دادن دکمه‌های اشتراک‌گذاری در شبکه‌های اجتماعی",
"scroll_marks" : "در نمای گسترش‌یافته، لغزیدن بر روی مطالب به‌عنوان نشانه‌گذاری به‌عنوان خوانده‌شده در نظر گرفته‌شوند."
},
"appearance" : "ظاهر",
"scroll_speed" : "سرعت لغزش هنگام گشتن بین مدخل‌ها (به میلی‌ثانیه)",
"scroll_speed_help" : "قراردادن به ۰ برای غیرفعال‌کردن",
"theme" : "پوسته",
"submit_your_theme" : "پوستهٔ خود را ارسال‌کنید",
"custom_css" : "سی‌اس‌اس شخصی‌سازی‌شده"
},
"details" : {
"feed_details" : "جزئیات خوراک",
"url" : "نشانی",
"website" : "وب‌گاه",
"name" : "نام",
"category" : "دسته",
"position" : "موقعیت",
"last_refresh" : "آخرین بروزرسانی",
"message" : "پیام آخرین تازه‌سازی",
"next_refresh" : "بروزرسانی بعدی",
"queued_for_refresh" : "منتظر برای بروزرسانی",
"feed_url" : "نشانی خوراک",
"generate_api_key_first" : "ابتدا یک کلید API در نمایهٔ خود ایجاد کنید.",
"unsubscribe" : "لغو اشتراک",
"unsubscribe_confirmation" : "مطمئنید می‌خواهید از این این لغو اشتراک کنید؟",
"delete_category_confirmation" : "مطمئنید می‌خواهید این رده را حذف کنید؟",
"category_details" : "جزئیات دسته",
"tag_details" : "جزئیات برچسپ",
"parent_category" : "ردهٔ پدر"
},
"profile" : {
"user_name" : "نام کاربری",
"email" : "رایانامه",
"change_password" : "تغییر گذرواژه",
"confirm_password" : "تأیید گذرواژه",
"minimum_6_chars" : "حداقل ۶ نویسه",
"passwords_do_not_match" : "گذرواژه‌ها انطباق ندارند",
"api_key" : "کلید API",
"api_key_not_generated" : "هنوز ایجاد نشده‌است",
"generate_new_api_key" : "ایجاد کلید جدید API",
"generate_new_api_key_info" : "تغییر گذرواژه کلید API به‌وجود خواهد آورد.",
"opml_export" : "خارج‌سازی OPML",
"delete_account" : "حذف حساب کاربری",
"delete_account_confirmation" : "حذف حسابتان؟ بازگشتی وجود ندارد!"
},
"about" : {
"rest_api" : {
"value" : "REST API",
"line1" : "کامافید بر روی JAX-RS و AngularJS ساخته‌شده‌است. به همین دلیل API REST موجود است.",
"link_to_documentation" : "پیوند به مستندات."
},
"keyboard_shortcuts" : "کلیدهای میانبر",
"version" : "نسخهٔ کامافید",
"line1_prefix" : "کامافید یک پروژه متن‌باز است. مخازن آن در ",
"line1_suffix" : "میزبانی می‌شود.",
"line2_prefix" : "اگر شما به مسئله‌ای برخورده اید، لطفاً آن را در صفحه مسائل گزارش دهید ",
"line2_suffix" : " پروژه.",
"line3" : "در صورتی که شما به این پروژه علاقمندید، لطفاً مبلغی را هرچند ناچیزه برای حمایت از توسعه‌دهنده و کمک به تأمین هزینه‌های نگه‌داری این وب‌گاه کمک کنید.",
"line4" : "برای کسانی که بیت‌کوین را ترجیح می‌دهند، نشانی آن اینجاست",
"goodies" : {
"value" : "افزونه‌ها",
"android_app" : "برنامهٔ اندرویدی",
"subscribe_url" : "اشتراک در نشانی",
"chrome_extension" : "افزونهٔ کروم",
"firefox_extension" : "افزونهٔ فایرفاکس",
"opera_extension" : "افزونهٔ اپرا",
"subscribe_bookmarklet" : "افزودن بوک‌مارک‌لت اشتراک (با کلیک)",
"subscribe_bookmarklet_asc" : "اول قدیمی‌ترین‌ها",
"subscribe_bookmarklet_desc" : "اول جدیدترین‌ها",
"next_unread_bookmarklet" : "بوک‌مارک‌لت مطلب خوانده نشدهٔ بعدی(با کشیدن و رهاکردن در نوار بوک‌مارک‌لت)"
},
"translation" : {
"value" : "ترجمه",
"message" : "ما به کمک شما برای ترجمهٔ کامافید نیازمدیم.",
"link" : "ببینید چگونه می‌توان در ترجمه‌های مشارکت نمود."
},
"announcements" : "اطلاعیه‌ها",
"shortcuts" : {
"mouse_middleclick" : "کلیک وسطی موشواره",
"open_next_entry" : "بازکردن مطلب بعدی",
"open_previous_entry" : "بازکردن مطلب قبلی",
"spacebar" : "space/shift+space",
"move_page_down_up" : "صفحه را بالا/پایین انتقال می‌دهد",
"focus_next_entry" : "رفتن بر روی مطلب بعدی بدون بازکردن کامل آن",
"focus_previous_entry" : "رفتن بر روی مطلب بعدی قبلی بازکردن کامل آن",
"open_next_feed" : "بازکردن خوراک یا دستهٔ بعدی",
"open_previous_feed" : "بازکردن خوراک یا دستهٔ بعدی",
"open_close_current_entry" : "باز/بستن مطلب جاری",
"open_current_entry_in_new_window" : "بازکردن مطلب جاری در پنجره‌ای جدید",
"open_current_entry_in_new_window_background" : "بازکردن مطلب جاری در پنجره‌ای جدید در پس‌زمینه",
"star_unstar" : "نشانه‌دارکردن/نکردن مطلب جاری",
"mark_current_entry" : "علامت‌گذاری مطلب جاری به‌عنوان خوانده‌شده/نشده",
"mark_all_as_read" : "علامت‌گذاری تمامی مطالب به‌عنوان خوانده‌شده",
"open_in_new_tab_mark_as_read" : "باز‌کردن مطلب در سربرگ جدید و علامت‌گذاری آن به‌عنوان خوانده‌شده",
"fullscreen" : "فعال/غیرفعال‌کردن حالت تمام صفحه",
"font_size" : "افزایش/کاهش اندازهٔ قلم مدخل فعلی",
"go_to_all" : "رفتن به نمای همه",
"go_to_starred" : "رفتن به نمای ستاره داده‌شده‌ها",
"feed_search" : "ناوبری به یک اشتراک با نوشتن نام اشتراک"
}
}
}

180
src/main/app/i18n/fi.js Normal file
View File

@@ -0,0 +1,180 @@
{
"global" : {
"save" : "Tallenna",
"cancel" : "Peruuta",
"delete" : "Poista",
"required" : "Pakollinen",
"download" : "Lataa",
"link" : "Linkki",
"bookmark" : "Kirjanmerkki",
"close" : "Sulje",
"tags" : "Tagit"
},
"tree" : {
"subscribe" : "Tilaa syöte",
"import" : "Tuo",
"new_category" : "Uusi kansio",
"all" : "Kaikki",
"starred" : "Tähdelliset"
},
"subscribe" : {
"feed_url" : "Syötteen osoite",
"feed_name" : "Syötteen nimi",
"category" : "Kansio"
},
"import" : {
"google_reader_prefix" : "Tuo tilaukset",
"google_reader_suffix" : "-tunnukseltasi.",
"google_download" : "Vaihtoehtoisesti voit tuoda tilaukset subscriptions.xml -tiedostolla.",
"google_download_link" : "Lataa se täältä.",
"xml_file" : "OPML-tiedosto"
},
"new_category" : {
"name" : "Nimi",
"parent" : "Yläkansio"
},
"toolbar" : {
"unread" : "Lukemattomat",
"all" : "Kaikki",
"previous_entry" : "Edellinen otsikko",
"next_entry" : "Seuraava otsikko",
"refresh" : "Päivitä",
"refresh_all" : "Pakota kaikkien syötteiden päivitys",
"sort_by_asc_desc" : "Järjestä päivämäärän mukaan nousevasti/laskevasti",
"titles_only" : "Näytä vain otsikot",
"expanded_view" : "Laajennettu näkymä",
"mark_all_as_read" : "Merkitse kaikki luetuiksi",
"mark_all_older_12_hours" : "12 tuntia vanhemmat otsikot",
"mark_all_older_day" : "Päivää vanhemmat otsikot",
"mark_all_older_week" : "Viikkoa vanhemmat otsikot",
"mark_all_older_two_weeks" : "Kahta viikkoa vanhemmat otsikot",
"settings" : "Asetukset",
"profile" : "Profiili",
"admin" : "Ylläpito",
"about" : "Tietoja",
"logout" : "Kirjaudu ulos",
"donate" : "Lahjoita"
},
"view" : {
"entry_source" : "syötteestä",
"entry_author" : "kirjoittanut",
"error_while_loading_feed" : "Virhe tilausta ladattaessa",
"keep_unread" : "Pidä lukemattomana",
"no_unread_items" : "ei sisällä lukemattomia otsikoita.",
"mark_up_to_here" : "Merkitse luetuksi tähän asti",
"search_for" : "Etsi sanoilla:",
"no_search_results" : "Ei tuloksia annetuilla hakusanoilla."
},
"feedsearch" : {
"hint" : "Kirjoita syötteen nimi...",
"help" : "Siirry syötteiden välillä nuolinäppäimillä ja valitse syöte enterillä.",
"result_prefix" : "Tilatut syötteesi:"
},
"settings" : {
"general" : {
"value" : "Yleiset",
"language" : "Kieli",
"language_contribute" : "Avusta käännösten tekemisessä.",
"show_unread" : "Näytä syötteet ja kansiot, joissa ei ole lukemattomia otsikoita",
"social_buttons" : "Näytä jakonapit",
"scroll_marks" : "Laajennetussa näkymässä otsikoiden selaaminen merkitsee ne luetuiksi"
},
"appearance" : "Ulkonäkö",
"scroll_speed" : "Vieritysnopeus otsikoiden välillä navigoidessa (millisekunneissa)",
"scroll_speed_help" : "Aseta 0 poistaaksesi vieritys käytöstä.",
"theme" : "Teema",
"submit_your_theme" : "Lähetä oma teemasi",
"custom_css" : "Oma CSS"
},
"details" : {
"feed_details" : "Tilauksen tiedot",
"url" : "Osoite",
"website" : "Sivusto",
"name" : "Nimi",
"category" : "Kansio",
"position" : "Paikka",
"last_refresh" : "Viimeisin päivitys",
"message" : "Viimeisimmän päivityksen viesti",
"next_refresh" : "Seuraava päivitys",
"queued_for_refresh" : "Jonossa päivitettäväksi",
"feed_url" : "Syötteen osoite",
"generate_api_key_first" : "Luo API-avain profiilissasi.",
"unsubscribe" : "Peruuta tilaus",
"unsubscribe_confirmation" : "Haluatko varmasti lopettaa tämän syötteen tilauksen?",
"delete_category_confirmation" : "Haluatko varmasti poistaa tämän kansion?",
"category_details" : "Kansion tiedot",
"tag_details" : "Tagin tiedot",
"parent_category" : "Yläkansio"
},
"profile" : {
"user_name" : "Käyttäjänimi",
"email" : "Sähköposti",
"change_password" : "Vaihda salasana",
"confirm_password" : "Vahvista uusi salasana",
"minimum_6_chars" : "Vähintään 6 merkkiä",
"passwords_do_not_match" : "Salasanat eivät täsmää",
"api_key" : "API-avain",
"api_key_not_generated" : "API-avainta ei ole vielä luotu",
"generate_new_api_key" : "Luo uusi API-avain",
"generate_new_api_key_info" : "Salasanan vaihtaminen luo uuden API-avaimen",
"opml_export" : "OPML vienti",
"delete_account" : "Poista tunnus",
"delete_account_confirmation" : "Haluatko varmasti poistaa tunnuksesi? Tätä ei voi perua!"
},
"about" : {
"rest_api" : {
"value" : "REST-API",
"line1" : "CommaFeed on rakennettu JAX-RS:n ja AngularJS:n avulla. REST API on myös saatavilla.",
"link_to_documentation" : "Linkki dokumentaatioon."
},
"keyboard_shortcuts" : "Näppäinoikotiet",
"version" : "CommaFeedin versio",
"line1_prefix" : "CommaFeed on avoimen lähdekoodin projekti. Lähdekoodi on saatavilla ",
"line1_suffix" : ":ssa.",
"line2_prefix" : "Jos huomaat ongelmia, ilmoita niistä ",
"line2_suffix" : "-projektin ongelmasivulla.",
"line3" : "Jos pidät CommaFeedistä, harkitse lahjoitusta kehittäjää tukeaksesi ja auttaaksesi sivuston kulujen kattamisessa.",
"line4" : "Tässä myös osoite bitcoin-lahjoituksia varten:",
"goodies" : {
"value" : "Ekstrat",
"android_app" : "Android-sovellus",
"subscribe_url" : "Tilausosoite",
"chrome_extension" : "Chrome-laajennus",
"firefox_extension" : "Firefox-laajennus",
"opera_extension" : "Opera-laajennus",
"subscribe_bookmarklet" : "Lisää tilaus -kirjanmerkki (klikkaa) ",
"subscribe_bookmarklet_asc" : "Vanhin ensiksi",
"subscribe_bookmarklet_desc" : "Uusin ensiksi",
"next_unread_bookmarklet" : "Seuraava lukematon otsikko -kirjanmerkki (raahaa kirjanmerkkipalkkiin)"
},
"translation" : {
"value" : "Kääntäminen",
"message" : "Tarvitsemme apuasi CommaFeedin kääntämiseksi.",
"link" : "Katso kuinka voit auttaa kännösten tekemisessä."
},
"announcements" : "Ilmoitukset",
"shortcuts" : {
"mouse_middleclick" : "hiiren keskinappi",
"open_next_entry" : "avaa seuraava otsikko",
"open_previous_entry" : "avaa edellinen otsikko",
"spacebar" : "välilyönti/shift+välilyönti",
"move_page_down_up" : "liikuta sivua ylös tai alas",
"focus_next_entry" : "valitse seuraava otsikko sitä avaamatta",
"focus_previous_entry" : "valitse edellinen otsikko sitä avaamatta",
"open_next_feed" : "avaa seuraava kansio tai syöte",
"open_previous_feed" : "avaa edellinen kansio tai syöte",
"open_close_current_entry" : "avaa tai sulje valittu otsikko",
"open_current_entry_in_new_window" : "avaa valittu otsikko uudessa ikkunassa",
"open_current_entry_in_new_window_background" : "avaa valittu otsikko uudessa ikkunassa taustalla",
"star_unstar" : "merkitse valittu otsikko tähdelliseksi",
"mark_current_entry" : "merkitse valittu otsikko luetuksi tai lukemattomaksi",
"mark_all_as_read" : "merkitse kaikki otsikot luetuiksi",
"open_in_new_tab_mark_as_read" : "avaa otsikko uudessa ikkunassa ja merkitse se luetuksi",
"fullscreen" : "siirry kokoruututilaan",
"font_size" : "suurenna/pienennä valitun artikkelin kirjasinkokoa",
"go_to_all" : "Siirry Kaikki-näkymään",
"go_to_starred" : "Siirry Tähdelliset-näkymään",
"feed_search" : "etsi tilaus sen nimen perusteella"
}
}
}

180
src/main/app/i18n/fr.js Normal file
View File

@@ -0,0 +1,180 @@
{
"global" : {
"save" : "Enregistrer",
"cancel" : "Annuler",
"delete" : "Effacer",
"required" : "Obligatoire",
"download" : "Télécharger",
"link" : "Lien",
"bookmark" : "Favoris",
"close" : "Fermer",
"tags" : "Tags "
},
"tree" : {
"subscribe" : "S'abonner",
"import" : "Importer",
"new_category" : "Nouvelle catégorie",
"all" : "Tous",
"starred" : "Favoris"
},
"subscribe" : {
"feed_url" : "URL du flux",
"feed_name" : "Nom du flux",
"category" : "Catégorie"
},
"import" : {
"google_reader_prefix" : "Laissez-moi importer vos flux depuis votre compte ",
"google_reader_suffix" : ".",
"google_download" : "Ou alors, téléchargez votre fichier subscriptions.xml.",
"google_download_link" : "Récupérez-le ici.",
"xml_file" : "Fichier OPML"
},
"new_category" : {
"name" : "Nom",
"parent" : "Parent"
},
"toolbar" : {
"unread" : "Non-lus",
"all" : "Tous",
"previous_entry" : "Article précédent",
"next_entry" : "Article suivant",
"refresh" : "Rafraîchir",
"refresh_all" : "Force refresh all my feeds ",
"sort_by_asc_desc" : "Trier par date croissante/décroissante",
"titles_only" : "Titres uniquement",
"expanded_view" : "Vue étendue",
"mark_all_as_read" : "Tout marquer comme lu",
"mark_all_older_12_hours" : "Items older than 12 hours ",
"mark_all_older_day" : "Articles de plus d'un jour",
"mark_all_older_week" : "Articles de plus d'une semaine",
"mark_all_older_two_weeks" : "Articles de plus d'un mois",
"settings" : "Préférences",
"profile" : "Profil",
"admin" : "Administration",
"about" : "A propos",
"logout" : "Déconnexion",
"donate" : "Faire un don"
},
"view" : {
"entry_source" : "sur",
"entry_author" : "par ",
"error_while_loading_feed" : "Erreur durant le chargement de ce flux",
"keep_unread" : "Garder non-lu",
"no_unread_items" : "n'a pas d'articles non-lus.",
"mark_up_to_here" : "Marquer comme lu jusqu'ici",
"search_for" : "searching for: ",
"no_search_results" : "No match found for the requested keywords "
},
"feedsearch" : {
"hint" : "Tapez un nom de flux",
"help" : "Utilisez la touche entrée pour sélectionner et les flèches pour naviguer",
"result_prefix" : "Vos flux:"
},
"settings" : {
"general" : {
"value" : "Général",
"language" : "Langue",
"language_contribute" : "Contribuer aux traductions",
"show_unread" : "Afficher les flux et les catégories pour lesquels tout est déjà lu",
"social_buttons" : "Afficher les boutons de partage sur réseaux sociaux",
"scroll_marks" : "En mode de lecture étendu, marquer comme lu les éléments lorsque la fenêtre descend."
},
"appearance" : "Apparence",
"scroll_speed" : "Scrolling speed when navigating between entries (in milliseconds) ",
"scroll_speed_help" : "set to 0 to disable ",
"theme" : "Thème",
"submit_your_theme" : "Soumettez votre thème.",
"custom_css" : "CSS personnelle"
},
"details" : {
"feed_details" : "Détails du flux",
"url" : "URL",
"website" : "Site web",
"name" : "Nom",
"category" : "Catégorie",
"position" : "Position",
"last_refresh" : "Dernière mise à jour",
"message" : "Last refresh message ",
"next_refresh" : "Prochaine mise à jour",
"queued_for_refresh" : "En file d'attente",
"feed_url" : "URL du flux",
"generate_api_key_first" : "Générez une clé API dans votre profil d'abord.",
"unsubscribe" : "Se désabonner",
"unsubscribe_confirmation" : "Are you sure you want to unsubscribe from this feed? ",
"delete_category_confirmation" : "Are you sure you want to delete this category? ",
"category_details" : "Détails de la catégorie",
"tag_details" : "Tag details ",
"parent_category" : "Catégorie parente"
},
"profile" : {
"user_name" : "Nom",
"email" : "E-mail",
"change_password" : "Changer de mot de passe",
"confirm_password" : "Confirmer le mot de passe",
"minimum_6_chars" : "Minimum 6 caractères",
"passwords_do_not_match" : "Les mots de passe ne correspondent pas",
"api_key" : "Clé API",
"api_key_not_generated" : "Pas encore générée",
"generate_new_api_key" : "Générer une nouvelle clé API",
"generate_new_api_key_info" : "Changer de mot de passe va générer une nouvelle clé API",
"opml_export" : "Export du fichier OPML",
"delete_account" : "Effacer le compte",
"delete_account_confirmation" : "Delete your acount? There's no turning back! "
},
"about" : {
"rest_api" : {
"value" : "API REST",
"line1" : "CommaFeed utilise JAX-RS et AngularJS, donc une API REST est disponible.",
"link_to_documentation" : "Lien vers la documentation."
},
"keyboard_shortcuts" : "Raccourcis clavier",
"version" : "CommaFeed version",
"line1_prefix" : "CommaFeed est un projet open-source. Les sources sont disponibles sur ",
"line1_suffix" : ".",
"line2_prefix" : "Si vous rencontrez un problème, rapportez-le sur la page du projet sur ",
"line2_suffix" : ".",
"line3" : "Si vous aimez ce projet, n'hésitez pas à faire un don pour encourager le développeur et aider à couvrir les coûts d'hébergement de la plate-forme.",
"line4" : "Pour ceux qui préfèrent Bitcoin, voici l'adresse",
"goodies" : {
"value" : "Extensions",
"android_app" : "App Android",
"subscribe_url" : "URL pour s'abonner",
"chrome_extension" : "Extension Chrome",
"firefox_extension" : "Extension Firefox",
"opera_extension" : "Extension Opera",
"subscribe_bookmarklet" : "Bookmarklet d'ajout d'abonnement",
"subscribe_bookmarklet_asc" : "Du plus ancien au plus récent",
"subscribe_bookmarklet_desc" : "Du plus récent au plus ancien",
"next_unread_bookmarklet" : "Bookmarklet vers le prochain article non-lu"
},
"translation" : {
"value" : "Traduction",
"message" : "Nous avons besoin d'aide pour traduire CommaFeed.",
"link" : "Cliquez ici pour voir comment vous pouvez nous aider."
},
"announcements" : "Annonces",
"shortcuts" : {
"mouse_middleclick" : "clic du milieu de la souris",
"open_next_entry" : "Ouvrir l'article suivant",
"open_previous_entry" : "Ouvrir l'article précédent",
"spacebar" : "espace/shift+espace",
"move_page_down_up" : "Faire descendre/monter la page",
"focus_next_entry" : "Sélectionner l'article suivant sans l'ouvrir",
"focus_previous_entry" : "Sélectionner l'article précédent sans l'ouvrir",
"open_next_feed" : "Sélectionner le flux ou la catégorie suivante",
"open_previous_feed" : "Sélectionner le flux ou la catégorie précédente",
"open_close_current_entry" : "Ouvrir/fermer l'article courant",
"open_current_entry_in_new_window" : "Ouvrir l'article courant dans une nouvelle fenêtre",
"open_current_entry_in_new_window_background" : "Ouvrir l'article courant dans une nouvelle fenêtre en arrière plan",
"star_unstar" : "Ajouter/enlever l'article courant des favoris",
"mark_current_entry" : "Marquer comme lue/non-lue l'article courant",
"mark_all_as_read" : "Marquer tous les articles comme lus",
"open_in_new_tab_mark_as_read" : "Ouvrir l'article courant dans une nouvelle fenêtre et marquer comme lu",
"fullscreen" : "Activer/désactiver le mode plein-écran",
"font_size" : "Augmenter/diminuer la taille de la police de l'article courant",
"go_to_all" : "Afficher tous les articles",
"go_to_starred" : "Afficher les articles favoris",
"feed_search" : "Naviguer vers un flux en entrant son nom"
}
}
}

180
src/main/app/i18n/gl.js Normal file
View File

@@ -0,0 +1,180 @@
{
"global" : {
"save" : "Gardar",
"cancel" : "Cancelar",
"delete" : "Eliminar",
"required" : "Requerido",
"download" : "Descargar",
"link" : "Ligazón",
"bookmark" : "Marcador",
"close" : "Pechar",
"tags" : "Tags "
},
"tree" : {
"subscribe" : "Subscribir",
"import" : "Importar",
"new_category" : "Nova categoría",
"all" : "Todos",
"starred" : "Destacado"
},
"subscribe" : {
"feed_url" : "URL da fonte",
"feed_name" : "Nome da fonte",
"category" : "Categoría"
},
"import" : {
"google_reader_prefix" : "Deixame importar as fontes da túa",
"google_reader_suffix" : " conta.",
"google_download" : "Tamén podes subir un ficheiro subscriptions.xml.",
"google_download_link" : "Descárgao de aquí.",
"xml_file" : "Ficheiro OPML"
},
"new_category" : {
"name" : "Nome",
"parent" : "Pai"
},
"toolbar" : {
"unread" : "Sen Ler",
"all" : "Todos",
"previous_entry" : "Entrada Anterior",
"next_entry" : "Próxima Entrada",
"refresh" : "Actualizar",
"refresh_all" : "Force refresh all my feeds ",
"sort_by_asc_desc" : "Ordenar por data asc/desc",
"titles_only" : "Só títulos",
"expanded_view" : "Vista expandida",
"mark_all_as_read" : "Marcar todos como lidos",
"mark_all_older_12_hours" : "Items older than 12 hours ",
"mark_all_older_day" : "Artigos anteriores a un día",
"mark_all_older_week" : "Artigos de máis de unha semana",
"mark_all_older_two_weeks" : "Artigos de máis de dúas semanas",
"settings" : "Configuración",
"profile" : "Perfil",
"admin" : "Admin",
"about" : "Sobre",
"logout" : "Pechar sesión",
"donate" : "Doar"
},
"view" : {
"entry_source" : "from ",
"entry_author" : "by ",
"error_while_loading_feed" : "Erro mentras se cargaba esta fonte",
"keep_unread" : "Gardar non lidos",
"no_unread_items" : "non ten elementos sen ler.",
"mark_up_to_here" : "Mark as read up to here ",
"search_for" : "searching for: ",
"no_search_results" : "No match found for the requested keywords "
},
"feedsearch" : {
"hint" : "Escriba unha suscrición...",
"help" : "Use a teclar retorno para seleccionar e as flechas para navegar.",
"result_prefix" : "As súas suscricións:"
},
"settings" : {
"general" : {
"value" : "Xeral",
"language" : "Idioma",
"language_contribute" : "Contribúe traducindo",
"show_unread" : "Mostrar fontes e categorías sen entradas non lidas.",
"social_buttons" : "Mostrar botóns de compartir en redes sociais.",
"scroll_marks" : "En vista expandida, o desplazamento polas entradas márcaas como lidas."
},
"appearance" : "Aspecto",
"scroll_speed" : "Scrolling speed when navigating between entries (in milliseconds) ",
"scroll_speed_help" : "set to 0 to disable ",
"theme" : "Decorado",
"submit_your_theme" : "Envíe o seu decorado",
"custom_css" : "CSS Personalizado"
},
"details" : {
"feed_details" : "Detalles de fontes",
"url" : "URL",
"website" : "Website ",
"name" : "Nome",
"category" : "Categoría",
"position" : "Position ",
"last_refresh" : "Última actualización",
"message" : "Last refresh message ",
"next_refresh" : "Próxima actualización",
"queued_for_refresh" : "En cola para actualizar",
"feed_url" : "URL da fonte",
"generate_api_key_first" : "Antes debes xerar unha chave API no teu perfil.",
"unsubscribe" : "Rematar suscripción",
"unsubscribe_confirmation" : "Are you sure you want to unsubscribe from this feed? ",
"delete_category_confirmation" : "Are you sure you want to delete this category? ",
"category_details" : "Detalles da categoría",
"tag_details" : "Tag details ",
"parent_category" : "Categoría principal"
},
"profile" : {
"user_name" : "Nome de usuario",
"email" : "Correo",
"change_password" : "Cambiar contrasinal",
"confirm_password" : "Confirmar contrasinal",
"minimum_6_chars" : "Mínimo 6 caracteres",
"passwords_do_not_match" : "Os contrasinais non coinciden no coinciden",
"api_key" : "Chave API",
"api_key_not_generated" : "Non xerado todavía",
"generate_new_api_key" : "Xerar nova chave da API",
"generate_new_api_key_info" : "Ao cambiar o contrasinal xerarase unha nova chave API",
"opml_export" : "Exportación de OPML",
"delete_account" : "Eliminar conta",
"delete_account_confirmation" : "Delete your acount? There's no turning back! "
},
"about" : {
"rest_api" : {
"value" : "REST API",
"line1" : "CommaFeed está feito co uso de JAX-RS e AngularJS. Polo que está dispoñible un REST API.",
"link_to_documentation" : "Ligazón a documentación."
},
"keyboard_shortcuts" : "Atallos de teclado",
"version" : "CommaFeed version ",
"line1_prefix" : "CommaFeed é un proxecto de código aberto. O código está en ",
"line1_suffix" : ".",
"line2_prefix" : "Se atopas un problema, por favor informa na páxina de problemas do ",
"line2_suffix" : " do proxecto.",
"line3" : "Se che gusta este proxecto, por favor considera realizar unha doación para apoiar ao desenvolvedor e axudar a cubrir os gastos de mantemento.",
"line4" : "Para aqueles de vostedes que prefiran bitcoin, aquí está o enderezo",
"goodies" : {
"value" : "Extras",
"android_app" : "Android app ",
"subscribe_url" : "Suscribirse a URL",
"chrome_extension" : "Engadido para Chrome",
"firefox_extension" : "Engadido para Firefox",
"opera_extension" : "Engadido para Opera",
"subscribe_bookmarklet" : "Engadir bookmarklet para suscrición(click)",
"subscribe_bookmarklet_asc" : "Oldest first ",
"subscribe_bookmarklet_desc" : "Newest first ",
"next_unread_bookmarklet" : "Bookmarklet de seguinte elemento non lido (arrastre a barra de marcadores)"
},
"translation" : {
"value" : "Tradución",
"message" : "Precisamos a túa axuda para traducir CommaFeed.",
"link" : "Ver como contribuir con traducións."
},
"announcements" : "Anuncios",
"shortcuts" : {
"mouse_middleclick" : "botón central do rato",
"open_next_entry" : "abrir próxima entrada",
"open_previous_entry" : "abrir entrada anterior",
"spacebar" : "space/shift+space ",
"move_page_down_up" : "moves the page down/up ",
"focus_next_entry" : "Establecer o foco na próxima entrada sen abrila",
"focus_previous_entry" : "Establecer o foco na entrada anterior sen abrila",
"open_next_feed" : "abrir a seguinte fonte ou categoría",
"open_previous_feed" : "abrir a fonte ou categoría anterior",
"open_close_current_entry" : "abrir/pechar entrada actual",
"open_current_entry_in_new_window" : "abrir entrada actual nunha nova ventana",
"open_current_entry_in_new_window_background" : "abrir entrada actual nunha nova ventá en segundo plano",
"star_unstar" : "marcar/desmarcar a entrada actual",
"mark_current_entry" : "marcar como lida/non lida a entrada actual",
"mark_all_as_read" : "marcar todas as entradas como lidas",
"open_in_new_tab_mark_as_read" : "abrir entrada nunha nova lapela e marcar como lida",
"fullscreen" : "toggle full screen mode ",
"font_size" : "increase/decrease font size of the current entry ",
"go_to_all" : "go to the All view ",
"go_to_starred" : "go to the Starred view ",
"feed_search" : "navegue ate unha suscrición introducindo o nome da suscrición"
}
}
}

180
src/main/app/i18n/glk.js Normal file
View File

@@ -0,0 +1,180 @@
{
"global" : {
"save" : "قزنج",
"cancel" : "باطیل",
"delete" : "پاک",
"required" : "لازم",
"download" : "جیرأکش",
"link" : "خال",
"bookmark" : "بوکمارک",
"close" : "دَوَستن",
"tags" : "Tags "
},
"tree" : {
"subscribe" : "مشترک ببید",
"import" : "درینأدأن",
"new_category" : "تازه جرگه",
"all" : "همه ته مطالب",
"starred" : "ستاره‌دار"
},
"subscribe" : {
"feed_url" : "خوراکˇ نشانی",
"feed_name" : "خوراکˇ نام",
"category" : "جرگه"
},
"import" : {
"google_reader_prefix" : "بدأر تی خوراکانه حسابˇ جی",
"google_reader_suffix" : "درینأدم.",
"google_download" : "یا اونˇ جا تی subscriptions.xml پروندهٰ جیرأکش.",
"google_download_link" : "اونه ائره جیرأکش.",
"xml_file" : "اکس.ام.الˇ پرونده"
},
"new_category" : {
"name" : "نام",
"parent" : "پئر"
},
"toolbar" : {
"unread" : "نخانده",
"all" : "همه",
"previous_entry" : "قبلی",
"next_entry" : "بعدی",
"refresh" : "واج‌أری",
"refresh_all" : "Force refresh all my feeds ",
"sort_by_asc_desc" : "تاریخˇ سر دچئن",
"titles_only" : "خالی تیتران",
"expanded_view" : "واشاده نما",
"mark_all_as_read" : "همه‌ته مطالبه چاکون بخانده",
"mark_all_older_12_hours" : "Items older than 12 hours ",
"mark_all_older_day" : "یک روز پیشترˇ مطالب",
"mark_all_older_week" : "یک هفته پیشترˇ مطالب",
"mark_all_older_two_weeks" : "چن هفته پیشترˇ مطالب",
"settings" : "تنظیم",
"profile" : "نمایه",
"admin" : "مدیریت",
"about" : "راجه‌به",
"logout" : "برین",
"donate" : "مالی ایلجار"
},
"view" : {
"entry_source" : "from ",
"entry_author" : "by ",
"error_while_loading_feed" : "حئف ببؤ! ای خوراکˇ جؤر أمأنˇ سر خطا ببؤ.",
"keep_unread" : "نخانده بدأر.",
"no_unread_items" : "نخانده مطلب دنه.",
"mark_up_to_here" : "Mark as read up to here ",
"search_for" : "searching for: ",
"no_search_results" : "No match found for the requested keywords "
},
"feedsearch" : {
"hint" : "یکته اشتراکˇ سر نویشتن...",
"help" : "دکمهٔ بازگشت برای انتخاب و دکمه‌های جهت‌دار را برای ناوبری استفاده کن.",
"result_prefix" : "تی اشتراکان:"
},
"settings" : {
"general" : {
"value" : "همگانی",
"language" : "زوان",
"language_contribute" : "واگردانˇ مئنˇ ایلجار",
"show_unread" : "تنها خوراک‌ها و دسته‌های را که دارای مطالب نخوانده هستند نمایش بده.",
"social_buttons" : "نشان‌دادن دکمه‌های اشتراک‌گذاری در شبکه‌های اجتماعی",
"scroll_marks" : "در نمای گسترش‌یافته، لغزیدن بر روی مطالب به‌عنوان نشانه‌گذاری به‌عنوان خوانده‌شده در نظر گرفته‌شوند."
},
"appearance" : "ظاهر",
"scroll_speed" : "Scrolling speed when navigating between entries (in milliseconds) ",
"scroll_speed_help" : "set to 0 to disable ",
"theme" : "پوسته",
"submit_your_theme" : "شیمه پوستهٰ اوسه کونید",
"custom_css" : "سی‌اس‌اس شخصی‌سازی‌شده"
},
"details" : {
"feed_details" : "جزئیات خوراک",
"url" : "نشانی",
"website" : "Website ",
"name" : "نام",
"category" : "جرگه",
"position" : "Position ",
"last_refresh" : "آخرین بروزرسانی",
"message" : "Last refresh message ",
"next_refresh" : "بروزرسانی بعدی",
"queued_for_refresh" : "منتظر برای بروزرسانی",
"feed_url" : "نشانی خوراک",
"generate_api_key_first" : "ابتدا یک کلید API در نمایهٔ خود ایجاد کنید.",
"unsubscribe" : "لغو اشتراک",
"unsubscribe_confirmation" : "Are you sure you want to unsubscribe from this feed? ",
"delete_category_confirmation" : "Are you sure you want to delete this category? ",
"category_details" : "جرگه جزئیات",
"tag_details" : "Tag details ",
"parent_category" : "پئرˇ جرگه"
},
"profile" : {
"user_name" : "کاربری نام",
"email" : "ایمئل",
"change_password" : "رمزه عوضأگودن",
"confirm_password" : "رمزه تأیید گودن",
"minimum_6_chars" : "ناقلن 6 کارکتر",
"passwords_do_not_match" : "رمزان کس‌به‌کسه نخانید",
"api_key" : "کلید API",
"api_key_not_generated" : "هلئه چاگوده نبؤ",
"generate_new_api_key" : "تازه کلید چاگودن API",
"generate_new_api_key_info" : "رمزه عوضأگودن API کلیده چاکونه.",
"opml_export" : "برینأدأن OPML",
"delete_account" : "کاربری حسابه پاکودن",
"delete_account_confirmation" : "Delete your acount? There's no turning back! "
},
"about" : {
"rest_api" : {
"value" : "REST API",
"line1" : "کامافید بر روی JAX-RS و AngularJS ساخته‌شده‌است. به همین دلیل API REST موجود است.",
"link_to_documentation" : "خال به مستندات."
},
"keyboard_shortcuts" : "وئر زئنˇ کلیدان",
"version" : "CommaFeed version ",
"line1_prefix" : "کامافید یکته «رهاوؤت» پروژه ایسه. اینˇ تلمبارؤن",
"line1_suffix" : "ˇمئن میزبانی به.",
"line2_prefix" : "أگه مشکلی پیش بمأ پیشأکشئنˇ صفحه مئن مطرح بکونین.",
"line2_suffix" : " پروژه.",
"line3" : "أگه ای پرؤژهٰ خوش دأنین، یک مبلغی هرچی‌م کی کم ببون ای سایتˇ هزینه‌ٰن و اینˇ توسعه‌دأن‌کسˇ وأسی هدین.",
"line4" : "اوشانی کی بیت‌کؤینه ترجیح دئنن، نشانی ائره نأ.",
"goodies" : {
"value" : "علاوه‌ٰن",
"android_app" : "Android app ",
"subscribe_url" : "نشانی مئنˇ اشتراک",
"chrome_extension" : "کرؤمˇ علاوه",
"firefox_extension" : "فایرفاکسˇ علاوه",
"opera_extension" : "اؤپرا علاوه",
"subscribe_bookmarklet" : "افزودن بوک‌مارک‌لت اشتراک (با کلیک)",
"subscribe_bookmarklet_asc" : "Oldest first ",
"subscribe_bookmarklet_desc" : "Newest first ",
"next_unread_bookmarklet" : "بوک‌مارک‌لت مطلب خوانده نشدهٔ بعدی(با کشیدن و رهاکردن در نوار بوک‌مارک‌لت)"
},
"translation" : {
"value" : "واگردان",
"message" : "أمه شیمه ایلجاره کامافیدˇ واگردانˇ مئن خأییم.",
"link" : "ببدینید چوتؤ تانید واگردانˇ مئن ایلجار بکونید."
},
"announcements" : "اطلاعیه‌ٰن",
"shortcuts" : {
"mouse_middleclick" : "مؤسˇ مئنی کلیک",
"open_next_entry" : "بعدی مطلبه واگدن",
"open_previous_entry" : "قبلی مطلبه واگودن",
"spacebar" : "space/shift+space ",
"move_page_down_up" : "moves the page down/up ",
"focus_next_entry" : "بعدی مطلبˇ سر شؤن بی اینکه وابکونه",
"focus_previous_entry" : "قبلی مطلبˇ سر شؤن بی اینکه وابکونه",
"open_next_feed" : "بعدی خوراک یا جرگهٰ واگودن",
"open_previous_feed" : "قبلی خوراک یا جرگهٰ واگودن",
"open_close_current_entry" : "مطلبه واگودن/دوستن",
"open_current_entry_in_new_window" : "مطلبه تازه درجیکˇ مئن واگودن",
"open_current_entry_in_new_window_background" : "مطلبه تازه درجیکˇ مئن پس‌زمینه واگودن",
"star_unstar" : "مطلبه نشانه‌دار گودن/نگودن",
"mark_current_entry" : "مطلبه نشانه‌دار گودن کی بخانه/نخانده ایسه",
"mark_all_as_read" : "همه‌ته مطالبه نشانه بنه کی بخانده ببؤن",
"open_in_new_tab_mark_as_read" : "مطلبه تازه سرولگˇ میان واگودن و نشانه‌دار کودن به عنوانˇ بخانده",
"fullscreen" : "toggle full screen mode ",
"font_size" : "increase/decrease font size of the current entry ",
"go_to_all" : "go to the All view ",
"go_to_starred" : "go to the Starred view ",
"feed_search" : "اشتراکˇ نامه بنویس و اونه وئر بزن"
}
}
}

180
src/main/app/i18n/hu.js Normal file
View File

@@ -0,0 +1,180 @@
{
"global" : {
"save" : "Mentés",
"cancel" : "Mégsem",
"delete" : "Törlés",
"required" : "Szükséges",
"download" : "Letöltés",
"link" : "Link",
"bookmark" : "Könyvjelző",
"close" : "Bezár",
"tags" : "Címkék"
},
"tree" : {
"subscribe" : "Feliratkozás",
"import" : "Importálás",
"new_category" : "Új kategória",
"all" : "Összes",
"starred" : "Csillagozott"
},
"subscribe" : {
"feed_url" : "Hírcsatorna URL",
"feed_name" : "Hírcsatorna neve",
"category" : "Kategória"
},
"import" : {
"google_reader_prefix" : "Engedd meg, hogy importáljuk a hírcsatornáidat a ",
"google_reader_suffix" : " fiókjából.",
"google_download" : "Alternatívaként, feltöltheti a subscriptions.xml fájlt.",
"google_download_link" : "Letöltheti innen.",
"xml_file" : "OPML Fájl"
},
"new_category" : {
"name" : "Név",
"parent" : "Szülő"
},
"toolbar" : {
"unread" : "Olvasatlan",
"all" : "Összes",
"previous_entry" : "Előző elem",
"next_entry" : "Következő elem",
"refresh" : "Frissítés",
"refresh_all" : "Force refresh all my feeds ",
"sort_by_asc_desc" : "Rendezés időrend szerint",
"titles_only" : "Csak cím",
"expanded_view" : "Részletes nézet",
"mark_all_as_read" : "Az összes megjelölése olvasottként",
"mark_all_older_12_hours" : "Régebbiek 12 óránál",
"mark_all_older_day" : "Régebbiek, mint egy nap",
"mark_all_older_week" : "Régebbiek, mint egy hét",
"mark_all_older_two_weeks" : "Régebbiek, mint két hét",
"settings" : "Beállítások",
"profile" : "Profil",
"admin" : "Admin",
"about" : "Névjegy",
"logout" : "Kilépés",
"donate" : "Anyagi támogatás "
},
"view" : {
"entry_source" : "forrás",
"entry_author" : "szerző",
"error_while_loading_feed" : "Hiba történt ennek a hírcsatornának a betöltésekor",
"keep_unread" : "Megtartása olvasatlanként",
"no_unread_items" : "nincsen olvasatlan eleme.",
"mark_up_to_here" : "Megjelölés olvasottnak eddig",
"search_for" : "keresés erre: ",
"no_search_results" : "Nem található semmi erre a keresett szóra"
},
"feedsearch" : {
"hint" : "Keressen a hírcsatornák között...",
"help" : "Használja a nyíl billentyűket a navigáláshoz, az enter-t a kiválasztáshoz.",
"result_prefix" : "Az ön feliratkozásai:"
},
"settings" : {
"general" : {
"value" : "Általános",
"language" : "Nyelv",
"language_contribute" : "Segítsen a fordításban",
"show_unread" : "Mutassa azokat a hírcsatornákat és kategóriákat amelyekben nincsen olvasatlan bejegyzés",
"social_buttons" : "Mutassa a közösségi oldalak megosztás gombjait",
"scroll_marks" : "Kiterjesztett nézetben, görgetéssel olvasottként jelöli meg a bejegyzést"
},
"appearance" : "Megjelenés",
"scroll_speed" : "A görgetés sebessége, amikor a cikkek között navigál (miliszekundumban)",
"scroll_speed_help" : "Írjon be 0-át a letiltáshoz",
"theme" : "Téma",
"submit_your_theme" : "Küldje el a témáját",
"custom_css" : "Saját CSS"
},
"details" : {
"feed_details" : "Hírcsatorna részletei",
"url" : "URL",
"website" : "Weboldal",
"name" : "Név",
"category" : "Kategória",
"position" : "Pozició",
"last_refresh" : "Utolsó frissítés",
"message" : "Utolsó frissítési üzenet",
"next_refresh" : "Következő frissítés",
"queued_for_refresh" : "Frissítésre vár",
"feed_url" : "Hírcsatorna URL",
"generate_api_key_first" : "A profiljában először egy API kulcsot kell generálnia.",
"unsubscribe" : "Leiratkozás",
"unsubscribe_confirmation" : "Biztos, hogy le akar iratkozni errről a csatornáról?",
"delete_category_confirmation" : "Biztos, hog törölni akarja ezt a kategóriát?",
"category_details" : "Kategória részletei",
"tag_details" : "Címke részletei",
"parent_category" : "Szülő kategória"
},
"profile" : {
"user_name" : "Felhasználói név",
"email" : "E-mail",
"change_password" : "Jelszó megváltoztatás",
"confirm_password" : "Jelszó megerősítése",
"minimum_6_chars" : "Legalább 8 karakter",
"passwords_do_not_match" : "A jelszavak nem egyeznek",
"api_key" : "API kulcs",
"api_key_not_generated" : "Még nincsen generálva",
"generate_new_api_key" : "Új API kulcs generálása",
"generate_new_api_key_info" : "A jelszó megváltoztatása új API kulcsot generál",
"opml_export" : "OPML exportálása",
"delete_account" : "Fiók törlése",
"delete_account_confirmation" : "Törli a fiókját? Innen már nincs visszatérés!"
},
"about" : {
"rest_api" : {
"value" : "REST API",
"line1" : "A CommaFeed a JAX-RS-re és az AngularJS-re épül. Ezért a RESTA API elérhető.",
"link_to_documentation" : "Link a dokumentációhoz."
},
"keyboard_shortcuts" : "Gyorsbillentyűk",
"version" : "CommaFeed verzió",
"line1_prefix" : "A CommaFeed egy nyílt forrású projekt. A forrás megtalálható a ",
"line1_suffix" : "oldalán.",
"line2_prefix" : "Ha hibába ütközik, kérjük jelentse azt a ",
"line2_suffix" : "projekt oldalán.",
"line3" : "Ha tetszik önnek ez a szolgáltatás, akkor kérjük támogassa a fejlesztőket és, hogy fentarthassák a weboldalt.",
"line4" : "Akik jobban szeretnék az oldalt bitcon-nal támogatni, itt a cím",
"goodies" : {
"value" : "Hasznos dolgok",
"android_app" : "Android alkalmazás",
"subscribe_url" : "Feliratkozás az URL-re",
"chrome_extension" : "Chrome bővítmény",
"firefox_extension" : "Firefox kiterjesztés",
"opera_extension" : "Opera kiterjesztés",
"subscribe_bookmarklet" : "Feliratkozás bookmarklet hozzáadása (klikkeléssel)",
"subscribe_bookmarklet_asc" : "Régebbiek először",
"subscribe_bookmarklet_desc" : "Újak először",
"next_unread_bookmarklet" : "Következő olvasatlan elem bookmarklet (húzza fel a könyvjelzősávba)"
},
"translation" : {
"value" : "Fordítás",
"message" : "Segítségét kérjük a CommaFeed fordításához.",
"link" : "Nézze meg, hogyan tud segíteni ebben."
},
"announcements" : "Bejelentések ",
"shortcuts" : {
"mouse_middleclick" : "középső egérgomb ",
"open_next_entry" : "következő hír megnyitása",
"open_previous_entry" : "előző hír megnyitása",
"spacebar" : "szóköz/shift+szóköz",
"move_page_down_up" : "fel/le lépkedhet az oldalon",
"focus_next_entry" : "megnyitás nélkül fókuszál a övetkező elemre",
"focus_previous_entry" : "megnyitás nélkül fókuszál az előző elemre",
"open_next_feed" : "a következő hírcsatorna vagy kategória megnyitása",
"open_previous_feed" : "az előző hírcsatorna vagy kategória megnyitása",
"open_close_current_entry" : "a jelenlegi elem megnyitása/bezárása",
"open_current_entry_in_new_window" : "a jelenlegi elem megnyitása új ablakban",
"open_current_entry_in_new_window_background" : "a jelenlegi elem megnyitása a háttérben, új ablakban",
"star_unstar" : "hírelem csillagozása",
"mark_current_entry" : "elem megjelölése olvasottként",
"mark_all_as_read" : "az összes elem megjelölése olvasottként",
"open_in_new_tab_mark_as_read" : "elem megnyitása új fülön és megjelölése olvasottként",
"fullscreen" : "teljes képernyős mód bekapcsolása",
"font_size" : "a jelenlegi elemnél növeli/csökkenti a betűméretet",
"go_to_all" : "átkapcsol az Összes nézetre",
"go_to_starred" : "átkapcsol a Csillagozott nézetre",
"feed_search" : "név szerinti keresés a hírcsatornák között"
}
}
}

180
src/main/app/i18n/it.js Normal file
View File

@@ -0,0 +1,180 @@
{
"global" : {
"save" : "Salva",
"cancel" : "Cancella",
"delete" : "Elimina",
"required" : "Required",
"download" : "Download",
"link" : "Link",
"bookmark" : "Segnalibro ",
"close" : "Chiudi",
"tags" : "Tags "
},
"tree" : {
"subscribe" : "Iscriviti",
"import" : "Importa",
"new_category" : "Nuova categoria",
"all" : "Tutto",
"starred" : "Preferiti"
},
"subscribe" : {
"feed_url" : "Feed URL",
"feed_name" : "Nome Feed",
"category" : "Categoria"
},
"import" : {
"google_reader_prefix" : "Importa i tuoi feed dal tuo ",
"google_reader_suffix" : " account.",
"google_download" : "Oppure, carica il tuo subscriptions.xml",
"google_download_link" : "Scaricalo da qui",
"xml_file" : "OPML File"
},
"new_category" : {
"name" : "Nome",
"parent" : "Parent"
},
"toolbar" : {
"unread" : "Non letti",
"all" : "Tutti",
"previous_entry" : "Precedente",
"next_entry" : "Successivo",
"refresh" : "Ricarica",
"refresh_all" : "Force refresh all my feeds ",
"sort_by_asc_desc" : "Sort by date asc/desc",
"titles_only" : "Solo titoli",
"expanded_view" : "Espandi",
"mark_all_as_read" : "Contrassegna tutto come già letto",
"mark_all_older_12_hours" : "Items older than 12 hours ",
"mark_all_older_day" : "Elementi più vecchi di un giorno",
"mark_all_older_week" : "Elementi più vecchi di una settimana",
"mark_all_older_two_weeks" : "Elementi più vecchi di due settimane",
"settings" : "Impostazioni",
"profile" : "Profilo",
"admin" : "Admin",
"about" : "Informazioni",
"logout" : "Logout",
"donate" : "Dona"
},
"view" : {
"entry_source" : "from ",
"entry_author" : "by ",
"error_while_loading_feed" : "Si è verificato un errore, mentre caricavo il feed",
"keep_unread" : "Mantiene come da leggere",
"no_unread_items" : "Non ci sono elementi da leggere.",
"mark_up_to_here" : "Mark as read up to here ",
"search_for" : "searching for: ",
"no_search_results" : "No match found for the requested keywords "
},
"feedsearch" : {
"hint" : "Type in a subscription... ",
"help" : "Use the return key to select and arrow keys to navigate. ",
"result_prefix" : "Le tue sottoscrizioni"
},
"settings" : {
"general" : {
"value" : "Generali",
"language" : "Lingua",
"language_contribute" : "Contribuisci con le traduzioni",
"show_unread" : "Show feeds and categories with no unread entries",
"social_buttons" : "Visualizza i social button",
"scroll_marks" : "Marca come letto quando scorri"
},
"appearance" : "Appearance ",
"scroll_speed" : "Scrolling speed when navigating between entries (in milliseconds) ",
"scroll_speed_help" : "set to 0 to disable ",
"theme" : "Tema ",
"submit_your_theme" : "Sottoponi il tuo tema ",
"custom_css" : "Css modificato"
},
"details" : {
"feed_details" : "Dettagli feed",
"url" : "URL",
"website" : "Website ",
"name" : "Nome",
"category" : "Categoria",
"position" : "Posizione ",
"last_refresh" : "Ultimo aggiornamento",
"message" : "Last refresh message ",
"next_refresh" : "Next refresh ",
"queued_for_refresh" : "In attesa per l'aggiornamento ",
"feed_url" : "Feed URL",
"generate_api_key_first" : "Generate an API key in your profile first.",
"unsubscribe" : "Annulla l\"'\"iscrizione",
"unsubscribe_confirmation" : "Are you sure you want to unsubscribe from this feed? ",
"delete_category_confirmation" : "Are you sure you want to delete this category? ",
"category_details" : "Dettagli categoria",
"tag_details" : "Tag details ",
"parent_category" : "Parent category"
},
"profile" : {
"user_name" : "User name",
"email" : "E-mail",
"change_password" : "Cambia password",
"confirm_password" : "Conferma password",
"minimum_6_chars" : "Minimo 6 caratteri",
"passwords_do_not_match" : "Le password non corrispondono",
"api_key" : "API key",
"api_key_not_generated" : "Non generata ancora",
"generate_new_api_key" : "Genera una nuova chiave API",
"generate_new_api_key_info" : "Cambiando la password sarà generata una nuova chiave API",
"opml_export" : "Esporta OPML",
"delete_account" : "Elimina account",
"delete_account_confirmation" : "Delete your acount? There's no turning back! "
},
"about" : {
"rest_api" : {
"value" : "REST API",
"line1" : "CommaFeed is built on top of JAX-RS and AngularJS. As such, a REST API is available.",
"link_to_documentation" : "Link alla documentazione."
},
"keyboard_shortcuts" : "Scorciatoie da tastiera",
"version" : "CommaFeed version ",
"line1_prefix" : "Commefeed è un progetto open-source. I codici sono hostati su ",
"line1_suffix" : ".",
"line2_prefix" : "Se hai qualche problema, segnalalo sulla pagina del ",
"line2_suffix" : " progetto.",
"line3" : "Se ti piace il progetto, prendi in considerazione una donazione per supportare lo sviluppatore e contribuire a coprire i costi di mantenenimento di questo sito on-line.",
"line4" : "Per chi preferisce Bitcoin, questo è l\"'\"indirizzo ",
"goodies" : {
"value" : "Goodies",
"android_app" : "Android app ",
"subscribe_url" : "Subscribe URL ",
"chrome_extension" : "Estenzione per Chrome ",
"firefox_extension" : "Estensione per Firefox",
"opera_extension" : "Estensione per Opera",
"subscribe_bookmarklet" : "Add subscription bookmarklet (click) ",
"subscribe_bookmarklet_asc" : "Oldest first ",
"subscribe_bookmarklet_desc" : "Newest first ",
"next_unread_bookmarklet" : "Next unread item bookmarklet (drag to bookmark bar) "
},
"translation" : {
"value" : "Traduzioni",
"message" : "Abbiamo bisogno del tuo aiuto per tradurre CommaFeed.",
"link" : "Vedi come aiutare con le traduzioni."
},
"announcements" : "Annunci",
"shortcuts" : {
"mouse_middleclick" : "mouse middleclick",
"open_next_entry" : "open next entry",
"open_previous_entry" : "open previous entry",
"spacebar" : "space/shift+space ",
"move_page_down_up" : "moves the page down/up ",
"focus_next_entry" : "set focus on next entry without opening it ",
"focus_previous_entry" : "set focus on previous entry without opening it ",
"open_next_feed" : "open next feed or category ",
"open_previous_feed" : "open previous feed or category ",
"open_close_current_entry" : "open/close current entry",
"open_current_entry_in_new_window" : "open current entry in a new window",
"open_current_entry_in_new_window_background" : "open current entry in a new window in the background ",
"star_unstar" : "star/unstar current entry",
"mark_current_entry" : "mark as read/unread current entry",
"mark_all_as_read" : "mark all entries as read",
"open_in_new_tab_mark_as_read" : "open entry in new tab and mark as read",
"fullscreen" : "toggle full screen mode ",
"font_size" : "increase/decrease font size of the current entry ",
"go_to_all" : "go to the All view ",
"go_to_starred" : "go to the Starred view ",
"feed_search" : "navigate to a subscription by entering the subscription name "
}
}
}

180
src/main/app/i18n/ja.js Normal file
View File

@@ -0,0 +1,180 @@
{
"global" : {
"save" : "保存",
"cancel" : "取り消し",
"delete" : "削除",
"required" : "Required",
"download" : "ダウンロード",
"link" : "リンク",
"bookmark" : "ブックマーク",
"close" : "閉じる",
"tags" : "タグ"
},
"tree" : {
"subscribe" : "購読",
"import" : "インポート",
"new_category" : "新しいカテゴリー",
"all" : "全て",
"starred" : "スター付"
},
"subscribe" : {
"feed_url" : "フィードURL",
"feed_name" : "フィード名",
"category" : "カテゴリー"
},
"import" : {
"google_reader_prefix" : "Googleアカウントからフィードを",
"google_reader_suffix" : "インポートします。",
"google_download" : "または、お持ちのsubscriptions.xmlファイルをアップロードします。",
"google_download_link" : "このリンクからダウンロードして下さい。",
"xml_file" : "OPMLファイル"
},
"new_category" : {
"name" : "名前",
"parent" : "親カテゴリー"
},
"toolbar" : {
"unread" : "未読",
"all" : "全て",
"previous_entry" : "前のエントリー",
"next_entry" : "次のエントリー",
"refresh" : "更新",
"refresh_all" : "全てのフィードを更新",
"sort_by_asc_desc" : "昇順/降順にソート",
"titles_only" : "タイトルのみ",
"expanded_view" : "拡張ビュー",
"mark_all_as_read" : "全て既読にする",
"mark_all_older_12_hours" : "12時間以上前のアイテム",
"mark_all_older_day" : "前日より前のアイテム",
"mark_all_older_week" : "1週間以上前のアイテム",
"mark_all_older_two_weeks" : "2週間以上前のアイテム",
"settings" : "設定",
"profile" : "Profile",
"admin" : "管理者",
"about" : "About",
"logout" : "ログアウト",
"donate" : "寄付"
},
"view" : {
"entry_source" : " より ",
"entry_author" : " 著者 ",
"error_while_loading_feed" : "フィード読み込み中にエラーが発生しました。",
"keep_unread" : "未読として保持",
"no_unread_items" : "未読アイテムはありません。",
"mark_up_to_here" : "ここまで既読",
"search_for" : "検索: ",
"no_search_results" : "検索結果はありません。"
},
"feedsearch" : {
"hint" : "購読フィードを入力...",
"help" : "Enterキーで選択、矢印キーで移動します。",
"result_prefix" : "見つかった購読フィード:"
},
"settings" : {
"general" : {
"value" : "一般",
"language" : "言語",
"language_contribute" : "翻訳に貢献する",
"show_unread" : "未読エントリーのないフィードとカテゴリーを表示",
"social_buttons" : "共有ボタンを表示",
"scroll_marks" : "拡張ビューではエントリーのスクロールで既読にする"
},
"appearance" : "外観",
"scroll_speed" : "エントリー間のスクロールスピード(ミリ秒)",
"scroll_speed_help" : "0に設定すると無効になります",
"theme" : "テーマ",
"submit_your_theme" : "テーマを登録する",
"custom_css" : "カスタムCSS"
},
"details" : {
"feed_details" : "フィードの詳細",
"url" : "URL",
"website" : "Webサイト",
"name" : "名前",
"category" : "カテゴリー",
"position" : "位置",
"last_refresh" : "最終更新",
"message" : "最終更新メッセージ",
"next_refresh" : "次回更新",
"queued_for_refresh" : "更新キュー",
"feed_url" : "フィードURL",
"generate_api_key_first" : "最初にあなたのAPIキーを生成して下さい。",
"unsubscribe" : "購読解除",
"unsubscribe_confirmation" : "Are you sure you want to unsubscribe from this feed? ",
"delete_category_confirmation" : "Are you sure you want to delete this category? ",
"category_details" : "カテゴリー詳細",
"tag_details" : "タグ詳細",
"parent_category" : "親カテゴリー"
},
"profile" : {
"user_name" : "ユーザ名",
"email" : "E-mail",
"change_password" : "パスワードの変更",
"confirm_password" : "変更パスワードの確認",
"minimum_6_chars" : "6文字以上",
"passwords_do_not_match" : "パスワードが一致しません",
"api_key" : "APIキー",
"api_key_not_generated" : "APIキーが生成されていません",
"generate_new_api_key" : "新しいAPIキーを生成",
"generate_new_api_key_info" : "パスワードの変更は新しいAPIキーが生成されます",
"opml_export" : "OPMLエクスポート",
"delete_account" : "アカウント削除",
"delete_account_confirmation" : "Delete your acount? There's no turning back! "
},
"about" : {
"rest_api" : {
"value" : "REST API",
"line1" : "CommaFeedはJAX-RSとAngularJSを使用しているので、REST APIも利用可能です。",
"link_to_documentation" : "ドキュメントへのリンク"
},
"keyboard_shortcuts" : "キーボードショートカット",
"version" : "CommaFeedバージョン",
"line1_prefix" : "CommaFeedはオープンソースプロジェクトです。ソースは",
"line1_suffix" : "にホスティングされています。",
"line2_prefix" : "もし問題を登録したい場合、",
"line2_suffix" : "プロジェクトのissuesページに報告して下さい。",
"line3" : "このプロジェクトを気に入った場合、開発者やWebサイトの運営コストをサポートするための寄付を検討して下さいね。",
"line4" : "Bitcoinなら寄付できる方、アドレスはこちらです。",
"goodies" : {
"value" : "Goodies",
"android_app" : "Androidアプリ",
"subscribe_url" : "購読URL",
"chrome_extension" : "Chrome拡張",
"firefox_extension" : "Firefox拡張",
"opera_extension" : "Opera拡張",
"subscribe_bookmarklet" : "購読ブックマークレットを追加(クリック)",
"subscribe_bookmarklet_asc" : "古い順",
"subscribe_bookmarklet_desc" : "新しい順",
"next_unread_bookmarklet" : "次の未読アイテムブックマークレット(ブックマークバーへドラッグ)"
},
"translation" : {
"value" : "翻訳",
"message" : "CommaFeedの翻訳に助けが必要です",
"link" : "どうやって翻訳に貢献できるか見て下さい。"
},
"announcements" : "Announcements",
"shortcuts" : {
"mouse_middleclick" : "中クリック",
"open_next_entry" : "次のエントリーを開く",
"open_previous_entry" : "前のエントリーを開く",
"spacebar" : "space/shift+space",
"move_page_down_up" : "ページ移動",
"focus_next_entry" : "次のエントリーを開かずにフォーカス移動",
"focus_previous_entry" : "前のエントリーを開かずにフォーカス移動",
"open_next_feed" : "次のフィード/カテゴリーを開く",
"open_previous_feed" : "前のフィード/カテゴリーを開く",
"open_close_current_entry" : "現在のエントリーを開く/閉じる",
"open_current_entry_in_new_window" : "現在のエントリーを新しいウィンドウで開く",
"open_current_entry_in_new_window_background" : "現在のエントリーを新しいバックグラウンドウィンドウで開く",
"star_unstar" : "現在のエントリーにスターを付ける/解除する",
"mark_current_entry" : "現在のエントリーを既読/未読にする",
"mark_all_as_read" : "全エントリーを既読にする",
"open_in_new_tab_mark_as_read" : "エントリーを既読にして新しいタブで開く",
"fullscreen" : "フルスクリーントグル",
"font_size" : "現在のエントリーのフォントサイズを大きく/小さくする",
"go_to_all" : "All viewに変更する",
"go_to_starred" : "スター付きviewに変更する",
"feed_search" : "購読画面(subscription nameの入力)に移動する"
}
}
}

180
src/main/app/i18n/ko.js Normal file
View File

@@ -0,0 +1,180 @@
{
"global" : {
"save" : "저장",
"cancel" : "취소",
"delete" : "삭제",
"required" : "필수",
"download" : "Download ",
"link" : "Link ",
"bookmark" : "Bookmark ",
"close" : "Close ",
"tags" : "Tags "
},
"tree" : {
"subscribe" : "구독",
"import" : "임포트",
"new_category" : "새로운 카테고리",
"all" : "전체",
"starred" : "스타"
},
"subscribe" : {
"feed_url" : "피드 URL",
"feed_name" : "피드 이름",
"category" : "카테로기"
},
"import" : {
"google_reader_prefix" : "당신의 Google Reader",
"google_reader_suffix" : " 에서 피드들을 가져오겠습니다.",
"google_download" : "아니면, subscription.xml 파일을 업로드 해주세요.",
"google_download_link" : "다운로드 링크",
"xml_file" : "OPML File"
},
"new_category" : {
"name" : "이름",
"parent" : "카테고리 주소로 가기"
},
"toolbar" : {
"unread" : "안읽음",
"all" : "전체",
"previous_entry" : "Previous entry ",
"next_entry" : "Next entry ",
"refresh" : "리프래쉬",
"refresh_all" : "Force refresh all my feeds ",
"sort_by_asc_desc" : "Sort by date asc/desc ",
"titles_only" : "Titles only ",
"expanded_view" : "Expanded view ",
"mark_all_as_read" : "읽음표시",
"mark_all_older_12_hours" : "Items older than 12 hours ",
"mark_all_older_day" : "Items older than a day ",
"mark_all_older_week" : "Items older than a week ",
"mark_all_older_two_weeks" : "Items older than two weeks ",
"settings" : "설정",
"profile" : "프로필",
"admin" : "괸리자",
"about" : "더보기",
"logout" : "로그아웃",
"donate" : "기부하기"
},
"view" : {
"entry_source" : "from ",
"entry_author" : "by ",
"error_while_loading_feed" : "피드로딩중 에러",
"keep_unread" : "안읽은것 저장",
"no_unread_items" : " 읽지않은 항목이 없읍니다.",
"mark_up_to_here" : "Mark as read up to here ",
"search_for" : "searching for: ",
"no_search_results" : "No match found for the requested keywords "
},
"feedsearch" : {
"hint" : "Type in a subscription... ",
"help" : "Use the return key to select and arrow keys to navigate. ",
"result_prefix" : "Your subscriptions: "
},
"settings" : {
"general" : {
"value" : "일반",
"language" : "일반 언어",
"language_contribute" : "번역 도움하기",
"show_unread" : "안읽은 항목들이 있는 피드와 카테고리 보여주기",
"social_buttons" : "소셜미디아 버튼들 보여주기",
"scroll_marks" : "Expanded View에서 스크롤하면 항목들을 읽음으로 저장하기"
},
"appearance" : "Appearance ",
"scroll_speed" : "Scrolling speed when navigating between entries (in milliseconds) ",
"scroll_speed_help" : "set to 0 to disable ",
"theme" : "Theme ",
"submit_your_theme" : "Submit your theme ",
"custom_css" : "커스톰 CSS"
},
"details" : {
"feed_details" : "피드 세부",
"url" : "유알엘",
"website" : "Website ",
"name" : "이름",
"category" : "카테고리",
"position" : "Position ",
"last_refresh" : "마지막 리프래쉬",
"message" : "Last refresh message ",
"next_refresh" : "Next refresh ",
"queued_for_refresh" : "Queued for refresh ",
"feed_url" : "피드 유알엘",
"generate_api_key_first" : "당신의 프로필을 위해 API Key를 먼저 생성하세요.",
"unsubscribe" : "주소 삭제",
"unsubscribe_confirmation" : "Are you sure you want to unsubscribe from this feed? ",
"delete_category_confirmation" : "Are you sure you want to delete this category? ",
"category_details" : "카테고리 세부",
"tag_details" : "Tag details ",
"parent_category" : "부모 카테고리"
},
"profile" : {
"user_name" : "사용자 이름",
"email" : "이메일",
"change_password" : "비밀번호변경",
"confirm_password" : "비밀번호확인",
"minimum_6_chars" : "최소로 6자문자가 필요합니다.",
"passwords_do_not_match" : "비밀번호가 일치하지 않습니다.",
"api_key" : "API key",
"api_key_not_generated" : "아직 API Key가 생성되지 않았습니다.",
"generate_new_api_key" : "API Key 생성하기",
"generate_new_api_key_info" : "비밀번호를 변경하면 새로운 API Key가 생성됩니다.",
"opml_export" : "OPML export ",
"delete_account" : "프로필삭제",
"delete_account_confirmation" : "Delete your acount? There's no turning back! "
},
"about" : {
"rest_api" : {
"value" : "REST API",
"line1" : "CommaFeed는 JAX-RS하고 AngularJS를 이용해서 만들었습니다. 그렇기 때문에 REST API를 사용할수있습니다.",
"link_to_documentation" : "문서 링크."
},
"keyboard_shortcuts" : "단축기",
"version" : "CommaFeed version ",
"line1_prefix" : "CommaFeed는 오픈 소스프로젝트입니다. 소스는",
"line1_suffix" : "에 있습니다.",
"line2_prefix" : "문제가 발생하는 경우",
"line2_suffix" : " 프로젝트 문제페이지에 보고하십시요.",
"line3" : "이 프로젝트를 좋아하시면 개발자를 지원하고 웹사이트 유지용비를 충당하는 데 도움이되는 기부금을 고려하시기 바랍니다.",
"line4" : "For those of you who prefer bitcoin, here is the address ",
"goodies" : {
"value" : "Goodies",
"android_app" : "Android app ",
"subscribe_url" : "Subscribe URL ",
"chrome_extension" : "Chrome extension ",
"firefox_extension" : "Firefox extension ",
"opera_extension" : "Opera extension ",
"subscribe_bookmarklet" : "Add subscription bookmarklet (click) ",
"subscribe_bookmarklet_asc" : "Oldest first ",
"subscribe_bookmarklet_desc" : "Newest first ",
"next_unread_bookmarklet" : "Next unread item bookmarklet (drag to bookmark bar) "
},
"translation" : {
"value" : "번역",
"message" : "CommaFeed를 번역할려면 당신의 도움이 필요합니다.",
"link" : "번역에 기여하기"
},
"announcements" : "공지",
"shortcuts" : {
"mouse_middleclick" : "마우시 미들클릭",
"open_next_entry" : "다음 항목 열기",
"open_previous_entry" : "이전 항목 열기",
"spacebar" : "space/shift+space ",
"move_page_down_up" : "moves the page down/up ",
"focus_next_entry" : "set focus on next entry without opening it ",
"focus_previous_entry" : "set focus on previous entry without opening it ",
"open_next_feed" : "open next feed or category ",
"open_previous_feed" : "open previous feed or category ",
"open_close_current_entry" : "현재 항목 열기/닫기",
"open_current_entry_in_new_window" : "새 창에서 현재 항목열기",
"open_current_entry_in_new_window_background" : "open current entry in a new window in the background ",
"star_unstar" : "현재 항목 스타/스타제거",
"mark_current_entry" : "현재 항목 읽음/안읽음 표시",
"mark_all_as_read" : "모든 항목 읽음으로 표시",
"open_in_new_tab_mark_as_read" : "읽음으로 표시하고 새로운 탭에서 열기",
"fullscreen" : "toggle full screen mode ",
"font_size" : "increase/decrease font size of the current entry ",
"go_to_all" : "go to the All view ",
"go_to_starred" : "go to the Starred view ",
"feed_search" : "navigate to a subscription by entering the subscription name "
}
}
}

180
src/main/app/i18n/ms.js Normal file
View File

@@ -0,0 +1,180 @@
{
"global" : {
"save" : "Save",
"cancel" : "Batal",
"delete" : "Padam",
"required" : "Wajib",
"download" : "Muat turun",
"link" : "Pautan",
"bookmark" : "Bookmark",
"close" : "Tutup",
"tags" : "Tags "
},
"tree" : {
"subscribe" : "Langgan",
"import" : "Import",
"new_category" : "Kategori Baru",
"all" : "Semua",
"starred" : "Dibintang"
},
"subscribe" : {
"feed_url" : "URL Feed",
"feed_name" : "Nama Feed",
"category" : "Kategori"
},
"import" : {
"google_reader_prefix" : "Import feed dari ",
"google_reader_suffix" : " akaun.",
"google_download" : "Sebagai alternatif, muat naik fail subscriptions.xml anda.",
"google_download_link" : "Muat turun dari sini",
"xml_file" : "Fail OPML"
},
"new_category" : {
"name" : "Nama",
"parent" : "Induk"
},
"toolbar" : {
"unread" : "Belum Dibaca",
"all" : "Semua",
"previous_entry" : "Sebelumnya",
"next_entry" : "Selepasnya",
"refresh" : "Refresh",
"refresh_all" : "Force refresh all my feeds ",
"sort_by_asc_desc" : "Aturkan mengikut tarikh (baru/lama)",
"titles_only" : "Tajuk sahaja",
"expanded_view" : "Wide view",
"mark_all_as_read" : "Tanda kesemuanya telah dibaca",
"mark_all_older_12_hours" : "Items older than 12 hours ",
"mark_all_older_day" : "Lebih lama daripada sehari",
"mark_all_older_week" : "Lebih lama daripada seminggu",
"mark_all_older_two_weeks" : "Lebih lama daripada dua minggu",
"settings" : "Setting",
"profile" : "Profil",
"admin" : "Admin",
"about" : "About",
"logout" : "Logout",
"donate" : "Derma"
},
"view" : {
"entry_source" : "from ",
"entry_author" : "oleh ",
"error_while_loading_feed" : "Kesilapan semasa memuat turun feed ini",
"keep_unread" : "Simpan tidak dibaca",
"no_unread_items" : "tiada item yang belum dibaca.",
"mark_up_to_here" : "Mark as read up to here ",
"search_for" : "searching for: ",
"no_search_results" : "No match found for the requested keywords "
},
"feedsearch" : {
"hint" : "Taipkan langganan...",
"help" : "Guna kekunci Return untuk membuat pilihan dan kekunci arah untuk menavigasi.",
"result_prefix" : "Langganan anda:"
},
"settings" : {
"general" : {
"value" : "Setting am",
"language" : "Bahasa",
"language_contribute" : "Sumbang penterjemahan",
"show_unread" : "Tunjuk semua feed dan kategori yang telah dibaca",
"social_buttons" : "Tunjuk social sharing",
"scroll_marks" : "Dalam wide view, tanda item dibaca ketika scrolling"
},
"appearance" : "Rupa",
"scroll_speed" : "Scrolling speed when navigating between entries (in milliseconds) ",
"scroll_speed_help" : "set to 0 to disable ",
"theme" : "Tema",
"submit_your_theme" : "Muat naik tema anda",
"custom_css" : "Custom CSS"
},
"details" : {
"feed_details" : "Butir-butir Feed",
"url" : "URL",
"website" : "Website ",
"name" : "Nama",
"category" : "Kategori",
"position" : "Posisi",
"last_refresh" : "Refresh terakhir",
"message" : "Last refresh message ",
"next_refresh" : "Refresh seterusnya",
"queued_for_refresh" : "Diaturkan untuk refresh",
"feed_url" : "URL Feed",
"generate_api_key_first" : "Janakan API key dalam profil anda dahulu.",
"unsubscribe" : "Hentikan langganan",
"unsubscribe_confirmation" : "Are you sure you want to unsubscribe from this feed? ",
"delete_category_confirmation" : "Are you sure you want to delete this category? ",
"category_details" : "Butir-butir kategori",
"tag_details" : "Tag details ",
"parent_category" : "Kategori induk"
},
"profile" : {
"user_name" : "User name",
"email" : "E-mel",
"change_password" : "Tukar kata laluan",
"confirm_password" : "Sahkan kata laluan",
"minimum_6_chars" : "Minimum 6 huruf",
"passwords_do_not_match" : "Kata laluan tidak sama",
"api_key" : "API key",
"api_key_not_generated" : "Belum dijana",
"generate_new_api_key" : "Jana API key baru",
"generate_new_api_key_info" : "Pertukaran kata laluan akan menjanakan API key yang baru",
"opml_export" : "Export OPML",
"delete_account" : "Padam akaun",
"delete_account_confirmation" : "Delete your acount? There's no turning back! "
},
"about" : {
"rest_api" : {
"value" : "REST API",
"line1" : "CommaFeed diaturcarakan dengan JAX-RS dan AngularJS. Oleh itu, REST API boleh didapati.",
"link_to_documentation" : "Pautan ke dokumentasi."
},
"keyboard_shortcuts" : "Pintasan papan kekunci",
"version" : "CommaFeed version ",
"line1_prefix" : "CommaFeed adalah projek open-source. Sources are berada di ",
"line1_suffix" : ".",
"line2_prefix" : "Jika anda menghadapi masalah, sila laporkan di halaman isu-isu di ",
"line2_suffix" : " projek.",
"line3" : "Jika anda suka projek ini, anda boleh menbuat dermaan kepada pengaturcara untuk membantu menampung kos laman web ini.",
"line4" : "Jika anda guna bitcoin, halamannya adalah ",
"goodies" : {
"value" : "Goodies",
"android_app" : "Android app",
"subscribe_url" : "URL melanggan",
"chrome_extension" : "Chrome extension",
"firefox_extension" : "Firefox extension",
"opera_extension" : "Opera extension",
"subscribe_bookmarklet" : "Jana bookmarklet langganan (klik)",
"subscribe_bookmarklet_asc" : "Oldest first ",
"subscribe_bookmarklet_desc" : "Newest first ",
"next_unread_bookmarklet" : "Item bookmarklet yang belum dibaca seterusnya (seret ke bookmark bar)"
},
"translation" : {
"value" : "Terjemahan",
"message" : "Kami perlukan bantuan anda untuk menterjemahkan CommaFeed.",
"link" : "Bagaimana mengyumbang penterjemahan."
},
"announcements" : "Pengumuman",
"shortcuts" : {
"mouse_middleclick" : "Klik tengah",
"open_next_entry" : "buka item seterusya",
"open_previous_entry" : "buka item sebelumnya",
"spacebar" : "space/shift+space",
"move_page_down_up" : "Gerak halaman ke bawah/atas",
"focus_next_entry" : "fokus kepada item seterusnya tanpa membuka",
"focus_previous_entry" : "fokus kepada item sebelumnya tanpa membuka",
"open_next_feed" : "buka feed atau kategori seterusnya",
"open_previous_feed" : "buka feed atau kategori sebelumnya",
"open_close_current_entry" : "buka/tutup entry kini",
"open_current_entry_in_new_window" : "buka entry kini di window yang baru",
"open_current_entry_in_new_window_background" : "buka entry kini di window baru di latar belakang",
"star_unstar" : "bintang/nyah-bintang entry kini",
"mark_current_entry" : "tanda entry kini telah dibaca/belum dibaca",
"mark_all_as_read" : "tanda semua entry telah dibaca",
"open_in_new_tab_mark_as_read" : "buka entry di tab baru dan tanda telah dibaca",
"fullscreen" : "toggle mod skrin penuh",
"font_size" : "kecil/besar fon entry kini",
"go_to_all" : "go to the All view ",
"go_to_starred" : "go to the Starred view ",
"feed_search" : "pergi ke langganan dengan nama langganan"
}
}
}

180
src/main/app/i18n/nb.js Normal file
View File

@@ -0,0 +1,180 @@
{
"global" : {
"save" : "Lagre",
"cancel" : "Avbryt",
"delete" : "Slett",
"required" : "Påkrevd",
"download" : "Last ned",
"link" : "Lenke",
"bookmark" : "Bokmerke",
"close" : "Lukk",
"tags" : "Tags "
},
"tree" : {
"subscribe" : "Abonner",
"import" : "Importer",
"new_category" : "Ny kategori",
"all" : "Alle",
"starred" : "Merkede artikler"
},
"subscribe" : {
"feed_url" : "URL for abonnement",
"feed_name" : "Abonnementsnavn",
"category" : "Kategori"
},
"import" : {
"google_reader_prefix" : "La meg importere dine abonnementer fra din",
"google_reader_suffix" : " bruker.",
"google_download" : "Alternativt, last opp din egen subscriptions.xml-fil.",
"google_download_link" : "Last ned herfra.",
"xml_file" : "OPML-fil"
},
"new_category" : {
"name" : "Navn",
"parent" : "Overordnet"
},
"toolbar" : {
"unread" : "Uleste",
"all" : "Alle",
"previous_entry" : "Forrige artikkel",
"next_entry" : "Neste artikkel",
"refresh" : "Oppdater",
"refresh_all" : "Force refresh all my feeds ",
"sort_by_asc_desc" : "Sorter etter dato ny/gammel",
"titles_only" : "Kun titler",
"expanded_view" : "Utvidet visning",
"mark_all_as_read" : "Merk alle som lest",
"mark_all_older_12_hours" : "Items older than 12 hours ",
"mark_all_older_day" : "Artikler eldre enn én dag",
"mark_all_older_week" : "Artikler eldre enn én uke",
"mark_all_older_two_weeks" : "Artikler eldre enn to uker",
"settings" : "Innstillinger",
"profile" : "Profil",
"admin" : "Admin",
"about" : "Om",
"logout" : "Logg ut",
"donate" : "Doner"
},
"view" : {
"entry_source" : "from ",
"entry_author" : "by ",
"error_while_loading_feed" : "Feil under lasting av artikkel",
"keep_unread" : "Behold som ulest",
"no_unread_items" : "har ingen uleste artikler.",
"mark_up_to_here" : "Mark as read up to here ",
"search_for" : "searching for: ",
"no_search_results" : "No match found for the requested keywords "
},
"feedsearch" : {
"hint" : "Skriv inn et abonnement...",
"help" : "Bruk entertasten for å velge og piltastene for å navigere.",
"result_prefix" : "Dine abonnementer:"
},
"settings" : {
"general" : {
"value" : "Generelt",
"language" : "Språk",
"language_contribute" : "Bidra med oversettelser",
"show_unread" : "Vis abonnementer og kategorier uten nye artikler",
"social_buttons" : "Vis delingsknapper",
"scroll_marks" : "I utvidet visning, merk artikler som leste når du blar deg forbi dem."
},
"appearance" : "Utseende",
"scroll_speed" : "Scrolling speed when navigating between entries (in milliseconds) ",
"scroll_speed_help" : "set to 0 to disable ",
"theme" : "Drakt",
"submit_your_theme" : "Legg til egen drakt",
"custom_css" : "Egendefinert CSS"
},
"details" : {
"feed_details" : "Abonnementsdetaljer",
"url" : "URL",
"website" : "Website ",
"name" : "Navn",
"category" : "Kategori",
"position" : "Posisjon",
"last_refresh" : "Siste oppdatering",
"message" : "Last refresh message ",
"next_refresh" : "Neste oppdatering",
"queued_for_refresh" : "I kø for oppdatering",
"feed_url" : "URL for abonnement",
"generate_api_key_first" : "Generer en API-nøkkel under profilinnstillinger først.",
"unsubscribe" : "Avslutt abonnement",
"unsubscribe_confirmation" : "Are you sure you want to unsubscribe from this feed? ",
"delete_category_confirmation" : "Are you sure you want to delete this category? ",
"category_details" : "Kategoridetaljer",
"tag_details" : "Tag details ",
"parent_category" : "Overordnet kategori"
},
"profile" : {
"user_name" : "Brukernavn",
"email" : "E-post",
"change_password" : "Endre passord",
"confirm_password" : "Bekreft passord",
"minimum_6_chars" : "Minimum 6 tegn",
"passwords_do_not_match" : "Passordene er ikke like",
"api_key" : "API-nøkkel",
"api_key_not_generated" : "Har ikke blitt generert",
"generate_new_api_key" : "Generer ny API-nøkkel",
"generate_new_api_key_info" : "Endring av passord vil generere en ny API-nøkkel",
"opml_export" : "OPML-eksport",
"delete_account" : "Slett bruker",
"delete_account_confirmation" : "Delete your acount? There's no turning back! "
},
"about" : {
"rest_api" : {
"value" : "REST API",
"line1" : "CommaFeed er bygget på toppen av JAX-RS og AngularJS. På grunn av dette er REST API tilgjengelig.",
"link_to_documentation" : "Lenke til dokumentasjon."
},
"keyboard_shortcuts" : "Hurtigtaster",
"version" : "CommaFeed version ",
"line1_prefix" : "CommaFeed er et prosjekt med åpen kildekode. Kildekoden er tilgjengelig på ",
"line1_suffix" : ".",
"line2_prefix" : "Vis du oppdager en feil eller et problem, rapporter det på ",
"line2_suffix" : " siden til prosjekt.",
"line3" : "Dersom du liker dette prosjektet, kan du vurdere en donasjon for støtte utvikleren, og bidra med å dekke kostnadene til å drifte nettsiden.",
"line4" : "For de som foretrekker bitcoin, her er adressa",
"goodies" : {
"value" : "Godsaker",
"android_app" : "Android app ",
"subscribe_url" : "Abonner URL",
"chrome_extension" : "Chrome-utvidelse",
"firefox_extension" : "Firefox-utvidelse",
"opera_extension" : "Opera-utvidelse",
"subscribe_bookmarklet" : "Nytt abonnement-bokmerkeprogram (klikk)",
"subscribe_bookmarklet_asc" : "Oldest first ",
"subscribe_bookmarklet_desc" : "Newest first ",
"next_unread_bookmarklet" : "Neste uleste artikkel-bokmerkeprogram (dra til bokmerkemenyen)"
},
"translation" : {
"value" : "Oversettelse",
"message" : "Vi trenger din hjelp til å oversette CommaFeed.",
"link" : "Se hvordan du kan hjelpe til med oversettelser."
},
"announcements" : "Kunngjøringer",
"shortcuts" : {
"mouse_middleclick" : "midtre museknapp/musehjulet",
"open_next_entry" : "åpne neste artikkel",
"open_previous_entry" : "åpne forrige artikkel",
"spacebar" : "space/shift+space ",
"move_page_down_up" : "moves the page down/up ",
"focus_next_entry" : "sett fokus på neste artikkel uten å åpne den",
"focus_previous_entry" : "sett fokus på forrige artikkel uten å åpne den",
"open_next_feed" : "åpne neste abonnement eller kategori",
"open_previous_feed" : "åpne forrige abonnement eller kategori",
"open_close_current_entry" : "åpne/lukke gjeldende artikkel",
"open_current_entry_in_new_window" : "åpne gjeldende artikkel i et nytt vindu",
"open_current_entry_in_new_window_background" : "åpne gjeldende artikkel i et nytt bakgrunnsvindu",
"star_unstar" : "legg til stjerne/fjern stjerne fra gjeldende artikkel",
"mark_current_entry" : "merk gjeldende artikkel som lest/ulest",
"mark_all_as_read" : "merk alle artikler som lest",
"open_in_new_tab_mark_as_read" : "åpne artikkel i ny fane og merk som lest",
"fullscreen" : "toggle full screen mode ",
"font_size" : "increase/decrease font size of the current entry ",
"go_to_all" : "go to the All view ",
"go_to_starred" : "go to the Starred view ",
"feed_search" : "naviger til et abonnement ved å skrive inn abonnementsnavnet"
}
}
}

180
src/main/app/i18n/nl.js Normal file
View File

@@ -0,0 +1,180 @@
{
"global" : {
"save" : "Opslaan",
"cancel" : "Annuleren",
"delete" : "Verwijderen",
"required" : "Verplicht",
"download" : "Download",
"link" : "Link",
"bookmark" : "Bookmark",
"close" : "Sluiten ",
"tags" : "Tags "
},
"tree" : {
"subscribe" : "Abonneer",
"import" : "Importeer",
"new_category" : "Nieuwe categorie",
"all" : "Alles",
"starred" : "Favorieten"
},
"subscribe" : {
"feed_url" : "Feed URL",
"feed_name" : "Feed naam",
"category" : "Categorie"
},
"import" : {
"google_reader_prefix" : "Laat je feeds importeren vanuit jouw",
"google_reader_suffix" : " account.",
"google_download" : "Als alternatief kun je je subscriptions.xml bestand uploaden.",
"google_download_link" : "Download het hier.",
"xml_file" : "OPML Bestand"
},
"new_category" : {
"name" : "Naam",
"parent" : "Parent"
},
"toolbar" : {
"unread" : "Ongelezen",
"all" : "Alles",
"previous_entry" : "Vorig artikel",
"next_entry" : "Volgend artikel",
"refresh" : "Vernieuwen",
"refresh_all" : "Force refresh all my feeds ",
"sort_by_asc_desc" : "Sorteer op datum opl/afl",
"titles_only" : "Alleen titels",
"expanded_view" : "Uitgebreide weergave",
"mark_all_as_read" : "Markeer alles als gelezen",
"mark_all_older_12_hours" : "Items older than 12 hours ",
"mark_all_older_day" : "Artikelen ouder dan een dag",
"mark_all_older_week" : "Artikelen ouder dan een week",
"mark_all_older_two_weeks" : "Artikelen ouder dan twee weken",
"settings" : "Instellingen",
"profile" : "Profiel",
"admin" : "Administratie",
"about" : "Over ons",
"logout" : "Log uit",
"donate" : "Doneer"
},
"view" : {
"entry_source" : "van",
"entry_author" : "door",
"error_while_loading_feed" : "Fout tijdens het laden van de feed",
"keep_unread" : "Behoud ongelezen",
"no_unread_items" : "Heeft geen ongelezen artikelen",
"mark_up_to_here" : "Markeer tot hier als gelezen",
"search_for" : "searching for: ",
"no_search_results" : "No match found for the requested keywords "
},
"feedsearch" : {
"hint" : "Type een abonnement in... ",
"help" : "Gebruik Enter om te selecteren en de pijltjestoetsen om te navigeren.",
"result_prefix" : "Jouw abonnementen:"
},
"settings" : {
"general" : {
"value" : "Algemeen",
"language" : "Taal",
"language_contribute" : "Draag bij met vertalingen",
"show_unread" : "Laat feeds en categorieën zonder ongelezen artikelen zien",
"social_buttons" : "Laat Social Media knoppen zien",
"scroll_marks" : "Markeer artikelen als gelezen, wanneer je er doorheen scrollt"
},
"appearance" : "Uiterlijk",
"scroll_speed" : "Scrolling speed when navigating between entries (in milliseconds) ",
"scroll_speed_help" : "set to 0 to disable ",
"theme" : "Thema",
"submit_your_theme" : "Stuur thema in",
"custom_css" : "Custom CSS"
},
"details" : {
"feed_details" : "Feed details",
"url" : "URL",
"website" : "Website",
"name" : "Naam",
"category" : "Categorie",
"position" : "Positie",
"last_refresh" : "Laatste vernieuwing",
"message" : "Last refresh message ",
"next_refresh" : "Volgende vernieuwing",
"queued_for_refresh" : "In wachtrij voor vernieuwing",
"feed_url" : "Feed URL",
"generate_api_key_first" : "Genereer eerst een API sleutel in je profiel.",
"unsubscribe" : "Abonnement opzeggen",
"unsubscribe_confirmation" : "Are you sure you want to unsubscribe from this feed? ",
"delete_category_confirmation" : "Are you sure you want to delete this category? ",
"category_details" : "Categorie details",
"tag_details" : "Tag details ",
"parent_category" : "Bovenliggende categorie"
},
"profile" : {
"user_name" : "Gebruikersnaam",
"email" : "E-mail",
"change_password" : "Verander wachtwoord",
"confirm_password" : "Bevestig wachtwoord",
"minimum_6_chars" : "Minimaal 6 tekens",
"passwords_do_not_match" : "Wachtwoorden komen niet overeen",
"api_key" : "API sleutel",
"api_key_not_generated" : "Nog niet gegenereerd",
"generate_new_api_key" : "Genereer nieuwe API sleutel",
"generate_new_api_key_info" : "Het veranderen van het wachtwoord genereert een nieuwe API sleutel",
"opml_export" : "OPML export",
"delete_account" : "Verwijder account",
"delete_account_confirmation" : "Delete your acount? There's no turning back! "
},
"about" : {
"rest_api" : {
"value" : "REST API",
"line1" : "CommaFeed is gebouwd op basis van JAX-RS en AngularJS. Als zodanig is er een REST API beschikbaar.",
"link_to_documentation" : "Link naar de documentatie"
},
"keyboard_shortcuts" : "Sneltoetsen",
"version" : "CommaFeed version ",
"line1_prefix" : "CommaFeed is een open-source project. Bronnen worden gehost op ",
"line1_suffix" : ".",
"line2_prefix" : "Als je een probleem tegenkomt, rapporteer dit dan a.u.b. op de Issues pagina van het ",
"line2_suffix" : " project.",
"line3" : "Als je dit project leuk vindt, overweeg dan te doneren om de ontwikkelaars te ondersteunen en hosting kosten te drukken.",
"line4" : "Voor degenen die liever bitcoin gebruiken, hier is het adres",
"goodies" : {
"value" : "Goodies",
"android_app" : "Android app",
"subscribe_url" : "Abonneer URL",
"chrome_extension" : "Chrome extensie",
"firefox_extension" : "Firefox extensie",
"opera_extension" : "Opera extensie",
"subscribe_bookmarklet" : "Voeg abonnement toe bookmarklet (klik)",
"subscribe_bookmarklet_asc" : "Oudste eerst",
"subscribe_bookmarklet_desc" : "Nieuwste eerst",
"next_unread_bookmarklet" : "Volgend ongelezen item bookmarklet (sleep naar bladwijzerbalk)"
},
"translation" : {
"value" : "Vertalingen",
"message" : "We hebben jouw hulp nodig om CommaFeed te vertalen.",
"link" : "Bekijk hier hoe je kunt bijdragen met vertalingen."
},
"announcements" : "Aankondigingen",
"shortcuts" : {
"mouse_middleclick" : "middelste muisknop",
"open_next_entry" : "open het volgende artikel",
"open_previous_entry" : "open het vorige artikel",
"spacebar" : "spatie/shift+spatie",
"move_page_down_up" : "beweegt de pagina naar onder/boven",
"focus_next_entry" : "plaats focus op volgend artikel zonder het te openen",
"focus_previous_entry" : "plaats focus op vorig artikel zonder het te openen",
"open_next_feed" : "open volgende feed of categorie",
"open_previous_feed" : "open vorige feed of categorie",
"open_close_current_entry" : "open/sluit het huidige artikel",
"open_current_entry_in_new_window" : "open het huidige artikel in een nieuw venster",
"open_current_entry_in_new_window_background" : "open huidig artikel in een nieuw venster op de achtergrond",
"star_unstar" : "voeg artikel toe aan/verwijder uit favorieten",
"mark_current_entry" : "markeer huidig artikel als gelezen/ongelezen",
"mark_all_as_read" : "markeer alle artikelen als gelezen",
"open_in_new_tab_mark_as_read" : "open artikel in een nieuw tabblad en markeer als gelezen",
"fullscreen" : "schakel tussen fullscreen weergave",
"font_size" : "vergroot/verklein tekst in huidig artikel",
"go_to_all" : "ga naar de ALLES-weergave",
"go_to_starred" : "ga naar de Favorieten-weergave",
"feed_search" : "navigeer naar een abonnement door diens naam in te typen"
}
}
}

180
src/main/app/i18n/nn.js Normal file
View File

@@ -0,0 +1,180 @@
{
"global" : {
"save" : "Lagre",
"cancel" : "Avbryt",
"delete" : "Slett",
"required" : "Påkravd",
"download" : "Last ned",
"link" : "Lenkje",
"bookmark" : "Bokmerke",
"close" : "Lukk",
"tags" : "Tags "
},
"tree" : {
"subscribe" : "Abonner",
"import" : "Importer",
"new_category" : "Ny kategori",
"all" : "Alle",
"starred" : "Merka artiklar"
},
"subscribe" : {
"feed_url" : "URL for abonnement",
"feed_name" : "Abonnementsnamn",
"category" : "Kategori"
},
"import" : {
"google_reader_prefix" : "La meg importere abonnementa dine frå",
"google_reader_suffix" : "-brukaren din.",
"google_download" : "Alternativt, last opp di eiga subscriptions.xml-fil.",
"google_download_link" : "Last ned herifrå.",
"xml_file" : "OPML-fil"
},
"new_category" : {
"name" : "Namn",
"parent" : "Overordna"
},
"toolbar" : {
"unread" : "Ulesne",
"all" : "Alle",
"previous_entry" : "Førre artikkel",
"next_entry" : "Neste artikkel",
"refresh" : "Oppdater",
"refresh_all" : "Force refresh all my feeds ",
"sort_by_asc_desc" : "Sorter etter dato ny/gamal",
"titles_only" : "Berre titlar",
"expanded_view" : "Utvida visning",
"mark_all_as_read" : "Merk alle som lesne",
"mark_all_older_12_hours" : "Items older than 12 hours ",
"mark_all_older_day" : "Artiklar eldre enn éin dag",
"mark_all_older_week" : "Artiklar eldre enn éi veke",
"mark_all_older_two_weeks" : "Artiklar eldre enn to veker",
"settings" : "Innstillingar",
"profile" : "Profil",
"admin" : "Admin",
"about" : "Om",
"logout" : "Logg ut",
"donate" : "Doner"
},
"view" : {
"entry_source" : "from ",
"entry_author" : "av ",
"error_while_loading_feed" : "Feil under lasting av artikkel",
"keep_unread" : "Behold som ulesen",
"no_unread_items" : "har ingen ulesne artiklar.",
"mark_up_to_here" : "Mark as read up to here ",
"search_for" : "searching for: ",
"no_search_results" : "No match found for the requested keywords "
},
"feedsearch" : {
"hint" : "Skriv inn eit abonnement...",
"help" : "Bruk entertasten for å velje og piltastane for å navigere.",
"result_prefix" : "Dine abonnement:"
},
"settings" : {
"general" : {
"value" : "Generelt",
"language" : "Språk",
"language_contribute" : "Bidra med omsetjingar",
"show_unread" : "Vis abonnement og kategoriar utan nye artiklar",
"social_buttons" : "Vis delingsknappar",
"scroll_marks" : "I utvida visning, merk artiklar som lesne når du blar deg forbi dei."
},
"appearance" : "Utsjånad",
"scroll_speed" : "Scrolling speed when navigating between entries (in milliseconds) ",
"scroll_speed_help" : "set to 0 to disable ",
"theme" : "Drakt",
"submit_your_theme" : "Legg til eiga drakt",
"custom_css" : "Skreddarsydd CSS"
},
"details" : {
"feed_details" : "Abonnementsdetaljar",
"url" : "URL",
"website" : "Website ",
"name" : "Namn",
"category" : "Kategori",
"position" : "Posisjon",
"last_refresh" : "Siste oppdatering",
"message" : "Last refresh message ",
"next_refresh" : "Neste oppdatering",
"queued_for_refresh" : "I kø for oppdatering",
"feed_url" : "URL for abonnement",
"generate_api_key_first" : "Generer ein API-nykel under profilinnstillingar fyrst.",
"unsubscribe" : "Avslutt abonnement",
"unsubscribe_confirmation" : "Are you sure you want to unsubscribe from this feed? ",
"delete_category_confirmation" : "Are you sure you want to delete this category? ",
"category_details" : "Kategoridetaljar",
"tag_details" : "Tag details ",
"parent_category" : "Overordna kategori"
},
"profile" : {
"user_name" : "Brukarnamn",
"email" : "E-post",
"change_password" : "Endre passord",
"confirm_password" : "Stadfest passord",
"minimum_6_chars" : "Minimum 6 teikn",
"passwords_do_not_match" : "Passorda er usamde",
"api_key" : "API-nykel",
"api_key_not_generated" : "Har ikkje vorte generert",
"generate_new_api_key" : "Generer ny API-nykel",
"generate_new_api_key_info" : "Endring av passord vil generere ein ny API-nykel",
"opml_export" : "OPML-eksport",
"delete_account" : "Slett brukar",
"delete_account_confirmation" : "Delete your acount? There's no turning back! "
},
"about" : {
"rest_api" : {
"value" : "REST API",
"line1" : "CommaFeed er bygd på toppen av JAX-RS og AngularJS. Difor er REST API tilgjengeleg.",
"link_to_documentation" : "Lenkje til dokumentasjon."
},
"keyboard_shortcuts" : "Hurtigtastar",
"version" : "CommaFeed version ",
"line1_prefix" : "CommaFeed er eit prosjekt med open kjeldekode. Kjeldekoden er tilgjengeleg på ",
"line1_suffix" : ".",
"line2_prefix" : "Viss du finn ein feil eller eit problem, rapporter det på ",
"line2_suffix" : " prosjektsida.",
"line3" : "Viss du likar dette prosjektet, kan du vurdere ein donasjon for å støtte utviklaren, og bidra med å dekkje kostnadane til å drifte nettstaden.",
"line4" : "For dei som føretrekkjer bitcoin, her er adressa",
"goodies" : {
"value" : "Godsakar",
"android_app" : "Android app ",
"subscribe_url" : "Abonner URL",
"chrome_extension" : "Chrome-utviding",
"firefox_extension" : "Firefox-utviding",
"opera_extension" : "Opera-utviding",
"subscribe_bookmarklet" : "Nytt abonnement-bokmerkjeprogram (klikk)",
"subscribe_bookmarklet_asc" : "Oldest first ",
"subscribe_bookmarklet_desc" : "Newest first ",
"next_unread_bookmarklet" : "Neste ulesne artikkel-bokmerkeprogram (dra til bokmerkemenyen)"
},
"translation" : {
"value" : "Omsetjing",
"message" : "Vi behøver di hjelp til å omsetje CommaFeed.",
"link" : "Sjå korleis du kan hjelpe til med omsetjingar."
},
"announcements" : "Kunngjøringer",
"shortcuts" : {
"mouse_middleclick" : "midtre museknapp/musehjulet",
"open_next_entry" : "opne neste artikkel",
"open_previous_entry" : "opne førre artikkel",
"spacebar" : "space/shift+space ",
"move_page_down_up" : "moves the page down/up ",
"focus_next_entry" : "sett fokus på neste artikkel utan å opne han",
"focus_previous_entry" : "sett fokus på forrige artikkel utan å opne han",
"open_next_feed" : "opne neste abonnement eller kategori",
"open_previous_feed" : "opne førre abonnement eller kategori",
"open_close_current_entry" : "opne/lukke gjeldande artikkel",
"open_current_entry_in_new_window" : "opne gjeldande artikkel i eit nytt vindauge",
"open_current_entry_in_new_window_background" : "opne gjeldande artikkel i eit nytt bakgrunnsvindauge",
"star_unstar" : "legg til stjerne/fjern stjerne frå gjeldande artikkel",
"mark_current_entry" : "merk gjeldande artikkel som lesen/ulesen",
"mark_all_as_read" : "merk alle artiklar som lesne",
"open_in_new_tab_mark_as_read" : "opne artikkel i ny fane og merk som lesen",
"fullscreen" : "toggle full screen mode ",
"font_size" : "increase/decrease font size of the current entry ",
"go_to_all" : "go to the All view ",
"go_to_starred" : "go to the Starred view ",
"feed_search" : "naviger til eit abonnement ved å skrive inn abonnementsnamnet"
}
}
}

180
src/main/app/i18n/pl.js Normal file
View File

@@ -0,0 +1,180 @@
{
"global" : {
"save" : "Zachowaj",
"cancel" : "Anuluj",
"delete" : "Usuń",
"required" : "Wymagane",
"download" : "Pobierz",
"link" : "Odnośnik",
"bookmark" : "Zakładka",
"close" : "Zamknij",
"tags" : "Tags "
},
"tree" : {
"subscribe" : "Subskrybuj",
"import" : "Importuj",
"new_category" : "Nowa kategoria",
"all" : "Wszystkie elementy",
"starred" : "Elementy oznaczone gwiazdką"
},
"subscribe" : {
"feed_url" : "URL kanału",
"feed_name" : "Nazwa kanału",
"category" : "Kategoria"
},
"import" : {
"google_reader_prefix" : "Pozwól mi zaimportować kanały z twojego ",
"google_reader_suffix" : " konta",
"google_download" : "albo, wrzuć pilk subskrypcje.xml",
"google_download_link" : "Ściągnij go stąd.",
"xml_file" : "Plik OPML"
},
"new_category" : {
"name" : "Nazwa",
"parent" : "Kategoria nadrzędna"
},
"toolbar" : {
"unread" : "Nieprzeczytane",
"all" : "Wszystkie",
"previous_entry" : "Poprzedni element",
"next_entry" : "Następny element",
"refresh" : "Odswież",
"refresh_all" : "Force refresh all my feeds ",
"sort_by_asc_desc" : "Sortuj od najnowszego/najstarszego",
"titles_only" : "Widok listy",
"expanded_view" : "Widok rozwinięty",
"mark_all_as_read" : "Oznacz wszystko jako przeczytane",
"mark_all_older_12_hours" : "Items older than 12 hours ",
"mark_all_older_day" : "Elementy starsze niż dzień",
"mark_all_older_week" : "Elementy starsze niż tydzień",
"mark_all_older_two_weeks" : "Elementy starsze niż dwa tygodnie",
"settings" : "Ustawienia",
"profile" : "Profil",
"admin" : "Admin",
"about" : "O CommaFeed",
"logout" : "Wyloguj",
"donate" : "Wspomóż"
},
"view" : {
"entry_source" : "from ",
"entry_author" : "przez",
"error_while_loading_feed" : "Wystąpił błąd podczas ładowania tego kanału.",
"keep_unread" : "Pozostaw nieprzeczytane",
"no_unread_items" : " nie ma nieprzeczytanych elementów.",
"mark_up_to_here" : "Mark as read up to here ",
"search_for" : "searching for: ",
"no_search_results" : "No match found for the requested keywords "
},
"feedsearch" : {
"hint" : "Wpisz subskrybcję...",
"help" : "Użyj klawisza Enter do zaznaczenia a strzałek do nawigacji. ",
"result_prefix" : "Twoje subskrybcje: "
},
"settings" : {
"general" : {
"value" : "Ogólne",
"language" : "Język",
"language_contribute" : "Pomóż w tłumaczeniu",
"show_unread" : "Pokaż kanały i kategorie bez nieprzeczytanych elementów",
"social_buttons" : "Pokaż przyciski udostępniania",
"scroll_marks" : "W widoku rozwiniętym przewijanie oznacza elementy jako przeczytane"
},
"appearance" : "Wygląd",
"scroll_speed" : "Scrolling speed when navigating between entries (in milliseconds) ",
"scroll_speed_help" : "set to 0 to disable ",
"theme" : "Motyw",
"submit_your_theme" : "Wyślij swój motyw",
"custom_css" : "Własny styl CSS"
},
"details" : {
"feed_details" : "Szczegóły kanału",
"url" : "URL",
"website" : "Website ",
"name" : "Nazwa",
"category" : "Kategoria",
"position" : "Pozycja",
"last_refresh" : "Ostatnio odświeżony",
"message" : "Last refresh message ",
"next_refresh" : "Następne odświeżenie",
"queued_for_refresh" : "W kolejce do odświeżenia",
"feed_url" : "URL kanału",
"generate_api_key_first" : "Najpierw wygeneruj klucz API w swoim profilu.",
"unsubscribe" : "Cofnij subskrypcje",
"unsubscribe_confirmation" : "Are you sure you want to unsubscribe from this feed? ",
"delete_category_confirmation" : "Are you sure you want to delete this category? ",
"category_details" : "Szczegóły kategorii",
"tag_details" : "Tag details ",
"parent_category" : "Kategoria nadrzędna"
},
"profile" : {
"user_name" : "Nazwa użytkownika",
"email" : "E-mail",
"change_password" : "Zmień hasło",
"confirm_password" : "Potwierdź hasło",
"minimum_6_chars" : "Minimum 6 znaków",
"passwords_do_not_match" : "Hasła nie pasują do siebie",
"api_key" : "Klucz API",
"api_key_not_generated" : "Jeszcze niewygenerowany",
"generate_new_api_key" : "Wygeneruj nowy klucz API",
"generate_new_api_key_info" : "Zmiana hasła spowoduje wygenerowanie nowego klucza API",
"opml_export" : "Eksportuj do pliku OPML",
"delete_account" : "Usuń konto",
"delete_account_confirmation" : "Delete your acount? There's no turning back! "
},
"about" : {
"rest_api" : {
"value" : "REST API",
"line1" : "CommaFeed jest oparty o JAX-RS i AngularJS. Dzięki temu REST API jest dostępne.",
"link_to_documentation" : "Link do dokumentacji."
},
"keyboard_shortcuts" : "Skróty klawiszowe",
"version" : "CommaFeed version ",
"line1_prefix" : "CommaFeed jest projektem Open-Source. Źródła są dostępne na ",
"line1_suffix" : ".",
"line2_prefix" : "Jeśli napotkasz jakiś problem, proszę zgłoś go na stronie ",
"line2_suffix" : " projektu.",
"line3" : "Jeśli podoba ci się ten projekt, rozważ wsparcie autora i pomóż w utrzymaniu tej strony.",
"line4" : "Jeśli wolisz bitcoin, użyj tego adresu",
"goodies" : {
"value" : "Dodatki",
"android_app" : "Aplikacja na Androida",
"subscribe_url" : "Subskrybuj URL",
"chrome_extension" : "Dodatek do Chrome",
"firefox_extension" : "Dodatek do Firefoxa",
"opera_extension" : "Dodatek do Opery",
"subscribe_bookmarklet" : "Dodaj subskrybcje jako skryptozakładkę (kliknij)",
"subscribe_bookmarklet_asc" : "Oldest first ",
"subscribe_bookmarklet_desc" : "Newest first ",
"next_unread_bookmarklet" : "Następny nieprzeczytany element jako skryptozakładka (przeciągnij na pasek zakładek)"
},
"translation" : {
"value" : "Tłumaczenia",
"message" : "Potrzebujemy pomocy w tłumaczeniu CommaFeed.",
"link" : "Zobacz jak możesz pomóc."
},
"announcements" : "Ogłoszenia",
"shortcuts" : {
"mouse_middleclick" : "środkowy przycisk myszy",
"open_next_entry" : "otwórz następny element",
"open_previous_entry" : "otwórz poprzedni element",
"spacebar" : "spacja/shift+spacja",
"move_page_down_up" : "przesuwa stronę w górę/dół",
"focus_next_entry" : "wyróżnij następny element bez otwierania go",
"focus_previous_entry" : "wyróżnij poprzedni element bez otwierania go",
"open_next_feed" : "otwórz następny kanał lub kategorię",
"open_previous_feed" : "otwórz poprzedni kanał lub kategorię",
"open_close_current_entry" : "otwórz/zamknij bieżący element",
"open_current_entry_in_new_window" : "otwórz bieżący element w nowym oknie",
"open_current_entry_in_new_window_background" : "otwórz bieżący element w nowym oknie w tle",
"star_unstar" : "oznacz/odznacz gwiazdką bieżący element",
"mark_current_entry" : "oznacz jako przeczytany/nieprzeczytany obecny element",
"mark_all_as_read" : "oznacz wszystko jako przeczytane",
"open_in_new_tab_mark_as_read" : "otwórz w nowej zakładce i oznacz jako przeczytane",
"fullscreen" : "przełącz tryb pełnoekranowy",
"font_size" : "zmień wielkość czcionki",
"go_to_all" : "go to the All view ",
"go_to_starred" : "go to the Starred view ",
"feed_search" : "przejdź do subskrybcji wpisując jej nazwę"
}
}
}

180
src/main/app/i18n/pt.js Normal file
View File

@@ -0,0 +1,180 @@
{
"global" : {
"save" : "Salvar",
"cancel" : "Cancelar",
"delete" : "Excluir",
"required" : "Obrigatório",
"download" : "Download",
"link" : "Link",
"bookmark" : "Favorito",
"close" : "Fechar",
"tags" : "Tags "
},
"tree" : {
"subscribe" : "Inscrever-se",
"import" : "Importar",
"new_category" : "Nova categoria",
"all" : "Todos",
"starred" : "Com estrela"
},
"subscribe" : {
"feed_url" : "URL de feed",
"feed_name" : "Nome do feed",
"category" : "Categoria"
},
"import" : {
"google_reader_prefix" : "Deixe-me importar seus feeds de sua conta",
"google_reader_suffix" : ".",
"google_download" : "Alternativamente, faça upload de seu arquivo subscriptions.xml.",
"google_download_link" : "Fazer download daqui.",
"xml_file" : "Arquivo OPML"
},
"new_category" : {
"name" : "Nome",
"parent" : "Pai"
},
"toolbar" : {
"unread" : "Não lidos",
"all" : "Todos",
"previous_entry" : "Item anterior",
"next_entry" : "Próximo item",
"refresh" : "Atualizar",
"refresh_all" : "Forçar atualização de todos os meus feeds",
"sort_by_asc_desc" : "Ordenar por data cresc/decres",
"titles_only" : "Somente títulos",
"expanded_view" : "Modo Expandido",
"mark_all_as_read" : "Marcar tudo como lido",
"mark_all_older_12_hours" : "Items older than 12 hours ",
"mark_all_older_day" : "Itens mais antigos que um dia",
"mark_all_older_week" : "Itens mais antigos que uma semana",
"mark_all_older_two_weeks" : "Itens mais antigos que duas semanas",
"settings" : "Configurações",
"profile" : "Perfil",
"admin" : "Admin",
"about" : "Sobre",
"logout" : "Sair",
"donate" : "Doar"
},
"view" : {
"entry_source" : "de",
"entry_author" : "por",
"error_while_loading_feed" : "Erro lendo esse feed",
"keep_unread" : "Manter como não lido",
"no_unread_items" : "não tem itens não lidos.",
"mark_up_to_here" : "Marcar como lido até aqui",
"search_for" : "searching for: ",
"no_search_results" : "No match found for the requested keywords "
},
"feedsearch" : {
"hint" : "Digite o nome de uma Inscrição...",
"help" : "Use a tecla ENTER e setas direcionais para navegar.",
"result_prefix" : "Suas inscrições:"
},
"settings" : {
"general" : {
"value" : "Geral",
"language" : "Idioma",
"language_contribute" : "Contribua com traduções",
"show_unread" : "Mostrar feeds e categorias sem itens não lidos",
"social_buttons" : "Mostrar botões de mídias sociais",
"scroll_marks" : "No modo expandido, percorrer os itens marca-os como lidos"
},
"appearance" : "Aparência",
"scroll_speed" : "Scrolling speed when navigating between entries (in milliseconds) ",
"scroll_speed_help" : "set to 0 to disable ",
"theme" : "Tema",
"submit_your_theme" : "Envie seu tema",
"custom_css" : "CSS personalizado"
},
"details" : {
"feed_details" : "Detalhes do feed",
"url" : "URL",
"website" : "Website",
"name" : "Nome",
"category" : "Categoria",
"position" : "Posição",
"last_refresh" : "Última atualização",
"message" : "Last refresh message ",
"next_refresh" : "Próxima atualização",
"queued_for_refresh" : "Na fila para atualizar",
"feed_url" : "URL do feed",
"generate_api_key_first" : "Gerar uma chave de API em seu perfil primeiro.",
"unsubscribe" : "Cancelar inscrição",
"unsubscribe_confirmation" : "Are you sure you want to unsubscribe from this feed? ",
"delete_category_confirmation" : "Are you sure you want to delete this category? ",
"category_details" : "Detalhes da categoria",
"tag_details" : "Tag details ",
"parent_category" : "Categoria pai"
},
"profile" : {
"user_name" : "Nome de usuário",
"email" : "E-mail",
"change_password" : "Trocar senha",
"confirm_password" : "Confirmar senha",
"minimum_6_chars" : "Mínimo de 6 caracteres",
"passwords_do_not_match" : "Senhas não conferem",
"api_key" : "Chave de API",
"api_key_not_generated" : "Ainda não gerada",
"generate_new_api_key" : "Gerar nova chave de API",
"generate_new_api_key_info" : "Mudar a senha irá gerar uma nova chave de API",
"opml_export" : "Exportar OPML",
"delete_account" : "Excluir conta",
"delete_account_confirmation" : "Delete your acount? There's no turning back! "
},
"about" : {
"rest_api" : {
"value" : "API REST",
"line1" : "CommaFeed foi desenvolvido sobre JAX-RS e AngularJS. Como tal, uma API REST está disponível.",
"link_to_documentation" : "Link para a documentação."
},
"keyboard_shortcuts" : "Atalhos de teclado",
"version" : "CommaFeed versão",
"line1_prefix" : "CommaFeed é um projeto de código livre. Fontes estão hospedados em ",
"line1_suffix" : ".",
"line2_prefix" : "Se você encontrar um problema, por favor relate-o na página de problemas do projeto ",
"line2_suffix" : ".",
"line3" : "Se você gostar desse projeto, por favor considere uma doação para apoiar o desenvolvedor e ajudar a cobrir os custos de manter esse website no ar.",
"line4" : "Para quem preferir bitcoin, esse é o endereço",
"goodies" : {
"value" : "Extras",
"android_app" : "Aplicativo Android",
"subscribe_url" : "URL de inscrição",
"chrome_extension" : "Extensão para o Chrome",
"firefox_extension" : "Extensão para o Firefox",
"opera_extension" : "Extensão para o Opera",
"subscribe_bookmarklet" : "Bookmarklet para adicionar inscrição (clique)",
"subscribe_bookmarklet_asc" : "Mais velhas primeiro",
"subscribe_bookmarklet_desc" : "Mais novas primeiro",
"next_unread_bookmarklet" : "Bookmarklet para o próximo item não lido (arraste para a barra de favoritos)"
},
"translation" : {
"value" : "Tradução",
"message" : "Precisamos de sua ajuda para traduzir CommaFeed.",
"link" : "Veja como contribuir com traduções."
},
"announcements" : "Anúncios",
"shortcuts" : {
"mouse_middleclick" : "clique com o botão do meio do mouse",
"open_next_entry" : "abre próximo item",
"open_previous_entry" : "abre item anterior",
"spacebar" : "barra de espaço/shift+barra de espaço",
"move_page_down_up" : "move a página para baixo/cima",
"focus_next_entry" : "seleciona próximo item sem abri-lo",
"focus_previous_entry" : "seleciona item anterior sem abri-lo",
"open_next_feed" : "abre próximo feed ou categoria",
"open_previous_feed" : "abre feed ou categoria anterior",
"open_close_current_entry" : "abre/fecha item atual",
"open_current_entry_in_new_window" : "abre item atual em uma nova janela",
"open_current_entry_in_new_window_background" : "abre item atual em uma nova janela em plano de fundo",
"star_unstar" : "marca/desmarca estrela do item atual",
"mark_current_entry" : "marca item atual como lido/não lido",
"mark_all_as_read" : "marca todos os itens como lidos",
"open_in_new_tab_mark_as_read" : "abre item em uma nova aba e marca como lido",
"fullscreen" : "modo tela cheia",
"font_size" : "aumenta/diminui o tamanho da fonte na entrada atual",
"go_to_all" : "vá para Todos os itens",
"go_to_starred" : "vá para itens com estrela",
"feed_search" : "navega entre inscrições buscando pelo nome"
}
}
}

180
src/main/app/i18n/ru.js Normal file
View File

@@ -0,0 +1,180 @@
{
"global" : {
"save" : "Сохранить",
"cancel" : "Отмена",
"delete" : "Удалить",
"required" : "Обязательно",
"download" : "Скачать",
"link" : "Ссылка",
"bookmark" : "Закладка",
"close" : "Закрыть",
"tags" : "Теги"
},
"tree" : {
"subscribe" : "Подписаться",
"import" : "Импорт",
"new_category" : "Новая категория",
"all" : "Все",
"starred" : "Избранное"
},
"subscribe" : {
"feed_url" : "Адрес ленты",
"feed_name" : "Название ленты",
"category" : "Категория"
},
"import" : {
"google_reader_prefix" : "Можно импотрировать подписки из ",
"google_reader_suffix" : " аккаунта.",
"google_download" : "Или загрузить собсвенный XML-файл подпискок.",
"google_download_link" : "Скачайте его здесь.",
"xml_file" : "OPML-файл"
},
"new_category" : {
"name" : "Название",
"parent" : "Родительская категория"
},
"toolbar" : {
"unread" : "Непрочитанные",
"all" : "Все",
"previous_entry" : "Предыдущая запись",
"next_entry" : "Следующая запись",
"refresh" : "Обновить",
"refresh_all" : "Обновить все подписки вручную",
"sort_by_asc_desc" : "Сначала новые/старые",
"titles_only" : "Только заголовки",
"expanded_view" : "Развёрнутый вид",
"mark_all_as_read" : "Отметить всё как прочитанное",
"mark_all_older_12_hours" : "Записи старше 12-и часов",
"mark_all_older_day" : "Записи старше суток",
"mark_all_older_week" : "Записи старше недели",
"mark_all_older_two_weeks" : "Записи старше двух недель",
"settings" : "Настройки",
"profile" : "Профиль",
"admin" : "Администратор",
"about" : "Справка",
"logout" : "Выйти",
"donate" : "Поддержать проект"
},
"view" : {
"entry_source" : "от",
"entry_author" : "автор",
"error_while_loading_feed" : "Не удалось загрузить ленту",
"keep_unread" : "Оставить непрочитанным",
"no_unread_items" : "нет непрочитанных записей.",
"mark_up_to_here" : "Отметить прочитанным до сюда",
"search_for" : "искать:",
"no_search_results" : "По данному запросу ничего не найдено."
},
"feedsearch" : {
"hint" : "Введите подписку...",
"help" : "Используйте клавишу ввода для выбора и стрелки для перемещения.",
"result_prefix" : "Ваши подписки:"
},
"settings" : {
"general" : {
"value" : "Основное",
"language" : "Язык",
"language_contribute" : "Принять участие в переводе",
"show_unread" : "Показывать прочтённые ленты и категории",
"social_buttons" : "Показывать социальные кнопки",
"scroll_marks" : "В развёрнутом виде помечать записи как прочитанные по мере прокрутки"
},
"appearance" : "Вид",
"scroll_speed" : "Скорость прокрутки при навигации между записями (в миллисекундах)",
"scroll_speed_help" : "смените на 0 чтобы выключить",
"theme" : "Тема",
"submit_your_theme" : "Добавьте свою тему",
"custom_css" : "Собственная CSS"
},
"details" : {
"feed_details" : "Информация о ленте",
"url" : "URL",
"website" : "Сайт",
"name" : "Название",
"category" : "Категория",
"position" : "Позиция",
"last_refresh" : "Последнее обновление",
"message" : "Сообщение последнего обновления",
"next_refresh" : "Следующее обновление",
"queued_for_refresh" : "В очереди на обновление",
"feed_url" : "Адрес ленты",
"generate_api_key_first" : "Сначала сгенерируйте API-ключ в вашем профиле.",
"unsubscribe" : "Отписаться",
"unsubscribe_confirmation" : "Подтвердить отписку от этой ленты? Are you sure you want to unsubscribe from this feed? ",
"delete_category_confirmation" : "Подтвердить удаление этой категории?",
"category_details" : "Информация о категории",
"tag_details" : "Детали тега",
"parent_category" : "Родительская категория"
},
"profile" : {
"user_name" : "Имя пользователя",
"email" : "Эл. почта",
"change_password" : "Изменить пароль",
"confirm_password" : "Подтвердите пароль",
"minimum_6_chars" : "Не меньше 6 символов",
"passwords_do_not_match" : "Пароли не совпадают",
"api_key" : "API-ключ",
"api_key_not_generated" : "Не сгенерирован",
"generate_new_api_key" : "Сгенерировать новый API-ключ",
"generate_new_api_key_info" : "После изменения пароля, API-ключ изменится",
"opml_export" : "Экспорт OPML",
"delete_account" : "Удалить аккаунт",
"delete_account_confirmation" : "Удалить ваш аккаунт? Назад пути не будет!"
},
"about" : {
"rest_api" : {
"value" : "REST API",
"line1" : "CommaFeed основан на JAX-RS и AngularJS. Вам доступно REST API.",
"link_to_documentation" : "Ссылка на документацию."
},
"keyboard_shortcuts" : "Горячие клавиши",
"version" : "Версия CommaFeed",
"line1_prefix" : "CommaFeed — проект с открытым исходным кодом. Исходники находятся на ",
"line1_suffix" : ".",
"line2_prefix" : "Если вы обнаружите ошибку, пожалуйста, сообщите о ней на ",
"line2_suffix" : ".",
"line3" : "Если вам понравился этот проект, пожалуйста, поддержите разработчика суммой, которую вам не жалко, чтобы сайт продолжал работать.",
"line4" : "Адрес для тех, кто предпочитает bitcoin",
"goodies" : {
"value" : "Дополнения",
"android_app" : "Приложение для Андроид",
"subscribe_url" : "Адрес для подписки (заменить FEED_URL_HERE на адрес ленты)",
"chrome_extension" : "Расширение для Chrome",
"firefox_extension" : "Расширение для Firefox",
"opera_extension" : "Расширение для Opera",
"subscribe_bookmarklet" : "Закладка для быстрой подписки на ленты (нужно кликнуть)",
"subscribe_bookmarklet_asc" : "Сначала старые",
"subscribe_bookmarklet_desc" : "Сначала новые",
"next_unread_bookmarklet" : "Открыть следующую непрочитанную запись в новой вкладке (перетащить на панель закладок)"
},
"translation" : {
"value" : "Перевод",
"message" : "Нам нужна ваша помощь в переводе CommaFeed на другие языки.",
"link" : "Посмотрите как поучаствовать в переводе."
},
"announcements" : "Объявления",
"shortcuts" : {
"mouse_middleclick" : "средняя кнопка мыши",
"open_next_entry" : "открыть следующую запись",
"open_previous_entry" : "открыть предыдущую запись",
"spacebar" : "пробел/shift+пробел",
"move_page_down_up" : "передвигает страницу вверх/вниз",
"focus_next_entry" : "выбрать следующую запись не открывая её",
"focus_previous_entry" : "выбрать предыдущую запись не открывая её",
"open_next_feed" : "открыть следующую ленту или категорию",
"open_previous_feed" : "открыть предыдущую ленту или категорию",
"open_close_current_entry" : "открыть/закрыть текущюю запись",
"open_current_entry_in_new_window" : "открыть текущюю запись в новом окне",
"open_current_entry_in_new_window_background" : " открыть текущую запись в новом окне на фоне",
"star_unstar" : "добавить/убрать из избранного текущюю запись",
"mark_current_entry" : "пометить текущюю запись как прочитанную",
"mark_all_as_read" : "пометить всё как прочитанное",
"open_in_new_tab_mark_as_read" : "открыть запись в новом окне и пометить как прочитанную",
"fullscreen" : "переключиться в полноэкранный режим",
"font_size" : "увеличить/уменьшить размер шрифта текущей записи",
"go_to_all" : "перейти ко всем",
"go_to_starred" : "перейти к избранным",
"feed_search" : "перейти к подписке по названию"
}
}
}

180
src/main/app/i18n/sk.js Normal file
View File

@@ -0,0 +1,180 @@
{
"global" : {
"save" : "Uložiť",
"cancel" : "Zrušiť",
"delete" : "Odstrániť",
"required" : "Povinné",
"download" : "Stiahnuť",
"link" : "Link",
"bookmark" : "Záložky",
"close" : "Zavrieť",
"tags" : "Tagy"
},
"tree" : {
"subscribe" : "Odoberať",
"import" : "Importovať",
"new_category" : "Nová kategória",
"all" : "Všetko",
"starred" : "Obľúbené"
},
"subscribe" : {
"feed_url" : "URL RSS zdroja",
"feed_name" : "Názov RSS zdroja",
"category" : "Kategória"
},
"import" : {
"google_reader_prefix" : "Importujte si RSS zdroje s vášho",
"google_reader_suffix" : " účtu.",
"google_download" : "Alternatívne, môžte nahrať váš subscriptions.xml súbor",
"google_download_link" : "Stiahnuť to môžete s lokácie.",
"xml_file" : "OPML súbor"
},
"new_category" : {
"name" : "Názov",
"parent" : "Hlavná"
},
"toolbar" : {
"unread" : "Neprečítané",
"all" : "Všetky",
"previous_entry" : "Predchádzajúca položka",
"next_entry" : "Nasledujúca položka",
"refresh" : "Obnoviť",
"refresh_all" : "Vynútené obnovenie všetkých položiek",
"sort_by_asc_desc" : "Zoradiť podľa najnovšieho/najstaršieho",
"titles_only" : "Náhľad titulkov",
"expanded_view" : "Rozšírený náhľad",
"mark_all_as_read" : "Označiť všetky ako prečítané",
"mark_all_older_12_hours" : "Položky staršie ako 12 hodín",
"mark_all_older_day" : "Položky staršie ako deň",
"mark_all_older_week" : "Položky staršie ako týždeň",
"mark_all_older_two_weeks" : "Položky staršie ako dva týždne",
"settings" : "Nastavenia",
"profile" : "Profil",
"admin" : "Admin",
"about" : "O CommaFeed",
"logout" : "Odhlásiť",
"donate" : "Donate"
},
"view" : {
"entry_source" : "z",
"entry_author" : "od ",
"error_while_loading_feed" : "Počas načítavania sa vyskytla chyba",
"keep_unread" : "Ponechať ako neprečítané",
"no_unread_items" : "nemá žiadne neprečítané položky.",
"mark_up_to_here" : "Až potiaľto označiť položky ako prečítané",
"search_for" : "Hľadaný výraz:",
"no_search_results" : "Nenašla sa žiadna zhoda pre hľadaný výraz."
},
"feedsearch" : {
"hint" : "Zadajte názov odoberania...",
"help" : "Použite klávesu enter pre výber a smerové klávesy pre navigáciu.",
"result_prefix" : "Vaše odoberania:"
},
"settings" : {
"general" : {
"value" : "Všeobecné",
"language" : "Jazyk",
"language_contribute" : "Zapojte sa do prekladu",
"show_unread" : "Zobraziť príspevky a kategórie bez neprečítaných položiek",
"social_buttons" : "Zobraziť možnosti zdieľania",
"scroll_marks" : "Scrollovanie v rozšírenom náhľade označí položky ako prečítané"
},
"appearance" : "Vzhľad",
"scroll_speed" : "Rýchlosť skrolovania—pohybu medzi položkami (v milisekundách)",
"scroll_speed_help" : "nastavte 0 pre deaktiváciu",
"theme" : "Motív",
"submit_your_theme" : "Nahrať vlastný motív vzhľadu",
"custom_css" : "Vlastný motív vzhľadu (CSS)"
},
"details" : {
"feed_details" : "Detaily odoberania",
"url" : "URL odkaz",
"website" : "Web stránka",
"name" : "Názov",
"category" : "Kategória",
"position" : "Pozícia",
"last_refresh" : "Predchádzajúce obnovenie",
"message" : "Predchádzajúca správa obnovenia",
"next_refresh" : "Nasledujúce obnovenie",
"queued_for_refresh" : "Vo fronte",
"feed_url" : "URL RSS zdroja",
"generate_api_key_first" : "Vygenerujte si API kľúč vo vašom profile.",
"unsubscribe" : "Zrušiť odoberanie.",
"unsubscribe_confirmation" : "Are you sure you want to unsubscribe from this feed? ",
"delete_category_confirmation" : "Are you sure you want to delete this category? ",
"category_details" : "Detaily kategórie",
"tag_details" : "Detaily tagu",
"parent_category" : "Hlavná kategória"
},
"profile" : {
"user_name" : "Uživateľské meno",
"email" : "E-mail",
"change_password" : "Zmeniť heslo",
"confirm_password" : "Potvrdiť heslo",
"minimum_6_chars" : "Minimum je 6 znakov",
"passwords_do_not_match" : "Heslá sa nezhodujú",
"api_key" : "API kľúč",
"api_key_not_generated" : "Nie je vygenerovaný",
"generate_new_api_key" : "Vygenerovať nový API kľúč",
"generate_new_api_key_info" : "Zmenou hesla vygenerujete nový API kľúč",
"opml_export" : "exportovať do formátu OPML",
"delete_account" : "Odstrániť účet",
"delete_account_confirmation" : "Delete your acount? There's no turning back! "
},
"about" : {
"rest_api" : {
"value" : "REST API",
"line1" : "CommaFeed je postavený na JAX-RS a AngularJS. Dostupná je REST API.",
"link_to_documentation" : "Prejsť na dokumentáciu."
},
"keyboard_shortcuts" : "Klávesové skratky",
"version" : "CommaFeed verzia ",
"line1_prefix" : "CommaFeed je open source projekt. Zdrojový kód je dostupný na ",
"line1_suffix" : ".",
"line2_prefix" : "V prípade, že narazíte na problém, ohláste ho prosím na stránkach",
"line2_suffix" : " projektu.",
"line3" : "V prípade, že sa vám páči CommaFeed, zvážte prosím finančný príspevok. Podporíte tým vývojárov a tiež pomôžete udržať web stránky online.",
"line4" : "Pre tých, ktorí preferujú bitcoin",
"goodies" : {
"value" : "Rozšírenia",
"android_app" : "Aplikácia pre zariadenia Android",
"subscribe_url" : "URL",
"chrome_extension" : "Rozšírenie pre prehliadač Chrome",
"firefox_extension" : "Rozšírenie pre prehliadač Firefox",
"opera_extension" : "Rozšírenie pre prehliadač Opera",
"subscribe_bookmarklet" : "Bookmarklet",
"subscribe_bookmarklet_asc" : "Zoradiť podľa najstaršieho ",
"subscribe_bookmarklet_desc" : "Zoradiť podľa najnovšieho ",
"next_unread_bookmarklet" : "Záložka nasledujúcej neprečítanej položky(pretiahuť k záložkám)"
},
"translation" : {
"value" : "Preklad",
"message" : "Pomôžte s prekladom CommaFeed.",
"link" : "Zistite, ako sa možete zapojiť do prekladu CommaFeed."
},
"announcements" : "Oznámenia",
"shortcuts" : {
"mouse_middleclick" : "klik prostredným tlačítkom",
"open_next_entry" : "zobraziť nasledujúcu položku",
"open_previous_entry" : "zobraziť predchádzajúcu položku",
"spacebar" : "medzerník/shift+medzerník",
"move_page_down_up" : "pohyb smerom dole/hore",
"focus_next_entry" : "presun na nasledujúcu položku bez jej zobrazenia",
"focus_previous_entry" : "presun na predchádzajúcu položku bez jej zobrazenia",
"open_next_feed" : "presun na nasledujúci RSS zdroj alebo kategóriu",
"open_previous_feed" : "presun na predchádzajúci RSS zdroj alebo kategóriu",
"open_close_current_entry" : "zobraziť vybranú položku",
"open_current_entry_in_new_window" : "zobraziť vybranú položku v novom okne",
"open_current_entry_in_new_window_background" : "otvoriť vybranú položku na pozadí",
"star_unstar" : "označiť vybranú položku ako obľúbená",
"mark_current_entry" : "označiť vybranú položku ako prečítanú/neprečítanú",
"mark_all_as_read" : "označiť všetky položky ako prečítané!",
"open_in_new_tab_mark_as_read" : "zobraziť položku na novej karte a označí ju ako prečítanú",
"fullscreen" : "prepnutie zobrazenia na celú obrazovku",
"font_size" : "zmeniť veľkosť písma pre vybranú položku",
"go_to_all" : "zobraziť všetky položky",
"go_to_starred" : "zobraziť obľúbené položiek",
"feed_search" : "presun na odoberaný RSS zdroj vložením jeho názvu"
}
}
}

180
src/main/app/i18n/sv.js Normal file
View File

@@ -0,0 +1,180 @@
{
"global" : {
"save" : "Spara",
"cancel" : "Avbryt",
"delete" : "Radera",
"required" : "Obligatorisk",
"download" : "Ladda ned",
"link" : "Länka",
"bookmark" : "Bokmärk",
"close" : "Stäng",
"tags" : "Taggar"
},
"tree" : {
"subscribe" : "Prenumerera",
"import" : "Importera",
"new_category" : "Ny kategori",
"all" : "Alla",
"starred" : "Stjärnmärkt"
},
"subscribe" : {
"feed_url" : "Prenumerationens URL",
"feed_name" : "Prenumerationens namn",
"category" : "Kategori"
},
"import" : {
"google_reader_prefix" : "Låt mig importera dina prenumerationer från ditt",
"google_reader_suffix" : "-konto.",
"google_download" : "Alternativt, ladda upp din subscriptions.xml-fil.",
"google_download_link" : "Ladda ned den här. ",
"xml_file" : "OPML-fil"
},
"new_category" : {
"name" : "Namn",
"parent" : "Överordnad"
},
"toolbar" : {
"unread" : "Oläst",
"all" : "Alla",
"previous_entry" : "Föregående post",
"next_entry" : "Nästa post",
"refresh" : "Uppdatera",
"refresh_all" : "Tvinga uppdatering av alla prenumerationer",
"sort_by_asc_desc" : "Sortera efter datum stigande/fallande",
"titles_only" : "Endast titlar",
"expanded_view" : "Expanderad vy",
"mark_all_as_read" : "Markera alla som lästa",
"mark_all_older_12_hours" : "Poster äldre än 12 timmar",
"mark_all_older_day" : "Poster äldre än en dag",
"mark_all_older_week" : "Poster äldre än en vecka",
"mark_all_older_two_weeks" : "Poster äldre än två veckor",
"settings" : "Inställningar",
"profile" : "Profil",
"admin" : "Administratör",
"about" : "Om",
"logout" : "Logga ut",
"donate" : "Donera"
},
"view" : {
"entry_source" : "från",
"entry_author" : "av",
"error_while_loading_feed" : "Fel under laddning av denna prenumeration",
"keep_unread" : "Håll oläst",
"no_unread_items" : "har inga olästa poster.",
"mark_up_to_here" : "Markera som läst upp till denna post",
"search_for" : "söker efter: ",
"no_search_results" : "Inga resultat för valda nyckelord"
},
"feedsearch" : {
"hint" : "Skriv in en prenumeration...",
"help" : "Använd retur-tangenten för att välja och piltangenterna för att navigera.",
"result_prefix" : "Dina prenumerationer:"
},
"settings" : {
"general" : {
"value" : "Allmänt",
"language" : "Språk",
"language_contribute" : "Bidra med översättningar",
"show_unread" : "Visa prenumerationer och kategorier utan olästa poster",
"social_buttons" : "Visa delningsknappar",
"scroll_marks" : "I expanderad vy, markera poster som lästa genom att scrolla förbi dem"
},
"appearance" : "Utseende",
"scroll_speed" : "Scrollhastighet under navigation mellan poster (i millisekunder)",
"scroll_speed_help" : "ställ på 0 för att avaktivera",
"theme" : "Tema",
"submit_your_theme" : "Skicka in ditt tema",
"custom_css" : "Anpassad CSS"
},
"details" : {
"feed_details" : "Prenumerationsdetaljer",
"url" : "URL",
"website" : "Webbsida",
"name" : "Namn",
"category" : "Kategori",
"position" : "Position",
"last_refresh" : "Senaste uppdatering",
"message" : "Senaste uppdateringsmeddelande",
"next_refresh" : "Nästa uppdatering",
"queued_for_refresh" : "I kö för uppdatering",
"feed_url" : "Prenumerationens URL",
"generate_api_key_first" : "Skapa en API-nyckel på din profil först.",
"unsubscribe" : "Avprenumerera",
"unsubscribe_confirmation" : "Är du säker på att du vill avprenumerera?",
"delete_category_confirmation" : "Är du säker på att du vill ta bort denna kategori?",
"category_details" : "Kategoridetaljer",
"tag_details" : "Taggdetaljer",
"parent_category" : "Överordnad kategori"
},
"profile" : {
"user_name" : "Användarnamn",
"email" : "E-mail",
"change_password" : "Ändra lösenord",
"confirm_password" : "Bekräfta lösenord",
"minimum_6_chars" : "Minst 6 bokstäver",
"passwords_do_not_match" : "Lösenorden matchar inte",
"api_key" : "API-nyckel",
"api_key_not_generated" : "Inte skapad än",
"generate_new_api_key" : "Skapa ny API-nyckel",
"generate_new_api_key_info" : "Lösenordsbyte skapar ny API-nyckel",
"opml_export" : "OPML-export",
"delete_account" : "Radera konto",
"delete_account_confirmation" : "Vill du ta bort ditt konto? Det försvinner för alltid!"
},
"about" : {
"rest_api" : {
"value" : "REST-API",
"line1" : "CommaFeed är byggt på JAX-RS och AngularJS. Tack vare detta är en REST-API tillgänglig.",
"link_to_documentation" : "Länk till dokumentation."
},
"keyboard_shortcuts" : "Tangentbordsgenvägar",
"version" : "CommaFeed-version",
"line1_prefix" : "CommaFeed är ett open-source-projekt. Källan är tillgänglig på ",
"line1_suffix" : ".",
"line2_prefix" : "Om du träffar på ett problem, meddela det på \"Issues\"-sidan för ",
"line2_suffix" : "-projektet.",
"line3" : "Om du gillar detta projekt, avväg gärna en donation för att stötta utvecklaren och bidra till kostnaderna för att hålla denna site online.",
"line4" : "För er som föredrar Bitcoin, här är adressen",
"goodies" : {
"value" : "Godsaker",
"android_app" : "Android-app",
"subscribe_url" : "Prenumerations-URL",
"chrome_extension" : "Chrome-tillägg",
"firefox_extension" : "Firefox-tillägg",
"opera_extension" : "Opera-tillägg",
"subscribe_bookmarklet" : "Bokmärke för tillägg av prenumeration (klicka)",
"subscribe_bookmarklet_asc" : "äldst först",
"subscribe_bookmarklet_desc" : "nyast först",
"next_unread_bookmarklet" : "Bokmärke för nästa olästa post (dra till bokmärkesfält)"
},
"translation" : {
"value" : "Översättning",
"message" : "Vi behöver din hjälp med att översätta CommaFeed.",
"link" : "Se hur du kan bidra med översättningar."
},
"announcements" : "Notiser",
"shortcuts" : {
"mouse_middleclick" : "mitten-musknapp",
"open_next_entry" : "öppna nästa post",
"open_previous_entry" : "öppna föregående post",
"spacebar" : "mellanslag/shift+mellanslag",
"move_page_down_up" : "flyttar sidan ned/upp",
"focus_next_entry" : "sätt fokus på nästa post utan att öppna",
"focus_previous_entry" : "sätt fokus på föregående post utan att öppna",
"open_next_feed" : "öppna nästa prenumeration eller kategori",
"open_previous_feed" : "öppna föregående prenumeration eller kategori",
"open_close_current_entry" : "öppna/stäng nuvarande post",
"open_current_entry_in_new_window" : "öppna nuvarande post i nytt fönster",
"open_current_entry_in_new_window_background" : "öppna nuvarande post i nytt bakgrundsfönster",
"star_unstar" : "stjärnmärk/ostjärnmärk nuvarande post",
"mark_current_entry" : "markera nuvarande post läst/oläst",
"mark_all_as_read" : "markera alla som lästa",
"open_in_new_tab_mark_as_read" : "öppna nuvarande post i ny flik och markera som läst",
"fullscreen" : "växla till/från fullskärmsläge",
"font_size" : "öka/minska teckenstorlek av nuvarande post",
"go_to_all" : "se alla poster",
"go_to_starred" : "se stjärnmärkta poster",
"feed_search" : "navigera till en prenumeration via prenumerationsnamn"
}
}
}

180
src/main/app/i18n/tr.js Normal file
View File

@@ -0,0 +1,180 @@
{
"global" : {
"save" : "Kaydet",
"cancel" : "İptal",
"delete" : "Sil",
"required" : "Gerekli",
"download" : "İndir",
"link" : "Bağlantı",
"bookmark" : "Yer imi",
"close" : "Kapat",
"tags" : "Tags "
},
"tree" : {
"subscribe" : "Abone ol",
"import" : "İçe aktar",
"new_category" : "Yeni kategori",
"all" : "Tüm öğeler",
"starred" : "Yıldızlı öğeler"
},
"subscribe" : {
"feed_url" : "Yayın URL'si",
"feed_name" : "Yayın Adı",
"category" : "Kategori"
},
"import" : {
"google_reader_prefix" : "Aboneliklerinizi ",
"google_reader_suffix" : " hesabınızdan aktarmama izin verin.",
"google_download" : "Veya, subscriptions.xml dosyanızı yükleyin.",
"google_download_link" : "Buradan indirebilirsiniz.",
"xml_file" : "OPML dosyası"
},
"new_category" : {
"name" : "İsim",
"parent" : "Üst"
},
"toolbar" : {
"unread" : "Okunmamış",
"all" : "Tümü",
"previous_entry" : "Önceki ileti",
"next_entry" : "Sonraki ileti",
"refresh" : "Yenile",
"refresh_all" : "Force refresh all my feeds ",
"sort_by_asc_desc" : "Tarihe göre sırala artan/azalan",
"titles_only" : "Sadece başlıklar",
"expanded_view" : "Genişletilmiş görünüm",
"mark_all_as_read" : "Tümünü okundu işaretle",
"mark_all_older_12_hours" : "Items older than 12 hours ",
"mark_all_older_day" : "Bir günden eski yazılar",
"mark_all_older_week" : "Bir haftadan eski yazılar",
"mark_all_older_two_weeks" : "İki haftadan eski yazılar",
"settings" : "Ayarlar",
"profile" : "Profil",
"admin" : "Yönetim",
"about" : "Hakkında",
"logout" : ıkış",
"donate" : "Bağış"
},
"view" : {
"entry_source" : "from ",
"entry_author" : "by ",
"error_while_loading_feed" : "Bu aboneliği çekerken hata oluştu.",
"keep_unread" : "Okunmadı olarak sakla",
"no_unread_items" : "okunmamış ileti yok.",
"mark_up_to_here" : "Mark as read up to here ",
"search_for" : "searching for: ",
"no_search_results" : "No match found for the requested keywords "
},
"feedsearch" : {
"hint" : "Bir abonelik yazın...",
"help" : "Return tuşunu seçmek için, yön tüşlarını ise gezinmek için kullanın.",
"result_prefix" : "Abonelikleriniz:"
},
"settings" : {
"general" : {
"value" : "Genel",
"language" : "Dil",
"language_contribute" : "Çeviri katkısında bulunun",
"show_unread" : "Okunmamış öğesi bulunan yayın ve kategorileri listele",
"social_buttons" : "Sosyal paylaşım butonlarını göster",
"scroll_marks" : "Genişletilmiş görünümde götüntülenen iletileri okunmuş işaretle"
},
"appearance" : "Görünüm",
"scroll_speed" : "Scrolling speed when navigating between entries (in milliseconds) ",
"scroll_speed_help" : "set to 0 to disable ",
"theme" : "Tema",
"submit_your_theme" : "Tema gönder",
"custom_css" : "Kişiselleştirilmiş CSS"
},
"details" : {
"feed_details" : "Yayın detayları",
"url" : "URL",
"website" : "Website ",
"name" : "İsim",
"category" : "Kategori",
"position" : "Pozisyon",
"last_refresh" : "Son yenileme",
"message" : "Last refresh message ",
"next_refresh" : "Sonraki yenileme",
"queued_for_refresh" : "Yenilenmek üzere kuyrukta",
"feed_url" : "Yayın URL'si",
"generate_api_key_first" : "Öncelikle profilinizden bir API anahtarı oluşturun.",
"unsubscribe" : "Aboneliği iptal et",
"unsubscribe_confirmation" : "Are you sure you want to unsubscribe from this feed? ",
"delete_category_confirmation" : "Are you sure you want to delete this category? ",
"category_details" : "Kategori detayları",
"tag_details" : "Tag details ",
"parent_category" : "Üst kategori"
},
"profile" : {
"user_name" : "Kullanıcı adı",
"email" : "E-posta",
"change_password" : "Şifre değiştir",
"confirm_password" : "Şifreyi doğrula",
"minimum_6_chars" : "En az 6 karakter",
"passwords_do_not_match" : "Şifreler uyuşmuyor",
"api_key" : "API anahtarı",
"api_key_not_generated" : "Henüz oluşturulmadı",
"generate_new_api_key" : "Yeni bir API anahtarı oluştur",
"generate_new_api_key_info" : "Şifre değiştirmek API anahtarının da değiştirilmesine neden olcak.",
"opml_export" : "OPML dışa aktar",
"delete_account" : "Hesabı sil",
"delete_account_confirmation" : "Delete your acount? There's no turning back! "
},
"about" : {
"rest_api" : {
"value" : "REST API",
"line1" : "CommaFeed, JAX-RS ve AngularJS üzerine kurulmuştur. Bu sayede, REST API desteği bulunur.",
"link_to_documentation" : "Dökümantasyon için tıklayın."
},
"keyboard_shortcuts" : "Klavye kısayolları",
"version" : "CommaFeed version ",
"line1_prefix" : "CommaFeed bir açık kaynak projedir. Kaynak dosyaları ",
"line1_suffix" : " adresinde yayınlanır.",
"line2_prefix" : "Lütfen, bir hata ile karşılaşırsanız bunu ",
"line2_suffix" : " projesinde hatalar sayfasından rapor edin.",
"line3" : "Eğer bu projeyi beğendiyseniz, lütfen bağış yaparak geliştiriciye bu sayfayı ayakta tutmasında yardımcı olun.",
"line4" : "Bitcoin'i tercih edenler için adres ",
"goodies" : {
"value" : "Extralar",
"android_app" : "Android app ",
"subscribe_url" : "Abonelik URL'si",
"chrome_extension" : "Chrome eklentisi",
"firefox_extension" : "Firefox eklentisi",
"opera_extension" : "Opera eklentisi",
"subscribe_bookmarklet" : "Bookmarklet'a abonelik ekle (tıklayın)",
"subscribe_bookmarklet_asc" : "Oldest first ",
"subscribe_bookmarklet_desc" : "Newest first ",
"next_unread_bookmarklet" : "Bookmarklet'daki en son okunmamış ileti (Sık kullanılan çubuğuna sürükleyin)"
},
"translation" : {
"value" : "Çeviri",
"message" : "CommaFeed'i çevirmek için yardımınıza ihtiyacımız var.",
"link" : "Nasıl çeviri katkısında bulunabileceğinizi öğrenmek için tıklayın."
},
"announcements" : "Duyurular",
"shortcuts" : {
"mouse_middleclick" : "Fare orta tuşu",
"open_next_entry" : "sonraki öğeyi görüntüle",
"open_previous_entry" : "önceki öğeyi görüntüle",
"spacebar" : "space/shift+space ",
"move_page_down_up" : "moves the page down/up ",
"focus_next_entry" : "sonraki öğeyi görüntülemeden işaretle",
"focus_previous_entry" : "önceki öğeyi görüntülemeden işaretle",
"open_next_feed" : "sonraki aboneliği veya kategoriyi görüntüle",
"open_previous_feed" : "önceki aboneliği veya kategoriyi görüntüle",
"open_close_current_entry" : "işeretli öğeyi aç/kapat",
"open_current_entry_in_new_window" : "görüntülenen öğeyi yeni pencerede görüntüle",
"open_current_entry_in_new_window_background" : "görüntülenen öğeyi arkaplanda yeni pencerede görüntüle",
"star_unstar" : "görüntülenen öğeye yıldız ekle/kaldır",
"mark_current_entry" : "görüntülenen öğeyi okundu/okunmadı işaretle",
"mark_all_as_read" : "tümünü okundu işaretle",
"open_in_new_tab_mark_as_read" : "öğeyi yeni bir sekmede aç ve okundu işaretle",
"fullscreen" : "toggle full screen mode ",
"font_size" : "increase/decrease font size of the current entry ",
"go_to_all" : "go to the All view ",
"go_to_starred" : "go to the Starred view ",
"feed_search" : "abonelik ismini yazarak aboneliğe git"
}
}
}

180
src/main/app/i18n/zh.js Normal file
View File

@@ -0,0 +1,180 @@
{
"global" : {
"save" : "保存",
"cancel" : "取消",
"delete" : "删除",
"required" : "必填",
"download" : "下载",
"link" : "链接",
"bookmark" : "书签",
"close" : "关闭",
"tags" : "Tags "
},
"tree" : {
"subscribe" : "订阅",
"import" : "导入",
"new_category" : "新的目录",
"all" : "所有",
"starred" : "加星标的订阅"
},
"subscribe" : {
"feed_url" : "订阅地址",
"feed_name" : "订阅名称",
"category" : "目录"
},
"import" : {
"google_reader_prefix" : "从现有的 Google Reader 导入 ",
"google_reader_suffix" : " 账号。",
"google_download" : "可选的, 上传订阅列表文件(.xml)。",
"google_download_link" : "从此处下载。",
"xml_file" : "OPML 文件"
},
"new_category" : {
"name" : "名称",
"parent" : "上一层"
},
"toolbar" : {
"unread" : "未读",
"all" : "所有",
"previous_entry" : "上一条目",
"next_entry" : "下一条目",
"refresh" : "刷新",
"refresh_all" : "刷新所有订阅",
"sort_by_asc_desc" : "按日期升序/降序排序",
"titles_only" : "仅显示标题",
"expanded_view" : "显示内容",
"mark_all_as_read" : "标记所有为已读",
"mark_all_older_12_hours" : "Items older than 12 hours ",
"mark_all_older_day" : "早于一天的条目",
"mark_all_older_week" : "早于一周的条目",
"mark_all_older_two_weeks" : "早于两周的条目",
"settings" : "设置",
"profile" : "配置文件",
"admin" : "管理",
"about" : "关于",
"logout" : "退出",
"donate" : "捐赠"
},
"view" : {
"entry_source" : "来自",
"entry_author" : "作者",
"error_while_loading_feed" : "加载该订阅出现错误",
"keep_unread" : "保持未读",
"no_unread_items" : "没有未读的条目。",
"mark_up_to_here" : "标记为已读至本条目",
"search_for" : "searching for: ",
"no_search_results" : "No match found for the requested keywords "
},
"feedsearch" : {
"hint" : "输入订阅",
"help" : "使用方向键浏览,回车键选择",
"result_prefix" : "你的订阅:"
},
"settings" : {
"general" : {
"value" : "常规",
"language" : "语言",
"language_contribute" : "贡献翻译",
"show_unread" : "显示未读的订阅和目录条目",
"social_buttons" : "显示分享按钮",
"scroll_marks" : "在扩展视图中,可滚动条目将其标记为已读"
},
"appearance" : "外观",
"scroll_speed" : "Scrolling speed when navigating between entries (in milliseconds) ",
"scroll_speed_help" : "set to 0 to disable ",
"theme" : "主题",
"submit_your_theme" : "提交你的主题",
"custom_css" : "自定义 CSS 样式"
},
"details" : {
"feed_details" : "订阅详情",
"url" : "地址",
"website" : "站点",
"name" : "名称",
"category" : "目录",
"position" : "位置",
"last_refresh" : "上一次刷新",
"message" : "Last refresh message ",
"next_refresh" : "下一次刷新",
"queued_for_refresh" : "放入等待刷新的队列",
"feed_url" : "订阅地址",
"generate_api_key_first" : "在您的配置文件中首先生成一个 API 密钥。",
"unsubscribe" : "取消订阅",
"unsubscribe_confirmation" : "Are you sure you want to unsubscribe from this feed? ",
"delete_category_confirmation" : "Are you sure you want to delete this category? ",
"category_details" : "目录详情",
"tag_details" : "Tag details ",
"parent_category" : "上一层目录"
},
"profile" : {
"user_name" : "用户名",
"email" : "邮箱",
"change_password" : "修改密码",
"confirm_password" : "确认密码",
"minimum_6_chars" : "最少为 6 个字母",
"passwords_do_not_match" : "密码不匹配",
"api_key" : "API 密钥",
"api_key_not_generated" : "API 密钥尚未生成",
"generate_new_api_key" : "生成一个新的 API 密钥",
"generate_new_api_key_info" : "修改密码将会生成一个新的的 API 密钥",
"opml_export" : "导出 OPML",
"delete_account" : "删除帐号",
"delete_account_confirmation" : "Delete your acount? There's no turning back! "
},
"about" : {
"rest_api" : {
"value" : "重置 API",
"line1" : "CommaFeed 基于 JAX-RS 和 AngularJS。所以可选择重置 API。",
"link_to_documentation" : "文档链接."
},
"keyboard_shortcuts" : "快捷键",
"version" : "CommaFeed 版本",
"line1_prefix" : "CommaFeed 是一个开源项目,项目源码保存在 ",
"line1_suffix" : "。",
"line2_prefix" : "如果遇到问题,请到问题报告页面提交 ",
"line2_suffix" : " 项目。",
"line3" : "如果你喜欢本项目,请考虑捐赠来支援开发人员工作以及服务器开支。",
"line4" : "如果你想要使用 Bitcoin ,这里是我们的 Bitcoin 地址",
"goodies" : {
"value" : "扩展",
"android_app" : "Android 应用",
"subscribe_url" : "订阅地址",
"chrome_extension" : "Chrome 扩展",
"firefox_extension" : "Firefox 扩展",
"opera_extension" : "Opera 扩展",
"subscribe_bookmarklet" : "添加一个订阅书签 (点击这) ",
"subscribe_bookmarklet_asc" : "旧条目优先",
"subscribe_bookmarklet_desc" : "新条目优先",
"next_unread_bookmarklet" : "最新未读文章书签 (拖动到书签栏上) "
},
"translation" : {
"value" : "翻译",
"message" : "我们需要您来帮助翻译 CommaFeed。",
"link" : "查看如何贡献翻译。"
},
"announcements" : "声明",
"shortcuts" : {
"mouse_middleclick" : "鼠标中键点击",
"open_next_entry" : "打开下一个条目",
"open_previous_entry" : "打开上一个条目",
"spacebar" : "空格/shift+空格",
"move_page_down_up" : "将页面向下/上移动",
"focus_next_entry" : "移动到下一个条目但不打开",
"focus_previous_entry" : "移动到上一个条目但不打开",
"open_next_feed" : "打开下一个订阅或目录",
"open_previous_feed" : "打开上一个订阅或目录",
"open_close_current_entry" : "打开/关闭当前条目",
"open_current_entry_in_new_window" : "在新窗口中打开当前条目",
"open_current_entry_in_new_window_background" : "在后台新窗口中打开当前条目",
"star_unstar" : "该条目加注/取消星标",
"mark_current_entry" : "标记当前条目为已读/未读",
"mark_all_as_read" : "标记所有条目为已读",
"open_in_new_tab_mark_as_read" : "在新的窗口中打开条目并标记为已读",
"fullscreen" : "全屏模式",
"font_size" : "增大/缩小本条目字体",
"go_to_all" : "跳转到‘全部’页面",
"go_to_starred" : "跳转到‘加星标’页面",
"feed_search" : "输入订阅名称来导航至相应订阅"
}
}
}

View File

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

81
src/main/app/index.html Normal file
View File

@@ -0,0 +1,81 @@
<!DOCTYPE html>
<html>
<head>
<title>CommaFeed</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<link rel="shortcut icon" type="image/x-icon" href="favicon.ico" />
<link rel="apple-touch-icon" href="app-icon-57.png" />
<link rel="apple-touch-icon" sizes="72x72" href="app-icon-72.png" />
<link rel="apple-touch-icon" sizes="114x114" href="app-icon-114.png" />
<link rel="apple-touch-icon" sizes="144x144" href="app-icon-144.png" />
<link rel="icon" sizes="32x32" href="app-icon-32.png" />
<link rel="icon" sizes="64x64" href="app-icon-64.png" />
<link rel="icon" sizes="128x128" href="app-icon-128.png" />
<link rel="icon" sizes="192x192" href="app-icon-192.png" />
<link rel="shortcut icon" type="image/x-icon" href="favicon.ico" />
<meta name="theme-color" content="#F88A14" />
<meta name="application-name" content="CommaFeed" />
<meta name="msapplication-navbutton-color" content="#F88A14" />
<meta name="msapplication-starturl" content="/" />
<meta name="msapplication-square70x70logo" content="metro-icon-70.png" />
<meta name="msapplication-square150x150logo" content="metro-icon-150.png" />
<link rel="fluid-icon" href="app-icon-512.png" title="CommaFeed" />
<link rel="logo" type="image/svg" href="app-icon.svg" />
<!-- build:css css/app.css -->
<link rel="stylesheet" href="lib/bootstrap/dist/css/bootstrap.css" />
<link rel="stylesheet" href="lib/font-awesome/css/font-awesome.css" />
<link rel="stylesheet" href="lib/select2/select2.css" />
<link rel="stylesheet" href="lib/ng-grid/ng-grid.css" />
<link rel="stylesheet" href="lib/jquery-ui/themes/base/jquery-ui.css" />
<link rel="stylesheet" href="lib/angular-loading-bar/build/loading-bar.css" />
<link rel="stylesheet" href="css/app.css" />
<!-- endbuild -->
<link rel="stylesheet" href="custom_css.css" />
</head>
<body>
<div ng-app="commafeed" id="main" class="main">
<div ui-view></div>
</div>
<!-- build:js js/app.js -->
<script type="text/javascript" src="lib/lodash/dist/lodash.js"></script>
<script type="text/javascript" src="lib/jquery/dist/jquery.js"></script>
<script type="text/javascript" src="lib/jquery-ui/ui/jquery-ui.js"></script>
<script type="text/javascript" src="lib/jquery-mousewheel/jquery.mousewheel.js"></script>
<script type="text/javascript" src="lib/bootstrap/dist/js/bootstrap.js"></script>
<script type="text/javascript" src="lib/angular/angular.js"></script>
<script type="text/javascript" src="lib/angular-route/angular-route.js"></script>
<script type="text/javascript" src="lib/angular-resource/angular-resource.js"></script>
<script type="text/javascript" src="lib/angular-sanitize/angular-sanitize.js"></script>
<script type="text/javascript" src="lib/angular-touch/angular-touch.js"></script>
<script type="text/javascript" src="lib/angular-animate/angular-animate.js"></script>
<script type="text/javascript" src="lib/angular-bootstrap/ui-bootstrap-tpls.js"></script>
<script type="text/javascript" src="lib/angular-loading-bar/build/loading-bar.js"></script>
<script type="text/javascript" src="lib/angular-translate/angular-translate.js"></script>
<script type="text/javascript" src="lib/angular-translate-loader-static-files/angular-translate-loader-static-files.js"></script>
<script type="text/javascript" src="lib/ngInfiniteScroll/build/ng-infinite-scroll.js"></script>
<script type="text/javascript" src="lib/ng-grid/build/ng-grid.js"></script>
<script type="text/javascript" src="lib/angular-ui-router/release/angular-ui-router.js"></script>
<script type="text/javascript" src="lib/angular-ui-utils/ui-utils.js"></script>
<script type="text/javascript" src="lib/angular-ui-select2/src/select2.js"></script>
<script type="text/javascript" src="lib/select2/select2.js"></script>
<script type="text/javascript" src="lib/mousetrap/mousetrap.js"></script>
<script type="text/javascript" src="lib/momentjs/min/moment-with-locales.js"></script>
<script type="text/javascript" src="lib/devicejs/lib/device.js"></script>
<script type="text/javascript" src="js/controllers.js"></script>
<script type="text/javascript" src="js/directives.js"></script>
<script type="text/javascript" src="js/filters.js"></script>
<script type="text/javascript" src="js/main.js"></script>
<script type="text/javascript" src="js/services.js"></script>
<script type="text/javascript" src="js/i18n.js"></script>
<script type="text/javascript" src="js/templates.js"></script>
<!-- endbuild -->
<script type="text/javascript" src="analytics.js"></script>
</body>
</html>

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,361 @@
var module = angular.module('commafeed.directives', []);
module.directive('focus', ['$timeout', function($timeout) {
return {
restrict : 'A',
link : function(scope, element, attrs) {
scope.$watch(attrs.focus, function(value) {
if (!value)
return;
$timeout(function() {
$(element).focus();
});
});
}
};
}]);
module.directive('confirmClick', [function() {
return {
priority : -1,
restrict : 'A',
link : function(scope, element, attrs) {
element.bind('click', function(e) {
var message = scope.$eval(attrs.confirmClick);
if (message && !confirm(message)) {
e.stopImmediatePropagation();
e.preventDefault();
}
});
}
};
}]);
/**
* Open a popup window pointing to the url in the href attribute
*/
module.directive('popup', function() {
var opts = 'menubar=no,toolbar=no,resizable=yes,scrollbars=yes,height=600,width=800';
return {
link : function(scope, elm, attrs) {
elm.bind('click', function(event) {
window.open(this.href, '', opts);
event.preventDefault();
});
}
};
});
/**
* entry tag handling
*/
module.directive('tags', function() {
return {
restrict : 'E',
scope : {
entry : '='
},
replace : true,
templateUrl : 'templates/_tags.html',
controller : ['$scope', 'EntryService', function($scope, EntryService) {
$scope.select2Options = {
'multiple' : true,
'simple_tags' : true,
'maximumInputLength' : 40,
tags : EntryService.tags
};
$scope.$watch('entry.tags', function(newValue, oldValue) {
if (oldValue && newValue != oldValue) {
var data = {
entryId : $scope.entry.id,
tags : []
};
if (newValue) {
data.tags = newValue;
}
EntryService.tag(data);
}
}, true);
}]
};
});
/**
* Reusable favicon component
*/
module.directive('favicon', function() {
var tpl = '<img ng-src="{{url}}" class="favicon"></img>';
return {
restrict : 'E',
scope : {
url : '='
},
replace : true,
template : tpl
};
});
/**
* Support for the blur event
*/
module.directive('ngBlur', function() {
return {
restrict : 'A',
link : function(scope, elm, attrs) {
elm.bind('blur', function() {
scope.$apply(attrs.ngBlur);
});
}
};
});
/**
* Prevent mousewheel scrolling from propagating to the parent when scrollbar
* reaches top or bottom
*/
module.directive('mousewheelScrolling', function() {
return {
restrict : 'A',
link : function(scope, elem, attr) {
elem.bind('mousewheel', function(e, d) {
var t = $(this);
if (d > 0 && t.scrollTop() === 0) {
e.preventDefault();
} else {
if (d < 0 && (t.scrollTop() == t.get(0).scrollHeight - t.innerHeight())) {
e.preventDefault();
}
}
});
}
};
});
/**
* Needed to use recursive directives. Wrap a recursive element with a
* <recursive> tag
*/
module.directive('recursive', ['$compile', function($compile) {
return {
restrict : 'E',
priority : 100000,
compile : function(tElement, tAttr) {
var contents = tElement.contents().remove();
var compiledContents = null;
return function(scope, iElement, iAttr) {
if (!compiledContents) {
compiledContents = $compile(contents);
}
iElement.append(compiledContents(scope, function(clone) {
return clone;
}));
};
}
};
}]);
/**
* Reusable category component
*/
module.directive('category', [function() {
return {
scope : {
node : '=',
level : '=',
selectedType : '=',
selectedId : '=',
showLabel : '=',
showChildren : '=',
unreadCount : '&',
tag : '='
},
restrict : 'E',
replace : true,
templateUrl : 'templates/_category.html',
controller : ['$scope', '$state', 'FeedService', 'CategoryService', 'SettingsService', 'MobileService',
function($scope, $state, FeedService, CategoryService, SettingsService, MobileService) {
$scope.settingsService = SettingsService;
$scope.getClass = function(level) {
if ($scope.showLabel) {
return 'indent' + level;
}
};
$scope.categoryLabel = function(category) {
return $scope.showLabel !== true ? $scope.showLabel : category.name;
};
$scope.categoryCountLabel = function(category) {
var count = $scope.unreadCount({
category : category
});
var label = '';
if (count > 0) {
label += count;
}
return label;
};
$scope.feedCountLabel = function(feed) {
var label = '';
if (feed.unread > 0) {
label += feed.unread;
}
return label;
};
$scope.feedClicked = function(id, event) {
// Could be called by a middle click
if (!event || (!event.ctrlKey && event.which == 1)) {
MobileService.toggleLeftMenu();
if ($scope.selectedType == 'feed' && id == $scope.selectedId) {
$scope.$emit('emitReload');
} else {
$state.transitionTo('feeds.view', {
_type : 'feed',
_id : id
});
}
if (event) {
event.preventDefault();
event.stopPropagation();
}
}
};
$scope.categoryClicked = function(id, isTag) {
MobileService.toggleLeftMenu();
var type = isTag ? 'tag' : 'category';
if ($scope.selectedType == type && id == $scope.selectedId) {
$scope.$emit('emitReload');
} else {
$state.transitionTo('feeds.view', {
_type : type,
_id : id
});
}
};
$scope.showFeedDetails = function(feed) {
$state.transitionTo('feeds.feed_details', {
_id : feed.id
});
};
$scope.showCategoryDetails = function(id, isTag) {
if (isTag) {
$state.transitionTo('feeds.tag_details', {
_id : id
});
} else {
$state.transitionTo('feeds.category_details', {
_id : id
});
}
};
$scope.toggleCategory = function(category, event) {
event.preventDefault();
event.stopPropagation();
category.expanded = !category.expanded;
if (category.id == 'all') {
return;
}
CategoryService.collapse({
id : category.id,
collapse : !category.expanded
});
};
}]
};
}]);
module.directive('draggable', function() {
return {
restrict : 'A',
link : function(scope, element, attrs) {
element.draggable({
revert : 'invalid',
helper : 'clone',
distance : 10,
axis : 'y'
}).data('source', scope.$eval(attrs.draggable));
}
};
});
module.directive('droppable', ['CategoryService', 'FeedService', function(CategoryService, FeedService) {
return {
restrict : 'A',
link : function(scope, element, attrs) {
element.droppable({
tolerance : 'pointer',
over : function(event, ui) {
},
drop : function(event, ui) {
var draggable = angular.element(ui.draggable);
var source = draggable.data('source');
var target = scope.$eval(attrs.droppable);
if (angular.equals(source, target)) {
return;
}
var data = {
id : source.id,
name : source.name
};
if (source.children) {
// source is a category
} else {
// source is a feed
if (target.children) {
// target is a category
data.categoryId = target.id;
data.position = 0;
} else {
// target is a feed
data.categoryId = target.categoryId;
data.position = target.position;
}
FeedService.modify(data, function() {
CategoryService.init();
});
}
scope.$apply();
}
});
}
};
}]);
module.directive('metricMeter', function() {
return {
scope : {
metric : '=',
label : '='
},
restrict : 'E',
templateUrl : 'templates/_metrics.meter.html'
};
});
module.directive('metricGauge', function() {
return {
scope : {
metric : '=',
label : '='
},
restrict : 'E',
templateUrl : 'templates/_metrics.gauge.html'
};
});

113
src/main/app/js/filters.js Normal file
View File

@@ -0,0 +1,113 @@
var module = angular.module('commafeed.filters', []);
/**
* smart date formatter
*/
module.filter('entryDate', function() {
return function(timestamp, defaultValue) {
if (!timestamp) {
return defaultValue;
}
var d = moment(timestamp);
var now = moment();
var formatted;
if (Math.abs(d.diff(now)) < 86400000) {
formatted = d.fromNow();
} else {
formatted = d.format('YYYY-MM-DD HH:mm');
}
return formatted;
};
});
/**
* rewrites iframes to use https if commafeed uses https
*/
module.filter('iframeHttpsRewrite', function() {
return function(html) {
var result = html;
if (location.protocol === 'https:') {
var wrapper = $('<div></div>').html(html);
$('iframe', wrapper).each(function(i, elem) {
var e = $(elem);
e.attr('src', e.attr('src').replace(/^http:\/\//i, 'https://'));
});
result = wrapper.html();
}
return result;
};
});
/**
* inserts title or alt-text after images, if any
*/
module.filter('appendImageTitles', function() {
return function(html) {
var result = html;
var wrapper = $('<div></div>').html(html);
$('img', wrapper).each(function(i, elem) {
var e = $(elem);
var title = e.attr('title') || e.attr('alt');
if (title) {
var text = $('<span style="font-style: italic;"></span>').text(title);
e.after(text);
}
});
result = wrapper.html();
return result;
};
});
/**
* escapes the url
*/
module.filter('escape', function() {
return encodeURIComponent;
});
/**
* returns a trusted html content
*/
module.filter('trustHtml', ['$sce', function($sce) {
return function(val) {
return $sce.trustAsHtml(val);
};
}]);
/**
* returns a trusted url
*/
module.filter('trustUrl', ['$sce', function($sce) {
return function(val) {
return $sce.trustAsResourceUrl(val);
};
}]);
/**
* add the 'highlight-search' class to text matching keywords
*/
module.filter('highlight', function() {
return function(html, keywords) {
if (keywords) {
var handleKeyword = function(token, html) {
var expr = new RegExp(token, 'gi');
var container = $('<span>').html(html);
var elements = container.find('*').addBack();
var textNodes = elements.not('iframe').contents().not(elements);
textNodes.each(function() {
var replaced = this.nodeValue.replace(expr, '<span class="highlight-search">$&</span>');
$('<span>').html(replaced).insertBefore(this);
$(this).remove();
});
return container.html();
};
var tokens = keywords.split(' ');
for (var i = 0; i < tokens.length; i++) {
html = handleKeyword(tokens[i], html);
}
}
return html;
};
});

34
src/main/app/js/i18n.js Normal file
View File

@@ -0,0 +1,34 @@
var module = angular.module('commafeed.i18n', []);
module.service('LangService', [function() {
this.langs = {
'ar': 'العربية',
'ca': 'Català',
'en': 'English',
'es': 'Español',
'de': 'Deutsch',
'fa': 'فارسی',
'fr': 'Français',
'gl': 'Galician',
'glk': 'گیلکی',
'hu': 'Magyar',
'ja': '日本語',
'ko': '한국어',
'nl': 'Nederlands',
'nb': 'Norsk (bokmål)',
'nn': 'Norsk (nynorsk)',
'pt': 'Português',
'pl': 'Polski',
'ru': 'русский',
'fi': 'Suomi',
'sv': 'Svenska',
'zh': '简体中文',
'it': 'Italiano',
'tr': 'Türkçe',
'cy': 'Cymraeg',
'sk': 'Slovenčina',
'da': 'Danish',
'cs': 'Čeština',
'ms': 'Bahasa Malaysian'
}
}]);

View File

@@ -1,35 +1,46 @@
var app = angular.module('commafeed', [ 'ui', 'ui.bootstrap', 'ui.state',
'commafeed.directives', 'commafeed.controllers', 'commafeed.services',
'commafeed.filters', 'ngSanitize', 'infinite-scroll',
'ngGrid' ]);
var app = angular.module('commafeed', ['ngRoute', 'ngTouch', 'ngAnimate', 'ui.utils', 'ui.bootstrap', 'ui.router', 'ui.select2',
'commafeed.directives', 'commafeed.controllers', 'commafeed.services', 'commafeed.filters', 'commafeed.i18n', 'ngSanitize',
'infinite-scroll', 'ngGrid', 'chieffancypants.loadingBar', 'pascalprecht.translate']);
app.config([ '$routeProvider', '$stateProvider', '$urlRouterProvider', '$httpProvider',
function($routeProvider, $stateProvider, $urlRouterProvider, $httpProvider) {
var interceptor = [ '$rootScope', '$q', function(scope, $q) {
app.config([
'$routeProvider',
'$stateProvider',
'$urlRouterProvider',
'$httpProvider',
'$compileProvider',
'cfpLoadingBarProvider',
'$translateProvider',
function($routeProvider, $stateProvider, $urlRouterProvider, $httpProvider, $compileProvider, cfpLoadingBarProvider,
$translateProvider) {
$translateProvider.useStaticFilesLoader({
prefix : 'i18n/',
suffix : '.js'
});
$translateProvider.preferredLanguage('en');
cfpLoadingBarProvider.includeSpinner = false;
$compileProvider.aHrefSanitizationWhitelist(/^\s*(https?|ftp|mailto|javascript):/);
var interceptor = ['$rootScope', '$q', '$injector', function(scope, $q, $injector) {
var f = {};
var success = function (response) {
f.response = function(response) {
return response;
};
var error = function (response) {
f.responseError = function(response) {
var status = response.status;
if (status == 401) {
window.location = 'logout';
return;
} else {
return $q.reject(response);
$injector.get('$state').transitionTo('welcome');
}
return $q.reject(response);
};
var promise = function(promise) {
return promise.then(success, error);
};
return promise;
} ];
$httpProvider.responseInterceptors.push(interceptor);
return f;
}];
$httpProvider.interceptors.push(interceptor);
$stateProvider.state('feeds', {
'abstract' : true,
url : '/feeds',
@@ -40,6 +51,21 @@ app.config([ '$routeProvider', '$stateProvider', '$urlRouterProvider', '$httpPro
templateUrl : 'templates/feeds.view.html',
controller : 'FeedListCtrl'
});
$stateProvider.state('feeds.subscribe', {
url : '/subscribe',
templateUrl : 'templates/feeds.subscribe.html',
controller : 'SubscribeCtrl'
});
$stateProvider.state('feeds.new_category', {
url : '/add_category',
templateUrl : 'templates/feeds.new_category.html',
controller : 'NewCategoryCtrl'
});
$stateProvider.state('feeds.import', {
url : '/import',
templateUrl : 'templates/feeds.import.html',
controller : 'ImportCtrl'
});
$stateProvider.state('feeds.search', {
url : '/search/:_keywords',
templateUrl : 'templates/feeds.view.html',
@@ -55,6 +81,11 @@ app.config([ '$routeProvider', '$stateProvider', '$urlRouterProvider', '$httpPro
templateUrl : 'templates/feeds.category_details.html',
controller : 'CategoryDetailsCtrl'
});
$stateProvider.state('feeds.tag_details', {
url : '/details/tag/:_id',
templateUrl : 'templates/feeds.tag_details.html',
controller : 'TagDetailsCtrl'
});
$stateProvider.state('feeds.help', {
url : '/help',
templateUrl : 'templates/feeds.help.html',
@@ -91,19 +122,24 @@ app.config([ '$routeProvider', '$stateProvider', '$urlRouterProvider', '$httpPro
templateUrl : 'templates/admin.useredit.html',
controller : 'ManageUserCtrl'
});
$stateProvider.state('admin.duplicate_feeds', {
url : '/feeds/duplicates',
templateUrl : 'templates/admin.duplicate_feeds.html',
controller : 'ManageDuplicateFeedsCtrl'
});
$stateProvider.state('admin.settings', {
url : '/settings',
templateUrl : 'templates/admin.settings.html',
controller : 'ManageSettingsCtrl'
});
$stateProvider.state('admin.metrics', {
url : '/metrics',
templateUrl : 'templates/admin.metrics.html',
controller : 'MetricsCtrl'
});
$stateProvider.state('welcome', {
url : '/welcome',
templateUrl : 'templates/welcome.html'
});
$urlRouterProvider.when('/', '/feeds/view/category/all');
$urlRouterProvider.when('/admin', '/admin/settings');
$urlRouterProvider.otherwise('/');
} ]);
}]);

View File

@@ -1,6 +1,6 @@
var module = angular.module('commafeed.services', [ 'ngResource' ]);
var module = angular.module('commafeed.services', ['ngResource']);
module.service('AnalyticsService', [ '$state', function($state) {
module.service('AnalyticsService', ['$state', function($state) {
this.track = function(path) {
if (typeof ga === 'undefined') {
return;
@@ -10,9 +10,9 @@ module.service('AnalyticsService', [ '$state', function($state) {
page : path
});
};
} ]);
}]);
module.service('MobileService', [ '$state', function($state) {
module.service('MobileService', ['$state', function($state) {
this.leftMenu = false;
this.rightMenu = false;
this.toggleLeftMenu = function() {
@@ -23,18 +23,24 @@ module.service('MobileService', [ '$state', function($state) {
this.rightMenu = !this.rightMenu;
$('body').toggleClass('right-menu-active');
};
var width = (window.innerWidth > 0) ? window.innerWidth : screen.width;
this.mobile = width < 979;
this.mobile = device.mobile() || device.tablet();
}]);
module.factory('ProfileService', ['$resource', function($resource) {
var res = $resource('rest/user/profile/');
res.deleteAccount = $resource('rest/user/profile/deleteAccount').save;
return res;
}]);
module.factory('SettingsService', ['$resource', function($resource) {
module.factory('SessionService', ['$resource', function($resource) {
var res = {};
res.login = $resource('rest/user/login').save;
res.register = $resource('rest/user/register').save;
res.passwordReset = $resource('rest/user/passwordReset').save;
return res;
}]);
module.factory('SettingsService', ['$resource', '$translate', function($resource, $translate) {
var res = $resource('rest/user/settings');
var s = {};
@@ -50,12 +56,13 @@ module.factory('SettingsService', ['$resource', function($resource) {
res.get(function(data) {
s.settings = data;
var lang = s.settings.language || 'en';
$translate.use(lang);
if (lang === 'zh') {
lang = 'zh-cn';
} else if (lang === 'ms') {
lang = 'ms-my';
}
moment.lang(lang, {});
moment.locale(lang, {});
if (callback) {
callback(data);
}
@@ -65,8 +72,7 @@ module.factory('SettingsService', ['$resource', function($resource) {
return s;
}]);
module.factory('FeedService', ['$resource', '$http',
function($resource, $http) {
module.factory('FeedService', ['$resource', '$http', function($resource, $http) {
var actions = {
entries : {
method : 'GET',
@@ -92,6 +98,12 @@ function($resource, $http) {
_method : 'refresh'
}
},
refreshAll : {
method : 'GET',
params : {
_method : 'refreshAll'
}
},
subscribe : {
method : 'POST',
params : {
@@ -116,19 +128,18 @@ function($resource, $http) {
return res;
}]);
module.factory('CategoryService', ['$resource', '$http',
function($resource, $http) {
module.factory('CategoryService', ['$resource', '$http', function($resource, $http) {
var traverse = function(callback, category, parentName) {
callback(category, parentName);
var children = category.children;
if (children) {
for ( var c = 0; c < children.length; c++) {
for (var c = 0; c < children.length; c++) {
traverse(callback, children[c], category.name);
}
}
};
// flatten categories
var flatten = function(category) {
var array = [];
@@ -139,8 +150,8 @@ function($resource, $http) {
}
array.push({
id : category.id,
name : name,
orig: category
name : name,
orig : category
});
};
traverse(callback, category);
@@ -156,21 +167,22 @@ function($resource, $http) {
traverse(callback, category);
return subs;
};
// flatten everything
var flatAll = function(category, a) {
a.push([ category.id, 'category' ]);
a.push([category.id, 'category']);
_.each(category.children, function(child) {
flatAll(child, a);
});
_.each(category.feeds, function(feed) {
a.push([ feed.id, 'feed' ]);
a.push([feed.id, 'feed']);
});
};
var actions = {
get : {
method : 'GET',
ignoreLoadingBar : true,
params : {
_method : 'get'
}
@@ -222,7 +234,7 @@ function($resource, $http) {
res.subscriptions = data;
res.flatCategories = flatten(data);
res.feeds = flatFeeds(data);
res.flatAll = [];
flatAll(data, res.flatAll);
res.flatAll.splice(1, 0, ['starred', 'category']);
@@ -231,11 +243,14 @@ function($resource, $http) {
callback(data);
});
};
res.refresh = function(callback) {
res.refresh = function(success, error) {
res.get(function(data) {
_.merge(res.subscriptions, data);
if (callback)
callback(data);
if (success)
success(data);
}, function(data) {
if (error)
error(data);
});
};
@@ -243,8 +258,7 @@ function($resource, $http) {
return res;
}]);
module.factory('EntryService', ['$resource', '$http',
function($resource, $http) {
module.factory('EntryService', ['$resource', '$http', function($resource, $http) {
var actions = {
search : {
method : 'GET',
@@ -254,6 +268,7 @@ function($resource, $http) {
},
mark : {
method : 'POST',
ignoreLoadingBar : true,
params : {
_method : 'mark'
}
@@ -269,9 +284,30 @@ function($resource, $http) {
params : {
_method : 'star'
}
},
tag : {
method : 'POST',
params : {
_method : 'tag'
}
}
};
var res = $resource('rest/entry/:_method', {}, actions);
res.tags = [];
var initTags = function() {
$http.get('rest/entry/tags').success(function(data) {
res.tags = [];
res.tags.push.apply(res.tags, data);
res.tags.sort();
});
};
var oldTag = res.tag;
res.tag = function(data) {
oldTag(data, function() {
initTags();
});
};
initTags();
return res;
}]);
@@ -289,27 +325,12 @@ module.factory('AdminSettingsService', ['$resource', function($resource) {
return res;
}]);
module.factory('AdminCleanupService', ['$resource', function($resource) {
var actions = {
findDuplicateFeeds : {
method : 'GET',
isArray: true,
params : {
_method : 'findDuplicateFeeds'
}
},
mergeFeeds : {
method : 'POST',
params : {
_method : 'merge'
}
}
};
var res = $resource('rest/admin/cleanup/:_method', {}, actions);
module.factory('AdminMetricsService', ['$resource', function($resource) {
var res = $resource('rest/admin/metrics/');
return res;
}]);
module.factory('ServerService', ['$resource', function($resource) {
var res = $resource('rest/server/get');
var res = $resource('rest/server/get');
return res;
}]);

View File

Before

Width:  |  Height:  |  Size: 4.8 KiB

After

Width:  |  Height:  |  Size: 4.8 KiB

View File

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

@@ -6,10 +6,18 @@
@import "components/entry-list";
@import "components/subscription-list";
@import "components/help";
@import "components/loading-bar";
@import "components/readabilicons";
@import "components/zocial";
@import "mobile/mobile";
@import "themes/test";
@import "themes/bootstrap";
@import "themes/ebraminio";
@import "themes/MRACHINI";
@import "themes/nightsky";
@import "themes/svetla";
@import "themes/dark";
@import "themes/third";

View File

@@ -1,3 +1,8 @@
.main-content {
margin-left: 250px;
padding-left: 15px;
}
.full-screen .main-content {
width: 100%;
margin-left: 0;
@@ -14,6 +19,7 @@
.entrylist-header h3 {
margin: 0;
line-height: 40px;
}
.entrylist-header a {
@@ -70,7 +76,7 @@
#feed-accordion .entry-heading-link {
color: black;
height: 20px;
height: 32px;
display: block;
cursor: pointer;
padding: 6px 0px;
@@ -82,11 +88,8 @@
overflow: hidden;
white-space: nowrap;
position: absolute;
text-overflow: ellipsis;
}
#feed-accordion .entry-heading .narrow {
width: 145px;
text-overflow: ellipsis;
}
#feed-accordion .entry-heading .entry-name {
@@ -146,7 +149,7 @@
}
.full-screen #feed-accordion .entry-body-content {
max-width: 100%;
max-width: 100%;
}
#feed-accordion .entry-enclosure {
@@ -166,6 +169,11 @@
margin-left: 5px;
}
#feed-accordion .entry-buttons .keep-unread label {
display: inline;
font-weight: inherit;
}
#feed-accordion .share-buttons a {
color: #333333;
padding-left: 5px;
@@ -175,6 +183,24 @@
text-decoration: none;
}
#feed-accordion .tags-panel {
margin-left: 30px;
}
#feed-accordion .tags-panel .label{
margin-left: 5px;
}
.select2-container-multi .select2-choices .select2-search-field input {
padding: 2px
}
#feed-accordion .tag-input {
margin: 0 0 0 5px;
padding: 0;
width: 200px;
}
#feed-accordion .entry-buttons label {
margin-bottom: 0px;
font-size: 12px;
@@ -237,4 +263,9 @@
#feed-accordion .current.entry-font-size-5 {
font-size: 19px;
}
#feed-accordion .highlight-search {
background-color: rgba(255, 255, 140, 0.5);
color: #333;
}

View File

@@ -0,0 +1,12 @@
#loading-bar .bar {
background: #2c3e50;
}
#loading-bar .peg {
box-shadow: 0 0 10px #2c3e50, 0 0 5px #2c3e50;
}
#loading-bar-spinner .spinner-icon {
border-top-color: #2c3e50;
border-left-color: #2c3e50;
}

Some files were not shown because too many files have changed in this diff Show More