KR100498529B1 - 소프트웨어 번역용 자기 분석 편집기 시스템, 프로그램 및방법 - Google Patents

소프트웨어 번역용 자기 분석 편집기 시스템, 프로그램 및방법 Download PDF

Info

Publication number
KR100498529B1
KR100498529B1 KR10-2002-7000456A KR20027000456A KR100498529B1 KR 100498529 B1 KR100498529 B1 KR 100498529B1 KR 20027000456 A KR20027000456 A KR 20027000456A KR 100498529 B1 KR100498529 B1 KR 100498529B1
Authority
KR
South Korea
Prior art keywords
text data
text
user interface
user
editing
Prior art date
Application number
KR10-2002-7000456A
Other languages
English (en)
Other versions
KR20020035562A (ko
Inventor
야마모토케이치
유킨훙
킴히르데이비드브루스
야테스스탠포드루이스
Original Assignee
인터내셔널 비지네스 머신즈 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 인터내셔널 비지네스 머신즈 코포레이션 filed Critical 인터내셔널 비지네스 머신즈 코포레이션
Publication of KR20020035562A publication Critical patent/KR20020035562A/ko
Application granted granted Critical
Publication of KR100498529B1 publication Critical patent/KR100498529B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/465Distributed object oriented systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/38Creation or generation of source code for implementing user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • G06F9/454Multi-language systems; Localisation; Internationalisation

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Stored Programmes (AREA)
  • Devices For Executing Special Programs (AREA)
  • Machine Translation (AREA)

Abstract

본 발명은 번역자에 번역될 텍스트에 대한 문맥상의 정보를 제공하는 시스템, 방법 및 프로그램에 관한 것이다. 번역자에게는 원어의 그래픽 사용자 인터페이스(GUI)가 제공되므로, 번역자는 스크린 상의 각 텍스트 라벨을 대화식으로 번역할 수 있다. 번역이 상기 텍스트 상에서 문맥에 맞게 수행되기 때문에, 번역 확인 검사(TVT)에 소요되는 시간 및 비용이 감소되거나 제거된다. 상기 애플리케이션 내에서 상기 텍스트의 편집 기능은 상기 소프트웨어 애플리케이션 자체에 편집기 기능을 추가함으로써 얻어진다. 상기 애플리케이션 내의 각 텍스트 라벨은 특정 리소스 번들 이름 및 키를 가지고 국부화 파일 내에 저장된다. 상기 편집기가 실행되는 경우에, 텍스트 객체는 그 소스 데이터에 대해 자기 분석되며, 상기 번역자는 상기 텍스트를 직접 편집할 수 있다. 그 다음에, 소스 데이터는 추후에 사용을 위해 상기 번역본을 저장한다.

Description

소프트웨어 번역용 자기 분석 편집기 시스템, 프로그램 및 방법 {INTROSPECTIVE EDITOR SYSTEM, PROGRAM, AND METHOD FOR SOFTWARE TRANSLATION}
본 발명은 일반적으로 국제용 소프트웨어를 개발하는 데 사용되는 툴(tool)에 관한 것이며, 특히 다중 언어 소프트웨어 개발에 관한 것이다. 특히, 본 발명은 컴퓨터 소프트웨어에서 언어 번역을 수행하기 위한 개선된 시스템 및 방법에 관한 것이다.
컴퓨터가 널리 보급됨에 따라, 소프트웨어 개발자는 그 소프트웨어 개발자의 모국어를 모르는 사람들에게 그의 제품을 판매할 수 있어야 한다. 특히, 영어로 개발된 소프트웨어는 미국 및 기타 국가 모두에서 영어를 사용하지 않는 사람들이 사용할 수 있도록 하는 것이 바람직하다. 따라서, 영어로 개발된 다수의 소프트웨어 애플리케이션은 영어를 사용하지 않는 자가 사용할 수 있도록 추후에 번역된다.
소프트웨어 패키지를 1개 이상의 다른 언어로 번역하는 과정에는 많은 시간과 비용이 소모된다. 각 텍스트 메시지, 메뉴 및 버튼은 사용자가 프로그램을 작동할 수 있도록 번역되어야 한다. 이것을 수행할 수 있는 가장 직접적인 방법은 모든 텍스트 열, 즉 사용자에게 디스플레이되는 모든 문자열에 대한 전체 프로그램 소스 코드를 검색하여 이것들을 각각 새로운 언어로 번역하는 것이다.
이러한 방법에는 몇 가지 문제점이 있다. 한 가지 문제점은 상기 소프트웨어가 종류별로 번역되고 원하는 각 언어로 컴파일되어야 한다는 것이다. 물론, 이것은 그 자체로 비용이 많이 소요되는 과정이고, 상기 소스 코드상에 어떠한 변화가 생기면 상기 소스 코드의 각 언어 버전(version)은 편집되고 다시 컴파일되어야 한다.
도 2는 자바 애플리케이션(Java application)상의 하드 코드 라벨(hardcoded label)의 일 실시예를 도시하고 있다. 자바에는 두 가지, 즉 프로그래밍 언어와 플랫폼이 있다. 한 측면에서, 자바는 고레벨 프로그래밍 언어이며, 각 자바 프로그램이 다수의 플랫폼에 사용 가능하도록 컴파일 및 해석된다는 점에서 특이하다. 또한, 자바는 다른 하드웨어 기반(hardware-based) 플랫폼상에서 실행되는 소프트웨어 전용 플랫폼이다. 상기 자바 플랫폼은 두 개의 컴포넌트, 즉 자바 버츄얼 머신(Java Virtual Machine; 자바 VM) 및 자바 애플리케이션 프로그래밍 인터페이스(Java Application Programming Interface; 자바 API)를 갖는다.
자바 VM은 자바 플랫폼의 기본이고 다양한 하드웨어 기반 플랫폼에 탑재된다. 자바 API는 다수의 유용한 기능, 예컨대 그래픽 사용자 인터페이스(graphical user interface; GUI) 장치를 제공하는 기성 소프트웨어 컴포넌트의 거대한 집합체이다. 상기 자바 API는 관련 컴포넌트의 라이브러리(패키지)로 분류된다.
자바빈스(JavaBeans)는 컴포넌트 기술을 자바 플랫폼에 도입하였다. 자바빈스 API는 재사용 가능하고, 플랫폼 독립형인 컴포넌트를 지원한다. 자바빈스 순응형(JavaBeans-compliant) 애플리케이션 빌더 툴을 사용하여, 컴포넌트는 애플릿, 애플리케이션 또는 복합 컴포넌트로 결합될 수 있다. 자바빈스 컴포넌트는 빈스(Beans)로 알려져 있다.
도 2는 2개의 GUI "버튼"(210, 230)을 포함하는 윈도우(200)를 도시하고 있다. 상기 버튼들은 하드 코드 자바 "JButton"을 호출함으로써 생성된다. 예컨대, 코드 라인(220)은 문자열 인자 "Ok"로서 JButton을 호출하여 텍스트 라벨 "Ok"를 포함하는 버튼(210)을 생성한다. 이와 유사하게, 코드 라인(240)은 문자열 인자 "Cancel"로서 JButton을 호출하여 텍스트 라벨 "Cancel"를 포함하는 버튼(230)을 생성한다. 도 2에 도시된 바와 같이 하드 코드 문자열을 사용하는 소프트웨어 애플리케이션을 번역하기 위하여, 상기 코드의 각 라인이 분석되어야 하고, 디스플레이된 각 문자열은 개별적으로 각 목표 언어(target language)로 번역되어야 한다.
이러한 문제점의 한 가지 해결책은 디스플레이되는 텍스트 열이 실행 가능 코드 자체로부터 분리되어 저장되는 분리된 국부화 파일(localization file)을 사용하는 것이다. 상기 소프트웨어가 실행되면, 어떠한 언어가 상기 파일에 저장되어 있더라도 주어진 모든 표시 화면에 대한 텍스트가 상기 국부화 파일로부터 간단하게 판독된다. 이러한 방식에서, 국부화 파일 내의 텍스트는 실행 가능 상태를 방해하는 일없이 번역될 수 있고, 상기 실행 가능 상태는 상기 번역된 텍스트를 방해하는 일없이 변화 또는 대체될 수 있다(물론, 디스플레이된 텍스트가 변화하는 경우에 국부화 파일 내의 해당 엔트리도 변화되어야 하는 것은 예외임). 국부화 파일은 컴파일된 메시지 목록, 자바 리소스 번들(Java resource bundle), HTML 파일 및 다른 많은 것을 비롯하여, 다수의 형식으로 존재할 수 있다.
국부화 파일을 사용하는 것은 다중 번역을 함에 있어서 편리한 방법을 제공할 수 있으나, 번역이 문맥에 대한 고려없이 개별 파일 내의 격리된 텍스트에서 수행된다는 점에서 추가적인 문제가 발생한다. 이러한 경우가 있기 때문에, 번역자가 텍스트에 나타나는 문맥에 따라 번역을 할 수 있다면, 존재하지 않을 에러가 번역에 종종 포함된다. J Akerley, N.Li, A.Parlavecchia "Programming with VisualAge for Java Version 2"(IBM Redbooks, XP-002150550, 1998년 11월, 홈페이지 http://www.redbooks.ibm.com)는 소프트웨어 개발자가 국제 자바 애플리케이션(international Java application)을 기록할 수 있는 방법에 대해 개시하고 있다.
번역이 어떤 방식으로 이루어지더라도, 작동하는 프로그램의 각 스크린은 번역된 텍스트가 적합하게 디스플레이되는 것을 보장하고 상기 텍스트를 표현상 문맥에 적합하도록 번역하기 위해 교정 받아야 한다. 따라서, 어떠한 표현, 문법 또는 기타의 번역상 에러를 발견하도록 번역된 프로그램의 각 스크린을 교정하기 위해 다른 언어에 배경 지식을 가진 사람을 고용하는 것은 공통적인 일이 되었다. 이러한 제2 단계를 번역 확인 검사(Translation Verification Testing; TVT)라고 한다.
종래의 방법에 의한 번역 및 검사 사이클의 도면이 도 3에 도시되어 있다. 국가 A에 위치한 특정 회사 A는 국가 B에서 사용하기 위한 애플리케이션을 제작한다(310). 그 다음에, 회사 A는 그 애플리케이션을 포장하여 국가 B에 위치한 회사 B에게 보낸다(320). 이어서, 회사 B는 그 애플리케이션을 실행하여 번역상 에러 또는 국제화 에러(internationalization error)를 검사한다(330). 그 다음에, 회사 B는 TVT 검사를 수행하여 어떠한 번역상 에러가 발견되면 필요한 재번역을 수행한다(340). 그 다음에, 회사 B는 그 정정된 사항을 회사 A에 돌려보내며, 다른 에러가 발견되지 않을 때까지 상기 과정을 반복한다.
이러한 종래의 과정에 의하면, 국가 B에서 에러가 정정되거나 번역상 변화가 발생할 때마다 그 제품이 재검사 받기 전에 국가 A에서 다시 제작되고 다시 포장되어야 한다. 이러한 이유 때문에, 상기 TVT 과정에는 비용과 시간이 많이 소모될 수밖에 없다. 따라서, 최초 번역이 가능한 정확하게 되도록 번역자에게 부가 정보, 특히 문맥상 정보를 공급하는 수단을 제공하는 것이 바람직하다. 그렇게 함으로써, TVT 검사에 소모되는 비용과 시간이 감소되거나 제거될 수 있다.
도 1은 본 발명의 바람직한 실시 형태에 따른 시스템이 구현될 수 있는 데이터 처리 시스템을 나타낸 도면.
도 2는 하드 코드 텍스트를 포함하는 GUI 디스플레이의 일 실시예를 나타낸 도면.
도 3은 종래의 방법에 따른 번역 및 검사 과정을 나타낸 블록도.
도 4는 본 발명의 바람직한 실시 형태에 따른 번역 및 검사 과정을 나타낸 블록도.
도 5는 본 발명의 바람직한 실시 형태에 따른 자바 리소스 파일을 이용한 GUI 디스플레이의 일 실시예를 나타낸 도면.
도 6은 본 발명의 바람직한 실시 형태에 따른 소프트웨어 애플리케이션용 자기 분석 툴에 대한 블록도.
도 7은 본 발명의 바람직한 실시 형태에 따른 자바 랩퍼(wrapper) 클래스에 대한 블록도.
도 8은 본 발명의 바람직한 실시 형태에 따른 자바 랩퍼 클래스를 보다 상세히 나타낸 블록도.
도 9는 본 발명의 바람직한 실시 형태에 따른 자바 패사드(facade) 클래스에 대한 블록도.
본 발명의 목적은 국제용 소프트웨어를 개발하는 데 사용되는 개선된 툴을 제공하는 것이다.
본 발명의 다른 목적은 다중 언어 소프트웨어 개발에 사용되는 개선된 툴을 제공하는 것이다.
본 발명의 또 다른 목적은 컴퓨터 소프트웨어에서 언어 번역을 수행하기 위한 개선된 시스템 및 방법을 제공하는 것이다.
본 발명에 대한 그 밖의 추가적인 목적, 특징 및 장점은 이하의 상세한 설명에서 명확해질 것이다.
보다 효율적인 번역 과정은 번역될 텍스트에 대한 문맥상 정보를 번역자에게 제공하는 시스템, 방법 및 프로그램을 제공함으로써 이루어질 수 있다. 원어의 GUI가 번역자에게 제공되므로, 상기 번역자는 화면상의 각 텍스트 라벨을 대화식으로(interactively) 번역할 수 있다. 상기 번역은 텍스트상의 문맥에 적합하게 번역되기 때문에, TVT 검사에 소모되는 시간 및 비용이 감소 또는 제거된다. 상기 애플리케이션에서 상기 텍스트의 편집 기능은 편집기 기능을 상기 소프트웨어 애플리케이션에 추가함으로써 얻어질 수 있다. 상기 애플리케이션 내의 각 텍스트 라벨은 특정 리소스 번들 이름 및 키를 갖는 국부화 파일 내에 저장된다. 편집기가 작동되는 경우에, 상기 텍스트 객체는 그 소스 데이터에 대하여 자기 분석되고, 상기 번역자는 상기 텍스트를 직접 편집할 수 있다. 그 다음에, 소스 데이터는 추후 사용을 위해 그 번역본을 저장하는 데 사용된다.
따라서, 본 발명은 소프트웨어 프로그램의 텍스트 데이터를 실행시에 편집하는 방법에 있어서, 비데이터 사용자 상호 작용부(non-data user interaction portion) 내에 제1 텍스트 데이터를 포함하는 사용자 인터페이스를 디스플레이하는 단계와, 사용자가 편집을 하기 위해 상기 디스플레이된 사용자 인터페이스 내의 상기 제1 텍스트 데이터를 선택하는 것에 응답하여, 상기 제1 텍스트 데이터를 포함하는 소프트웨어 객체를 식별하기 위해 상기 사용자 인터페이스를 생성하는 소스 코드를 자기 분석하는 단계와, 상기 사용자 인터페이스가 디스플레이되는 동안에, 상기 사용자가 상기 제1 텍스트 데이터를 대신하고자 하는 제2 텍스트 데이터를 사용자 입력으로부터 수신하는 단계와, 상기 제1 텍스트 데이터를 대신하여 상기 제2 텍스트 데이터를 기계가 판독할 수 있는 형식(machine readable form)으로 상기 소프트웨어 객체 내에 저장하는 단계와, 상기 제2 텍스트 열을 상기 소프트웨어 객체 내에 저장한 후에 상기 사용자 인터페이스 디스플레이를 생성하는 상기 소스 코드를 실행하는 동안에, 상기 사용자 인터페이스 내의 상기 제1 텍스트 데이터를 대신하여 상기 제2 텍스트 데이터를 디스플레이하는 단계를 포함하는 소프트웨어 프로그램의 텍스트 데이터를 편집하는 방법을 제공한다.
다른 실시 형태에서, 본 발명은 적어도 프로세서, 접근 가능 메모리(accessible memory) 및 접근 가능 디스플레이를 구비하며, 실행시에 텍스트 데이터를 편집하기 위한 컴퓨터 시스템에 있어서, 비데이터 사용자 상호 작용부 내에 제1 텍스트 데이터를 포함하는 사용자 인터페이스를 디스플레이하는 수단과, 사용자가 편집을 하기 위해 상기 디스플레이된 사용자 인터페이스 내의 상기 제1 텍스트 데이터를 선택하는 것에 응답하여, 상기 제1 텍스트 데이터를 포함하는 소프트웨어 객체를 식별하기 위해 상기 사용자 인터페이스를 생성하는 소스 코드를 자기 분석하는 수단과, 상기 사용자 인터페이스가 디스플레이되는 동안에, 상기 사용자가 상기 제1 텍스트 데이터를 대신하고자 하는 제2 텍스트 데이터 - 여기서, 상기 제2 텍스트 데이터는 상기 제1 텍스트 데이터를 제1 언어에서 제2 언어로 번역한 것임 - 를 사용자 입력으로부터 수신하는 수단과, 상기 제1 텍스트 데이터를 대신하여 상기 제2 텍스트 데이터를 기계가 판독할 수 있는 형식으로 상기 소프트웨어 객체 내에 저장하는 수단과, 상기 제2 텍스트 열을 상기 소프트웨어 객체 내에 저장한 후에 상기 사용자 인터페이스 디스플레이를 생성하는 상기 소스 코드를 실행하는 동안에, 상기 사용자 인터페이스 내의 상기 제1 텍스트 데이터를 대신하여 상기 제2 텍스트 데이터를 디스플레이하는 수단을 포함하는 실행시에 텍스트 데이터를 편집하기 위한 컴퓨터 시스템을 제공한다.
본 발명의 또 다른 실시 형태는 컴퓨터에 의해 사용 가능한 매체(computer usable medium)상에 컴퓨터 판독 가능 프로그램 코드를 구비하며, 실행시에 텍스트 데이터를 편집하기 위한 컴퓨터 프로그램 제품에 있어서, 비데이터 사용자 상호 작용부 내에 제1 텍스트 데이터를 포함하는 사용자 인터페이스를 디스플레이하는 명령어와, 사용자가 편집하기 위해 상기 디스플레이된 사용자 인터페이스 내의 상기 제1 텍스트 데이터를 선택하는 것에 응답하여, 상기 제1 텍스트 데이터를 포함하는 소프트웨어 객체를 식별하기 위해 상기 사용자 인터페이스를 생성하는 소스 코드를 자기 분석하는 명령어와, 상기 사용자 인터페이스가 디스플레이되는 동안에, 상기 사용자가 상기 제1 텍스트 데이터를 대신하고자 하는 제2 텍스트 데이터 - 여기서, 상기 제2 텍스트 데이터는 상기 제1 텍스트 데이터를 제1 언어에서 제2 언어로 번역한 것임 - 를 사용자 입력으로부터 수신하는 명령어와, 상기 제1 텍스트 데이터를 대신하여 상기 제2 텍스트 데이터를 기계가 판독할 수 있는 형식으로 상기 소프트웨어 객체 내에 저장하는 명령어와, 상기 제2 텍스트 열을 상기 소프트웨어 객체 내에 저장한 후에 상기 사용자 인터페이스 디스플레이를 생성하는 상기 소스 코드를 실행하는 동안에, 상기 사용자 인터페이스 내의 상기 제1 텍스트 데이터를 대신하여 상기 제2 텍스트 데이터를 디스플레이하는 명령어를 포함하는 실행시에 텍스트 데이터를 편집하기 위한 컴퓨터 프로그램 제품을 제공한다.
이제 첨부 도면을 참조하면서 실시예의 방식으로 본 발명의 바람직한 실시 형태를 설명하도록 하겠다.
도 1은 본 발명의 바람직한 실시 형태가 구현될 수 있는 데이터 처리 시스템에 대한 블록도를 도시하고 있다. 예컨대, 데이터 처리 시스템(100)은 IBM사(International Business Machines Corporation; 미국 뉴욕주 소재)로부터 입수 가능한 컴퓨터 중 하나가 될 수 있다. 데이터 처리 시스템(100)은 프로세서(101,102)를 포함하는데, 대표적인 실시 형태에서 이들은 레벨 2(L2) 캐시들(103,104)에 각각 연결되며, 이어서 상기 캐시들(103,104)은 시스템 버스(106)에 각각 연결된다.
또한, 시스템 메모리(108) 및 주 호스트 브리지(Primary Host Bridge; PHB)(122)가 시스템 버스(106)에 연결된다. PHB(122)는 I/O 버스(112)를 시스템 버스(106)에 연결하여 데이터 트랜잭션(transaction)을 하나의 버스에서 다른 하나의 버스로 중계 및/또는 변환한다. 대표적인 실시 형태에서, 데이터 처리 시스템(100)은 I/O 버스(112)에 연결된 그래픽 어댑터(118)를 포함하여, 디스플레이(120)에 대한 사용자 인터페이스 정보를 수신한다. 주변 장치, 예컨대 하드디스크 드라이브와 같은 비휘발성 저장 장치(114) 및 종래의 마우스, 트랙볼 등과 같은 키보드/포인팅 디바이스(116)는 업계 표준 기준(Industry Standard Architecture; ISA) 브리지(121)를 경유하여 I/O 버스(112)에 연결된다. 또한, PHB(122)는 I/O 버스(112)를 경유하여 PCI 슬롯(124)에 연결된다.
도 1에 나타난 대표적인 실시 형태는 단지 본 발명을 설명하기 위하여 제공되는 것이며, 이 분야에서 통상의 지식을 가진 자는 형식 및 기능면에서 여러 가지 변경이 가능하다는 것을 알 것이다. 예컨대, 데이터 처리 시스템(100)은 CD-ROM(compact disk read-only memory) 또는 DVD(digital video disk) 드라이브, 사운드 카드 및 오디오 스피커와 다수의 기타 선택적인 컴포넌트를 포함할 수도 있다. 그러한 모든 변경은 본 발명의 사상 및 범위 내에 있을 것이다. 데이터 처리 시스템(100) 및 이하의 대표 도면은 단지 본 발명을 설명하기 위한 실시예로서 제공되는 것이며, 본 발명을 구조적으로 한정하는 것은 아니다. 사실상, 이 방법 및 시스템은 소프트웨어 애플리케이션이 실행될 수 있는 어떠한 프로그램 가능 컴퓨터 시스템 또는 시스템들의 네트워크에서 사용 목적에 따라 쉽게 변경될 수 있다.
소프트웨어 애플리케이션의 통상적인 번역 과정은 2단계를 포함한다. 제1 단계에서, 상기 애플리케이션의 텍스트 성분에 대한 인간 언어 텍스트(human language text)가 텍스트 파일 내에 수집되어 번역자에게 전달된다. 상기 번역자는 상기 애플리케이션을 인식하지 못하므로 번역되는 상기 텍스트의 실제 사용에 관한 문맥상의 정보를 갖지 못한다. 따라서, 상기 번역 과정에서 에러가 발생하기 쉽다. 이러한 에러를 해결하고 상기 번역된 텍스트를 확인하기 위하여, 제2 단계, 즉 번역 확인 검사(TVT)가 수행된다.
바람직한 실시 형태는 개발자가 번역 과정의 두 단계를 통합할 수 있도록 하여 번역 과정을 단순화한다. 이것은 상기 번역자에게 번역되는 항목에 대한 직접적인 문맥상 정보를 제공함으로써 달성된다. 결과적으로, 비용 및 시간 소모가 큰 TVT 단계를 축소 또는 제거할 수 있다.
바람직한 실시 형태에 있어서, 번역자가 인터페이스 컴포넌트를 직접 편집할 수 있는 자기 분석 편집기(introspective editor)가 제공되어 번역의 결과 - 바람직한 실시 형태에서 자바 리소스 번들(Java resource bundle) - 를 텍스트 파일 내에 저장한다. 이것은 정확한 번역을 수행하는 데 필요한 문맥을 번역자에 제공하므로, 번역이 더욱 정확하게 될 수 있다.
도 4는 바람직한 실시 형태에 따른 개선된 번역 및 검사 과정에 대한 블록도를 도시하고 있다. 국가 A에 위치한 회사 A는 국가 B에서 사용하기 위한 애플리케이션을 제작한다(410). 그 다음에, 회사 A는 그 애플리케이션을 포장하여 국가 B에 위치한 회사 B에게 보낸다. 이어서, B회사는 그 애플리케이션을 실행하여 번역상 에러 또는 국제화 에러를 검사한다(430). 그 다음에, 회사 B는 TVT 검사를 수행하여 어떠한 번역상 에러가 발견되면 필요한 재번역을 행할 것이다(440). 도 3에 설명된 경우와 달리, 본 실시 형태에서 번역은 문맥에 적합하게 수행되어 국부적으로 저장되기 때문에, 회사 B는 상기 제품을 국가 A로 되돌려 보내어 다시 제작하는 일 없이 상기 번역을 즉시 재검사할 수 있다(430). 결과적으로, 상기 번역 및 검사 단계가 종래의 방법에 비해 훨씬 효율적이다.
물론, 국가 B에서의 상기 검사 단계에서 다른 에러, 즉 번역상 문제에서 정정되지 않는 프로그래밍상의 문제들이 발견될 수 있다. 이 경우에, 종래의 방법과 같이 상기 애플리케이션은 회사 A로 되돌려져 정정된다.
본 명세서에서 설명된 몇 가지 실시 형태에 따르면, 번역자는 그가 번역하고 있는 소프트웨어 애플리케이션을 실제로 실행할 것이며, 상기 개시된 실시 형태는 번역자가 스크린으로부터 텍스트를 직접 선택하여 실시간으로 편집할 수 있는 수단을 제공한다. 상기 번역자는 최종 사용자와 같이 상기 애플리케이션을 실제로 인지하고 있기 때문에, 상기 번역은 보다 정확해질 것이다.
본 발명의 바람직한 실시 형태에서 사용되는 자기 분석 편집기는 번역되는 텍스트를 수반하는 "팝업(pop-up)" 편집기 윈도우로서 제공된다. 상기 텍스트가 번역되는 경우에, 상기 텍스트와 관련된 자바 컴포넌트가 그 텍스트의 소스 데이터, 예컨대 리소스 번들 이름 및 키를 결정하기 위해 자기 분석된다. 상기 번역자가 텍스트를 선택하는 경우에, 편집기 팝업 윈도우가 디스플레이되고, 상기 번역자는 번역된 텍스트를 해당 버튼에 기록한다. 상기 편집기가 닫히고, 상기 번역된 텍스트는 새로운 파일에 저장되거나 또는 원본 텍스트를 원본 파일에 중복 기록하는 방식으로 국부화 파일 내에 저장될 것이다. 따라서, 완전한 번역은 상기 버튼이 나타나는 최종 애플리케이션에서 문맥에 적합하게 수행된다.
바람직한 실시 형태에서, "ctrl-alt-shift"의 키 조합은 상기 디스플레이된 텍스트가 번역되어야 한다는 것을 나타내는 데 사용된다. "ctrl-alt-shift"를 누르고 마우스 또는 다른 포인팅 디바이스를 "오른쪽 클릭"함으로써 GUI 윈도우가 상기 디스플레이 내의 텍스트 라벨 상에 표시되는 경우에, 상기 텍스트 라벨이 번역될 것이라는 것을 나타낸다. 편집기 윈도우가 열리면, 번역자는 새로운 텍스트를 편집기 윈도우에 직접 기록할 수 있다. 상기 번역자의 임무가 끝나면, 상기 새로운 텍스트는 추후 사용을 위해 저장된다.
소프트웨어 애플리케이션의 사용자 인터페이스 내에서 상기 텍스트 성분을 직접 편집하고 문맥을 상기 번역자에게 제공함으로써, 이 방법은 번역 과정 중 TVT 단계를 제거하여 시간 및 에러를 줄일 수 있다.
상기 편집기를 "자기 분석(introspective)" 편집기라고 하는데, 이것은 상기 실시 형태에서, 상기 편집기가 "setText" 및 "getText" 메소드(method)로서 컨트롤(control)을 표시하고 편집하는 자바 프로그램 언어의 자기 분석 프로퍼티(property)를 이용하기 때문이다. 자바, 자바스크립트(JavaScript), 자바빈스 및 기타의 자바 관련 툴의 몇 가지 양상이 본 명세서에서 설명되었지만, 다른 자료들은 선 마이크로 시스템(Sun Microsystems)으로부터 입수 가능하며, 홈페이지 http://java.sun.com. 에서 찾을 수 있다.
각 자바빈스 컴포넌트는 프로퍼티, 메소드 및 이벤트를 포함하여 그 고유의 특성을 갖는다. 이러한 특성들은 다른 빈스의 자기 분석으로서 알려진 과정에 의해 검사될 수 있다. 빈스 지원 자기 분석(Beans support introspection)에는 다음의 두 가지 방식이 있다.
1. 빈스 특성을 말할 때 설계 패턴으로서 알려진 특정 규칙을 고수하는 방법. 빈스 특성을 발견하기 위해 java.beans.Introspector 클래스가 빈스의 설계 패턴을 검사한다. 상기 Introspector 클래스는 코어 리플렉션(core reflection) API에 따라 결정된다.
2. 프로퍼티, 메소드 및 이벤트 정보에 관련 Bean Information 클래스를 명시적으로 제공하는 방법. Bean Information 클래스는 BeanInfo 인터페이스를 구현한다. BeanInfo 클래스는 나타난 빈스 특성을 애플리케이션 빌더 툴에 명시적으로 기입한다.
프로퍼티들은 설계할 때 변화될 수 있는 빈스의 외관 및 작용 특성이다. 빌더 툴은 빈스 상에서 자기 분석하여 그 프로퍼티들을 인지하고, 조작하기 위해 상기 프로퍼티들을 노출한다. 빈스가 프로퍼티들을 노출하므로 상기 빈스는 설계시 주문 제작될 수 있다. 주문 제작은 두 가지 방식, 즉 프로퍼티 편집기를 사용하거나 또는 보다 복잡한 빈스의 맞춤(customize)을 사용하는 방식으로 지원될 수 있다. 빈스는 다른 빈스와 통신하기 위해 이벤트를 사용한다. 이벤트를 수신하고자 하는 빈스(청취자 빈스)는 이벤트를 송신하는 빈스(소스 빈스)와의 관계를 등록한다. 빌더 툴은 빈스를 검사하여 빈스가 송신할 이벤트와 수신할 이벤트를 결정한다.
빈스는 그들의 상태를 지속하여 저장 및 복원할 수 있다. 빈스 프로퍼티를 변화시키면, 상기 빈스의 상태를 저장하고 추후에 상기 빈스를 복원할 수 있으므로 프로퍼티는 변화되지 않는다. 자바빈스는 지속성을 지원하기 위하여 Java Object Serialization을 사용한다.
빈스 메소드는 자바 메소드와 같고, 다른 빈스 또는 스크립트 환경에서 호출될 수 있다.
빈스가 빌더 툴에 의해 이해되도록 설계되었으나, 이벤트, 프로퍼티 및 지속성에 대한 지원을 비롯한 모든 키 API는 프로그래머도 쉽게 판독하고 이해할 수 있도록 설계되었다.
Introspector 클래스는 목표 자바 빈스에 의해 지원되는 프로퍼티, 이벤트 및 메소드를 파악하기 위해 툴에 대한 표준 방식을 제공한다. 상기 세 가지 종류의 각 정보에 대하여, Introspector는 명시적 또는 암시적 정보를 찾는 빈스 클래스와 상위 클래스를 분리하여 분석하고, 상기 정보를 목표 빈을 포괄적으로 설명하는 BeanInfo 객체를 만드는데 사용할 것이다.
번역용 자기 분석 편집기
바람직한 실시 형태는 소프트웨어 텍스트의 번역이 가능하도록 클래스 필드값을 사용하는 수단을 제공한다. 소프트웨어 디스플레이 내의 각 텍스트 라벨이 클래스 객체에 저장된다
이 실시 형태에서, 디스플레이되는 실제 텍스트, 예컨대 GUI 버튼은 하드 코드(hard-coded)되지 않고 자바 ResourceBundle 국부화 파일 내에 저장된다. 이제 도 5에는, 자바 리소스 번들을 사용하여 디스플레이되는 버튼 라벨의 실시예가 도시되어 있다. 이 도면에서, GUI 버튼(510,530)을 포함하는 윈도우(500)가 도시되어 있다. 이것은 도 2의 윈도우(200)와 대응한다는 점에 주목하자. 그러나, 여기서 버튼(510)은 ResourceBundle을 인용하는 자바 JButton 호출(520)을 사용함으로써 생성된다.
이 실시예에서, 명령 "JButton(res.getString("Ok"))"(540)은 GUI 버튼을 생성하고, "OK" 버튼에 해당하는 텍스트에 대한 리소스 파일 룩업(lookup)을 행하여 상기 버튼에 라벨을 붙인다. 자바 리소스 파일은 총괄하여 550으로 도시되고, 영어 참조 파일은 560으로 도시되어 있다. 파일(560)에서, 엔트리(580)는 "OK" 버튼에 해당하는 텍스트가 "Ok" 임을 나타낸다. 따라서, 명령(520)은 텍스트 "Ok"를 포함하는 GUI 버튼을 생성한다. 이 실시예에서, 명료함을 위하여 버튼 이름은 대문자로 표시하고, 버튼 텍스트 라벨은 대문자와 소문자를 혼용하여 표시한다.
유사하게, 명령 "JButton(res.getString("CANCEL"))"(540)은 GUI 버튼을 생성하고, "CANCEL" 버튼에 해당하는 텍스트에 대한 리소스 파일 룩업을 행하여 상기 버튼에 라벨을 붙인다. 파일(560)에서, 엔트리(570)는 "CANCEL" 버튼에 해당하는 텍스트가 "Cancel" 임을 나타낸다. 따라서, 명령(520)은 텍스트 "Cancel"을 포함하는 GUI 버튼(530)을 생성한다. 물론, 리소스 파일(560)에서 실제 해당하는 텍스트는 어떠한 것도 될 수 있다. 즉, 엔트리(570)는 {"CANCEL","Stop"}을 판독할 수 있으며, 이로써 명령(540)이 실행될 때마다 "Stop" 라벨이 붙은 버튼이 생성된다. 물론, 이러한 접근법은 GUI 버튼에 한정되지 않고, 국부화 리소스 파일로부터 디스플레이 가능한 텍스트를 찾는 데 사용될 수 있다.
상기 리소스 파일은 자바 객체로서 디스플레이되는 텍스트를 저장하므로, 자바 환경의 자기 분석 프로퍼티들은 번역자가 팝업 편집기를 이용하여 애플리케이션 텍스트를 직접 편집할 수 있게 하는 데 이용될 수 있다.
팝업 편집기가 실행되는 경우에, getText가 목표 객체를 호출하여 현재의 텍스트를 상기 편집기로 되돌린다. 이 텍스트가 번역자에게 디스플레이되고, 번역자가 그 텍스트를 편집하게 된다. 번역/편집이 완료되는 경우에, 새로운 텍스트가 setText 호출을 사용하여 상기 객체 내에 저장된다.
마지막으로, 새로운 텍스트를 포함하는 객체는 자바 ResourceBundle 파일로 다시 저장된다. 그 후에, 소프트웨어 애플리케이션은 상기 변경된 객체를 사용하여 실행될 수 있고, 그 다음에 번역된 텍스트를 디스플레이 상에 나타낼 것이다.
도 6을 참조하면, 이 실시 형태에서 자기 분석 편집기(610)는 번역이 진행 중인 애플리케이션(650)과 분리된 소프트웨어 프로그램이다. 상기 편집기(610)는 자기 분석 API에 대한 코드(620), 편집기 GUI(630) 및 파일 I/O 시스템(640)을 포함한다. 목표 애플리케이션(650)은 번역될 텍스트 열을 포함하는 UI 객체(660)를 자바 리소스 파일 내에 저장한다.
이 실시 형태에서, 상기 번역자는 목표 애플리케이션(650) 및 자기 분석 편집기(610)를 동시에 실행하고 있다. 팝업 편집기가 사용되는 경우에, 자기 분석 편집기는 목표 애플리케이션(650)으로부터 객체를 검색하고 저장한다.
자바 랩퍼 API
다른 구현 방법으로 전술한 바와 같은 문맥에 적합한 번역 결과를 얻을 수 있지만, 자바 UI 클래스의 "랩퍼(wrapper)" 클래스를 사용한다. 자바 랩퍼 클래스들은 프로그래머가 자바 컴포넌트를 새로운 컴포넌트로 "랩(wrap)"할 수 있게 하여, 최초 컴포넌트의 모든 속성이 하나 이상의 새로운 또는 확장된 속성을 추가하게 한다.
이러한 실시 형태는 자바 Swing 컴포넌트, 예컨대 JButton을 확장하여 리소스 번들 이름 속성 및 키 이름 속성을 인스턴스 객체 내에 저장한다. 상기 확장된 컴포넌트는 상기 속성들 및 get/set 메소드들과 함께 콘스트럭터(constructor)를 구현한다. 이러한 속성들은 상기 컴포넌트상의 팝업 다아얼로그(popup dialog) 내에서 디스플레이될 수 있고 사용자는 실행시 상기 라벨을 편집할 수 있다. 상기 팝업 다이얼로그 내에서 이루어진 변화는 애플리케이션 UI 컴포넌트에 직접 반영되고 로그 파일 내에 저장된다.
대규모 애플리케이션에서, 동일한 텍스트(예컨대, "Save")가 몇 개의 리소스 파일 내에서 정의될 수 있고, 상이한 다이얼로그는 동일한 라벨에 대한 상이한 리소스 파일을 사용할 수 있다.
예컨대, 라벨 "Save"가 특정 다이얼로그에서 다른 단어, 예컨대 "Store"로 대체되어야 하나 다른 다이얼로그에서는 "Save"로서 유지되어야 하는 경우에, 번역자는 어떤 리소스 파일이 실제로 상기 라벨을 디스플레이하는데 사용되는 지를 알아야 한다. 번역자는 보통 리소스 파일에 접근하지만, GUI 컴포넌트 및 리소스 파일이 제공되는 프로그램 소스에는 접근하지 않는다. 번역자는 어떤 리소스 파일이 사용되고 있는 지를 추측해야 하는데, 이것은 매우 비효율적이며, 시간이 많이 소모되며 에러가 발생하기 쉽다.
본 실시 형태는 번역자가 어떠한 리소스 파일 및 키가 특정 GUI 라벨에 사용되는지를 알 수 있게 하는 수단을 제공한다. 이것을 달성하기 위해, 리소스 파일 이름 및 키 이름은 자바 랩퍼 클래스를 이용하여 라벨 자체뿐만 아니라 GUI 컴포넌트의 인스턴스에도 추가되어야 한다. 상기 정보가 GUI 컴포넌트 내에 저장되는 경우에, 상기 툴은 리소스 이름 및 키를 번역자에게 디스플레이하여 편집되도록 할 수 있고, 또한 상기 툴은 이 툴에 의해 제공된 편집기 인터페이스를 사용하여 번역자에 대한 리소스 파일도 편집할 수 있다.
상기 랩퍼는 자바 클래스를 두 가지 방식으로 확장할 수 있다. 하나는 2개의 스트링 속성을 추가하여 리소스 파일 이름 및 키를 저장하는 것이고, 다른 하나는 콘스트럭터 및 메소드를 제공하여 상기 속성들을 세팅/입수(set/get) 하는 것이다. 랩퍼들의 콘스트럭터 및 메소드는 하위 클래스들의 콘스트럭터 및 메소드와 매우 유사하다.
"setText/getText"는 텍스트 엔트리인 텍스트 기반 컴포넌트(text based component)의 라벨을 세팅하고 입수하는 데 사용된다. 상기 프로그램이 SetText(getKey(...))를 기록하는 경우에, 상기 라벨은 분해된(resolved) 텍스트이며, 리소스 파일 이름 및 키를 포함하지 않는다.
자바 랩퍼 클래스를 사용하는 본 실시 형태는 전술한 실시 형태에 비해 두 가지의 장점을 갖는데, 이는 단지 getText/setText 메소드에 따라 달라진다.
1. 랩퍼는 리소스 파일 이름 및 키를 저장할 수 있는 반면에, setText는 라벨만을 저장한다.
2. 랩퍼의 콘스트럭터는 라벨뿐만 아니라 리소스 파일 이름 및 키를 세팅한다. 랩퍼가 없는 경우에, 개발자는 GUI 컴포넌트를 인스턴트화(instantiate) 할 때마다 다른 메소드를 호출하여 세팅하여야 하는 데, 이러한 단계는 종종 개발에서 간과된다.
도 7에 도시된 바와 같이, 본 실시 형태는 자바 Foundation Class의 텍스트 컴포넌트, 예컨대 JButton(710), JLabel(720), JCheckBox(730) 및 JMenu(740)을 확장하여 대응하는 컴포넌트 TButton(712), TLabel(722), JCheckBox(732) 및 JMenu(742)를 만든다. 물론, 기타의 JFC 컴포넌트가 유사하게 확장될 수 있다. 새로운 컴포넌트는 각 컴포넌트의 리소스 번들 이름(res) 및 키에 대한 get/set 메소드를 추가한다.
도 8에는 "JButton" 클래스의 컴포넌트 확장에 대한 보다 상세한 도면이 도시되어 있다. 이 도면에서, JButton 클래스(810)는 자바 랩퍼 API를 사용하여 TButton 클래스(820)로 확장된다. TButton 클래스는 최초 JButton 클래스와 동일한 "라벨" 속성을 갖지만, 리소스 번들 이름(res)(840) 및 키(850)에 대한 속성을 추가한다. 이로써, 번역자는 각 TButton의 라벨 속성을 불러들여 편집할 수 있게 된다.
이러한 접근법을 이용하여, 번역자는 상기 컴포넌트상의 팝업 메뉴를 불러들여 실행시 직접 라벨을 편집/번역할 수 있다. 라벨에 대한 상기 변화는 클래스 및 키에 따라 로그 파일 내에 저장되며, 또한 GUI 디스플레이상에서 즉시 변화된다. 그 후에, 소프트웨어 애플리케이션이 상기 클래스 및 키를 만나면 상기 편집/번역된 텍스트가 디스플레이된다.
본 실시 형태는 전술한 자기 분석 툴과 달리, 번역되는 소프트웨어 애플리케이션의 일부인 랩퍼 클래스를 사용한다는 점에 주목해야 한다. 번역될 소프트웨어 애플리케이션이 확장된 랩퍼 클래스를 지원하지 않는 경우에, 이러한 접근법은 효과적이지 못할 것이다.
패사드
다른 실시 형태는 "패사드(facade)" 클래스를 생성하여 각 컴포넌트의 번역 정보를 JComponet에 첨부한다. 이러한 실시 형태에서, 접근 방법 및 편집기 사용자 인터페이스 로직(editor user interface logic)은 각 랩퍼 클래스에 포함되지 않고 단일 "패사드" 클래스로 집중된다.
상기 애플리케이션은 자바 UI 컴포넌트의 리소스 번들 이름 및 키 이름을 상기 패사드 클래스를 통해 세팅한다. 이들 속성들은 상기 컴포넌트상의 팝업 다이얼로그에서 디스플레이될 수 있으며 사용자는 실행시 라벨을 편집할 수 있다. 팝업 다이얼로그에서 이루어진 변화는 상기 애플리케이션 UI 컴포넌트에 직접 반영되고 로그 파일 내에 저장된다.
이러한 방법은 전술한 랩퍼 접근법과 마찬가지로 동일한 문제점을 해결한다. 랩퍼 접근법과 비교할 때 상기 방법에 갖는 장점은 다음과 같다.
1. 랩퍼 접근법에서의 하위 클래스를 사용하는 것은 유지 보수 부담을 갖는다 (새롭고 갱신된 JComponent는 일련의 유도된 컴포넌트를 변화시킨다).
2. 랩퍼링(wrappering)에서 설계자는 일련의 사용 가능한 하위 클래스로부터 단지 선택하거나 또는 스스로 구현해야 한다는 점에서 개발 부담을 갖는다.
3. 또한, 편집기 속성이 각 컴포넌트 내에 만들어져야 하므로 랩퍼링은 실행 시간상의 부담을 가져온다.
4. 랩퍼링 실시 형태에서 사용되는 setName()은 프로퍼티를 기본으로 하는 접근법이 각 번역 속성에 직접 접근하는 것과는 달리, 모든 번역 속성을 그 컴포넌트 "이름" 속성으로 합쳐 보다 쉽게 확장 가능하도록 하며, 상기 컴포넌트의 "이름" 속성을 다른 사람이 사용 가능하도록 한다.
본 실시 형태는 "NLSUtility" 클래스를 제공하는데, 이것은 JFC 텍스트 컴포넌트(JButton, JLabel, JCheckBox, JRadioButton)에 대한 패사드로서 작용하며 리소스 번들 이름 및 키에 대한 get/set 메소드를 구현한다. 이러한 속성들은 cliectProperty 해시(hash) 테이블 내에 접근키와 함께 저장된다. 사용자는 상기 컴포넌트상의 팝업 메뉴를 불러와 실행시 라벨을 편집할 수 있다. 상기 라벨상의 변화는 로그 파일 내에 저장된다.
도 9는 패사드 클래스의 실시 형태에 따른 블록도를 도시하고 있다. 여기서 패사드 클래스(900)는 JFC 텍스트 컴포넌트(910,920,930,940)에 대한 프론트 엔드(front end)로서의 역할을 하며, 클라이언트 프로퍼티 속성을 상기 각 컴포넌트와 연관시킨다. 이어서, 패사드 클래스는 putClientProperty()(950)와 getClientProperty()(960)를 사용하여 하위의 JFC 기본 클래스의 프로퍼티 속성을 직접 판독 및 편집하는 데 사용될 수 있다. 상기 패사드 클래스를 사용함으로써, 전술한 랩퍼링 실시 형태와 동일한 결과를 얻을 수 있으나, 편집기 기능에 대한 부담이 각 단독 컴포넌트 대신에 상기 패사드 클래스에 생긴다.
본 발명이 완전 기능 데이터 처리 시스템(fully functional data processing system) 및/또는 네트워크에 대하여 설명되었지만, 이 분야에서 통상의 지식을 가진 자는 본 발명의 메카니즘이 다양한 형태의 명령어로 구성된 것으로서 컴퓨터에 의해 사용 가능한 매체(computer usable medium)의 형태로 분산될 수 있다는 것과 상기 분산된 메카니즘을 실제 수행하는 데 사용되는 신호 저장 매체(signal bearing medium)의 특정 유형에 관계없이 동일하게 적용된다는 것을 알 것이다. 컴퓨터에 의해 사용 가능한 매체의 예에는 판독 전용 메모리(read only memory; ROM)와 같이 비휘발성인 하드 코드형 매체, 소거 가능하고 전기적으로 기록 가능한 판독 전용 메모리(electrically programmble read only memory; EEPROM), 플로피 디스크, 하드 디스크 및 CD-ROM과 같은 기록 가능형 매체와 디지털 및 아날로그 통신 링크와 같은 전송형 매체가 포함된다.
본 발명은 몇 가지 바람직한 실시 형태에 대하여 구체적으로 설명되었으나, 이 분야에서 통상의 지식을 가진 자는 본 발명의 사상과 범위를 벗어나는 일 없이 형식과 세부적인 면에서 다양한 변화가 이루어질 수 있다는 것을 알 것이다. 더욱이, 구체적인 데이터 구조, 기능 및 언어가 설명되었으나, 개시된 기술은 본 발명의 범위를 벗어나는 일 없이 다른 프로그래밍 환경에 쉽게 적응될 수 있다는 것을 알 것이다.

Claims (9)

  1. 소프트웨어 프로그램의 텍스트 데이터를 실행시에 편집하는 방법에 있어서,
    비데이터 사용자 상호 작용부(non-data user interaction portion) 내에 제1 텍스트 데이터를 포함하는 사용자 인터페이스를 디스플레이하는 단계와,
    사용자가 편집을 하기 위해 상기 디스플레이된 사용자 인터페이스 내의 상기 제1 텍스트 데이터를 선택하는 것에 응답하여, 상기 제1 텍스트 데이터를 포함하는 소프트웨어 객체를 식별하기 위해 상기 사용자 인터페이스를 생성하는 소스 코드를 자기 분석하는 단계와,
    상기 사용자 인터페이스가 디스플레이되는 동안에, 상기 사용자가 상기 제1 텍스트 데이터를 대신하고자 하는 제2 텍스트 데이터 - 여기서, 상기 제2 텍스트 데이터는 상기 제1 텍스트 데이터를 제1 언어(human language)에서 제2 언어로 번역한 것임 - 를 사용자 입력으로부터 수신하는 단계와,
    상기 제1 텍스트 데이터를 대신하여 상기 제2 텍스트 데이터를 기계가 판독할 수 있는 형식(machine readable form)으로 상기 소프트웨어 객체 내에 저장하는 단계와,
    상기 제2 텍스트 열을 상기 소프트웨어 객체 내에 저장한 후에 상기 사용자 인터페이스 디스플레이를 생성하는 상기 소스 코드를 실행하는 동안에, 상기 사용자 인터페이스 내의 상기 제1 텍스트 데이터를 대신하여 상기 제2 텍스트 데이터를 디스플레이하는 단계
    를 포함하는 소프트웨어 프로그램의 텍스트 데이터를 실행시에 편집하는 방법.
  2. 제1항에 있어서, 상기 소프트웨어 객체는 컴퓨터 저장 매체상의 국부화 파일(localization file)인 것인 방법.
  3. 제1항에 있어서, 상기 소프트웨어 객체는 자바 컴포넌트인 것인 방법.
  4. 제1항에 있어서, 상기 사용자 인터페이스를 생성하는 소스 코드는 자바 리소스 번들(Java resource bundle)에 대한 참조(reference)를 포함하는 것인 방법.
  5. 제1항에 있어서,
    상기 사용자 인터페이스를 생성하는 상기 소스 코드는 상기 제1 텍스트 데이터와 결합된 키를 포함하고,
    상기 제2 텍스트 데이터는 상기 제1 텍스트 데이터를 대신하여 상기 키와 결합된 것인 방법.
  6. 제1항에 있어서, 상기 사용자는 편집을 하기 위해 마우스 클릭으로써 상기 디스플레이된 사용자 인터페이스 내의 상기 제1 텍스트 데이터를 선택하는 것인 방법.
  7. 적어도 프로세서와, 접근 가능 메모리(accessible memory), 및 접근 가능 디스플레이를 구비하며, 실행시에 텍스트 데이터를 편집하기 위한 컴퓨터 시스템에 있어서,
    비데이터 사용자 상호 작용부 내에 제1 텍스트 데이터를 포함하는 사용자 인터페이스를 디스플레이하는 수단과,
    사용자가 편집을 하기 위해 상기 디스플레이된 사용자 인터페이스 내의 상기 제1 텍스트 데이터를 선택하는 것에 응답하여, 상기 제1 텍스트 데이터를 포함하는 소프트웨어 객체를 식별하기 위해 상기 사용자 인터페이스를 생성하는 소스 코드를 자기 분석하는 수단과,
    상기 사용자 인터페이스가 디스플레이되는 동안에, 상기 사용자가 상기 제1 텍스트 데이터를 대신하고자 하는 제2 텍스트 데이터 - 여기서, 상기 제2 텍스트 데이터는 상기 제1 텍스트 데이터를 제1 언어에서 제2 언어로 번역한 것임 - 를 사용자 입력으로부터 수신하는 수단과,
    상기 제1 텍스트 데이터를 대신하여 상기 제2 텍스트 데이터를 기계가 판독할 수 있는 형식으로 상기 소프트웨어 객체 내에 저장하는 수단과,
    상기 제2 텍스트 열을 상기 소프트웨어 객체 내에 저장한 후에 상기 사용자 인터페이스 디스플레이를 생성하는 상기 소스 코드를 실행하는 동안에, 상기 사용자 인터페이스 내의 상기 제1 텍스트 데이터를 대신하여 상기 제2 텍스트 데이터를 디스플레이하는 수단
    을 포함하는 실행시에 텍스트 데이터를 편집하기 위한 컴퓨터 시스템.
  8. 컴퓨터에 의해 사용 가능한 매체(computer usable medium)상에 컴퓨터 판독 가능 프로그램 코드를 구비하며, 실행시에 텍스트 데이터를 편집하기 위한 컴퓨터 프로그램을 기록한 기록 매체에 있어서,
    비데이터 사용자 상호 작용부 내에 제1 텍스트 데이터를 포함하는 사용자 인터페이스를 디스플레이하는 명령어와,
    사용자가 편집하기 위해 상기 디스플레이된 사용자 인터페이스 내의 상기 제1 텍스트 데이터를 선택하는 것에 응답하여, 상기 제1 텍스트 데이터를 포함하는 소프트웨어 객체를 식별하기 위해 상기 사용자 인터페이스를 생성하는 소스 코드를 자기 분석하는 명령어와,
    상기 사용자 인터페이스가 디스플레이되는 동안에, 상기 사용자가 상기 제1 텍스트 데이터를 대신하고자 하는 제2 텍스트 데이터 - 여기서, 상기 제2 텍스트 데이터는 상기 제1 텍스트 데이터를 제1 언어에서 제2 언어로 번역한 것임 - 를 사용자 입력으로부터 수신하는 명령어와,
    상기 제1 텍스트 데이터를 대신하여 상기 제2 텍스트 데이터를 기계가 판독할 수 있는 형식으로 상기 소프트웨어 객체 내에 저장하는 명령어와,
    상기 제2 텍스트 열을 상기 소프트웨어 객체 내에 저장한 후에 상기 사용자 인터페이스 디스플레이를 생성하는 상기 소스 코드를 실행하는 동안에, 상기 사용자 인터페이스 내의 상기 제1 텍스트 데이터를 대신하여 상기 제2 텍스트 데이터를 디스플레이하는 명령어
    를 포함하는 실행시에 텍스트 데이터를 편집하기 위한 컴퓨터 프로그램을 기록한 기록 매체.
  9. 삭제
KR10-2002-7000456A 1999-07-28 2000-07-13 소프트웨어 번역용 자기 분석 편집기 시스템, 프로그램 및방법 KR100498529B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/362,615 US6275790B1 (en) 1999-07-28 1999-07-28 Introspective editor system, program, and method for software translation
US09/362,615 1999-07-28

Publications (2)

Publication Number Publication Date
KR20020035562A KR20020035562A (ko) 2002-05-11
KR100498529B1 true KR100498529B1 (ko) 2005-07-01

Family

ID=23426804

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2002-7000456A KR100498529B1 (ko) 1999-07-28 2000-07-13 소프트웨어 번역용 자기 분석 편집기 시스템, 프로그램 및방법

Country Status (9)

Country Link
US (1) US6275790B1 (ko)
EP (1) EP1204919A1 (ko)
JP (1) JP2003505787A (ko)
KR (1) KR100498529B1 (ko)
CN (1) CN1181428C (ko)
AU (1) AU6167700A (ko)
IL (2) IL147630A0 (ko)
TW (1) TW494342B (ko)
WO (1) WO2001008006A1 (ko)

Families Citing this family (83)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6735759B1 (en) 1999-07-28 2004-05-11 International Business Machines Corporation Editing system for translating displayed user language using a wrapper class
US6567973B1 (en) * 1999-07-28 2003-05-20 International Business Machines Corporation Introspective editor system, program, and method for software translation using a facade class
US6950850B1 (en) * 2000-10-31 2005-09-27 International Business Machines Corporation System and method for dynamic runtime partitioning of model-view-controller applications
CA2325684A1 (en) * 2000-11-10 2002-05-10 Harm Sluiman Automation and isolation of software component testing
GB0027811D0 (en) * 2000-11-15 2000-12-27 Pace Micro Tech Plc Method for producing a user interface translation tool
GB0100676D0 (en) * 2001-01-11 2001-02-21 Ibm A method of testing a computer program translated into a national language
US6782529B2 (en) * 2001-03-29 2004-08-24 International Business Machines Corporation Method, apparatus and computer program product for editing in a translation verification test procedure
US6904563B2 (en) * 2001-04-05 2005-06-07 International Business Machines Corporation Editing platforms for remote user interface translation
EP1333374B1 (en) * 2001-06-11 2016-09-07 Sap Se Dynamic generation of language localized and self-verified Java classes using XML descriptions and static initializers
GB2378459B (en) * 2001-08-07 2005-08-03 Smith International Completion of lateral well bores
FR2833375B1 (fr) * 2001-12-07 2004-06-04 Amadeus Procede, dispositif d'adaptation de fichiers numeriques
AU2003214975A1 (en) * 2002-02-01 2003-09-02 John Fairweather System and method for navigating data
US7281215B1 (en) * 2002-04-30 2007-10-09 Aol Llc IM conversation counter and indicator
US20080040675A1 (en) * 2002-04-30 2008-02-14 Aol Llc Instant messaging interface having a tear-off element
US7421661B1 (en) 2002-04-30 2008-09-02 Aol Llc Instant messaging interface having an informational tool tip
US7127685B2 (en) 2002-04-30 2006-10-24 America Online, Inc. Instant messaging interface having a tear-off element
US7110937B1 (en) * 2002-06-20 2006-09-19 Siebel Systems, Inc. Translation leveraging
US20040044518A1 (en) * 2002-08-27 2004-03-04 Reed John E. Method and system for multilingual display generation
US20040148591A1 (en) * 2003-01-23 2004-07-29 International Business Machines Corporation Method, apparatus, and program for automated application context delivery to translators
KR100571763B1 (ko) * 2003-11-03 2006-04-18 삼성전자주식회사 그래픽 분류정보를 이용한 사용자 그래픽 인터페이스 운용방법 및 그 장치
US7437704B2 (en) * 2003-08-28 2008-10-14 Ines Antje Dahne-Steuber Real-time generation of software translation
US7383302B2 (en) * 2003-09-15 2008-06-03 International Business Machines Corporation Method and system for providing a common collaboration framework accessible from within multiple applications
US7392519B2 (en) * 2003-09-23 2008-06-24 Hewlett-Packard Development Company, L.P. Localization cataloguing tool
GB0322915D0 (en) * 2003-10-01 2003-11-05 Ibm System and method for application sharing
CA2452077A1 (en) * 2003-12-03 2005-06-03 Daniel A. Rose Verification of stream oriented locale files
US20050204332A1 (en) * 2004-03-15 2005-09-15 Ramco Systems Limited Method and system for developing large web-based multi-language applications
US7464149B2 (en) * 2004-04-30 2008-12-09 International Business Machines Corporation System and method for managing introspectable objects in an enterprise
US7269610B2 (en) 2004-05-14 2007-09-11 International Business Machines Corporation System and method to observe user behavior and perform actions introspectable objects
US7665063B1 (en) 2004-05-26 2010-02-16 Pegasystems, Inc. Integration of declarative rule-based processing with procedural programming
US7716641B2 (en) * 2004-12-01 2010-05-11 Microsoft Corporation Method and system for automatically identifying and marking subsets of localizable resources
US20060116864A1 (en) * 2004-12-01 2006-06-01 Microsoft Corporation Safe, secure resource editing for application localization with automatic adjustment of application user interface for translated resources
US7617092B2 (en) * 2004-12-01 2009-11-10 Microsoft Corporation Safe, secure resource editing for application localization
US7536640B2 (en) * 2005-01-28 2009-05-19 Oracle International Corporation Advanced translation context via web pages embedded with resource information
US8335704B2 (en) 2005-01-28 2012-12-18 Pegasystems Inc. Methods and apparatus for work management and routing
US7698126B2 (en) 2005-03-08 2010-04-13 Microsoft Corporation Localization matching component
US7653528B2 (en) * 2005-03-08 2010-01-26 Microsoft Corporation Resource authoring incorporating ontology
US20060206797A1 (en) * 2005-03-08 2006-09-14 Microsoft Corporation Authorizing implementing application localization rules
US7774195B2 (en) * 2005-03-08 2010-08-10 Microsoft Corporation Method and system for creating, storing, managing and consuming culture specific data
US8219907B2 (en) * 2005-03-08 2012-07-10 Microsoft Corporation Resource authoring with re-usability score and suggested re-usable data
US20060271920A1 (en) * 2005-05-24 2006-11-30 Wael Abouelsaadat Multilingual compiler system and method
CN100447743C (zh) * 2005-06-24 2008-12-31 国际商业机器公司 在无需修改源代码的情况下本地化java gui应用的系统和方法
US8392872B2 (en) * 2005-11-19 2013-03-05 International Business Machines Corporation Pseudo translation within integrated development environment
US7904883B2 (en) * 2005-12-01 2011-03-08 Microsoft Corporation Localizable object pattern
US20070180373A1 (en) * 2006-01-30 2007-08-02 Bauman Brian D Method and system for renderring application text in one or more alternative languages
US20070179775A1 (en) * 2006-01-30 2007-08-02 Bauman Brian D Method and system for translating a software application into an alternative language
US8924335B1 (en) 2006-03-30 2014-12-30 Pegasystems Inc. Rule-based user interface conformance methods
EP1868083A1 (en) * 2006-06-13 2007-12-19 Microsoft Corporation Use of context information in localisation
EP1870804A1 (en) * 2006-06-22 2007-12-26 Microsoft Corporation Dynamic software localization
US7752501B2 (en) * 2006-07-27 2010-07-06 International Business Machines Corporation Dynamic generation and implementation of globalization verification testing for user interface controls
JP4143661B2 (ja) * 2006-09-11 2008-09-03 インターナショナル・ビジネス・マシーンズ・コーポレーション テスト用リソース・ファイル及びテスト用フォントを用いた国際化ソフトウェアのテスト方法、装置及びプログラム
US8700998B2 (en) * 2006-11-30 2014-04-15 Red Hat, Inc. Foreign language translation tool
US8468494B2 (en) * 2007-01-22 2013-06-18 Oracle Taleo Llc In-line editor
JP4396994B2 (ja) * 2007-02-09 2010-01-13 インターナショナル・ビジネス・マシーンズ・コーポレーション リソース・ファイルの翻訳検証方法、装置、およびプログラム
US8250525B2 (en) 2007-03-02 2012-08-21 Pegasystems Inc. Proactive performance management for multi-user enterprise software systems
JP2008257478A (ja) * 2007-04-04 2008-10-23 Internatl Business Mach Corp <Ibm> 検証対象文字列の格納位置出力装置、方法、及びコンピュータ・プログラム
CN101311897B (zh) * 2007-05-24 2012-02-22 国际商业机器公司 一种抓取应用程序的图形用户界面资源的方法及装置
JP5186154B2 (ja) * 2007-08-21 2013-04-17 インターナショナル・ビジネス・マシーンズ・コーポレーション プログラムが表示するメッセージの修正を支援する技術
US20090089751A1 (en) * 2007-09-28 2009-04-02 Microsoft Corporation Exposing features of software products
US20110191703A1 (en) * 2008-09-22 2011-08-04 Fujifilm North America Corporation System and Method for Providing Customized and Localized User Interface
US8843435B1 (en) 2009-03-12 2014-09-23 Pegasystems Inc. Techniques for dynamic data processing
US8468492B1 (en) 2009-03-30 2013-06-18 Pegasystems, Inc. System and method for creation and modification of software applications
US8312390B2 (en) * 2009-06-10 2012-11-13 Microsoft Corporation Dynamic screentip language translation
US9384011B2 (en) 2010-06-30 2016-07-05 International Business Machines Corporation Workspace creation and management for a computing desktop
CN102467497B (zh) * 2010-10-29 2014-11-05 国际商业机器公司 校对程序中的文本翻译的方法和系统
US8880487B1 (en) 2011-02-18 2014-11-04 Pegasystems Inc. Systems and methods for distributed rules processing
CN102279847B (zh) * 2011-08-17 2013-06-19 瑞斯康达科技发展股份有限公司 软件系统国际化方法和装置
US9195653B2 (en) * 2011-10-24 2015-11-24 Google Inc. Identification of in-context resources that are not fully localized
CN104115141B (zh) * 2011-11-25 2017-02-15 谷歌公司 在应用本地化中提供翻译辅助
CN103176966A (zh) * 2011-12-22 2013-06-26 苏州威世博知识产权服务有限公司 一种实现专利基本信息翻译的方法及系统
US9195936B1 (en) 2011-12-30 2015-11-24 Pegasystems Inc. System and method for updating or modifying an application without manual coding
US20130290075A1 (en) * 2012-04-30 2013-10-31 Infosys Limited Localization quality assurance of localized software
CN103677786A (zh) * 2012-09-21 2014-03-26 国际商业机器公司 用于辅助图形化用户界面设计的方法和装置
WO2014168626A1 (en) * 2013-04-11 2014-10-16 Hewlett-Packard Development Company, L.P. Automated contextual-based software localization
JP6084940B2 (ja) * 2014-02-28 2017-02-22 京セラドキュメントソリューションズ株式会社 電子機器および電子機器の管理方法
US10469396B2 (en) 2014-10-10 2019-11-05 Pegasystems, Inc. Event processing with enhanced throughput
US10698599B2 (en) 2016-06-03 2020-06-30 Pegasystems, Inc. Connecting graphical shapes using gestures
US10698647B2 (en) 2016-07-11 2020-06-30 Pegasystems Inc. Selective sharing for collaborative application usage
US10248406B2 (en) 2016-11-17 2019-04-02 International Business Machines Corporation Locale object management
EP3543844B1 (de) * 2018-03-22 2020-04-29 Sick Ag Verfahren zum durchführen von änderungen an einer software-anwendung
US11048488B2 (en) 2018-08-14 2021-06-29 Pegasystems, Inc. Software code optimizer and method
US11567945B1 (en) 2020-08-27 2023-01-31 Pegasystems Inc. Customized digital content generation systems and methods
CN113342436B (zh) * 2021-06-10 2023-03-17 网易(杭州)网络有限公司 一种游戏翻译方法和装置
CN113961300A (zh) * 2021-12-16 2022-01-21 杭州行至云起科技有限公司 一种iOS APP字符串资源文件翻译方法及系统

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5251130A (en) * 1991-04-18 1993-10-05 International Business Machines Corporation Method and apparatus for facilitating contextual language translation within an interactive software application
US5416903A (en) * 1991-08-19 1995-05-16 International Business Machines Corporation System and method for supporting multilingual translations of a windowed user interface
US5583761A (en) 1993-10-13 1996-12-10 Kt International, Inc. Method for automatic displaying program presentations in different languages
DE69430421T2 (de) * 1994-01-14 2003-03-06 Sun Microsystems Inc Verfahren und Gerät zur Automatisierung der Umgebungsanpassung von Rechnerprogrammen
US5678039A (en) 1994-09-30 1997-10-14 Borland International, Inc. System and methods for translating software into localized versions
US5652884A (en) 1994-11-14 1997-07-29 Object Technology Licensing Corp. Method and apparatus for dynamic update of an existing object in an object editor
US5907326A (en) * 1997-03-10 1999-05-25 International Business Machines Corporation System and method for updating cultural profiles with dragging and dropping locale objects
US6003050A (en) * 1997-04-02 1999-12-14 Microsoft Corporation Method for integrating a virtual machine with input method editors
US5953526A (en) * 1997-11-10 1999-09-14 Internatinal Business Machines Corp. Object oriented programming system with displayable natural language documentation through dual translation of program source code

Also Published As

Publication number Publication date
WO2001008006A1 (en) 2001-02-01
IL147630A (en) 2007-07-24
CN1181428C (zh) 2004-12-22
AU6167700A (en) 2001-02-13
KR20020035562A (ko) 2002-05-11
CN1364260A (zh) 2002-08-14
JP2003505787A (ja) 2003-02-12
IL147630A0 (en) 2002-08-14
EP1204919A1 (en) 2002-05-15
US6275790B1 (en) 2001-08-14
TW494342B (en) 2002-07-11

Similar Documents

Publication Publication Date Title
KR100498529B1 (ko) 소프트웨어 번역용 자기 분석 편집기 시스템, 프로그램 및방법
KR100431169B1 (ko) 소프트웨어 프로그램의 텍스트 데이터 편집방법, 컴퓨터시스템 및 컴퓨터 프로그램 제품
US6311151B1 (en) System, program, and method for performing contextual software translations
US6735759B1 (en) Editing system for translating displayed user language using a wrapper class
US8943424B2 (en) Dynamic interface component control support
US5907326A (en) System and method for updating cultural profiles with dragging and dropping locale objects
EP0668558B1 (en) Method and apparatus for automating the localization of a computer program
US8171460B2 (en) System and method for user interface automation
US6904563B2 (en) Editing platforms for remote user interface translation
CA2307299C (en) Mock translation method, system, and program to test software translatability
US5900871A (en) System and method for managing multiple cultural profiles in an information handling system
US7398474B2 (en) Method and system for a digital device menu editor
EP1333374B1 (en) Dynamic generation of language localized and self-verified Java classes using XML descriptions and static initializers
US7043715B1 (en) Method and apparatus for customizing software
KR20060044361A (ko) 런타임 전에 코딩 에러를 감소시키는 컴퓨터 구현 방법
Smyth Android Studio 4.1 Development Essentials-Kotlin Edition
Etzel et al. Digital Visual Fortran programmer's guide
Beres Sams teach yourself visual studio. NET 2003 in 21 days
Mojica C# Web Development with ASP. NET
Mackenzie Microsoft Visual Basic. NET 2003 Kick Start
Shihada et al. Borland C++ 5.5 vs. Microsoft visual C++ 6.0 and JAVA Workshop 2.0 vs. Visual Café. Technical Evaluation
Libes et al. An Object-Oriented Tcl/Tk Binding for Interpreted Control of the NIST EXPRESS Toolkit in the NIST STEP Application Protocol Development Environment
Grönberg Käyttöliittymän kotoistus käyttöliittymäkomponentteja suunnitteluvaiheessa dynaamisesti laajentamalla
Nolden Ģ Ć Ś ŠÓŌ ČÖÓ Ö ŃŃ Ņ Ą Ņ ÓÓ

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee