/**************************************************************
 *
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 *
 *************************************************************/



// include ---------------------------------------------------------------

#include <cuires.hrc>
#include "optgdlg.hrc"
#include "helpid.hrc"

//****************************************************************************
// TabPage General
//****************************************************************************

TabPage OFA_TP_MISC
{
	HelpID = HID_OFA_TP_MISC ;
	SVLook = TRUE ;
	Size = MAP_APPFONT ( 260, 185 ) ;
	Hide = TRUE ;
	FixedLine FL_HELP
	{
		Pos = MAP_APPFONT ( COL0, ROW0 ) ;
		Size = MAP_APPFONT ( WHOLE_WIDTH, RSC_CD_FIXEDLINE_HEIGHT ) ;
		Text [ en-US ] = "Help" ;
	};
	CheckBox CB_TOOLTIP
	{
		HelpID = "cui:CheckBox:OFA_TP_MISC:CB_TOOLTIP" ;
		Pos = MAP_APPFONT ( COL1, ROW1 ) ;
		Size = MAP_APPFONT ( WHOLE_WIDTH - COL1, RSC_CD_CHECKBOX_HEIGHT ) ;
		Text [ en-US ] = "~Tips" ;
	};
	CheckBox CB_EXTHELP
	{
		HelpID = "cui:CheckBox:OFA_TP_MISC:CB_EXTHELP" ;
		Pos = MAP_APPFONT ( COL2, ROW2 ) ;
		Size = MAP_APPFONT ( WHOLE_WIDTH - COL2, RSC_CD_CHECKBOX_HEIGHT ) ;
		Text [ en-US ] = "~Extended tips" ;
	};
	CheckBox CB_HELPAGENT
	{
		HelpID = "cui:CheckBox:OFA_TP_MISC:CB_HELPAGENT" ;
		Pos = MAP_APPFONT ( COL1, ROW3 ) ;
		Size = MAP_APPFONT ( WHOLE_WIDTH - COL1, RSC_CD_CHECKBOX_HEIGHT ) ;
		Text [ en-US ] = "~Help Agent" ;
	};
	PushButton PB_HELPAGENT_RESET
	{
		HelpID = "cui:PushButton:OFA_TP_MISC:PB_HELPAGENT_RESET" ;
		Pos = MAP_APPFONT ( COL2, ROW4 ) ;
		Size = MAP_APPFONT ( RSC_CD_PUSHBUTTON_WIDTH, RSC_CD_PUSHBUTTON_HEIGHT ) ;
		Text [ en-US ] = "~Reset Help Agent" ;
	};
	FixedText FT_HELPFORMAT
	{
		Pos = MAP_APPFONT ( COL1, OFFS_TEXTBOX_FIXEDTEXT ( ROW5 ) ) ;
		Size = MAP_APPFONT ( DIFF ( COL1, COL3 ), RSC_CD_FIXEDTEXT_HEIGHT ) ;
		Text [ en-US ] = "Help ~formatting" ;
	};
	ListBox LB_HELPFORMAT
	{
		HelpID = "cui:ListBox:OFA_TP_MISC:LB_HELPFORMAT" ;
		Pos = MAP_APPFONT ( COL4, ROW5 ) ;
		Size = MAP_APPFONT ( WHOLE_WIDTH - COL4, 50 ) ;
		DropDown = TRUE ;
		Border = TRUE ;
		TabStop = TRUE ;
		StringList [ en-US ] =
		{
			< "Default"				; > ;
			< "High Contrast #1"	; > ;
			< "High Contrast #2"	; > ;
			< "High Contrast Black"	; > ;
			< "High Contrast White"	; > ;
		};
	};
	FixedLine FL_FILEDLG
	{
		Pos = MAP_APPFONT ( COL0, ROW6 ) ;
		Size = MAP_APPFONT ( WHOLE_WIDTH, RSC_CD_FIXEDLINE_HEIGHT ) ;
		Text [ en-US ] = "Open/Save dialogs" ;
	};
	FixedImage FI_FILEDLG_RO
	{
		Pos = MAP_APPFONT ( COL1 - 7, ROW7 + 2 ) ;
		Size = MAP_APPFONT ( 6, 6 ) ;
		Hide = TRUE ;
	};
	CheckBox CB_FILEDLG
	{
		HelpID = "cui:CheckBox:OFA_TP_MISC:CB_FILEDLG" ;
		Pos = MAP_APPFONT ( COL1, ROW7 ) ;
		Size = MAP_APPFONT ( WHOLE_WIDTH - COL1, RSC_CD_CHECKBOX_HEIGHT ) ;
		Text [ en-US ] = "~Use %PRODUCTNAME dialogs" ;
	};
	FixedLine FL_DOCSTATUS
	{
		Pos = MAP_APPFONT ( COL0, ROW8 ) ;
		Size = MAP_APPFONT ( WHOLE_WIDTH, RSC_CD_FIXEDLINE_HEIGHT ) ;
		Text [ en-US ] = "Document status" ;
	};
	CheckBox CB_DOCSTATUS
	{
		HelpID = "cui:CheckBox:OFA_TP_MISC:CB_DOCSTATUS" ;
		Pos = MAP_APPFONT ( COL1, ROW9 ) ;
		Size = MAP_APPFONT ( WHOLE_WIDTH - COL1, RSC_CD_CHECKBOX_HEIGHT ) ;
		Text [ en-US ] = "~Printing sets \"document modified\" status" ;
	};
	FixedLine FL_TWOFIGURE
	{
		Pos = MAP_APPFONT ( COL0, ROW10 ) ;
		Size = MAP_APPFONT ( WHOLE_WIDTH, RSC_CD_FIXEDLINE_HEIGHT ) ;
		Text [ en-US ] = "Year (two digits)" ;
	};
	FixedText FT_INTERPRET
	{
		Pos = MAP_APPFONT ( COL1, OFFS_TEXTBOX_FIXEDTEXT ( ROW11 ) ) ;
		Size = MAP_APPFONT ( DIFF( COL1, COL3), RSC_CD_FIXEDTEXT_HEIGHT ) ;
		Text [ en-US ] = "Interpret as years between" ;
	};
	NumericField NF_YEARVALUE
	{
		HelpID = "cui:NumericField:OFA_TP_MISC:NF_YEARVALUE" ;
		Border = TRUE ;
		Pos = MAP_APPFONT ( COL4, ROW11 ) ;
		Size = MAP_APPFONT ( EDIT_WIDTH, RSC_CD_TEXTBOX_HEIGHT ) ;
		Minimum = 1583 ;
		Maximum = 9857 ;
		Spin = TRUE ;
		Repeat = TRUE ;
	};
	FixedText FT_TOYEAR
	{
		Pos = MAP_APPFONT ( COL6, OFFS_TEXTBOX_FIXEDTEXT ( ROW11 ) ) ;
		Size = MAP_APPFONT ( WHOLE_WIDTH - COL6, RSC_CD_FIXEDTEXT_HEIGHT ) ;
		Text [ en-US ] = "and " ;
	};
	FixedLine FL_PRINTDLG
	{
		Pos = MAP_APPFONT ( COL0, ROW8 ) ;
		Size = MAP_APPFONT ( WHOLE_WIDTH, RSC_CD_FIXEDLINE_HEIGHT ) ;
		Text [ en-US ] = "Print dialogs" ;
	};
	CheckBox CB_PRINTDLG
	{
		HelpID = "cui:CheckBox:OFA_TP_MISC:CB_PRINTDLG" ;
		Pos = MAP_APPFONT ( COL1, ROW9 ) ;
		Size = MAP_APPFONT ( WHOLE_WIDTH - COL1, RSC_CD_CHECKBOX_HEIGHT ) ;
		Text [ en-US ] = "Use %PRODUCTNAME ~dialogs" ;
	};
};

