diff --git a/404.html b/404.html index 5d2924d..cf1ed3e 100644 --- a/404.html +++ b/404.html @@ -1,31 +1,38 @@ - - + 404 - Page Not Found | BentoPDF - - + + - + - - - - - + + + + + - - - - + + + + @@ -34,221 +41,403 @@ - - - + + + - + - +
-
- -
-

- 404 -

-
+
+ +
+

+ 404 +

+
- -

- Page Not Found -

+ +

+ Page Not Found +

- -

- Oops! The page you're looking for seems to have wandered off into the digital void. - Don't worry though, our PDF tools are still right where you left them. -

+ +

+ Oops! The page you're looking for seems to have wandered off into the + digital void. Don't worry though, our PDF tools are still right where + you left them. +

- - - - -
+ + +
@@ -258,14 +447,13 @@ - - - \ No newline at end of file + { + "@context": "https://schema.org", + "@type": "WebPage", + "name": "404 - Page Not Found", + "description": "The page you're looking for doesn't exist on BentoPDF.", + "url": "https://www.bentopdf.com/404" + } + + + diff --git a/TRANSLATION.md b/TRANSLATION.md index 04fb60c..adb844f 100644 --- a/TRANSLATION.md +++ b/TRANSLATION.md @@ -22,11 +22,14 @@ BentoPDF uses **i18next** for internationalization (i18n). Currently supported l - **English** (`en`) - Default - **German** (`de`) - **Vietnamese** (`vi`) +- **Indonesian** (`id`) The app automatically detects the language from the URL path: + - `/en/` → English - `/de/` → German - `/vi/` → Vietnamese +- `/id/` → Indonesian --- @@ -90,11 +93,13 @@ Open `public/locales/fr/common.json` and translate all the values: ⚠️ **Important**: Only translate the **values**, NOT the keys! ✅ **Correct:** + ```json "home": "Accueil" ``` ❌ **Wrong:** + ```json "accueil": "Accueil" ``` @@ -112,49 +117,24 @@ export type SupportedLanguage = (typeof supportedLanguages)[number]; // Add French display name export const languageNames: Record = { - en: 'English', - de: 'Deutsch', - es: 'Español', - fr: 'Français', // ← Add this - zh: '中文', - vi: 'Tiếng Việt', -}; -``` - -Also update the `getLanguageFromUrl` function in the same file: - -```typescript -export const getLanguageFromUrl = (): SupportedLanguage => { - const path = window.location.pathname; - const langMatch = path.match(/^\/(en|de|es|fr|zh|vi)(?:\/|$)/); // ← Add 'fr' here - // ... rest of the function + en: 'English', + de: 'Deutsch', + fr: 'Français', // ← Add this }; ``` ### Step 4: Update Vite Configuration -Edit `vite.config.ts` to add French to the routing middleware: +In `vite.config.ts`, ensure the new language is included in the build: ```typescript -function pagesRewritePlugin(): Plugin { - return { - name: 'pages-rewrite', - configureServer(server) { - server.middlewares.use((req, res, next) => { - const url = req.url?.split('?')[0] || ''; - - // Add 'fr' to this regex pattern - const langMatch = url.match(/^\/(en|de|es|fr|zh|vi)(\/.*)?$/); - // ... rest of the middleware - }); - }, - }; -} +// Add 'fr' to the language regex +const langMatch = url.match(/^\/(en|de|es|zh|vi|it|fr)(\/.*)?$/); ``` -⚠️ **Important**: This step is critical! Without updating the Vite config, you'll get 404 errors when trying to access French pages. + **Important**: This step is critical! Without updating the Vite config, you'll get 404 errors when trying to access French pages. -### Step 5: Restart and Test Your Translation +### Step 5: Test Your Translation ```bash # Stop the dev server (Ctrl+C) @@ -250,6 +230,7 @@ Tool names and descriptions are defined in `src/js/config/tools.ts` and use a sp ``` In translations: + ```json { "tools": { @@ -277,14 +258,15 @@ console.log(message); // "Error" or "Fehler" depending on language For input placeholders: ```html - ``` In `common.json`: + ```json { "tools": { @@ -300,6 +282,7 @@ In `common.json`: ### Manual Testing 1. **Start development server:** + ```bash npm run dev ``` @@ -308,6 +291,7 @@ In `common.json`: - English: `http://localhost:5173/en/` - German: `http://localhost:5173/de/` - Vietnamese: `http://localhost:5173/vi/` + - Indonesian: `http://localhost:5173/id/` - Your new language: `http://localhost:5173/fr/` 3. **Check these pages:** @@ -332,11 +316,12 @@ Check for missing translations: node scripts/check-translations.js ``` -*(If this script doesn't exist, you may need to create it or manually compare JSON files)* +_(If this script doesn't exist, you may need to create it or manually compare JSON files)_ ### Browser Testing Test in different browsers: + - Chrome/Edge - Firefox - Safari @@ -350,11 +335,13 @@ Test in different browsers: BentoPDF is **friendly, clear, and professional**. Match this tone in your translations. ✅ **Good:** + ```json "hero.title": "Ihr kostenloses und sicheres PDF-Toolkit" ``` ❌ **Too formal:** + ```json "hero.title": "Ihr gebührenfreies und gesichertes Werkzeug für PDF-Dokumente" ``` @@ -382,6 +369,7 @@ When translating, **keep the HTML tags intact**: If your language has complex plural rules or gender distinctions, consult the [i18next pluralization guide](https://www.i18next.com/translation-function/plurals). Example: + ```json { "pages": "page", @@ -392,6 +380,7 @@ Example: ### 4. Don't Translate Brand Names or Legal Terms Keep these as-is: + - BentoPDF - PDF - GitHub @@ -404,6 +393,7 @@ Keep these as-is: ### 5. Technical Terms For technical terms, use commonly accepted translations in your language: + - "Merge" → "Fusionner" (French), "Zusammenführen" (German) - "Split" → "Diviser" (French), "Teilen" (German) - "Compress" → "Compresser" (French), "Komprimieren" (German) @@ -423,6 +413,7 @@ If a translation is much longer, test it visually to ensure it doesn't break the ### Issue: Translations Not Showing Up **Solution:** + 1. Clear your browser cache 2. Hard refresh (Ctrl+F5 or Cmd+Shift+R) 3. Check browser console for errors @@ -431,22 +422,26 @@ If a translation is much longer, test it visually to ensure it doesn't break the ### Issue: Some Text Still in English **Possible causes:** + 1. Missing translation key in your language file 2. Missing `data-i18n` attribute in HTML 3. Hardcoded text in JavaScript **Solution:** + - Compare your language file with `en/common.json` to find missing keys - Search the codebase for hardcoded strings ### Issue: JSON Syntax Error **Symptoms:** + ``` SyntaxError: Unexpected token } in JSON at position 1234 ``` **Solution:** + - Use a JSON validator: https://jsonlint.com/ - Common mistakes: - Trailing comma after last item @@ -457,6 +452,7 @@ SyntaxError: Unexpected token } in JSON at position 1234 **Solution:** Make sure you added the language to both arrays in `i18n.ts`: + ```typescript export const supportedLanguages = ['en', 'de', 'es', 'fr', 'zh', 'vi']; // ← Add here export const languageNames = { @@ -494,8 +490,7 @@ When adding a new language, make sure these files are updated: - [ ] `public/locales/{lang}/common.json` - Main translation file - [ ] `public/locales/{lang}/tools.json` - Tools translation file -- [ ] `src/js/i18n/i18n.ts` - Add to `supportedLanguages`, `languageNames`, and `getLanguageFromUrl` regex -- [ ] `vite.config.ts` - Add language code to routing regex in `pagesRewritePlugin` +- [ ] `src/js/i18n/i18n.ts` - Add to `supportedLanguages` and `languageNames` - [ ] Test all pages: homepage, about, contact, FAQ, tool pages - [ ] Test settings modal and shortcuts - [ ] Test language switcher in footer @@ -536,14 +531,14 @@ Thank you for contributing to BentoPDF! 🎉 Current translation coverage: -| Language | Code | Status | Maintainer | -|----------|------|--------|------------| -| English | `en` | ✅ Complete | Core team | -| German | `de` | 🚧 In Progress | Core team | -| Spanish | `es` | ✅ Complete | Community | -| Chinese | `zh` | ✅ Complete | Community | -| Vietnamese | `vi` | ✅ Complete | Community | -| Your Language | `??` | 🚧 In Progress | You? | +| Language | Code | Status | Maintainer | +| ------------- | ---- | -------------- | ---------- | +| English | `en` | ✅ Complete | Core team | +| German | `de` | 🚧 In Progress | Core team | +| Spanish | `es` | ✅ Complete | Community | +| Vietnamese | `vi` | ✅ Complete | Community | +| Indonesian | `id` | ✅ Complete | Community | +| Your Language | `??` | 🚧 In Progress | You? | --- diff --git a/about.html b/about.html index fd431c3..5a2ecbe 100644 --- a/about.html +++ b/about.html @@ -1,334 +1,597 @@ + + + - - - + + About BentoPDF - Privacy-First Free PDF Tools | Our Mission + + + + - - About BentoPDF - Privacy-First Free PDF Tools | Our Mission - - - - + + - - + + + + + + + - - - - - - - + + + + + + - - - - - - + - - - - - + + - - + + + + + + + - - - - - - - + + -
-
-

- We believe PDF tools should be - fast, private, and free. -

-

No compromises.

-
- -
- -
-
- -

- Our Mission -

-

- To provide the most comprehensive PDF toolbox that respects your - privacy and never asks for payment. We believe essential document - tools should be accessible to everyone, everywhere, without - barriers. +

+
+

+ We believe PDF tools should be + fast, private, and free. +

+

+ No compromises.

-
-
+ -
-
-
- Our Core - Philosophy -

- Privacy First. Always. +
+ +
+
+ +

+ Our Mission

-

- In an era where data is a commodity, we take a different approach. - All processing for Bentopdf tools happens locally in your browser. - This means your files never touch our servers, we never see your - documents, and we don't track what you do. Your documents remain - completely and unequivocally private. It's not just a feature; - it's our foundation. +

+ To provide the most comprehensive PDF toolbox that respects your + privacy and never asks for payment. We believe essential document + tools should be accessible to everyone, everywhere, without + barriers.

-
-
-
-
- +
+ +
+
+
+ Our Core Philosophy +

+ Privacy First. Always. +

+

+ In an era where data is a commodity, we take a different approach. + All processing for Bentopdf tools happens locally in your browser. + This means your files never touch our servers, we never see your + documents, and we don't track what you do. Your documents remain + completely and unequivocally private. It's not just a feature; + it's our foundation. +

