Различия

Здесь показаны различия между выбранной ревизией и текущей версией данной страницы.

Ссылка на это сравнение

ru:manual:report:use_macros_in_reports:another_language [2013/07/15 12:10]
admin
— (текущий)
Строка 1: Строка 1:
-====== Перевод системных названий на другие языки ====== 
  
-===== Текущая ситуация ===== 
- 
-Business Studio позволяет создавать бизнес-модель и формировать регламентирующую документацию на языках отличных от русского. При этом перечисления, значения которых предопределены в базе, предоставляются всегда на русском языке. В качестве примера рассматривается разработка отчета на украинском языке. 
- 
-===== Постановка задачи ===== 
- 
-В отчете формата Word по процессу все упоминания статусов процессов (на русском языке) должны отображаться на украинском.  
- 
-===== Исходные данные ===== 
- 
-Решение описывается с момента когда в шаблоне отчета созданы привязка типа "Объект", которая показывает текущий статус процесса, а так же привязка типа "Список", которая показывает подпроцессы и их текущие статусы. 
- 
-[{{ ru/manual/report/use_macros_in_reports/another_language/translate1.png?nolink |Рисунок 1. Вид привязок в шаблоне отчета, которые выводят данные по статусам процессов}}] 
- 
-[{{ ru/manual/report/use_macros_in_reports/another_language/translate2.png?nolink |Рисунок 2. Вид сформированного отчета, в котором названия статусов даны на русском языке, а остальная часть регламента на украинском}}] 
- 
-===== Концепция решения ===== 
- 
-Для каждого русского слова должны быть зафиксированы слова перевода на украинский язык. Во всем документе находить такие русские слова и заменять их украинскими. Там где статус указан через привязку типа Объект делать изменение значения поля с последующим его обновлением. 
- 
-===== Шаги решения ===== 
- 
-Определяем название привязки типа "Список", которая представляет нужную таблицу. (см. [[ru/manual/report/insert_anchor?&#пример_определения_названия_привязки_типа_список ]]) 
- 
-<code vb> 
- 
-Sub ПослеВыполненияОтчета(ob As Variant, app As Variant) 
- 
-'Вводная часть 
- 
-    'Название объектной привязки с текущим статусом процесса 
-    CurrentStatusName = "Статус_процесса_c9a10e8d" 
-        
-        'Проверка наличия указанной привязки в документе 
-        Dim CurrentStatusIs As Boolean 'сначала считаем, что привязки нет 
-     
-        'перебираем все переменные документа 
-        For Each aVar In ActiveDocument.Variables 
- 
-            If aVar.Name = CurrentStatusName Then 
- 
-                CurrentStatusIs = True 'если такая переменная есть - фиксируем 
- 
-            End If 
- 
-        Next aVar 
-    
-    Const CountWords = 6 'кол-во русских слов для перевода 
-    Dim Slovo(1 To CountWords, 1 To 2) As String 'массив для хранения словаря 
- 
-    'Русско-украинский словарь 
- 
-     Slovo(1, 1) = "Архивирован" 
-     Slovo(1, 2) = "Архівований" 
-     
-     Slovo(2, 1) = "В работе" 
-     Slovo(2, 2) = "В роботі" 
- 
-     Slovo(3, 1) = "Опубликован" 
-     Slovo(3, 2) = "Опублікований" 
-   
-     Slovo(4, 1) = "Проект" 
-     Slovo(4, 2) = "Проект" 
- 
-     Slovo(5, 1) = "Рекомендован" 
-     Slovo(5, 2) = "Рекомендований" 
-     
-     Slovo(CountWords, 1) = "Черновик" 
-     Slovo(CountWords, 2) = "Чернетка" 
-  
-'Процедурная  часть 
-    
-     
-    'очистка условий поиска 
-    Selection.Find.ClearFormatting 
-    Selection.Find.Replacement.ClearFormatting 
- 
-    For i = 1 To CountWords 'поиск покаждому слову словаря 
- 
-       'Задание условий поиска и замены 
-        With Selection.Find 
-            .Text = Slovo(i, 1) 'ищется русское слово 
-            .Replacement.Text = Slovo(i, 2) 'будет заменяться украинским 
-            .Forward = True 
-            .Wrap = wdFindContinue 
-            .Format = False 
-            .MatchCase = False 
-            .MatchWholeWord = False 
-            .MatchWildcards = False 
-            .MatchSoundsLike = False 
-            .MatchAllWordForms = False 
-        End With 
- 
-        'Во всем документе меняем слова (кроме объектных привязок) 
-        Selection.Find.Execute Replace:=wdReplaceAll 
-        
-        If CurrentStatusIs Then 
-        
-            'Перевод слов в поле со статусом процесса 
-            If Application.ActiveDocument.Variables.Item(CurrentStatusName).Value = Slovo(i, 1) Then 
- 
-                Application.ActiveDocument.Variables.Item(CurrentStatusName).Value = Slovo(i, 2) 
- 
-            End If 
-      
-        End If 
-       
-    Next i 
-  
-    ActiveDocument.Fields.Update 'Обновление всех полей в документе 
-    
-End Sub 
-</code> 
- 
-===== Результат ===== 
- 
-[{{ ru/manual/report/use_macros_in_reports/another_language/translate3.png?nolink |Рисунок 3. Вид сформированного отчета полностью на украинском языке 
-}}] 
Актуальные новости, публикации и практики для бизнес-архитекторов и аналитиков
Driven by DokuWiki