Re-add database status in installation check (#8510)

* Re-add database status in installation check

It got disabled in 2014 to get a beta out.
Time to re-enable it.

Tested on SQLite.

"checkTable" now only verifies that at least the expected columns
exist, but does not fail on additional columns provided by
e.g. extensions.

Related: https://github.com/FreshRSS/FreshRSS/issues/678

* make fix-all

* i18n

* Simpler and more correct content_bin

* Fix PostgreSQL

---------

Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>
This commit is contained in:
Christian Weiske
2026-03-02 12:43:35 +01:00
committed by GitHub
parent 63c8fe1285
commit 560b772e43
35 changed files with 466 additions and 91 deletions

View File

@@ -227,33 +227,33 @@ Voir le [dépôt dédié à ces extensions](https://github.com/FreshRSS/Extensio
| Langage | Progression | |
| - | - | - |
| Čeština (cs) | ■■■■■■■■・・ 83% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fcs+%2F%28TODO%7CDIRTY%29%24%2F) |
| Deutsch (de) | ■■■■■■■■■・ 97% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fde+%2F%28TODO%7CDIRTY%29%24%2F) |
| Ελληνικά (el) | ■■■・・・・・・・ 38% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fel+%2F%28TODO%7CDIRTY%29%24%2F) |
| Čeština (cs) | ■■■■■■■■・・ 82% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fcs+%2F%28TODO%7CDIRTY%29%24%2F) |
| Deutsch (de) | ■■■■■■■■■・ 96% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fde+%2F%28TODO%7CDIRTY%29%24%2F) |
| Ελληνικά (el) | ■■■・・・・・・・ 37% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fel+%2F%28TODO%7CDIRTY%29%24%2F) |
| English (en) | ■■■■■■■■■■ 100% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fen+%2F%28TODO%7CDIRTY%29%24%2F) |
| English (United States) (en-US) | ■■■■■■■■■■ 100% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fen-US+%2F%28TODO%7CDIRTY%29%24%2F) |
| Español (es) | ■■■■■■■■■・ 99% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fes+%2F%28TODO%7CDIRTY%29%24%2F) |
| فارسی (fa) | ■■■■■■■■■・ 92% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Ffa+%2F%28TODO%7CDIRTY%29%24%2F) |
| Español (es) | ■■■■■■■■■・ 98% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fes+%2F%28TODO%7CDIRTY%29%24%2F) |
| فارسی (fa) | ■■■■■■■■■・ 91% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Ffa+%2F%28TODO%7CDIRTY%29%24%2F) |
| Suomi (fi) | ■■■■■■■■■・ 94% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Ffi+%2F%28TODO%7CDIRTY%29%24%2F) |
| Français (fr) | ■■■■■■■■■■ 100% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Ffr+%2F%28TODO%7CDIRTY%29%24%2F) |
| עברית (he) | ■■■■・・・・・・ 42% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fhe+%2F%28TODO%7CDIRTY%29%24%2F) |
| Magyar (hu) | ■■■■■■■■■・ 98% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fhu+%2F%28TODO%7CDIRTY%29%24%2F) |
| עברית (he) | ■■■■・・・・・・ 41% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fhe+%2F%28TODO%7CDIRTY%29%24%2F) |
| Magyar (hu) | ■■■■■■■■■・ 97% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fhu+%2F%28TODO%7CDIRTY%29%24%2F) |
| Bahasa Indonesia (id) | ■■■■■■■■■・ 91% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fid+%2F%28TODO%7CDIRTY%29%24%2F) |
| Italiano (it) | ■■■■■■■■■・ 99% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fit+%2F%28TODO%7CDIRTY%29%24%2F) |
| 日本語 (ja) | ■■■■■■■■・ 90% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fja+%2F%28TODO%7CDIRTY%29%24%2F) |
| 한국어 (ko) | ■■■■■■■■・・ 83% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fko+%2F%28TODO%7CDIRTY%29%24%2F) |
| Latviešu (lv) | ■■■■■■■・・・ 77% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Flv+%2F%28TODO%7CDIRTY%29%24%2F) |
| Nederlands (nl) | ■■■■■■■■■・ 99% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fnl+%2F%28TODO%7CDIRTY%29%24%2F) |
| Occitan (oc) | ■■■■■■■・・・ 76% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Foc+%2F%28TODO%7CDIRTY%29%24%2F) |
| Polski (pl) | ■■■■■■■■■■ 100% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fpl+%2F%28TODO%7CDIRTY%29%24%2F) |
| Português (Brasil) (pt-BR) | ■■■■■■■■■・ 99% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fpt-BR+%2F%28TODO%7CDIRTY%29%24%2F) |
| Italiano (it) | ■■■■■■■■■・ 98% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fit+%2F%28TODO%7CDIRTY%29%24%2F) |
| 日本語 (ja) | ■■■■■■■■89% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fja+%2F%28TODO%7CDIRTY%29%24%2F) |
| 한국어 (ko) | ■■■■■■■■・・ 82% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fko+%2F%28TODO%7CDIRTY%29%24%2F) |
| Latviešu (lv) | ■■■■■■■・・・ 76% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Flv+%2F%28TODO%7CDIRTY%29%24%2F) |
| Nederlands (nl) | ■■■■■■■■■・ 98% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fnl+%2F%28TODO%7CDIRTY%29%24%2F) |
| Occitan (oc) | ■■■■■■■・・・ 75% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Foc+%2F%28TODO%7CDIRTY%29%24%2F) |
| Polski (pl) | ■■■■■■■■■・ 99% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fpl+%2F%28TODO%7CDIRTY%29%24%2F) |
| Português (Brasil) (pt-BR) | ■■■■■■■■■・ 98% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fpt-BR+%2F%28TODO%7CDIRTY%29%24%2F) |
| Português (Portugal) (pt-PT) | ■■■■■■■■・・ 82% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fpt-PT+%2F%28TODO%7CDIRTY%29%24%2F) |
| Русский (ru) | ■■■■■■■■■・ 98% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fru+%2F%28TODO%7CDIRTY%29%24%2F) |
| Slovenčina (sk) | ■■■■■■■■・・ 83% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fsk+%2F%28TODO%7CDIRTY%29%24%2F) |
| Türkçe (tr) | ■■■■■■■■■・ 91% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Ftr+%2F%28TODO%7CDIRTY%29%24%2F) |
| Русский (ru) | ■■■■■■■■■・ 97% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fru+%2F%28TODO%7CDIRTY%29%24%2F) |
| Slovenčina (sk) | ■■■■■■■■・・ 82% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fsk+%2F%28TODO%7CDIRTY%29%24%2F) |
| Türkçe (tr) | ■■■■■■■■■・ 90% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Ftr+%2F%28TODO%7CDIRTY%29%24%2F) |
| Українська (uk) | ■■■■■■■■■・ 93% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fuk+%2F%28TODO%7CDIRTY%29%24%2F) |
| 简体中文 (zh-CN) | ■■■■■■■■■・ 99% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fzh-CN+%2F%28TODO%7CDIRTY%29%24%2F) |
| 正體中文 (zh-TW) | ■■■■■■■■・・ 83% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fzh-TW+%2F%28TODO%7CDIRTY%29%24%2F) |
| 简体中文 (zh-CN) | ■■■■■■■■■・ 98% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fzh-CN+%2F%28TODO%7CDIRTY%29%24%2F) |
| 正體中文 (zh-TW) | ■■■■■■■■・・ 82% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fzh-TW+%2F%28TODO%7CDIRTY%29%24%2F) |
</translations>

View File

@@ -123,33 +123,33 @@ See the [repository dedicated to those extensions](https://github.com/FreshRSS/E
| Language | Progress | |
| - | - | - |
| Čeština (cs) | ■■■■■■■■・・ 83% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fcs+%2F%28TODO%7CDIRTY%29%24%2F) |
| Deutsch (de) | ■■■■■■■■■・ 97% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fde+%2F%28TODO%7CDIRTY%29%24%2F) |
| Ελληνικά (el) | ■■■・・・・・・・ 38% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fel+%2F%28TODO%7CDIRTY%29%24%2F) |
| Čeština (cs) | ■■■■■■■■・・ 82% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fcs+%2F%28TODO%7CDIRTY%29%24%2F) |
| Deutsch (de) | ■■■■■■■■■・ 96% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fde+%2F%28TODO%7CDIRTY%29%24%2F) |
| Ελληνικά (el) | ■■■・・・・・・・ 37% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fel+%2F%28TODO%7CDIRTY%29%24%2F) |
| English (en) | ■■■■■■■■■■ 100% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fen+%2F%28TODO%7CDIRTY%29%24%2F) |
| English (United States) (en-US) | ■■■■■■■■■■ 100% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fen-US+%2F%28TODO%7CDIRTY%29%24%2F) |
| Español (es) | ■■■■■■■■■・ 99% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fes+%2F%28TODO%7CDIRTY%29%24%2F) |
| فارسی (fa) | ■■■■■■■■■・ 92% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Ffa+%2F%28TODO%7CDIRTY%29%24%2F) |
| Español (es) | ■■■■■■■■■・ 98% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fes+%2F%28TODO%7CDIRTY%29%24%2F) |
| فارسی (fa) | ■■■■■■■■■・ 91% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Ffa+%2F%28TODO%7CDIRTY%29%24%2F) |
| Suomi (fi) | ■■■■■■■■■・ 94% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Ffi+%2F%28TODO%7CDIRTY%29%24%2F) |
| Français (fr) | ■■■■■■■■■■ 100% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Ffr+%2F%28TODO%7CDIRTY%29%24%2F) |
| עברית (he) | ■■■■・・・・・・ 42% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fhe+%2F%28TODO%7CDIRTY%29%24%2F) |
| Magyar (hu) | ■■■■■■■■■・ 98% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fhu+%2F%28TODO%7CDIRTY%29%24%2F) |
| עברית (he) | ■■■■・・・・・・ 41% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fhe+%2F%28TODO%7CDIRTY%29%24%2F) |
| Magyar (hu) | ■■■■■■■■■・ 97% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fhu+%2F%28TODO%7CDIRTY%29%24%2F) |
| Bahasa Indonesia (id) | ■■■■■■■■■・ 91% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fid+%2F%28TODO%7CDIRTY%29%24%2F) |
| Italiano (it) | ■■■■■■■■■・ 99% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fit+%2F%28TODO%7CDIRTY%29%24%2F) |
| 日本語 (ja) | ■■■■■■■■・ 90% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fja+%2F%28TODO%7CDIRTY%29%24%2F) |
| 한국어 (ko) | ■■■■■■■■・・ 83% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fko+%2F%28TODO%7CDIRTY%29%24%2F) |
| Latviešu (lv) | ■■■■■■■・・・ 77% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Flv+%2F%28TODO%7CDIRTY%29%24%2F) |
| Nederlands (nl) | ■■■■■■■■■・ 99% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fnl+%2F%28TODO%7CDIRTY%29%24%2F) |
| Occitan (oc) | ■■■■■■■・・・ 76% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Foc+%2F%28TODO%7CDIRTY%29%24%2F) |
| Polski (pl) | ■■■■■■■■■■ 100% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fpl+%2F%28TODO%7CDIRTY%29%24%2F) |
| Português (Brasil) (pt-BR) | ■■■■■■■■■・ 99% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fpt-BR+%2F%28TODO%7CDIRTY%29%24%2F) |
| Italiano (it) | ■■■■■■■■■・ 98% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fit+%2F%28TODO%7CDIRTY%29%24%2F) |
| 日本語 (ja) | ■■■■■■■■89% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fja+%2F%28TODO%7CDIRTY%29%24%2F) |
| 한국어 (ko) | ■■■■■■■■・・ 82% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fko+%2F%28TODO%7CDIRTY%29%24%2F) |
| Latviešu (lv) | ■■■■■■■・・・ 76% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Flv+%2F%28TODO%7CDIRTY%29%24%2F) |
| Nederlands (nl) | ■■■■■■■■■・ 98% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fnl+%2F%28TODO%7CDIRTY%29%24%2F) |
| Occitan (oc) | ■■■■■■■・・・ 75% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Foc+%2F%28TODO%7CDIRTY%29%24%2F) |
| Polski (pl) | ■■■■■■■■■・ 99% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fpl+%2F%28TODO%7CDIRTY%29%24%2F) |
| Português (Brasil) (pt-BR) | ■■■■■■■■■・ 98% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fpt-BR+%2F%28TODO%7CDIRTY%29%24%2F) |
| Português (Portugal) (pt-PT) | ■■■■■■■■・・ 82% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fpt-PT+%2F%28TODO%7CDIRTY%29%24%2F) |
| Русский (ru) | ■■■■■■■■■・ 98% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fru+%2F%28TODO%7CDIRTY%29%24%2F) |
| Slovenčina (sk) | ■■■■■■■■・・ 83% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fsk+%2F%28TODO%7CDIRTY%29%24%2F) |
| Türkçe (tr) | ■■■■■■■■■・ 91% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Ftr+%2F%28TODO%7CDIRTY%29%24%2F) |
| Русский (ru) | ■■■■■■■■■・ 97% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fru+%2F%28TODO%7CDIRTY%29%24%2F) |
| Slovenčina (sk) | ■■■■■■■■・・ 82% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fsk+%2F%28TODO%7CDIRTY%29%24%2F) |
| Türkçe (tr) | ■■■■■■■■■・ 90% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Ftr+%2F%28TODO%7CDIRTY%29%24%2F) |
| Українська (uk) | ■■■■■■■■■・ 93% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fuk+%2F%28TODO%7CDIRTY%29%24%2F) |
| 简体中文 (zh-CN) | ■■■■■■■■■・ 99% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fzh-CN+%2F%28TODO%7CDIRTY%29%24%2F) |
| 正體中文 (zh-TW) | ■■■■■■■■・・ 83% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fzh-TW+%2F%28TODO%7CDIRTY%29%24%2F) |
| 简体中文 (zh-CN) | ■■■■■■■■■・ 98% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fzh-CN+%2F%28TODO%7CDIRTY%29%24%2F) |
| 正體中文 (zh-TW) | ■■■■■■■■・・ 82% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fzh-TW+%2F%28TODO%7CDIRTY%29%24%2F) |
</translations>

View File

@@ -361,30 +361,32 @@ class FreshRSS_update_Controller extends FreshRSS_ActionController {
/**
* Check database is well-installed.
*
* @return array<string,bool> of tested values.
* @return array<string,array<string,bool>|bool> of tested values.
*/
private static function check_install_database(): array {
$status = [
'connection' => true,
'tables' => false,
'categories' => false,
'feeds' => false,
'entries' => false,
'entrytmp' => false,
'tag' => false,
'entrytag' => false,
'table' => [
'categories' => false,
'feeds' => false,
'entries' => false,
'entrytmp' => false,
'tag' => false,
'entrytag' => false,
],
];
try {
$dbDAO = FreshRSS_Factory::createDatabaseDAO();
$status['tables'] = $dbDAO->tablesAreCorrect();
$status['categories'] = $dbDAO->categoryIsCorrect();
$status['feeds'] = $dbDAO->feedIsCorrect();
$status['entries'] = $dbDAO->entryIsCorrect();
$status['entrytmp'] = $dbDAO->entrytmpIsCorrect();
$status['tag'] = $dbDAO->tagIsCorrect();
$status['entrytag'] = $dbDAO->entrytagIsCorrect();
$status['table']['categories'] = $dbDAO->categoryIsCorrect();
$status['table']['feeds'] = $dbDAO->feedIsCorrect();
$status['table']['entries'] = $dbDAO->entryIsCorrect();
$status['table']['entrytmp'] = $dbDAO->entrytmpIsCorrect();
$status['table']['tag'] = $dbDAO->tagIsCorrect();
$status['table']['entrytag'] = $dbDAO->entrytagIsCorrect();
} catch (Minz_PDOConnectionException $e) {
$status['connection'] = false;
}

View File

@@ -91,29 +91,44 @@ class FreshRSS_DatabaseDAO extends Minz_ModelPdo {
return $res == null ? [] : $this->listDaoToSchema($res);
}
/** @param array<string> $schema */
public function checkTable(string $table, array $schema): bool {
$columns = $this->getSchema($table);
if (count($columns) === 0 || count($schema) === 0) {
/**
* Verify that database table has at least the given columns
*
* @param string $table
* @param array<string> $expectedColumns
*/
public function checkTable(string $table, array $expectedColumns): bool {
$columnInfo = $this->getSchema($table);
$exististingColumns = array_column($columnInfo, 'name');
if (count($exististingColumns) === 0 || count($expectedColumns) === 0) {
return false;
}
$ok = count($columns) === count($schema);
foreach ($columns as $c) {
$ok &= in_array($c['name'], $schema, true);
//allow for extensions adding additional columns
$ok = count($exististingColumns) >= count($expectedColumns);
foreach ($expectedColumns as $name) {
$ok &= in_array($name, $exististingColumns, true);
}
return (bool)$ok;
}
public function categoryIsCorrect(): bool {
return $this->checkTable('category', ['id', 'name']);
return $this->checkTable('category', [
'id',
'name',
'kind',
'lastUpdate',
'error',
'attributes',
]);
}
public function feedIsCorrect(): bool {
return $this->checkTable('feed', [
'id',
'url',
'kind',
'category',
'name',
'website',
@@ -131,12 +146,34 @@ class FreshRSS_DatabaseDAO extends Minz_ModelPdo {
}
public function entryIsCorrect(): bool {
$entryDAO = FreshRSS_Factory::createEntryDao();
return $this->checkTable('entry', [
'id',
'guid',
'title',
'author',
'content_bin',
$entryDAO::isCompressed() ? 'content_bin' : 'content',
'link',
'date',
'lastSeen',
'lastUserModified',
'hash',
'is_read',
'is_favorite',
'id_feed',
'tags',
'attributes',
]);
}
public function entrytmpIsCorrect(): bool {
$entryDAO = FreshRSS_Factory::createEntryDao();
return $this->checkTable('entrytmp', [
'id',
'guid',
'title',
'author',
$entryDAO::isCompressed() ? 'content_bin' : 'content',
'link',
'date',
'lastSeen',
@@ -145,12 +182,7 @@ class FreshRSS_DatabaseDAO extends Minz_ModelPdo {
'is_favorite',
'id_feed',
'tags',
]);
}
public function entrytmpIsCorrect(): bool {
return $this->checkTable('entrytmp', [
'id', 'guid', 'title', 'author', 'content_bin', 'link', 'date', 'lastSeen', 'hash', 'is_read', 'is_favorite', 'id_feed', 'tags'
'attributes',
]);
}

View File

@@ -13,7 +13,7 @@ class FreshRSS_DatabaseDAOPGSQL extends FreshRSS_DatabaseDAOSQLite {
#[\Override]
public function tablesAreCorrect(): bool {
$db = FreshRSS_Context::systemConf()->db;
$sql = 'SELECT * FROM pg_catalog.pg_tables where tableowner=:tableowner';
$sql = 'SELECT tablename FROM pg_catalog.pg_tables where tableowner=:tableowner';
$res = $this->fetchAssoc($sql, [':tableowner' => $db['user']]);
if ($res == null) {
return false;

View File

@@ -44,20 +44,6 @@ class FreshRSS_DatabaseDAOSQLite extends FreshRSS_DatabaseDAO {
return [];
}
#[\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'
]);
}
/**
* @param array<string,string|int|bool|null> $dao
* @return array{'name':string,'type':string,'notnull':bool,'default':mixed}

View File

@@ -59,7 +59,7 @@ class FreshRSS_View extends Minz_View {
/** @var array<string,'ok'|'ko'|'warn'> */
public array $status_php;
public bool $update_to_apply;
/** @var array<string,bool> */
/** @var array<string,array<string, bool>|bool> */
public array $status_database;
public bool $is_release_channel_stable;

View File

@@ -50,6 +50,19 @@ return array(
'nok' => 'Zkontrolujte oprávnění adresáře <em>%1$s</em> pro uživatele <em>%2$s</em>. Server HTTP musí mít oprávnění pro zápis.',
'ok' => 'Oprávnění adresáře data jsou v pořádku.',
),
'database-connection' => array(
'nok' => 'Database connection error.', // TODO
'ok' => 'Database connection is good.', // TODO
),
'database-table' => array(
'nok' => 'Database table "%s" is incomplete.', // TODO
'ok' => 'Database table "%s" is good.', // TODO
),
'database-tables' => array(
'nok' => 'Some database tables are missing.', // TODO
'ok' => 'All database tables exist.', // TODO
),
'database-title' => 'Database', // TODO
'dom' => array(
'nok' => 'Nelze nalézt požadovanou knihovnu pro procházení DOM.',
'ok' => 'Máte požadovanou knihovnu pro procházení DOM.',

View File

@@ -50,6 +50,19 @@ return array(
'nok' => 'Überprüfen Sie die Berechtigungen des Verzeichnisses <em>%s</em>. Der HTTP-Server muss Schreibrechte besitzen.',
'ok' => 'Die Berechtigungen des Verzeichnisses <em>%s</em> sind in Ordnung.',
),
'database-connection' => array(
'nok' => 'Database connection error.', // TODO
'ok' => 'Database connection is good.', // TODO
),
'database-table' => array(
'nok' => 'Database table "%s" is incomplete.', // TODO
'ok' => 'Database table "%s" is good.', // TODO
),
'database-tables' => array(
'nok' => 'Some database tables are missing.', // TODO
'ok' => 'All database tables exist.', // TODO
),
'database-title' => 'Database', // TODO
'dom' => array(
'nok' => 'Ihnen fehlt eine benötigte Bibliothek um DOM zu durchstöbern.',
'ok' => 'Sie haben die benötigte Bibliothek um DOM zu durchstöbern.',

View File

@@ -50,6 +50,19 @@ return array(
'nok' => 'Ελέγξτε τα δικαιώματα στον κατάλογο <em>%1$s</em> για τον χρήστη <em>%2$s</em>. Ο διακομιστής HTTP πρέπει να έχει δικαίωμα εγγραφής.',
'ok' => 'Τα δικαιώματα στον κατάλογο δεδομένων (data) είναι εντάξει.',
),
'database-connection' => array(
'nok' => 'Database connection error.', // TODO
'ok' => 'Database connection is good.', // TODO
),
'database-table' => array(
'nok' => 'Database table "%s" is incomplete.', // TODO
'ok' => 'Database table "%s" is good.', // TODO
),
'database-tables' => array(
'nok' => 'Some database tables are missing.', // TODO
'ok' => 'All database tables exist.', // TODO
),
'database-title' => 'Database', // TODO
'dom' => array(
'nok' => 'Δεν βρέθηκε η απαιτούμενη βιβλιοθήκη για περιήγηση στο DOM.',
'ok' => 'Βρέθηκε η απαιτούμενη βιβλιοθήκη για περιήγηση στο DOM.',

View File

@@ -50,6 +50,19 @@ return array(
'nok' => 'Check permissions on the <em>%1$s</em> directory for <em>%2$s</em> user. The HTTP server must have write permissions.',
'ok' => 'Permissions on the data directory are good.', // IGNORE
),
'database-connection' => array(
'nok' => 'Database connection error.', // IGNORE
'ok' => 'Database connection is good.', // IGNORE
),
'database-table' => array(
'nok' => 'Database table "%s" is incomplete.', // IGNORE
'ok' => 'Database table "%s" is good.', // IGNORE
),
'database-tables' => array(
'nok' => 'Some database tables are missing.', // IGNORE
'ok' => 'All database tables exist.', // IGNORE
),
'database-title' => 'Database', // IGNORE
'dom' => array(
'nok' => 'Cannot find the required library to browse the DOM.', // IGNORE
'ok' => 'You have the required library to browse the DOM.', // IGNORE

View File

@@ -50,6 +50,19 @@ return array(
'nok' => 'Check permissions on the <em>%1$s</em> directory for <em>%2$s</em> user. The HTTP server must have write permission.',
'ok' => 'Permissions on the data directory are good.',
),
'database-connection' => array(
'nok' => 'Database connection error.',
'ok' => 'Database connection is good.',
),
'database-table' => array(
'nok' => 'Database table "%s" is incomplete.',
'ok' => 'Database table "%s" is good.',
),
'database-tables' => array(
'nok' => 'Some database tables are missing.',
'ok' => 'All database tables exist.',
),
'database-title' => 'Database',
'dom' => array(
'nok' => 'Cannot find the required library to browse the DOM.',
'ok' => 'You have the required library to browse the DOM.',

View File

@@ -50,6 +50,19 @@ return array(
'nok' => 'Comprueba los permisos del directorio <em>%s</em>. El servidor HTTP debe contar con permisos de escritura.',
'ok' => 'Los permisos del directorio data son correctos.',
),
'database-connection' => array(
'nok' => 'Database connection error.', // TODO
'ok' => 'Database connection is good.', // TODO
),
'database-table' => array(
'nok' => 'Database table "%s" is incomplete.', // TODO
'ok' => 'Database table "%s" is good.', // TODO
),
'database-tables' => array(
'nok' => 'Some database tables are missing.', // TODO
'ok' => 'All database tables exist.', // TODO
),
'database-title' => 'Database', // TODO
'dom' => array(
'nok' => 'No se ha podido localizar la librería necesaria para explorar la DOM.',
'ok' => 'Dispones de la librería necesaria para explorar la DOM.',

View File

@@ -50,6 +50,19 @@ return array(
'nok' => 'مجوزهای دایرکتوری <em>%1$s</em> را برای کاربر <em>%2$s</em> بررسی کنید. سرور HTTP باید مجوز نوشتن داشته باشد.',
'ok' => 'مجوزهای مربوط به دایرکتوری داده خوب است.',
),
'database-connection' => array(
'nok' => 'Database connection error.', // TODO
'ok' => 'Database connection is good.', // TODO
),
'database-table' => array(
'nok' => 'Database table "%s" is incomplete.', // TODO
'ok' => 'Database table "%s" is good.', // TODO
),
'database-tables' => array(
'nok' => 'Some database tables are missing.', // TODO
'ok' => 'All database tables exist.', // TODO
),
'database-title' => 'Database', // TODO
'dom' => array(
'nok' => 'کتابخانه مورد نیاز برای مرور DOM را نمی‌توان پیدا کرد.',
'ok' => 'شما کتابخانه مورد نیاز برای مرور DOM را دارید.',

View File

@@ -50,6 +50,19 @@ return array(
'nok' => 'Tarkista käyttäjän <em>%2$s</em> oikeudet hakemistoon <em>%1$s</em>. HTTP-palvelimella on oltava kirjoitusoikeus.',
'ok' => 'Data-hakemiston oikeudet ovat oikein.',
),
'database-connection' => array(
'nok' => 'Database connection error.', // TODO
'ok' => 'Database connection is good.', // TODO
),
'database-table' => array(
'nok' => 'Database table "%s" is incomplete.', // TODO
'ok' => 'Database table "%s" is good.', // TODO
),
'database-tables' => array(
'nok' => 'Some database tables are missing.', // TODO
'ok' => 'All database tables exist.', // TODO
),
'database-title' => 'Database', // TODO
'dom' => array(
'nok' => 'DOM-rakenteen selaamiseen tarvittavaa kirjastoa ei löydy.',
'ok' => 'DOM-rakenteen selaamiseen tarvittava kirjasto löytyy.',

View File

@@ -50,6 +50,19 @@ return array(
'nok' => 'Veuillez vérifier les droits de lutilisateur <em>%2$s</em> sur le répertoire <em>%1$s</em>. Le serveur HTTP doit être capable décrire dedans.',
'ok' => 'Les droits sur le répertoire de data sont bons.',
),
'database-connection' => array(
'nok' => 'Erreur de connexion à la base de données.',
'ok' => 'La connexion à la base de données est bonne.',
),
'database-table' => array(
'nok' => 'La table de la base de données "%s" est incomplète.',
'ok' => 'La table de la base de données "%s" est correcte.',
),
'database-tables' => array(
'nok' => 'Certaines tables de la base de données sont manquantes.',
'ok' => 'Toutes les tables de la base de données existent.',
),
'database-title' => 'Base de données',
'dom' => array(
'nok' => 'Impossible de trouver la librairie requise pour parcourir le DOM.',
'ok' => 'Vous disposez de la librairie requise pour parcourir le DOM.',
@@ -59,8 +72,8 @@ return array(
'ok' => 'Les droits sur le répertoire des favicons sont bons.',
),
'fileinfo' => array(
'nok' => 'Vous ne disposez pas de la librairie recommendée php-fileinfo.',
'ok' => 'Vous disposez de la librairie recommendée php-fileinfo.',
'nok' => 'Vous ne disposez pas de la librairie recommandéee php-fileinfo.',
'ok' => 'Vous disposez de la librairie recommandéee php-fileinfo.',
),
'files' => 'Installation des fichiers',
'intl' => array(

View File

@@ -50,6 +50,19 @@ return array(
'nok' => 'Check permissions on the <em>%1$s</em> directory for <em>%2$s</em> user. The HTTP server must have write permissions.',
'ok' => 'ההרשאות בתיקיית הדאטא תקינות',
),
'database-connection' => array(
'nok' => 'Database connection error.', // TODO
'ok' => 'Database connection is good.', // TODO
),
'database-table' => array(
'nok' => 'Database table "%s" is incomplete.', // TODO
'ok' => 'Database table "%s" is good.', // TODO
),
'database-tables' => array(
'nok' => 'Some database tables are missing.', // TODO
'ok' => 'All database tables exist.', // TODO
),
'database-title' => 'Database', // TODO
'dom' => array(
'nok' => 'הספרייה הנדרשת לסיור ב DOM אינה מותקנת (php-xml package)',
'ok' => 'הספרייה הנדרשת לסיור ב DOM מותקנת',

View File

@@ -50,6 +50,19 @@ return array(
'nok' => 'Ellenőrizd a(z) <em>%1$s</em> könyvtáron a(z) <em>%2$s</em> felhasználónak. A HTTP szervernek szüksége van írási jogosultságra.',
'ok' => 'A data könyvtár jogosultságai rendben vannak.',
),
'database-connection' => array(
'nok' => 'Database connection error.', // TODO
'ok' => 'Database connection is good.', // TODO
),
'database-table' => array(
'nok' => 'Database table "%s" is incomplete.', // TODO
'ok' => 'Database table "%s" is good.', // TODO
),
'database-tables' => array(
'nok' => 'Some database tables are missing.', // TODO
'ok' => 'All database tables exist.', // TODO
),
'database-title' => 'Database', // TODO
'dom' => array(
'nok' => 'A DOM böngészéséhez nem található a könyvtár.',
'ok' => 'A DOM böngészésére való könyvtár telepítve van.',

View File

@@ -50,6 +50,19 @@ return array(
'nok' => 'Periksa izin direktori <em>%1$s</em> untuk pengguna <em>%2$s</em>. Peladen HTTP harus memiliki izin menulis di direktori tersebut.',
'ok' => 'Izin untuk direktori data sudah bagus.',
),
'database-connection' => array(
'nok' => 'Database connection error.', // TODO
'ok' => 'Database connection is good.', // TODO
),
'database-table' => array(
'nok' => 'Database table "%s" is incomplete.', // TODO
'ok' => 'Database table "%s" is good.', // TODO
),
'database-tables' => array(
'nok' => 'Some database tables are missing.', // TODO
'ok' => 'All database tables exist.', // TODO
),
'database-title' => 'Database', // TODO
'dom' => array(
'nok' => 'Tidak dapat menemukan pustaka yang diperlukan untuk menelusuri DOM.',
'ok' => 'Anda memiliki pustaka yang diperlukan untuk menelusuri DOM.',

View File

@@ -50,6 +50,19 @@ return array(
'nok' => 'Verifica i permessi sulla cartella <em>%s</em>. Il server HTTP deve avere i permessi per scriverci dentro.',
'ok' => 'I permessi sulla cartella data sono corretti.',
),
'database-connection' => array(
'nok' => 'Database connection error.', // TODO
'ok' => 'Database connection is good.', // TODO
),
'database-table' => array(
'nok' => 'Database table "%s" is incomplete.', // TODO
'ok' => 'Database table "%s" is good.', // TODO
),
'database-tables' => array(
'nok' => 'Some database tables are missing.', // TODO
'ok' => 'All database tables exist.', // TODO
),
'database-title' => 'Database', // TODO
'dom' => array(
'nok' => 'Manca una libreria richiesta per leggere DOM.',
'ok' => 'Libreria richiesta per leggere DOM presente.',

View File

@@ -50,6 +50,19 @@ return array(
'nok' => 'この <em>%1$s</em> ディレクトリの <em>%2$s</em> ユーザーのアクセス権限を確認してください。HTTPサーバーは編集権限を必要としています。',
'ok' => 'ディレクトリのパーミッションは正しく設定されています。',
),
'database-connection' => array(
'nok' => 'Database connection error.', // TODO
'ok' => 'Database connection is good.', // TODO
),
'database-table' => array(
'nok' => 'Database table "%s" is incomplete.', // TODO
'ok' => 'Database table "%s" is good.', // TODO
),
'database-tables' => array(
'nok' => 'Some database tables are missing.', // TODO
'ok' => 'All database tables exist.', // TODO
),
'database-title' => 'Database', // TODO
'dom' => array(
'nok' => 'DOMを検索するライブラリが見つかりませんでした。',
'ok' => 'DOMを検索するライブラリが見つかりました。',

View File

@@ -50,6 +50,19 @@ return array(
'nok' => '<em>%s</em> 디렉토리의 권한을 확인하세요. HTTP 서버가 쓰기 권한을 가지고 있어야 합니다',
'ok' => 'data 디렉토리의 권한이 올바르게 설정되었습니다.',
),
'database-connection' => array(
'nok' => 'Database connection error.', // TODO
'ok' => 'Database connection is good.', // TODO
),
'database-table' => array(
'nok' => 'Database table "%s" is incomplete.', // TODO
'ok' => 'Database table "%s" is good.', // TODO
),
'database-tables' => array(
'nok' => 'Some database tables are missing.', // TODO
'ok' => 'All database tables exist.', // TODO
),
'database-title' => 'Database', // TODO
'dom' => array(
'nok' => 'DOM을 다룰 수 있는 라이브러리를 찾을 수 없습니다 (php-xml 패키지).',
'ok' => 'DOM을 다룰 수 있는 라이브러리가 설치되어 있습니다.',

View File

@@ -50,6 +50,19 @@ return array(
'nok' => 'Pārbaudiet atļaujas <em>%1$s</em> mapē priekš lietotāja <em>%2$s</em>. HTTP serverim jābūt piešķirtām rakstīšanas atļaujām.',
'ok' => 'Ar datu mapes atļaujām viss ir kārtībā.',
),
'database-connection' => array(
'nok' => 'Database connection error.', // TODO
'ok' => 'Database connection is good.', // TODO
),
'database-table' => array(
'nok' => 'Database table "%s" is incomplete.', // TODO
'ok' => 'Database table "%s" is good.', // TODO
),
'database-tables' => array(
'nok' => 'Some database tables are missing.', // TODO
'ok' => 'All database tables exist.', // TODO
),
'database-title' => 'Database', // TODO
'dom' => array(
'nok' => 'Nevar atrast nepieciešamo bibliotēku, lai pārlūkotu DOM (php-xml pakete).',
'ok' => 'Jums ir nepieciešamā bibliotēka, lai pārlūkotu DOM.',

View File

@@ -50,6 +50,19 @@ return array(
'nok' => 'Controleer permissies van de <em>%s</em> map. HTTP server moet rechten hebben om er in te kunnen schrijven.',
'ok' => 'Permissies van de data map zijn goed.',
),
'database-connection' => array(
'nok' => 'Database connection error.', // TODO
'ok' => 'Database connection is good.', // TODO
),
'database-table' => array(
'nok' => 'Database table "%s" is incomplete.', // TODO
'ok' => 'Database table "%s" is good.', // TODO
),
'database-tables' => array(
'nok' => 'Some database tables are missing.', // TODO
'ok' => 'All database tables exist.', // TODO
),
'database-title' => 'Database', // TODO
'dom' => array(
'nok' => 'U mist een benodigde bibliotheek om te bladeren in de DOM.',
'ok' => 'U hebt de benodigde bibliotheek om te bladeren in de DOM.',

View File

@@ -50,6 +50,19 @@ return array(
'nok' => 'Volgatz verificar los dreches sul repertòri <em>%s</em>. Lo servidor HTTP deu poder escriure dedins.',
'ok' => 'Los dreches sul repertòri data son bons.',
),
'database-connection' => array(
'nok' => 'Database connection error.', // TODO
'ok' => 'Database connection is good.', // TODO
),
'database-table' => array(
'nok' => 'Database table "%s" is incomplete.', // TODO
'ok' => 'Database table "%s" is good.', // TODO
),
'database-tables' => array(
'nok' => 'Some database tables are missing.', // TODO
'ok' => 'All database tables exist.', // TODO
),
'database-title' => 'Database', // TODO
'dom' => array(
'nok' => 'Impossible de trobar una bibliotèca per percórrer lo DOM.',
'ok' => 'Avètz la bibliotèca per percórrer lo DOM.',

View File

@@ -50,6 +50,19 @@ return array(
'nok' => 'Sprawdź uprawnienia użytkownika <em>%2$s</em> dla katalogu <em>%1$s</em>. Użytkownik serwera WWW musi mieć uprawnienia do zapisu.',
'ok' => 'Uprawnienia dla katalogu danych się zgadzają.',
),
'database-connection' => array(
'nok' => 'Database connection error.', // TODO
'ok' => 'Database connection is good.', // TODO
),
'database-table' => array(
'nok' => 'Database table "%s" is incomplete.', // TODO
'ok' => 'Database table "%s" is good.', // TODO
),
'database-tables' => array(
'nok' => 'Some database tables are missing.', // TODO
'ok' => 'All database tables exist.', // TODO
),
'database-title' => 'Database', // TODO
'dom' => array(
'nok' => 'Nie znaleziono wymaganej biblioteki do korzystania z DOM-u.',
'ok' => 'Znaleziono wymaganą bibliotekę do korzystania z DOM-u.',

View File

@@ -50,6 +50,19 @@ return array(
'nok' => 'Verifique as permissões no diretório <em>%s</em>. O servidor HTTP deve ter direitos para escrever dentro desta pasta.',
'ok' => 'Permissões no diretório data estão corretos.',
),
'database-connection' => array(
'nok' => 'Database connection error.', // TODO
'ok' => 'Database connection is good.', // TODO
),
'database-table' => array(
'nok' => 'Database table "%s" is incomplete.', // TODO
'ok' => 'Database table "%s" is good.', // TODO
),
'database-tables' => array(
'nok' => 'Some database tables are missing.', // TODO
'ok' => 'All database tables exist.', // TODO
),
'database-title' => 'Database', // TODO
'dom' => array(
'nok' => 'Não foi possível encontrar uma biblioteca necessária para navegar pelo DOM (php-xml).',
'ok' => 'Você tem a biblioteca necessária para navegar pelo DOM.',

View File

@@ -50,6 +50,19 @@ return array(
'nok' => 'Verifique as permissões no diretório <em>%s</em>. O servidor HTTP deve ter direitos para escrever dentro desta pasta.',
'ok' => 'Permissões no diretório data estão corretos.',
),
'database-connection' => array(
'nok' => 'Database connection error.', // TODO
'ok' => 'Database connection is good.', // TODO
),
'database-table' => array(
'nok' => 'Database table "%s" is incomplete.', // TODO
'ok' => 'Database table "%s" is good.', // TODO
),
'database-tables' => array(
'nok' => 'Some database tables are missing.', // TODO
'ok' => 'All database tables exist.', // TODO
),
'database-title' => 'Database', // TODO
'dom' => array(
'nok' => 'Não foi possível encontrar uma biblioteca necessária para navegar pelo DOM (php-xml).',
'ok' => 'Tem a biblioteca necessária para navegar pelo DOM.',

View File

@@ -50,6 +50,19 @@ return array(
'nok' => 'Проверьте права доступа к папке <em>%s</em> . Веб-сервер должен иметь право на запись в эту папку.',
'ok' => 'Права на <em>./data/</em> в порядке.',
),
'database-connection' => array(
'nok' => 'Database connection error.', // TODO
'ok' => 'Database connection is good.', // TODO
),
'database-table' => array(
'nok' => 'Database table "%s" is incomplete.', // TODO
'ok' => 'Database table "%s" is good.', // TODO
),
'database-tables' => array(
'nok' => 'Some database tables are missing.', // TODO
'ok' => 'All database tables exist.', // TODO
),
'database-title' => 'Database', // TODO
'dom' => array(
'nok' => 'У вас не установлена необходимая библиотека для просмотра DOM (пакет php-xml).',
'ok' => 'У вас установлена необходимая библиотека для просмотра DOM.',

View File

@@ -50,6 +50,19 @@ return array(
'nok' => 'Skontrolujte oprávnenia prístupu do priečinku <em>%s</em>. HTTP server musí mať právo doň zapisovať.',
'ok' => 'Oprávnenia prístupu do priečinku údajov sú OK.',
),
'database-connection' => array(
'nok' => 'Database connection error.', // TODO
'ok' => 'Database connection is good.', // TODO
),
'database-table' => array(
'nok' => 'Database table "%s" is incomplete.', // TODO
'ok' => 'Database table "%s" is good.', // TODO
),
'database-tables' => array(
'nok' => 'Some database tables are missing.', // TODO
'ok' => 'All database tables exist.', // TODO
),
'database-title' => 'Database', // TODO
'dom' => array(
'nok' => 'Nepodarilo sa nájsť požadovanú knižnicu na prehliadanie DOM.',
'ok' => 'Našla sa požadovaná knižnica na prehliadanie DOM.',

View File

@@ -50,6 +50,19 @@ return array(
'nok' => '<em>%2$s</em> kullanıcısı için <em>%1$s</em> dizinindeki izinleri kontrol edin. HTTP sunucusunun yazma izni olmalı.',
'ok' => 'Veri dizinindeki izinler uygun.',
),
'database-connection' => array(
'nok' => 'Database connection error.', // TODO
'ok' => 'Database connection is good.', // TODO
),
'database-table' => array(
'nok' => 'Database table "%s" is incomplete.', // TODO
'ok' => 'Database table "%s" is good.', // TODO
),
'database-tables' => array(
'nok' => 'Some database tables are missing.', // TODO
'ok' => 'All database tables exist.', // TODO
),
'database-title' => 'Database', // TODO
'dom' => array(
'nok' => 'DOMu taramak için gerekli kütüphane bulunamadı.',
'ok' => 'DOMu taramak için gerekli kütüphaneniz var.',

View File

@@ -50,6 +50,19 @@ return array(
'nok' => 'Перевірте доступ до каталога <em>%1$s</em> для користувача <em>%2$s</em>. HTTP-серверу потрібен дозвіл на запис.',
'ok' => 'Доступ до каталога даних працює.',
),
'database-connection' => array(
'nok' => 'Database connection error.', // TODO
'ok' => 'Database connection is good.', // TODO
),
'database-table' => array(
'nok' => 'Database table "%s" is incomplete.', // TODO
'ok' => 'Database table "%s" is good.', // TODO
),
'database-tables' => array(
'nok' => 'Some database tables are missing.', // TODO
'ok' => 'All database tables exist.', // TODO
),
'database-title' => 'Database', // TODO
'dom' => array(
'nok' => 'Не вдалося знайти необхідну бібліотеку роботи з DOM.',
'ok' => 'У вас є необхідна бібліотека роботи з DOM.',

View File

@@ -50,6 +50,19 @@ return array(
'nok' => '请检查 <em>%s</em> 目录权限HTTP 服务器必须拥有写入权限。',
'ok' => 'data 目录权限正常',
),
'database-connection' => array(
'nok' => 'Database connection error.', // TODO
'ok' => 'Database connection is good.', // TODO
),
'database-table' => array(
'nok' => 'Database table "%s" is incomplete.', // TODO
'ok' => 'Database table "%s" is good.', // TODO
),
'database-tables' => array(
'nok' => 'Some database tables are missing.', // TODO
'ok' => 'All database tables exist.', // TODO
),
'database-title' => 'Database', // TODO
'dom' => array(
'nok' => '找不到用于浏览 DOM 的库php-xml 包)',
'ok' => '已找到用于浏览 DOM 的库',

View File

@@ -50,6 +50,19 @@ return array(
'nok' => '請檢查 <em>%s</em> 目錄權限。HTTP 伺服器必須有其寫入權限。',
'ok' => 'data 目錄權限正常',
),
'database-connection' => array(
'nok' => 'Database connection error.', // TODO
'ok' => 'Database connection is good.', // TODO
),
'database-table' => array(
'nok' => 'Database table "%s" is incomplete.', // TODO
'ok' => 'Database table "%s" is good.', // TODO
),
'database-tables' => array(
'nok' => 'Some database tables are missing.', // TODO
'ok' => 'All database tables exist.', // TODO
),
'database-title' => 'Database', // TODO
'dom' => array(
'nok' => '找不到用於瀏覽 DOM 的庫php-xml',
'ok' => '已找到用於瀏覽 DOM 的庫',

View File

@@ -27,14 +27,18 @@
</p>
<?php } ?>
<?php /*
<h2><?= _t('install.check.database') ?></h2>
<h2><?= _t('install.check.database-title') ?></h2>
<?php foreach ($this->status_database as $key => $status) { ?>
<p class="alert <?= match ($status) { 'ok' => 'alert-success', 'warn' => 'alert-warn', default => 'alert-error' } ?>">
<?= _t('install.check.' . $key . '.' . ($status === 'ok' ? 'ok' : 'nok')) ?>
<?php if ($key === 'table') { continue; } ?>
<p class="alert <?= match ($status) { true => 'alert-success', default => 'alert-error' } ?>">
<?= _t('install.check.database-' . $key . '.' . ($status === true ? 'ok' : 'nok')) ?>
</p>
<?php } ?>
<?php foreach ((array) $this->status_database['table'] as $key => $status) { ?>
<p class="alert <?= match ($status) { true => 'alert-success', default => 'alert-error' } ?>">
<?= sprintf(_t('install.check.database-table.' . ($status === true ? 'ok' : 'nok')), $key) ?>
</p>
<?php } ?>
*/ ?>
</main>