+
+
+
+
+
+ +
+ +
+

+ Why + Bentopdf? +

+
+
+ +
+

+ Built for Speed +

+

+ No waiting for uploads or downloads to a server. By processing + files directly in your browser using modern web technologies + like WebAssembly, we offer unparalleled speed for all our tools. +

+
+
+
+ +
+

+ Completely Free +

+

+ No trials, no subscriptions, no hidden fees, and no "premium" + features held hostage. We believe powerful PDF tools should be a + public utility, not a profit center. +

+
+
+
+ +
+

+ No Account Required +

+

+ Start using any tool immediately. We don't need your email, a + password, or any personal information. Your workflow should be + frictionless and anonymous. +

+
+
+
+ +
+

+ Open Source Spirit +

+

+ Built with transparency in mind. We leverage incredible + open-source libraries like PDF-lib and PDF.js, and believe in + the community-driven effort to make powerful tools accessible to + everyone. +

+
+
+
+
+ +
+ +
+

+ Ready to get started? +

+

+ Join thousands of users who trust Bentopdf for their daily document + needs. Experience the difference that privacy and performance can + make. +

+ + Explore All Tools + +

-
-

- Why Bentopdf? -

-
-
- -
-

Built for Speed

-

- No waiting for uploads or downloads to a server. By processing - files directly in your browser using modern web technologies - like WebAssembly, we offer unparalleled speed for all our tools. +

+
+
+
+
+ Bento PDF Logo + BentoPDF +
+

+ © 2026 BentoPDF. All rights reserved. +

+

+ Version +

-
-
- +
-

Completely Free

-

- No trials, no subscriptions, no hidden fees, and no "premium" - features held hostage. We believe powerful PDF tools should be a - public utility, not a profit center. -

-
-
-
- -
-

No Account Required +

+ Company

-

- Start using any tool immediately. We don't need your email, a - password, or any personal information. Your workflow should be - frictionless and anonymous. -

+
-
-
- +
-

Open Source Spirit +

+ Legal

-

- Built with transparency in mind. We leverage incredible - open-source libraries like PDF-lib and PDF.js, and believe in - the community-driven effort to make powerful tools accessible to - everyone. -

+ +
+ +
+

+ Follow Us +

+
-
+ -
+ + + + -
-

- Ready to get started? -

-

- Join thousands of users who trust Bentopdf for their daily document - needs. Experience the difference that privacy and performance can - make. -

- - Explore All Tools - -
-
- - - - - - - - - - - - - \ No newline at end of file + + + + diff --git a/contact.html b/contact.html index 624816f..6de7636 100644 --- a/contact.html +++ b/contact.html @@ -1,226 +1,412 @@ + + + + + Contact BentoPDF - Get in Touch | Support + + + - - - - - Contact BentoPDF - Get in Touch | Support - - - + + - - + + + + + + + - - - - - - - + + + + + + - - - - - - + Contact BentoPDF - Get in Touch | Support - Contact BentoPDF - Get in Touch | Support + - - - - - + + - - + + + + + + + - - - - - - - - - - - -
-
-

- Get in Touch -

-

- We'd love to hear from you. Whether you have a question, feedback, or - a feature request, please don't hesitate to reach out. -

-
- -
-

- You can reach us directly by email at: - contact@bentopdf.com -

-
-
- - - - - - - - - + + + + + + + + + + diff --git a/docs/self-hosting/hostinger.md b/docs/self-hosting/hostinger.md index ea8ac55..8deaf68 100644 --- a/docs/self-hosting/hostinger.md +++ b/docs/self-hosting/hostinger.md @@ -40,7 +40,6 @@ BASE_URL=/pdf-tools/ npm run build 2. Create the folder in Hostinger: - Go to **File Manager** → **public_html** - Create a new folder: `pdf-tools` - 3. Upload all contents of `dist` to `public_html/pdf-tools/` ## Step 3: Create .htaccess File @@ -64,7 +63,7 @@ RewriteBase / Header always set X-XSS-Protection "1; mode=block" Header always set Referrer-Policy "strict-origin-when-cross-origin" Header always set Permissions-Policy "geolocation=(), microphone=(), camera=()" - + # REQUIRED for soffice.js (SharedArrayBuffer) Header always set Cross-Origin-Opener-Policy "same-origin" Header always set Cross-Origin-Embedder-Policy "require-corp" @@ -161,8 +160,8 @@ RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^ - [L] # Language routes -RewriteRule ^(de|en|zh|vi)/(.*)$ /$2 [L] -RewriteRule ^(de|en|zh|vi)/?$ / [L] +RewriteRule ^(en|de|zh|vi|it|id)/(.*)$ /$2 [L] +RewriteRule ^(en|de|zh|vi|it|id)/?$ / [L] # ============================================ # 5.5. DOCS ROUTING (VitePress) @@ -181,7 +180,7 @@ RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^ /index.html [L] -ErrorDocument 404 /index.html +ErrorDocument 404 /index.html ``` ## Subdirectory .htaccess Example diff --git a/faq.html b/faq.html index 00f40c0..34190bd 100644 --- a/faq.html +++ b/faq.html @@ -1,367 +1,587 @@ + + + + + FAQ - Frequently Asked Questions | BentoPDF + + + - - - - - FAQ - Frequently Asked Questions | BentoPDF - - - + + - - + + + + + + + - - - - - - - + + + + + + - - - - - - + FAQ - Frequently Asked Questions | BentoPDF + - FAQ - Frequently Asked Questions | BentoPDF - + + - - + + + + + + + - - - - - - - - - - - -
-
-

- Frequently Asked Questions -

-

- Have questions? We've got answers. Here are some of the most common - things people ask about BentoPDF. -

