mirror of
https://github.com/vale981/Vulcan
synced 2025-03-06 10:01:40 -05:00
Sync with upstream
Merge branch 'devel' of https://github.com/TelescopeJS/Telescope into devel
This commit is contained in:
commit
38a74d68a0
279 changed files with 6411 additions and 2103 deletions
|
@ -5,3 +5,4 @@
|
|||
notices-for-0.9.0
|
||||
notices-for-0.9.1
|
||||
0.9.4-platform-file
|
||||
notices-for-facebook-graph-api-2
|
||||
|
|
|
@ -26,9 +26,10 @@ meteorhacks:fast-render
|
|||
meteorhacks:subs-manager
|
||||
meteorhacks:npm
|
||||
|
||||
aldeed:autoform
|
||||
aldeed:autoform@5.1.2
|
||||
aldeed:collection2
|
||||
aldeed:simple-schema
|
||||
aldeed:simple-schema@1.3.2
|
||||
aldeed:template-extension
|
||||
|
||||
mrt:jquery-hotkeys
|
||||
mrt:cookies
|
||||
|
@ -43,12 +44,17 @@ npm-container
|
|||
matb33:collection-hooks
|
||||
djedi:sanitize-html
|
||||
rajit:bootstrap3-datepicker
|
||||
bengott:avatar
|
||||
bengott:avatar@0.7.6
|
||||
jparker:gravatar
|
||||
tap:i18n
|
||||
useraccounts:unstyled@1.4.0
|
||||
useraccounts:unstyled@1.8.1
|
||||
tsega:bootstrap3-datetimepicker@3.1.3_1
|
||||
momentjs:moment
|
||||
aslagle:reactive-table
|
||||
aramk:tinycolor
|
||||
fortawesome:fontawesome
|
||||
fourseven:scss
|
||||
manuelschoebel:ms-seo
|
||||
|
||||
# Testing
|
||||
|
||||
|
@ -84,5 +90,8 @@ telescope-post-by-feed
|
|||
telescope-releases
|
||||
telescope-getting-started
|
||||
telescope-subscribe-to-posts
|
||||
telescope-tagline-banner
|
||||
telescope-sitemap
|
||||
telescope-messages
|
||||
|
||||
# Custom Packages
|
||||
|
|
|
@ -1 +1 @@
|
|||
METEOR@1.0.2.1
|
||||
METEOR@1.1
|
||||
|
|
223
.meteor/versions
223
.meteor/versions
|
@ -1,114 +1,120 @@
|
|||
accounts-base@1.1.3
|
||||
accounts-facebook@1.0.3
|
||||
accounts-oauth@1.1.3
|
||||
accounts-password@1.0.5
|
||||
accounts-twitter@1.0.3
|
||||
accounts-ui@1.1.4
|
||||
accounts-ui-unstyled@1.1.5
|
||||
aldeed:autoform@4.2.2
|
||||
aldeed:collection2@2.3.0
|
||||
aldeed:simple-schema@1.2.0
|
||||
application-configuration@1.0.4
|
||||
artwells:queue@0.0.3
|
||||
autoupdate@1.1.4
|
||||
accounts-base@1.2.0
|
||||
accounts-facebook@1.0.4
|
||||
accounts-oauth@1.1.5
|
||||
accounts-password@1.1.1
|
||||
accounts-twitter@1.0.4
|
||||
accounts-ui@1.1.5
|
||||
accounts-ui-unstyled@1.1.7
|
||||
aldeed:autoform@5.1.2
|
||||
aldeed:collection2@2.3.3
|
||||
aldeed:http@0.2.2
|
||||
aldeed:simple-schema@1.3.2
|
||||
aldeed:template-extension@3.4.3
|
||||
anti:i18n@0.4.3
|
||||
aramk:tinycolor@1.1.0_1
|
||||
aslagle:reactive-table@0.7.2
|
||||
autoupdate@1.2.1
|
||||
backbone@1.0.0
|
||||
base64@1.0.2
|
||||
bengott:avatar@0.7.3
|
||||
binary-heap@1.0.2
|
||||
blaze@2.0.4
|
||||
blaze-tools@1.0.2
|
||||
boilerplate-generator@1.0.2
|
||||
callback-hook@1.0.2
|
||||
base64@1.0.3
|
||||
bengott:avatar@0.7.6
|
||||
binary-heap@1.0.3
|
||||
blaze@2.1.1
|
||||
blaze-tools@1.0.3
|
||||
boilerplate-generator@1.0.3
|
||||
callback-hook@1.0.3
|
||||
ccan:cssreset@1.0.0
|
||||
check@1.0.3
|
||||
cfs:http-methods@0.0.27
|
||||
check@1.0.5
|
||||
chuangbo:cookie@1.1.0
|
||||
chuangbo:marked@0.3.5
|
||||
cmather:handlebars-server@2.0.0
|
||||
coffeescript@1.0.5
|
||||
ddp@1.0.13
|
||||
deps@1.0.6
|
||||
djedi:sanitize-html@1.3.0
|
||||
ejson@1.0.5
|
||||
email@1.0.5
|
||||
facebook@1.1.3
|
||||
fastclick@1.0.2
|
||||
follower-livedata@1.0.3
|
||||
fourseven:scss@1.0.0
|
||||
geojson-utils@1.0.2
|
||||
handlebars@1.0.2
|
||||
html-tools@1.0.3
|
||||
htmljs@1.0.3
|
||||
http@1.0.9
|
||||
id-map@1.0.2
|
||||
iron:controller@1.0.6
|
||||
iron:core@1.0.6
|
||||
iron:dynamic-template@1.0.6
|
||||
iron:layout@1.0.6
|
||||
iron:location@1.0.6
|
||||
iron:middleware-stack@1.0.6
|
||||
iron:router@1.0.6
|
||||
iron:url@1.0.6
|
||||
coffeescript@1.0.6
|
||||
ddp@1.1.0
|
||||
deps@1.0.7
|
||||
djedi:sanitize-html@1.6.1
|
||||
ejson@1.0.6
|
||||
email@1.0.6
|
||||
facebook@1.2.0
|
||||
fastclick@1.0.3
|
||||
fortawesome:fontawesome@4.3.0
|
||||
fourseven:scss@2.1.1
|
||||
gadicohen:robots-txt@0.0.9
|
||||
gadicohen:sitemaps@0.0.20
|
||||
geojson-utils@1.0.3
|
||||
handlebars@1.0.3
|
||||
html-tools@1.0.4
|
||||
htmljs@1.0.4
|
||||
http@1.1.0
|
||||
id-map@1.0.3
|
||||
iron:controller@1.0.7
|
||||
iron:core@1.0.7
|
||||
iron:dynamic-template@1.0.7
|
||||
iron:layout@1.0.7
|
||||
iron:location@1.0.7
|
||||
iron:middleware-stack@1.0.7
|
||||
iron:router@1.0.7
|
||||
iron:url@1.0.7
|
||||
jparker:crypto-core@0.1.0
|
||||
jparker:crypto-md5@0.1.1
|
||||
jparker:gravatar@0.3.1
|
||||
jquery@1.0.2
|
||||
json@1.0.2
|
||||
kestanous:herald@1.1.3
|
||||
jquery@1.11.3_2
|
||||
json@1.0.3
|
||||
kestanous:herald@1.3.0
|
||||
kestanous:herald-email@0.4.2
|
||||
launch-screen@1.0.1
|
||||
less@1.0.12
|
||||
livedata@1.0.12
|
||||
localstorage@1.0.2
|
||||
logging@1.0.6
|
||||
matb33:collection-hooks@0.7.7
|
||||
meteor@1.1.4
|
||||
meteor-platform@1.2.1
|
||||
launch-screen@1.0.2
|
||||
less@1.0.14
|
||||
livedata@1.0.13
|
||||
localstorage@1.0.3
|
||||
logging@1.0.7
|
||||
manuelschoebel:ms-seo@0.4.1
|
||||
matb33:collection-hooks@0.7.11
|
||||
meteor@1.1.6
|
||||
meteor-platform@1.2.2
|
||||
meteorhacks:async@1.0.0
|
||||
meteorhacks:fast-render@2.1.5
|
||||
meteorhacks:kadira@2.15.1
|
||||
meteorhacks:kadira-binary-deps@1.3.1
|
||||
meteorhacks:meteorx@1.2.1
|
||||
meteorhacks:npm@1.2.2
|
||||
meteorhacks:subs-manager@1.2.2
|
||||
minifiers@1.1.3
|
||||
minimongo@1.0.6
|
||||
miro:mailchimp@1.0.2
|
||||
mobile-status-bar@1.0.2
|
||||
momentjs:moment@2.8.4
|
||||
mongo@1.0.11
|
||||
mongo-livedata@1.0.7
|
||||
meteorhacks:fast-render@2.3.1
|
||||
meteorhacks:inject-data@1.2.2
|
||||
meteorhacks:kadira@2.20.1
|
||||
meteorhacks:meteorx@1.3.1
|
||||
meteorhacks:npm@1.3.0
|
||||
meteorhacks:picker@1.0.2
|
||||
meteorhacks:subs-manager@1.3.0
|
||||
minifiers@1.1.5
|
||||
minimongo@1.0.8
|
||||
miro:mailchimp@1.0.4
|
||||
mobile-status-bar@1.0.3
|
||||
momentjs:moment@2.9.0
|
||||
mongo@1.1.0
|
||||
mongo-livedata@1.0.8
|
||||
mrt:cookies@0.3.0
|
||||
mrt:jquery-hotkeys@0.0.1
|
||||
mrt:moment@2.8.1
|
||||
npm-bcrypt@0.7.7
|
||||
npm-bcrypt@0.7.8_2
|
||||
npm-container@1.0.0
|
||||
oauth@1.1.3
|
||||
oauth1@1.1.3
|
||||
oauth2@1.1.2
|
||||
observe-sequence@1.0.4
|
||||
ordered-dict@1.0.2
|
||||
oauth@1.1.4
|
||||
oauth1@1.1.4
|
||||
oauth2@1.1.3
|
||||
observe-sequence@1.0.6
|
||||
ordered-dict@1.0.3
|
||||
percolatestudio:synced-cron@1.1.0
|
||||
rajit:bootstrap3-datepicker@1.3.1
|
||||
random@1.0.2
|
||||
reactive-dict@1.0.5
|
||||
reactive-var@1.0.4
|
||||
reload@1.1.2
|
||||
retry@1.0.2
|
||||
routepolicy@1.0.3
|
||||
sacha:juice@0.1.1
|
||||
rajit:bootstrap3-datepicker@1.4.1
|
||||
random@1.0.3
|
||||
reactive-dict@1.1.0
|
||||
reactive-var@1.0.5
|
||||
reload@1.1.3
|
||||
retry@1.0.3
|
||||
routepolicy@1.0.5
|
||||
sacha:juice@0.1.3
|
||||
sacha:spin@2.0.4
|
||||
service-configuration@1.0.3
|
||||
session@1.0.5
|
||||
sha@1.0.2
|
||||
softwarerero:accounts-t9n@1.0.5
|
||||
spacebars@1.0.4
|
||||
spacebars-compiler@1.0.4
|
||||
spiderable@1.0.6
|
||||
srp@1.0.2
|
||||
standard-app-packages@1.0.4
|
||||
stylus@1.0.6
|
||||
tap:http-methods@0.0.23
|
||||
tap:i18n@1.2.1
|
||||
service-configuration@1.0.4
|
||||
session@1.1.0
|
||||
sha@1.0.3
|
||||
softwarerero:accounts-t9n@1.0.8
|
||||
spacebars@1.0.6
|
||||
spacebars-compiler@1.0.6
|
||||
spiderable@1.0.7
|
||||
srp@1.0.3
|
||||
standard-app-packages@1.0.5
|
||||
stylus@1.0.7
|
||||
tap:i18n@1.4.1
|
||||
telescope-api@0.0.0
|
||||
telescope-base@0.0.0
|
||||
telescope-daily@0.0.0
|
||||
|
@ -120,7 +126,8 @@ telescope-i18n@0.0.0
|
|||
telescope-invites@0.1.0
|
||||
telescope-kadira@0.1.0
|
||||
telescope-lib@0.2.9
|
||||
telescope-module-share@0.0.0
|
||||
telescope-messages@0.0.0
|
||||
telescope-module-share@0.1.0
|
||||
telescope-newsletter@0.1.0
|
||||
telescope-notifications@0.1.0
|
||||
telescope-post-by-feed@0.0.1
|
||||
|
@ -128,19 +135,21 @@ telescope-releases@0.1.0
|
|||
telescope-rss@0.0.0
|
||||
telescope-search@0.0.0
|
||||
telescope-singleday@0.1.0
|
||||
telescope-sitemap@0.0.5
|
||||
telescope-subscribe-to-posts@0.1.0
|
||||
telescope-tagline-banner@0.1.0
|
||||
telescope-tags@0.0.0
|
||||
telescope-theme-base@0.0.0
|
||||
telescope-theme-hubble@0.0.0
|
||||
telescope-update-prompt@0.1.0
|
||||
templating@1.0.10
|
||||
tracker@1.0.4
|
||||
templating@1.1.1
|
||||
tracker@1.0.7
|
||||
tsega:bootstrap3-datetimepicker@3.1.3_3
|
||||
twitter@1.1.3
|
||||
ui@1.0.5
|
||||
underscore@1.0.2
|
||||
url@1.0.3
|
||||
useraccounts:core@1.4.1
|
||||
useraccounts:unstyled@1.4.1
|
||||
webapp@1.1.5
|
||||
webapp-hashing@1.0.2
|
||||
twitter@1.1.4
|
||||
ui@1.0.6
|
||||
underscore@1.0.3
|
||||
url@1.0.4
|
||||
useraccounts:core@1.8.1
|
||||
useraccounts:unstyled@1.8.1
|
||||
webapp@1.2.0
|
||||
webapp-hashing@1.0.3
|
||||
|
|
163
History.md
163
History.md
|
@ -1,13 +1,96 @@
|
|||
## v0.15 “SideScope”
|
||||
|
||||
#### Layout
|
||||
|
||||
* Added new `postListTop` zone that only appears on post lists.
|
||||
* Now showing tagline on every post list.
|
||||
* Added the Side Nav layout.
|
||||
* New Admin menu layout.
|
||||
|
||||
#### Settings
|
||||
|
||||
* Added the Post Views setting.
|
||||
* Changed color settings names.
|
||||
* Added field for optional category image (thanks @dtsepelev!).
|
||||
|
||||
#### SEO
|
||||
|
||||
* Added `telescope-sitemap` package (thanks @yourcelf!).
|
||||
* Added improved SEO support (thanks @yourcelf!).
|
||||
* Added field for SEO site image.
|
||||
|
||||
#### Other
|
||||
|
||||
* Improved performance when loading comments for long threads (thanks @dandv!).
|
||||
* Usernames are now case and space insensitive. `John Smith`, `JohnSmith`, and `johnsmith` are now all considered to be the same username (thanks @splendido!).
|
||||
* Now using `feedparser` instead of `htmlparser2` to parse RSS feeds (thanks @delgermurun!).
|
||||
* Now supporting RSS categories (thanks @delgermurun).
|
||||
* Refactored dropdowns into menu components.
|
||||
* New `{{{icon}}}` helper for icons, using FontAwesome.
|
||||
* New accent color customization API.
|
||||
* Fixed various bugs (thanks @webyak, @yourcelf, @ywang28, @delgermurun!).
|
||||
* Now publishing upvoters and downvoters on single post page.
|
||||
|
||||
#### Internationalization
|
||||
|
||||
* Added Arabic translation (thanks @nwabdou85!).
|
||||
* Added missing translations in Brazilian Portuguese (thanks @alanmeira!).
|
||||
* Improved French translation (thanks @klamzo!).
|
||||
* Romanian translation (thanks @razvansky!).
|
||||
* Added Dutch translation (thanks @reneras!).
|
||||
|
||||
## v0.14.3 “TableScope”
|
||||
|
||||
* Implemented Reactive Table for the Users dashboard (thanks @jshimko!).
|
||||
* Upgraded Herald package (thanks @kestanous!).
|
||||
* Upgraded Avatar package (thanks @bengott!).
|
||||
* Upgraded Autoform package.
|
||||
* Added Greek translation (thanks @portokallidis!).
|
||||
* Improved Spanish translation (thanks @brayancruces!).
|
||||
* Added new callbacks for upvoting and downvoting (thanks @Baxter900 !).
|
||||
* OP comments now get the `author-comment` CSS class.
|
||||
|
||||
## v0.14.2 “FaviconScope”
|
||||
|
||||
* Added settings for auth methods.
|
||||
* Added setting for external fonts.
|
||||
* Use site tagline as homepage title.
|
||||
* Make favicon customizable.
|
||||
* Making webfont customizable. To get previous font back, use: `https://fonts.googleapis.com/css?family=Source+Sans+Pro:400,700,400italic,700italic`.
|
||||
* Fix juice issue.
|
||||
* Non-admins should not be able to access rejected posts.
|
||||
* Bulgarian translation (thanks @durrrr91!)
|
||||
|
||||
## v0.14.1 “TaglineScope”
|
||||
|
||||
* Fix double notification bug.
|
||||
* Fix singleday view bug.
|
||||
* Fix post approval date bug.
|
||||
* Don't let non-admins access pending posts.
|
||||
* Give search field a border on white backgrounds.
|
||||
* Spanish, Brazilian, Turkish, Vietnamese, Polish translations (thanks everybody!).
|
||||
* Do not put comment reply page behind log-in wall.
|
||||
* Various CSS tweaks.
|
||||
* Added tagline banner package.
|
||||
* You can now assign a category to posts generated from feeds (thanks @Accentax!).
|
||||
* Use tagline as title on homepage.
|
||||
* Refactor default view route controller code.
|
||||
* Fixed security issue with post editing.
|
||||
|
||||
## v0.14.0 “GridScope”
|
||||
|
||||
* Adeed Grid Layout option.
|
||||
* Added Grid Layout option.
|
||||
* Cleaned up vote click handling functions and added tests (thanks @anthonymayer!).
|
||||
* Added `threadModules` zone.
|
||||
* Added `upvoteCallbacks` and `downvoteCallbacks` callback arrays.
|
||||
* Fix “post awaiting moderation” message bug.
|
||||
* You can now subscribe to comment threads (thanks @delgermurun!).
|
||||
* Added `postApproveCallbacks` callback array.
|
||||
* Added notifications for pending and approved posts, for admins and end users.
|
||||
* Renaming "digest" view to "singleday".
|
||||
* Make sure only valid properties can be added to posts and comments.
|
||||
* Added newsletter time setting (thanks @anthonymayer!).
|
||||
* Change "sign up" to "register" (thanks @Kikobeats!).
|
||||
|
||||
## v0.13.0 “ComponentScope”
|
||||
|
||||
|
@ -24,13 +107,13 @@
|
|||
* Various CSS tweaks.
|
||||
* Fixing newsletter issue.
|
||||
* Post rank now has its own module.
|
||||
* Changed how field label i18n works.
|
||||
* Changed how field label i18n works.
|
||||
|
||||
## v0.12.0 “DummyScope”
|
||||
|
||||
**Important: existing newsletters and feeds need to be manually enabled in the Settings panel**
|
||||
**Important: existing newsletters and feeds need to be manually enabled in the Settings panel**
|
||||
|
||||
* Added "Enable Newsletter" setting. Note: existing newsletters must be re-enabled.
|
||||
* Added "Enable Newsletter" setting. Note: existing newsletters must be re-enabled.
|
||||
* Added "Enable Feeds" settings. Note: existing feeds must be re-enabled.
|
||||
* Now showing release notes for latest version right inside the app.
|
||||
* Added dummy posts, users, and comments.
|
||||
|
@ -50,21 +133,21 @@
|
|||
* `telescope-post-by-feed` package now lets you import posts from RSS feeds.
|
||||
* Adding limit of 200 posts to post list request.
|
||||
* Refactoring post and comment submit to fix latency compensation issues.
|
||||
* Tags package now using Autoform.
|
||||
* Tags package now using Autoform.
|
||||
|
||||
## v0.11.0 “AvatarScope”
|
||||
|
||||
* Added new `userCreatedCallbacks` callback hook.
|
||||
* Added new setting to subscribe new user to mailing list automatically.
|
||||
* Added new `debug` setting.
|
||||
* Added new `debug` setting.
|
||||
* `siteUrl` setting now affects `Meteor.absoluteUrl()`.
|
||||
* Added new `clog` function that only logs if `debug` setting is true.
|
||||
* Simplified post module system, modules are not split in three zones anymore.
|
||||
* Added new `postThumbnail` hook to show Embedly thumbnail.
|
||||
* Added new `postThumbnail` hook to show Embedly thumbnail.
|
||||
* Simplified Hubble theme CSS for both desktop and mobile.
|
||||
* Many CSS tweaks for Hubble mobile.
|
||||
* Many CSS tweaks for Hubble mobile.
|
||||
* Show author and commenters avatars on post item.
|
||||
* Adding description to post list pages and showing them in menus.
|
||||
* Adding description to post list pages and showing them in menus.
|
||||
* Improved Russian translation (thanks @Viktorminator!).
|
||||
* Now using `editorconfig` (thanks @erasaur!).
|
||||
* Upgraded to `useraccounts:unstyled@1.4.0` (thanks @splendido!).
|
||||
|
@ -82,10 +165,10 @@
|
|||
|
||||
## v0.9.11 “FormScope”
|
||||
|
||||
* Now using [Autoform](https://github.com/aldeed/meteor-autoform/)'s **quickform** feature to generate post submit and edit forms.
|
||||
* Now using [Autoform](https://github.com/aldeed/meteor-autoform/)'s **quickform** feature to generate post submit and edit forms.
|
||||
* Various fixes by [@anthonymayer](https://github.com/anthonymayer).
|
||||
* Now using [fourseven:scss](https://github.com/fourseven/meteor-scss) to directly compile SCSS files.
|
||||
* Renamed `post` method to `submitPost`.
|
||||
* Now using [fourseven:scss](https://github.com/fourseven/meteor-scss) to directly compile SCSS files.
|
||||
* Renamed `post` method to `submitPost`.
|
||||
* Post editing now happens via a `postEdit` method.
|
||||
* Categories are now normalized (only the `_id` is stored on the post object, not the whole category object).
|
||||
* Refactored Embedly package; now fills in description as well (thanks [@kvindasAB](https://github.com/kvindasAB)!).
|
||||
|
@ -129,12 +212,12 @@
|
|||
* Splitting up the settings form into sub-sections.
|
||||
* Adding help text to settings form.
|
||||
* Fixing problem with daily view theming.
|
||||
* Improving avatar stuff (thanks @shaialon and @bengott!).
|
||||
* Improving avatar stuff (thanks @shaialon and @bengott!).
|
||||
|
||||
## v0.9.6
|
||||
|
||||
* Fixed security hole in user update.
|
||||
* Kadira is now included by default.
|
||||
* Fixed security hole in user update.
|
||||
* Kadira is now included by default.
|
||||
* Comments now have their own feed (thanks @delgermurun!).
|
||||
* Fixed URL collision bug (thanks @GoodEveningMiss!).
|
||||
* Now using [`account-templates`](https://github.com/splendido/accounts-templates-core) (thanks @splendido!).
|
||||
|
@ -152,7 +235,7 @@
|
|||
|
||||
## v0.9.4 “UpdateScope”
|
||||
|
||||
* Removed unneeded allow insert on Posts and Comments.
|
||||
* Removed unneeded allow insert on Posts and Comments.
|
||||
* Renaming `postMeta` template to `postInfo` to avoid ambiguity.
|
||||
* Fixing avatar code.
|
||||
* Adding update prompt package.
|
||||
|
@ -162,24 +245,24 @@
|
|||
|
||||
## v0.9.3 “DailyScope”
|
||||
|
||||
* Show user comments on user profile page.
|
||||
* Show user comments on user profile page.
|
||||
* Move votes to their own `user.votes` object.
|
||||
* Add daily view.
|
||||
* Default root view is now customizable.
|
||||
* Default root view is now customizable.
|
||||
* Updated app to 0.9.0.
|
||||
* Updated all packages to be 0.9.0-compatible.
|
||||
* Fixed XSS bug (CVE ID: CVE-2014-5144) by sanitizing user input server-side.
|
||||
* Now storing both markdown and HTML versions of content.
|
||||
* Now storing both markdown and HTML versions of content.
|
||||
|
||||
## v0.9.2.6 “InviteScope”
|
||||
|
||||
* Added new invite features (thanks [@callmephilip](https://github.com/callmephilip)!)
|
||||
* Changed `navItems` to `primaryNav` and added `secondaryNav`.
|
||||
* Changed `navItems` to `primaryNav` and added `secondaryNav`.
|
||||
* Added new `themeSettings` object for storing theme-level settings.
|
||||
* Notifications is now a nav menu item.
|
||||
* Notifications is now a nav menu item.
|
||||
* Renamed `comments` to `commentsCount` on `Post` model.
|
||||
* Now tracking list of commenters `_id`s on `Post` model.
|
||||
* Rerun interrupted migrations.
|
||||
* Rerun interrupted migrations.
|
||||
|
||||
## v0.9.2.5 “AccountScope”
|
||||
|
||||
|
@ -189,19 +272,19 @@
|
|||
|
||||
## v0.9.2 “MailScope”
|
||||
|
||||
* Use [handlebars-server](https://github.com/EventedMind/meteor-handlebars-server) for all email templates.
|
||||
* Use [handlebars-server](https://github.com/EventedMind/meteor-handlebars-server) for all email templates.
|
||||
* Refactored email system to use global HTML email wrapper.
|
||||
* Added routes to preview email templates.
|
||||
* Added routes to preview email templates.
|
||||
* Changed how notifications are stored in db.
|
||||
* Added `deleteNotifications` migration to delete all existing notifications.
|
||||
* Now using templates for on-site notifications too.
|
||||
* Added `heroModules` and `footerModules` hooks.
|
||||
* Added [telescope-newsletter](https://github.com/TelescopeJS/Telescope-Newsletter) package.
|
||||
* Sending emails from within `setTimeout`s to fix latency compensation issue.
|
||||
* Added [telescope-newsletter](https://github.com/TelescopeJS/Telescope-Newsletter) package.
|
||||
* Sending emails from within `setTimeout`s to fix latency compensation issue.
|
||||
|
||||
## v0.9.1.2
|
||||
|
||||
* Added `lastCommentedAt` property to posts.
|
||||
* Added `lastCommentedAt` property to posts.
|
||||
* Added hooks to `post_edit` and `post_submit`'s `rendered` callback.
|
||||
* Embedly module now supports video embedding in a lightbox.
|
||||
* Updated to Meteor 0.8.3.
|
||||
|
@ -211,16 +294,16 @@
|
|||
|
||||
* Using Arunoda's [Subscription Manager](https://github.com/meteorhacks/subs-manager).
|
||||
* Updating mobile version.
|
||||
* Made the background color setting into a more general background CSS setting.
|
||||
* Added `postHeading` and `postMeta` hooks.
|
||||
* Made the background color setting into a more general background CSS setting.
|
||||
* Added `postHeading` and `postMeta` hooks.
|
||||
|
||||
## v0.9
|
||||
|
||||
* See [blog post](http://telesc.pe/blog/telescope-v09-modulescope) for changelog.
|
||||
* See [blog post](http://telesc.pe/blog/telescope-v09-modulescope) for changelog.
|
||||
|
||||
## v0.8.3 “CleanScope”
|
||||
|
||||
* Refactored the way dating and timestamping works with pending/approved posts.
|
||||
* Refactored the way dating and timestamping works with pending/approved posts.
|
||||
* Cleaned up unused/old third-party code.
|
||||
* Migrated "submitted" property to "postedAt".
|
||||
* Added a "postedAt" property to comments.
|
||||
|
@ -230,24 +313,24 @@
|
|||
* Improved migrations with timestamps and number of rows affected.
|
||||
* Created `telescope-lib` and `telescope-base` pacakge.
|
||||
* Pulled out search into its own `telescope-search` package.
|
||||
* Made menu and views modular.
|
||||
* Made menu and views modular.
|
||||
* Using SimpleSchema and Collection2 for models.
|
||||
|
||||
## v0.8.1 “FlexScope”
|
||||
|
||||
* Extracted part of the tags feature into its own package.
|
||||
* Extracted part of the tags feature into its own package.
|
||||
* Made subscription preloader more flexible.
|
||||
* Made navigation menu dynamic.
|
||||
* Made navigation menu dynamic.
|
||||
|
||||
## v0.8 “BlazeScope”
|
||||
|
||||
* Updated for Meteor 0.8.1.1/Blaze compatibility.
|
||||
* Using Collection2/SimpleSchema/Autoforms for Settings form.
|
||||
* Using Collection2/SimpleSchema/Autoforms for Settings form.
|
||||
|
||||
## v0.7.4 “InterScope”
|
||||
|
||||
* Added basic internationalization (thanks Toam!).
|
||||
* Added search logging.
|
||||
* Added search logging.
|
||||
|
||||
## v0.7.3
|
||||
|
||||
|
@ -262,9 +345,9 @@
|
|||
|
||||
* Added karma redistribution.
|
||||
* Improved user dashboard.
|
||||
* Improved user profiles.
|
||||
* Improved user profiles.
|
||||
|
||||
Note: run the "update user profile" script from the toolbox after updating.
|
||||
Note: run the "update user profile" script from the toolbox after updating.
|
||||
|
||||
## v0.7 “IronScope”
|
||||
|
||||
|
@ -280,7 +363,7 @@ Note: run the "update user profile" script from the toolbox after updating.
|
|||
* Paginating users dashboard.
|
||||
* Filtering users dashboard.
|
||||
|
||||
Note: If you're upgrading from a previous version of Telescope, you'll need to run the "update user slugs" method from within the Admin Toolbox panel inside the web app to get user profiles to work.
|
||||
Note: If you're upgrading from a previous version of Telescope, you'll need to run the "update user slugs" method from within the Admin Toolbox panel inside the web app to get user profiles to work.
|
||||
|
||||
## v0.6.2
|
||||
|
||||
|
@ -327,4 +410,4 @@ Note: If you're upgrading from a previous version of Telescope, you'll need to r
|
|||
|
||||
* Added a second `createdAt` timestamp. Score calculations still use the `submitted` timestamp, but it only gets set when (if) a post gets approved.
|
||||
|
||||
* Started keeping track of versions and changes.
|
||||
* Started keeping track of versions and changes.
|
||||
|
|
190
client/components/menu/menu.scss
Normal file
190
client/components/menu/menu.scss
Normal file
|
@ -0,0 +1,190 @@
|
|||
@function black($opacity){
|
||||
@return rgba(0,0,0,$opacity);
|
||||
}
|
||||
@function white($opacity){
|
||||
@return rgba(255,255,255,$opacity);
|
||||
}
|
||||
|
||||
$medium-text: #a4a9ab;
|
||||
$red: #DD3416;
|
||||
$text: #444444;
|
||||
|
||||
// ------------------------------------ Base ------------------------------------ //
|
||||
.menu-item{
|
||||
padding: 5px;
|
||||
margin: 0;
|
||||
a{
|
||||
font-size:14px;
|
||||
}
|
||||
}
|
||||
.menu-label{
|
||||
display: block;
|
||||
}
|
||||
.menu-description{
|
||||
display: block;
|
||||
font-weight: normal;
|
||||
font-size: 12px;
|
||||
margin-top: 2px;
|
||||
color: $medium-text;
|
||||
}
|
||||
.item-admin{
|
||||
.menu-label:after{
|
||||
content: "[A]";
|
||||
font-size: 10px;
|
||||
color: $red;
|
||||
display: inline-block;
|
||||
margin-left: 3px;
|
||||
}
|
||||
}
|
||||
.item-active{
|
||||
.dark-bg &, .medium-dark-bg &{
|
||||
background: white(0.1);
|
||||
}
|
||||
.light-bg &, .medium-light-bg &, white-bg &{
|
||||
background: black(0.1);
|
||||
}
|
||||
}
|
||||
.item-active.item-never-active{
|
||||
background: none;
|
||||
}
|
||||
.menu-top-label{
|
||||
cursor: pointer;
|
||||
}
|
||||
// ------------------------------------ List ------------------------------------ //
|
||||
|
||||
.menu-list{
|
||||
.show-more{
|
||||
display: none;
|
||||
}
|
||||
.item-active{
|
||||
background: black(0.05);
|
||||
}
|
||||
}
|
||||
// ------------------------------------ Hover ------------------------------------ //
|
||||
|
||||
.menu-dropdown{
|
||||
position:relative;
|
||||
&.menu-has-items{
|
||||
.menu-top-level{
|
||||
cursor: pointer;
|
||||
&:after{
|
||||
display:inline-block;
|
||||
position:relative;
|
||||
top:-1px;
|
||||
margin-left:4px;
|
||||
content:"▼";
|
||||
font-size:8px;
|
||||
}
|
||||
}
|
||||
&:hover{
|
||||
.menu-menu{
|
||||
display:block;
|
||||
}
|
||||
}
|
||||
}
|
||||
.menu-menu{
|
||||
display:none;
|
||||
top:10px;
|
||||
left:10px;
|
||||
position:absolute;
|
||||
padding-top:20px;
|
||||
z-index: 10000;
|
||||
&, a, a:link, a:visited{
|
||||
color: $text;
|
||||
}
|
||||
a.button{
|
||||
color: white;
|
||||
}
|
||||
.menu-contents{
|
||||
background:white;
|
||||
padding: 10px;
|
||||
min-width:180px;
|
||||
border-radius: 3px;
|
||||
box-shadow: 0 1px 3px black(0.35);
|
||||
list-style-type: none;
|
||||
}
|
||||
}
|
||||
.show-more{
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
// ------------------------------------ Accordion ------------------------------------ //
|
||||
|
||||
.menu-accordion{
|
||||
.menu-top-level{
|
||||
cursor: default;
|
||||
display: block;
|
||||
padding: 5px;
|
||||
position: relative;
|
||||
/* note: we use a pseudo-element for the border so we can control the opacity indepdently from the color */
|
||||
&:after{
|
||||
content: " ";
|
||||
display: block;
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
height: 1px;
|
||||
background: currentColor;
|
||||
bottom: 0px;
|
||||
left: 0px;
|
||||
opacity: 0.5;
|
||||
}
|
||||
}
|
||||
/* ------- Show More Button ------- */
|
||||
.show-more{
|
||||
// border-top: 1px solid #ccc;
|
||||
position: relative;
|
||||
/* note: we use a pseudo-element for the border so we can control the opacity indepdently from the color */
|
||||
&:before{
|
||||
content: " ";
|
||||
display: block;
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
height: 1px;
|
||||
background: currentColor;
|
||||
top: 0px;
|
||||
left: 0px;
|
||||
opacity: 0.5;
|
||||
}
|
||||
padding: 8px 0;
|
||||
display: none;
|
||||
text-align: center;
|
||||
.icon{
|
||||
display: block;
|
||||
height: 20px;
|
||||
width: 20px;
|
||||
opacity: 0.5;
|
||||
margin: 0 auto;
|
||||
}
|
||||
&:hover{
|
||||
background: white(0.2);
|
||||
.show-more-icon{
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
.icon-close{
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
&.menu-long .show-more{
|
||||
display: block; // only show the "show more" button if the menu has more than three items
|
||||
}
|
||||
&.menu-open{
|
||||
.icon-close{
|
||||
display: block;
|
||||
}
|
||||
.icon-open{
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
/* expand/collapse animation */
|
||||
.menu-contents{
|
||||
max-height: 93px;
|
||||
overflow: hidden;
|
||||
transition: max-height ease-out 300ms;
|
||||
}
|
||||
&.menu-open .menu-contents{
|
||||
max-height: 999px !important;
|
||||
}
|
||||
}
|
60
client/components/menu/menu_component.html
Normal file
60
client/components/menu/menu_component.html
Normal file
|
@ -0,0 +1,60 @@
|
|||
<!--
|
||||
|
||||
Menu Component
|
||||
|
||||
menuName (String)
|
||||
| The name of the menu
|
||||
|
||||
menuItems (Array)
|
||||
| An array containing the contents of the menu
|
||||
- route (String/Function) [optional]
|
||||
- label (String/Function) [optional]
|
||||
- description (String) [optional]
|
||||
- itemClass (String) [optional]
|
||||
| an optional CSS class
|
||||
- adminOnly (Boolean) [optional]
|
||||
| whether to only show the item to admins
|
||||
- template (String) [optional]
|
||||
| if a template is provided, it will override the route/label/description
|
||||
- data (Object) [optional]
|
||||
| data contexnt for the template
|
||||
|
||||
menuLabel (String) [optional]
|
||||
|
||||
menuClass (String) [optional]
|
||||
| An optional default CSS class given to the menu
|
||||
|
||||
menuMode (String) [optional]
|
||||
| "accordion", "dropdown", or "list" (defaults to "list")
|
||||
|
||||
-->
|
||||
|
||||
<template name="menuComponent">
|
||||
<div class="menu {{menuClass}}">
|
||||
<div class="menu-top-level" href="/">{{menuLabel}}</div>
|
||||
<div class="menu-menu">
|
||||
{{#with menuItems}}
|
||||
<ul class="menu-contents" role="menu" aria-labelledby="dLabel">
|
||||
{{#each this}}
|
||||
{{#if showMenuItem}}
|
||||
{{#if hasTemplate}}
|
||||
{{> Template.dynamic template=template data=data}}
|
||||
{{else}}
|
||||
<li class="menu-item {{itemClass}}">
|
||||
<a class="menu-sub-level" href="{{itemRoute}}">
|
||||
<span class="menu-label">{{itemLabel}}</span>
|
||||
{{#if description}}<span class="menu-description">{{_ description}}</span>{{/if}}
|
||||
</a>
|
||||
</li>
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
{{/each}}
|
||||
</ul>
|
||||
{{/with}}
|
||||
<a class="show-more" href="#">
|
||||
{{{icon "open"}}}
|
||||
{{{icon "close"}}}
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
74
client/components/menu/menu_component.js
Normal file
74
client/components/menu/menu_component.js
Normal file
|
@ -0,0 +1,74 @@
|
|||
getRoute = function (item) {
|
||||
// if route is a Function return its result, else apply Router.path() to it
|
||||
return typeof item.route == "function" ? item.route() : Router.path(item.route);
|
||||
}
|
||||
|
||||
Template[getTemplate('menuComponent')].helpers({
|
||||
menuClass: function () {
|
||||
|
||||
var classes = [this.menuName+"-menu"];
|
||||
var mode = (typeof this.menuMode === "undefined") ? "list" : this.menuMode;
|
||||
var count = this.menuItems.length;
|
||||
|
||||
classes.push("menu-"+mode);
|
||||
|
||||
if(!!this.menuClass) {
|
||||
classes.push(this.menuClass)
|
||||
}
|
||||
|
||||
// enable menu if top-nav layout is enabled, if themes supports menus, and if menu isn't empty
|
||||
if (count) {
|
||||
classes.push("menu-has-items");
|
||||
if (count > 3) {
|
||||
classes.push("menu-long");
|
||||
}
|
||||
} else {
|
||||
classes.push("menu-no-items");
|
||||
}
|
||||
|
||||
return classes.join(" ");
|
||||
},
|
||||
menuLabel: function () {
|
||||
// if label is defined, use this. Else default to menu name
|
||||
return !!this.menuLabel ? this.menuLabel : i18n.t(this.menuName);
|
||||
},
|
||||
showMenuItem: function () {
|
||||
// if this is an admin item, only show it if current user is admin
|
||||
return this.adminOnly ? isAdmin(Meteor.user()) : true;
|
||||
},
|
||||
hasTemplate: function () {
|
||||
return !!this.template;
|
||||
},
|
||||
itemClass: function () {
|
||||
var itemClass = "";
|
||||
var currentPath = Router.current().location.get().path ;
|
||||
|
||||
if (this.adminOnly) {
|
||||
itemClass += " item-admin";
|
||||
}
|
||||
if (getRoute(this) === currentPath || getRoute(this) === Meteor.absoluteUrl() + currentPath.substr(1)) {
|
||||
// substr(1) is to avoid having two "/" in the URL
|
||||
itemClass += " item-active";
|
||||
}
|
||||
if (this.itemClass) {
|
||||
itemClass += " "+this.itemClass;
|
||||
}
|
||||
|
||||
return itemClass;
|
||||
},
|
||||
itemLabel: function () {
|
||||
// if label is a Function return its result, else return i18n'd version of label
|
||||
return typeof this.label == "function" ? this.label() : i18n.t(this.label);
|
||||
},
|
||||
itemRoute: function () {
|
||||
return getRoute(this);
|
||||
}
|
||||
});
|
||||
|
||||
Template[getTemplate('menuComponent')].events({
|
||||
'click .show-more': function (e, t) {
|
||||
e.preventDefault();
|
||||
$menu = t.$('.menu');
|
||||
$menu.toggleClass('menu-open');
|
||||
}
|
||||
});
|
64
client/components/postList/posts_list.html
Normal file
64
client/components/postList/posts_list.html
Normal file
|
@ -0,0 +1,64 @@
|
|||
<!--
|
||||
|
||||
Post List Component
|
||||
|
||||
title (String)
|
||||
| The title of the post list
|
||||
|
||||
incoming (Cursor)
|
||||
| A cursor containing the new posts since render
|
||||
|
||||
postsCursor (Cursor)
|
||||
| A cursor containing the post list
|
||||
|
||||
postsCount (Number)
|
||||
| How many posts are loaded
|
||||
|
||||
postsReady (Boolean)
|
||||
| Whether the subscription is ready
|
||||
|
||||
hasMorePosts (Boolean)
|
||||
| Whether there are still more posts that can be loaded
|
||||
|
||||
loadMoreHandler (Function)
|
||||
| What to do when the user clicks "load more"
|
||||
|
||||
-->
|
||||
|
||||
<template name="posts_list">
|
||||
<div class="posts-wrapper grid grid-module">
|
||||
{{> Template.dynamic template=postsListIncoming data=incoming}}
|
||||
<div class="posts list {{postsLayout}}" aria-live="polite">
|
||||
{{#each postsCursor}}
|
||||
{{> Template.dynamic template=before_post_item}}
|
||||
{{> Template.dynamic template=post_item}}
|
||||
{{> Template.dynamic template=after_post_item}}
|
||||
{{/each}}
|
||||
</div>
|
||||
{{> Template.dynamic template=postsLoadMore}}
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<template name="postsListIncoming">
|
||||
{{#if count}}
|
||||
<a class="more-button show-new grid-module" href="">
|
||||
<span>
|
||||
{{_ "view"}} {{count}} {{_ "new"}} {{pluralize count "post"}}
|
||||
</span>
|
||||
</a>
|
||||
{{/if}}
|
||||
</template>
|
||||
|
||||
<template name="postsLoadMore">
|
||||
{{#if postsReady}}
|
||||
{{#if hasPosts}}
|
||||
{{#if hasMorePosts}}
|
||||
<a class="more-button" href="#"><span>{{_ "load_more"}}</span></a>
|
||||
{{/if}}
|
||||
{{else}}
|
||||
<div class="no-posts">{{_ "sorry_we_couldnt_find_any_posts"}}</div>
|
||||
{{/if}}
|
||||
{{else}}
|
||||
<div class="loading-module">{{> spinner}}</div>
|
||||
{{/if}}
|
||||
</template>
|
|
@ -1,3 +1,5 @@
|
|||
// ----------------------------------- Post List -----------------------------------//
|
||||
|
||||
Template[getTemplate('posts_list')].created = function() {
|
||||
Session.set('listPopulatedAt', new Date());
|
||||
};
|
||||
|
@ -36,5 +38,40 @@ Template[getTemplate('posts_list')].helpers({
|
|||
},
|
||||
postsListIncoming: function () {
|
||||
return getTemplate('postsListIncoming');
|
||||
},
|
||||
postsListSort: function () {
|
||||
return getTemplate('postsListSort');
|
||||
}
|
||||
});
|
||||
|
||||
// ----------------------------------- Incoming -----------------------------------//
|
||||
|
||||
Template[getTemplate('postsListIncoming')].events({
|
||||
'click .show-new': function(e, instance) {
|
||||
Session.set('listPopulatedAt', new Date());
|
||||
}
|
||||
});
|
||||
|
||||
// ----------------------------------- Load More -----------------------------------//
|
||||
|
||||
Template[getTemplate('postsLoadMore')].helpers({
|
||||
postsReady: function () {
|
||||
return this.postsReady;
|
||||
},
|
||||
hasPosts: function () {
|
||||
return !!this.postsCursor.count();
|
||||
}
|
||||
});
|
||||
|
||||
Template[getTemplate('postsLoadMore')].events({
|
||||
'click .more-button': function (event, instance) {
|
||||
event.preventDefault();
|
||||
if (this.controllerInstance) {
|
||||
// controller is a template
|
||||
this.loadMoreHandler(this.controllerInstance);
|
||||
} else {
|
||||
// controller is router
|
||||
this.loadMoreHandler();
|
||||
}
|
||||
}
|
||||
});
|
|
@ -15,7 +15,6 @@ UI.registerHelper('eachWithRank', function(items, options) {
|
|||
});
|
||||
|
||||
UI.registerHelper('getSetting', function(setting, defaultArgument){
|
||||
defaultArgument = defaultArgument || '';
|
||||
setting = getSetting(setting, defaultArgument);
|
||||
return setting;
|
||||
});
|
||||
|
@ -36,7 +35,7 @@ UI.registerHelper('isAdmin', function(showError) {
|
|||
return true;
|
||||
}
|
||||
if ((typeof showError === 'string') && (showError === 'true')) {
|
||||
flashMessage(i18n.t('sorry_you_do_not_have_access_to_this_page'), 'error');
|
||||
Messages.flash(i18n.t('sorry_you_do_not_have_access_to_this_page'), 'error');
|
||||
}
|
||||
return false;
|
||||
});
|
||||
|
@ -81,4 +80,15 @@ UI.registerHelper('userName', function(userOrUserId) {
|
|||
if (!!user) {
|
||||
return getUserName(user);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
UI.registerHelper('displayName', function(userOrUserId) {
|
||||
var user = (typeof userOrUserId === 'string') ? Meteor.users.findOne(userOrUserId) : userOrUserId;
|
||||
if (!!user) {
|
||||
return getDisplayName(user);
|
||||
}
|
||||
});
|
||||
|
||||
UI.registerHelper('icon', function(iconName, iconClass) {
|
||||
return getIcon(iconName, iconClass);
|
||||
});
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
<head>
|
||||
<title>Loading...</title>
|
||||
<meta name="viewport" content="initial-scale=1.0">
|
||||
<link rel="shortcut icon" href="/img/favicon.ico"/>
|
||||
<link id="rss-link" rel="alternate" type="application/rss+xml" title="New Posts" href="/feed.xml"/>
|
||||
</head>
|
||||
|
|
|
@ -12,4 +12,31 @@ Meteor.startup(function () {
|
|||
$('#rss-link').attr('title', i18n.t('new_posts'));
|
||||
});
|
||||
|
||||
// AutoForm.debug();
|
||||
// AutoForm.debug();
|
||||
|
||||
Meteor.startup(function() {
|
||||
|
||||
var seoProperties = {
|
||||
meta: {},
|
||||
og: {}
|
||||
}
|
||||
|
||||
var title = getSetting("title", "Telescope");
|
||||
if (!!getSetting("tagline")) {
|
||||
title += ": "+getSetting("tagline");
|
||||
}
|
||||
|
||||
seoProperties.title = title;
|
||||
|
||||
if (!!getSetting("description")) {
|
||||
seoProperties.meta.description = getSetting("description");
|
||||
seoProperties.og.description = getSetting("description");
|
||||
}
|
||||
|
||||
if (!!getSetting("siteImage")) {
|
||||
seoProperties.og.image = getSetting("siteImage");
|
||||
}
|
||||
|
||||
SEO.config(seoProperties);
|
||||
|
||||
});
|
5
client/views/admin/admin_menu.html
Normal file
5
client/views/admin/admin_menu.html
Normal file
|
@ -0,0 +1,5 @@
|
|||
<template name="adminMenu">
|
||||
{{#if isAdmin}}
|
||||
{{> menuComponent menuName="admin" menuMode="list" menuItems=adminMenuItems}}
|
||||
{{/if}}
|
||||
</template>
|
5
client/views/admin/admin_menu.js
Normal file
5
client/views/admin/admin_menu.js
Normal file
|
@ -0,0 +1,5 @@
|
|||
Template[getTemplate('adminMenu')].helpers({
|
||||
adminMenuItems: function () {
|
||||
return adminMenu;
|
||||
}
|
||||
});
|
8
client/views/admin/admin_wrapper.html
Normal file
8
client/views/admin/admin_wrapper.html
Normal file
|
@ -0,0 +1,8 @@
|
|||
<template name="adminWrapper">
|
||||
<div class="grid admin-wrapper">
|
||||
{{> Template.dynamic template=adminMenu}}
|
||||
<div class="admin-contents {{contentsClass}}">
|
||||
{{> Template.dynamic template=contents data=this}}
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
11
client/views/admin/admin_wrapper.js
Normal file
11
client/views/admin/admin_wrapper.js
Normal file
|
@ -0,0 +1,11 @@
|
|||
Template[getTemplate('adminWrapper')].helpers({
|
||||
adminMenu: function () {
|
||||
return getTemplate("adminMenu");
|
||||
},
|
||||
contents: function () {
|
||||
return Router.current().route.getName();
|
||||
},
|
||||
contentsClass: function () {
|
||||
return Router.current().route.getName()+"-contents";
|
||||
}
|
||||
});
|
|
@ -1,9 +1,7 @@
|
|||
<template name="settingsForm">
|
||||
<div class="grid-small grid-module dialog settings">
|
||||
{{#if this.hasSettings}}
|
||||
{{> quickForm collection="Settings" id="updateSettingsForm" type="update" doc=this.settings label-class="control-label" input-col-class="controls" template="telescope"}}
|
||||
{{else}}
|
||||
{{> quickForm collection="Settings" id="insertSettingsForm" type="insert" template="telescope" label-class="control-label" input-col-class="controls"}}
|
||||
{{/if}}
|
||||
</div>
|
||||
<template name="settings">
|
||||
{{#if this.hasSettings}}
|
||||
{{> quickForm collection="Settings" id="updateSettingsForm" type="update" doc=this.settings label-class="control-label" input-col-class="controls" template="telescope"}}
|
||||
{{else}}
|
||||
{{> quickForm collection="Settings" id="insertSettingsForm" type="insert" template="telescope" label-class="control-label" input-col-class="controls"}}
|
||||
{{/if}}
|
||||
</template>
|
|
@ -2,36 +2,36 @@ AutoForm.hooks({
|
|||
updateSettingsForm: {
|
||||
|
||||
before: {
|
||||
update: function(docId, modifier, template) {
|
||||
template.$('button[type=submit]').addClass('loading');
|
||||
update: function(modifier) {
|
||||
this.template.$('button[type=submit]').addClass('loading');
|
||||
return modifier;
|
||||
}
|
||||
},
|
||||
|
||||
onSuccess: function(operation, result, template) {
|
||||
template.$('button[type=submit]').removeClass('loading');
|
||||
onSuccess: function(operation, result) {
|
||||
this.template.$('button[type=submit]').removeClass('loading');
|
||||
},
|
||||
|
||||
onError: function(operation, result, template) {
|
||||
template.$('button[type=submit]').removeClass('loading');
|
||||
this.template.$('button[type=submit]').removeClass('loading');
|
||||
}
|
||||
|
||||
},
|
||||
insertSettingsForm: {
|
||||
|
||||
before: {
|
||||
insert: function(doc, template) {
|
||||
template.$('button[type=submit]').addClass('loading');
|
||||
insert: function(doc) {
|
||||
this.template.$('button[type=submit]').addClass('loading');
|
||||
return doc;
|
||||
}
|
||||
},
|
||||
|
||||
onSuccess: function(operation, result, template) {
|
||||
template.$('button[type=submit]').removeClass('loading');
|
||||
onSuccess: function(operation, result) {
|
||||
this.template.$('button[type=submit]').removeClass('loading');
|
||||
},
|
||||
|
||||
onError: function(operation, result, template) {
|
||||
template.$('button[type=submit]').removeClass('loading');
|
||||
onError: function(operation, result) {
|
||||
this.template.$('button[type=submit]').removeClass('loading');
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -1,5 +0,0 @@
|
|||
<template name="comment_deleted">
|
||||
<div class="grid-small grid-block">
|
||||
<p>{{_ "your_comment_has_been_deleted"}}</p>
|
||||
</div>
|
||||
</template>
|
|
@ -25,7 +25,7 @@ Template[getTemplate('comment_edit')].events({
|
|||
if(confirm(i18n.t("are_you_sure"))){
|
||||
Meteor.call('removeComment', comment._id);
|
||||
Router.go('post_page', {_id: comment.postId});
|
||||
flashMessage("Your comment has been deleted.", "success");
|
||||
Messages.flash("Your comment has been deleted.", "success");
|
||||
}
|
||||
}
|
||||
});
|
||||
|
|
|
@ -9,7 +9,7 @@ Template[getTemplate('comment_form')].events({
|
|||
|
||||
e.preventDefault();
|
||||
$(e.target).addClass('disabled');
|
||||
clearSeenMessages();
|
||||
Messages.clearSeen();
|
||||
|
||||
var comment = {};
|
||||
var $commentForm = instance.$('#comment');
|
||||
|
@ -20,8 +20,6 @@ Template[getTemplate('comment_form')].events({
|
|||
// $commentForm.prop('disabled', true);
|
||||
// $submitButton.addClass('loading');
|
||||
|
||||
$commentForm.val('');
|
||||
|
||||
// context can be either post, or comment property
|
||||
var postId = !!this._id ? this._id: this.comment.postId;
|
||||
var post = Posts.findOne(postId);
|
||||
|
@ -41,9 +39,10 @@ Template[getTemplate('comment_form')].events({
|
|||
// $submitButton.removeClass('loading');
|
||||
if(error){
|
||||
console.log(error);
|
||||
flashMessage(error.reason, "error");
|
||||
Messages.flash(error.reason, "error");
|
||||
}else{
|
||||
trackEvent("newComment", newComment);
|
||||
$commentForm.val('');
|
||||
}
|
||||
});
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<template name="comment_item">
|
||||
<li class="comment module comment-displayed" id="{{_id}}">
|
||||
<li class="comment module comment-displayed {{commentClass}}" id="{{_id}}">
|
||||
<div class="comment-body">
|
||||
{{#if isDeleted}}
|
||||
<div class="comment-deleted">This comment has been deleted.</div>
|
||||
|
@ -7,16 +7,16 @@
|
|||
<div class="comment-content">
|
||||
<div class="comment-actions {{#if upvoted}}upvoted{{else}}not-upvoted{{/if}} {{#if downvoted}}downvoted{{else}}not-downvoted{{/if}}">
|
||||
<a class="upvote" href="#">
|
||||
<i class="icon-up"></i>
|
||||
{{{icon "upvote"}}}
|
||||
<span>{{_ "upvote"}}</span>
|
||||
</a>
|
||||
<a class="downvote" href="#">
|
||||
<i class="icon-down"></i>
|
||||
{{{icon "downvote"}}}
|
||||
<span>{{_ "downvote"}}</span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="comment-meta">
|
||||
<div class="user-avatar avatar-medium">{{> avatar userId=userId shape="circle"}}</div>
|
||||
<div class="user-avatar avatar-medium" aria-hidden="true">{{> avatar userId=userId shape="circle"}}</div>
|
||||
<a class="comment-username" href="{{profileUrl}}">{{authorName}}</a>
|
||||
<span class="comment-time">{{timeAgo ago}},</span>
|
||||
<span class="points">{{upvotes}}</span> <span class="unit">points </span>
|
||||
|
|
|
@ -66,6 +66,12 @@ Template[getTemplate('comment_item')].helpers({
|
|||
comment_item: function () {
|
||||
return getTemplate('comment_item');
|
||||
},
|
||||
commentClass: function () {
|
||||
// if this comment was made by the post author
|
||||
if (Posts.findOne(this.postId).userId == this.userId) {
|
||||
return 'author-comment';
|
||||
}
|
||||
},
|
||||
full_date: function(){
|
||||
return this.createdAt.toString();
|
||||
},
|
||||
|
@ -103,9 +109,10 @@ Template[getTemplate('comment_item')].helpers({
|
|||
|
||||
var handleVoteClick = function (meteorMethodName, eventName, e, instance) {
|
||||
e.preventDefault();
|
||||
e.stopImmediatePropagation(); // needed to prevent the handler running multiple times in nested comments
|
||||
if (!Meteor.user()){
|
||||
Router.go('atSignIn');
|
||||
flashMessage(i18n.t('please_log_in_first'), 'info');
|
||||
Messages.flash(i18n.t('please_log_in_first'), 'info');
|
||||
} else {
|
||||
Meteor.call(meteorMethodName, this, function(error, result){
|
||||
trackEvent(eventName, {
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<template name="comment_list">
|
||||
<ul class="comments comment-list">
|
||||
<ul class="comments comment-list" aria-live="polite">
|
||||
{{#each child_comments}}
|
||||
{{> UI.dynamic template=comment_item}}
|
||||
{{/each}}
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
{{/with}}
|
||||
|
||||
{{#with comment}}
|
||||
<ul class="selected-comment">
|
||||
<ul class="selected-comment" aria-live="polite">
|
||||
{{> UI.dynamic template=comment_item}}
|
||||
</ul>
|
||||
{{/with}}
|
||||
|
@ -17,5 +17,9 @@
|
|||
{{> UI.dynamic template=comment_form}}
|
||||
{{/if}}
|
||||
|
||||
{{#if isLoggedIn}}
|
||||
{{else}}
|
||||
<p><a href="/sign-in">{{_ "please_sign_in_to_reply"}}</a></p>
|
||||
{{/if}}
|
||||
</div>
|
||||
</template>
|
||||
|
|
|
@ -1,33 +1,30 @@
|
|||
<template name="css">
|
||||
<style>
|
||||
|
||||
{{elementColors}}
|
||||
|
||||
body, textarea, input, button, input[type="submit"], input[type="button"]{
|
||||
font-family: {{getSetting 'fontFamily'}};
|
||||
}
|
||||
|
||||
body{
|
||||
background: {{getSetting "backgroundCSS"}};
|
||||
}
|
||||
input[type="submit"], button, .button, .auth-buttons #login-buttons #login-buttons-password, .btn-primary, .error, .mobile-menu-button, .login-link-text, .post-category:hover{
|
||||
background-color: {{getSetting "buttonColor"}} !important;
|
||||
color: {{getSetting "buttonTextColor"}} !important;
|
||||
|
||||
.logo-image a{
|
||||
max-height:{{getSetting "logoHeight"}}px;
|
||||
max-width:{{getSetting "logoWidth"}}px;
|
||||
}
|
||||
a:hover, .post-content .post-heading .post-title:hover, .post-content .post-upvote .upvote-link i, .comment-actions a i, .comment-actions.upvoted .upvote i, .comment-actions.downvoted .downvote i, .toggle-actions-link, .post-meta a:hover, .action:hover, .post-upvote .upvote-link i{
|
||||
color: {{getSetting "buttonColor"}};
|
||||
|
||||
{{hideAuthClass}}
|
||||
|
||||
@media screen and (max-width: 600px) {
|
||||
/* find a way to get rid of this */
|
||||
.post-discuss .icon, .post-discuss .action-count{
|
||||
color: {{getSetting "buttonColor"}};
|
||||
}
|
||||
}
|
||||
.post-upvote .upvote-link i{
|
||||
border-color: {{getSetting "buttonColor"}};
|
||||
}
|
||||
.toggle-actions-link{
|
||||
border-color: {{getSetting "buttonColor"}};
|
||||
}
|
||||
.post-content .post-upvote .upvote-link.voted i.icon-check{
|
||||
/*color: {{getSetting "secondaryColor"}};*/
|
||||
}
|
||||
.header{
|
||||
background-color: {{getSetting "headerColor"}};
|
||||
}
|
||||
.header, .header .logo a, .header .logo a:visited{
|
||||
color: {{getSetting "headerTextColor"}};
|
||||
}
|
||||
.logo-image a{
|
||||
max-height:{{getSetting "logoHeight"}}px;
|
||||
max-width:{{getSetting "logoWidth"}}px;
|
||||
}
|
||||
|
||||
</style>
|
||||
<link href='{{getSetting 'fontUrl'}}' rel='stylesheet' type='text/css'>
|
||||
</template>
|
|
@ -1,2 +1,54 @@
|
|||
Template[getTemplate('css')].helpers({
|
||||
elementColors: function () {
|
||||
var css = "";
|
||||
|
||||
// first loop over each of the four color
|
||||
_.each(colorTable, function (elements, color) {
|
||||
var properties = {};
|
||||
|
||||
// for each color, loop over the items to build the selector
|
||||
_.each(elements, function (element) {
|
||||
var elementSelector = element.selector;
|
||||
var elementProperty = !!element.property ? element.property : "color"; // default to color property
|
||||
properties[elementProperty] += ", "+elementSelector;
|
||||
});
|
||||
|
||||
// loop over all properties, and add the relevant selectors
|
||||
_.each(properties, function (selector, property) {
|
||||
css += selector + "{\n " + property + ": " + getSetting(color) + ";\n}\n";
|
||||
});
|
||||
});
|
||||
return css;
|
||||
},
|
||||
headerTextColorHalfOpacity: function () {
|
||||
return tinycolor(getSetting("headerTextColor")).setAlpha(0.5);
|
||||
},
|
||||
buttonColorHalfOpacity: function () {
|
||||
return tinycolor(getSetting("buttonColor")).setAlpha(0.5);
|
||||
},
|
||||
hideAuthClass: function () {
|
||||
|
||||
var authClass = '';
|
||||
var authMethods = getSetting('authMethods', ["email"]);
|
||||
var selectors = [
|
||||
{name: 'email', selector: ".at-pwd-form"},
|
||||
{name: 'twitter', selector: "#at-twitter"},
|
||||
{name: 'facebook', selector: "#at-facebook"}
|
||||
];
|
||||
selectors.forEach(function (method) {
|
||||
// if current method is not one of the enabled auth methods, hide it
|
||||
if (authMethods.indexOf(method.name) == -1) {
|
||||
authClass += method.selector + ", ";
|
||||
}
|
||||
});
|
||||
|
||||
// unless we're showing at least one of twitter and facebook AND the password form,
|
||||
// hide separator
|
||||
if (authMethods.indexOf('email') == -1 || (authMethods.indexOf('facebook') == -1 && authMethods.indexOf('twitter') == -1)) {
|
||||
authClass += ".at-sep, ";
|
||||
}
|
||||
|
||||
return authClass.slice(0, - 2) + "{display:none !important}";
|
||||
|
||||
}
|
||||
});
|
|
@ -1,7 +1,7 @@
|
|||
<template name="layout">
|
||||
|
||||
{{> UI.dynamic template=css}}
|
||||
<div class="outer-wrapper {{currentPage}}">
|
||||
<div class="outer-wrapper {{currentPage}} {{navLayout}}">
|
||||
{{> UI.dynamic template=mobile_nav}}
|
||||
<div class="inner-wrapper template-{{pageName}}">
|
||||
{{> UI.dynamic template=nav}}
|
||||
|
@ -10,6 +10,8 @@
|
|||
{{#each heroModules}}
|
||||
{{> UI.dynamic template=getTemplate}}
|
||||
{{/each}}
|
||||
{{> yield "adminMenu"}}
|
||||
{{> yield "postListTop"}}
|
||||
{{> yield}}
|
||||
{{> UI.dynamic template=footer}}
|
||||
</div>
|
||||
|
|
|
@ -5,6 +5,9 @@ Template[getTemplate('layout')].helpers({
|
|||
nav: function () {
|
||||
return getTemplate('nav');
|
||||
},
|
||||
navLayout: function () {
|
||||
return getSetting('navLayout', 'top-nav');
|
||||
},
|
||||
messages: function () {
|
||||
return getTemplate('messages');
|
||||
},
|
||||
|
@ -20,8 +23,11 @@ Template[getTemplate('layout')].helpers({
|
|||
css: function () {
|
||||
return getTemplate('css');
|
||||
},
|
||||
extraCode: function() {
|
||||
return getSetting('extraCode');
|
||||
},
|
||||
heroModules: function () {
|
||||
return heroModules;
|
||||
return _.sortBy(heroModules, 'order');
|
||||
},
|
||||
getTemplate: function () {
|
||||
return getTemplate(this.template);
|
||||
|
@ -37,6 +43,14 @@ Template[getTemplate('layout')].rendered = function(){
|
|||
$('body').scrollTop(currentScroll);
|
||||
Session.set('currentScroll', null);
|
||||
}
|
||||
|
||||
// favicon
|
||||
var link = document.createElement('link');
|
||||
link.type = 'image/x-icon';
|
||||
link.rel = 'shortcut icon';
|
||||
link.href = getSetting('faviconUrl', '/img/favicon.ico');
|
||||
document.getElementsByTagName('head')[0].appendChild(link);
|
||||
|
||||
};
|
||||
|
||||
Template[getTemplate('layout')].events({
|
||||
|
|
|
@ -1,10 +0,0 @@
|
|||
Template[getTemplate('message_item')].helpers({
|
||||
|
||||
});
|
||||
|
||||
Template[getTemplate('message_item')].created = function(){
|
||||
var messageId=this.data._id;
|
||||
Meteor.setTimeout(function(){
|
||||
Messages.update(messageId, {$set: {seen:true}});
|
||||
}, 100);
|
||||
};
|
|
@ -6,27 +6,19 @@ var findAtts = function () {
|
|||
return c && c.atts;
|
||||
}
|
||||
|
||||
var getSchema = function () {
|
||||
var schema = AutoForm.find().ss._schema;
|
||||
|
||||
// decorate schema with key names
|
||||
schema = _.map(schema, function (field, key) {
|
||||
field.name = key;
|
||||
return field;
|
||||
});
|
||||
|
||||
return schema;
|
||||
}
|
||||
|
||||
var canEditField = function (field) {
|
||||
// show field only if user is admin or it's marked as editable
|
||||
return isAdmin(Meteor.user()) || !!field.atts.editable || (!!field.afFieldInputAtts && !!field.afFieldInputAtts.editable)
|
||||
return isAdmin(Meteor.user()) || (!!field.atts && !!field.atts.editable) || (!!field.afFieldInputAtts && !!field.afFieldInputAtts.editable)
|
||||
}
|
||||
|
||||
Template[getTemplate('quickForm_telescope')].helpers({
|
||||
fieldsWithNoFieldset: function () {
|
||||
// get names of fields who don't have an autoform attribute or don't have a group, but are not omitted
|
||||
var fields = _.pluck(_.filter(getSchema(), function (field, key) {
|
||||
// note: we need to _.map() first to assign the field key to the "name" property to preserve it.
|
||||
var fields = _.pluck(_.filter(_.map(AutoForm.getFormSchema()._schema, function (field, key) {
|
||||
field.name = key;
|
||||
return field;
|
||||
}), function (field) {
|
||||
if (field.name.indexOf('$') !== -1) // filter out fields with "$" in their name
|
||||
return false
|
||||
if (field.autoform && field.autoform.omit) // filter out fields with omit = true
|
||||
|
@ -34,11 +26,12 @@ Template[getTemplate('quickForm_telescope')].helpers({
|
|||
if (field.autoform && field.autoform.group) // filter out fields with a group
|
||||
return false
|
||||
return true // return remaining fields
|
||||
}), 'name');
|
||||
}), "name");
|
||||
|
||||
return fields;
|
||||
},
|
||||
afFieldsets: function () {
|
||||
var groups = _.compact(_.uniq(_.pluckDeep(getSchema(), 'autoform.group')));
|
||||
var groups = _.compact(_.uniq(_.pluckDeep(AutoForm.getFormSchema()._schema, 'autoform.group')));
|
||||
|
||||
// if user is not admin, exclude "admin" group from fieldsets
|
||||
if (!isAdmin(Meteor.user()))
|
||||
|
@ -51,9 +44,8 @@ Template[getTemplate('quickForm_telescope')].helpers({
|
|||
},
|
||||
fieldsForFieldset: function () {
|
||||
var fieldset = this.toLowerCase();
|
||||
|
||||
// get names of fields whose group match the current fieldset
|
||||
var fields = _.pluck(_.filter(getSchema(), function (field, key) {
|
||||
var fields = _.pluck(_.filter(AutoForm.getFormSchema()._schema, function (field, key) {
|
||||
return (field.name.indexOf('$') === -1) && field.autoform && field.autoform.group == fieldset;
|
||||
}), 'name');
|
||||
|
||||
|
@ -135,17 +127,13 @@ Template["afFormGroup_telescope"].helpers({
|
|||
return this.afFieldInputAtts.instructions;
|
||||
},
|
||||
label: function () {
|
||||
var fieldName = this.name;
|
||||
var fieldSchema = AutoForm.getFormSchema().schema(fieldName);
|
||||
|
||||
var name = this.atts.name;
|
||||
var label = name; // default to field name
|
||||
|
||||
// ugly hack to figure out if schema is Post (the only one that's modifiable right now)
|
||||
if (getCurrentTemplate().indexOf("post") !== -1 && !!postSchemaObject[name].label) {
|
||||
var label = postSchemaObject[name].label;
|
||||
}
|
||||
|
||||
return i18n.t(label);
|
||||
// if a label has been explicitely specified, use it; else default to capitalization of i18n of the field name
|
||||
var label = !!fieldSchema.label ? fieldSchema.label: capitalise(i18n.t(fieldName));
|
||||
|
||||
return label;
|
||||
}
|
||||
});
|
||||
|
||||
|
|
|
@ -1,14 +0,0 @@
|
|||
<template name="adminMenu">
|
||||
{{#if isAdmin}}
|
||||
<div class="dropdown header-submodule admin-menu">
|
||||
<a class="admin dropdown-top-level" href="/">{{_ "admin"}}</a>
|
||||
<div class="dropdown-menu">
|
||||
<ul role="menu" aria-labelledby="dLabel">
|
||||
{{#each menu}}
|
||||
{{> UI.dynamic template=menuItem data=this}}
|
||||
{{/each}}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
</template>
|
|
@ -1,8 +0,0 @@
|
|||
Template[getTemplate('adminMenu')].helpers({
|
||||
menuItem: function () {
|
||||
return getTemplate('menuItem');
|
||||
},
|
||||
menu: function () {
|
||||
return adminMenu;
|
||||
}
|
||||
});
|
11
client/views/nav/logo.html
Normal file
11
client/views/nav/logo.html
Normal file
|
@ -0,0 +1,11 @@
|
|||
<template name="logo">
|
||||
{{#if logo_url}}
|
||||
<h1 class="logo logo-image header-module">
|
||||
<a href="/">
|
||||
<img src="{{logo_url}}" alt="{{site_title}}"/>
|
||||
</a>
|
||||
</h1>
|
||||
{{else}}
|
||||
<h1 class="logo header-module"><a href="/">{{site_title}}</a></h1>
|
||||
{{/if}}
|
||||
</template>
|
8
client/views/nav/logo.js
Normal file
8
client/views/nav/logo.js
Normal file
|
@ -0,0 +1,8 @@
|
|||
Template[getTemplate('logo')].helpers({
|
||||
site_title: function(){
|
||||
return getSetting('title', "Telescope");
|
||||
},
|
||||
logo_url: function(){
|
||||
return getSetting('logoUrl');
|
||||
}
|
||||
});
|
|
@ -1,8 +0,0 @@
|
|||
<template name="menuItem">
|
||||
<li>
|
||||
<a class="dropdown-sub-level" href="{{pathFor route}}">
|
||||
<span class="menu-label">{{_ label}}</span>
|
||||
{{#if description}}<span class="menu-description">{{_ description}}</span>{{/if}}
|
||||
</a>
|
||||
</li>
|
||||
</template>
|
|
@ -1,16 +1,10 @@
|
|||
<template name="mobile_nav">
|
||||
<div class="mobile-nav">
|
||||
<div class="mobile-nav-inner">
|
||||
|
||||
<ul class="mobile-menu">
|
||||
{{#each primaryNav}}
|
||||
{{#each mobileNav}}
|
||||
<li>
|
||||
{{> UI.dynamic template=getTemplate}}
|
||||
</li>
|
||||
{{/each}}
|
||||
{{#each secondaryNav}}
|
||||
<li>
|
||||
{{> UI.dynamic template=getTemplate}}
|
||||
{{> Template.dynamic template=getTemplate data=mobileContext}}
|
||||
</li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
|
|
|
@ -1,28 +1,31 @@
|
|||
Template[getTemplate('mobile_nav')].helpers({
|
||||
primaryNav: function () {
|
||||
return primaryNav;
|
||||
mobileNav: function () {
|
||||
return _.sortBy(mobileNav, 'order');
|
||||
},
|
||||
secondaryNav: function () {
|
||||
return secondaryNav;
|
||||
logoTemplate: function () {
|
||||
return getTemplate('logo');
|
||||
},
|
||||
getTemplate: function () {
|
||||
return getTemplate(this).template;
|
||||
return getTemplate(this.template);
|
||||
},
|
||||
mobileContext: function () {
|
||||
return {mobile: true};
|
||||
}
|
||||
});
|
||||
|
||||
Template[getTemplate('mobile_nav')].events({
|
||||
'click .dropdown-sub-level': function () {
|
||||
'click .menu-sub-level': function () {
|
||||
$('body').toggleClass('mobile-nav-open');
|
||||
}
|
||||
});
|
||||
|
||||
Template[getTemplate('mobile_nav')].events({
|
||||
'click .dropdown-top-level': function (e) {
|
||||
'click .menu-top-level': function (e) {
|
||||
e.preventDefault();
|
||||
$(e.currentTarget).next().slideToggle('fast');
|
||||
},
|
||||
'click .mobile-nav a': function (e) {
|
||||
if (e.target.className.indexOf('dropdown-top-level') == -1){
|
||||
if (e.target.className.indexOf('menu-top-level') == -1){
|
||||
$('body').removeClass('mobile-nav-open');
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,39 +1,27 @@
|
|||
<template name="nav">
|
||||
<header class="header">
|
||||
<header class="header {{headerClass}}">
|
||||
|
||||
<a href="#menu" class="mobile-only mobile-menu-button button">
|
||||
<svg height="24px" id="Layer_1" style="enable-background:new 0 0 32 32;" version="1.1" viewBox="0 0 32 32" width="32px" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><path class="hamburger" d="M4,10h24c1.104,0,2-0.896,2-2s-0.896-2-2-2H4C2.896,6,2,6.896,2,8S2.896,10,4,10z M28,14H4c-1.104,0-2,0.896-2,2 s0.896,2,2,2h24c1.104,0,2-0.896,2-2S29.104,14,28,14z M28,22H4c-1.104,0-2,0.896-2,2s0.896,2,2,2h24c1.104,0,2-0.896,2-2 S29.104,22,28,22z"/></svg>
|
||||
{{{icon "menu"}}}
|
||||
</a>
|
||||
|
||||
{{#if logo_url}}
|
||||
<h1 class="logo logo-image header-module">
|
||||
<a href="/">
|
||||
<img src="{{logo_url}}" alt="{{site_title}}"/>
|
||||
</a>
|
||||
</h1>
|
||||
{{else}}
|
||||
<h1 class="logo header-module"><a href="/">{{site_title}}</a></h1>
|
||||
{{/if}}
|
||||
{{> Template.dynamic template=logoTemplate}}
|
||||
|
||||
{{#if hasPrimaryNav}}
|
||||
<ul class="nav primary-nav desktop-nav {{dropdownClass}} header-module desktop-only">
|
||||
{{#each primaryNav}}
|
||||
<li>
|
||||
{{> UI.dynamic template=getTemplate}}
|
||||
</li>
|
||||
{{#with primaryNav}}
|
||||
<div class="nav primary-nav desktop-nav header-module desktop-only">
|
||||
{{#each this}}
|
||||
{{> UI.dynamic template=getTemplate}}
|
||||
{{/each}}
|
||||
</ul>
|
||||
{{/if}}
|
||||
</div>
|
||||
{{/with}}
|
||||
|
||||
{{#if hasSecondaryNav}}
|
||||
<ul class="nav secondary-nav desktop-nav {{dropdownClass}} header-module desktop-only">
|
||||
{{#each secondaryNav}}
|
||||
<li>
|
||||
{{> UI.dynamic template=getTemplate}}
|
||||
</li>
|
||||
{{#with secondaryNav}}
|
||||
<div class="nav secondary-nav desktop-nav header-module desktop-only">
|
||||
{{#each this}}
|
||||
{{> UI.dynamic template=getTemplate}}
|
||||
{{/each}}
|
||||
</ul>
|
||||
{{/if}}
|
||||
|
||||
</div>
|
||||
{{/with}}
|
||||
|
||||
</header>
|
||||
</template>
|
||||
|
|
|
@ -1,4 +1,20 @@
|
|||
Template[getTemplate('nav')].helpers({
|
||||
headerClass: function () {
|
||||
var headerClass = "";
|
||||
var bgBrightness = tinycolor(getSetting('headerColor')).getBrightness();
|
||||
if (bgBrightness < 50) {
|
||||
headerClass += " dark-bg";
|
||||
} else if (bgBrightness < 130) {
|
||||
headerClass += " medium-dark-bg";
|
||||
} else if (bgBrightness < 220) {
|
||||
headerClass += " medium-light-bg";
|
||||
} else if (bgBrightness < 255) {
|
||||
headerClass += " light-bg";
|
||||
} else {
|
||||
headerClass += " white-bg";
|
||||
}
|
||||
return headerClass;
|
||||
},
|
||||
primaryNav: function () {
|
||||
return _.sortBy(primaryNav, 'order');
|
||||
},
|
||||
|
@ -12,16 +28,30 @@ Template[getTemplate('nav')].helpers({
|
|||
return !!secondaryNav.length;
|
||||
},
|
||||
dropdownClass: function () {
|
||||
return getThemeSetting('useDropdowns', true) ? 'has-dropdown' : 'no-dropdown';
|
||||
var dropdownClass = "";
|
||||
// only use dropdowns for top nav
|
||||
if (this.length > 3) {
|
||||
dropdownClass += "long-dropdown";
|
||||
}
|
||||
if (getSetting('navLayout', 'top-nav') == 'top-nav' && getThemeSetting('useDropdowns', true)) {
|
||||
dropdownClass += "has-dropdown";
|
||||
} else {
|
||||
dropdownClass += "no-dropdown";
|
||||
}
|
||||
return dropdownClass;
|
||||
},
|
||||
hasMoreThanThreeItems: function () {
|
||||
console.log(this)
|
||||
return this.length > 3;
|
||||
},
|
||||
logoTemplate: function () {
|
||||
return getTemplate('logo');
|
||||
},
|
||||
navZoneTemplate: function () {
|
||||
return getTemplate('navZone');
|
||||
},
|
||||
getTemplate: function () {
|
||||
return getTemplate(this.template);
|
||||
},
|
||||
site_title: function(){
|
||||
return getSetting('title', "Telescope");
|
||||
},
|
||||
logo_url: function(){
|
||||
return getSetting('logoUrl');
|
||||
}
|
||||
});
|
||||
|
||||
|
|
|
@ -1,17 +1,8 @@
|
|||
<template name="userMenu">
|
||||
{{#if isLoggedIn}}
|
||||
<div class="user-menu dropdown header-submodule">
|
||||
<a class="view dropdown-top-level" href="/">{{name}}</a>
|
||||
<div class="dropdown-menu">
|
||||
<ul role="menu" aria-labelledby="dLabel">
|
||||
<li><a href="{{profileUrl}}">{{_ "profile"}}</a></li>
|
||||
<li><a href="{{userEditUrl}}">{{_ "edit_account"}}</a></li>
|
||||
<li><a href="{{pathFor route='signOut'}}">{{_ "sign_out"}}</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
{{> menuComponent menuName="user" menuLabel=menuLabel menuItems=menuItems menuClass="header-submodule" menuMode=menuMode}}
|
||||
{{else}}
|
||||
<a class="account-link sign-in" href="{{pathFor route='atSignIn'}}">{{_ "sign_in"}}</a>
|
||||
<a class="account-link sign-up" href="{{pathFor route='atSignUp'}}">{{_ "sign_up"}}</a>
|
||||
<a class="account-link sign-in" href="{{pathFor route='atSignUp'}}">{{_ "sign_up"}}</a>
|
||||
<a class="account-link sign-up" href="{{pathFor route='atSignIn'}}">{{_ "sign_in"}}</a>
|
||||
{{/if}}
|
||||
</template>
|
||||
</template>
|
||||
|
|
|
@ -1,14 +1,17 @@
|
|||
Template[getTemplate('userMenu')].helpers({
|
||||
isLoggedIn: function () {
|
||||
return !!Meteor.user();
|
||||
},
|
||||
name: function () {
|
||||
menuLabel: function () {
|
||||
return getDisplayName(Meteor.user());
|
||||
},
|
||||
profileUrl: function () {
|
||||
return Router.path('user_profile', {_idOrSlug: Meteor.user().slug});
|
||||
menuItems: function () {
|
||||
return userMenu;
|
||||
},
|
||||
userEditUrl: function () {
|
||||
return Router.path('user_edit', {slug: Meteor.user().slug});
|
||||
menuMode: function () {
|
||||
if (!!this.mobile) {
|
||||
return 'list';
|
||||
} else if (getSetting('navLayout', 'top-nav') === 'top-nav') {
|
||||
return 'dropdown';
|
||||
} else {
|
||||
return 'accordion';
|
||||
}
|
||||
}
|
||||
});
|
||||
|
|
|
@ -1,14 +1,5 @@
|
|||
<template name="viewsMenu">
|
||||
{{#if canView}}
|
||||
<div class="dropdown header-submodule views-menu">
|
||||
<a class="view dropdown-top-level" href="/">{{_ "view"}}</a>
|
||||
<div class="dropdown-menu">
|
||||
<ul role="menu" aria-labelledby="dLabel">
|
||||
{{#each views}}
|
||||
{{> UI.dynamic template=menuItem data=this}}
|
||||
{{/each}}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
{{> menuComponent viewsMenuData}}
|
||||
{{/if}}
|
||||
</template>
|
|
@ -1,8 +1,8 @@
|
|||
Template[getTemplate('viewsMenu')].helpers({
|
||||
menuItem: function () {
|
||||
return getTemplate('menuItem');
|
||||
},
|
||||
views: function () {
|
||||
return viewsMenu;
|
||||
viewsMenuData: function () {
|
||||
return {
|
||||
dropdownName: 'view',
|
||||
dropdownItems: viewsMenu
|
||||
}
|
||||
}
|
||||
});
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<template name="postActions">
|
||||
<a class="toggle-actions-link mobile-only" href="#">
|
||||
<span class="action">…</span>
|
||||
{{{icon "more" "icon-circle"}}}
|
||||
</a>
|
||||
</template>
|
|
@ -1,13 +1,11 @@
|
|||
<template name="postAdmin">
|
||||
{{#if isAdmin}}
|
||||
<div class="post-meta-item">
|
||||
{{#if postsMustBeApproved}}
|
||||
|
|
||||
{{#if isApproved}}
|
||||
<a href="#" class="unapprove-link goto-edit">{{_ "unapprove"}}</a>
|
||||
{{else}}
|
||||
<a href="#" class="approve-link goto-edit">{{_ "approve"}}</a>
|
||||
{{/if}}
|
||||
<div class="post-meta-item" aria-live="off">
|
||||
{{#if showApprove}}
|
||||
| <a href="#" class="approve-link goto-edit">{{_ "approve"}}</a>
|
||||
{{/if}}
|
||||
{{#if showUnapprove}}
|
||||
| <a href="#" class="unapprove-link goto-edit">{{_ "unapprove"}}</a>
|
||||
{{/if}}
|
||||
| {{_ "score"}}: {{shortScore}}, {{_ "clicks"}}: {{clickCount}}, {{_ "views"}}: {{viewCount}}
|
||||
</div>
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
Template[getTemplate('postAdmin')].helpers({
|
||||
postsMustBeApproved: function () {
|
||||
return !!getSetting('requirePostsApproval');
|
||||
showApprove: function () {
|
||||
return this.status == STATUS_PENDING;
|
||||
},
|
||||
isApproved: function(){
|
||||
return this.status == STATUS_APPROVED;
|
||||
showUnapprove: function(){
|
||||
return !!getSetting('requirePostsApproval') && this.status == STATUS_APPROVED;
|
||||
},
|
||||
shortScore: function(){
|
||||
return Math.floor(this.score*1000)/1000;
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
<template name="postAuthor">
|
||||
<a class="post-author" href="{{profileUrl userId}}">{{userName userId}}</a>
|
||||
<a class="post-author" href="{{profileUrl userId}}">{{displayName userId}}</a>
|
||||
</template>
|
|
@ -1,11 +1,11 @@
|
|||
<template name="postAvatars">
|
||||
<a href="{{profileUrl userId}}" class="avatar-link avatar-small author-avatar">
|
||||
<a href="{{profileUrl userId}}" class="avatar-link avatar-small author-avatar" aria-hidden="true">
|
||||
{{> avatar userId=userId shape="circle"}}
|
||||
</a>
|
||||
{{#if commenters}}
|
||||
<div class="post-commenters">
|
||||
{{#each commenters}}
|
||||
<a href="{{profileUrl this}}" class="avatar-link avatar-small commenter-avatar">
|
||||
<a href="{{profileUrl this}}" class="avatar-link avatar-small commenter-avatar" aria-hidden="true">
|
||||
{{> avatar userId=this shape="circle"}}
|
||||
</a>
|
||||
{{/each}}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<template name="postDiscuss">
|
||||
<a class="discuss-link go-to-comments action" href="/posts/{{_id}}">
|
||||
<i class="action-icon icon-comment"></i>
|
||||
<a class="discuss-link go-to-comments action" href="/posts/{{_id}}" title="{{_ 'discuss'}}">
|
||||
{{{icon "comment"}}}
|
||||
<span class="action-count">{{commentCount}}</span>
|
||||
<span class="action-label">{{_ 'discuss'}}</span>
|
||||
<span class="sr-only"> {{_ "comments"}}</span>
|
||||
</a>
|
||||
</template>
|
|
@ -1,5 +1,5 @@
|
|||
<template name="postInfo">
|
||||
<div class="post-meta-item">
|
||||
<div class="post-meta-item" aria-live="off">
|
||||
<span class="points">{{baseScore}}</span>
|
||||
<span class="unit">{{pointsUnitDisplayText}}</span>
|
||||
{{#if postedAt}}<span class="post-time">{{timeAgo postedAt}}</span>{{/if}}
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
<template name="postRank">
|
||||
<div class="post-rank-inner"><span>{{oneBasedRank}}</span></div>
|
||||
<div class="post-rank-inner" aria-live="off"><span>{{oneBasedRank}}</span></div>
|
||||
</template>
|
|
@ -1,13 +1,13 @@
|
|||
<template name="postUpvote">
|
||||
{{#if upvoted}}
|
||||
<span class="upvote-link voted action">
|
||||
<i class="icon-check action-icon"></i>
|
||||
<span class="action-label">{{_ "upvoted"}}</span>
|
||||
<span class="upvote-link voted action" title="{{_ "upvoted"}}">
|
||||
{{{icon "voted" "icon-circle"}}}
|
||||
<span class="sr-only">{{_ "upvoted"}}</span>
|
||||
</span>
|
||||
{{else}}
|
||||
<a class="upvote-link not-voted action" href="#">
|
||||
<i class="icon-up action-icon"></i>
|
||||
<span class="action-label">{{_ "upvote_"}}</span>
|
||||
<a class="upvote-link not-voted action" href="#" title="{{_ "upvote_"}}">
|
||||
{{{icon "upvote" "icon-circle"}}}
|
||||
<span class="sr-only">{{_ "upvote_"}}</span>
|
||||
</a>
|
||||
{{/if}}
|
||||
</template>
|
|
@ -12,7 +12,7 @@ Template[getTemplate('postUpvote')].events({
|
|||
e.preventDefault();
|
||||
if(!Meteor.user()){
|
||||
Router.go('atSignIn');
|
||||
flashMessage(i18n.t("please_log_in_first"), "info");
|
||||
Messages.flash(i18n.t("please_log_in_first"), "info");
|
||||
}
|
||||
Meteor.call('upvotePost', post, function(error, result){
|
||||
trackEvent("post upvoted", {'_id': post._id});
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<template name="post_edit">
|
||||
|
||||
<div class="grid grid-module">
|
||||
{{> quickForm collection="Posts" doc=post id="editPostForm" template="telescope" label-class="control-label" input-col-class="controls" type="method" meteormethod="editPost"}}
|
||||
{{> quickForm collection="Posts" doc=post id="editPostForm" template="telescope" label-class="control-label" input-col-class="controls" type="method-update" meteormethod="editPost"}}
|
||||
</div>
|
||||
|
||||
<div class="grid grid-module">
|
||||
|
|
|
@ -2,20 +2,21 @@ AutoForm.hooks({
|
|||
editPostForm: {
|
||||
|
||||
before: {
|
||||
editPost: function(doc, template) {
|
||||
|
||||
editPost: function(modifier) {
|
||||
console.log(modifier)
|
||||
console.log(template)
|
||||
var post = doc;
|
||||
|
||||
// ------------------------------ Checks ------------------------------ //
|
||||
|
||||
if (!Meteor.user()) {
|
||||
flashMessage(i18n.t('you_must_be_logged_in'), "");
|
||||
Messages.flash(i18n.t('you_must_be_logged_in'), "");
|
||||
return false;
|
||||
}
|
||||
|
||||
// ------------------------------ Callbacks ------------------------------ //
|
||||
|
||||
// run all post edit client callbacks on post object successively
|
||||
// run all post edit client callbacks on modifier object successively
|
||||
post = postEditClientCallbacks.reduce(function(result, currentFunction) {
|
||||
return currentFunction(result);
|
||||
}, post);
|
||||
|
@ -24,15 +25,15 @@ AutoForm.hooks({
|
|||
}
|
||||
},
|
||||
|
||||
onSuccess: function(operation, post, template) {
|
||||
onSuccess: function(operation, post) {
|
||||
trackEvent("edit post", {'postId': post._id});
|
||||
Router.go('post_page', {_id: post._id});
|
||||
},
|
||||
|
||||
onError: function(operation, error, template) {
|
||||
onError: function(operation, error) {
|
||||
console.log(error)
|
||||
flashMessage(error.reason.split('|')[0], "error"); // workaround because error.details returns undefined
|
||||
clearSeenMessages();
|
||||
Messages.flash(error.reason.split('|')[0], "error"); // workaround because error.details returns undefined
|
||||
Messages.clearSeen();
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -44,17 +45,17 @@ Template[getTemplate('post_edit')].events({
|
|||
var post = this.post;
|
||||
|
||||
e.preventDefault();
|
||||
|
||||
|
||||
if(confirm("Are you sure?")){
|
||||
Router.go("/");
|
||||
Meteor.call("deletePostById", post._id, function(error) {
|
||||
if (error) {
|
||||
console.log(error);
|
||||
flashMessage(error.reason, 'error');
|
||||
Messages.flash(error.reason, 'error');
|
||||
} else {
|
||||
flashMessage(i18n.t('your_post_has_been_deleted'), 'success');
|
||||
Messages.flash(i18n.t('your_post_has_been_deleted'), 'success');
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
|
|
|
@ -1,13 +0,0 @@
|
|||
<template name="posts_list">
|
||||
<div class="posts-wrapper grid grid-module">
|
||||
{{> UI.dynamic template=postsListIncoming data=incoming}}
|
||||
<div class="posts list {{postsLayout}}">
|
||||
{{#each postsCursor}}
|
||||
{{> UI.dynamic template=before_post_item}}
|
||||
{{> UI.dynamic template=post_item}}
|
||||
{{> UI.dynamic template=after_post_item}}
|
||||
{{/each}}
|
||||
</div>
|
||||
{{> UI.dynamic template=postsLoadMore}}
|
||||
</div>
|
||||
</template>
|
|
@ -1,9 +0,0 @@
|
|||
<template name="postsListIncoming">
|
||||
{{#if count}}
|
||||
<a class="more-button show-new grid-module" href="">
|
||||
<span>
|
||||
{{_ "view"}} {{count}} {{_ "new"}} {{pluralize count "post"}}
|
||||
</span>
|
||||
</a>
|
||||
{{/if}}
|
||||
</template>
|
|
@ -1,5 +0,0 @@
|
|||
Template[getTemplate('postsListIncoming')].events({
|
||||
'click .show-new': function(e, instance) {
|
||||
Session.set('listPopulatedAt', new Date());
|
||||
}
|
||||
});
|
|
@ -1,13 +0,0 @@
|
|||
<template name="postsLoadMore">
|
||||
{{#if postsReady}}
|
||||
{{#if hasPosts}}
|
||||
{{#if hasMorePosts}}
|
||||
<a class="more-button" href="#"><span>{{_ "load_more"}}</span></a>
|
||||
{{/if}}
|
||||
{{else}}
|
||||
<div class="no-posts">{{_ "sorry_we_couldnt_find_any_posts"}}</div>
|
||||
{{/if}}
|
||||
{{else}}
|
||||
<div class="loading-module">{{> spinner}}</div>
|
||||
{{/if}}
|
||||
</template>
|
|
@ -1,21 +0,0 @@
|
|||
Template[getTemplate('postsLoadMore')].helpers({
|
||||
postsReady: function () {
|
||||
return this.postsReady;
|
||||
},
|
||||
hasPosts: function () {
|
||||
return !!this.postsCursor.count();
|
||||
}
|
||||
});
|
||||
|
||||
Template[getTemplate('postsLoadMore')].events({
|
||||
'click .more-button': function (event, instance) {
|
||||
event.preventDefault();
|
||||
if (this.controllerInstance) {
|
||||
// controller is a template
|
||||
this.loadMoreHandler(this.controllerInstance);
|
||||
} else {
|
||||
// controller is router
|
||||
this.loadMoreHandler();
|
||||
}
|
||||
}
|
||||
});
|
5
client/views/posts/post_list_top.html
Normal file
5
client/views/posts/post_list_top.html
Normal file
|
@ -0,0 +1,5 @@
|
|||
<template name="postListTop">
|
||||
{{#each postListTopModules}}
|
||||
{{> Template.dynamic template=getTemplate}}
|
||||
{{/each}}
|
||||
</template>
|
8
client/views/posts/post_list_top.js
Normal file
8
client/views/posts/post_list_top.js
Normal file
|
@ -0,0 +1,8 @@
|
|||
Template[getTemplate('postListTop')].helpers({
|
||||
postListTopModules: function () {
|
||||
return _.sortBy(postListTopModules, 'order');
|
||||
},
|
||||
getTemplate: function () {
|
||||
return getTemplate(this.template);
|
||||
}
|
||||
});
|
|
@ -2,16 +2,16 @@ AutoForm.hooks({
|
|||
submitPostForm: {
|
||||
|
||||
before: {
|
||||
submitPost: function(doc, template) {
|
||||
method: function(doc) {
|
||||
|
||||
template.$('button[type=submit]').addClass('loading');
|
||||
this.template.$('button[type=submit]').addClass('loading');
|
||||
|
||||
var post = doc;
|
||||
|
||||
// ------------------------------ Checks ------------------------------ //
|
||||
|
||||
if (!Meteor.user()) {
|
||||
flashMessage(i18n.t('you_must_be_logged_in'), 'error');
|
||||
Messages.flash(i18n.t('you_must_be_logged_in'), 'error');
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -26,19 +26,19 @@ AutoForm.hooks({
|
|||
}
|
||||
},
|
||||
|
||||
onSuccess: function(operation, post, template) {
|
||||
template.$('button[type=submit]').removeClass('loading');
|
||||
onSuccess: function(operation, post) {
|
||||
this.template.$('button[type=submit]').removeClass('loading');
|
||||
trackEvent("new post", {'postId': post._id});
|
||||
Router.go('post_page', {_id: post._id});
|
||||
if (post.status === STATUS_PENDING) {
|
||||
flashMessage(i18n.t('thanks_your_post_is_awaiting_approval'), 'success');
|
||||
Messages.flash(i18n.t('thanks_your_post_is_awaiting_approval'), 'success');
|
||||
}
|
||||
},
|
||||
|
||||
onError: function(operation, error, template) {
|
||||
template.$('button[type=submit]').removeClass('loading');
|
||||
flashMessage(error.message.split('|')[0], 'error'); // workaround because error.details returns undefined
|
||||
clearSeenMessages();
|
||||
onError: function(operation, error) {
|
||||
this.template.$('button[type=submit]').removeClass('loading');
|
||||
Messages.flash(error.message.split('|')[0], 'error'); // workaround because error.details returns undefined
|
||||
Messages.clearSeen();
|
||||
// $(e.target).removeClass('disabled');
|
||||
if (error.error == 603) {
|
||||
var dupePostId = error.reason.split('|')[1];
|
||||
|
@ -47,4 +47,4 @@ AutoForm.hooks({
|
|||
}
|
||||
|
||||
}
|
||||
});
|
||||
});
|
||||
|
|
18
client/views/posts/post_view_nav.js
Normal file
18
client/views/posts/post_view_nav.js
Normal file
|
@ -0,0 +1,18 @@
|
|||
Template[getTemplate('postViewsNav')].helpers({
|
||||
showNav: function () {
|
||||
var navElements = getSetting('postViews', _.pluck(viewsMenu, 'route'));
|
||||
var navCount = (typeof navElements === "array") ? navElements.length : _.keys(navElements).length;
|
||||
return navCount > 1;
|
||||
},
|
||||
menuItems: function () {
|
||||
var defaultViews = _.pluck(viewsMenu, 'route');
|
||||
var menuItems = _.filter(viewsMenu, function (item) {
|
||||
if (!_.contains(getSetting('postViews', defaultViews), item.route) || (item.adminOnly && !isAdmin(Meteor.user()))) {
|
||||
// don't show the item
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
});
|
||||
return menuItems;
|
||||
}
|
||||
});
|
7
client/views/posts/post_views_nav.html
Normal file
7
client/views/posts/post_views_nav.html
Normal file
|
@ -0,0 +1,7 @@
|
|||
<template name="postViewsNav">
|
||||
{{#if showNav}}
|
||||
<div class="posts-list-views grid-module">
|
||||
{{> menuComponent menuName="view" menuItems=menuItems mode="list"}}
|
||||
</div>
|
||||
{{/if}}
|
||||
</template>
|
|
@ -1,6 +1,6 @@
|
|||
<template name="userAccount">
|
||||
<div class="grid-small grid-module dialog user-edit">
|
||||
|
||||
|
||||
{{#if profileIncomplete}}
|
||||
<div>
|
||||
{{_ "please_complete_your_profile_below_before_continuing"}}
|
||||
|
@ -24,7 +24,7 @@
|
|||
<div class="control-group">
|
||||
<label>{{_ "display_name"}}</label>
|
||||
<div class="controls">
|
||||
<input name="name" type="text" value="{{profile.name}}" />
|
||||
<input name="name" type="text" value="{{profile.username}}" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
|
@ -37,6 +37,12 @@
|
|||
<label>{{_ "bio"}}</label>
|
||||
<div class="controls"><textarea name="bio" type="text">{{profile.bio}}</textarea></div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label>{{_ "city"}}</label>
|
||||
<div class="controls">
|
||||
<input name="city" type="text" value="{{profile.city}}" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label>{{_ "twitter_username"}}</label>
|
||||
<div class="controls">
|
||||
|
@ -100,4 +106,4 @@
|
|||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</template>
|
||||
</template>
|
||||
|
|
|
@ -38,18 +38,19 @@ Template[getTemplate('userAccount')].events({
|
|||
'submit #account-form': function(e){
|
||||
e.preventDefault();
|
||||
|
||||
clearSeenMessages();
|
||||
Messages.clearSeen();
|
||||
if(!Meteor.user())
|
||||
flashMessage(i18n.t('you_must_be_logged_in'), 'error');
|
||||
Messages.flash(i18n.t('you_must_be_logged_in'), 'error');
|
||||
|
||||
var $target=$(e.target);
|
||||
var name = $target.find('[name=name]').val();
|
||||
var email = $target.find('[name=email]').val();
|
||||
var user = this;
|
||||
var update = {
|
||||
"profile.name": name,
|
||||
"profile.username": name,
|
||||
"profile.slug": slugify(name),
|
||||
"profile.bio": $target.find('[name=bio]').val(),
|
||||
"profile.city": $target.find('[name=city]').val(),
|
||||
"profile.email": email,
|
||||
"profile.twitter": $target.find('[name=twitter]').val(),
|
||||
"profile.github": $target.find('[name=github]').val(),
|
||||
|
@ -67,7 +68,7 @@ Template[getTemplate('userAccount')].events({
|
|||
Accounts.changePassword(old_password, new_password, function(error){
|
||||
// TODO: interrupt update if there's an error at this point
|
||||
if(error)
|
||||
flashMessage(error.reason, "error");
|
||||
Messages.flash(error.reason, "error");
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -79,9 +80,9 @@ Template[getTemplate('userAccount')].events({
|
|||
$set: update
|
||||
}, function(error){
|
||||
if(error){
|
||||
flashMessage(error.reason, "error");
|
||||
Messages.flash(error.reason, "error");
|
||||
} else {
|
||||
flashMessage(i18n.t('profile_updated'), 'success');
|
||||
Messages.flash(i18n.t('profile_updated'), 'success');
|
||||
}
|
||||
Deps.afterFlush(function() {
|
||||
var element = $('.grid > .error');
|
||||
|
@ -89,7 +90,7 @@ Template[getTemplate('userAccount')].events({
|
|||
});
|
||||
});
|
||||
|
||||
Meteor.call('changeEmail', email);
|
||||
Meteor.call('changeEmail', user._id, email);
|
||||
|
||||
}
|
||||
|
||||
|
|
6
client/views/users/dashboard/users-dashboard.html
Normal file
6
client/views/users/dashboard/users-dashboard.html
Normal file
|
@ -0,0 +1,6 @@
|
|||
<template name="usersDashboard">
|
||||
<h2 class="users-dashboard-heading">All Users</h2>
|
||||
<div class="users-dashboard">
|
||||
{{> reactiveTable settings=settings}}
|
||||
</div>
|
||||
</template>
|
23
client/views/users/dashboard/users-dashboard.js
Normal file
23
client/views/users/dashboard/users-dashboard.js
Normal file
|
@ -0,0 +1,23 @@
|
|||
Template[getTemplate('usersDashboard')].helpers({
|
||||
settings: function() {
|
||||
return {
|
||||
collection: 'all-users',
|
||||
rowsPerPage: 20,
|
||||
showFilter: true,
|
||||
fields: [
|
||||
{ key: 'avatar', label: '', tmpl: Template.users_list_avatar, sortable: false },
|
||||
{ key: 'username', label: 'Username', tmpl: Template.users_list_username },
|
||||
{ key: 'profile.username', label: 'Display Name' },
|
||||
{ key: 'profile.email', label: 'Email', tmpl: Template.users_list_email },
|
||||
{ key: 'createdAt', label: 'Member Since', tmpl: Template.users_list_created_at, sort: 'descending' },
|
||||
{ key: 'postCount', label: 'Posts' },
|
||||
{ key: 'commentCount', label: 'Comments' },
|
||||
{ key: 'karma', label: 'Karma', fn: function(val){return Math.round(100*val)/100} },
|
||||
{ key: 'inviteCount', label: 'Invites' },
|
||||
{ key: 'isInvited', label: 'Invited', fn: function(val){return val ? 'Yes':'No'} },
|
||||
{ key: 'isAdmin', label: 'Admin', fn: function(val){return val ? 'Yes':'No'} },
|
||||
{ key: 'actions', label: 'Actions', tmpl: Template.users_list_actions, sortable: false }
|
||||
]
|
||||
};
|
||||
}
|
||||
});
|
21
client/views/users/dashboard/users_list_actions.html
Normal file
21
client/views/users/dashboard/users_list_actions.html
Normal file
|
@ -0,0 +1,21 @@
|
|||
<template name="users_list_actions">
|
||||
<ul>
|
||||
<li>
|
||||
{{#if isInvited}}
|
||||
<a class="uninvite-link" href="#">{{_ "uninvite"}}</a>
|
||||
{{else}}
|
||||
<a href="#" class="invite-link">{{_ "invite"}}</a>
|
||||
{{/if}}
|
||||
</li>
|
||||
<li>
|
||||
{{#if userIsAdmin}}
|
||||
<a class="unadmin-link" href="#">{{_ "unadmin"}}</a>
|
||||
{{else}}
|
||||
<a href="#" class="admin-link">{{_ "make_admin"}}</a>
|
||||
{{/if}}
|
||||
</li>
|
||||
<li>
|
||||
<a class="delete-link" href="#">{{_ "delete_user"}}</a>
|
||||
</li>
|
||||
</ul>
|
||||
</template>
|
36
client/views/users/dashboard/users_list_actions.js
Normal file
36
client/views/users/dashboard/users_list_actions.js
Normal file
|
@ -0,0 +1,36 @@
|
|||
Template[getTemplate('users_list_actions')].helpers({
|
||||
isInvited: function() {
|
||||
return this.isInvited;
|
||||
},
|
||||
userIsAdmin: function(){
|
||||
return isAdmin(this);
|
||||
},
|
||||
});
|
||||
|
||||
Template[getTemplate('users_list_actions')].events({
|
||||
'click .invite-link': function(e){
|
||||
e.preventDefault();
|
||||
Meteor.call('inviteUser', { userId : this._id });
|
||||
},
|
||||
'click .uninvite-link': function(e){
|
||||
e.preventDefault();
|
||||
Meteor.users.update(this._id,{
|
||||
$set:{
|
||||
isInvited: false
|
||||
}
|
||||
});
|
||||
},
|
||||
'click .admin-link': function(e){
|
||||
e.preventDefault();
|
||||
updateAdmin(this._id, true);
|
||||
},
|
||||
'click .unadmin-link': function(e){
|
||||
e.preventDefault();
|
||||
updateAdmin(this._id, false);
|
||||
},
|
||||
'click .delete-link': function(e){
|
||||
e.preventDefault();
|
||||
if(confirm(i18n.t("are_you_sure_you_want_to_delete")+getDisplayName(this)+"?"))
|
||||
Meteor.users.remove(this._id);
|
||||
}
|
||||
});
|
3
client/views/users/dashboard/users_list_avatar.html
Normal file
3
client/views/users/dashboard/users_list_avatar.html
Normal file
|
@ -0,0 +1,3 @@
|
|||
<template name="users_list_avatar">
|
||||
{{> avatar user=this shape="circle"}}
|
||||
</template>
|
4
client/views/users/dashboard/users_list_created_at.html
Normal file
4
client/views/users/dashboard/users_list_created_at.html
Normal file
|
@ -0,0 +1,4 @@
|
|||
<template name="users_list_created_at">
|
||||
<div class="date">{{formatDate createdAt 'LL'}}</div>
|
||||
<div class="time-ago">{{timeAgo createdAt}}</div>
|
||||
</template>
|
3
client/views/users/dashboard/users_list_email.html
Normal file
3
client/views/users/dashboard/users_list_email.html
Normal file
|
@ -0,0 +1,3 @@
|
|||
<template name="users_list_email">
|
||||
<a href="mailto:{{profile.email}}">{{profile.email}}</a>
|
||||
</template>
|
3
client/views/users/dashboard/users_list_username.html
Normal file
3
client/views/users/dashboard/users_list_username.html
Normal file
|
@ -0,0 +1,3 @@
|
|||
<template name="users_list_username">
|
||||
<a href="{{profileUrl this}}">{{username}}</a>
|
||||
</template>
|
|
@ -2,7 +2,7 @@
|
|||
<div class="user-profile grid grid-module">
|
||||
<table>
|
||||
<tr>
|
||||
<td colspan="2">{{> avatar user=this size="large" shape="circle"}}</td>
|
||||
<td colspan="2" aria-hidden="true">{{> avatar user=this size="large" shape="circle"}}</td>
|
||||
</tr>
|
||||
{{#if isAdmin}}
|
||||
<tr>
|
||||
|
@ -12,7 +12,7 @@
|
|||
{{/if}}
|
||||
<tr>
|
||||
<td>{{_ "name"}}</td>
|
||||
<td>{{profile.name}}</td>
|
||||
<td>{{profile.username}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{_ "member_since"}}:</td>
|
||||
|
@ -52,4 +52,4 @@
|
|||
{{/if}}
|
||||
{{/if}}
|
||||
</div>
|
||||
</template>
|
||||
</template>
|
||||
|
|
|
@ -24,6 +24,6 @@ Template[getTemplate('userInfo')].helpers({
|
|||
Template[getTemplate('userInfo')].events({
|
||||
'click .invite-link': function(e, instance){
|
||||
Meteor.call('inviteUser', instance.data.user._id);
|
||||
flashMessage('Thanks, user has been invited.', "success");
|
||||
Messages.flash('Thanks, user has been invited.', "success");
|
||||
}
|
||||
});
|
||||
|
|
|
@ -11,7 +11,7 @@ Template[getTemplate('user_email')].events({
|
|||
'submit form': function(e){
|
||||
e.preventDefault();
|
||||
if(!Meteor.user())
|
||||
flashMessage(i18n.t('you_must_be_logged_in'), 'error');
|
||||
Messages.flash(i18n.t('you_must_be_logged_in'), 'error');
|
||||
var $target=$(e.target);
|
||||
var user=Session.get('selectedUserId')? Meteor.users.findOne(Session.get('selectedUserId')) : Meteor.user();
|
||||
var update = {
|
||||
|
@ -22,14 +22,14 @@ Template[getTemplate('user_email')].events({
|
|||
|
||||
// TODO: enable change email
|
||||
var email = $target.find('[name=email]').val();
|
||||
|
||||
|
||||
Meteor.users.update(user._id, {
|
||||
$set: update
|
||||
}, function(error){
|
||||
if(error){
|
||||
flashMessage(error.reason, "error");
|
||||
Messages.flash(error.reason, "error");
|
||||
} else {
|
||||
flashMessage(i18n.t('thanks_for_signing_up'), "success");
|
||||
Messages.flash(i18n.t('thanks_for_signing_up'), "success");
|
||||
// Meteor.call('addCurrentUserToMailChimpList');
|
||||
trackEvent("new sign-up", {'userId': user._id, 'auth':'twitter'});
|
||||
Router.go('/');
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<template name="user_item">
|
||||
<tr class="user">
|
||||
<td>{{> avatar user=this shape="circle"}}</td>
|
||||
<td aria-hidden="true">{{> avatar user=this shape="circle"}}</td>
|
||||
<td>
|
||||
<a href="{{getProfileUrl}}">{{displayName}}</a>
|
||||
<br/>
|
||||
|
|
|
@ -1,48 +0,0 @@
|
|||
<template name="users">
|
||||
<div class="grid grid-module">
|
||||
<div class="user-table grid-block">
|
||||
<h2>{{_ "users"}}</h2>
|
||||
<div class="filter-sort">
|
||||
<p class="filter">
|
||||
<span>{{_ "filter_by"}}: </span>
|
||||
<a class="{{activeClass 'all'}}" href="{{filterBy 'all'}}">{{_ "all"}}</a>
|
||||
<a class="{{activeClass 'invited'}}" href="{{filterBy 'invited'}}">{{_ "invited"}}</a>
|
||||
<a class="{{activeClass 'uninvited'}}" href="{{filterBy 'uninvited'}}">{{_ "uninvited"}}</a>
|
||||
<a class="{{activeClass 'admin'}}" href="{{filterBy 'admin'}}">{{_ "admin"}}</a>
|
||||
</p>
|
||||
<p class="sort">
|
||||
<span>{{_ "sort_by"}}: </span>
|
||||
<a class="{{activeClass 'createdAt'}}" href="{{sortBy 'createdAt'}}">{{_ "created"}}</a>
|
||||
<a class="{{activeClass 'karma'}}" href="{{sortBy 'karma'}}">{{_ "karma"}}</a>
|
||||
<a class="{{activeClass 'username'}}" href="{{sortBy 'username'}}">{{_ "username"}}</a>
|
||||
<a class="{{activeClass 'postCount'}}" href="{{sortBy 'postCount'}}">{{_ "posts"}}</a>
|
||||
<a class="{{activeClass 'commentCount'}}" href="{{sortBy 'commentCount'}}">{{_ "comments_"}}</a>
|
||||
<a class="{{activeClass 'invitedCount'}}" href="{{sortBy 'invitedCount'}}">{{_ "invitedcount"}}</a>
|
||||
</p>
|
||||
</div>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<td colspan="2">{{_ "name"}}</td>
|
||||
<td>{{_ "member_since"}}</td>
|
||||
<td>{{_ "posts"}}</td>
|
||||
<td>{{_ "comments_"}}</td>
|
||||
<td>{{_ "karma"}}</td>
|
||||
<td>{{_ "invites"}}</td>
|
||||
<td>{{_ "invited"}}</td>
|
||||
<td>{{_ "admin"}}</td>
|
||||
<td>{{_ "actions"}}</td>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{{#each users}}
|
||||
{{> UI.dynamic template=user_item}}
|
||||
{{/each}}
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="grid more-button {{#if allPostsLoaded}} hidden {{/if}}">
|
||||
<a class="more-link" href="{{loadMoreUrl}}">{{_ "load_more"}}</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
|
@ -1,23 +0,0 @@
|
|||
Template[getTemplate('users')].helpers({
|
||||
user_item: function () {
|
||||
return getTemplate('user_item');
|
||||
},
|
||||
loadMoreUrl: function(){
|
||||
var count = parseInt(Session.get('usersLimit')) + 20;
|
||||
return '/all-users/' + count + '?filterBy='+this.filterBy+'&sortBy='+this.sortBy;
|
||||
},
|
||||
allPostsLoaded: function () {
|
||||
return false;
|
||||
//TODO: hide load more button when all users have been loaded
|
||||
},
|
||||
activeClass: function (link) {
|
||||
if(link == this.filterBy || link == this.sortBy)
|
||||
return "active";
|
||||
},
|
||||
sortBy: function (parameter) {
|
||||
return "?filterBy="+this.filterBy+"&sortBy="+parameter;
|
||||
},
|
||||
filterBy: function (parameter) {
|
||||
return "?filterBy="+parameter+"&sortBy="+this.sortBy;
|
||||
}
|
||||
});
|
|
@ -280,7 +280,7 @@ Meteor.methods({
|
|||
isDeleted: true
|
||||
}});
|
||||
}else{
|
||||
flashMessage("You don't have permission to delete this comment.", "error");
|
||||
Messages.flash("You don't have permission to delete this comment.", "error");
|
||||
}
|
||||
}
|
||||
});
|
||||
|
|
|
@ -16,6 +16,11 @@ var eventSchema = new SimpleSchema({
|
|||
important: { // marking an event as important means it should never be erased
|
||||
type: Boolean,
|
||||
optional: true
|
||||
},
|
||||
properties: {
|
||||
type: Object,
|
||||
optional: true,
|
||||
blackbox: true
|
||||
}
|
||||
});
|
||||
|
||||
|
|
|
@ -1,15 +0,0 @@
|
|||
if(Meteor.isClient){
|
||||
// Local (client-only) collection
|
||||
Messages = new Meteor.Collection(null);
|
||||
|
||||
flashMessage = function(message, type){
|
||||
type = (typeof type === 'undefined') ? 'error': type;
|
||||
// Store errors in the 'Messages' local collection
|
||||
Messages.insert({message:message, type:type, seen: false, show:true});
|
||||
};
|
||||
|
||||
clearSeenMessages = function(){
|
||||
Messages.update({seen:true}, {$set: {show:false}}, {multi:true});
|
||||
};
|
||||
|
||||
}
|
|
@ -285,7 +285,6 @@ Posts.before.insert(function (userId, doc) {
|
|||
Posts.before.update(function (userId, doc, fieldNames, modifier, options) {
|
||||
// if body is being modified, update htmlBody too
|
||||
if (Meteor.isServer && modifier.$set && modifier.$set.body) {
|
||||
modifier.$set = modifier.$set || {};
|
||||
modifier.$set.htmlBody = sanitize(marked(modifier.$set.body));
|
||||
}
|
||||
});
|
||||
|
@ -324,7 +323,7 @@ submitPost = function (post) {
|
|||
|
||||
// ------------------------------ Properties ------------------------------ //
|
||||
|
||||
defaultProperties = {
|
||||
var defaultProperties = {
|
||||
createdAt: new Date(),
|
||||
author: getDisplayNameById(userId),
|
||||
upvotes: 0,
|
||||
|
@ -336,12 +335,16 @@ submitPost = function (post) {
|
|||
score: 0,
|
||||
inactive: false,
|
||||
sticky: false,
|
||||
status: getDefaultPostStatus(),
|
||||
postedAt: new Date()
|
||||
status: getDefaultPostStatus()
|
||||
};
|
||||
|
||||
post = _.extend(defaultProperties, post);
|
||||
|
||||
// if post is approved but doesn't have a postedAt date, give it a default date
|
||||
// note: pending posts get their postedAt date only once theyre approved
|
||||
if (post.status == STATUS_APPROVED && !post.postedAt)
|
||||
post.postedAt = new Date();
|
||||
|
||||
// clean up post title
|
||||
post.title = cleanUp(post.title);
|
||||
|
||||
|
@ -361,9 +364,9 @@ submitPost = function (post) {
|
|||
if (Meteor.isServer) {
|
||||
Meteor.defer(function () { // use defer to avoid holding up client
|
||||
// run all post submit server callbacks on post object successively
|
||||
post = postAfterSubmitMethodCallbacks.reduce(function(result, currentFunction) {
|
||||
return currentFunction(result);
|
||||
}, post);
|
||||
postAfterSubmitMethodCallbacks.forEach(function(currentFunction) {
|
||||
currentFunction(post);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -374,7 +377,6 @@ submitPost = function (post) {
|
|||
// ----------------------------------------- Methods ----------------------------------------- //
|
||||
// ------------------------------------------------------------------------------------------- //
|
||||
|
||||
postClicks = [];
|
||||
postViews = [];
|
||||
|
||||
Meteor.methods({
|
||||
|
@ -427,13 +429,13 @@ Meteor.methods({
|
|||
// userId
|
||||
// sticky (default to false)
|
||||
|
||||
// if user is not admin, go over each schema property and clear it if it's not editable
|
||||
// if user is not admin, go over each schema property and throw an error if it's not editable
|
||||
if (!hasAdminRights) {
|
||||
_.keys(post).forEach(function (propertyName) {
|
||||
var property = postSchemaObject[propertyName];
|
||||
if (!property || !property.autoform || !property.autoform.editable) {
|
||||
console.log("// Disallowed property detected: "+propertyName+" (nice try!)");
|
||||
delete post[propertyName]
|
||||
console.log('//' + i18n.t('disallowed_property_detected') + ": " + propertyName);
|
||||
throw new Meteor.Error("disallowed_property", i18n.t('disallowed_property_detected') + ": " + propertyName);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
@ -451,9 +453,10 @@ Meteor.methods({
|
|||
return submitPost(post);
|
||||
},
|
||||
|
||||
editPost: function (post, modifier, postId) {
|
||||
editPost: function (modifier, postId) {
|
||||
|
||||
var user = Meteor.user();
|
||||
var user = Meteor.user(),
|
||||
hasAdminRights = isAdmin(user);
|
||||
|
||||
// ------------------------------ Checks ------------------------------ //
|
||||
|
||||
|
@ -461,6 +464,21 @@ Meteor.methods({
|
|||
if (!user || !can.edit(user, Posts.findOne(postId)))
|
||||
throw new Meteor.Error(601, i18n.t('sorry_you_cannot_edit_this_post'));
|
||||
|
||||
// if user is not admin, go over each schema property and throw an error if it's not editable
|
||||
if (!hasAdminRights) {
|
||||
// loop over each operation ($set, $unset, etc.)
|
||||
_.each(modifier, function (operation) {
|
||||
// loop over each property being operated on
|
||||
_.keys(operation).forEach(function (propertyName) {
|
||||
var property = postSchemaObject[propertyName];
|
||||
if (!property || !property.autoform || !property.autoform.editable) {
|
||||
console.log('//' + i18n.t('disallowed_property_detected') + ": " + propertyName);
|
||||
throw new Meteor.Error("disallowed_property", i18n.t('disallowed_property_detected') + ": " + propertyName);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
// ------------------------------ Callbacks ------------------------------ //
|
||||
|
||||
// run all post submit server callbacks on modifier successively
|
||||
|
@ -474,10 +492,14 @@ Meteor.methods({
|
|||
|
||||
// ------------------------------ Callbacks ------------------------------ //
|
||||
|
||||
// run all post submit server callbacks on modifier object successively
|
||||
modifier = postAfterEditMethodCallbacks.reduce(function(result, currentFunction) {
|
||||
return currentFunction(result);
|
||||
}, modifier);
|
||||
if (Meteor.isServer) {
|
||||
Meteor.defer(function () { // use defer to avoid holding up client
|
||||
// run all post after edit method callbacks successively
|
||||
postAfterEditMethodCallbacks.forEach(function(currentFunction) {
|
||||
currentFunction(modifier, post);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
// ------------------------------ After Update ------------------------------ //
|
||||
|
||||
|
@ -516,7 +538,7 @@ Meteor.methods({
|
|||
}
|
||||
|
||||
}else{
|
||||
flashMessage('You need to be an admin to do that.', "error");
|
||||
Messages.flash('You need to be an admin to do that.', "error");
|
||||
}
|
||||
},
|
||||
|
||||
|
@ -524,7 +546,7 @@ Meteor.methods({
|
|||
if(isAdmin(Meteor.user())){
|
||||
Posts.update(post._id, {$set: {status: 1}});
|
||||
}else{
|
||||
flashMessage('You need to be an admin to do that.', "error");
|
||||
Messages.flash('You need to be an admin to do that.', "error");
|
||||
}
|
||||
},
|
||||
|
||||
|
@ -535,20 +557,8 @@ Meteor.methods({
|
|||
var view = {_id: postId, userId: this.userId, sessionId: sessionId};
|
||||
|
||||
if(_.where(postViews, view).length == 0){
|
||||
postViews.push(view);
|
||||
Posts.update(postId, { $inc: { viewCount: 1 }});
|
||||
}
|
||||
},
|
||||
|
||||
increasePostClicks: function(postId, sessionId){
|
||||
this.unblock();
|
||||
|
||||
// only let clients increment a post's click counter once per session
|
||||
var click = {_id: postId, userId: this.userId, sessionId: sessionId};
|
||||
|
||||
if(_.where(postClicks, click).length == 0){
|
||||
postClicks.push(click);
|
||||
Posts.update(postId, { $inc: { clickCount: 1 }});
|
||||
postViews.push(view);
|
||||
Posts.update(postId, { $inc: { viewCount: 1 }});
|
||||
}
|
||||
},
|
||||
|
||||
|
|
|
@ -30,6 +30,27 @@ settingsSchemaObject = {
|
|||
instructions: 'A short description used for SEO purposes.'
|
||||
}
|
||||
},
|
||||
siteImage: {
|
||||
type: String,
|
||||
optional: true,
|
||||
regEx: SimpleSchema.RegEx.Url,
|
||||
autoform: {
|
||||
group: "general",
|
||||
instructions: "URL to an image for the open graph image tag for all pages"
|
||||
}
|
||||
},
|
||||
navLayout: {
|
||||
type: String,
|
||||
optional: true,
|
||||
autoform: {
|
||||
group: 'general',
|
||||
instructions: 'The layout used for the main menu',
|
||||
options: [
|
||||
{value: 'top-nav', label: 'Top'},
|
||||
{value: 'side-nav', label: 'Side'}
|
||||
]
|
||||
}
|
||||
},
|
||||
requireViewInvite: {
|
||||
type: Boolean,
|
||||
optional: true,
|
||||
|
@ -109,6 +130,22 @@ settingsSchemaObject = {
|
|||
]
|
||||
}
|
||||
},
|
||||
postViews: {
|
||||
type: [String],
|
||||
optional: true,
|
||||
autoform: {
|
||||
group: 'posts',
|
||||
instructions: 'Posts views showed in the views menu',
|
||||
editable: true,
|
||||
noselect: true,
|
||||
options: _.map(viewsMenu, function (item){
|
||||
return {
|
||||
value: item.route,
|
||||
label: item.label
|
||||
}
|
||||
})
|
||||
}
|
||||
},
|
||||
postInterval: {
|
||||
type: Number,
|
||||
optional: true,
|
||||
|
@ -173,6 +210,13 @@ settingsSchemaObject = {
|
|||
group: 'logo'
|
||||
}
|
||||
},
|
||||
faviconUrl: {
|
||||
type: String,
|
||||
optional: true,
|
||||
autoform: {
|
||||
group: 'logo'
|
||||
}
|
||||
},
|
||||
language: {
|
||||
type: String,
|
||||
defaultValue: 'en',
|
||||
|
@ -181,10 +225,10 @@ settingsSchemaObject = {
|
|||
group: 'general',
|
||||
instructions: 'The app\'s language. Defaults to English.',
|
||||
options: function () {
|
||||
var languages = _.map(TAPi18n.languages_available_for_project, function (item, key) {
|
||||
var languages = _.map(TAPi18n.getLanguages(), function (item, key) {
|
||||
return {
|
||||
value: key,
|
||||
label: item[0]
|
||||
label: item.name
|
||||
}
|
||||
});
|
||||
return languages
|
||||
|
@ -200,40 +244,52 @@ settingsSchemaObject = {
|
|||
rows: 5
|
||||
}
|
||||
},
|
||||
// secondaryColor: {
|
||||
// type: String,
|
||||
// optional: true
|
||||
// },
|
||||
buttonColor: {
|
||||
accentColor: {
|
||||
type: String,
|
||||
optional: true,
|
||||
autoform: {
|
||||
group: 'colors',
|
||||
// type: 'color'
|
||||
instructions: 'Used for button backgrounds.'
|
||||
}
|
||||
},
|
||||
buttonTextColor: {
|
||||
accentContrastColor: {
|
||||
type: String,
|
||||
optional: true,
|
||||
autoform: {
|
||||
group: 'colors',
|
||||
// type: 'color'
|
||||
instructions: 'Used for button text.'
|
||||
}
|
||||
},
|
||||
headerColor: {
|
||||
secondaryColor: {
|
||||
type: String,
|
||||
optional: true,
|
||||
autoform: {
|
||||
group: 'colors',
|
||||
// type: 'color'
|
||||
instructions: 'Used for the navigation background.'
|
||||
}
|
||||
},
|
||||
headerTextColor: {
|
||||
secondaryContrastColor: {
|
||||
type: String,
|
||||
optional: true,
|
||||
autoform: {
|
||||
group: 'colors',
|
||||
// type: 'color'
|
||||
instructions: 'Used for header text.'
|
||||
}
|
||||
},
|
||||
fontUrl: {
|
||||
type: String,
|
||||
optional: true,
|
||||
autoform: {
|
||||
group: 'fonts',
|
||||
instructions: '@import URL (e.g. https://fonts.googleapis.com/css?family=Source+Sans+Pro)'
|
||||
}
|
||||
},
|
||||
fontFamily: {
|
||||
type: String,
|
||||
optional: true,
|
||||
autoform: {
|
||||
group: 'fonts',
|
||||
instructions: 'font-family (e.g. "Source Sans Pro", sans-serif)'
|
||||
}
|
||||
},
|
||||
twitterAccount: {
|
||||
|
@ -309,6 +365,30 @@ settingsSchemaObject = {
|
|||
group: 'debug',
|
||||
instructions: 'Enable debug mode for more details console logs'
|
||||
}
|
||||
},
|
||||
authMethods: {
|
||||
type: [String],
|
||||
optional: true,
|
||||
autoform: {
|
||||
group: 'auth',
|
||||
editable: true,
|
||||
noselect: true,
|
||||
options: [
|
||||
{
|
||||
value: 'email',
|
||||
label: 'Email/Password'
|
||||
},
|
||||
{
|
||||
value: 'twitter',
|
||||
label: 'Twitter'
|
||||
},
|
||||
{
|
||||
value: 'facebook',
|
||||
label: 'Facebook'
|
||||
}
|
||||
],
|
||||
instructions: 'Authentication methods (default to email only)'
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
|
304
i18n/ar.i18n.json
Normal file
304
i18n/ar.i18n.json
Normal file
|
@ -0,0 +1,304 @@
|
|||
{
|
||||
//Navigation
|
||||
"view": "معاينة",
|
||||
"menu": "قائمة",
|
||||
"top": "اﻻكثر شعبية",
|
||||
"new": "جديد",
|
||||
"best": "اﻻفضل",
|
||||
"digest": "ملخص",
|
||||
"users": "مستخدمين",
|
||||
"settings": "الإعدادات",
|
||||
"admin": "المشرف",
|
||||
"post": "ارسل",
|
||||
"toolbox": "الأدوات",
|
||||
"sign_up_sign_in": "دخول/تسجيل",
|
||||
"my_account": "حسابي",
|
||||
"view_profile": "مشاهدة الملف الشخصي",
|
||||
"edit_account": "تعديل الحساب",
|
||||
"pending": "معلق",
|
||||
|
||||
//Main
|
||||
"new_posts": "مشاركات جديدة",
|
||||
|
||||
// Settings Schema
|
||||
"title": "العنوان",
|
||||
"siteUrl": "رابط الموقع",
|
||||
"tagline": "شعار",
|
||||
"requireViewInvite": "مشاهدة مقيدة",
|
||||
"requirePostInvite": "مشاركة مقيدة",
|
||||
"requirePostsApproval": "موافقة مطلوبة",
|
||||
"defaultEmail": "البريد اﻻلكتروني",
|
||||
"scoreUpdateInterval": "تحديث النتيجة",
|
||||
"defaultView": "مشهد افتراضي",
|
||||
"postInterval": "فاصل المشاركات",
|
||||
"commentInterval": "فاصل التعليقات",
|
||||
"maxPostsPerDay": "العدد اﻻقصى للمشاركات في اليوم",
|
||||
"startInvitesCount": "الدعوات منذ البريداية",
|
||||
"postsPerPage": "المشاركات في الصفحة",
|
||||
"logoUrl": "رابط الشارة",
|
||||
"logoHeight": "طول الشارة",
|
||||
"logoWidth": "عرض الشارة",
|
||||
"language": "اللغة",
|
||||
"backgroundCSS": "CSS للخلفية",
|
||||
"buttonColor": "لون اﻻزرار",
|
||||
"buttonTextColor": "لون نص اﻻزرار",
|
||||
"headerColor": "لون الجزء الرأسي",
|
||||
"headerTextColor": "لون نص الجزء الراسي",
|
||||
"twitterAccount": "حساب تويتر",
|
||||
"googleAnalyticsId": "معرف قوقل تحليﻻت",
|
||||
"mixpanelId": "ID Mixpanel",
|
||||
"clickyId": "ID Clicky",
|
||||
"footerCode": "شفرة الجزء السفلي",
|
||||
"extraCode": "شفرات زائدة",
|
||||
"emailFooter": "الجزء السفلي لﻻيميل",
|
||||
"notes": "مﻻحظات",
|
||||
"debug": "وضع المعالجة",
|
||||
"fontUrl": "رابط الخط",
|
||||
"fontFamily": "اسم الخط",
|
||||
"authMethods": "أساليب المصادقة",
|
||||
"faviconUrl": "رابط فافيكون",
|
||||
"mailURL": "رابط اﻻيميل",
|
||||
"postsLayout": "مشاركات ﻻيوت",
|
||||
|
||||
// Settings Fieldsets
|
||||
"general": "عام",
|
||||
"invites": "دعوة",
|
||||
"email": "البريد اﻻلكتروني",
|
||||
"scoring": "النتيجة",
|
||||
"posts": "مشاركات",
|
||||
"comments": "تعليقات",
|
||||
"logo": "شارة",
|
||||
"extras": "إضافات",
|
||||
"colors": "اﻻلوان",
|
||||
"integrations": "دمج",
|
||||
|
||||
// Settings Help Text
|
||||
|
||||
//Post Schema
|
||||
"createdAt": "كتب على ",
|
||||
"postedAt": "ارسل على",
|
||||
"url": "رابط",
|
||||
"title": "عنوان",
|
||||
"body": "النص",
|
||||
"htmlBody": "Texte HTML",
|
||||
"viewCount": "عدد المشاهدات",
|
||||
"commentCount": "تعليقات",
|
||||
"commenters": "معلقون",
|
||||
"lastCommentedAt": "اخر تعليق على",
|
||||
"clickCount": "عدد النقرات",
|
||||
"baseScore": "النقاط الأساسية",
|
||||
"upvotes": "تصويت مع",
|
||||
"upvoters": "الموصوتون مع",
|
||||
"downvotes": "تصويت ضد",
|
||||
"downvoters": "الموصوتون ضد",
|
||||
"score": "النتيجة",
|
||||
"status": "الوضع",
|
||||
"sticky": "Mis en Avant",
|
||||
"inactive": "غير نشط",
|
||||
"author": "كاتب",
|
||||
"userId": "مستخدم",
|
||||
"sorry_we_couldnt_find_any_posts": "ﻻ توجد اي مشاركة",
|
||||
|
||||
|
||||
//Commments
|
||||
"your_comment_has_been_deleted": "قد تم حذف تعليقك",
|
||||
"comment_": "تعليق",
|
||||
"delete_comment": "احذف التعليق",
|
||||
"add_comment": "اضف تعليق",
|
||||
"upvote": "صوت مع",
|
||||
"downvote": "صوت ضد",
|
||||
"link": "رابط",
|
||||
"edit": "تعديل",
|
||||
"reply": "رد",
|
||||
"no_comments": "ﻻ يوجد تعليق",
|
||||
"please_sign_in_to_reply": "يتوجب الدخول ﻻضافة رد",
|
||||
|
||||
|
||||
//Errors
|
||||
"you_are_already_logged_in": "انت اﻻن متصل",
|
||||
"sorry_this_is_a_private_site_please_sign_up_first": "يتوجب عليك الدخول",
|
||||
"thanks_for_signing_up": "شكرا لقيامك بالتسجيل",
|
||||
"the_site_is_currently_invite_only_but_we_will_let_you_know_as_soon_as_a_spot_opens_up": "الدخول الى الموقع يكون عن طريق الدعوة فقط. سوف نبلغك في أقرب وقت عندما يكو ن فيه مكانا متاحا.",
|
||||
"sorry_you_dont_have_the_rights_to_view_this_page": "ﻻ يمكنك رؤية هذه الصفحة",
|
||||
"not_found": "Oups",
|
||||
"were_sorry_whatever_you_were_looking_for_isnt_here": "ما تبحث عنه غير موجود هنا",
|
||||
|
||||
|
||||
//Notifications
|
||||
"no_notifications": "0 تعليقات",
|
||||
"1_notification": "1 تعليق",
|
||||
"notifications": "تعليقات",
|
||||
"mark_all_as_read": "اجعلها مقرؤة",
|
||||
|
||||
// Post deleted
|
||||
"your_post_has_been_deleted": "مشاركتك قد تم حذفها.",
|
||||
|
||||
// Post submit & edit
|
||||
"created": "استحدث",
|
||||
"title": "عنوان",
|
||||
"suggest_title": "اقترح عنوان",
|
||||
"url": "رابط",
|
||||
"short_url": "رابط قصير",
|
||||
"body": "وصف",
|
||||
"category": "مجموعة,",
|
||||
"inactive_": "غير نشط؟",
|
||||
"sticky_": "Mis en avant ?",
|
||||
"submission_date": "تاريخ اﻻرسال",
|
||||
"submission_time": "توقيت اﻻرسال",
|
||||
"date": "تاريخ",
|
||||
"submission": "ارسال",
|
||||
"note_this_post_is_still_pending_so_it_has_no_submission_timestamp_yet": "مﻻحظة:مشاركتك قيد المعاينة",
|
||||
"user": "مستخدم",
|
||||
"status_": "حاﻻت",
|
||||
"approved": "مقبول",
|
||||
"rejected": "مرفوض",
|
||||
"delete_post": "احذف المشاركة",
|
||||
"thanks_your_post_is_awaiting_approval": "شكرا, مشاركتك قيد العاينة",
|
||||
"sorry_couldnt_find_a_title": "ﻻ يمكننا ايجاد عنوان واحد",
|
||||
"please_fill_in_an_url_first": "يجب عليك كتابة الرابط",
|
||||
|
||||
// Post item
|
||||
"share": "شارك",
|
||||
"discuss": "ناقش",
|
||||
"upvote_": "صوت",
|
||||
"sticky": "Mis en avant",
|
||||
"status": "status",
|
||||
"votes": "اعدد الصوات",
|
||||
"basescore": "النتيجة المبدئية",
|
||||
"score": "النتيجة",
|
||||
"clicks": "نقرات",
|
||||
"views": "مشاهدات",
|
||||
"inactive": "غير نشط",
|
||||
"comment": "تعليق",
|
||||
"comments": "تعليقات",
|
||||
"point": "نقطة",
|
||||
"points": "نقاط",
|
||||
|
||||
//User
|
||||
"please_complete_your_profile_below_before_continuing": "شكرا لاستكمال ملفك الشخصي قبل المتابعة.",
|
||||
"account": "حساب",
|
||||
"username": "اسم المستخدم",
|
||||
"display_name": "اﻻسم الحقيقي",
|
||||
"email": "البريد اﻻلكتروني",
|
||||
"bio": "السيرة الذاتية",
|
||||
"password": "كلمة المرور",
|
||||
"change_password": "تبديل كلمة المرور",
|
||||
"old_password": "كلمة المرور القديمة",
|
||||
"new_password": "كلمة المرور الجديدة",
|
||||
"email_notifications": "إشعارات بالبريد الإلكتروني",
|
||||
"new_posts": "مشاركة جديدة",
|
||||
"comments_on_my_posts": "تعليقات على مشاركاتي",
|
||||
"replies_to_my_comments": "اجابة تعليقاتي",
|
||||
"forgot_password": "نسيت كلمة المرور؟",
|
||||
"profile_updated": "تحديث الملف الشخصي",
|
||||
"please_fill_in_your_email_below_to_finish_signing_up": "تفضل بأدخل بريدك الالكتروني لإنهاء إنشاء الحساب",
|
||||
"invite": "قم بدعوة",
|
||||
"uninvite": "الغاء الدعوة",
|
||||
"make_admin": "عين مشرف",
|
||||
"unadmin": "الغي مشرف",
|
||||
"delete_user": "احذف مستخدم",
|
||||
"are_you_sure_you_want_to_delete": "هل انت متاكد من الحذف؟ ",
|
||||
"reset_password": "اعادة كلمة المرور",
|
||||
"password_reset_link_sent": "قد تم ارسال رابط ﻻسترجاع كلمة المرور",
|
||||
"name": "اﻻسم",
|
||||
"posts": "المشاركات",
|
||||
"comments_": "التعليقات",
|
||||
"karma": "Karma",
|
||||
"is_invited": "هل هو مدعو؟",
|
||||
"is_admin": "هل هو مشرف؟",
|
||||
"delete": "حذف",
|
||||
"member_since": "عضو منذ",
|
||||
"edit_profile": "تغيير الملف الشخصي",
|
||||
"sign_in": "دخول",
|
||||
"sign_in_": "دخول",
|
||||
"sign_up_": "استحدث حساب",
|
||||
"dont_have_an_account": "ﻻ تمتلك حساب؟",
|
||||
"already_have_an_account": "تمتلك حساب؟",
|
||||
"sign_up": "استحدث حساب",
|
||||
"please_fill_in_all_fields": "يتوجب مل كل الخانات",
|
||||
"invite_": "دعوة ",
|
||||
"left": " باقي",
|
||||
"invite_none_left": "دعوات (0 متبقي)",
|
||||
"all": "الكل",
|
||||
"invited": "مدعو",
|
||||
"uninvited": "غير مدعو",
|
||||
"filter_by": "فرز ب",
|
||||
"sort_by": "ترتيب حسب",
|
||||
|
||||
//Helpers
|
||||
"sorry_you_do_not_have_access_to_this_page": "عذرا, ﻻ يمكنك الدخول لهذه الصفحة",
|
||||
"please_sign_in_first": "يتوجب عليك الدخول",
|
||||
"sorry_you_have_to_be_an_admin_to_view_this_page": "عذرا, يتوجب عليك ان تكون مشرف لرؤية هذه الصفحة",
|
||||
"sorry_you_dont_have_permissions_to_add_new_items": "ليس ليدك الصلحيات ﻻضافة مشاركات",
|
||||
"sorry_you_cannot_edit_this_post": "ﻻ سنكنك التعديل على هذه المشاركة",
|
||||
"sorry_you_cannot_edit_this_comment": "ﻻ يمكنك تعديل هذا التعليق",
|
||||
|
||||
//Collections
|
||||
"you_need_to_login_and_be_an_admin_to_add_a_new_category": "يجب أن تكون مشرف ومسجلا لإضافة مجموعة",
|
||||
"you_need_to_login_or_be_invited_to_post_new_comments": "يجب أن تكون مسجلا و مدعو لإضافة التعليقات",
|
||||
"please_wait": "Merci de patienter ",
|
||||
"seconds_before_commenting_again": " ثواني قبل نشر تعليق جديد",
|
||||
"your_comment_is_empty": "تعليقك فارغ",
|
||||
"you_dont_have_permission_to_delete_this_comment": "ليس لديك إذن لحذف هذا التعليق",
|
||||
"you_need_to_login_or_be_invited_to_post_new_stories": "يجب أن تكون مسجلا أو مدعو ﻻنشاء مشاركة جديدة",
|
||||
"please_fill_in_a_headline": "اضف عنوان من فضلك",
|
||||
"this_link_has_already_been_posted": "هذا الرابط موجود",
|
||||
"sorry_you_cannot_submit_more_than": "ﻻ يمكنك اضافة اكثر من ",
|
||||
"posts_per_day": " posts par jour",
|
||||
"someone_replied_to_your_comment_on": "احدهم قام باضافة اجابة لتعليقك حول",
|
||||
"has_replied_to_your_comment_on": " قام باضافة تعليق حول",
|
||||
"read_more": "اقر اﻻتي",
|
||||
"a_new_comment_on_your_post": "تعليق جديد حول مشاركتك",
|
||||
"you_have_a_new_comment_by": "لديك تعليق جديد من",
|
||||
"on_your_post": " حول مشاركتك",
|
||||
"has_created_a_new_post": " اضاف مشاركة جديدة",
|
||||
"your_account_has_been_approved": "قد تم قبول حسابك",
|
||||
"welcome_to": "مرحبا بك في ",
|
||||
"start_posting": "قم باضافة جديدة",
|
||||
|
||||
// Other
|
||||
"please_fill_in_a_title": "قم باضافة عنوان",
|
||||
"seconds_before_posting_again": " ثواني قبل نشر مشاركة جديدة.",
|
||||
"upvoted": "مصوت لهذه",
|
||||
"posted_date": "تاريخ التقديم",
|
||||
"posted_time": "توقيت التقديم",
|
||||
"profile": "الملف الشخصي",
|
||||
"sign_out": "خروج",
|
||||
"invitedcount": "اعضاء المدعون",
|
||||
"invites": "دعوات",
|
||||
"invited": "مدعو؟",
|
||||
"admin": "مشرف",
|
||||
"actions": "اعمال",
|
||||
"invites_left": "الدعوات الباقية",
|
||||
"id": "ID",
|
||||
"name": "اﻻسم:",
|
||||
"bio": "السيرة:",
|
||||
"github": "GitHub",
|
||||
"site": "الموقع",
|
||||
"upvoted_posts": "المشاركات المصوت لها",
|
||||
"downvoted_posts": "المشاركات المصوت ضدها",
|
||||
"mark_as_read": "إجعلها مقروءة",
|
||||
|
||||
//Common
|
||||
"pending": "في الانتظار",
|
||||
"loading": "تحميل ...",
|
||||
"submit": "ابعث",
|
||||
"you_must_be_logged_in": "يتوجب عليك الدخول",
|
||||
"are_you_sure": "هل انت متاكد؟",
|
||||
"please_log_in_first": "يتوجب عليك الدخول",
|
||||
"sign_in_sign_up_with_twitter": "تسجيل الدخول / تسجيل عبر تويتر",
|
||||
"load_more": "تحميل أكثر",
|
||||
|
||||
"most_popular_posts": "اﻻكثر شعبية اﻻن",
|
||||
"newest_posts": "أحدث المشاركات.",
|
||||
"highest_ranked_posts_ever": "اﻻفضل في كل اﻻوقات",
|
||||
|
||||
"the_profile_of": "الملف الشخصى ل",
|
||||
|
||||
"posts_awaiting_moderation": "مشاركات تنتظر المصادقة",
|
||||
"future_scheduled_posts": "المشاركات المقرر مستقبﻻ.",
|
||||
"users_dashboard": "لوحة قيادة الخاصة بالمستخدمين",
|
||||
"telescope_settings_panel": "لوحة اﻻعدادات",
|
||||
"various_utilities": "المرافق المختلفة."
|
||||
|
||||
}
|
|
@ -213,6 +213,18 @@
|
|||
"you_must_be_logged_in": "Трябва да сте влезнали в системата.",
|
||||
"are_you_sure": "Сигурни ли сте?",
|
||||
"please_log_in_first": "Моля първо влезте в системата",
|
||||
"sign_in_sign_up_with_twitter": "Влезте/Регистрирай се с Twitter",
|
||||
"load_more": "Зареди повече"
|
||||
"sign_in_sign_up_with_twitter": "Влезте/Регистрирайте се с Twitter",
|
||||
"load_more": "Зареди повече",
|
||||
|
||||
"most_popular_posts": "Най-популярни публикации в момента.",
|
||||
"newest_posts": "Най-нови публикации.",
|
||||
"highest_ranked_posts_ever": "Топ публикации за всички времена.",
|
||||
|
||||
"the_profile_of": "Профилът на",
|
||||
|
||||
"posts_awaiting_moderation": "Публикации очакващи модерация.",
|
||||
"future_scheduled_posts": "Планирани публикации.",
|
||||
"users_dashboard": "Потребителски панел.",
|
||||
"telescope_settings_panel": "Telescope настройки.",
|
||||
"various_utilities": "Други услуги."
|
||||
}
|
||||
|
|
307
i18n/el.i18n.json
Normal file
307
i18n/el.i18n.json
Normal file
|
@ -0,0 +1,307 @@
|
|||
{
|
||||
//Navigation
|
||||
"menu": "Μενού",
|
||||
"view": "Προβολή",
|
||||
"top": "Κορυφαία",
|
||||
"new": "Νέα",
|
||||
"best": "Καλύτερα",
|
||||
"digest": "Περίληψη",
|
||||
"users": "Χρήστες",
|
||||
"settings": "Ρυθμίσεις",
|
||||
"admin": "Διαχειριστής",
|
||||
"post": "Δημοσίευση",
|
||||
"toolbox": "Εργαλειοθήκη",
|
||||
"sign_up_sign_in": "Εγγραφή/Σύνδεση",
|
||||
"my_account": "Ο λογαριασμός μου",
|
||||
"view_profile": "Προβολή προφίλ",
|
||||
"edit_account": "Επεξεργασία λογαριασμού",
|
||||
|
||||
//Main
|
||||
"new_posts": "Νέες δημοσιέυσεις",
|
||||
|
||||
// Settings Schema
|
||||
"title": "Τίτλος",
|
||||
"description": "Περιγραφή",
|
||||
"siteUrl": "URL Ιστοσελίδας",
|
||||
"tagline": "Ετικέτα",
|
||||
"requireViewInvite": "Να απαιτείται πρόσκληση για προβολή",
|
||||
"requirePostInvite": "Να απαιτείται πρόσκληση για δημοσίευση",
|
||||
"requirePostsApproval": "Να απαιτείται έγκριση των δημοσιεύσεων",
|
||||
"defaultEmail": "Προεπιλεγμένο Email",
|
||||
"scoreUpdateInterval": "Χρόνος ανανέωσης Σκορ",
|
||||
"defaultView": "Προεπιλεγμένη Προβολή",
|
||||
"postInterval": "Χρόνος ανανέωσης δημοσίευσης",
|
||||
"commentInterval": "Χρόνος ανανέωσης σχολίου",
|
||||
"maxPostsPerDay": "Μέγιστες δημοσιεύσεις ανα ημέρα",
|
||||
"startInvitesCount": "Invites Start Count",
|
||||
"postsPerPage": "Δημοσιεύσεις ανα ημέρα",
|
||||
"logoUrl": "URL Λογότυπου",
|
||||
"logoHeight": "Υψος Λογότυπου",
|
||||
"logoWidth": "Πλάτος Λογότυπου",
|
||||
"language": "Γλώσσα",
|
||||
"backgroundCSS": "Background CSS",
|
||||
"buttonColor": "Χρώμα κουμπιού",
|
||||
"buttonTextColor": "Χρώμα κειμένου κουμπιού",
|
||||
"headerColor": "Χρώμα Επικεφαλίδας",
|
||||
"headerTextColor": "Χρώμα κειμένου Επικεφαλίδας",
|
||||
"twitterAccount": "Λογαριασμός Twitter",
|
||||
"googleAnalyticsId": "Google Analytics ID",
|
||||
"mixpanelId": "Mixpanel ID",
|
||||
"clickyId": "Clicky ID",
|
||||
"footerCode": "Footer Code",
|
||||
"extraCode": "Extra Code",
|
||||
"emailFooter": "Email Footer",
|
||||
"notes": "Σημειώσεις",
|
||||
"debug": "Debug Mode",
|
||||
"fontUrl": "Font URL",
|
||||
"fontFamily": "Font Family",
|
||||
"authMethods": "Authentication Methods",
|
||||
"faviconUrl": "Favicon URL",
|
||||
"mailURL": "MailURL",
|
||||
"postsLayout": "Στύλ Δημοσιεύσεων",
|
||||
|
||||
// Settings Fieldsets
|
||||
"general": "Γενικά",
|
||||
"invites": "Προσκλήσεις",
|
||||
"email": "Email",
|
||||
"scoring": "Σκορ",
|
||||
"posts": "Δημοσιέυσεις",
|
||||
"comments": "Σχόλια",
|
||||
"logo": "Λογότυπο",
|
||||
"extras": "Extras",
|
||||
"colors": "Χρώματα",
|
||||
"integrations": "Προσθήκες",
|
||||
|
||||
// Settings Help Text
|
||||
|
||||
// Post Schema
|
||||
"createdAt": "Δημιουργήθηκε στις",
|
||||
"postedAt": "Δημοσιεύθηκε στις",
|
||||
"url": "URL",
|
||||
"title": "Τίτλος",
|
||||
"body": "Κείμενο",
|
||||
"htmlBody": "HTML κείμενο",
|
||||
"viewCount": "Πλήθος προβολών",
|
||||
"commentCount": "Πλήθος σχολίων",
|
||||
"commenters": "Σχολιαστές",
|
||||
"lastCommentedAt": "Τελευταίο σχόλιο στις",
|
||||
"clickCount": "Πλήθος κλικ",
|
||||
"baseScore": "Βασικό σκορ",
|
||||
"upvotes": "Υπερψηφισμοί",
|
||||
"upvoters": "Υπερψηφιστές",
|
||||
"downvotes": "Καταψηφισμοί",
|
||||
"downvoters": "Καταψηφιστές",
|
||||
"score": "Σκορ",
|
||||
"status": "Κατάσταση",
|
||||
"sticky": "Προτεινόμενα",
|
||||
"inactive": "Ανενεργά",
|
||||
"author": "Δημιουργός",
|
||||
"userId": "Χρήστης",
|
||||
"sorry_we_couldnt_find_any_posts": "Μας συγχωρείτε, δεν βρήκαμε καμιά δημοσίευση.",
|
||||
|
||||
//Commments
|
||||
"your_comment_has_been_deleted": "Το σχόλιο σας έχει διαγραφεί.",
|
||||
"comment_": "Σχόλιο",
|
||||
"delete_comment": "Διαγραφή σχολίου",
|
||||
"add_comment": "Νέο σχόλιο",
|
||||
"upvote": "Υπερ",
|
||||
"downvote": "Κατά",
|
||||
"link": "Σύνδεσμος",
|
||||
"edit": "Επεξεργασία",
|
||||
"reply": "Απάντηση",
|
||||
"no_comments": "Κανένα σχόλιο.",
|
||||
|
||||
//Errors
|
||||
"you_are_already_logged_in": "Είστε ήδη συνδεδεμένος",
|
||||
"sorry_this_is_a_private_site_please_sign_up_first": "Μας συγχωρείτε αλλα πρέπει να εγγραφείτε για να συνεχίσετε.",
|
||||
"thanks_for_signing_up": "Ευχαριστούμε για την εγγραφή σας!",
|
||||
"the_site_is_currently_invite_only_but_we_will_let_you_know_as_soon_as_a_spot_opens_up": "Δυστυχώς χρειάζεστε πρόσκληση για να εγγραφείτε. Θα σας ειδοποιήσουμε μόλις ανοίξουν πάλι οι εγγραφές.",
|
||||
"sorry_you_dont_have_the_rights_to_view_this_page": "Δεν έχετε δικαίωμα να δείτε αυτήν την σελίδα.",
|
||||
"sorry_you_do_not_have_the_rights_to_comments": "Δεν έχετε δικαίωμα να κάνετε σχόλιο.",
|
||||
"not_found": "Δεν βρέθηκε!",
|
||||
"were_sorry_whatever_you_were_looking_for_isnt_here": "Αυτό που ψάχνετε δεν είναι εδώ!",
|
||||
"disallowed_property_detected": "Παράνομη παράμετρος!",
|
||||
|
||||
//Notifications
|
||||
"no_notifications": "Καμία ειδοποίηση",
|
||||
"1_notification": "1 ειδοποίηση",
|
||||
"notifications": "ειδοποίησεις",
|
||||
"mark_all_as_read": "Μάρκαρε τα όλα ότι τα διάβασες",
|
||||
|
||||
// Post deleted
|
||||
"your_post_has_been_deleted": "Η δημοσίευση σου έχει διαγραφεί.",
|
||||
|
||||
// Post submit & edit
|
||||
"created": "Δημιουργήθηκε",
|
||||
"title": "Τίτλος",
|
||||
"suggest_title": "Πρότεινε ενα τίτλο",
|
||||
"url": "URL",
|
||||
"short_url": "Short URL",
|
||||
"body": "Κείμενο",
|
||||
"category": "Κατηγορία",
|
||||
"inactive_": "Ανενεργό?",
|
||||
"sticky_": "Προτεινόμενο?",
|
||||
"submission_date": "Ημερομηνία Υποβολής",
|
||||
"submission_time": "Ώρα Υποβολής",
|
||||
"date": "Ημερομηνία",
|
||||
"submission": "Υποβολή",
|
||||
"note_this_post_is_still_pending_so_it_has_no_submission_timestamp_yet": "Note: this post is still pending so it has no submission timestamp yet.",
|
||||
"user": "Χρήστης",
|
||||
"status_": "Κατάσταση",
|
||||
"approved": "Εγκρίθηκε",
|
||||
"rejected": "Απορρίφθηκε",
|
||||
"delete_post": "Διαγραφή δημοσίευσης",
|
||||
"thanks_your_post_is_awaiting_approval": "Ευχαριστούμε, η δημοσίευση αναμένει εγκριση.",
|
||||
"sorry_couldnt_find_a_title": "Συγγνώμη, ο τίτλος δεν βρέθηκε ",
|
||||
"please_fill_in_an_url_first": "Παρακαλώ συμπληρώστε το URL πρώτα!",
|
||||
|
||||
// Post item
|
||||
"share": "Μοιράσου",
|
||||
"discuss": "Συζύτησε",
|
||||
"upvote_": "Μου αρέσει",
|
||||
"sticky": "Προτεινόμενο",
|
||||
"status": "κατάσταση",
|
||||
"votes": "Ψήφοι",
|
||||
"basescore": "Βασικό Σκορ",
|
||||
"score": "σκορ",
|
||||
"clicks": "κλικ",
|
||||
"views": "προβολές",
|
||||
"inactive": "ανενεργό",
|
||||
"comment": "σχόλιο",
|
||||
"comments": "σχόλια",
|
||||
"point": "πόντος",
|
||||
"points": "πόντους",
|
||||
|
||||
//User /client/views/users/account/user_account.html
|
||||
"please_complete_your_profile_below_before_continuing": "Παρακαλώ συμπληρώστε το προφίλ σας πριν συνεχισετε.",
|
||||
"account": "Λογαριασμός",
|
||||
"username": "Ονομα χρήστη",
|
||||
"display_name": "Παρατσούκλι",
|
||||
"email": "Email",
|
||||
"bio": "Βιογραφία",
|
||||
"twitter_username": "Ονομα χρήστη Twitter",
|
||||
"github_username": "Ονομα χρήστη GitHub",
|
||||
"site_url" : "URL Ιστοσελίδας",
|
||||
"password": "κωδικός",
|
||||
"change_password": "Αλλαγή κωδικού?",
|
||||
"old_password": "Παλιός κωδικός",
|
||||
"new_password": "Νέος κωδικός",
|
||||
"email_notifications": "Ειδοποιήσεις μέσω Email",
|
||||
"new_users" : "Νέοι Χρήστες",
|
||||
"new_posts": "Νέες δημοσιεύσεις",
|
||||
"comments_on_my_posts": "Σχόλια στις δημοσιέυσεις μου",
|
||||
"replies_to_my_comments": "Απαντήσεις στα σχόλια μου",
|
||||
"forgot_password": "Ξέχασες τον κωδικό σου;",
|
||||
"profile_updated": "Το προφίλ ενημερώθηκε",
|
||||
"please_fill_in_your_email_below_to_finish_signing_up": "Παρακαλώ συμπλήρωσε το email για να ολοκληρώσεις την εγγραφή σου.",
|
||||
"invite": "Προσκληση",
|
||||
"uninvite": "Διαγραφή πρόσκλησης",
|
||||
"make_admin": "Δικαίωμα διαχειριστή",
|
||||
"unadmin": "Διαγραφή δικαίωματος διαχειριστή",
|
||||
"delete_user": "Διαγραφή χρήστη",
|
||||
"are_you_sure_you_want_to_delete": "Είσαι σίγουρος για την διαγραφή",
|
||||
"reset_password": "Επαναφορά κωδικού",
|
||||
"password_reset_link_sent": "Στείλαμε σύνδεσμο επαναφοράς κωδικου στο email!",
|
||||
"name": "Όνομα",
|
||||
"posts": "Δημοσιεύσεις",
|
||||
"comments_": "Σχόλια",
|
||||
"karma": "Karma",
|
||||
"is_invited": "Έχει προσκληση?",
|
||||
"is_admin": "Είναι διαχειριστής?",
|
||||
"delete": "Διαγραφή",
|
||||
"member_since": "Μέλος από",
|
||||
"edit_profile": "Επεξεργασία Προφίλ",
|
||||
"sign_in": "Σύνδεση",
|
||||
"sign_in_": "Σύνδεση!",
|
||||
"sign_up_": "Εγγραφή!",
|
||||
"dont_have_an_account": "Δεν έχεις λογαριασμό;",
|
||||
"already_have_an_account": "Έχεις ήδη λογαριασμό;",
|
||||
"sign_up": "Εγγραφλη",
|
||||
"please_fill_in_all_fields": "Παρακαλώ συμπληρώστε τα πεδία",
|
||||
"invite_": "Πρόσκληση ",
|
||||
"left": " αριστερά",
|
||||
"invite_none_left": "Πρόσκληση (κανένας αριστερά)",
|
||||
"all": "Όλους",
|
||||
"invited": "Αυτούς που έχουν πρόσκληση",
|
||||
"uninvited": "Αυτούς που ΔΕΝ έχουν πρόσκληση",
|
||||
"filter_by": "Δείξε ",
|
||||
"sort_by": "Ταξινόμηση",
|
||||
|
||||
//helpers
|
||||
"sorry_you_do_not_have_access_to_this_page": "Συγγνώμη, δεν έχετε πρόσβαση σε αυτήν τη σελίδα",
|
||||
"please_sign_in_first": "Πρέπει να συνδεθείς πρώτα.",
|
||||
"sorry_you_have_to_be_an_admin_to_view_this_page": "Συγγνώμη, πρέπει να είσαι διαχειριστής για να δείς αυτήν τη σελίδα.",
|
||||
"sorry_you_dont_have_permissions_to_add_new_items": "Συγγνώμη, Συγγνώμη, δεν έχετε δικαίωμα να προσθέσετε νέα στοιχεία.",
|
||||
"sorry_you_cannot_edit_this_post": "Συγγνώμη, δεν μπορείς να επεξεργαστείς αυτήν την δημοσίευση.",
|
||||
"sorry_you_cannot_edit_this_comment": "Συγγνώμη, δεν μπορείς να επεξεργαστείς συτό το σχόλιο.",
|
||||
|
||||
//Collections
|
||||
"you_need_to_login_and_be_an_admin_to_add_a_new_category": "Πρέπει να συνδεθείς για να προσθέσεις νέα κατηγορία.",
|
||||
"you_need_to_login_or_be_invited_to_post_new_comments": "Πρέπει να συνδεθείς ή να έχεις πρόσκληση για να κάνεις σχόλια.",
|
||||
"please_wait": "Παρακαλώ περιμένετε ",
|
||||
"seconds_before_commenting_again": " δευτερόλεπτα πριν μπορείτε να ξανα σχολιάσετε.",
|
||||
"your_comment_is_empty": "Το σχόλιό σας είναι άδειο.",
|
||||
"you_dont_have_permission_to_delete_this_comment": "Συγγνώμη, Συγγνώμη, δεν έχετε δικαίωμα να διαγράψετε αυτό το σχόλιο.",
|
||||
"you_need_to_login_or_be_invited_to_post_new_stories": "Πρέπει να συνδεθείς ή να έχεις πρόσκληση για να δημοσιέυσεις.",
|
||||
"please_fill_in_a_headline": "Παρακαλώ συμπληρώστε την επικεφαλίδα",
|
||||
"this_link_has_already_been_posted": "Αυτός ο σύνδεσμος υπάρχει ήδη",
|
||||
"sorry_you_cannot_submit_more_than": "Δεν μπορείς να υποβάλεις περισσότερα από ",
|
||||
"posts_per_day": " σχόλια την ημέρα",
|
||||
"someone_replied_to_your_comment_on": "Κάποιος απάντησε στο σχόλιό σου",
|
||||
"has_replied_to_your_comment_on": " απάντησε στο σχόλιό σου",
|
||||
"read_more": "Διάβασε περισσότερα",
|
||||
"a_new_comment_on_your_post": "Νέο σχόλιο στη δημοσίευση σου",
|
||||
"you_have_a_new_comment_by": "Νέο σχόλιο από",
|
||||
"on_your_post": " στη δημοσίευση σου",
|
||||
"has_created_a_new_post": " έκανε μια νέα δημοσίευση",
|
||||
"your_account_has_been_approved": "Ο λογαριασμό σου έχει εγκριθεί.",
|
||||
"welcome_to": "Καλωσορίσατε στο ",
|
||||
"start_posting": "Ξεκινήστε να δημοσιεύετε.",
|
||||
|
||||
// Translation needed (found during migration to tap:i18n)
|
||||
"please_fill_in_a_title": "Παρακαλώ συμπληρώστε τον τίτλο",
|
||||
"seconds_before_posting_again": " δευτερόλεπτα πριν ξανα δημοσιεύσετε",
|
||||
"upvoted": "Υπερψηφισμένο",
|
||||
"posted_date": "Ημερομηνία δημοσίευσης",
|
||||
"posted_time": "Ωρα δημοσίευσης",
|
||||
"profile": "Προφίλ",
|
||||
"sign_out": "Αποσύνδεση",
|
||||
"you_ve_been_signed_out": "Εχετε αποσυνδεθεί!",
|
||||
"invitedcount": "Πλήθος προσκλήσεων",
|
||||
"invites": "Προσκλήσεις",
|
||||
"invited": "Προσκεκλημενος?",
|
||||
"admin": "Διαχειριστής",
|
||||
"actions": "Ενέργειες",
|
||||
"invites_left": "Προσκλήσεις που απομενουν",
|
||||
"id": "ID",
|
||||
"name": "Όνομα:",
|
||||
"bio": "Βιογραφία:",
|
||||
"github": "GitHub",
|
||||
"site": "Site",
|
||||
"upvoted_posts": "Δημοσιεύσεις που μου αρέσουν",
|
||||
"downvoted_posts": "Δημοσιεύσεις που ΔΕΝ μου αρέσουν",
|
||||
"mark_as_read": "To διάβασα",
|
||||
|
||||
//Common
|
||||
"pending": "Εκκρεμούν",
|
||||
"loading": "Περιμένετε...",
|
||||
"submit": "Υποβολή",
|
||||
"you_must_be_logged_in": "Πρέπει να συνδεθείτε.",
|
||||
"are_you_sure": "Είστε σίγουρος?",
|
||||
"please_log_in_first": "Πρέπει να συνδεθείτε πρώτα.",
|
||||
"please_log_in_to_comment": "Πρέπει να συνδεθείτε για να κάνετε σχόλιο.",
|
||||
"sign_in_sign_up_with_twitter": "Εγγραφείτε με το Twitter σας",
|
||||
"load_more": "Περισσότερα",
|
||||
|
||||
"most_popular_posts": "Οι πιο δημοφιλής δημοσιεύσεις.",
|
||||
"newest_posts": "Οι πιο καινούριες δημοσιεύσεις.",
|
||||
"highest_ranked_posts_ever": "Οι πιο υπερψηφισμένες δημοσιεύσεις.",
|
||||
|
||||
"the_profile_of": "Το προφίλ του",
|
||||
|
||||
"posts_awaiting_moderation": "Δημοσιεύσεις που αναμένουν έγγριση.",
|
||||
"future_scheduled_posts": "Μελλοντικές δημοσιεύσεις.",
|
||||
"users_dashboard": "Πίνακας Χρηστών.",
|
||||
"telescope_settings_panel": "Γενικές Ρυθμίσεις.",
|
||||
"various_utilities": "Διάφορα εργαλεία."
|
||||
}
|
|
@ -6,21 +6,25 @@
|
|||
"new": "New",
|
||||
"best": "Best",
|
||||
"digest": "Digest",
|
||||
"scheduled": "Scheduled",
|
||||
"users": "Users",
|
||||
"settings": "Settings",
|
||||
"admin": "Admin",
|
||||
"post": "Post",
|
||||
"toolbox": "Toolbox",
|
||||
"sign_up_sign_in": "Sign Up/Sign In",
|
||||
"sign_up_sign_in": "Register/Sign In",
|
||||
"my_account": "My Account",
|
||||
"view_profile": "View Profile",
|
||||
"edit_account": "Edit Account",
|
||||
|
||||
"view_your_profile": "View your profile.",
|
||||
"edit_your_profile": "Edit your profile",
|
||||
|
||||
//Main
|
||||
"new_posts": "New Posts",
|
||||
|
||||
// Settings Schema
|
||||
"title": "Title",
|
||||
"description": "Description",
|
||||
"siteUrl": "Site URL",
|
||||
"tagline": "Tagline",
|
||||
"requireViewInvite": "Require Invite to View",
|
||||
|
@ -52,25 +56,39 @@
|
|||
"emailFooter": "Email Footer",
|
||||
"notes": "Notes",
|
||||
"debug": "Debug Mode",
|
||||
|
||||
"fontUrl": "Font URL",
|
||||
"fontFamily": "Font Family",
|
||||
"authMethods": "Authentication Methods",
|
||||
"faviconUrl": "Favicon URL",
|
||||
"mailURL": "MailURL",
|
||||
"postsLayout": "Posts Layout",
|
||||
"siteImage": "Site Image",
|
||||
|
||||
// Settings Fieldsets
|
||||
"general": "General",
|
||||
"invites": "Invites",
|
||||
"email": "Email",
|
||||
"email": "Email",
|
||||
"scoring": "Scoring",
|
||||
"posts": "Posts",
|
||||
"comments": "Comments",
|
||||
"comments": "Comments",
|
||||
"logo": "Logo",
|
||||
"extras": "Extras",
|
||||
"colors": "Colors",
|
||||
"integrations": "Integrations",
|
||||
"accentColor": "Accent Color",
|
||||
"accentContrastColor": "Accent Contrast Color",
|
||||
"secondaryColor": "Secondary Color",
|
||||
"secondaryContrastColor": "Secondary Contrast Color",
|
||||
"postViews": "Post Views",
|
||||
"navLayout": "Navigation Layout",
|
||||
"mailUrl": "Mail URL",
|
||||
|
||||
// Settings Help Text
|
||||
|
||||
// Post Schema
|
||||
"createdAt": "Created At",
|
||||
"postedAt": "Posted At",
|
||||
"url": "URL",
|
||||
"url": "URL",
|
||||
"title": "Title",
|
||||
"body": "Body",
|
||||
"htmlBody": "HTML Body",
|
||||
|
@ -103,17 +121,19 @@
|
|||
"edit": "Edit",
|
||||
"reply": "Reply",
|
||||
"no_comments": "No comments.",
|
||||
"please_sign_in_to_reply": "Please sign in to reply",
|
||||
|
||||
//Errors
|
||||
"you_are_already_logged_in": "You are already logged in",
|
||||
"sorry_this_is_a_private_site_please_sign_up_first": "Sorry, this is a private site. Please sign up first.",
|
||||
"thanks_for_signing_up": "Thanks for signing up!",
|
||||
"sorry_this_is_a_private_site_please_sign_up_first": "Sorry, this is a private site. Please register first.",
|
||||
"thanks_for_signing_up": "Thanks for registering!",
|
||||
"the_site_is_currently_invite_only_but_we_will_let_you_know_as_soon_as_a_spot_opens_up": "The site is currently invite-only, but we will let you know as soon as a spot opens up.",
|
||||
"sorry_you_dont_have_the_rights_to_view_this_page": "Sorry, you don't have the rights to view this page.",
|
||||
"sorry_you_do_not_have_the_rights_to_comments": "Sorry, you do not have the rights to leave comments at this time.",
|
||||
"not_found": "Not Found!",
|
||||
"were_sorry_whatever_you_were_looking_for_isnt_here": "We're sorry; whatever you were looking for isn't here..",
|
||||
|
||||
"disallowed_property_detected": "Disallowed property detected",
|
||||
|
||||
//Notifications
|
||||
"no_notifications": "No notifications",
|
||||
"1_notification": "1 notification",
|
||||
|
@ -171,6 +191,7 @@
|
|||
"display_name": "Display Name",
|
||||
"email": "Email",
|
||||
"bio": "Bio",
|
||||
"city": "City",
|
||||
"twitter_username": "Twitter Username",
|
||||
"github_username": "GitHub Username",
|
||||
"site_url" : "Site URL",
|
||||
|
@ -185,7 +206,7 @@
|
|||
"replies_to_my_comments": "Replies to my comments",
|
||||
"forgot_password": "Forgot password?",
|
||||
"profile_updated": "Profile updated",
|
||||
"please_fill_in_your_email_below_to_finish_signing_up": "Please fill in your email below to finish signing up.",
|
||||
"please_fill_in_your_email_below_to_finish_signing_up": "Please fill in your email below to finish the registration.",
|
||||
"invite": "Invite",
|
||||
"uninvite": "Uninvite",
|
||||
"make_admin": "Make admin",
|
||||
|
@ -205,10 +226,10 @@
|
|||
"edit_profile": "Edit profile",
|
||||
"sign_in": "Sign In",
|
||||
"sign_in_": "Sign in!",
|
||||
"sign_up_": "Sign up!",
|
||||
"sign_up_": "Register!",
|
||||
"dont_have_an_account": "Don't have an account?",
|
||||
"already_have_an_account": "Already have an account?",
|
||||
"sign_up": "Sign Up",
|
||||
"sign_up": "Register",
|
||||
"please_fill_in_all_fields": "Please fill in all fields",
|
||||
"invite_": "Invite ",
|
||||
"left": " left",
|
||||
|
@ -256,8 +277,6 @@
|
|||
"upvoted": "Upvoted",
|
||||
"posted_date": "Posted Date",
|
||||
"posted_time": "Posted Time",
|
||||
"posted_date": "Posted Date",
|
||||
"posted_time": "Posted Time",
|
||||
"profile": "Profile",
|
||||
"sign_out": "Sign Out",
|
||||
"you_ve_been_signed_out": "You've been signed out. Come back soon!",
|
||||
|
@ -284,7 +303,7 @@
|
|||
"are_you_sure": "Are you sure?",
|
||||
"please_log_in_first": "Please log in first.",
|
||||
"please_log_in_to_comment": "Please log in to comment.",
|
||||
"sign_in_sign_up_with_twitter": "Sign In/Sign Up with Twitter",
|
||||
"sign_in_sign_up_with_twitter": "Register/Sign Up with Twitter",
|
||||
"load_more": "Load More",
|
||||
|
||||
"most_popular_posts": "The most popular posts right now.",
|
||||
|
@ -292,7 +311,7 @@
|
|||
"highest_ranked_posts_ever": "The all-time highest-ranked posts.",
|
||||
|
||||
"the_profile_of": "The profile of",
|
||||
|
||||
|
||||
"posts_awaiting_moderation": "Posts awaiting moderation.",
|
||||
"future_scheduled_posts": "Future scheduled posts.",
|
||||
"users_dashboard": "Users dashboard.",
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
{
|
||||
//Navigation
|
||||
"view": "Vista",
|
||||
"menu": "Menu",
|
||||
"top": "Todos",
|
||||
"view": "Explorar",
|
||||
"menu": "Menú",
|
||||
"top": "Top",
|
||||
"new": "Nuevos",
|
||||
"digest": "Resumen",
|
||||
"users": "Usuarios",
|
||||
|
@ -10,7 +10,7 @@
|
|||
"admin": "Admin",
|
||||
"post": "Post",
|
||||
"toolbox": "Herramientas",
|
||||
"sign_up_sign_in": "Connectarse/Crear una cuenta",
|
||||
"sign_up_sign_in": "Registrarse/Iniciar sesión",
|
||||
"my_account": "Mi Cuenta",
|
||||
"view_profile": "Ver perfil",
|
||||
"edit_account": "Editar cuenta",
|
||||
|
@ -21,7 +21,7 @@
|
|||
//Commments
|
||||
"your_comment_has_been_deleted": "Tu comentario ha sido borrado",
|
||||
"comment_": "Comentario",
|
||||
"delete_comment": "Borrar el comentario",
|
||||
"delete_comment": "Borrar comentario",
|
||||
"add_comment": "Añadir comentario",
|
||||
"upvote": "Voto Positivo",
|
||||
"downvote": "Voto Negativo",
|
||||
|
@ -34,10 +34,10 @@
|
|||
"you_are_already_logged_in": "Ya estás conectado",
|
||||
"sorry_this_is_a_private_site_please_sign_up_first": "Lo sentimos pero esta pagina es privada. Por favor, conéctese para verla",
|
||||
"thanks_for_signing_up": "Gracias por registrarte",
|
||||
"the_site_is_currently_invite_only_but_we_will_let_you_know_as_soon_as_a_spot_opens_up": "El sitio solo es accesible mediante invitación, pero te lo haremos saber tan pronto como abra al público.",
|
||||
"sorry_you_dont_have_the_rights_to_view_this_page": "Lo sentimos pero no tienes los derechos suficientes para ver esta pagina",
|
||||
"not_found": "No encontramos nada!",
|
||||
"were_sorry_whatever_you_were_looking_for_isnt_here": "Lo sentimos pero aqui no hay nada.. ",
|
||||
"the_site_is_currently_invite_only_but_we_will_let_you_know_as_soon_as_a_spot_opens_up": "El sitio solo es accesible mediante invitación, pero te haremos saber pronto cuando este disponible para el público.",
|
||||
"sorry_you_dont_have_the_rights_to_view_this_page": "Lo sentimos pero no tienes los permisos suficientes para ver esta pagina",
|
||||
"not_found": "¡No encontramos nada!",
|
||||
"were_sorry_whatever_you_were_looking_for_isnt_here": "Lo sentimos pero aqui no hay nada... ",
|
||||
|
||||
//Notifications
|
||||
"no_notifications": "Ninguna notificación",
|
||||
|
@ -56,8 +56,8 @@
|
|||
"short_url": "URL Corta",
|
||||
"body": "Descripción",
|
||||
"category": "Categoría",
|
||||
"inactive_": "Inactivo?",
|
||||
"sticky_": "Pegado?",
|
||||
"inactive_": "Inactivo",
|
||||
"sticky_": "Destacar",
|
||||
"submission_date": "Fecha de entrega",
|
||||
"submission_time": "Hora de entrega",
|
||||
"date": "Fecha",
|
||||
|
@ -66,17 +66,17 @@
|
|||
"user": "Usuario",
|
||||
"status_": "Estado",
|
||||
"approved": "Aprobado",
|
||||
"rejected": "Rechezado",
|
||||
"rejected": "Rechazado",
|
||||
"delete_post": "Borrar este post",
|
||||
"thanks_your_post_is_awaiting_approval": "Gracias, su post esta esperando validación.",
|
||||
"sorry_couldnt_find_a_title": "Lo sentimos, impossible de encontrar este título.",
|
||||
"please_fill_in_an_url_first": "Tienes que poner una URL.",
|
||||
"thanks_your_post_is_awaiting_approval": "Gracias, su post esta esperando aprobación.",
|
||||
"sorry_couldnt_find_a_title": "Lo sentimos, imposible de encontrar este título.",
|
||||
"please_fill_in_an_url_first": "Tienes que introducir una URL.",
|
||||
|
||||
// Post item
|
||||
"share": "Compartir",
|
||||
"discuss": "Comentar",
|
||||
"upvote_": "Votar",
|
||||
"sticky": "Pegado",
|
||||
"sticky": "Destacado",
|
||||
"status": "Estado",
|
||||
"votes": "votos",
|
||||
"basescore": "baseScore",
|
||||
|
@ -106,21 +106,21 @@
|
|||
"replies_to_my_comments": "Respuestas a mis comentarios",
|
||||
"forgot_password": "Olvidaste tu contraseña?",
|
||||
"profile_updated": "Perfil actualizado",
|
||||
"please_fill_in_your_email_below_to_finish_signing_up": "Por favor, introduzca su email para terminar de inscribirse.",
|
||||
"please_fill_in_your_email_below_to_finish_signing_up": "Por favor, introduzca su email para terminar de registrarse.",
|
||||
"invite": "Invitar",
|
||||
"uninvite": "Cancelar la invitación",
|
||||
"make_admin": "Hacer admin",
|
||||
"unadmin": "Borrar de admin",
|
||||
"delete_user": "Borrar usuario",
|
||||
"are_you_sure_you_want_to_delete": "Está seguro de que desea eliminar",
|
||||
"are_you_sure_you_want_to_delete": "¿Está seguro de que desea eliminar?",
|
||||
"reset_password": "Restablecer contraseña",
|
||||
"password_reset_link_sent": "Enlace de restablecimiento de contraseña enviado!!",
|
||||
"password_reset_link_sent": "Enlace de restablecimiento de contraseña enviado a su email.",
|
||||
"name": "Nombre",
|
||||
"posts": "Posts",
|
||||
"comments_": "Comentarios",
|
||||
"karma": "Karma",
|
||||
"is_invited": "Esta invitado?",
|
||||
"is_admin": "Es admin?",
|
||||
"is_invited": "¿Esta invitado?",
|
||||
"is_admin": "¿Es admin?",
|
||||
"delete": "Borrar",
|
||||
"member_since": "Miembro desde",
|
||||
"edit_profile": "Modificar el perfil",
|
||||
|
@ -141,10 +141,10 @@
|
|||
"sort_by": "Ordenar por",
|
||||
|
||||
//Helpers
|
||||
"sorry_you_do_not_have_access_to_this_page": "Lo sentimos, usted no tiene acceso a esta página",
|
||||
"please_sign_in_first": "Tiene que registrarse primero.",
|
||||
"sorry_you_have_to_be_an_admin_to_view_this_page": "Lo sentimos, usted tiene que ser un administrador para ver esta página.",
|
||||
"sorry_you_dont_have_permissions_to_add_new_items": "Lo sentimos, usted no tiene permisos para agregar nuevos elementos.",
|
||||
"sorry_you_do_not_have_access_to_this_page": "Lo sentimos, no tienes acceso a esta página",
|
||||
"please_sign_in_first": "Tienes que registrarte primero.",
|
||||
"sorry_you_have_to_be_an_admin_to_view_this_page": "Lo sentimos, tienes que ser un administrador para ver esta página.",
|
||||
"sorry_you_dont_have_permissions_to_add_new_items": "Lo sentimos, no tiene permisos para agregar nuevos elementos.",
|
||||
"sorry_you_cannot_edit_this_post": "Lo sentimos, no puede editar este post.",
|
||||
"sorry_you_cannot_edit_this_comment": "Lo sentimos, no puede editar este comentario.",
|
||||
|
||||
|
@ -171,37 +171,35 @@
|
|||
"start_posting": "Empezar a publicar",
|
||||
|
||||
// Translation needed (found during migration to tap:i18n)
|
||||
"please_fill_in_a_title": "Please fill in a title",
|
||||
"seconds_before_posting_again": " seconds before posting again",
|
||||
"upvoted": "Upvoted",
|
||||
"posted_date": "Posted Date",
|
||||
"posted_time": "Posted Time",
|
||||
"posted_date": "Posted Date",
|
||||
"posted_time": "Posted Time",
|
||||
"profile": "Profile",
|
||||
"sign_out": "Sign Out",
|
||||
"invitedcount": "InvitedCount",
|
||||
"invites": "Invites",
|
||||
"invited": "Invited?",
|
||||
"admin": "Admin?",
|
||||
"actions": "Actions",
|
||||
"invites_left": "invites left",
|
||||
"please_fill_in_a_title": "Por favor, agrega un título",
|
||||
"seconds_before_posting_again": "segundos antes de postear de nuevo",
|
||||
"upvoted": "Voto a favor",
|
||||
"posted_date": "Fecha de publicación",
|
||||
"posted_time": "Tiempo de publicación",
|
||||
"profile": "Perfil",
|
||||
"sign_out": "Cerrar sesión",
|
||||
"invitedcount": "Total de invitados",
|
||||
"invites": "Invitaciones",
|
||||
"invited": "¿Invitado?",
|
||||
"admin": "¿Administrador?",
|
||||
"actions": "Acciones",
|
||||
"invites_left": "Invitaciones pendientes",
|
||||
"id": "ID",
|
||||
"name": "Name:",
|
||||
"bio": "Bio:",
|
||||
"name": "Nombre:",
|
||||
"bio": "Biografía:",
|
||||
"github": "GitHub",
|
||||
"site": "Site",
|
||||
"upvoted_posts": "Upvoted Posts",
|
||||
"downvoted_posts": "Downvoted Posts",
|
||||
"mark_as_read": "Mark as read",
|
||||
"site": "Sitio",
|
||||
"upvoted_posts": "Posts votados a favor",
|
||||
"downvoted_posts": "Posts votados en contra",
|
||||
"mark_as_read": "Marcar como leído",
|
||||
|
||||
//Common
|
||||
"pending": "Pendiente",
|
||||
"loading": "Cargando...",
|
||||
"submit": "Enviar",
|
||||
"you_must_be_logged_in": "Debe estar conectado",
|
||||
"are_you_sure": "¿Está seguro? ",
|
||||
"you_must_be_logged_in": "Debes estar conectado",
|
||||
"are_you_sure": "¿Estás seguro? ",
|
||||
"please_log_in_first": "Por favor, inicia sesión",
|
||||
"sign_in_sign_up_with_twitter": "Inicia sesión/Inscribete con Twitter",
|
||||
"load_more": "Cargar más"
|
||||
"sign_in_sign_up_with_twitter": "Regístrate/Inicia sesión con Twitter",
|
||||
"load_more": "Mostrar más"
|
||||
}
|
||||
|
|
|
@ -14,48 +14,48 @@
|
|||
"sign_up_sign_in": "Connexion/Créer un compte",
|
||||
"my_account": "Mon compte",
|
||||
"view_profile": "Voir le profil",
|
||||
"edit_account": "Editer le compte",
|
||||
"edit_account": "Modifier le compte",
|
||||
|
||||
//Main
|
||||
"new_posts": "Nouveaux Posts",
|
||||
|
||||
// Settings Schema
|
||||
"title": "Titre",
|
||||
"siteUrl": "URL du Site",
|
||||
"siteUrl": "URL du site",
|
||||
"tagline": "Slogan",
|
||||
"requireViewInvite": "Consultation Restrainte",
|
||||
"requirePostInvite": "Participation Restrainte",
|
||||
"requirePostsApproval": "Modération Obligatoire",
|
||||
"defaultEmail": "Email par Défaut",
|
||||
"scoreUpdateInterval": "Mise à Jour du Score",
|
||||
"defaultView": "Vue Par Défaut",
|
||||
"postInterval": "Interval des Posts",
|
||||
"commentInterval": "Interval des Commentaires",
|
||||
"maxPostsPerDay": "Posts par Jour Max",
|
||||
"startInvitesCount": "Invitations au Départ",
|
||||
"postsPerPage": "Posts par Page",
|
||||
"logoUrl": "URL du Logo",
|
||||
"logoHeight": "Hauteur du Logo",
|
||||
"logoWidth": "Largeur du Logo",
|
||||
"language": "Language",
|
||||
"backgroundCSS": "CSS de Fond",
|
||||
"buttonColor": "Couleur des Boutons",
|
||||
"buttonTextColor": "Couleur du Texte des Boutons",
|
||||
"headerColor": "Couleur du Header",
|
||||
"headerTextColor": "Couleur du Texte du Header",
|
||||
"requireViewInvite": "Consultation restrainte",
|
||||
"requirePostInvite": "Participation restrainte",
|
||||
"requirePostsApproval": "Modération obligatoire",
|
||||
"defaultEmail": "Email par défaut",
|
||||
"scoreUpdateInterval": "Mise à jour du score",
|
||||
"defaultView": "Vue par défaut",
|
||||
"postInterval": "Interval des posts",
|
||||
"commentInterval": "Interval des commentaires",
|
||||
"maxPostsPerDay": "Max posts par jour",
|
||||
"startInvitesCount": "Invitations de départ",
|
||||
"postsPerPage": "Posts par page",
|
||||
"logoUrl": "URL du logo",
|
||||
"logoHeight": "Hauteur du logo",
|
||||
"logoWidth": "Largeur du logo",
|
||||
"language": "Langue",
|
||||
"backgroundCSS": "CSS de fond",
|
||||
"buttonColor": "Couleur des boutons",
|
||||
"buttonTextColor": "Couleur du texte des boutons",
|
||||
"headerColor": "Couleur de l'entête",
|
||||
"headerTextColor": "Couleur du texte de l'entête",
|
||||
"twitterAccount": "Compte Twitter",
|
||||
"googleAnalyticsId": "ID Google Analytics",
|
||||
"mixpanelId": "ID Mixpanel",
|
||||
"clickyId": "ID Clicky",
|
||||
"footerCode": "Code du Footer",
|
||||
"extraCode": "Code en Plus",
|
||||
"emailFooter": "Footer des Emails",
|
||||
"footerCode": "Code du pied de page",
|
||||
"extraCode": "Code en plus",
|
||||
"emailFooter": "Pied de page des mails",
|
||||
"notes": "Notes",
|
||||
|
||||
// Settings Fieldsets
|
||||
"general": "Général",
|
||||
"invites": "Invitations",
|
||||
"email": "Email",
|
||||
"email": "Adresse mail",
|
||||
"scoring": "Score",
|
||||
"posts": "Posts",
|
||||
"comments": "Commentaires",
|
||||
|
@ -67,25 +67,25 @@
|
|||
// Settings Help Text
|
||||
|
||||
//Post Schema
|
||||
"createdAt": "Créé à",
|
||||
"postedAt": "Posté à",
|
||||
"createdAt": "Créé le",
|
||||
"postedAt": "Posté le",
|
||||
"url": "Lien",
|
||||
"title": "Titre",
|
||||
"body": "Texte",
|
||||
"htmlBody": "Texte HTML",
|
||||
"viewCount": "Vues",
|
||||
"commentCount": "Commentaires",
|
||||
"commenters": "Commentateurs",
|
||||
"lastCommentedAt": "Dernier Commentaire à",
|
||||
"viewCount": "vues",
|
||||
"commentCount": "commentaires",
|
||||
"commenters": "commentateurs",
|
||||
"lastCommentedAt": "Dernier commentaire le",
|
||||
"clickCount": "Clics",
|
||||
"baseScore": "Score de Base",
|
||||
"baseScore": "Score de base",
|
||||
"upvotes": "Upvotes",
|
||||
"upvoters": "Upvoteurs",
|
||||
"downvotes": "Downvotes",
|
||||
"downvoters": "Downvoteurs",
|
||||
"score": "Score",
|
||||
"status": "Statut",
|
||||
"sticky": "Mis en Avant",
|
||||
"sticky": "Mis en exergue",
|
||||
"inactive": "Inactif",
|
||||
"author": "Auteur",
|
||||
"userId": "Utilisateur",
|
||||
|
@ -98,7 +98,7 @@
|
|||
"upvote": "upvote",
|
||||
"downvote": "downvote",
|
||||
"link": "lien",
|
||||
"edit": "Editer",
|
||||
"edit": "Modifier",
|
||||
"reply": "Répondre",
|
||||
"no_comments": "Aucun commentaire.",
|
||||
|
||||
|
@ -108,8 +108,8 @@
|
|||
"thanks_for_signing_up": "Merci pour votre inscription !",
|
||||
"the_site_is_currently_invite_only_but_we_will_let_you_know_as_soon_as_a_spot_opens_up": "L'accès au site se fait uniquement par invitation. Nous vous informerons dès qu'une place se libère.",
|
||||
"sorry_you_dont_have_the_rights_to_view_this_page": "Désolé, vous n'avez pas le droit de voir cette page.",
|
||||
"not_found": "Oups",
|
||||
"were_sorry_whatever_you_were_looking_for_isnt_here": "Désolé, mais ce que vous cherchez ne se trouve pas ici...",
|
||||
"not_found": "Oups ! La page est introuvable.",
|
||||
"were_sorry_whatever_you_were_looking_for_isnt_here": "Désolé, mais ce que vous cherchiez ne se trouve pas là...",
|
||||
|
||||
// Post deleted
|
||||
"your_post_has_been_deleted": "Votre post a été supprimé.",
|
||||
|
@ -122,15 +122,15 @@
|
|||
"short_url": "URL Courte",
|
||||
"body": "Description",
|
||||
"category": "Catégorie",
|
||||
"inactive_": "Inactif ?",
|
||||
"sticky_": "Mis en avant ?",
|
||||
"inactive_": "Inactif ? ",
|
||||
"sticky_": "Mis en exergue ? ",
|
||||
"submission_date": "Date de soumission",
|
||||
"submission_time": "Heure de soumission",
|
||||
"date": "Date",
|
||||
"submission": "Soumission",
|
||||
"note_this_post_is_still_pending_so_it_has_no_submission_timestamp_yet": "Note : ce post est en cours de validation, il n'a pas encore de timestamp.",
|
||||
"user": "Utilisateur",
|
||||
"status_": "Status",
|
||||
"status_": "Statut ",
|
||||
"approved": "Approuvé",
|
||||
"rejected": "Rejeté",
|
||||
"delete_post": "Supprimer le post",
|
||||
|
@ -142,13 +142,13 @@
|
|||
"share": "Partager",
|
||||
"discuss": "Discuter",
|
||||
"upvote_": "Voter",
|
||||
"sticky": "Mis en avant",
|
||||
"status": "status",
|
||||
"sticky": "Mis en exergue",
|
||||
"status": "statut",
|
||||
"votes": "votes",
|
||||
"basescore": "baseScore",
|
||||
"basescore": "Score de base",
|
||||
"score": "score",
|
||||
"clicks": "clics",
|
||||
"views": "views",
|
||||
"views": "vues",
|
||||
"inactive": "inactif",
|
||||
"comment": "commentaire",
|
||||
"comments": "commentaires",
|
||||
|
@ -160,14 +160,14 @@
|
|||
"account": "Compte",
|
||||
"username": "Nom d'utilisateur",
|
||||
"display_name": "Nom réel",
|
||||
"email": "Email",
|
||||
"email": "Adresse mail",
|
||||
"bio": "Bio",
|
||||
"password": "Mot de passe",
|
||||
"change_password": "Changer de mot de passe",
|
||||
"change_password": "Changer le mot de passe",
|
||||
"old_password": "Ancien mot de passe",
|
||||
"new_password": "Nouveau mot de passe",
|
||||
"email_notifications": "Notifications par email",
|
||||
"new_posts": "Nouveau Post",
|
||||
"email_notifications": "Notifications par mail",
|
||||
"new_posts": "Nouveau post",
|
||||
"comments_on_my_posts": "Commentaires sur mes posts",
|
||||
"replies_to_my_comments": "Reponses à mes commentaires",
|
||||
"forgot_password": "Mot de passe oublié ?",
|
||||
|
@ -178,7 +178,7 @@
|
|||
"make_admin": "Rendre admin",
|
||||
"unadmin": "Supprimer les droits d'admin",
|
||||
"delete_user": "Supprimer l'utilisateur",
|
||||
"are_you_sure_you_want_to_delete": "Etes-vous sur de vouloir supprimer ",
|
||||
"are_you_sure_you_want_to_delete": "Etes-vous sur de vouloir supprimer ?",
|
||||
"reset_password": "Redéfinir le mot de passe",
|
||||
"password_reset_link_sent": "Un lien pour redéfinir votre mot de passe a été envoyé !",
|
||||
"name": "Nom",
|
||||
|
@ -192,17 +192,17 @@
|
|||
"edit_profile": "Modifier le profil",
|
||||
"sign_in": "Connexion",
|
||||
"sign_in_": "Connexion",
|
||||
"sign_up_": "Créer un compte !",
|
||||
"dont_have_an_account": "Pas encore de compte ?",
|
||||
"sign_up_": "Créer un compte.",
|
||||
"dont_have_an_account": "Pas de compte ?",
|
||||
"already_have_an_account": "Déjà un compte ?",
|
||||
"sign_up": "Créer un compte",
|
||||
"please_fill_in_all_fields": "Vous devez remplir tous les champs",
|
||||
"please_fill_in_all_fields": "Vous devez remplir tous les champs.",
|
||||
"invite_": "Invitation ",
|
||||
"left": " restante",
|
||||
"invite_none_left": "Invitation (aucune restante)",
|
||||
"all": "All",
|
||||
"invited": "Invité",
|
||||
"uninvited": "Pas invité",
|
||||
"all": "Tout(e)s",
|
||||
"invited": "Invité(e)",
|
||||
"uninvited": "Pas invité(e)",
|
||||
"filter_by": "Filtrer par",
|
||||
"sort_by": "Trier par",
|
||||
|
||||
|
@ -228,7 +228,7 @@
|
|||
"posts_per_day": " posts par jour",
|
||||
"someone_replied_to_your_comment_on": "Quelqu'un à répondu à votre commentaire sur",
|
||||
"has_replied_to_your_comment_on": " a répondu à votre commentaire sur",
|
||||
"read_more": "Lire la suite",
|
||||
"read_more": "Lire la suite.",
|
||||
"a_new_comment_on_your_post": "Un nouveau commentaire sur votre post",
|
||||
"you_have_a_new_comment_by": "Vous avez un nouveau commentaire de ",
|
||||
"on_your_post": " sur votre post",
|
||||
|
@ -247,7 +247,7 @@
|
|||
"sign_out": "Déconnexion",
|
||||
"invitedcount": "Membres Invités",
|
||||
"invites": "Invitations",
|
||||
"invited": "Invité?",
|
||||
"invited": "Invité(e) ?",
|
||||
"admin": "Admin",
|
||||
"actions": "Actions",
|
||||
"invites_left": "Invitations restantes",
|
||||
|
@ -256,17 +256,17 @@
|
|||
"bio": "Bio:",
|
||||
"github": "GitHub",
|
||||
"site": "Site",
|
||||
"upvoted_posts": "Posts Upvotés",
|
||||
"downvoted_posts": "Posts Downvotés",
|
||||
"upvoted_posts": "Posts upvotés",
|
||||
"downvoted_posts": "Posts downvotés",
|
||||
"mark_as_read": "Marquer comme lu",
|
||||
|
||||
//Common
|
||||
"pending": "En attente",
|
||||
"loading": "Chargement...",
|
||||
"submit": "Envoyer",
|
||||
"you_must_be_logged_in": "Vous devez être connecté",
|
||||
"you_must_be_logged_in": "Vous devez être connecté.",
|
||||
"are_you_sure": "Etes-vous sur ?",
|
||||
"please_log_in_first": "Vous devez être connecté",
|
||||
"please_log_in_first": "Vous devez être connecté.",
|
||||
"sign_in_sign_up_with_twitter": "Connexion/Créer un compte avec Twitter",
|
||||
"load_more": "Charger plus"
|
||||
|
||||
|
|
308
i18n/nl.i18n.json
Normal file
308
i18n/nl.i18n.json
Normal file
|
@ -0,0 +1,308 @@
|
|||
{
|
||||
//Navigation
|
||||
"menu": "Menu",
|
||||
"view": "Weergave",
|
||||
"top": "Top",
|
||||
"new": "Nieuw",
|
||||
"best": "Beste",
|
||||
"digest": "Samenvatting",
|
||||
"users": "Gebruikers",
|
||||
"settings": "Instellingen",
|
||||
"admin": "Beheerder",
|
||||
"post": "Artikel",
|
||||
"toolbox": "Toolbox",
|
||||
"sign_up_sign_in": "Registreren/Login",
|
||||
"my_account": "Mijn profiel",
|
||||
"view_profile": "Profiel bekijken",
|
||||
"edit_account": "Profiel bewerken",
|
||||
|
||||
//Main
|
||||
"new_posts": "Nieuw artikel",
|
||||
|
||||
// Settings Schema
|
||||
"title": "Titel",
|
||||
"description": "Beschrijving",
|
||||
"siteUrl": "Website adres",
|
||||
"tagline": "Onderschrift",
|
||||
"requireViewInvite": "Uitnodiging verplicht om te lezen",
|
||||
"requirePostInvite": "Uitnodiging verplicht om te plaatsen",
|
||||
"requirePostsApproval": "Goedkeuring nieuwe artikel",
|
||||
"defaultEmail": "Standaard Email",
|
||||
"scoreUpdateInterval": "Score verversen interval",
|
||||
"defaultView": "Normale weergave",
|
||||
"postInterval": "Artikel interval",
|
||||
"commentInterval": "Reacties interval",
|
||||
"maxPostsPerDay": "Max. artikelen per dag",
|
||||
"startInvitesCount": "Begin aantal uitnodigingen",
|
||||
"postsPerPage": "Artikelen per pagina",
|
||||
"logoUrl": "Logo URL",
|
||||
"logoHeight": "Logo hoogte",
|
||||
"logoWidth": "Logo breedte",
|
||||
"language": "Taal",
|
||||
"backgroundCSS": "Achtergrond CSS",
|
||||
"buttonColor": "Knop kleur",
|
||||
"buttonTextColor": "Knop tekst kleur",
|
||||
"headerColor": "Kop kleur",
|
||||
"headerTextColor": "Kop tekst kleur",
|
||||
"twitterAccount": "Twitter account",
|
||||
"googleAnalyticsId": "Google Analytics ID",
|
||||
"mixpanelId": "Mixpanel ID",
|
||||
"clickyId": "Clicky ID",
|
||||
"footerCode": "Footer code",
|
||||
"extraCode": "Extra code",
|
||||
"emailFooter": "Email footer",
|
||||
"notes": "Notities",
|
||||
"debug": "Debug modus",
|
||||
"fontUrl": "Lettertype URL",
|
||||
"fontFamily": "Lettertype familie",
|
||||
"authMethods": "Authenticatie methoden",
|
||||
"faviconUrl": "Favicon URL",
|
||||
"mailURL": "Mail URL",
|
||||
"postsLayout": "Artikelen weergave",
|
||||
|
||||
// Settings Fieldsets
|
||||
"general": "Algemeen",
|
||||
"invites": "Uitnodigingen",
|
||||
"email": "Email",
|
||||
"scoring": "Score",
|
||||
"posts": "Artikelen",
|
||||
"comments": "Reacties",
|
||||
"logo": "Logo",
|
||||
"extras": "Extras",
|
||||
"colors": "Kleuren",
|
||||
"integrations": "Integraties",
|
||||
|
||||
// Settings Help Text
|
||||
|
||||
// Post Schema
|
||||
"createdAt": "Geschreven",
|
||||
"postedAt": "Ingestuurd",
|
||||
"url": "URL",
|
||||
"title": "Titel",
|
||||
"body": "Beschrijving",
|
||||
"htmlBody": "HTML Body",
|
||||
"viewCount": "Weergaven",
|
||||
"commentCount": "Reacties",
|
||||
"commenters": "Reageerders",
|
||||
"lastCommentedAt": "Laatste reactie",
|
||||
"clickCount": "Aantal klikken",
|
||||
"baseScore": "Basis score",
|
||||
"upvotes": "Omhoog stemmen",
|
||||
"upvoters": "Omhoog stemmers",
|
||||
"downvotes": "Stemmen omlaag",
|
||||
"downvoters": "Omlaag stemmers",
|
||||
"score": "Score",
|
||||
"status": "Status",
|
||||
"sticky": "Vastgezet",
|
||||
"inactive": "Inactief",
|
||||
"author": "Auteur",
|
||||
"userId": "Gebruiker",
|
||||
"sorry_we_couldnt_find_any_posts": "Sorry, geen artikelen gevonden.",
|
||||
|
||||
//Commments
|
||||
"your_comment_has_been_deleted": "Jouw reactie is verwijderd.",
|
||||
"comment_": "Reactie",
|
||||
"delete_comment": "Verwijder reactie",
|
||||
"add_comment": "Reactie toevoegen",
|
||||
"upvote": "omhoog",
|
||||
"downvote": "omlaag",
|
||||
"link": "link",
|
||||
"edit": "Bewerk",
|
||||
"reply": "Reageer",
|
||||
"no_comments": "Geen reacties.",
|
||||
"please_sign_in_to_reply": "Login om te kunnen reageren.",
|
||||
|
||||
//Errors
|
||||
"you_are_already_logged_in": "Je bent al ingelogd",
|
||||
"sorry_this_is_a_private_site_please_sign_up_first": "Sorry, dit is een privé website. Eerst registreren alstublieft.",
|
||||
"thanks_for_signing_up": "Bedankt voor het registreren!",
|
||||
"the_site_is_currently_invite_only_but_we_will_let_you_know_as_soon_as_a_spot_opens_up": "De website is op dit moment alleen op basis van uitnodiging, maar zodra er een plek vrij is hoor je het gelijk van ons.",
|
||||
"sorry_you_dont_have_the_rights_to_view_this_page": "Sorry, je hebt geen rechten om deze pagina te bekijken.",
|
||||
"sorry_you_do_not_have_the_rights_to_comments": "Sorry, op dit moment heb je rechten om te reageren.",
|
||||
"not_found": "Niet gevonden!",
|
||||
"were_sorry_whatever_you_were_looking_for_isnt_here": "Het spijt ons; we hebben niet kunnen vinden waar je naar op zoek was..",
|
||||
"disallowed_property_detected": "Verboden toegang",
|
||||
|
||||
//Notifications
|
||||
"no_notifications": "Geen berichten",
|
||||
"1_notification": "1 bericht",
|
||||
"notifications": "notificaties",
|
||||
"mark_all_as_read": "Markeer alles als gelezen",
|
||||
|
||||
// Post deleted
|
||||
"your_post_has_been_deleted": "Jouw artikel is verwijderd.",
|
||||
|
||||
// Post submit & edit
|
||||
"created": "Ingestuurd",
|
||||
"title": "Titel",
|
||||
"suggest_title": "Titel suggestie",
|
||||
"url": "URL",
|
||||
"short_url": "Korte URL",
|
||||
"body": "Beschrijving",
|
||||
"category": "Categorie",
|
||||
"inactive_": "Inactief?",
|
||||
"sticky_": "Vastgezet?",
|
||||
"submission_date": "Datum van insturen",
|
||||
"submission_time": "Tijd van insturen",
|
||||
"date": "Datum",
|
||||
"submission": "Inzending",
|
||||
"note_this_post_is_still_pending_so_it_has_no_submission_timestamp_yet": "Let op: dit bericht wacht nog op goedkeuring en heeft daardoor nog geen datum van inzending.",
|
||||
"user": "Gberuiker",
|
||||
"status_": "Status",
|
||||
"approved": "Goedgekeurd",
|
||||
"rejected": "Afgewezen",
|
||||
"delete_post": "Verwijder artikel",
|
||||
"thanks_your_post_is_awaiting_approval": "Bedankt, je bericht wacht op goedkeuring.",
|
||||
"sorry_couldnt_find_a_title": "Sorry, kon geen titel vinden..",
|
||||
"please_fill_in_an_url_first": "Vul eerst een URL in!",
|
||||
|
||||
// Post item
|
||||
"share": "Delen",
|
||||
"discuss": "Discusieer",
|
||||
"upvote_": "Omhoog",
|
||||
"sticky": "Vastgezet",
|
||||
"status": "status",
|
||||
"votes": "stemmen",
|
||||
"basescore": "basisScore",
|
||||
"score": "score",
|
||||
"clicks": "klikken",
|
||||
"views": "weergaven",
|
||||
"inactive": "inactief",
|
||||
"comment": "reactie",
|
||||
"comments": "reacties",
|
||||
"point": "punt",
|
||||
"points": "punten",
|
||||
|
||||
//User /client/views/users/account/user_account.html
|
||||
"please_complete_your_profile_below_before_continuing": "Maak eerst je profiel af alvorens verder te gaan.",
|
||||
"account": "Account",
|
||||
"username": "Gebruikersnaam",
|
||||
"display_name": "Weergave naam",
|
||||
"email": "Email",
|
||||
"bio": "Bio",
|
||||
"twitter_username": "Twitter gebruikersnaam",
|
||||
"github_username": "GitHub gebruikersnaam",
|
||||
"site_url" : "Website URL",
|
||||
"password": "Wachtwoord",
|
||||
"change_password": "Wachtwoord veranderen?",
|
||||
"old_password": "Oud wachtwoord",
|
||||
"new_password": "Nieuw wachtwoord",
|
||||
"email_notifications": "Email Notificaties",
|
||||
"new_users" : "Nieuwe gebruikers",
|
||||
"new_posts": "Nieuwe artikelen",
|
||||
"comments_on_my_posts": "Reacties op mijn artikelen",
|
||||
"replies_to_my_comments": "Antwoorden op mijn reacties",
|
||||
"forgot_password": "Wachtwoord vergeten?",
|
||||
"profile_updated": "Profiel bijgewerkt",
|
||||
"please_fill_in_your_email_below_to_finish_signing_up": "Vul je email in om de registratie af te ronden.",
|
||||
"invite": "Uitnodigen",
|
||||
"uninvite": "Uitnodiging intrekken",
|
||||
"make_admin": "Beheerder maken",
|
||||
"unadmin": "Beheer rechten ontnemen",
|
||||
"delete_user": "Gberuiker verwijderen",
|
||||
"are_you_sure_you_want_to_delete": "Verwijder ",
|
||||
"reset_password": "Reset wachtwoord",
|
||||
"password_reset_link_sent": "Wacthwoord reset link verstuurd!",
|
||||
"name": "Naam",
|
||||
"posts": "Artikelen",
|
||||
"comments_": "Reacties",
|
||||
"karma": "Karma",
|
||||
"is_invited": "Is uitgenodigd?",
|
||||
"is_admin": "Is beheerder?",
|
||||
"delete": "Verwijder",
|
||||
"member_since": "Lid sinds",
|
||||
"edit_profile": "Bewerk profiel",
|
||||
"sign_in": "Inloggen",
|
||||
"sign_in_": "Inloggen!",
|
||||
"sign_up_": "Registreren!",
|
||||
"dont_have_an_account": "Geen account?",
|
||||
"already_have_an_account": "Heb je al een account?",
|
||||
"sign_up": "Registreren",
|
||||
"please_fill_in_all_fields": "Alle velden invullen a.u.b.",
|
||||
"invite_": "Uitnodiging sturen aan ",
|
||||
"left": " resterend",
|
||||
"invite_none_left": "Invite (geen resterend)",
|
||||
"all": "Alles",
|
||||
"invited": "Uitgenodigd",
|
||||
"uninvited": "Uitnoding ongedaan gemaakt",
|
||||
"filter_by": "Filteren",
|
||||
"sort_by": "Sorteer",
|
||||
|
||||
//helpers
|
||||
"sorry_you_do_not_have_access_to_this_page": "Sorry, je hebt geen toegang tot deze pagina",
|
||||
"please_sign_in_first": "Log eerst in.",
|
||||
"sorry_you_have_to_be_an_admin_to_view_this_page": "Sorry, alleen beheerders kunnen deze pagina bekijken.",
|
||||
"sorry_you_dont_have_permissions_to_add_new_items": "Sorry, je hebt geen rechten om toe te voegen.",
|
||||
"sorry_you_cannot_edit_this_post": "Sorry, je kan dit artikel niet bewerken.",
|
||||
"sorry_you_cannot_edit_this_comment": "Sorry, je kan deze reactie niet bewerken.",
|
||||
|
||||
//Collections
|
||||
"you_need_to_login_and_be_an_admin_to_add_a_new_category": "Je moet eerst inloggen en een beheerder zijn om een categorie aan te maken.",
|
||||
"you_need_to_login_or_be_invited_to_post_new_comments": "Je moet eerst inloggen of uitgenodigd worden om een reactie te kunnen plaatsen.",
|
||||
"please_wait": "Moment geduld ",
|
||||
"seconds_before_commenting_again": " seconden voordat je opnieuw kunt reageren",
|
||||
"your_comment_is_empty": "Je reactie is leeg.",
|
||||
"you_dont_have_permission_to_delete_this_comment": "Je hebt geen rechten om deze reactie te verwijderen.",
|
||||
"you_need_to_login_or_be_invited_to_post_new_stories": "Je moet eerst inloggen of uitgenoegd worden om artikelen te kunnen plaatsen.",
|
||||
"please_fill_in_a_headline": "Vul een titel in",
|
||||
"this_link_has_already_been_posted": "Dit adres is al een keer ingestuurd.",
|
||||
"sorry_you_cannot_submit_more_than": "Sorry, je kunt niet meer dan ",
|
||||
"posts_per_day": " artikelen per dag plaatsen",
|
||||
"someone_replied_to_your_comment_on": "Iemand heeft gereageerd op ",
|
||||
"has_replied_to_your_comment_on": " heeft gereageerd op jouw reactie op ",
|
||||
"read_more": "Verder lezen",
|
||||
"a_new_comment_on_your_post": "Nieuwe reactie op je artikel",
|
||||
"you_have_a_new_comment_by": "Nieuwe reactie van ",
|
||||
"on_your_post": " op jouw artikel",
|
||||
"has_created_a_new_post": " heeft een nieuw artikel geplaatst",
|
||||
"your_account_has_been_approved": "Jouw account is goedgekeurd.",
|
||||
"welcome_to": "Welkom bij ",
|
||||
"start_posting": "Begin met plaatsen.",
|
||||
|
||||
// Translation needed (found during migration to tap:i18n)
|
||||
"please_fill_in_a_title": "Vul een titel in",
|
||||
"seconds_before_posting_again": " voor het opnieuw kunnen plaatsen.",
|
||||
"upvoted": "Omhoog gestemd",
|
||||
"posted_date": "Datum plaatsing",
|
||||
"posted_time": "Tijd plaatsing",
|
||||
"profile": "Profiel",
|
||||
"sign_out": "Uitloggen",
|
||||
"you_ve_been_signed_out": "Je bent uitgelogd. Tot snel!",
|
||||
"invitedcount": "Aantal uitgenodigd",
|
||||
"invites": "Uitnodigingen",
|
||||
"invited": "Uitgenodigd?",
|
||||
"admin": "Beheerder",
|
||||
"actions": "Acties",
|
||||
"invites_left": "uitnodigingen over",
|
||||
"id": "ID",
|
||||
"name": "Naam:",
|
||||
"bio": "Bio:",
|
||||
"github": "GitHub",
|
||||
"site": "Website",
|
||||
"upvoted_posts": "Omhoog gestemd",
|
||||
"downvoted_posts": "Omlaag gestemd",
|
||||
"mark_as_read": "Markeer als gelezen",
|
||||
|
||||
//Common
|
||||
"pending": "In behandeling",
|
||||
"loading": "Laden...",
|
||||
"submit": "Verzenden",
|
||||
"you_must_be_logged_in": "Je moet ingelogd zijn.",
|
||||
"are_you_sure": "Zeker weten?",
|
||||
"please_log_in_first": "Log eerst in.",
|
||||
"please_log_in_to_comment": "Log eerst in om een reactie te kunnen plaatsen.",
|
||||
"sign_in_sign_up_with_twitter": "Registreer/Registreer met Twitter",
|
||||
"load_more": "Meer laden",
|
||||
|
||||
"most_popular_posts": "De meest populaire artikelen.",
|
||||
"newest_posts": "De nieuwste artikelen.",
|
||||
"highest_ranked_posts_ever": "Artikelen met de meeste stemmen.",
|
||||
|
||||
"the_profile_of": "Profiel van",
|
||||
|
||||
"posts_awaiting_moderation": "Artikelen die op goedkeuring wachten.",
|
||||
"future_scheduled_posts": "Ingeplande artikelen.",
|
||||
"users_dashboard": "Gebruikers dashboard.",
|
||||
"telescope_settings_panel": "Telescope intellingen pagina.",
|
||||
"various_utilities": "Verschillende voorzieningen."
|
||||
}
|
302
i18n/pl.i18n.json
Normal file
302
i18n/pl.i18n.json
Normal file
|
@ -0,0 +1,302 @@
|
|||
{
|
||||
//Navigation
|
||||
"menu": "Menu",
|
||||
"view": "Widok",
|
||||
"top": "Na topie",
|
||||
"new": "Najnowsze",
|
||||
"best": "Najlepsze",
|
||||
"digest": "Dzisiaj",
|
||||
"users": "Użytkownicy",
|
||||
"settings": "Ustawienia",
|
||||
"admin": "Admin",
|
||||
"post": "Nowy temat",
|
||||
"toolbox": "Narzędzia",
|
||||
"sign_up_sign_in": "Zarejestruj/Zaloguj",
|
||||
"my_account": "Moje konto",
|
||||
"view_profile": "Profil",
|
||||
"edit_account": "Edytuj konto",
|
||||
|
||||
//Main
|
||||
"new_posts": "Nowe Posty",
|
||||
|
||||
// Settings Schema
|
||||
"title": "Tytuł",
|
||||
"siteUrl": "URL strony",
|
||||
"tagline": "Podtytuł",
|
||||
"requireViewInvite": "Wymagaj zaproszenia żeby przeglądać",
|
||||
"requirePostInvite": "Wymagaj zaproszenia żeby pisać",
|
||||
"requirePostsApproval": "Zatwierdzanie nowych postów",
|
||||
"defaultEmail": "Standardowy Email",
|
||||
"scoreUpdateInterval": "Częstotliwość przeliczania punktów",
|
||||
"defaultView": "Standardowy widok",
|
||||
"postInterval": "Interwał czasowy dla nowych postów",
|
||||
"commentInterval": "Interwał czasowy dla nowych komentarzy",
|
||||
"maxPostsPerDay": "Maksymalna liczba postów w jednym dniu",
|
||||
"startInvitesCount": "Licznik zaproszeń",
|
||||
"postsPerPage": "Postów na stronę",
|
||||
"logoUrl": "URL Logo",
|
||||
"logoHeight": "Wysokość Logo",
|
||||
"logoWidth": "Szerokość Logo",
|
||||
"language": "Język",
|
||||
"backgroundCSS": "Tło CSS",
|
||||
"buttonColor": "Kolor przycisków",
|
||||
"buttonTextColor": "Kolor tekstu na przyciskach",
|
||||
"headerColor": "Kolor dla nagłówka",
|
||||
"headerTextColor": "Kolor tekstu dla nagłówka",
|
||||
"twitterAccount": "Konto Twitter",
|
||||
"googleAnalyticsId": "Google Analytics ID",
|
||||
"mixpanelId": "Mixpanel ID",
|
||||
"clickyId": "Clicky ID",
|
||||
"footerCode": "Kod w stopce",
|
||||
"extraCode": "Dodatkowy kod",
|
||||
"emailFooter": "Stopka Email",
|
||||
"notes": "Notatki",
|
||||
"debug": "Debug Mode",
|
||||
|
||||
// Settings Fieldsets
|
||||
"general": "Główne",
|
||||
"invites": "Zaproszenia",
|
||||
"email": "Email",
|
||||
"scoring": "Scoring",
|
||||
"posts": "Posty",
|
||||
"comments": "Comments",
|
||||
"logo": "Logo",
|
||||
"extras": "Extras",
|
||||
"colors": "Kolory",
|
||||
"integrations": "Integracje",
|
||||
|
||||
// Settings Help Text
|
||||
|
||||
// Post Schema
|
||||
"createdAt": "Utworzony",
|
||||
"postedAt": "Dodany",
|
||||
"url": "URL",
|
||||
"title": "Tytuł",
|
||||
"body": "Treść",
|
||||
"htmlBody": "Treść HTML",
|
||||
"viewCount": "Liczba odświeżeń",
|
||||
"commentCount": "Liczba komentarzy",
|
||||
"commenters": "Komentujący",
|
||||
"lastCommentedAt": "Ostatnio komentował",
|
||||
"clickCount": "Liczba kliknięć",
|
||||
"baseScore": "Bazowy wynik",
|
||||
"upvotes": "Pozytywne",
|
||||
"upvoters": "Głosujący pozytywnie",
|
||||
"downvotes": "Negatywne",
|
||||
"downvoters": "Głosujący negatywnie",
|
||||
"score": "Wynik",
|
||||
"status": "Status",
|
||||
"sticky": "Przyklejony",
|
||||
"inactive": "Nieaktywny",
|
||||
"author": "Autor",
|
||||
"userId": "Użytkownik",
|
||||
"sorry_we_couldnt_find_any_posts": "Przepraszamy, ale w tej chwili nie ma tutaj żadnych postów.",
|
||||
|
||||
//Commments
|
||||
"your_comment_has_been_deleted": "Twój komentarz został usunięty.",
|
||||
"comment_": "Komentuj",
|
||||
"delete_comment": "Usuń komentarz",
|
||||
"add_comment": "Dodaj komentarz",
|
||||
"upvote": "plus",
|
||||
"downvote": "minus",
|
||||
"link": "link",
|
||||
"edit": "Edytuj",
|
||||
"reply": "Odpowiedz",
|
||||
"no_comments": "Brak komentarzy.",
|
||||
|
||||
//Errors
|
||||
"you_are_already_logged_in": "Jesteś już zalogowany",
|
||||
"sorry_this_is_a_private_site_please_sign_up_first": "Musisz się najpierw zarejestrować.",
|
||||
"thanks_for_signing_up": "Dzięki za rejestrację!",
|
||||
"the_site_is_currently_invite_only_but_we_will_let_you_know_as_soon_as_a_spot_opens_up": "Tą stronę mogą oglądać jedynie zaproszone osoby",
|
||||
"sorry_you_dont_have_the_rights_to_view_this_page": "Niestety nie masz odpowiednich praw dostępu żeby widzieć tą stronę.",
|
||||
"sorry_you_do_not_have_the_rights_to_comments": "Niestety nie masz odpowiednich praw dostępu żeby móc dodawać komentarze.",
|
||||
"not_found": "Nie znaleziono!",
|
||||
"were_sorry_whatever_you_were_looking_for_isnt_here": "Niestety nie ma tutaj tego czego szukałeś...",
|
||||
|
||||
//Notifications
|
||||
"no_notifications": "Brak powiadomień",
|
||||
"1_notification": "1 powiadomienie",
|
||||
"notifications": "powiadomień",
|
||||
"mark_all_as_read": "Oznacz wszystkie jako przeczytane",
|
||||
|
||||
// Post deleted
|
||||
"your_post_has_been_deleted": "Twój post został usunięty.",
|
||||
|
||||
// Post submit & edit
|
||||
"created": "Utworzone",
|
||||
"title": "Tytuł",
|
||||
"suggest_title": "Zasugeruj tytuł",
|
||||
"url": "URL",
|
||||
"short_url": "Krótki URL",
|
||||
"body": "Body",
|
||||
"category": "Kategoria",
|
||||
"categories": "Kategorie",
|
||||
"inactive_": "Nieaktywny?",
|
||||
"sticky_": "Przyklejony?",
|
||||
"submission_date": "Data utworzenia",
|
||||
"submission_time": "Godzina utworzenia",
|
||||
"date": "Data",
|
||||
"submission": "Wpis",
|
||||
"note_this_post_is_still_pending_so_it_has_no_submission_timestamp_yet": "Ten post ciągle czeka na zatwierdzenie.",
|
||||
"user": "Użytkownik",
|
||||
"status_": "Status",
|
||||
"approved": "Zaakceptowany",
|
||||
"rejected": "Odrzucony",
|
||||
"delete_post": "Usuń post",
|
||||
"thanks_your_post_is_awaiting_approval": "Twój post czeka na zatwierdzenie.",
|
||||
"sorry_couldnt_find_a_title": "Podaj tytuł...",
|
||||
"please_fill_in_an_url_first": "Podaj URL",
|
||||
|
||||
// Post item
|
||||
"share": "Udostępnij",
|
||||
"discuss": "Komentuj",
|
||||
"upvote_": "Plus",
|
||||
"sticky": "Przyklejony",
|
||||
"status": "status",
|
||||
"votes": "głosy",
|
||||
"basescore": "wynik bazowy",
|
||||
"score": "wynik",
|
||||
"clicks": "kliknięcia",
|
||||
"views": "wyświetlenia",
|
||||
"inactive": "nieaktywny",
|
||||
"comment": "komentarz",
|
||||
"comments": "komentarze",
|
||||
"point": "punkt",
|
||||
"points": "punktów",
|
||||
|
||||
//User /client/views/users/account/user_account.html
|
||||
"please_complete_your_profile_below_before_continuing": "Uzupełnij profil.",
|
||||
"account": "Konto",
|
||||
"username": "Nick",
|
||||
"display_name": "Nazwa wyświetlana",
|
||||
"email": "Email",
|
||||
"bio": "Bio",
|
||||
"twitter_username": "Twitter",
|
||||
"github_username": "GitHub",
|
||||
"site_url" : "Strona WWW",
|
||||
"password": "Hasło",
|
||||
"change_password": "Zmienić hasło?",
|
||||
"old_password": "Stare hasło",
|
||||
"new_password": "Nowe hasło",
|
||||
"email_notifications": "Notyfikacje email",
|
||||
"new_users" : "Nowi użytkownicy",
|
||||
"new_posts": "Nowe posty",
|
||||
"comments_on_my_posts": "Komentarze do moich postów",
|
||||
"replies_to_my_comments": "Odpowiedzi na moje komentarze",
|
||||
"forgot_password": "Zapomniałeś hasło?",
|
||||
"profile_updated": "Profil został zaktualizowany",
|
||||
"please_fill_in_your_email_below_to_finish_signing_up": "Uzupełnij email.",
|
||||
"invite": "Zaproś",
|
||||
"uninvite": "Wyproś",
|
||||
"make_admin": "Mianuj admina",
|
||||
"unadmin": "Zdejmij admina",
|
||||
"delete_user": "Usuń użytkownika",
|
||||
"are_you_sure_you_want_to_delete": "Jesteś pewny, że chcesz usunąć ",
|
||||
"reset_password": "Resetuj hasło",
|
||||
"password_reset_link_sent": "Link z nowym hasłem został wysłany!",
|
||||
"name": "Imię",
|
||||
"posts": "Posty",
|
||||
"comments_": "Komentarze",
|
||||
"karma": "Karma",
|
||||
"is_invited": "Czy jest zaproszony?",
|
||||
"is_admin": "Czy jest adminem?",
|
||||
"delete": "Usuń",
|
||||
"member_since": "Zarejestrowany od",
|
||||
"edit_profile": "Edytuj profil",
|
||||
"sign_in": "Zaloguj",
|
||||
"sign_in_": "Zaloguj!",
|
||||
"sign_up_": "Zarejestruj!",
|
||||
"dont_have_an_account": "Nie masz konta?",
|
||||
"already_have_an_account": "Masz już konto?",
|
||||
"sign_up": "Zarejestruj",
|
||||
"please_fill_in_all_fields": "Uzupełnij pola",
|
||||
"invite_": "Zaproś ",
|
||||
"left": " left",
|
||||
"invite_none_left": "Zaproszenia (brak)",
|
||||
"all": "Wszyscy",
|
||||
"invited": "Zaproszeni",
|
||||
"uninvited": "Niezaproszeni",
|
||||
"filter_by": "Filtruj po",
|
||||
"sort_by": "Sortuj po",
|
||||
|
||||
//helpers
|
||||
"sorry_you_do_not_have_access_to_this_page": "Przepraszamy, nie masz dostępu.",
|
||||
"please_sign_in_first": "Zaloguj się.",
|
||||
"sorry_you_have_to_be_an_admin_to_view_this_page": "Musisz być adminem żeby to zobaczyć.",
|
||||
"sorry_you_dont_have_permissions_to_add_new_items": "Nie masz uprawnień do dodawania.",
|
||||
"sorry_you_cannot_edit_this_post": "Nie możesz edytować tego postu.",
|
||||
"sorry_you_cannot_edit_this_comment": "Nie możesz edytować tego komentarza.",
|
||||
|
||||
//Collections
|
||||
"you_need_to_login_and_be_an_admin_to_add_a_new_category": "Musisz się zalogować jako admin aby móc dodawać nowe kategorie.",
|
||||
"you_need_to_login_or_be_invited_to_post_new_comments": "Musisz być zalogowany lub zaproszony aby dodawaćc nowe komentarze.",
|
||||
"please_wait": "Proszę czekać ",
|
||||
"seconds_before_commenting_again": " sekund zanim znowu będziesz móc komentować",
|
||||
"your_comment_is_empty": "Twój komentarz jest pusty.",
|
||||
"you_dont_have_permission_to_delete_this_comment": "Nie możesz usunąć tego komentarza.",
|
||||
"you_need_to_login_or_be_invited_to_post_new_stories": "Musisz być zalogowany lub zaproszony aby dodawać nowe posty.",
|
||||
"please_fill_in_a_headline": "Please fill in a headline",
|
||||
"this_link_has_already_been_posted": "Ten link już istnieje",
|
||||
"sorry_you_cannot_submit_more_than": "Nie możesz dodawać więcej niż ",
|
||||
"posts_per_day": " postów na dzień",
|
||||
"someone_replied_to_your_comment_on": "Ktoś odpowiedział na twój komentarz w",
|
||||
"has_replied_to_your_comment_on": " odpowiedział na twój komentarz w",
|
||||
"read_more": "Czytaj dalej",
|
||||
"a_new_comment_on_your_post": "Nowy komentarz",
|
||||
"you_have_a_new_comment_by": "Pojawił się nowy komentarz ",
|
||||
"on_your_post": " dla twojego posta",
|
||||
"has_created_a_new_post": " utworzył nowy post",
|
||||
"your_account_has_been_approved": "Twoje konto zostało zaakceptowane.",
|
||||
"welcome_to": "Witaj na ",
|
||||
"start_posting": "Zacznij pisać.",
|
||||
|
||||
// Translation needed (found during migration to tap:i18n)
|
||||
"please_fill_in_a_title": "Wypełnij tytuł",
|
||||
"seconds_before_posting_again": " sekund zanim znowu będziesz mógł napisać",
|
||||
"upvoted": "minus",
|
||||
"posted_date": "Data",
|
||||
"posted_time": "Godzina",
|
||||
"posted_date": "Data",
|
||||
"posted_time": "Godzina",
|
||||
"profile": "Profil",
|
||||
"sign_out": "Wyloguj się",
|
||||
"you_ve_been_signed_out": "Zostałeś prawidłowo wylogowany!",
|
||||
"invitedcount": "Liczba zaproszeń",
|
||||
"invites": "Zaproszenia",
|
||||
"invited": "Zaproszony?",
|
||||
"admin": "Admin",
|
||||
"actions": "Akcje",
|
||||
"invites_left": "zaproszeń pozostało",
|
||||
"id": "ID",
|
||||
"name": "Imię:",
|
||||
"bio": "Bio:",
|
||||
"github": "GitHub",
|
||||
"site": "Strona WWW",
|
||||
"upvoted_posts": "Głosy pozytywne",
|
||||
"downvoted_posts": "Głosy negatywne",
|
||||
"mark_as_read": "Oznacz jako przeczytane",
|
||||
|
||||
//Common
|
||||
"pending": "Oczekuje",
|
||||
"loading": "Ładowanie...",
|
||||
"submit": "Wyślij",
|
||||
"you_must_be_logged_in": "Musisz być zalogowany.",
|
||||
"are_you_sure": "Jesteś pewny?",
|
||||
"please_log_in_first": "Najpierw się zaloguj.",
|
||||
"please_log_in_to_comment": "Aby komentować musisz być zalogowany.",
|
||||
"sign_in_sign_up_with_twitter": "Zarejestruj/Zaloguj się przez Twitter",
|
||||
"load_more": "Więcej",
|
||||
|
||||
"most_popular_posts": "Aktualnie najpopularniejsze posty.",
|
||||
"newest_posts": "Najnowsze posty.",
|
||||
"highest_ranked_posts_ever": "Najwyżej oceniane posty wszechczasów.",
|
||||
|
||||
"the_profile_of": "Profil",
|
||||
|
||||
"posts_awaiting_moderation": "Posty czekające na moderację.",
|
||||
"future_scheduled_posts": "Posty na przyszłość.",
|
||||
"users_dashboard": "Pulpit użytkowników.",
|
||||
"telescope_settings_panel": "Ustawienia.",
|
||||
"various_utilities": "Narzędzia."
|
||||
}
|
308
i18n/pt-BR.i18n.json
Normal file
308
i18n/pt-BR.i18n.json
Normal file
|
@ -0,0 +1,308 @@
|
|||
{
|
||||
//Navigation
|
||||
"menu": "Menu",
|
||||
"view": "Visão",
|
||||
"top": "Topo",
|
||||
"new": "Novo",
|
||||
"best": "Melhor",
|
||||
"digest": "Resumo",
|
||||
"users": "Usuários",
|
||||
"settings": "Configurações",
|
||||
"admin": "Admin",
|
||||
"post": "Postar",
|
||||
"toolbox": "Toolbox",
|
||||
"sign_up_sign_in": "Registrar/Entrar",
|
||||
"my_account": "Minha Conta",
|
||||
"view_profile": "Ver Perfil",
|
||||
"edit_account": "Editar Conta",
|
||||
|
||||
//Main
|
||||
"new_posts": "Novas Postagens",
|
||||
|
||||
// Settings Schema
|
||||
"title": "Título",
|
||||
"description": "Descrição",
|
||||
"siteUrl": "URL do site",
|
||||
"tagline": "Tagline",
|
||||
"requireViewInvite": "Exigir Convite para Ver",
|
||||
"requirePostInvite": "Exigir Convite para Postar",
|
||||
"requirePostsApproval": "Exigir Postagens serem Aprovadas",
|
||||
"defaultEmail": "Email Padrão",
|
||||
"scoreUpdateInterval": "Definir Intervalo de Atualização",
|
||||
"defaultView": "Visão Padrão",
|
||||
"postInterval": "Intervalo de Postagens",
|
||||
"commentInterval": "Intervalo de Comentários",
|
||||
"maxPostsPerDay": "Máx de Postagens Por Dia",
|
||||
"startInvitesCount": "Número Inicial de Convites",
|
||||
"postsPerPage": "Postagens Por Página",
|
||||
"logoUrl": "URL do Logo",
|
||||
"logoHeight": "Altura do Logo",
|
||||
"logoWidth": "Comprimento do Logo",
|
||||
"language": "Linguagem",
|
||||
"backgroundCSS": "Background CSS",
|
||||
"buttonColor": "Cor do Botão",
|
||||
"buttonTextColor": "Cor do Texto do Botão",
|
||||
"headerColor": "Cor do Cabeçalho",
|
||||
"headerTextColor": "Cor do Texto do Cabeçalho",
|
||||
"twitterAccount": "Conta do Twitter",
|
||||
"googleAnalyticsId": "ID do Google Analytics",
|
||||
"mixpanelId": "ID do Mixpanel",
|
||||
"clickyId": "ID do Clicky",
|
||||
"footerCode": "Código para o Rodapé",
|
||||
"extraCode": "Código Extra",
|
||||
"emailFooter": "Rodapé do Email",
|
||||
"notes": "Notas",
|
||||
"debug": "Modo de Debug",
|
||||
"fontUrl": "URL da Fonte",
|
||||
"fontFamily": "Família da Fonte",
|
||||
"authMethods": "Métodos de Autenticação",
|
||||
"faviconUrl": "URL do Favicon",
|
||||
"mailURL": "MailURL",
|
||||
"postsLayout": "Layout dos Posts",
|
||||
|
||||
// Settings Fieldsets
|
||||
"general": "Geral",
|
||||
"invites": "Convites",
|
||||
"email": "Email",
|
||||
"scoring": "Classificação",
|
||||
"posts": "Postagens",
|
||||
"comments": "Comentários",
|
||||
"logo": "Logo",
|
||||
"extras": "Extras",
|
||||
"colors": "Cores",
|
||||
"integrations": "Integrações",
|
||||
|
||||
// Settings Help Text
|
||||
|
||||
// Post Schema
|
||||
"createdAt": "Criado em",
|
||||
"postedAt": "Postado em",
|
||||
"url": "URL",
|
||||
"title": "Título",
|
||||
"body": "Corpo",
|
||||
"htmlBody": "Corpo HTML",
|
||||
"viewCount": "Ver Contagem",
|
||||
"commentCount": "Contagem de Comentários",
|
||||
"commenters": "Comentaristas",
|
||||
"lastCommentedAt": "Comentado por último em",
|
||||
"clickCount": "Contagem de cliques",
|
||||
"baseScore": "Classificação Básica",
|
||||
"upvotes": "Votos Positivos",
|
||||
"upvoters": "Votadores Positivos",
|
||||
"downvotes": "Votos Negativos",
|
||||
"downvoters": "Votadores Negativos",
|
||||
"score": "Classificação",
|
||||
"status": "Estado",
|
||||
"sticky": "Fixo",
|
||||
"inactive": "Inativo",
|
||||
"author": "Autor",
|
||||
"userId": "Usuário",
|
||||
"sorry_we_couldnt_find_any_posts": "Desculpe, não conseguimos encontrar nenhuma postagem.",
|
||||
|
||||
//Commments
|
||||
"your_comment_has_been_deleted": "Seu comentário foi deletado.",
|
||||
"comment_": "Comentário",
|
||||
"delete_comment": "Deletar Comentário",
|
||||
"add_comment": "Adicionar Comentário",
|
||||
"upvote": "+",
|
||||
"downvote": "-",
|
||||
"link": "link",
|
||||
"edit": "Editar",
|
||||
"reply": "Responder",
|
||||
"no_comments": "Sem comentários.",
|
||||
"please_sign_in_to_reply": "Por favor, registre-se para responder",
|
||||
|
||||
//Errors
|
||||
"you_are_already_logged_in": "Você já está logado",
|
||||
"sorry_this_is_a_private_site_please_sign_up_first": "Desculpe, mas este é um site privado. Registre-se primeiro.",
|
||||
"thanks_for_signing_up": "Obrigado por se registrar!",
|
||||
"the_site_is_currently_invite_only_but_we_will_let_you_know_as_soon_as_a_spot_opens_up": "O site está atualmente apenas para convidados, mas nós iremos avisá-lo assim que abrirmos ao público geral.",
|
||||
"sorry_you_dont_have_the_rights_to_view_this_page": "Desculpe, você não pode ver esta página.",
|
||||
"sorry_you_do_not_have_the_rights_to_comments": "Desculpe, você não pode comentar neste momento.",
|
||||
"not_found": "Não Encontrado!",
|
||||
"were_sorry_whatever_you_were_looking_for_isnt_here": "Nos desculpe; o que estava procurando não se encontra aqui...",
|
||||
"disallowed_property_detected": "Propriedade não permitida detectada",
|
||||
|
||||
//Notifications
|
||||
"no_notifications": "Sem notificações",
|
||||
"1_notification": "1 notificação",
|
||||
"notifications": "notificações",
|
||||
"mark_all_as_read": "Marcar todas como lidas",
|
||||
|
||||
// Post deleted
|
||||
"your_post_has_been_deleted": "Sua postagem foi deletada.",
|
||||
|
||||
// Post submit & edit
|
||||
"created": "Criado",
|
||||
"title": "Título",
|
||||
"suggest_title": "Sugerir título",
|
||||
"url": "URL",
|
||||
"short_url": "URL curta",
|
||||
"body": "Corpo",
|
||||
"category": "Categoria",
|
||||
"inactive_": "Inativo?",
|
||||
"sticky_": "Fixo?",
|
||||
"submission_date": "Data de Submissão",
|
||||
"submission_time": "Hora de Submissão",
|
||||
"date": "Data",
|
||||
"submission": "Submissão",
|
||||
"note_this_post_is_still_pending_so_it_has_no_submission_timestamp_yet": "Nota: esta postagem continua pendente e não possui data de submissão ainda.",
|
||||
"user": "Usuário",
|
||||
"status_": "Estado",
|
||||
"approved": "Aprovada",
|
||||
"rejected": "Rejeitada",
|
||||
"delete_post": "Deletar Postagem",
|
||||
"thanks_your_post_is_awaiting_approval": "Obrigado, sua postagem está aguardando aprovação.",
|
||||
"sorry_couldnt_find_a_title": "Desculpe, não encontramos um título...",
|
||||
"please_fill_in_an_url_first": "Por favor, inclua a URL antes!",
|
||||
|
||||
// Post item
|
||||
"share": "Compartilhar",
|
||||
"discuss": "Discutir",
|
||||
"upvote_": "Votar",
|
||||
"sticky": "Fixo",
|
||||
"status": "estado",
|
||||
"votes": "votos",
|
||||
"basescore": "classificaçaoBase",
|
||||
"score": "classificação",
|
||||
"clicks": "cliques",
|
||||
"views": "visualizações",
|
||||
"inactive": "inativo",
|
||||
"comment": "comentário",
|
||||
"comments": "comentários",
|
||||
"point": "ponto",
|
||||
"points": "pontos",
|
||||
|
||||
//User /client/views/users/account/user_account.html
|
||||
"please_complete_your_profile_below_before_continuing": "Por favor, complete seu perfil abaixo antes de continuar.",
|
||||
"account": "Conta",
|
||||
"username": "Nome de usuário",
|
||||
"display_name": "Nome de exibição",
|
||||
"email": "Email",
|
||||
"bio": "Bio",
|
||||
"twitter_username": "Twitter",
|
||||
"github_username": "GitHub",
|
||||
"site_url" : "URL do Site",
|
||||
"password": "Senha",
|
||||
"change_password": "Mudar Senha?",
|
||||
"old_password": "Senha Antiga",
|
||||
"new_password": "Nova Senha",
|
||||
"email_notifications": "Notificações por Email",
|
||||
"new_users" : "Novos usuários",
|
||||
"new_posts": "Novas Postagens",
|
||||
"comments_on_my_posts": "Comentários em minhas postagens",
|
||||
"replies_to_my_comments": "Respostas aos meus comentários",
|
||||
"forgot_password": "Esqueceu sua senha?",
|
||||
"profile_updated": "Perfil atualizado",
|
||||
"please_fill_in_your_email_below_to_finish_signing_up": "Por favor, preencha seu email abaixo para finalizar o registro.",
|
||||
"invite": "Convite",
|
||||
"uninvite": "Desconvidar",
|
||||
"make_admin": "Tornar admin",
|
||||
"unadmin": "Retirar do admin",
|
||||
"delete_user": "Deletar Usuário",
|
||||
"are_you_sure_you_want_to_delete": "Está certo de que deseja deletar ",
|
||||
"reset_password": "Resetar Senhar",
|
||||
"password_reset_link_sent": "Link de reset de senha enviado!",
|
||||
"name": "Nome",
|
||||
"posts": "Postagens",
|
||||
"comments_": "Comentários",
|
||||
"karma": "Carma",
|
||||
"is_invited": "Foi Convidado?",
|
||||
"is_admin": "É Admin?",
|
||||
"delete": "Deletar",
|
||||
"member_since": "Membro desde",
|
||||
"edit_profile": "Editar perfil",
|
||||
"sign_in": "Entrar",
|
||||
"sign_in_": "Entrar!",
|
||||
"sign_up_": "Registrar!",
|
||||
"dont_have_an_account": "Não possui uma conta?",
|
||||
"already_have_an_account": "Já possui uma conta?",
|
||||
"sign_up": "Registrar",
|
||||
"please_fill_in_all_fields": "Por favor, preencha todos os campos",
|
||||
"invite_": "Convidar ",
|
||||
"left": " restantes",
|
||||
"invite_none_left": "Convidar (nenhum restante)",
|
||||
"all": "Todos",
|
||||
"invited": "Convidado",
|
||||
"uninvited": "Desconvidado",
|
||||
"filter_by": "Filtrar por",
|
||||
"sort_by": "Distribuir por",
|
||||
|
||||
//helpers
|
||||
"sorry_you_do_not_have_access_to_this_page": "Desculpe, você não possui acesso a esta página",
|
||||
"please_sign_in_first": "Por favor, entre com sua conta primeiro.",
|
||||
"sorry_you_have_to_be_an_admin_to_view_this_page": "Desculpe, você precisa ser admin para ver esta página.",
|
||||
"sorry_you_dont_have_permissions_to_add_new_items": "Desculpe, você não possui permissão para adicionar novos itens.",
|
||||
"sorry_you_cannot_edit_this_post": "Desculpe, você não pode estar esta postagem.",
|
||||
"sorry_you_cannot_edit_this_comment": "Desculpe, você não pode editar este comentário.",
|
||||
|
||||
//Collections
|
||||
"you_need_to_login_and_be_an_admin_to_add_a_new_category": "Você precisa se logar e ser um admin para adicionar uma nova categoria.",
|
||||
"you_need_to_login_or_be_invited_to_post_new_comments": "Você precisa se logar ou ser convidado para postar novos comentários.",
|
||||
"please_wait": "Por favor aguarde ",
|
||||
"seconds_before_commenting_again": " segundos antes de comentar novamente",
|
||||
"your_comment_is_empty": "Seu comentário está vazio.",
|
||||
"you_dont_have_permission_to_delete_this_comment": "Você não possui permissão para deletar este comentário.",
|
||||
"you_need_to_login_or_be_invited_to_post_new_stories": "Você precisa se logar ou ser convidado para novas postagens.",
|
||||
"please_fill_in_a_headline": "Por favor, preencha uma chamada",
|
||||
"this_link_has_already_been_posted": "Este link já foi publicado",
|
||||
"sorry_you_cannot_submit_more_than": "Desculpe, você não pode submeter mais do que ",
|
||||
"posts_per_day": " postagens por dia",
|
||||
"someone_replied_to_your_comment_on": "Alguém respondeu ao seu comentário em",
|
||||
"has_replied_to_your_comment_on": " respondeu ao seu comentário em",
|
||||
"read_more": "Ler mais",
|
||||
"a_new_comment_on_your_post": "Um novo comentário em sua postagem",
|
||||
"you_have_a_new_comment_by": "Você possui um novo comentário por ",
|
||||
"on_your_post": " em sua postagem",
|
||||
"has_created_a_new_post": " criou uma nova postagem",
|
||||
"your_account_has_been_approved": "Sua conta foi aprovada.",
|
||||
"welcome_to": "Bem vindo para ",
|
||||
"start_posting": "Comece a postar.",
|
||||
|
||||
// Translation needed (found during migration to tap:i18n)
|
||||
"please_fill_in_a_title": "Por favor preencha um título",
|
||||
"seconds_before_posting_again": " segundos antes de postar novamente",
|
||||
"upvoted": "Votado",
|
||||
"posted_date": "Data da Postagem",
|
||||
"posted_time": "Hora da da Postagem",
|
||||
"profile": "Perfil",
|
||||
"sign_out": "Sair",
|
||||
"you_ve_been_signed_out": "Você saiu com sucesso. Volte logo!",
|
||||
"invitedcount": "ContagemConvites",
|
||||
"invites": "Convites",
|
||||
"invited": "Convidado?",
|
||||
"admin": "Admin",
|
||||
"actions": "Ações",
|
||||
"invites_left": "invites left",
|
||||
"id": "ID",
|
||||
"name": "Nome:",
|
||||
"bio": "Bio:",
|
||||
"github": "GitHub",
|
||||
"site": "Site",
|
||||
"upvoted_posts": "Postagens votadas",
|
||||
"downvoted_posts": "Postagens contra",
|
||||
"mark_as_read": "Marcar como lido",
|
||||
|
||||
//Common
|
||||
"pending": "Pendente",
|
||||
"loading": "Carregando...",
|
||||
"submit": "Submeter",
|
||||
"you_must_be_logged_in": "Você deve estar logado.",
|
||||
"are_you_sure": "Você está certo?",
|
||||
"please_log_in_first": "Por favor, entre primeiro.",
|
||||
"please_log_in_to_comment": "Por favor entre para comentário.",
|
||||
"sign_in_sign_up_with_twitter": "Registrar/Entrar com Twitter",
|
||||
"load_more": "Carregar Mais",
|
||||
|
||||
"most_popular_posts": "As postagens mais populares neste momento.",
|
||||
"newest_posts": "As postagens mais novas.",
|
||||
"highest_ranked_posts_ever": "As melhores postagens de todos os tempos.",
|
||||
|
||||
"the_profile_of": "O perfil de",
|
||||
|
||||
"posts_awaiting_moderation": "Postagens aguardando moderação.",
|
||||
"future_scheduled_posts": "Postagens agendadas para o futuro.",
|
||||
"users_dashboard": "Painel dos usuários.",
|
||||
"telescope_settings_panel": "Painel de Configurações do Telescope.",
|
||||
"various_utilities": "Várias utilidades."
|
||||
}
|
207
i18n/ro.i18n.json
Normal file
207
i18n/ro.i18n.json
Normal file
|
@ -0,0 +1,207 @@
|
|||
{
|
||||
//Navigation
|
||||
"menu": "Meniu",
|
||||
"top": "Top Știri",
|
||||
"new": "Noutăți",
|
||||
"digest": "Rezumat",
|
||||
"users": "Utilizatori",
|
||||
"settings": "Setari",
|
||||
"admin": "Administrare",
|
||||
"post": "Postează",
|
||||
"toolbox": "Trusa de scule",
|
||||
"sign_up_sign_in": "Inregistrare/Logare",
|
||||
"my_account": "Contul meu",
|
||||
"view_profile": "Afiseaza profil",
|
||||
"edit_account": "Modifica profil",
|
||||
|
||||
//Main
|
||||
"new_posts": "Postări Noi",
|
||||
|
||||
//Commments
|
||||
"your_comment_has_been_deleted": "Comentariul tău a fost șters",
|
||||
"comment_": "Comentare",
|
||||
"delete_comment": "Sterge comentariu",
|
||||
"add_comment": "Adaugă comentariu",
|
||||
"upvote": "+1",
|
||||
"downvote": "-1",
|
||||
"link": "link",
|
||||
"edit": "editează",
|
||||
"reply": "răspunde",
|
||||
"no_comments": "Nici un comentariu.",
|
||||
|
||||
//Errors
|
||||
"you_are_already_logged_in": "Sunteți deja logat.",
|
||||
"sorry_this_is_a_private_site_please_sign_up_first": "Ne cerem scuze, acesta este un site care necesită înscriere.",
|
||||
"thanks_for_signing_up": "Mulțumim pentru înregistrare!",
|
||||
"the_site_is_currently_invite_only_but_we_will_let_you_know_as_soon_as_a_spot_opens_up": "Momentan nu acceptăm decât înscrieri pe bază de invitație, dar vă vom anunța de îndată ce avem un loc disponibil!",
|
||||
"sorry_you_dont_have_the_rights_to_view_this_page": "Ne cerem scuze, însă nu aveți drepturi de a accesa această pagină.",
|
||||
"not_found": "Inexistent!",
|
||||
"were_sorry_whatever_you_were_looking_for_isnt_here": "Ne pare rău, dar ceea ce ați căutat nu pare a fi disponibil.",
|
||||
|
||||
//Notifications
|
||||
"no_notifications": "Nici o notificare",
|
||||
"1_notification": "1 Notificare",
|
||||
"notifications": "Notificări",
|
||||
"mark_all_as_read": "Marchează toate ca citite",
|
||||
|
||||
// Post deleted
|
||||
"your_post_has_been_deleted": "Postarea ta a fost ștersă.",
|
||||
|
||||
// Post submit & edit
|
||||
"created": "Creat",
|
||||
"title": "Titlu",
|
||||
"suggest_title": "Propune un titlu",
|
||||
"url": "URL",
|
||||
"short_url": "Prescurtare-URL",
|
||||
"body": "Descriere",
|
||||
"category": "Categorie",
|
||||
"inactive_": "Inactiv?",
|
||||
"sticky_": "Arhivează?",
|
||||
"submission_date": "Data înregistrării",
|
||||
"submission_time": "Ora înregistrării",
|
||||
"date": "Data",
|
||||
"submission": "Înregistrare",
|
||||
"note_this_post_is_still_pending_so_it_has_no_submission_timestamp_yet": "Informare: Această contribuție este încă în curs de aprobare, de aceea nu există o dată și o oră de înregistrare.",
|
||||
"user": "Utilizator",
|
||||
"status_": "Status",
|
||||
"approved": "Aprobat",
|
||||
"rejected": "Respins",
|
||||
"delete_post": "Șterge postarea",
|
||||
"thanks_your_post_is_awaiting_approval": "Mulțumim, postarea ta este în curs de verificare.",
|
||||
"sorry_couldnt_find_a_title": "Ai uitat oare să specifici un titlu?",
|
||||
"please_fill_in_an_url_first": "Trebuie să specifici un URL/Link!",
|
||||
|
||||
// Post item
|
||||
"share": "Share",
|
||||
"discuss": "Comentarii",
|
||||
"upvote_": "Votează",
|
||||
"sticky": "Actual",
|
||||
"status": "Status",
|
||||
"votes": "Voturi",
|
||||
"basescore": "Scor de bază",
|
||||
"score": "Punctaj",
|
||||
"clicks": "Click-uri",
|
||||
"views": "Afișări",
|
||||
"inactive": "Inactiv",
|
||||
"comment": "Comentariu",
|
||||
"comments": "Comentarii",
|
||||
"point": "Punct",
|
||||
"points": "Puncte",
|
||||
|
||||
//User
|
||||
"please_complete_your_profile_below_before_continuing": "Te rugăm să completezi toate datele înainte de a trece mai departe.",
|
||||
"account": "Profil",
|
||||
"username": "Nume utilizator",
|
||||
"display_name": "Nume afișat public",
|
||||
"email": "Email",
|
||||
"bio": "Despre tine",
|
||||
"password": "Parola",
|
||||
"change_password": "Schimbă parola?",
|
||||
"old_password": "Parola veche",
|
||||
"new_password": "Parola nouă",
|
||||
"email_notifications": "Notificări prin email",
|
||||
"new_posts": "Postări noi",
|
||||
"comments_on_my_posts": "Comentarii la postările mele",
|
||||
"replies_to_my_comments": "Răspunsuri la postările mele",
|
||||
"forgot_password": "Ați uitat parola?",
|
||||
"profile_updated": "Profilul a fost actualizat",
|
||||
"please_fill_in_your_email_below_to_finish_signing_up": "Vă rugăm treceți adresa de email pentru a finaliza înregistrarea.",
|
||||
"invite": "Invație",
|
||||
"uninvite": "Retrage invitația",
|
||||
"make_admin": "Promovează ca administrator",
|
||||
"unadmin": "Retrage dreptul de administrator",
|
||||
"delete_user": "Șterge utilizator",
|
||||
"are_you_sure_you_want_to_delete": "Ești sigur că vrei să ștergi următoarele: ",
|
||||
"reset_password": "Resetează parola",
|
||||
"password_reset_link_sent": "Un link pentru resetarea parolei tocmai a fost trimis!",
|
||||
"name": "Nume",
|
||||
"posts": "Postări",
|
||||
"comments_": "Comentarii",
|
||||
"karma": "Karma",
|
||||
"is_invited": "Este invitat?",
|
||||
"is_admin": "Este administrator?",
|
||||
"delete": "Șterge",
|
||||
"member_since": "Vechime",
|
||||
"edit_profile": "Editează profilul",
|
||||
"sign_in": "Logare",
|
||||
"sign_in_": "Logare!",
|
||||
"sign_up_": "Înregistrare!",
|
||||
"dont_have_an_account": "Nu ești înregistrat?",
|
||||
"already_have_an_account": "Ești deja înregistrat?",
|
||||
"sign_up": "Înregistrează-te",
|
||||
"please_fill_in_all_fields": "Te rugăm să completezi toate câmpurile necesare.",
|
||||
"invite_": "Invitați(i) ",
|
||||
"left": " rămase",
|
||||
"invite_none_left": "Număr de invitații epuizat",
|
||||
"all": "Toți",
|
||||
"invited": "cei invitați",
|
||||
"uninvited": "cei neinvitați",
|
||||
"filter_by": "Filtreză după",
|
||||
"sort_by": "Sorteză după",
|
||||
|
||||
//helpers
|
||||
"sorry_you_do_not_have_access_to_this_page": "Ne pare rău, dar nu ai acces la acestă pagină",
|
||||
"please_sign_in_first": "Este nevoie să te autentifici.",
|
||||
"sorry_you_have_to_be_an_admin_to_view_this_page": "Ne pare rău, trebuie să ai drepturi de administrare pentru a accesa această pagină.",
|
||||
"sorry_you_dont_have_permissions_to_add_new_items": "Ne pare rău, nu ai drepturi de a adăuga înregistrări.",
|
||||
"sorry_you_cannot_edit_this_post": "Ne pare rău, nu poți edita această postare.",
|
||||
"sorry_you_cannot_edit_this_comment": "Ne pare rău, nu poți edita aceast comentariu.",
|
||||
|
||||
//Collections
|
||||
"you_need_to_login_and_be_an_admin_to_add_a_new_category": "Trebuie să fi autentificat și să ai drepturi de administrare pentru a adăuga noi categorii.",
|
||||
"you_need_to_login_or_be_invited_to_post_new_comments": "Trebuie să fi autentificat și să ai drepturi de administrare pentru a adăuga comentarii.",
|
||||
"please_wait": "Te rugăm să aștepți ",
|
||||
"seconds_before_commenting_again": " Secunde, până vei putea adăuga comentarii.",
|
||||
"your_comment_is_empty": "Comentariul nu conține nici un text.",
|
||||
"you_dont_have_permission_to_delete_this_comment": "Nu ai drepturi de a șterge acest comentariu.",
|
||||
"you_need_to_login_or_be_invited_to_post_new_stories": "Trebuie să fi autentificat sau invitat pentru a putea posta.",
|
||||
"please_fill_in_a_headline": "Te rugăm să introduci un titlu",
|
||||
"this_link_has_already_been_posted": "Acest link a fost deja publicat",
|
||||
"sorry_you_cannot_submit_more_than": "Ne pare rău insă nu poți publica mai mult de ",
|
||||
"posts_per_day": " postări pe zi",
|
||||
"someone_replied_to_your_comment_on": "Cineva a lăsat un comentariu la",
|
||||
"has_replied_to_your_comment_on": " a răspuns la comentariul tău la",
|
||||
"read_more": "mai mult",
|
||||
"a_new_comment_on_your_post": "Un nou comentariu la postarea ta",
|
||||
"you_have_a_new_comment_by": "Ai un nou comentariu de la ",
|
||||
"on_your_post": " la postarea ta",
|
||||
"has_created_a_new_post": " a publicat o nouă postare",
|
||||
"your_account_has_been_approved": "Profilul tău a fost activat.",
|
||||
"welcome_to": "Bine ai venit ",
|
||||
"start_posting": "Poți începe să publici.",
|
||||
|
||||
// Translation needed (found during migration to tap:i18n)
|
||||
"please_fill_in_a_title": "Te rugăm să alegi un titlu",
|
||||
"seconds_before_posting_again": " secunde până să poți publica iar",
|
||||
"upvoted": "Votat",
|
||||
"posted_date": "Data Postării",
|
||||
"posted_time": "Ora Postării",
|
||||
"posted_date": "Data Postării",
|
||||
"posted_time": "Ora Postării",
|
||||
"profile": "Profil",
|
||||
"sign_out": "De-logare",
|
||||
"invitedcount": "Număr de invitați",
|
||||
"invites": "Invitații trimise",
|
||||
"invited": "Invitat de",
|
||||
"admin": "Admin",
|
||||
"actions": "Actiuni",
|
||||
"invites_left": "invitații rămase",
|
||||
"id": "ID",
|
||||
"name": "Nume:",
|
||||
"bio": "Despre:",
|
||||
"github": "GitHub",
|
||||
"site": "Site",
|
||||
"upvoted_posts": "Postări promvate",
|
||||
"downvoted_posts": "Postări în trend",
|
||||
"mark_as_read": "Postări contra trend-ului",
|
||||
|
||||
//Common
|
||||
"pending": "în așteptare",
|
||||
"loading": "se âncarcă...",
|
||||
"submit": "Trimite",
|
||||
"you_must_be_logged_in": "Trebuie să fi autentificat.",
|
||||
"are_you_sure": "Ești sigur?",
|
||||
"please_log_in_first": "Te rugăm să te autentifici mai întâi",
|
||||
"sign_in_sign_up_with_twitter": "Autentificare/Înregistrare cu Twitter",
|
||||
"load_more": "Afișează noutăți"
|
||||
}
|
|
@ -25,7 +25,7 @@
|
|||
"upvote": "1",
|
||||
"downvote": "-1",
|
||||
"link": "link",
|
||||
"edit": "Ayarla",
|
||||
"edit": "Düzenle",
|
||||
"reply": "Cevap",
|
||||
"no_comments": "Yorum yok",
|
||||
|
||||
|
@ -35,8 +35,8 @@
|
|||
"thanks_for_signing_up": "Kayıt olduğunuz için teşekkür ederiz",
|
||||
"the_site_is_currently_invite_only_but_we_will_let_you_know_as_soon_as_a_spot_opens_up": "Bu site sadece davetliler için ama bir yer açılınca size haber vereceğiz",
|
||||
"sorry_you_dont_have_the_rights_to_view_this_page": "Özür dileriz, bu sayfaya erişiminiz yok",
|
||||
"not_found": "Bulunmadı!",
|
||||
"ere_sorry_whatever_you_were_looking_for_isnt_here": "Özür dileriz, neye bakıyorsanız burada değil..",
|
||||
"not_found": "Bulunamadı!",
|
||||
"ere_sorry_whatever_you_were_looking_for_isnt_here": "Özür dileriz, aradığınız şey burada değil.",
|
||||
|
||||
//Notifications
|
||||
"no_notifications": "Bildirim yok",
|
||||
|
@ -61,7 +61,7 @@
|
|||
"submission_time": "Yayın zamanı",
|
||||
"date": "Tarih",
|
||||
"submission": "Yayın",
|
||||
"note_this_post_is_still_pending_so_it_has_no_submission_timestamp_yet": "Bu paylaşım hala onay bekliyor, onun için yayın tarihi yok",
|
||||
"note_this_post_is_still_pending_so_it_has_no_submission_timestamp_yet": "Bu paylaşım hala onay bekliyor, bu nedenle henüz yayın tarihi yok",
|
||||
"user": "Kullanıcı",
|
||||
"status": "Durum",
|
||||
"approved": "Onaylandı",
|
||||
|
@ -104,11 +104,11 @@
|
|||
"replies_to_my_comments": "Yorumlarıma cevaplar",
|
||||
"forgot_password": "Şifreyi unuttunuz mu?",
|
||||
"profile_updated": "Profil güncellendi",
|
||||
"please_fill_in_your_email_below_to_finish_signing_up": "Lütfen kaydınızı tamamlamak için aşağıya e-postanızı giriniz",
|
||||
"please_fill_in_your_email_below_to_finish_signing_up": "Lütfen kaydınızı tamamlamak için aşağıya e-posta adresinizi giriniz",
|
||||
"invite": "Davet et",
|
||||
"uninvite": "Daveti geri al",
|
||||
"make_admin": "Admin yap",
|
||||
"unadmin": "Admini kaldır",
|
||||
"unadmin": "Adminliği kaldır",
|
||||
"delete_user": "Kullanıcıyı sil",
|
||||
"are_you_sure_you_want_to_delete": "Silmek istediğinize emin misiniz?",
|
||||
"reset_password": "Şifreyi sıfırla",
|
||||
|
@ -139,10 +139,10 @@
|
|||
"sort_by": "Sıralama kıstası",
|
||||
|
||||
//helpers
|
||||
"sorry_you_do_not_have_access_to_this_page": "Özür dileriz, bu sayfaya erişiminiz yok",
|
||||
"sorry_you_do_not_have_access_to_this_page": "Özür dileriz, bu sayfaya erişim izniniz yok",
|
||||
"please_sign_in_first": "Lütfen önce giriş yapın",
|
||||
"sorry_you_have_to_be_an_admin_to_view_this_page": "Özür dileriz, sadece adminler bu sayfayı görebilir",
|
||||
"sorry_you_dont_have_permissions_to_add_new_items": "Özür dileriz, yeni birşeyler eklemeye yetkiniz yok",
|
||||
"sorry_you_dont_have_permissions_to_add_new_items": "Özür dileriz, yeni bir şeyler eklemeye yetkiniz yok",
|
||||
"sorry_you_cannot_edit_this_post": "Özür dileriz, bu paylaşımı değiştiremezsiniz",
|
||||
"sorry_you_cannot_edit_this_comment": "Özür dileriz, bu yorumu değiştiremezsiniz",
|
||||
|
||||
|
@ -150,19 +150,19 @@
|
|||
"you_need_to_login_and_be_an_admin_to_add_a_new_category": "Yeni kategori eklemek için admin olarak giriş yapmanız lazım",
|
||||
"you_need_to_login_or_be_invited_to_post_new_comments": "Yorum yapmak için giriş yapmanız veya davet edilmeniz lazım",
|
||||
"please_wait": "Lütfen bekleyin ",
|
||||
"seconds_before_commenting_again": " saniye daha beklemiz lazım tekrar yorum yapmadan önce",
|
||||
"seconds_before_commenting_again": " saniye daha beklemeniz lazım tekrar yorum yapmadan önce",
|
||||
"your_comment_is_empty": "Yorumunuz boş",
|
||||
"you_dont_have_permission_to_delete_this_comment": "Bu yorumu silmek için izniniz yok",
|
||||
"you_need_to_login_or_be_invited_to_post_new_stories": "Paylaşım yapmak için giriş yapmanız veya davet edilmeniz lazım",
|
||||
"you_need_to_login_or_be_invited_to_post_new_stories": "Paylaşım yapmak için giriş yapmanız ya da davet edilmiş olmanız lazım",
|
||||
"please_fill_in_a_headline": "Lütfen bir başlık girin",
|
||||
"this_link_has_already_been_posted": "Bu bağlantı daha önce paylaşılmıştı",
|
||||
"sorry_you_cannot_submit_more_than": "Özür dileriz, bundan daha fazla paylaşamazsınız ",
|
||||
"sorry_you_cannot_submit_more_than": "Özür dileriz, bu sayıdan daha fazla paylaşamazsınız: ",
|
||||
"posts_per_day": " paylaşım / gün",
|
||||
"someone_replied_to_your_comment_on": "Birisi yorumunuza cevap verdi şu konu hakkında",
|
||||
"has_replied_to_your_comment_on": " yorumunuza cevap verdi şu konu hakkında",
|
||||
"someone_replied_to_your_comment_on": "Birisi yorumunuza cevap verdi şu konu hakkında: ",
|
||||
"has_replied_to_your_comment_on": " yorumunuza cevap verdi şu konu hakkında:",
|
||||
"read_more": "Daha fazla oku",
|
||||
"a_new_comment_on_your_post": "Yeni bir yorum paylaşımınızda",
|
||||
"you_have_a_new_comment_by": "Yeni bir yorum geldi ",
|
||||
"a_new_comment_on_your_post": "Şu paylaşımınıza yeni bir yorum yapıldı: ",
|
||||
"you_have_a_new_comment_by": "Şu kişiden yeni bir yorum aldınız: ",
|
||||
"on_your_post": " paylaşımınızda",
|
||||
"has_created_a_new_post": " yeni bir paylaşım yaptı",
|
||||
"your_account_has_been_approved": "Hesabınız onaylandı",
|
||||
|
@ -171,7 +171,7 @@
|
|||
|
||||
// Translation needed (found during migration to tap:i18n)
|
||||
"please_fill_in_a_title": "Lütfen bir başlık girin",
|
||||
"seconds_before_posting_again": " saniye kaldı bir paylaşım daha yapmadan önce",
|
||||
"seconds_before_posting_again": " saniye daha beklemeniz lazım tekrar paylaşım yapmadan önce",
|
||||
"upvoted": "Yukarı oylandı",
|
||||
"posted_date": "Paylaşım Tarihi",
|
||||
"posted_time": "Paylaşım Zamanı",
|
||||
|
@ -188,9 +188,9 @@
|
|||
"bio": "Bio:",
|
||||
"github": "GitHub",
|
||||
"site": "Site",
|
||||
"upvoted_posts": "Yukarı oy alan paylaşımlar",
|
||||
"upvoted_posts": "Yukarı oy alan paylaşımlar",
|
||||
"downvoted_posts": "Aşağı oy alan paylaşımlar",
|
||||
"mark_as_read": "Okundu gibi işaretle",
|
||||
"mark_as_read": "Okundu olarak işaretle",
|
||||
|
||||
|
||||
//Common
|
||||
|
@ -200,7 +200,7 @@
|
|||
"you_must_be_logged_in": "Giriş yapmanız lazım",
|
||||
"are_you_sure": "Emin misiniz?",
|
||||
"please_log_in_first": "Lütfen önce giriş yapın",
|
||||
"sign_in_sign_up_with_twitter": "Twitter ile kayıt ol/ giriş yap",
|
||||
"load_more": "Daha Fazla yükle"
|
||||
"sign_in_sign_up_with_twitter": "Twitter ile kayıt ol/giriş yap",
|
||||
"load_more": "Daha fazla yükle"
|
||||
|
||||
}
|
||||
|
|
301
i18n/vn.i18n.json
Normal file
301
i18n/vn.i18n.json
Normal file
|
@ -0,0 +1,301 @@
|
|||
{
|
||||
//Navigation
|
||||
"menu": "Danh mục",
|
||||
"view": "Xem",
|
||||
"top": "Top",
|
||||
"new": "New",
|
||||
"best": "Best",
|
||||
"digest": "Digest",
|
||||
"users": "Người dùng",
|
||||
"settings": "Settings",
|
||||
"admin": "Admin",
|
||||
"post": "Bài",
|
||||
"toolbox": "Toolbox",
|
||||
"sign_up_sign_in": "Đăng ký/Đăng nhập",
|
||||
"my_account": "Tài khoản",
|
||||
"view_profile": "Xem hồ sơ",
|
||||
"edit_account": "Chỉnh sửa",
|
||||
|
||||
//Main
|
||||
"new_posts": "Bài mới",
|
||||
|
||||
// Settings Schema
|
||||
"title": "Tiêu đề",
|
||||
"siteUrl": "Địa chỉ URL",
|
||||
"tagline": "Tagline",
|
||||
"requireViewInvite": "Require Invite to View",
|
||||
"requirePostInvite": "Require Invite to Post",
|
||||
"requirePostsApproval": "Require Posts to be Approved",
|
||||
"defaultEmail": "Default Email",
|
||||
"scoreUpdateInterval": "Score Update Interval",
|
||||
"defaultView": "Default View",
|
||||
"postInterval": "Post Interval",
|
||||
"commentInterval": "Comment Interval",
|
||||
"maxPostsPerDay": "Max Posts Per Day",
|
||||
"startInvitesCount": "Invites Start Count",
|
||||
"postsPerPage": "Posts Per Page",
|
||||
"logoUrl": "Logo URL",
|
||||
"logoHeight": "Logo Height",
|
||||
"logoWidth": "Logo Width",
|
||||
"language": "Language",
|
||||
"backgroundCSS": "Background CSS",
|
||||
"buttonColor": "Button Color",
|
||||
"buttonTextColor": "Button Text Color",
|
||||
"headerColor": "Header Color",
|
||||
"headerTextColor": "Header Text Color",
|
||||
"twitterAccount": "Twitter Account",
|
||||
"googleAnalyticsId": "Google Analytics ID",
|
||||
"mixpanelId": "Mixpanel ID",
|
||||
"clickyId": "Clicky ID",
|
||||
"footerCode": "Footer Code",
|
||||
"extraCode": "Extra Code",
|
||||
"emailFooter": "Email Footer",
|
||||
"notes": "Notes",
|
||||
"debug": "Debug Mode",
|
||||
|
||||
// Settings Fieldsets
|
||||
"general": "General",
|
||||
"invites": "Invites",
|
||||
"email": "Email",
|
||||
"scoring": "Scoring",
|
||||
"posts": "Posts",
|
||||
"comments": "Comments",
|
||||
"logo": "Logo",
|
||||
"extras": "Extras",
|
||||
"colors": "Colors",
|
||||
"integrations": "Integrations",
|
||||
|
||||
// Settings Help Text
|
||||
|
||||
// Post Schema
|
||||
"createdAt": "Tạo lúc",
|
||||
"postedAt": "Đăng lúc",
|
||||
"url": "URL",
|
||||
"title": "Tiêu đề",
|
||||
"body": "Nội dung",
|
||||
"htmlBody": "HTML Body",
|
||||
"viewCount": "Số lần xem",
|
||||
"commentCount": "Số lần bình luận",
|
||||
"commenters": "Bình luận",
|
||||
"lastCommentedAt": "Bình luận lúc",
|
||||
"clickCount": "Click Count",
|
||||
"baseScore": "Base Score",
|
||||
"upvotes": "Upvotes",
|
||||
"upvoters": "Upvoters",
|
||||
"downvotes": "Downvotes",
|
||||
"downvoters": "Downvoters",
|
||||
"score": "Score",
|
||||
"status": "Status",
|
||||
"sticky": "Sticky",
|
||||
"inactive": "Inactive",
|
||||
"author": "Author",
|
||||
"userId": "User",
|
||||
"sorry_we_couldnt_find_any_posts": "Xin lỗi, thông tin không được tìm thấy.",
|
||||
|
||||
//Commments
|
||||
"your_comment_has_been_deleted": "Ý kiến của bạn đã được xóa.",
|
||||
"comment_": "Ý kiến",
|
||||
"delete_comment": "Xóa ý kiến",
|
||||
"add_comment": "Thêm ý kiến",
|
||||
"upvote": "Thích",
|
||||
"downvote": "Không thích",
|
||||
"link": "link",
|
||||
"edit": "Sửa",
|
||||
"reply": "Trả lời",
|
||||
"no_comments": "Không ý kiến.",
|
||||
|
||||
//Errors
|
||||
"you_are_already_logged_in": "Bạn đã đăng nhập",
|
||||
"sorry_this_is_a_private_site_please_sign_up_first": "Xin lỗi, bạn cần đăng ký để xem thông tin.",
|
||||
"thanks_for_signing_up": "Cám ơn bạn đã đăng ký!",
|
||||
"the_site_is_currently_invite_only_but_we_will_let_you_know_as_soon_as_a_spot_opens_up": "Trang này hiện chỉ dùng cho những người được mời, chúng tôi sẽ cho bạn biết khi sẵn sàng.",
|
||||
"sorry_you_dont_have_the_rights_to_view_this_page": "Xin lỗi, bạn không có quyền để xem trang này.",
|
||||
"sorry_you_do_not_have_the_rights_to_comments": "Xin lỗi, hiện tại bạn không có quyền để đăng ý kiến.",
|
||||
"not_found": "Không tìm thấy!",
|
||||
"were_sorry_whatever_you_were_looking_for_isnt_here": "Chúng tôi xin lỗi vì không có thông tin bạn đang tìm kiếm...",
|
||||
|
||||
//Notifications
|
||||
"no_notifications": "Không có thông báo",
|
||||
"1_notification": "1 thông báo",
|
||||
"notifications": "Thông báo",
|
||||
"mark_all_as_read": "Đánh dấu đã đọc",
|
||||
|
||||
// Post deleted
|
||||
"your_post_has_been_deleted": "Bài của bạn đã được xóa.",
|
||||
|
||||
// Post submit & edit
|
||||
"created": "Tạo",
|
||||
"title": "Tiêu đề",
|
||||
"suggest_title": "Gợi ý tiêu đề",
|
||||
"url": "URL",
|
||||
"short_url": "URL ngắn",
|
||||
"body": "Nội dung",
|
||||
"category": "Loại",
|
||||
"inactive_": "Ngừng kích hoạt?",
|
||||
"sticky_": "Sticky?",
|
||||
"submission_date": "Ngày đăng",
|
||||
"submission_time": "Giờ đăng",
|
||||
"date": "Ngày",
|
||||
"submission": "Đăng",
|
||||
"note_this_post_is_still_pending_so_it_has_no_submission_timestamp_yet": "Lưu ý: bài này đang đợi xét duyệt nên chưa có thời gian đăng bài.",
|
||||
"user": "Người dùng",
|
||||
"status_": "Trạng thái",
|
||||
"approved": "Đồng ý",
|
||||
"rejected": "Từ chối",
|
||||
"delete_post": "Xóa bài",
|
||||
"thanks_your_post_is_awaiting_approval": "Cảm ơn, bài của bạn đang đợi phê duyệt.",
|
||||
"sorry_couldnt_find_a_title": "Xin lỗi, không có tiêu đề...",
|
||||
"please_fill_in_an_url_first": "Làm ơn nhập địa chỉ website!",
|
||||
|
||||
// Post item
|
||||
"share": "Chia sẻ",
|
||||
"discuss": "Bình luận",
|
||||
"upvote_": "Thích",
|
||||
"sticky": "Sticky",
|
||||
"status": "trạng thái",
|
||||
"votes": "phiếu",
|
||||
"basescore": "baseScore",
|
||||
"score": "điểm",
|
||||
"clicks": "clicks",
|
||||
"views": "xem",
|
||||
"inactive": "inactive",
|
||||
"comment": "ý kiến",
|
||||
"comments": "ý kiến",
|
||||
"point": "điểm",
|
||||
"points": "điểm",
|
||||
|
||||
//User /client/views/users/account/user_account.html
|
||||
"please_complete_your_profile_below_before_continuing": "Xin điền thông tin hồ sơ của bạn để tiếp tục.",
|
||||
"account": "Tài khoản",
|
||||
"username": "Tên đăng nhập",
|
||||
"display_name": "Tên xuất hiện",
|
||||
"email": "Email",
|
||||
"bio": "Bio",
|
||||
"twitter_username": "Tài khoản Twitter",
|
||||
"github_username": "Tài khoản GitHub",
|
||||
"site_url" : "Địa chỉ website",
|
||||
"password": "Mật khẩu",
|
||||
"change_password": "Thay đổi mật khẩu?",
|
||||
"old_password": "Mật khẩu cũ",
|
||||
"new_password": "Mật khẩu mới",
|
||||
"email_notifications": "Email thông báo",
|
||||
"new_users" : "Người dùng mới",
|
||||
"new_posts": "Bài mới",
|
||||
"comments_on_my_posts": "Bình luận trên bài của tôi",
|
||||
"replies_to_my_comments": "Trả lời ý kiến của tôi",
|
||||
"forgot_password": "Quyên mật khẩu?",
|
||||
"profile_updated": "Cập nhật hồ sơ",
|
||||
"please_fill_in_your_email_below_to_finish_signing_up": "Xin nhập email của bạn dưới đây để hoàn thành việc đăng ký.",
|
||||
"invite": "Mời",
|
||||
"uninvite": "Không mời",
|
||||
"make_admin": "Thiết lập Admin",
|
||||
"unadmin": "Ngắt Admin",
|
||||
"delete_user": "Xóa người dùng",
|
||||
"are_you_sure_you_want_to_delete": "Bạn có chắc muốn xóa?",
|
||||
"reset_password": "Thiết lập lại mật khẩu",
|
||||
"password_reset_link_sent": "Mật khẩu đã được gửi!",
|
||||
"name": "Tên",
|
||||
"posts": "Bài",
|
||||
"comments_": "Ý kiến",
|
||||
"karma": "Karma",
|
||||
"is_invited": "Được mời?",
|
||||
"is_admin": "Admin?",
|
||||
"delete": "Xóa",
|
||||
"member_since": "Thành viên từ",
|
||||
"edit_profile": "Sửa hồ sơ",
|
||||
"sign_in": "Đăng nhập",
|
||||
"sign_in_": "Đăng nhập!",
|
||||
"sign_up_": "Đăng ký!",
|
||||
"dont_have_an_account": "Bạn không có tài khoản?",
|
||||
"already_have_an_account": "Bạn đã có tài khoản?",
|
||||
"sign_up": "Đăng ký",
|
||||
"please_fill_in_all_fields": "Nhập thông tin",
|
||||
"invite_": "Mời ",
|
||||
"left": " left",
|
||||
"invite_none_left": "Invite (none left)",
|
||||
"all": "Tất cả",
|
||||
"invited": "Mời",
|
||||
"uninvited": "Không mời",
|
||||
"filter_by": "Lọc theo",
|
||||
"sort_by": "Sắp xếp theo",
|
||||
|
||||
//helpers
|
||||
"sorry_you_do_not_have_access_to_this_page": "Xin lỗi, bạn không có quyền truy cập vào trang này",
|
||||
"please_sign_in_first": "Xin đăng nhập trước.",
|
||||
"sorry_you_have_to_be_an_admin_to_view_this_page": "Xin lỗi, bản phải có quyền Admin để xem trang này.",
|
||||
"sorry_you_dont_have_permissions_to_add_new_items": "Xin lỗi, bạn không có quyền thêm.",
|
||||
"sorry_you_cannot_edit_this_post": "Xin lỗi, bạn không thể sửa bài này.",
|
||||
"sorry_you_cannot_edit_this_comment": "Xin lỗi, bạn không thể sửa ý kiến này.",
|
||||
|
||||
//Collections
|
||||
"you_need_to_login_and_be_an_admin_to_add_a_new_category": "Bạn phải đăng nhập và là Admin để tạo thẻ.",
|
||||
"you_need_to_login_or_be_invited_to_post_new_comments": "Bạn phải đăng nhập và được mời để đăng ý kiến.",
|
||||
"please_wait": "Làm ơn đợi ",
|
||||
"seconds_before_commenting_again": " một vài giây để đăng ý kiến tiếp",
|
||||
"your_comment_is_empty": "Xin nhập ý kiến.",
|
||||
"you_dont_have_permission_to_delete_this_comment": "Bạn không có quyền để xóa ý kiến này.",
|
||||
"you_need_to_login_or_be_invited_to_post_new_stories": "Bạn phải đăng nhập và được mời để đăng bài mới.",
|
||||
"please_fill_in_a_headline": "Xin nhập thông tin",
|
||||
"this_link_has_already_been_posted": "Đường dẫn này đã được đăng",
|
||||
"sorry_you_cannot_submit_more_than": "Xin lỗi, bạn không thể đăng nhiều hơn ",
|
||||
"posts_per_day": " bài mỗi ngày",
|
||||
"someone_replied_to_your_comment_on": "Có người trả lời ý kiến của bạn",
|
||||
"has_replied_to_your_comment_on": " đã trả lời ý kiến của bạn",
|
||||
"read_more": "Xem tiếp",
|
||||
"a_new_comment_on_your_post": "Có ý kiến mới trên bài của bạn",
|
||||
"you_have_a_new_comment_by": "Bạn có ý kiến mới bởi ",
|
||||
"on_your_post": " trên bài của bạn",
|
||||
"has_created_a_new_post": " đã bạo bài mới",
|
||||
"your_account_has_been_approved": "Tài khoản của bạn đã được đồng ý.",
|
||||
"welcome_to": "Xin chào ",
|
||||
"start_posting": "Bắt đầu đăng bài.",
|
||||
|
||||
// Translation needed (found during migration to tap:i18n)
|
||||
"please_fill_in_a_title": "xin nhập tiêu đề",
|
||||
"seconds_before_posting_again": " một vài giây để đăng lại",
|
||||
"upvoted": "Thích",
|
||||
"posted_date": "Ngày đăng",
|
||||
"posted_time": "Giờ đăng",
|
||||
"posted_date": "Ngày đăng",
|
||||
"posted_time": "Giờ đăng",
|
||||
"profile": "Hồ sơ",
|
||||
"sign_out": "Đăng xuất",
|
||||
"you_ve_been_signed_out": "Bạn đã đăng xuất, hẹn sớm gặp lại",
|
||||
"invitedcount": "đếmMoi",
|
||||
"invites": "Mời",
|
||||
"invited": "Được mời?",
|
||||
"admin": "Admin",
|
||||
"actions": "Actions",
|
||||
"invites_left": "invites left",
|
||||
"id": "ID",
|
||||
"name": "Tên:",
|
||||
"bio": "Bio:",
|
||||
"github": "GitHub",
|
||||
"site": "website",
|
||||
"upvoted_posts": "Thích bài",
|
||||
"downvoted_posts": "Không thích bài",
|
||||
"mark_as_read": "Đã đọc",
|
||||
|
||||
//Common
|
||||
"pending": "Pending",
|
||||
"loading": "Tải...",
|
||||
"submit": "Gửi",
|
||||
"you_must_be_logged_in": "Bạn phải đăng nhập.",
|
||||
"are_you_sure": "Bạn có chắn?",
|
||||
"please_log_in_first": "Xin đăng nhập trước.",
|
||||
"please_log_in_to_comment": "Đăng nhập để bình luận",
|
||||
"sign_in_sign_up_with_twitter": "Đăng ký/Đăng nhập với Twitter",
|
||||
"load_more": "Xem thêm",
|
||||
|
||||
"most_popular_posts": "Những bài được xem nhiều nhất",
|
||||
"newest_posts": "Những bài mới nhất.",
|
||||
"highest_ranked_posts_ever": "Những bài được thích nhất.",
|
||||
|
||||
"the_profile_of": "Hồ sơ của",
|
||||
|
||||
"posts_awaiting_moderation": "Bài đang đợi để sửa",
|
||||
"future_scheduled_posts": "Bài đăng theo lịch",
|
||||
"users_dashboard": "Bảng người dùng.",
|
||||
"telescope_settings_panel": "Bản thiết lập Telescope.",
|
||||
"various_utilities": "Một số tiện ích."
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue