Translation
Ресурс сообщений одной локали с контекстом и множественными формами.
Хранит переводы для локали, указанной в Locale. Сообщения различаются исходным ключом и контекстом; множественные формы выбираются по правилам локали или PluralRulesOverride. Выбор формы не подставляет число в текст.
Загрузка Translation не подключает его к общему поиску. Зарегистрируйте ресурс в настройках переводов проекта или через TranslationServer.AddTranslation. Для поиска с текущей и резервной локалью используйте TranslationServer.Translate или TranslatePlural; прямой GetMessage обращается к этому ресурсу.
Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.
Конструкторы1
TranslationКонструктор
public Translation();Создаёт собственный пустой каталог: Locale="en", PluralRulesOverride пуст. Не регистрирует его в TranslationServer и не меняет язык проекта. Dispose ресурс после использования.
Свойства3
LocaleСвойство
public string Locale { get; set; }Локаль ресурса, default en. Setter стандартизует идентификатор; при отсутствии явного override сбрасывает кеш правил. Не переключает глобальный язык, не переводит существующий текст интерфейса автоматически и не испускает Changed.
MessagesСвойство
public Reckfell.Collections.Dictionary Messages { get; set; }Внутренний Dictionary-снимок хранения: ключ Array [context, srcMessage], значение непустой Array строк форм. Getter создаёт отдельные контейнеры. Setter сначала очищает всю карту, затем копирует записи; также принимает строковый ключ с одним строковым значением без контекста. Это не merge и не полный формат ресурса. Не подавайте непроверенные массивы: длина ключа 2 не проверяется полностью. Не испускает Changed; Dispose собственный Dictionary после чтения.
PluralRulesOverrideСвойство
public string PluralRulesOverride { get; set; }Явные правила вида nplurals=2; plural=(n != 1);. Пустая строка выбирает правила Locale, затем английский fallback. Setter сбрасывает кеш, но не меняет сохранённые формы и не испускает Changed. Некорректный override может дать диагностику перед fallback; это не успешная валидация. Держите число и порядок форм согласованными с правилами.
Методы15
AddMessagevoid
public void AddMessage(StringName srcMessage, StringName xlatedMessage, StringName context = null);Назначает одну строку точной паре (context, srcMessage). Заменяет существующий перевод и все его множественные формы, а не только добавляет отсутствующую запись. Пустое значение допустимо, но результат поиска тогда неотличим от отсутствия. Не испускает Resource.Changed.
| Имя | Тип | По умолчанию |
|---|---|---|
srcMessage | StringName | — |
xlatedMessage | StringName | — |
context | StringName | null |
srcMessageТочный исходный ключ с учётом регистра; при базовом поиске используется вместе с context.
xlatedMessageПереведённая строка; может быть пустой. Плейсхолдеры и числа автоматически не подставляются.
contextТочный контекст; null/default означает пустой. Для _GetMessage/_GetPluralMessage передаётся полученное значение без автоматического поиска других контекстов.
AddPluralMessage2 перегрузки
public void AddPluralMessage(StringName srcMessage, ReadOnlySpan<string> xlatedMessages, StringName context);Заменяет запись точной пары (context, srcMessage) непустым массивом множественных форм. Порядок форм должен соответствовать правилам Locale или PluralRulesOverride; метод не определяет его по строкам и не вставляет число. Пустой массив вызывает диагностику; число форм проверяется при выборе индекса. Не испускает Changed.
| Имя | Тип | По умолчанию |
|---|---|---|
srcMessage | StringName | — |
xlatedMessages | ReadOnlySpan<string> | — |
context | StringName | — |
srcMessageТочный исходный ключ с учётом регистра; при базовом поиске используется вместе с context.
xlatedMessagesНепустой массив/ReadOnlySpan форм в порядке правил локали или override. Должен содержать каждый выбираемый правилами индекс. Данные копируются в ресурс.
contextТочный контекст; null/default означает пустой. Для _GetMessage/_GetPluralMessage передаётся полученное значение без автоматического поиска других контекстов.
public void AddPluralMessage(StringName srcMessage, string[] xlatedMessages, StringName context = null);Заменяет запись точной пары (context, srcMessage) непустым массивом множественных форм. Порядок форм должен соответствовать правилам Locale или PluralRulesOverride; метод не определяет его по строкам и не вставляет число. Пустой массив вызывает диагностику; число форм проверяется при выборе индекса. Не испускает Changed.
| Имя | Тип | По умолчанию |
|---|---|---|
srcMessage | StringName | — |
xlatedMessages | string[] | — |
context | StringName | null |
srcMessageТочный исходный ключ с учётом регистра; при базовом поиске используется вместе с context.
xlatedMessagesНепустой массив/ReadOnlySpan форм в порядке правил локали или override. Должен содержать каждый выбираемый правилами индекс. Данные копируются в ресурс.
contextТочный контекст; null/default означает пустой. Для _GetMessage/_GetPluralMessage передаётся полученное значение без автоматического поиска других контекстов.
EraseMessagevoid
public void EraseMessage(StringName srcMessage, StringName context = null);Удаляет только точную пару (context, srcMessage), включая все её формы. Отсутствующий ключ — бездействие; записи того же исходного текста с другим контекстом сохраняются. Не испускает Changed.
| Имя | Тип | По умолчанию |
|---|---|---|
srcMessage | StringName | — |
context | StringName | null |
srcMessageТочный исходный ключ с учётом регистра; при базовом поиске используется вместе с context.
contextТочный контекст; null/default означает пустой. Для _GetMessage/_GetPluralMessage передаётся полученное значение без автоматического поиска других контекстов.
GetLocalestring
public string GetLocale();Читает стандартизованную локаль этого ресурса. Не текущую локаль TranslationServer.
stringСтандартизованная локаль этого ресурса.
GetMessageStringName
public StringName GetMessage(StringName srcMessage, StringName context = null);Ищет точную пару (context, srcMessage) в этом ресурсе. Возвращает первую сохранённую форму; отсутствие даёт пустой StringName, а не исходный текст. Сначала вызывает переопределённый _GetMessage; пустой результат callback не запускает поиск в базовой карте. Не применяет резервную локаль сервера.
| Имя | Тип | По умолчанию |
|---|---|---|
srcMessage | StringName | — |
context | StringName | null |
srcMessageТочный исходный ключ с учётом регистра; при базовом поиске используется вместе с context.
contextТочный контекст; null/default означает пустой. Для _GetMessage/_GetPluralMessage передаётся полученное значение без автоматического поиска других контекстов.
StringNameПервая форма или пустой StringName; не глобальный fallback.
GetMessageCountint
public int GetMessageCount();Количество пар (context, srcMessage), а не количество строк всех множественных форм. У OptimizedTranslation переопределено: 0 с предупреждением, не показатель наличия сжатых переводов.
intКоличество пар ключ/контекст; у OptimizedTranslation 0 с предупреждением.
GetMessageListstring[]
public string[] GetMessageList();Возвращает независимый string[] исходных ключей: без контекста srcMessage, с контекстом context+U+0004+srcMessage. Не сортированный список и не список переводов; не используйте U+0004 внутри новых ключей. У OptimizedTranslation исходные ключи отсутствуют: пустой массив с предупреждением.
string[]Новый массив исходных ключей, с контекстом через U+0004.
GetPluralMessageStringName
public StringName GetPluralMessage(StringName srcMessage, StringName srcPluralMessage, int n, StringName context = null);Для неотрицательного n выбирает форму записи (context, srcMessage) по правилам ресурса. srcPluralMessage не участвует в поиске базовой карты, но передаётся _GetPluralMessage. Нет записи — пустой StringName; отрицательный n или недостающая форма вызывают диагностику. Не подставляет число и не использует глобальную резервную локаль. У OptimizedTranslation выбора форм нет.
| Имя | Тип | По умолчанию |
|---|---|---|
srcMessage | StringName | — |
srcPluralMessage | StringName | — |
n | int | — |
context | StringName | null |
srcMessageТочный исходный ключ с учётом регистра; при базовом поиске используется вместе с context.
srcPluralMessageИсходный текст множественного числа для контракта callback; базовая карта Translation по нему не индексируется.
nНеотрицательное число для базового выбора формы; не подставляется в результат. Собственный callback должен валидировать свой контракт.
contextТочный контекст; null/default означает пустой. Для _GetMessage/_GetPluralMessage передаётся полученное значение без автоматического поиска других контекстов.
StringNameВыбранная форма или пустой StringName при отсутствии/диагностике.
GetPluralRulesOverridestring
public string GetPluralRulesOverride();Читает сохранённую строку override, а не вычисленные действующие правила локали. Пустая строка означает отсутствие явного override.
stringСохранённая строка override; пустая — нет явного override.
GetTranslatedMessageListstring[]
public string[] GetTranslatedMessageList();Возвращает независимый string[] всех сохранённых переводов, включая каждую множественную форму и пустые значения. Индексы не соответствуют GetMessageList при нескольких формах; порядок не сортируется. Для OptimizedTranslation перечисляет сжатые значения без ключей.
string[]Новый массив значений всех форм без гарантии сортировки или индекса исходного ключа.
SetLocalevoid
public void SetLocale(string locale);Устанавливает Locale с нормализацией идентификатора. Не меняет глобальную локаль, сообщения или явный PluralRulesOverride и не испускает Changed.
| Имя | Тип | По умолчанию |
|---|---|---|
locale | string | — |
localeИдентификатор локали ресурса, например ru или ru_RU; setter стандартизует написание.
SetPluralRulesOverridevoid
public void SetPluralRulesOverride(string rules);Назначает строку PluralRulesOverride и сбрасывает кеш. Пустая строка возвращает выбор правил по Locale. Не преобразует существующие формы; не испускает Changed.
| Имя | Тип | По умолчанию |
|---|---|---|
rules | string | — |
rulesКорректная строка nplurals=<N>; plural=<expression>; либо пустая строка для правил Locale. Это не массив переведённых строк.
_GetMessageStringName
public virtual StringName _GetMessage(StringName srcMessage, StringName context);Переопределите в собственном C# классе Translation для прямого поиска. GetMessage передаёт точный ключ и контекст; callback полностью определяет результат, включая отсутствие. C# base._GetMessage — пустая заглушка, а не доступ к нативной карте. AddMessage и счётчики всё ещё работают с базовыми сохранёнными записями.
| Имя | Тип | По умолчанию |
|---|---|---|
srcMessage | StringName | — |
context | StringName | — |
srcMessageТочный исходный ключ с учётом регистра; при базовом поиске используется вместе с context.
contextТочный контекст; null/default означает пустой. Для _GetMessage/_GetPluralMessage передаётся полученное значение без автоматического поиска других контекстов.
StringNameРезультат собственного поиска; пустое значение обозначает отсутствие без базового fallback.
_GetPluralMessageStringName
public virtual StringName _GetPluralMessage(StringName srcMessage, StringName srcPluralMessage, int n, StringName context);Переопределите выбор формы в собственном Translation. Получает оба исходных текста, n и контекст до базовой проверки n. Самостоятельно задайте допустимый ввод и отсутствие; пустой результат не включает базовый fallback. C# base._GetPluralMessage — пустая заглушка.
| Имя | Тип | По умолчанию |
|---|---|---|
srcMessage | StringName | — |
srcPluralMessage | StringName | — |
n | int | — |
context | StringName | — |
srcMessageТочный исходный ключ с учётом регистра; при базовом поиске используется вместе с context.
srcPluralMessageИсходный текст множественного числа для контракта callback; базовая карта Translation по нему не индексируется.
nНеотрицательное число для базового выбора формы; не подставляется в результат. Собственный callback должен валидировать свой контракт.
contextТочный контекст; null/default означает пустой. Для _GetMessage/_GetPluralMessage передаётся полученное значение без автоматического поиска других контекстов.
StringNameРезультат собственной логики выбора формы; вызывающий код числа не подставляет.