-
- -
-
- -

- Are my files safe and private? -

- -
-
-

- Absolutely. This is the most important feature of - BentoPDF. All processing happens 100% locally in your web browser. - Your files are never uploaded to any server, which means we—or - anyone else—can never see them. Your privacy is guaranteed. -

-
-
- -
- -

- Is BentoPDF really free? What's the catch? -

- -
-
-

- Yes, it's completely free, and there's no catch. There are no - hidden fees, no subscription plans, no usage limits, and no - premium-only features. We believe essential tools should be - accessible to everyone. -

-
-
- -
- -

- Do I need an internet connection to use the tools? -

- -
-
-

- After you load the website for the first time, most tools will - work completely offline! Because all the processing libraries are - loaded into your browser, you can disconnect from the internet and - continue to merge, split, compress, and edit your PDFs securely. - Some niche tools that require external data (like Markdown to PDF - with web images) may need a connection. -

-
-
- -
- -

- Are there any file size or usage limitations? -

- -
-
-

- No, we do not impose any artificial limits on file size, the - number of files, or how many times you can use a tool. The only - practical limitation is the processing power and memory of your - own computer, as very large or complex files may take longer to - process. -

-
-
- -
- -

- Why did my PDF fail to process? -

- -
-
-

Failures are rare but can happen for a few reasons:

-
    -
  • - The PDF might be corrupted or not compliant with standard - specifications. -
  • -
  • - The file could be encrypted with a password you don't have. - Please use our Decrypt tool first. -
  • -
  • - The file might be a special "XFA" or dynamic form-based PDF, - which some of our tools cannot process. -
  • -
-
-
- -
- -

- Do you track my activity on BentoPDF? -

- -
-
-

- We care about your privacy. BentoPDF does not track personal - information. We use - Simple Analytics - solely to see anonymous visit counts. This means we can know how - many users visit our site, but - we never know who you are. Simple Analytics is - fully GDPR-compliant and respects your privacy. -

-
-
- -
- -

- What technology does BentoPDF use? -

- -
-
-

- BentoPDF is built on the power of modern web technologies. We - primarily use JavaScript libraries like - PDF-lib.js and PDFKit.js that - are compiled to run efficiently in your browser via WebAssembly. - This allows for powerful, server-like processing without your data - ever leaving your machine. -

-
-
-
- -
- -
-

- Still have questions? -

-

- If you can't find the answer you're looking for, feel free to reach - out to our support team. We're always Bento to help. -

- - Contact Us - -
-
- -
-
-
-
-
- Bento PDF Logo - BentoPDF + + + +
+
+

+ Frequently Asked Questions +

+

+ Have questions? We've got answers. Here are some of the most common + things people ask about BentoPDF. +

+
+ +
+
+ +

+ Are my files safe and private? +

+ +
+
+

+ Absolutely. This is the most important feature of + BentoPDF. All processing happens 100% locally in your web browser. + Your files are never uploaded to any server, which means we—or + anyone else—can never see them. Your privacy is guaranteed. +

+
+
+ +
+ +

+ Is BentoPDF really free? What's the catch? +

+ +
+
+

+ Yes, it's completely free, and there's no catch. There are no + hidden fees, no subscription plans, no usage limits, and no + premium-only features. We believe essential tools should be + accessible to everyone. +

+
+
+ +
+ +

+ Do I need an internet connection to use the tools? +

+ +
+
+

+ After you load the website for the first time, most tools will + work completely offline! Because all the processing libraries are + loaded into your browser, you can disconnect from the internet and + continue to merge, split, compress, and edit your PDFs securely. + Some niche tools that require external data (like Markdown to PDF + with web images) may need a connection. +

+
+
+ +
+ +

+ Are there any file size or usage limitations? +

+ +
+
+

+ No, we do not impose any artificial limits on file size, the + number of files, or how many times you can use a tool. The only + practical limitation is the processing power and memory of your + own computer, as very large or complex files may take longer to + process. +

+
+
+ +
+ +

+ Why did my PDF fail to process? +

+ +
+
+

Failures are rare but can happen for a few reasons:

+
    +
  • + The PDF might be corrupted or not compliant with standard + specifications. +
  • +
  • + The file could be encrypted with a password you don't have. + Please use our Decrypt tool first. +
  • +
  • + The file might be a special "XFA" or dynamic form-based PDF, + which some of our tools cannot process. +
  • +
+
+
+ +
+ +

+ Do you track my activity on BentoPDF? +

+ +
+
+

+ We care about your privacy. BentoPDF does not track personal + information. We use + Simple Analytics + solely to see anonymous visit counts. This means we can know how + many users visit our site, but + we never know who you are. Simple Analytics is + fully GDPR-compliant and respects your privacy. +

+
+
+ +
+ +

+ What technology does BentoPDF use? +

+ +
+
+

+ BentoPDF is built on the power of modern web technologies. We + primarily use JavaScript libraries like + PDF-lib.js and PDFKit.js that + are compiled to run efficiently in your browser via WebAssembly. + This allows for powerful, server-like processing without your data + ever leaving your machine. +

+
+
+
+ +
+ +
+

+ Still have questions? +

+

+ If you can't find the answer you're looking for, feel free to reach + out to our support team. We're always Bento to help. +

+ + Contact Us + +
-
- - - - - - - + + + + + + + + + diff --git a/index.html b/index.html index 0770c6f..4e6a244 100644 --- a/index.html +++ b/index.html @@ -1,1101 +1,1721 @@ + + + - - - + + BentoPDF - Free Online PDF Tools | Privacy-First PDF Toolkit + + + + + - - BentoPDF - Free Online PDF Tools | Privacy-First PDF Toolkit - - - - - + + - - + + + + + + + + + + - - - - - - - - - - + + + + + + + + - - - - - - - - + + + + + - - - - - + + - - + + + + + + - - - - - - + + - - - - - - - - - - - - -
-
- - Love BentoPDF? Help us keep it free and open source! - - - - Donate - - - - - - Sponsor - -
-
- -
-
-
-

- The - PDF Toolkit built - for - privacy. -

- -
- - - No Signups - - - - Unlimited Use - - - - Works Offline - -
- - -
- - -
+ + + + +
+
+ + Love BentoPDF? Help us keep it free and open source! + + + + Donate + + + + + + Sponsor + +
+
+ +
+
+
+

+ The + + PDF Toolkit + + + built for privacy. +

+
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- -
- -
-

- BentoPDF? -

-
-
-
- -

No Signup

-
-

- Start instantly, no accounts or emails. -

-
-
-
- -

No Uploads

-
-

- 100% client-side, your files never leave your device. -

-
-
-
- -

Forever Free

-
-

- All tools, no trials, no paywalls. -

-
-
-
- -

No Limits

-
-

- Use as much as you want, no hidden caps. -

-
-
-
- -

Batch Processing

-
-

Handle unlimited PDFs in one - go. -

-
-
-
- -

Lightning Fast

-
-

- Process PDFs instantly, without waiting or delays. -

-
-
-
- -
- -
-

- Get Started with Tools -

-

Click a tool to open the file uploader

-
- -
-
-
- - + class="flex flex-wrap justify-center items-center gap-2 sm:gap-4 mb-12 mt-12" + > + + + No Signups - - - - + + + Unlimited Use + + + + Works Offline
-
-
-
+ + - + +
+
+

+ Used by companies and people working at +

+
+ + + + - +
+ +
+ +
+

+ + BentoPDF? +

+
+
+
+ +

+ No Signup +

+
+

+ Start instantly, no accounts or emails. +

+
+
+
+ +

+ No Uploads +

+
+

+ 100% client-side, your files never leave your device. +

+
+
+
+ +

+ Forever Free +

+
+

+ All tools, no trials, no paywalls. +

+
+
+
+ +

+ No Limits +

+
+

+ Use as much as you want, no hidden caps. +

+
+
+
+ +

+ Batch Processing +

+
+

+ Handle unlimited PDFs in one go. +

+
+
+
+ +

+ Lightning Fast +

+
+

+ Process PDFs instantly, without waiting or delays. +

+
+
+
+ +
+ +
+

+ Get Started with + + Tools +

+

+ Click a tool to open the file uploader

-
- + +
+
+ + -
-