Compare commits

...

72 Commits

Author SHA1 Message Date
HuangWei c3cbca8004
Merge e8bd54e557 into fd7157e40c 2024-05-07 18:49:23 +02:00
Alexandre Alapetite fd7157e40c
CSS selector trim (#6428)
fix https://github.com/FreshRSS/FreshRSS/pull/6426#issuecomment-2091159868
2024-05-02 20:36:08 +02:00
Alexandre Alapetite 44625eed25
Fix CSS selector encoding (#6426)
fix https://github.com/FreshRSS/FreshRSS/issues/6229
fix https://github.com/FreshRSS/FreshRSS/issues/6266#issuecomment-2090432818
2024-05-02 19:49:18 +02:00
Alexandre Alapetite 0e6f56bb4c
Fix CSS selector preview (#6423)
fix https://github.com/FreshRSS/FreshRSS/issues/6266

Co-authored-by: maTh <1645099+math-GH@users.noreply.github.com>
2024-05-02 14:13:15 +02:00
Alexandre Alapetite 617f9a7fa6
Fix user query filter display (#6421)
* Fix user query filter display
fix https://github.com/FreshRSS/FreshRSS/issues/6360

* Fix tests
2024-05-02 10:28:07 +02:00
Alexandre Alapetite cd8fc428cb
Allow manual refresh of disabled feeds (#6408)
fix https://github.com/FreshRSS/FreshRSS/issues/6407
2024-05-01 23:15:49 +02:00
dependabot[bot] c9307e4324
Bump sass from 1.75.0 to 1.76.0 (#6418)
Bumps [sass](https://github.com/sass/dart-sass) from 1.75.0 to 1.76.0.
- [Release notes](https://github.com/sass/dart-sass/releases)
- [Changelog](https://github.com/sass/dart-sass/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sass/dart-sass/compare/1.75.0...1.76.0)

---
updated-dependencies:
- dependency-name: sass
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-01 21:10:18 +02:00
dependabot[bot] 5a8adf5f23
Bump @stylistic/stylelint-plugin from 2.1.1 to 2.1.2 (#6420)
Bumps [@stylistic/stylelint-plugin](https://github.com/stylelint-stylistic/stylelint-stylistic) from 2.1.1 to 2.1.2.
- [Release notes](https://github.com/stylelint-stylistic/stylelint-stylistic/releases)
- [Changelog](https://github.com/stylelint-stylistic/stylelint-stylistic/blob/main/CHANGELOG.md)
- [Commits](https://github.com/stylelint-stylistic/stylelint-stylistic/compare/v2.1.1...v2.1.2)

---
updated-dependencies:
- dependency-name: "@stylistic/stylelint-plugin"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-01 21:10:02 +02:00
dependabot[bot] da9789d293
Bump markdownlint-cli from 0.39.0 to 0.40.0 (#6419)
Bumps [markdownlint-cli](https://github.com/igorshubovych/markdownlint-cli) from 0.39.0 to 0.40.0.
- [Release notes](https://github.com/igorshubovych/markdownlint-cli/releases)
- [Commits](https://github.com/igorshubovych/markdownlint-cli/compare/v0.39.0...v0.40.0)

---
updated-dependencies:
- dependency-name: markdownlint-cli
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-01 21:01:17 +02:00
dependabot[bot] 47f941101c
Bump stylelint from 16.3.1 to 16.4.0 in the stylelint group (#6416)
Bumps the stylelint group with 1 update: [stylelint](https://github.com/stylelint/stylelint).


Updates `stylelint` from 16.3.1 to 16.4.0
- [Release notes](https://github.com/stylelint/stylelint/releases)
- [Changelog](https://github.com/stylelint/stylelint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/stylelint/stylelint/compare/16.3.1...16.4.0)

---
updated-dependencies:
- dependency-name: stylelint
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: stylelint
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-01 21:00:55 +02:00
dependabot[bot] ed6e90c67e
Bump phpstan/phpstan-strict-rules from 1.5.3 to 1.5.5 (#6415)
Bumps [phpstan/phpstan-strict-rules](https://github.com/phpstan/phpstan-strict-rules) from 1.5.3 to 1.5.5.
- [Release notes](https://github.com/phpstan/phpstan-strict-rules/releases)
- [Commits](https://github.com/phpstan/phpstan-strict-rules/compare/1.5.3...1.5.5)

---
updated-dependencies:
- dependency-name: phpstan/phpstan-strict-rules
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-01 21:00:38 +02:00
dependabot[bot] eddb10bba9
Bump squizlabs/php_codesniffer from 3.9.1 to 3.9.2 (#6414)
Bumps [squizlabs/php_codesniffer](https://github.com/PHPCSStandards/PHP_CodeSniffer) from 3.9.1 to 3.9.2.
- [Release notes](https://github.com/PHPCSStandards/PHP_CodeSniffer/releases)
- [Changelog](https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/CHANGELOG.md)
- [Commits](https://github.com/PHPCSStandards/PHP_CodeSniffer/compare/3.9.1...3.9.2)

---
updated-dependencies:
- dependency-name: squizlabs/php_codesniffer
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-01 21:00:21 +02:00
dependabot[bot] a580d4e4b2
Bump phpstan/phpstan from 1.10.66 to 1.10.67 (#6413)
Bumps [phpstan/phpstan](https://github.com/phpstan/phpstan) from 1.10.66 to 1.10.67.
- [Release notes](https://github.com/phpstan/phpstan/releases)
- [Changelog](https://github.com/phpstan/phpstan/blob/1.11.x/CHANGELOG.md)
- [Commits](https://github.com/phpstan/phpstan/compare/1.10.66...1.10.67)

---
updated-dependencies:
- dependency-name: phpstan/phpstan
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-01 21:00:04 +02:00
Alexandre Alapetite ffe68dcb97
Docker: Traefik 3.0 (#6401)
https://github.com/traefik/traefik/releases/tag/v3.0.0
https://doc.traefik.io/traefik/v3.0/migration/v2-to-v3/
2024-05-01 14:01:58 +02:00
maTh cd66ca54ca
Docs: hidden configs (#6402)
* Create 17_configs_not_ui.md

* reorganize admin overview page. Added the link to the new doc

* Update 17_configs_not_ui.md

* Update 17_configs_not_ui.md

* Update 17_configs_not_ui.md

* fix typo
2024-05-01 14:01:40 +02:00
maTh 40ac02544e
Remove test string aside_feed.phtml (#6403) 2024-04-30 19:03:08 +02:00
maTh d4ac7ea26b
Delete date opacity while hovering (#6390)
* opacity 0.3 -> 0.5

* delete opacity while hovering
2024-04-30 09:44:47 +02:00
Alexandre Alapetite 329fd4bcf6
CLI database backup and restore (#6387)
* CLI database backup and restore
Can also be used to migrate from one database to another (e.g. MySQL to PostgreSQL) or to ease upgrade to a major PostgreSQL version (e.g. 15 to 16).

* +x

* Fix some cases

* Update to docker-compose-v2

* More documentation
2024-04-30 08:31:13 +02:00
Alexandre Alapetite 173555795a
ZIP tempnam (#6392)
fix https://github.com/FreshRSS/FreshRSS/issues/6388
2024-04-27 22:44:33 +02:00
Alexandre Alapetite 5ca0b893b9
Fix updated entry filters (#6334)
fix https://github.com/FreshRSS/FreshRSS/issues/6331
2024-04-26 13:29:37 +02:00
maTh d656896a95
Fix date issue in mobile view (#6385)
* font-size: 0.7rem; in frss.css

* fix date issue in mobile view

* better CSS for date in header and footer

* RTL

* padding in mobile view
2024-04-26 13:11:38 +02:00
maTh c47b785235
Fix: left side border of search bar input (#6376) 2024-04-25 08:48:04 +02:00
maTh aac3b21a8b
Fix: overflow expanding title in entry header (#6373)
* change HTML structure

* CSS
2024-04-25 08:45:59 +02:00
FromTheMoon 7b92266855
Update Hungarian translation (#6377) 2024-04-25 08:41:30 +02:00
maTh 154a36700c
Refactoring: Rename dotpath into dotnotation (#6369)
* KIND_JSON_DOTPATH -> KIND_JSON_DOTNOTATION

* TYPE_JSON_DOTPATH => TYPE_JSON_DOTNOTATION

* json_dotpath => json_dotnotation

* dotPathsForStandardJsonFeed => dotNotationForStandardJsonFeed

* TYPE_JSON_DOTNOTATION = 'JSON+DotPath' => 'JSON+DotNotation'

* documentation: OPML.md

* convertJsonToRss()

* $dotpaths => $dotnotations

* FreshRSS_Feed_Exception

* comment

* Compatibility TYPE_JSON_DOTPATH

---------

Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>
2024-04-25 08:28:42 +02:00
Alexandre Alapetite 5e66adcc51
Remove noise parameters in query URL (#6371)
* Remove noise parameters in query URL
Remove undeeded `name` and `rid` parameters from saved user query

* Fix logic
2024-04-23 10:59:09 +02:00
Alexandre Alapetite 90fbb524ce
Windows: release SQLite (#6285)
* Windows: release SQLite
fix https://github.com/FreshRSS/FreshRSS/issues/6275

* Do not use sharedPdo for deleting user

* Case of same user

* Help PHPStan
2024-04-21 16:25:37 +02:00
Tibor Repček b37404cce7
Slovakian (SK) gen.php (#6366)
* Update gen.php

Related to the issue #6356

* Update app/i18n/sk/gen.php

---------

Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>
2024-04-21 00:50:10 +02:00
maTh f0d9134478
Json dotpath i18n (#6368)
* Update update.phtml

* Update add.phtml
2024-04-21 00:46:32 +02:00
Tibor Repček a51fb891b5
Slovakian (SK) index.php (#6367)
Related to the issue #6356
2024-04-21 00:45:16 +02:00
Tibor Repček c0fdefcfeb
Slovakian (SK) feedback.php (#6365)
Related to the issue #6356
2024-04-21 00:44:52 +02:00
Tibor Repček 048b36a11b
Slovakian (SK) conf.php (#6364)
Related to the issue #6356
2024-04-21 00:44:15 +02:00
Tibor Repček bbb9834f92
Slovakian (SK) admin.php (#6363)
Related to the issue #6356
2024-04-21 00:43:50 +02:00
Tibor Repček b1c3022a91
Slovakian (SK) sub.php (#6362)
Related to the issue #6356
2024-04-21 00:43:25 +02:00
-Shiken- 339fcfda10
update zh-tw translation for new strings (#6350)
* Update new stings of zhTW translation

 Update new strings of [i18n] Translation Chinese Taiwan (正體中文 zh-tw)

* Update conf.php of zh-tw

* Update feedback.php of zh-tw

* Update gen.php of zh-TW

* Update index.php of zh-TW

* Update install.php of zh-TW

* Update sub.php of zh-tw

not finished yet

* Update sub.php

correction line 152

---------

Co-authored-by: maTh <1645099+math-GH@users.noreply.github.com>
2024-04-21 00:42:03 +02:00
Bartosz Taudul b4d7649504
Update Polish translation. (#6358) 2024-04-21 00:41:30 +02:00
May 2f74ebafa8
[i18n] Added Czech translation (#6344)
* Add Czech tranlation for admin

* Add more translations

* add translations for sub.php

* 2nd check and remove TODO comment from translated strings

* fix

* Update sub.php

* update sub.php

---------

Co-authored-by: maTh <1645099+math-GH@users.noreply.github.com>
2024-04-21 00:40:56 +02:00
yzqzss 5c33e5191a
i18n: update zh-cn translation (#6336)
* i18n: update zh-cn translation

* minor edit

* fix translations syntax

* fix translations syntax: use tab

* better translation

* clarify how Content-Type header auto-set works

* fix a mistranslation discovered by comparing #6335

Co-authored-by: <nanhualyq@gmail.com>

---------

Co-authored-by: maTh <1645099+math-GH@users.noreply.github.com>
2024-04-20 00:03:57 +02:00
maTh 81f6bbf64e
Improve: input width in user query config slider (#6357) 2024-04-20 00:01:34 +02:00
Pedro Paulo 68744f0106
Add new contributor to CREDITS.md (#6354)
* Add new contributor to CREDITS.md

* Update CREDITS.md
2024-04-20 00:00:22 +02:00
FabioL 1308dd6b82
Update of italian translation (#6329)
* Updated italian translations

* Minor fixes

* Workaround bug with `array (`

* Added credits for translations

* Alphabetic order

* Revert lost line

* Update of italian translation

* Unicode ’

* Update app/i18n/it/sub.php

Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>

---------

Co-authored-by: loviuz <loviuz@mailbox.org>
Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>
2024-04-19 23:58:57 +02:00
Cilga Iscan Tercanli f6f7764ba7
Update TR translation #6325 (#6328)
* Update TR translation

* Fix typo

* fix conf.php

* fix sub.php

* Update sub.php

* Update feedback.php

* Update app/i18n/tr/admin.php

---------

Co-authored-by: math-gh <1645099+math-GH@users.noreply.github.com>
Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>
2024-04-19 13:57:57 +02:00
Pedro Paulo dcd3b80a90
Update PT-BR translation (#6345)
* trans: update pt-br translation

* Apply suggestions from code review

* Update app/i18n/pt-br/sub.php
2024-04-19 12:54:31 +02:00
Frans de Jonge a5f87e0671
[i18n] Update Dutch translation for 1.24 (#6343)
Closes #6341.
2024-04-19 12:53:48 +02:00
Sungjoon Moon e1834f61a6
i18n: Update Korean translation (#6342) 2024-04-19 12:52:59 +02:00
zu 7ccbdef935
Update of Japanese translation (#6337)
* Japanese translation of admin.php

* Japanese translation of other files

* Correction by suggestion
2024-04-19 12:52:03 +02:00
zu bc7c680438
[zukizukizuki]Add CREDITS.md (#6339) 2024-04-19 12:51:40 +02:00
maTh 5a14ff3135
i18n: de (#6313)
* Update admin.php

* Update conf.php

* Update conf.php

* Update feedback.php

* Update index.php

* Update conf.php

* Update sub.php

* Update sub.php

* Update sub.php
2024-04-19 12:44:01 +02:00
maTh 3261b7bafb
i18n improved: dotted path -> dot-notation (#6317)
* dotted path -> dot-notation

* dot-notation -> dot notation

* rename json_dotpath => json_dotnotation

* Update app/i18n/fr/sub.php

Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>

* Update app/i18n/fr/sub.php

Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>

* Update app/i18n/fr/sub.php

Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>

* Update app/i18n/nl/sub.php

Co-authored-by: Frans de Jonge <fransdejonge@gmail.com>

* Update app/i18n/nl/sub.php

Co-authored-by: Frans de Jonge <fransdejonge@gmail.com>

* Update app/i18n/nl/sub.php

Co-authored-by: Frans de Jonge <fransdejonge@gmail.com>

* Update app/i18n/nl/sub.php

Co-authored-by: Frans de Jonge <fransdejonge@gmail.com>

* Rename corresponding class

---------

Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>
Co-authored-by: Frans de Jonge <fransdejonge@gmail.com>
2024-04-18 14:00:17 +02:00
maTh 0ffcf41f93
Fix: API mangement section in profile page (#6314) 2024-04-17 08:28:20 +02:00
maTh 22172fd5bc
Download feed configs as opml: button (#6312)
* button in feed configs

* i18n

* naming download file: added .opml

* .opml.xml

* i18n fr

* Fix i18n en-GB

---------

Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>
2024-04-16 15:52:59 +02:00
maTh bf68205ae3
Improved: Reading view: author (#6289)
* move the margin from themes to frss.css + delete font-size

* same source code as normal view for author information
2024-04-15 23:14:34 +02:00
Alexandre Alapetite b22d9279bd
Update @stylistic/stylelint-plugin (#6307)
fix https://github.com/FreshRSS/FreshRSS/issues/6281
2024-04-15 15:50:00 +02:00
maTh 6901ff1e70
improved: Gap between header and first image (#6299) 2024-04-14 23:49:26 +02:00
maTh 2846fdba6f
Fix Clipboard sharing (#6301) 2024-04-14 23:48:13 +02:00
Hkcomori 18532eaa61
Improve Japanese translation for CSS selector (#6294) 2024-04-13 12:32:12 +02:00
Frans de Jonge e19b8a4e0a
Add some error prevention to Debian/Ubuntu installation docs (#6290)
Reverts a minor part of <https://github.com/FreshRSS/FreshRSS/pull/2164>.
People who want to use the root can easily figure out how to do that themselves.

Fixes #4955.
2024-04-12 23:19:23 +02:00
Alexandre Alapetite 7aaed6092f
SimplePie replace iframe allow attribute (#6274)
* SimplePie strip iframe allow attribute
https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe#allow

Besides security, the `allow autoplay` atttribute is especially problematic on mobile (Firefox on Android) as it asks to open the YouTube app as soon as the article is opened.

Example of code before:

```html
<iframe data-original="https://www.youtube.com/embed/??????feature=oembed" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen="" sandbox="allow-scripts allow-same-origin"></iframe>
```

* Replace allow attribute

* Allow more
2024-04-11 08:48:50 +02:00
Jacopo Galati 30f147410d
fix selector for clipboard sharing option (#6277)
Clipboard sharing uses  <button> instead of <a>, so the selector does not find it
2024-04-11 08:48:32 +02:00
Alexandre Alapetite 350edf398c
PHP 8.3 #[\Override] (#6273)
* PHP 8.3 #[\Override]
https://php.watch/versions/8.3/override-attr

With PHPStan `checkMissingOverrideMethodAttribute` https://phpstan.org/config-reference#checkmissingoverridemethodattribute

And modified the call to phpstan-next on the model of https://github.com/FreshRSS/Extensions/pull/228 (more robust than the find method, which gave some strange errors)

* Update extension example accordingly
2024-04-10 15:33:43 +02:00
Alexandre Alapetite 8280e3d88e
Allow admins to create user even when there are TOS (#6269)
fix https://github.com/FreshRSS/FreshRSS/issues/5409
2024-04-08 14:49:03 +02:00
Alexandre Alapetite 72933b301e
Fix paging posts per page (#6268)
* Fix paging posts per page
fix https://github.com/FreshRSS/FreshRSS/issues/6062
Due to strange scoping of anonymous function trying to update a static property

* Better type syntax
2024-04-08 14:48:30 +02:00
Alexandre Alapetite 6e12781821
Fix SimplePie absolutize URL for several cases (#6270)
This is especially relevant for HTML+XPath mode, for which we rely on proper URL "absolutize"

Upstream PR https://github.com/simplepie/simplepie/pull/861
2024-04-08 11:13:01 +02:00
Alexandre Alapetite 283341e75e
Allow multiple authors on enclosures (#6272)
fix https://github.com/FreshRSS/FreshRSS/issues/5066
2024-04-08 11:10:10 +02:00
Alexandre Alapetite c052149e5a
Avoid duplicates in Dynamic OPML (#6264)
Avoid duplicate feeds if the dynamic OPML contains the same feed multiple times
2024-04-07 21:45:40 +02:00
Alexandre Alapetite e3c86a164d
HTTP Get allow UTF-8 even when charset is far from top (#6271)
* HTTP Get allow UTF-8 even when charset is far from top
fix https://github.com/FreshRSS/FreshRSS/issues/5586

The case was an HTML document with 15k whitespace then 1.2k of scripts before the `<meta charset="utf-8">` (far from the 1024 bytes suggested by the spec..., and too far for DOMDocument)

* Rewording

* Trim also vertical tab + comment
2024-04-06 23:02:50 +02:00
Alexandre Alapetite 1c684a91d2
Minor update dev libraries (#6265) 2024-04-06 11:40:55 +02:00
maTh e8bd54e557
Merge branch 'edge' into edge 2022-03-24 22:52:35 +01:00
Hw c37073f1e6 remove invalid xml 1.0 characters 2021-11-24 22:01:52 +08:00
HuangWei 45a729a576
Merge branch 'edge' into edge 2021-11-24 21:08:55 +08:00
Hw 24ec1814b5 Use REPLACEMENT CHARACTER for invalid UTF-8 character 2021-11-21 20:34:11 +08:00
Hw 5c92df2260 Ignore Invalid utf-8 characters 2021-11-21 18:01:43 +08:00
196 changed files with 2817 additions and 2426 deletions

1
.gitignore vendored
View File

@ -5,6 +5,7 @@
/vendor/
/data.back/
/constants.local.php
/.idea
.vscode/

View File

@ -3,7 +3,7 @@
"plugins": [
"stylelint-order",
"stylelint-scss",
"stylelint-stylistic"
"@stylistic/stylelint-plugin"
],
"rules": {
"at-rule-empty-line-before": [
@ -11,27 +11,27 @@
"ignoreAtRules": [ "after-comment", "else" ]
}
],
"stylistic/at-rule-name-space-after": [
"@stylistic/at-rule-name-space-after": [
"always", {
"ignoreAtRules": [ "after-comment" ]
}
],
"stylistic/block-closing-brace-newline-after": [
"@stylistic/block-closing-brace-newline-after": [
"always", {
"ignoreAtRules": [ "if", "else" ]
}
],
"stylistic/block-closing-brace-newline-before": "always-multi-line",
"stylistic/block-opening-brace-newline-after": "always-multi-line",
"stylistic/block-opening-brace-space-before": "always",
"stylistic/color-hex-case": "lower",
"@stylistic/block-closing-brace-newline-before": "always-multi-line",
"@stylistic/block-opening-brace-newline-after": "always-multi-line",
"@stylistic/block-opening-brace-space-before": "always",
"@stylistic/color-hex-case": "lower",
"color-hex-length": "short",
"color-no-invalid-hex": true,
"stylistic/declaration-colon-space-after": "always",
"stylistic/declaration-colon-space-before": "never",
"stylistic/indentation": "tab",
"@stylistic/declaration-colon-space-after": "always",
"@stylistic/declaration-colon-space-before": "never",
"@stylistic/indentation": "tab",
"no-descending-specificity": null,
"stylistic/no-eol-whitespace": true,
"@stylistic/no-eol-whitespace": true,
"property-no-vendor-prefix": true,
"rule-empty-line-before": [
"always", {

View File

@ -178,6 +178,7 @@ People are sorted by name so please keep this order.
* [Patrick Crandol](https://github.com/pattems): [contributions](https://github.com/FreshRSS/FreshRSS/pulls?q=is:pr+author:pattems)
* [Paulius Šukys](https://github.com/psukys): [contributions](https://github.com/FreshRSS/FreshRSS/pulls?q=is:pr+author:psukys), [Web](http://sukys.eu)
* [Paweł Kalemba](https://github.com/pkalemba): [contributions](https://github.com/FreshRSS/FreshRSS/pulls?q=is:pr+author:pkalemba)
* [PedroPMS](https://github.com/PedroPMS): [contributions](https://github.com/FreshRSS/FreshRSS/pulls?q=is:pr+author:PedroPMS)
* [perrinjerome](https://github.com/perrinjerome): [contributions](https://github.com/FreshRSS/FreshRSS/pulls?q=is:pr+author:perrinjerome)
* [Peter Stoinov](https://github.com/stoinov): [contributions](https://github.com/FreshRSS/FreshRSS/pulls?q=is:pr+author:stoinov), [Web](https://stoinov.com)
* [Petra Lamborn](https://github.com/petraoleum): [contributions](https://github.com/FreshRSS/FreshRSS/pulls?q=is:pr+author:petraoleum), [Web](https://petras.space)
@ -247,3 +248,4 @@ People are sorted by name so please keep this order.
* [yzqzss|一座桥在水上](https://github.com/yzqzss): [contributions](https://github.com/FreshRSS/FreshRSS/pulls?q=is:pr+author:yzqzss), [Web](https://blog.othing.xyz/)
* [Zhaofeng Li](https://github.com/zhaofengli): [contributions](https://github.com/FreshRSS/FreshRSS/pulls?q=is:pr+author:zhaofengli), [Web](https://zhaofeng.li/)
* [Zhiyuan Zheng](https://github.com/zhzy0077): [contributions](https://github.com/FreshRSS/FreshRSS/pulls?q=is:pr+author:zhzy0077)
* [zukizukizuki](https://github.com/zukizukizuki): [contributions](https://github.com/FreshRSS/FreshRSS/pulls?q=is:pr+author:zukizukizuki), [Web](https://zukkie.link/)

View File

@ -21,7 +21,7 @@ Example for Linux Debian / Ubuntu:
```sh
# Install default Docker Compose and automatically the corresponding version of Docker
apt install docker-compose
apt install docker-compose-v2
```
## Quick run
@ -194,6 +194,8 @@ docker run -d --restart unless-stopped --log-opt max-size=10m \
In the FreshRSS setup, you will then specify the name of the container (`freshrss-db`) as the host for the database.
See also the section [Docker Compose with PostgreSQL](#docker-compose-with-postgresql) below.
### [MySQL](https://hub.docker.com/_/mysql/) or [MariaDB](https://hub.docker.com/_/mariadb)
```sh
@ -285,13 +287,13 @@ See [`docker-compose.yml`](./freshrss/docker-compose.yml)
```sh
cd ./FreshRSS/Docker/freshrss/
# Update
docker-compose pull
docker compose pull
# Run
docker-compose -f docker-compose.yml -f docker-compose-local.yml up -d --remove-orphans
docker compose -f docker-compose.yml -f docker-compose-local.yml up -d --remove-orphans
# Logs
docker-compose logs -f --timestamps
docker compose logs -f --timestamps
# Stop
docker-compose down --remove-orphans
docker compose down --remove-orphans
```
Detailed (partial) example of Docker Compose for FreshRSS:
@ -378,13 +380,15 @@ See [`docker-compose-db.yml`](./freshrss/docker-compose-db.yml)
```sh
cd ./FreshRSS/Docker/freshrss/
# Update
docker-compose -f docker-compose.yml -f docker-compose-db.yml pull
docker compose -f docker-compose.yml -f docker-compose-db.yml pull
# Run
docker-compose -f docker-compose.yml -f docker-compose-db.yml -f docker-compose-local.yml up -d --remove-orphans
docker compose -f docker-compose.yml -f docker-compose-db.yml -f docker-compose-local.yml up -d --remove-orphans
# Logs
docker-compose -f docker-compose.yml -f docker-compose-db.yml logs -f --timestamps
docker compose -f docker-compose.yml -f docker-compose-db.yml logs -f --timestamps
```
See also the section [Migrate database](#migrate-database) below to upgrade to a major PostgreSQL version with Docker Compose.
### Docker Compose for development
Use the local (git) FreshRSS source code instead of the one inside the Docker container,
@ -396,11 +400,11 @@ See [`docker-compose-development.yml`](./freshrss/docker-compose-development.yml
cd ./FreshRSS/Docker/freshrss/
# Update
git pull --ff-only --prune
docker-compose pull
docker compose pull
# Run
docker-compose -f docker-compose-development.yml -f docker-compose.yml -f docker-compose-local.yml up --remove-orphans
docker compose -f docker-compose-development.yml -f docker-compose.yml -f docker-compose-local.yml up --remove-orphans
# Stop with [Control]+[C] and purge
docker-compose down --remove-orphans --volumes
docker compose down --remove-orphans --volumes
```
> You can combine it with `-f docker-compose-db.yml` to spin a PostgreSQL database.
@ -446,13 +450,13 @@ See [`docker-compose-proxy.yml`](./freshrss/docker-compose-proxy.yml)
```sh
cd ./FreshRSS/Docker/freshrss/
# Update
docker-compose -f docker-compose.yml -f docker-compose-proxy.yml pull
docker compose -f docker-compose.yml -f docker-compose-proxy.yml pull
# Run
docker-compose -f docker-compose.yml -f docker-compose-proxy.yml up -d --remove-orphans
docker compose -f docker-compose.yml -f docker-compose-proxy.yml up -d --remove-orphans
# Logs
docker-compose -f docker-compose.yml -f docker-compose-proxy.yml logs -f --timestamps
docker compose -f docker-compose.yml -f docker-compose-proxy.yml logs -f --timestamps
# Stop
docker-compose -f docker-compose.yml -f docker-compose-proxy.yml down --remove-orphans
docker compose -f docker-compose.yml -f docker-compose-proxy.yml down --remove-orphans
```
> You can combine it with `-f docker-compose-db.yml` to spin a PostgreSQL database.
@ -650,3 +654,46 @@ docker run -d --restart unless-stopped --log-opt max-size=10m \
--name freshrss_cron freshrss/freshrss:alpine \
crond -f -d 6
```
## Migrate database
Our [CLI](../cli/README.md) offers commands to back-up and migrate user databases,
with `cli/db-backup.php` and `cli/db-restore.php` in particular.
Here is an example (assuming our [Docker Compose example](#docker-compose-with-postgresql))
intended for migrating to a newer major version of PostgreSQL,
but which can also be used to migrate between other databases (e.g. MySQL to PostgreSQL).
```sh
# Stop FreshRSS container (Web server + cron) during maintenance
docker compose down freshrss
# Optional additional pre-upgrade back-up using PostgreSQL own mechanism
docker compose -f docker-compose-db.yml \
exec freshrss-db pg_dump -U freshrss freshrss | gzip -9 > freshrss-postgres-backup.sql.gz
# ------↑ Name of your PostgreSQL Docker container
# -----------------------------↑ Name of your PostgreSQL user for FreshRSS
# --------------------------------------↑ Name of your PostgreSQL database for FreshRSS
# Back-up all users respective tables to SQLite files
docker compose -f docker-compose.yml -f docker-compose-db.yml \
run --rm freshrss cli/db-backup.php
# Remove old database (PostgreSQL) container and its data volume
docker compose -f docker-compose-db.yml \
down --volumes freshrss-db
# Edit your Compose file to use new database (e.g. newest postgres:xx)
nano docker-compose-db.yml
# Start new database (PostgreSQL) container and its new empty data volume
docker compose -f docker-compose.yml -f docker-compose-db.yml \
up -d freshrss-db
# Restore all users respective tables from SQLite files
docker compose -f docker-compose.yml -f docker-compose-db.yml \
run --rm freshrss cli/db-restore.php --delete-backup
# Restart a new FreshRSS container after maintenance
docker compose -f docker-compose.yml -f docker-compose-db.yml up -d freshrss
```

View File

@ -7,7 +7,7 @@ volumes:
services:
traefik:
image: traefik:2.11
image: traefik:3.0
container_name: traefik
restart: unless-stopped
logging:

View File

@ -126,7 +126,7 @@ sudo cli/access-permissions.sh
sudo chown www-data:www-data -R .
# Publier FreshRSS dans votre répertoire HTML public
sudo ln -s /usr/share/FreshRSS/p /var/www/html/FreshRSS
[ ! -e "/var/www/html/FreshRSS" ] && sudo ln -s /usr/share/FreshRSS/p /var/www/html/FreshRSS || echo "/var/www/html/FreshRSS existe déjà"
# Naviguez vers http://example.net/FreshRSS pour terminer linstallation
# (Si vous le faite depuis localhost, vous pourrez avoir à ajuster le réglage de votre adresse publique)
# ou utilisez linterface en ligne de commande

View File

@ -12,6 +12,7 @@ class FreshRSS_category_Controller extends FreshRSS_ActionController {
* underlying framework.
*
*/
#[\Override]
public function firstAction(): void {
if (!FreshRSS_Auth::hasAccess()) {
Minz_Error::error(403);

View File

@ -10,6 +10,7 @@ class FreshRSS_configure_Controller extends FreshRSS_ActionController {
* the common boilerplate for every action. It is triggered by the
* underlying framework.
*/
#[\Override]
public function firstAction(): void {
if (!FreshRSS_Auth::hasAccess()) {
Minz_Error::error(403);
@ -373,7 +374,6 @@ class FreshRSS_configure_Controller extends FreshRSS_ActionController {
if ('' === $name) {
$name = _t('conf.query.number', $id + 1);
}
$queryParams['name'] = $name;
if (!empty($params['get']) && is_string($params['get'])) {
$queryParams['get'] = htmlspecialchars_decode($params['get'], ENT_QUOTES);
}
@ -398,6 +398,7 @@ class FreshRSS_configure_Controller extends FreshRSS_ActionController {
$queryParams['shareOpml'] = (bool)$params['shareOpml'];
}
$queryParams['url'] = Minz_Url::display(['params' => $queryParams]);
$queryParams['name'] = $name;
$queries = FreshRSS_Context::userConf()->queries;
$queries[$id] = (new FreshRSS_UserQuery($queryParams, FreshRSS_Context::categories(), FreshRSS_Context::labels()))->toArray();
@ -441,6 +442,7 @@ class FreshRSS_configure_Controller extends FreshRSS_ActionController {
$queries[$key] = (new FreshRSS_UserQuery($query, FreshRSS_Context::categories(), FreshRSS_Context::labels()))->toArray();
}
$params = $_GET;
unset($params['name']);
unset($params['rid']);
$params['url'] = Minz_Url::display(['params' => $params]);
$params['name'] = _t('conf.query.number', count($queries) + 1);

View File

@ -16,6 +16,7 @@ class FreshRSS_entry_Controller extends FreshRSS_ActionController {
* the common boilerplate for every action. It is triggered by the
* underlying framework.
*/
#[\Override]
public function firstAction(): void {
if (!FreshRSS_Auth::hasAccess()) {
Minz_Error::error(403);

View File

@ -10,6 +10,7 @@ class FreshRSS_extension_Controller extends FreshRSS_ActionController {
* the common boiler plate for every action. It is triggered by the
* underlying framework.
*/
#[\Override]
public function firstAction(): void {
if (!FreshRSS_Auth::hasAccess()) {
Minz_Error::error(403);

View File

@ -10,6 +10,7 @@ class FreshRSS_feed_Controller extends FreshRSS_ActionController {
* the common boiler plate for every action. It is triggered by the
* underlying framework.
*/
#[\Override]
public function firstAction(): void {
if (!FreshRSS_Auth::hasAccess()) {
// Token is useful in the case that anonymous refresh is forbidden
@ -258,7 +259,7 @@ class FreshRSS_feed_Controller extends FreshRSS_ActionController {
if (!empty($xPathSettings)) {
$attributes['xpath'] = $xPathSettings;
}
} elseif ($feed_kind === FreshRSS_Feed::KIND_JSON_DOTPATH) {
} elseif ($feed_kind === FreshRSS_Feed::KIND_JSON_DOTNOTATION) {
$jsonSettings = [];
if (Minz_Request::paramString('jsonFeedTitle') !== '') {
$jsonSettings['feedTitle'] = Minz_Request::paramString('jsonFeedTitle', true);
@ -294,7 +295,7 @@ class FreshRSS_feed_Controller extends FreshRSS_ActionController {
$jsonSettings['itemUid'] = Minz_Request::paramString('jsonItemUid', true);
}
if (!empty($jsonSettings)) {
$attributes['json_dotpath'] = $jsonSettings;
$attributes['json_dotnotation'] = $jsonSettings;
}
}
@ -454,8 +455,8 @@ class FreshRSS_feed_Controller extends FreshRSS_ActionController {
continue; //When PubSubHubbub is used, do not pull refresh so often
}
if ($feed->mute()) {
continue; //Feed refresh is disabled
if ($feed->mute() && $feed_id === null) {
continue; // If the feed is disabled, only allow refresh if manually requested for that specific feed
}
$mtime = $feed->cacheModifiedTime() ?: 0;
$ttl = $feed->ttl();
@ -496,10 +497,10 @@ class FreshRSS_feed_Controller extends FreshRSS_ActionController {
if ($simplePie === null) {
throw new FreshRSS_Feed_Exception('XML+XPath parsing failed for [' . $feed->url(false) . ']');
}
} elseif ($feed->kind() === FreshRSS_Feed::KIND_JSON_DOTPATH) {
} elseif ($feed->kind() === FreshRSS_Feed::KIND_JSON_DOTNOTATION) {
$simplePie = $feed->loadJson();
if ($simplePie === null) {
throw new FreshRSS_Feed_Exception('JSON dotpath parsing failed for [' . $feed->url(false) . ']');
throw new FreshRSS_Feed_Exception('JSON dot notation parsing failed for [' . $feed->url(false) . ']');
}
} elseif ($feed->kind() === FreshRSS_Feed::KIND_JSONFEED) {
$simplePie = $feed->loadJson();
@ -572,6 +573,7 @@ class FreshRSS_feed_Controller extends FreshRSS_ActionController {
$existingHash = $existingHashForGuids[$entry->guid()];
if (strcasecmp($existingHash, $entry->hash()) !== 0) {
//This entry already exists but has been updated
$entry->_isUpdated(true);
//Minz_Log::debug('Entry with GUID `' . $entry->guid() . '` updated in feed ' . $feed->url(false) .
//', old hash ' . $existingHash . ', new hash ' . $entry->hash());
$entry->_isFavorite(null); // Do not change favourite state
@ -586,6 +588,11 @@ class FreshRSS_feed_Controller extends FreshRSS_ActionController {
continue;
}
$entry->applyFilterActions($titlesAsRead);
if ($readWhenSameTitleInFeed > 0) {
$titlesAsRead[$entry->title()] = true;
}
if (!$entry->isRead()) {
$needFeedCacheRefresh = true; //Maybe
$nbMarkedUnread++;
@ -600,6 +607,7 @@ class FreshRSS_feed_Controller extends FreshRSS_ActionController {
$entryDAO->updateEntry($entry->toArray());
}
} else {
$entry->_isUpdated(false);
$id = uTimeString();
$entry->_id($id);
@ -1113,7 +1121,7 @@ class FreshRSS_feed_Controller extends FreshRSS_ActionController {
$feed_id = Minz_Request::paramInt('id');
$content_selector = Minz_Request::paramString('selector');
if (!$content_selector) {
if ($content_selector === '') {
$this->view->fatalError = _t('feedback.sub.feed.selector_preview.selector_empty');
return;
}
@ -1135,11 +1143,12 @@ class FreshRSS_feed_Controller extends FreshRSS_ActionController {
//Get feed.
$feed = $entry->feed();
if ($feed === null) {
$this->view->fatalError = _t('feedback.sub.feed.selector_preview.no_feed');
return;
}
$feed->_pathEntries($content_selector);
$feed->_attribute('path_entries_filter', Minz_Request::paramString('selector_filter', true));
//Fetch & select content.
try {

View File

@ -15,6 +15,7 @@ class FreshRSS_importExport_Controller extends FreshRSS_ActionController {
* the common boilerplate for every action. It is triggered by the
* underlying framework.
*/
#[\Override]
public function firstAction(): void {
if (!FreshRSS_Auth::hasAccess()) {
Minz_Error::error(403);

View File

@ -6,6 +6,7 @@ declare(strict_types=1);
*/
class FreshRSS_index_Controller extends FreshRSS_ActionController {
#[\Override]
public function firstAction(): void {
$this->view->html_url = Minz_Url::display(['c' => 'index', 'a' => 'index'], 'html', 'root');
}
@ -73,9 +74,8 @@ class FreshRSS_index_Controller extends FreshRSS_ActionController {
$this->view->callbackBeforeEntries = static function (FreshRSS_View $view) {
try {
FreshRSS_Context::$number++; //+1 for articles' page
$view->entries = FreshRSS_index_Controller::listEntriesByContext();
FreshRSS_Context::$number--;
// +1 to account for paging logic
$view->entries = FreshRSS_index_Controller::listEntriesByContext(FreshRSS_Context::$number + 1);
ob_start(); //Buffer "one entry at a time"
} catch (FreshRSS_EntriesGetter_Exception $e) {
Minz_Log::notice($e->getMessage());
@ -244,10 +244,11 @@ class FreshRSS_index_Controller extends FreshRSS_ActionController {
/**
* This method returns a list of entries based on the Context object.
* @param int $postsPerPage override `FreshRSS_Context::$number`
* @return Traversable<FreshRSS_Entry>
* @throws FreshRSS_EntriesGetter_Exception
*/
public static function listEntriesByContext(): Traversable {
public static function listEntriesByContext(?int $postsPerPage = null): Traversable {
$entryDAO = FreshRSS_Factory::createEntryDao();
$get = FreshRSS_Context::currentGet(true);
@ -266,7 +267,7 @@ class FreshRSS_index_Controller extends FreshRSS_ActionController {
foreach ($entryDAO->listWhere(
$type, $id, FreshRSS_Context::$state, FreshRSS_Context::$order,
FreshRSS_Context::$number, FreshRSS_Context::$offset, FreshRSS_Context::$first_id,
$postsPerPage ?? FreshRSS_Context::$number, FreshRSS_Context::$offset, FreshRSS_Context::$first_id,
FreshRSS_Context::$search, $date_min)
as $entry) {
yield $entry;

View File

@ -12,6 +12,7 @@ class FreshRSS_javascript_Controller extends FreshRSS_ActionController {
parent::__construct(FreshRSS_ViewJavascript::class);
}
#[\Override]
public function firstAction(): void {
$this->view->_layout(null);
}

View File

@ -20,6 +20,7 @@ class FreshRSS_stats_Controller extends FreshRSS_ActionController {
* the common boilerplate for every action. It is triggered by the
* underlying framework.
*/
#[\Override]
public function firstAction(): void {
if (!FreshRSS_Auth::hasAccess()) {
Minz_Error::error(403);

View File

@ -10,6 +10,7 @@ class FreshRSS_subscription_Controller extends FreshRSS_ActionController {
* the common boilerplate for every action. It is triggered by the
* underlying framework.
*/
#[\Override]
public function firstAction(): void {
if (!FreshRSS_Auth::hasAccess()) {
Minz_Error::error(403);
@ -237,7 +238,7 @@ class FreshRSS_subscription_Controller extends FreshRSS_ActionController {
$xPathSettings['itemUid'] = Minz_Request::paramString('xPathItemUid', true);
if (!empty($xPathSettings))
$feed->_attribute('xpath', $xPathSettings);
} elseif ($feed->kind() === FreshRSS_Feed::KIND_JSON_DOTPATH) {
} elseif ($feed->kind() === FreshRSS_Feed::KIND_JSON_DOTNOTATION) {
$jsonSettings = [];
if (Minz_Request::paramString('jsonFeedTitle') !== '') {
$jsonSettings['feedTitle'] = Minz_Request::paramString('jsonFeedTitle', true);
@ -273,7 +274,7 @@ class FreshRSS_subscription_Controller extends FreshRSS_ActionController {
$jsonSettings['itemUid'] = Minz_Request::paramString('jsonItemUid', true);
}
if (!empty($jsonSettings)) {
$feed->_attribute('json_dotpath', $jsonSettings);
$feed->_attribute('json_dotnotation', $jsonSettings);
}
}

View File

@ -16,6 +16,7 @@ class FreshRSS_tag_Controller extends FreshRSS_ActionController {
* the common boilerplate for every action. It is triggered by the
* underlying framework.
*/
#[\Override]
public function firstAction(): void {
// If ajax request, we do not print layout
$this->ajax = Minz_Request::paramBoolean('ajax');

View File

@ -113,6 +113,7 @@ class FreshRSS_update_Controller extends FreshRSS_ActionController {
return $return == 0 ? true : 'Git error: ' . $line;
}
#[\Override]
public function firstAction(): void {
if (!FreshRSS_Auth::hasAccess('admin')) {
Minz_Error::error(403);

View File

@ -317,8 +317,14 @@ class FreshRSS_user_Controller extends FreshRSS_ActionController {
);
}
$tos_enabled = file_exists(TOS_FILENAME);
$accept_tos = Minz_Request::paramBoolean('accept_tos');
if (!FreshRSS_Auth::hasAccess('admin')) {
// TODO: We may want to ask the user to accept TOS before first login
$tos_enabled = file_exists(TOS_FILENAME);
$accept_tos = Minz_Request::paramBoolean('accept_tos');
if ($tos_enabled && !$accept_tos) {
Minz_Request::bad(_t('user.tos.feedback.invalid'), $badRedirectUrl);
}
}
if (FreshRSS_Context::systemConf()->force_email_validation && empty($email)) {
Minz_Request::bad(
@ -334,13 +340,6 @@ class FreshRSS_user_Controller extends FreshRSS_ActionController {
);
}
if ($tos_enabled && !$accept_tos) {
Minz_Request::bad(
_t('user.tos.feedback.invalid'),
$badRedirectUrl
);
}
$ok = self::createUser($new_user_name, $email, $passwordPlain, [
'language' => Minz_Request::paramString('new_user_language') ?: FreshRSS_Context::userConf()->language,
'timezone' => Minz_Request::paramString('new_user_timezone'),
@ -390,8 +389,10 @@ class FreshRSS_user_Controller extends FreshRSS_ActionController {
$ok &= is_dir($user_data);
if ($ok) {
FreshRSS_fever_Util::deleteKey($username);
Minz_ModelPdo::$usesSharedPdo = false;
$oldUserDAO = FreshRSS_Factory::createUserDao($username);
$ok &= $oldUserDAO->deleteUser();
Minz_ModelPdo::$usesSharedPdo = true;
$ok &= recursive_unlink($user_data);
$filenames = glob(PSHB_PATH . '/feeds/*/' . $username . '.txt');
if (!empty($filenames)) {

View File

@ -50,7 +50,6 @@ class FreshRSS_BooleanSearch {
$all_matches = [];
if (preg_match_all('/\bsearch:(?P<delim>[\'"])(?P<search>.*)(?P=delim)/U', $input, $matchesFound)) {
$all_matches[] = $matchesFound;
}
if (preg_match_all('/\bsearch:(?P<search>[^\s"]*)/', $input, $matchesFound)) {
$all_matches[] = $matchesFound;
@ -291,6 +290,7 @@ class FreshRSS_BooleanSearch {
$this->searches[] = $search;
}
#[\Override]
public function __toString(): string {
return $this->getRawInput();
}

View File

@ -214,6 +214,7 @@ class FreshRSS_Category extends Minz_Model {
// The feed does not exist in the current category, so add that feed
$dryRunFeed->_category($this);
$ok &= ($feedDAO->addFeedObject($dryRunFeed) !== false);
$existingFeeds[$dryRunFeed->url()] = $dryRunFeed;
} else {
$existingFeed = $existingFeeds[$dryRunFeed->url()];
if ($existingFeed->mute()) {

View File

@ -4,6 +4,7 @@ declare(strict_types=1);
class FreshRSS_CategoryDAOSQLite extends FreshRSS_CategoryDAO {
/** @param array<int|string> $errorInfo */
#[\Override]
protected function autoUpdateDb(array $errorInfo): bool {
if ($tableInfo = $this->pdo->query("PRAGMA table_info('category')")) {
$columns = $tableInfo->fetchAll(PDO::FETCH_COLUMN, 1);

View File

@ -48,6 +48,18 @@ class FreshRSS_DatabaseDAO extends Minz_ModelPdo {
}
}
public function exits(): bool {
$sql = 'SELECT * FROM `_entry` LIMIT 1';
$stm = $this->pdo->query($sql);
if ($stm !== false) {
$res = $stm->fetchAll(PDO::FETCH_COLUMN, 0);
if ($res !== false) {
return true;
}
}
return false;
}
public function tablesAreCorrect(): bool {
$res = $this->fetchAssoc('SHOW TABLES');
if ($res == null) {
@ -242,6 +254,7 @@ SQL;
}
$error = '';
$databaseDAO = FreshRSS_Factory::createDatabaseDAO();
$userDAO = FreshRSS_Factory::createUserDao();
$catDAO = FreshRSS_Factory::createCategoryDao();
$feedDAO = FreshRSS_Factory::createFeedDao();
@ -259,15 +272,18 @@ SQL;
$error = 'Error: SQLite import file is not readable: ' . $filename;
} elseif ($clearFirst) {
$userDAO->deleteUser();
$userDAO = FreshRSS_Factory::createUserDao();
if ($this->pdo->dbType() === 'sqlite') {
//We cannot just delete the .sqlite file otherwise PDO gets buggy.
//SQLite is the only one with database-level optimization, instead of at table level.
$this->optimize();
}
} else {
$nbEntries = $entryDAO->countUnreadRead();
if (!empty($nbEntries['all'])) {
$error = 'Error: Destination database already contains some entries!';
if ($databaseDAO->exits()) {
$nbEntries = $entryDAO->countUnreadRead();
if (isset($nbEntries['all']) && $nbEntries['all'] > 0) {
$error = 'Error: Destination database already contains some entries!';
}
}
}
break;

View File

@ -10,6 +10,7 @@ class FreshRSS_DatabaseDAOPGSQL extends FreshRSS_DatabaseDAOSQLite {
public const UNDEFINED_COLUMN = '42703';
public const UNDEFINED_TABLE = '42P01';
#[\Override]
public function tablesAreCorrect(): bool {
$db = FreshRSS_Context::systemConf()->db;
$sql = 'SELECT * FROM pg_catalog.pg_tables where tableowner=:tableowner';
@ -34,6 +35,7 @@ class FreshRSS_DatabaseDAOPGSQL extends FreshRSS_DatabaseDAOSQLite {
}
/** @return array<array<string,string|int|bool|null>> */
#[\Override]
public function getSchema(string $table): array {
$sql = <<<'SQL'
SELECT column_name AS field, data_type AS type, column_default AS default, is_nullable AS null
@ -47,6 +49,7 @@ SQL;
* @param array<string,string|int|bool|null> $dao
* @return array{'name':string,'type':string,'notnull':bool,'default':mixed}
*/
#[\Override]
public function daoToSchema(array $dao): array {
return [
'name' => (string)($dao['field']),
@ -56,6 +59,7 @@ SQL;
];
}
#[\Override]
public function size(bool $all = false): int {
if ($all) {
$db = FreshRSS_Context::systemConf()->db;
@ -75,7 +79,7 @@ SQL;
return (int)($res[0] ?? -1);
}
#[\Override]
public function optimize(): bool {
$ok = true;
$tables = ['category', 'feed', 'entry', 'entrytmp', 'tag', 'entrytag'];

View File

@ -6,6 +6,7 @@ declare(strict_types=1);
*/
class FreshRSS_DatabaseDAOSQLite extends FreshRSS_DatabaseDAO {
#[\Override]
public function tablesAreCorrect(): bool {
$sql = 'SELECT name FROM sqlite_master WHERE type="table"';
$stm = $this->pdo->query($sql);
@ -30,18 +31,21 @@ class FreshRSS_DatabaseDAOSQLite extends FreshRSS_DatabaseDAO {
}
/** @return array<array<string,string|int|bool|null>> */
#[\Override]
public function getSchema(string $table): array {
$sql = 'PRAGMA table_info(' . $table . ')';
$stm = $this->pdo->query($sql);
return $stm ? $this->listDaoToSchema($stm->fetchAll(PDO::FETCH_ASSOC) ?: []) : [];
}
#[\Override]
public function entryIsCorrect(): bool {
return $this->checkTable('entry', [
'id', 'guid', 'title', 'author', 'content', 'link', 'date', 'lastSeen', 'hash', 'is_read', 'is_favorite', 'id_feed', 'tags',
]);
}
#[\Override]
public function entrytmpIsCorrect(): bool {
return $this->checkTable('entrytmp', [
'id', 'guid', 'title', 'author', 'content', 'link', 'date', 'lastSeen', 'hash', 'is_read', 'is_favorite', 'id_feed', 'tags'
@ -52,6 +56,7 @@ class FreshRSS_DatabaseDAOSQLite extends FreshRSS_DatabaseDAO {
* @param array<string,string|int|bool|null> $dao
* @return array{'name':string,'type':string,'notnull':bool,'default':mixed}
*/
#[\Override]
public function daoToSchema(array $dao): array {
return [
'name' => (string)$dao['name'],
@ -61,6 +66,7 @@ class FreshRSS_DatabaseDAOSQLite extends FreshRSS_DatabaseDAO {
];
}
#[\Override]
public function size(bool $all = false): int {
$sum = 0;
if ($all) {
@ -73,6 +79,7 @@ class FreshRSS_DatabaseDAOSQLite extends FreshRSS_DatabaseDAO {
return $sum;
}
#[\Override]
public function optimize(): bool {
$ok = $this->pdo->exec('VACUUM') !== false;
if (!$ok) {

View File

@ -24,6 +24,7 @@ class FreshRSS_Entry extends Minz_Model {
private string $hash = '';
private ?bool $is_read;
private ?bool $is_favorite;
private bool $is_updated = false;
private int $feedId;
private ?FreshRSS_Feed $feed;
/** @var array<string> */
@ -201,7 +202,7 @@ HTML;
if (!$allowDuplicateEnclosures && self::containsLink($content, $elink)) {
continue;
}
$credit = $enclosure['credit'] ?? '';
$credits = $enclosure['credit'] ?? '';
$description = nl2br($enclosure['description'] ?? '', true);
$length = $enclosure['length'] ?? 0;
$medium = $enclosure['medium'] ?? '';
@ -238,8 +239,13 @@ HTML;
. '" title="' . $etitle . '">💾</a></p>';
}
if ($credit != '') {
$content .= '<p class="enclosure-credits">© ' . $credit . '</p>';
if ($credits != '') {
if (!is_array($credits)) {
$credits = [$credits];
}
foreach ($credits as $credit) {
$content .= '<p class="enclosure-credits">© ' . $credit . '</p>';
}
}
if ($description != '') {
$content .= '<figcaption class="enclosure-description">' . $description . '</figcaption>';
@ -250,7 +256,7 @@ HTML;
return $content;
}
/** @return Traversable<array{'url':string,'type'?:string,'medium'?:string,'length'?:int,'title'?:string,'description'?:string,'credit'?:string,'height'?:int,'width'?:int,'thumbnails'?:array<string>}> */
/** @return Traversable<array{'url':string,'type'?:string,'medium'?:string,'length'?:int,'title'?:string,'description'?:string,'credit'?:string|array<string>,'height'?:int,'width'?:int,'thumbnails'?:array<string>}> */
public function enclosures(bool $searchBodyImages = false): Traversable {
$attributeEnclosures = $this->attributeArray('enclosures');
if (is_iterable($attributeEnclosures)) {
@ -389,6 +395,18 @@ HTML;
return $this->is_favorite;
}
/**
* Returns whether the entry has been modified since it was inserted in database.
* @returns bool `true` if the entry already existed (and has been modified), `false` if the entry is new (or unmodified).
*/
public function isUpdated(): ?bool {
return $this->is_updated;
}
public function _isUpdated(bool $value): void {
$this->is_updated = $value;
}
public function feed(): ?FreshRSS_Feed {
if ($this->feed === null) {
$feedDAO = FreshRSS_Factory::createFeedDao();
@ -730,11 +748,14 @@ HTML;
}
$content = '';
$nodes = $xpath->query((new Gt\CssXPath\Translator($feed->pathEntries()))->asXPath());
$cssSelector = htmlspecialchars_decode($feed->pathEntries(), ENT_QUOTES);
$cssSelector = trim($cssSelector, ', ');
$nodes = $xpath->query((new Gt\CssXPath\Translator($cssSelector))->asXPath());
if ($nodes != false) {
$path_entries_filter = $feed->attributeString('path_entries_filter');
$path_entries_filter = $feed->attributeString('path_entries_filter') ?? '';
$path_entries_filter = trim($path_entries_filter, ', ');
foreach ($nodes as $node) {
if ($path_entries_filter != null) {
if ($path_entries_filter !== '') {
$filterednodes = $xpath->query((new Gt\CssXPath\Translator($path_entries_filter))->asXPath(), $node) ?: [];
foreach ($filterednodes as $filterednode) {
if ($filterednode->parentNode === null) {

View File

@ -3,23 +3,28 @@ declare(strict_types=1);
class FreshRSS_EntryDAOPGSQL extends FreshRSS_EntryDAOSQLite {
#[\Override]
public static function hasNativeHex(): bool {
return true;
}
#[\Override]
public static function sqlHexDecode(string $x): string {
return 'decode(' . $x . ", 'hex')";
}
#[\Override]
public static function sqlHexEncode(string $x): string {
return 'encode(' . $x . ", 'hex')";
}
#[\Override]
public static function sqlIgnoreConflict(string $sql): string {
return rtrim($sql, ' ;') . ' ON CONFLICT DO NOTHING';
}
/** @param array<string|int> $errorInfo */
#[\Override]
protected function autoUpdateDb(array $errorInfo): bool {
if (isset($errorInfo[0])) {
if ($errorInfo[0] === FreshRSS_DatabaseDAO::ER_BAD_FIELD_ERROR || $errorInfo[0] === FreshRSS_DatabaseDAOPGSQL::UNDEFINED_COLUMN) {
@ -34,6 +39,7 @@ class FreshRSS_EntryDAOPGSQL extends FreshRSS_EntryDAOSQLite {
return false;
}
#[\Override]
public function commitNewEntries(): bool {
//TODO: Update to PostgreSQL 9.5+ syntax with ON CONFLICT DO NOTHING
$sql = 'DO $$

View File

@ -3,27 +3,33 @@ declare(strict_types=1);
class FreshRSS_EntryDAOSQLite extends FreshRSS_EntryDAO {
#[\Override]
public static function isCompressed(): bool {
return false;
}
#[\Override]
public static function hasNativeHex(): bool {
return false;
}
#[\Override]
protected static function sqlConcat(string $s1, string $s2): string {
return $s1 . '||' . $s2;
}
#[\Override]
public static function sqlHexDecode(string $x): string {
return $x;
}
#[\Override]
public static function sqlIgnoreConflict(string $sql): string {
return str_replace('INSERT INTO ', 'INSERT OR IGNORE INTO ', $sql);
}
/** @param array<string|int> $errorInfo */
#[\Override]
protected function autoUpdateDb(array $errorInfo): bool {
if ($tableInfo = $this->pdo->query("PRAGMA table_info('entry')")) {
$columns = $tableInfo->fetchAll(PDO::FETCH_COLUMN, 1) ?: [];
@ -36,6 +42,7 @@ class FreshRSS_EntryDAOSQLite extends FreshRSS_EntryDAO {
return false;
}
#[\Override]
public function commitNewEntries(): bool {
$sql = <<<'SQL'
DROP TABLE IF EXISTS `tmp`;
@ -74,6 +81,7 @@ SQL;
* @param bool $is_read
* @return int|false affected rows
*/
#[\Override]
public function markRead($ids, bool $is_read = true) {
FreshRSS_UserDAO::touch();
if (is_array($ids)) { //Many IDs at once (used by API)
@ -119,6 +127,7 @@ SQL;
* @param string $idMax max article ID
* @return int|false affected rows
*/
#[\Override]
public function markReadTag($id = 0, string $idMax = '0', ?FreshRSS_BooleanSearch $filters = null, int $state = 0, bool $is_read = true) {
FreshRSS_UserDAO::touch();
if ($idMax == 0) {

View File

@ -31,7 +31,7 @@ class FreshRSS_Feed extends Minz_Model {
public const KIND_JSON_XPATH = 20;
public const KIND_JSONFEED = 25;
public const KIND_JSON_DOTPATH = 30;
public const KIND_JSON_DOTNOTATION = 30;
public const PRIORITY_IMPORTANT = 20;
public const PRIORITY_MAIN_STREAM = 10;
@ -520,7 +520,7 @@ class FreshRSS_Feed extends Minz_Model {
$elink = $enclosure->get_link();
if ($elink != '') {
$etitle = $enclosure->get_title() ?? '';
$credit = $enclosure->get_credit() ?? null;
$credits = $enclosure->get_credits() ?? null;
$description = $enclosure->get_description() ?? '';
$mime = strtolower($enclosure->get_type() ?? '');
$medium = strtolower($enclosure->get_medium() ?? '');
@ -534,8 +534,11 @@ class FreshRSS_Feed extends Minz_Model {
if ($etitle != '') {
$attributeEnclosure['title'] = $etitle;
}
if ($credit != null) {
$attributeEnclosure['credit'] = $credit->get_name();
if (is_array($credits)) {
$attributeEnclosure['credit'] = [];
foreach ($credits as $credit) {
$attributeEnclosure['credit'][] = $credit->get_name();
}
}
if ($description != '') {
$attributeEnclosure['description'] = $description;
@ -618,7 +621,7 @@ class FreshRSS_Feed extends Minz_Model {
}
/** @return array<string,string> */
private function dotPathsForStandardJsonFeed(): array {
private function dotNotationForStandardJsonFeed(): array {
return [
'feedTitle' => 'title',
'item' => 'items',
@ -659,11 +662,11 @@ class FreshRSS_Feed extends Minz_Model {
return null;
}
/** @var array<string,string> $json_dotpath */
$json_dotpath = $this->attributeArray('json_dotpath') ?? [];
$dotPaths = $this->kind() === FreshRSS_Feed::KIND_JSONFEED ? $this->dotPathsForStandardJsonFeed() : $json_dotpath;
/** @var array<string,string> $json_dotnotation */
$json_dotnotation = $this->attributeArray('json_dotnotation') ?? [];
$dotnotations = $this->kind() === FreshRSS_Feed::KIND_JSONFEED ? $this->dotNotationForStandardJsonFeed() : $json_dotnotation;
$feedContent = FreshRSS_dotpath_Util::convertJsonToRss($jf, $feedSourceUrl, $dotPaths, $this->name());
$feedContent = FreshRSS_dotNotation_Util::convertJsonToRss($jf, $feedSourceUrl, $dotnotations, $this->name());
if ($feedContent == null) {
return null;
}

View File

@ -4,6 +4,7 @@ declare(strict_types=1);
class FreshRSS_FeedDAOSQLite extends FreshRSS_FeedDAO {
/** @param array<int|string> $errorInfo */
#[\Override]
protected function autoUpdateDb(array $errorInfo): bool {
if ($tableInfo = $this->pdo->query("PRAGMA table_info('feed')")) {
$columns = $tableInfo->fetchAll(PDO::FETCH_COLUMN, 1);

View File

@ -135,10 +135,16 @@ trait FreshRSS_FilterActionsTrait {
}
break;
case 'star':
$entry->_isFavorite(true);
if (!$entry->isUpdated()) {
// Do not apply to updated articles, to avoid overruling a user manual action
$entry->_isFavorite(true);
}
break;
case 'label':
$applyLabel = true;
if (!$entry->isUpdated()) {
// Do not apply to updated articles, to avoid overruling a user manual action
$applyLabel = true;
}
break;
}
}

View File

@ -107,6 +107,7 @@ class FreshRSS_Search {
$this->parseSearch($input);
}
#[\Override]
public function __toString(): string {
return $this->getRawInput();
}

View File

@ -9,6 +9,7 @@ class FreshRSS_StatsDAOPGSQL extends FreshRSS_StatsDAO {
* @param int $feed id
* @return array<int,int>
*/
#[\Override]
public function calculateEntryRepartitionPerFeedPerHour(?int $feed = null): array {
return $this->calculateEntryRepartitionPerFeedPerPeriod('hour', $feed);
}
@ -17,6 +18,7 @@ class FreshRSS_StatsDAOPGSQL extends FreshRSS_StatsDAO {
* Calculates the number of article per day of week per feed
* @return array<int,int>
*/
#[\Override]
public function calculateEntryRepartitionPerFeedPerDayOfWeek(?int $feed = null): array {
return $this->calculateEntryRepartitionPerFeedPerPeriod('day', $feed);
}
@ -25,6 +27,7 @@ class FreshRSS_StatsDAOPGSQL extends FreshRSS_StatsDAO {
* Calculates the number of article per month per feed
* @return array<int,int>
*/
#[\Override]
public function calculateEntryRepartitionPerFeedPerMonth(?int $feed = null): array {
return $this->calculateEntryRepartitionPerFeedPerPeriod('month', $feed);
}
@ -34,6 +37,7 @@ class FreshRSS_StatsDAOPGSQL extends FreshRSS_StatsDAO {
* @param string $period format string to use for grouping
* @return array<int,int>
*/
#[\Override]
protected function calculateEntryRepartitionPerFeedPerPeriod(string $period, ?int $feed = null): array {
$restrict = '';
if ($feed) {

View File

@ -3,6 +3,7 @@ declare(strict_types=1);
class FreshRSS_StatsDAOSQLite extends FreshRSS_StatsDAO {
#[\Override]
protected function sqlFloor(string $s): string {
return "CAST(($s) AS INT)";
}
@ -10,6 +11,7 @@ class FreshRSS_StatsDAOSQLite extends FreshRSS_StatsDAO {
/**
* @return array<int,int>
*/
#[\Override]
protected function calculateEntryRepartitionPerFeedPerPeriod(string $period, ?int $feed = null): array {
if ($feed) {
$restrict = "WHERE e.id_feed = {$feed}";

View File

@ -3,6 +3,7 @@ declare(strict_types=1);
class FreshRSS_TagDAOPGSQL extends FreshRSS_TagDAO {
#[\Override]
public function sqlIgnore(): string {
return ''; //TODO
}

View File

@ -3,6 +3,7 @@ declare(strict_types=1);
class FreshRSS_TagDAOSQLite extends FreshRSS_TagDAO {
#[\Override]
public function sqlIgnore(): string {
return 'OR IGNORE';
}

View File

@ -32,6 +32,7 @@ class FreshRSS_UserDAO extends Minz_ModelPdo {
$ok = $this->pdo->exec($GLOBALS['SQL_DROP_TABLES']) !== false;
if ($ok) {
$this->close();
return true;
} else {
$info = $this->pdo->errorInfo();

View File

@ -48,6 +48,8 @@ class FreshRSS_UserQuery {
$this->labels = $labels;
if (isset($query['get'])) {
$this->parseGet($query['get']);
} else {
$this->get_type = 'all';
}
if (isset($query['name'])) {
$this->name = trim($query['name']);
@ -107,7 +109,9 @@ class FreshRSS_UserQuery {
*/
private function parseGet(string $get): void {
$this->get = $get;
if (preg_match('/(?P<type>[acfistT])(_(?P<id>\d+))?/', $get, $matches)) {
if ($this->get === '') {
$this->get_type = 'all';
} elseif (preg_match('/(?P<type>[acfistT])(_(?P<id>\d+))?/', $get, $matches)) {
$id = intval($matches['id'] ?? '0');
switch ($matches['type']) {
case 'a':
@ -155,22 +159,22 @@ class FreshRSS_UserQuery {
/**
* Check if the user query has parameters.
* If the type is 'all', it is considered equal to no parameters
*/
public function hasParameters(): bool {
if ($this->get_type === 'all') {
return false;
if ($this->get_type !== 'all') {
return true;
}
if ($this->hasSearch()) {
return true;
}
if ($this->state) {
if (!in_array($this->state, [
0,
FreshRSS_Entry::STATE_READ | FreshRSS_Entry::STATE_NOT_READ,
FreshRSS_Entry::STATE_READ | FreshRSS_Entry::STATE_NOT_READ | FreshRSS_Entry::STATE_FAVORITE | FreshRSS_Entry::STATE_NOT_FAVORITE
], true)) {
return true;
}
if ($this->order) {
return true;
}
if ($this->get) {
if ($this->order !== '' && $this->order !== FreshRSS_Context::userConf()->sort_order) {
return true;
}
return false;

View File

@ -20,7 +20,8 @@ class FreshRSS_Export_Service {
public const TYPE_HTML_XPATH = 'HTML+XPath';
public const TYPE_XML_XPATH = 'XML+XPath';
public const TYPE_RSS_ATOM = 'rss';
public const TYPE_JSON_DOTPATH = 'JSON+DotPath';
public const TYPE_JSON_DOTPATH = 'JSON+DotPath'; // Legacy 1.24.0-dev
public const TYPE_JSON_DOTNOTATION = 'JSON+DotNotation';
public const TYPE_JSONFEED = 'JSONFeed';
/**
@ -153,7 +154,7 @@ class FreshRSS_Export_Service {
$zip_filename = 'freshrss_' . $this->username . '_' . $day . '_export.zip';
// From https://stackoverflow.com/questions/1061710/php-zip-files-on-the-fly
$zip_file = tempnam('/tmp', 'zip');
$zip_file = tempnam(TMP_PATH, 'zip');
if ($zip_file == false) {
return [$zip_filename, false];
}

View File

@ -161,8 +161,9 @@ class FreshRSS_Import_Service {
case strtolower(FreshRSS_Export_Service::TYPE_XML_XPATH):
$feed->_kind(FreshRSS_Feed::KIND_XML_XPATH);
break;
case strtolower(FreshRSS_Export_Service::TYPE_JSON_DOTNOTATION):
case strtolower(FreshRSS_Export_Service::TYPE_JSON_DOTPATH):
$feed->_kind(FreshRSS_Feed::KIND_JSON_DOTPATH);
$feed->_kind(FreshRSS_Feed::KIND_JSON_DOTNOTATION);
break;
case strtolower(FreshRSS_Export_Service::TYPE_JSONFEED):
$feed->_kind(FreshRSS_Feed::KIND_JSONFEED);
@ -254,7 +255,7 @@ class FreshRSS_Import_Service {
$jsonSettings['itemUid'] = $feed_elt['frss:jsonItemUid'];
}
if (!empty($jsonSettings)) {
$feed->_attribute('json_dotpath', $jsonSettings);
$feed->_attribute('json_dotnotation', $jsonSettings);
}
$curl_params = [];

View File

@ -1,6 +1,7 @@
<?php
declare(strict_types=1);
final class FreshRSS_dotpath_Util
final class FreshRSS_dotNotation_Util
{
/**
@ -96,11 +97,11 @@ final class FreshRSS_dotpath_Util
*
* @param array<string> $jf json feed
* @param string $feedSourceUrl the source URL for the feed
* @param array<string,string> $dotPaths dot paths to map JSON into RSS
* @param string $defaultRssTitle Default title of the RSS feed, if not already provided in dotPath `feedTitle`
* @param array<string,string> $dotNotation dot notation to map JSON into RSS
* @param string $defaultRssTitle Default title of the RSS feed, if not already provided in dotNotation `feedTitle`
*/
public static function convertJsonToRss(array $jf, string $feedSourceUrl, array $dotPaths, string $defaultRssTitle = ''): ?string {
if (!isset($dotPaths['item']) || $dotPaths['item'] === '') {
public static function convertJsonToRss(array $jf, string $feedSourceUrl, array $dotNotation, string $defaultRssTitle = ''): ?string {
if (!isset($dotNotation['item']) || $dotNotation['item'] === '') {
return null; //no definition of item path, but we can't scrape anything without knowing this
}
@ -111,40 +112,40 @@ final class FreshRSS_dotpath_Util
$view->html_url = $view->rss_url;
$view->entries = [];
$view->rss_title = isset($dotPaths['feedTitle'])
? (htmlspecialchars(FreshRSS_dotpath_Util::getString($jf, $dotPaths['feedTitle']) ?? '', ENT_COMPAT, 'UTF-8') ?: $defaultRssTitle)
$view->rss_title = isset($dotNotation['feedTitle'])
? (htmlspecialchars(FreshRSS_dotNotation_Util::getString($jf, $dotNotation['feedTitle']) ?? '', ENT_COMPAT, 'UTF-8') ?: $defaultRssTitle)
: $defaultRssTitle;
$jsonItems = FreshRSS_dotpath_Util::get($jf, $dotPaths['item']);
$jsonItems = FreshRSS_dotNotation_Util::get($jf, $dotNotation['item']);
if (!is_array($jsonItems) || count($jsonItems) === 0) {
return null;
}
foreach ($jsonItems as $jsonItem) {
$rssItem = [];
$rssItem['link'] = isset($dotPaths['itemUri']) ? FreshRSS_dotpath_Util::getString($jsonItem, $dotPaths['itemUri']) ?? '' : '';
$rssItem['link'] = isset($dotNotation['itemUri']) ? FreshRSS_dotNotation_Util::getString($jsonItem, $dotNotation['itemUri']) ?? '' : '';
if (empty($rssItem['link'])) {
continue;
}
$rssItem['title'] = isset($dotPaths['itemTitle']) ? FreshRSS_dotpath_Util::getString($jsonItem, $dotPaths['itemTitle']) ?? '' : '';
$rssItem['author'] = isset($dotPaths['itemAuthor']) ? FreshRSS_dotpath_Util::getString($jsonItem, $dotPaths['itemAuthor']) ?? '' : '';
$rssItem['timestamp'] = isset($dotPaths['itemTimestamp']) ? FreshRSS_dotpath_Util::getString($jsonItem, $dotPaths['itemTimestamp']) ?? '' : '';
$rssItem['title'] = isset($dotNotation['itemTitle']) ? FreshRSS_dotNotation_Util::getString($jsonItem, $dotNotation['itemTitle']) ?? '' : '';
$rssItem['author'] = isset($dotNotation['itemAuthor']) ? FreshRSS_dotNotation_Util::getString($jsonItem, $dotNotation['itemAuthor']) ?? '' : '';
$rssItem['timestamp'] = isset($dotNotation['itemTimestamp']) ? FreshRSS_dotNotation_Util::getString($jsonItem, $dotNotation['itemTimestamp']) ?? '' : '';
//get simple content, but if a path for HTML content has been provided, replace the simple content with HTML content
$rssItem['content'] = isset($dotPaths['itemContent']) ? FreshRSS_dotpath_Util::getString($jsonItem, $dotPaths['itemContent']) ?? '' : '';
$rssItem['content'] = isset($dotPaths['itemContentHTML'])
? FreshRSS_dotpath_Util::getString($jsonItem, $dotPaths['itemContentHTML']) ?? ''
$rssItem['content'] = isset($dotNotation['itemContent']) ? FreshRSS_dotNotation_Util::getString($jsonItem, $dotNotation['itemContent']) ?? '' : '';
$rssItem['content'] = isset($dotNotation['itemContentHTML'])
? FreshRSS_dotNotation_Util::getString($jsonItem, $dotNotation['itemContentHTML']) ?? ''
: $rssItem['content'];
if (isset($dotPaths['itemTimeFormat']) && is_string($dotPaths['itemTimeFormat'])) {
$dateTime = DateTime::createFromFormat($dotPaths['itemTimeFormat'], $rssItem['timestamp']);
if (isset($dotNotation['itemTimeFormat']) && is_string($dotNotation['itemTimeFormat'])) {
$dateTime = DateTime::createFromFormat($dotNotation['itemTimeFormat'], $rssItem['timestamp']);
if ($dateTime != false) {
$rssItem['timestamp'] = $dateTime->format(DateTime::ATOM);
}
}
if (isset($dotPaths['itemCategories'])) {
$jsonItemCategories = FreshRSS_dotpath_Util::get($jsonItem, $dotPaths['itemCategories']);
if (isset($dotNotation['itemCategories'])) {
$jsonItemCategories = FreshRSS_dotNotation_Util::get($jsonItem, $dotNotation['itemCategories']);
if (is_string($jsonItemCategories) && $jsonItemCategories !== '') {
$rssItem['tags'] = [$jsonItemCategories];
} elseif (is_array($jsonItemCategories) && count($jsonItemCategories) > 0) {
@ -157,31 +158,31 @@ final class FreshRSS_dotpath_Util
}
}
$rssItem['thumbnail'] = isset($dotPaths['itemThumbnail']) ? FreshRSS_dotpath_Util::getString($jsonItem, $dotPaths['itemThumbnail']) ?? '' : '';
$rssItem['thumbnail'] = isset($dotNotation['itemThumbnail']) ? FreshRSS_dotNotation_Util::getString($jsonItem, $dotNotation['itemThumbnail']) ?? '' : '';
//Enclosures?
if (isset($dotPaths['itemAttachment'])) {
$jsonItemAttachments = FreshRSS_dotpath_Util::get($jsonItem, $dotPaths['itemAttachment']);
if (isset($dotNotation['itemAttachment'])) {
$jsonItemAttachments = FreshRSS_dotNotation_Util::get($jsonItem, $dotNotation['itemAttachment']);
if (is_array($jsonItemAttachments) && count($jsonItemAttachments) > 0) {
$rssItem['attachments'] = [];
foreach ($jsonItemAttachments as $attachment) {
$rssAttachment = [];
$rssAttachment['url'] = isset($dotPaths['itemAttachmentUrl'])
? FreshRSS_dotpath_Util::getString($attachment, $dotPaths['itemAttachmentUrl'])
$rssAttachment['url'] = isset($dotNotation['itemAttachmentUrl'])
? FreshRSS_dotNotation_Util::getString($attachment, $dotNotation['itemAttachmentUrl'])
: '';
$rssAttachment['type'] = isset($dotPaths['itemAttachmentType'])
? FreshRSS_dotpath_Util::getString($attachment, $dotPaths['itemAttachmentType'])
$rssAttachment['type'] = isset($dotNotation['itemAttachmentType'])
? FreshRSS_dotNotation_Util::getString($attachment, $dotNotation['itemAttachmentType'])
: '';
$rssAttachment['length'] = isset($dotPaths['itemAttachmentLength'])
? FreshRSS_dotpath_Util::get($attachment, $dotPaths['itemAttachmentLength'])
$rssAttachment['length'] = isset($dotNotation['itemAttachmentLength'])
? FreshRSS_dotNotation_Util::get($attachment, $dotNotation['itemAttachmentLength'])
: '';
$rssItem['attachments'][] = $rssAttachment;
}
}
}
if (isset($dotPaths['itemUid'])) {
$rssItem['guid'] = FreshRSS_dotpath_Util::getString($jsonItem, $dotPaths['itemUid']);
if (isset($dotNotation['itemUid'])) {
$rssItem['guid'] = FreshRSS_dotNotation_Util::getString($jsonItem, $dotNotation['itemUid']);
}
if (empty($rssItem['guid'])) {

View File

@ -19,8 +19,8 @@ return array(
'http' => 'HTTP (pro pokročilé uživatele s HTTPS)',
'none' => 'Žádný (nebezpečné)',
'title' => 'Ověřování',
'token' => 'Master authentication token', // TODO
'token_help' => 'Allows access to all RSS outputs of the user as well as refreshing feeds without authentication:', // TODO
'token' => 'Hlavní ověřovací token',
'token_help' => 'Umožňuje přístup ke všem výstupům RSS uživatele i obnovování kanálů bez ověřování:',
'type' => 'Metoda ověřování',
'unsafe_autologin' => 'Povolit nebezpečné automatické přihlášení pomocí formátu: ',
),
@ -160,8 +160,8 @@ return array(
'_' => 'Nastavení systému',
'auto-update-url' => 'Adresa URL serveru pro automatické aktualizace',
'base-url' => array(
'_' => 'Base URL', // TODO
'recommendation' => 'Automatic recommendation: <kbd>%s</kbd>', // TODO
'_' => 'Základní adresa URL',
'recommendation' => 'Automatické doporučení: <kbd>%s</kbd>',
),
'cookie-duration' => array(
'help' => 'v sekundách',
@ -187,33 +187,33 @@ return array(
),
'title' => 'Registrační formulář uživatele',
),
'sensitive-parameter' => 'Sensitive parameter. Edit manually in <kbd>./data/config.php</kbd>', // TODO
'sensitive-parameter' => 'Citlivý parametr. Upravte ručně v souboru <kbd>./data/config.php</kbd>',
'tos' => array(
'disabled' => 'is not given', // TODO
'enabled' => '<a href="./?a=tos">is enabled</a>', // TODO
'help' => 'How to <a href="https://freshrss.github.io/FreshRSS/en/admins/12_User_management.html#enable-terms-of-service-tos" target="_blank">enable the Terms of Service</a>', // TODO
'disabled' => 'není uveden',
'enabled' => '<a href="./?a=tos">je povolen</a>',
'help' => 'Jak povolit <a href="https://freshrss.github.io/FreshRSS/en/admins/12_User_management.html#enable-terms-of-service-tos" target="_blank">podmínky poskytování služby</a>',
),
'websub' => array(
'help' => 'About <a href="https://freshrss.github.io/FreshRSS/en/users/WebSub.html" target="_blank">WebSub</a>', // TODO
'help' => 'O <a href="https://freshrss.github.io/FreshRSS/en/users/WebSub.html" target="_blank">WebSub</a>',
),
),
'update' => array(
'_' => 'Aktualizace systému',
'apply' => 'Použít',
'changelog' => 'Changelog', // TODO
'changelog' => 'Seznam změn',
'check' => 'Zkontrolovat aktualizace',
'copiedFromURL' => 'update.php copied from %s to ./data', // TODO
'copiedFromURL' => 'update.php zkopírováno z %s do ./data',
'current_version' => 'Vaše aktuální verze',
'last' => 'Poslední kontrola',
'loading' => 'Updating…', // TODO
'loading' => 'Aktualizuje se...',
'none' => 'Žádné nové aktualizace',
'releaseChannel' => array(
'_' => 'Release channel', // TODO
'edge' => 'Rolling release (“edge”)', // TODO
'latest' => 'Stable release (“latest”)', // TODO
'_' => 'Kanál pro vydání',
'edge' => 'Vydání "Rolling" / Nepřetržitě aktualizované vydání (“edge”)',
'latest' => 'Stabilní vydání (“latest”)',
),
'title' => 'Aktualizovat systém',
'viaGit' => 'Update via git and Github.com started', // TODO
'viaGit' => 'Aktualizace přes git a Github.com začala',
),
'user' => array(
'admin' => 'Administrátor',

View File

@ -33,9 +33,9 @@ return array(
'display' => array(
'_' => 'Zobrazení',
'darkMode' => array(
'_' => 'Automatic dark mode (beta)', // TODO
'auto' => 'Auto', // TODO
'no' => 'No', // TODO
'_' => 'Automatický tmavý režim (beta)',
'auto' => 'Automatický',
'no' => 'Ne',
),
'icon' => array(
'bottom_line' => 'Spodní řádek',
@ -56,8 +56,8 @@ return array(
'theme' => array(
'_' => 'Motiv',
'deprecated' => array(
'_' => 'Deprecated', // TODO
'description' => 'This theme is no longer supported and will be not available anymore in a <a href="https://freshrss.github.io/FreshRSS/en/users/05_Configuration.html#theme" target="_blank">future release of FreshRSS</a>', // TODO
'_' => 'Zastaralý',
'description' => 'Tento motiv již není podporován a v <a href="https://freshrss.github.io/FreshRSS/en/users/05_Configuration.html#theme" target="_blank">budoucí verzi FreshRSS</a> již nebude dostupný.',
),
),
'theme_not_available' => 'Motiv „%s“ již není dostupný. Zvolte jiný motiv, prosím.',
@ -68,14 +68,14 @@ return array(
'portrait' => 'Na výšku',
'square' => 'Čtverec',
),
'timezone' => 'Time zone', // TODO
'timezone' => 'Časové pásmo',
'title' => 'Zobrazení',
'website' => array(
'full' => 'Icon and name', // TODO
'icon' => 'Icon only', // TODO
'label' => 'Website', // TODO
'name' => 'Name only', // TODO
'none' => 'None', // TODO
'full' => 'Ikona a název',
'icon' => 'Pouze ikona',
'label' => 'Webová stránka',
'name' => 'Pouze název',
'none' => 'Žádné',
),
'width' => array(
'content' => 'Šířka obsahu',
@ -120,20 +120,20 @@ return array(
'feeds' => 'Zobrazit podle kanálu',
'order' => 'Seřadit podle data',
'search' => 'Výraz',
'shareOpml' => 'Enable sharing by OPML of corresponding categories and feeds', // TODO
'shareRss' => 'Enable sharing by HTML &amp; RSS', // TODO
'shareOpml' => 'Povolit sdílení příslušných kategorií a kanálů pomocí OPML',
'shareRss' => 'Povolit sdílení pomocí HTML &amp; RSS',
'state' => 'Stav',
'tags' => 'Zobrazit podle štítku',
'type' => 'Typ',
),
'get_all' => 'Zobrazit všechny články',
'get_all_labels' => 'Display articles with any label', // TODO
'get_all_labels' => 'Zobrazit články s libovolným štítkem',
'get_category' => 'Zobrazit kategorii „%s“',
'get_favorite' => 'Zobrazit oblíbené články',
'get_feed' => 'Zobrazit kanál „%s“',
'get_important' => 'Display articles from important feeds', // TODO
'get_label' => 'Display articles with “%s” label', // TODO
'help' => 'See the <a href="https://freshrss.github.io/FreshRSS/en/users/user_queries.html" target="_blank">documentation for user queries and resharing by HTML / RSS / OPML</a>.', // TODO
'get_important' => 'Zobrazit články z důležitých kanálů',
'get_label' => 'Zobrazit články se štítkem “%s”',
'help' => 'Viz <a href="https://freshrss.github.io/FreshRSS/en/users/user_queries.html" target="_blank">dokumentace pro uživatelské dotazy a další sdílení pomocí HTML / RSS / OPML</a>.',
'name' => 'Název',
'no_filter' => 'Žádný filtr',
'number' => 'Dotaz č. %d',
@ -141,11 +141,11 @@ return array(
'order_desc' => 'Zobrazit nejdříve nejnovější články',
'search' => 'Hledat „%s“',
'share' => array(
'_' => 'Share this query by link', // TODO
'help' => 'Give this link if you want to share this query with anyone', // TODO
'html' => 'Shareable link to the HTML page', // TODO
'opml' => 'Shareable link to the OPML list of feeds', // TODO
'rss' => 'Shareable link to the RSS feed', // TODO
'_' => 'Sdílet tento dotaz pomocí odkazu',
'help' => 'Pokud chcete tento dotaz s někým sdílet, uveďte tento odkaz.',
'html' => 'Odkaz na stránku HTML, který lze sdílet',
'opml' => 'Odkaz na seznam kanálů OPML, který lze sdílet',
'rss' => 'Odkaz na kanál RSS, který lze sdílet',
),
'state_0' => 'Zobrazit všechny články',
'state_1' => 'Zobrazit přečtené články',
@ -217,9 +217,9 @@ return array(
'read' => array(
'article_open_on_website' => 'když je článek otevřen na své původní webové stránce',
'article_viewed' => 'když je článek zobrazen',
'focus' => 'when focused (except for important feeds)', // TODO
'focus' => 'při zaměření (kromě důležitých kanálů)',
'keep_max_n_unread' => 'Maximální počet článků, které ponechat jako nepřečtené',
'scroll' => 'během posouvání (except for important feeds)', // DIRTY
'scroll' => 'během posouvání (kromě důležitých kanálů)', // DIRTY
'upon_gone' => 'když se již nenachází v upstreamu zpráv.',
'upon_reception' => 'po obdržení článku',
'when' => 'Označit článek jako přečtený…',

View File

@ -116,10 +116,10 @@ return array(
),
'tag' => array(
'created' => 'Štítek „%s“ byl vytvořen.',
'error' => 'Label could not be updated!', // TODO
'error' => 'Štítek se nepodařilo aktualizovat!',
'name_exists' => 'Název štítku již existuje.',
'renamed' => 'Štítek „%s“ byl přejmenován na „%s“.',
'updated' => 'Label has been updated.', // TODO
'updated' => 'Štítek byl aktualizován.',
),
'update' => array(
'can_apply' => 'FreshRSS bude nyní aktualizováno na <strong>verzi %s</strong>.',

View File

@ -134,7 +134,7 @@ return array(
'request_failed' => 'Požadavek selhal, to může být způsobeno problémy s připojení k internetu.',
'title_new_articles' => 'FreshRSS: nové články!',
),
'labels_empty' => 'No labels', // TODO
'labels_empty' => 'Žádné štítky',
'new_article' => 'Jsou dostupné nové články, klikněte pro obnovení stránky.',
'should_be_activated' => 'JavaScript musí být povolen',
),
@ -178,7 +178,7 @@ return array(
'queries' => 'Uživatelské dotazy',
'reading' => 'Čtení',
'search' => 'Hledat slova nebo #štítky',
'search_help' => 'See documentation for advanced <a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#with-the-search-field" target="_blank">search parameters</a>', // TODO
'search_help' => 'Podívejte se na dokumentaci pro pokročilé parametry <a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#with-the-search-field" target="_blank">parametry vyhledávání</a>',
'sharing' => 'Sdílení',
'shortcuts' => 'Zkratky',
'stats' => 'Statistika',
@ -203,7 +203,7 @@ return array(
'clipboard' => 'Schránka',
'diaspora' => 'Diaspora*', // IGNORE
'email' => 'E-mail',
'email-webmail-firefox-fix' => 'Email (webmail - fix for Firefox)', // TODO
'email-webmail-firefox-fix' => 'E-mail (webmail - oprava pro Firefox)',
'facebook' => 'Facebook', // IGNORE
'gnusocial' => 'GNU social', // IGNORE
'jdh' => 'Journal du hacker', // IGNORE

View File

@ -17,7 +17,7 @@ return array(
'bugs_reports' => 'Hlášení chyb',
'credits' => 'Poděkování',
'credits_content' => 'Některé designové prvky pocházejí z <a href="http://twitter.github.io/bootstrap/">Bootstrap</a>, FreshRSS ale tuto platformu nevyužívá. <a href="https://gitlab.gnome.org/Archive/gnome-icon-theme-symbolic">Ikony</a> pocházejí z <a href="https://www.gnome.org/">projektu GNOME</a>. Písmo <em>Open Sans</em> vytvořil <a href="https://fonts.google.com/specimen/Open+Sans">Steve Matteson</a>. FreshRSS je založeno na PHP framework <a href="https://framagit.org/marienfressinaud/MINZ">Minz</a>.',
'documentation' => 'Documentation', // TODO
'documentation' => 'Dokumentace',
'freshrss_description' => 'FreshRSS je čtečka kanálů RSS určená k provozu na vlastním serveru. Je to nenáročný a jednoduchý, zároveň ale mocný a konfigurovatelný nástroj.',
'github' => '<a href="https://github.com/FreshRSS/FreshRSS/issues">na Github</a>',
'license' => 'Licence',
@ -45,7 +45,7 @@ return array(
'bookmark_query' => 'Uložit aktuální dotaz do záložek',
'favorites' => 'Oblíbené (%s)',
'global_view' => 'Zobrazení přehledu',
'important' => 'Important feeds', // TODO
'important' => 'Důležité kanály',
'main_stream' => 'Hlavní kanál',
'mark_all_read' => 'Označit vše jako přečtené',
'mark_cat_read' => 'Označit kategorii jako přečtenou',

View File

@ -66,9 +66,14 @@ return array(
'description' => 'Popis',
'empty' => 'Tento kanál je prázdný. Ověřte prosím, zda je stále udržován.',
'error' => 'Vyskytl se problém s kanálem. Ověřte prosím, že je vždy dostupný, pak ho aktualizujte.',
'export-as-opml' => array(
'download' => 'Stáhnout',
'help' => 'Soubor XML',
'label' => 'Exportovat jako OPML',
),
'filteractions' => array(
'_' => 'Akce filtrování',
'help' => 'Zapište jeden filtr hledání na řádek. Operators <a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#with-the-search-field" target="_blank">see documentation</a>.', // DIRTY
'help' => 'Zapište jeden filtr hledání na řádek. Operátoři <a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#with-the-search-field" target="_blank">viz dokumentace</a>.',
),
'information' => 'Informace',
'keep_min' => 'Minimální počet článků pro ponechání',
@ -99,8 +104,8 @@ return array(
'help' => 'Příklad: <code>descendant::img/@src</code>',
),
'item_timeFormat' => array(
'_' => 'Custom date/time format', // TODO
'help' => 'Optional. A format supported by <a href="https://php.net/datetime.createfromformat" target="_blank"><code>DateTime::createFromFormat()</code></a> such as <code>d-m-Y H:i:s</code>', // TODO
'_' => 'Vlastní formát data a času',
'help' => 'Volitelně. Formát podporovaný funkcí <a href="https://php.net/datetime.createfromformat" target="_blank"><code>DateTime::createFromFormat()</code></a> jako např.: <code>d-m-Y H:i:s</code>',
),
'item_timestamp' => array(
'_' => 'datum položky',
@ -121,47 +126,47 @@ return array(
'relative' => 'XPath (vzhledem k položce) pro:',
'xpath' => 'XPath pro:',
),
'json_dotpath' => array(
'_' => 'JSON (Dotted paths)', // TODO
'json_dotnotation' => array(
'_' => 'JSON s tečkovým zápisem (dot notation)',
'feed_title' => array(
'_' => 'feed title', // TODO
'help' => 'Example: <code>meta.title</code> or a static string: <code>"My custom feed"</code>', // TODO
'_' => 'název kanálu',
'help' => 'Příklad: <code>meta.title</code> nebo statický řetězec: <code>"Můj vlastní kanál"</code>',
),
'help' => 'A JSON dotted path uses dots between objects and brackets for arrays (e.g. <code>data.items[0].title</code>)', // TODO
'help' => 'JSON s tečkovým zápisem používá tečky mezi objekty a závorky pro pole. (e.g. <code>data.items[0].title</code>)',
'item' => array(
'_' => 'finding news <strong>items</strong><br /><small>(most important)</small>', // TODO
'help' => 'JSON path to the array containing the items, e.g. <code>newsItems</code>', // TODO
'_' => 'vyhledávání nových <strong>položek</strong><br /><small>(nejdůležitější)</small>',
'help' => 'JSON cesta k poli obsahujícímu položky, např.: <code>newsItems</code>',
),
'item_author' => 'item author', // TODO
'item_categories' => 'item tags', // TODO
'item_author' => 'autor položky',
'item_categories' => 'štítky položky',
'item_content' => array(
'_' => 'item content', // TODO
'help' => 'Key under which the content is found, e.g. <code>content</code>', // TODO
'_' => 'obsah položky',
'help' => 'Klíč, pod kterým se obsah nachází, např.: <code>content</code>',
),
'item_thumbnail' => array(
'_' => 'item thumbnail', // TODO
'help' => 'Example: <code>image</code>', // TODO
'_' => 'náhled položky',
'help' => 'Příklad: <code>image</code>',
),
'item_timeFormat' => array(
'_' => 'Custom date/time format', // TODO
'help' => 'Optional. A format supported by <a href="https://php.net/datetime.createfromformat" target="_blank"><code>DateTime::createFromFormat()</code></a> such as <code>d-m-Y H:i:s</code>', // TODO
'_' => 'Vlastní formát data a času',
'help' => 'Volitelně. Formát podporovaný funkcí <a href="https://php.net/datetime.createfromformat" target="_blank"><code>DateTime::createFromFormat()</code></a> jako např.: <code>d-m-Y H:i:s</code>',
),
'item_timestamp' => array(
'_' => 'item date', // TODO
'help' => 'The result will be parsed by <a href="https://php.net/strtotime" target="_blank"><code>strtotime()</code></a>', // TODO
'_' => 'datum položky',
'help' => 'Výsledek bude analyzován pomocí <a href="https://php.net/strtotime" target="_blank"><code>strtotime()</code></a>',
),
'item_title' => 'item title', // TODO
'item_uid' => 'item unique ID', // TODO
'item_title' => 'název položky',
'item_uid' => 'unikátní ID položky',
'item_uri' => array(
'_' => 'item link (URL)', // TODO
'help' => 'Example: <code>permalink</code>', // TODO
'_' => 'odkaz na položku (adresa URL)',
'help' => 'Příklad: <code>permalink</code>',
),
'json' => 'Dotted Path for:', // TODO
'relative' => 'Dotted Path (relative to item) for:', // TODO
'json' => 'tečkový zápis pro:',
'relative' => 'cesta s tečkovým zápisem (relativní k položce) pro:',
),
'jsonfeed' => 'JSON Feed', // TODO
'jsonfeed' => 'Zdroj JSON',
'rss' => 'RSS / Atom (výchozí)',
'xml_xpath' => 'XML + XPath', // TODO
'xml_xpath' => 'XML + XPath', // IGNORE
),
'maintenance' => array(
'clear_cache' => 'Vymazat mezipaměť',
@ -173,10 +178,10 @@ return array(
'max_http_redir' => 'Maximální počet přesměrování HTTP',
'max_http_redir_help' => 'Nastavte na 0 nebo nechte prázdné pro zakázání, -1 pro neomezené přesměrování.',
'method' => array(
'_' => 'HTTP Method', // TODO
'_' => 'Metoda HTTP',
),
'method_help' => 'The POST payload has automatic support for <code>application/x-www-form-urlencoded</code> and <code>application/json</code>', // TODO
'method_postparams' => 'Payload for POST', // TODO
'method_help' => 'Payload metody POST má automatickou podporu pro <code>application/x-www-form-urlencoded</code> a <code>application/json</code>',
'method_postparams' => 'Payload pro metodu POST',
'moved_category_deleted' => 'Když odstraníte kategorii, její kanály jsou automaticky přesunuty do <em>%s</em>.',
'mute' => 'ztlumit',
'no_selected' => 'Nejsou vybrány žádné kanály.',
@ -185,11 +190,11 @@ return array(
'_' => 'Viditelnost',
'archived' => 'Nezobrazovat (archivováno)',
'category' => 'Zobrazit v jeho kategorii',
'important' => 'Show in important feeds', // TODO
'important' => 'Zobrazit v důležitých kanálech',
'main_stream' => 'Zobrazit ve hlavním kanálu',
),
'proxy' => 'Nastavete proxy pro načítání tohoto kanálu',
'proxy_help' => 'Vyberte protokol (např.: SOCKS5) a zadejte adresu proxy (např.: <kbd>127.0.0.1:1080</kbd> or <kbd>username:password@127.0.0.1:1080</kbd>)', // DIRTY
'proxy_help' => 'Vyberte protokol (např.: SOCKS5) a zadejte adresu proxy (např.: <kbd>127.0.0.1:1080</kbd> nebo <kbd>username:password@127.0.0.1:1080</kbd>)',
'selector_preview' => array(
'show_raw' => 'Zobrazit zdrojový kód',
'show_rendered' => 'Zobrazit obsah',
@ -240,7 +245,7 @@ return array(
'subscription_tools' => 'Nástroje odběrů',
),
'tag' => array(
'auto_label' => 'Add this label to new articles', // TODO
'auto_label' => 'Přidat tento štítek k novým článkům',
'name' => 'Název',
'new_name' => 'Nový název',
'old_name' => 'Starý název',

View File

@ -19,8 +19,8 @@ return array(
'http' => 'HTTP (HTTPS für erfahrene Benutzer)',
'none' => 'Keine (gefährlich)',
'title' => 'Authentifizierung',
'token' => 'Master authentication token', // TODO
'token_help' => 'Allows access to all RSS outputs of the user as well as refreshing feeds without authentication:', // TODO
'token' => 'Master-Authentifizierungs-Token',
'token_help' => 'Zugriff auf alle vom Nutzer erstellten RSS-Feeds freigeben (inkl. Aktualisierung ohne Authenthentifizierung):',
'type' => 'Authentifizierungsmethode',
'unsafe_autologin' => 'Erlaube unsicheres automatisches Anmelden mit folgendem Format: ',
),
@ -160,8 +160,8 @@ return array(
'_' => 'Systemeinstellungen',
'auto-update-url' => 'Auto-Update URL',
'base-url' => array(
'_' => 'Base URL', // TODO
'recommendation' => 'Automatic recommendation: <kbd>%s</kbd>', // TODO
'_' => 'Base URL', // IGNORE
'recommendation' => 'Automatische Empfehlung: <kbd>%s</kbd>',
),
'cookie-duration' => array(
'help' => 'in Sekunden',
@ -187,14 +187,14 @@ return array(
),
'title' => 'Benutzer-Registrierungsformular',
),
'sensitive-parameter' => 'Sensitive parameter. Edit manually in <kbd>./data/config.php</kbd>', // TODO
'sensitive-parameter' => 'Sensitive Einstellung. Manuell in <kbd>./data/config.php</kbd> anpassbar.',
'tos' => array(
'disabled' => 'sind nicht aktiviert',
'enabled' => '<a href="./?a=tos">sind aktiv</a>',
'help' => 'So werden die <a href="https://freshrss.github.io/FreshRSS/en/admins/12_User_management.html#enable-terms-of-service-tos" target="_blank">Nutzungsbedingungen aktiviert</a>',
),
'websub' => array(
'help' => 'About <a href="https://freshrss.github.io/FreshRSS/en/users/WebSub.html" target="_blank">WebSub</a>', // TODO
'help' => 'Über <a href="https://freshrss.github.io/FreshRSS/en/users/WebSub.html" target="_blank">WebSub</a>',
),
),
'update' => array(

View File

@ -106,7 +106,7 @@ return array(
'warn' => 'Dieser Account und alle damit bezogenen Daten werden gelöscht.',
),
'email' => 'E-Mail-Adresse',
'password_api' => 'Passwort-API<br /><small>(z.B. für mobile Anwendungen)</small>',
'password_api' => 'API-Passwort<br /><small>(z.B. für mobile Anwendungen)</small>',
'password_form' => 'Passwort<br /><small>(für die Anmeldemethode per Webformular)</small>',
'password_format' => 'mindestens 7 Zeichen',
'title' => 'Profil',
@ -120,20 +120,20 @@ return array(
'feeds' => 'Nach Feed filtern',
'order' => 'Nach Datum sortieren',
'search' => 'Suchbegriff',
'shareOpml' => 'Enable sharing by OPML of corresponding categories and feeds', // TODO
'shareRss' => 'Enable sharing by HTML &amp; RSS', // TODO
'shareOpml' => 'Teilen via OPML mit zugehörigen Kategorien und Feeds aktivieren',
'shareRss' => 'Teilen via HTML &amp; RSS aktivieren',
'state' => 'Eigenschaft',
'tags' => 'Nach Labels filtern',
'type' => 'Filter-Typ',
),
'get_all' => 'Alle Artikel anzeigen',
'get_all_labels' => 'Display articles with any label', // TODO
'get_all_labels' => 'Alle Artikle mit beliebigem Label anzeigen',
'get_category' => 'Kategorie „%s“ anzeigen',
'get_favorite' => 'Lieblingsartikel anzeigen',
'get_favorite' => 'Favoriten-Artikel anzeigen',
'get_feed' => 'Feed „%s“ anzeigen',
'get_important' => 'Display articles from important feeds', // TODO
'get_label' => 'Display articles with “%s” label', // TODO
'help' => 'See the <a href="https://freshrss.github.io/FreshRSS/en/users/user_queries.html" target="_blank">documentation for user queries and resharing by HTML / RSS / OPML</a>.', // TODO
'get_important' => 'Alle Artikel von den "Wichtige Feeds" anzeigen',
'get_label' => 'Artikel mit dem Label “%s” anzeigen',
'help' => 'Siehe die <a href="https://freshrss.github.io/FreshRSS/en/users/user_queries.html" target="_blank">Dokumentation für Benutzerabfragen und Teilen via HTML / RSS / OPML</a>.',
'name' => 'Name', // IGNORE
'no_filter' => 'Kein Filter',
'number' => 'Abfrage Nr. %d',
@ -141,11 +141,11 @@ return array(
'order_desc' => 'Neueste Artikel zuerst anzeigen',
'search' => 'Suche nach „%s“',
'share' => array(
'_' => 'Share this query by link', // TODO
'help' => 'Give this link if you want to share this query with anyone', // TODO
'html' => 'Shareable link to the HTML page', // TODO
'opml' => 'Shareable link to the OPML list of feeds', // TODO
'rss' => 'Shareable link to the RSS feed', // TODO
'_' => 'Diese Benutzerabfrage per Link teilen',
'help' => 'Diesen Link verteilen, um in mit Jedem zu teilen',
'html' => 'Verteilbarer Link zur HTML-Seite',
'opml' => 'Verteilbarer Link zur OPML Liste der Feeds',
'rss' => 'Verteilbarer Link zum RSS-Feed',
),
'state_0' => 'Alle Artikel anzeigen',
'state_1' => 'Gelesene Artikel anzeigen',
@ -217,9 +217,9 @@ return array(
'read' => array(
'article_open_on_website' => 'wenn der Artikel auf der Original-Webseite geöffnet wird',
'article_viewed' => 'wenn der Artikel angesehen wird',
'focus' => 'when focused (except for important feeds)', // TODO
'focus' => 'wenn angewählt (außer für "Wichtige Feeds")',
'keep_max_n_unread' => 'Max. Anzahl von ungelesenen Artikeln',
'scroll' => 'beim Scrollen bzw. Überspringen (except for important feeds)', // DIRTY
'scroll' => 'beim Scrollen bzw. Überspringen (außer für "Wichtige Feeds")',
'upon_gone' => 'wenn der Artikel nicht mehr im Feed enthalten ist',
'upon_reception' => 'beim Empfang des Artikels',
'when' => 'Artikel als gelesen markieren…',

View File

@ -61,7 +61,7 @@ return array(
'feeds_imported_with_errors' => 'Ihre Feeds sind importiert worden, aber es traten einige Fehler auf. Wenn Sie alle Dateien importiert haben, können Sie <i>Feeds aktualisieren</i> klicken.',
'file_cannot_be_uploaded' => 'Die Datei kann nicht hochgeladen werden!',
'no_zip_extension' => 'Die ZIP-Erweiterung ist auf Ihrem Server nicht vorhanden.',
'zip_error' => 'Ein Fehler trat während des ZIP-Imports auf.', // DIRTY
'zip_error' => 'Ein Fehler trat während des ZIP-Imports auf.',
),
'profile' => array(
'error' => 'Ihr Profil kann nicht geändert werden',
@ -115,11 +115,11 @@ return array(
'purge_completed' => 'Bereinigung abgeschlossen (%d Artikel gelöscht)',
),
'tag' => array(
'created' => 'Label „%s“ wurde erstellt.',
'error' => 'Label could not be updated!', // TODO
'created' => 'Das Label „%s“ wurde erstellt.',
'error' => 'Das Label konnte nicht angepasst werden!',
'name_exists' => 'Label-Name existiert bereits.',
'renamed' => 'Das Label „%s“ wurde umbenannt in „%s“.',
'updated' => 'Label has been updated.', // TODO
'updated' => 'Das Label wurde angepasst.',
),
'update' => array(
'can_apply' => 'FreshRSS wird nun auf die <strong>Version %s</strong> aktualisiert.',

View File

@ -45,7 +45,7 @@ return array(
'bookmark_query' => 'Aktuelle Abfrage speichern',
'favorites' => 'Favoriten (%s)',
'global_view' => 'Globale Ansicht',
'important' => 'Important feeds', // TODO
'important' => 'Wichtige Feeds',
'main_stream' => 'Haupt-Feeds',
'mark_all_read' => 'Alle als gelesen markieren',
'mark_cat_read' => 'Kategorie als gelesen markieren',

View File

@ -66,6 +66,11 @@ return array(
'description' => 'Beschreibung',
'empty' => 'Dieser Feed ist leer. Bitte stellen Sie sicher, dass er noch gepflegt wird.',
'error' => 'Dieser Feed ist auf ein Problem gestoßen. Bitte stellen Sie sicher, dass er immer lesbar ist und aktualisieren Sie ihn dann.',
'export-as-opml' => array(
'download' => 'Download', // IGNORE
'help' => 'XML Datei',
'label' => 'Export als OPML',
),
'filteractions' => array(
'_' => 'Filteraktionen',
'help' => 'Ein Suchfilter pro Zeile. Operatoren <a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#with-the-search-field" target="_blank">siehe Dokumentation</a>.',
@ -121,45 +126,45 @@ return array(
'relative' => 'XPath (relativ zum Artikel) für:',
'xpath' => 'XPath für:',
),
'json_dotpath' => array(
'_' => 'JSON (Dotted paths)', // TODO
'json_dotnotation' => array(
'_' => 'JSON (Punktnotation)',
'feed_title' => array(
'_' => 'feed title', // TODO
'help' => 'Example: <code>meta.title</code> or a static string: <code>"My custom feed"</code>', // TODO
'_' => 'Feed Name',
'help' => 'Beispiel: <code>meta.title</code> oder ein statischer String: <code>"Mein Feed"</code>',
),
'help' => 'A JSON dotted path uses dots between objects and brackets for arrays (e.g. <code>data.items[0].title</code>)', // TODO
'help' => 'JSON punktnotiert nutzt Punkte zwischen den Objekten und eckige Klammern für Arrays (e.g. <code>data.items[0].title</code>)',
'item' => array(
'_' => 'finding news <strong>items</strong><br /><small>(most important)</small>', // TODO
'help' => 'JSON path to the array containing the items, e.g. <code>newsItems</code>', // TODO
'_' => 'News <strong>Items</strong> finden<br /><small>(sehr wichtig)</small>',
'help' => 'JSON-Pfad zum Array, das die Items enthält, z.B. <code>newsItems</code>',
),
'item_author' => 'item author', // TODO
'item_categories' => 'item tags', // TODO
'item_author' => 'Item Autor',
'item_categories' => 'Item Hashtags',
'item_content' => array(
'_' => 'item content', // TODO
'help' => 'Key under which the content is found, e.g. <code>content</code>', // TODO
'_' => 'Item Inhalt',
'help' => 'Schlüsslwort unter dem der Inhalt gefunden wird, z.B. <code>content</code>',
),
'item_thumbnail' => array(
'_' => 'item thumbnail', // TODO
'help' => 'Example: <code>image</code>', // TODO
'_' => 'Item Vorschaubild',
'help' => 'Beispiel: <code>image</code>',
),
'item_timeFormat' => array(
'_' => 'Custom date/time format', // TODO
'help' => 'Optional. A format supported by <a href="https://php.net/datetime.createfromformat" target="_blank"><code>DateTime::createFromFormat()</code></a> such as <code>d-m-Y H:i:s</code>', // TODO
'_' => 'Benutzerdefiniertes Datum/Zeit-Format',
'help' => 'Optional. Format, das von <a href="https://php.net/datetime.createfromformat" target="_blank"><code>DateTime::createFromFormat()</code></a> unterstützt wird, wie z.B. <code>d-m-Y H:i:s</code>',
),
'item_timestamp' => array(
'_' => 'item date', // TODO
'help' => 'The result will be parsed by <a href="https://php.net/strtotime" target="_blank"><code>strtotime()</code></a>', // TODO
'_' => 'Item Datum',
'help' => 'Das Ergebnis wird von <a href="https://php.net/strtotime" target="_blank"><code>strtotime()</code></a> geparst.',
),
'item_title' => 'item title', // TODO
'item_uid' => 'item unique ID', // TODO
'item_title' => 'Item Titel',
'item_uid' => 'Item einmalige ID',
'item_uri' => array(
'_' => 'item link (URL)', // TODO
'help' => 'Example: <code>permalink</code>', // TODO
'_' => 'Item Link (URL)',
'help' => 'Beispiel: <code>permalink</code>',
),
'json' => 'Dotted Path for:', // TODO
'relative' => 'Dotted Path (relative to item) for:', // TODO
'json' => 'Punktnotation für:',
'relative' => 'Punktnotierter Pfad (relativ zum Item) für:',
),
'jsonfeed' => 'JSON Feed', // TODO
'jsonfeed' => 'JSON Feed', // IGNORE
'rss' => 'RSS / Atom (Standard)',
'xml_xpath' => 'XML + XPath', // IGNORE
),
@ -173,10 +178,10 @@ return array(
'max_http_redir' => 'Max HTTP Umleitungen',
'max_http_redir_help' => '0 oder leeres Feld = deaktiviert; -1 für unendlich viele Umleitungen',
'method' => array(
'_' => 'HTTP Method', // TODO
'_' => 'HTTP Methode',
),
'method_help' => 'The POST payload has automatic support for <code>application/x-www-form-urlencoded</code> and <code>application/json</code>', // TODO
'method_postparams' => 'Payload for POST', // TODO
'method_help' => 'Der POST-Payload unterstützt automatisch <code>application/x-www-form-urlencoded</code> und <code>application/json</code>',
'method_postparams' => 'Payload für POST',
'moved_category_deleted' => 'Wenn Sie eine Kategorie entfernen, werden deren Feeds automatisch in die Kategorie <em>%s</em> eingefügt.',
'mute' => 'Stumm schalten',
'no_selected' => 'Kein Feed ausgewählt.',
@ -185,7 +190,7 @@ return array(
'_' => 'Sichtbarkeit',
'archived' => 'Nicht anzeigen (archiviert)',
'category' => 'Zeige in eigener Kategorie',
'important' => 'Show in important feeds', // TODO
'important' => 'Zeige in "Wichtige Feeds"',
'main_stream' => 'In Haupt-Feeds zeigen',
),
'proxy' => 'Verwende einen Proxy, um den Feed abzuholen',
@ -240,7 +245,7 @@ return array(
'subscription_tools' => 'Abonnement-Tools',
),
'tag' => array(
'auto_label' => 'Add this label to new articles', // TODO
'auto_label' => 'Dieses Label zu neuen Artikeln hinzufügen',
'name' => 'Name', // IGNORE
'new_name' => 'Neuer Name',
'old_name' => 'Alter Name',

View File

@ -66,6 +66,11 @@ return array(
'description' => 'Description', // TODO
'empty' => 'This feed is empty. Please verify that it is still maintained.', // TODO
'error' => 'This feed has encountered a problem. Please verify that it is always reachable then update it.', // TODO
'export-as-opml' => array(
'download' => 'Download', // TODO
'help' => 'XML file', // TODO
'label' => 'Export as OPML', // TODO
),
'filteractions' => array(
'_' => 'Filter actions', // TODO
'help' => 'Write one search filter per line. Operators <a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#with-the-search-field" target="_blank">see documentation</a>.', // TODO
@ -121,13 +126,13 @@ return array(
'relative' => 'XPath (relative to item) for:', // TODO
'xpath' => 'XPath for:', // TODO
),
'json_dotpath' => array(
'_' => 'JSON (Dotted paths)', // TODO
'json_dotnotation' => array(
'_' => 'JSON (dot notation)', // TODO
'feed_title' => array(
'_' => 'feed title', // TODO
'help' => 'Example: <code>meta.title</code> or a static string: <code>"My custom feed"</code>', // TODO
),
'help' => 'A JSON dotted path uses dots between objects and brackets for arrays (e.g. <code>data.items[0].title</code>)', // TODO
'help' => 'A JSON dot notated uses dots between objects and brackets for arrays (e.g. <code>data.items[0].title</code>)', // TODO
'item' => array(
'_' => 'finding news <strong>items</strong><br /><small>(most important)</small>', // TODO
'help' => 'JSON path to the array containing the items, e.g. <code>newsItems</code>', // TODO
@ -156,8 +161,8 @@ return array(
'_' => 'item link (URL)', // TODO
'help' => 'Example: <code>permalink</code>', // TODO
),
'json' => 'Dotted Path for:', // TODO
'relative' => 'Dotted Path (relative to item) for:', // TODO
'json' => 'dot notation for:', // TODO
'relative' => 'dot notated path (relative to item) for:', // TODO
),
'jsonfeed' => 'JSON Feed', // TODO
'rss' => 'RSS / Atom (default)', // TODO

View File

@ -66,6 +66,11 @@ return array(
'description' => 'Description', // IGNORE
'empty' => 'This feed is empty. Please verify that it is still maintained.', // IGNORE
'error' => 'This feed has encountered a problem. Please verify that it is always reachable then update it.', // IGNORE
'export-as-opml' => array(
'download' => 'Download', // IGNORE
'help' => 'XML file', // IGNORE
'label' => 'Export as OPML', // IGNORE
),
'filteractions' => array(
'_' => 'Filter actions', // IGNORE
'help' => 'Write one search filter per line. Operators <a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#with-the-search-field" target="_blank">see documentation</a>.', // IGNORE
@ -121,13 +126,13 @@ return array(
'relative' => 'XPath (relative to item) for:', // IGNORE
'xpath' => 'XPath for:', // IGNORE
),
'json_dotpath' => array(
'_' => 'JSON (Dotted paths)', // IGNORE
'json_dotnotation' => array(
'_' => 'JSON (dot notation)', // IGNORE
'feed_title' => array(
'_' => 'feed title', // IGNORE
'help' => 'Example: <code>meta.title</code> or a static string: <code>"My custom feed"</code>', // IGNORE
),
'help' => 'A JSON dotted path uses dots between objects and brackets for arrays (e.g. <code>data.items[0].title</code>)', // IGNORE
'help' => 'A JSON dot notated uses dots between objects and brackets for arrays (e.g. <code>data.items[0].title</code>)', // IGNORE
'item' => array(
'_' => 'finding news <strong>items</strong><br /><small>(most important)</small>', // IGNORE
'help' => 'JSON path to the array containing the items, e.g. <code>newsItems</code>', // IGNORE
@ -156,8 +161,8 @@ return array(
'_' => 'item link (URL)', // IGNORE
'help' => 'Example: <code>permalink</code>', // IGNORE
),
'json' => 'Dotted Path for:', // IGNORE
'relative' => 'Dotted Path (relative to item) for:', // IGNORE
'json' => 'dot notation for:', // IGNORE
'relative' => 'dot notated path (relative to item) for:', // IGNORE
),
'jsonfeed' => 'JSON Feed', // IGNORE
'rss' => 'RSS / Atom (default)', // IGNORE

View File

@ -66,6 +66,11 @@ return array(
'description' => 'Description',
'empty' => 'This feed is empty. Please verify that it is still maintained.',
'error' => 'This feed has encountered a problem. Please verify that it is always reachable then update it.',
'export-as-opml' => array(
'download' => 'Download',
'help' => 'XML file',
'label' => 'Export as OPML',
),
'filteractions' => array(
'_' => 'Filter actions',
'help' => 'Write one search filter per line. Operators <a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#with-the-search-field" target="_blank">see documentation</a>.',
@ -121,13 +126,13 @@ return array(
'relative' => 'XPath (relative to item) for:',
'xpath' => 'XPath for:',
),
'json_dotpath' => array(
'_' => 'JSON (Dotted paths)',
'json_dotnotation' => array(
'_' => 'JSON (dot notation)',
'feed_title' => array(
'_' => 'feed title',
'help' => 'Example: <code>meta.title</code> or a static string: <code>"My custom feed"</code>',
),
'help' => 'A JSON dotted path uses dots between objects and brackets for arrays (e.g. <code>data.items[0].title</code>)',
'help' => 'A JSON dot notated uses dots between objects and brackets for arrays (e.g. <code>data.items[0].title</code>)',
'item' => array(
'_' => 'finding news <strong>items</strong><br /><small>(most important)</small>',
'help' => 'JSON path to the array containing the items, e.g. <code>newsItems</code>',
@ -156,8 +161,8 @@ return array(
'_' => 'item link (URL)',
'help' => 'Example: <code>permalink</code>',
),
'json' => 'Dotted Path for:',
'relative' => 'Dotted Path (relative to item) for:',
'json' => 'dot notation for:',
'relative' => 'dot notated path (relative to item) for:',
),
'jsonfeed' => 'JSON Feed',
'rss' => 'RSS / Atom (default)',

View File

@ -66,6 +66,11 @@ return array(
'description' => 'Descripción',
'empty' => 'La fuente está vacía. Por favor, verifica que siga activa.',
'error' => 'Hay un problema con esta fuente. Por favor, veritica que esté disponible y prueba de nuevo.',
'export-as-opml' => array(
'download' => 'Download', // TODO
'help' => 'XML file', // TODO
'label' => 'Export as OPML', // TODO
),
'filteractions' => array(
'_' => 'Filtrar acciones',
'help' => 'Escribir un filtro de búsqueda por línea. Operators <a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#with-the-search-field" target="_blank">see documentation</a>.', // DIRTY
@ -121,13 +126,13 @@ return array(
'relative' => 'XPath (relativo al elemento) para:',
'xpath' => 'XPath para:',
),
'json_dotpath' => array(
'_' => 'JSON (Dotted paths)', // TODO
'json_dotnotation' => array(
'_' => 'JSON (dot notation)', // TODO
'feed_title' => array(
'_' => 'feed title', // TODO
'help' => 'Example: <code>meta.title</code> or a static string: <code>"My custom feed"</code>', // TODO
),
'help' => 'A JSON dotted path uses dots between objects and brackets for arrays (e.g. <code>data.items[0].title</code>)', // TODO
'help' => 'A JSON dot notated uses dots between objects and brackets for arrays (e.g. <code>data.items[0].title</code>)', // TODO
'item' => array(
'_' => 'finding news <strong>items</strong><br /><small>(most important)</small>', // TODO
'help' => 'JSON path to the array containing the items, e.g. <code>newsItems</code>', // TODO
@ -156,8 +161,8 @@ return array(
'_' => 'item link (URL)', // TODO
'help' => 'Example: <code>permalink</code>', // TODO
),
'json' => 'Dotted Path for:', // TODO
'relative' => 'Dotted Path (relative to item) for:', // TODO
'json' => 'dot notation for:', // TODO
'relative' => 'dot notated path (relative to item) for:', // TODO
),
'jsonfeed' => 'JSON Feed', // TODO
'rss' => 'RSS / Atom (por defecto)',

View File

@ -66,6 +66,11 @@ return array(
'description' => ' توضیحات',
'empty' => ' این فید خالی است. لطفاً بررسی کنید که هنوز نگهداری می شود.',
'error' => ' این فید با مشکل مواجه شده است. لطفاً بررسی کنید که همیشه در دسترس است و سپس آن را به روز کنید.',
'export-as-opml' => array(
'download' => 'Download', // TODO
'help' => 'XML file', // TODO
'label' => 'Export as OPML', // TODO
),
'filteractions' => array(
'_' => ' اعمال فیلتر',
'help' => ' در هر خط یک فیلتر جستجو بنویسید. اپراتورها <a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#with-the-search-field" target="_blank">مستندات را ببینید</a>.',
@ -121,13 +126,13 @@ return array(
'relative' => 'XPath (نسبت به مورد) برای:',
'xpath' => ' XPath برای:',
),
'json_dotpath' => array(
'_' => 'JSON (Dotted paths)', // TODO
'json_dotnotation' => array(
'_' => 'JSON (dot notation)', // TODO
'feed_title' => array(
'_' => 'feed title', // TODO
'help' => 'Example: <code>meta.title</code> or a static string: <code>"My custom feed"</code>', // TODO
),
'help' => 'A JSON dotted path uses dots between objects and brackets for arrays (e.g. <code>data.items[0].title</code>)', // TODO
'help' => 'A JSON dot notated uses dots between objects and brackets for arrays (e.g. <code>data.items[0].title</code>)', // TODO
'item' => array(
'_' => 'finding news <strong>items</strong><br /><small>(most important)</small>', // TODO
'help' => 'JSON path to the array containing the items, e.g. <code>newsItems</code>', // TODO
@ -156,8 +161,8 @@ return array(
'_' => 'item link (URL)', // TODO
'help' => 'Example: <code>permalink</code>', // TODO
),
'json' => 'Dotted Path for:', // TODO
'relative' => 'Dotted Path (relative to item) for:', // TODO
'json' => 'dot notation for:', // TODO
'relative' => 'dot notated path (relative to item) for:', // TODO
),
'jsonfeed' => 'JSON Feed', // TODO
'rss' => ' RSS / Atom (پیش‌فرض)',

View File

@ -66,6 +66,11 @@ return array(
'description' => 'Description', // IGNORE
'empty' => 'Ce flux est vide. Veuillez vérifier quil est toujours maintenu.',
'error' => 'Ce flux a rencontré un problème. Veuillez vérifier quil est toujours accessible puis actualisez-le.',
'export-as-opml' => array(
'download' => 'Télécharger',
'help' => 'Fichier XML',
'label' => 'Exporter en OPML',
),
'filteractions' => array(
'_' => 'Filtres daction',
'help' => 'Écrivez une recherche par ligne. Voir la <a href="https://freshrss.github.io/FreshRSS/fr/users/03_Main_view.html#gr%C3%A2ce-au-champ-de-recherche" target="_blank">documentation des opérateurs</a>.',
@ -121,13 +126,13 @@ return array(
'relative' => 'XPath (relatif à larticle) pour :',
'xpath' => 'XPath pour :',
),
'json_dotpath' => array(
'_' => 'JSON (Chemin)',
'json_dotnotation' => array(
'_' => 'JSON (notation point)',
'feed_title' => array(
'_' => 'titre de flux',
'help' => 'Exemple : <code>meta.title</code> ou un texte statique : <code>"Mon flux personnalisé"</code>',
),
'help' => 'Un chemin JSON utilise le point comme séparateur objet, et des crochets pour un tableau : (ex : <code>data.items[0].title</code>)',
'help' => 'La notation point pour JSON utilise le point comme séparateur objet, et des crochets pour un tableau : (ex : <code>data.items[0].title</code>)',
'item' => array(
'_' => 'trouver les <strong>articles</strong><br /><small>(cest le plus important)</small>',
'help' => 'Chemin vers le tableau contenant les articles, par exemple <code>newsItems</code>',
@ -156,8 +161,8 @@ return array(
'_' => 'lien (URL) de larticle',
'help' => 'Exemple : <code>permalink</code>',
),
'json' => 'Chemin JSON pour :',
'relative' => 'Chemin relatif à larticle pour :',
'json' => 'notation point pour :',
'relative' => 'notation point relative à larticle pour :',
),
'jsonfeed' => 'JSON Feed', // IGNORE
'rss' => 'RSS / Atom (par défaut)',

View File

@ -66,6 +66,11 @@ return array(
'description' => 'תיאור',
'empty' => 'הזנה זו ריקה. אנא ודאו שהיא עדיין מתוחזקת.',
'error' => 'הזנה זו נתקלה בשגיאה, אנא ודאו שהיא תקינה ואז נסו שנית.',
'export-as-opml' => array(
'download' => 'Download', // TODO
'help' => 'XML file', // TODO
'label' => 'Export as OPML', // TODO
),
'filteractions' => array(
'_' => 'Filter actions', // TODO
'help' => 'Write one search filter per line. Operators <a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#with-the-search-field" target="_blank">see documentation</a>.', // TODO
@ -121,13 +126,13 @@ return array(
'relative' => 'XPath (relative to item) for:', // TODO
'xpath' => 'XPath for:', // TODO
),
'json_dotpath' => array(
'_' => 'JSON (Dotted paths)', // TODO
'json_dotnotation' => array(
'_' => 'JSON (dot notation)', // TODO
'feed_title' => array(
'_' => 'feed title', // TODO
'help' => 'Example: <code>meta.title</code> or a static string: <code>"My custom feed"</code>', // TODO
),
'help' => 'A JSON dotted path uses dots between objects and brackets for arrays (e.g. <code>data.items[0].title</code>)', // TODO
'help' => 'A JSON dot notated uses dots between objects and brackets for arrays (e.g. <code>data.items[0].title</code>)', // TODO
'item' => array(
'_' => 'finding news <strong>items</strong><br /><small>(most important)</small>', // TODO
'help' => 'JSON path to the array containing the items, e.g. <code>newsItems</code>', // TODO
@ -156,8 +161,8 @@ return array(
'_' => 'item link (URL)', // TODO
'help' => 'Example: <code>permalink</code>', // TODO
),
'json' => 'Dotted Path for:', // TODO
'relative' => 'Dotted Path (relative to item) for:', // TODO
'json' => 'dot notation for:', // TODO
'relative' => 'dot notated path (relative to item) for:', // TODO
),
'jsonfeed' => 'JSON Feed', // TODO
'rss' => 'RSS / Atom (default)', // TODO

View File

@ -19,8 +19,8 @@ return array(
'http' => 'HTTP (haladó felhasználóknak HTTPS-el)',
'none' => 'nincs (veszélyes)',
'title' => 'Hitelesítés',
'token' => 'Master authentication token', // TODO
'token_help' => 'Allows access to all RSS outputs of the user as well as refreshing feeds without authentication:', // TODO
'token' => 'Fő hitelesítési token',
'token_help' => 'Lehetővé teszi a hozzáférést a felhasználó összes RSS-kimenetéhez, valamint a hírfolyamok frissítéséhez hitelesítés nélkül:',
'type' => 'Hitelesítési módszer',
'unsafe_autologin' => 'Engedélyezze a nem biztonságos automata bejelentkezést a következő formátummal: ',
),

View File

@ -120,20 +120,20 @@ return array(
'feeds' => 'Rendezés hírforrás szerint',
'order' => 'Rendezés dátum szerint',
'search' => 'Kifejezés',
'shareOpml' => 'Enable sharing by OPML of corresponding categories and feeds', // TODO
'shareRss' => 'Enable sharing by HTML &amp; RSS', // TODO
'shareOpml' => 'Engedélyezze a megfelelő kategóriák és hírcsatornák OPML-alapú megosztását',
'shareRss' => 'Engedélyezze a HTML &amp; RSS megosztást',
'state' => 'Státusz',
'tags' => 'Rendezés címke szerint',
'type' => 'Típus',
),
'get_all' => 'Minden cikk megjelenítése',
'get_all_labels' => 'Display articles with any label', // TODO
'get_all_labels' => 'Cikkek megjelenítése bármilyen címkével',
'get_category' => 'Listáz “%s” kategóriát',
'get_favorite' => 'Kedvenc cikkek megjelenítése',
'get_feed' => 'Listáz “%s” hírforrást',
'get_important' => 'Display articles from important feeds', // TODO
'get_label' => 'Display articles with “%s” label', // TODO
'help' => 'See the <a href="https://freshrss.github.io/FreshRSS/en/users/user_queries.html" target="_blank">documentation for user queries and resharing by HTML / RSS / OPML</a>.', // TODO
'get_important' => 'Cikkek megjelenítése fontos hírforrásokból',
'get_label' => ' “%s” címkével rendelkező cikkek megjelenítése',
'help' => 'Lásd a <a href="https://freshrss.github.io/FreshRSS/en/users/user_queries.html" target="_blank"> dokumentációt a felhasználói lekérdezések és HTML/RSS/OPML megosztás témákban</a>.',
'name' => 'Név',
'no_filter' => 'Nincs szűrés',
'number' => 'Lekérdezés %d',
@ -141,11 +141,11 @@ return array(
'order_desc' => 'Újabb cikkek előre',
'search' => 'Keresse a “%s”',
'share' => array(
'_' => 'Share this query by link', // TODO
'help' => 'Give this link if you want to share this query with anyone', // TODO
'html' => 'Shareable link to the HTML page', // TODO
'opml' => 'Shareable link to the OPML list of feeds', // TODO
'rss' => 'Shareable link to the RSS feed', // TODO
'_' => 'Lekérdezés megosztása linkkel',
'help' => 'Ezt a linket küldd el hogy megoszd a lekérdezést',
'html' => 'Megosztható link a HTML oldalhoz',
'opml' => 'Megosztható link az OPML hírforrás listához',
'rss' => 'Megosztható link az RSS hírforráshoz',
),
'state_0' => 'Minden cikk',
'state_1' => 'Olvasott cikkek',

View File

@ -116,10 +116,10 @@ return array(
),
'tag' => array(
'created' => 'Címke “%s” létrehozva.',
'error' => 'Label could not be updated!', // TODO
'error' => 'Nem sikerült a címke frissítése!',
'name_exists' => 'Címke név már létezik.',
'renamed' => 'Címke “%s” átnevezve “%s”.',
'updated' => 'Label has been updated.', // TODO
'updated' => 'Címke frissítése megtörtént.',
),
'update' => array(
'can_apply' => 'Egy FreshRSS frissítés elérhető : <strong>Verzió %s</strong>.',

View File

@ -66,6 +66,11 @@ return array(
'description' => 'Leírás',
'empty' => 'Ez a hírforrás üres. Ellenőrizd hogy van e tartalom rajta.',
'error' => 'Ez a hírforrás nem működik. Ellenőrizd az elérhetőségét és frissítsd.',
'export-as-opml' => array(
'download' => 'Letöltés',
'help' => 'XML fájl',
'label' => 'Exportálás OPML formátumban',
),
'filteractions' => array(
'_' => 'Szűrő műveletek',
'help' => 'Írj egy szűrőt soronként. Műveletek <a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#with-the-search-field" target="_blank">a dokumentációban</a>.',
@ -108,7 +113,7 @@ return array(
),
'item_title' => array(
'_' => 'elem cím',
'help' => 'Használja az <a href="https://developer.mozilla.org/docs/Web/XPath/Axes" target="_blank">XPath axis</a> <code>descendant::</code> mint <code>descendant::h2</code>',
'help' => 'Használja az <a href="https://developer.mozilla.org/docs/Web/XPath/Axes" target="_blank">XPath Axes</a> <code>descendant::</code> mint <code>descendant::h2</code>',
),
'item_uid' => array(
'_' => 'elem egyedi ID',
@ -121,45 +126,45 @@ return array(
'relative' => 'XPath (az elemhez viszonyítva) ehhez:',
'xpath' => 'XPath ehhez:',
),
'json_dotpath' => array(
'_' => 'JSON (Dotted paths)', // TODO
'json_dotnotation' => array(
'_' => 'JSON (pont jelölés)',
'feed_title' => array(
'_' => 'feed title', // TODO
'help' => 'Example: <code>meta.title</code> or a static string: <code>"My custom feed"</code>', // TODO
'_' => 'hírforrás címe',
'help' => 'Például: <code>meta.title</code> vagy egy statikus sztring: <code>"Az egyedi hírforrásom"</code>',
),
'help' => 'A JSON dotted path uses dots between objects and brackets for arrays (e.g. <code>data.items[0].title</code>)', // TODO
'help' => 'A JSON pontjelölés pontokat használ az objektumok között és zárójeleket a tömbökhöz (pl. <code>data.items[0].title</code>)',
'item' => array(
'_' => 'finding news <strong>items</strong><br /><small>(most important)</small>', // TODO
'help' => 'JSON path to the array containing the items, e.g. <code>newsItems</code>', // TODO
'_' => 'hírek keresése <strong>elemek</strong><br /><small>(legfontosabb)</small>',
'help' => 'JSON útvonal az elemeket tartalmazó tömbhöz, pl. <code>newsItems</code>',
),
'item_author' => 'item author', // TODO
'item_categories' => 'item tags', // TODO
'item_author' => 'elem szerző',
'item_categories' => 'elem címkék',
'item_content' => array(
'_' => 'item content', // TODO
'help' => 'Key under which the content is found, e.g. <code>content</code>', // TODO
'_' => 'elem tartalom',
'help' => 'Kulcs ami alatt a tartalom megtalálható, például <code>tartalom</code>',
),
'item_thumbnail' => array(
'_' => 'item thumbnail', // TODO
'help' => 'Example: <code>image</code>', // TODO
'_' => 'elem előnézeti kép',
'help' => 'Például: <code>image</code>',
),
'item_timeFormat' => array(
'_' => 'Custom date/time format', // TODO
'help' => 'Optional. A format supported by <a href="https://php.net/datetime.createfromformat" target="_blank"><code>DateTime::createFromFormat()</code></a> such as <code>d-m-Y H:i:s</code>', // TODO
'_' => 'Egyedi dátum/idő formátum',
'help' => 'Opcionális. Egy a <a href="https://php.net/datetime.createfromformat" target="_blank"><code>DateTime::createFromFormat()</code></a> funkció által támogatott formátum, például: <code>d-m-Y H:i:s</code>',
),
'item_timestamp' => array(
'_' => 'item date', // TODO
'help' => 'The result will be parsed by <a href="https://php.net/strtotime" target="_blank"><code>strtotime()</code></a>', // TODO
'_' => 'elem dátum',
'help' => 'Az eredményt az <a href="https://php.net/strtotime" target="_blank"><code>strtotime()</code></a> php függvény fogja értelmezni',
),
'item_title' => 'item title', // TODO
'item_uid' => 'item unique ID', // TODO
'item_title' => 'elem címe',
'item_uid' => 'elem egyedi azonosító ID',
'item_uri' => array(
'_' => 'item link (URL)', // TODO
'help' => 'Example: <code>permalink</code>', // TODO
'_' => 'elem link (URL)',
'help' => 'Például: <code>permalink</code>',
),
'json' => 'Dotted Path for:', // TODO
'relative' => 'Dotted Path (relative to item) for:', // TODO
'json' => 'pontjelölés ehhez:',
'relative' => 'pont jelölt útvonal (relatív az elemhez):',
),
'jsonfeed' => 'JSON Feed', // TODO
'jsonfeed' => 'JSON Hírforrás',
'rss' => 'RSS / Atom (alapértelmezett)',
'xml_xpath' => 'XML + XPath', // IGNORE
),
@ -173,10 +178,10 @@ return array(
'max_http_redir' => 'Max HTTP átirányítás',
'max_http_redir_help' => '0 vagy üresen hagyva kikapcsolt, -1 a végtelen átirányításhoz',
'method' => array(
'_' => 'HTTP Method', // TODO
'_' => 'HTTP Módszer',
),
'method_help' => 'The POST payload has automatic support for <code>application/x-www-form-urlencoded</code> and <code>application/json</code>', // TODO
'method_postparams' => 'Payload for POST', // TODO
'method_help' => 'A POST metódus hasznos adattartalma automatikusan támogatja az <code>application/x-www-form-urlencoded</code> és <code>application/json</code>',
'method_postparams' => 'POST metódus adattartalma',
'moved_category_deleted' => 'Ha kitörölsz egy kategóriát, az alá tartozó hírforrások automatikusan ide kerülnek <em>%s</em>.',
'mute' => 'némítás',
'no_selected' => 'Nincsen hírforrás kiválasztva.',
@ -240,7 +245,7 @@ return array(
'subscription_tools' => 'Hírforrás eszközök',
),
'tag' => array(
'auto_label' => 'Add this label to new articles', // TODO
'auto_label' => 'Adja hozzá automatikusan ezt a címkét az új cikkekhez',
'name' => 'Név',
'new_name' => 'Új név',
'old_name' => 'Régi név',

View File

@ -66,6 +66,11 @@ return array(
'description' => 'Description', // TODO
'empty' => 'This feed is empty. Please verify that it is still maintained.', // TODO
'error' => 'This feed has encountered a problem. Please verify that it is always reachable then update it.', // TODO
'export-as-opml' => array(
'download' => 'Download', // TODO
'help' => 'XML file', // TODO
'label' => 'Export as OPML', // TODO
),
'filteractions' => array(
'_' => 'Filter actions', // TODO
'help' => 'Write one search filter per line. Operators <a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#with-the-search-field" target="_blank">see documentation</a>.', // TODO
@ -121,13 +126,13 @@ return array(
'relative' => 'XPath (relative to item) for:', // TODO
'xpath' => 'XPath for:', // TODO
),
'json_dotpath' => array(
'_' => 'JSON (Dotted paths)', // TODO
'json_dotnotation' => array(
'_' => 'JSON (dot notation)', // TODO
'feed_title' => array(
'_' => 'feed title', // TODO
'help' => 'Example: <code>meta.title</code> or a static string: <code>"My custom feed"</code>', // TODO
),
'help' => 'A JSON dotted path uses dots between objects and brackets for arrays (e.g. <code>data.items[0].title</code>)', // TODO
'help' => 'A JSON dot notated uses dots between objects and brackets for arrays (e.g. <code>data.items[0].title</code>)', // TODO
'item' => array(
'_' => 'finding news <strong>items</strong><br /><small>(most important)</small>', // TODO
'help' => 'JSON path to the array containing the items, e.g. <code>newsItems</code>', // TODO
@ -156,8 +161,8 @@ return array(
'_' => 'item link (URL)', // TODO
'help' => 'Example: <code>permalink</code>', // TODO
),
'json' => 'Dotted Path for:', // TODO
'relative' => 'Dotted Path (relative to item) for:', // TODO
'json' => 'dot notation for:', // TODO
'relative' => 'dot notated path (relative to item) for:', // TODO
),
'jsonfeed' => 'JSON Feed', // TODO
'rss' => 'RSS / Atom (default)', // TODO

View File

@ -19,8 +19,8 @@ return array(
'http' => 'HTTP (per gli utenti avanzati con HTTPS)',
'none' => 'Nessuno (pericoloso)',
'title' => 'Autenticazione',
'token' => 'Master authentication token', // TODO
'token_help' => 'Allows access to all RSS outputs of the user as well as refreshing feeds without authentication:', // TODO
'token' => 'Token di autenticazione principale',
'token_help' => 'Consente laccesso a tutti gli output RSS dellutente e di aggiornare i feed senza autenticazione:',
'type' => 'Metodo di autenticazione',
'unsafe_autologin' => 'Consenti accesso automatico non sicuro usando il formato: ',
),

View File

@ -120,20 +120,20 @@ return array(
'feeds' => 'Mostra per feed',
'order' => 'Ordina per data',
'search' => 'Espressione',
'shareOpml' => 'Enable sharing by OPML of corresponding categories and feeds', // TODO
'shareRss' => 'Enable sharing by HTML &amp; RSS', // TODO
'shareOpml' => 'Abilita la condivisione di OPML di categorie e feed corrispondenti',
'shareRss' => 'Abilita la condivisione di HTML &amp; RSS',
'state' => 'Stato',
'tags' => 'Mostra per tag', // DIRTY
'tags' => 'Tag',
'type' => 'Tipo',
),
'get_all' => 'Mostra tutti gli articoli',
'get_all_labels' => 'Display articles with any label', // TODO
'get_all_labels' => 'Mostra gli articoli con qualsiasi etichetta',
'get_category' => 'Mostra la categoria “%s” ',
'get_favorite' => 'Mostra articoli preferiti',
'get_feed' => 'Mostra feed “%s” ',
'get_important' => 'Display articles from important feeds', // TODO
'get_label' => 'Display articles with “%s” label', // TODO
'help' => 'See the <a href="https://freshrss.github.io/FreshRSS/en/users/user_queries.html" target="_blank">documentation for user queries and resharing by HTML / RSS / OPML</a>.', // TODO
'get_important' => 'Mostra articoli dai feed importanti',
'get_label' => 'Mostra articoli con letichetta “%s”',
'help' => 'Vedi la <a href="https://freshrss.github.io/FreshRSS/en/users/user_queries.html" target="_blank">documentazione per le query utente e ricondivisioine tramite HTML / RSS / OPML</a>.',
'name' => 'Nome',
'no_filter' => 'Nessun filtro',
'number' => 'Ricerca n°%d',
@ -141,11 +141,11 @@ return array(
'order_desc' => 'Mostra prima gli articoli più nuovi',
'search' => 'Cerca per “%s”',
'share' => array(
'_' => 'Share this query by link', // TODO
'help' => 'Give this link if you want to share this query with anyone', // TODO
'html' => 'Shareable link to the HTML page', // TODO
'opml' => 'Shareable link to the OPML list of feeds', // TODO
'rss' => 'Shareable link to the RSS feed', // TODO
'_' => 'Condividi questa query tramite un link',
'help' => 'Fornisci questo link se vuoi condividere questa query con altre persone',
'html' => 'Link condivisibile alla pagina HTML',
'opml' => 'Link condivisibile alla lista OPML dei feed',
'rss' => 'Link condivisibile al feed RSS',
),
'state_0' => 'Mostra tutti gli articoli',
'state_1' => 'Mostra gli articoli letti',
@ -209,7 +209,7 @@ return array(
'misc' => 'Varie',
'view' => 'Vista',
),
'hide_read_feeds' => 'Nascondi categorie e feeds con articoli già letti (non funziona se “Mostra tutti gli articoli” è selezionato)',
'hide_read_feeds' => 'Nascondi categorie e feed con articoli già letti (non funziona se “Mostra tutti gli articoli” è selezionato)',
'img_with_lazyload' => 'Usa la modalità “caricamento ritardato” per le immagini',
'jump_next' => 'Salta al successivo feed o categoria non letto',
'mark_updated_article_unread' => 'Segna articoli aggiornati come non letti',
@ -287,7 +287,7 @@ return array(
'mark_favorite' => 'Segna come preferito',
'mark_read' => 'Segna come letto',
'navigation' => 'Navigazione',
'navigation_help' => 'Con il tasto <kbd>⇧ Shift</kbd> i comandi di navigazione verranno applicati ai feeds.<br/>Con il tasto <kbd>Alt ⎇</kbd> i comandi di navigazione verranno applicati alle categorie.',
'navigation_help' => 'Con il tasto <kbd>⇧ Shift</kbd> i comandi di navigazione verranno applicati ai feed.<br/>Con il tasto <kbd>Alt ⎇</kbd> i comandi di navigazione verranno applicati alle categorie.',
'navigation_no_mod_help' => 'Le seguenti scorciatoie di navigazione non supportano i modificatori.',
'next_article' => 'Salta al contenuto successivo',
'next_unread_article' => 'Apri il prossimo articolo non letto',

View File

@ -57,11 +57,11 @@ return array(
),
'import_export' => array(
'export_no_zip_extension' => 'Estensione ZIP non presente sul server. Per favore esporta i files singolarmente.',
'feeds_imported' => 'I tuoi feed sono stati importati e saranno aggiornati / Your feeds have been imported. If you are done importing, you can now click the <i>Update feeds</i> button.', // DIRTY
'feeds_imported_with_errors' => 'I tuoi feeds sono stati importati ma si sono verificati alcuni errori / Your feeds have been imported, but some errors occurred. If you are done importing, you can now click the <i>Update feeds</i> button.', // DIRTY
'feeds_imported' => 'I tuoi feed sono stati importati e saranno aggiornati. Se hai completato limportazione, puoi cliccare sul pulsante <i>Aggiorna feed</i>.',
'feeds_imported_with_errors' => 'I tuoi feed sono stati importati ma si sono verificati alcuni errori. Se hai completato limportazione, puoi cliccare sul pulsante <i>Aggiorna feed</i>.',
'file_cannot_be_uploaded' => 'Il file non può essere caricato!',
'no_zip_extension' => 'Estensione ZIP non presente sul server.',
'zip_error' => 'Si è verificato un errore importando il file ZIP', // DIRTY
'zip_error' => 'Si è verificato un errore importando il file ZIP',
),
'profile' => array(
'error' => 'Il tuo profilo non può essere modificato',
@ -88,7 +88,7 @@ return array(
),
'feed' => array(
'actualized' => '<em>%s</em> aggiornato',
'actualizeds' => 'RSS feeds aggiornati',
'actualizeds' => 'Feed RSS aggiornati',
'added' => 'RSS feed <em>%s</em> aggiunti',
'already_subscribed' => 'Hai già sottoscritto <em>%s</em>',
'cache_cleared' => 'La cache di <em>%s</em> è stata svuotata',
@ -96,7 +96,7 @@ return array(
'error' => 'Feed non aggiornato',
'internal_problem' => 'Feed RSS non aggiunto. <a href="%s">Verifica i log</a> per dettagli. Puoi provare laggiunta forzata aggiungendo <code>#force_feed</code> allURL.',
'invalid_url' => 'URL <em>%s</em> non valido',
'n_actualized' => '%d feeds aggiornati',
'n_actualized' => '%d feed aggiornati',
'n_entries_deleted' => '%d articoli cancellati',
'no_refresh' => 'Nessun aggiornamento disponibile…',
'not_added' => '<em>%s</em> non può essere aggiunto',

View File

@ -43,7 +43,7 @@ return array(
'archiving' => 'Archiviazione',
'auth' => array(
'configuration' => 'Autenticazione',
'help' => 'Accesso per feeds protetti',
'help' => 'Accesso per feed protetti',
'http' => 'Autenticazione HTTP',
'password' => 'Password HTTP',
'username' => 'Nome utente HTTP',
@ -57,7 +57,7 @@ return array(
),
'css_cookie' => 'Usa i cookie quando viene recuperato il contenuto di un articolo',
'css_cookie_help' => 'Esempio: <kbd>foo=bar; gdpr_consent=true; cookie=value</kbd>',
'css_help' => 'In caso di RSS feeds troncati (attenzione, richiede molto tempo!)',
'css_help' => 'In caso di feed RSS troncati (attenzione, richiede molto tempo!)',
'css_path' => 'Percorso del foglio di stile CSS del sito di origine',
'css_path_filter' => array(
'_' => 'Il selettore CSS degli elementi da rimuovere',
@ -66,9 +66,14 @@ return array(
'description' => 'Descrizione',
'empty' => 'Questo feed non contiene articoli. Per favore verifica il sito direttamente.',
'error' => 'Questo feed ha generato un errore. Per favore verifica se ancora disponibile.',
'export-as-opml' => array(
'download' => 'Scarica',
'help' => 'File XML',
'label' => 'Esporta come OPML',
),
'filteractions' => array(
'_' => 'Azioni di filtro',
'help' => 'Scrivi un filtro di ricerca per riga. Operators <a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#with-the-search-field" target="_blank">see documentation</a>.', // DIRTY
'help' => 'Scrivi un filtro di ricerca per riga. Per li operatori <a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#with-the-search-field" target="_blank">vedi la documentazione</a>.',
),
'information' => 'Informazioni',
'keep_min' => 'Numero minimo di articoli da mantenere',
@ -121,13 +126,13 @@ return array(
'relative' => 'XPath (relativo alloggetto) per:',
'xpath' => 'XPath per:',
),
'json_dotpath' => array(
'_' => 'JSON (path con i punti)',
'json_dotnotation' => array(
'_' => 'JSON (dot notation)', // TODO
'feed_title' => array(
'_' => 'titolo feed',
'help' => 'Esempio: <code>meta.title</code> o una stringa statica: <code>"Il mio feed personalizzato"</code>',
),
'help' => 'Un JSON con le path divise da punti usa dei punti fra gli oggetti e le parentesi per gli array. (es. <code>data.items[0].title</code>)',
'help' => 'A JSON dot notated uses dots between objects and brackets for arrays (e.g. <code>data.items[0].title</code>)', // TODO
'item' => array(
'_' => 'ricerca nuovi <strong>elementi</strong><br /><small>(più importante)</small>',
'help' => 'percorso JSON per larray contenente gli elementi, es. <code>newsItems</code>',
@ -156,8 +161,8 @@ return array(
'_' => 'link elemento (URL)',
'help' => 'Esempio: <code>permalink</code>',
),
'json' => 'Percorso con i punti per:',
'relative' => 'Percorso con i punti (relativo allelemento) per:',
'json' => 'dot notation for:', // TODO
'relative' => 'dot notated path (relative to item) for:', // TODO
),
'jsonfeed' => 'Feed JSON',
'rss' => 'RSS / Atom (predefinito)',
@ -189,7 +194,7 @@ return array(
'main_stream' => 'Mostra in homepage',
),
'proxy' => 'Imposta un proxy per recuperare questo feed',
'proxy_help' => 'Seleziona un protocollo (e.g: SOCKS5) ed inserisci lindirizzo del proxy (e.g: <kbd>127.0.0.1:1080</kbd> or <kbd>username:password@127.0.0.1:1080</kbd>)', // DIRTY
'proxy_help' => 'Seleziona un protocollo (e.g: SOCKS5) ed inserisci lindirizzo del proxy (es.: <kbd>127.0.0.1:1080</kbd> o <kbd>username:password@127.0.0.1:1080</kbd>)',
'selector_preview' => array(
'show_raw' => 'Mostra codice sorgente',
'show_rendered' => 'Mostra contenuto',
@ -232,7 +237,7 @@ return array(
'import_export' => 'Importa / esporta',
'label_management' => 'Gestione etichette',
'stats' => array(
'idle' => 'Feeds non aggiornati',
'idle' => 'Feed non aggiornati',
'main' => 'Statistiche principali',
'repartition' => 'Ripartizione articoli',
),
@ -253,7 +258,7 @@ return array(
'add_feed' => 'Aggiungi un feed',
'add_label' => 'Aggiungi unetichetta',
'delete_label' => 'Cancella unetichetta',
'feed_management' => 'Gestione RSS feeds',
'feed_management' => 'Gestione feed RSS',
'rename_label' => 'Rinomina unetichetta',
'subscription_tools' => 'Strumenti di sottoscrizione',
),

View File

@ -19,8 +19,8 @@ return array(
'http' => 'HTTP (上級者はHTTPSでも)',
'none' => 'なし (危険)',
'title' => '認証',
'token' => 'Master authentication token', // TODO
'token_help' => 'Allows access to all RSS outputs of the user as well as refreshing feeds without authentication:', // TODO
'token' => 'マスター認証用のトークン',
'token_help' => 'ユーザーのすべての RSS 出力へのアクセスと、認証なしのフィードの更新を許可します',
'type' => '認証メソッド',
'unsafe_autologin' => '危険な自動ログインを有効にします',
),
@ -160,8 +160,8 @@ return array(
'_' => 'システム設定',
'auto-update-url' => '自動アップグレードするサーバーのURL',
'base-url' => array(
'_' => 'Base URL', // TODO
'recommendation' => 'Automatic recommendation: <kbd>%s</kbd>', // TODO
'_' => 'ベースURL',
'recommendation' => '自動的に推薦: <kbd>%s</kbd>',
),
'cookie-duration' => array(
'help' => '秒',
@ -187,33 +187,33 @@ return array(
),
'title' => 'ユーザー登録',
),
'sensitive-parameter' => 'Sensitive parameter. Edit manually in <kbd>./data/config.php</kbd>', // TODO
'sensitive-parameter' => 'センシティブなパラメーターです。<kbd>./data/config.php</kbd> を手動で編集',
'tos' => array(
'disabled' => 'is not given', // TODO
'enabled' => '<a href="./?a=tos">is enabled</a>', // TODO
'help' => 'How to <a href="https://freshrss.github.io/FreshRSS/en/admins/12_User_management.html#enable-terms-of-service-tos" target="_blank">enable the Terms of Service</a>', // TODO
'disabled' => '無効化',
'enabled' => '<a href="./?a=tos">有効化</a>',
'help' => '<a href="https://freshrss.github.io/FreshRSS/en/admins/12_User_management.html#enable-terms-of-service-tos" target="_blank">利用規約を有効にする方法</a>',
),
'websub' => array(
'help' => 'About <a href="https://freshrss.github.io/FreshRSS/en/users/WebSub.html" target="_blank">WebSub</a>', // TODO
'help' => '<a href="https://freshrss.github.io/FreshRSS/en/users/WebSub.html" target="_blank">WebSubについて</a>',
),
),
'update' => array(
'_' => 'システムアップデート',
'apply' => '適用',
'changelog' => 'Changelog', // TODO
'changelog' => '変更履歴',
'check' => 'アップデートを確認する',
'copiedFromURL' => 'update.php copied from %s to ./data', // TODO
'copiedFromURL' => 'update.php が %s から ./data にコピーされました。',
'current_version' => '現在のバージョンは',
'last' => '最近の検証',
'loading' => 'Updating…', // TODO
'loading' => '更新中…',
'none' => '更新を適用できません',
'releaseChannel' => array(
'_' => 'Release channel', // TODO
'edge' => 'Rolling release (“edge”)', // TODO
'latest' => 'Stable release (“latest”)', // TODO
'_' => 'リリースチャンネル',
'edge' => 'ローリングリリース (“edge”)',
'latest' => '安定版リリース (“latest”)',
),
'title' => 'アップデートシステム',
'viaGit' => 'Update via git and Github.com started', // TODO
'viaGit' => 'gitとGithub.comによるアップデートを開始',
),
'user' => array(
'admin' => '管理者',

View File

@ -33,9 +33,9 @@ return array(
'display' => array(
'_' => '表示',
'darkMode' => array(
'_' => 'Automatic dark mode (beta)', // TODO
'auto' => 'Auto', // TODO
'no' => 'No', // TODO
'_' => '自動ダークモード (beta)',
'auto' => '自動',
'no' => '無効',
),
'icon' => array(
'bottom_line' => '行の下部',
@ -56,8 +56,8 @@ return array(
'theme' => array(
'_' => 'テーマ',
'deprecated' => array(
'_' => 'Deprecated', // TODO
'description' => 'This theme is no longer supported and will be not available anymore in a <a href="https://freshrss.github.io/FreshRSS/en/users/05_Configuration.html#theme" target="_blank">future release of FreshRSS</a>', // TODO
'_' => '非推奨',
'description' => 'このテーマのサポートは終了しており、<a href="https://freshrss.github.io/FreshRSS/en/users/05_Configuration.html#theme" target="_blank">FreshRSS の将来のリリース</a>では利用できなくなります。',
),
),
'theme_not_available' => '“%s”テーマはご利用いただけません。他のテーマをお選びください。',
@ -68,14 +68,14 @@ return array(
'portrait' => 'ポートレート',
'square' => '四角',
),
'timezone' => 'Time zone', // TODO
'timezone' => 'タイムゾーン',
'title' => 'ディスプレイ',
'website' => array(
'full' => 'Icon and name', // TODO
'icon' => 'Icon only', // TODO
'label' => 'Website', // TODO
'name' => 'Name only', // TODO
'none' => 'None', // TODO
'full' => 'アイコンと名前',
'icon' => 'アイコンのみ',
'label' => 'ウェブサイト',
'name' => '名前のみ',
'none' => '無し',
),
'width' => array(
'content' => 'コンテンツ幅',
@ -120,20 +120,20 @@ return array(
'feeds' => 'フィードごとに表示する',
'order' => '日付ごとにソートする',
'search' => '式',
'shareOpml' => 'Enable sharing by OPML of corresponding categories and feeds', // TODO
'shareRss' => 'Enable sharing by HTML &amp; RSS', // TODO
'shareOpml' => '対応するカテゴリーとフィードのOPMLによる共有が可能',
'shareRss' => 'HTMLとRSSによる共有を有効にする',
'state' => '状態',
'tags' => 'タグごとに表示する',
'type' => 'タイプ',
),
'get_all' => 'すべての著者を表示する',
'get_all_labels' => 'Display articles with any label', // TODO
'get_all_labels' => '任意のラベルで記事を表示する',
'get_category' => '“%s”カテゴリを表示する',
'get_favorite' => 'お気に入りの著者を表示する',
'get_feed' => '“%s”フィードを表示する',
'get_important' => 'Display articles from important feeds', // TODO
'get_label' => 'Display articles with “%s” label', // TODO
'help' => 'See the <a href="https://freshrss.github.io/FreshRSS/en/users/user_queries.html" target="_blank">documentation for user queries and resharing by HTML / RSS / OPML</a>.', // TODO
'get_important' => '重要なフィードからの記事を表示する',
'get_label' => '“%s”ラベルの記事を表示する',
'help' => 'HTML/RSS/OPMLによるユーザー照会と再共有については <a href="https://freshrss.github.io/FreshRSS/en/users/user_queries.html" target="_blank">こちら</a>をご覧ください',
'name' => '名前',
'no_filter' => 'フィルターはありません',
'number' => 'クエリ n°%d',
@ -141,11 +141,11 @@ return array(
'order_desc' => '新しい著者を最初に表示する',
'search' => '“%s”で検索する',
'share' => array(
'_' => 'Share this query by link', // TODO
'help' => 'Give this link if you want to share this query with anyone', // TODO
'html' => 'Shareable link to the HTML page', // TODO
'opml' => 'Shareable link to the OPML list of feeds', // TODO
'rss' => 'Shareable link to the RSS feed', // TODO
'_' => 'このクエリをリンクで共有する',
'help' => 'このクエリを誰かと共有したい場合は、このリンクを貼ってください',
'html' => 'HTMLページへの共有可能なリンク',
'opml' => 'フィードのOPMLリストへの共有可能なリンク',
'rss' => 'RSSフィードへの共有可能なリンク',
),
'state_0' => 'すべての記事を表示する',
'state_1' => '既読の記事を表示する',
@ -217,7 +217,7 @@ return array(
'read' => array(
'article_open_on_website' => '記事を元のwebサイトで開いたとき',
'article_viewed' => '記事を読んだとき',
'focus' => 'when focused (except for important feeds)', // TODO
'focus' => 'フォーカス時(重要なフィードを除く)',
'keep_max_n_unread' => '未読の記事として残す最大数',
'scroll' => 'スクロールしているとき (except for important feeds)', // DIRTY
'upon_gone' => 'ニュースフィードの提供元がなくなったとき',

View File

@ -116,10 +116,10 @@ return array(
),
'tag' => array(
'created' => '“%s” タグが作成されました',
'error' => 'Label could not be updated!', // TODO
'error' => 'ラベルを更新できませんでした',
'name_exists' => 'このタグ名は既に存在します',
'renamed' => '“%s”タグは“%s”に改名されました',
'updated' => 'Label has been updated.', // TODO
'updated' => 'ラベルが更新されました',
),
'update' => array(
'can_apply' => 'FreshRSSは<strong>バージョン %s</strong>に更新されます。',

View File

@ -134,7 +134,7 @@ return array(
'request_failed' => 'おそらくインターネット接続に問題があるため、リクエストは失敗しました。',
'title_new_articles' => 'FreshRSS: 新規記事!',
),
'labels_empty' => 'No labels', // TODO
'labels_empty' => 'ラベルがありません',
'new_article' => '新しい記事があるのでクリックしてページをリフレッシュしてください。',
'should_be_activated' => 'JavaScriptは有効になっている必要があります。',
),
@ -178,7 +178,7 @@ return array(
'queries' => 'ユーザークエリ',
'reading' => 'リーディング',
'search' => '単語で検索するかハッシュタグで検索する',
'search_help' => 'See documentation for advanced <a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#with-the-search-field" target="_blank">search parameters</a>', // TODO
'search_help' => '高度な検索パラメータについては <a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#with-the-search-field" target="_blank">こちら</a>を参照してください',
'sharing' => '共有',
'shortcuts' => 'ショートカット',
'stats' => '統計',
@ -203,7 +203,7 @@ return array(
'clipboard' => 'クリップボード',
'diaspora' => 'Diaspora*', // IGNORE
'email' => 'Eメール',
'email-webmail-firefox-fix' => 'Email (webmail - fix for Firefox)', // TODO
'email-webmail-firefox-fix' => 'EメールFirefox用に修正',
'facebook' => 'Facebook', // IGNORE
'gnusocial' => 'GNU social', // IGNORE
'jdh' => 'Journal du hacker', // IGNORE

View File

@ -17,7 +17,7 @@ return array(
'bugs_reports' => 'バグレポート',
'credits' => 'クレジット',
'credits_content' => 'いくつかのデザイン要素は <a href="http://twitter.github.io/bootstrap/">Bootstrap</a>から来ています。しかしFreshRSSはこのフレームワークを使用していません。 <a href="https://gitlab.gnome.org/Archive/gnome-icon-theme-symbolic">アイコン</a> は <a href="https://www.gnome.org/">GNOME プロジェクトから作られています</a>。 <em>Open Sans</em> フォントは <a href="https://fonts.google.com/specimen/Open+Sans">Steve Matteson によって作成されました</a>。 FreshRSS は<a href="https://framagit.org/marienfressinaud/MINZ">Minz</a>,PHP フレームワークをもとにしています。',
'documentation' => 'Documentation', // TODO
'documentation' => '文書',
'freshrss_description' => 'FreshRSSは なセルフホストできるRSSフィード収集ツールです。強力なツールになっており、軽量で簡単に使え、豊富な設定が特徴です。',
'github' => '<a href="https://github.com/FreshRSS/FreshRSS/issues">Githubへお願いします</a>',
'license' => 'ライセンス',
@ -45,7 +45,7 @@ return array(
'bookmark_query' => '現在のブックマーククエリ',
'favorites' => 'お気に入り (%s)',
'global_view' => 'グローバルビュー',
'important' => 'Important feeds', // TODO
'important' => '重要なフィード',
'main_stream' => 'メイン',
'mark_all_read' => 'すべての記事に既読をつける',
'mark_cat_read' => 'カテゴリーに既読をつける',

View File

@ -57,15 +57,20 @@ return array(
),
'css_cookie' => '記事のコンテンツを読み出したとき、クッキーを使用する',
'css_cookie_help' => '例: <kbd>foo=bar; gdpr_consent=true; cookie=value</kbd>',
'css_help' => '失敗したRSSフィードを再取得します (ただし、多くの時間が必要になります!)',
'css_path' => '元のwebサイトのCSS',
'css_help' => '省略されたRSSフィードを復元します (ただし、時間がかかります)',
'css_path' => '元のWebサイトから記事を抽出するCSSセレクタ',
'css_path_filter' => array(
'_' => '削除される要素をCSSで選ぶ',
'help' => 'CSSセレクタは: <kbd> フッターやアサイド要素をリストにできます</kbd>',
'_' => '要素を削除するCSSセレクタ',
'help' => 'CSSセレクタは次のようなリストです: <kbd>.footer, .aside</kbd>',
),
'description' => '説明',
'empty' => 'このフィードは空です。サイトが運営されているかどうかを確認してみてください。',
'error' => 'このフィードに問題が発生しました。ここでアクセスできるかどうかを確認して更新してみてください。',
'export-as-opml' => array(
'download' => 'ダウンロード',
'help' => 'XMLファイル',
'label' => 'OPMLとしてエクスポート',
),
'filteractions' => array(
'_' => 'フィルターアクション',
'help' => '1行に1つの検索フィルターを設定してください Operators <a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#with-the-search-field" target="_blank">see documentation</a>.', // DIRTY
@ -99,8 +104,8 @@ return array(
'help' => '例: <code>descendant::img/@src</code>',
),
'item_timeFormat' => array(
'_' => 'Custom date/time format', // TODO
'help' => 'Optional. A format supported by <a href="https://php.net/datetime.createfromformat" target="_blank"><code>DateTime::createFromFormat()</code></a> such as <code>d-m-Y H:i:s</code>', // TODO
'_' => 'カスタム日時フォーマット',
'help' => 'オプションです。<a href="https://php.net/datetime.createfromformat" target="_blank"><code>DateTime::createFromFormat()</code></a>でサポートされている、<code>d-m-Y H:i:s</code>のように使います',
),
'item_timestamp' => array(
'_' => '項目の日付',
@ -121,47 +126,47 @@ return array(
'relative' => 'XPath (関連する項目):',
'xpath' => 'XPathは:',
),
'json_dotpath' => array(
'_' => 'JSON (Dotted paths)', // TODO
'json_dotnotation' => array(
'_' => 'JSON(ドット記法)',
'feed_title' => array(
'_' => 'feed title', // TODO
'help' => 'Example: <code>meta.title</code> or a static string: <code>"My custom feed"</code>', // TODO
'_' => 'フィード名',
'help' => '例: <code>meta.title</code> または静的文字列: <code>"My custom feed"</code>',
),
'help' => 'A JSON dotted path uses dots between objects and brackets for arrays (e.g. <code>data.items[0].title</code>)', // TODO
'help' => 'JSONのドット表記は、オブジェクトの間にドットを使用し、配列には括弧を使用します。例: <code>data.items[0].title</code>',
'item' => array(
'_' => 'finding news <strong>items</strong><br /><small>(most important)</small>', // TODO
'help' => 'JSON path to the array containing the items, e.g. <code>newsItems</code>', // TODO
'_' => '<strong>ニュース</strong>を探す<br /><small>(最重要)</small>',
'help' => '項目を含む配列へのJSONパス。 例: <code>newsItems</code>',
),
'item_author' => 'item author', // TODO
'item_categories' => 'item tags', // TODO
'item_author' => 'アイテム作成者',
'item_categories' => 'アイテムタグ',
'item_content' => array(
'_' => 'item content', // TODO
'help' => 'Key under which the content is found, e.g. <code>content</code>', // TODO
'_' => '項目内容',
'help' => 'コンテンツが存在するキー。例: <code>content</code>',
),
'item_thumbnail' => array(
'_' => 'item thumbnail', // TODO
'help' => 'Example: <code>image</code>', // TODO
'_' => 'アイテムのサムネイル',
'help' => '例: <code>image</code>',
),
'item_timeFormat' => array(
'_' => 'Custom date/time format', // TODO
'help' => 'Optional. A format supported by <a href="https://php.net/datetime.createfromformat" target="_blank"><code>DateTime::createFromFormat()</code></a> such as <code>d-m-Y H:i:s</code>', // TODO
'_' => 'カスタム日時フォーマット',
'help' => 'オプションです。<a href="https://php.net/datetime.createfromformat" target="_blank"><code>DateTime::createFromFormat()</code></a>でサポートされている、<code>d-m-Y H:i:s</code>のように使います',
),
'item_timestamp' => array(
'_' => 'item date', // TODO
'help' => 'The result will be parsed by <a href="https://php.net/strtotime" target="_blank"><code>strtotime()</code></a>', // TODO
'_' => 'アイテム日付',
'help' => '結果は<a href="https://php.net/strtotime" target="_blank"><code>strtotime()</code></a>で解析される',
),
'item_title' => 'item title', // TODO
'item_uid' => 'item unique ID', // TODO
'item_title' => 'アイテム名',
'item_uid' => 'アイテム固有ID',
'item_uri' => array(
'_' => 'item link (URL)', // TODO
'help' => 'Example: <code>permalink</code>', // TODO
'_' => 'アイテムリンクURL',
'help' => ': <code>permalink</code>',
),
'json' => 'Dotted Path for:', // TODO
'relative' => 'Dotted Path (relative to item) for:', // TODO
'json' => ':のドット表記',
'relative' => ':のドット表記パス(アイテムからの相対パス)。',
),
'jsonfeed' => 'JSON Feed', // TODO
'jsonfeed' => 'JSONフィード',
'rss' => 'RSS / Atom (標準)',
'xml_xpath' => 'XML + XPath', // TODO
'xml_xpath' => 'XML + XPath', // IGNORE
),
'maintenance' => array(
'clear_cache' => 'キャッシュのクリア',
@ -173,10 +178,10 @@ return array(
'max_http_redir' => 'HTTPのリダイレクトの上限',
'max_http_redir_help' => '0を設定するか、空白のままにすると無効になり、-1を設定するとリダイレクト数が無制限になります。',
'method' => array(
'_' => 'HTTP Method', // TODO
'_' => 'HTTPメソッド',
),
'method_help' => 'The POST payload has automatic support for <code>application/x-www-form-urlencoded</code> and <code>application/json</code>', // TODO
'method_postparams' => 'Payload for POST', // TODO
'method_help' => 'POSTペイロードは <code>application/x-www-form-urlencoded</code> と <code>application/json</code> を自動的にサポートしています',
'method_postparams' => 'POST用ペイロード',
'moved_category_deleted' => 'カテゴリを削除したとき、フィードは自動的に<em>%s</em>下に分類されます。',
'mute' => 'ミュート',
'no_selected' => 'どのフィードも選択されていません',
@ -185,7 +190,7 @@ return array(
'_' => '表示する場所',
'archived' => '非表示にする(アーカイブ)',
'category' => 'カテゴリで表示する',
'important' => 'Show in important feeds', // TODO
'important' => '重要なフィードに表示する',
'main_stream' => 'メインストリームで表示する',
),
'proxy' => 'フィードを読み込み時にproxyを設定してください',
@ -240,7 +245,7 @@ return array(
'subscription_tools' => '購読ツール',
),
'tag' => array(
'auto_label' => 'Add this label to new articles', // TODO
'auto_label' => 'このラベルを新しい記事に追加する',
'name' => '名前',
'new_name' => '新しい名前',
'old_name' => '古い名前',

View File

@ -19,8 +19,8 @@ return array(
'http' => 'HTTP (HTTPS를 사용하는 고급 사용자용)',
'none' => '사용하지 않음 (위험)',
'title' => '인증',
'token' => 'Master authentication token', // TODO
'token_help' => 'Allows access to all RSS outputs of the user as well as refreshing feeds without authentication:', // TODO
'token' => '마스터 인증 토큰',
'token_help' => '인증 없이 사용자의 모든 RSS 내용과 피드 새로고침 권한을 허용합니다.:',
'type' => '인증',
'unsafe_autologin' => '다음과 같은 안전하지 않은 방식의 로그인을 허가합니다: ',
),
@ -160,8 +160,8 @@ return array(
'_' => '시스템 설정',
'auto-update-url' => '자동 업데이트 서버 URL',
'base-url' => array(
'_' => 'Base URL', // TODO
'recommendation' => 'Automatic recommendation: <kbd>%s</kbd>', // TODO
'_' => 'Base URL', // IGNORE
'recommendation' => '자동 추천: <kbd>%s</kbd>',
),
'cookie-duration' => array(
'help' => '초',
@ -187,33 +187,33 @@ return array(
),
'title' => '사용자 회원가입 양식',
),
'sensitive-parameter' => 'Sensitive parameter. Edit manually in <kbd>./data/config.php</kbd>', // TODO
'sensitive-parameter' => 'Sensitive parameter. <kbd>./data/config.php</kbd>에서 직접 수정', // DIRTY
'tos' => array(
'disabled' => 'is not given', // TODO
'enabled' => '<a href="./?a=tos">is enabled</a>', // TODO
'help' => 'How to <a href="https://freshrss.github.io/FreshRSS/en/admins/12_User_management.html#enable-terms-of-service-tos" target="_blank">enable the Terms of Service</a>', // TODO
'disabled' => '주어지지 않음',
'enabled' => '<a href="./?a=tos">활성화됨</a>',
'help' => '<a href="https://freshrss.github.io/FreshRSS/en/admins/12_User_management.html#enable-terms-of-service-tos" target="_blank">이용 약관 활성화</a> 하는 방법',
),
'websub' => array(
'help' => 'About <a href="https://freshrss.github.io/FreshRSS/en/users/WebSub.html" target="_blank">WebSub</a>', // TODO
'help' => '<a href="https://freshrss.github.io/FreshRSS/en/users/WebSub.html" target="_blank">WebSub</a> 살펴보기',
),
),
'update' => array(
'_' => '업데이트',
'apply' => '업데이트 적용하기',
'changelog' => 'Changelog', // TODO
'changelog' => '변경사항',
'check' => '새 업데이트 확인하기',
'copiedFromURL' => 'update.php copied from %s to ./data', // TODO
'copiedFromURL' => 'update.php가 %s 에서 ./data 으로 복사됨',
'current_version' => '현버전은 입니다',
'last' => '마지막 확인',
'loading' => 'Updating…', // TODO
'loading' => '업데이트 중…',
'none' => '적용 가능한 업데이트가 없습니다',
'releaseChannel' => array(
'_' => 'Release channel', // TODO
'edge' => 'Rolling release (“edge”)', // TODO
'latest' => 'Stable release (“latest”)', // TODO
'_' => '릴리즈 채널',
'edge' => '롤링 릴리즈 (“edge”)',
'latest' => '안정 릴리즈 (“latest”)',
),
'title' => '업데이트',
'viaGit' => 'Update via git and Github.com started', // TODO
'viaGit' => 'Git 및 Github.com을 통한 업데이트 시작 됨',
),
'user' => array(
'admin' => '관리자',

View File

@ -17,7 +17,7 @@ return array(
'help' => '더 자세한 옵션은 개별 피드 설정에 있습니다',
'keep_favourites' => '즐겨찾기 삭제 안 함',
'keep_labels' => '라벨 삭제 안 함',
'keep_max' => '보관할 글 최대 개수', // DIRTY
'keep_max' => '피드별 보관할 글 최대 개수',
'keep_min_by_feed' => '피드별 보관할 글 최소 개수',
'keep_period' => '보관할 글 최대 기간',
'keep_unreads' => '읽지 않은 글 삭제 안 함',
@ -33,9 +33,9 @@ return array(
'display' => array(
'_' => '표시',
'darkMode' => array(
'_' => 'Automatic dark mode (beta)', // TODO
'auto' => 'Auto', // TODO
'no' => 'No', // TODO
'_' => '자동 다크 모드 (베타)',
'auto' => '자동',
'no' => '끄기',
),
'icon' => array(
'bottom_line' => '하단',
@ -56,8 +56,8 @@ return array(
'theme' => array(
'_' => '테마',
'deprecated' => array(
'_' => 'Deprecated', // TODO
'description' => 'This theme is no longer supported and will be not available anymore in a <a href="https://freshrss.github.io/FreshRSS/en/users/05_Configuration.html#theme" target="_blank">future release of FreshRSS</a>', // TODO
'_' => '더 이상 사용되지 않음',
'description' => '이 테마는 더이상 지원되지 않으며 <a href="https://freshrss.github.io/FreshRSS/en/users/05_Configuration.html#theme" target="_blank">FreshRSS 이후 릴리즈</a>에서 사용할 수 없습니다.',
),
),
'theme_not_available' => '“%s” 테마는 더이상 사용할 수 없습니다. 다른 테마를 선택해 주세요.',
@ -68,14 +68,14 @@ return array(
'portrait' => '세로 방향',
'square' => '정사각형',
),
'timezone' => 'Time zone', // TODO
'timezone' => '시간대',
'title' => '표시',
'website' => array(
'full' => 'Icon and name', // TODO
'icon' => 'Icon only', // TODO
'label' => 'Website', // TODO
'name' => 'Name only', // TODO
'none' => 'None', // TODO
'full' => '아이콘 및 이름',
'icon' => '아이콘',
'label' => '웹사이트',
'name' => '이름',
'none' => '없음',
),
'width' => array(
'content' => '내용 표시 너비',
@ -120,20 +120,20 @@ return array(
'feeds' => '피드별로 표시',
'order' => '날짜순으로 정렬',
'search' => '정규 표현식',
'shareOpml' => 'Enable sharing by OPML of corresponding categories and feeds', // TODO
'shareRss' => 'Enable sharing by HTML &amp; RSS', // TODO
'shareOpml' => '해당 카테고리와 피드에 대한 OPML 공유 활성화',
'shareRss' => 'HTML 및 RSS 공유 활성화',
'state' => '상태',
'tags' => '태그별로 표시',
'type' => '유형',
),
'get_all' => '모든 글 표시',
'get_all_labels' => 'Display articles with any label', // TODO
'get_all_labels' => '라벨이 있는 글 표시',
'get_category' => '“%s” 카테고리 표시',
'get_favorite' => '즐겨찾기에 등록된 글 표시',
'get_feed' => '“%s” 피드 표시',
'get_important' => 'Display articles from important feeds', // TODO
'get_label' => 'Display articles with “%s” label', // TODO
'help' => 'See the <a href="https://freshrss.github.io/FreshRSS/en/users/user_queries.html" target="_blank">documentation for user queries and resharing by HTML / RSS / OPML</a>.', // TODO
'get_important' => '중요 피드의 글 표시',
'get_label' => '“%s” 라벨을 가진 글 표시',
'help' => '<a href="https://freshrss.github.io/FreshRSS/en/users/user_queries.html" target="_blank">유저 쿼리 및 HTML / RSS / OPML을 사용한 재공유 방법 문서</a> 살펴보기.',
'name' => '이름',
'no_filter' => '필터가 없습니다',
'number' => '쿼리 #%d',
@ -141,11 +141,11 @@ return array(
'order_desc' => '최근 글 먼저 표시',
'search' => '“%s”의 검색 결과',
'share' => array(
'_' => 'Share this query by link', // TODO
'help' => 'Give this link if you want to share this query with anyone', // TODO
'html' => 'Shareable link to the HTML page', // TODO
'opml' => 'Shareable link to the OPML list of feeds', // TODO
'rss' => 'Shareable link to the RSS feed', // TODO
'_' => '링크로 쿼리 공유',
'help' => '링크를 사용해서 쿼리를 공유하세요',
'html' => 'HTML 공유 링크',
'opml' => 'OPML 피드 목록 공유 링크',
'rss' => 'RSS 피드 공유 링크',
),
'state_0' => '모든 글 표시',
'state_1' => '읽은 글 표시',
@ -217,7 +217,7 @@ return array(
'read' => array(
'article_open_on_website' => '글이 게재된 웹사이트를 방문했을 때',
'article_viewed' => '글을 읽었을 때',
'focus' => 'when focused (except for important feeds)', // TODO
'focus' => '포커스 됐을 때 (중요 피드 제외)',
'keep_max_n_unread' => '읽지 않은 상태로 유지할 최대 글 개수',
'scroll' => '스크롤을 하며 지나갈 때 (except for important feeds)', // DIRTY
'upon_gone' => '원본 뉴스 피드에서 글 삭제 되었을 때',

View File

@ -57,11 +57,11 @@ return array(
),
'import_export' => array(
'export_no_zip_extension' => 'ZIP 확장 기능을 서버에서 찾을 수 없습니다. 파일을 하나씩 내보내세요.',
'feeds_imported' => '피드를 성공적으로 불러왔습니다 / Your feeds have been imported. If you are done importing, you can now click the <i>Update feeds</i> button.', // DIRTY
'feeds_imported_with_errors' => '피드를 불러왔지만, 문제가 발생했습니다 / Your feeds have been imported, but some errors occurred. If you are done importing, you can now click the <i>Update feeds</i> button.', // DIRTY
'feeds_imported' => '피드 불러오기가 완료됐습니다. 불러오기가 끝났다면 이제 <i>피드 업데이트</i> 버튼을 클릭해도 됩니다.',
'feeds_imported_with_errors' => '피드를 불러왔지만, 문제가 발생했습니다. 불러오기가 끝났다면 이제 <i>피드 업데이트</i> 버튼을 클릭해도 됩니다.',
'file_cannot_be_uploaded' => '파일을 업로드할 수 없습니다!',
'no_zip_extension' => 'ZIP 확장 기능을 서버에서 찾을 수 없습니다.',
'zip_error' => 'ZIP 파일을 불러오는 동안 문제가 발생했습니다.', // DIRTY
'zip_error' => 'ZIP 처리 중 문제가 발생했습니다.',
),
'profile' => array(
'error' => '프로필을 변경할 수 없습니다',
@ -94,7 +94,7 @@ return array(
'cache_cleared' => '<em>%s</em> 캐쉬 지움',
'deleted' => '피드가 삭제되었습니다',
'error' => '피드를 변경할 수 없습니다',
'internal_problem' => 'RSS 피드를 추가할 수 없습니다. 자세한 내용은 <a href="%s">FreshRSS 로그</a>를 참고하세요. You can try force adding by appending <code>#force_feed</code> to the URL.', // DIRTY
'internal_problem' => 'RSS 피드를 추가할 수 없습니다. 자세한 내용은 <a href="%s">FreshRSS 로그</a>를 참고하세요. <code>#force_feed</code>를 URL에 추가하여 강제로 추가 시도 할 수 있습니다.',
'invalid_url' => 'URL (<em>%s</em>)이 유효하지 않습니다',
'n_actualized' => '%d 개의 피드에서 새 글을 가져왔습니다',
'n_entries_deleted' => '%d 개의 글을 삭제했습니다',
@ -116,10 +116,10 @@ return array(
),
'tag' => array(
'created' => '“%s” 태그가 생성되었습니다.',
'error' => 'Label could not be updated!', // TODO
'error' => '라벨 업데이트 실패!',
'name_exists' => '같은 이름의 태그가 이미 존재합니다.',
'renamed' => '“%s” 태그가 “%s” (으)로 이름이 변경되었습니다.',
'updated' => 'Label has been updated.', // TODO
'updated' => '라벨이 업데이트 됐습니다.',
),
'update' => array(
'can_apply' => 'FreshRSS가 <strong>%s</strong> 버전으로 업데이트됩니다.',

View File

@ -134,7 +134,7 @@ return array(
'request_failed' => '요청한 작업을 수행할 수 없습니다. 인터넷 연결에 문제가 발생한 것 같습니다.',
'title_new_articles' => 'FreshRSS: 새 글이 있습니다!',
),
'labels_empty' => 'No labels', // TODO
'labels_empty' => '라벨 없음',
'new_article' => '새 글이 있습니다. 여기를 클릭하면 페이지를 다시 불러옵니다.',
'should_be_activated' => '자바스크립트를 사용하도록 설정해야합니다',
),
@ -178,7 +178,7 @@ return array(
'queries' => '사용자 쿼리',
'reading' => '읽기',
'search' => '단어 또는 #태그 검색',
'search_help' => 'See documentation for advanced <a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#with-the-search-field" target="_blank">search parameters</a>', // TODO
'search_help' => '문서에서 고급 <a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#with-the-search-field" target="_blank">검색 인자</a> 알아보기',
'sharing' => '공유',
'shortcuts' => '단축키',
'stats' => '통계',
@ -203,7 +203,7 @@ return array(
'clipboard' => '클립보드',
'diaspora' => 'Diaspora*', // IGNORE
'email' => '메일',
'email-webmail-firefox-fix' => 'Email (webmail - fix for Firefox)', // TODO
'email-webmail-firefox-fix' => '이메일 (웹메일 - Firefox 전용 수정)',
'facebook' => 'Facebook', // IGNORE
'gnusocial' => 'GNU social', // IGNORE
'jdh' => 'Journal du hacker', // IGNORE

View File

@ -17,7 +17,7 @@ return array(
'bugs_reports' => '버그 제보하기',
'credits' => '크레딧',
'credits_content' => 'FreshRSS는 <a href="http://twitter.github.io/bootstrap/">Bootstrap</a> 프레임워크를 사용하진 않지만, 일부 디자인 요소를 가져왔습니다. <a href="https://gitlab.gnome.org/Archive/gnome-icon-theme-symbolic">아이콘들</a>은 <a href="https://www.gnome.org/">GNOME 프로젝트</a>에서 가져왔습니다. <em>Open Sans</em> 글꼴은 <a href="https://fonts.google.com/specimen/Open+Sans">Steve Matteson</a>가 제작하였습니다. FreshRSS는 PHP 프레임워크인 <a href="https://framagit.org/marienfressinaud/MINZ">Minz</a>에 기반하고 있습니다.',
'documentation' => 'Documentation', // TODO
'documentation' => '문서',
'freshrss_description' => 'FreshRSS는 같은 셀프 호스팅 기반의 RSS 피드 수집기입니다. FreshRSS는 강력하고 다양한 설정을 할 수 있으면서도 가볍고 사용하기 쉽습니다.',
'github' => '<a href="https://github.com/FreshRSS/FreshRSS/issues">Github 저장소에 제보</a>',
'license' => '라이센스',
@ -45,7 +45,7 @@ return array(
'bookmark_query' => '현재 쿼리 북마크',
'favorites' => '즐겨찾기 (%s)',
'global_view' => '전체 모드',
'important' => 'Important feeds', // TODO
'important' => '중요 피드',
'main_stream' => '메인 스트림',
'mark_all_read' => '모두 읽음으로 표시',
'mark_cat_read' => '카테고리를 읽음으로 표시',

View File

@ -66,9 +66,14 @@ return array(
'description' => '설명',
'empty' => '이 피드는 비어있습니다. 피드가 계속 운영되고 있는지 확인하세요.',
'error' => '이 피드에 문제가 발생했습니다. 이 피드에 접근 권한이 있는지 확인하세요.',
'export-as-opml' => array(
'download' => '다운로드',
'help' => 'XML 파일',
'label' => 'OPML로 내보내기',
),
'filteractions' => array(
'_' => '필터 동작',
'help' => '한 줄에 한 검색 필터를 작성해 주세요. Operators <a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#with-the-search-field" target="_blank">see documentation</a>.', // DIRTY
'help' => '한 줄에 한 검색 필터를 작성해 주세요. 실행시 <a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#with-the-search-field" target="_blank">문서 참고</a>.',
),
'information' => '정보',
'keep_min' => '최소 유지 글 개수',
@ -99,8 +104,8 @@ return array(
'help' => '예제: <code>descendant::img/@src</code>',
),
'item_timeFormat' => array(
'_' => 'Custom date/time format', // TODO
'help' => 'Optional. A format supported by <a href="https://php.net/datetime.createfromformat" target="_blank"><code>DateTime::createFromFormat()</code></a> such as <code>d-m-Y H:i:s</code>', // TODO
'_' => '사용자 지정 날짜/시간 형식',
'help' => '선택 사항. <a href="https://php.net/datetime.createfromformat" target="_blank"><code>DateTime::createFromFormat()</code></a>에서 지원하는 형식(예: <code>d-m-Y H:i:s</code>)',
),
'item_timestamp' => array(
'_' => '기사 날짜',
@ -121,62 +126,62 @@ return array(
'relative' => '다음의 (기사와 관련된) XPath:',
'xpath' => '다음의 XPath:',
),
'json_dotpath' => array(
'_' => 'JSON (Dotted paths)', // TODO
'json_dotnotation' => array(
'_' => 'JSON (점 표기법)',
'feed_title' => array(
'_' => 'feed title', // TODO
'help' => 'Example: <code>meta.title</code> or a static string: <code>"My custom feed"</code>', // TODO
'_' => '피드 제목',
'help' => '예시: <code>meta.title</code> 혹은 스태틱 문자열: <code>"나만의 커스텀 피드"</code>',
),
'help' => 'A JSON dotted path uses dots between objects and brackets for arrays (e.g. <code>data.items[0].title</code>)', // TODO
'help' => 'JSON 점 표기법은 배열을 표기할 때 오브젝트와 괄호 사이에 점을 사용합니다. (예: <code>data.items[0].title</code>)',
'item' => array(
'_' => 'finding news <strong>items</strong><br /><small>(most important)</small>', // TODO
'help' => 'JSON path to the array containing the items, e.g. <code>newsItems</code>', // TODO
'_' => '새 뉴스 <strong>기사</strong> 찾기<br /><small>(가장 중요함)</small>',
'help' => '기사를 포함한 배열의 JSON 경로, 예: <code>뉴스기사</code>',
),
'item_author' => 'item author', // TODO
'item_categories' => 'item tags', // TODO
'item_author' => '기사 저자',
'item_categories' => '기사 테그',
'item_content' => array(
'_' => 'item content', // TODO
'help' => 'Key under which the content is found, e.g. <code>content</code>', // TODO
'_' => '기사 내용',
'help' => 'Key under which the content is found, 예: <code>내용</code>',
),
'item_thumbnail' => array(
'_' => 'item thumbnail', // TODO
'help' => 'Example: <code>image</code>', // TODO
'_' => '기사 섬네일',
'help' => '예시: <code>image</code>',
),
'item_timeFormat' => array(
'_' => 'Custom date/time format', // TODO
'help' => 'Optional. A format supported by <a href="https://php.net/datetime.createfromformat" target="_blank"><code>DateTime::createFromFormat()</code></a> such as <code>d-m-Y H:i:s</code>', // TODO
'_' => '사용자 지정 날짜/시간 형식',
'help' => '선택 사항. <a href="https://php.net/datetime.createfromformat" target="_blank"><code>DateTime::createFromFormat()</code></a>에서 지원하는 형식(예: <code>d-m-Y H:i:s</code>)',
),
'item_timestamp' => array(
'_' => 'item date', // TODO
'help' => 'The result will be parsed by <a href="https://php.net/strtotime" target="_blank"><code>strtotime()</code></a>', // TODO
'_' => '기사 날짜',
'help' => '결과 값은 <a href="https://php.net/strtotime" target="_blank"><code>strtotime()</code></a>를 통해 파싱됩니다.',
),
'item_title' => 'item title', // TODO
'item_uid' => 'item unique ID', // TODO
'item_title' => '기사 제목',
'item_uid' => '기사 고유 ID',
'item_uri' => array(
'_' => 'item link (URL)', // TODO
'help' => 'Example: <code>permalink</code>', // TODO
'_' => '기사 링크 (URL)',
'help' => '예시: <code>permalink</code>',
),
'json' => 'Dotted Path for:', // TODO
'relative' => 'Dotted Path (relative to item) for:', // TODO
'json' => 'JSON 경로:',
'relative' => 'JSON 상대 경로(기사 기준):',
),
'jsonfeed' => 'JSON Feed', // TODO
'jsonfeed' => 'JSON 피드',
'rss' => 'RSS / Atom (기본값)',
'xml_xpath' => 'XML + XPath', // TODO
'xml_xpath' => 'XML + XPath', // IGNORE
),
'maintenance' => array(
'clear_cache' => '캐쉬 지우기',
'clear_cache_help' => '이 피드의 캐쉬 지우기.',
'reload_articles' => '글 다시 로드',
'reload_articles_help' => '글 다시 로드하고 셀렉터가 정의 되었을 경우에 모든 컨텐츠 가져오기.', // DIRTY
'reload_articles_help' => '선택자가 지정된 경우 해당하는 수의 기사를 다시 불러오고 전체 내용을 가져옵니다.',
'title' => '유지 보수',
),
'max_http_redir' => '최대 HTTP 리다이렉션',
'max_http_redir_help' => '값을 비워두거나 0으로 설정하면 비활성화하며, -1으로 설정하면 무제한 리다이렉션합니다',
'method' => array(
'_' => 'HTTP Method', // TODO
'_' => 'HTTP 메서드',
),
'method_help' => 'The POST payload has automatic support for <code>application/x-www-form-urlencoded</code> and <code>application/json</code>', // TODO
'method_postparams' => 'Payload for POST', // TODO
'method_help' => 'POST 페이로드는 <code>application/x-www-form-urlencoded</code> 및 <code>application/json</code>을 자동으로 지원합니다.',
'method_postparams' => 'POST용 페이로드',
'moved_category_deleted' => '카테고리를 삭제하면, 해당 카테고리 아래에 있던 피드들은 자동적으로 <em>%s</em> 아래로 분류됩니다.',
'mute' => '무기한 새로고침 금지',
'no_selected' => '선택된 피드가 없습니다.',
@ -185,11 +190,11 @@ return array(
'_' => '표시',
'archived' => '표시하지 않음 (보관됨)',
'category' => '피드가 속한 카테고리에만 표시하기',
'important' => 'Show in important feeds', // TODO
'important' => '중요 피드에서 표시',
'main_stream' => '메인 스트림에 표시하기',
),
'proxy' => '이 피드를 가져올 때 사용할 프록시 설정',
'proxy_help' => '프로토콜 선택 (예: SOCKS5) 그리고 프록시 주소 입력 (예: <kbd>127.0.0.1:1080</kbd> or <kbd>username:password@127.0.0.1:1080</kbd>)', // DIRTY
'proxy_help' => '프로토콜 선택 (예: SOCKS5) 그리고 프록시 주소 입력 (예: <kbd>127.0.0.1:1080</kbd> 혹은 <kbd>username:password@127.0.0.1:1080</kbd>)',
'selector_preview' => array(
'show_raw' => '소스코드 표시',
'show_rendered' => '콘텐츠 표시',
@ -240,7 +245,7 @@ return array(
'subscription_tools' => '구독 도구',
),
'tag' => array(
'auto_label' => 'Add this label to new articles', // TODO
'auto_label' => '새 기사에 이 라벨 추가',
'name' => '이름',
'new_name' => '새 이름',
'old_name' => '이전 이름',

View File

@ -66,6 +66,11 @@ return array(
'description' => 'Apraksts',
'empty' => 'Šī barotne ir tukša. Lūdzu, pārbaudiet, vai tā joprojām tiek uzturēta.',
'error' => 'Šajā barotnē ir radusies problēma. Lūdzu, pārbaudiet, vai tā vienmēr ir sasniedzama, un pēc tam to atjauniniet.',
'export-as-opml' => array(
'download' => 'Download', // TODO
'help' => 'XML file', // TODO
'label' => 'Export as OPML', // TODO
),
'filteractions' => array(
'_' => 'Filtra darbības',
'help' => 'Uzrakstiet vienu meklēšanas filtru katrā rindā. Operators <a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#with-the-search-field" target="_blank">see documentation</a>.', // DIRTY
@ -121,13 +126,13 @@ return array(
'relative' => 'XPath (relatīvs rakstam) priekš:',
'xpath' => 'XPath priekš:',
),
'json_dotpath' => array(
'_' => 'JSON (Dotted paths)', // TODO
'json_dotnotation' => array(
'_' => 'JSON (dot notation)', // TODO
'feed_title' => array(
'_' => 'feed title', // TODO
'help' => 'Example: <code>meta.title</code> or a static string: <code>"My custom feed"</code>', // TODO
),
'help' => 'A JSON dotted path uses dots between objects and brackets for arrays (e.g. <code>data.items[0].title</code>)', // TODO
'help' => 'A JSON dot notated uses dots between objects and brackets for arrays (e.g. <code>data.items[0].title</code>)', // TODO
'item' => array(
'_' => 'finding news <strong>items</strong><br /><small>(most important)</small>', // TODO
'help' => 'JSON path to the array containing the items, e.g. <code>newsItems</code>', // TODO
@ -156,8 +161,8 @@ return array(
'_' => 'item link (URL)', // TODO
'help' => 'Example: <code>permalink</code>', // TODO
),
'json' => 'Dotted Path for:', // TODO
'relative' => 'Dotted Path (relative to item) for:', // TODO
'json' => 'dot notation for:', // TODO
'relative' => 'dot notated path (relative to item) for:', // TODO
),
'jsonfeed' => 'JSON Feed', // TODO
'rss' => 'RSS / Atom (noklusējums)',

View File

@ -19,8 +19,8 @@ return array(
'http' => 'HTTP (voor gevorderde gebruikers met HTTPS)',
'none' => 'Geen (gevaarlijk)',
'title' => 'Authenticatie',
'token' => 'Master authentication token', // TODO
'token_help' => 'Allows access to all RSS outputs of the user as well as refreshing feeds without authentication:', // TODO
'token' => 'Hoofdauthenticatietoken',
'token_help' => 'Geeft toegang tot alle RSS-uitvoer van de gebruiker en kan feeds verversen zonder authenticatie:',
'type' => 'Authenticatie methode',
'unsafe_autologin' => 'Sta onveilige automatische log in toe met het volgende formaat: ',
),
@ -194,7 +194,7 @@ return array(
'help' => 'How to <a href="https://freshrss.github.io/FreshRSS/en/admins/12_User_management.html#enable-terms-of-service-tos" target="_blank">algemene voorwaarden inschakelen</a>',
),
'websub' => array(
'help' => 'About <a href="https://freshrss.github.io/FreshRSS/en/users/WebSub.html" target="_blank">WebSub</a>', // TODO
'help' => 'Over <a href="https://freshrss.github.io/FreshRSS/en/users/WebSub.html" target="_blank">WebSub</a>',
),
),
'update' => array(

View File

@ -120,20 +120,20 @@ return array(
'feeds' => 'Weergeven op feed',
'order' => 'Sorteren op datum',
'search' => 'Expressie',
'shareOpml' => 'Enable sharing by OPML of corresponding categories and feeds', // TODO
'shareRss' => 'Enable sharing by HTML &amp; RSS', // TODO
'shareOpml' => 'Via OPML delen van bijbehorende categorieën en feeds aanzetten',
'shareRss' => 'Via HTML &amp; RSS delen aanzetten',
'state' => 'Status',
'tags' => 'Weergeven op label',
'type' => 'Type', // IGNORE
),
'get_all' => 'Toon alle artikelen',
'get_all_labels' => 'Display articles with any label', // TODO
'get_all_labels' => 'Artikelen met elk label tonen',
'get_category' => 'Toon „%s” categorie',
'get_favorite' => 'Toon favoriete artikelen',
'get_feed' => 'Toon „%s” feed',
'get_important' => 'Display articles from important feeds', // TODO
'get_label' => 'Display articles with “%s” label', // TODO
'help' => 'See the <a href="https://freshrss.github.io/FreshRSS/en/users/user_queries.html" target="_blank">documentation for user queries and resharing by HTML / RSS / OPML</a>.', // TODO
'get_important' => 'Artikelen van belangrijke feeds tonen',
'get_label' => 'Artikelen met het label „%s” tonen',
'help' => 'Zie de <a href="https://freshrss.github.io/FreshRSS/en/users/user_queries.html" target="_blank">documentatie voor gebruikersqueries en delen via HTML / RSS / OPML</a>.',
'name' => 'Naam',
'no_filter' => 'Geen filter',
'number' => 'Query n°%d', // IGNORE
@ -141,11 +141,11 @@ return array(
'order_desc' => 'Toon nieuwste artikelen eerst',
'search' => 'Zoek naar „%s”',
'share' => array(
'_' => 'Share this query by link', // TODO
'help' => 'Give this link if you want to share this query with anyone', // TODO
'html' => 'Shareable link to the HTML page', // TODO
'opml' => 'Shareable link to the OPML list of feeds', // TODO
'rss' => 'Shareable link to the RSS feed', // TODO
'_' => 'Deze query delen via een link',
'help' => 'Geef deze link als je deze query met iemand wilt delen',
'html' => 'Deelbare link naar de HTML-pagina',
'opml' => 'Deelbare link naar de OPML-lijst van feeds',
'rss' => 'Deelbare link naar de RSS-feed',
),
'state_0' => 'Toon alle artikelen',
'state_1' => 'Toon gelezen artikelen',
@ -217,9 +217,9 @@ return array(
'read' => array(
'article_open_on_website' => 'als het artikel wordt geopend op de originele website',
'article_viewed' => 'als het artikel wordt bekeken',
'focus' => 'when focused (except for important feeds)', // TODO
'focus' => 'wanneer gefocust (behalve voor belangrijke feeds)',
'keep_max_n_unread' => 'Max aantal artikelen ongelezen houden',
'scroll' => 'tijdens het scrollen (except for important feeds)', // DIRTY
'scroll' => 'tijdens het scrollen (behalve voor belangrijke feeds)',
'upon_gone' => 'als het niet langer in de nieuwsfeed staat',
'upon_reception' => 'bij ontvangst van het artikel',
'when' => 'Markeer artikel als gelezen…',

View File

@ -116,10 +116,10 @@ return array(
),
'tag' => array(
'created' => 'Label „%s” aangemaakt.',
'error' => 'Label could not be updated!', // TODO
'error' => 'Label kon niet worden bijgewerkt!',
'name_exists' => 'Label bestaat al.',
'renamed' => 'Label „%s” hernoemd naar „%s”.',
'updated' => 'Label has been updated.', // TODO
'updated' => 'Label bijgewerkt.',
),
'update' => array(
'can_apply' => 'FreshRSS word nu bijgewerkt naar <strong>versie %s</strong>.',

View File

@ -45,7 +45,7 @@ return array(
'bookmark_query' => 'Huidige query opslaan',
'favorites' => 'Favorieten (%s)',
'global_view' => 'Globale weergave',
'important' => 'Important feeds', // TODO
'important' => 'Belangrijke feeds',
'main_stream' => 'Overzicht',
'mark_all_read' => 'Markeer alles als gelezen',
'mark_cat_read' => 'Markeer categorie als gelezen',

View File

@ -66,6 +66,11 @@ return array(
'description' => 'Omschrijving',
'empty' => 'Deze feed is leeg. Controleer of deze nog actueel is.',
'error' => 'Deze feed heeft problemen. Verifieer a.u.b het doeladres en actualiseer het.',
'export-as-opml' => array(
'download' => 'Downloaden',
'help' => 'XML-bestand',
'label' => 'Als OPML exporteren',
),
'filteractions' => array(
'_' => 'Filteracties',
'help' => 'Voer één zoekfilter per lijn in. Operators <a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#with-the-search-field" target="_blank">see documentation</a>.', // DIRTY
@ -121,45 +126,45 @@ return array(
'relative' => 'XPath (relatief naar bericht) voor:',
'xpath' => 'XPath voor:',
),
'json_dotpath' => array(
'_' => 'JSON (Dotted paths)', // TODO
'json_dotnotation' => array(
'_' => 'JSON (puntnotatie)',
'feed_title' => array(
'_' => 'feed title', // TODO
'help' => 'Example: <code>meta.title</code> or a static string: <code>"My custom feed"</code>', // TODO
'_' => 'feed-titel',
'help' => 'Voorbeeld: <code>meta.titel</code> of een statische reeks tekst: <code>"Mijn aangepaste feed"</code>',
),
'help' => 'A JSON dotted path uses dots between objects and brackets for arrays (e.g. <code>data.items[0].title</code>)', // TODO
'help' => 'JSON-puntnotatie gebruikt punten tussen objecten en vierkante haakjes voor arrays (bv. <code>data.items[0].titel</code>)',
'item' => array(
'_' => 'finding news <strong>items</strong><br /><small>(most important)</small>', // TODO
'help' => 'JSON path to the array containing the items, e.g. <code>newsItems</code>', // TODO
'_' => 'nieuws-<strong>items</strong> vinden<br /><small>(het belangrijkst)</small>',
'help' => 'JSON-puntnotatiepad naar de array met de items, bv. <code>nieuwsItems</code>',
),
'item_author' => 'item author', // TODO
'item_categories' => 'item tags', // TODO
'item_author' => 'item-auteur',
'item_categories' => 'item-tags',
'item_content' => array(
'_' => 'item content', // TODO
'help' => 'Key under which the content is found, e.g. <code>content</code>', // TODO
'_' => 'item-inhoud',
'help' => 'De sleutel waaronder de inhoude te vinden is, bv. <code>content</code>',
),
'item_thumbnail' => array(
'_' => 'item thumbnail', // TODO
'help' => 'Example: <code>image</code>', // TODO
'_' => 'item-miniatuur',
'help' => 'Voorbeeld: <code>image</code>',
),
'item_timeFormat' => array(
'_' => 'Custom date/time format', // TODO
'help' => 'Optional. A format supported by <a href="https://php.net/datetime.createfromformat" target="_blank"><code>DateTime::createFromFormat()</code></a> such as <code>d-m-Y H:i:s</code>', // TODO
'_' => 'Aangepast datum-/tijdformaat',
'help' => 'Optioneel. Een formaat ondersteund door <a href="https://php.net/datetime.createfromformat" target="_blank"><code>DateTime::createFromFormat()</code></a> zoals <code>d-m-Y H:i:s</code>',
),
'item_timestamp' => array(
'_' => 'item date', // TODO
'help' => 'The result will be parsed by <a href="https://php.net/strtotime" target="_blank"><code>strtotime()</code></a>', // TODO
'_' => 'item-datum',
'help' => 'Het resultaat zal worden geparst door <a href="https://php.net/strtotime" target="_blank"><code>strtotime()</code></a>',
),
'item_title' => 'item title', // TODO
'item_uid' => 'item unique ID', // TODO
'item_title' => 'item-titel',
'item_uid' => 'uniek item-id',
'item_uri' => array(
'_' => 'item link (URL)', // TODO
'help' => 'Example: <code>permalink</code>', // TODO
'_' => 'item-link (url)',
'help' => 'Voorbeeld: <code>permalink</code>',
),
'json' => 'Dotted Path for:', // TODO
'relative' => 'Dotted Path (relative to item) for:', // TODO
'json' => 'puntnotatie voor:',
'relative' => 'puntnotatiepad (relatief aan item) voor:',
),
'jsonfeed' => 'JSON Feed', // TODO
'jsonfeed' => 'JSON Feed', // IGNORE
'rss' => 'RSS / Atom (standaard)',
'xml_xpath' => 'XML + XPath', // IGNORE
),
@ -173,10 +178,10 @@ return array(
'max_http_redir' => 'Max HTTP redirects', // IGNORE
'max_http_redir_help' => 'Stel in op 0 of laat leeg om uit te schakelen, -1 voor ongelimiteerde redirects',
'method' => array(
'_' => 'HTTP Method', // TODO
'_' => 'HTTP-methode',
),
'method_help' => 'The POST payload has automatic support for <code>application/x-www-form-urlencoded</code> and <code>application/json</code>', // TODO
'method_postparams' => 'Payload for POST', // TODO
'method_help' => 'De POST-payload ondersteunt automatisch <code>application/x-www-form-urlencoded</code> en <code>application/json</code>',
'method_postparams' => 'Payload voor POST',
'moved_category_deleted' => 'Als u een categorie verwijderd, worden de feeds automatisch geclassificeerd onder <em>%s</em>.',
'mute' => 'demp',
'no_selected' => 'Geen feed geselecteerd.',
@ -185,7 +190,7 @@ return array(
'_' => 'Zichtbaarheid',
'archived' => 'Niet weergeven (gearchiveerd)',
'category' => 'Toon in categorie',
'important' => 'Show in important feeds', // TODO
'important' => 'In belangrijke feeds tonen',
'main_stream' => 'Zichtbaar in het overzicht',
),
'proxy' => 'Proxy instellen om deze feed op te halen',
@ -240,7 +245,7 @@ return array(
'subscription_tools' => 'Hulpmiddelen voor abonnementen',
),
'tag' => array(
'auto_label' => 'Add this label to new articles', // TODO
'auto_label' => 'Dit label aan nieuwe artikelen toevoegen',
'name' => 'Naam',
'new_name' => 'Nieuwe naam',
'old_name' => 'Oude naam',

View File

@ -66,6 +66,11 @@ return array(
'description' => 'Descripcion', // IGNORE
'empty' => 'Aqueste flux es void. Assegurats-vos ques totjorn mantengut.',
'error' => 'Aqueste flux a rescontrat un problèma. Volgatz verificar que siá totjorn accessible puèi actualizatz-lo.',
'export-as-opml' => array(
'download' => 'Download', // TODO
'help' => 'XML file', // TODO
'label' => 'Export as OPML', // TODO
),
'filteractions' => array(
'_' => 'Filtre daccion',
'help' => 'Escrivètz una recèrca per linha. Operators <a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#with-the-search-field" target="_blank">see documentation</a>.', // DIRTY
@ -121,13 +126,13 @@ return array(
'relative' => 'XPath (relatiu a lelement) per:',
'xpath' => 'XPath per:',
),
'json_dotpath' => array(
'_' => 'JSON (Dotted paths)', // TODO
'json_dotnotation' => array(
'_' => 'JSON (dot notation)', // TODO
'feed_title' => array(
'_' => 'feed title', // TODO
'help' => 'Example: <code>meta.title</code> or a static string: <code>"My custom feed"</code>', // TODO
),
'help' => 'A JSON dotted path uses dots between objects and brackets for arrays (e.g. <code>data.items[0].title</code>)', // TODO
'help' => 'A JSON dot notated uses dots between objects and brackets for arrays (e.g. <code>data.items[0].title</code>)', // TODO
'item' => array(
'_' => 'finding news <strong>items</strong><br /><small>(most important)</small>', // TODO
'help' => 'JSON path to the array containing the items, e.g. <code>newsItems</code>', // TODO
@ -156,8 +161,8 @@ return array(
'_' => 'item link (URL)', // TODO
'help' => 'Example: <code>permalink</code>', // TODO
),
'json' => 'Dotted Path for:', // TODO
'relative' => 'Dotted Path (relative to item) for:', // TODO
'json' => 'dot notation for:', // TODO
'relative' => 'dot notated path (relative to item) for:', // TODO
),
'jsonfeed' => 'JSON Feed', // TODO
'rss' => 'RSS / Atom (defaut)',

View File

@ -19,10 +19,10 @@ return array(
'http' => 'HTTP (dla zaawansowanych użytkowników, z wykorzystaniem HTTPS)',
'none' => 'Brak (niebezpieczna)',
'title' => 'Uwierzytelnianie',
'token' => 'Master authentication token', // TODO
'token_help' => 'Allows access to all RSS outputs of the user as well as refreshing feeds without authentication:', // TODO
'token' => 'Główny token uwierzytelniania',
'token_help' => 'Umożliwia dostęp do wszystkich kanałów RSS użytkownika, jak również odświeżanie kanałów bez uwierzytelnienia:',
'type' => 'Metoda uwierzytelniania',
'unsafe_autologin' => 'Pozwól na niebezpieczne automatyczne logowanie następującym schematem: -> todo',
'unsafe_autologin' => 'Pozwól na niebezpieczne automatyczne logowanie następującym schematem: ',
),
'check_install' => array(
'cache' => array(
@ -160,8 +160,8 @@ return array(
'_' => 'Konfiguracja serwisu',
'auto-update-url' => 'Adres serwera automatycznej aktualizacji',
'base-url' => array(
'_' => 'Base URL', // TODO
'recommendation' => 'Automatic recommendation: <kbd>%s</kbd>', // TODO
'_' => 'Baza URL-a',
'recommendation' => 'Automatyczne zalecenie: <kbd>%s</kbd>',
),
'cookie-duration' => array(
'help' => 'w sekundach',
@ -187,33 +187,33 @@ return array(
),
'title' => 'Formularz rejestracji użytkowników',
),
'sensitive-parameter' => 'Sensitive parameter. Edit manually in <kbd>./data/config.php</kbd>', // TODO
'sensitive-parameter' => 'Czuły parametr. Należy go ustawić ręcznie w <kbd>./data/config.php</kbd>',
'tos' => array(
'disabled' => 'is not given', // TODO
'enabled' => '<a href="./?a=tos">is enabled</a>', // TODO
'help' => 'How to <a href="https://freshrss.github.io/FreshRSS/en/admins/12_User_management.html#enable-terms-of-service-tos" target="_blank">enable the Terms of Service</a>', // TODO
'disabled' => 'nie zostały ustalone',
'enabled' => '<a href="./?a=tos">włączone</a>',
'help' => 'W jaki sposób włączyć <a href="https://freshrss.github.io/FreshRSS/en/admins/12_User_management.html#enable-terms-of-service-tos" target="_blank">Warunki użytkowania</a>',
),
'websub' => array(
'help' => 'About <a href="https://freshrss.github.io/FreshRSS/en/users/WebSub.html" target="_blank">WebSub</a>', // TODO
'help' => 'O protokole <a href="https://freshrss.github.io/FreshRSS/en/users/WebSub.html" target="_blank">WebSub</a>',
),
),
'update' => array(
'_' => 'Aktualizacja',
'apply' => 'Zastosuj',
'changelog' => 'Changelog', // TODO
'changelog' => 'lista zmian',
'check' => 'Szukaj uaktualnień',
'copiedFromURL' => 'update.php copied from %s to ./data', // TODO
'copiedFromURL' => 'update.php skopiowany z %s do ./data',
'current_version' => 'Używana wersja',
'last' => 'Ostatnie sprawdzenie',
'loading' => 'Updating…', // TODO
'loading' => 'Aktualizowanie…',
'none' => 'Brak nowych aktualizacji',
'releaseChannel' => array(
'_' => 'Release channel', // TODO
'edge' => 'Rolling release (“edge”)', // TODO
'latest' => 'Stable release (“latest”)', // TODO
'_' => 'Kanał aktualizacji',
'edge' => 'Wersja rozwojowa (“edge”)',
'latest' => 'Wersja stabilna (“latest”)',
),
'title' => 'Aktualizacja',
'viaGit' => 'Update via git and Github.com started', // TODO
'viaGit' => 'Rozpoczęto aktualizację gitem do najnowszej wersji z Githuba',
),
'user' => array(
'admin' => 'Administrator', // IGNORE

View File

@ -33,9 +33,9 @@ return array(
'display' => array(
'_' => 'Wyświetlanie',
'darkMode' => array(
'_' => 'Automatic dark mode (beta)', // TODO
'auto' => 'Auto', // TODO
'no' => 'No', // TODO
'_' => 'Tryb ciemny (beta)',
'auto' => 'Automatyczny',
'no' => 'Wyłączony',
),
'icon' => array(
'bottom_line' => 'Dolny margines',
@ -56,8 +56,8 @@ return array(
'theme' => array(
'_' => 'Motyw',
'deprecated' => array(
'_' => 'Deprecated', // TODO
'description' => 'This theme is no longer supported and will be not available anymore in a <a href="https://freshrss.github.io/FreshRSS/en/users/05_Configuration.html#theme" target="_blank">future release of FreshRSS</a>', // TODO
'_' => 'Przestarzały',
'description' => 'Ten motyw nie jest już wspierany i zostanie usunięty w <a href="https://freshrss.github.io/FreshRSS/en/users/05_Configuration.html#theme" target="_blank">przyszłej wersji FreshRSS</a>',
),
),
'theme_not_available' => 'Motyw “%s” nie jest już dostępny. Wybierz inny motyw.',
@ -68,14 +68,14 @@ return array(
'portrait' => 'Portret',
'square' => 'Kwadrat',
),
'timezone' => 'Time zone', // TODO
'timezone' => 'Strefa czasowa',
'title' => 'Wyświetlanie',
'website' => array(
'full' => 'Icon and name', // TODO
'icon' => 'Icon only', // TODO
'label' => 'Website', // TODO
'name' => 'Name only', // TODO
'none' => 'None', // TODO
'full' => 'Ikona i nazwa',
'icon' => 'Tylko ikona',
'label' => 'Strona źródłowa',
'name' => 'Tylko nazwa',
'none' => 'Ukryj',
),
'width' => array(
'content' => 'Rozmiar treści',
@ -120,20 +120,20 @@ return array(
'feeds' => 'Według kanału',
'order' => 'Sortowanie wg daty',
'search' => 'Wyrażenie',
'shareOpml' => 'Enable sharing by OPML of corresponding categories and feeds', // TODO
'shareRss' => 'Enable sharing by HTML &amp; RSS', // TODO
'shareOpml' => 'Włącz udostępnianie OPML-i zawierających kategorie i kanały',
'shareRss' => 'Włącz udostępnianie przez HTML i RSS',
'state' => 'Stan',
'tags' => 'Według tagu',
'type' => 'Rodzaj',
),
'get_all' => 'Wyświetlenie wszystkich wiadomości',
'get_all_labels' => 'Display articles with any label', // TODO
'get_all_labels' => 'Wyświetl wiadomości z dowolnymi etykietami',
'get_category' => 'Wyświetlenie kategorii “%s”',
'get_favorite' => 'Wyświetlenie ulubionych wiadomości',
'get_feed' => 'Wyświetlenie kanału “%s”',
'get_important' => 'Display articles from important feeds', // TODO
'get_label' => 'Display articles with “%s” label', // TODO
'help' => 'See the <a href="https://freshrss.github.io/FreshRSS/en/users/user_queries.html" target="_blank">documentation for user queries and resharing by HTML / RSS / OPML</a>.', // TODO
'get_important' => 'Wyświetl wiadomości z ważnych kanałów',
'get_label' => 'Wyświetl wiadomości z etykietą “%s”',
'help' => 'Zapytania i dzielenie się nimi przez HTML / RSS / OPML opisane są w <a href="https://freshrss.github.io/FreshRSS/en/users/user_queries.html" target="_blank">dokumentacji</a>.',
'name' => 'Nazwa',
'no_filter' => 'Brak filtrów',
'number' => 'Zapytanie nr %d',
@ -141,11 +141,11 @@ return array(
'order_desc' => 'Wyświetl najpierw najnowsze wiadomości',
'search' => 'Szukaj “%s”',
'share' => array(
'_' => 'Share this query by link', // TODO
'help' => 'Give this link if you want to share this query with anyone', // TODO
'html' => 'Shareable link to the HTML page', // TODO
'opml' => 'Shareable link to the OPML list of feeds', // TODO
'rss' => 'Shareable link to the RSS feed', // TODO
'_' => 'Udostępnij to zapytanie',
'help' => 'Posłuż się tym odnośnikiem, aby podzielić się zapytaniem',
'html' => 'Odnośnik do strony HTML',
'opml' => 'Odnośnik do listy kanałów (OPML)',
'rss' => 'Odnośnik do kanału RSS',
),
'state_0' => 'Wyświetl wszystkie wiadomości',
'state_1' => 'Wyświetl przeczytane wiadomości',
@ -217,9 +217,9 @@ return array(
'read' => array(
'article_open_on_website' => 'gdy wiadomość jest otworzona na pierwotnej stronie',
'article_viewed' => 'gdy wiadomość jest otworzona',
'focus' => 'when focused (except for important feeds)', // TODO
'focus' => 'kiedy ma focus (z wyłączeniem ważnych kanałów)',
'keep_max_n_unread' => 'Maksymalna liczba nieprzeczytanych wiadomości',
'scroll' => 'podczas przewijania (except for important feeds)', // DIRTY
'scroll' => 'podczas przewijania (z wyłączeniem ważnych kanałów)',
'upon_gone' => 'gdy nie jest już listowana w źródle kanału',
'upon_reception' => 'po otrzymaniu wiadomości',
'when' => 'Oznacz wiadomość jako przeczytaną…',

View File

@ -57,11 +57,11 @@ return array(
),
'import_export' => array(
'export_no_zip_extension' => 'Rozszerzenie ZIP nie jest dostępne na serwerze. Spróbuj eksportować pliki pojedynczo.',
'feeds_imported' => 'Kanały zostały zaimportowane i zostaną teraz zaktualizowane / Your feeds have been imported. If you are done importing, you can now click the <i>Update feeds</i> button.', // DIRTY
'feeds_imported_with_errors' => 'Kanały zostały zaimportowane, jednakże wystąpiło kilka błędów / Your feeds have been imported, but some errors occurred. If you are done importing, you can now click the <i>Update feeds</i> button.', // DIRTY
'feeds_imported' => 'Kanały zostały zaimportowane. Jeżeli skończyłeś, kliknij guzik <i>Aktualizuj kanały</i>.',
'feeds_imported_with_errors' => 'Kanały zostały zaimportowane, jednakże wystąpiło kilka błędów. Jeżeli skończyłeś, kliknij guzik <i>Aktualizuj kanały</i>.',
'file_cannot_be_uploaded' => 'Plik nie może zostać wgrany!',
'no_zip_extension' => 'Rozszerzenie ZIP nie jest dostępne na serwerze.',
'zip_error' => 'Wystąpił błąd podczas importu pliku ZIP.', // DIRTY
'zip_error' => 'Wystąpił błąd podczas przetwarzania pliku ZIP.',
),
'profile' => array(
'error' => 'Nie można modyfikować profilu',
@ -116,10 +116,10 @@ return array(
),
'tag' => array(
'created' => 'Etykieta “%s” została stworzona.',
'error' => 'Label could not be updated!', // TODO
'error' => 'Etykieta nie może zostać zmieniona!',
'name_exists' => 'Etykieta o podanej nazwie już istnieje.',
'renamed' => 'Etykieta “%s” została zmieniona na “%s”.',
'updated' => 'Label has been updated.', // TODO
'updated' => 'Etykieta została zmieniona.',
),
'update' => array(
'can_apply' => 'FreshRSS zostanie zaktualizowany do <strong>wersji %s</strong>.',

View File

@ -12,7 +12,7 @@
return array(
'action' => array(
'actualize' => 'Aktualizuj kanałów',
'actualize' => 'Aktualizuj kanały',
'add' => 'Dodaj',
'back' => '← Wróć',
'back_to_rss_feeds' => '← Wróć do subskrybowanych kanałów RSS',
@ -119,7 +119,7 @@ return array(
'wed' => 'Śr.',
'yesterday' => 'Wczorajsze',
),
'dir' => 'ltr', // TODO
'dir' => 'ltr', // IGNORE
'freshrss' => array(
'_' => 'FreshRSS', // IGNORE
'about' => 'O serwisie FreshRSS',
@ -134,7 +134,7 @@ return array(
'request_failed' => 'Zapytanie nie powiodło się. Może to być spowodowane problemami z łącznością z internetem.',
'title_new_articles' => 'FreshRSS: nowe wiadomości!',
),
'labels_empty' => 'No labels', // TODO
'labels_empty' => 'Brak tagów',
'new_article' => 'Dostępne są nowe wiadomości. Kliknij, aby odświeżyć stronę.',
'should_be_activated' => 'JavaScript musi być włączony',
),
@ -178,7 +178,7 @@ return array(
'queries' => 'Zapisane zapytania',
'reading' => 'Czytanie',
'search' => 'Wyszukaj wyrazy lub #tagi',
'search_help' => 'See documentation for advanced <a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#with-the-search-field" target="_blank">search parameters</a>', // TODO
'search_help' => 'Zaawansowane <a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#with-the-search-field" target="_blank">parametry wyszukiwania</a> opisane są w dokumentacji',
'sharing' => 'Podawanie dalej',
'shortcuts' => 'Skróty klawiszowe',
'stats' => 'Statystyki',
@ -203,7 +203,7 @@ return array(
'clipboard' => 'Schowek',
'diaspora' => 'Diaspora*', // IGNORE
'email' => 'E-mail',
'email-webmail-firefox-fix' => 'Email (webmail - fix for Firefox)', // TODO
'email-webmail-firefox-fix' => 'Email (webmail - poprawka dla Firefoksa)',
'facebook' => 'Facebook', // IGNORE
'gnusocial' => 'GNU social', // IGNORE
'jdh' => 'Journal du hacker', // IGNORE

View File

@ -17,7 +17,7 @@ return array(
'bugs_reports' => 'Zgłaszanie problemów',
'credits' => 'Uznanie autorstwa',
'credits_content' => 'Niektóre elementy designu pochodzą z <a href="http://twitter.github.io/bootstrap/">Bootstrapa</a>, przy czym FreshRSS nie używa tego frameworku. <a href="https://gitlab.gnome.org/Archive/gnome-icon-theme-symbolic">Ikony</a> zostały pierwotnie stworzone dla <a href="https://www.gnome.org/">projektu GNOME</a>. Font <em>Open Sans</em> jest autorstwa <a href="https://fonts.google.com/specimen/Open+Sans">Stevea Mattesona</a>. FreshRSS opiera się na <a href="https://framagit.org/marienfressinaud/MINZ">Minz</a>, frameworku PHP.',
'documentation' => 'Documentation', // TODO
'documentation' => 'Dokumentacja',
'freshrss_description' => 'FreshRSS jest agregatorem kanałów RSS przeznaczonym do zainstalowania na własnym serwerze. Jest lekki i łatwy do schowania w kieszeni, pozostając przy tym potężnym i konfigurowalnym narzędziem.',
'github' => '<a href="https://github.com/FreshRSS/FreshRSS/issues">na Githubie</a>',
'license' => 'Licencja',
@ -45,7 +45,7 @@ return array(
'bookmark_query' => 'Zapisz bieżące zapytanie',
'favorites' => 'Ulubione (%s)',
'global_view' => 'Widok globalny',
'important' => 'Important feeds', // TODO
'important' => 'Ważne kanały',
'main_stream' => 'Kanał główny',
'mark_all_read' => 'Oznacz wszystkie jako przeczytane',
'mark_cat_read' => 'Oznacz kategorię jako przeczytaną',

View File

@ -66,9 +66,14 @@ return array(
'description' => 'Opis',
'empty' => 'Ten kanał jest pusty. Należy sprawdzić czy kanał w dalszym ciągu działa.',
'error' => 'Napotkano problem podczas dostępu do tego kanału. Należy sprawdzić czy kanał jest zawsze dostępny, a następnie go odświeżyć.',
'export-as-opml' => array(
'download' => 'Pobierz',
'help' => 'Plik XML',
'label' => 'Eksportuj OPML',
),
'filteractions' => array(
'_' => 'Akcje filtrowania',
'help' => 'Jedno zapytanie na linię. Operators <a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#with-the-search-field" target="_blank">see documentation</a>.', // DIRTY
'help' => 'Jedno zapytanie na linię. Operatory opisane są w <a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#with-the-search-field" target="_blank">dokumentacji</a>.',
),
'information' => 'Informacja',
'keep_min' => 'Minimalna liczba wiadomości do do przechowywania',
@ -99,8 +104,8 @@ return array(
'help' => 'Przykład: <code>descendant::img/@src</code>',
),
'item_timeFormat' => array(
'_' => 'Custom date/time format', // TODO
'help' => 'Optional. A format supported by <a href="https://php.net/datetime.createfromformat" target="_blank"><code>DateTime::createFromFormat()</code></a> such as <code>d-m-Y H:i:s</code>', // TODO
'_' => 'Własny format daty/czasu',
'help' => 'Opcjonalne. Format wspierany przez <a href="https://php.net/datetime.createfromformat" target="_blank"><code>DateTime::createFromFormat()</code></a>, przykładowo <code>d-m-Y H:i:s</code>',
),
'item_timestamp' => array(
'_' => 'daty',
@ -121,47 +126,47 @@ return array(
'relative' => 'XPath (względem wiadomości) dla:',
'xpath' => 'XPath dla:',
),
'json_dotpath' => array(
'_' => 'JSON (Dotted paths)', // TODO
'json_dotnotation' => array(
'_' => 'JSON (dot notation)', // IGNORE
'feed_title' => array(
'_' => 'feed title', // TODO
'help' => 'Example: <code>meta.title</code> or a static string: <code>"My custom feed"</code>', // TODO
'_' => 'Tytuł kanału',
'help' => 'Przykład: <code>meta.title</code>, lub stały ciąg: <code>"Mój kanał"</code>',
),
'help' => 'A JSON dotted path uses dots between objects and brackets for arrays (e.g. <code>data.items[0].title</code>)', // TODO
'help' => 'JSON oddzielający obiekty kropkami i używający nawiasów kwadratowych dla tablic (na przykład <code>data.items[0].title</code>)',
'item' => array(
'_' => 'finding news <strong>items</strong><br /><small>(most important)</small>', // TODO
'help' => 'JSON path to the array containing the items, e.g. <code>newsItems</code>', // TODO
'_' => 'odnajdywanie <strong>wiadomości</strong><br /><small>(najważniejsze)</small>',
'help' => 'Ścieżka w JSON-ie do tablicy zawierającej wiadomości, na przykład <code>newsItems</code>',
),
'item_author' => 'item author', // TODO
'item_categories' => 'item tags', // TODO
'item_author' => 'autor wiadomości',
'item_categories' => 'tagi wiadomości',
'item_content' => array(
'_' => 'item content', // TODO
'help' => 'Key under which the content is found, e.g. <code>content</code>', // TODO
'_' => 'zawartość wiadomości',
'help' => 'Klucz pod którym można znaleźć zawartość, przykładowo <code>content</code>',
),
'item_thumbnail' => array(
'_' => 'item thumbnail', // TODO
'help' => 'Example: <code>image</code>', // TODO
'_' => 'miniaturka wiadomości',
'help' => 'Przykład: <code>image</code>',
),
'item_timeFormat' => array(
'_' => 'Custom date/time format', // TODO
'help' => 'Optional. A format supported by <a href="https://php.net/datetime.createfromformat" target="_blank"><code>DateTime::createFromFormat()</code></a> such as <code>d-m-Y H:i:s</code>', // TODO
'_' => 'Własny format daty/czasu',
'help' => 'Opcjonalne. Format wspierany przez <a href="https://php.net/datetime.createfromformat" target="_blank"><code>DateTime::createFromFormat()</code></a>, przykładowo <code>d-m-Y H:i:s</code>',
),
'item_timestamp' => array(
'_' => 'item date', // TODO
'help' => 'The result will be parsed by <a href="https://php.net/strtotime" target="_blank"><code>strtotime()</code></a>', // TODO
'_' => 'czas wiadomości',
'help' => 'Wartość będzie przetwarzana funkcją <a href="https://php.net/strtotime" target="_blank"><code>strtotime()</code></a>',
),
'item_title' => 'item title', // TODO
'item_uid' => 'item unique ID', // TODO
'item_title' => 'tytuł wiadomości',
'item_uid' => 'unikalny identyfikator wiadomości',
'item_uri' => array(
'_' => 'item link (URL)', // TODO
'help' => 'Example: <code>permalink</code>', // TODO
'_' => 'adres URL wiadomości',
'help' => 'Przykład: <code>permalink</code>',
),
'json' => 'Dotted Path for:', // TODO
'relative' => 'Dotted Path (relative to item) for:', // TODO
'json' => 'ścieżka do:',
'relative' => 'ścieżka do (względem wiadomości):',
),
'jsonfeed' => 'JSON Feed', // TODO
'jsonfeed' => 'Kanał JSON',
'rss' => 'RSS / Atom (domyślne)',
'xml_xpath' => 'XML + XPath', // TODO
'xml_xpath' => 'XML + XPath', // IGNORE
),
'maintenance' => array(
'clear_cache' => 'Wyczyść pamięć podręczną',
@ -173,10 +178,10 @@ return array(
'max_http_redir' => 'Limit przekierowań HTTP',
'max_http_redir_help' => 'Ustaw na 0, albo pozostaw puste, by zabronić przekierowywania. Wartość -1 wyłącza limit.',
'method' => array(
'_' => 'HTTP Method', // TODO
'_' => 'Medoda HTTP',
),
'method_help' => 'The POST payload has automatic support for <code>application/x-www-form-urlencoded</code> and <code>application/json</code>', // TODO
'method_postparams' => 'Payload for POST', // TODO
'method_help' => 'Ładunek w POST automatycznie wspiera <code>application/x-www-form-urlencoded</code> oraz <code>application/json</code>',
'method_postparams' => 'Ładunek w POST',
'moved_category_deleted' => 'Po usunięciu kategorii znajdujące się w niej kanały zostaną automatycznie przeniesione do <em>%s</em>.',
'mute' => 'wycisz',
'no_selected' => 'Brak kanałów.',
@ -185,11 +190,11 @@ return array(
'_' => 'Widoczność',
'archived' => 'Nie pokazuj (zarchiwizowany)',
'category' => 'Pokaż w kategorii kanału',
'important' => 'Show in important feeds', // TODO
'important' => 'Pokaż w ważnych kanałach',
'main_stream' => 'Pokaż w kanale głównym',
),
'proxy' => 'Użyj mechanizmu proxy podczas pobierania kanału',
'proxy_help' => 'Wybierz protokół (np. SOCKS5) i podaj adres serwera proxy (np. <kbd>127.0.0.1:1080</kbd> or <kbd>username:password@127.0.0.1:1080</kbd>)', // DIRTY
'proxy_help' => 'Wybierz protokół (np. SOCKS5) i podaj adres serwera proxy (np. <kbd>127.0.0.1:1080</kbd> lub <kbd>username:password@127.0.0.1:1080</kbd>)',
'selector_preview' => array(
'show_raw' => 'Pokaż źródło',
'show_rendered' => 'Pokaż zawartość',
@ -240,7 +245,7 @@ return array(
'subscription_tools' => 'Narzędzia subskrypcji',
),
'tag' => array(
'auto_label' => 'Add this label to new articles', // TODO
'auto_label' => 'Dodaj tę etykietę do nowych wiadomości',
'name' => 'Nazwa',
'new_name' => 'Nowa nazwa',
'old_name' => 'Poprzednia nazwa',

View File

@ -12,17 +12,17 @@
return array(
'auth' => array(
'allow_anonymous' => 'Permitir a leitura anónima dos artigos pelo usuário padrão (%s)',
'allow_anonymous_refresh' => 'Permitir atualização anónima dos artigos',
'allow_anonymous' => 'Permitir a leitura anônima dos artigos pelo usuário padrão (%s)',
'allow_anonymous_refresh' => 'Permitir atualização anônima dos artigos',
'api_enabled' => 'Permitir acesso à <abbr>API</abbr> <small>(Necessáiro para aplicativos móveis)</small>',
'form' => 'Formulário Web(tradicional, Necessita de JavaScript)',
'http' => 'HTTP (Para usuários avançados com HTTPS)',
'none' => 'Nenhum (Perigoso)',
'title' => 'Autenticação',
'token' => 'Master authentication token', // TODO
'token_help' => 'Allows access to all RSS outputs of the user as well as refreshing feeds without authentication:', // TODO
'token' => 'Token de autenticação principal',
'token_help' => 'Permite acesso a todos as saídas RSS do usuário bem como atualização dos feeds sem autenticação:',
'type' => 'Método de autenticação',
'unsafe_autologin' => 'Permitir login automática insegura usando o seguinte formato: ',
'unsafe_autologin' => 'Permitir login automático inseguro usando o seguinte formato: ',
),
'check_install' => array(
'cache' => array(
@ -154,14 +154,14 @@ return array(
'status_total' => 'Total', // IGNORE
'status_unread' => 'Não lidos',
'title' => 'Estatísticas',
'top_feed' => 'Top10 feeds',
'top_feed' => 'Top10 Feeds',
),
'system' => array(
'_' => 'Configuração do sistema',
'auto-update-url' => 'URL do servidor para atualização automática',
'base-url' => array(
'_' => 'Base URL', // TODO
'recommendation' => 'Automatic recommendation: <kbd>%s</kbd>', // TODO
'_' => 'URL Base',
'recommendation' => 'Recomendação automática: <kbd>%s</kbd>',
),
'cookie-duration' => array(
'help' => 'em segundos',
@ -177,8 +177,8 @@ return array(
'label' => 'Formulário de Registro',
'option' => array(
'noform' => 'Desativado: Sem formulário de registro',
'nolimit' => 'Atividado: Sem limites de contas',
'setaccountsnumber' => 'Definir o máximo de número de contas',
'nolimit' => 'Ativado: Sem limites de contas',
'setaccountsnumber' => 'Definir o máximo número de contas',
),
),
'status' => array(
@ -187,33 +187,33 @@ return array(
),
'title' => 'Formulário de Cadastro de Usuário',
),
'sensitive-parameter' => 'Sensitive parameter. Edit manually in <kbd>./data/config.php</kbd>', // TODO
'sensitive-parameter' => 'Parâmetro sensível. Edite manualmente em <kbd>./data/config.php</kbd>',
'tos' => array(
'disabled' => 'is not given', // TODO
'enabled' => '<a href="./?a=tos">is enabled</a>', // TODO
'help' => 'How to <a href="https://freshrss.github.io/FreshRSS/en/admins/12_User_management.html#enable-terms-of-service-tos" target="_blank">enable the Terms of Service</a>', // TODO
'disabled' => 'não fornecido',
'enabled' => '<a href="./?a=tos">está ativado</a>',
'help' => 'Como <a href="https://freshrss.github.io/FreshRSS/en/admins/12_User_management.html#enable-terms-of-service-tos" target="_blank">habilitar os Termos de Serviço</a>',
),
'websub' => array(
'help' => 'About <a href="https://freshrss.github.io/FreshRSS/en/users/WebSub.html" target="_blank">WebSub</a>', // TODO
'help' => 'Sobre <a href="https://freshrss.github.io/FreshRSS/en/users/WebSub.html" target="_blank">WebSub</a>',
),
),
'update' => array(
'_' => 'Atualização do sistema',
'apply' => 'Aplicar',
'changelog' => 'Changelog', // TODO
'changelog' => 'Registro de alterações',
'check' => 'Buscar por novas atualizações',
'copiedFromURL' => 'update.php copied from %s to ./data', // TODO
'copiedFromURL' => 'update.php copiado de %s para ./data',
'current_version' => 'Sua versão',
'last' => 'Última verificação',
'loading' => 'Updating…', // TODO
'loading' => 'Atualizando…',
'none' => 'Nenhuma atualização para se aplicar',
'releaseChannel' => array(
'_' => 'Release channel', // TODO
'edge' => 'Rolling release (“edge”)', // TODO
'latest' => 'Stable release (“latest”)', // TODO
'_' => 'Canal de Release',
'edge' => 'Release contínua (“edge”)',
'latest' => 'Release estável (“latest”)',
),
'title' => 'Sistema de atualização',
'viaGit' => 'Update via git and Github.com started', // TODO
'viaGit' => 'Atualização via git e Github.com iniciada',
),
'user' => array(
'admin' => 'Administrador',

View File

@ -16,9 +16,9 @@ return array(
'exception' => 'Regras de exceção da limpeza',
'help' => 'Mais opções estão disponíveis nas configurações individuais do Feed',
'keep_favourites' => 'Nunca deletar os favoritos',
'keep_labels' => 'Nunca deletar etiquetas',
'keep_labels' => 'Nunca deletar tags',
'keep_max' => 'Número máximo de artigos para manter no feed',
'keep_min_by_feed' => 'Número mínimo de artigos para deixar no feed',
'keep_min_by_feed' => 'Número mínimo de artigos para manter no feed',
'keep_period' => 'Idade máxima dos artigos a serem mantidos',
'keep_unreads' => 'Nunca apagar os não lidos',
'maintenance' => 'Manutenção',
@ -33,9 +33,9 @@ return array(
'display' => array(
'_' => 'Exibição',
'darkMode' => array(
'_' => 'Automatic dark mode (beta)', // TODO
'auto' => 'Auto', // TODO
'no' => 'No', // TODO
'_' => 'Modo noturno automático (beta)',
'auto' => 'Automático',
'no' => 'Não',
),
'icon' => array(
'bottom_line' => 'Linha inferior',
@ -56,8 +56,8 @@ return array(
'theme' => array(
'_' => 'Tema',
'deprecated' => array(
'_' => 'Deprecated', // TODO
'description' => 'This theme is no longer supported and will be not available anymore in a <a href="https://freshrss.github.io/FreshRSS/en/users/05_Configuration.html#theme" target="_blank">future release of FreshRSS</a>', // TODO
'_' => 'Depreciado',
'description' => 'Este tema não é mais suportado e não estará mais disponível em <a href="https://freshrss.github.io/FreshRSS/en/users/05_Configuration.html#theme" target="_blank">uma versão futura do FreshRSS</a>',
),
),
'theme_not_available' => 'O tema “%s” não está mais disponível. Por favor escolha outro tema.',
@ -68,14 +68,14 @@ return array(
'portrait' => 'Modo retrato',
'square' => 'Modo quadrado',
),
'timezone' => 'Time zone', // TODO
'timezone' => 'Fuso horário',
'title' => 'Exibição',
'website' => array(
'full' => 'Icon and name', // TODO
'icon' => 'Icon only', // TODO
'label' => 'Website', // TODO
'name' => 'Name only', // TODO
'none' => 'None', // TODO
'full' => 'Ícone e nome',
'icon' => 'Apenas ícone',
'label' => 'Site',
'name' => 'Apenas nome',
'none' => 'Nenhum',
),
'width' => array(
'content' => 'Largura do conteúdo',
@ -112,7 +112,7 @@ return array(
'title' => 'Perfil',
),
'query' => array(
'_' => 'Queries do usuário',
'_' => 'Consultas do usuário',
'deprecated' => 'Esta não é mais válida. A categoria ou feed relacionado foi deletado.',
'filter' => array(
'_' => 'Filtro aplicado:',
@ -120,32 +120,32 @@ return array(
'feeds' => 'Exibir por feed',
'order' => 'Ordenar por data',
'search' => 'Expressão',
'shareOpml' => 'Enable sharing by OPML of corresponding categories and feeds', // TODO
'shareRss' => 'Enable sharing by HTML &amp; RSS', // TODO
'shareOpml' => 'Habilita o compartilhamento por OPML de categorias e feeds correspondentes',
'shareRss' => 'Habilita o compartilhamento por HTML &amp; RSS',
'state' => 'Estado',
'tags' => 'Exibir por tag', // DIRTY
'tags' => 'Exibir por tag',
'type' => 'Tipo',
),
'get_all' => 'Mostrar todos os artigos',
'get_all_labels' => 'Display articles with any label', // TODO
'get_all_labels' => 'Exibir artigos com qualquer rótulo',
'get_category' => 'Visualizar “%s” categoria',
'get_favorite' => 'Visualizar artigos favoritos',
'get_feed' => 'Visualizar “%s” feed',
'get_important' => 'Display articles from important feeds', // TODO
'get_label' => 'Display articles with “%s” label', // TODO
'help' => 'See the <a href="https://freshrss.github.io/FreshRSS/en/users/user_queries.html" target="_blank">documentation for user queries and resharing by HTML / RSS / OPML</a>.', // TODO
'get_important' => 'Exibir artigos de feeds importantes',
'get_label' => 'Exibir artigos com rótulo “%s”',
'help' => 'Veja a <a href="https://freshrss.github.io/FreshRSS/en/users/user_queries.html" target="_blank">documentação para consultas de usuários e recompartilhamentos por HTML / RSS / OPML</a>.',
'name' => 'Nome',
'no_filter' => 'Sem filtro',
'number' => 'Query n°%d', // IGNORE
'number' => 'Consulta n°%d',
'order_asc' => 'Exibir artigos mais antigos primeiro',
'order_desc' => 'Exibir artigos mais novos primeiro',
'search' => 'Busca por “%s”',
'share' => array(
'_' => 'Share this query by link', // TODO
'help' => 'Give this link if you want to share this query with anyone', // TODO
'html' => 'Shareable link to the HTML page', // TODO
'opml' => 'Shareable link to the OPML list of feeds', // TODO
'rss' => 'Shareable link to the RSS feed', // TODO
'_' => 'Compartilhar esta consulta por link',
'help' => 'Forneça este link se quiser compartilhar esta consulta com alguém',
'html' => 'Link compartilhável para a página HTML',
'opml' => 'Link compartilhável para a lista de feeds OPML',
'rss' => 'Link compartilhável para o feed RSS',
),
'state_0' => 'Exibir todos os artigos',
'state_1' => 'Exibir artigos lidos',
@ -163,7 +163,7 @@ return array(
'state_13' => 'Exibir artigos lidos',
'state_14' => 'Exibir artigos não lidos',
'state_15' => 'Exibir todos os artigos',
'title' => 'Queries de usuários',
'title' => 'Consultas de usuários',
),
'reading' => array(
'_' => 'Leitura',
@ -178,21 +178,21 @@ return array(
'none' => 'Nenhum',
),
'feed_name' => array(
'above_title' => 'Acima do titulo/etiqueta',
'above_title' => 'Acima do título/etiqueta',
'none' => 'Nenhum',
'with_authors' => 'Com autores e data',
),
'feed_title' => 'Titulo do Feed',
'feed_title' => 'Título do Feed',
'tags' => array(
'_' => 'Etiqueta',
'_' => 'Tag',
'both' => 'No cabeçalho e rodapé',
'footer' => 'No rodapé',
'header' => 'No cabeçalho',
'none' => 'Nenhum',
),
'tags_max' => array(
'_' => 'Número máximo de etiquetas exibidas',
'help' => '0 significa: mostrar todas as etiquetas e não recolhê-las',
'_' => 'Número máximo de tags exibidas',
'help' => '0 significa: mostrar todas as tags e não recolhê-las',
),
),
'articles_per_page' => 'Número de artigos por página',
@ -217,9 +217,9 @@ return array(
'read' => array(
'article_open_on_website' => 'quando o artigo é aberto no site original',
'article_viewed' => 'Quando o artigo é visualizado',
'focus' => 'when focused (except for important feeds)', // TODO
'focus' => 'quando focado (exceto por feeds importantes)',
'keep_max_n_unread' => 'Número máximo de artigos para manter como não lido',
'scroll' => 'enquanto scrolling (except for important feeds)', // DIRTY
'scroll' => 'enquanto faz a rolagem (exceto por feeds importantes)',
'upon_gone' => 'Quando não estiver mais no feed de notícias principais',
'upon_reception' => 'ao receber um artigo',
'when' => 'Marcar artigo como lido…',
@ -235,7 +235,7 @@ return array(
'remember_categories' => 'lembrar de abrir as categorias',
'unread' => 'Exibir apenas não lido',
),
'show_fav_unread_help' => 'Aplicar também nas etiquetas',
'show_fav_unread_help' => 'Aplicar também nas tags',
'sides_close_article' => 'Clicando fora da área do texto do artigo fecha o mesmo',
'sort' => array(
'_' => 'Ordem de visualização',
@ -260,7 +260,7 @@ return array(
'email' => 'E-mail',
'facebook' => 'Facebook', // IGNORE
'more_information' => 'Mais informação',
'print' => 'Imprimir', // IGNORE
'print' => 'Imprimir',
'raindrop' => 'Raindrop.io', // IGNORE
'remove' => 'Remover método de compartilhamento',
'shaarli' => 'Shaarli', // IGNORE

View File

@ -61,7 +61,7 @@ return array(
'feeds_imported_with_errors' => 'Seus feeds foram importados, mas alguns erros ocorreram / Your feeds have been imported, but some errors occurred. If you are done importing, you can now click the <i>Update feeds</i> button.', // DIRTY
'file_cannot_be_uploaded' => 'Arquivo não pôde ser enviado',
'no_zip_extension' => 'extensão ZIP não está presente em seu servidor.',
'zip_error' => 'Um erro ocorreu durante a importação do arquivo ZIP.', // DIRTY
'zip_error' => 'Um erro ocorreu durante a importação do arquivo ZIP.',
),
'profile' => array(
'error' => 'Seu perfil não pode ser editado',
@ -92,7 +92,7 @@ return array(
'added' => 'O feed RSS <em>%s</em> foi adicionado',
'already_subscribed' => 'Você já está inscrito no <em>%s</em>',
'cache_cleared' => 'O cache do feed <em>%s</em> foi limpo',
'deleted' => 'o Feed foi deletado',
'deleted' => 'o feed foi deletado',
'error' => 'O feed não pode ser atualizado',
'internal_problem' => 'O feed RSS não pôde ser adicionado. <a href="%s">Verifique os logs do FreshRSS</a> para detalhes. You can try force adding by appending <code>#force_feed</code> to the URL.', // DIRTY
'invalid_url' => 'URL <em>%s</em> é inválida',
@ -115,11 +115,11 @@ return array(
'purge_completed' => 'Limpeza completa (%d artigos deletados)',
),
'tag' => array(
'created' => 'A Tag “%s” foi criada.', // DIRTY
'error' => 'Label could not be updated!', // TODO
'name_exists' => 'O nome da tag já existe.', // DIRTY
'renamed' => 'A Tag “%s” foi renomeada para “%s”.', // DIRTY
'updated' => 'Label has been updated.', // TODO
'created' => 'A Tag “%s” foi criada.',
'error' => 'Etiqueta não pode ser atualizada!',
'name_exists' => 'O nome da tag já existe.',
'renamed' => 'A Tag “%s” foi renomeada para “%s”.',
'updated' => 'Etiqueta foi atualizada.',
),
'update' => array(
'can_apply' => 'O FreshRSS será atualizado para a <strong>versão %s</strong>.',

View File

@ -203,7 +203,7 @@ return array(
'clipboard' => 'Área de transferência',
'diaspora' => 'Diaspora*', // IGNORE
'email' => 'E-mail',
'email-webmail-firefox-fix' => 'Email (webmail - fix for Firefox)', // TODO
'email-webmail-firefox-fix' => 'Email (webmail - correção para o Firefox)',
'facebook' => 'Facebook', // IGNORE
'gnusocial' => 'GNU social', // IGNORE
'jdh' => 'Journal du hacker', // IGNORE

View File

@ -17,7 +17,7 @@ return array(
'bugs_reports' => 'Reportar Bugs',
'credits' => 'Créditos',
'credits_content' => 'Alguns elementos de design vieram do <a href="http://twitter.github.io/bootstrap/">Bootstrap</a> Embora FreshRRS não utiliza este framework. <a href="https://gitlab.gnome.org/Archive/gnome-icon-theme-symbolic">Ícones</a> vieram do <a href="https://www.gnome.org/">GNOME project</a>. <em>Open Sans</em> font police foi criada por <a href="https://fonts.google.com/specimen/Open+Sans">Steve Matteson</a>. FreshRSS é baseado no <a href="https://framagit.org/marienfressinaud/MINZ">Minz</a>, um framework PHP.',
'documentation' => 'Documentation', // TODO
'documentation' => 'Documentação',
'freshrss_description' => 'FreshRSS é um RSS feeds aggregator para um host próprio. É leve e fácil de utilizar enquanto é uma ferramenta poderosa e configurável. ',
'github' => '<a href="https://github.com/FreshRSS/FreshRSS/issues">no Github</a>',
'license' => 'licença',
@ -45,7 +45,7 @@ return array(
'bookmark_query' => 'Salvar pesquisa atual',
'favorites' => 'Favoritos (%s)',
'global_view' => 'Visualização global',
'important' => 'Important feeds', // TODO
'important' => 'Feeds importantes',
'main_stream' => 'Stream principal',
'mark_all_read' => 'Marcar todos como lidos',
'mark_cat_read' => 'Marcar categoria como lida',

View File

@ -66,6 +66,11 @@ return array(
'description' => 'Descrição',
'empty' => 'Este feed está vazio. Por favor verifique ele ainda é mantido.',
'error' => 'Este feed encontra-se com problema. Por favor verifique se ele ainda está disponível e atualize-o.',
'export-as-opml' => array(
'download' => 'Download', // IGNORE
'help' => 'Arquivo XML',
'label' => 'Exportar como OPML',
),
'filteractions' => array(
'_' => 'Ações do filtro',
'help' => 'Escreva um filtro de pesquisa por linha. Operators <a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#with-the-search-field" target="_blank">see documentation</a>.', // DIRTY
@ -121,62 +126,62 @@ return array(
'relative' => 'XPath (relativo do item) para:',
'xpath' => 'XPath para:',
),
'json_dotpath' => array(
'_' => 'JSON (Dotted paths)', // TODO
'json_dotnotation' => array(
'_' => 'JSON (notação de ponto)',
'feed_title' => array(
'_' => 'feed title', // TODO
'help' => 'Example: <code>meta.title</code> or a static string: <code>"My custom feed"</code>', // TODO
'_' => 'título do feed',
'help' => 'Exemplo: <code>meta.title</code> ou uma string estática: <code>"Meu feed customizado"</code>',
),
'help' => 'A JSON dotted path uses dots between objects and brackets for arrays (e.g. <code>data.items[0].title</code>)', // TODO
'help' => 'Um JSON na notação de ponto usa pontos entre os objetos e colchetes para arrays (e.g. <code>data.items[0].title</code>)',
'item' => array(
'_' => 'finding news <strong>items</strong><br /><small>(most important)</small>', // TODO
'help' => 'JSON path to the array containing the items, e.g. <code>newsItems</code>', // TODO
'_' => 'encontrando novidades <strong>itens</strong><br /><small>(mais importante)</small>',
'help' => 'Caminho do JSON para o array contendo os itens, e.g. <code>newsItems</code>',
),
'item_author' => 'item author', // TODO
'item_categories' => 'item tags', // TODO
'item_author' => 'autor do item',
'item_categories' => 'tags dos itens',
'item_content' => array(
'_' => 'item content', // TODO
'help' => 'Key under which the content is found, e.g. <code>content</code>', // TODO
'_' => 'conteúdo do item',
'help' => 'Chave sob na qual o conteúdo é encontrado, e.g. <code>content</code>',
),
'item_thumbnail' => array(
'_' => 'item thumbnail', // TODO
'help' => 'Example: <code>image</code>', // TODO
'_' => 'miniatura do item',
'help' => 'Exemplo: <code>image</code>',
),
'item_timeFormat' => array(
'_' => 'Custom date/time format', // TODO
'help' => 'Optional. A format supported by <a href="https://php.net/datetime.createfromformat" target="_blank"><code>DateTime::createFromFormat()</code></a> such as <code>d-m-Y H:i:s</code>', // TODO
'_' => 'Formato de data/hora customizado',
'help' => 'Opcional. Um formato suportado por <a href="https://php.net/datetime.createfromformat" target="_blank"><code>DateTime::createFromFormat()</code></a> assim como <code>d-m-Y H:i:s</code>',
),
'item_timestamp' => array(
'_' => 'item date', // TODO
'_' => 'data do item',
'help' => 'The result will be parsed by <a href="https://php.net/strtotime" target="_blank"><code>strtotime()</code></a>', // TODO
),
'item_title' => 'item title', // TODO
'item_uid' => 'item unique ID', // TODO
'item_title' => 'título do item',
'item_uid' => 'ID único do item',
'item_uri' => array(
'_' => 'item link (URL)', // TODO
'help' => 'Example: <code>permalink</code>', // TODO
'_' => 'Link do item (URL)',
'help' => 'Exemplo: <code>permalink</code>',
),
'json' => 'Dotted Path for:', // TODO
'relative' => 'Dotted Path (relative to item) for:', // TODO
'json' => 'notação de ponto para:',
'relative' => 'notação de ponto (relativa ao item) para:',
),
'jsonfeed' => 'JSON Feed', // TODO
'jsonfeed' => 'JSON Feed', // IGNORE
'rss' => 'RSS / Atom (padrão)',
'xml_xpath' => 'XML + XPath', // TODO
'xml_xpath' => 'XML + XPath', // IGNORE
),
'maintenance' => array(
'clear_cache' => 'Limpar o cache',
'clear_cache_help' => 'Limpar o cache em disco deste feed',
'reload_articles' => 'Recarregar artigos',
'reload_articles_help' => 'Recarregar artigos e buscar conteúdo completo', // DIRTY
'reload_articles_help' => 'Recarregar artigos e buscar conteúdo completo',
'title' => 'Manutenção',
),
'max_http_redir' => 'Quantidade máxima de redirecionamentos HTTP',
'max_http_redir_help' => 'Defina como 0 ou deixe em branco para desabilitar, -1 para redirecionamentos ilimitados',
'method' => array(
'_' => 'HTTP Method', // TODO
'_' => 'Método HTTP',
),
'method_help' => 'The POST payload has automatic support for <code>application/x-www-form-urlencoded</code> and <code>application/json</code>', // TODO
'method_postparams' => 'Payload for POST', // TODO
'method_help' => 'O conteúdo do POST tem suporte automático para <code>application/x-www-form-urlencoded</code> e <code>application/json</code>',
'method_postparams' => 'Conteúdo do POST',
'moved_category_deleted' => 'Quando você deleta uma categoria, seus feeds são automaticamente classificados como <em>%s</em>.',
'mute' => 'silenciar',
'no_selected' => 'Nenhum feed selecionado.',
@ -185,11 +190,11 @@ return array(
'_' => 'Visibilidade',
'archived' => 'Não exibir (arquivado)',
'category' => 'Mostrar na sua categoria',
'important' => 'Show in important feeds', // TODO
'important' => 'Mostrar feeds importantes',
'main_stream' => 'Mostrar na tela principal',
),
'proxy' => 'Defina um proxy para buscar esse feed',
'proxy_help' => 'Selecione um protocolo (e.g: SOCKS5) e digite o endereço do proxy (e.g: <kbd>127.0.0.1:1080</kbd> or <kbd>username:password@127.0.0.1:1080</kbd>)', // DIRTY
'proxy_help' => 'Selecione um protocolo (e.g: SOCKS5) e digite o endereço do proxy (e.g: <kbd>127.0.0.1:1080</kbd> or <kbd>username:password@127.0.0.1:1080</kbd>)',
'selector_preview' => array(
'show_raw' => 'Mostrar fonte',
'show_rendered' => 'Mostrar conteúdo',
@ -240,7 +245,7 @@ return array(
'subscription_tools' => 'Ferramentas de inscrição',
),
'tag' => array(
'auto_label' => 'Add this label to new articles', // TODO
'auto_label' => 'Adicione esta etiqueta para novos artigos',
'name' => 'Nome',
'new_name' => 'Nome novo',
'old_name' => 'Nome antigo',

View File

@ -66,6 +66,11 @@ return array(
'description' => 'Описание',
'empty' => 'Лента пустая. Пожалуйста, убедитесь, что её до сих пор обслуживают.',
'error' => 'С этой лентой возникла проблема. Пожалуйста, убедитесь, что она всегда досягаема. Затем снова обновите её.',
'export-as-opml' => array(
'download' => 'Download', // TODO
'help' => 'XML file', // TODO
'label' => 'Export as OPML', // TODO
),
'filteractions' => array(
'_' => 'Действия фильтрации',
'help' => 'Введите по одному поисковому фильтру в строке. Operators <a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#with-the-search-field" target="_blank">see documentation</a>.', // DIRTY
@ -121,13 +126,13 @@ return array(
'relative' => 'XPath (относительно элемента) для:',
'xpath' => 'XPath для:',
),
'json_dotpath' => array(
'_' => 'JSON (Dotted paths)', // TODO
'json_dotnotation' => array(
'_' => 'JSON (dot notation)', // TODO
'feed_title' => array(
'_' => 'feed title', // TODO
'help' => 'Example: <code>meta.title</code> or a static string: <code>"My custom feed"</code>', // TODO
),
'help' => 'A JSON dotted path uses dots between objects and brackets for arrays (e.g. <code>data.items[0].title</code>)', // TODO
'help' => 'A JSON dot notated uses dots between objects and brackets for arrays (e.g. <code>data.items[0].title</code>)', // TODO
'item' => array(
'_' => 'finding news <strong>items</strong><br /><small>(most important)</small>', // TODO
'help' => 'JSON path to the array containing the items, e.g. <code>newsItems</code>', // TODO
@ -156,8 +161,8 @@ return array(
'_' => 'item link (URL)', // TODO
'help' => 'Example: <code>permalink</code>', // TODO
),
'json' => 'Dotted Path for:', // TODO
'relative' => 'Dotted Path (relative to item) for:', // TODO
'json' => 'dot notation for:', // TODO
'relative' => 'dot notated path (relative to item) for:', // TODO
),
'jsonfeed' => 'JSON Feed', // TODO
'rss' => 'RSS / Atom (по умолчанию)',

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