i18n now working

This commit is contained in:
Athou
2014-08-10 15:20:04 +02:00
parent f9e7958e8b
commit 39be4fec4e
53 changed files with 5310 additions and 210 deletions

View File

@@ -6,13 +6,13 @@
<button type="button" class="close" ng-click="close()">&times;</button>
<h4>
<input ng-model="filter" class="filter-input"
ui-keydown="{'up': 'focusPrevious($event)', 'down': 'focusNext($event)', 'enter': 'openFocused()' }" placeholder="${feedsearch.hint}"
ui-keydown="{'up': 'focusPrevious($event)', 'down': 'focusNext($event)', 'enter': 'openFocused()' }" placeholder="'feedsearch.hint' | translate"
focus="feedSearchModal">
</h4>
<small>${feedsearch.help}</small>
<small>{{ 'feedsearch.help' | translate }}</small>
</div>
<div class="modal-body">
<strong>${feedsearch.result_prefix}</strong>
<strong>{{ 'feedsearch.result_prefix' | translate }}</strong>
<span ng-repeat="feed in (filtered = (CategoryService.feeds | filter:{name: filter} | limitTo:40))">
<span ng-class="{block: filter, focus: focus.id == feed.id}" class="feed-link">
<a class=" pointer" ng-click="goToFeed(feed.id)">

View File

@@ -1,71 +1,71 @@
<dl class="dl-horizontal">
<dt>j</dt>
<dd>${about.shortcuts.open_next_entry}</dd>
<dd>{{ 'about.shortcuts.open_next_entry' | translate }}</dd>
<dt>k</dt>
<dd>${about.shortcuts.open_previous_entry}</dd>
<dd>{{ 'about.shortcuts.open_previous_entry' | translate }}</dd>
<dt>${about.shortcuts.spacebar}</dt>
<dd>${about.shortcuts.move_page_down_up}</dd>
<dt>{{ 'about.shortcuts.spacebar' | translate }}</dt>
<dd>{{ 'about.shortcuts.move_page_down_up' | translate }}</dd>
<dt>n</dt>
<dd>${about.shortcuts.focus_next_entry}</dd>
<dd>{{ 'about.shortcuts.focus_next_entry' | translate }}</dd>
<dt>p</dt>
<dd>${about.shortcuts.focus_previous_entry}</dd>
<dd>{{ 'about.shortcuts.focus_previous_entry' | translate }}</dd>
<dt>shift+j,shift+n</dt>
<dd>${about.shortcuts.open_next_feed}</dd>
<dd>{{ 'about.shortcuts.open_next_feed' | translate }}</dd>
<dt>shift+k,shift+p</dt>
<dd>${about.shortcuts.open_previous_feed}</dd>
<dd>{{ 'about.shortcuts.open_previous_feed' | translate }}</dd>
<dt>o, enter</dt>
<dd>${about.shortcuts.open_close_current_entry}</dd>
<dd>{{ 'about.shortcuts.open_close_current_entry' | translate }}</dd>
<dt>v</dt>
<dd>${about.shortcuts.open_current_entry_in_new_window}</dd>
<dd>{{ 'about.shortcuts.open_current_entry_in_new_window' | translate }}</dd>
<dt>b</dt>
<dd>${about.shortcuts.open_current_entry_in_new_window_background}</dd>
<dd>{{ 'about.shortcuts.open_current_entry_in_new_window_background' | translate }}</dd>
<dt>s</dt>
<dd>${about.shortcuts.star_unstar}</dd>
<dd>{{ 'about.shortcuts.star_unstar' | translate }}</dd>
<dt>m</dt>
<dd>${about.shortcuts.mark_current_entry}</dd>
<dd>{{ 'about.shortcuts.mark_current_entry' | translate }}</dd>
<dt>shift+a</dt>
<dd>${about.shortcuts.mark_all_as_read}</dd>
<dd>{{ 'about.shortcuts.mark_all_as_read' | translate }}</dd>
<dt>${about.shortcuts.mouse_middleclick}</dt>
<dd>${about.shortcuts.open_in_new_tab_mark_as_read}</dd>
<dt>{{ 'about.shortcuts.mouse_middleclick' | translate }}</dt>
<dd>{{ 'about.shortcuts.open_in_new_tab_mark_as_read' | translate }}</dd>
<dt>f</dt>
<dd>${about.shortcuts.fullscreen}</dd>
<dd>{{ 'about.shortcuts.fullscreen' | translate }}</dd>
<dt>+,-</dt>
<dd>${about.shortcuts.font_size}</dd>
<dd>{{ 'about.shortcuts.font_size' | translate }}</dd>
<dt>
g
<i class="icon-arrow-right"></i>
a
</dt>
<dd>${about.shortcuts.go_to_all}</dd>
<dd>{{ 'about.shortcuts.go_to_all' | translate }}</dd>
<dt>
g
<i class="icon-arrow-right"></i>
s
</dt>
<dd>${about.shortcuts.go_to_starred}</dd>
<dd>{{ 'about.shortcuts.go_to_starred' | translate }}</dd>
<dt>
g
<i class="icon-arrow-right"></i>
u
</dt>
<dd>${about.shortcuts.feed_search}</dd>
<dd>{{ 'about.shortcuts.feed_search' | translate }}</dd>
</dl>

View File

@@ -1,7 +1,7 @@
<span>
<a ng-click="edit_mode=!edit_mode" class="nolink pointer">
<i class="icon-tags"></i>
${global.tags}
{{ 'global.tags' | translate }}
</a>
<span ng-if="!edit_mode">
<span class="label label-info" ng-repeat="tag in entry.tags">{{tag}}</span>

View File

@@ -7,14 +7,14 @@
</div>
<div class="btn-group">
<a type="button" class="btn btn-default" ng-click="previousEntry()" title="${toolbar.previous_entry}">
<a type="button" class="btn btn-default" ng-click="previousEntry()" title="{{ 'toolbar.previous_entry' | translate }}">
<i class="icon-chevron-up"></i>
</a>
<a type="button" class="btn btn-default" ng-click="nextEntry()" title="${toolbar.next_entry}">
<a type="button" class="btn btn-default" ng-click="nextEntry()" title="{{ 'toolbar.next_entry' | translate }}">
<i class="icon-chevron-down"></i>
</a>
<div class="btn-group">
<a type="button" class="btn btn-default" ng-click="refresh()" title="${toolbar.refresh}">
<a type="button" class="btn btn-default" ng-click="refresh()" title="{{ 'toolbar.refresh' | translate }}">
<i class="icon-refresh"></i>
</a>
<button class="btn btn-default dropdown-toggle" data-toggle="dropdown">
@@ -22,14 +22,14 @@
</button>
<ul class="dropdown-menu pull-right">
<li>
<a ng-click="refreshAll()">${toolbar.refresh_all}</a>
<a ng-click="refreshAll()">{{ 'toolbar.refresh_all' | translate }}</a>
</li>
</ul>
</div>
</div>
<div class="btn-group">
<a type="button" class="btn btn-default" ng-click="markAllAsRead()" title="${toolbar.mark_all_as_read}">
<a type="button" class="btn btn-default" ng-click="markAllAsRead()" title="{{ 'toolbar.mark_all_as_read' | translate }}">
<i class="icon-ok"></i>
</a>
<button class="btn btn-default dropdown-toggle" data-toggle="dropdown">
@@ -37,16 +37,16 @@
</button>
<ul class="dropdown-menu pull-right">
<li>
<a ng-click="markAll12Hours()">${toolbar.mark_all_older_12_hours}</a>
<a ng-click="markAll12Hours()">{{ 'toolbar.mark_all_older_12_hours' | translate }}</a>
</li>
<li>
<a ng-click="markAllDay()">${toolbar.mark_all_older_day}</a>
<a ng-click="markAllDay()">{{ 'toolbar.mark_all_older_day' | translate }}</a>
</li>
<li>
<a ng-click="markAllWeek()">${toolbar.mark_all_older_week}</a>
<a ng-click="markAllWeek()">{{ 'toolbar.mark_all_older_week' | translate }}</a>
</li>
<li>
<a ng-click="markAllTwoWeeks()">${toolbar.mark_all_older_two_weeks}</a>
<a ng-click="markAllTwoWeeks()">{{ 'toolbar.mark_all_older_two_weeks' | translate }}</a>
</li>
</ul>
</div>
@@ -61,13 +61,13 @@
<div ng-if="!MobileService.mobile || MobileService.rightMenu">
<div class="btn-group read-mode">
<button type="button" class="btn btn-default" ng-click="settingsService.settings.readingMode = 'unread'"
ng-class="{'active': settingsService.settings.readingMode == 'unread'}">${toolbar.unread}</button>
ng-class="{'active': settingsService.settings.readingMode == 'unread'}">{{ 'toolbar.unread' | translate }}</button>
<button type="button" class="btn btn-default" ng-click="settingsService.settings.readingMode = 'all'"
ng-class="{'active': settingsService.settings.readingMode == 'all'}">${toolbar.all}</button>
ng-class="{'active': settingsService.settings.readingMode == 'all'}">{{ 'toolbar.all' | translate }}</button>
</div>
<div class="btn-group">
<a type="button" class="btn btn-default" ng-click="toggleOrder()" title="${toolbar.sort_by_asc_desc}">
<a type="button" class="btn btn-default" ng-click="toggleOrder()" title="{{ 'toolbar.sort_by_asc_desc' | translate }}">
<i
ng-class="{'icon-arrow-up' : settingsService.settings.readingOrder == 'asc', 'icon-arrow-down': settingsService.settings.readingOrder == 'desc'}"></i>
</a>
@@ -75,17 +75,17 @@
<div class="btn-group">
<a type="button" class="btn btn-default" ng-click="settingsService.settings.viewMode = 'title'"
ng-class="{'active': settingsService.settings.viewMode == 'title'}" title="${toolbar.titles_only}">
ng-class="{'active': settingsService.settings.viewMode == 'title'}" title="{{ 'toolbar.titles_only' | translate }}">
<i class="icon-list"></i>
</a>
<a type="button" class="btn btn-default" ng-click="settingsService.settings.viewMode = 'expanded'"
ng-class="{'active': settingsService.settings.viewMode == 'expanded'}" title="${toolbar.expanded_view}">
ng-class="{'active': settingsService.settings.viewMode == 'expanded'}" title="{{ 'toolbar.expanded_view' | translate }}">
<i class="icon-th-list"></i>
</a>
</div>
<div class="btn-group">
<a class="btn btn-default" ng-click="toSettings()" title="${toolbar.settings}">
<a class="btn btn-default" ng-click="toSettings()" title="{{ 'toolbar.settings' | translate }}">
<i class="icon-cog"></i>
</a>
<button class="btn btn-default dropdown-toggle" data-toggle="dropdown">
@@ -95,20 +95,20 @@
<li>
<a ng-click="toProfile()">
<i class="icon-user"></i>
${toolbar.profile}
{{ 'toolbar.profile' | translate }}
</a>
</li>
<li ng-show="session.admin">
<a ng-click="toAdmin()">
<i class="icon-edit"></i>
${toolbar.admin}
{{ 'toolbar.admin' | translate }}
</a>
</li>
<li class="divider"></li>
<li>
<a href="logout">
<i class="icon-off"></i>
${toolbar.logout}
{{ 'toolbar.logout' | translate }}
</a>
</li>
</ul>
@@ -124,7 +124,7 @@
</form>
</div>
<div class="btn-group donate">
<a class="btn btn-success" type="button" ng-click="toHelp()" title="${toolbar.about} / ${toolbar.donate}">
<a class="btn btn-success" type="button" ng-click="toHelp()" title="{{ 'toolbar.about} / ${toolbar.donate' | translate }}">
<i class="icon-info-sign"></i>
</a>
</div>

View File

@@ -3,7 +3,7 @@
<div class="btn-group">
<button class="btn btn-default" ui-sref="feeds.subscribe" ng-click="MobileService.toggleLeftMenu()">
<span class="icon-rss"></span>
${tree.subscribe}
{{ 'tree.subscribe' | translate }}
</button>
<button class="btn btn-default dropdown-toggle" data-toggle="dropdown">
<span class="caret"></span>
@@ -12,13 +12,13 @@
<li>
<a ui-sref="feeds.new_category" ng-click="MobileService.toggleLeftMenu()">
<i class="icon-plus"></i>
${tree.new_category}
{{ 'tree.new_category' | translate }}
</a>
</li>
<li>
<a ui-sref="feeds.import" ng-click="MobileService.toggleLeftMenu()">
<i class="icon-arrow-down"></i>
${tree.import}
{{ 'tree.import' | translate }}
</a>
</li>
</ul>
@@ -27,15 +27,15 @@
<div class="btn-group">
<button type="button" class="btn btn-default" ng-click="MobileService.toggleLeftMenu()" ng-if="MobileService.mobile">
<i class="icon-remove"></i>
${global.close}
{{ 'global.close' | translate }}
</button>
</div>
<div class="css-treeview">
<ul>
<category node="CategoryService.subscriptions" show-label="'${tree.all}'" show-children="false" level="0" selected-type="selectedType"
<category node="CategoryService.subscriptions" show-label="'tree.all' | translate" show-children="false" level="0" selected-type="selectedType"
selected-id="selectedId" unread-count="unreadCount(category)"> </category>
<category node="starred" show-label="'${tree.starred}'" show-children="false" level="0" selected-type="selectedType"
<category node="starred" show-label="'tree.starred' | translate" show-children="false" level="0" selected-type="selectedType"
selected-id="selectedId" unread-count="unreadCount(category)"> </category>
<category node="CategoryService.subscriptions" show-label="false" show-children="true" level="0" selected-type="selectedType"
selected-id="selectedId" unread-count="unreadCount(category)"> </category>

View File

@@ -1,47 +1,47 @@
<div>
<div class="page-header">
<h3>${details.category_details}</h3>
<h3>{{ 'details.category_details' | translate }}</h3>
</div>
<form name="form" class="form-horizontal" ng-submit="save()">
<div class="form-group" ng-class="{error : !form.name.$valid}" ng-if="!isMeta()">
<label class="col-sm-2 control-label">${details.name}</label>
<label class="col-sm-2 control-label">{{ 'details.name' | translate }}</label>
<div class="col-sm-10">
<input type="text" name="name" ng-model="category.name" class="form-control" required></input>
<span class="help-block" ng-show="!form.name.$valid">${global.required}</span>
<span class="help-block" ng-show="!form.name.$valid">{{ 'global.required' | translate }}</span>
</div>
</div>
<div class="form-group" ng-class="{error : !form.category.$valid}" ng-if="!isMeta()">
<label class="col-sm-2 control-label">${details.parent_category}</label>
<label class="col-sm-2 control-label">{{ 'details.parent_category' | translate }}</label>
<div class="col-sm-10">
<select name="category" class="form-control" ng-model="category.parentId"
ng-options="cat.id as cat.name for cat in CategoryService.flatCategories | filter: filterCurrent">
</select>
<span class="help-block" ng-show="!form.category.$valid">${global.required}</span>
<span class="help-block" ng-show="!form.category.$valid">{{ 'global.required' | translate }}</span>
</div>
</div>
<div class="form-group" ng-if="!isMeta()">
<label class="col-sm-2 control-label">${details.position}</label>
<label class="col-sm-2 control-label">{{ 'details.position' | translate }}</label>
<div class="col-sm-10">
<input type="number" min="0" ng-model="category.position" class="form-control" />
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">${details.feed_url}</label>
<label class="col-sm-2 control-label">{{ 'details.feed_url' | translate }}</label>
<div class="col-sm-10 checkbox">
<a ng-show="user.apiKey" href="{{'rest/category/entriesAsFeed?id=' + category.id + '&apiKey=' + user.apiKey}}" target="_blank">${global.link}</a>
<span ng-show="!user.apiKey">${details.generate_api_key_first}</span>
<a ng-show="user.apiKey" href="{{'rest/category/entriesAsFeed?id=' + category.id + '&apiKey=' + user.apiKey}}" target="_blank">{{ 'global.link' | translate }}</a>
<span ng-show="!user.apiKey">{{ 'details.generate_api_key_first' | translate }}</span>
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<button type="submit" class="btn btn-primary" ng-if="!isMeta()">${global.save}</button>
<button type="submit" class="btn btn-primary" ng-if="!isMeta()">{{ 'global.save' | translate }}</button>
<button type="button" class="btn btn-danger" ng-click="deleteCategory()" ng-show="!isMeta()"
confirm-click="${details.delete_category_confirmation}">${global.delete}</button>
<button type="button" class="btn btn-default" ng-click="back()">${global.cancel}</button>
confirm-click="{{ 'details.delete_category_confirmation}">{{ 'global.delete' | translate }}</button>
<button type="button" class="btn btn-default" ng-click="back()">{{ 'global.cancel' | translate }}</button>
</div>
</div>
</form>

View File

