Welcome!

Join our community of MMO enthusiasts and game developers! By registering, you'll gain access to discussions on the latest developments in MMO server files and collaborate with like-minded individuals. Join us today and unlock the potential of MMO server development!

Join Today!

[Guide] Reading and editing Korean config files in their native language.

Custom Title Activated
Loyal Member
Joined
May 26, 2007
Messages
5,545
Reaction score
1,315
Korean Text in Every Locale

Before I begin, if you natively speak Vietnamese you may find the following link easier to follow. Seems someone there liked the idea. They use Notepad ++ for preference.
[ame="http://clbgamesvn.com/forums/showthread.php?t=45799"]Khắc phục lỗi font chữ trong các file cấu hình trên server[/ame]
Thanks for the complement Naughty_boy9x. :wink:

Introduction
The configuration files for the PT game client are written in Korean... they use the ANSI codepage which is default on a Korean Windows 9X PC, since international formats where not widely available when the game was developed, and markets outside Korea where not considered.

This presents problems when reading, and more importantly copying and pasting config files to, and from web pages... the reason for this is that the ANSI character set is localised to each installation of Windows... so unless you are on a Korean Windows PC, the characters will not display properly in most plain text editors... and when you copy them, and paste them on the web, unless the recipient is using the same locale Windows installation, the characters will become corrupted.

There are a number of text editors which can read the files and either recognise, or with some little coaxing represent them in their native Korean language. This document is going to describe some methods I have found to work.

MadEdit
I usually use . It acts as a plain text editor, and as a Hex Editor, and supports many lexers for syntax highlighting. It also has a plain text columnur mode, which allows you to cut, copy, paste columns in plain text tabular information formatted with spaces or tabs for a fixed width display such as a terminal console, command line or DOS box. It automagically detects that there are Korean, or Japanese characters in PT config files and uses the ANSI codepage which fits the largest number of characters in the file... which is a great no-nonsense method of working.
bobsobol - [Guide] Reading and editing Korean config files in their native language. - RaGEZONE Forums

It has problems on non-Left to Right reading order systems however. In particular, some of our readers here have told me (and shown me) that on Hebrew systems (Bi-Directional reading order) it's entire window is displayed as a mirror image. I presume it would look similar on Arabic systems as well.

Notepad2
In it is actually possible to set the default font to GulimChe (Or Gulim for proportional spaced text) and the language "Hangul" without doing anything else. Notepad2 cannot make any sense of the files with it's lexers, though it does really well with C / C++, PHP, Python, Perl, bash, Batch files, Windows ini files and inf files among others.
bobsobol - [Guide] Reading and editing Korean config files in their native language. - RaGEZONE Forums


Notepad++
in conjunction with setting it's default language to /L0412 or "한국어" from the GUI.

Syntax highlighting is possible on all but the Korean commands and parameters.
bobsobol - [Guide] Reading and editing Korean config files in their native language. - RaGEZONE Forums

