America's Future · born between 2 generals
A universal, drop-in accessibility helper for every app. It adds a floating button (bottom-right) with 24 languages, larger text, read-aloud, reading speed, and a voice picker. It works on any framework, isolates its own styles, and remembers each visitor's choices across every app they visit.
Language
Pick a language and the whole page is translated in place — headings, body copy, buttons, link text, form placeholders, image descriptions and tooltips — then Read aloud speaks it in that language with a matching voice. Right-to-left languages flip the page direction automatically, and single-page apps keep translating as new content loads.
Español · Français · Deutsch · Українська · Português · Italiano · Polski · Русский · 中文 · 日本語 · 한국어 · العربية · עברית · فارسی · हिन्दी · Tiếng Việt · Tagalog · Soomaali · Kreyòl Ayisyen · Kiswahili · Türkçe · Nederlands · Română · Ελληνικά
Translation runs through translate.bornbetween2generals.com. Results are cached in the visitor's browser, so a page they have already read costs nothing to read again.
Read aloud & transcript
Read this page speaks the page from the top, in whichever language is
selected, using a matching voice. Show transcript opens a readable text
version of the same content: the line being spoken is highlighted and scrolls itself into
view, clicking any line starts reading from there, and the whole transcript can be copied or
saved as a .txt file.
Navigation, buttons, code blocks, and anything marked no-translate are left out of both the spoken audio and the transcript.
Keeping something out of translation
Add data-no-translate (or translate="no", or
class="notranslate") to any element to leave it in the original language —
useful for legal names, quoted statute text, and code samples.
<pre>, <code>, and <textarea> are skipped already.
To hide the Language section on one app, set window.__bbgNoTranslate = true before the script tag.
Add it to any app — one line
<script defer src="https://a11y.bornbetween2generals.com/a11y.js"></script>
Put it before </body> in static sites, or in the root layout for Next.js apps.
The widget on this page is live — try the round button in the corner.