@@ -1,79 +1,79 @@
<div>
<div class="page-header">
<h3>${details.feed_details}</h3>
<h3>{{ 'details.feed_details' | translate }}</h3>
</div>
<form name="form" class="form-horizontal" ng-submit="save()">
<div class="form-group">
<label class="col-sm-2 control-label">${details.url}</label>
<label class="col-sm-2 control-label">{{ 'details.url' | translate }}</label>
<div class="col-sm-10 checkbox">
<a href="{{sub.feedUrl}}" target="_blank">{{sub.feedUrl}}</a>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">${details.website}</label>
<label class="col-sm-2 control-label">{{ 'details.website' | translate }}</label>
<div class="col-sm-10 checkbox">
<a href="{{sub.feedLink}}" target="_blank">{{sub.feedLink}}</a>
</div>
</div>
<div class="form-group" ng-class="{error : !form.name.$valid}">
<label class="col-sm-2 control-label">${details.name}</label>
<label class="col-sm-2 control-label">{{ 'details.name' | translate }}</label>
<div class="col-sm-10">
<input type="text" name="name" ng-model="sub.name" class="form-control" required></input>
<span class="help-block" ng-show="!form.name.$valid">${global.required}</span>
<span class="help-block" ng-show="!form.name.$valid">{{ 'global.required' | translate }}</span>
</div>
</div>
<div class="form-group" ng-class="{error : !form.category.$valid}">
<label class="col-sm-2 control-label">${details.category}</label>
<label class="col-sm-2 control-label">{{ 'details.category' | translate }}</label>
<div class="col-sm-10">
<select name="category" class="form-control" ng-model="sub.categoryId"
ng-options="cat.id as cat.name for cat in CategoryService.flatCategories">
</select>
<span class="help-block" ng-show="!form.category.$valid">${global.required}</span>
<span class="help-block" ng-show="!form.category.$valid">{{ 'global.required' | translate }}</span>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">${details.position}</label>
<label class="col-sm-2 control-label">{{ 'details.position' | translate }}</label>
<div class="col-sm-10">
<input type="number" min="0" ng-model="sub.position" class="form-control" />
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">${details.last_refresh}</label>
<label class="col-sm-2 control-label">{{ 'details.last_refresh' | translate }}</label>
<div class="col-sm-10 checkbox">
<span>{{sub.lastRefresh|entryDate}}</span>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">${details.next_refresh}</label>
<label class="col-sm-2 control-label">{{ 'details.next_refresh' | translate }}</label>
<div class="col-sm-10 checkbox">
<span>{{sub.nextRefresh|entryDate:"${details.queued_for_refresh}" }}</span>
<span>{{sub.nextRefresh|entryDate:('details.queued_for_refresh' | translate) }}</span>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">${details.message}</label>
<label class="col-sm-2 control-label">{{ 'details.message' | translate }}</label>
<div class="col-sm-10 checkbox">
<span>{{sub.message}}</span>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">${details.feed_url}</label>
<label class="col-sm-2 control-label">{{ 'details.feed_url' | translate }}</label>
<div class="col-sm-10 checkbox">
<a ng-show="user.apiKey" href="{{'rest/feed/entriesAsFeed?id=' + sub.id + '&apiKey=' + user.apiKey}}" target="_blank">${global.link}</a>
<span ng-show="!user.apiKey">${details.generate_api_key_first}</span>
<a ng-show="user.apiKey" href="{{'rest/feed/entriesAsFeed?id=' + sub.id + '&apiKey=' + user.apiKey}}" target="_blank">{{ 'global.link' | translate }}</a>
<span ng-show="!user.apiKey">{{ 'details.generate_api_key_first' | translate }}</span>
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<button type="submit" class="btn btn-primary">${global.save}</button>
<button type="button" class="btn btn-danger" ng-click="unsubscribe()" confirm-click="${details.unsubscribe_confirmation}">${details.unsubscribe}</button>
<button type="button" class="btn btn-default" ng-click="back()">${global.cancel}</button>
<button type="submit" class="btn btn-primary">{{ 'global.save' | translate }}</button>
<button type="button" class="btn btn-danger" ng-click="unsubscribe()" confirm-click="'details.unsubscribe_confirmation' | translate">{{ 'details.unsubscribe' | translate }}</button>
<button type="button" class="btn btn-default" ng-click="back()">{{ 'global.cancel' | translate }}</button>
</div>
</div>
</form>

View File