Here's a quick Notepad++ "userDefineLang.xml" file I made:-
Code:
<NotepadPlus>
    <UserLang name="Priston" ext=".txt|.ini|.npc">
        <Settings>
            <Global caseIgnored="yes" />
            <TreatAsSymbol comment="no" commentLine="yes" />
            <Prefix words1="no" words2="no" words3="no" words4="no" />
        </Settings>
        <KeywordLists>
            <Keywords name="Delimiters">"00"00</Keywords>
            <Keywords name="Folder+"></Keywords>
            <Keywords name="Folder-"></Keywords>
            <Keywords name="Operators"></Keywords>
            <Keywords name="Comment">1 2 0/ 0#</Keywords>
            <Keywords name="Words1">* *NAME *A_NAME *J_NAME *P_NAME *MONSTER_KEY *PLAYERSKIN *COLORMODE *SCREENSIZE *MODE *TT_DATA_SERVER *AREA_SERVER *SERVER_LINK_IP *REC_ADMIN_CMD *NOTICE_URL *CRAZY_PACKET *DISABLE_THROWITEM *START_FIELD *DISABLE_QUEST *DISABLE_DEC_SKILLPOINT *BACKUP_PATH *SERVER_INVENTORY *LOGIN_SERVER_IP *SYSTEM_IP *ADMINISTRATOR_IP *ENABLE_IP *DISABLE_IP *CHECK_PLAYFIELD *ENABLE_PARTYITEM *PRESENT_LEVEL *FREE_LEVEL *DISABLE_CHECK_LOGOUT *DISABLE_LOGQUE *DISABLE_LOGIN *DISP_BILLING_TIME *BLOCK_USER_PATH *ENABLE_SERVER_EXP *CHECK_POTION_COUNT *CLIENT_PROCESS_TIME_OUT *CLIENT_CHECK_PROCESS_TIME *PERMIT_MONEY *PERMIT_EXP *ENABLE_BLOCK_FOREVER *RECORD_JOBCHANGER *DEFAULT_ITEM_USER *EVENT_BITMASK *EVENT_SIEGE_TIME *EVENT_BLESSCASTLE *EVENT_EXPUP *EVENT_SUMMER_CHICKEN *EVENT_SANTAGOBLIN *EVENT_GHOST *EVENT_MOLLYWOLF *EVENT_MORIFSHELTOM *EVENT_WHITEDAY *EVENT_VALENTINEDAY *EVENT_NINEFOX *EVENT_BABELHORN *EVENT_PUZZLE *EVENT_BIRTHDAY *EVENT_STARPOINT *EVENT_POTION *EVENT_CRISTAL *EVENT_CHILD *EVENT_DAMAGEOFF *EVENT_HARDCORE *EVENT_MANDOO *CLIENT_CHECK_FUNC *DISCONNECT_ITEM_ERROR *BLOCK_LOGOUT *BLOCK_LEVEL *DEBUG_ID *DEBUG_IP *REMOVE_PROTECT_TIME *GAME_GUARD *CL_PROTECT *POTION_MONITOR *PK_FIELD *ENABLE_PK *SERVER_NAME *ADMIN_LOGIN *ADMIN_IP *ADMIN_NAME *ADMIN_COMMAND *VERSION *DISCONNECT_CLSAFE_CODE *CLSAFE_CODE *DISCONNECT_CLIENT_BADCODE *CONNECT_CLIENT_CODE *TEST_SERVER *MAX_USERS *SERVER_RECORD_MEM *SERVER_AUTOPLAY *SERVER_CODE *LOGIN_TESTER *ODBC_TABLE_PLAY *ODBC_TABLE_PASSWORD *ODBC_TABLE_IDNAME *ODBC_TABLE *ODBC_PASSWORD *ODBC_ACCOUNT *ODBC_NAME CLAN_SERVER *GAME_SERVER Server3 Server2 Server1 Sound ScreenSize CameraSight MotionBlur CameraInvert Network ColorBPP Graphic *MAX_ACTOR *DELAY *MAX_ACTOR_POS *BOSS_ACTOR *ACTOR *BELATRA_MONSTER *BELATRA_DIVSCORE *BELATRA_TEXT *BELATRA_TAX *CRACK *BACKUP_FOLDER_NAME *SERVER_AUTOSTART</Keywords>
            <Keywords name="Words2">SERVER WINDOW FULLSCREEN PureBody Priest Magician Knight Atalanta Pikeman Archer Mechanician Fighter off evil good neutral</Keywords>
            <Keywords name="Words3"></Keywords>
            <Keywords name="Words4"></Keywords>
        </KeywordLists>
        <Styles>
            <WordsStyle name="DEFAULT" styleID="11" fgColor="000000" bgColor="FFFFFF" fontName="GulimChe" fontStyle="0" fontSize="10" />
            <WordsStyle name="FOLDEROPEN" styleID="12" fgColor="8080C0" bgColor="FFFFFF" fontName="GulimChe" fontStyle="0" fontSize="10" />
            <WordsStyle name="FOLDERCLOSE" styleID="13" fgColor="8080C0" bgColor="FFFFFF" fontName="GungsuhChe" fontStyle="1" fontSize="10" />
            <WordsStyle name="KEYWORD1" styleID="5" fgColor="0000A0" bgColor="FFFFFF" fontName="GulimChe" fontStyle="1" />
            <WordsStyle name="KEYWORD2" styleID="6" fgColor="0000FF" bgColor="FFFFFF" fontName="GulimChe" fontStyle="1" />
            <WordsStyle name="KEYWORD3" styleID="7" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" />
            <WordsStyle name="KEYWORD4" styleID="8" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" />
            <WordsStyle name="COMMENT" styleID="1" fgColor="008000" bgColor="FFFFFF" fontName="GulimChe" fontStyle="2" />
            <WordsStyle name="COMMENT LINE" styleID="2" fgColor="008000" bgColor="FFFFFF" fontName="GulimChe" fontStyle="2" />
            <WordsStyle name="NUMBER" styleID="4" fgColor="800000" bgColor="FFFFFF" fontName="" fontStyle="0" />
            <WordsStyle name="OPERATOR" styleID="10" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" />
            <WordsStyle name="DELIMINER1" styleID="14" fgColor="000080" bgColor="FFFFFF" fontName="GulimChe" fontStyle="0" />
            <WordsStyle name="DELIMINER2" styleID="15" fgColor="0000FF" bgColor="FFFFFF" fontName="" fontStyle="0" />
            <WordsStyle name="DELIMINER3" styleID="16" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" />
        </Styles>
    </UserLang>
</NotepadPlus>
Programmer's Notepad
[highlight]Recent versions seem to fail without AppLocale... which kinda makes the options pointless. :(:[/highlight]
will display correctly in Hangul by selecting Tools -> Options from the menu, and then from the Tree View General -> Default and setting Codepage = Korean Unified Hangul, and Character Set = Hangul.
bobsobol - [Guide] Reading and editing Korean config files in their native language. - RaGEZONE Forums

Here is a laxer I created based on the Verlog laxer for PNP:-
Code:
<?xml version="1.0" encoding="UTF-8"?>
<Scheme>
    <keyword-classes><keyword-class name="priston">
      NAME A_NAME J_NAME P_NAME MONSTER_KEY PLAYERSKIN COLORMODE SCREENSIZE
            MODE TT_DATA_SERVER AREA_SERVER SERVER_LINK_IP REC_ADMIN_CMD NOTICE_URL
            CRAZY_PACKET DISABLE_THROWITEM START_FIELD DISABLE_QUEST
            DISABLE_DEC_SKILLPOINT BACKUP_PATH SERVER_INVENTORY LOGIN_SERVER_IP
            SYSTEM_IP ADMINISTRATOR_IP ENABLE_IP DISABLE_IP CHECK_PLAYFIELD
            ENABLE_PARTYITEM PRESENT_LEVEL FREE_LEVEL DISABLE_CHECK_LOGOUT
            DISABLE_LOGQUE DISABLE_LOGIN DISP_BILLING_TIME BLOCK_USER_PATH
            ENABLE_SERVER_EXP CHECK_POTION_COUNT CLIENT_PROCESS_TIME_OUT
            CLIENT_CHECK_PROCESS_TIME PERMIT_MONEY PERMIT_EXP ENABLE_BLOCK_FOREVER
            RECORD_JOBCHANGER DEFAULT_ITEM_USER EVENT_BITMASK EVENT_SIEGE_TIME
            EVENT_BLESSCASTLE EVENT_EXPUP EVENT_SUMMER_CHICKEN EVENT_SANTAGOBLIN
            EVENT_GHOST EVENT_MOLLYWOLF EVENT_MORIFSHELTOM EVENT_WHITEDAY
            EVENT_VALENTINEDAY EVENT_NINEFOX EVENT_BABELHORN EVENT_PUZZLE EVENT_BIRTHDAY
            EVENT_STARPOINT EVENT_POTION EVENT_CRISTAL EVENT_CHILD EVENT_DAMAGEOFF
            EVENT_HARDCORE EVENT_MANDOO CLIENT_CHECK_FUNC DISCONNECT_ITEM_ERROR
            BLOCK_LOGOUT BLOCK_LEVEL DEBUG_ID DEBUG_IP REMOVE_PROTECT_TIME GAME_GUARD
            CL_PROTECT POTION_MONITOR PK_FIELD ENABLE_PK SERVER_NAME ADMIN_LOGIN
            ADMIN_IP ADMIN_NAME ADMIN_COMMAND VERSION DISCONNECT_CLSAFE_CODE
            CLSAFE_CODE DISCONNECT_CLIENT_BADCODE CONNECT_CLIENT_CODE TEST_SERVER
            MAX_USERS SERVER_RECORD_MEM SERVER_AUTOPLAY SERVER_CODE LOGIN_TESTER
            ODBC_TABLE_PLAY ODBC_TABLE_PASSWORD ODBC_TABLE_IDNAME ODBC_TABLE
            ODBC_PASSWORD ODBC_ACCOUNT ODBC_NAME CLAN_SERVER GAME_SERVER Server3 Server2
            Server1 Sound ScreenSize CameraSight MotionBlur CameraInvert Network ColorBPP
            Graphic MAX_ACTOR DELAY MAX_ACTOR_POS BOSS_ACTOR ACTOR BELATRA_MONSTER
            BELATRA_DIVSCORE BELATRA_TEXT BELATRA_TAX CRACK BACKUP_FOLDER_NAME
            SERVER_AUTOSTART *</keyword-class>
  <keyword-class name="priston-args">
      SERVER WINDOW FULLSCREEN PureBody Priest Magician Knight Atalanta Pikeman Archer
            Mechanician Fighter off evil good neutral
  </keyword-class></keyword-classes>
    <language name="Priston Tale" title="Priston">
        <lexer name="verilog" />
        <comments line="//" />
        <comments line="#" />
        <use-keywords>
            <keyword key="0" name="Keywords" class="priston" />
            <keyword key="2" name="Keywords 2" class="priston-args" />
        </use-keywords>
        <use-styles>
            <style name="Default" key="32" />
            <style name="Whitespace" key="0" />
            <style name="Comment" key="1" class="commentbox"/>
            <style name="Comment Line" key="2" class="commentline"/>
            <style name="Bang Comment" key="3" class="comment" fore="3F7F3F" back="E0F0FF" eolfilled="true"/>
            <style name="Number" key="4" class="number"/>
            <style name="Keyword" key="5" class="keyword"/>
            <style name="String" key="6" class="string"/>
            <style name="Keyword 2" key="7" class="string"/>
            <style name="System Tasks" key="8" fore="804020"/>
            <style name="Preprocessor" key="9" class="preprocessor"/>
            <style name="Operator" key="10" class="operator"/>
            <style name="Identifier" key="11" />
            <style name="End of line string" key="12" class="unclosedstring" eolfilled="true"/>
            <style name="User defined identifiers and tasks" key="19" fore="804020" />
        </use-styles>
    </language>
</Scheme>
Again, it doesn't actually highlight the Korean commands.

Others?
If you have a text editor you really like that doesn't support Unicode at-all, then use in conjunction with may well work for that as well... unfortunately, Notepad DOES support Unicode, but not Korean ANSI, so it doesn't work for standard Notepad.

Maybe it would if you found an old Win 98 version it might, as they will still run, even on Vista x64, and the Windows 3.0 Notepad still works on XP x86. Aside from a change in icon file, and the addition of Save as UTF-16 not much has changed with that, or many other Windows "Utilities" of such an age.

The AppLocale method may well work with many non-unicode plain text editors, and I'm sure there are other text editors which work, and which don't. Some have said they use Microsoft Word... I wouldn't recommend this, as Word likes to save files in Word format, regardless of how it read them, and only plain ANSI files will be read by the client or the server. PT won't read the text if EUC-KR ANSI code-page is translated to Unicode, and you can't see that in a Word processor. In fact, it's a Word document, not ANSI or Unicode while you edit, and the text encoding is only set when you save.

But they are correct, you can "save as" MS-DOS text file from Word, or from Wordpad... which can also set Hangul script while you edit.

--- EDIT ---
GetDiz
Just recently, and by pure chance I opened a Hotuk.ini with , (miss-click from "Open With") a tool I often install for reading FileID.diz or BBSHost.nfo files which are usually in OEM/DOS code-page, and expect that font, (not Windows Western European) mono-spaced, and in a light colour on dark background. (like a text mode console, which is where they where originally read) It's a perfectly capable text editor, as well as viewer though, and very lightweight.

With the following settings it displayed Hotuk.ini quite readably.
lVI2J - [Guide] Reading and editing Korean config files in their native language. - RaGEZONE Forums

Special case - OllyDebug
I've also just realised another one, which is outside "configuration files" but often crops up when people are trying to translate PT or work out what configuration does what.

People frequently complain they can't read the Korean in Olly... It's never really bothered me, because I just read it as Hex. But actually, Olly is quite capable of displaying Korean in it's dump, it just doesn't recognise non-Western text strings in it's disassembler. (so it doesn't see pointers to Korean strings and such)
bobsobol - [Guide] Reading and editing Korean config files in their native language. - RaGEZONE Forums
Just change a font you don't use much to "GulimChe", (or another Hangul font on your system) and set it's "script" to "Hangul". The options then shows "Charset: Other" which just means it's not one of the common scripts used for programming. No point bloating Olly with names of scripts that are only used in specific instances like this. :wink:

Oh yes... remember ANSI Hangul is a MBCS script (multi-byte character set) so the text corrupts when Olly forces a line break at 16 byte intervals... you can see more in ASCII mode, and you can use Ctrl + Up or Ctrl + Down to shift the dump display one byte forward or backward. :D:
---/EDIT ---

I'd love to hear your recommendations and experiences.
 

Attachments

You must be registered for see attachments list
Last edited:
Custom Title Activated
Loyal Member
Joined
May 26, 2007
Messages
5,545
Reaction score
1,315
At this point I'd like to add a note about posting here in other languages.

I like people to do this where appropriate. It's against the forums policy to make an entire post in any language other than English, but PT configuration files are usually either written in Korean or Japanese, so it doesn't make sense to list their code in some other code-page which may or may not translate properly, and certainly isn't readable in any other character set.

So write in English, but list code in the native language of that code file.

I also like it if people don't just use the result of a Google translation to post in English when they are not sufficiently skilled to make a human translation. Better that you post the Google translation and your native text below it. That way, when Google makes a complete mess of it, we can try another translator to see if we can make any sense of it.

The problem with this is that I know RZ has problems with many local languages stored in it's database. Chinese, Japanese and Korean seem to be fine, but I've seen legal (correctly typed) Brazilian Portuguese posts and Vietnamese posts get completely messed up.

