.resx satellite resources to Hyperlocalise Platform. You keep text data values in the repository, review them in Platform, and let ResourceManager load the approved satellite files.
Hyperlocalise translates text resources. It does not serialize arbitrary .NET objects. Keep images, icons, and other binary entries out of the mapped files.
Prerequisites
You need:- a .NET project that stores UI strings in
.resxfiles; - the Hyperlocalise CLI;
- a Platform project with
en-USas source andfr-FRandde-DEas targets; and HYPERLOCALISE_API_KEYandHYPERLOCALISE_PROJECT_IDin your environment.
.resw under Strings/<locale>/ follow Translate Windows RESW instead.
1. Keep copy in RESX
Resources/SharedResource.resx:
data name values. <comment> text becomes CAT context. resheader, metadata, and XML comments stay in the file when writeback uses a target whose key set still matches the source.
If the source gains keys, writeback uses the source file as the template. Target-only resources and target-only comments are not merged back.
2. Map the catalogs
Createi18n.yml:
SharedResource.Designer.cs. That file is generated from the neutral .resx and is not a translation catalog.
3. Catch missing keys in the source pull request
Build the project, then preview the upload:SharedResource.resx with the code change. A missing name fails the build when generated properties or GetString lookups do not compile.
4. Push and review
After the source pull request merges:- composite-format placeholders such as
{0}and{1}; - comments that explain argument order;
- labels that must fit compact layouts.
unreachable_plural_case does not apply to {0} saved filters.
5. Pull and validate translations
Run:hl check reports missing target keys and placeholder mismatches on {0}. Then set CultureInfo.CurrentUICulture in a test or switch the thread culture and confirm ResourceManager loads SharedResource.fr-FR.resx.
Open a translation pull request containing the pulled satellite files.
Troubleshooting
Upload fails on mixed XML content
Each translatabledata entry must have a text <value>. Move images and other serialized objects to a resource file that is not in this bucket.
Designer properties disappeared
RegenerateSharedResource.Designer.cs from the neutral SharedResource.resx only. Do not treat a satellite file as the designer source.
A target-only comment vanished after a new source key
The key set changed, so writeback rebuilt the target from the source template. Re-add comments that should live in the satellite file, or keep shared explanations in the source<comment>.
The app still shows English
Confirm the satellite filename uses a .NET culture name (fr-FR, not fr_FR), the file is copied to the output directory, and the running CultureInfo matches that name.

