reckfellENGINE

Translation

Message resource for one locale, with contexts and plural forms.

On this page
class TranslationReckfellSharpInherits Resource

Stores translations for the locale specified by Locale. Messages are identified by source key and context; plural forms are selected by the locale rules or PluralRulesOverride. Form selection does not insert the count into the text.

Loading a Translation does not register it for global lookup. Register the resource in project translation settings or with TranslationServer.AddTranslation. Use TranslationServer.Translate or TranslatePlural for lookup with the current and fallback locales; a direct GetMessage queries this resource.

Declarations checked against C# SDK 1.0.0. Expand a name to see declarations and documentation.

Constructors1

TranslationConstructor
# Translation
C#
public Translation();

Creates an owned empty catalog with Locale="en" and empty PluralRulesOverride. Does not register it with TranslationServer or change the project language. Dispose the resource after use.

Properties3

LocaleProperty
# Locale
C#
public string Locale { get; set; }

Resource locale, default en. The setter standardizes its identifier and clears cached rules when no explicit override exists. Does not switch the global language, automatically retranslate existing UI text or emit Changed.

MessagesProperty
# Messages
C#
public Reckfell.Collections.Dictionary Messages { get; set; }

Internal storage Dictionary snapshot: Array key [context, srcMessage], nonempty Array value of form strings. The getter creates separate containers. The setter first clears the whole map, then copies entries; it also accepts a string key with one string value and no context. Neither a merge nor a complete resource format. Do not supply unchecked arrays: key length 2 is not fully validated. Emits no Changed; dispose the owned Dictionary after reading.

PluralRulesOverrideProperty
# PluralRulesOverride
C#
public string PluralRulesOverride { get; set; }

Explicit rules such as nplurals=2; plural=(n != 1);. Empty text selects Locale rules then the English fallback. The setter clears cached rules but changes no stored forms and emits no Changed. An invalid override can produce a diagnostic before fallback; this is not successful validation. Keep form count/order consistent with the rules.

Methods15

AddMessagevoid
# AddMessage
C#
public void AddMessage(StringName srcMessage, StringName xlatedMessage, StringName context = null);

Assigns one string to the exact (context, srcMessage) pair. Replaces an existing translation and all of its plural forms rather than adding only absent entries. An empty value is allowed but its lookup result is indistinguishable from a miss. Emits no Resource.Changed.

Parameters
NameTypeDefault
srcMessageStringName—
xlatedMessageStringName—
contextStringNamenull
srcMessage

Exact case-sensitive source key paired with context for base lookup.

xlatedMessage

Translated string; may be empty. No automatic placeholder or count insertion.

context

Exact context; null/default means empty. _GetMessage/_GetPluralMessage receive the supplied value without searching other contexts.

AddPluralMessage2 overloads
# AddPluralMessage · 1/2
C#
public void AddPluralMessage(StringName srcMessage, ReadOnlySpan<string> xlatedMessages, StringName context);

Replaces the exact (context, srcMessage) entry with a nonempty plural-form array. Form order must match Locale or PluralRulesOverride; the method infers no order from text and inserts no count. Empty input produces a diagnostic; form count is checked when selecting an index. Emits no Changed.

Parameters
NameTypeDefault
srcMessageStringName—
xlatedMessagesReadOnlySpan<string>—
contextStringName—
srcMessage

Exact case-sensitive source key paired with context for base lookup.

xlatedMessages

Nonempty array/ReadOnlySpan of forms in locale/override rule order. Must contain every index the rules can select. Data are copied into the resource.

context

Exact context; null/default means empty. _GetMessage/_GetPluralMessage receive the supplied value without searching other contexts.

# AddPluralMessage · 2/2
C#
public void AddPluralMessage(StringName srcMessage, string[] xlatedMessages, StringName context = null);

Replaces the exact (context, srcMessage) entry with a nonempty plural-form array. Form order must match Locale or PluralRulesOverride; the method infers no order from text and inserts no count. Empty input produces a diagnostic; form count is checked when selecting an index. Emits no Changed.

Parameters
NameTypeDefault
srcMessageStringName—
xlatedMessagesstring[]—
contextStringNamenull
srcMessage

Exact case-sensitive source key paired with context for base lookup.

xlatedMessages

Nonempty array/ReadOnlySpan of forms in locale/override rule order. Must contain every index the rules can select. Data are copied into the resource.

context

Exact context; null/default means empty. _GetMessage/_GetPluralMessage receive the supplied value without searching other contexts.

EraseMessagevoid
# EraseMessage
C#
public void EraseMessage(StringName srcMessage, StringName context = null);

Removes only the exact (context, srcMessage) pair including all its forms. A missing key is a no-op; the same source text under other contexts remains. Emits no Changed.

Parameters
NameTypeDefault
srcMessageStringName—
contextStringNamenull
srcMessage

Exact case-sensitive source key paired with context for base lookup.

context

Exact context; null/default means empty. _GetMessage/_GetPluralMessage receive the supplied value without searching other contexts.

GetLocalestring
# GetLocale
C#
public string GetLocale();

Reads this resource standardized locale, not the current TranslationServer locale.

Returns string

This resource standardized locale.

GetMessageStringName
# GetMessage
C#
public StringName GetMessage(StringName srcMessage, StringName context = null);

Looks up the exact (context, srcMessage) pair in this resource and returns its first form. A miss yields an empty StringName rather than source text. Calls an overridden _GetMessage first; an empty callback result does not trigger base-map fallback. Applies no server fallback locale.

Parameters
NameTypeDefault
srcMessageStringName—
contextStringNamenull
srcMessage

Exact case-sensitive source key paired with context for base lookup.

context

Exact context; null/default means empty. _GetMessage/_GetPluralMessage receive the supplied value without searching other contexts.

Returns StringName

First form or empty StringName, not global fallback.

GetMessageCountint
# GetMessageCount
C#
public int GetMessageCount();

Number of (context, srcMessage) pairs rather than all plural-form strings. Overridden by OptimizedTranslation to return 0 with a warning; not a compressed-lookup population test.

Returns int

Key/context pair count; OptimizedTranslation yields 0 with a warning.

GetMessageListstring[]
# GetMessageList
C#
public string[] GetMessageList();

Returns an independent string[] of source keys: srcMessage without context or context+U+0004+srcMessage with context. Not sorted and not translated text; avoid U+0004 inside new keys. OptimizedTranslation retains no source keys and returns an empty array with a warning.

Returns string[]

New source-key array, using U+0004 for context.

GetPluralMessageStringName
# GetPluralMessage
C#
public StringName GetPluralMessage(StringName srcMessage, StringName srcPluralMessage, int n, StringName context = null);

For nonnegative n selects the (context, srcMessage) entry form using resource rules. srcPluralMessage is not part of base-map lookup but is forwarded to _GetPluralMessage. A miss yields an empty StringName; negative n or a missing selected form produces a diagnostic. Inserts no count and applies no global fallback locale. OptimizedTranslation does not select plural forms.

Parameters
NameTypeDefault
srcMessageStringName—
srcPluralMessageStringName—
nint—
contextStringNamenull
srcMessage

Exact case-sensitive source key paired with context for base lookup.

srcPluralMessage

Plural source text for the callback contract; not an index into the base Translation map.

n

Nonnegative count for base plural selection; not inserted into the result. A custom callback must validate its own contract.

context

Exact context; null/default means empty. _GetMessage/_GetPluralMessage receive the supplied value without searching other contexts.

Returns StringName

Selected form or empty StringName for a miss/diagnosed failure.

GetPluralRulesOverridestring
# GetPluralRulesOverride
C#
public string GetPluralRulesOverride();

Reads the stored override text rather than resolved effective locale rules. Empty text means no explicit override.

Returns string

Stored override text; empty means no explicit override.

GetTranslatedMessageListstring[]
# GetTranslatedMessageList
C#
public string[] GetTranslatedMessageList();

Returns an independent string[] of stored translations including every plural form and empty value. Indices do not align with GetMessageList when entries have multiple forms; order is not sorted. For OptimizedTranslation lists compressed values without keys.

Returns string[]

New array of all form values without sorted order or source-key index alignment.

SetLocalevoid
# SetLocale
C#
public void SetLocale(string locale);

Sets Locale with identifier normalization. Changes neither the global locale, messages nor an explicit PluralRulesOverride, and emits no Changed.

Parameters
NameTypeDefault
localestring—
locale

Resource locale identifier such as ru or ru_RU; the setter standardizes its spelling.

SetPluralRulesOverridevoid
# SetPluralRulesOverride
C#
public void SetPluralRulesOverride(string rules);

Assigns PluralRulesOverride and clears cached rules. Empty text restores Locale-based rule selection. Converts no existing forms and emits no Changed.

Parameters
NameTypeDefault
rulesstring—
rules

Valid nplurals=<N>; plural=<expression>; text or empty text for Locale rules. Not an array of translated strings.

_GetMessageStringName
# _GetMessage
C#
public virtual StringName _GetMessage(StringName srcMessage, StringName context);

Override in a custom C# Translation class for direct lookup. GetMessage passes the exact key and context; the callback determines the entire result including misses. C# base._GetMessage is an empty stub rather than access to the native map. AddMessage and counts still operate on stored base entries.

Parameters
NameTypeDefault
srcMessageStringName—
contextStringName—
srcMessage

Exact case-sensitive source key paired with context for base lookup.

context

Exact context; null/default means empty. _GetMessage/_GetPluralMessage receive the supplied value without searching other contexts.

Returns StringName

Custom lookup result; empty denotes a miss without base fallback.

_GetPluralMessageStringName
# _GetPluralMessage
C#
public virtual StringName _GetPluralMessage(StringName srcMessage, StringName srcPluralMessage, int n, StringName context);

Override plural lookup in a custom Translation. Receives both source texts, n and context before base n validation. Define accepted input and misses yourself; an empty result does not enable base fallback. C# base._GetPluralMessage is an empty stub.

Parameters
NameTypeDefault
srcMessageStringName—
srcPluralMessageStringName—
nint—
contextStringName—
srcMessage

Exact case-sensitive source key paired with context for base lookup.

srcPluralMessage

Plural source text for the callback contract; not an index into the base Translation map.

n

Nonnegative count for base plural selection; not inserted into the result. A custom callback must validate its own contract.

context

Exact context; null/default means empty. _GetMessage/_GetPluralMessage receive the supplied value without searching other contexts.

Returns StringName

Custom plural-selection result; the caller inserts no count.

Reckfell Engine documentationBack to top ↑
QUICK LINKSGetting startedEntity hierarchyC# & .NET 10Scenes and prefabs
Reckfell guides and full API K
reckfellENGINE
RECKFELL ACCOUNT

Sign in

Sign in to your Reckfell account.

One account for the entire Reckfell platform.