Это старая версия документа.


Перевод системных названий на другие языки

Текущая ситуация

Business Studio позволяет создавать бизнес-модель и формировать регламентирующую документацию на языках отличных от русского. При этом перечисления, значения которых предопределены в базе, предоставляются всегда на русском языке. В качестве примера рассматривается разработка отчета на украинском языке.

Постановка задачи

В отчете формата Word по процессу все упоминания статусов процессов (на русском языке) должны отображаться на украинском.

Исходные данные

Решение описывается с момента когда в шаблоне отчета созданы привязка типа "Объект", которая показывает текущий статус процесса, а так же привязка типа "Список", которая показывает подпроцессы и их текущие статусы.

Invalid Link
Рисунок 1. Вид привязок в шаблоне отчета, которые выводят данные по статусам процессов
Invalid Link
Рисунок 2. Вид сформированного отчета, в котором названия статусов даны на русском языке, а остальная часть регламента на украинском

Концепция решения

Для каждого русского слова должны быть зафиксированы слова перевода на украинский язык. Во всем документе находить такие русские слова и заменять их украинскими. Там где статус указан через привязку типа Объект делать изменение значения поля с последующим его обновлением.

Шаги решения

Определяем название привязки типа "Список", которая представляет нужную таблицу. (см. Вставка привязки в шаблон отчета)

Sub ПослеВыполненияОтчета(ob As Variant, app As Variant)
 
Название объект часть
 
    им статусом процесса
    CurrentStatusName = "Статус_процтекущим статусом процесса
    CurrentStatusName = "Статус_процесса_c9a10e8d"
       
        ки нет
    
        'перебираем все переменные дой привязки в документе
        Dim CurrentStatusIs As Boolean rrentStatusName Then
 
             о привязки нет
    
        ь - фиксируем
 
            End If
 
  менные документа
        For Each aVar In ActiveDocument.Variables
 
            If aVar.Name = CurrentStatusName Then
 
                CurrentStatusIs = True  = "Архивирован"
     Slovo(1, 2) = "Арх есть - фиксируем
 
            End If
 
        Next aVar
   
    Const CountWords = 6 ) = "Опублікований"
  
     Slovo(в для перевода
    Dim Slovo(1 To CountWords, 1 To 2) As String 
     Slovo(5, 2) = "Рекомендения словаря
 
    ds, 1) = "Черновик"
     Slкий словарь
 
     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) = "Чернетка"
 
ds = False
         я  часть
 
 
              .MatchAllWordFвий поиска
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
 
    For i = 1 To CountWords ReplaceAll
       
        If Cслову словаря
 
       'Перевод слов в поле со статусом оиска и замены
        With Selection.Find
            .Text = Slovo(i, 1) Then
 
                кое слово
            .Replacement.Text = Slovo(i, 2) o(i, 2)
 
            End If
 я украинским
            .Forward = True
            .Wrap = wdFindContinue
    

Результат

Invalid Link
Рисунок 3. Вид сформированного отчета полностью на украинском языке
Актуальные новости, публикации и практики для бизнес-архитекторов и аналитиков
Driven by DokuWiki