aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Ed Sandor <1273949+ewsandor@users.noreply.github.com> 2020-06-19 14:59:27 -0600
committerGravatar GitHub <noreply@github.com> 2020-06-19 22:59:27 +0200
commitbaaef3d9f4bdc81224620ab2f6b92575dcf81a59 (patch)
tree01a5d21ab64d4c058fa3f92a33441c07963ec3f5
parent9489cca1e3560e20614f73e5bfc570e8b6513b4a (diff)
3041 en us localization (#3060)
* Initial locaization from international english to United States English examples: favourite -> favorite optimise -> optimize occured -> occurred labelled -> labelled ok -> okay * More spelling corrections default English occured->occurred cancelled -> canceled labelled -> labeled * Undo key spelling change * i18n format and admin.php translating * Translating admin.php * more admin.php translating * Translating conf.php * Translating feedback.php and format command * Translating gen.php * Translating index.php * Translating sub.php * Translating user.php * Translating install.php * Fix 'there is no idle feed' * FIx 'there is no feed to refresh" * Add i18n manipulation option to ignore all unmodified translation keys * Lint fixes * Update keys newly add since original branch * Revert unintenntional ru 'translation' * Code review revisions * Fix leading whitespace in ignore_unmodified api * Update app/i18n/en-us/gen.php Co-authored-by: Frans de Jonge <fransdejonge@gmail.com> * Update app/i18n/en-us/admin.php Co-authored-by: Frans de Jonge <fransdejonge@gmail.com> * Update app/i18n/en-us/admin.php Co-authored-by: Frans de Jonge <fransdejonge@gmail.com> * Update error message for Make ignore-unmodified keys to use Make syntax. (inline with 3062) Also rename ignore-unmodifed-key -> ignore-unmodified-keys * Replace makefile leading spaces with tabs * Code review revisions * Retab added php functions * Missed tab replace * Remove stray '-> todo' Co-authored-by: root <root@x-freshrss.lan.ewsandor.com> Co-authored-by: Frans de Jonge <fransdejonge@gmail.com>
-rw-r--r--Makefile8
-rw-r--r--app/i18n/cz/gen.php1
-rw-r--r--app/i18n/de/gen.php1
-rw-r--r--app/i18n/en-us/admin.php210
-rw-r--r--app/i18n/en-us/conf.php202
-rw-r--r--app/i18n/en-us/feedback.php134
-rw-r--r--app/i18n/en-us/gen.php215
-rw-r--r--app/i18n/en-us/index.php66
-rw-r--r--app/i18n/en-us/install.php123
-rw-r--r--app/i18n/en-us/sub.php120
-rw-r--r--app/i18n/en-us/user.php44
-rw-r--r--app/i18n/en/feedback.php4
-rw-r--r--app/i18n/en/gen.php1
-rwxr-xr-xapp/i18n/es/gen.php1
-rw-r--r--app/i18n/fr/gen.php1
-rw-r--r--app/i18n/he/gen.php1
-rw-r--r--app/i18n/it/gen.php1
-rw-r--r--app/i18n/kr/gen.php1
-rw-r--r--app/i18n/nl/gen.php1
-rw-r--r--app/i18n/oc/gen.php1
-rw-r--r--app/i18n/pt-br/gen.php1
-rw-r--r--app/i18n/ru/feedback.php4
-rw-r--r--app/i18n/ru/gen.php1
-rw-r--r--app/i18n/sk/gen.php1
-rw-r--r--app/i18n/tr/gen.php1
-rw-r--r--app/i18n/zh-cn/gen.php1
-rw-r--r--cli/i18n/I18nData.php19
-rw-r--r--cli/i18n/ignore/cz.php1
-rw-r--r--cli/i18n/ignore/de.php1
-rw-r--r--cli/i18n/ignore/en-us.php686
-rw-r--r--cli/i18n/ignore/es.php1
-rw-r--r--cli/i18n/ignore/fr.php1
-rw-r--r--cli/i18n/ignore/he.php5
-rw-r--r--cli/i18n/ignore/it.php1
-rw-r--r--cli/i18n/ignore/kr.php1
-rw-r--r--cli/i18n/ignore/nl.php1
-rw-r--r--cli/i18n/ignore/oc.php1
-rw-r--r--cli/i18n/ignore/pt-br.php1
-rw-r--r--cli/i18n/ignore/ru.php1
-rw-r--r--cli/i18n/ignore/sk.php1
-rw-r--r--cli/i18n/ignore/tr.php1
-rw-r--r--cli/i18n/ignore/zh-cn.php1
-rw-r--r--cli/manipulate.translation.php17
43 files changed, 1880 insertions, 5 deletions
diff --git a/Makefile b/Makefile
index fd5eccfdd..d19d40fa6 100644
--- a/Makefile
+++ b/Makefile
@@ -140,6 +140,14 @@ endif
@$(PHP) ./cli/manipulate.translation.php -a ignore -k $(key) -l $(lang)
@echo Key ignored.
+.PHONY: i18n-ignore-unmodified-keys
+i18n-ignore-unmodified-keys: ## Ignore all unmodified translation keys for the selected language
+ifndef lang
+ $(error To ignore unmodified keys, you need to provide a language in the "lang" variable)
+endif
+ @$(PHP) ./cli/manipulate.translation.php -a ignore_unmodified -l $(lang)
+ @echo Unmodified keys ignored.
+
.PHONY: i18n-key-exists
i18n-key-exists: ## Check if a translation key exists
ifndef key
diff --git a/app/i18n/cz/gen.php b/app/i18n/cz/gen.php
index 6d96d02d1..cdebafd21 100644
--- a/app/i18n/cz/gen.php
+++ b/app/i18n/cz/gen.php
@@ -128,6 +128,7 @@ return array(
'cz' => 'Čeština', // TODO - Translation
'de' => 'Deutsch', // TODO - Translation
'en' => 'English', // TODO - Translation
+ 'en-us' => 'English (United States)',
'es' => 'Español', // TODO - Translation
'fr' => 'Français', // TODO - Translation
'he' => 'עברית', // TODO - Translation
diff --git a/app/i18n/de/gen.php b/app/i18n/de/gen.php
index edccdea5f..4de06df8a 100644
--- a/app/i18n/de/gen.php
+++ b/app/i18n/de/gen.php
@@ -128,6 +128,7 @@ return array(
'cz' => 'Čeština', // TODO - Translation
'de' => 'Deutsch', // TODO - Translation
'en' => 'English', // TODO - Translation
+ 'en-us' => 'English (United States)',
'es' => 'Español', // TODO - Translation
'fr' => 'Français', // TODO - Translation
'he' => 'עברית', // TODO - Translation
diff --git a/app/i18n/en-us/admin.php b/app/i18n/en-us/admin.php
new file mode 100644
index 000000000..00dc2726a
--- /dev/null
+++ b/app/i18n/en-us/admin.php
@@ -0,0 +1,210 @@
+<?php
+
+return array(
+ 'auth' => array(
+ 'allow_anonymous' => 'Allow anonymous reading of the default user\'s articles (%s)',
+ 'allow_anonymous_refresh' => 'Allow anonymous refresh of the articles',
+ 'api_enabled' => 'Allow <abbr>API</abbr> access <small>(required for mobile apps)</small>',
+ 'form' => 'Web form (traditional, requires JavaScript)',
+ 'http' => 'HTTP (for advanced users with HTTPS)',
+ 'none' => 'None (dangerous)',
+ 'title' => 'Authentication',
+ 'title_reset' => 'Authentication reset',
+ 'token' => 'Authentication token',
+ 'token_help' => 'Allows access to RSS output of the default user without authentication:',
+ 'type' => 'Authentication method',
+ 'unsafe_autologin' => 'Allow unsafe automatic login using the format: ',
+ ),
+ 'check_install' => array(
+ 'cache' => array(
+ 'nok' => 'Check permissions on <em>./data/cache</em> directory. HTTP server must have write permission.',
+ 'ok' => 'Permissions on the cache directory are good.',
+ ),
+ 'categories' => array(
+ 'nok' => 'Category table is improperly configured.',
+ 'ok' => 'Category table is okay.',
+ ),
+ 'connection' => array(
+ 'nok' => 'Connection to the database cannot be established.',
+ 'ok' => 'Connection to the database is okay.',
+ ),
+ 'ctype' => array(
+ 'nok' => 'Cannot find a required library for character type checking (php-ctype).',
+ 'ok' => 'You have the required library for character type checking (ctype).',
+ ),
+ 'curl' => array(
+ 'nok' => 'Cannot find the cURL library (php-curl package).',
+ 'ok' => 'You have the cURL library.',
+ ),
+ 'data' => array(
+ 'nok' => 'Check permissions on <em>./data</em> directory. HTTP server must have write permission.',
+ 'ok' => 'Permissions on the data directory are good.',
+ ),
+ 'database' => 'Database installation',
+ 'dom' => array(
+ 'nok' => 'Cannot find a required library to browse the DOM (php-xml package).',
+ 'ok' => 'You have the required library to browse the DOM.',
+ ),
+ 'entries' => array(
+ 'nok' => 'Entry table is improperly configured.',
+ 'ok' => 'Entry table is okay.',
+ ),
+ 'favicons' => array(
+ 'nok' => 'Check permissions on <em>./data/favicons</em> directory. HTTP server must have write permission.',
+ 'ok' => 'Permissions on the favicons directory are good.',
+ ),
+ 'feeds' => array(
+ 'nok' => 'Feed table is improperly configured.',
+ 'ok' => 'Feed table is okay.',
+ ),
+ 'fileinfo' => array(
+ 'nok' => 'Cannot find the PHP fileinfo library (fileinfo package).',
+ 'ok' => 'You have the fileinfo library.',
+ ),
+ 'files' => 'File installation',
+ 'json' => array(
+ 'nok' => 'Cannot find JSON (php-json package).',
+ 'ok' => 'You have the JSON extension.',
+ ),
+ 'mbstring' => array(
+ 'nok' => 'Cannot find the recommended mbstring library for Unicode.',
+ 'ok' => 'You have the recommended mbstring library for Unicode.',
+ ),
+ 'minz' => array(
+ 'nok' => 'Cannot find the Minz framework.',
+ 'ok' => 'You have the Minz framework.',
+ ),
+ 'pcre' => array(
+ 'nok' => 'Cannot find a required library for regular expressions (php-pcre).',
+ 'ok' => 'You have the required library for regular expressions (PCRE).',
+ ),
+ 'pdo' => array(
+ 'nok' => 'Cannot find PDO or one of the supported drivers (pdo_mysql, pdo_sqlite, pdo_pgsql).',
+ 'ok' => 'You have PDO and at least one of the supported drivers (pdo_mysql, pdo_sqlite, pdo_pgsql).',
+ ),
+ 'php' => array(
+ '_' => 'PHP installation',
+ 'nok' => 'Your PHP version is %s but FreshRSS requires at least version %s.',
+ 'ok' => 'Your PHP version (%s) is compatible with FreshRSS.',
+ ),
+ 'tables' => array(
+ 'nok' => 'There are one or more missing tables in the database.',
+ 'ok' => 'The appropriate tables exist in the database.',
+ ),
+ 'title' => 'Installation check',
+ 'tokens' => array(
+ 'nok' => 'Check permissions on <em>./data/tokens</em> directory. HTTP server must have write permission',
+ 'ok' => 'Permissions on the tokens directory are good.',
+ ),
+ 'users' => array(
+ 'nok' => 'Check permissions on <em>./data/users</em> directory. HTTP server must have write permission',
+ 'ok' => 'Permissions on the users directory are good.',
+ ),
+ 'zip' => array(
+ 'nok' => 'Cannot find the ZIP extension (php-zip package).',
+ 'ok' => 'You have the ZIP extension.',
+ ),
+ ),
+ 'extensions' => array(
+ 'author' => 'Author',
+ 'community' => 'Available community extensions',
+ 'description' => 'Description',
+ 'disabled' => 'Disabled',
+ 'empty_list' => 'There are no installed extensions',
+ 'enabled' => 'Enabled',
+ 'latest' => 'Installed',
+ 'name' => 'Name',
+ 'no_configure_view' => 'This extension cannot be configured.',
+ 'system' => array(
+ '_' => 'System extensions',
+ 'no_rights' => 'System extension (you do not have the required permissions)',
+ ),
+ 'title' => 'Extensions',
+ 'update' => 'Update available',
+ 'user' => 'User extensions',
+ 'version' => 'Version',
+ ),
+ 'stats' => array(
+ '_' => 'Statistics',
+ 'all_feeds' => 'All feeds',
+ 'category' => 'Category',
+ 'entry_count' => 'Entry count',
+ 'entry_per_category' => 'Entries per category',
+ 'entry_per_day' => 'Entries per day (last 30 days)',
+ 'entry_per_day_of_week' => 'Per day of week (average: %.2f messages)',
+ 'entry_per_hour' => 'Per hour (average: %.2f messages)',
+ 'entry_per_month' => 'Per month (average: %.2f messages)',
+ 'entry_repartition' => 'Entries repartition',
+ 'feed' => 'Feed',
+ 'feed_per_category' => 'Feeds per category',
+ 'idle' => 'Idle feeds',
+ 'main' => 'Main statistics',
+ 'main_stream' => 'Main stream',
+ 'menu' => array(
+ 'idle' => 'Idle feeds',
+ 'main' => 'Main statistics',
+ 'repartition' => 'Articles repartition',
+ ),
+ 'no_idle' => 'There are no idle feeds!',
+ 'number_entries' => '%d articles',
+ 'percent_of_total' => '%% of total',
+ 'repartition' => 'Articles repartition',
+ 'status_favorites' => 'Favorites',
+ 'status_read' => 'Read',
+ 'status_total' => 'Total',
+ 'status_unread' => 'Unread',
+ 'title' => 'Statistics',
+ 'top_feed' => 'Top ten feeds',
+ ),
+ 'system' => array(
+ '_' => 'System configuration',
+ 'auto-update-url' => 'Auto-update server URL',
+ 'cookie-duration' => array(
+ 'help' => 'in seconds',
+ 'number' => 'Duration to keep logged in',
+ ),
+ 'force_email_validation' => 'Force email address validation',
+ 'instance-name' => 'Instance name',
+ 'max-categories' => 'Max number of categories per user',
+ 'max-feeds' => 'Max number of feeds per user',
+ 'registration' => array(
+ 'help' => '0 means that there is no account limit',
+ 'number' => 'Max number of accounts',
+ ),
+ ),
+ 'update' => array(
+ '_' => 'Update system',
+ 'apply' => 'Apply',
+ 'check' => 'Check for new updates',
+ 'current_version' => 'Your current version of FreshRSS is %s.',
+ 'last' => 'Last verification: %s',
+ 'none' => 'No update to apply',
+ 'title' => 'Update system',
+ ),
+ 'user' => array(
+ 'admin' => 'Administrator',
+ 'article_count' => 'Articles',
+ 'articles_and_size' => '%s articles (%s)',
+ 'back_to_manage' => '← Return to user list',
+ 'create' => 'Create new user',
+ 'database_size' => 'Database size',
+ 'delete_users' => 'Delete user',
+ 'email' => 'Email address',
+ 'enabled' => 'Enabled',
+ 'feed_count' => 'Feeds',
+ 'is_admin' => 'Is admin',
+ 'language' => 'Language',
+ 'last_user_activity' => 'Last user activity',
+ 'list' => 'User list',
+ 'number' => 'There is %d account created',
+ 'numbers' => 'There are %d accounts created',
+ 'password_form' => 'Password<br /><small>(for the Web-form login method)</small>',
+ 'password_format' => 'At least 7 characters',
+ 'selected' => 'Selected user',
+ 'title' => 'Manage users',
+ 'update_users' => 'Update user',
+ 'user_list' => 'List of users',
+ 'username' => 'Username',
+ 'users' => 'Users',
+ ),
+);
diff --git a/app/i18n/en-us/conf.php b/app/i18n/en-us/conf.php
new file mode 100644
index 000000000..a5a5cb2f9
--- /dev/null
+++ b/app/i18n/en-us/conf.php
@@ -0,0 +1,202 @@
+<?php
+
+return array(
+ 'archiving' => array(
+ '_' => 'Archiving',
+ 'delete_after' => 'Remove articles after',
+ 'exception' => 'Purge exception',
+ 'help' => 'More options are available in the individual feed\'s settings',
+ 'keep_favourites' => 'Never delete favorites',
+ 'keep_labels' => 'Never delete labels',
+ 'keep_max' => 'Maximum number of articles to keep',
+ 'keep_min_by_feed' => 'Minimum number of articles to keep per feed',
+ 'keep_period' => 'Maximum age of articles to keep',
+ 'keep_unreads' => 'Never delete unread articles',
+ 'maintenance' => 'Maintenance',
+ 'optimize' => 'Optimize database',
+ 'optimize_help' => 'Run occasionally to reduce the size of the database',
+ 'policy' => 'Purge policy',
+ 'policy_warning' => 'If no purge policy is selected, every article will be kept.',
+ 'purge_now' => 'Purge now',
+ 'title' => 'Archiving',
+ 'ttl' => 'Do not automatically refresh more often than',
+ ),
+ 'display' => array(
+ '_' => 'Display',
+ 'icon' => array(
+ 'bottom_line' => 'Bottom line',
+ 'display_authors' => 'Authors',
+ 'entry' => 'Article icons',
+ 'publication_date' => 'Date of publication',
+ 'related_tags' => 'Article tags',
+ 'sharing' => 'Sharing',
+ 'top_line' => 'Top line',
+ ),
+ 'language' => 'Language',
+ 'notif_html5' => array(
+ 'seconds' => 'seconds (0 means no timeout)',
+ 'timeout' => 'HTML5 notification timeout',
+ ),
+ 'show_nav_buttons' => 'Show the navigation buttons',
+ 'theme' => 'Theme',
+ 'title' => 'Display',
+ 'width' => array(
+ 'content' => 'Content width',
+ 'large' => 'Wide',
+ 'medium' => 'Medium',
+ 'no_limit' => 'Full Width',
+ 'thin' => 'Narrow',
+ ),
+ ),
+ 'profile' => array(
+ '_' => 'Profile management',
+ 'api' => 'API management',
+ 'delete' => array(
+ '_' => 'Account deletion',
+ 'warn' => 'Your account and all related data will be deleted.',
+ ),
+ 'email' => 'Email address',
+ 'password_api' => 'API password<br /><small>(e.g., for mobile apps)</small>',
+ 'password_form' => 'Password<br /><small>(for the Web-form login method)</small>',
+ 'password_format' => 'At least 7 characters',
+ 'title' => 'Profile',
+ ),
+ 'query' => array(
+ '_' => 'User queries',
+ 'deprecated' => 'This query is no longer valid. The referenced category or feed has been deleted.',
+ 'display' => 'Display user query results',
+ 'filter' => 'Filter applied:',
+ 'get_all' => 'Display all articles',
+ 'get_category' => 'Display "%s" category',
+ 'get_favorite' => 'Display favorite articles',
+ 'get_feed' => 'Display "%s" feed',
+ 'no_filter' => 'No filter',
+ 'none' => 'You haven’t created any user queries yet.',
+ 'number' => 'Query n°%d',
+ 'order_asc' => 'Display oldest articles first',
+ 'order_desc' => 'Display newest articles first',
+ 'remove' => 'Remove user query',
+ 'search' => 'Search for "%s"',
+ 'state_0' => 'Display all articles',
+ 'state_1' => 'Display read articles',
+ 'state_2' => 'Display unread articles',
+ 'state_3' => 'Display all articles',
+ 'state_4' => 'Display favorite articles',
+ 'state_5' => 'Display read favorite articles',
+ 'state_6' => 'Display unread favorite articles',
+ 'state_7' => 'Display favorite articles',
+ 'state_8' => 'Display not favorite articles',
+ 'state_9' => 'Display read not favorite articles',
+ 'state_10' => 'Display unread not favorite articles',
+ 'state_11' => 'Display not favorite articles',
+ 'state_12' => 'Display all articles',
+ 'state_13' => 'Display read articles',
+ 'state_14' => 'Display unread articles',
+ 'state_15' => 'Display all articles',
+ 'title' => 'User queries',
+ ),
+ 'reading' => array(
+ '_' => 'Reading',
+ 'after_onread' => 'After “mark all as read”,',
+ 'always_show_favorites' => 'Show all articles in favorites by default',
+ 'articles_per_page' => 'Number of articles per page',
+ 'auto_load_more' => 'Load more articles at the bottom of the page',
+ 'auto_remove_article' => 'Hide articles after reading',
+ 'confirm_enabled' => 'Display a confirmation dialog on “mark all as read” actions',
+ 'display_articles_unfolded' => 'Show articles unfolded by default',
+ 'display_categories_unfolded' => 'Categories to unfold',
+ 'hide_read_feeds' => 'Hide categories & feeds with no unread articles (does not work with “Show all articles” configuration)',
+ 'img_with_lazyload' => 'Use "lazy load" mode to load pictures',
+ 'jump_next' => 'jump to next unread sibling (feed or category)',
+ 'mark_updated_article_unread' => 'Mark updated articles as unread',
+ 'number_divided_when_reader' => 'Divide by 2 in the reading view.',
+ 'read' => array(
+ 'article_open_on_website' => 'when the article is opened on its original website',
+ 'article_viewed' => 'when the article is viewed',
+ 'scroll' => 'while scrolling',
+ 'upon_reception' => 'upon receiving the article',
+ 'when' => 'Mark an article as read…',
+ ),
+ 'show' => array(
+ '_' => 'Articles to display',
+ 'active_category' => 'Active category',
+ 'adaptive' => 'Adjust showing',
+ 'all_articles' => 'Show all articles',
+ 'all_categories' => 'All categories',
+ 'no_category' => 'No category',
+ 'unread' => 'Show only unread',
+ ),
+ 'sides_close_article' => 'Clicking outside of article text area closes the article',
+ 'sort' => array(
+ '_' => 'Sort order',
+ 'newer_first' => 'Newest first',
+ 'older_first' => 'Oldest first',
+ ),
+ 'sticky_post' => 'Stick the article to the top when opened',
+ 'title' => 'Reading',
+ 'view' => array(
+ 'default' => 'Default view',
+ 'global' => 'Global view',
+ 'normal' => 'Normal view',
+ 'reader' => 'Reading view',
+ ),
+ ),
+ 'sharing' => array(
+ '_' => 'Sharing',
+ 'add' => 'Add a sharing method',
+ 'blogotext' => 'Blogotext',
+ 'diaspora' => 'Diaspora*',
+ 'email' => 'Email',
+ 'facebook' => 'Facebook',
+ 'more_information' => 'More information',
+ 'print' => 'Print',
+ 'remove' => 'Remove sharing method',
+ 'shaarli' => 'Shaarli',
+ 'share_name' => 'Share name to display',
+ 'share_url' => 'Share URL to use',
+ 'title' => 'Sharing',
+ 'twitter' => 'Twitter',
+ 'wallabag' => 'wallabag',
+ ),
+ 'shortcut' => array(
+ '_' => 'Shortcuts',
+ 'article_action' => 'Article actions',
+ 'auto_share' => 'Share',
+ 'auto_share_help' => 'If there is only one sharing mode, it is used. Otherwise, modes are accessible by their number.',
+ 'close_dropdown' => 'Close menus',
+ 'collapse_article' => 'Collapse',
+ 'first_article' => 'Open the first article',
+ 'focus_search' => 'Access search box',
+ 'global_view' => 'Switch to global view',
+ 'help' => 'Display documentation',
+ 'javascript' => 'JavaScript must be enabled in order to use shortcuts',
+ 'last_article' => 'Open the last article',
+ 'load_more' => 'Load more articles',
+ 'mark_favorite' => 'Toggle favorite',
+ 'mark_read' => 'Toggle read',
+ 'navigation' => 'Navigation',
+ 'navigation_help' => 'With the <kbd>⇧ Shift</kbd> modifier, navigation shortcuts apply on feeds.<br/>With the <kbd>Alt ⎇</kbd> modifier, navigation shortcuts apply on categories.',
+ 'navigation_no_mod_help' => 'The following navigation shortcuts do not support modifiers.',
+ 'next_article' => 'Open the next article',
+ 'normal_view' => 'Switch to normal view',
+ 'other_action' => 'Other actions',
+ 'previous_article' => 'Open the previous article',
+ 'reading_view' => 'Switch to reading view',
+ 'rss_view' => 'Open RSS view in a new tab',
+ 'see_on_website' => 'See on original website',
+ 'shift_for_all_read' => '+ <kbd>Alt ⎇</kbd> to mark previous articles as read<br />+ <kbd>⇧ Shift</kbd> to mark all articles as read',
+ 'skip_next_article' => 'Focus next without opening',
+ 'skip_previous_article' => 'Focus previous without opening',
+ 'title' => 'Shortcuts',
+ 'toggle_media' => 'Play/pause media',
+ 'user_filter' => 'Access user queries',
+ 'user_filter_help' => 'If there is only one user query, it is used. Otherwise, queries are accessible by their number.',
+ 'views' => 'Views',
+ ),
+ 'user' => array(
+ 'articles_and_size' => '%s articles (%s)',
+ 'current' => 'Current user',
+ 'is_admin' => 'is administrator',
+ 'users' => 'Users',
+ ),
+);
diff --git a/app/i18n/en-us/feedback.php b/app/i18n/en-us/feedback.php
new file mode 100644
index 000000000..6a0efd902
--- /dev/null
+++ b/app/i18n/en-us/feedback.php
@@ -0,0 +1,134 @@
+<?php
+
+return array(
+ 'access' => array(
+ 'denied' => 'You don’t have permission to access this page',
+ 'not_found' => 'You are looking for a page that doesn’t exist',
+ ),
+ 'admin' => array(
+ 'optimization_complete' => 'Optimization complete',
+ ),
+ 'api' => array(
+ 'password' => array(
+ 'failed' => 'Your password cannot be modified',
+ 'updated' => 'Your password has been modified',
+ ),
+ ),
+ 'auth' => array(
+ 'form' => array(
+ 'not_set' => 'A problem occurred during authentication system configuration. Please try again later.',
+ 'set' => 'Form is now your default authentication system.',
+ ),
+ 'login' => array(
+ 'invalid' => 'Login is invalid',
+ 'success' => 'You are connected',
+ ),
+ 'logout' => array(
+ 'success' => 'You are disconnected',
+ ),
+ 'no_password_set' => 'Administrator password hasn’t been set. This feature isn’t available.',
+ ),
+ 'conf' => array(
+ 'error' => 'An error occurred while saving configuration',
+ 'query_created' => 'Query "%s" has been created.',
+ 'shortcuts_updated' => 'Shortcuts have been updated',
+ 'updated' => 'Configuration has been updated',
+ ),
+ 'extensions' => array(
+ 'already_enabled' => '%s is already enabled',
+ 'cannot_remove' => '%s cannot be removed',
+ 'disable' => array(
+ 'ko' => '%s cannot be disabled. <a href="%s">Check FreshRSS logs</a> for details.',
+ 'ok' => '%s is now disabled',
+ ),
+ 'enable' => array(
+ 'ko' => '%s cannot be enabled. <a href="%s">Check FreshRSS logs</a> for details.',
+ 'ok' => '%s is now enabled',
+ ),
+ 'no_access' => 'You have no access on %s',
+ 'not_enabled' => '%s is not enabled',
+ 'not_found' => '%s does not exist',
+ 'removed' => '%s removed',
+ ),
+ 'import_export' => array(
+ 'export_no_zip_extension' => 'The ZIP extension is not present on your server. Please try to export files one by one.',
+ 'feeds_imported' => 'Your feeds have been imported and will now be updated',
+ 'feeds_imported_with_errors' => 'Your feeds have been imported, but some errors occurred',
+ 'file_cannot_be_uploaded' => 'File cannot be uploaded!',
+ 'no_zip_extension' => 'The ZIP extension is not present on your server.',
+ 'zip_error' => 'An error occurred during ZIP import.',
+ ),
+ 'profile' => array(
+ 'error' => 'Your profile cannot be modified',
+ 'updated' => 'Your profile has been modified',
+ ),
+ 'sub' => array(
+ 'actualize' => 'Updating',
+ 'articles' => array(
+ 'marked_read' => 'The selected articles have been marked as read.',
+ 'marked_unread' => 'The articles have been marked as unread.',
+ ),
+ 'category' => array(
+ 'created' => 'Category %s has been created.',
+ 'deleted' => 'Category has been deleted.',
+ 'emptied' => 'Category has been emptied',
+ 'error' => 'Category cannot be updated',
+ 'name_exists' => 'Category name already exists.',
+ 'no_id' => 'You must specify the id of the category.',
+ 'no_name' => 'Category name cannot be empty.',
+ 'not_delete_default' => 'You cannot delete the default category!',
+ 'not_exist' => 'The category does not exist!',
+ 'over_max' => 'You have reached your limit of categories (%d)',
+ 'updated' => 'Category has been updated.',
+ ),
+ 'feed' => array(
+ 'actualized' => '<em>%s</em> has been updated',
+ 'actualizeds' => 'RSS feeds have been updated',
+ 'added' => 'RSS feed <em>%s</em> has been added',
+ 'already_subscribed' => 'You have already subscribed to <em>%s</em>',
+ 'cache_cleared' => '<em>%s</em> cache has been cleared',
+ 'deleted' => 'Feed has been deleted',
+ 'error' => 'Feed cannot be updated',
+ 'internal_problem' => 'The newsfeed could not be added. <a href="%s">Check FreshRSS logs</a> for details. You can try force adding by appending <code>#force_feed</code> to the URL.',
+ 'invalid_url' => 'URL <em>%s</em> is invalid',
+ 'n_actualized' => '%d feeds have been updated',
+ 'n_entries_deleted' => '%d articles have been deleted',
+ 'no_refresh' => 'There are no feeds to refresh',
+ 'not_added' => '<em>%s</em> could not be added',
+ 'not_found' => 'Feed cannot be found',
+ 'over_max' => 'You have reached your limit of feeds (%d)',
+ 'reloaded' => '<em>%s</em> has been reloaded',
+ 'selector_preview' => array(
+ 'http_error' => 'Failed to load website content.',
+ 'no_entries' => 'There are no articles in this feed. You need at least one article to create a preview.',
+ 'no_feed' => 'Internal error (feed cannot be found).',
+ 'no_result' => 'The selector didn\'t match anything. As a fallback the original feed text will be displayed instead.',
+ 'selector_empty' => 'The selector is empty. You need to define one to create a preview.',
+ ),
+ 'updated' => 'Feed has been updated',
+ ),
+ 'purge_completed' => 'Purge completed (%d articles deleted)',
+ ),
+ 'update' => array(
+ 'can_apply' => 'FreshRSS will now be updated to the <strong>version %s</strong>.',
+ 'error' => 'The update process has encountered an error: %s',
+ 'file_is_nok' => 'New <strong>version %s</strong> available, but check permissions on <em>%s</em> directory. HTTP server must have have write permission',
+ 'finished' => 'Update complete!',
+ 'none' => 'No update to apply',
+ 'server_not_found' => 'Update server cannot be found. [%s]',
+ ),
+ 'user' => array(
+ 'created' => array(
+ '_' => 'User %s has been created',
+ 'error' => 'User %s cannot be created',
+ ),
+ 'deleted' => array(
+ '_' => 'User %s has been deleted',
+ 'error' => 'User %s cannot be deleted',
+ ),
+ 'updated' => array(
+ '_' => 'User %s has been updated',
+ 'error' => 'User %s has not been updated',
+ ),
+ ),
+);
diff --git a/app/i18n/en-us/gen.php b/app/i18n/en-us/gen.php
new file mode 100644
index 000000000..efc920d43
--- /dev/null
+++ b/app/i18n/en-us/gen.php
@@ -0,0 +1,215 @@
+<?php
+
+return array(
+ 'action' => array(
+ 'actualize' => 'Actualize',
+ 'add' => 'Add',
+ 'back' => '← Go back',
+ 'back_to_rss_feeds' => '← Go back to your RSS feeds',
+ 'cancel' => 'Cancel',
+ 'create' => 'Create',
+ 'demote' => 'Demote',
+ 'disable' => 'Disable',
+ 'empty' => 'Empty',
+ 'enable' => 'Enable',
+ 'export' => 'Export',
+ 'filter' => 'Filter',
+ 'import' => 'Import',
+ 'manage' => 'Manage',
+ 'mark_favorite' => 'Mark as favorite',
+ 'mark_read' => 'Mark as read',
+ 'promote' => 'Promote',
+ 'purge' => 'Purge',
+ 'remove' => 'Remove',
+ 'see_website' => 'See website',
+ 'submit' => 'Submit',
+ 'truncate' => 'Delete all articles',
+ 'update' => 'Update',
+ ),
+ 'auth' => array(
+ 'accept_tos' => 'I accept the <a href="%s">Terms of Service</a>.',
+ 'email' => 'Email address',
+ 'keep_logged_in' => 'Keep me logged in <small>(%s days)</small>',
+ 'login' => 'Login',
+ 'logout' => 'Logout',
+ 'password' => array(
+ '_' => 'Password',
+ 'format' => '<small>At least 7 characters</small>',
+ ),
+ 'registration' => array(
+ '_' => 'New account',
+ 'ask' => 'Create an account?',
+ 'title' => 'Account creation',
+ ),
+ 'reset' => 'Authentication reset',
+ 'username' => array(
+ '_' => 'Username',
+ 'admin' => 'Administrator username',
+ 'format' => '<small>Maximum 16 alphanumeric characters</small>',
+ ),
+ ),
+ 'date' => array(
+ 'Apr' => '\\A\\p\\r\\i\\l',
+ 'Aug' => '\\A\\u\\g\\u\\s\\t',
+ 'Dec' => '\\D\\e\\c\\e\\m\\b\\e\\r',
+ 'Feb' => '\\F\\e\\b\\r\\u\\a\\r\\y',
+ 'Jan' => '\\J\\a\\n\\u\\a\\r\\y',
+ 'Jul' => '\\J\\u\\l\\y',
+ 'Jun' => '\\J\\u\\n\\e',
+ 'Mar' => '\\M\\a\\r\\c\\h',
+ 'May' => '\\M\\a\\y',
+ 'Nov' => '\\N\\o\\v\\e\\m\\b\\e\\r',
+ 'Oct' => '\\O\\c\\t\\o\\b\\e\\r',
+ 'Sep' => '\\S\\e\\p\\t\\e\\m\\b\\e\\r',
+ 'apr' => 'Apr.',
+ 'april' => 'April',
+ 'aug' => 'Aug.',
+ 'august' => 'August',
+ 'before_yesterday' => 'Before yesterday',
+ 'dec' => 'Dec.',
+ 'december' => 'December',
+ 'feb' => 'Feb.',
+ 'february' => 'February',
+ 'format_date' => '%s j\\<\\s\\u\\p\\>S\\<\\/\\s\\u\\p\\> Y',
+ 'format_date_hour' => '%s j\\<\\s\\u\\p\\>S\\<\\/\\s\\u\\p\\> Y \\a\\t H\\:i',
+ 'fri' => 'Fri',
+ 'jan' => 'Jan.',
+ 'january' => 'January',
+ 'jul' => 'July',
+ 'july' => 'July',
+ 'jun' => 'June',
+ 'june' => 'June',
+ 'last_2_year' => 'Last two years',
+ 'last_3_month' => 'Last three months',
+ 'last_3_year' => 'Last three years',
+ 'last_5_year' => 'Last five years',
+ 'last_6_month' => 'Last six months',
+ 'last_month' => 'Last month',
+ 'last_week' => 'Last week',
+ 'last_year' => 'Last year',
+ 'mar' => 'Mar.',
+ 'march' => 'March',
+ 'may' => 'May',
+ 'may_' => 'May',
+ 'mon' => 'Mon',
+ 'month' => 'months',
+ 'nov' => 'Nov.',
+ 'november' => 'November',
+ 'oct' => 'Oct.',
+ 'october' => 'October',
+ 'sat' => 'Sat',
+ 'sep' => 'Sept.',
+ 'september' => 'September',
+ 'sun' => 'Sun',
+ 'thu' => 'Thu',
+ 'today' => 'Today',
+ 'tue' => 'Tue',
+ 'wed' => 'Wed',
+ 'yesterday' => 'Yesterday',
+ ),
+ 'dir' => 'ltr',
+ 'freshrss' => array(
+ '_' => 'FreshRSS',
+ 'about' => 'About FreshRSS',
+ ),
+ 'js' => array(
+ 'category_empty' => 'Empty category',
+ 'confirm_action' => 'Are you sure you want to perform this action? It cannot be canceled!',
+ 'confirm_action_feed_cat' => 'Are you sure you want to perform this action? You will lose related favorites and user queries. It cannot be canceled!',
+ 'feedback' => array(
+ 'body_new_articles' => 'There are %%d new articles to read on FreshRSS.',
+ 'request_failed' => 'A request has failed, it may have been caused by internet connection problems.',
+ 'title_new_articles' => 'FreshRSS: new articles!',
+ ),
+ 'new_article' => 'There are new articles available, click to refresh the page.',
+ 'should_be_activated' => 'JavaScript must be enabled',
+ ),
+ 'lang' => array(
+ 'cz' => 'Čeština',
+ 'de' => 'Deutsch',
+ 'en' => 'English',
+ 'en-us' => 'English (United States)',
+ 'es' => 'Español',
+ 'fr' => 'Français',
+ 'he' => 'עברית',
+ 'it' => 'Italiano',
+ 'kr' => '한국어',
+ 'nl' => 'Nederlands',
+ 'oc' => 'Occitan',
+ 'pt-br' => 'Português (Brasil)',
+ 'ru' => 'Русский',
+ 'sk' => 'Slovenčina',
+ 'tr' => 'Türkçe',
+ 'zh-cn' => '简体中文',
+ ),
+ 'menu' => array(
+ 'about' => 'About',
+ 'admin' => 'Administration',
+ 'archiving' => 'Archiving',
+ 'authentication' => 'Authentication',
+ 'check_install' => 'Installation check',
+ 'configuration' => 'Configuration',
+ 'display' => 'Display',
+ 'extensions' => 'Extensions',
+ 'logs' => 'Logs',
+ 'queries' => 'User queries',
+ 'reading' => 'Reading',
+ 'search' => 'Search words or #tags',
+ 'sharing' => 'Sharing',
+ 'shortcuts' => 'Shortcuts',
+ 'stats' => 'Statistics',
+ 'system' => 'System configuration',
+ 'update' => 'Update',
+ 'user_management' => 'Manage users',
+ 'user_profile' => 'Profile',
+ ),
+ 'pagination' => array(
+ 'first' => 'First',
+ 'last' => 'Last',
+ 'load_more' => 'Load more articles',
+ 'mark_all_read' => 'Mark all as read',
+ 'next' => 'Next',
+ 'nothing_to_load' => 'There are no more articles',
+ 'previous' => 'Previous',
+ ),
+ 'period' => array(
+ 'days' => 'days',
+ 'hours' => 'hours',
+ 'months' => 'months',
+ 'weeks' => 'weeks',
+ 'years' => 'years',
+ ),
+ 'share' => array(
+ 'Known' => 'Known based sites',
+ 'blogotext' => 'Blogotext',
+ 'diaspora' => 'Diaspora*',
+ 'email' => 'Email',
+ 'facebook' => 'Facebook',
+ 'gnusocial' => 'GNU social',
+ 'jdh' => 'Journal du hacker',
+ 'lemmy' => 'Lemmy',
+ 'linkedin' => 'LinkedIn',
+ 'mastodon' => 'Mastodon',
+ 'movim' => 'Movim',
+ 'pinboard' => 'Pinboard',
+ 'pocket' => 'Pocket',
+ 'print' => 'Print',
+ 'shaarli' => 'Shaarli',
+ 'twitter' => 'Twitter',
+ 'wallabag' => 'wallabag v1',
+ 'wallabagv2' => 'wallabag v2',
+ ),
+ 'short' => array(
+ 'attention' => 'Warning!',
+ 'blank_to_disable' => 'Leave blank to disable',
+ 'by_author' => 'By:',
+ 'by_default' => 'By default',
+ 'damn' => 'Blast!',
+ 'default_category' => 'Uncategorized',
+ 'no' => 'No',
+ 'not_applicable' => 'Not available',
+ 'ok' => 'Okay!',
+ 'or' => 'or',
+ 'yes' => 'Yes',
+ ),
+);
diff --git a/app/i18n/en-us/index.php b/app/i18n/en-us/index.php
new file mode 100644
index 000000000..250e5654d
--- /dev/null
+++ b/app/i18n/en-us/index.php
@@ -0,0 +1,66 @@
+<?php
+
+return array(
+ 'about' => array(
+ '_' => 'About',
+ 'agpl3' => '<a href="https://www.gnu.org/licenses/agpl-3.0.html">AGPL 3</a>',
+ 'bugs_reports' => 'Bug reports',
+ 'credits' => 'Credits',
+ 'credits_content' => 'Some design elements come from <a href="http://twitter.github.io/bootstrap/">Bootstrap</a> although FreshRSS doesn’t use this framework. <a href="https://git.gnome.org/browse/gnome-icon-theme-symbolic">Icons</a> come from <a href="https://www.gnome.org/">GNOME project</a>. <em>Open Sans</em> font police has been created by <a href="https://fonts.google.com/specimen/Open+Sans">Steve Matteson</a>. FreshRSS is based on <a href="https://github.com/marienfressinaud/MINZ">Minz</a>, a PHP framework.',
+ 'freshrss_description' => 'FreshRSS is a RSS feeds aggregator to self-host like <a href="http://tontof.net/kriss/feed/">Kriss Feed</a> or <a href="https://github.com/LeedRSS/Leed">Leed</a>. It is light and easy to take in hand while being powerful and configurable tool.',
+ 'github' => '<a href="https://github.com/FreshRSS/FreshRSS/issues">on Github</a>',
+ 'license' => 'License',
+ 'project_website' => 'Project website',
+ 'title' => 'About',
+ 'version' => 'Version',
+ 'website' => 'Website',
+ ),
+ 'feed' => array(
+ 'add' => 'Please add some feeds.',
+ 'empty' => 'There are no articles to show.',
+ 'rss_of' => 'RSS feed of %s',
+ 'title' => 'Your RSS feeds',
+ 'title_fav' => 'Your favorites',
+ 'title_global' => 'Global view',
+ ),
+ 'log' => array(
+ '_' => 'Logs',
+ 'clear' => 'Clear the logs',
+ 'empty' => 'Log file is empty',
+ 'title' => 'Logs',
+ ),
+ 'menu' => array(
+ 'about' => 'About FreshRSS',
+ 'add_query' => 'Add a query',
+ 'before_one_day' => 'Before one day',
+ 'before_one_week' => 'Before one week',
+ 'favorites' => 'Favorites (%s)',
+ 'global_view' => 'Global view',
+ 'main_stream' => 'Main stream',
+ 'mark_all_read' => 'Mark all as read',
+ 'mark_cat_read' => 'Mark category as read',
+ 'mark_feed_read' => 'Mark feed as read',
+ 'mark_selection_unread' => 'Mark selection as unread',
+ 'newer_first' => 'Newer first',
+ 'non-starred' => 'Show non-favorites',
+ 'normal_view' => 'Normal view',
+ 'older_first' => 'Oldest first',
+ 'queries' => 'User queries',
+ 'read' => 'Show read',
+ 'reader_view' => 'Reading view',
+ 'rss_view' => 'RSS feed',
+ 'search_short' => 'Search',
+ 'starred' => 'Show favorites',
+ 'stats' => 'Statistics',
+ 'subscription' => 'Subscription management',
+ 'tags' => 'My labels',
+ 'unread' => 'Show unread',
+ ),
+ 'share' => 'Share',
+ 'tag' => array(
+ 'related' => 'Article tags',
+ ),
+ 'tos' => array(
+ 'title' => 'Terms of Service',
+ ),
+);
diff --git a/app/i18n/en-us/install.php b/app/i18n/en-us/install.php
new file mode 100644
index 000000000..048774a1e
--- /dev/null
+++ b/app/i18n/en-us/install.php
@@ -0,0 +1,123 @@
+<?php
+
+return array(
+ 'action' => array(
+ 'finish' => 'Complete installation',
+ 'fix_errors_before' => 'Please all fix errors before continuing to the next step.',
+ 'keep_install' => 'Keep previous configuration',
+ 'next_step' => 'Go to the next step',
+ 'reinstall' => 'Reinstall FreshRSS',
+ ),
+ 'auth' => array(
+ 'form' => 'Web form (traditional, requires JavaScript)',
+ 'http' => 'HTTP (for advanced users with HTTPS)',
+ 'none' => 'None (dangerous)',
+ 'password_form' => 'Password<br /><small>(for the Web-form login method)</small>',
+ 'password_format' => 'At least 7 characters',
+ 'type' => 'Authentication method',
+ ),
+ 'bdd' => array(
+ '_' => 'Database',
+ 'conf' => array(
+ '_' => 'Database configuration',
+ 'ko' => 'Verify your database configuration.',
+ 'ok' => 'Database configuration has been saved.',
+ ),
+ 'host' => 'Host',
+ 'password' => 'Database password',
+ 'prefix' => 'Table prefix',
+ 'type' => 'Type of database',
+ 'username' => 'Database username',
+ ),
+ 'check' => array(
+ '_' => 'Checks',
+ 'already_installed' => 'We have detected that FreshRSS is already installed!',
+ 'cache' => array(
+ 'nok' => 'Check permissions on the <em>./data/cache</em> directory. The HTTP server must have write permission.',
+ 'ok' => 'Permissions on the cache directory are good.',
+ ),
+ 'ctype' => array(
+ 'nok' => 'Cannot find the required library for character type checking (php-ctype).',
+ 'ok' => 'You have the required library for character type checking (ctype).',
+ ),
+ 'curl' => array(
+ 'nok' => 'Cannot find the cURL library (php-curl package).',
+ 'ok' => 'You have the cURL library.',
+ ),
+ 'data' => array(
+ 'nok' => 'Check permissions on the <em>./data</em> directory. The HTTP server must have write permission.',
+ 'ok' => 'Permissions on the data directory are good.',
+ ),
+ 'dom' => array(
+ 'nok' => 'Cannot find the required library to browse the DOM.',
+ 'ok' => 'You have the required library to browse the DOM.',
+ ),
+ 'favicons' => array(
+ 'nok' => 'Check permissions on the <em>./data/favicons</em> directory. The HTTP server must have write permission.',
+ 'ok' => 'Permissions on the favicons directory are good.',
+ ),
+ 'fileinfo' => array(
+ 'nok' => 'Cannot find the PHP fileinfo library (fileinfo package).',
+ 'ok' => 'You have the fileinfo library.',
+ ),
+ 'http_referer' => array(
+ 'nok' => 'Please check that you are not altering your HTTP REFERER.',
+ 'ok' => 'Your HTTP REFERER is known and corresponds to your server.',
+ ),
+ 'json' => array(
+ 'nok' => 'Cannot find the recommended library to parse JSON.',
+ 'ok' => 'You have the recommended library to parse JSON.',
+ ),
+ 'mbstring' => array(
+ 'nok' => 'Cannot find the recommended library mbstring for Unicode.',
+ 'ok' => 'You have the recommended library mbstring for Unicode.',
+ ),
+ 'minz' => array(
+ 'nok' => 'Cannot find the Minz framework.',
+ 'ok' => 'You have the Minz framework.',
+ ),
+ 'pcre' => array(
+ 'nok' => 'Cannot find the required library for regular expressions (php-pcre).',
+ 'ok' => 'You have the required library for regular expressions (PCRE).',
+ ),
+ 'pdo' => array(
+ 'nok' => 'Cannot find PDO or one of the supported drivers (pdo_mysql, pdo_sqlite, pdo_pgsql).',
+ 'ok' => 'You have PDO and at least one of the supported drivers (pdo_mysql, pdo_sqlite, pdo_pgsql).',
+ ),
+ 'php' => array(
+ 'nok' => 'Your PHP version is %s, but FreshRSS requires at least version %s.',
+ 'ok' => 'Your PHP version, %s, is compatible with FreshRSS.',
+ ),
+ 'users' => array(
+ 'nok' => 'Check permissions on the <em>./data/users</em> directory. The HTTP server must have write permissions',
+ 'ok' => 'Permissions on the users directory are good.',
+ ),
+ 'xml' => array(
+ 'nok' => 'Cannot find the required library to parse XML.',
+ 'ok' => 'You have the required library to parse XML.',
+ ),
+ ),
+ 'conf' => array(
+ '_' => 'General configuration',
+ 'ok' => 'General configuration has been saved.',
+ ),
+ 'congratulations' => 'Congratulations!',
+ 'default_user' => 'Username of the default user <small>(maximum 16 alphanumeric characters)</small>',
+ 'delete_articles_after' => 'Remove articles after',
+ 'fix_errors_before' => 'Please fix errors before continuing to the next step.',
+ 'javascript_is_better' => 'FreshRSS is more pleasant with JavaScript enabled',
+ 'js' => array(
+ 'confirm_reinstall' => 'You will lose your previous configuration by reinstalling FreshRSS. Are you sure you want to continue?',
+ ),
+ 'language' => array(
+ '_' => 'Language',
+ 'choose' => 'Choose a language for FreshRSS',
+ 'defined' => 'Language has been defined.',
+ ),
+ 'not_deleted' => 'Something went wrong; you must delete the file <em>%s</em> manually.',
+ 'ok' => 'The installation process was successful.',
+ 'step' => 'step %d',
+ 'steps' => 'Steps',
+ 'this_is_the_end' => 'This is the end',
+ 'title' => 'Installation · FreshRSS',
+);
diff --git a/app/i18n/en-us/sub.php b/app/i18n/en-us/sub.php
new file mode 100644
index 000000000..08ec8bbbc
--- /dev/null
+++ b/app/i18n/en-us/sub.php
@@ -0,0 +1,120 @@
+<?php
+
+return array(
+ 'add' => 'Feed and category creation has been moved <a href=\'%s\'>here</a>. It is also accessible from the menu on the left and from the ✚ icon available on the main page.',
+ 'api' => array(
+ 'documentation' => 'Copy the following URL to use it within an external tool.',
+ 'title' => 'API',
+ ),
+ 'bookmarklet' => array(
+ 'documentation' => 'Drag this button to your bookmarks toolbar or right-click it and choose "Bookmark This Link". Then click the "Subscribe" button in any page you want to subscribe to.',
+ 'label' => 'Subscribe',
+ 'title' => 'Bookmarklet',
+ ),
+ 'category' => array(
+ '_' => 'Category',
+ 'add' => 'Add a category',
+ 'archiving' => 'Archiving',
+ 'empty' => 'Empty category',
+ 'information' => 'Information',
+ 'position' => 'Display position',
+ 'position_help' => 'To control category sort order',
+ 'title' => 'Title',
+ ),
+ 'feed' => array(
+ 'add' => 'Add a RSS feed',
+ 'advanced' => 'Advanced',
+ 'archiving' => 'Archiving',
+ 'auth' => array(
+ 'configuration' => 'Login',
+ 'help' => 'Allows access to HTTP protected RSS feeds',
+ 'http' => 'HTTP Authentication',
+ 'password' => 'HTTP password',
+ 'username' => 'HTTP username',
+ ),
+ 'clear_cache' => 'Always clear cache',
+ 'css_help' => 'Retrieves truncated RSS feeds (caution, requires more time!)',
+ 'css_path' => 'Article CSS selector on original website',
+ '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.',
+ 'filteractions' => array(
+ '_' => 'Filter actions',
+ 'help' => 'Write one search filter per line.',
+ ),
+ 'information' => 'Information',
+ 'keep_min' => 'Minimum number of articles to keep',
+ 'maintenance' => array(
+ 'clear_cache' => 'Clear cache',
+ 'clear_cache_help' => 'Clear the cache for this feed.',
+ 'reload_articles' => 'Reload articles',
+ 'reload_articles_help' => 'Reload articles and fetch complete content if a selector is defined.',
+ 'title' => 'Maintenance',
+ ),
+ 'moved_category_deleted' => 'When you delete a category, its feeds are automatically classified under <em>%s</em>.',
+ 'mute' => 'mute',
+ 'no_selected' => 'No feed selected.',
+ 'number_entries' => '%d articles',
+ 'priority' => array(
+ '_' => 'Visibility',
+ 'archived' => 'Do not show (archived)',
+ 'main_stream' => 'Show in main stream',
+ 'normal' => 'Show in its category',
+ ),
+ 'selector_preview' => array(
+ 'show_raw' => 'Show source code',
+ 'show_rendered' => 'Show content',
+ ),
+ 'show' => array(
+ 'all' => 'Show all feeds',
+ 'error' => 'Show only feeds with errors',
+ ),
+ 'showing' => array(
+ 'error' => 'Showing only feeds with errors',
+ ),
+ 'ssl_verify' => 'Verify SSL security',
+ 'stats' => 'Statistics',
+ 'think_to_add' => 'You may add some feeds.',
+ 'timeout' => 'Timeout in seconds',
+ 'title' => 'Title',
+ 'title_add' => 'Add an RSS feed',
+ 'ttl' => 'Do not automatically refresh more often than',
+ 'url' => 'Feed URL',
+ 'validator' => 'Check the validity of the feed',
+ 'website' => 'Website URL',
+ 'websub' => 'Instant notification with WebSub',
+ ),
+ 'firefox' => array(
+ 'documentation' => 'Follow the steps described <a href="https://developer.mozilla.org/en-US/Firefox/Releases/2/Adding_feed_readers_to_Firefox#Adding_a_new_feed_reader_manually">here</a> to add FreshRSS to Firefox feed reader list.',
+ 'obsolete_63' => 'From version 63 and onwards, Firefox has removed the ability to add your own subscription services that are not standalone programs.',
+ 'title' => 'Firefox feed reader',
+ ),
+ 'import_export' => array(
+ 'export' => 'Export',
+ 'export_labelled' => 'Export your labeled articles',
+ 'export_opml' => 'Export list of feeds (OPML)',
+ 'export_starred' => 'Export your favorites',
+ 'feed_list' => 'List of %s articles',
+ 'file_to_import' => 'File to import<br />(OPML, JSON or ZIP)',
+ 'file_to_import_no_zip' => 'File to import<br />(OPML or JSON)',
+ 'import' => 'Import',
+ 'starred_list' => 'List of favorite articles',
+ 'title' => 'Import / export',
+ ),
+ 'menu' => array(
+ 'add' => 'Add a feed or category',
+ 'add_feed' => 'Add a feed',
+ 'bookmark' => 'Subscribe (FreshRSS bookmark)',
+ 'import_export' => 'Import / export',
+ 'subscription_management' => 'Subscription management',
+ 'subscription_tools' => 'Subscription tools',
+ ),
+ 'title' => array(
+ '_' => 'Subscription management',
+ 'add' => 'Add a feed or category',
+ 'add_category' => 'Add a category',
+ 'add_feed' => 'Add a feed',
+ 'feed_management' => 'RSS feeds management',
+ 'subscription_tools' => 'Subscription tools',
+ ),
+);
diff --git a/app/i18n/en-us/user.php b/app/i18n/en-us/user.php
new file mode 100644
index 000000000..1189029c7
--- /dev/null
+++ b/app/i18n/en-us/user.php
@@ -0,0 +1,44 @@
+<?php
+
+return array(
+ 'email' => array(
+ 'feedback' => array(
+ 'invalid' => 'This email address is invalid.',
+ 'required' => 'An email address is required.',
+ ),
+ 'validation' => array(
+ 'change_email' => 'You can change your email address <a href="%s">on the profile page</a>.',
+ 'email_sent_to' => 'We sent you an email at <strong>%s</strong>, please follow its instructions to validate your address.',
+ 'feedback' => array(
+ 'email_failed' => 'We couldn’t send you an email because of a server configuration error.',
+ 'email_sent' => 'An email has been sent to your address.',
+ 'error' => 'This email address validation failed.',
+ 'ok' => 'This email address has been validated.',
+ 'unneccessary' => 'This email address was already validated.',
+ 'wrong_token' => 'This email address failed to be validated due to a wrong token.',
+ ),
+ 'need_to' => 'You need to validate your email address before being able to use %s.',
+ 'resend_email' => 'Resend the email',
+ 'title' => 'Email address validation',
+ ),
+ ),
+ 'mailer' => array(
+ 'email_need_validation' => array(
+ 'body' => 'You’ve just registered on %s, but you still need to validate your email address. For that, just follow the link:',
+ 'title' => 'You need to validate your account',
+ 'welcome' => 'Welcome %s,',
+ ),
+ ),
+ 'password' => array(
+ 'invalid' => 'The password is invalid.',
+ ),
+ 'tos' => array(
+ 'feedback' => array(
+ 'invalid' => 'You must accept the Terms of Service to be able to register.',
+ ),
+ ),
+ 'username' => array(
+ 'invalid' => 'This username is invalid.',
+ 'taken' => 'This username, %s, is taken.',
+ ),
+);
diff --git a/app/i18n/en/feedback.php b/app/i18n/en/feedback.php
index 6d6796dda..5bd5469ca 100644
--- a/app/i18n/en/feedback.php
+++ b/app/i18n/en/feedback.php
@@ -16,7 +16,7 @@ return array(
),
'auth' => array(
'form' => array(
- 'not_set' => 'A problem occured during authentication system configuration. Please retry later.',
+ 'not_set' => 'A problem occurred during authentication system configuration. Please retry later.',
'set' => 'Form is now your default authentication system.',
),
'login' => array(
@@ -56,7 +56,7 @@ return array(
'feeds_imported_with_errors' => 'Your feeds have been imported, but some errors occurred',
'file_cannot_be_uploaded' => 'File cannot be uploaded!',
'no_zip_extension' => 'ZIP extension is not present on your server.',
- 'zip_error' => 'An error occured during ZIP import.',
+ 'zip_error' => 'An error occurred during ZIP import.',
),
'profile' => array(
'error' => 'Your profile cannot be modified',
diff --git a/app/i18n/en/gen.php b/app/i18n/en/gen.php
index 6f2101506..98c94c542 100644
--- a/app/i18n/en/gen.php
+++ b/app/i18n/en/gen.php
@@ -128,6 +128,7 @@ return array(
'cz' => 'Čeština',
'de' => 'Deutsch',
'en' => 'English',
+ 'en-us' => 'English (United States)',
'es' => 'Español',
'fr' => 'Français',
'he' => 'עברית',
diff --git a/app/i18n/es/gen.php b/app/i18n/es/gen.php
index 760f8e246..48299c932 100755
--- a/app/i18n/es/gen.php
+++ b/app/i18n/es/gen.php
@@ -128,6 +128,7 @@ return array(
'cz' => 'Čeština',
'de' => 'Deutsch',
'en' => 'English',
+ 'en-us' => 'English (United States)',
'es' => 'Español',
'fr' => 'Français',
'he' => 'עברית',
diff --git a/app/i18n/fr/gen.php b/app/i18n/fr/gen.php
index cb61b1c2f..1cdc0d6ff 100644
--- a/app/i18n/fr/gen.php
+++ b/app/i18n/fr/gen.php
@@ -128,6 +128,7 @@ return array(
'cz' => 'Čeština',
'de' => 'Deutsch',
'en' => 'English',
+ 'en-us' => 'English (United States)',
'es' => 'Español',
'fr' => 'Français',
'he' => 'עברית',
diff --git a/app/i18n/he/gen.php b/app/i18n/he/gen.php
index 862c00f64..7ecc64509 100644
--- a/app/i18n/he/gen.php
+++ b/app/i18n/he/gen.php
@@ -128,6 +128,7 @@ return array(
'cz' => 'Čeština', // TODO - Translation
'de' => 'Deutsch', // TODO - Translation
'en' => 'English', // TODO - Translation
+ 'en-us' => 'English (United States)',
'es' => 'Español', // TODO - Translation
'fr' => 'Français', // TODO - Translation
'he' => 'עברית', // TODO - Translation
diff --git a/app/i18n/it/gen.php b/app/i18n/it/gen.php
index d23d70b1d..4d9f126de 100644
--- a/app/i18n/it/gen.php
+++ b/app/i18n/it/gen.php
@@ -128,6 +128,7 @@ return array(
'cz' => 'Čeština', // TODO - Translation
'de' => 'Deutsch', // TODO - Translation
'en' => 'English', // TODO - Translation
+ 'en-us' => 'English (United States)',
'es' => 'Español', // TODO - Translation
'fr' => 'Français', // TODO - Translation
'he' => 'עברית', // TODO - Translation
diff --git a/app/i18n/kr/gen.php b/app/i18n/kr/gen.php
index 1d245aa02..394f0bbd6 100644
--- a/app/i18n/kr/gen.php
+++ b/app/i18n/kr/gen.php
@@ -128,6 +128,7 @@ return array(
'cz' => 'Čeština',
'de' => 'Deutsch',
'en' => 'English',
+ 'en-us' => 'English (United States)',
'es' => 'Español',
'fr' => 'Français',
'he' => 'עברית',
diff --git a/app/i18n/nl/gen.php b/app/i18n/nl/gen.php
index a63addbbb..ca15a8ec0 100644
--- a/app/i18n/nl/gen.php
+++ b/app/i18n/nl/gen.php
@@ -128,6 +128,7 @@ return array(
'cz' => 'Čeština',
'de' => 'Deutsch',
'en' => 'English',
+ 'en-us' => 'English (United States)',
'es' => 'Español',
'fr' => 'Français',
'he' => 'עברית',
diff --git a/app/i18n/oc/gen.php b/app/i18n/oc/gen.php
index 2c9255545..c140e629b 100644
--- a/app/i18n/oc/gen.php
+++ b/app/i18n/oc/gen.php
@@ -128,6 +128,7 @@ return array(
'cz' => 'Čeština',
'de' => 'Deutsch',
'en' => 'English',
+ 'en-us' => 'English (United States)',
'es' => 'Español',
'fr' => 'Français',
'he' => 'עברית',
diff --git a/app/i18n/pt-br/gen.php b/app/i18n/pt-br/gen.php
index 4504e735d..4b81fcd24 100644
--- a/app/i18n/pt-br/gen.php
+++ b/app/i18n/pt-br/gen.php
@@ -128,6 +128,7 @@ return array(
'cz' => 'Čeština',
'de' => 'Deutsch',
'en' => 'English',
+ 'en-us' => 'English (United States)',
'es' => 'Español',
'fr' => 'Français',
'he' => 'עברית',
diff --git a/app/i18n/ru/feedback.php b/app/i18n/ru/feedback.php
index dbd6a7f52..d0f0cc669 100644
--- a/app/i18n/ru/feedback.php
+++ b/app/i18n/ru/feedback.php
@@ -16,7 +16,7 @@ return array(
),
'auth' => array(
'form' => array(
- 'not_set' => 'A problem occured during authentication system configuration. Please retry later.', // TODO - Translation
+ 'not_set' => 'A problem occurred during authentication system configuration. Please retry later.', // TODO - Translation
'set' => 'Form is now your default authentication system.', // TODO - Translation
),
'login' => array(
@@ -56,7 +56,7 @@ return array(
'feeds_imported_with_errors' => 'Your feeds have been imported but some errors occurred',
'file_cannot_be_uploaded' => 'File cannot be uploaded!', // TODO - Translation
'no_zip_extension' => 'ZIP extension is not present on your server.', // TODO - Translation
- 'zip_error' => 'An error occured during ZIP import.', // TODO - Translation
+ 'zip_error' => 'An error occurred during ZIP import.', // TODO - Translation
),
'profile' => array(
'error' => 'Your profile cannot be modified', // TODO - Translation
diff --git a/app/i18n/ru/gen.php b/app/i18n/ru/gen.php
index 74bc63e2c..b23eb4237 100644
--- a/app/i18n/ru/gen.php
+++ b/app/i18n/ru/gen.php
@@ -128,6 +128,7 @@ return array(
'cz' => 'Čeština', // TODO - Translation
'de' => 'Deutsch', // TODO - Translation
'en' => 'English', // TODO - Translation
+ 'en-us' => 'English (United States)',
'es' => 'Español', // TODO - Translation
'fr' => 'Français', // TODO - Translation
'he' => 'עברית', // TODO - Translation
diff --git a/app/i18n/sk/gen.php b/app/i18n/sk/gen.php
index 21cb8f3b8..30c5e8d80 100644
--- a/app/i18n/sk/gen.php
+++ b/app/i18n/sk/gen.php
@@ -128,6 +128,7 @@ return array(
'cz' => 'Čeština',
'de' => 'Deutsch',
'en' => 'English',
+ 'en-us' => 'English (United States)',
'es' => 'Español',
'fr' => 'Français',
'he' => 'עברית',
diff --git a/app/i18n/tr/gen.php b/app/i18n/tr/gen.php
index c4f9727d8..164d3f0f7 100644
--- a/app/i18n/tr/gen.php
+++ b/app/i18n/tr/gen.php
@@ -128,6 +128,7 @@ return array(
'cz' => 'Čeština', // TODO - Translation
'de' => 'Deutsch', // TODO - Translation
'en' => 'English', // TODO - Translation
+ 'en-us' => 'English (United States)',
'es' => 'Español', // TODO - Translation
'fr' => 'Français', // TODO - Translation
'he' => 'עברית', // TODO - Translation
diff --git a/app/i18n/zh-cn/gen.php b/app/i18n/zh-cn/gen.php
index 923e1f5bd..4bf73ce6f 100644
--- a/app/i18n/zh-cn/gen.php
+++ b/app/i18n/zh-cn/gen.php
@@ -128,6 +128,7 @@ return array(
'cz' => 'Čeština',
'de' => 'Deutsch',
'en' => 'English',
+ 'en-us' => 'English (United States)',
'es' => 'Español',
'fr' => 'Français',
'he' => 'עברית',
diff --git a/cli/i18n/I18nData.php b/cli/i18n/I18nData.php
index 5071c9be9..73a731245 100644
--- a/cli/i18n/I18nData.php
+++ b/cli/i18n/I18nData.php
@@ -229,6 +229,25 @@ class I18nData {
$this->ignore[$language][] = $key;
}
+ /**
+ *Ignore all unmodified keys from a language, or reverse it.
+ *
+ * @param string $language
+ * @param boolean $reverse
+ */
+ public function ignore_unmodified($language, $reverse = false) {
+ $my_language = $this->getLanguage($language);
+ foreach ($this->getReferenceLanguage() as $file => $ref_language) {
+ foreach ($ref_language as $key => $ref_value) {
+ if (array_key_exists($key, $my_language[$file])) {
+ if($ref_value == $my_language[$file][$key]) {
+ $this->ignore($key, $language, $reverse);
+ }
+ }
+ }
+ }
+ }
+
public function getLanguage($language) {
return $this->data[$language];
}
diff --git a/cli/i18n/ignore/cz.php b/cli/i18n/ignore/cz.php
index 1c987d8b3..4ce908b82 100644
--- a/cli/i18n/ignore/cz.php
+++ b/cli/i18n/ignore/cz.php
@@ -2,4 +2,5 @@
return array(
'gen.dir',
+ 'gen.lang.en-us',
);
diff --git a/cli/i18n/ignore/de.php b/cli/i18n/ignore/de.php
index 1c987d8b3..4ce908b82 100644
--- a/cli/i18n/ignore/de.php
+++ b/cli/i18n/ignore/de.php
@@ -2,4 +2,5 @@
return array(
'gen.dir',
+ 'gen.lang.en-us',
);
diff --git a/cli/i18n/ignore/en-us.php b/cli/i18n/ignore/en-us.php
new file mode 100644
index 000000000..bba4be829
--- /dev/null
+++ b/cli/i18n/ignore/en-us.php
@@ -0,0 +1,686 @@
+<?php
+
+return array(
+ 'admin.auth.allow_anonymous_refresh',
+ 'admin.auth.api_enabled',
+ 'admin.auth.form',
+ 'admin.auth.http',
+ 'admin.auth.none',
+ 'admin.auth.title',
+ 'admin.auth.title_reset',
+ 'admin.auth.token',
+ 'admin.auth.token_help',
+ 'admin.auth.type',
+ 'admin.auth.unsafe_autologin',
+ 'admin.check_install.categories.nok',
+ 'admin.check_install.connection.nok',
+ 'admin.check_install.ctype.nok',
+ 'admin.check_install.ctype.ok',
+ 'admin.check_install.curl.nok',
+ 'admin.check_install.curl.ok',
+ 'admin.check_install.database',
+ 'admin.check_install.dom.nok',
+ 'admin.check_install.dom.ok',
+ 'admin.check_install.entries.nok',
+ 'admin.check_install.feeds.nok',
+ 'admin.check_install.fileinfo.nok',
+ 'admin.check_install.fileinfo.ok',
+ 'admin.check_install.files',
+ 'admin.check_install.json.nok',
+ 'admin.check_install.minz.nok',
+ 'admin.check_install.minz.ok',
+ 'admin.check_install.pcre.nok',
+ 'admin.check_install.pcre.ok',
+ 'admin.check_install.pdo.nok',
+ 'admin.check_install.pdo.ok',
+ 'admin.check_install.php._',
+ 'admin.check_install.php.nok',
+ 'admin.check_install.tables.nok',
+ 'admin.check_install.tables.ok',
+ 'admin.extensions.author',
+ 'admin.extensions.community',
+ 'admin.extensions.description',
+ 'admin.extensions.disabled',
+ 'admin.extensions.empty_list',
+ 'admin.extensions.enabled',
+ 'admin.extensions.latest',
+ 'admin.extensions.name',
+ 'admin.extensions.no_configure_view',
+ 'admin.extensions.system._',
+ 'admin.extensions.title',
+ 'admin.extensions.update',
+ 'admin.extensions.user',
+ 'admin.extensions.version',
+ 'admin.stats._',
+ 'admin.stats.all_feeds',
+ 'admin.stats.category',
+ 'admin.stats.entry_count',
+ 'admin.stats.entry_per_category',
+ 'admin.stats.entry_per_day',
+ 'admin.stats.entry_per_day_of_week',
+ 'admin.stats.entry_per_hour',
+ 'admin.stats.entry_per_month',
+ 'admin.stats.entry_repartition',
+ 'admin.stats.feed',
+ 'admin.stats.feed_per_category',
+ 'admin.stats.idle',
+ 'admin.stats.main',
+ 'admin.stats.main_stream',
+ 'admin.stats.menu.idle',
+ 'admin.stats.menu.main',
+ 'admin.stats.menu.repartition',
+ 'admin.stats.number_entries',
+ 'admin.stats.percent_of_total',
+ 'admin.stats.repartition',
+ 'admin.stats.status_read',
+ 'admin.stats.status_total',
+ 'admin.stats.status_unread',
+ 'admin.stats.title',
+ 'admin.stats.top_feed',
+ 'admin.system._',
+ 'admin.system.auto-update-url',
+ 'admin.system.cookie-duration.help',
+ 'admin.system.cookie-duration.number',
+ 'admin.system.instance-name',
+ 'admin.system.registration.help',
+ 'admin.system.registration.number',
+ 'admin.update._',
+ 'admin.update.apply',
+ 'admin.update.check',
+ 'admin.update.current_version',
+ 'admin.update.last',
+ 'admin.update.none',
+ 'admin.update.title',
+ 'admin.user.admin',
+ 'admin.user.article_count',
+ 'admin.user.articles_and_size',
+ 'admin.user.back_to_manage',
+ 'admin.user.create',
+ 'admin.user.database_size',
+ 'admin.user.delete_users',
+ 'admin.user.email',
+ 'admin.user.enabled',
+ 'admin.user.feed_count',
+ 'admin.user.is_admin',
+ 'admin.user.language',
+ 'admin.user.last_user_activity',
+ 'admin.user.list',
+ 'admin.user.number',
+ 'admin.user.numbers',
+ 'admin.user.password_form',
+ 'admin.user.password_format',
+ 'admin.user.selected',
+ 'admin.user.title',
+ 'admin.user.update_users',
+ 'admin.user.user_list',
+ 'admin.user.username',
+ 'admin.user.users',
+ 'conf.archiving._',
+ 'conf.archiving.delete_after',
+ 'conf.archiving.exception',
+ 'conf.archiving.keep_labels',
+ 'conf.archiving.keep_max',
+ 'conf.archiving.keep_period',
+ 'conf.archiving.maintenance',
+ 'conf.archiving.policy',
+ 'conf.archiving.policy_warning',
+ 'conf.archiving.purge_now',
+ 'conf.archiving.title',
+ 'conf.archiving.ttl',
+ 'conf.display._',
+ 'conf.display.icon.bottom_line',
+ 'conf.display.icon.display_authors',
+ 'conf.display.icon.entry',
+ 'conf.display.icon.publication_date',
+ 'conf.display.icon.related_tags',
+ 'conf.display.icon.sharing',
+ 'conf.display.icon.top_line',
+ 'conf.display.language',
+ 'conf.display.notif_html5.seconds',
+ 'conf.display.notif_html5.timeout',
+ 'conf.display.show_nav_buttons',
+ 'conf.display.theme',
+ 'conf.display.title',
+ 'conf.display.width.content',
+ 'conf.display.width.medium',
+ 'conf.profile._',
+ 'conf.profile.api',
+ 'conf.profile.delete._',
+ 'conf.profile.delete.warn',
+ 'conf.profile.email',
+ 'conf.profile.password_api',
+ 'conf.profile.password_form',
+ 'conf.profile.password_format',
+ 'conf.profile.title',
+ 'conf.query._',
+ 'conf.query.deprecated',
+ 'conf.query.display',
+ 'conf.query.filter',
+ 'conf.query.get_all',
+ 'conf.query.get_category',
+ 'conf.query.get_feed',
+ 'conf.query.no_filter',
+ 'conf.query.none',
+ 'conf.query.number',
+ 'conf.query.order_asc',
+ 'conf.query.order_desc',
+ 'conf.query.remove',
+ 'conf.query.search',
+ 'conf.query.state_0',
+ 'conf.query.state_1',
+ 'conf.query.state_12',
+ 'conf.query.state_13',
+ 'conf.query.state_14',
+ 'conf.query.state_15',
+ 'conf.query.state_2',
+ 'conf.query.state_3',
+ 'conf.query.title',
+ 'conf.reading._',
+ 'conf.reading.after_onread',
+ 'conf.reading.always_show_favorites',
+ 'conf.reading.articles_per_page',
+ 'conf.reading.auto_remove_article',
+ 'conf.reading.confirm_enabled',
+ 'conf.reading.display_articles_unfolded',
+ 'conf.reading.display_categories_unfolded',
+ 'conf.reading.hide_read_feeds',
+ 'conf.reading.img_with_lazyload',
+ 'conf.reading.jump_next',
+ 'conf.reading.mark_updated_article_unread',
+ 'conf.reading.read.scroll',
+ 'conf.reading.read.upon_reception',
+ 'conf.reading.show._',
+ 'conf.reading.show.active_category',
+ 'conf.reading.show.adaptive',
+ 'conf.reading.show.all_articles',
+ 'conf.reading.show.all_categories',
+ 'conf.reading.show.no_category',
+ 'conf.reading.show.unread',
+ 'conf.reading.sides_close_article',
+ 'conf.reading.sort._',
+ 'conf.reading.sort.newer_first',
+ 'conf.reading.sort.older_first',
+ 'conf.reading.sticky_post',
+ 'conf.reading.title',
+ 'conf.reading.view.default',
+ 'conf.reading.view.global',
+ 'conf.reading.view.normal',
+ 'conf.reading.view.reader',
+ 'conf.sharing._',
+ 'conf.sharing.add',
+ 'conf.sharing.blogotext',
+ 'conf.sharing.diaspora',
+ 'conf.sharing.email',
+ 'conf.sharing.facebook',
+ 'conf.sharing.more_information',
+ 'conf.sharing.print',
+ 'conf.sharing.remove',
+ 'conf.sharing.shaarli',
+ 'conf.sharing.share_name',
+ 'conf.sharing.share_url',
+ 'conf.sharing.title',
+ 'conf.sharing.twitter',
+ 'conf.sharing.wallabag',
+ 'conf.shortcut._',
+ 'conf.shortcut.article_action',
+ 'conf.shortcut.auto_share',
+ 'conf.shortcut.auto_share_help',
+ 'conf.shortcut.close_dropdown',
+ 'conf.shortcut.collapse_article',
+ 'conf.shortcut.first_article',
+ 'conf.shortcut.focus_search',
+ 'conf.shortcut.global_view',
+ 'conf.shortcut.help',
+ 'conf.shortcut.javascript',
+ 'conf.shortcut.last_article',
+ 'conf.shortcut.load_more',
+ 'conf.shortcut.mark_read',
+ 'conf.shortcut.navigation',
+ 'conf.shortcut.navigation_help',
+ 'conf.shortcut.navigation_no_mod_help',
+ 'conf.shortcut.next_article',
+ 'conf.shortcut.normal_view',
+ 'conf.shortcut.other_action',
+ 'conf.shortcut.previous_article',
+ 'conf.shortcut.reading_view',
+ 'conf.shortcut.rss_view',
+ 'conf.shortcut.see_on_website',
+ 'conf.shortcut.shift_for_all_read',
+ 'conf.shortcut.skip_next_article',
+ 'conf.shortcut.skip_previous_article',
+ 'conf.shortcut.title',
+ 'conf.shortcut.toggle_media',
+ 'conf.shortcut.user_filter',
+ 'conf.shortcut.user_filter_help',
+ 'conf.shortcut.views',
+ 'conf.user.articles_and_size',
+ 'conf.user.current',
+ 'conf.user.is_admin',
+ 'conf.user.users',
+ 'feedback.access.denied',
+ 'feedback.admin.optimization_complete',
+ 'feedback.api.password.failed',
+ 'feedback.api.password.updated',
+ 'feedback.auth.form.set',
+ 'feedback.auth.login.invalid',
+ 'feedback.auth.login.success',
+ 'feedback.auth.logout.success',
+ 'feedback.auth.no_password_set',
+ 'feedback.conf.query_created',
+ 'feedback.conf.shortcuts_updated',
+ 'feedback.conf.updated',
+ 'feedback.extensions.already_enabled',
+ 'feedback.extensions.cannot_remove',
+ 'feedback.extensions.disable.ko',
+ 'feedback.extensions.disable.ok',
+ 'feedback.extensions.enable.ko',
+ 'feedback.extensions.enable.ok',
+ 'feedback.extensions.no_access',
+ 'feedback.extensions.not_enabled',
+ 'feedback.extensions.not_found',
+ 'feedback.extensions.removed',
+ 'feedback.import_export.feeds_imported',
+ 'feedback.import_export.feeds_imported_with_errors',
+ 'feedback.import_export.file_cannot_be_uploaded',
+ 'feedback.import_export.zip_error',
+ 'feedback.profile.error',
+ 'feedback.profile.updated',
+ 'feedback.sub.actualize',
+ 'feedback.sub.articles.marked_read',
+ 'feedback.sub.articles.marked_unread',
+ 'feedback.sub.category.created',
+ 'feedback.sub.category.deleted',
+ 'feedback.sub.category.emptied',
+ 'feedback.sub.category.error',
+ 'feedback.sub.category.name_exists',
+ 'feedback.sub.category.no_id',
+ 'feedback.sub.category.no_name',
+ 'feedback.sub.category.not_delete_default',
+ 'feedback.sub.category.not_exist',
+ 'feedback.sub.category.over_max',
+ 'feedback.sub.category.updated',
+ 'feedback.sub.feed.actualized',
+ 'feedback.sub.feed.actualizeds',
+ 'feedback.sub.feed.added',
+ 'feedback.sub.feed.already_subscribed',
+ 'feedback.sub.feed.cache_cleared',
+ 'feedback.sub.feed.deleted',
+ 'feedback.sub.feed.error',
+ 'feedback.sub.feed.internal_problem',
+ 'feedback.sub.feed.invalid_url',
+ 'feedback.sub.feed.n_actualized',
+ 'feedback.sub.feed.n_entries_deleted',
+ 'feedback.sub.feed.not_added',
+ 'feedback.sub.feed.not_found',
+ 'feedback.sub.feed.over_max',
+ 'feedback.sub.feed.reloaded',
+ 'feedback.sub.feed.selector_preview.http_error',
+ 'feedback.sub.feed.selector_preview.no_entries',
+ 'feedback.sub.feed.selector_preview.no_result',
+ 'feedback.sub.feed.selector_preview.selector_empty',
+ 'feedback.sub.feed.updated',
+ 'feedback.sub.purge_completed',
+ 'feedback.update.can_apply',
+ 'feedback.update.error',
+ 'feedback.update.none',
+ 'feedback.update.server_not_found',
+ 'feedback.user.created._',
+ 'feedback.user.created.error',
+ 'feedback.user.deleted._',
+ 'feedback.user.deleted.error',
+ 'feedback.user.updated._',
+ 'feedback.user.updated.error',
+ 'gen.action.actualize',
+ 'gen.action.add',
+ 'gen.action.back',
+ 'gen.action.back_to_rss_feeds',
+ 'gen.action.cancel',
+ 'gen.action.create',
+ 'gen.action.demote',
+ 'gen.action.disable',
+ 'gen.action.empty',
+ 'gen.action.enable',
+ 'gen.action.export',
+ 'gen.action.filter',
+ 'gen.action.import',
+ 'gen.action.manage',
+ 'gen.action.mark_read',
+ 'gen.action.promote',
+ 'gen.action.purge',
+ 'gen.action.remove',
+ 'gen.action.see_website',
+ 'gen.action.submit',
+ 'gen.action.truncate',
+ 'gen.action.update',
+ 'gen.auth.accept_tos',
+ 'gen.auth.email',
+ 'gen.auth.keep_logged_in',
+ 'gen.auth.login',
+ 'gen.auth.logout',
+ 'gen.auth.password._',
+ 'gen.auth.password.format',
+ 'gen.auth.registration._',
+ 'gen.auth.registration.ask',
+ 'gen.auth.registration.title',
+ 'gen.auth.reset',
+ 'gen.auth.username._',
+ 'gen.auth.username.admin',
+ 'gen.auth.username.format',
+ 'gen.date.Apr',
+ 'gen.date.Aug',
+ 'gen.date.Dec',
+ 'gen.date.Feb',
+ 'gen.date.Jan',
+ 'gen.date.Jul',
+ 'gen.date.Jun',
+ 'gen.date.Mar',
+ 'gen.date.May',
+ 'gen.date.Nov',
+ 'gen.date.Oct',
+ 'gen.date.Sep',
+ 'gen.date.apr',
+ 'gen.date.april',
+ 'gen.date.aug',
+ 'gen.date.august',
+ 'gen.date.before_yesterday',
+ 'gen.date.dec',
+ 'gen.date.december',
+ 'gen.date.feb',
+ 'gen.date.february',
+ 'gen.date.format_date',
+ 'gen.date.format_date_hour',
+ 'gen.date.fri',
+ 'gen.date.jan',
+ 'gen.date.january',
+ 'gen.date.jul',
+ 'gen.date.july',
+ 'gen.date.jun',
+ 'gen.date.june',
+ 'gen.date.last_2_year',
+ 'gen.date.last_3_month',
+ 'gen.date.last_3_year',
+ 'gen.date.last_5_year',
+ 'gen.date.last_6_month',
+ 'gen.date.last_month',
+ 'gen.date.last_week',
+ 'gen.date.last_year',
+ 'gen.date.mar',
+ 'gen.date.march',
+ 'gen.date.may',
+ 'gen.date.may_',
+ 'gen.date.mon',
+ 'gen.date.month',
+ 'gen.date.nov',
+ 'gen.date.november',
+ 'gen.date.oct',
+ 'gen.date.october',
+ 'gen.date.sat',
+ 'gen.date.sep',
+ 'gen.date.september',
+ 'gen.date.sun',
+ 'gen.date.thu',
+ 'gen.date.today',
+ 'gen.date.tue',
+ 'gen.date.wed',
+ 'gen.date.yesterday',
+ 'gen.dir',
+ 'gen.freshrss._',
+ 'gen.freshrss.about',
+ 'gen.js.category_empty',
+ 'gen.js.feedback.body_new_articles',
+ 'gen.js.feedback.title_new_articles',
+ 'gen.js.should_be_activated',
+ 'gen.lang.cz',
+ 'gen.lang.de',
+ 'gen.lang.en',
+ 'gen.lang.en-us',
+ 'gen.lang.es',
+ 'gen.lang.fr',
+ 'gen.lang.he',
+ 'gen.lang.it',
+ 'gen.lang.kr',
+ 'gen.lang.nl',
+ 'gen.lang.oc',
+ 'gen.lang.pt-br',
+ 'gen.lang.ru',
+ 'gen.lang.sk',
+ 'gen.lang.tr',
+ 'gen.lang.zh-cn',
+ 'gen.menu.about',
+ 'gen.menu.admin',
+ 'gen.menu.archiving',
+ 'gen.menu.authentication',
+ 'gen.menu.configuration',
+ 'gen.menu.display',
+ 'gen.menu.extensions',
+ 'gen.menu.logs',
+ 'gen.menu.queries',
+ 'gen.menu.reading',
+ 'gen.menu.search',
+ 'gen.menu.sharing',
+ 'gen.menu.shortcuts',
+ 'gen.menu.stats',
+ 'gen.menu.system',
+ 'gen.menu.update',
+ 'gen.menu.user_management',
+ 'gen.menu.user_profile',
+ 'gen.pagination.first',
+ 'gen.pagination.last',
+ 'gen.pagination.load_more',
+ 'gen.pagination.mark_all_read',
+ 'gen.pagination.next',
+ 'gen.pagination.nothing_to_load',
+ 'gen.pagination.previous',
+ 'gen.period.days',
+ 'gen.period.hours',
+ 'gen.period.months',
+ 'gen.period.weeks',
+ 'gen.period.years',
+ 'gen.share.Known',
+ 'gen.share.blogotext',
+ 'gen.share.diaspora',
+ 'gen.share.email',
+ 'gen.share.facebook',
+ 'gen.share.gnusocial',
+ 'gen.share.jdh',
+ 'gen.share.lemmy',
+ 'gen.share.linkedin',
+ 'gen.share.mastodon',
+ 'gen.share.movim',
+ 'gen.share.pinboard',
+ 'gen.share.pocket',
+ 'gen.share.print',
+ 'gen.share.shaarli',
+ 'gen.share.twitter',
+ 'gen.share.wallabag',
+ 'gen.share.wallabagv2',
+ 'gen.short.attention',
+ 'gen.short.blank_to_disable',
+ 'gen.short.by_author',
+ 'gen.short.by_default',
+ 'gen.short.damn',
+ 'gen.short.default_category',
+ 'gen.short.no',
+ 'gen.short.not_applicable',
+ 'gen.short.or',
+ 'gen.short.yes',
+ 'index.about._',
+ 'index.about.agpl3',
+ 'index.about.credits',
+ 'index.about.credits_content',
+ 'index.about.freshrss_description',
+ 'index.about.github',
+ 'index.about.license',
+ 'index.about.project_website',
+ 'index.about.title',
+ 'index.about.version',
+ 'index.about.website',
+ 'index.feed.rss_of',
+ 'index.feed.title',
+ 'index.feed.title_global',
+ 'index.log._',
+ 'index.log.clear',
+ 'index.log.empty',
+ 'index.log.title',
+ 'index.menu.about',
+ 'index.menu.add_query',
+ 'index.menu.before_one_day',
+ 'index.menu.before_one_week',
+ 'index.menu.global_view',
+ 'index.menu.main_stream',
+ 'index.menu.mark_all_read',
+ 'index.menu.mark_cat_read',
+ 'index.menu.mark_feed_read',
+ 'index.menu.mark_selection_unread',
+ 'index.menu.newer_first',
+ 'index.menu.normal_view',
+ 'index.menu.older_first',
+ 'index.menu.queries',
+ 'index.menu.read',
+ 'index.menu.reader_view',
+ 'index.menu.rss_view',
+ 'index.menu.search_short',
+ 'index.menu.stats',
+ 'index.menu.tags',
+ 'index.menu.unread',
+ 'index.share',
+ 'index.tag.related',
+ 'index.tos.title',
+ 'install.action.finish',
+ 'install.action.keep_install',
+ 'install.action.next_step',
+ 'install.action.reinstall',
+ 'install.auth.form',
+ 'install.auth.http',
+ 'install.auth.none',
+ 'install.auth.password_form',
+ 'install.auth.password_format',
+ 'install.auth.type',
+ 'install.bdd._',
+ 'install.bdd.conf._',
+ 'install.bdd.conf.ok',
+ 'install.bdd.host',
+ 'install.bdd.password',
+ 'install.bdd.prefix',
+ 'install.bdd.type',
+ 'install.bdd.username',
+ 'install.check._',
+ 'install.check.already_installed',
+ 'install.check.ctype.ok',
+ 'install.check.curl.nok',
+ 'install.check.curl.ok',
+ 'install.check.dom.ok',
+ 'install.check.fileinfo.nok',
+ 'install.check.fileinfo.ok',
+ 'install.check.http_referer.nok',
+ 'install.check.http_referer.ok',
+ 'install.check.mbstring.nok',
+ 'install.check.mbstring.ok',
+ 'install.check.minz.nok',
+ 'install.check.minz.ok',
+ 'install.check.pcre.ok',
+ 'install.check.pdo.nok',
+ 'install.check.pdo.ok',
+ 'install.check.xml.nok',
+ 'install.check.xml.ok',
+ 'install.conf._',
+ 'install.conf.ok',
+ 'install.congratulations',
+ 'install.default_user',
+ 'install.delete_articles_after',
+ 'install.javascript_is_better',
+ 'install.js.confirm_reinstall',
+ 'install.language._',
+ 'install.language.choose',
+ 'install.language.defined',
+ 'install.not_deleted',
+ 'install.ok',
+ 'install.step',
+ 'install.steps',
+ 'install.this_is_the_end',
+ 'install.title',
+ 'sub.add',
+ 'sub.api.documentation',
+ 'sub.api.title',
+ 'sub.bookmarklet.label',
+ 'sub.bookmarklet.title',
+ 'sub.category._',
+ 'sub.category.add',
+ 'sub.category.archiving',
+ 'sub.category.empty',
+ 'sub.category.information',
+ 'sub.category.position',
+ 'sub.category.position_help',
+ 'sub.category.title',
+ 'sub.feed.add',
+ 'sub.feed.advanced',
+ 'sub.feed.archiving',
+ 'sub.feed.auth.configuration',
+ 'sub.feed.auth.help',
+ 'sub.feed.auth.http',
+ 'sub.feed.auth.password',
+ 'sub.feed.auth.username',
+ 'sub.feed.clear_cache',
+ 'sub.feed.css_help',
+ 'sub.feed.css_path',
+ 'sub.feed.description',
+ 'sub.feed.empty',
+ 'sub.feed.error',
+ 'sub.feed.filteractions._',
+ 'sub.feed.filteractions.help',
+ 'sub.feed.information',
+ 'sub.feed.keep_min',
+ 'sub.feed.maintenance.clear_cache',
+ 'sub.feed.maintenance.clear_cache_help',
+ 'sub.feed.maintenance.reload_articles',
+ 'sub.feed.maintenance.reload_articles_help',
+ 'sub.feed.maintenance.title',
+ 'sub.feed.moved_category_deleted',
+ 'sub.feed.mute',
+ 'sub.feed.no_selected',
+ 'sub.feed.number_entries',
+ 'sub.feed.priority._',
+ 'sub.feed.priority.archived',
+ 'sub.feed.priority.main_stream',
+ 'sub.feed.priority.normal',
+ 'sub.feed.selector_preview.show_raw',
+ 'sub.feed.selector_preview.show_rendered',
+ 'sub.feed.show.all',
+ 'sub.feed.ssl_verify',
+ 'sub.feed.stats',
+ 'sub.feed.think_to_add',
+ 'sub.feed.timeout',
+ 'sub.feed.title',
+ 'sub.feed.ttl',
+ 'sub.feed.url',
+ 'sub.feed.validator',
+ 'sub.feed.website',
+ 'sub.feed.websub',
+ 'sub.firefox.documentation',
+ 'sub.firefox.obsolete_63',
+ 'sub.firefox.title',
+ 'sub.import_export.export',
+ 'sub.import_export.export_opml',
+ 'sub.import_export.feed_list',
+ 'sub.import_export.file_to_import',
+ 'sub.import_export.file_to_import_no_zip',
+ 'sub.import_export.import',
+ 'sub.import_export.title',
+ 'sub.menu.add_feed',
+ 'sub.menu.bookmark',
+ 'sub.menu.import_export',
+ 'sub.menu.subscription_tools',
+ 'sub.title.add_category',
+ 'sub.title.add_feed',
+ 'sub.title.feed_management',
+ 'sub.title.subscription_tools',
+ 'user.email.validation.change_email',
+ 'user.email.validation.feedback.email_sent',
+ 'user.email.validation.need_to',
+ 'user.email.validation.resend_email',
+ 'user.email.validation.title',
+ 'user.mailer.email_need_validation.title',
+ 'user.mailer.email_need_validation.welcome',
+ 'user.password.invalid',
+ 'user.tos.feedback.invalid',
+);
diff --git a/cli/i18n/ignore/es.php b/cli/i18n/ignore/es.php
index f6684fd81..63f2ac2c4 100644
--- a/cli/i18n/ignore/es.php
+++ b/cli/i18n/ignore/es.php
@@ -5,6 +5,7 @@ return array(
'gen.lang.cz',
'gen.lang.de',
'gen.lang.en',
+ 'gen.lang.en-us',
'gen.lang.es',
'gen.lang.fr',
'gen.lang.he',
diff --git a/cli/i18n/ignore/fr.php b/cli/i18n/ignore/fr.php
index a2718b625..ec792d576 100644
--- a/cli/i18n/ignore/fr.php
+++ b/cli/i18n/ignore/fr.php
@@ -23,6 +23,7 @@ return array(
'gen.lang.cz',
'gen.lang.de',
'gen.lang.en',
+ 'gen.lang.en-us',
'gen.lang.es',
'gen.lang.fr',
'gen.lang.he',
diff --git a/cli/i18n/ignore/he.php b/cli/i18n/ignore/he.php
new file mode 100644
index 000000000..7c0351294
--- /dev/null
+++ b/cli/i18n/ignore/he.php
@@ -0,0 +1,5 @@
+<?php
+
+return array(
+ 'gen.lang.en-us',
+);
diff --git a/cli/i18n/ignore/it.php b/cli/i18n/ignore/it.php
index 1c987d8b3..4ce908b82 100644
--- a/cli/i18n/ignore/it.php
+++ b/cli/i18n/ignore/it.php
@@ -2,4 +2,5 @@
return array(
'gen.dir',
+ 'gen.lang.en-us',
);
diff --git a/cli/i18n/ignore/kr.php b/cli/i18n/ignore/kr.php
index 184c94b98..fd563bd59 100644
--- a/cli/i18n/ignore/kr.php
+++ b/cli/i18n/ignore/kr.php
@@ -24,6 +24,7 @@ return array(
'gen.lang.cz',
'gen.lang.de',
'gen.lang.en',
+ 'gen.lang.en-us',
'gen.lang.es',
'gen.lang.fr',
'gen.lang.he',
diff --git a/cli/i18n/ignore/nl.php b/cli/i18n/ignore/nl.php
index 5a14f1317..40aec065b 100644
--- a/cli/i18n/ignore/nl.php
+++ b/cli/i18n/ignore/nl.php
@@ -21,6 +21,7 @@ return array(
'gen.lang.cz',
'gen.lang.de',
'gen.lang.en',
+ 'gen.lang.en-us',
'gen.lang.es',
'gen.lang.fr',
'gen.lang.he',
diff --git a/cli/i18n/ignore/oc.php b/cli/i18n/ignore/oc.php
index facb78702..71e89749b 100644
--- a/cli/i18n/ignore/oc.php
+++ b/cli/i18n/ignore/oc.php
@@ -23,6 +23,7 @@ return array(
'gen.lang.cz',
'gen.lang.de',
'gen.lang.en',
+ 'gen.lang.en-us',
'gen.lang.es',
'gen.lang.fr',
'gen.lang.he',
diff --git a/cli/i18n/ignore/pt-br.php b/cli/i18n/ignore/pt-br.php
index 7721d23b6..228b1ad78 100644
--- a/cli/i18n/ignore/pt-br.php
+++ b/cli/i18n/ignore/pt-br.php
@@ -17,6 +17,7 @@ return array(
'gen.lang.cz',
'gen.lang.de',
'gen.lang.en',
+ 'gen.lang.en-us',
'gen.lang.es',
'gen.lang.fr',
'gen.lang.he',
diff --git a/cli/i18n/ignore/ru.php b/cli/i18n/ignore/ru.php
index 1c987d8b3..4ce908b82 100644
--- a/cli/i18n/ignore/ru.php
+++ b/cli/i18n/ignore/ru.php
@@ -2,4 +2,5 @@
return array(
'gen.dir',
+ 'gen.lang.en-us',
);
diff --git a/cli/i18n/ignore/sk.php b/cli/i18n/ignore/sk.php
index 66940c758..5769f3f01 100644
--- a/cli/i18n/ignore/sk.php
+++ b/cli/i18n/ignore/sk.php
@@ -32,6 +32,7 @@ return array(
'gen.lang.cz',
'gen.lang.de',
'gen.lang.en',
+ 'gen.lang.en-us',
'gen.lang.es',
'gen.lang.fr',
'gen.lang.he',
diff --git a/cli/i18n/ignore/tr.php b/cli/i18n/ignore/tr.php
index 1c987d8b3..4ce908b82 100644
--- a/cli/i18n/ignore/tr.php
+++ b/cli/i18n/ignore/tr.php
@@ -2,4 +2,5 @@
return array(
'gen.dir',
+ 'gen.lang.en-us',
);
diff --git a/cli/i18n/ignore/zh-cn.php b/cli/i18n/ignore/zh-cn.php
index e687a3de9..fa6071106 100644
--- a/cli/i18n/ignore/zh-cn.php
+++ b/cli/i18n/ignore/zh-cn.php
@@ -13,6 +13,7 @@ return array(
'gen.lang.cz',
'gen.lang.de',
'gen.lang.en',
+ 'gen.lang.en-us',
'gen.lang.es',
'gen.lang.fr',
'gen.lang.he',
diff --git a/cli/manipulate.translation.php b/cli/manipulate.translation.php
index b5c37d147..5ccbaa664 100644
--- a/cli/manipulate.translation.php
+++ b/cli/manipulate.translation.php
@@ -66,6 +66,14 @@ switch ($options['a']) {
exit;
}
break;
+ case 'ignore_unmodified' :
+ if (array_key_exists('l', $options)) {
+ $i18nData->ignore_unmodified($options['l'], array_key_exists('r', $options));
+ } else {
+ error('You need to specify a valid set of options.');
+ exit;
+ }
+ break;
default :
help();
exit;
@@ -133,8 +141,15 @@ Exemple 6: ignore a key. It adds the key in the ignore file to mark it as transl
Exemple 7: revert ignore a key. It removes the key from the ignore file.
php %1\$s -a ignore -r -k my_key -l my_lang
-Exemple 8: check if a key exist.
+Exemple 8: ignore all unmodified keys. It adds all modified keys in the ignore file to mark it as translated.
+ php %1\$s -a ignore_unmodified -l my_lang
+
+Exemple 9: revert ignore of all unmodified keys. It removes the unmodified keys from the ignore file. Warning, this will also revert keys added individually.
+ php %1\$s -a ignore_unmodified -r -l my_lang
+
+Exemple 10: check if a key exist.
php %1\$s -a exist -k my_key\n\n
+
HELP;
$file = str_replace(__DIR__ . '/', '', __FILE__);
echo sprintf($help, $file);