DefaultLocale: IResourceLocale;
DefaultLocale: Prognoz.Platform.Interop.ForeIO.IResourceLocale;
Свойство DefaultLocale возвращает язык редактора ресурсов, установленный по умолчанию.
Язык ресурсов по умолчанию - это язык, используемый для отображения значений на языке по умолчанию для репозитория. Для корректной работы языки по умолчанию в ресурсах и в репозитории должны совпадать.
После создания в ресурсах содержится один язык, установленный для текущего репозитория по умолчанию. Если для репозитория не задан язык по умолчанию, то в ресурсах будет содержатся язык, соответствующий языку интерфейса платформы. Данный язык будет являться языком по умолчанию для ресурсов.
Для выполнения примера в репозитории предполагается наличие ресурсов с идентификатором «APP_RESOURCE». В данных ресурсах язык по умолчанию - русский, а язык перевода - английский.
Добавьте ссылки на системные сборки: IO, Metabase.
Sub UserProc;
Var
mb: IMetabase;
Resource: IResourceObject;
ResStrs: IResourceStrings;
ResStrKey: Integer;
Locales: IResourceLocales;
Locale: IResourceLocale;
Begin
// Получаем текущий репозиторий
mb := MetabaseClass.Active;
// Получаем ресурсы
Resource := mb.ItemById("APP_RESOURCE").Edit As IResourceObject;
// Получаем коллекцию языков ресурсов
Locales := Resource.Locales;
// Получаем язык ресурсов по умолчанию
Locale := Locales.DefaultLocale;
// Получаем строковые элементы для языка по умолчанию
ResStrs := Locale.Strings;
// Создаем новый строковый элемент
ResStrKey := ResStrs.Add;
// Задаем значение строкового элемента для языка по умолчанию
ResStrs.ValueByKey(ResStrKey) := "Отмена";
// Получаем текущий язык перевода
Locale := Locales.CurrentLocale;
// Проверяем, совпадает ли он с языком по умолчанию
If Locale.IsDefault
// Если совпадает, то выводим соответствующее сообщение
Then
Debug.WriteLine("Текущий язык перевода совпадает с языком репозитория по умолчанию");
// Если не совпадает, то задаем значение для текущего языка перевода
Else
// Получаем строковые элементы для языка перевода
ResStrs := Locale.Strings;
// Задаем значение строкового элемента для языка перевода
ResStrs.ValueByKey(ResStrKey) := "Cancel";
End If;
// Сохраняем изменения
(Resource As IMetabaseObject).Save;
End Sub UserProc;
В результате выполнения примера в ресурсы будет добавлен новый строковый элемент. Для него будет задано значение для языка по умолчанию и для языка перевода, если текущий язык перевода не совпадает с языком ресурсов по умолчанию.
Необходимые требования и результат выполнения примера Fore.NET совпадают с примером Fore.
Imports Prognoz.Platform.Interop.ForeIO;
…
Public Shared Sub Main(Params: StartParams);
Var
mb: IMetabase;
Resource: IResourceObject;
ResStrs: IResourceStrings;
ResStrKey: uinteger;
Locales: IResourceLocales;
Locale: IResourceLocale;
Begin
// Получаем текущий репозиторий
mb := Params.Metabase;
// Получаем ресурсы
Resource := mb.ItemById["APP_RESOURCE"].Edit() As IResourceObject;
// Получаем коллекцию языков ресурсов
Locales := Resource.Locales;
// Получаем язык ресурсов по умолчанию
Locale := Locales.DefaultLocale;
// Получаем строковые элементы для языка по умолчанию
ResStrs := Locale.Strings;
// Создаем новый строковый элемент
ResStrKey := ResStrs.Add();
// Задаем значение строкового элемента для языка по умолчанию
ResStrs.ValueByKey[ResStrKey] := "Отмена";
// Получаем текущий язык перевода
Locale := Locales.CurrentLocale;
// Проверяем, совпадает ли он с языком по умолчанию
If Locale.IsDefault
// Если совпадает, то выводим соответствующее сообщение
Then
System.Diagnostics.Debug.WriteLine("Текущий язык перевода совпадает с языком репозитория по умолчанию");
// Если не совпадает, то задаем значение для текущего языка перевода
Else
// Получаем строковые элементы для языка перевода
ResStrs := Locale.Strings;
// Задаем значение строкового элемента для языка перевода
ResStrs.ValueByKey[ResStrKey] := "Cancel";
End If;
// Сохраняем изменения
(Resource As IMetabaseObject).Save();
End Sub;
См. также: