Borrowing it
Nothing to install: this file belongs to BloomBooks/BloomDesktop. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.
curl -O https://raw.githubusercontent.com/BloomBooks/BloomDesktop/master/.claude/skills/xlf-strings/SKILL.mdgit clone --depth 1 https://github.com/BloomBooks/BloomDesktopWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/bloombooks/bloomdesktop/xlf-strings)<a href="https://agentmods.dev/skills/bloombooks/bloomdesktop/xlf-strings"><img src="https://agentmods.dev/badge/skills/bloombooks/bloomdesktop/xlf-strings/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/bloombooks/bloomdesktop/xlf-strings"><img src="https://agentmods.dev/badge/skills/bloombooks/bloomdesktop/xlf-strings.svg" alt="Reviewed on agentmods" width="80" height="20"></a>- NVIDIA SkillSpector pass
What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00016 | $0.02550 |
| Opus 5.5 | $0.00006 | $0.01020 |
| Sonnet 5.5 | $0.00003 | $0.00510 |
| Haiku 4.5 | $0.00002 | $0.00255 |
Grade A, and why
xlf-strings scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 6d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 174 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Apply this skill whenever you add a new localizable string to the codebase, modify an existing one, or review XLF files as part of a task.
This skill is the how — the procedure for each operation. The why — how Crowdin actually
works and what each kind of edit does to existing translations — lives in one place,
DistFiles/localization/README.md. Where a rule here has a reason, that reason is written there
and cited from here rather than restated, so the two can't drift into telling you different
things. Read its "Why we can't just delete a string" section before you conclude that any
deletion or id change is harmless.
Files
Localizable strings live in DistFiles/localization/en/. Only ever add or change strings in the English subdirectory — never touch the other language folders.
There are three priority files. Choose based on what the string labels:
| File | Use for |
|---|---|
Bloom.xlf |
The most important things in our UI that users must understand |
BloomMediumPriority.xlf |
Secondary options, help text, feature-specific instructions, important error messages |
BloomLowPriority.xlf |
Rarely-seen text like error messages |
Strings that are only meant to be seen by developers or if code bugs occur should not be localized. Add comments explaining why they are not.
Making a string in React code localizable
The front end localizes strings in two ways:
- an l10n-aware component, e.g.
<BloomButton l10nKey="myKey">My Text</BloomButton>or<H1 l10nKey="myKey">My Text</H1>; - the hook
useL10n("My Text", "myKey")— the English text first, then the id. It lives insrc/BloomBrowserUI/react_components/l10nHooks.ts; import it by the correct relative path.
import { useL10n } from "../../react_components/l10nHooks";
// somewhere in the Foobar dialog
<button>{useL10n("Brighten everything", "FoobarDialog.BrightenEverything")}</button>
Do not fill in the l10nComment parameter of useL10n; it clutters the code, and the
translator's context goes in the XLF <note> instead (below).
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 6d ago Changed · +8 lines 83bb34bb7672
- 1mo ago Changed · +30 lines f9018977ffb0
- 1mo ago Changed · +6 lines d546626b9566
- 2mo ago First seen · 130 lines · 16 tokens per session scan A edba0717306b
xlf-strings is a skill published in the GitHub repository BloomBooks/BloomDesktop (43 stars, last pushed today), licensed MIT. It adds 16 tokens to every session and 2,550 once invoked, about $0.0001 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
intl-expansion
International market expansion strategy. Market selection, entry modes, localization, regulatory compliance, and go-to-market by region. Use when expanding to new countries, evaluating international markets, planning localization, or building regional teams.
chinese-documentation
A Chinese technical-documentation style guide covering spacing, punctuation, numbers, terminology, and links when Chinese and English appear together.
azure-ai-translation-text-py
Azure AI Text Translation SDK for real-time text translation, transliteration, language detection, and dictionary lookup. Use for translating text content in applications. Triggers: "text translation", "translator", "translate text", "transliterate", "TextTranslationClient".
harden
Improve interface resilience through better error handling, i18n support, text overflow handling, and edge case management. Makes interfaces robust and production-ready. Use when the user asks to harden, make production-ready, handle edge cases, add error states, or fix overflow and i18n issues.
edit-site
Plans, coordinates and customizes PAC CLI-downloaded Standard or Enhanced data model non-SPA Power Pages sites created from Microsoft templates or manually in Design Studio. Use for requests involving pages, localized content, navigation, assets, snippets, site markers, Liquid/web templates, page layouts, or styling.…
asc-subscription-localization
Bulk-localize subscription, subscription-group, and in-app purchase display names across App Store locales using asc, including API 4.4.1 version-scoped v2 resources. Use when filling or updating subscription/IAP names and descriptions without App Store Connect UI work.