'Articles', 'catalog' => 'Catalog', 'my_feeds' => 'My feeds', 'settings' => 'Settings', 'logout' => 'Log out', 'change_theme' => 'Switch theme', 'nav_menu' => 'Menu', 'language' => 'Language', 'self_hosting' => 'Self-hosting', 'login' => 'Log in', 'create_account' => 'Create an account', 'source_code' => 'Source code', 'footer_tagline' => 'BloomFeed — open-source, self-hosted project.', 'meta_description' => 'BloomFeed is a personal, self-hosted RSS aggregator with a built-in reader.', // Home 'hero_eyebrow' => 'Self-hosted · Privacy first', 'hero_title' => 'Your RSS feeds, read in depth, without ever leaving BloomFeed.', 'hero_lede' => 'BloomFeed gathers your favorite feeds and extracts their full content on demand, right on your own server. No data ever sent to third parties.', 'how_to_self_host' => 'How to self-host it?', 'feature_feeds_title' => 'Your feeds, your way', 'feature_feeds_text' => 'Add any RSS or Atom feed, organize them and keep track of your unread items at a glance.', 'feature_reader_title' => 'Built-in deep reader', 'feature_reader_text' => 'BloomFeed fetches the source page, extracts the main content and displays it cleanly — no more juggling ten tabs.', 'feature_home_title' => 'Your home, your rules', 'feature_home_text' => 'One BloomFeed instance = one owner. No public sign-ups by default, no tracking, your server, your data.', 'screenshots_title' => 'See it in action', 'screenshots_lede' => 'A quick look at the dashboard, the built-in reader, the feed catalog and the notifiers screen.', 'screenshot_dashboard' => 'Dashboard', 'screenshot_dark' => 'Dark mode', 'screenshot_reader' => 'Built-in reader', 'screenshot_catalog' => 'One-click feed catalog', 'screenshot_notifiers' => 'Discord & webhook notifiers', 'badge_self_hosted' => 'Self-hosted', 'badge_open_source' => 'Open-source', 'badge_mit_license' => 'MIT license', 'badge_four_languages' => '4 languages', 'feature_multiuser_title' => 'Built for your household', 'feature_multiuser_text' => 'Invite the people you trust with a direct account, or open registrations for a while — everyone keeps their own feeds, reads and notifiers.', // Authentication 'login_title' => 'Log in', 'login_subtitle' => 'Access your feeds and your reading list', 'email' => 'Email address', 'password' => 'Password', 'confirm_password' => 'Confirm password', 'name' => 'Name', 'no_account_yet' => 'No account yet?', 'already_account' => 'Already have an account?', 'register_owner_title' => 'Set up your instance', 'register_owner_subtitle' => 'This account will be the owner of this BloomFeed instance', 'register_title' => 'Create an account', 'register_subtitle' => 'Join this BloomFeed instance', 'register_button' => 'Create my account', 'registrations_closed' => 'Registrations are closed on this instance. Please log in.', 'invalid_credentials' => 'These credentials do not match any account.', // Dashboard 'latest_articles' => 'Latest articles', 'unread_only' => 'Unread only', 'show_all' => 'Show all', 'empty_no_feeds' => 'Add your first RSS feed from the sidebar to get started.', 'empty_no_articles' => 'No articles yet. Try refreshing your feeds.', // Sidebar 'feeds_label' => 'Feeds', 'all_articles' => 'All articles', 'add_feed' => 'Add a feed', 'add' => 'Add', 'refresh_all' => 'Refresh all', 'manage_feeds' => 'Manage my feeds', 'feed_url_placeholder' => 'https://example.com/rss.xml', // Feed management 'custom_title_optional' => 'Custom title (optional)', 'articles_count' => ':count article(s)', 'refreshed_ago' => 'refreshed :time', 'refresh' => 'Refresh', 'delete' => 'Delete', 'confirm_delete_feed' => 'Delete this feed and all its articles?', 'no_feeds_yet' => "You haven't added any feeds yet.", 'feed_added' => 'Feed added with :count article(s).', 'feed_added_error' => 'Feed added, but the first fetch failed: :error', 'feed_deleted' => 'Feed deleted.', 'refresh_failed' => 'Fetch failed: :error', 'new_articles' => ':count new article(s).', 'new_articles_across' => ':count new article(s) across :feeds feeds.', // Reader 'back_to_articles' => 'Back to articles', 'view_original' => 'View original source', 'fetch_error' => 'Could not fetch the full content of this article (:error).', 'retry' => 'Retry', 'fetching' => 'Fetching content…', // Catalog 'catalog_title' => 'Feed catalog', 'catalog_lede' => 'A curated selection of RSS feeds shipped with BloomFeed — add them to your collection in one click.', 'search_placeholder' => 'Search feeds… (name, description, category)', 'all' => 'All', 'added' => 'Added', 'catalog_empty' => 'The catalog is empty for now.', 'no_match' => 'No feed matches your search.', // Settings 'settings_title' => 'Instance settings', 'registrations_section' => 'Public registrations', 'registrations_desc' => 'Allow any visitor to create an account on this instance from the login page.', 'registrations_state_open' => 'Registrations are currently open.', 'registrations_state_closed' => 'Registrations are currently closed.', 'open_registrations' => 'Open registrations', 'close_registrations' => 'Close registrations', 'registrations_now_open' => 'Registrations are now open.', 'registrations_now_closed' => 'Registrations are now closed.', 'create_user_section' => 'Create an account', 'create_user_desc' => 'Create an account directly for someone you trust, without opening public registrations.', 'user_created' => 'Account created.', 'users_section' => 'Existing accounts', 'owner_badge' => 'Owner', // Self-hosting page 'selfhost_title' => 'Self-host BloomFeed', 'selfhost_intro' => 'BloomFeed is designed to run on your own server, for you (or your household). Everything runs in Docker: the application, the scheduler and the MariaDB database.', 'prereq_title' => 'Prerequisites', 'prereq_docker' => 'A Linux server with Docker and the Docker Compose plugin.', 'prereq_port' => 'Port 7081 available (configurable in docker-compose.yml).', 'prereq_proxy' => 'Optional: a domain name and a reverse proxy if you want HTTPS.', 'install_title' => 'Installation', 'install_step_clone' => 'Clone the repository on your server.', 'install_step_script' => 'Run the deployment script:', 'install_env_note' => 'It automatically creates a .env file (from .env.example) and generates random secrets (APP_KEY, database passwords) when missing — they are never regenerated on subsequent deployments.', 'install_step_containers' => 'The script builds the images and starts the containers (application, scheduler, MariaDB).', 'install_step_owner' => 'Open http://your-server:7081 and create the owner account — registrations close automatically afterwards.', 'config_title' => 'Configuration', 'config_registrations' => 'From the Settings menu, the owner account can directly create accounts for trusted people, or open/close public registrations with one click.', 'config_language' => 'The interface is available in French, English, Spanish and German — each user picks their language from the selector at the top of the page.', 'config_catalog' => 'The built-in feed catalog can be customized by editing resources/data/bloomflux.json and redeploying.', 'update_title' => 'Update', 'update_text' => 'Simply re-run the deployment script: it pulls the latest changes and rebuilds the stack without touching your data.', 'backup_note' => 'Before every redeploy, the database is automatically backed up to backups/ (the last 10 backups are kept). If the backup fails, the update is aborted so your data is never put at risk.', 'uninstall_title' => 'Uninstall', 'uninstall_text' => 'The uninstall.sh script cleanly stops and removes the Docker stack. It asks for explicit confirmation before deleting your data and never removes the source code without a separate confirmation.', 'source_title' => 'Source code', // Catalog sources & language filter 'all_languages' => 'All languages', 'catalog_sources_section' => 'Catalog sources', 'catalog_sources_desc' => 'Add more feed catalogs by providing the raw URL of a bloomflux.json file hosted in another git repository. Feeds are merged with the built-in catalog, and the last known copy is served if the source is unreachable.', 'source_url_label' => 'URL of the bloomflux.json file', 'add_source' => 'Add source', 'remove' => 'Remove', 'source_added' => 'Source added (:count feeds).', 'source_already_added' => 'This source is already registered.', 'source_removed' => 'Source removed.', 'source_invalid' => 'Could not read this source (a valid bloomflux.json file is expected).', 'no_sources' => 'No external sources yet.', // Notifiers 'notifiers' => 'Notifiers', 'notifiers_lede' => 'Get a Discord alert or a generic webhook call whenever a new article arrives on your feeds. Each user manages their own notifiers.', 'new_notifier' => 'New notifier', 'notifier_type' => 'Type', 'generic_webhook' => 'Generic webhook', 'notifier_name' => 'Name', 'notifier_name_placeholder' => 'e.g. Discord #news', 'notifier_url' => 'Webhook URL', 'notifier_scope' => 'Scope', 'scope_all' => 'All my feeds', 'scope_feeds' => 'Specific feeds', 'scope_feeds_pick' => 'Choose feeds', 'scope_feeds_list' => 'Feeds: :feeds', 'no_feeds_selected' => 'no feed selected', 'add_notifier' => 'Add notifier', 'your_notifiers' => 'Your notifiers', 'no_notifiers_yet' => "You haven't configured any notifier yet.", 'disabled' => 'disabled', 'send_test' => 'Test', 'enable' => 'Enable', 'disable' => 'Disable', 'confirm_delete_notifier' => 'Delete this notifier?', 'edit' => 'Edit', 'save' => 'Save', 'last_triggered' => 'triggered :time', 'notifier_created' => 'Notifier created.', 'notifier_updated' => 'Notifier updated.', 'notifier_deleted' => 'Notifier deleted.', 'notifier_test_ok' => 'Test notification sent successfully.', 'notifier_test_failed' => 'Failed to send the test notification — check the URL.', 'reset_title' => 'Reset', 'reset_text' => 'The reset.sh script wipes the instance back to a blank state (accounts, feeds, articles, notifiers) without touching the source code, .env or Docker images — useful to start over on a clean instance.', // Auto-update 'autoupdate_title' => 'Automatic updates', 'autoupdate_text' => 'The auto-update.sh script periodically checks for new commits on the repository and only redeploys when needed, via a scheduled task on the server (never from the application container).', 'autoupdate_comment_install' => 'checks every 30 minutes', 'autoupdate_comment_status' => 'shows status and recent logs', 'autoupdate_comment_uninstall' => 'disables automatic updates', // SEO 'seo_home_title' => 'BloomFeed — Self-hosted, open-source RSS aggregator', 'seo_selfhost_title' => 'Self-host BloomFeed — Docker installation guide', ];