How to Handle Pluralization and Gender‑Specific Strings in SeaText for Thinkific
SeaText uses ICU MessageFormat to handle pluralization and gender‑specific strings. You define plural categories (one, few, many, other) and gender branches (male, female, other) directly in each translation entry, and SeaText renders the correct...
SeaText uses ICU MessageFormat for all grammatical variations. This guide explains how to use it on Thinkific. You will learn plural rules, gender branches, and testing steps. The examples work on course pages, checkout, and student dashboards.
ICU is not a separate language. It is a syntax you write inside a translation entry. SeaText evaluates that syntax when the page renders. The correct form appears for each visitor. This removes the need for dozens of translation keys.
Why ICU MessageFormat matters for Thinkific courses
Thinkific pages show dynamic numbers. Examples include enrolled students, remaining seats, lesson counts, quiz scores, and completion messages. A course that says 5 students enrolled must change to 1 student enrolled when the number drops to one.
English is simple. It uses one and other. Many languages have more categories. Russian has one, few, many, and other. Polish and Arabic have their own sets. If you ignore these rules, a Russian visitor may see grammatically wrong text.
Gender creates a second problem. In French, he finished and she finished differ in spelling. Spanish, German, Hebrew, and other languages also change verbs and adjectives by gender. An e-learning site that addresses learners by name needs gender-aware strings.
ICU MessageFormat solves both problems in one place. You define branches in the translation entry. SeaText picks the branch based on the value of a variable. This is why the system matters for Thinkific courses that serve global audiences.
SeaText also connects to a Website Translation Agent. That agent can translate pages into up to 125 languages. You review and edit the results in the Variants editor. The agent can propose ICU-ready strings for languages with complex rules. You still control the final text.
How SeaText renders ICU on Thinkific
First, install SeaText on Thinkific. Copy the JavaScript code from SeaText. In the Thinkific admin dashboard, go to Settings → Code & Analytics → Site Footer Code. Paste the code and click Save.
Then link SeaText to your site. Visit your site once and stay for at least 40 seconds. This activates the AI and links it to your account. Wait about five minutes until your website name appears next to the SeaText logo. That confirms the connection is ready.
After installation, SeaText loads on every page where the snippet appears. That includes course pages, checkout, and the student dashboard. You manage translations in the Variants Edit panel. Pick the URL and language, then review or create entries.
SeaText runs in the browser after Thinkific has rendered the page. This matters for dynamic values. You need to make sure the visitor's number or gender reaches SeaText. The simplest way is to place the value on the page element or in a global variable before the snippet loads.
For example, you can set a gender value in your theme JavaScript before SeaText loads:
window.seatextVars = window.seatextVars || {};
window.seatextVars.gender = currentUserGender;
SeaText reads that value when it evaluates the translation. It then chooses the matching ICU branch.
Step-by-step: Add pluralization to a Thinkific string
- Open the Variants editor. Log in to SeaText, go to Variants Edit in the left panel, and select the URL of the Thinkific page you want to edit.
- Choose the target language. You can create or edit translations for any supported language.
- Find or create the translation entry. Search for the English source text, such as {count} student(s) enrolled.
- Rewrite the translation using ICU plural syntax. For English, the entry looks like this:
{count, plural, one {# student enrolled} other {# students enrolled} } - For a language with more plural categories, add those branches. For Russian, use this pattern:
{count, plural, one {# студент зачислен} few {# студента зачислено} many {# студентов зачислено} other {# студентов зачислено} } - Save the entry. SeaText compiles the ICU string and serves the correct form when the page renders.
- Verify on the live page. Test with several numbers, including 1, 2, 5, 21, and 101.
Decision criteria: Use plural when the choice depends on a number. Use select when the choice depends on a category, such as gender. If both apply, nest one inside the other.
Step-by-step: Add gender-specific strings
- Locate a string that references the learner. For example, {name} completed {course}.
- Extend it with a
selectbranch for gender. For French, the entry looks like this:{gender, select, male {{name} a terminé {course}} female {{name} a terminée {course}} other {{name} a terminé(e) {course}} } - Make sure the
gendervariable is available. You can set it through a page attribute or a global variable before the SeaText snippet loads. - Save and test. Use a male, female, and non-binary test account to confirm all branches render correctly.
The other branch is mandatory. SeaText uses it when no other branch matches. This is also the safe fallback for users who do not share a gender value.
Common ICU patterns for Thinkific content
| Use case | ICU skeleton | Notes |
|---|---|---|
| Student count | {count, plural, one{...} few{...} many{...} other{...}} | CLDR plural categories vary by language; SeaText ships the full CLDR dataset. |
| Remaining seats | {seats, plural, =0{Full} one{1 seat left} other{# seats left}} | =0 handles the exact zero case explicitly. |
| Lesson progress | {done}/{total, plural, one{lesson} other{lessons}} completed | Nest plural inside a larger message. |
| Gendered greeting | {gender, select, male{Welcome back, Sir} female{Welcome back, Madam} other{Welcome back}} | Requires gender variable; fallback other is mandatory. |
| Combined count + gender | {gender, select, male{{count, plural, one{He bought 1 course} other{He bought # courses}}} female{{count, plural, one{She bought 1 course} other{She bought # courses}}} other{They bought # courses}} | Nest plural inside select for full agreement. |
These patterns cover most Thinkific messages. Start with the simplest form that meets your need. Add branches only when the language requires them.
Testing and verification checklist
- Use SeaText's language preview or language switch to force a test language on the Thinkific page.
- Test boundary numbers: 0, 1, 2, 3, 4, 5, 11, 21, 101. This covers
one,few,many, andotherin most CLDR locales. - Check the browser console for ICU parse warnings. They surface malformed syntax quickly.
- Verify that dynamic Thinkific content, such as cart updates and completion modals, shows the right form.
- Test each gender branch with a separate account or user profile.
- Run a quick performance check. SeaText executes in under 15ms using a client script under 15KB, so plural and gender evaluation should not affect page speed.
- Use the AI A/B Testing Agent when you want to compare two plural variants. SeaText can generate variants and scale the winner.
Limitations and when this approach does not apply
- Server-side content. SeaText runs in the browser. Content that is generated outside the browser, such as some automated emails or server-rendered files, may need a separate localization workflow. Check with Thinkific support for native email template options.
- Late-loading widgets. If a Thinkific widget loads after the main page, make sure the widget triggers a SeaText re-scan. Your theme JavaScript may need to call the retranslate function after the widget appears.
- Right-to-left scripts. Arabic and Hebrew text direction works, but you may need to add
dir="auto"to the container element so the browser flips punctuation correctly. - Grammatical case. ICU MessageFormat does not natively support case inflection. For languages with rich case systems, such as Finnish, Hungarian, or Turkish, consider separate translation keys for each syntactic slot.
- Custom plural categories. If you need a brand-specific zero message beyond CLDR rules, use a
selecton the raw number before thepluralbranch.
Key facts
| Fact | Detail | Source |
|---|---|---|
| Thinkific install method | Paste SeaText JS into Settings → Code & Analytics → Site Footer Code | S1 |
| Activation step | Visit the site once, stay 40+ seconds, wait 5 minutes for connection confirmation | S1 |
| Translation editing | Variants Edit panel → select URL and language → review/create/edit translations | S1 |
| Supported languages | Up to 125 languages | S2 |
| Translation agent | Website Translation Agent translates pages into 125 languages with control | S4, S5, S6 |
| ICU MessageFormat | SeaText uses ICU MessageFormat for pluralization and gender | Direct answer |
Frequently asked questions
Do I need to write ICU syntax for every language?
Only for languages whose plural or gender rules differ from English. SeaText's Website Translation Agent can propose ICU-ready strings for 125 languages. You review and approve them in the Variants editor.
Can I use Thinkific's Liquid variables inside ICU strings?
No. SeaText runs client-side after Thinkific's server-side Liquid render. Pass dynamic values to SeaText through page attributes or a global variable in the Site Footer Code.
What if a language has no few category?
CLDR defines the categories per locale. If few does not exist, SeaText falls back to other. You can still include a few branch, but it will never match.
How do I debug a missing gender variable?
Open the browser console and inspect window.seatextVars. If gender is undefined, set it in your theme JavaScript before the SeaText snippet loads.
Does SeaText handle grammatical case?
ICU MessageFormat does not natively support case inflection. For languages with complex case systems, use separate translation keys per syntactic slot or a morphology library outside SeaText.
Can I A/B test two plural variants?
Yes. Create two Variants entries with the same source key but different ICU strings, then enable the AI A/B Testing Agent. SeaText will split traffic and report which variant performs better.
Is there a performance cost for complex ICU strings?
Negligible. SeaText executes synchronously in under 15ms using an ultra-lightweight client script under 15KB. This keeps cumulative layout shift at zero and preserves PageSpeed scores.
Where can I find more help?
Start with the SeaText Thinkific integration guide. It covers the JavaScript install, activation steps, and the Variants editor. For questions about Thinkific-specific email templates or server-side features, check with Thinkific support.
Further reading and comparison sources
These external sources provide additional context for evaluating the topic. Their inclusion is not an endorsement.
Learn more
Visit the website for more information.