Translate Korean comments/strings to English; fix UTF-8 encoding across source tree
Korean translation (84 source files, 876 lines): - Translated all EUC-KR/CP949 Korean developer comments to English across 84 source files in Gameleap/code/. Zero Korean bytes remain outside the intentional font-table headers (D3FFontEdit2/fontedit all.h etc.). - Comment markers: //상훈 앞/뒤 -> //sanghoon begin/end (Sang-hun's code region markers); //상훈짱 begin/end, //상훈.. variants; // 鉉 -> // hyun (second developer's markers); // 鉉 - start/end patterns. - Functional string translations in recscore.cpp (mw4 + mw4print copies): body-part return values (왼발/오른발/etc. -> Left Leg/Right Leg/etc.), kill-announcer format strings (~30 entries), and the nonmfc.h assert dialog. - GosView profiler: 킪 -> us (microseconds) in timing display strings. - Network/socket code (ctcl.cpp, mugsocs.h, ctime.cpp across Launcher/ MW4Application/MW4GameEd2/AnimScript): state-machine comments, socket ID comments, login/session management comments. - render.hpp CHSH_Device member comments; GUIRadarManager.cpp drawing routine comments; hudchat/hudcomp2/huddamage/hudmap/hudweapon/hudtarg HUD component comments. - DXRasterizer.cpp: cleaned residual U+FFFD replacement characters left from a prior partial encoding conversion. UTF-8 encoding cleanup (76+ files): - Latin-1 single bytes converted to proper UTF-8 multi-byte sequences: © (0xA9) in 3dsmax4/Maxscrpt Autodesk/Wainwright copyright headers, ® (0xAE) in gosHelp/Remote.cpp, · (0xB7) bullet points in ai command.hpp, Û (0xDB) in SafeChain_Test.cpp tool header, ß (0xDF) in AnimationSuite version strings (8 files). - Font lookup tables (D3FFontEdit2/, fontedit/ *.h) intentionally left as-is: raw byte values are C array data, not text. Language DLL: - Replaced Gameleap/mw4/Language.dll (original Korean binary) and MW4/Language.dll with freshly built English version from Language - Win32 English config (Language.dsp). Fixes Korean button labels in the GameOS exception/crash dialog (??? ??... / ?? / ??? were showing instead of More Details.../Continue/Exit).
This commit is contained in:
@@ -1077,7 +1077,7 @@ int CStrArray::GetTotalLength() const
|
||||
int nTotalLength;
|
||||
int i, nSize = GetSize();
|
||||
|
||||
nTotalLength = nSize; // nSize개의 '\0'
|
||||
nTotalLength = nSize; // nSize null terminators '\0'
|
||||
for(i = 0; i < nSize; i++) {
|
||||
nTotalLength += strlen(GetAt(i));
|
||||
}
|
||||
|
||||
@@ -517,7 +517,7 @@ void CSOC_Server::OnSendFile()
|
||||
BYTE bCode;
|
||||
if (Disassemble("B", &bCode)) {
|
||||
ASSERT((bCode == 0) || (bCode == 3));
|
||||
// 받아가시오 from Game to console...
|
||||
// Receiving from Game to console...
|
||||
SYSTEMTIME* pSysTime;
|
||||
WORD wSysTimeSize;
|
||||
GUID* pGUID;
|
||||
@@ -533,7 +533,7 @@ void CSOC_Server::OnSendFile()
|
||||
pSF = g_pCTCLManager->m_SFM_Recv.Find(*pGUID, nType);
|
||||
if (pSF) {
|
||||
if (bCode == 3) {
|
||||
// 미션리뷰 서버가 mission review 받았다는 것을 받았느냐?
|
||||
// Did we receive confirmation the mission review server got the mission review?
|
||||
pSF->m_bProcessed = true;
|
||||
g_pCTCLManager->m_SFM_Recv.Cut(pSF);
|
||||
g_pCTCLManager->m_SFM_Done.AddTail(pSF);
|
||||
@@ -910,7 +910,7 @@ void CSOC_Client::OnSendFile()
|
||||
BYTE bCode;
|
||||
if (Disassemble("B", &bCode)) {
|
||||
ASSERT((bCode == 1) || (bCode == 2));
|
||||
// 받았오 from console to Game...
|
||||
// Received from console to Game...
|
||||
SYSTEMTIME* pSysTime;
|
||||
WORD wSysTimeSize;
|
||||
GUID* pGUID;
|
||||
@@ -1438,21 +1438,21 @@ void CCTCLManager::Run()
|
||||
#endif // !defined(CTCL_LAUNCHER)
|
||||
} else {
|
||||
/*
|
||||
클라이언트나 서버의 경우 실행되는 코드이다.
|
||||
Code executed for both client and server.
|
||||
|
||||
*있을수 있는 상태들
|
||||
서버/클라이언트가 결정되기전.. 명령 대기상태
|
||||
(종료/서버시작/클라이언트 시작등의 명령이 올수 있다.)
|
||||
*Possible states:
|
||||
Before server/client role is determined: waiting for commands
|
||||
(Commands such as exit/start-server/start-client may arrive.)
|
||||
|
||||
서버로 실행되어 서버 메크 설정에 대한 데이타를 기다리는 상태
|
||||
(CreateSession가 실행된 상태이다.)
|
||||
서버로 실행되어 Bot들에 대한 정보를 기다리는 상태
|
||||
(클라이언트의 참여는 클라이언트와 서버간에 자동으로 이루어진다.)
|
||||
서버로 실행되어 Launch를 기다리는 상태
|
||||
Running as server, waiting for server mech configuration data
|
||||
(State after CreateSession has been called.)
|
||||
Running as server, waiting for Bot information
|
||||
(Client joining happens automatically between client and server.)
|
||||
Running as server, waiting for Launch
|
||||
|
||||
==>클라이언트는 실행즉시 데이타들이 전달되므로 대기상태가 없다.
|
||||
==>Client has no waiting state as data is transferred immediately on startup.
|
||||
|
||||
==>각각의 상태를 정의하고 각 상태에 맞는 처리를 해주면 된다.
|
||||
==>Define each state and implement the appropriate handling for each.
|
||||
switch(state){
|
||||
}
|
||||
*/
|
||||
@@ -1534,8 +1534,8 @@ void CCTCLManager::DoMech4Comm()
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
//서버/클라이언트로서 실행준비하도록 명령을 전달한다.
|
||||
//또한 서버를 실행하는데 필요한 모든 파라미터도 함께 전달한다.
|
||||
//Send command to prepare for execution as server/client.
|
||||
//Also transmit all parameters required to run the server.
|
||||
for(i = 0; i < g_nPlayerInfos; i++) {
|
||||
SPlayerInfo& pi = g_aPlayerInfos[i];
|
||||
if (!pi.m_bBot) {
|
||||
@@ -1562,12 +1562,12 @@ void CCTCLManager::DoMech4Comm()
|
||||
}
|
||||
}
|
||||
if (i == g_nPlayerInfos) {
|
||||
// Bot들에 대한 정보를 모두 한데 묶어서 보낸다.
|
||||
// Bundle and send all Bot information together.
|
||||
CPacket pak(&SVR.GetGameSOC());
|
||||
|
||||
pak.Assemble("B", C_BOTS);
|
||||
for(i = 0; i < g_nPlayerInfos; i++) {
|
||||
if (i != g_nServer) { // 원래 Bot만 지금은 서버를 제외한 전부...
|
||||
if (i != g_nServer) { // Originally bots only; now everyone except the server...
|
||||
SPlayerInfo& pi = g_aPlayerInfos[i];
|
||||
pak.Assemble("BnsDWwsnn", pi.m_bBot, pi.m_nLevelOrTesla, pi.m_szName, pi.m_nMechIndex, pi.m_fileID, pi.m_recordID, pi.m_szMech, pi.m_nTeamOrSkin, pi.m_nDecal);
|
||||
}
|
||||
@@ -1578,10 +1578,10 @@ void CCTCLManager::DoMech4Comm()
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
// 게임이 성공적으로 만들어지면 서버와 클라이언트들의 Mech에 대한 정보들을 Set한다...
|
||||
// Once the game is successfully created, set Mech info for server and all clients...
|
||||
if (SOCGame.m_nGameReturn == _EGR_OkCreateSession) {
|
||||
for(i = 0; i < g_nPlayerInfos; i++) {
|
||||
if (i != g_nServer) { // 서버는 이미 SetMech에 진입한 상태...
|
||||
if (i != g_nServer) { // Server has already entered SetMech...
|
||||
SPlayerInfo& pi = g_aPlayerInfos[i];
|
||||
if (!pi.m_bBot) {
|
||||
CTeslaInfo& ti = m_aTIs.GetAt(pi.m_nLevelOrTesla);
|
||||
@@ -1594,8 +1594,8 @@ void CCTCLManager::DoMech4Comm()
|
||||
}
|
||||
break;
|
||||
case 6:
|
||||
//모든 클라이언드들이 서버에 참여하기를 기다린다.<==이 응답은 서버로 부터 얻을 수 있다.
|
||||
//참여가 모두 끝났으면, 서버로 하여금 게임을 Launch시키도록 한다.
|
||||
//Wait for all clients to join the server. <==This response comes from the server.
|
||||
//Once all clients have joined, instruct the server to Launch the game.
|
||||
if (SOCGame.m_nGameReturn == _EGR_OkLaunchReady) {
|
||||
g_nMech4Comm = 9;
|
||||
}
|
||||
|
||||
@@ -42,7 +42,7 @@ public:
|
||||
const char* m_pcsz;
|
||||
|
||||
int m_nLauncherConnection; // 0: no connection, +1: connection, -1: connecting
|
||||
int m_nConnection2; // m_bCameraShip값에 따라 게임 혹은 카메라 쉽과의 접속을 의미, 0: no connection, +1: connection, -1: connecting
|
||||
int m_nConnection2; // Connection to game or camera ship per m_bCameraShip, 0: no connection, +1: connected, -1: connecting
|
||||
int m_nApplType;
|
||||
int m_nApplState;
|
||||
int m_nGameState;
|
||||
|
||||
@@ -44,7 +44,7 @@ int GetDayEnd(int nYear, int nMonth)
|
||||
|
||||
long GetTotalSeconds(int nYear, int nMonth, int nDay)
|
||||
{
|
||||
// nYear, nMonth, nDay날의 0시 0분 0초를 0으로 한 초단위 수...
|
||||
// Seconds elapsed since 00:00:00 on the date nYear/nMonth/nDay...
|
||||
ASSERT(nYear >= 1970);
|
||||
ASSERT((1 <= nMonth) && (nMonth <= 12));
|
||||
ASSERT(1 <= nDay);
|
||||
@@ -57,13 +57,13 @@ long GetTotalSeconds(int nYear, int nMonth, int nDay)
|
||||
if (IsLeapYear(nStart)) {
|
||||
nDays++;
|
||||
}
|
||||
lTotal += nDays * 24 * 60 * 60; // 24시간 60분 60초
|
||||
lTotal += nDays * 24 * 60 * 60; // 24 hours * 60 min * 60 sec
|
||||
}
|
||||
for(nStart = 1; nStart < nMonth; nStart++) {
|
||||
int nDayEnd = GetDayEnd(nYear, nStart);
|
||||
lTotal += nDayEnd * 24 * 60 * 60; // 24시간 60분 60초
|
||||
lTotal += nDayEnd * 24 * 60 * 60; // 24 hours * 60 min * 60 sec
|
||||
}
|
||||
lTotal += (nDay - 1) * 24 * 60 * 60; // 24시간 60분 60초
|
||||
lTotal += (nDay - 1) * 24 * 60 * 60; // 24 hours * 60 min * 60 sec
|
||||
|
||||
return lTotal;
|
||||
}
|
||||
|
||||
@@ -16,7 +16,7 @@ class CTimeDate
|
||||
public:
|
||||
union {
|
||||
struct {
|
||||
// Bit Field는 앞쪽에 지정된 것이 LowBit이다.
|
||||
// Bit Fields declared first are at the low-bit end.
|
||||
DWORD m_xDay: 5; // 2^0, 2^5-1
|
||||
DWORD m_xMonth: 4; // 2^5, 2^4-1
|
||||
DWORD m_xYear: TIMEDATE_YEAR_BITS; // from 1900-2155 // 2^9, 2^8-1
|
||||
|
||||
@@ -1375,7 +1375,7 @@ void CSockAddr::SetTarget(const char* pcszAddr)
|
||||
{
|
||||
if (pcszAddr) {
|
||||
sin_addr.s_addr = inet_addr(pcszAddr);
|
||||
if (sin_addr.s_addr == INADDR_ANY) { // 0.0.0.0이기 때문에 HOST/Network Addr무관
|
||||
if (sin_addr.s_addr == INADDR_ANY) { // 0.0.0.0, HOST/Network Addr irrelevant
|
||||
hostent* pHN = gethostbyname(pcszAddr);
|
||||
if (pHN) {
|
||||
sin_addr.s_addr = *(u_long*)pHN->h_addr;
|
||||
@@ -3667,7 +3667,7 @@ CSOCListen* CSOCManager::DoListen(int nPort, PFN_CreateSOCClient pfnCSC, DWORD d
|
||||
pSOCListen = new CSOCListen(nPort);
|
||||
pSOCListen->SetCSCParam(pfnCSC, dwCSCParam1, dwCSCParam2);
|
||||
if (!DoListen(pSOCListen, nPort)) {
|
||||
// 같은 포트를 2번 Listen 하는 경우?...
|
||||
// Case of Listen on the same port twice?...
|
||||
pSOCListen = NULL;
|
||||
}
|
||||
|
||||
|
||||
@@ -41,7 +41,7 @@ extern char SERVERID[];
|
||||
#endif // !MAX_PACKET
|
||||
#ifndef MAX_FTPBUF
|
||||
#define MAX_FTPBUF 1024
|
||||
// MAX_FTPBUF는 MAX_PACKET보다 반드시 작아야 한다?
|
||||
// MAX_FTPBUF must be smaller than MAX_PACKET?
|
||||
// 9+size==sizeof(bCmd) + sizeof(FTID) + sizeof(size) + size
|
||||
#endif // !MAX_FTPBUF
|
||||
|
||||
@@ -251,7 +251,7 @@ private:
|
||||
|
||||
#define ESTRF_USER_START 100
|
||||
|
||||
#define ESTRF_PASSWORDCHANGED 110 // 로그인하고 있는 동안에 패스워드가 바뀜
|
||||
#define ESTRF_PASSWORDCHANGED 110 // Password changed while logged in
|
||||
|
||||
void Randomize();
|
||||
|
||||
@@ -268,7 +268,7 @@ union UPacketValue
|
||||
|
||||
class CDAPacket : public SOCBase_Class
|
||||
{
|
||||
// Packet의 앞 부분을 처리하고 난 뒷 부분의 가변 파라미터...
|
||||
// Variable parameters in the tail portion after processing the packet header...
|
||||
public:
|
||||
BYTE m_bCmd;
|
||||
BYTE m_bReserved;
|
||||
@@ -361,8 +361,8 @@ public:
|
||||
#define C_ROOM_MAKE 232
|
||||
// s - name, s - password
|
||||
#define C_ROOM_JOIN 233
|
||||
// d - number(Room을 떠나는 것은 -1), s - password
|
||||
#define S_ROOM_JOIN 233 // C_ROOM_MAKE/C_ROOM_JOIN의 결과...
|
||||
// d - number (leaving a Room = -1), s - password
|
||||
#define S_ROOM_JOIN 233 // Result of C_ROOM_MAKE/C_ROOM_JOIN...
|
||||
// b - code(CSCODE_OK or error code), d - number
|
||||
#define C_ROOM_UPDS 234 // CSCODE_... + @
|
||||
|
||||
@@ -384,13 +384,13 @@ public:
|
||||
#define S_FTP 254 //... see ftp.txt
|
||||
#define X_KEEPALIVE 255 // no parameters, should be ignored...
|
||||
|
||||
#define TX_SYSTEM 0 // 시스템 메시지...
|
||||
#define TX_NORMAL 1 // 일반 채팅 텍스트
|
||||
#define TX_WARNING 2 // 경고
|
||||
#define TX_ERROR 3 // 오류
|
||||
#define TX_FATAL 4 // 치명적인 오류
|
||||
#define TX_INFO 5 // 사용자 정보 등의 Information Result...
|
||||
#define TX_SAY 6 // 귓속말
|
||||
#define TX_SYSTEM 0 // System message...
|
||||
#define TX_NORMAL 1 // Regular chat text
|
||||
#define TX_WARNING 2 // Warning
|
||||
#define TX_ERROR 3 // Error
|
||||
#define TX_FATAL 4 // Fatal error
|
||||
#define TX_INFO 5 // Information result (e.g. user info)...
|
||||
#define TX_SAY 6 // Whisper
|
||||
#define TX_LOCAL 7 // local echo....
|
||||
#define TX_UNKNOWN 0xffff // unknown...
|
||||
|
||||
@@ -493,7 +493,7 @@ CPacket
|
||||
protected:
|
||||
CSOC* m_pSOC;
|
||||
private:
|
||||
// 이 안의 블럭은 반드시 연속해야 한다...
|
||||
// The block within must be contiguous...
|
||||
WORD m_wLen;
|
||||
BYTE m_ba[MAX_PACKET];
|
||||
//
|
||||
@@ -587,7 +587,7 @@ end of variable PACKET_MAP definitions...
|
||||
class CFileTransfer : public TDBLNK(CFileTransfer*)
|
||||
{
|
||||
public:
|
||||
// 서버로 부터 받은 정보... - 혹은 클라이언트에게 전해줄 정보...
|
||||
// Information received from server... - or information to relay to client...
|
||||
BOOL m_bClientSite;
|
||||
DWORD m_dwFTID;
|
||||
DWORD m_dwGUARD;
|
||||
@@ -680,18 +680,18 @@ protected:
|
||||
// time out to Drop...
|
||||
DWORD m_dwKARcvTimeOut;
|
||||
#ifdef WIN32
|
||||
// 보통 Login과정에 쓰이는 윈도우 핸들
|
||||
// Window handle typically used during Login process
|
||||
HWND m_hWndOwner;
|
||||
#endif // WIN32
|
||||
// 보통 글로벌 변수로 쓰이는 소켓포인터에 대한 자동 NULL Assign을 위하여
|
||||
// For auto NULL assignment of socket pointer typically used as a global variable
|
||||
PSOC* m_ppSOC;
|
||||
// 소켓을 구분하기 위하여 사용자 프로그램에서 쓰이는 아이디
|
||||
// 주로 서버의 경우에는 클라이언트가 접속할 때마다 고유 아이디를 부여하여 사용
|
||||
// 하나의 Client가 다수의 서버에 접속할 때(주로 Star형) 각각의 접속을 구분할 때 사용
|
||||
// 클라이언트가 하나의 서버에만 접속하는 경우 클라이언트가 서버에 접속 중인지 혹은 접속했는지를 판단할 때
|
||||
// CSOCManager::FindSOC(CSOC_SERVER_ID==default)->GetConnectionState()를 사용.
|
||||
// limits.h를 include해야함.
|
||||
// CSOC생성시의 기본값: CSOCServer == CSOC_SERVER_ID(=INT_MIN), CSOCClient == CSOC_CLIENT_ID(=0), CSOCListen == CSOC_LISTEN_ID(=-1)
|
||||
// ID used in user program to identify a socket
|
||||
// Mainly for servers: assigns a unique ID each time a client connects
|
||||
// Used to distinguish each connection when a client connects to multiple servers (Star topology)
|
||||
// When a client connects to only one server: used to check if client is connecting or already connected
|
||||
// Use CSOCManager::FindSOC(CSOC_SERVER_ID==default)->GetConnectionState().
|
||||
// Must include limits.h.
|
||||
// Default values at CSOC creation: CSOCServer==CSOC_SERVER_ID(INT_MIN), CSOCClient==CSOC_CLIENT_ID(0), CSOCListen==CSOC_LISTEN_ID(-1)
|
||||
union {
|
||||
int m_nID;
|
||||
UINT m_uID;
|
||||
@@ -725,8 +725,8 @@ protected:
|
||||
DWORD m_xGracefulRemote: 1;
|
||||
DWORD m_xAbortyLocal: 1;
|
||||
DWORD m_xAbortyRemote: 1;
|
||||
DWORD m_xLoginStarted: 1; // 사용자가 직접 값을 Setting해야 한다.
|
||||
DWORD m_xLoginOK: 1; // 사용자가 직접 값을 Setting해야 한다.
|
||||
DWORD m_xLoginStarted: 1; // Must be set directly by the caller.
|
||||
DWORD m_xLoginOK: 1; // Must be set directly by the caller.
|
||||
} m_DW;
|
||||
DWORD m_dwVarFlags;
|
||||
};
|
||||
|
||||
@@ -6,7 +6,7 @@ inline BOOL AssertDialog(const char* pcszExpr, const char* pcszfile, int nLine)
|
||||
{
|
||||
char szBuf[MAX_PATH * 2];
|
||||
|
||||
sprintf(szBuf, "\"%s\" 파일의 %d줄에서 ASSERT!!!\n\n디버깅을 하시겠습니까?", pcszfile, nLine);
|
||||
sprintf(szBuf, "ASSERT!!! in \"%s\" at line %d\n\nDo you want to debug?", pcszfile, nLine);
|
||||
|
||||
#ifdef WIN32
|
||||
return ::MessageBox(NULL, szBuf, pcszExpr, MB_YESNO) == IDYES;
|
||||
|
||||
Reference in New Issue
Block a user