@@ -4,27 +4,27 @@
<div class="about-module">
<h4>
<i class="icon-question-sign"></i>
${toolbar.about}
{{ 'toolbar.about' | translate }}
</h4>
<p>
${about.line1_prefix}
{{ 'about.line1_prefix' | translate }}
<a href="https://github.com/Athou/commafeed" target="_blank">GitHub</a>
${about.line1_suffix}
{{ 'about.line1_suffix' | translate }}
</p>
<p>
${about.line2_prefix}
{{ 'about.line2_prefix' | translate }}
<a href="https://github.com/Athou/commafeed/issues" target="_blank">GitHub</a>
${about.line2_suffix}
{{ 'about.line2_suffix' | translate }}
</p>
${about.version} {{infos.version}} ({{infos.gitCommit}})
{{ 'about.version' | translate }} {{infos.version}} ({{infos.gitCommit}})
</div>
<div class="about-module">
<h4>
<i class="icon-money"></i>
${toolbar.donate}
{{ 'toolbar.donate' | translate }}
</h4>
<p>${about.line3}</p>
<p>{{ 'about.line3' | translate }}</p>
<form class="donate-action" action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_top">
<input type="hidden" name="cmd" value="_donations">
<input type="hidden" name="business" value="9CNQHMJG2ZJVY">
@@ -39,17 +39,17 @@
<option value="USD">US Dollars</option>
</select>
</form>
${about.line4}
{{ 'about.line4' | translate }}
<code class="bitcoin-code">1dymfUxqCWpyD7a6rQSqNy4rLVDBsAr5e</code>
</div>
<div class="about-module">
<h4>
<i class="icon-puzzle-piece"></i>
${about.goodies}
{{ 'about.goodies.value' | translate }}
</h4>
<p>
${about.goodies.android_app}:
{{ 'about.goodies.android_app' | translate }}:
<a href="https://github.com/Athou/commafeed-newsplus" target="_blank">News+ extension</a>
,
<a href="https://play.google.com/store/apps/details?id=com.commafeed.commafeedreader" target="_blank">CommaFeed Reader</a>
@@ -57,57 +57,57 @@
<a href="https://play.google.com/store/apps/details?id=com.mv.cloudfeedlr" target="_blank">Cloudfeedlr</a>
</p>
<p>
<a href="https://chrome.google.com/webstore/detail/commafeed/bpbfpjiciblcfeganojjkfapnllbhdga" target="_blank">${about.goodies.chrome_extension}</a>
<a href="https://chrome.google.com/webstore/detail/commafeed/bpbfpjiciblcfeganojjkfapnllbhdga" target="_blank">{{ 'about.goodies.chrome_extension' | translate }}</a>
</p>
<p>
<a href="https://addons.mozilla.org/en-US/firefox/addon/commafeed/" target="_blank">${about.goodies.firefox_extension}</a>
<a href="https://addons.mozilla.org/en-US/firefox/addon/commafeed/" target="_blank">{{ 'about.goodies.firefox_extension' | translate }}</a>
</p>
<p>
<a href="https://addons.opera.com/en/extensions/details/commafeed-extension-for-opera/" target="_blank">${about.goodies.opera_extension}</a>
<a href="https://addons.opera.com/en/extensions/details/commafeed-extension-for-opera/" target="_blank">{{ 'about.goodies.opera_extension' | translate }}</a>
</p>
<p>
${about.goodies.subscribe_url}:
{{ 'about.goodies.subscribe_url' | translate }}:
<a href="rest/feed/subscribe?url=FEED_URL_HERE" target="_blank">rest/feed/subscribe?url=FEED_URL_HERE</a>
</p>
<p>
${about.goodies.subscribe_bookmarklet}:
{{ 'about.goodies.subscribe_bookmarklet' | translate }}:
<a href="https://www.subtome.com/settings.html" target="_blank">SubToMe</a>
</p>
<p>
${about.goodies.next_unread_bookmarklet}:
{{ 'about.goodies.next_unread_bookmarklet' | translate }}:
<br />
<br />
${subscribe.category}
{{ 'subscribe.category' | translate }}
<select ng-model="categoryId" ng-options="cat.id as cat.name for cat in CategoryService.flatCategories" class="bookmarklet-select">
</select>
<select ng-model="order" class="bookmarklet-select">
<option value="desc">${about.goodies.subscribe_bookmarklet_desc}</option>
<option value="asc">${about.goodies.subscribe_bookmarklet_asc}</option>
<option value="desc">{{ 'about.goodies.subscribe_bookmarklet_desc' | translate }}</option>
<option value="asc">{{ 'about.goodies.subscribe_bookmarklet_asc' | translate }}</option>
</select>
<a href="javascript:window.location.href='{{baseUrl}}next?category={{categoryId}}&order={{order}}&t='+new Date().getTime();"
target="_blank">${global.link}</a>
target="_blank">{{ 'global.link' | translate }}</a>
</p>
</div>
<div class="about-module">
<h4>
<i class="icon-globe"></i>
${about.translation}
{{ 'about.translation.value' | translate }}
</h4>
<p>${about.translation.message}</p>
<p>{{ 'about.translation.message' | translate }}</p>
<p>
<a href="https://github.com/Athou/commafeed#translate-commafeed-into-your-language" target="_blank"> ${about.translation.link} </a>
<a href="https://github.com/Athou/commafeed#translate-commafeed-into-your-language" target="_blank"> {{ 'about.translation.link' | translate }} </a>
</p>
</div>
<div class="about-module">
<h4>
<i class="icon-rocket"></i>
${about.rest_api}
{{ 'about.rest_api.value' | translate }}
</h4>
<p>${about.rest_api.line1}</p>
<p>{{ 'about.rest_api.line1' | translate }}</p>
<p>
<a href="api" target="_blank">${about.rest_api.link_to_documentation}</a>
<a href="api" target="_blank">{{ 'about.rest_api.link_to_documentation' | translate }}</a>
</p>
</div>
</div>
@@ -115,7 +115,7 @@
<div class="about-module">
<h4>
<i class="icon-keyboard"></i>
${about.keyboard_shortcuts}
{{ 'about.keyboard_shortcuts' | translate }}
</h4>
<div ng-include="'templates/_shortcuts.html'"></div>
</div>
@@ -123,7 +123,7 @@
<div class="about-module">
<h4>
<i class="icon-info-sign"></i>
${about.announcements}
{{ 'about.announcements' | translate }}
</h4>
<a class="twitter-timeline" href="https://twitter.com/CommaFeed" data-widget-id="333897786657480704">Tweets by @CommaFeed</a>
<script>

View File

@@ -1,18 +1,18 @@
<div>
<div class="page-header">
<h3>${tree.import}</h3>
<h3>{{ 'tree.import' | translate }}</h3>
</div>
<form class="form-horizontal" action="rest/feed/import" method="post" enctype="multipart/form-data">
<div class="form-group">
<label class="col-sm-2 control-label">${import.xml_file}</label>
<label class="col-sm-2 control-label">{{ 'import.xml_file' | translate }}</label>
<div class="col-sm-10 ">
<input type="file" name="file" class="form-control"></input>
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<button class="btn btn-primary ok" type="submit">${tree.import}</button>
<button type="button" class="btn btn-default cancel" ng-click="back()">${global.cancel}</button>
<button class="btn btn-primary ok" type="submit">{{ 'tree.import' | translate }}</button>
<button type="button" class="btn btn-default cancel" ng-click="back()">{{ 'global.cancel' | translate }}</button>
</div>
</div>
</form>

View File

