mirror of https://github.com/FreshRSS/FreshRSS.git
docs: language table added (#5375)
* docs: language table added * Update 05_Configuration.md * Update 05_Configuration.md * french docs * Unicode quote and a few fixes (Same search&replace aslo applied to a few other files) --------- Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>
This commit is contained in:
parent
9172b65cdb
commit
54c8de86c7
|
@ -396,7 +396,7 @@ image: freshrss/freshrss:arm
|
|||
|
||||
If you then get this error message when running `docker compose up`:
|
||||
|
||||
> The requested image's platform (linux/arm/v7) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested
|
||||
> The requested image’s platform (linux/arm/v7) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested
|
||||
|
||||
… you will also need to specify the platform in the `service` part:
|
||||
|
||||
|
|
|
@ -33,8 +33,8 @@ class FreshRSS_BooleanSearch {
|
|||
$input = $this->parseUserQueryIds($input);
|
||||
}
|
||||
|
||||
// Either parse everything as a series of BooleanSearch's combined by implicit AND
|
||||
// or parse everything as a series of Search's combined by explicit OR
|
||||
// Either parse everything as a series of BooleanSearch’s combined by implicit AND
|
||||
// or parse everything as a series of Search’s combined by explicit OR
|
||||
$this->parseParentheses($input, $level) || $this->parseOrSegments($input);
|
||||
}
|
||||
|
||||
|
|
|
@ -358,7 +358,7 @@ class FreshRSS_Import_Service {
|
|||
}
|
||||
|
||||
if (isset($outline['@outlines'])) {
|
||||
// The outline has children, it's probably a category
|
||||
// The outline has children, it’s probably a category
|
||||
if (!empty($outline['text'])) {
|
||||
$category_name = $outline['text'];
|
||||
} elseif (!empty($outline['title'])) {
|
||||
|
@ -376,8 +376,7 @@ class FreshRSS_Import_Service {
|
|||
$categories_elements[$category_name] = $outline;
|
||||
}
|
||||
|
||||
// The xmlUrl means it's a feed URL: add the outline to the array if it
|
||||
// exists.
|
||||
// The xmlUrl means it’s a feed URL: add the outline to the array if it exists.
|
||||
if (isset($outline['xmlUrl'])) {
|
||||
if (!isset($categories_to_feeds[$parent_category_name])) {
|
||||
$categories_to_feeds[$parent_category_name] = [];
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
FreshRSS global settings are in `./data/config.php` and users' settings are in `./data/users/*/config.php`. You can also back up the whole `./data/` directory but exclude the things you do not want.
|
||||
|
||||
If you use extensions, then each directory in `./extensions` the folder `static` contains the user's extension settings.
|
||||
If you use extensions, then each directory in `./extensions` the folder `static` contains the user’s extension settings.
|
||||
|
||||
## Full-Installation Backup
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# Contributing to internationalization (i18n)
|
||||
|
||||
Thanks to our contributors, FreshRSS is translated into more than 15 languages. This section will explain the basics of internationalization in FreshRSS, from translating the application to your own language to making a specific change.
|
||||
Thanks to our contributors, FreshRSS is translated into [more than 20 languages](./users/05_Configuration.md#language). This section will explain the basics of internationalization in FreshRSS, from translating the application to your own language to making a specific change.
|
||||
|
||||
## Overview
|
||||
|
||||
|
@ -23,7 +23,6 @@ The translation files are quite simple: it’s only a matter of returning a PHP
|
|||
|
||||
```php
|
||||
<?php
|
||||
|
||||
return array(
|
||||
'action' => [
|
||||
'actualize' => 'Actualiser',
|
||||
|
@ -37,7 +36,7 @@ return array(
|
|||
'about' => 'À propos de FreshRSS',
|
||||
),
|
||||
// ...
|
||||
];
|
||||
);
|
||||
```
|
||||
|
||||
Each value can be referenced by a key: it consists of a series of identifiers separated by dots. The first identifier indicates from which file to extract the translation, while the following ones indicate array entries. Thus, the `gen.freshrss.about` key is referencing the `about` entry from the `freshrss` entry which is part of the main array returned by the `gen.php` file. This allows us to further organize our translation files.
|
||||
|
|
|
@ -3,13 +3,38 @@
|
|||
|
||||
## Language
|
||||
|
||||
FreshRSS is currently available in 14 languages. After confirming your choice, the interface will be displayed in your preferred language.
|
||||
FreshRSS is currently available in 22 languages. After confirming your choice, the interface will be displayed in your preferred language.
|
||||
Depending on the language chosen, parts of the interface may not be not translated yet. If you’re willing to help translate
|
||||
the missing bits or would like to add a new language, please take a look at how you can [contribute to the project](../contributing.md#contribute-to-internationalization-i18n).
|
||||
|
||||
Some parts of FreshRSS aren’t translated and aren’t intended to be translated either. For now, this includes the logs visible in the application as well as the log generated by automatic update scripts.
|
||||
Some parts of FreshRSS are not translated and are not intended to be translated either. For now, this includes the logs visible in the application as well as the log generated by automatic update scripts.
|
||||
|
||||
Available languages are: cz, de, en, es, fr, he, it, ko, nl, oc, pt-br, ru, tr, zh-cn.
|
||||
Available languages are:
|
||||
|
||||
| Language (English name) | Language (Endonym) | Ordered by language code (ISO-639-1) |
|
||||
|:------------------------|:-----------------------|:-------------------------------------|
|
||||
| Czech | Čeština | cz |
|
||||
| German | Deutsch | de |
|
||||
| Greek | Ελληνικά | el |
|
||||
| English | English | en |
|
||||
| English (United States) | English (United States) | en-us |
|
||||
| Spanish | Español | es |
|
||||
| French | Français | fr |
|
||||
| Hebrew | עברית | he |
|
||||
| Indonesian | Bahasa Indonesia | id |
|
||||
| Italian | Italiano | it |
|
||||
| Japanease | 日本語 | ja |
|
||||
| Korean | 한국어 | ko |
|
||||
| Latvian | Latviešu | lv |
|
||||
| Dutch | Nederlands | nl |
|
||||
| Occitan | Occitan | oc |
|
||||
| Polish | Polski | pl |
|
||||
| Brazilian Portuguese | Português (Brasil) | pt-br |
|
||||
| Russian | Русский | ru |
|
||||
| Slovak | Slovenčina | sk |
|
||||
| Turkish | Türkçe | tr |
|
||||
| Chinese (Simplified, People’s Republic of China) | 简体中文 | zh-cn |
|
||||
| Chinese (Traditional, Taiwan) | 正體中文 | zh-tw |
|
||||
|
||||
## Theme
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@ FreshRSS has the option to share links with a bunch of services.
|
|||
|:--------------|:-------------------------------------------------------|:--------------------------------------------------------------|
|
||||
| Clipboard | Copy article link into the operation system clipboard | |
|
||||
| Email | Open the email app to send the article link | |
|
||||
| Print | Open browser's print dialog to print out the article | |
|
||||
| Print | Open browser’s print dialog to print out the article | |
|
||||
|
||||
## Available Services: Hosted Services
|
||||
|
||||
|
|
|
@ -103,7 +103,7 @@ Combining several search criteria implies a logical *and*, but the keyword ` OR
|
|||
can be used to combine several search criteria with a logical *or* instead: `author:Dupont OR author:Dupond`
|
||||
|
||||
You don’t have to do anything special to combine multiple negative operators. Writing `!intitle:'thing1' !intitle:'thing2'` implies AND, see above. For more pointers on how AND and OR interact with negation, see [this GitHub comment](https://github.com/FreshRSS/FreshRSS/issues/3236#issuecomment-891219460).
|
||||
Additional reading: [De Morgan's laws](https://en.wikipedia.org/wiki/De_Morgan%27s_laws).
|
||||
Additional reading: [De Morgan’s laws](https://en.wikipedia.org/wiki/De_Morgan%27s_laws).
|
||||
|
||||
Finally, parentheses may be used to express more complex queries, with basic negation support:
|
||||
|
||||
|
|
|
@ -1,5 +1,10 @@
|
|||
# Gestion de la traduction
|
||||
|
||||
Grâce à nos contributeurs, FreshRSS est traduit dans [plus de 20 langues](./users/05_Configuration.md#language).
|
||||
Cette section expliquera les bases de l’internationalisation dans FreshRSS, de la traduction de l’application dans votre propre langue à la réalisation d’un changement spécifique.
|
||||
|
||||
## Aperçu
|
||||
|
||||
Il est fréquent (et c’est un euphémisme) de vouloir afficher des phrases à
|
||||
l’utilisateur. Dans l’exemple précédent par exemple, nous affichions un
|
||||
feedback à l’utilisateur en fonction du résultat d’une validation de
|
||||
|
@ -31,7 +36,6 @@ retourner un tableau PHP contenant les traductions. Extrait du fichier
|
|||
|
||||
```php
|
||||
<?php
|
||||
|
||||
return array(
|
||||
'action' => [
|
||||
'actualize' => 'Actualiser',
|
||||
|
@ -44,9 +48,7 @@ return array(
|
|||
'_' => 'FreshRSS',
|
||||
'about' => 'À propos de FreshRSS',
|
||||
),
|
||||
];
|
||||
|
||||
?>
|
||||
);
|
||||
```
|
||||
|
||||
Pour accéder à ces traductions, `Minz_Translate` va nous aider à l’aide de
|
||||
|
|
|
@ -15,8 +15,32 @@ vocation à l’être. Pour le moment, les logs visibles dans l’application
|
|||
ainsi que celle générées par le script de mise à jour automatique en font
|
||||
partie.
|
||||
|
||||
Les langues disponibles sont : cz, de, en, es, fr, he, it, ko, nl, oc,
|
||||
pt-br, ru, tr, zh-cn.
|
||||
Les langues disponibles sont:
|
||||
|
||||
| Langue (nom français) | Langue (endonyme) | Classé par code de langue (ISO-639-1) |
|
||||
|:------------------------|:-----------------------|:-------------------------------------|
|
||||
| Tchèque | Čeština | cz |
|
||||
| Allemand | Deutsch | de |
|
||||
| Grec | Ελληνικά | el |
|
||||
| Anglais | English | en |
|
||||
| Anglais (États-Unis) | English (United States) | en-us |
|
||||
| Espagnol | Español | es |
|
||||
| Français | Français | fr |
|
||||
| Hébreu | עברית | he |
|
||||
| Indonésien | Bahasa Indonesia | id |
|
||||
| Italien | Italiano | it |
|
||||
| Japonais | 日本語 | ja |
|
||||
| Coréen | 한국어 | ko |
|
||||
| Letton | Latviešu | lv |
|
||||
| Néerlandais | Nederlands | nl |
|
||||
| Occitan | Occitan | oc |
|
||||
| Polonais | Polski | pl |
|
||||
| Portugais brésilien | Português (Brasil) | pt-br |
|
||||
| Russe | Русский | ru |
|
||||
| Slovaque | Slovenčina | sk |
|
||||
| Turc | Türkçe | tr |
|
||||
| Chinois (simplifié, République populaire de Chine) | 简体中文 | zh-cn |
|
||||
| Chinois (traditionnel, Taïwan) | 正體中文 | zh-tw |
|
||||
|
||||
## Thème
|
||||
|
||||
|
@ -27,16 +51,16 @@ propose 13 thèmes officiels :
|
|||
|:--------------|:-------------------------------------------------------|:--------------------------------------------------------------|
|
||||
| Alternative Dark | Ghost | |
|
||||
| Ansum | Thomas Guesnon | |
|
||||
| Blue Lagoon |Mister aiR | N'est plus pris en charge. Sera supprimé avec FreshRSS V1.22.0 |
|
||||
| Blue Lagoon |Mister aiR | N’est plus pris en charge. Sera supprimé avec FreshRSS V1.22.0 |
|
||||
| Dark | AD | |
|
||||
| Dark pink | Miicat_47 | |
|
||||
| Flat design | Marien Fressinaud | N'est plus pris en charge. Sera supprimé avec FreshRSS V1.22.0 |
|
||||
| Flat design | Marien Fressinaud | N’est plus pris en charge. Sera supprimé avec FreshRSS V1.22.0 |
|
||||
| Mapco | Thomas Guesnon | |
|
||||
| Nord theme | joelchrono12 | |
|
||||
| Origine | Marien Fressinaud | (default theme) |
|
||||
| Origine-compact | Kevin Papst | |
|
||||
| Pafat | Plopoyop | |
|
||||
| Screwdriver | Mister aiR | N'est plus pris en charge. Sera supprimé avec FreshRSS V1.22.0 |
|
||||
| Screwdriver | Mister aiR | N’est plus pris en charge. Sera supprimé avec FreshRSS V1.22.0 |
|
||||
| Swage | Patrick Crandol | |
|
||||
|
||||
Si aucun de ceux proposés ne convient, il est toujours possible de [créer
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<?php
|
||||
class Minz_CurrentPagePaginationException extends Minz_Exception {
|
||||
public function __construct(int $page) {
|
||||
$message = 'Page number `' . $page . '` doesn\'t exist';
|
||||
$message = 'Page number `' . $page . '` doesn’t exist';
|
||||
|
||||
parent::__construct ($message, self::ERROR);
|
||||
}
|
||||
|
|
|
@ -72,7 +72,7 @@ class Minz_Log {
|
|||
* Make sure we do not waste a huge amount of disk space with old log messages.
|
||||
*
|
||||
* This method can be called multiple times for one script execution, but its result will not change unless
|
||||
* you call clearstatcache() in between. We won't due do that for performance reasons.
|
||||
* you call clearstatcache() in between. We won’t do do that for performance reasons.
|
||||
*
|
||||
* @param string $file_name
|
||||
* @throws Minz_PermissionDeniedException
|
||||
|
|
|
@ -28,7 +28,7 @@ class Minz_Migrator
|
|||
* been modified, or migrations path cannot be
|
||||
* read).
|
||||
*
|
||||
* @throws BadFunctionCallException if a callback isn't callable.
|
||||
* @throws BadFunctionCallException if a callback isn’t callable.
|
||||
*/
|
||||
public static function execute(string $migrations_path, string $applied_migrations_path) {
|
||||
$applied_migrations = @file_get_contents($applied_migrations_path);
|
||||
|
@ -58,8 +58,8 @@ class Minz_Migrator
|
|||
if (!@mkdir($lock_path, 0770, true)) {
|
||||
// Someone is probably already executing the migrations (the folder
|
||||
// already exists).
|
||||
// We should probably return something else, but we don't want the
|
||||
// user to think there is an error (it's normal workflow), so let's
|
||||
// We should probably return something else, but we don’t want the
|
||||
// user to think there is an error (it’s normal workflow), so let’s
|
||||
// stick to this solution for now.
|
||||
// Another option would be to show him a maintenance page.
|
||||
Minz_Log::warning(
|
||||
|
@ -93,7 +93,7 @@ class Minz_Migrator
|
|||
'We weren’t able to unlink the migration executing folder, '
|
||||
. 'you might want to delete yourself: ' . $lock_path
|
||||
);
|
||||
// we don't return early because the migrations could have been
|
||||
// we don’t return early because the migrations could have been
|
||||
// applied successfully. This file is not "critical" if not removed
|
||||
// and more errors will eventually appear in the logs.
|
||||
}
|
||||
|
@ -122,8 +122,7 @@ class Minz_Migrator
|
|||
*
|
||||
* The files starting with a dot are ignored.
|
||||
*
|
||||
* @throws BadFunctionCallException if a callback isn't callable (i.e.
|
||||
* cannot call a migrate method).
|
||||
* @throws BadFunctionCallException if a callback isn’t callable (i.e. cannot call a migrate method).
|
||||
*/
|
||||
public function __construct(?string $directory = null) {
|
||||
$this->applied_versions = [];
|
||||
|
@ -163,7 +162,7 @@ class Minz_Migrator
|
|||
* return true on success and must return false
|
||||
* on error
|
||||
*
|
||||
* @throws BadFunctionCallException if the callback isn't callable.
|
||||
* @throws BadFunctionCallException if the callback isn’t callable.
|
||||
*/
|
||||
public function addMigration(string $version, ?callable $callback): void {
|
||||
if (!is_callable($callback)) {
|
||||
|
@ -230,7 +229,7 @@ class Minz_Migrator
|
|||
*/
|
||||
public function upToDate(): bool {
|
||||
// Counting versions is enough since we cannot apply a version which
|
||||
// doesn't exist (see setAppliedVersions method).
|
||||
// doesn’t exist (see setAppliedVersions method).
|
||||
return count($this->versions()) === count($this->applied_versions);
|
||||
}
|
||||
|
||||
|
@ -240,7 +239,7 @@ class Minz_Migrator
|
|||
* It only executes migrations AFTER the current version. If a migration
|
||||
* returns false or fails, it immediately stops the process.
|
||||
*
|
||||
* If the migration doesn't return false nor raise an exception, it is
|
||||
* If the migration doesn’t return false nor raise an exception, it is
|
||||
* considered as successful. It is considered as good practice to return
|
||||
* true on success though.
|
||||
*
|
||||
|
|
|
@ -61,8 +61,8 @@ class Minz_Session {
|
|||
/**
|
||||
* Allows you to retrieve a session variable
|
||||
* @param string $p the parameter to retrieve
|
||||
* @param mixed|false $default the default value if the parameter doesn't exist
|
||||
* @return mixed|false the value of the session variable, false if doesn't exist
|
||||
* @param mixed|false $default the default value if the parameter doesn’t exist
|
||||
* @return mixed|false the value of the session variable, false if doesn’t exist
|
||||
*/
|
||||
public static function param(string $p, $default = false) {
|
||||
return $_SESSION[$p] ?? $default;
|
||||
|
|
|
@ -653,10 +653,10 @@ function checkCIDR(string $ip, string $range): bool {
|
|||
|
||||
/**
|
||||
* Check if the client is allowed to send unsafe headers
|
||||
* This uses the REMOTE_ADDR header to determine the sender's IP
|
||||
* This uses the REMOTE_ADDR header to determine the sender’s IP
|
||||
* and the configuration option "trusted_sources" to get an array of the authorized ranges
|
||||
*
|
||||
* @return bool, true if the sender's IP is in one of the ranges defined in the configuration, else false
|
||||
* @return bool, true if the sender’s IP is in one of the ranges defined in the configuration, else false
|
||||
*/
|
||||
function checkTrustedIP(): bool {
|
||||
if (FreshRSS_Context::$system_conf === null) {
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# FreshRSS-Nord-Theme
|
||||
|
||||
A simple theme based on Nord's color scheme for [FreshRSS](https://freshrss.org)
|
||||
A simple theme based on Nord’s color scheme for [FreshRSS](https://freshrss.org)
|
||||
|
||||
You can see how it looks here. It features a compact layout and some custom icons.
|
||||
![Example](./thumbs/original.png)
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "Nord theme",
|
||||
"author": "joelchrono12",
|
||||
"description": "A simple theme based on Nord's color scheme",
|
||||
"description": "A simple theme based on Nord’s color scheme",
|
||||
"version": 0.1,
|
||||
"files": ["_frss.css","nord.css"],
|
||||
"theme-color": "#2e3440"
|
||||
|
|
|
@ -295,8 +295,7 @@ class MigratorTest extends TestCase
|
|||
|
||||
$this->assertTrue($result);
|
||||
$versions = file_get_contents($applied_migrations_path);
|
||||
// if the order changes, it probably means the first versions comparison
|
||||
// test doesn't work anymore
|
||||
// if the order changes, it probably means the first versions comparison test doesn’t work anymore
|
||||
$this->assertSame("2019_12_23_Baz\n2019_12_22_FooBar", $versions);
|
||||
@unlink($applied_migrations_path);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue