Appendix F. Сцэнары

1. Уводзіны
2. Ужываньне
3. Мовы сцэнароў

1. Уводзіны

OmegaT дазваляе выконваць сцэнары, напісаныя на розных мовах сцэнароў.

2. Ужываньне

Выберыце мэню Сэрвіс → Сцэнары…, адкрыецца вакно сцэнароў:

Акно сцэнароў дазваляе загрузіць існы сцэнар у тэкставую вобласьць і выканаць яго для бягучага праекта. Каб наладзіць выкананьне сцэнара, выканайце наступныя дзеяньні:

  • Загрузеце сцэнар у рэдактар, націснуўшы ягоную назву ў сьпісе на левай панэлі.

  • Правай кнопкай мышы націсьнеце на кнопку “<1>” — “<12>” на ніжняй панэлі і выберыце “Дадаць”. У прыкладзе вышэй два сцэнара (пазыцыі 1 і 2) ужо дададзеныя.

  • Калі націснуць нумар левай кнопкай мышы, выканаецца выбраны сцэнар. Выбраныя сцэнары можна запускаць праз адпаведныя падпункты пункта мэню Сэрвіс або націскаючы Ctrl+Alt+F# (дзе # — 1 да 12).

Па змаўчаньні сцэнары знаходзяцца ў падкаталёгу “scripts” у каталёгу ўсталёўкі OmegaT (г. зн., каталёгу, які зьмяшчае файл OmegaT.jar).

Туды можна дадаваць новыя сцэнары, якія будуць зьяўляцца ў акне сцэнароў.

Некалькі дадатковых сцэнароў можна знайсьці тут: OmegaT Scripts

3. Мовы сцэнароў

Рэалізаваныя наступныя мовы сцэнароў:

  • Groovy (http://groovy.codehaus.org): дынамічны мова для віртуальнай машыны Java. Ён аб’ядноўвае моц Java і зручныя функцыі, падобныя мовам тыпу Python, Ruby і Smalltalk.

  • JavaScript (часам скарочана JS, не блытаць з Java): прататыпаарыентаваная мова сцэнароў, дынамічная, са слабой тыпізацыяй і першакляснымі функцыямі. Гэта — шматпарадыгмавая мова, якая падтрымлівае аб’ектна-арыентаваны, імпэратыўны і функцыянальны стылі праграмаваньня. Дзякуючы ўжываньню ў папулярных праграмах, такіх як Firefox, гэтую мову добра ведаюць і любяць прыхільнікі свабоднага праграмнага забесьпячэньня.

Усе мовы маюць доступ да аб’ектнай мадэлі OmegaT з праектам у якасьці верхняга аб’екта. У наступным фрагмэнце коду на Groovy, напрыклад, робіцца прагляд усіх сэгмэнтаў ва ўсіх файлах у бягучым праекце і, калі пераклад існуе, выводзіцца крыніца і пераклад сэгмэнта:

    files = project.projectFiles;
    for (i in 0 ..< files.size())
    {
        for (j in 0 ..< files[i].entries.size())
        {
            currSegment = files[i].entries[j];
            if (project.getTranslationInfo(currSegment))
            {
                source = currSegment.getSrcText();
                target = project.getTranslationInfo(currSegment).translation;
                console.println(source + " >>>> " + target);
            }     
        }
    }