Difference between revisions of "Korean Translation Guide"

From Second Life Wiki
Jump to navigation Jump to search
m
m (모호한 구문 및 오탈자 일부 수정)
Line 5: Line 5:
|desc=Sorry! the content of this page is not available in English currently.
|desc=Sorry! the content of this page is not available in English currently.
}}
}}
'''Second Life를 한글화 안내서''' (Korean Translation Guide)
'''Second Life 한글화 작업 안내서''' (Korean Translation Guide)
== Second Life UI의 기본 구조 ==
== Second Life UI의 기본 구조 ==
UI가 로딩이 될때 기본 설정이되어 있는 로케일 값을 참조해서 각각의 언어에 해당되는 메타 파일(xml 설정 파일 이하 메타 파일로 통일)을 불러 오게 됩니다. 이때 로딩 해야할 메타 파일이 없는 경우 기본으로 영어 메타 파일을 읽어 들이게 됩니다.
UI를 읽어올 때 기본 설정이 되어 있는 로케일 값을 참조해서 각각의 언어에 해당되는 메타 파일(xml 설정 파일. 이하 메타 파일로 통일)을 불러 오게 됩니다. 이때 로딩해야 할 메타 파일이 없는 경우 기본으로 영문판 메타 파일을 읽어들이게 됩니다.


한글화를 하면서 한글화하진 못한 메타 파일이 누락되어도 기본적으로 영문 메타 파일을 읽어 들이기때문에, 당장에 모든 메타 파일을 한글화 해야하는 부담은 없습니다.
한글화 폴더에서 특정 메타 파일이 누락되었을 경우 대응되는 영문 메타 파일을 대신 읽어들이기 때문에, 당장 모든 메타 파일을 한글화 해야하는 부담은 없습니다.


=== UI 메타 파일 저장 경로 ===
=== UI 메타 파일 저장 경로 ===
저장 경로의 이름은 UI를 로딩할때 읽어 들이는 언어 설정 값을 참조 함으로, 언어 설정 값을 기준으로 생성 해야합니다. 현재 한국어는 ko로 설정이 되어 있기때문에 korea, kor, corea 이런 단어로 경로명을 적을시에 한글 메타파일을 읽어 들이지 않습니다.
저장 경로의 이름은 UI를 로딩할 때 읽어 들이는 언어 표시 축약어를 참조하므로, 해당하는 언어에 대한 정확한 표기를 사용하여 생성해야 합니다. 한국어는 ko로 설정되어 있기 때문에 korea, kr, corea와 같은 틀린 표기로 경로명을 적지 않도록 합니다.
<code>
<code>
  `-- skins
  `-- skins
Line 30: Line 30:
</code>
</code>


=== UI 메타 파일 리스트 ===
=== UI 메타 파일 목록 ===
아울러 기본적으로 로딩할때 필요한 메타 파일의 리스트는 아래와 같습니다. 많습니다. widgets 디렉토리의 경우 아직은 따로 한글화 할 필요는 없을것 같습니다.  
아울러 기본적으로 초기화에 필요한 메타 파일의 목록은 아래와 같습니다. 조금 많습니다. widgets 디렉토리의 경우 아직은 따로 한글화 할 필요는 없을것 같습니다.  
<code>
<code>
  `-- accordion_drag.xml
  `-- accordion_drag.xml
Line 377: Line 377:


== 한글화를 위한 메타 파일 수정 방법 ==
== 한글화를 위한 메타 파일 수정 방법 ==
Second Life 그래픽 유저 사용환경의(GUI) 메타 파일은 xml로 되어 있습니다. 태그와 속성들 값에 따라서 GUI의 글짜 크기, 문자 등의 값을 변경 할수 있습니다. 사실 dtd와 같은 xml 구조를 잘 아시는 분이라면 그냥 감으로 때려 맞추면서 작업 할만큼 구조가 쉽습니다.
Second Life 그래픽 사용자 환경(GUI)메타 파일은 xml로 되어 있습니다. 태그와 속성들 값에 따라서 GUI의 글자 크기, 문자 등의 값을 변경 할 수 있습니다. 사실 dtd와 같은 xml 구조를 잘 아시는 분이라면 직관적으로 작업이 가능할 만큼 구조가 단순합니다.


하지만 이글은 최대한 프로그래밍에 대한 기본 개념이 아직 잡허 았지 않다고 가정되는 다수의 분들을 대상으로 작성되는 글 이므로 어려운 설명은 모조리 빼버리고 어떤걸 어떻게 수정 해야하는지만 간략하게 설명 하겠습니다.
하지만 이 글은 프로그래밍에 대한 개념이 익숙하지 않은 분들도 알아볼 수 있게 작성되는 것이 목표이므로, 어려운 설명은 제외하고 어떠한 것들을 어떻게 수정해야 하는가에 대해서만 간략하게 설명하겠습니다.  


=== label 속성 ===
=== label 속성 ===
Line 386: Line 386:
<태그이름 속성1="속성값"    속성2="속성값"    속성3="속성값">
<태그이름 속성1="속성값"    속성2="속성값"    속성3="속성값">


하 나 예를 들어보죠. menu_land.xml 파일을 예를 들겠습니다.
하나 예를 들어보죠. menu_land.xml 파일을 예를 들겠습니다.
<code>
<code>
  <menu_item_call
  <menu_item_call
Line 396: Line 396:
</code>
</code>


위에 보시면 태그 이름은 menu_item_call 입니다 즉 <menu_item_call> </menu_item_call> 이게 하나의 덩어리입니다. 그 밑에 자식 태그는 <menu_item_call.on_click /> 이녀석이구요. 사실 여기서 태그명은 그렇게 중요한게 아닙니다.
위에 보시면 태그 이름은 menu_item_call 입니다 즉 <menu_item_call> </menu_item_call> 이게 하나의 덩어리입니다. 그 밑에 자식 태그는 <menu_item_call.on_click /> 이녀석이구요. 사실 여기서 태그명은 그렇게 중요한 게 아닙니다.


label 이라는 속성 값이 있는데요. 이 label이라는 녀석에 쓰여진 값이 UI에서 나타나는 문자 열이 되겠습니다. 그러므로 다른건 알필요도 없고 그냥 label에 있는 "Sit Here"이라는 문구를 "여기 앉기" 라고 고쳐주면 땅을 우클릭해서 뜨는 메뉴에서 "Sit Here" 대신에 "여기 앉기"라는 문구를 볼수 있게 됩니다. 대부분 이런식입니다.여기서 중요한것은 name의 속성값도 "Sit Here"인데요 이건 건드리면 않됩니다. 수정 해보시면 알겠지만 label이랑 name 속성의 속성 값이 대부분 비슷 비슷한데 실수 하지 않게 조심하세요. 이걸 잘못 수정하면 눌러도 동작을 않하게 됩니다.
label 이라는 속성 값이 있는데요. 이 label이라는 녀석에 쓰여진 값이 UI에서 나타나는 문자 열이 되겠습니다. 그러므로 다른건 알 필요도 없고 그냥 label에 있는 "Sit Here"이라는 문구를 "여기 앉기" 라고 고쳐주면 땅을 우클릭해서 뜨는 메뉴에서 "Sit Here" 대신에 "여기 앉기"라는 문구를 볼 수 있게 됩니다. 대부분 이런 식입니다.여기서 중요한 것은 name의 속성값도 "Sit Here"인데요 이것은 건드리면 안됩니다. 수정을 해보면 알겠지만 label이랑 name속성의 값들이 대부분 서로 비슷하므로 실수 하지 않게 조심하세요. 이것은 잘못 수정하면 눌러도 동작을 하지 않게 됩니다.


위의 내용을 한글화 한다면 아래와 같이 됩니다.
위의 내용을 한글화 한다면 아래와 같이 됩니다.
Line 410: Line 410:
</code>
</code>


1차적으로 label에 쓰여 있는 문구를 바꾸는 것만으로도 어느정도 한글화는 가능합니다.
1차적으로 label에 쓰여 있는 문구를 바꾸는 것 만으로도 어느 정도 한글화는 가능합니다.


=== tool_tip 속성 ===
=== tool_tip 속성 ===


자 두번째 살펴 봐야할것은 tool_tip이라는 속성값 입니다. 이게 뭐냐면, 땅이나 어딘가에 마우스를 올리면 엄청나게 작은(?)창으로 설명이 뜨는걸 보신적 있을겁니다. 이걸 컴퓨터 용어로 툴팁이라고하는데요. 이게 UI에도 적용이되어 있습니다. 그 값을 정의 해주는 속성값이 tool_tip이라는 속성입니다.
이제 두번째로 살펴볼 것은 tool_tip이라는 속성값입니다. 이게 뭐냐면, 땅이나 어딘가에 마우스를 올리면 엄청나게 작은(?)창으로 설명이 뜨는 걸 보신적이 있을 것입니다. 이것을 컴퓨터 용어로 툴팁이라고 하는데요. 이게 UI에도 적용이 되어 있습니다. 그 값을 정의해주는 속성이 tool_tip입니다.


예를 들어보죠. panel_preferrences_general.xml 파일입니다.
예를 들어보죠. panel_preferrences_general.xml 파일입니다.
Line 436: Line 436:
</code>
</code>


위에 보시면 속성중에 tool_tip이라는게 보이시죠? 현재 값이 "Click to oepn Color Picker" 인데요. 이 속성 값을 "색상 선택을 위해서 클릭"이라고 한글로 바꾸고 나면 설정의 일반탭에서 색상 선택하는 부분에다가 마우스를 가져다 대고 있으면 "색상 선택을 위해서 클릭"이라는 툴팁이 뜨는걸 볼수 있습니다. 아래는 적용 시킨 예입니다
위에 보시면 속성중에 tool_tip이라는게 보이시죠? 현재 값이 "Click to oepn Color Picker" 인데요. 이 속성 값을 "색상 선택을 위해서 클릭"이라고 갱신한 뒤 뷰어화면의 설정에서 일반 탭의 색상을 선택하는 부분에 마우스를 대고 있으면 "색상 선택을 위해서 클릭"이라는 툴팁이 뜨는 걸 볼 수 있습니다. 아래는 적용시킨 예입니다.


<code>
<code>
Line 458: Line 458:


=== <text> </text> 태그 ===
=== <text> </text> 태그 ===
자 그리고 이제 부터는 조금 난이도가 있습니다. 태그 자체가 값을 가지는 녀석들이 있습니다. XML DTD 용어로는 #PCDATA나 #CDATA라고 하는데 그런건 아실필요 없구요. 보기를 보고 설명 드리겠습니다.
자 그리고 이제부터는 조금 난이도가 있습니다. 태그 자체가 값을 가지는 녀석들이 있습니다. XML DTD 용어로는 #PCDATA나 #CDATA라고 하는데 그런 건 아실 필요 없구요. 보기를 보고 설명 드리겠습니다.


panel_preferrences_general.xml 파일입니다.
panel_preferrences_general.xml 파일입니다.
Line 475: Line 475:
     </text>
     </text>
</code>
</code>
위에 보기를 보시면 <text> </text> 태그 사이에 Language: 라는 값이 들어 있는걸 볼수가 있습니다. 이녀석을 언어:로 고쳐서 적용하면 환경 설정의 일반탭에서 Language: 라는 문구가 언어로 바뀌는걸 볼수가 있습니다.
위에 보기를 보시면 <text> </text> 태그 사이에 Language: 라는 값이 들어 있는 걸 볼 수가 있습니다. 이녀석을 언어:로 고쳐서 적용하면 환경 설정의 일반탭에서 Language: 라는 문구가 언어로 바뀌는 걸 볼 수 있습니다.


아래는 적용 시킨 예입니다.
아래는 적용 시킨 예입니다.
Line 495: Line 495:


===<panel.string></panel.string> 태그===
===<panel.string></panel.string> 태그===
이건 또 다른 자체가 값을 가지는 태그의 보기입니다.
아래는 또 다른 보기입니다.


panel_world_map.xml
panel_world_map.xml
Line 509: Line 509:
</code>
</code>


보시면 <panel.string> </panel.string> 사이에 값이 들어 가있는데요. 이걸 한글화 하면 다음과 같이 됩니다.
보시면 <panel.string> </panel.string> 사이에 값이 들어있는데요. 이걸 한글화하면 다음과 같이 됩니다.
<code>
<code>
     <panel.string
     <panel.string
Line 521: Line 521:
</code>
</code>


위의 메시지들을 바꾸게되면 전체 지도에서 지도를 불러 들일때 Loading... 이라는 문구가 준비중...으로 바뀌고 지도상에서 읽어 들일수 없는 장소는 잘못된 위치로 표시되게 됩니다.
위의 메시지들을 바꾸게 되면 전체 지도에서 지도를 불러 들일때 Loading... 이라는 문구가 준비중...으로 바뀌고 지도상에서 읽어 들일 수 없는 장소는 잘못된 위치로 표시되게 됩니다.


한글화를 해보시면 아시겠지만 대부분 위와 같은 방식입니다.
대부분 위와 같은 방식으로 작업이 진행됩니다.


== 예제를 통한 직접 한글화 해보기 ==
== 예제를 통한 직접 한글화 해보기 ==
이제 직접 한글화를 한번 해보도록 하겠습니다. 세컨드라이프를 동작 시키면 가장 먼저 보게되는 로그인 화면을 한글화 하는것을 보기로 보여 드리겠습니다. 일단 대충 개념만 잡으시면 됩니다.
이제 직접 한글화를 한번 해보도록 하겠습니다. 세컨드라이프를 동작 시키면 가장 먼저 보게되는 로그인 화면을 한글화 하는 것을 보기로 보여 드리겠습니다. 일단 대충 개념만 잡으시면 됩니다.


우선 세컨드라이프 폴더에서 skin/default/xui 로 들어갑니다. (윈도우즈에서는 / 대신에 \으로 써야합니다)
우선 세컨드라이프 폴더에서 skin/default/xui 로 들어갑니다. (윈도우즈에서는 / 대신에 \으로 써야합니다)
Line 540: Line 540:
</code>
</code>


처음 세컨드라이프를 설치하면 한글 관련 메타 저장 폴더가 없습니다. 그러므로 하나 새로 생성해야합니다.
처음 세컨드라이프를 설치하면 한글 관련 메타 저장 폴더가 없습니다. 그러므로 폴더를 하나 새로 생성해야합니다.


Linux:
Linux:
Line 551: Line 551:
</code>
</code>


한글화를 하기위해선 우선 영문 panel_login.xml 파일을 한글 메타파일 저장 경로로 복사를 합니다.
한글화를 하기 위해서는 우선 영문 panel_login.xml 파일을 한글 메타파일 저장 경로로 복사를 합니다.


Linux:
Linux:
Line 567: Line 567:
자 파일을 복사 했으면 윈도우즈 메모장이나 본인이 선호하는 편집기를 이용해서 panel_login.xml열어 보시기 바랍니다. 아래 보기는 제가 한글화를 시켜본 예제입니다.. 한번 위에서부터 아래까지 따라 하면서 작업을 해보시기 바랍니다.
자 파일을 복사 했으면 윈도우즈 메모장이나 본인이 선호하는 편집기를 이용해서 panel_login.xml열어 보시기 바랍니다. 아래 보기는 제가 한글화를 시켜본 예제입니다.. 한번 위에서부터 아래까지 따라 하면서 작업을 해보시기 바랍니다.


<nowiki>*</nowiki>주의 윈도우즈 메모장의 경우 반듯이 저장할때 utf-8로 저장 해주셔야 합니다. 않그러면 한글이 꺠집니다.
<nowiki>*</nowiki>주의할 점은, 반드시 파일을 저장할 때 utf-8로 저장해야 한다는 것입니다. 그렇게 하지 않으면 파일이 제대로 읽혀지지 않습니다.


<code>
<code>
Line 806: Line 806:
</code>
</code>


작업을 모두 하시고 파일을 저장하고, 세컨드라이프 뷰어를 구동하면 한글화가 이루어진것을 볼수가 있습니다.
작업을 모두 완료한 뒤 파일을 저장하고, 세컨드라이프 뷰어를 재구동하면 변경된 결과를 확인할 수 있습니다.


참고로 세컨드라이프는 뷰어를 구동 할때 UI 관련 메타파일을 딱 한번 불러 들이기때문에 수정한뒤 내용이 적용된것을 볼려면 뷰어를 다시 구동 시켜야합니다
참고로 세컨드라이프는 뷰어를 구동 할때 UI관련 메타파일을 딱 한 번만 불러 들이기 때문에 수정한 뒤 내용이 적용된 것을 보려면 뷰어를 다시 구동시켜야 합니다.


[[Category:Localization]]
[[Category:Localization]]

Revision as of 14:34, 16 March 2010

Emblem-important.png Important! page is not available in English currently.

Sorry! the content of this page is not available in English currently.

Second Life 한글화 작업 안내서 (Korean Translation Guide)

Second Life UI의 기본 구조

UI를 읽어올 때 기본 설정이 되어 있는 로케일 값을 참조해서 각각의 언어에 해당되는 메타 파일(xml 설정 파일. 이하 메타 파일로 통일)을 불러 오게 됩니다. 이때 로딩해야 할 메타 파일이 없는 경우 기본으로 영문판 메타 파일을 읽어들이게 됩니다.

한글화 폴더에서 특정 메타 파일이 누락되었을 경우 대응되는 영문 메타 파일을 대신 읽어들이기 때문에, 당장 모든 메타 파일을 한글화 해야하는 부담은 없습니다.

UI 메타 파일 저장 경로

저장 경로의 이름은 UI를 로딩할 때 읽어 들이는 언어 표시 축약어를 참조하므로, 해당하는 언어에 대한 정확한 표기를 사용하여 생성해야 합니다. 한국어는 ko로 설정되어 있기 때문에 korea, kr, corea와 같은 틀린 표기로 경로명을 적지 않도록 합니다.

`-- skins
  `-- default
     `-- xui
         |-- da
         |-- de
         |-- en
         |-- es
         |-- fr
         |-- it
         |-- ja
         |-- ko
         |-- nl
         |-- pl
         `-- pt

UI 메타 파일 목록

아울러 기본적으로 초기화에 필요한 메타 파일의 목록은 아래와 같습니다. 조금 많습니다. widgets 디렉토리의 경우 아직은 따로 한글화 할 필요는 없을것 같습니다.

`-- accordion_drag.xml
|-- accordion_parent.xml
|-- alert_button.xml
|-- alert_check_box.xml
|-- alert_icon.xml
|-- alert_line_editor.xml
|-- alerts.xml
|-- favorites_bar_button.xml
|-- floater_aaa.xml
|-- floater_about.xml
|-- floater_about_land.xml
|-- floater_active_speakers.xml
|-- floater_activeim.xml
|-- floater_animation_preview.xml
|-- floater_auction.xml
|-- floater_avatar_picker.xml
|-- floater_avatar_textures.xml
|-- floater_beacons.xml
|-- floater_build_options.xml
|-- floater_bulk_perms.xml
|-- floater_bumps.xml
|-- floater_buy_contents.xml
|-- floater_buy_currency.xml
|-- floater_buy_land.xml
|-- floater_buy_object.xml
|-- floater_camera.xml
|-- floater_chat_history.xml
|-- floater_chatterbox.xml
|-- floater_choose_group.xml
|-- floater_color_picker.xml
|-- floater_critical.xml
|-- floater_customize.xml
|-- floater_day_cycle_options.xml
|-- floater_device_settings.xml
|-- floater_env_settings.xml
|-- floater_event.xml
|-- floater_first_time_tip.xml
|-- floater_font_test.xml
|-- floater_gesture.xml
|-- floater_god_tools.xml
|-- floater_hardware_settings.xml
|-- floater_help_browser.xml
|-- floater_hud.xml
|-- floater_im.xml
|-- floater_im_container.xml
|-- floater_im_session.xml
|-- floater_image_preview.xml
|-- floater_incoming_call.xml
|-- floater_inspect.xml
|-- floater_instant_message.xml
|-- floater_instant_message_ad_hoc.xml
|-- floater_instant_message_group.xml
|-- floater_inventory.xml
|-- floater_inventory_item_properties.xml
|-- floater_inventory_view_finder.xml
|-- floater_joystick.xml
|-- floater_lagmeter.xml
|-- floater_land_holdings.xml
|-- floater_live_lsleditor.xml
|-- floater_lsl_guide.xml
|-- floater_map.xml
|-- floater_media_browser.xml
|-- floater_media_remote.xml
|-- floater_media_settings.xml
|-- floater_mem_leaking.xml
|-- floater_mini_map.xml
|-- floater_moveview.xml
|-- floater_mute_object.xml
| -- floater_my_friends.xml
|-- floater_nearby_chat.xml
|-- floater_notification.xml
|-- floater_notifications_console.xml
|-- floater_openobject.xml
|-- floater_outfit_save_as.xml
|-- floater_outgoing_call.xml
|-- floater_pay.xml
|-- floater_pay_object.xml
|-- floater_perm_prefs.xml
|-- floater_post_process.xml
|-- floater_postcard.xml
|-- floater_preferences.xml
|-- floater_preview_animation.xml
|-- floater_preview_classified.xml
|-- floater_preview_event.xml
|-- floater_preview_gesture.xml
|-- floater_preview_gesture_info.xml
|-- floater_preview_gesture_shortcut.xml
|-- floater_preview_gesture_steps.xml
|-- floater_preview_notecard.xml
|-- floater_preview_sound.xml
|-- floater_preview_texture.xml
|-- floater_preview_url.xml
|-- floater_price_for_listing.xml
|-- floater_region_info.xml
|-- floater_report_abuse.xml
|-- floater_script.xml
|-- floater_script_debug.xml
|-- floater_script_debug_panel.xml
|-- floater_script_limits.xml
|-- floater_script_preview.xml
|-- floater_script_queue.xml
|-- floater_script_search.xml
|-- floater_search.xml
|-- floater_select_key.xml
|-- floater_sell_land.xml
|-- floater_settings_debug.xml
|-- floater_snapshot.xml
|-- floater_sound_preview.xml
|-- floater_statistics.xml
|-- floater_stats.xml
|-- floater_sys_well.xml
|-- floater_telehub.xml
|-- floater_test_button.xml
|-- floater_test_checkbox.xml
|-- floater_test_combobox.xml
|-- floater_test_inspectors.xml
|-- floater_test_layout.xml
|-- floater_test_line_editor.xml
|-- floater_test_list_view.xml
|-- floater_test_navigation_bar.xml
|-- floater_test_radiogroup.xml
|-- floater_test_slider.xml
|-- floater_test_spinner.xml
|-- floater_test_text_editor.xml
|-- floater_test_textbox.xml
|-- floater_test_widgets.xml
|-- floater_texture_ctrl.xml
|-- floater_tools.xml
|-- floater_top_objects.xml
|-- floater_tos.xml
|-- floater_ui_preview.xml
|-- floater_url_entry.xml
|-- floater_voice_controls.xml
|-- floater_water.xml
|-- floater_wearable_save_as.xml
|-- floater_whitelist_entry.xml
|-- floater_windlight_options.xml
|-- floater_window_size.xml
|-- floater_world_map.xml
|-- fonts.xml
|-- inspect_avatar.xml
|-- inspect_group.xml
|-- inspect_object.xml
|-- inspect_remote_object.xml
|-- inspect_toast.xml
|-- language_settings.xml
|-- main_view.xml
|-- menu_attachment_other.xml
|-- menu_attachment_self.xml
|-- menu_avatar_icon.xml
|-- menu_avatar_other.xml
|-- menu_avatar_self.xml
|-- menu_bottomtray.xml
|-- menu_favorites.xml
|-- menu_gesture_gear.xml
|-- menu_group_plus.xml
|-- menu_hide_navbar.xml
|-- menu_im_well_button.xml
|-- menu_imchiclet_adhoc.xml
|-- menu_imchiclet_group.xml
|-- menu_imchiclet_p2p.xml
|-- menu_inspect_avatar_gear.xml
|-- menu_inspect_object_gear.xml
|-- menu_inspect_self_gear.xml
|-- menu_inventory.xml
|-- menu_inventory_add.xml
|-- menu_inventory_gear_default.xml
|-- menu_land.xml
|-- menu_landmark.xml
|-- menu_login.xml
|-- menu_mini_map.xml
|-- menu_navbar.xml
|-- menu_nearby_chat.xml
|-- menu_notification_well_button.xml
|-- menu_object.xml
|-- menu_object_icon.xml
|-- menu_participant_list.xml
|-- menu_people_friends_view_sort.xml
|-- menu_people_groups.xml
|-- menu_people_groups_view_sort.xml
|-- menu_people_nearby.xml
|-- menu_people_nearby_multiselect.xml
|-- menu_people_nearby_view_sort.xml
|-- menu_people_recent_view_sort.xml
|-- menu_picks.xml
|-- menu_picks_plus.xml
|-- menu_place.xml
|-- menu_place_add_button.xml
|-- menu_places_gear_folder.xml
|-- menu_places_gear_landmark.xml
|-- menu_profile_overflow.xml
|-- menu_slurl.xml
|-- menu_teleport_history_gear.xml
|-- menu_teleport_history_item.xml
|-- menu_teleport_history_tab.xml
|-- menu_text_editor.xml
|-- menu_url_agent.xml
|-- menu_url_group.xml
|-- menu_url_http.xml
|-- menu_url_inventory.xml
|-- menu_url_map.xml
|-- menu_url_objectim.xml
|-- menu_url_parcel.xml
|-- menu_url_slapp.xml
|-- menu_url_slurl.xml
|-- menu_url_teleport.xml
|-- menu_viewer.xml
|-- mime_types.xml
|-- mime_types_linux.xml
|-- mime_types_mac.xml
|-- notifications.xml
|-- notify.xml
|-- panel_active_object_row.xml
|-- panel_activeim_row.xml
|-- panel_adhoc_control_panel.xml
|-- panel_audio.xml
|-- panel_audio_device.xml
|-- panel_avatar_classified.xml
|-- panel_avatar_list_item.xml
|-- panel_avatar_tag.xml
|-- panel_bars.xml
|-- panel_bg_tab.xml
|-- panel_block_list_sidetray.xml
|-- panel_bottomtray.xml
|-- panel_bottomtray_lite.xml
|-- panel_chat_header.xml
|-- panel_chat_item.xml
|-- panel_chat_separator.xml
|-- panel_classified.xml
|-- panel_classified_info.xml
|-- panel_classifieds_list_item.xml
|-- panel_edit_alpha.xml
|-- panel_edit_classified.xml
|-- panel_edit_eyes.xml
|-- panel_edit_gloves.xml
|-- panel_edit_hair.xml
|-- panel_edit_jacket.xml
|-- panel_edit_pants.xml
|-- panel_edit_pick.xml
|-- panel_edit_profile.xml
|-- panel_edit_shape.xml
|-- panel_edit_shirt.xml
|-- panel_edit_shoes.xml
|-- panel_edit_skin.xml
|-- panel_edit_skirt.xml
|-- panel_edit_socks.xml
|-- panel_edit_tattoo.xml
|-- panel_edit_underpants.xml
|-- panel_edit_undershirt.xml
|-- panel_edit_wearable.xml
|-- panel_friends.xml
|-- panel_group_control_panel.xml
|-- panel_group_general.xml
|-- panel_group_info_sidetray.xml
|-- panel_group_invite.xml
|-- panel_group_land_money.xml
|-- panel_group_list_item.xml
|-- panel_group_notices.xml
|-- panel_group_notify.xml
|-- panel_group_roles.xml
|-- panel_groups.xml
|-- panel_hud.xml
|-- panel_im_control_panel.xml
|-- panel_instant_message.xml
|-- panel_landmark_info.xml
|-- panel_landmarks.xml
|-- panel_login.xml
|-- panel_look_info.xml
|-- panel_main_inventory.xml
|-- panel_me.xml
|-- panel_media_controls.xml
|-- panel_media_remote.xml
|-- panel_media_remote_expanded.xml
|-- panel_media_settings_general.xml
|-- panel_media_settings_permissions.xml
|-- panel_media_settings_security.xml
|-- panel_mini_map.xml
|-- panel_my_profile.xml
|-- panel_navigation_bar.xml
|-- panel_nearby_chat.xml
|-- panel_nearby_chat_bar.xml
|-- panel_nearby_media.xml
|-- panel_notes.xml
|-- panel_notification.xml
|-- panel_notifications_channel.xml
|-- panel_outfits_inventory.xml
|-- panel_outfits_inventory_gear_default.xml
|-- panel_overlaybar.xml
|-- panel_people.xml
|-- panel_pick_info.xml
|-- panel_pick_list_item.xml
|-- panel_picks.xml
|-- panel_place_profile.xml
|-- panel_places.xml
|-- panel_preferences_advanced.xml
|-- panel_preferences_alerts.xml
|-- panel_preferences_chat.xml
|-- panel_preferences_general.xml
|-- panel_preferences_graphics1.xml
|-- panel_preferences_privacy.xml
|-- panel_preferences_setup.xml
|-- panel_preferences_sound.xml
|-- panel_prim_media_controls.xml
|-- panel_profile.xml
|-- panel_profile_view.xml
|-- panel_progress.xml
|-- panel_region_covenant.xml
|-- panel_region_debug.xml
|-- panel_region_estate.xml
|-- panel_region_general.xml
|-- panel_region_general_layout.xml
|-- panel_region_terrain.xml
|-- panel_region_texture.xml
|-- panel_script_ed.xml
|-- panel_script_limits_my_avatar.xml
|-- panel_script_limits_region_memory.xml
|-- panel_scrolling_param.xml
|-- panel_separator.xml
|-- panel_side_tray.xml
|-- panel_side_tray_tab_caption.xml
|-- panel_sidetray_home_tab.xml
|-- panel_speaker_controls.xml
|-- panel_stand_stop_flying.xml
|-- panel_status_bar.xml
|-- panel_sys_well_item.xml
|-- panel_teleport_history.xml
|-- panel_teleport_history_item.xml
|-- panel_toast.xml
|-- panel_voice_controls.xml
|-- panel_voice_remote.xml
|-- panel_voice_remote_expanded.xml
|-- panel_volume_pulldown.xml
|-- panel_world_map.xml
|-- role_actions.xml
|-- sidepanel_appearance.xml
|-- sidepanel_inventory.xml
|-- sidepanel_item_info.xml
|-- sidepanel_task_info.xml
|-- strings.xml
|-- teleport_strings.xml
`-- xui_version.xml

