L10n/chinese phase 1 (#47)

L10N on some dialogs .
This commit is contained in:
Zero Fanker 2024-06-21 22:39:02 -04:00 committed by GitHub
parent 364a6376d4
commit 6c7cf1478f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
15 changed files with 2748 additions and 2528 deletions

View file

@ -113,13 +113,19 @@ void CMapD::OnEditchangeTheater()
void CMapD::UpdateStrings()
{
CString curCaption;
GetWindowText(curCaption);
SetWindowText(TranslateStringACP(curCaption));
GetDlgItem(IDC_DESC)->SetWindowText(GetLanguageStringACP("MapDesc"));
GetDlgItem(IDC_SIZEFRAME)->SetWindowText(GetLanguageStringACP("MapSizeFrame"));
GetDlgItem(IDC_LSIZE)->SetWindowText(GetLanguageStringACP("MapSize"));
GetDlgItem(IDC_USEABLEFRAME)->SetWindowText(GetLanguageStringACP("MapVisibleSizeFrame"));
GetDlgItem(IDC_LUSEABLE)->SetWindowText(GetLanguageStringACP("MapVisibleSize"));
GetDlgItem(IDC_LTHEATER)->SetWindowText(GetLanguageStringACP("MapTheater"));
GetDlgItem(IDC_MAP_D_WIDTH)->SetWindowText(GetLanguageStringACP("MapWidth"));
GetDlgItem(IDC_MAP_D_HEIGHT)->SetWindowText(GetLanguageStringACP("MapHeight"));
GetDlgItem(IDC_CHANGELOCAL)->SetWindowText(GetLanguageStringACP("MapChange"));
GetDlgItem(IDC_CHANGE)->SetWindowText(GetLanguageStringACP("MapChange"));
}
void CMapD::OnChangelocal()

File diff suppressed because it is too large Load diff

View file

@ -262,6 +262,24 @@ CScriptTypes::~CScriptTypes()
{
}
void CScriptTypes::UpdateStrings()
{
TranslateDlgItem(*this, IDC_ADD, "ScriptTypesAddScript");
TranslateDlgItem(*this, IDC_DELETE, "ScriptTypesDelScript");
TranslateDlgItem(*this, IDC_SCTIPTTYPE_INRO, "ScriptTypesDesc");
TranslateDlgItem(*this, IDC_SCRIPTTYPE_TYPE, "ScriptTypesSelectedScript");
TranslateDlgItem(*this, IDC_SCRIPTTYPE_NAME, "ScriptTypesName");
TranslateDlgItem(*this, IDC_SCRIPTTYPE_ACTIONS, "ScriptTypesActions");
TranslateDlgItem(*this, IDC_SCRIPTTYPE_ACTIONTYPE, "ScriptTypesActionType");
TranslateDlgItem(*this, IDC_PDESC, "ScriptTypesActionParam");
TranslateDlgItem(*this, IDC_SCRIPTTYPE_DESC, "ScriptTypesActionDesc");
TranslateDlgItem(*this, IDC_ADDACTION, "ScriptTypesAddAction");
TranslateDlgItem(*this, IDC_DELETEACTION, "ScriptTypesDelAction");
TranslateWindowCaption(*this, "ScriptsCaption");
}
void CScriptTypes::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
@ -715,6 +733,8 @@ BOOL CScriptTypes::OnInitDialog()
{
CDialog::OnInitDialog();
UpdateStrings();
while (m_Type.DeleteString(0) != CB_ERR);

View file

@ -51,14 +51,13 @@ public:
CListBox m_Action;
CString m_Name;
//}}AFX_DATA
// Überschreibungen
// Der Klassen-Assistent generiert virtuelle Funktionsüberschreibungen
//{{AFX_VIRTUAL(CScriptTypes)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV-Unterstützung
//}}AFX_VIRTUAL
void UpdateStrings();
// Implementierung
protected:

View file

@ -69,29 +69,18 @@ END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// Behandlungsroutinen für Nachrichten CTerrainDlg
void CTerrainDlg::OnOK()
{
// stub
}
void CTerrainDlg::OnCancel()
{
DestroyWindow();
}
BOOL CTerrainDlg::OnInitDialog()
{
//CDialogBar::OnInitDialog();
return FALSE;
}
void CTerrainDlg::PostNcDestroy()
{
//delete this;
//CDialog::PostNcDestroy();
}
void CTerrainDlg::TranslateUI()
{
TranslateDlgItem(*this, IDD_TERRAINBAR_TG, "TerrainDlgTerrainGround");
TranslateDlgItem(*this, IDD_TERRAINBAR_OS, "TerrainDlgOverlaySpecial");
}
void CTerrainDlg::OnSelchangeTileset()
{
//while(m_Type.DeleteString(0)!=CB_ERR);

View file

@ -42,7 +42,7 @@ public:
//{{AFX_DATA(CTerrainDlg)
enum { IDD = IDD_TERRAINBAR };
//}}AFX_DATA
void TranslateUI();
// Überschreibungen
// Vom Klassen-Assistenten generierte virtuelle Funktionsüberschreibungen
@ -59,9 +59,6 @@ protected:
// Generierte Nachrichtenzuordnungsfunktionen
//{{AFX_MSG(CTerrainDlg)
virtual void OnOK();
virtual void OnCancel();
virtual BOOL OnInitDialog();
afx_msg void OnSelchangeTileset();
afx_msg void OnSelchangeOverlay();
//}}AFX_MSG

View file

@ -65,6 +65,7 @@ void CTileSetBrowserFrame::PostNcDestroy()
BOOL CTileSetBrowserFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
{
((CDialogBar*)&m_bar)->Create(this, IDD_TERRAINBAR, CBRS_TOP, 5);
m_bar.TranslateUI();
m_bar.ShowWindow(SW_SHOW);
CRect r;
GetClientRect(r);

View file

@ -27,6 +27,7 @@
#include "FinalSunDlg.h"
#include "mapdata.h"
#include "variables.h"
#include "functions.h"
#ifdef _DEBUG
#define new DEBUG_NEW
@ -68,6 +69,11 @@ END_MESSAGE_MAP()
void CToolSettingsBar::TranslateUI()
{
TranslateDlgItem(*this, IDC_STATIC, "ToolSettingsBarBrushSize");
}
void CToolSettingsBar::OnSelchangeBrushsize()
{
@ -122,19 +128,23 @@ void CToolSettingsBar::OnSelchangeBrushsize()
((CFinalSunDlg*)theApp.m_pMainWnd)->m_view.m_isoview->m_BrushSize_y = by;
}
BOOL CToolSettingsBar::OnInitDialog()
// never called
#if 0
void CToolSettingsBar::OnInitialUpdate()
{
CDialogBar::OnInitialUpdate();
m_BrushSize = 0;
UpdateData(FALSE);
((CComboBox*)GetDlgItem(IDC_BRUSHSIZE))->SetCurSel(0);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX-Eigenschaftenseiten sollten FALSE zurückgeben
}
#endif
void CToolSettingsBar::OnShowWindow(BOOL bShow, UINT nStatus)
{
TranslateUI();
CDialogBar::OnShowWindow(bShow, nStatus);
UpdateData(FALSE);

View file

@ -52,11 +52,14 @@ protected:
// Implementierung
protected:
void TranslateUI();
// Generierte Nachrichtenzuordnungsfunktionen
//{{AFX_MSG(CToolSettingsBar)
afx_msg void OnSelchangeBrushsize();
virtual BOOL OnInitDialog();
#if 0
afx_msg void OnInitialUpdate();
#endif
afx_msg void OnShowWindow(BOOL bShow, UINT nStatus);
//}}AFX_MSG
DECLARE_MESSAGE_MAP()

View file

@ -91,6 +91,15 @@ BOOL CTriggerEditorDlg::OnInitDialog()
{
CDialog::OnInitDialog();
CString curCaption;
GetWindowText(curCaption);
SetWindowText(TranslateStringACP(curCaption));
SetDlgItemText(IDC_STATIC, GetLanguageStringACP("TriggerDesc"));
SetDlgItemText(IDC_NEWTRIGGER, GetLanguageStringACP("TriggerNew"));
SetDlgItemText(IDC_DELETETRIGGER, GetLanguageStringACP("TriggerDelete"));
SetDlgItemText(IDC_PLACEONMAP, GetLanguageStringACP("TriggerPlaceOnMap"));
SetDlgItemText(IDC_CLONE, GetLanguageStringACP("TriggerClone"));
m_tab.InsertItem(0, TranslateStringACP("Trigger options"));
m_tab.InsertItem(1, TranslateStringACP("Events"));
m_tab.InsertItem(2, TranslateStringACP("Actions"));

View file

@ -280,6 +280,12 @@ BOOL CTriggerOptionsDlg::OnInitDialog()
{
CDialog::OnInitDialog();
{
SetDlgItemText(IDC_TRIGGER_OPTION_TYPE_STR, GetLanguageStringACP("TriggerOptionType"));
SetDlgItemText(IDC_TRIGGER_OPTION_NAME, GetLanguageStringACP("TriggerOptionName"));
SetDlgItemText(IDC_TRIGGER_OPTION_HOUSE, GetLanguageStringACP("TriggerOptionHouse"));
SetDlgItemText(IDC_TRIGGER_OPTION_ATTACHED_TRIGGER, GetLanguageStringACP("TriggerOptionAttachedTrigger"));
SetDlgItemText(IDC_TRIGGER_OPTION_TRIGGER_DIS_TIP, GetLanguageStringACP("TriggerOptionDisableTip"));
m_tooltip.Create(this);
m_tooltip.Activate(TRUE);
m_tooltip.AddTool(GetDlgItem(IDC_HOUSE), GetLanguageStringACP("TT_TriggerHouse"));

View file

@ -510,6 +510,12 @@ SAVEDLG_FILETYPES=TS maps|*.mpr%8*.map|TS multi maps|*.mpr|TS single maps|*.map|
; tool tip strings
TT_TriggerHouse=Defines the house the trigger applies to
Undo=Undo (Ctrl+Z)
Redo=Redo (Ctrl+Y)
Copy=Copy (Ctrl+C)
Paste=Paste (Ctrl+V)
Manual=Manual (F1)
; error strings for map validation
MV_NoMap=This is no map
MV_NoBasic=Basic settings don´t exist
@ -1110,7 +1116,78 @@ CG_IDP_FILE_CORRUPT=提示文件语法错误
TipDialogNext=下一提示
TipDialogShowAtStartup=启动时显示
TipDialogClose=关闭
TipDialogCaption=每日一贴
TipDialogCaption=您知道吗
; menu strings
File=文件
New=新建 Ctrl + N
Open=打开 Ctrl + O
Save=保存 Ctrl + S
Save as=另存为
Check map=检查错误
Quit=关闭程序
Edit=编辑
Undo Ctrl+Z=撤销 Ctrl + Z
Redo Ctrl+Y=重做 Ctrl + Y
Manual F1=帮助菜单 F1
Copy Ctrl+C=复制 Ctrl + C
Copy whole map=复制整张地图
Paste Ctrl+V=粘贴 Ctrl + V
Paste centered=居中粘贴
Map=地图属性
Basic=基础设置
Special flags=特殊设置
Lighting=光照设置
Singleplayer settings=单人模式设置
Houses=参战方设置
Local variables (Locals)=局部变量设置
Trigger editor=事件触发
Tag editor=触发标签
Scripts=小队脚本
Taskforces=成员组
Teams=小队选项
AI Triggers=AI触发
AI Trigger enabling=AI触发允许清单
INI editing=地图INI规则
Terrain=地形
Raise ground=抬升地表
Lower ground=降低地表
Flatten ground=自动平整地表
Hide tileset=隐藏关联地形块
Show every tileset=显示关联地形块
Hide single field=隐藏单元格
Show all fields=显示全部地形块
Raise single tile (Be careful!)=抬升单个单元格(谨慎!)
Lower single tile (Be careful!)=降低单个单元格(谨慎!)
ToolSettingsBarBrushSize=笔刷尺寸:
Map tools=工具
Change map height=修改地表高度
Autocreate shores=自动生成海岸线
Auto level using cliffs=自动调整悬崖地表高度
Paint cliff front=绘制悬崖前部
Paint cliff back=绘制悬崖后部
Search Waypoint=查找路径点
Tool Scripts=工具脚本
Options=选项
Settings=设置
Show minimap=显示缩略地图
Easy mode=精简模式
Sounds=开启音效
Show Building Outline=显示建筑轮廓
Disable AutoShore CTRL-A=禁止自动产生海岸 Ctrl + A
Disable AutoLat CTRL-L=禁止自动地表交界 Ctrl + A
Disable Slope Correction=禁用斜坡修正
Smooth zoom=平滑缩放
Use default mouse cursor=使用默认鼠标指针
Help=帮助
Info=关于
Tip of the day=每日提示
Show logs=查看日志
; main dialog strings
MainDialogCaption=%9
@ -1188,12 +1265,16 @@ BasicInitTime=初始化时间:
BasicAddOnNeeded=附加数据:
; mapinfo dialog
Map Properties=地图属性
MapDesc=通用地图属性:
MapSizeFrame=地图尺寸
MapSize=整个地图的尺寸,由 MapPack 使用。
MapVisibleSizeFrame=可见区域
MapVisibleSize=地图的可见区域。格式:左, 上, 宽, 高。
MapTheater=地图类型:
MapWidth=宽度:
MapHeight=高度:
MapChange=应用更改
; singleplayer basics dialog
SingleplayerDesc=单人地图的附加设置。
@ -1211,6 +1292,7 @@ SingleplayerPostScore=评分屏之后:
SingleplayerPreMapSelect=预地图选择:
; houses dialog
Countries=参战方
HousesDesc=参战方(国家)指不同的游戏者AI和人类。如果是多人地图在这里不要建立任何参战方如果是单人地图并且未设置参战方首先单击[标准参战方],如果需要可添加新参战方,然后选择人类玩家的参战方(不要忘记选中[游戏者控制])
HousesPlayerHouse=人类玩家参战方:
HousesHouse=当前参战方:
@ -1249,6 +1331,33 @@ LoadInitDDraw=初始化 Direct Draw 6 ...
LoadInitPics=正在载入图像...
LoadExtractStdMixFiles=正在打开 std.mix 文件(可能需要一些时间)
; trigger editor
TriggerDesc=选择当前触发:
TriggerName=nam
TriggerNew=新建
TriggerPlaceOnMap=放置单元标记
TriggerClone=复制
TriggerDelete=删除
TriggerOptionType=类型(会同步至全部关联标记)
TriggerOptionName=名称:
TriggerOptionHouse=所属方:
TriggerOptionAttachedTrigger=关联的触发
TriggerOptionDisableTip=被禁止的触发必须由其它触发激活后才能继续运作
; team scripts
ScriptTypesAddScript=添加
ScriptTypesDelScript=删除
ScriptsCaption=小队脚本
ScriptTypesDesc=脚本类型允许你定义如一作战小队从一个路径点移动到另一路径点。一个脚本类型与小队类型相关联(不是特遣部队!)\n欲应用模板请在下拉列表里选中一个预置模板然后点击“新建”。\n如果预置列表里啥都没有可以点击“刷新”以重新载入。
ScriptTypesSelectedScript=脚本类型:
ScriptTypesName=名称:
ScriptTypesActions=行为:
ScriptTypesActionType=行为类型:
ScriptTypesActionParam=行为参数:
ScriptTypesAddAction=添加
ScriptTypesDelAction=删除
ScriptTypesActionDesc=说明:
; iso view
IsoCaption=地图视图
@ -1398,46 +1507,6 @@ InfP5=允许AI重组::
; Now some translations from english to the used language (used for some combo-boxes, menus/listviews and of course unit names)
; currently used for: menu, iso-view status bar, unit/building/stuff list, overlay browser, terrain browser
; FA2:YR
FinalAlert 2(tm) Fansite link=%9 Fansite link
FinalAlert 2(tm) Forum=%9 Forum
[English-TranslationsRA2]
Tiberium=Ore
Run Tiberian Sun=Run Red Alert 2
Tiberium Tree=Ore mine
Countries=Houses; For the edit->houses dialog
FinalSun Homepage=FinalAlert Homepage
FinalSun support forum=FinalAlert support forum
AutoCreate shores=Automatically create shore (AutoShore)
Tiberium (Blue)=Ore
Tiberium (Green)=Ore
[English-Translations]
; tooltips
Make terrain flat=Flatten ground
Raise a single tile=Raise single field (Not recommended!)
Lower a single tile=Lower single field (Not recommended!)
AutoCreate shores=Automatically create shore (only supported in FinalAlert)
Autocreate shores=Automatically create shore (AutoShore)
AutoLevel terrain height using cliffs=AutoLevel ground height using cliffs
Auto level using cliffs=AutoLevel ground height using cliffs
; other
Bridge 1=Bridge topleft-bottomright
Bridge 2=Bridge bottomleft-topright
Railroad Bridge 1=Railroad bridge topleft-bottomright
Railroad Bridge 2=Railroad bridge bottomleft-topright
Wood Bridge 1=Wood bridge topleft-bottomright
Wood Bridge 2=Wood bridge bottomleft-topright
Easy mode=Beginner mode
; FA2:YR
FinalAlert 2(tm) Fansite link=%9 Fansite link
FinalAlert 2(tm) Forum=%9 Forum
[Chinese-TranslationsRA2]
Tiberium=矿石
Run Tiberian Sun=运行尤里的复仇
Tiberium Tree=矿井
@ -1448,15 +1517,19 @@ AutoCreate shores=自动建立海滨(自动海滨)
Tiberium (Blue)=蓝色矿石
Tiberium (Green)=绿色矿石
[Chinese-Translations]
; tooltips
Heighten ground (slope logic)=抬高地块(自动斜坡)
Lower ground (slope logic)=降低地块(自动斜坡)
Show all tilesets=显示所有隐藏地块
Switch Framework Mode=切换框架模式显示
Make terrain flat=平整地面
Raise a single tile=升高单个区域(不推荐)
Lower a single tile=降低单个区域(不推荐)
AutoCreate shores=自动建立海岸线(只在 FinalAlert 中支持)
Autocreate shores=自动建立海岸(自动海岸)
Autocreate shores=自动产生海岸
AutoLevel terrain height using cliffs=自动调整设置悬崖的地表高度
Auto level using cliffs=自动调整设置悬崖的地表高度
TerrainDlgTerrainGround=地形/地表:
TerrainDlgOverlaySpecial=覆盖物/特殊:
; other
Bridge 1=桥梁 左上-右下
@ -1850,6 +1923,46 @@ Vehicles=机动部队
Factories=工厂
Base defenses=防御类建筑
; FA2:YR
FinalAlert 2(tm) Fansite link=%9 Fansite link
FinalAlert 2(tm) Forum=%9 Forum
[English-TranslationsRA2]
Tiberium=Ore
Run Tiberian Sun=Run Red Alert 2
Tiberium Tree=Ore mine
Countries=Houses; For the edit->houses dialog
FinalSun Homepage=FinalAlert Homepage
FinalSun support forum=FinalAlert support forum
AutoCreate shores=Automatically create shore (AutoShore)
Tiberium (Blue)=Ore
Tiberium (Green)=Ore
[English-Translations]
; tooltips
Make terrain flat=Flatten ground
Raise a single tile=Raise single field (Not recommended!)
Lower a single tile=Lower single field (Not recommended!)
AutoCreate shores=Automatically create shore (only supported in FinalAlert)
Autocreate shores=Automatically create shore (AutoShore)
AutoLevel terrain height using cliffs=AutoLevel ground height using cliffs
Auto level using cliffs=AutoLevel ground height using cliffs
; other
Bridge 1=Bridge topleft-bottomright
Bridge 2=Bridge bottomleft-topright
Railroad Bridge 1=Railroad bridge topleft-bottomright
Railroad Bridge 2=Railroad bridge bottomleft-topright
Wood Bridge 1=Wood bridge topleft-bottomright
Wood Bridge 2=Wood bridge bottomleft-topright
Easy mode=Beginner mode
; FA2:YR
FinalAlert 2(tm) Fansite link=%9 Fansite link
FinalAlert 2(tm) Forum=%9 Forum

View file

@ -401,57 +401,70 @@ CString TranslateStringVariables(int n, const char* originaltext, const char* in
strcat(seekedstring, c);
CString orig = originaltext;
if (orig.Find(seekedstring) < 0) return orig;
if (orig.Find(seekedstring) < 0) {
return orig;
}
orig.Replace(seekedstring, inserttext);
return orig;
}
// retrieve the string name in the correct language (name is an ID).
CString GetLanguageStringACP(CString name)
const CString* getLanguageString(const CString& key)
{
#ifdef RA2_MODE
auto const strRA2Sec = theApp.m_Options.LanguageName + "-StringsRA2";
if (auto const& translated = language.GetSection(strRA2Sec).TryGetString(name)) {
return ToACP(*translated);
if (auto const& translated = language.GetSection(strRA2Sec).TryGetString(key)) {
return translated;
}
if (auto const& def = language.GetSection("English-StringsRA2").TryGetString(name)) {
return ToACP(*def);
// fallback to english
if (auto const& def = language.GetSection("English-StringsRA2").TryGetString(key)) {
return def;
}
#endif
// last try
auto const defSec = theApp.m_Options.LanguageName + "-Strings";
auto const translated = language.GetSection(defSec).TryGetString(name);
if (!translated) {
CString s = language.GetSection("English-Strings").GetStringOr(name, name);
if (auto const& def = language.GetSection(defSec).TryGetString(key)) {
return def;
}
// last try
return language.GetSection("English-Strings").TryGetString(key);
}
CString escapeString(const CString& input)
{
auto updated = input;
if (updated.Find("\\n")) {
updated.Replace("\\n", "\n");
}
return updated;
}
// retrieve the string name in the correct language (name is an ID).
CString GetLanguageStringACP(const CString name)
{
#ifndef RA2_MODE
s = TranslateStringVariables(9, s, "FinalSun");
auto const pStrToInsert = "FinalSun";
#elif YR_MODE
auto const pStrToInsert = "FinalAlert 2: Yuri's Revenge";
#else
#ifdef YR_MODE
s = TranslateStringVariables(9, s, "FinalAlert 2: Yuri's Revenge");
#else
s = TranslateStringVariables(9, s, "FinalAlert 2");
auto const pStrToInsert = "FinalAlert 2";
#endif
#endif
return ToACP(s);
auto translated = getLanguageString(name);
if (!translated) {
CString encoded = name;
encoded = TranslateStringVariables(9, encoded, pStrToInsert);
return ToACP(encoded);
}
CString s;
s = *translated;
CString encoded;
encoded = *translated;
#ifndef RA2_MODE
if (s.Find("%9") >= 0) s = TranslateStringVariables(9, s, "FinalSun");
#else
#ifdef YR_MODE
if (s.Find("%9") >= 0) s = TranslateStringVariables(9, s, "FinalAlert 2: Yuri's Revenge");
#else
if (s.Find("%9") >= 0) s = TranslateStringVariables(9, s, "FinalAlert 2");
#endif
#endif
return ToACP(s);
if (encoded.Find("%9") >= 0) {
encoded = TranslateStringVariables(9, encoded, pStrToInsert);
}
return ToACP(encoded);
}
CString TranslateStringACP(WCHAR* u16EnglishString)
@ -469,7 +482,21 @@ CString TranslateStringACP(CString u8EnglishString)
return GetLanguageStringACP(u8EnglishString);
}
void TranslateDlgItem(CWnd& cwnd, int controlID, const CString& label)
{
auto const translated = getLanguageString(label);
if (translated) {
cwnd.SetDlgItemText(controlID, escapeString(*translated));
}
}
void TranslateWindowCaption(CWnd& cwnd, const CString& label)
{
auto const translated = getLanguageString(label);
if (translated) {
cwnd.SetWindowText(escapeString(*translated));
}
}
void TruncSpace(string& str)
{

View file

@ -125,7 +125,7 @@ char* strcpy_safe(char* strDestination, const char* strSource);
// retrieve the string name in the correct language (name is an ID).
// the returned string is in the active codepage (UTF-8 on Windows 10 1909+)
CString GetLanguageStringACP(CString name);
CString GetLanguageStringACP(const CString name);
// tranlate a string/word by using the table from english to the current language
// the returned string is in the active codepage (UTF-8 on Windows 10 1909+)
@ -135,6 +135,9 @@ CString TranslateStringACP(CString u8EnglishString);
// the returned string is in the active codepage (UTF-8 on Windows 10 1909+)
CString TranslateStringACP(WCHAR* u16EnglishString);
void TranslateDlgItem(CWnd& cwnd, int controlID, const CString& label);
void TranslateWindowCaption(CWnd& cwnd, const CString& label);
/****************************************
sound functions [03/16/2001]
****************************************/

View file

@ -513,6 +513,21 @@
#define IDC_LICENSE_AND_COPYRIGHT 1461
#define IDC_PREFER_LOCAL_THEATER_INI_FILES 1462
#define IDC_PREFER_LOCAL_THEATER_FILES 1463
#define IDC_TRIGGER_OPTION_TYPE_STR 1464
#define IDC_TRIGGER_OPTION_NAME 1465
#define IDC_TRIGGER_OPTION_HOUSE 1466
#define IDC_TRIGGER_OPTION_ATTACHED_TRIGGER 1467
#define IDC_TRIGGER_OPTION_TRIGGER_DIS_TIP 1468
#define IDC_MAP_D_WIDTH 1469
#define IDC_MAP_D_HEIGHT 1470
#define IDC_SCTIPTTYPE_INRO 1471
#define IDC_SCRIPTTYPE_TYPE 1472
#define IDC_SCRIPTTYPE_NAME 1473
#define IDC_SCRIPTTYPE_ACTIONS 1474
#define IDC_SCRIPTTYPE_ACTIONTYPE 1475
#define IDC_SCRIPTTYPE_DESC 1476
#define IDD_TERRAINBAR_TG 1477
#define IDD_TERRAINBAR_OS 1478
#define ID_FILE_OPENMAP 40001
#define ID_FILE_SAVEAS 40002
#define ID_FILE_QUIT 40003