//****************************************************************************
// TabPage View
//****************************************************************************

TabPage OFA_TP_VIEW
{
	HelpID = HID_OFA_TP_VIEW ;
	SVLook = TRUE ;
	Size = MAP_APPFONT ( 260, 185 ) ;
	Hide = TRUE ;
	FixedLine FL_USERINTERFACE
	{
		Pos = MAP_APPFONT ( 6, ROW0 ) ;
		Size = MAP_APPFONT ( 120, 8 ) ;
		Text [ en-US ] = "User Interface" ;
	};
	FixedText FT_WINDOWSIZE
	{
		Pos = MAP_APPFONT ( 12, OFFS_TEXTBOX_FIXEDTEXT ( ROW_MF_SCALING ) ) ;
		Size = MAP_APPFONT ( 80, 8 ) ;
		Text [ en-US ] = "Sc~aling" ;
	};
	MetricField MF_WINDOWSIZE
	{
		HelpID = "cui:MetricField:OFA_TP_VIEW:MF_WINDOWSIZE" ;
		Pos = MAP_APPFONT ( 95, ROW_MF_SCALING ) ;
		Size = MAP_APPFONT ( 31, 12 ) ;
		Border = TRUE ;
		TabStop = TRUE ;
		Left = TRUE ;
		Repeat = TRUE ;
		Spin = TRUE ;
		Minimum = 80 ;
		Maximum = 130 ;
		DecimalDigits = 0 ;
		First = 80 ;
		Last = 130 ;
		SpinSize = 1 ;
		Unit = FUNIT_PERCENT ;
	};
	FixedText FT_ICONSIZESTYLE
	{
		Pos = MAP_APPFONT ( 12, ROW_FT_ICONSIZESTYLE ) ;
		Size = MAP_APPFONT ( 114, 8 ) ;
		Text [ en-US ] = "Icon size and style" ;
	};
	String STR_ICONSIZE
	{
		Text [ en-US ] = "Icon size" ;
	};
	ListBox LB_ICONSIZE
	{
		HelpID = "cui:ListBox:OFA_TP_VIEW:LB_ICONSIZE" ;
		Pos = MAP_APPFONT ( 12, ROW_LB_ICONSIZESTYLE ) ;
		Size = MAP_APPFONT ( 45, 60 ) ;
		DropDown = TRUE ;
		Border = TRUE ;
		TabStop = TRUE ;
		StringList [ en-US ] =
		{
			< "Automatic" ;	> ;
			< "Small" ;		> ;
			< "Large" ;		> ;
		};
	};
	ListBox LB_ICONSTYLE
	{
		HelpID = "cui:ListBox:OFA_TP_VIEW:LB_ICONSTYLE" ;
		Pos = MAP_APPFONT ( 61, ROW_LB_ICONSIZESTYLE ) ;
		Size = MAP_APPFONT ( 65, 70 ) ;
		DropDown = TRUE ;
		Border = TRUE ;
		TabStop = TRUE ;
		StringList [ en-US ] =
		{
			< "Automatic" ;			> ;
			< "Galaxy (default)" ;	> ;
			< "High Contrast" ;		> ;
			< "Industrial" ;		> ;
			< "Classic" ;			> ;
		};
	};
	CheckBox CB_SYSTEM_FONT
	{
		HelpID = "cui:CheckBox:OFA_TP_VIEW:CB_SYSTEM_FONT" ;
		TabStop = TRUE ;
		Pos = MAP_APPFONT ( 12, ROW_CB_SYSTEM_FONT ) ;
		Size = MAP_APPFONT ( 114, 16 ) ;
		WordBreak = TRUE ;
		Text [ en-US ] = "Use system ~font for user interface" ;
	};

	CheckBox CB_FONTANTIALIASING
	{
		HelpID = "cui:CheckBox:OFA_TP_VIEW:CB_FONTANTIALIASING" ;
		TabStop = TRUE ;
		Pos = MAP_APPFONT ( 12, ROW_CB_FONTANTIALIASING ) ;
		Size = MAP_APPFONT ( 110, RSC_CD_CHECKBOX_HEIGHT ) ;
		Text [ en-US ] = "Screen font antialiasing" ;
	};
	FixedText FT_POINTLIMIT_LABEL
	{
		Pos = MAP_APPFONT ( 23, OFFS_TEXTBOX_FIXEDTEXT ( ROW_NF_AA_POINTLIMIT ) ) ;
		Size = MAP_APPFONT ( 20, 8 ) ;
		Text [ en-US ] = "from" ;
	};
	NumericField NF_AA_POINTLIMIT
	{
		HelpID = "cui:NumericField:OFA_TP_VIEW:NF_AA_POINTLIMIT" ;
		Border = TRUE ;
		Pos = MAP_APPFONT ( 46, ROW_NF_AA_POINTLIMIT ) ;
		Size = MAP_APPFONT ( 30, 12 ) ;
		Minimum = 1 ;
		Maximum = 10000 ;
		SpinSize = 1 ;
		Spin = TRUE ;
		Repeat = TRUE ;
	};
	FixedText FT_POINTLIMIT_UNIT
	{
		Pos = MAP_APPFONT ( 79, OFFS_TEXTBOX_FIXEDTEXT ( ROW_NF_AA_POINTLIMIT ) ) ;
		Size = MAP_APPFONT ( 47, 8 ) ;
		Text [ en-US ] = "Pixels" ;
	};
	FixedLine FL_MENU
	{
		Pos = MAP_APPFONT ( 6, ROW_FL_MENU ) ;
		Size = MAP_APPFONT ( 120, 8 ) ;
		Text [ en-US ] = "Menu" ;
	};
	FixedText FT_MENU_ICONS
	{
		Pos = MAP_APPFONT ( 12, ROW_FT_MENU_ICONS ) ;
		Size = MAP_APPFONT ( 114, 8 ) ;
		Text [ en-US ] = "Icons in menus" ;
	};
	ListBox LB_MENU_ICONS
	{
		HelpID = "cui:ListBox:OFA_TP_VIEW:LB_MENU_ICONS" ;
		Pos = MAP_APPFONT ( 12, ROW_LB_MENU_ICONS ) ;
		Size = MAP_APPFONT ( 114, 60 ) ;
		DropDown = TRUE ;
		Border = TRUE ;
		TabStop = TRUE ;
		StringList [ en-US ] =
		{
			< "Automatic" ;	> ;
			< "Hide" ;		> ;
			< "Show" ;		> ;
		};
	};
	FixedLine FL_FONTLISTS
	{
		Pos = MAP_APPFONT ( 6, ROW_FL_FONTLISTS ) ;
		Size = MAP_APPFONT ( 120, 8 ) ;
		Text [ en-US ] = "Font Lists" ;
	};
	CheckBox CB_FONT_SHOW
	{
		HelpID = "cui:CheckBox:OFA_TP_VIEW:CB_FONT_SHOW" ;
		Pos = MAP_APPFONT ( 12, ROW_CB_FONT_SHOW ) ;
		Size = MAP_APPFONT ( 118, RSC_CD_CHECKBOX_HEIGHT ) ;
		Text [ en-US ] = "Show p~review of fonts" ;
	};
	CheckBox CB_FONT_HISTORY
	{
		HelpID = "cui:CheckBox:OFA_TP_VIEW:CB_FONT_HISTORY" ;
		Pos = MAP_APPFONT ( 12, ROW_CB_FONT_HISTORY ) ;
		Size = MAP_APPFONT ( 118, RSC_CD_CHECKBOX_HEIGHT ) ;
		Text [ en-US ] = "Show font h~istory" ;
	};
	FixedLine FL_RENDERING
	{
		Pos = MAP_APPFONT ( 133, ROW_FL_RENDERING ) ;
		Size = MAP_APPFONT ( 120, 8 ) ;
		Text [ en-US ] = "Graphics output" ;
	};

	CheckBox CB_USE_HARDACCELL
	{
		HelpID = "cui:CheckBox:OFA_TP_VIEW:CB_USE_HARDACCELL" ;
		Pos = MAP_APPFONT ( 139, ROW_CB_USE_HARDACCELL ) ;
		Size = MAP_APPFONT ( 118, RSC_CD_CHECKBOX_HEIGHT ) ;
		Text [ en-US ] = "Use hardware acceleration" ;
	};

	CheckBox CB_USE_ANTIALIASE
	{
		HelpID = "cui:CheckBox:OFA_TP_VIEW:CB_USE_ANTIALIASE" ;
		Pos = MAP_APPFONT ( 139, ROW_CB_USE_ANTIALIASE ) ;
		Size = MAP_APPFONT ( 118, RSC_CD_CHECKBOX_HEIGHT ) ;
		Text [ en-US ] = "Use Anti-Aliasing" ;
	};

	FixedLine FL_MOUSE
	{
		Pos = MAP_APPFONT ( 133, ROW_FL_MOUSE ) ;
		Size = MAP_APPFONT ( 120, 8 ) ;
		Text [ en-US ] = "Mouse" ;
	};
	FixedText FT_MOUSEPOS
	{
		Pos = MAP_APPFONT ( 139, ROW_FT_MOUSEPOS ) ;
		Size = MAP_APPFONT ( 120, 8 ) ;
		Text [ en-US ] = "Mouse positioning" ;
	};
	ListBox LB_MOUSEPOS
	{
		HelpID = "cui:ListBox:OFA_TP_VIEW:LB_MOUSEPOS" ;
		Pos = MAP_APPFONT ( 139, ROW_LB_MOUSEPOS ) ;
		Size = MAP_APPFONT ( 114, 60 ) ;
		DropDown = TRUE ;
		Border = TRUE ;
		TabStop = TRUE ;
		StringList [ en-US ] =
		{
			< "Default button" ;			> ;
			< "Dialog center" ;				> ;
			< "No automatic positioning" ;	> ;
		};
	};
	FixedText FT_MOUSEMIDDLE
	{
		Pos = MAP_APPFONT ( 139, ROW_FT_MOUSEMIDDLE ) ;
		Size = MAP_APPFONT ( 120, 8 ) ;
		Text [ en-US ] = "Middle mouse button" ;
	};
	ListBox LB_MOUSEMIDDLE
	{
		HelpID = "cui:ListBox:OFA_TP_VIEW:LB_MOUSEMIDDLE" ;
		Pos = MAP_APPFONT ( 139, ROW_LB_MOUSEMIDDLE ) ;
		Size = MAP_APPFONT ( 114, 60 ) ;
		DropDown = TRUE ;
		Border = TRUE ;
		TabStop = TRUE ;
		StringList [ en-US ] =
		{
			< "No function" ;			> ;
			< "Automatic scrolling" ;	> ;
			< "Paste clipboard" ;		> ;
		};
	};

	// #i97672#
	FixedLine FL_SELECTION
	{
		Pos = MAP_APPFONT ( 133, ROW_FL_SELECTION ) ;
		Size = MAP_APPFONT ( 120, 8 ) ;
		Text [ en-US ] = "Selection" ;
	};

	CheckBox CB_SELECTION
	{
		HelpID = "cui:CheckBox:OFA_TP_VIEW:CB_SELECTION" ;
		Pos = MAP_APPFONT ( 139, ROW_CB_SELECTION + ( ( ( 12 - RSC_CD_CHECKBOX_HEIGHT ) / 2 ) + 1 ) ) ;
		Size = MAP_APPFONT ( 118 - 34, RSC_CD_CHECKBOX_HEIGHT ) ;
		Text [ en-US ] = "Transparency" ;
	};

	MetricField MF_SELECTION
	{
		HelpID = "cui:MetricField:OFA_TP_VIEW:MF_SELECTION" ;
		Pos = MAP_APPFONT ( 139 + (95 - 12), ROW_CB_SELECTION ) ;
		Size = MAP_APPFONT ( 31, 12 ) ;
		Border = TRUE ;
		TabStop = TRUE ;
		Repeat = TRUE ;
		Spin = TRUE ;
		Minimum = 10 ;
		Maximum = 90 ;
		DecimalDigits = 0 ;
		First = 10 ;
		Last = 90 ;
		SpinSize = 5 ;
		Unit = FUNIT_PERCENT ;
	};
};