@@ -1,28 +1,28 @@
<div>
<div class="page-header">
<h3>${tree.new_category}</h3>
<h3>{{ 'tree.new_category' | translate }}</h3>
</div>
<form name="categoryForm" class="form-horizontal" ng-submit="saveCategory()">
<div class="form-group" ng-class="{error : !categoryForm.name.$valid}">
<label class="col-sm-2 control-label">${new_category.name}</label>
<label class="col-sm-2 control-label">{{ 'new_category.name' | translate }}</label>
<div class="col-sm-10">
<input type="text" class="form-control" name="name" ng-model="cat.name" required></input>
<span class="help-block" ng-show="!categoryForm.name.$valid">${global.required}</span>
<span class="help-block" ng-show="!categoryForm.name.$valid">{{ 'global.required' | translate }}</span>
</div>
</div>
<div class="form-group" ng-class="{error : !categoryForm.category.$valid}">
<label class="col-sm-2 control-label">${new_category.parent}</label>
<label class="col-sm-2 control-label">{{ 'new_category.parent' | translate }}</label>
<div class="col-sm-10">
<select name="category" ng-model="cat.parentId" class="form-control"
ng-options="cat.id as cat.name for cat in CategoryService.flatCategories" required>
</select>
<span class="help-block" ng-show="!categoryForm.category.$valid">${global.required}</span>
<span class="help-block" ng-show="!categoryForm.category.$valid">{{ 'global.required' | translate }}</span>
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<button class="btn btn-primary ok" type="submit">${global.save}</button>
<button type="button" class="btn btn-default cancel" ng-click="back()">${global.cancel}</button>
<button class="btn btn-primary ok" type="submit">{{ 'global.save' | translate }}</button>
<button type="button" class="btn btn-default cancel" ng-click="back()">{{ 'global.cancel' | translate }}</button>
</div>
</div>
</form>

View File

@@ -1,36 +1,36 @@
<div>
<div class="page-header">
<h3>${tree.subscribe}</h3>
<h3>{{ 'tree.subscribe' | translate }}</h3>
</div>
<form name="subscribeForm" class="form-horizontal" ng-submit="save()">
<div class="form-group" ng-class="{error : !subscribeForm.url.$valid}">
<label class="col-sm-2 control-label">${subscribe.feed_url}</label>
<label class="col-sm-2 control-label">{{ 'subscribe.feed_url' | translate }}</label>
<div class="col-sm-10">
<input type="text" name="url" ng-model="sub.url" ng-blur="urlChanged()" placeholder="http://example.com/feed" class="form-control"
required ng-disabled="state=='loading'" autofocus></input>
<span class="help-block" ng-show="!subscribeForm.url.$valid">${global.required}</span>
<span class="help-block" ng-show="!subscribeForm.url.$valid">{{ 'global.required' | translate }}</span>
</div>
</div>
<div class="form-group" ng-class="{error : !subscribeForm.title.$valid}">
<label class="col-sm-2 control-label">${subscribe.feed_name}</label>
<label class="col-sm-2 control-label">{{ 'subscribe.feed_name' | translate }}</label>
<div class="col-sm-10">
<input type="text" name="title" ng-model="sub.title" class="form-control" required ng-disabled="state=='loading'"></input>
<span class="help-block" ng-show="!subscribeForm.title.$valid">${global.required}</span>
<span class="help-block" ng-show="!subscribeForm.title.$valid">{{ 'global.required' | translate }}</span>
</div>
</div>
<div class="form-group" ng-class="{error : !subscribeForm.category.$valid}">
<label class="col-sm-2 control-label">${subscribe.category}</label>
<label class="col-sm-2 control-label">{{ 'subscribe.category' | translate }}</label>
<div class="col-sm-10">
<select name="category" ng-model="sub.categoryId" class="form-control"
ng-options="cat.id as cat.name for cat in CategoryService.flatCategories" required>
</select>
<span class="help-block" ng-show="!subscribeForm.category.$valid">${global.required}</span>
<span class="help-block" ng-show="!subscribeForm.category.$valid">{{ 'global.required' | translate }}</span>
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<button class="btn btn-primary ok" type="submit" ng-disabled="state!='ok'">${global.save}</button>
<button class="btn btn-default cancel" ng-click="back()" type="button">${global.cancel}</button>
<button class="btn btn-primary ok" type="submit" ng-disabled="state!='ok'">{{ 'global.save' | translate }}</button>
<button class="btn btn-default cancel" ng-click="back()" type="button">{{ 'global.cancel' | translate }}</button>
</div>
</div>
</form>

View File

@@ -1,21 +1,21 @@
<div>
<div class="page-header">
<h3>${details.tag_details}</h3>
<h3>{{ 'details.tag_details' | translate }}</h3>
</div>
<form name="form" class="form-horizontal" ng-submit="save()">
<div class="form-group">
<label class="col-sm-2 control-label">${details.feed_url}</label>
<label class="col-sm-2 control-label">{{ 'details.feed_url' | translate }}</label>
<div class="col-sm-10">
<div class="checkbox">
<a ng-show="user.apiKey" href="{{'rest/category/entriesAsFeed?id=all&tag=' + tag + '&apiKey=' + user.apiKey}}" target="_blank">${global.link}</a>
<span ng-show="!user.apiKey">${details.generate_api_key_first}</span>
<a ng-show="user.apiKey" href="{{'rest/category/entriesAsFeed?id=all&tag=' + tag + '&apiKey=' + user.apiKey}}" target="_blank">{{ 'global.link' | translate }}</a>
<span ng-show="!user.apiKey">{{ 'details.generate_api_key_first' | translate }}</span>
</div>
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<button type="button" class="btn btn-default" ng-click="back()">${global.cancel}</button>
<button type="button" class="btn btn-default" ng-click="back()">{{ 'global.cancel' | translate }}</button>
</div>
</div>
</form>

View File