한글화를 위한 메타 파일 수정 방법

Second Life 그래픽 사용자 환경(GUI)의 메타 파일은 xml로 되어 있습니다. 태그와 속성들 값에 따라서 GUI의 글자 크기, 문자 등의 값을 변경 할 수 있습니다. 사실 dtd와 같은 xml 구조를 잘 아시는 분이라면 직관적으로 작업이 가능할 만큼 구조가 단순합니다.

하지만 이 글은 프로그래밍에 대한 개념이 익숙하지 않은 분들도 알아볼 수 있게 작성되는 것이 목표이므로, 어려운 설명은 제외하고 어떠한 것들을 어떻게 수정해야 하는가에 대해서만 간략하게 설명하겠습니다.

label 속성

메타 파일을 열어보면 대부분 다음과 같은 구조입니다.

<태그이름 속성1="속성값" 속성2="속성값" 속성3="속성값">

하나 예를 들어보죠. menu_land.xml 파일을 예를 들겠습니다.

<menu_item_call
 label="Sit Here"
 name="Sit Here">
   <menu_item_call.on_click
    function="Land.Sit" />
</menu_item_call>

위에 보시면 태그 이름은 menu_item_call 입니다 즉 <menu_item_call> </menu_item_call> 이게 하나의 덩어리입니다. 그 밑에 자식 태그는 <menu_item_call.on_click /> 이녀석이구요. 사실 여기서 태그명은 그렇게 중요한 게 아닙니다.

label 이라는 속성 값이 있는데요. 이 label이라는 녀석에 쓰여진 값이 UI에서 나타나는 문자 열이 되겠습니다. 그러므로 다른건 알 필요도 없고 그냥 label에 있는 "Sit Here"이라는 문구를 "여기 앉기" 라고 고쳐주면 땅을 우클릭해서 뜨는 메뉴에서 "Sit Here" 대신에 "여기 앉기"라는 문구를 볼 수 있게 됩니다. 대부분 이런 식입니다.여기서 중요한 것은 name의 속성값도 "Sit Here"인데요 이것은 건드리면 안됩니다. 수정을 해보면 알겠지만 label이랑 name속성의 값들이 대부분 서로 비슷하므로 실수 하지 않게 조심하세요. 이것은 잘못 수정하면 눌러도 동작을 하지 않게 됩니다.