//****************************************************************************
// TabPage Languages
//****************************************************************************

TabPage OFA_TP_LANGUAGES
{
	HelpID = HID_OFA_TP_LANGUAGES ;
	SVLook = TRUE ;
	Size = MAP_APPFONT ( 260, 185 ) ;
	Hide = TRUE ;
	FixedLine FL_UI_LANG
	{
		Pos = MAP_APPFONT ( 6, 3 ) ;
		Size = MAP_APPFONT ( 248, 8 ) ;
		Text [ en-US ] = "Language of" ;
	};
	FixedImage FI_USERINTERFACE
	{
		Pos = MAP_APPFONT ( 5, 17 ) ;
		Size = MAP_APPFONT ( 6, 6 ) ;
		Hide = TRUE ;
	};
	FixedText FT_USERINTERFACE
	{
		Pos = MAP_APPFONT ( 12, 16 ) ;
		Size = MAP_APPFONT ( 108, 8 ) ;
		Text [ en-US ] = "~User interface" ;
	};
	ListBox LB_USERINTERFACE
	{
		HelpID = "cui:ListBox:OFA_TP_LANGUAGES:LB_USERINTERFACE" ;
		Pos = MAP_APPFONT ( 123, 14 ) ;
		Size = MAP_APPFONT ( 125, 60 ) ;
		DropDown = TRUE ;
		Border = TRUE ;
		TabStop = TRUE ;
		Sort = TRUE ;
	};
	FixedImage FI_LOCALESETTING
	{
		Pos = MAP_APPFONT ( 5, 32 ) ;
		Size = MAP_APPFONT ( 6, 6 ) ;
		Hide = TRUE ;
	};
	FixedText FT_LOCALESETTING
	{
		Pos = MAP_APPFONT ( 12, 31 ) ;
		Size = MAP_APPFONT ( 108, 8 ) ;
		Text [ en-US ] = "Locale setting" ;
	};
	ListBox LB_LOCALESETTING
	{
		HelpID = "cui:ListBox:OFA_TP_LANGUAGES:LB_LOCALESETTING" ;
		Pos = MAP_APPFONT ( 123, 30 ) ;
		Size = MAP_APPFONT ( 125, 60 ) ;
		DropDown = TRUE ;
		Border = TRUE ;
		TabStop = TRUE ;
		Sort = TRUE ;
	};
	FixedText FT_DECIMALSEPARATOR
	{
		Pos = MAP_APPFONT ( 12, 46 ) ;
		Size = MAP_APPFONT ( 108, 8 ) ;
		Text [ en-US ] = "Decimal separator key" ;
	};
	CheckBox CB_DECIMALSEPARATOR
	{
		HelpID = "cui:CheckBox:OFA_TP_LANGUAGES:CB_DECIMALSEPARATOR" ;
		Pos = MAP_APPFONT ( 123, 46) ;
		Size = MAP_APPFONT ( 125, RSC_CD_CHECKBOX_HEIGHT ) ;
		Text [ en-US ] = "~Same as locale setting ( %1 )" ;
	};
	FixedImage FI_CURRENCY
	{
		Pos = MAP_APPFONT ( 5, 63 ) ;
		Size = MAP_APPFONT ( 6, 6 ) ;
		Hide = TRUE ;
	};
	FixedText FT_CURRENCY
	{
		Pos = MAP_APPFONT ( 12, 61 ) ;
		Size = MAP_APPFONT ( 108, 8 ) ;
		Text [ en-US ] = "~Default currency" ;
	};
	ListBox LB_CURRENCY
	{
		HelpID = "cui:ListBox:OFA_TP_LANGUAGES:LB_CURRENCY" ;
		Pos = MAP_APPFONT ( 123, 59 ) ;
		Size = MAP_APPFONT ( 125, 60 ) ;
		DropDown = TRUE ;
		Border = TRUE ;
		TabStop = TRUE ;
		Sort = TRUE ;
	};
	FixedLine FL_LINGU_LANG
	{
		Pos = MAP_APPFONT ( 6, 77 ) ;
		Size = MAP_APPFONT ( 248, 8 ) ;
		Text [ en-US ] = "Default languages for documents" ;
	};
	FixedImage FI_WEST_LANG
	{
		Pos = MAP_APPFONT ( 5, 92 ) ;
		Size = MAP_APPFONT ( 6, 6 ) ;
		Hide = TRUE ;
	};
	FixedText FT_WEST_LANG
	{
		Pos = MAP_APPFONT ( 12, 90 ) ;
		Size = MAP_APPFONT ( 108, 8 ) ;
		Text [ en-US ] = "Western" ;
	};

	ListBox LB_WEST_LANG
	{
		HelpID = "cui:ListBox:OFA_TP_LANGUAGES:LB_WEST_LANG" ;
		Pos = MAP_APPFONT ( 123, 88 ) ;
		Size = MAP_APPFONT ( 125, 60 ) ;
		DropDown = TRUE ;
		Border = TRUE ;
		TabStop = TRUE ;
		Sort = TRUE ;
	};
	FixedImage FI_ASIAN_LANG
	{
		Pos = MAP_APPFONT ( 5, 108 ) ;
		Size = MAP_APPFONT ( 6, 6 ) ;
		Hide = TRUE ;
	};
	FixedText FT_ASIAN_LANG
	{
		Pos = MAP_APPFONT ( 12, 106 ) ;
		Size = MAP_APPFONT ( 108, 8 ) ;
		Text [ en-US ] = "Asian" ;
	};
	ListBox LB_ASIAN_LANG
	{
		HelpID = "cui:ListBox:OFA_TP_LANGUAGES:LB_ASIAN_LANG" ;
		Pos = MAP_APPFONT ( 123, 104 ) ;
		Size = MAP_APPFONT ( 125, 60 ) ;
		DropDown = TRUE ;
		Border = TRUE ;
		TabStop = TRUE ;
		Sort = TRUE ;
	};
	FixedImage FI_COMPLEX_LANG
	{
		Pos = MAP_APPFONT ( 5, 124 ) ;
		Size = MAP_APPFONT ( 6, 6 ) ;
		Hide = TRUE ;
	};
	FixedText FT_COMPLEX_LANG
	{
		Pos = MAP_APPFONT ( 12, 122 ) ;
		Size = MAP_APPFONT ( 108, 8 ) ;
		Text [ en-US ] = "C~TL" ;
	};
	ListBox LB_COMPLEX_LANG
	{
		HelpID = "cui:ListBox:OFA_TP_LANGUAGES:LB_COMPLEX_LANG" ;
		Pos = MAP_APPFONT ( 123, 120 ) ;
		Size = MAP_APPFONT ( 125, 60 ) ;
		DropDown = TRUE ;
		Border = TRUE ;
		TabStop = TRUE ;
		Sort = TRUE ;
	};
	CheckBox CB_CURRENT_DOC
	{
		HelpID = "cui:CheckBox:OFA_TP_LANGUAGES:CB_CURRENT_DOC" ;
		Pos = MAP_APPFONT ( 123, 135 ) ;
		Size = MAP_APPFONT ( 125, RSC_CD_CHECKBOX_HEIGHT ) ;
		Text [ en-US ] = "For the current document only" ;
	};
	FixedLine FL_ENHANCED
	{
		Pos = MAP_APPFONT ( 6, 145 ) ;
		Size = MAP_APPFONT ( 248, 8 ) ;
		Text [ en-US ] = "Enhanced language support" ;
	};
	FixedImage FI_ASIANSUPPORT
	{
		Pos = MAP_APPFONT ( 5, 160 ) ;
		Size = MAP_APPFONT ( 6, 6 ) ;
		Hide = TRUE ;
	};
	CheckBox CB_ASIANSUPPORT
	{
		HelpID = "cui:CheckBox:OFA_TP_LANGUAGES:CB_ASIANSUPPORT" ;
		Pos = MAP_APPFONT ( 12, 158 ) ;
		Size = MAP_APPFONT ( 236 ,RSC_CD_CHECKBOX_HEIGHT ) ;
		Text [ en-US ] = "Show UI elements for East Asia~n writings" ;
	};
	FixedImage FI_CTLSUPPORT
	{
		Pos = MAP_APPFONT ( 5, 175 ) ;
		Size = MAP_APPFONT ( 6, 6 ) ;
		Hide = TRUE ;
	};
	CheckBox CB_CTLSUPPORT
	{
		HelpID = "cui:CheckBox:OFA_TP_LANGUAGES:CB_CTLSUPPORT" ;
		Pos = MAP_APPFONT ( 12, 173 ) ;
		Size = MAP_APPFONT ( 236, RSC_CD_CHECKBOX_HEIGHT ) ;
		Text [ en-US ] = "Show UI elements for B~i-Directional writing" ;
	};
};

InfoBox RID_SVX_MSGBOX_LANGUAGE_RESTART
{
	Message [ en-US ] = "The language setting of the user interface has been updated and will take effect the next time you start %PRODUCTNAME %PRODUCTVERSION" ;
};

// ********************************************************************** EOF