It's not easy for me to illustrate this, but allowing the text to pass though usually involves removing accents from characters where possible.

What I can give is an example of some text I was just going to add to my Signature. One of the reasons I got to grips with this quite early on is that I have had dealings with coders who's native languages did not use latain script since before the Unicode was even considered. I have corresponded with coders in Russia when we were still developing for 8-bit systems, the iron curtain was fractured but still physically in place, and the Federation was not the Federation, but still the capitol of the ever decreasing Union of Soviet Socialist Republics. At university I studied Japanese... and failed, but I still learned a lot from doing it, and even before any of this I was fascinated by ancient Greek and the Nordic Runes... especially as their cousins the Angelo Saxon runes feature so prominently on much of the pre-historic structures around my home town, right up until, and into early Norman churches and chapels. Often prominently featuring representations of the Green Man of the Wood far more prominently than those of the saviour Christ.

Because I love the language of code, and all language is a code until it becomes native to you, I hoped to write the following for anyone to follow if they could be bothered to learn to read it.
bobsobol - [Guide] Reading and editing Korean config files in their native language. - RaGEZONE Forums
Sadly, when I tried to enter this text, the preview shows like this:-
bobsobol - [Guide] Reading and editing Korean config files in their native language. - RaGEZONE Forums

Unless I deliberatly reformat it wrong, by inserting spaces where there should be none like this:-
ᚦᛁᛋ᛫ᛁᛎ᛫ᛗᚨᚤ᛫ᛏᚱᛖᚹ᛫ ᚾᚪᛁᛗ᛬ᚨᛁ᛫ᚨᛗ᛫ ᛣᚨᛚᛞ᛫ ᛠ ᚱᛟᚾ᛫ᚻᚪᛣᛂᛏ᛬ᛗᚨᚱᚴ᛫ᛁ ᛏ ᛫ᚹᛖᛚ
Or wrap it in code tags like this:-
Code:
ᚦᛁᛋ᛫ᛁᛎ᛫ᛗᚨᚤ᛫ᛏᚱᛖᚹ᛫ᚾᚪᛁᛗ᛬ᚨᛁ᛫ᚨᛗ᛫ᛣᚨᛚᛞ᛫ᛠᚱᛟᚾ᛫ᚻᚪᛣᛂᛏ᛬ᛗᚨᚱᚴ᛫ᛁᛏ᛫ᚹᛖᛚ
Now... if you don't have a runic font installed (a font which supports the runic glyph set in the Unicode specification) or you are using a low end browser (something nice and small, like ) it may be that none of that shows as anything other than boxes or blobs. Runic (Norse, Angelo-Saxon, Tengwar, Wickan or any other form) is not supported by Windows, Mac or Linux "out of the box", though all these systems support Unicode, and True-Type fonts... which means you only need to install a font for them to support it. But even if you do, the Naud and Reid runes become question marks in inverse diamond shapes. It wasn't like that when I typed it, and it isn't like that until it is submitted to the database, grabbed back and displayed as HTML. I can display it as HTML on my own web-server, so it's not a limitation of the web or current html standards or even the browser I'm using either. It's a limitation on the method the Ragezone database uses to store characters.