@@ -2,21 +2,21 @@
<div class="entrylist-header" ng-if="name">
<h3>
<span ng-switch on="selectedId">
<span ng-switch-when="all">${tree.all}</span>
<span ng-switch-when="starred">${tree.starred}</span>
<span ng-switch-when="all">{{ 'tree.all' | translate }}</span>
<span ng-switch-when="starred">{{ 'tree.starred' | translate }}</span>
<span ng-switch-default>
<span ng-hide="feedLink">{{name}}</span>
<a ng-show="feedLink" href="{{feedLink}}" target="_blank">{{name}}</a>
</span>
</span>
<span ng-show="name"> &#187;</span>
<span ng-show="keywords">${view.search_for} '{{keywords}}'</span>
<span ng-show="keywords">{{ 'view.search_for' | translate }} '{{ keywords }}'</span>
</h3>
</div>
<div infinite-scroll="loadMoreEntries()" infinite-scroll-disabled="busy || !settingsService.settings.readingMode"
infinite-scroll-distance="1" id="feed-accordion" ng-class="{'expanded' : settingsService.settings.viewMode == 'expanded' }">
<div ng-show="message && errorCount > 10">${view.error_while_loading_feed} : {{message}}</div>
<div ng-show="message && errorCount > 10">{{ 'view.error_while_loading_feed} : {{message}' | translate }}</div>
<div ng-repeat="entry in entries" class="entry entry-font-size-{{font_size}}" id="entry_{{entry.id}}"
ng-class="{unread: entry.read == false, current: current==entry, open: isOpen, closed: !isOpen }">
<div class="entry-heading" ng-swipe-right="mark(entry, !entry.read)">
@@ -42,13 +42,13 @@
<a href="{{entry.url}}" target="_blank" ng-bind-html="entry.title | highlight:keywords | trustHtml"></a>
<div class="entry-subtitle">
<span class="entry-source" ng-if="selectedType == 'category'">
<span class="entry-source-prefix">${view.entry_source}</span>
<span class="entry-source-prefix">{{ 'view.entry_source' | translate }}</span>
<a ng-click="goToFeed(entry.feedId)" class="pointer bidi-embed">
<span>{{entry.feedName}}</span>
</a>
</span>
<span class="entry-author" ng-if="entry.author">
<span class="entry-author-prefix">${view.entry_author}</span>
<span class="entry-author-prefix">{{ 'view.entry_author' | translate }}</span>
<span class="entry-author-name">{{entry.author}}</span>
</span>
</div>
@@ -69,7 +69,7 @@
<div ng-if="entry.enclosureType && entry.enclosureType.indexOf('image') == 0">
<img ng-src="{{entry.enclosureUrl | trustUrl}}" />
</div>
<a ng-href="{{entry.enclosureUrl | trustUrl}}" target="_blank" ng-if="entry.enclosureType" download> ${global.download} </a>
<a ng-href="{{entry.enclosureUrl | trustUrl}}" target="_blank" ng-if="entry.enclosureType" download> {{ 'global.download' | translate }} </a>
</div>
</div>
<div class="entry-buttons form-inline">
@@ -79,7 +79,7 @@
<div class="checkbox-inline keep-unread">
<label ng-if="entry.markable" class="pointer">
<input type="checkbox" ng-checked="!entry.read" ng-click="mark(entry, !entry.read)" class="mousetrap"></input>
${view.keep_unread}
{{ 'view.keep_unread' | translate }}
</label>
</div>
@@ -126,22 +126,22 @@
<span class="tags-panel">
<tags entry="entry"></tags>
</span>
<a ng-click="markUpTo(entry)" class="mark-up-to" title="${view.mark_up_to_here}">
<a ng-click="markUpTo(entry)" class="mark-up-to" title="{{ 'view.mark_up_to_here' | translate }}">
<i class="icon-step-forward icon-rotate-90"></i>
</a>
</div>
</div>
</div>
<div class="no-entries" ng-show="name && entries.length == 0 && !busy">
<span ng-show="keywords">${view.no_search_results}</span>
<span ng-hide="keywords">"{{name}}" ${view.no_unread_items}</span>
<span ng-show="keywords">{{ 'view.no_search_results' | translate }}</span>
<span ng-hide="keywords">"{{name}}" {{ 'view.no_unread_items' | translate }}</span>
</div>
<div modal="shortcutsModal" close="shortcutsModal=false" options="shortcutsOpts">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" ng-click="shortcutsModal=false">&times;</button>
<h4>${about.keyboard_shortcuts}</h4>
<h4>{{ 'about.keyboard_shortcuts' | translate }}</h4>
</div>
<div class="modal-body" ng-include="'templates/_shortcuts.html'"></div>
</div>

View File

@@ -1,64 +1,64 @@
<div class="profile">
<div class="page-header">
<h1>${toolbar.profile}</h1>
<h1>{{ 'toolbar.profile' | translate }}</h1>
</div>
<form name="profileForm" ng-submit="save()" class="form-horizontal">
<div class="form-group">
<label class="col-sm-2 control-label" for="email">${profile.user_name}</label>
<label class="col-sm-2 control-label" for="email">{{ 'profile.user_name' | translate }}</label>
<div class="col-sm-10 checkbox">
<span>{{user.name}}</span>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label" for="email">${profile.email}</label>
<label class="col-sm-2 control-label" for="email">{{ 'profile.email' | translate }}</label>
<div class="col-sm-10">
<input type="email" id="email" ng-model="user.email" class="form-control" />
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label" for="password">${profile.change_password}</label>
<label class="col-sm-2 control-label" for="password">{{ 'profile.change_password' | translate }}</label>
<div class="col-sm-10">
<input type="password" name="password" id="password" ng-model="user.password" class="form-control" ng-minlength="6" />
<span class="help-inline" ng-show="profileForm.password.$error.minlength">${profile.minimum_6_chars}</span>
<span class="help-inline" ng-show="profileForm.password.$error.minlength">{{ 'profile.minimum_6_chars' | translate }}</span>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label" for="password">${profile.confirm_password}</label>
<label class="col-sm-2 control-label" for="password">{{ 'profile.confirm_password' | translate }}</label>
<div class="col-sm-10">
<input type="password" class="form-control" name="password_c" id="password_c" ng-model="password_c"
ui-validate="'$value==user.password'" ui-validate-watch="'user.password'">
<span class="help-inline" ng-show="profileForm.password_c.$error.validator">${profile.passwords_do_not_match}</span>
<span class="help-inline" ng-show="profileForm.password_c.$error.validator">{{ 'profile.passwords_do_not_match' | translate }}</span>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label" for="password">${profile.api_key}</label>
<label class="col-sm-2 control-label" for="password">{{ 'profile.api_key' | translate }}</label>
<div class="col-sm-10">
<pre ng-show="user.apiKey">{{user.apiKey}}</pre>
<span class="help-block" ng-show="!user.apiKey">${profile.api_key_not_generated}</span>
<span class="help-block" ng-show="!user.apiKey">{{ 'profile.api_key_not_generated' | translate }}</span>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label" for="password">${profile.generate_new_api_key}</label>
<label class="col-sm-2 control-label" for="password">{{ 'profile.generate_new_api_key' | translate }}</label>
<div class="col-sm-10">
<div class="checkbox">
<input type="checkbox" name="newApiKey" id="newApiKey" ng-model="newApiKey">
<span class="help-inline">${profile.generate_new_api_key_info}</span>
<span class="help-inline">{{ 'profile.generate_new_api_key_info' | translate }}</span>
</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label" for="password">${profile.opml_export}</label>
<label class="col-sm-2 control-label" for="password">{{ 'profile.opml_export' | translate }}</label>
<div class="col-sm-10 checkbox">
<a href="rest/feed/export" download="commafeed_opml.xml">${global.download}</a>
<a href="rest/feed/export" download="commafeed_opml.xml">{{ 'global.download' | translate }}</a>
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<button type="submit" class="btn btn-primary">${global.save}</button>
<button type="button" class="btn btn-danger" ng-click="deleteAccount()" confirm-click="${profile.delete_account_confirmation}">${profile.delete_account}</button>
<button type="button" class="btn btn-default" ng-click="cancel()">${global.cancel}</button>
<button type="submit" class="btn btn-primary">{{ 'global.save' | translate }}</button>
<button type="button" class="btn btn-danger" ng-click="deleteAccount()" confirm-click="'profile.delete_account_confirmation' | translate">{{ 'profile.delete_account' | translate }}</button>
<button type="button" class="btn btn-default" ng-click="cancel()">{{ 'global.cancel' | translate }}</button>
</div>
</div>
</form>

View File

@@ -1,16 +1,16 @@
<div class="settings">
<div class="page-header">
<h1>${toolbar.settings}</h1>
<h1>{{ 'toolbar.settings' | translate }}</h1>
</div>
<form name="settingsForm" ng-submit="save()">
<div class="row">
<div class="col-md-2">
<ul class="nav nav-pills nav-stacked">
<li ng-class="{active: !tab || tab == 'general'}" class="pointer">
<a ng-click="tab = 'general'">${settings.general}</a>
<a ng-click="tab = 'general'">{{ 'settings.general.value' | translate }}</a>
</li>
<li ng-class="{active: tab == 'css'}" class="pointer">
<a ng-click="tab = 'css'">${settings.appearance}</a>
<a ng-click="tab = 'css'">{{ 'settings.appearance' | translate }}</a>
</li>
</ul>
</div>
@@ -19,29 +19,29 @@
<div class="tab-pane" ng-class="{active: !tab || tab == 'general'}">
<div class="form-horizontal">
<div class="form-group">
<label>${settings.general.language}</label>
<label>{{ 'settings.general.language' | translate }}</label>
<select name="language" ng-model="settings.language" class="form-control"
ng-options="id as label for (id,label) in ServerService.supportedLanguages" required>
ng-options="id as label for (id,label) in langs" required>
</select>
<span class="help-block">
<a href="https://github.com/Athou/commafeed#translate-commafeed-into-your-language" target="_blank">
${settings.general.language.contribute} </a>
{{ 'settings.general.language_contribute' | translate }} </a>
</span>
</div>
<div class="checkbox">
<label>
<input type="checkbox" name="showRead" ng-model="settings.showRead" />
${settings.general.show_unread}
{{ 'settings.general.show_unread' | translate }}
</label>
</div>
<div class="checkbox">
<label>
<input type="checkbox" name="scrollMarks" ng-model="settings.scrollMarks" />
${settings.general.scroll_marks}
{{ 'settings.general.scroll_marks' | translate }}
</label>
</div>
<div>
<h4>${settings.general.social_buttons}</h4>
<h4>{{ 'settings.general.social_buttons' | translate }}</h4>
<div>
<label>
<input type="checkbox" name="email" ng-model="settings.email" />
@@ -117,19 +117,19 @@
</div>
<div class="tab-pane" ng-class="{active: tab == 'css'}">
<div class="form-group">
<label>${settings.scroll_speed}</label>
<label>{{ 'settings.scroll_speed' | translate }}</label>
<input type="number" ng-model="settings.scrollSpeed" min="0" max="1000" class="form-control" />
<span class="help-inline">${settings.scroll_speed.help}</span>
<span class="help-inline">{{ 'settings.scroll_speed_help' | translate }}</span>
</div>
<div class="form-group">
<label>${settings.theme}</label>
<label>{{ 'settings.theme' | translate }}</label>
<select ng-model="settings.theme" ng-options="theme for theme in themes" class="form-control"></select>
<span class="help-block">
<a href="https://github.com/Athou/commafeed#themes" target="_blank"> ${settings.submit_your_theme} </a>
<a href="https://github.com/Athou/commafeed#themes" target="_blank"> {{ 'settings.submit_your_theme' | translate }} </a>
</span>
</div>
<div class="form-group">
<label>${settings.custom_css}</label>
<label>{{ 'settings.custom_css' | translate }}</label>
<textarea ng-model="settings.customCss" class="form-control" rows="20">
</textarea>
</div>
@@ -138,8 +138,8 @@
</div>
</div>
<div class="form-actions">
<button type="submit" class="btn btn-primary">${global.save}</button>
<button type="button" class="btn btn-default" ng-click="cancel()">${global.cancel}</button>
<button type="submit" class="btn btn-primary">{{ 'global.save' | translate }}</button>
<button type="button" class="btn btn-default" ng-click="cancel()">{{ 'global.cancel' | translate }}</button>
</div>
</form>
</div>