레이블이 translation인 게시물을 표시합니다. 모든 게시물 표시
레이블이 translation인 게시물을 표시합니다. 모든 게시물 표시

2017년 7월 15일 토요일

OmegaT 4.1.1 settings for MS Translator under MS Azure

MS Translator used to be available through the Azure Apps Marketplace, but after April 2017 MS Translator is offered as part of Microsoft's Cognitive Services API.

In the past, using OmegaT with MS Translator required you to specify a client id and client secret. The corresponding variables are:

microsoft.api.client_id
microsoft.api.client_secret

With the move to MS Cognitive Services, OmegaT has a new variable which must be passed to the MS Translator API:

microsoft.api.subscription_key

From the Azure Dashboard, select your MS Translator app and then select Keys. You will see your app name and two keys. You must enter one of these keys into the variable microsoft.api.subscription_key for OmegaT to authenticate with MS Translator.

Here is my OmegaT 4.1.1 launch script on Linux:

#!/bin/bash
# Launch Script for OmegaT CAT tool
# GOOGTRANS and MSTRANS represent the API
# keys for Google Translate API v2 and
# Microsoft Translator, respectively
#
# Last Updated: 2017-07-11
# Jun Go gojun077@gmail.com

GOOGTRANS=$(<"$HOME/SpiderOak Hive/keys/googleTranslateAPIkey.pw")
MSTRANS=$(<"$HOME/SpiderOak Hive/keys/microsoftTranslatorAPIkey.pw")
OTPATH=$HOME/omegat
XMODIFIERS=@im=ibus java -jar -Xmx512M -Dgoogle.api.key="$GOOGTRANS" \
          -Dmicrosoft.api.subscription_key="$MSTRANS" \
          -Dmicrosoft.api.client_id="name_of_your_app" \
          -Dmicrosoft.api.client_secret="$MSTRANS" \
          -Dswing.crossplatformlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel \
          "$OTPATH"/OmegaT.jar


References:
https://sourceforge.net/p/omegat/svn/9562/tree//trunk/src/org/omegat/Bundle.properties?barediff=5161c5ece88f3d0a5207336e:9561

2015년 3월 2일 월요일

My first book translation is now in print! "Crossing Heaven's Border"

In Spring 2012, I was contacted by a South Korean newspaper reporter from The Chosun Ilbo about translating a book. As a freelance interpreter and translator from 2005-2014, I had done lots of one-off translations of thesis abstracts, short stories, ad copy, etc. but this was the first time I had the chance to translate a book.

The book's 1st edition title in Korean was "천국의 국경을 넘다" which became Crossing Heaven's Border in English. It was written by Hark Joon Lee, head of the Crossmedia Team at The Chosun Ilbo and also the director of a documentary about North Korean defectors. This book takes a closer look at events covered in the documentary and also follows up on the lives of North Korean refugees living in South Korea today.

I hear that the editing process in Korea and Japan is quite brief compared to that in the US and the UK; the Japanese edition of Crossing took less than 6 months to translate, edit and publish. For the US edition of Crossing..., however, contract negotiations, translation, editing and publishing took about 3 years. This is due to the fact that in Asia, editors basically just rubber-stamp the author's work, while in the US/UK, editors often revamp the entire book and go through the draft multiple times with a fine-toothed comb.

The editor for Crossing... was George Krompacky, Publications Manager of the Shorenstein Asia-Pacific Research Center at Stanford University. He did a great job of pointing out inconsistencies and errors in my translation drafts and his knowledge of Traditional Chinese was invaluable in deciphering the meaning of Sino-Korean words which I had mis-translated in places.

The author, Hark Joon Lee, was also very gracious in answering my questions about the original Korean text and answered my emails late at night and even on weekends. It seems like reporters check their email 24/7!

I enjoyed working on this book translation, and if I have the opportunity to do so, I hope to do more Korean to English book translations in the future.

2014년 12월 8일 월요일

A quick-and-dirty Python3 script to extract only English or non-English characters from a textfile

When I was a full-time interpreter/translator, once in a while clients would send me proofreading work in the form of dual-language files containing alternating lines of Korean followed by English. The problem is that translators bill their clients by counting the number of words in the source language, but this is not possible when both source and target language are mixed up in the same file!

Imagine that you have a 100-page .doc file with alternating lines of English and some foreign language. It is not feasible to manually cut-and-paste all the foreign language sentences into another file! Luckily, Python 3 exists and it is UTF-8 friendly, so we can easily manipulate English and all kinds of foreign languages within Python 3 programs.

My script is called deleteLanguage.py and it is available on github at https://github.com/gojun077/deleteLanguage.

It will take mixed text like (I didn't do this horrible translation into English, btw)

기업에서 왜 트리즈를 교육해야 하는가?
Why do the companies should educate TRIZ to their members?
오늘날 특히 기업에서의 연구개발은 문제를 해결하느냐 못하느냐의 문제가 아니다.
Today being able to solve the problems or not being isn’t a real problem in the corporation’s research and development.
얼마나 빨리 새로운 결과를 찾아내는 가에 따라 성공여부가 결정된다.
The success of them depends on how fast they can find the new solutions.
하지만 우리들은 문제를 더 빨리 혁신적으로 해결할 수 있는 방법을 공부한 적이 없다.
But we have never learned to solve problems faster and more innovative.
대부분의 많은 연구개발자들은 창의적인 문제해결이 무엇인지도 모른다.
Most researchers and engineers don’t even know what the creative method to solve the problems is.
오늘날도 많은 연구자들은 각자 기존의 경험과 지식을 바탕으로 열심히 생각하기를 한다.
Today they are thinking hard based on only their own experience and knowledge.

and parse it into separate English

Why do the companies should educate TRIZ to their members?
Today being able to solve the problems or not being a real problem in the research and development.
The success of them depends on how fast they can find the new solutions.
But we have never learned to solve problems faster and more innovative.
Most researchers and engineers even know what the creative method to solve the problems is.
Today they are thinking hard based on only their own experience and knowledge.

and non-English output:

기업에서 왜 트리즈를 교육해야 하는가?
오늘날 특히 기업에서의 연구개발은 문제를 해결하느냐 못하느냐의 문제가 아니다.
얼마나 빨리 새로운 결과를 찾아내는 가에 따라 성공여부가 결정된다.
하지만 우리들은 문제를 더 빨리 혁신적으로 해결할 수 있는 방법을 공부한 적이 없다.
대부분의 많은 연구개발자들은 창의적인 문제해결이 무엇인지도 모른다.
오늘날도 많은 연구자들은 각자 기존의 경험과 지식을 바탕으로 열심히 생각하기를 한다.

The version in the initial commit has the following limitations:

The script will assume that non-ASCII characters not included in string.printable (from the Python string module) are non-English characters, so the following strings

'Awesome'
'...noted.'

would not be detected as 'English' by the script.

In non-English sentences containing a the occasional English word, the script just omits these words entirely. Consider the following Korean sentence:


"철수씨는 IBM에 근무한다."

deleteLanguage.py as it is currently implemented will parse the above snippet into the following when it outputs the non-English only text file:

"철수씨는 근무한다."

The '에' character adjoining IBM is deleted along with the English word.

I haven't yet thought up a sure-fire algorithm to avoid this problem; creating prescriptive rules for dozens of one-off cases doesn't seem to be the solution, either.

2014년 7월 29일 화요일

OmegaT will fail to open a project if a git repo is in the project's parent directory or current directory

A few weeks ago, I encountered an issue in which OmegaT hangs when trying to open a project.

15256: Info: Docking Framework version: 2.1.4 
15256: Info: Event: application startup (LOG_INFO_EVENT_APPLICATION_STARTUP)
15256: Info: Click on 'projectMenu' menu item (LOG_MENU_CLICK)
15256: Info: Click on 'projectMenu' menu item (LOG_MENU_CLICK)
15256: Info: Click on 'projectOpenMenuItem' menu item (LOG_MENU_CLICK)
15256: Info: Git 'status' execution start (GIT_START)

This happens because OmegaT checks for team translation projects managed with git. The issue is discussed on the OmegaT support forums in this thread.

The workaround is to remove the offending .git folder that exists in the translation project's parent directory or the the translation project's current folder.

2014년 6월 1일 일요일

Overuse of English terminology in English-to-Korean technical translations

Recently I've been doing a technical translation project in the civil engineering and light rail sector. For those of you who have experience doing technical translation you will know that the biggest challenge in such projects is dealing with specialized terminology. In the engineering field common terminology might include terms such as

torque, leverage, pivot...

while in light rail projects common terms include

guideway, M&SF (Maintenance and Storage Facility), PSD (Platform Screen Door)...

and so on.

One problem I have noticed is that field engineers oftentimes transliterate these English terms to Korean, i.e. torque would become 토크 (which sounds like toe-keu for those of you who can't read Hangul). If you are an engineer who is familiar with the English term torque, than maybe transliteration (phonetic decomposition into another language) isn't such a big deal. But the problem is that engineering spec sheets and design review documents contain hundreds of such terms and in many cases, translators simply transliterate these to Korean without trying to find an appropriate term in Sino-Korean. As the final end-users of technical specification sheets include non-engineering personnel, naive transliteration that fails to convey meaning creates the risk of misunderstanding.

Looking up torque in Google using the search term: "define torque" returns:

1. MECHANICS - a twisting force that tends to cause rotation.

The Sino-Korean for this term is 회전력(回轉力) which literally means rotation(回轉) power(力).

In fact, most science and engineering terminology in Asia has Traditional Chinese character (aka hanja in Korean, kanji in Japanese) equivalents. The advantage of Chinese ideographs is that the actual principle explaining a word is contained in its symbolic representation. Even if you have no idea what torque means, if you look at its ideograph 回轉力 you can at least know that it has something to do with rotation. The ideograph is certainly more informative than the transliteration toe-keu (토그).

In Korea, there has been a systematic move away from the use of Chinese ideographs in favor of Hangul (native Korean script) over the past century and over the past 50 years or so, English transliteration into Hangul has become rampant.

But first, a historical detour into the background of Sino-Korean's decline in the Korean language. In 1894~1895, Korea's teetering Chosun dynasty passed the Second Gabo Reform (갑오개혁 甲午改革) which eliminated the civil service exam system (과거제도 科擧制度 ) based on the Chinese Classics while mandating the use of Hangul in lieu of Chinese characters in official documents. Fast forward 15 years to 1910, when Japan annexed Korea -- according to Japanese colonial gov't statistics (link in Korean), more than 90% of the Korean population could read neither Chinese nor Korean characters. (Note: the statistics from the colonial Japanese gov't should be taken with a grain of salt, as it was in their interest to discredit the natives as much as possible to justify their annexation) After Japan's defeat in WWII and Syngman Rhee's rise to power in South Korea, the illiteracy rate stood at 78% (link in Korean). Let me note that high illiteracy rates were common even in Western pre-industrial societies.

With the rise of nationalism in Korea's North and South, there was a movement to use pure Hangul free of Chinese characters. One problem with this plan, however, is that 70% of Korean originates from Chinese characters. The DPRK's solution was to remove many Sino-Korean words from the popular lexicon and replace them with pure Korean, a task at which they've been quite successful (one drawback, however, is that after 60 years of national division, people from the North and South sometimes have trouble communicating). South Korea, in contrast, pushed ahead with the Hangul-ization of school curricula, government publications, newspapers, etc. without removing Sino-Korean vocabulary from wide use.

This is problematic for one big reason -- different Chinese characters have lots of homophones in Korean. For example, the Chinese characters 鎭痛 (zhèn tòng, pain relief) and 陣痛 (zhèntòng, labor pains) have slightly different pronunciations in Chinese:



If you listen carefully to the Chinese pronunciation, you will notice that 鎭 has more stress on the first syllable than does 陣. Also the waveform display in the Soundcloud link above shows that the two are distinct. In Korean, however, the pronunciation for both 鎭痛 and 陣痛 is 진통 (jin-tong). Because these two different words are homophones, the only way you can know they mean different things is by using Chinese characters to disambiguate or by guessing from the context. But guessing from context is not foolproof. If you are a doctor in a busy hospital and you hear 'jin-tong' (진통), you might be confused as to whether it's referring to labor pains or the need for painkiller.

There are tens of thousands of such homophones in Korean and the meaning often cannot be gleaned from context alone. In conservative circles, there is much lament (link in Korean) about Korean language becoming a kind of Ebonics in which contemporary meaning and usage have been divorced from their linguistic roots.

I am no stickler for Korean tradition, but these critics have a point. Chinese ideographs can coexist with Hangul script for disambiguation purposes and provide more meaning than simple transliteration alone. Because of the growing role of English loan-words in Korean, reading comprehension is taking a hit. If Koreans were fluent English-speakers, then using such loan-words wouldn't matter, but I've noticed that my fellow translators often have no understanding of the technical material they're translating from English. This is exacerbated by the fact that most interpreters/translators in Korea are women, the vast majority of whom major in the humanities.

I believe this problem could be ameliorated somewhat if English-to-Korean technical translators used more Sino-Korean terminology, which includes semantics in their symbolic representation. Then translators could at least get a glimpse at the principles behind the terms they're translating.

Postscript
Some English engineering terms, their naive transliterations into Korean, and Sino-Korean equivalents:

English Transliterated Sino-Korean
torque 토크 회전력(回轉力), 선전력(旋轉力)
actuator 엑추에이터 작동기(作動機)
leverage 레버리지 공간력(槓杆力)
buffer 버퍼 완충장치(緩衝裝置)
detailing 디테일 세부장식(細部裝飾)


2014년 4월 29일 화요일

Finding Korean public domain works

On Wednesday Apr. 23rd, 2014 I attended the second class of the year for the KLTI (Korean Literature Translation Institute) Translation Atelier. This will be my fifth year as a KLTI-affiliated translator but I'm especially excited about this year's class because it's being led by Sora Kim-Russell, who has translated Shin Kyung-sook's I'll Be Right There (어디선가 나를 찾는 전화벨이 울리고) and Gong Ji-young's Our Happy Time (우리들의 행복한 시간) among other works.

During class, the topic of crowd-sourced and team translation came up and we discussed the idea of finding a non-copyrighted work to translate together as a class. Thanks to the Internet, there are a variety of sources for non-copyrighted works in Korean. Most of these works have been written by Korean authors who passed away long ago.

The first source is Wikibooks Korea. There are over 14,000 Korean public-domain documents available, including works written in Classical Chinese from the Joseon Dynasty era.

The second source is the Korea Copyright Commission, which maintains a list of works by Korean artists and writers from the late-19th century onward that are out of copyright (I noticed that most of these works are written in pure Hangul rather than in Classical Chinese).

The class hasn't yet started to discuss the logistics of team translation, but I think using some kind of CAT software would be a good idea. I use OmegaT in my day-to-day translation work, but have yet to use the team translation feature that supports git and SVN repos for storing translation memories and glossaries. I think Google Translator Toolkit (GTT) might also be a possibility (although lately I've heard it's been really slow and unresponsive) but its concordance searching and TM matching ability is far poorer than that of stand-alone locally-installed CAT applications. Regardless of what tool we end up using, any sort of team translation needs to have a mechanism for ensuring that translators don't step on each other's toes -- i.e. using multiple spellings for the same object or character and other inconsistencies in language use.

2014년 3월 30일 일요일

Enabling ibus support in OmegaT

In my translation work, I use OmegaT as my CAT tool. Up until 2009, I used Trados on a Windows system, but I finally got fed up with the bugginess and resource-hogging of Trados and switched to OmegaT 2.xx series later that year.

Although OmegaT is rock-solid, it does require some manual setup from the user, especially on Linux. As a translation environment, OmegaT must play nice with various IME's (input method editors) for inputting multiple languages on Linux. Today ibus seems to be the most popular IME on Linux, although many users needing to input East Asian languages still use scim.

Here's my setup for making OmegaT work with ibus-hangul, as I work with both Korean and English on Linux.

1. Add the following entries to your ~/.bashrc file:

export GTK_IM_MODULE=ibus
export XMODIFIERS=@im=ibus
export QT_IM_MODULE=ibus
export CLUTTER_IM_MODULE=ibus

2. Make sure that the ibus daemon loads at system startup (the specifics depend on what Desktop Environment you are using) with the following flags (in the case of Openbox, I have added the following entry to ~/.config/openbox/autostart):

env IBUS_ENABLE_SYNC_MODE=0 ibus-daemon -rdx

Where:
the -x --xim flag launches the ibus XIM server
the -d flag tells ibus to daemonize or run as a background process
the -r flag tells ibus to replace any old ibus daemons which are currently running
the prefix IBUS_ENABLE_SYNC_MODE=0 is necessary if you want ibus to work with non-GTK / non-QT apps such as Java or EFL (Enlightenment). If this option is not set, the SPACE character will not be correctly inserted for Hangul and other Asian languages. (ex: '가나다 ' will print as '가나 다' with space inserted to the left of the final character)

You can also reload ibus manually by typing the above from the command prompt.

3. In your OmegaT startup script, make sure to invoke OmegaT.jar with the following prefix:

XMODIFIERS=@im=ibus ... /path/to/OmegaT.jar

Here's a sample startup script that launches OmegaT with built-in support for Google Translate API v2 and Microsoft Translate API (the API keys are dummies in this example, of course) where OmegaT.jar has been installed to the folder ~/OmegaT_3.0.8:

#!/bin/bash
XMODIFIERS=@im=ibus java -jar -Xmx512M -Dgoogle.api.key=123456789-aBCde_fgHIjk-l-mnopqrs_tuvw_1 -Dmicrosoft.api.client_id=omegat_KE -Dmicrosoft.api.client_secret=1234567890AbCDEFghijkLMnopqrstuVWXYZ1122334= ~/OmegaT_3.0.8/OmegaT.jar



2013년 6월 8일 토요일

2013.05.14 한국문학번역원 아틀리에 발표

My slide presentation at a talk I gave at the Literature Translation Institute Korea translator's workshop on May 14, 2013. It's about overcoming procrastination and laziness by using personal tracking tools like RescueTime, Beeminder, etc. The presentation is written in a mixture of Korean and English.

2013년 4월 24일 수요일

My Korean Translation of the Dr. Seuss quote, "The more that you read, the more things you will know. The more that you learn, the more places you'll go."

I'm pleased that I was able to maintain the rhyme in Korean between "know" and "go" although the meaning is slightly different. My translation is as follows:


읽으면 읽을 수록 더 많이 안다
배우면 배울 수록 더 멀리 간다

Those of you who can read Korean may point out that "멀리 간다" (go further) is different from "the more places you'll go," but I think the translation is still pretty close to the original meaning while maintaining the rhyme of the original.