I've tried to work with Mental (the site owner) on this, and he has done very well, all things considered. However, when the site transitioned from supporting only Western European to input in many ANSI code-pages, some posts where Korean or Japanese (or even Portuguese) was posted "wrong" have truncated those posts. The end of those posts is now lost forever, except where I or others have kept a backup.

So while I'd like you to post code and Google Translations to English in the most native language possible. If you are not using English for any part of your post... please check the preview, and the post carefully to see that nothing has been lost.

Thank you. :D:

BTW: My runic text is contemporary English, not Angelo-Saxon or Ancient Norse or anything else weird. It's modern contemporary British English, but written phonetically using the ancient Futhark instead of the modern Latin alphabet... Just as you would type Romanji to write Japanese using the Latin Alphabet. And that's already way more of a clue than I had originally intended to give any of you. :eek:tt1:
 
Last edited:
Custom Title Activated
Loyal Member
Joined
May 26, 2007
Messages
5,545
Reaction score
1,315
EN:
Thanks wormy. It's not easy to translate English to Vietnamese automatically. Which is another reason I was glad to see (what is basically) my guide in this language. :D:

VN:
Cảm ơn bạn. Dịch là khó khăn.
 
Last edited:
Custom Title Activated
Loyal Member
Joined
May 26, 2007
Messages
5,545
Reaction score
1,315
If we are to communicate successfully around the world, I think it is, yes. Thanks Ávila.
 
Last edited:
Back
Top