위의 내용을 한글화 한다면 아래와 같이 됩니다.

<menu_item_call
 label="여기 앉기"
 name="Sit Here">
   <menu_item_call.on_click
    function="Land.Sit" />
</menu_item_call>

1차적으로 label에 쓰여 있는 문구를 바꾸는 것 만으로도 어느 정도 한글화는 가능합니다.

tool_tip 속성

이제 두번째로 살펴볼 것은 tool_tip이라는 속성값입니다. 이게 뭐냐면, 땅이나 어딘가에 마우스를 올리면 엄청나게 작은(?)창으로 설명이 뜨는 걸 보신적이 있을 것입니다. 이것을 컴퓨터 용어로 툴팁이라고 하는데요. 이게 UI에도 적용이 되어 있습니다. 그 값을 정의해주는 속성이 tool_tip입니다.

예를 들어보죠. panel_preferrences_general.xml 파일입니다.

  <color_swatch
    can_apply_immediately="true"
    follows="left|top"
    height="50"
    layout="topleft"
    left="50"
    name="effect_color_swatch"
    tool_tip="Click to open Color Picker"
    width="38">
       <color_swatch.init_callback
        function="Pref.getUIColor"
        parameter="EffectColor" />
       <color_swatch.commit_callback
        function="Pref.applyUIColor"
        parameter="EffectColor" />
   </color_swatch>

위에 보시면 속성중에 tool_tip이라는게 보이시죠? 현재 값이 "Click to oepn Color Picker" 인데요. 이 속성 값을 "색상 선택을 위해서 클릭"이라고 갱신한 뒤 뷰어화면의 설정에서 일반 탭의 색상을 선택하는 부분에 마우스를 대고 있으면 "색상 선택을 위해서 클릭"이라는 툴팁이 뜨는 걸 볼 수 있습니다. 아래는 적용시킨 예입니다.

   <color_swatch
    can_apply_immediately="true"
    follows="left|top"
    height="50"
    layout="topleft"
    left="50"
    name="effect_color_swatch"
    tool_tip="색상 선택을 위해서 클릭"
    width="38">
       <color_swatch.init_callback
        function="Pref.getUIColor"
        parameter="EffectColor" />
       <color_swatch.commit_callback
        function="Pref.applyUIColor"
        parameter="EffectColor" />
   </color_swatch>

<text> </text> 태그

자 그리고 이제부터는 조금 난이도가 있습니다. 태그 자체가 값을 가지는 녀석들이 있습니다. XML DTD 용어로는 #PCDATA나 #CDATA라고 하는데 그런 건 아실 필요 없구요. 보기를 보고 설명 드리겠습니다.

panel_preferrences_general.xml 파일입니다.

  <text
    type="string"
    length="1"
    follows="left|top"
    height="15"
    layout="topleft"
    left="30"
    name="language_textbox"
    top="10"
    width="400">
       Language:
   </text>

위에 보기를 보시면 <text> </text> 태그 사이에 Language: 라는 값이 들어 있는 걸 볼 수가 있습니다. 이녀석을 언어:로 고쳐서 적용하면 환경 설정의 일반탭에서 Language: 라는 문구가 언어로 바뀌는 걸 볼 수 있습니다.

아래는 적용 시킨 예입니다.

  <text
    type="string"
    length="1"
    follows="left|top"
    height="15"
    layout="topleft"
    left="30"
    name="language_textbox"
    top="10"
    width="400">
       언어:
   </text>

<panel.string></panel.string> 태그

아래는 또 다른 보기입니다.

panel_world_map.xml

   <panel.string
    name="Loading">
       Loading...
   </panel.string>
   <panel.string
    name="InvalidLocation">
       Invalid Location
   </panel.string>

보시면 <panel.string> </panel.string> 사이에 값이 들어있는데요. 이걸 한글화하면 다음과 같이 됩니다.

   <panel.string
    name="Loading">
       준비중...
   </panel.string>
   <panel.string
    name="InvalidLocation">
       잘못된 위치
   </panel.string>

위의 메시지들을 바꾸게 되면 전체 지도에서 지도를 불러 들일때 Loading... 이라는 문구가 준비중...으로 바뀌고 지도상에서 읽어 들일 수 없는 장소는 잘못된 위치로 표시되게 됩니다.

대부분 위와 같은 방식으로 작업이 진행됩니다.

예제를 통한 직접 한글화 해보기

이제 직접 한글화를 한번 해보도록 하겠습니다. 세컨드라이프를 동작 시키면 가장 먼저 보게되는 로그인 화면을 한글화 하는 것을 보기로 보여 드리겠습니다. 일단 대충 개념만 잡으시면 됩니다.

우선 세컨드라이프 폴더에서 skin/default/xui 로 들어갑니다. (윈도우즈에서는 / 대신에 \으로 써야합니다)

Linux:

cd skin/default/xui

Windows:

cd skin\default\xui

처음 세컨드라이프를 설치하면 한글 관련 메타 저장 폴더가 없습니다. 그러므로 폴더를 하나 새로 생성해야합니다.

Linux:

mkdir ko

Windows:

md ko

한글화를 하기 위해서는 우선 영문 panel_login.xml 파일을 한글 메타파일 저장 경로로 복사를 합니다.

Linux:

cp en/panel_login.xml ko/
cd ko

Windows:

copy en\panel_login.xml ko\
cd ko

자 파일을 복사 했으면 윈도우즈 메모장이나 본인이 선호하는 편집기를 이용해서 panel_login.xml열어 보시기 바랍니다. 아래 보기는 제가 한글화를 시켜본 예제입니다.. 한번 위에서부터 아래까지 따라 하면서 작업을 해보시기 바랍니다.

*주의할 점은, 반드시 파일을 저장할 때 utf-8로 저장해야 한다는 것입니다. 그렇게 하지 않으면 파일이 제대로 읽혀지지 않습니다.

<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<panel
follows="all"
height="600"
layout="topleft"
left="0"
name="panel_login"
top="600"
 width="996">
<panel.string
     name="create_account_url">
       http://join.secondlife.com/
</panel.string>
<panel.string
     name="real_url" translate="false">
       http://secondlife.com/app/login/
</panel.string>
    <string name="reg_in_client_url" translate="false">
     http://secondlife.eniac15.lindenlab.com/reg-in-client/
</string>
<panel.string
     name="forgot_password_url">
       http://secondlife.com/account/request.php
</panel.string>
<web_browser
bg_opaque_color="Black"
border_visible="false"
bottom="600"
follows="all"
hide_loading="true"
left="0"
name="login_html"
start_url=""
top="0"
height="600"
     width="980" />
<layout_stack
follows="left|bottom|right"
name="login_widgets"
layout="topleft"
orientation="horizontal"
top="519"
width="996"
height="80">
<layout_panel
auto_resize="false"
follows="left|bottom"
name="login"
layout="topleft"
width="695"
min_width="695"
user_resize="false"
height="80">
<text
follows="left|bottom"
font="SansSerifSmall"
height="16"
name="first_name_text"
top="20"
left="20"
width="150">

이름:

</text>
<line_editor
follows="left|bottom"
handle_edit_keys_directly="true"
height="22"

label="이름"

left_delta="0"
max_length="31"
name="first_name_edit"
select_on_focus="true"
tool_tip="[SECOND_LIFE] First Name"
top_pad="0"
   width="135" />
  <text
   follows="left|bottom"
   font="SansSerifSmall"
   height="16"
   left_pad="8"
   name="last_name_text"
   top="20"
   width="150">
    성:   </text>
<line_editor
follows="left|bottom"
handle_edit_keys_directly="true"
height="22"
label="성"
max_length="31"
name="last_name_edit"
select_on_focus="true"
tool_tip="[SECOND_LIFE] Last Name"
  top_pad="0"
  width="135" />
<text
follows="left|bottom"
font="SansSerifSmall"
height="15"
left_pad="8"
name="password_text"
top="20"
    width="150">
       비밀번호:
</text>
<line_editor
follows="left|bottom"
handle_edit_keys_directly="true"
  height="22"
  max_length="16"
name="password_edit"
select_on_focus="true"
  top_pad="0"
  width="135" />
 <check_box
control_name="RememberPassword"
follows="left|bottom"
font="SansSerifSmall"
height="16"
label="비밀번호 기억"
  top_pad="3"
  name="remember_check"
 width="135" />
<button
  follows="left|bottom"
  height="23"
  image_unselected="PushButton_On"
  image_selected="PushButton_On_Selected"
  label="접속 하기"
  label_color="White"
  layout="topleft"
  left_pad="10"
  name="connect_btn"
  top="35"
  width="90" />
  <text
  follows="left|bottom"
  font="SansSerifSmall"
  height="15"
  left_pad="18"
  name="start_location_text"
top="20"
  width="130">
       시작 위치:
 </text>
<combo_box
allow_text_entry="true"
control_name="LoginLocation"
  follows="left|bottom"
  height="23"
max_chars="128"
top_pad="0"
name="start_location_combo"
     width="135">
<combo_box.item
label="마지막 방문지"
name="MyLastLocation"
         value="last" />
<combo_box.item
label="내 시작 위치"
name="MyHome"
         value="home" />
<combo_box.item
label="<직접 지역명 입력>"
name="Typeregionname"   value="" />
</combo_box>
<combo_box
allow_text_entry="true"
font="SansSerifSmall"
   follows="left|right|bottom"
   height="23"
layout="topleft"
top_pad="2"
name="server_combo"
width="135"
  visible="false" />
</layout_panel>
<layout_panel
follows="right|bottom"
name="links"
width="200"
min_width="200"
user_resize="false"
height="80">
   <text
follows="right|bottom"
font="SansSerifSmall"
text_color="EmphasisColor"
halign="right"
height="16"
top="12"
right="-10"
name="create_new_account_text"
  width="180">
       회원 가입
 </text>
<text
follows="right|bottom"
font="SansSerifSmall"
text_color="EmphasisColor"
halign="right"
height="16"
name="forgot_password_text"
top_pad="12"
right="-10"
  width="180">
      이름 또는 비밀번호를 잊어 버리셨습니까?
</text>
<text
follows="right|bottom"
font="SansSerifSmall"
text_color="EmphasisColor"
halign="right"
height="16"
name="login_help"
top_pad="2"
right="-10"
    width="180">
       접속에 도움이 필요하십니까?  </text>
   </layout_panel>
</layout_stack>
</panel>

작업을 모두 완료한 뒤 파일을 저장하고, 세컨드라이프 뷰어를 재구동하면 변경된 결과를 확인할 수 있습니다.

참고로 세컨드라이프는 뷰어를 구동 할때 UI관련 메타파일을 딱 한 번만 불러 들이기 때문에 수정한 뒤 내용이 적용된 것을 보려면 뷰어를 다시 구동시켜야 합니다.

같이 보기

세컨드라이프 도움말