- This reverts commit e1515319889ca4b6d34d8cb132bbb9b2fdadf63a.
- This change results in further changes when running gulp build that will need verifying separately
- Running the yarn test command was logging a bunch of
warnings because our browser list hadn't been updated in 6 months
```
Browserslist: browsers data (caniuse-lite) is 6 months old. Please run:
npx update-browserslist-db@latest
Why you should do it regularly: https://github.com/browserslist/update-db#readme
```
- This commit fixes the warnings by updating the browsers list by
running `npx update-browserslist-db@latest` in the root of the repo, and
committing the result.
ref https://linear.app/ghost/issue/PLG-413/add-helpers-to-official-themes
* Added support for all of the new social links in Ghost
* Added icon classes to social icons so that we can display an icon for each link
* Switched to using the new social_url helper for all social links as it is cleaner
* Replaced Twitter with X logo so it's up to date
no issues
- when there's no publication cover and the color scheme is in dark mode, the mobile menu had white background
- this fixes the issue by adding explicit dark mode rules to the styles
When the browser window is resized, a new click event listener is added
to the window but the old one is not removed. The old one ends up
preventing the newly-made dropdown from opening.
Fix this by remembering the click event listener function added to the
window, and remove it before making the new dropdown after a window
resize.
Casper comes with infinite scrolling by default. This update makes it possible to go with the default pagination style when the <html> element has a class no-infinite-scroll.
When the publication cover is turned off and the header style is set to hidden, the header section shouldn't be taking much space like it does regularly.
* Added comments to theme
* Cleanup
* Updated spacing and typography
* Removed bottom border
* Added comment counter
* Updated theme name and post template
* Added search support
* Compiled css for search
* Removed the border and brackets for comment count
* Moved the comments helper into the content block so it gets the same paddings at narrow viewports
* Package version bump
* Updated comments helper in post template
* Final tweaks for the comments support
* Revert the package info
* Update {{comment_count}} helper usage
The helper now outputs a span wrapper by default, so we won't have to add a wrapper in the theme
Co-authored-by: Peter Zimon <peter.zimon@gmail.com>
Co-authored-by: Sanne de Vries <sannedv@protonmail.com>
Co-authored-by: James Morris <moreofmorris@users.noreply.github.com>
The default CSS styles of new Koenig cards that have been released in the past couple of weeks was updated for better usability in themes in general (read commit message for reasons and more reference).
This commit contains CSS cleanup and updates in theme styles that aligns Casper to this change.
Currently, the footer doesn't stick to the bottom of the viewport when the page content is small. This fixes the issue by making the <main> element fill the remaining space
Beeper started requiring ESM syntax from v3, and it caused an error when running development workflow
Error [ERR_REQUIRE_ESM]: Must use import to load ES Module
List items had both top and bottom margin, and it caused some inconsistent spacing for lists inside post content. This updates fixes the issue by only assigning top margin on list items except the first one.
refs: #787
The tag archive header shares the same classes as post cards, but have different elements.
This changes the selector to target article.post-card, which ignores header.post-card
no issue
- as of 4.0, we're shipping tags with the preceding `v`, but this script
ignored that and so the release was incorrect
- this commit updates the tagName to have the preceding `v`
no issue
- the renovate.json file was removed to clean up the repository files,
but we still want Renovate to update dependencies
- Renovate allows us to configure the config in the package.json, so
this commit moves the previous contents there
no issue
- we previously needed a config.json to provide the GitHub token for
publishing new Casper releases
- this commit removes the need for this file by pulling the token from
the environment variable, which everyone in the Core team has set up
refs https://github.com/TryGhost/Team/issues/332
refs 870a09b109
- The {{@labs.members}} always evaluates to "true" starting with Ghost 4.0 and will be "null" coercing to "false" starting Ghost 5.0
- Enabled all conditionals be default to pass the build in main Ghost repository. These changes should be reviewed - special attentio to the left out RSS feed which was surrounded with {{unless @labs.members}} condition
It's now possible to disable the dark mode with code injection instead of removing the CSS and rebuilding it, by simply adding a class no-dark to html element.
no refs.
- added default avatar for authors template
- fixed typography inconsistencies, alignment and spacing issues for author and tags headers
- applied CSSComb
refs. https://github.com/TryGhost/Casper/issues/630
- added a dedicated close button element for the subscribe overlay which sits on top of all elements to ensure the modal is always closable
- fixed alignment and spacing of "Subscribe" button for mobile sizes
refs https://github.com/TryGhost/Ghost/pull/11409
- Adds secondary navigation to the main menu
- Updated secondary nav mobile styles
- Updated cover for the scrollable main navigation
refs. https://github.com/TryGhost/Casper/pull/631
- refined colors of links and separator dots for various cases (light/dark mode/with and without header background image)
- fixed bookmark card hover style
- ran CSSComb
refs. https://github.com/TryGhost/Casper/issues/632
Error page fixes and improvements
- uses default template (i.e. standard header and footer) on 404 error page
- fixed not displaying authors and primary tags on recommended posts on 404 error page
- fixed background for navigation bar on generic error page
- refined error code and message styles
closes#634, closes#635
- use `document.importNode` to create a clone of post card elements when pulling them in from infinite scroll pages
- cloning the element means the element's owner document matches the viewed document and ensures images in the inserted post card elements are sized according to the viewed document
no issue
- replaces author hover JS that was lost during merge
- replaces `floating-header.js` with `sticky-nav-title.js` containing the relevant JS that was lost during merge with a cleanup for unused variables and unnecessary event listeners
- removes reference to non-existent `{{> floating-header}}` partial
* Changed {{code}} to {{statusCode}}
refs 2ebd9feeee
- {{code}} use has been deprecated in canary rule set of gscan
* V3 Update
* Update package and readme for 3.0
* Improve install instructions
* Update to support browserlist
* Upgrade dependencies
* Fix misnamed property
* V3 darkmode (#619)
Added dark mode styles
* Casper final refinements batch 1
* Casper final refinements batch 2
* Fixed bookmark card hover bug
* Fixed header social links
* Updated screenshots
* Updated readme
no issue
- refreshed screenshot
* Udpate screenshot in readme
no issue
* 3.0.0-beta.2
* Fixed cut header for post cards
no issue
* 3.0.0-beta.3
* 3.0.0-beta.4
* Updated current version and previous version logic (#554)
no issue
- Use current version from `package.json` instead of `npm_package_version` env variable
- Use `release.tag_name` instead of `release.name` for previous version
* Updated jQuery to 3.4.1 to avoid known vulnerabilities (#590)
no issue
https://snyk.io/vuln/npm:jquery?lh=3.2.1&utm_source=lighthouse&utm_medium=ref&utm_campaign=audit
* Fixed code cards with long lines from being too wide
no issue
Credits - https://github.com/TryGhost/Casper/pull/602
* Bumped gscan version to v3.0.0 (#621)
* Bumped gscan to v3.0.0
- This also fixes failing CI builds because the default rules that are being checked were for v2
* Added explicit version check for gscan command
* Added member subscription support (#623)
* Added member subscription support
no issue
* Added member subscription success message
no issue
* Added member subscription overlay
* Refined members subscription overlay
* Deleted unused website icon
* Ran CSSComb
* Updated built assets
* 3.0.0-beta.5
* Updated built assets for v3
no issue
* 3.0.0-beta.6
* Remove unused partial
* V3 cleanup (#625)
* Removed unused infinity icon
* Removed unused location icon
* Removed unused 'point' icon
* Removed unused Ghost logo icon
* Removed unused author partials
* Cleaned up index log
* Fixed responsive feature image sizes for page template
no issue
Passing browser options directly into `autoprefixer()` has been deprecated in favour of general browserslist configuration in `package.json` or a `.browserslistrc` config file
- moved autoprefixer browsers list into `browserslist` config in `package.json`
- updated `autoprefixer` version
no issue
- moved large inline JS from templates into separate JS files
- floating header
- gallery card support
- use `gulp-concat` to concatenate all JS files into a single `built/casper.js` file
- reduces external JS file requests from 3 (jquery, infinite-scroll.js, jquery.fitvids.js) down to 2 (jquery, casper.js) and reduces page size by removing repeated inline code
no issue
- Use current version from `package.json` instead of `npm_package_version` env variable
- Use `release.tag_name` instead of `release.name` for previous version
refs https://github.com/TryGhost/Ghost/pull/10719
- adds styling for `.kg-code-card` so that code blocks are styled the same no matter if they are top-level or inside of a `<figure>` element
no issue
- CSS preprocessor dependencies have been updated, this re-builds the CSS to match the latest processed output
- the primary change is the addition of the `::-moz-selection` vendor prefix
no issue
- Casper uses `%s` tag naming
- Let's keep this, otherwise release order is broken
- Ghost & Ghost-Admin use this notation too
- It will tell `yarn version` to use `%s` instead of `v%s`
no issue
- added gulp task to extend casper release automation
- will draft the release for you
- will get the user facing commits from changelog
- runs after `yarn ship` (postship)
- full automation with env variables is possible
closes https://github.com/TryGhost/Casper/issues/548
- the recent postcss upgrade resulted in real CSS variables being output with a fallback mechanism, unfortunately this broke a number of colors throughout the theme
- disabled the fallback mechanism to revert back to the previous behaviour
- use the new, simpler format
- sourcemap and watch support is built in, so these plugins can be removed
- remove js filter - not sure what that did :/
- simplified task structure
no-issue
Previously we only added an error handler to the first stream in each
pipeline, this meant that if another stream errors you would get
unhelpful error handlers.
no issue
- This rename is due to new {{@site}} alias introduced in Ghost (dd1cf5ffc7) as {{@blog}} variable is deprecated now, and will be removed in v3
no issue
- Added a `js` task to run on the gulp build process and minifies our js files
- Changed the required scripts in `default.hbs` to use the minified js files in `/built/`
- Moved existing `js` tasks from `zip` task
* Remove suspect css rule
Removed the ".post-full-content pre code * { color: inherit }" rule which prevents highlight.js from working.
* Changed to just exclude span
Less disruptive to just remove span from color inheritance.
* Remove extra newline
refs #466
Anchor links didn't break, when the text was too long. Using `word-break: break-all` specifically on a-tags in post-content fixes this without screwing up other tags and their breaks.
no issue
- Update CSS and JS for new gallery card
- Updates CSS to support new gallery card
- Adds JS to support grid layout for gallery view
- Fix gallery breakout size
- Refining styles for gallery card
no issue
- when large images have width/height attributes but the image is constrained to it's container or `max-width` style the aspect ratio would be broken because browsers use the `height` attribute value even though the width is smaller
- Add gscan dependency & travis.yml file, so that we can run gscan as a test for this repo
- This check tells us whether or not the theme is valid & compatible with Ghost according to gscan
- We recommend that all themes do this!
refs https://github.com/TryGhost/Ghost/pull/9741
- Ghost 1.25 has updated the HTML output of Koenig beta posts
- the `<div class="kg-post">` wrapper around post content has been removed
- for image cards the `.kg-image-wide` and `.kg-image-full` classes have been changed to `.kg-width-wide` and `.kg-width-full` and applied to the `<figure>` element rather than the `<img>` element
- this will be the default for *all* posts after upgrading to Ghost 2.0
Example output of the `{{content}}` helper for Koenig beta...
Before 1.25.0 (Ghost 1.23.0-1.24.9):
```html
<div class="kg-post">
<figure class="kg-image-card">
<img class="kg-image kg-image-wide" src="...">
<figcaption>example wide image</figcaption>
</figure>
</div>
```
After 1.25.0:
```html
<figure class="kg-image-card kg-width-wide">
<img class="kg-image" src="...">
<figcaption>example wide image</figcaption>
</figure>
```
For reference, in Ghost 1.x a non Koenig post with nothing but an image in the markdown (``) would generate output like this:
```html
<div class="kg-card-markdown">
<img src="...">
</div>
```
refs https://github.com/TryGhost/Ghost/issues/9311
- move `.kg-card-markdown` styles and add deprecation notice
- add support for new `.kg-post` wrapper
- add support for `.kg-image` and `.kg-image-wide/full` image variants
- add support for image captions
closes#445
- added an fn to sanitize the pathname, that might include a pagination url
- fixed an issue, where the request would still be made if the current page is bigger than max pages
- added comments
no issue
https://github.com/TryGhost/Casper/pull/403 added optimisations for reducing size of zip files but unfortunately it also stripped out `assets/css` which means that it's no longer possible to download the theme from the admin panel and use it for development.
- remove `assets/css` from the ignored files in the `zip` task
no issue
- Optimised the `gulp zip` task, so the zip file doesn't include the `assets/css` (`built` folder is used for CSS) and the `dist` folder (is used to output the zip file)
closes#394
- closes potential phishing avenues by preventing external sites from changing the blogs url in the background after opening
- see https://mathiasbynens.github.io/rel-noopener/ for more info
A few people commented how pull-quote styling is odd for blockquotes. I agree. This reverts casper to use more traditional blockquote styling, but maintains the special pullquote styling now over on the H5 element. So if you want nice/wide/centered blue text, use an H5.
- Closes https://github.com/TryGhost/Casper/issues/364
- Closes https://github.com/TryGhost/Casper/issues/368
I alter this color to reddish for my own site, so it stood out much more easily than the Casper blue not matching the Firefox default. Autoprefixer isn't handling this one. Also, I tried adding this rule, comma separated, to the immediately above webkit rule... but it doesn't actually work when I do that, for some reason. Sorry for the redundancy!
https://developer.mozilla.org/en-US/docs/Web/CSS/::-moz-progress-bar
no issue
- The 404 Error template can have a little more fancy logic than other templates
- Therefore, we make the 404 template have the get helper
- The fallback general error template has no use of the get helper
- This helps ensure that errors can be rendered
Closes https://github.com/TryGhost/Casper/issues/330
As usual Firefox is the bane of fucking everything and despite IE7 calling multiple times wanting its rendering back, here we are. Responsive video embeds insider a flexbox element do not work in Firefox and require an additional (very specific) wrapping div. I've adjusted the Fitvids.js script here to include that div in its injection along with the requisite styles. It's a horrible hack. Spent 2 hours trying to find another way but I cant.
no issue
- use a block param and if combo to add a guard to the get helper
- this ensures that the widget is only displayed if there is content available to display
closes#321, closes#323
- use `requestAnimationFrame` and related techniques to minimise scroll processing
- add an `isLoading` guard to ensure we don't try to process anything until the next page has been loaded+inserted
- check for a 404 as an indication we've loaded as many pages as possible at which point the scroll behaviour is removed
- sanitize `window.location.pathname` to remove hash params and any double-slashes that may result
- add a 100px buffer from the bottom of the screen so that it's not necessary to exactly hit the bottom before infinite loading is triggered
refs TryGhost/Ghost#2597
Make Casper work without old body classes `.archive-template`, `.page` and use `.page-template` *only* for pages, as `.post-template` will not be available for pages anymore.
no issue
- Our new marketplace (gpm) will make heavy use of package.json files
- Full details, spec, and validator are coming soon. In the meantime here's the basics:
- `name` must be lowercase and hypenated
- `version` must be semver compliant
- `homepage` should be a valid URL (GitHub URL is ok)
- `demo` should be a working Ghost install that uses your theme
- `engines` should contain a Ghost key indicating which version of Ghost the theme is compatible with
- `license` is required, we recommend `MIT`
- `screenshots` should provide a relative path or absolute URL to both `desktop` & `mobile` screenshots
- `author` should be an object. It must contain an email, and can also include a name and url.
- the `gpm` object should:
- indicate the package type (`theme` for now, later `app` or `adapter` etc)
- list out at most 2 marketplace categories for inclusion. Categories can be found in https://gist.github.com/ErisDS/d0674f57eaa087c9f92cbfc8e984d2d6 but are subject to change.
- other fields can be included as per a normal npm package, we recommend including the repostory & keywords with `ghost` & `theme` listed.
- use a `{{#tag}}{{/tag}}` block for tag in tag.hbs
- use two braces consistently for `{{title}}`
- use double quotes consistently for attributes (quote switching is unnecessary)
I recently created a new Ghost blog and a colleague pointed out that ligatures for code blocks looked a bit off. They weren't enabled in Firefox by default, but in Chrome (possibly different browser defaults?). This PR standardises it and removes any ligatures from `<code>` and `<tt>` blocks.
- Including jQuery before `{{ghost_foot}}` means jQuery can be used inside ghost_foot code injection
- It should also improve backwards compat, as without this jQuery code included via ghost_foot may break
No issue
In #189 I reworked much of the CSS for the menu button. The border on the menu button is supposed to be removed on small screens, but I missed that. This removes it.
Closes#196
- Absolutely positions the `.site-footer` when it's adjacent to the `.read-next` container
I've opted to use absolute positioning here because we can't be 10% sure what the height of the footer will be at smaller viewport widths as the `@blog.title` length can vary, so adding loads of breakpoints with negative margins isn't really viable.
No issue
To prevent browsers using an older version of the icon font when a newer version is available, we must add a version number to that src url.
This number must be incremented when the file files change, so this also adds a note explaining that.
Relates to b071548
- Fixes an issue where the menu button would be the wrong colour
The navigation was using `!important` in a few places. I've changed the CSS a bit to no longer need these, but that means I've made some selectors slightly more specific.
The use of `!important` was to get around the hover state being persisted when the menu was opened but the mouse hadn't moved, which meant the menu button kept its white background when it should be black.
iMaking the hover state only apply when the nav is closed, gets around that.
References #180
- Adds `overflow-x: hidden` to `.site-wrapper` when navigation is open to prevent the menu button flowing into the navigation & covering the 'Menu' title text in Firefox.
Introduced in @46dc55769e5f11bddde77ae131f0cb24f82fd9ea - vh is incompatible with % - all references to height needed to be updated in order for this to work correctly
Static pages were previously missing a margin on the bottom of the
post-title h1. By adding <header> with a post-header class around the
h1, we gain the exact same bottom margin as seen on post (non-static)
pages.
The home and subscribe buttons had backgrounds on static pages, but not
post pages. The backgrounds are now removed from these buttons on
static pages.
Declared all jQuery objects once where needed instead of diving into the DOM multiple times for the same object.
Added style consistency between variable declarations, if/else statements and functions.
Related to TryGhost/Ghost#3599 and TryGhost/Ghost#3389
- The title helper no longer needs triple-stashes to be safe
- The #author can now be used as a context block again
- Introduces author.hbs page template
- Completely refactors header styling with new full-screen cover images
- Adds new, improved pagination with additional styles for archive pages
- Cleans up a fuckload of bloat and old styles
Because a post always has an author. Except when Ghost first runs, and there is the welcome post with no author. But in this case Ghost simply outputs nothing - I haven’t been able to make anything explode.
Adds a light shadow to blog title and description to give slightly more contrast between text and background when a cover image is used with a predominently light colour. This is not a complete fix, because heavy shadows do not lend to the aesthetic of Casper - however it does go some way to making a small improvement to legibility in most cases.
Related: https://github.com/TryGhost/Ghost/issues/1768
Introducing
* New helpers
* New header image
* Responsive / mobile styles
* Mobile device metatags and optimisations
* Initial blog icon support
* Restyled homepage feed
- fixes#265
- I've just removed this css as I can't see anywhere in casper where it will be needed.
- Using id's in theme css should be pretty much banned, or always tightly scoped away from the content so as not to clash with markdown
The same [casper](https://github.com/TryGhost/Casper), but with localization support.
For more detailed information about theme, see the [casper page](https://github.com/TryGhost/Casper).
Copyright (C) 2013 The Ghost Foundation - Released under the MIT Lincense.
# Available languages
- Chinese (zh)
- Croatian (hr)
- Dutch (nl)
- English (en)
- Finnish (fi)
- French (fr)
- German (de)
- Hungarian (hu)
- Indonesian (id)
- Italian (it)
- Latvian (lv)
- Lithuanian (lt)
- Norwegian Bokmål (nb)
- Polish (pl)
- Romanian (ro)
- Russian (ru)
- Spanish (es)
- Swedish (sv)
- Turkish (tr)
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
# Contribution
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
I had to use google translate in some places, so translation corrections are welcome.
And you can also add a new translation.
If your contribution is not related to translation - contribute it to the original [casper](https://github.com/TryGhost/Casper).
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
# Copyright & License
Copyright (c) 2013-2025 Ghost Foundation - Released under the [MIT license](LICENSE).
it should always be the last tag before the closing head tag --}}
{{ghost_head}}
</head>
<body>
<header>
<a id="title" href="/">{{settings.title}}</a>
<p id="description">{{settings.description}}</p>
<div class="clearfix"></div>
<body class="{{body_class}} is-head-{{#match@custom.navigation_layout"Logo on cover"}}left-logo{{elsematch@custom.navigation_layout"Logo in the middle"}}middle-logo{{else}}stacked{{/match}}{{#match@custom.title_font"=""Elegant serif"}} has-serif-title{{/match}}{{#match@custom.body_font"=""Modern sans-serif"}} has-sans-body{{/match}}{{#if@custom.show_publication_cover}} has-cover{{/if}}">
<linkhref="/JohnONolan/casper/rss?token=21b2d996077daf426102c1594ef1db36"rel="alternate nofollow"type="application/rss+xml"title="RSS feed for Casper"/>
<divclass="tip"><em>Tip:</em> Filter by directory path e.g. <strong>/media app.js</strong> to search for public<strong>/media/app.js</strong>.</div>
<divclass="tip"><em>Tip:</em> Use camelCasing e.g. <strong>ProjME</strong> to search for <strong>ProjectModifiedE</strong>vent.java.</div>
<divclass="tip"><em>Tip:</em> Filter by extension type e.g. <strong>/repo .js</strong> to search for all <strong>.js</strong> files in the <strong>/repo</strong> directory.</div>
<divclass="tip"><em>Tip:</em> Separate your search with spaces e.g. <strong>/ssh pom.xml</strong> to search for src<strong>/ssh/pom.xml</strong>.</div>
<divclass="tip"><em>Tip:</em> Use ↑ and ↓ arrow keys to navigate and <strong>return</strong> to view the file.</div>
<divclass="tip mod-osx"><em>Tip:</em> You can also navigate files with <strong>Ctrl+j</strong><em>(next)</em> and <strong>Ctrl+k</strong><em>(previous)</em> and view the file with <strong>Ctrl+o</strong>.</div>
<divclass="tip mod-win"><em>Tip:</em> You can also navigate files with <strong>Alt+j</strong><em>(next)</em> and <strong>Alt+k</strong><em>(previous)</em> and view the file with <strong>Alt+o</strong>.</div>
"Enter your email":"Geben sie ihre E-Mail Adresse ein",
"Account":"Konto",
"Subscribe":"Abonnieren",
"Subscribe to {blogtitle}":"Abonniere {blogtitle}",
"A collection of posts":"Eine Sammlung von Artikeln",
"A collection of 1 post":"Eine Sammlung von einem Artikel",
"A collection of % posts":"Eine Sammlung von % Artikeln",
"Get the latest posts delivered right to your inbox":"Erhalte die neusten Artikel direkt in dein Postfach",
"Go to the front page":"Gehe zur Startseite",
"Latest Posts":"Neuste Artikel",
"Message":"Fehlermeldung",
"No posts":"Keine Artikel",
"Ref":"Ref",
"1 post":"1 Artikel",
"% posts":"% Artikel",
"1 min read":"Lesezeit: 1 Min.",
"% min read":"Lesezeit: % Min.",
"<strong>Great!</strong> Check your inbox and click the link to confirm your subscription.":"<strong>Großartig!</strong> Überprüfen Sie Ihren Posteingang und klicken Sie auf den Link, um Ihr Abonnement zu bestätigen.",
"Please enter a valid email address!":"Bitte geben Sie eine gültige E-Mail-Adresse ein!"
"Subscribe to {blogtitle}":"Subscribe to {blogtitle}",
"A collection of posts":"A collection of posts",
"A collection of 1 post":"A collection of 1 post",
"A collection of % posts":"A collection of % posts",
"Get the latest posts delivered right to your inbox":"Get the latest posts delivered right to your inbox",
"Go to the front page":"Go to the front page",
"Latest Posts":"Latest Posts",
"Message":"Message",
"No posts":"No posts",
"Ref":"Ref",
"1 post":"1 post",
"% posts":"% posts",
"1 min read":"1 min read",
"% min read":"% min read",
"<strong>Great!</strong> Check your inbox and click the link to confirm your subscription.":"<strong>Great!</strong> Check your inbox and click the link to confirm your subscription.",
"Please enter a valid email address!":"Please enter a valid email address!"
"Enter your email":"Introduce tu correo electrónico",
"Account":"Cuenta ",
"Subscribe":"Suscríbete",
"Subscribe to {blogtitle}":"Suscríbete a {blogtitle}",
"A collection of posts":"Una colección de artículos",
"A collection of 1 post":"Una colección de 1 artículo",
"A collection of % posts":"Una colección de % artículos",
"Get the latest posts delivered right to your inbox":"Recibe los últimos artículos directamente en tu buzón",
"Go to the front page":"Ir a la página de inicio",
"Latest Posts":"Últimos Artículos",
"Message":"Mensaje",
"No posts":"No hay artículos",
"Ref":"Ref",
"1 post":"1 artículo",
"% posts":"% artículos",
"1 min read":"1 min de lectura",
"% min read":"% min de lectura",
"<strong>Great!</strong> Check your inbox and click the link to confirm your subscription.":"<strong>¡Excelente!</strong> Revise su bandeja de entrada y haga clic en el enlace para confirmar su suscripción.",
"Please enter a valid email address!":"¡Por favor, introduce una dirección de correo electrónico válida!"
"Subscribe to {blogtitle}":"Tilaa blogi {blogtitle}",
"A collection of posts":"Artikkelien kokoelma",
"A collection of 1 post":"Kokoelmassa 1 artikkeli",
"A collection of % posts":"Kokoelmassa % artikkelia",
"Get the latest posts delivered right to your inbox":"Tilaa uusimmat artikkelit suoraan sähköpostiisi",
"Go to the front page":"Go to the front page",
"Latest Posts":"Uusimmat artikkelit",
"Message":"Viesti",
"No posts":"Ei artikkeleita",
"Ref":"Ref",
"1 post":"Yksi artikkeli",
"% posts":"% artikkelia",
"1 min read":"Lukuaika 1 minuutti",
"% min read":"Lukuaika % minuuttia",
"<strong>Great!</strong> Check your inbox and click the link to confirm your subscription.":"<strong>Loistava!</strong> Tarkista postilaatikkosi ja vahvista tilauksesi napsauttamalla linkkiä.",
"Please enter a valid email address!":"Ole hyvä ja syötä toimiva sähköpostiosoite!"
"Subscribe to {blogtitle}":"S’abonner à {blogtitle}",
"A collection of posts":"Une catégorie d’articles",
"A collection of 1 post":"Une catégorie avec un article",
"A collection of % posts":"Une catégorie avec % articles",
"Get the latest posts delivered right to your inbox":"Recevez les derniers articles directement dans votre boîte aux lettres.",
"Go to the front page":"Aller sur la page d’accueil",
"Latest Posts":"Derniers articles",
"Message":"Message",
"No posts":"Aucun article",
"Ref":"Réf",
"1 post":"Un article",
"% posts":"% articles",
"1 min read":"1 min de lecture",
"% min read":"% min de lecture",
"<strong>Great!</strong> Check your inbox and click the link to confirm your subscription.":"<strong>Génial!</strong> Vérifiez votre boîte de réception et cliquez sur le lien pour confirmer votre abonnement.",
"Please enter a valid email address!":"S'il vous plaît, mettez une adresse email valide!"
"Subscribe to {blogtitle}":"Pretplati se na {blogtitle}",
"A collection of posts":"Kolekcija postova",
"A collection of 1 post":"Kolekcija s jednim postom",
"A collection of % posts":"Kolekcija sa % postova",
"Get the latest posts delivered right to your inbox":"Najnoviji postovi će biti dostavljeni u tvoj inbox",
"Go to the front page":"Go to the front page",
"Latest Posts":"Noviji Postovi",
"Message":"Poruka",
"No posts":"Nema postova",
"Ref":"Ref",
"1 post":"1 post",
"% posts":"% postova",
"1 min read":"1 min čitanja",
"% min read":"% min čitanja",
"<strong>Great!</strong> Check your inbox and click the link to confirm your subscription.":"<strong>Sjajno!</strong> Provjerite pristiglu poštu i kliknite vezu da biste potvrdili pretplatu.",
"Please enter a valid email address!":"Unesite valjanu adresu e-pošte!"
"Subscribe to {blogtitle}":"Iratkozz fel a {blogtitle}re",
"A collection of posts":"Cikkek gyűjteménye",
"A collection of 1 post":"Itt csupán egy cikk van",
"A collection of % posts":"% cikk gyűjteménye",
"Get the latest posts delivered right to your inbox":"Olvasd a legfrissebb cikkeket egyenesen a virtuális postaládádból",
"Go to the front page":"Vissza a kezdőlapra",
"Latest Posts":"Legfrissebb cikkek",
"Message":"Üzenet:",
"No posts":"Nincsenek cikkek",
"Ref":"Ref",
"1 post":"1 cikk",
"% posts":"% cikk",
"1 min read":"1 perces",
"% min read":"% perces",
"<strong>Great!</strong> Check your inbox and click the link to confirm your subscription.":"<strong>Nagy!</strong> Ellenőrizze a beérkező leveleket, és kattintson a linkre az előfizetés megerősítéséhez.",
"Please enter a valid email address!":"Kérjük valós e-mail címet adjon meg!"
"Subscribe to {blogtitle}":"Langganan ke {blogtitle}",
"A collection of posts":"Koleksi artikel-artikel",
"A collection of 1 post":"Koleksi berisi 1 artikel",
"A collection of % posts":"Koleksi berisi % artikel",
"Get the latest posts delivered right to your inbox":"Langganan via email",
"Go to the front page":"Ke halaman depan",
"Latest Posts":"Artikel terbaru",
"Message":"Pesan",
"No posts":"Tidak ada artikel",
"Ref":"Ref",
"1 post":"1 artikel",
"% posts":"% artikel",
"1 min read":"Bacaan 1 menit",
"% min read":"Bacaan % menit",
"<strong>Great!</strong> Check your inbox and click the link to confirm your subscription.":"<strong>Bagus!</strong> Periksa kotak masuk Anda dan klik tautan untuk mengonfirmasi langganan Anda.",
"Please enter a valid email address!":"Silakan isi alamat email!"
"Subscribe to {blogtitle}":"Iscriviti a {blogtitle}",
"A collection of posts":"Una collezione di articoli",
"A collection of 1 post":"Una collezione di 1 articolo",
"A collection of % posts":"Una collezione di % articoli",
"Get the latest posts delivered right to your inbox":"Ricevi gli articoli più recenti direttamente nella tua casella di posta",
"Go to the front page":"Go to the front page",
"Latest Posts":"Ultimi articoli",
"Message":"Messaggio",
"No posts":"Nessun articolo",
"Ref":"Rif",
"1 post":"1 articolo",
"% posts":"% articoli",
"1 min read":"1 minuto di lettura",
"% min read":"% minuti di lettura",
"<strong>Great!</strong> Check your inbox and click the link to confirm your subscription.":"<strong>Ottimo!</strong> Controlla la posta in arrivo e fai clic sul link per confermare l'iscrizione.",
"Please enter a valid email address!":"Si prega di inserire un indirizzo email valido!"
"Subscribe to {blogtitle}":"Prenumeruoti {blogtitle}",
"A collection of posts":"A collection of posts",
"A collection of 1 post":"A collection of 1 post",
"A collection of % posts":"A collection of % posts",
"Get the latest posts delivered right to your inbox":"Gaukite naujienas į savo pašto dėžutę",
"Go to the front page":"Go to the front page",
"Latest Posts":"Paskutiniai įrašai",
"Message":"Pranešimas",
"No posts":"Nėra įrašų",
"Ref":"Nuoroda",
"1 post":"1 įrašas",
"% posts":"% įrašų",
"1 min read":"1 min skaitymo",
"% min read":"% min skaitymo",
"<strong>Great!</strong> Check your inbox and click the link to confirm your subscription.":"<strong>Puiku!</strong> Patikrinkite gautuosius ir spustelėkite nuorodą, kad patvirtintumėte prenumeratą.",
"Please enter a valid email address!":"Prašome įvesti galiojantį elektroninio pašto adresą!"
"Get the latest posts delivered right to your inbox":"Saņemiet jaunākās ziņas tieši jūsu iesūtnē",
"Go to the front page":"Dodieties uz sākumlapu",
"Latest Posts":"Dodieties uz sākumlapu",
"Message":"Ziņojums",
"No posts":"Nav ziņu",
"Ref":"Atsauce",
"1 post":"1ziņa",
"% posts":"% ziņas",
"1 min read":"1minūte lasīt",
"% min read":"%minūtes lasīts",
"<strong>Great!</strong> Check your inbox and click the link to confirm your subscription.":"<strong>Lieliski!</strong> Pārbaudiet savu iesūtni un noklikšķiniet uz saites, lai apstiprinātu abonementu.",
"Please enter a valid email address!":"Lūdzu, ievadiet derīgu e-pasta adresi!"
"Subscribe to {blogtitle}":"Abbonér på {blogtitle}",
"A collection of posts":"En samling innlegg",
"A collection of 1 post":"En samling av 1 innlegg",
"A collection of % posts":"En samling % innlegg",
"Get the latest posts delivered right to your inbox":"Få siste innlegg levert rett til din innboks",
"Go to the front page":"Go to the front page",
"Latest Posts":"Siste innlegg",
"Message":"Beskjed",
"No posts":"Ingen innlegg",
"Ref":"Ref",
"1 post":"1 innlegg",
"% posts":"% innlegg",
"1 min read":"1 min lesetid",
"% min read":"% min lesetid",
"<strong>Great!</strong> Check your inbox and click the link to confirm your subscription.":"<strong>Flott!</strong> Sjekk innboksen din, og klikk på lenken for å bekrefte abonnementet.",
"Please enter a valid email address!":"Vennligst skriv inn en gyldig e-post adresse!"
"Subscribe to {blogtitle}":"Abonneer je op {blogtitle}",
"A collection of posts":"Een collectie van berichten",
"A collection of 1 post":"Een collectie van 1 bericht",
"A collection of % posts":"Een collectie van % berichten",
"Get the latest posts delivered right to your inbox":"Krijg nieuwe berichten direct in je inbox",
"Go to the front page":"Ga naar de voorpagina",
"Latest Posts":"Laatste berichten",
"Message":"Melding",
"No posts":"Geen berichten",
"Ref":"Ref",
"1 post":"1 bericht",
"% posts":"% bericht",
"1 min read":"1 minuut leestijd",
"% min read":"% minuten leestijd",
"<strong>Great!</strong> Check your inbox and click the link to confirm your subscription.":"<strong>Geweldig!</strong> Controleer je inbox en klik op de link om je abonnement te bevestigen.",
"Please enter a valid email address!":"Voer alsjeblieft geen geldig e-mailadres in!"
"Subscribe to {blogtitle}":"Subskrybuj {blogtitle}",
"A collection of posts":"Kolekcja wpisów",
"A collection of 1 post":"Kolekcja 1 wpisu",
"A collection of % posts":"Kolekcja % wpisów",
"Get the latest posts delivered right to your inbox":"Otrzymuj najnowsze wpisy na skrzynkę pocztową",
"Go to the front page":"Przejdź do strony głównej",
"Latest Posts":"Najnowsze wpisy",
"Message":"Wiadomość",
"No posts":"Brak wpisów",
"Ref":"Ref",
"1 post":"1 wpis",
"% posts":"% wpisów",
"1 min read":"lektura na 1 min",
"% min read":"lektura na % min",
"<strong>Great!</strong> Check your inbox and click the link to confirm your subscription.":"<strong>Świetnie!</strong> Sprawdź swoją skrzynkę odbiorczą i kliknij link, aby potwierdzić subskrypcję.",
"Please enter a valid email address!":"Proszę wpisać aktualny adres e-mail!"
"Enter your email":"Introduceți adresa dvs. de email",
"Account":"Cont",
"Subscribe":"Înscrie-te",
"Subscribe to {blogtitle}":"Înscrie-te la {blogtitle}",
"A collection of posts":"O colecție de articole",
"A collection of 1 post":"O colecție de un articol",
"A collection of % posts":"O colecție de % articole",
"Get the latest posts delivered right to your inbox":"Citește ultimele articole livrate direct în inbox-ul tău",
"Go to the front page":"Go to the front page",
"Latest Posts":"Ultimele Articole",
"Message":"Mesaj",
"No posts":"Nu există articole",
"Ref":"Ref",
"1 post":"1 articol",
"% posts":"% articole",
"1 min read":"lectură de 1 min",
"% min read":"lectură de % min",
"<strong>Great!</strong> Check your inbox and click the link to confirm your subscription.":"<strong>Minunat!</strong> Verificați căsuța de e-mail și dați clic pe link pentru a vă confirma abonamentul.",
"Please enter a valid email address!":"Te rog introdu o adresa de email valida!"
"Enter your email":"Введите адрес электронной почты",
"Account":"Аккаунт",
"Subscribe":"Подписаться",
"Subscribe to":"Подписаться на",
"A collection of posts":"Коллекция статей",
"A collection of 1 post":"Коллекция из 1 статьи",
"A collection of % posts":"Коллекция из % статей",
"Get the latest posts delivered right to your inbox":"Получайте свежие статьи прямо на свою почту",
"Go to the front page":"На главную",
"Latest Posts":"Последние статьи",
"Message":"Сообщение",
"No posts":"Статьи отсутствуют",
"Ref":"Ссылка",
"1 post":"1 статья",
"% posts":"% статьи(-ей)",
"1 min read":"1 мин на чтение",
"% min read":"% мин на чтение",
"<strong>Great!</strong> Check your inbox and click the link to confirm your subscription.":"<strong>Отлично!</strong> Проверьте свой почтовый ящик и нажмите ссылку, чтобы подтвердить подписку",
"Please enter a valid email address!":"Пожалуйста, введите действительный адрес электронной почты!"
"Subscribe to {blogtitle}":"Prenumerera på {blogtitle}",
"A collection of posts":"En samling artiklar",
"A collection of 1 post":"En samling av 1 artikel",
"A collection of % posts":"En samling av % artiklar",
"Get the latest posts delivered right to your inbox":"Få de senaste artiklarna levererade direkt till din inkorg",
"Go to the front page":"Go to the front page",
"Latest Posts":"Senaste artiklarna",
"Message":"Meddelande",
"No posts":"Inga artiklar",
"Ref":"Ref",
"1 post":"1 artikel",
"% posts":"% artiklar",
"1 min read":"1 minuts läsning",
"% min read":"% minuters läsning",
"<strong>Great!</strong> Check your inbox and click the link to confirm your subscription.":"<strong>Bra!</strong> Kontrollera din inkorg och klicka på länken för att bekräfta din prenumeration.",
"Please enter a valid email address!":"Ange en giltig e-postadress!"
"Subscribe to {blogtitle}":"{blogtitle} abone ol",
"A collection of posts":"Yazılar",
"A collection of 1 post":"1 yazı",
"A collection of % posts":"% yazı",
"Get the latest posts delivered right to your inbox":"Son paylaşılan içerikler gelen kutuna gelsin",
"Go to the front page":"Anasayfaya git",
"Latest Posts":"Son Yazılar",
"Message":"İleti",
"No posts":"İçerik Yok",
"Ref":"Ref",
"1 post":"1 yazı",
"% posts":"% yazı",
"1 min read":"1 dakikalık okuma",
"% min read":"% dakikalık okuma",
"<strong>Great!</strong> Check your inbox and click the link to confirm your subscription.":"<strong>Harika!</strong> Gelen kutunuzu kontrol edin ve aboneliğinizi onaylamak için bağlantıyı tıklayın.",
"Please enter a valid email address!":"Geçerli bir e!"
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.