defaultLanguage. Responses return stored translations. FITsociety does not
generate translations or select a language based on request headers.
Supported resources
Read-only resources return their stored languages. Personal names, free-form
notes, client answers and financial snapshots do not use this translation
contract.
Writing translations
- Create requires
defaultLanguage. Use canonical BCP-47 language codes, such asnl,en, oren-GB; the calendar restriction above still applies. - Each text map accepts up to 25 languages. Codes are canonicalized; duplicate codes after canonicalization are rejected.
- Every nonempty map must include
defaultLanguage. Values must be nonempty strings; surrounding whitespace is removed. Field limits apply per language. - A supplied map replaces all translations for that field. Omitted PATCH fields retain their translations. Include the whole map when adding a language.
- Optional text can be cleared with
{}. Required text cannot be empty. Plain strings,null, arrays, empty translation strings and the input language codeundare rejected. - A change of
defaultLanguagerequires the new language in all retained nonempty maps. It also changes the source text used for assignments and notifications. - Habit template
remindersand form structure arrays follow their documented replacement rules. Include all required elements and their complete text maps.
cURL
Legacy records and display fallback
When the source language is unknown,defaultLanguage is null. A legacy
string is returned as { "und": "Original text" }; an empty string becomes
{}. Existing maps retain their language codes. GET requests never write data
or guess a language from the company or coach settings.
The first Public API content update of a legacy form, habit template or product
requires an explicit defaultLanguage to declare the language of retained
source text.
If the source text of a form, habit template or product changes
through the coach dashboard, previous translations for that field are no longer
returned.
Unchanged source text retains its translations.
Consumers can choose the requested language, then the declared default language,
then und. If none exists, use an explicitly chosen stored language or your
application’s missing-text treatment. Missing translations are absent keys;
they are not copies of another language. The API does not perform this fallback
on behalf of the consumer.