diff --git a/README.md b/README.md index 3929ec6..805d286 100644 --- a/README.md +++ b/README.md @@ -142,7 +142,7 @@ src/ ## Глобальные локали -Глобальные локали необходимы для автоматического определения пакета ресурсов. Взаимодействие с ними происходит через статичный класс библиотеки `РегиональныеНастройки`. +Глобальные локали необходимы для автоматического определения пакета ресурсов. Взаимодействие с ними происходит через статичный класс библиотеки [Мультиязычность](docs/Мультиязычность.md). ### Текущая локаль @@ -151,10 +151,10 @@ src/ ``` bsl // Получение -ТекущаяЛокаль = РегиональныеНастройки.ТекущаяЛокаль(); +ТекущаяЛокаль = Мультиязычность.ТекущаяЛокаль(); // Установка -РегиональныеНастройки.УстановитьЛокаль("es_ES"); +Мультиязычность.УстановитьЛокаль("es_ES"); ``` ### Локаль по умолчанию @@ -164,10 +164,10 @@ src/ ``` bsl // Получение -ЛокальПоУмолчанию = РегиональныеНастройки.ЛокальПоУмолчанию(); +ЛокальПоУмолчанию = Мультиязычность.ЛокальПоУмолчанию(); // Установка -РегиональныеНастройки.УстановитьЛокальПоУмолчанию("es_ES"); +Мультиязычность.УстановитьЛокальПоУмолчанию("es_ES"); ``` ## Встраивание в код приложения @@ -193,10 +193,28 @@ src/ ГруппаПакетов = МенеджерРесурсовЛокализации.ПолучитьПакеты("РесурсыКонсольногоПриложения, ОбщиеРесурсы"); ``` +### Использование пакета по умолчанию + +Если в вашем проекте только один пакет для каждой локали, то можно установить использование этого пакета по умолчанию. +Это позволит не обращаться за ресурсами напрямую к пакету, а получать их через статичный класс [Мультиязычность](docs/Мультиязычность.md). +Также при [изменении](docs/Мультиязычность.md#установитьлокаль) локали, пакет по умолчанию будет переключаться на соответствющий язык. + +``` bsl +// Использование пакета по умолчанию +Пакет = МенеджерРесурсовЛокализации.ПолучитьПакет("РесурсыКонсольногоПриложения"); +Пакет.ИспользоватьПоУмолчанию(); +``` + ### Получение конкретного ресурса ``` bsl -ОписаниеПриложения = Пакет.Получить("ОписаниеПриложения"); +// Из пакета или группы пакетов +ОписаниеПриложения = Пакет.ПолучитьРесурс("ОписаниеПриложения"); +Сообщение = Пакет.ПолучитьСтроку("Приветствие", "Подставляемый текст"); + +// Из пакета по умолчанию +ОписаниеПриложения = Мультиязычность.ПолучитьРесурс("ОписаниеПриложения"); +Сообщение = Мультиязычность.ПолучитьСтроку("Приветствие", "Подставляемый текст"); ``` ### Заполнение шаблона @@ -219,6 +237,9 @@ src/ |}"; Пакет.ЗаполнитьШаблон(Шаблон); + +// Для пакета по умолчанию +Мультиязычность.ЗаполнитьШаблон(Шаблон); ``` Более подробно написано в описании [публичного интерфейса](docs/README.md) diff --git a/docs/README.md b/docs/README.md index 4ac057a..ffde1fc 100644 --- a/docs/README.md +++ b/docs/README.md @@ -3,7 +3,7 @@ ## Статичные классы (Модули) - [МенеджерРесурсовЛокализации](МенеджерРесурсовЛокализации.md) -- [РегиональныеНастройки](РегиональныеНастройки.md) +- [Мультиязычность](Мультиязычность.md) ## Классы diff --git "a/docs/\320\223\321\200\321\203\320\277\320\277\320\260\320\237\320\260\320\272\320\265\321\202\320\276\320\262\320\240\320\265\321\201\321\203\321\200\321\201\320\276\320\262\320\233\320\276\320\272\320\260\320\273\320\270\320\267\320\260\321\206\320\270\320\270.md" "b/docs/\320\223\321\200\321\203\320\277\320\277\320\260\320\237\320\260\320\272\320\265\321\202\320\276\320\262\320\240\320\265\321\201\321\203\321\200\321\201\320\276\320\262\320\233\320\276\320\272\320\260\320\273\320\270\320\267\320\260\321\206\320\270\320\270.md" index 8930e32..a97f6a6 100644 --- "a/docs/\320\223\321\200\321\203\320\277\320\277\320\260\320\237\320\260\320\272\320\265\321\202\320\276\320\262\320\240\320\265\321\201\321\203\321\200\321\201\320\276\320\262\320\233\320\276\320\272\320\260\320\273\320\270\320\267\320\260\321\206\320\270\320\270.md" +++ "b/docs/\320\223\321\200\321\203\320\277\320\277\320\260\320\237\320\260\320\272\320\265\321\202\320\276\320\262\320\240\320\265\321\201\321\203\321\200\321\201\320\276\320\262\320\233\320\276\320\272\320\260\320\273\320\270\320\267\320\260\321\206\320\270\320\270.md" @@ -9,9 +9,11 @@ ## Методы [ДобавитьПакет](#добавитьпакет)
-[Получить](#получить)
+[СодержитКлюч](#содержитключ)
+[ПолучитьРесурс](#получитьресурс)
+[ПолучитьСтроку](#получитьстроку)
[ЗаполнитьШаблон](#заполнитьшаблон)
-[УстановитьРодителя](#установитьродителя) +[ИспользоватьПоУмолчанию](#использоватьпоумолчанию) ## ДобавитьПакет @@ -56,12 +58,12 @@ Проверяет наличие ресурса по ключу. -## Получить +## ПолучитьРесурс **Синтаксис:** ```bsl -Получить(<Ключ>) +ПолучитьРесурс(<Ключ>) ``` **Параметры:** @@ -79,6 +81,30 @@ Получает значение ресурса по ключу. Возвращает `Неопределено` в случае, если ресурс не найден. +## ПолучитьСтроку + +**Синтаксис:** + +```bsl +ПолучитьСтроку(<ИмяРесурса>), <ЗначениеПараметра1-ЗначениеПараметра9>) +``` + +**Параметры:** + +| Имя | Тип | Значение по умолчанию | Описание | +| -- | -- | -- | -- | +| **ИмяРесурса** | Строка | | Имя ресурса | +| ЗначениеПараметра1-ЗначениеПараметра9 | Строка | `Неопределено` | Параметры, содержащие произвольные значения, строковые представления которых должны быть подставлены в шаблон | + +**Возвращаемое значение:** + +Тип: Строка, Неопределено. + +**Описание:** + +Получает строковое значение ресурса с подставлением параметров по принципу функции `СтрШаблон`. Возвращает `Неопределено` в случае, если ресурс не найден. + + ## ЗаполнитьШаблон **Синтаксис:** @@ -96,3 +122,16 @@ **Описание:** Заполняет шаблон ресурсами из пакета заменяя конструкцию `{t(ИмяРесурса)}` на значение ресурса. + + +## ИспользоватьПоУмолчанию + +**Синтаксис:** + +```bsl +ИспользоватьПоУмолчанию() +``` + +**Описание:** + +Устанавливает группу пакетов ресурсов по умолчанию. \ No newline at end of file diff --git "a/docs/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\240\320\265\321\201\321\203\321\200\321\201\320\276\320\262\320\233\320\276\320\272\320\260\320\273\320\270\320\267\320\260\321\206\320\270\320\270.md" "b/docs/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\240\320\265\321\201\321\203\321\200\321\201\320\276\320\262\320\233\320\276\320\272\320\260\320\273\320\270\320\267\320\260\321\206\320\270\320\270.md" index 78a67ed..057858e 100644 --- "a/docs/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\240\320\265\321\201\321\203\321\200\321\201\320\276\320\262\320\233\320\276\320\272\320\260\320\273\320\270\320\267\320\260\321\206\320\270\320\270.md" +++ "b/docs/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\240\320\265\321\201\321\203\321\200\321\201\320\276\320\262\320\233\320\276\320\272\320\260\320\273\320\270\320\267\320\260\321\206\320\270\320\270.md" @@ -23,7 +23,7 @@ | Имя | Тип | Значение по умолчанию | Описание | | -- | -- | -- | -- | | **БазовоеИмя** | Строка | | Базовое имя пакета | -| КодЛокализации | Строка | `Неопределено` | Код локализации (ru_RU, en_US, de, nl). Если значение не указано, то используется [текущая локаль](РегиональныеНастройки.md#текущаялокаль). | +| КодЛокализации | Строка | `Неопределено` | Код локализации (ru_RU, en_US, de, nl). Если значение не указано, то используется [текущая локаль](Мультиязычность.md#текущаялокаль). | **Возвращаемое значение:** @@ -47,7 +47,7 @@ | Имя | Тип | Значение по умолчанию | Описание | | -- | -- | -- | -- | | **БазовыеИмена** | Строка | | Перечень имен пакетов через запятую | -| КодЛокализации | Строка | `Неопределено` | Код локализации (ru_RU, en_US, de, nl). Если значение не указано, то используется [текущая локаль](РегиональныеНастройки.md#текущаялокаль). | +| КодЛокализации | Строка | `Неопределено` | Код локализации (ru_RU, en_US, de, nl). Если значение не указано, то используется [текущая локаль](Мультиязычность.md#текущаялокаль). | **Возвращаемое значение:** diff --git "a/docs/\320\234\321\203\320\273\321\214\321\202\320\270\321\217\320\267\321\213\321\207\320\275\320\276\321\201\321\202\321\214.md" "b/docs/\320\234\321\203\320\273\321\214\321\202\320\270\321\217\320\267\321\213\321\207\320\275\320\276\321\201\321\202\321\214.md" new file mode 100644 index 0000000..206a1cc --- /dev/null +++ "b/docs/\320\234\321\203\320\273\321\214\321\202\320\270\321\217\320\267\321\213\321\207\320\275\320\276\321\201\321\202\321\214.md" @@ -0,0 +1,224 @@ +# Мультиязычность + +## Методы + +[ТекущаяЛокаль](#текущаялокаль)
+[УстановитьЛокаль](#установитьлокаль)
+[ЛокальПоУмолчанию](#локальпоумолчанию)
+[УстановитьЛокальПоУмолчанию](#установитьлокальпоумолчанию)
+[ТекущийЯзык](#текущийязык)
+[ТекущаяСтрана](#текущаястрана)
+[ПакетРесурсовПоУмолчанию](#пакетресурсовпоумолчанию)
+[УстановитьПакетРесурсовПоУмолчанию](#установитьпакетресурсовпоумолчанию)
+[ПолучитьРесурс](#получитьресурс)
+[ПолучитьСтроку](#получитьстроку)
+[ЗаполнитьШаблон](#заполнитьшаблон) + + +## ТекущаяЛокаль + +**Синтаксис:** + +```bsl +ТекущаяЛокаль() +``` + +**Возвращаемое значение:** + +Тип: Строка. + +**Описание:** + +Получает текущую локаль. + + +## УстановитьЛокаль + +**Синтаксис:** + +```bsl +УстановитьЛокаль(<КодЛокализации>) +``` + +**Параметры:** + +| Имя | Тип | Описание | +| -- | -- | -- | +| **КодЛокализации** | Строка | Код локализации (ru_RU, en_US, de, nl) | + +**Описание:** + +Устанавливает текущую локаль. + + +## ЛокальПоУмолчанию + +**Синтаксис:** + +```bsl +ЛокальПоУмолчанию() +``` + +**Возвращаемое значение:** + +Тип: Строка. + +**Описание:** + +Получает локаль по умолчанию. + + +## УстановитьЛокальПоУмолчанию + +**Синтаксис:** + +```bsl +УстановитьЛокальПоУмолчанию(<КодЛокализации>) +``` + +**Параметры:** + +| Имя | Тип | Описание | +| -- | -- | -- | +| **КодЛокализации** | Строка | Код локализации (ru_RU, en_US, de, nl) | + +**Описание:** + +Устанавливает локаль по умолчанию. + + +## ТекущийЯзык + +**Синтаксис:** + +```bsl +ТекущийЯзык() +``` + +**Возвращаемое значение:** + +Тип: Строка. + +**Описание:** + +Получает код языка текущей локали. + + +## ТекущаяСтрана + +**Синтаксис:** + +```bsl +ТекущаяСтрана() +``` + +**Возвращаемое значение:** + +Тип: Строка. + +**Описание:** + +Получает код страны текущей локали. + + +## ПакетРесурсовПоУмолчанию + +**Синтаксис:** + +```bsl +ПакетРесурсовПоУмолчанию() +``` + +**Возвращаемое значение:** + +Тип: [ПакетРесурсовЛокализации](ПакетРесурсовЛокализации.md), [ГруппаПакетовРесурсовЛокализации](ГруппаПакетовРесурсовЛокализации.md). + +**Описание:** + +Получает пакет ресурсов по умолчанию. + + +## УстановитьПакетРесурсовПоУмолчанию + +**Синтаксис:** + +```bsl +УстановитьПакетРесурсовПоУмолчанию(<Пакет>) +``` + +**Параметры:** + +| Имя | Тип | Описание | +| -- | -- | -- | +| **Пакет** | [ПакетРесурсовЛокализации](ПакетРесурсовЛокализации.md)
[ГруппаПакетовРесурсовЛокализации](ГруппаПакетовРесурсовЛокализации.md) | Пакет или группа пакетов ресурсов | + +**Описание:** + +Устанавливает пакет ресурсов по умолчанию. + + +## ПолучитьРесурс + +**Синтаксис:** + +```bsl +ПолучитьРесурс(<ИмяРесурса>) +``` + +**Параметры:** + +| Имя | Тип | Описание | +| -- | -- | -- | +| **ИмяРесурса** | Строка | Имя ресурса | + +**Возвращаемое значение:** + +Тип: Проивзольный. + +**Описание:** + +Получает ресурс по имени из пакета ресурсов по умолчанию. Возвращает `Неопределено` в случае, если ресурс не найден. + + +## ПолучитьСтроку + +**Синтаксис:** + +```bsl +ПолучитьСтроку(<ИмяРесурса>), <ЗначениеПараметра1-ЗначениеПараметра9>) +``` + +**Параметры:** + +| Имя | Тип | Значение по умолчанию | Описание | +| -- | -- | -- | -- | +| **ИмяРесурса** | Строка | | Имя ресурса | +| ЗначениеПараметра1-ЗначениеПараметра9 | Строка | `Неопределено` | Параметры, содержащие произвольные значения, строковые представления которых должны быть подставлены в шаблон | + +**Возвращаемое значение:** + +Тип: Строка, Неопределено. + +**Описание:** + +Получает строковое значение ресурса из пакета ресурсов по умолчанию с подставлением параметров по принципу функции `СтрШаблон`. Возвращает `Неопределено` в случае, если ресурс не найден. + + +## ЗаполнитьШаблон + +**Синтаксис:** + +```bsl +ЗаполнитьШаблон(<Шаблон>, <Пакет>) +``` + +**Параметры:** + +| Имя | Тип | Значение по умолчанию | Описание | +| -- | -- | -- | -- | +| **Шаблон** | Строка | | Текст шаблона | +| Пакет | Строка | `Неопределено` | [ПакетРесурсовЛокализации](ПакетРесурсовЛокализации.md)
[ГруппаПакетовРесурсовЛокализации](ГруппаПакетовРесурсовЛокализации.md) | Пакет или группа пакетов ресурсов. Если пакет не указан, то используется пакет по умолчанию. | + +**Описание:** + +Заполняет шаблон ресурсами из пакета заменяя конструкцию `{t(ИмяРесурса)}` на значение ресурса. \ No newline at end of file diff --git "a/docs/\320\237\320\260\320\272\320\265\321\202\320\240\320\265\321\201\321\203\321\200\321\201\320\276\320\262\320\233\320\276\320\272\320\260\320\273\320\270\320\267\320\260\321\206\320\270\320\270.md" "b/docs/\320\237\320\260\320\272\320\265\321\202\320\240\320\265\321\201\321\203\321\200\321\201\320\276\320\262\320\233\320\276\320\272\320\260\320\273\320\270\320\267\320\260\321\206\320\270\320\270.md" index 3466068..e7a2e1f 100644 --- "a/docs/\320\237\320\260\320\272\320\265\321\202\320\240\320\265\321\201\321\203\321\200\321\201\320\276\320\262\320\233\320\276\320\272\320\260\320\273\320\270\320\267\320\260\321\206\320\270\320\270.md" +++ "b/docs/\320\237\320\260\320\272\320\265\321\202\320\240\320\265\321\201\321\203\321\200\321\201\320\276\320\262\320\233\320\276\320\272\320\260\320\273\320\270\320\267\320\260\321\206\320\270\320\270.md" @@ -19,10 +19,12 @@ [БазовоеИмя](#базовоеимя)
[Локаль](#локаль)
[СодержитКлюч](#содержитключ)
-[Получить](#получить)
+[ПолучитьРесурс](#получитьресурс)
+[ПолучитьСтроку](#получитьстроку)
[ЗаполнитьШаблон](#заполнитьшаблон)
[УстановитьРесурсы](#установитьресурсы)
-[УстановитьРодителя](#установитьродителя) +[УстановитьРодителя](#установитьродителя)
+[ИспользоватьПоУмолчанию](#использоватьпоумолчанию) ## БазовоеИмя @@ -82,12 +84,12 @@ Проверяет наличие ресурса по ключу. -## Получить +## ПолучитьРесурс **Синтаксис:** ```bsl -Получить(<Ключ>) +ПолучитьРесурс(<Ключ>) ``` **Параметры:** @@ -105,6 +107,30 @@ Получает значение ресурса по ключу. Возвращает `Неопределено` в случае, если ресурс не найден. +## ПолучитьСтроку + +**Синтаксис:** + +```bsl +ПолучитьСтроку(<ИмяРесурса>), <ЗначениеПараметра1-ЗначениеПараметра9>) +``` + +**Параметры:** + +| Имя | Тип | Значение по умолчанию | Описание | +| -- | -- | -- | -- | +| **ИмяРесурса** | Строка | | Имя ресурса | +| ЗначениеПараметра1-ЗначениеПараметра9 | Строка | `Неопределено` | Параметры, содержащие произвольные значения, строковые представления которых должны быть подставлены в шаблон | + +**Возвращаемое значение:** + +Тип: Строка, Неопределено. + +**Описание:** + +Получает строковое значение ресурса с подставлением параметров по принципу функции `СтрШаблон`. Возвращает `Неопределено` в случае, если ресурс не найден. + + ## ЗаполнитьШаблон **Синтаксис:** @@ -160,3 +186,16 @@ **Описание:** Устанавливает родителя пакета. + + +## ИспользоватьПоУмолчанию + +**Синтаксис:** + +```bsl +ИспользоватьПоУмолчанию() +``` + +**Описание:** + +Устанавливает пакетов ресурсов по умолчанию. \ No newline at end of file diff --git "a/docs/\320\240\320\265\320\263\320\270\320\276\320\275\320\260\320\273\321\214\320\275\321\213\320\265\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270.md" "b/docs/\320\240\320\265\320\263\320\270\320\276\320\275\320\260\320\273\321\214\320\275\321\213\320\265\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270.md" deleted file mode 100644 index 66aeb7f..0000000 --- "a/docs/\320\240\320\265\320\263\320\270\320\276\320\275\320\260\320\273\321\214\320\275\321\213\320\265\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270.md" +++ /dev/null @@ -1,116 +0,0 @@ -# РегиональныеНастройки - -## Методы - -[ТекущаяЛокаль](#текущаялокаль)
-[УстановитьЛокаль](#установитьлокаль)
-[ЛокальПоУмолчанию](#локальпоумолчанию)
-[УстановитьЛокальПоУмолчанию](#установитьлокальпоумолчанию)
-[ТекущийЯзык](#текущийязык)
-[ТекущаяСтрана](#текущаястрана) - - -## ТекущаяЛокаль - -**Синтаксис:** - -```bsl -ТекущаяЛокаль() -``` - -**Возвращаемое значение:** - -Тип: Строка. - -**Описание:** - -Получает текущую локаль. - - -## УстановитьЛокаль - -**Синтаксис:** - -```bsl -УстановитьЛокаль(<КодЛокализации>) -``` - -**Параметры:** - -| Имя | Тип | Описание | -| -- | -- | -- | -| **КодЛокализации** | Строка | Код локализации (ru_RU, en_US, de, nl) | - -**Описание:** - -Устанавливает текущую локаль. - - -## ЛокальПоУмолчанию - -**Синтаксис:** - -```bsl -ЛокальПоУмолчанию() -``` - -**Возвращаемое значение:** - -Тип: Строка. - -**Описание:** - -Получает локаль по умолчанию. - - -## УстановитьЛокальПоУмолчанию - -**Синтаксис:** - -```bsl -УстановитьЛокальПоУмолчанию(<КодЛокализации>) -``` - -**Параметры:** - -| Имя | Тип | Описание | -| -- | -- | -- | -| **КодЛокализации** | Строка | Код локализации (ru_RU, en_US, de, nl) | - -**Описание:** - -Устанавливает локаль по умолчанию. - - -## ТекущийЯзык - -**Синтаксис:** - -```bsl -ТекущийЯзык() -``` - -**Возвращаемое значение:** - -Тип: Строка. - -**Описание:** - -Получает код языка текущей локали. - - -## ТекущаяСтрана - -**Синтаксис:** - -```bsl -ТекущаяСтрана() -``` - -**Возвращаемое значение:** - -Тип: Строка. - -**Описание:** - -Получает код страны текущей локали. diff --git a/examples/main.os b/examples/main.os index c00e9c1..17b7a5c 100644 --- a/examples/main.os +++ b/examples/main.os @@ -35,16 +35,16 @@ Пакет.ЗаполнитьШаблон(Шаблон); Сообщить("Локаль: ru"); -Сообщить(Пакет.Получить("ОписаниеПриложения")); +Сообщить(Пакет.ПолучитьРесурс("ОписаниеПриложения")); Сообщить(Шаблон); // en -РегиональныеНастройки.УстановитьЛокаль("en"); +Мультиязычность.УстановитьЛокаль("en"); Пакет = МенеджерРесурсовЛокализации.ПолучитьПакет("РесурсыКонсольногоПриложения"); Шаблон = ТекстШаблона(); Пакет.ЗаполнитьШаблон(Шаблон); Сообщить("Локаль: en"); -Сообщить(Пакет.Получить("ОписаниеПриложения")); +Сообщить(Пакет.ПолучитьРесурс("ОписаниеПриложения")); Сообщить(Шаблон); \ No newline at end of file diff --git a/lib.config b/lib.config index f052416..a35d78e 100644 --- a/lib.config +++ b/lib.config @@ -1,7 +1,6 @@ - - + diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\223\321\200\321\203\320\277\320\277\320\260\320\237\320\260\320\272\320\265\321\202\320\276\320\262\320\240\320\265\321\201\321\203\321\200\321\201\320\276\320\262\320\233\320\276\320\272\320\260\320\273\320\270\320\267\320\260\321\206\320\270\320\270.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\223\321\200\321\203\320\277\320\277\320\260\320\237\320\260\320\272\320\265\321\202\320\276\320\262\320\240\320\265\321\201\321\203\321\200\321\201\320\276\320\262\320\233\320\276\320\272\320\260\320\273\320\270\320\267\320\260\321\206\320\270\320\270.os" index 6b0e4b3..9bbfe26 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\223\321\200\321\203\320\277\320\277\320\260\320\237\320\260\320\272\320\265\321\202\320\276\320\262\320\240\320\265\321\201\321\203\321\200\321\201\320\276\320\262\320\233\320\276\320\272\320\260\320\273\320\270\320\267\320\260\321\206\320\270\320\270.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\223\321\200\321\203\320\277\320\277\320\260\320\237\320\260\320\272\320\265\321\202\320\276\320\262\320\240\320\265\321\201\321\203\321\200\321\201\320\276\320\262\320\233\320\276\320\272\320\260\320\273\320\270\320\267\320\260\321\206\320\270\320\270.os" @@ -1,5 +1,11 @@ +#Область ОписаниеПеременных + Перем Пакеты; // Массив из Объект.ПакетРесурсовЛокализации +#КонецОбласти + +#Область ПрограммныйИнтерфейс + // Добавляет пакет в группу // // Параметры: @@ -37,10 +43,10 @@ // // Возвращаемое значение: // Проивзольный -Функция Получить(Ключ) Экспорт +Функция ПолучитьРесурс(Ключ) Экспорт Для Каждого Пакет Из Пакеты Цикл - Значение = Пакет.Получить(Ключ); + Значение = Пакет.ПолучитьРесурс(Ключ); Если Не Значение = Неопределено Тогда Возврат Значение; КонецЕсли; @@ -48,15 +54,48 @@ КонецФункции +// Получает строковое значение ресурса с подставлением параметров по принципу функции СтрШаблон +// Возвращает Неопределено в случае, если ресурс не найден +// +// Параметры: +// ИмяРесурса - Строка - Имя ресурса +// ЗначениеПараметра1-ЗначениеПараметра9 - Произвольный - Параметры, содержащие произвольные значения, строковые +// представления которых должны быть подставлены в шаблон +// +// Возвращаемое значение: +// Строка, Неопределено +Функция ПолучитьСтроку(ИмяРесурса, + ЗначениеПараметра1 = Неопределено, ЗначениеПараметра2 = Неопределено, ЗначениеПараметра3 = Неопределено, + ЗначениеПараметра4 = Неопределено, ЗначениеПараметра5 = Неопределено, ЗначениеПараметра6 = Неопределено, + ЗначениеПараметра7 = Неопределено, ЗначениеПараметра8 = Неопределено, ЗначениеПараметра9 = Неопределено) Экспорт + + Возврат Мультиязычность.ПолучитьСтрокуИзПакета(ИмяРесурса, ЭтотОбъект, + ЗначениеПараметра1, ЗначениеПараметра2, ЗначениеПараметра3, + ЗначениеПараметра4, ЗначениеПараметра5, ЗначениеПараметра6, + ЗначениеПараметра7, ЗначениеПараметра8, ЗначениеПараметра9); + +КонецФункции + // Заполняет шаблон ресурсами из пакета заменяя конструкцию {t(ИмяРесурса)} на значение ресурса // // Параметры: // Шаблон - Строка - Текст шаблона Процедура ЗаполнитьШаблон(Шаблон) Экспорт - ЛокализацияПриложения.ЗаполнитьШаблон(Шаблон, ЭтотОбъект); + Мультиязычность.ЗаполнитьШаблон(Шаблон, ЭтотОбъект); +КонецПроцедуры + +// Устанавливает группу пакетов ресурсов по умолчанию +Процедура ИспользоватьПоУмолчанию() Экспорт + Мультиязычность.УстановитьПакетРесурсовПоУмолчанию(ЭтотОбъект); КонецПроцедуры +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + // Группа пакетов ресурсов Процедура ПриСозданииОбъекта() Пакеты = Новый Массив(); -КонецПроцедуры \ No newline at end of file +КонецПроцедуры + +#КонецОбласти \ No newline at end of file diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\260\320\272\320\265\321\202\320\240\320\265\321\201\321\203\321\200\321\201\320\276\320\262\320\233\320\276\320\272\320\260\320\273\320\270\320\267\320\260\321\206\320\270\320\270.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\260\320\272\320\265\321\202\320\240\320\265\321\201\321\203\321\200\321\201\320\276\320\262\320\233\320\276\320\272\320\260\320\273\320\270\320\267\320\260\321\206\320\270\320\270.os" index 1d589bb..1ff6f15 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\260\320\272\320\265\321\202\320\240\320\265\321\201\321\203\321\200\321\201\320\276\320\262\320\233\320\276\320\272\320\260\320\273\320\270\320\267\320\260\321\206\320\270\320\270.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\260\320\272\320\265\321\202\320\240\320\265\321\201\321\203\321\200\321\201\320\276\320\262\320\233\320\276\320\272\320\260\320\273\320\270\320\267\320\260\321\206\320\270\320\270.os" @@ -53,24 +53,46 @@ // // Возвращаемое значение: // Проивзольный -Функция Получить(Ключ) Экспорт +Функция ПолучитьРесурс(Ключ) Экспорт Если _КэшКлючей[Ключ] = Истина Тогда Возврат _Ресурсы[Ключ]; ИначеЕсли Не _Родитель = Неопределено Тогда - Возврат _Родитель.Получить(Ключ); + Возврат _Родитель.ПолучитьРесурс(Ключ); Иначе Возврат Неопределено; КонецЕсли; КонецФункции +// Получает строковое значение ресурса с подставлением параметров по принципу функции СтрШаблон +// Возвращает Неопределено в случае, если ресурс не найден +// +// Параметры: +// ИмяРесурса - Строка - Имя ресурса +// ЗначениеПараметра1-ЗначениеПараметра9 - Произвольный - Параметры, содержащие произвольные значения, строковые +// представления которых должны быть подставлены в шаблон +// +// Возвращаемое значение: +// Строка, Неопределено +Функция ПолучитьСтроку(ИмяРесурса, + ЗначениеПараметра1 = Неопределено, ЗначениеПараметра2 = Неопределено, ЗначениеПараметра3 = Неопределено, + ЗначениеПараметра4 = Неопределено, ЗначениеПараметра5 = Неопределено, ЗначениеПараметра6 = Неопределено, + ЗначениеПараметра7 = Неопределено, ЗначениеПараметра8 = Неопределено, ЗначениеПараметра9 = Неопределено) Экспорт + + Возврат Мультиязычность.ПолучитьСтрокуИзПакета(ИмяРесурса, ЭтотОбъект, + ЗначениеПараметра1, ЗначениеПараметра2, ЗначениеПараметра3, + ЗначениеПараметра4, ЗначениеПараметра5, ЗначениеПараметра6, + ЗначениеПараметра7, ЗначениеПараметра8, ЗначениеПараметра9); + +КонецФункции + // Заполняет шаблон ресурсами из пакета заменяя конструкцию {t(ИмяРесурса)} на значение ресурса // // Параметры: // Шаблон - Строка - Текст шаблона Процедура ЗаполнитьШаблон(Шаблон) Экспорт - ЛокализацияПриложения.ЗаполнитьШаблон(Шаблон, ЭтотОбъект); + Мультиязычность.ЗаполнитьШаблон(Шаблон, ЭтотОбъект); КонецПроцедуры // Устанавливает ресурсы пакета @@ -93,6 +115,11 @@ _Родитель = Родитель; КонецПроцедуры +// Устанавливает пакет ресурсов по умолчанию +Процедура ИспользоватьПоУмолчанию() Экспорт + Мультиязычность.УстановитьПакетРесурсовПоУмолчанию(ЭтотОбъект); +КонецПроцедуры + #КонецОбласти #Область СлужебныеПроцедурыИФункции diff --git "a/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\233\320\276\320\272\320\260\320\273\320\270\320\267\320\260\321\206\320\270\321\217\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" "b/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\233\320\276\320\272\320\260\320\273\320\270\320\267\320\260\321\206\320\270\321\217\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" deleted file mode 100644 index 9b5f2d9..0000000 --- "a/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\233\320\276\320\272\320\260\320\273\320\270\320\267\320\260\321\206\320\270\321\217\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" +++ /dev/null @@ -1,72 +0,0 @@ -#Область СлужебныйПрограммныйИнтерфейс - -// Заполняет шаблон ресурсами из пакета заменяя конструкцию {t(ИмяРесурса)} на значение ресурса -// -// Параметры: -// Шаблон - Строка - Текст шаблона -// Пакет - Объект.ПакетРесурсовЛокализации -// - Объект.ГруппаПакетовРесурсовЛокализации -Процедура ЗаполнитьШаблон(Шаблон, Пакет) Экспорт - - РегулярноеВыражение = Новый РегулярноеВыражение("{t\(([^()]+)\)}"); - Совпадения = РегулярноеВыражение.НайтиСовпадения(Шаблон); - - Если Совпадения.Количество() = 0 Тогда - Возврат; - КонецЕсли; - - Подстроки = Новый Массив(); - ТекущаяПозиция = 1; - Для Каждого Совпадение Из Совпадения Цикл - ПозицияСовпадения = Совпадение.Группы[0].Индекс + 1; - ЗаменяемоеЗначение = Совпадение.Группы[0].Значение; - ИмяРесурса = Совпадение.Группы[1].Значение; - Значение = Пакет.Получить(ИмяРесурса); - - Если Не Значение = Неопределено Тогда - КоличествоСимволов = ПозицияСовпадения - ТекущаяПозиция; - Если КоличествоСимволов > 0 Тогда - Подстроки.Добавить(Сред(Шаблон, ТекущаяПозиция, КоличествоСимволов)); - КонецЕсли; - - Подстроки.Добавить(Значение); - ТекущаяПозиция = ПозицияСовпадения + СтрДлина(ЗаменяемоеЗначение); - КонецЕсли; - КонецЦикла; - - Подстроки.Добавить(Сред(Шаблон, ТекущаяПозиция)); - - Шаблон = СтрСоединить(Подстроки); - -КонецПроцедуры - -// Парсит код локализаци на язык и страну -// -// Параметры: -// КодЛокализации - Строка - Код локализации (ru, ru_RU) -// -// Возвращаемое значение: -// Структура: -// * Язык - Строка - Код языка -// * Строка - Строка - Код страны -Функция РаспарситьКодЛокализации(КодЛокализации) Экспорт - - Результат = Новый Структура("Язык, Страна", "", ""); - - МассивПодстрок = СтрРазделить(СокрЛП(КодЛокализации), "_"); - Количество = МассивПодстрок.Количество(); - - Если Количество = 1 Тогда - Результат.Язык = МассивПодстрок[0]; - ИначеЕсли Количество = 2 Тогда - Результат.Язык = МассивПодстрок[0]; - Результат.Страна = МассивПодстрок[1]; - ИначеЕсли Количество > 2 Тогда - ВызватьИсключение СтрШаблон("Код локализации %1 должен быть в формате {Язык}_{Страна} (ru_RU) или {Язык} (ru)", КодЛокализации); - КонецЕсли; - - Возврат Результат; - -КонецФункции - -#КонецОбласти \ No newline at end of file diff --git "a/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\240\320\265\321\201\321\203\321\200\321\201\320\276\320\262\320\233\320\276\320\272\320\260\320\273\320\270\320\267\320\260\321\206\320\270\320\270.os" "b/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\240\320\265\321\201\321\203\321\200\321\201\320\276\320\262\320\233\320\276\320\272\320\260\320\273\320\270\320\267\320\260\321\206\320\270\320\270.os" index 6bc8491..e9ca160 100644 --- "a/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\240\320\265\321\201\321\203\321\200\321\201\320\276\320\262\320\233\320\276\320\272\320\260\320\273\320\270\320\267\320\260\321\206\320\270\320\270.os" +++ "b/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\240\320\265\321\201\321\203\321\200\321\201\320\276\320\262\320\233\320\276\320\272\320\260\320\273\320\270\320\267\320\260\321\206\320\270\320\270.os" @@ -53,12 +53,12 @@ // Объект.ПакетРесурсовЛокализации Функция ПолучитьПакет(БазовоеИмя, Знач КодЛокализации = Неопределено) Экспорт - КодЛокализацииПоУмолчанию = РегиональныеНастройки.ЛокальПоУмолчанию(); + КодЛокализацииПоУмолчанию = Мультиязычность.ЛокальПоУмолчанию(); ПросканироватьКаталоги(); Если КодЛокализации = Неопределено Тогда - КодЛокализации = РегиональныеНастройки.ТекущаяЛокаль(); + КодЛокализации = Мультиязычность.ТекущаяЛокаль(); КонецЕсли; ПолноеИмяПакета = ПолноеИмяПакета(БазовоеИмя, КодЛокализации); @@ -301,7 +301,7 @@ ВозможныеПакеты = Новый Массив(); ВозможныеПакеты.Добавить(БазовоеИмя); - СтруктураКодаЛокализации = ЛокализацияПриложения.РаспарситьКодЛокализации(КодЛокализации); + СтруктураКодаЛокализации = Мультиязычность.РаспарситьКодЛокализации(КодЛокализации); Если Не ПустаяСтрока(СтруктураКодаЛокализации.Язык) Тогда ВозможныеПакеты.Добавить(СтрШаблон("%1_%2", БазовоеИмя, СтруктураКодаЛокализации.Язык)); diff --git "a/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\234\321\203\320\273\321\214\321\202\320\270\321\217\320\267\321\213\321\207\320\275\320\276\321\201\321\202\321\214.os" "b/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\234\321\203\320\273\321\214\321\202\320\270\321\217\320\267\321\213\321\207\320\275\320\276\321\201\321\202\321\214.os" new file mode 100644 index 0000000..71d6324 --- /dev/null +++ "b/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\234\321\203\320\273\321\214\321\202\320\270\321\217\320\267\321\213\321\207\320\275\320\276\321\201\321\202\321\214.os" @@ -0,0 +1,249 @@ +Перем _ТекущийКодЛокализации; // Строка +Перем _КодЛокализацииПоУмолчанию; // Строка +Перем _ТекущийЯзык; // Строка +Перем _ТекущаяСтрана; // Строка +Перем _ПакетРесурсовПоУмолчанию; // Объект.ПакетРесурсовЛокализации + // Объект.ГруппаПакетовРесурсовЛокализации + +#Область ПрограммныйИнтерфейс + +// Получает текущую локаль +// +// Возвращаемое значение: +// Строка +Функция ТекущаяЛокаль() Экспорт + Возврат _ТекущийКодЛокализации; +КонецФункции + +// Устанавливает текущую локаль +// +// Параметры: +// КодЛокализации - Строка - Код локализации +Процедура УстановитьЛокаль(КодЛокализации) Экспорт + + СтруктураКодаЛокализации = РаспарситьКодЛокализации(КодЛокализации); + + _ТекущийКодЛокализации = КодЛокализации; + _ТекущийЯзык = СтруктураКодаЛокализации.Язык; + _ТекущаяСтрана = СтруктураКодаЛокализации.Страна; + + Если ТипЗнч(_ПакетРесурсовПоУмолчанию) = Тип("ПакетРесурсовЛокализации") Тогда + Пакет = МенеджерРесурсовЛокализации.ПолучитьПакет(_ПакетРесурсовПоУмолчанию.БазовоеИмя(), КодЛокализации); + Пакет.ИспользоватьПоУмолчанию(); + КонецЕсли; + +КонецПроцедуры + +// Получает локаль по умолчанию +// +// Возвращаемое значение: +// Строка +Функция ЛокальПоУмолчанию() Экспорт + Возврат _КодЛокализацииПоУмолчанию; +КонецФункции + +// Устанавливает локаль по умолчанию +// +// Параметры: +// КодЛокализации - Строка - Код локализации +Процедура УстановитьЛокальПоУмолчанию(КодЛокализации) Экспорт + _КодЛокализацииПоУмолчанию = КодЛокализации; +КонецПроцедуры + +// Получает код языка +// +// Возвращаемое значение: +// Строка +Функция ТекущийЯзык() Экспорт + Возврат _ТекущийЯзык; +КонецФункции + +// Получает код страны +// +// Возвращаемое значение: +// Строка +Функция ТекущаяСтрана() Экспорт + Возврат _ТекущаяСтрана; +КонецФункции + +// Получает пакет ресурсов по умолчанию +// +// Возвращаемое значение: +// Объект.ПакетРесурсовЛокализации, Объект.ГруппаПакетовРесурсовЛокализации +Функция ПакетРесурсовПоУмолчанию() Экспорт + Возврат _ПакетРесурсовПоУмолчанию; +КонецФункции + +// Устанавливает пакет ресурсов по умолчанию +// +// Параметры: +// Пакет - Объект.ПакетРесурсовЛокализации - Пакет ресурсов +// - Объект.ГруппаПакетовРесурсовЛокализации - Группа пакетов ресурсов +Процедура УстановитьПакетРесурсовПоУмолчанию(Пакет) Экспорт + _ПакетРесурсовПоУмолчанию = Пакет; +КонецПроцедуры + +// Получает ресурс по имени из пакета ресурсов по умолчанию +// Возвращает Неопределено в случае, если ресурс не найден +// +// Параметры: +// ИмяРесурса - Строка - Имя ресурса +// +// Возвращаемое значение: +// Произвольный +Функция ПолучитьРесурс(ИмяРесурса) Экспорт + + Пакет = _ПакетРесурсовПоУмолчанию; + Если Пакет = Неопределено Тогда + ВызватьИсключение "Не указан пакет ресурсов"; + КонецЕсли; + + Возврат Пакет.ПолучитьРесурс(ИмяРесурса); + +КонецФункции + +// Получает строковое значение ресурса из пакета ресурсов по умолчанию +// с подставлением параметров по принципу функции СтрШаблон +// +// Возвращает Неопределено в случае, если ресурс не найден +// +// Параметры: +// ИмяРесурса - Строка - Имя ресурса +// ЗначениеПараметра1-ЗначениеПараметра9 - Произвольный - Параметры, содержащие произвольные значения, строковые +// представления которых должны быть подставлены в шаблон +// +// Возвращаемое значение: +// Строка, Неопределено +Функция ПолучитьСтроку(ИмяРесурса, + ЗначениеПараметра1 = Неопределено, ЗначениеПараметра2 = Неопределено, ЗначениеПараметра3 = Неопределено, + ЗначениеПараметра4 = Неопределено, ЗначениеПараметра5 = Неопределено, ЗначениеПараметра6 = Неопределено, + ЗначениеПараметра7 = Неопределено, ЗначениеПараметра8 = Неопределено, ЗначениеПараметра9 = Неопределено) Экспорт + + Пакет = _ПакетРесурсовПоУмолчанию; + Если Пакет = Неопределено Тогда + ВызватьИсключение "Не указан пакет ресурсов"; + КонецЕсли; + + Возврат ПолучитьСтрокуИзПакета(ИмяРесурса, Пакет, + ЗначениеПараметра1, ЗначениеПараметра2, ЗначениеПараметра3, + ЗначениеПараметра4, ЗначениеПараметра5, ЗначениеПараметра6, + ЗначениеПараметра7, ЗначениеПараметра8, ЗначениеПараметра9); + +КонецФункции + +// Заполняет шаблон ресурсами из пакета заменяя конструкцию {t(ИмяРесурса)} на значение ресурса +// +// Параметры: +// Шаблон - Строка - Текст шаблона +// Пакет - Объект.ПакетРесурсовЛокализации +// - Объект.ГруппаПакетовРесурсовЛокализации +Процедура ЗаполнитьШаблон(Шаблон, Пакет = Неопределено) Экспорт + + Если Пакет = Неопределено Тогда + Пакет = _ПакетРесурсовПоУмолчанию; + КонецЕсли; + + Если Пакет = Неопределено Тогда + ВызватьИсключение "Не указан пакет ресурсов"; + КонецЕсли; + + РегулярноеВыражение = Новый РегулярноеВыражение("{t\(([^()]+)\)}"); + Совпадения = РегулярноеВыражение.НайтиСовпадения(Шаблон); + + Если Совпадения.Количество() = 0 Тогда + Возврат; + КонецЕсли; + + Подстроки = Новый Массив(); + ТекущаяПозиция = 1; + Для Каждого Совпадение Из Совпадения Цикл + ПозицияСовпадения = Совпадение.Группы[0].Индекс + 1; + ЗаменяемоеЗначение = Совпадение.Группы[0].Значение; + ИмяРесурса = Совпадение.Группы[1].Значение; + Значение = Пакет.ПолучитьРесурс(ИмяРесурса); + + Если Не Значение = Неопределено Тогда + КоличествоСимволов = ПозицияСовпадения - ТекущаяПозиция; + Если КоличествоСимволов > 0 Тогда + Подстроки.Добавить(Сред(Шаблон, ТекущаяПозиция, КоличествоСимволов)); + КонецЕсли; + + Подстроки.Добавить(Значение); + ТекущаяПозиция = ПозицияСовпадения + СтрДлина(ЗаменяемоеЗначение); + КонецЕсли; + КонецЦикла; + + Подстроки.Добавить(Сред(Шаблон, ТекущаяПозиция)); + + Шаблон = СтрСоединить(Подстроки); + +КонецПроцедуры + +#Область СлужебныйПрограммныйИнтерфейс + +// Парсит код локализаци на язык и страну +// +// Параметры: +// КодЛокализации - Строка - Код локализации (ru, ru_RU) +// +// Возвращаемое значение: +// Структура: +// * Язык - Строка - Код языка +// * Строка - Строка - Код страны +Функция РаспарситьКодЛокализации(КодЛокализации) Экспорт + + Результат = Новый Структура("Язык, Страна", "", ""); + + МассивПодстрок = СтрРазделить(СокрЛП(КодЛокализации), "_"); + Количество = МассивПодстрок.Количество(); + + Если Количество = 1 Тогда + Результат.Язык = МассивПодстрок[0]; + ИначеЕсли Количество = 2 Тогда + Результат.Язык = МассивПодстрок[0]; + Результат.Страна = МассивПодстрок[1]; + ИначеЕсли Количество > 2 Тогда + ВызватьИсключение СтрШаблон("Код локализации %1 должен быть в формате {Язык}_{Страна} (ru_RU) или {Язык} (ru)", КодЛокализации); + КонецЕсли; + + Возврат Результат; + +КонецФункции + +// Получает строковое значение ресурса с подставлением параметров по принципу функции СтрШаблон +// Возвращает Неопределено в случае, если ресурс не найден +// +// Параметры: +// ИмяРесурса - Строка - Имя ресурса +// ЗначениеПараметра1-ЗначениеПараметра9 - Произвольный - Параметры, содержащие произвольные значения, строковые +// представления которых должны быть подставлены в шаблон +// +// Возвращаемое значение: +// Строка, Неопределено +Функция ПолучитьСтрокуИзПакета(ИмяРесурса, Пакет, + ЗначениеПараметра1 = Неопределено, ЗначениеПараметра2 = Неопределено, ЗначениеПараметра3 = Неопределено, + ЗначениеПараметра4 = Неопределено, ЗначениеПараметра5 = Неопределено, ЗначениеПараметра6 = Неопределено, + ЗначениеПараметра7 = Неопределено, ЗначениеПараметра8 = Неопределено, ЗначениеПараметра9 = Неопределено) Экспорт + + Ресурс = Пакет.ПолучитьРесурс(ИмяРесурса); + Если Ресурс = Неопределено Тогда + Возврат Неопределено; + КонецЕсли; + + Возврат СтрШаблон(Ресурс, + ЗначениеПараметра1, ЗначениеПараметра2, ЗначениеПараметра3, + ЗначениеПараметра4, ЗначениеПараметра5, ЗначениеПараметра6, + ЗначениеПараметра7, ЗначениеПараметра8, ЗначениеПараметра9); + +КонецФункции + +#КонецОбласти + +#КонецОбласти + +#Область Инициализация + +УстановитьЛокаль("ru_RU"); +УстановитьЛокальПоУмолчанию("en_UK"); + +#КонецОбласти \ No newline at end of file diff --git "a/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\240\320\265\320\263\320\270\320\276\320\275\320\260\320\273\321\214\320\275\321\213\320\265\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270.os" "b/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\240\320\265\320\263\320\270\320\276\320\275\320\260\320\273\321\214\320\275\321\213\320\265\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270.os" deleted file mode 100644 index 47b9311..0000000 --- "a/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\240\320\265\320\263\320\270\320\276\320\275\320\260\320\273\321\214\320\275\321\213\320\265\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270.os" +++ /dev/null @@ -1,67 +0,0 @@ -Перем _ТекущийКодЛокализации; -Перем _КодЛокализацииПоУмолчанию; -Перем _ТекущийЯзык; -Перем _ТекущаяСтрана; - -#Область ПрограммныйИнтерфейс - -// Получает текущую локаль -// -// Возвращаемое значение: -// Строка -Функция ТекущаяЛокаль() Экспорт - Возврат _ТекущийКодЛокализации; -КонецФункции - -// Устанавливает текущую локаль -// -// Параметры: -// КодЛокализации - Строка - Код локализации -Процедура УстановитьЛокаль(КодЛокализации) Экспорт - СтруктураКодаЛокализации = ЛокализацияПриложения.РаспарситьКодЛокализации(КодЛокализации); - - _ТекущийКодЛокализации = КодЛокализации; - _ТекущийЯзык = СтруктураКодаЛокализации.Язык; - _ТекущаяСтрана = СтруктураКодаЛокализации.Страна; -КонецПроцедуры - -// Получает локаль по умолчанию -// -// Возвращаемое значение: -// Строка -Функция ЛокальПоУмолчанию() Экспорт - Возврат _КодЛокализацииПоУмолчанию; -КонецФункции - -// Устанавливает локаль по умолчанию -// -// Параметры: -// КодЛокализации - Строка - Код локализации -Процедура УстановитьЛокальПоУмолчанию(КодЛокализации) Экспорт - _КодЛокализацииПоУмолчанию = КодЛокализации; -КонецПроцедуры - -// Получает код языка -// -// Возвращаемое значение: -// Строка -Функция ТекущийЯзык() Экспорт - Возврат _ТекущийЯзык; -КонецФункции - -// Получает код страны -// -// Возвращаемое значение: -// Строка -Функция ТекущаяСтрана() Экспорт - Возврат _ТекущаяСтрана; -КонецФункции - -#КонецОбласти - -#Область Инициализация - -УстановитьЛокаль("ru_RU"); -УстановитьЛокальПоУмолчанию("en_UK"); - -#КонецОбласти \ No newline at end of file diff --git "a/tests/locales/ru/\320\240\320\265\321\201\321\203\321\200\321\201\321\213\320\233\320\276\320\272\320\260\320\273\320\270\320\267\320\260\321\206\320\270\320\270_ru_RU.os" "b/tests/locales/ru/\320\240\320\265\321\201\321\203\321\200\321\201\321\213\320\233\320\276\320\272\320\260\320\273\320\270\320\267\320\260\321\206\320\270\320\270_ru_RU.os" index e21b1d0..da9c420 100644 --- "a/tests/locales/ru/\320\240\320\265\321\201\321\203\321\200\321\201\321\213\320\233\320\276\320\272\320\260\320\273\320\270\320\267\320\260\321\206\320\270\320\270_ru_RU.os" +++ "b/tests/locales/ru/\320\240\320\265\321\201\321\203\321\200\321\201\321\213\320\233\320\276\320\272\320\260\320\273\320\270\320\267\320\260\321\206\320\270\320\270_ru_RU.os" @@ -3,6 +3,7 @@ Ресурсы = Новый Соответствие(); Ресурсы.Вставить("ПолноеИмя", "РесурсыЛокализации_ru_RU"); Ресурсы.Вставить("Приветствие", "Привет!"); + Ресурсы.Вставить("СтрокаСПараметрами", "Привет, %1!"); Возврат Ресурсы; diff --git "a/tests/locales/\320\240\320\265\321\201\321\203\321\200\321\201\321\213\320\233\320\276\320\272\320\260\320\273\320\270\320\267\320\260\321\206\320\270\320\270_de.properties" "b/tests/locales/\320\240\320\265\321\201\321\203\321\200\321\201\321\213\320\233\320\276\320\272\320\260\320\273\320\270\320\267\320\260\321\206\320\270\320\270_de.properties" index 55b8205..477a5ef 100644 --- "a/tests/locales/\320\240\320\265\321\201\321\203\321\200\321\201\321\213\320\233\320\276\320\272\320\260\320\273\320\270\320\267\320\260\321\206\320\270\320\270_de.properties" +++ "b/tests/locales/\320\240\320\265\321\201\321\203\321\200\321\201\321\213\320\233\320\276\320\272\320\260\320\273\320\270\320\267\320\260\321\206\320\270\320\270_de.properties" @@ -1,2 +1,3 @@ ПолноеИмя = РесурсыЛокализации_de Приветствие = Hallo! +СтрокаСПараметрами = Hallo %1! \ No newline at end of file diff --git "a/tests/\320\242\320\265\321\201\321\202\321\213.os" "b/tests/\320\242\320\265\321\201\321\202\321\213.os" index cd70c48..ca33355 100644 --- "a/tests/\320\242\320\265\321\201\321\202\321\213.os" +++ "b/tests/\320\242\320\265\321\201\321\202\321\213.os" @@ -6,45 +6,45 @@ КонецПроцедуры Процедура ПередЗапускомТеста() Экспорт - РегиональныеНастройки.УстановитьЛокаль("ru_RU"); - РегиональныеНастройки.УстановитьЛокальПоУмолчанию("en_UK"); + Мультиязычность.УстановитьЛокаль("ru_RU"); + Мультиязычность.УстановитьЛокальПоУмолчанию("en_UK"); КонецПроцедуры &Тест Процедура ТестДолжен_ПроверитьУстановкуТекущейЛокалиБезСтраны() Экспорт - РегиональныеНастройки.УстановитьЛокаль("ru"); + Мультиязычность.УстановитьЛокаль("ru"); - Ожидаем.Что(РегиональныеНастройки.ТекущаяЛокаль(), "Локаль").Равно("ru"); - Ожидаем.Что(РегиональныеНастройки.ТекущийЯзык(), "Язык").Равно("ru"); - Ожидаем.Что(РегиональныеНастройки.ТекущаяСтрана(), "Страна").Равно(""); + Ожидаем.Что(Мультиязычность.ТекущаяЛокаль(), "Локаль").Равно("ru"); + Ожидаем.Что(Мультиязычность.ТекущийЯзык(), "Язык").Равно("ru"); + Ожидаем.Что(Мультиязычность.ТекущаяСтрана(), "Страна").Равно(""); КонецПроцедуры &Тест Процедура ТестДолжен_ПроверитьУстановкуТекущейЛокалиСоСтраной() Экспорт - РегиональныеНастройки.УстановитьЛокаль("ru_RU"); + Мультиязычность.УстановитьЛокаль("ru_RU"); - Ожидаем.Что(РегиональныеНастройки.ТекущаяЛокаль(), "Локаль").Равно("ru_RU"); - Ожидаем.Что(РегиональныеНастройки.ТекущийЯзык(), "Язык").Равно("ru"); - Ожидаем.Что(РегиональныеНастройки.ТекущаяСтрана(), "Страна").Равно("RU"); + Ожидаем.Что(Мультиязычность.ТекущаяЛокаль(), "Локаль").Равно("ru_RU"); + Ожидаем.Что(Мультиязычность.ТекущийЯзык(), "Язык").Равно("ru"); + Ожидаем.Что(Мультиязычность.ТекущаяСтрана(), "Страна").Равно("RU"); КонецПроцедуры &Тест Процедура ТестДолжен_ПроверитьУстановкуЛокалиПоУмолчанию() Экспорт - РегиональныеНастройки.УстановитьЛокальПоУмолчанию("ru"); + Мультиязычность.УстановитьЛокальПоУмолчанию("ru"); - Ожидаем.Что(РегиональныеНастройки.ЛокальПоУмолчанию()).Равно("ru"); + Ожидаем.Что(Мультиязычность.ЛокальПоУмолчанию()).Равно("ru"); КонецПроцедуры &Тест Процедура ТестДолжен_ПроверитьЧтоПакетыЗагружены() Экспорт - РегиональныеНастройки.УстановитьЛокальПоУмолчанию(""); + Мультиязычность.УстановитьЛокальПоУмолчанию(""); Пакеты = Новый Соответствие(); Пакеты.Вставить("РесурсыЛокализации_", МенеджерРесурсовЛокализации.ПолучитьПакет("РесурсыЛокализации", "")); @@ -73,7 +73,7 @@ Пакет = МенеджерРесурсовЛокализации.ПолучитьПакет("РесурсыЛокализации"); Ожидаем.Что(Пакет.Локаль()).Равно("ru_RU"); - Ожидаем.Что(Пакет.Получить("ПолноеИмя")).Равно("РесурсыЛокализации_ru_RU"); + Ожидаем.Что(Пакет.ПолучитьРесурс("ПолноеИмя")).Равно("РесурсыЛокализации_ru_RU"); КонецПроцедуры @@ -83,7 +83,7 @@ Пакет = МенеджерРесурсовЛокализации.ПолучитьПакет("РесурсыЛокализации", "es_ES"); Ожидаем.Что(Пакет.Локаль()).Равно("en_UK"); - Ожидаем.Что(Пакет.Получить("ПолноеИмя")).Равно("РесурсыЛокализации_en_UK"); + Ожидаем.Что(Пакет.ПолучитьРесурс("ПолноеИмя")).Равно("РесурсыЛокализации_en_UK"); КонецПроцедуры @@ -103,13 +103,13 @@ Пакет = МенеджерРесурсовЛокализации.ПолучитьПакет("РесурсыЛокализации"); // Полное имя обеих источников совпадает - Ожидаем.Что(Пакет.Получить("ПолноеИмя")).Равно("РесурсыЛокализации_ru_RU"); + Ожидаем.Что(Пакет.ПолучитьРесурс("ПолноеИмя")).Равно("РесурсыЛокализации_ru_RU"); // Присутствует и в классе, и в файле, но взял из класса - Ожидаем.Что(Пакет.Получить("Приветствие")).Равно("Привет!"); + Ожидаем.Что(Пакет.ПолучитьРесурс("Приветствие")).Равно("Привет!"); // Отсутствует в классе, но есть в файле - Ожидаем.Что(Пакет.Получить("Прощание")).Равно("До свидания"); + Ожидаем.Что(Пакет.ПолучитьРесурс("Прощание")).Равно("До свидания"); КонецПроцедуры @@ -118,7 +118,7 @@ Пакет = МенеджерРесурсовЛокализации.ПолучитьПакет("РесурсыЛокализации", "de_DE"); - Ожидаем.Что(Пакет.Получить("ПолноеИмя")).Равно("РесурсыЛокализации_de"); + Ожидаем.Что(Пакет.ПолучитьРесурс("ПолноеИмя")).Равно("РесурсыЛокализации_de"); КонецПроцедуры @@ -127,9 +127,9 @@ Пакет = МенеджерРесурсовЛокализации.ПолучитьПакет("РесурсыЛокализации", "ru_RU"); - Ожидаем.Что(Пакет.Получить("ПолноеИмя")).Равно("РесурсыЛокализации_ru_RU"); - Ожидаем.Что(Пакет.Получить("ОфициальныйЯзык")).Равно("русский"); // РесурсыЛокализации_ru.os - Ожидаем.Что(Пакет.Получить("Температура.Обозначение")).Равно("°C"); // РесурсыЛокализации.os + Ожидаем.Что(Пакет.ПолучитьРесурс("ПолноеИмя")).Равно("РесурсыЛокализации_ru_RU"); + Ожидаем.Что(Пакет.ПолучитьРесурс("ОфициальныйЯзык")).Равно("русский"); // РесурсыЛокализации_ru.os + Ожидаем.Что(Пакет.ПолучитьРесурс("Температура.Обозначение")).Равно("°C"); // РесурсыЛокализации.os КонецПроцедуры @@ -139,21 +139,91 @@ ПакетОсновной = МенеджерРесурсовЛокализации.ПолучитьПакет("РесурсыЛокализации", "ru_RU"); ПакетКоманды = МенеджерРесурсовЛокализации.ПолучитьПакет("РесурсыЛокализацииКоманд", "ru_RU"); - Ожидаем.Что(ПакетОсновной.Получить("СохранитьКак")).Не_().Заполнено(); - Ожидаем.Что(ПакетКоманды.Получить("СохранитьКак")).Равно("Сохранить как"); + Ожидаем.Что(ПакетОсновной.ПолучитьРесурс("СохранитьКак")).Не_().Заполнено(); + Ожидаем.Что(ПакетКоманды.ПолучитьРесурс("СохранитьКак")).Равно("Сохранить как"); КонецПроцедуры &Тест -Процедура ТестДолжен_ПроверитьГруппуПакетов() Экспорт +Процедура ТестДолжен_ПроверитьСборкуГруппыПакетов() Экспорт - Пакеты = МенеджерРесурсовЛокализации.ПолучитьПакеты("РесурсыЛокализации, РесурсыЛокализацииКоманд", "ru_RU"); + ГруппаПакетов = МенеджерРесурсовЛокализации.ПолучитьПакеты("РесурсыЛокализации, РесурсыЛокализацииКоманд", "ru_RU"); - Ожидаем.Что(Пакеты.Получить("Приветствие")).Равно("Привет!"); - Ожидаем.Что(Пакеты.Получить("СохранитьКак")).Равно("Сохранить как"); + Ожидаем.Что(ГруппаПакетов.ПолучитьРесурс("Приветствие")).Равно("Привет!"); + Ожидаем.Что(ГруппаПакетов.ПолучитьРесурс("СохранитьКак")).Равно("Сохранить как"); КонецПроцедуры +&Тест +Процедура ТестДолжен_ПроверитьУстановкуПакетаПоУмолчанию() Экспорт + + Пакет = МенеджерРесурсовЛокализации.ПолучитьПакет("РесурсыЛокализации", "de"); + Пакет.ИспользоватьПоУмолчанию(); + + Ожидаем.Что(Мультиязычность.ПакетРесурсовПоУмолчанию().Локаль()).Равно("de"); + +КонецПроцедуры + +&Тест +Процедура ТестДолжен_ПроверитьПолучениеСтрокиИзПакета() Экспорт + + Пакет = МенеджерРесурсовЛокализации.ПолучитьПакет("РесурсыЛокализации", "de"); + + Строка = Пакет.ПолучитьСтроку("СтрокаСПараметрами", "Сергей"); + + Ожидаем.Что(Строка).Равно("Hallo Сергей!"); + +КонецПроцедуры + +&Тест +Процедура ТестДолжен_ПроверитьПолучениеСтрокиИзГруппыПакетов() Экспорт + + ГруппаПакетов = МенеджерРесурсовЛокализации.ПолучитьПакеты("РесурсыЛокализации, РесурсыЛокализацииКоманд", "ru_RU"); + + Строка = ГруппаПакетов.ПолучитьСтроку("СтрокаСПараметрами", "Сергей"); + + Ожидаем.Что(Строка).Равно("Привет, Сергей!"); + +КонецПроцедуры + +&Тест +Процедура ТестДолжен_ПроверитьПолучениеСтрокиИзПакетаПоУмолчанию() Экспорт + + Пакет = МенеджерРесурсовЛокализации.ПолучитьПакет("РесурсыЛокализации"); + Пакет.ИспользоватьПоУмолчанию(); + + Строка = Мультиязычность.ПолучитьСтроку("СтрокаСПараметрами", "Сергей"); + + Ожидаем.Что(Строка).Равно("Привет, Сергей!"); + +КонецПроцедуры + +&Тест +Процедура ТестДолжен_ПроверитьПолучениеРесурсаИзПакетаПоУмолчанию() Экспорт + + Пакет = МенеджерРесурсовЛокализации.ПолучитьПакет("РесурсыЛокализации"); + Пакет.ИспользоватьПоУмолчанию(); + + Ресурс = Мультиязычность.ПолучитьРесурс("Прощание"); + + Ожидаем.Что(Ресурс).Равно("До свидания"); + +КонецПроцедуры + +&Тест +Процедура ТестДолжен_ПроверитьАвтоматическоеПереключениеПакетаПоУмолчаниюНаДругойЯзык() Экспорт + + Пакет = МенеджерРесурсовЛокализации.ПолучитьПакет("РесурсыЛокализации", "ru_RU"); + Пакет.ИспользоватьПоУмолчанию(); + + Мультиязычность.УстановитьЛокаль("en_UK"); + + Ресурс = Мультиязычность.ПолучитьРесурс("Приветствие"); + + Ожидаем.Что(Ресурс).Равно("Hello"); + +КонецПроцедуры + &Тест Процедура ТестДолжен_ПроверитьЗаменуВТекстеДляПакета() Экспорт