'Articles', 'catalog' => 'Catalog', 'my_feeds' => 'My feeds', 'settings' => 'Settings', 'logout' => 'Log out', 'change_theme' => 'Switch theme', '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.', // 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.', '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.', ];