aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--linden/indra/newview/app_settings/settings.xml11
-rw-r--r--linden/indra/newview/llfloaterchat.cpp22
-rw-r--r--linden/indra/newview/llfloaterchat.h2
-rw-r--r--linden/indra/newview/llprefschat.cpp4
-rw-r--r--linden/indra/newview/llviewercontrol.cpp14
-rwxr-xr-xlinden/indra/newview/llviewermessage.cpp71
-rw-r--r--linden/indra/newview/llviewermessage.h1
-rw-r--r--linden/indra/newview/llwldaycycle.cpp6
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/floater_chat_history.xml3
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/panel_preferences_chat.xml82
10 files changed, 7 insertions, 209 deletions
diff --git a/linden/indra/newview/app_settings/settings.xml b/linden/indra/newview/app_settings/settings.xml
index 439459c..2ec4832 100644
--- a/linden/indra/newview/app_settings/settings.xml
+++ b/linden/indra/newview/app_settings/settings.xml
@@ -7901,17 +7901,6 @@
7901 <key>Value</key> 7901 <key>Value</key>
7902 <string>default</string> 7902 <string>default</string>
7903 </map> 7903 </map>
7904 <key>TranslateChat</key>
7905 <map>
7906 <key>Comment</key>
7907 <string>Translate incoming chat messages</string>
7908 <key>Persist</key>
7909 <integer>1</integer>
7910 <key>Type</key>
7911 <string>Boolean</string>
7912 <key>Value</key>
7913 <integer>0</integer>
7914 </map>
7915 <key>LastFeatureVersion</key> 7904 <key>LastFeatureVersion</key>
7916 <map> 7905 <map>
7917 <key>Comment</key> 7906 <key>Comment</key>
diff --git a/linden/indra/newview/llfloaterchat.cpp b/linden/indra/newview/llfloaterchat.cpp
index 1142e5c..2cca8ce 100644
--- a/linden/indra/newview/llfloaterchat.cpp
+++ b/linden/indra/newview/llfloaterchat.cpp
@@ -115,8 +115,6 @@ LLFloaterChat::LLFloaterChat(const LLSD& seed)
115 LLUICtrlFactory::getInstance()->buildFloater(this,"floater_chat_history.xml",&getFactoryMap(),no_open); 115 LLUICtrlFactory::getInstance()->buildFloater(this,"floater_chat_history.xml",&getFactoryMap(),no_open);
116 116
117 childSetCommitCallback("show mutes",onClickToggleShowMute,this); //show mutes 117 childSetCommitCallback("show mutes",onClickToggleShowMute,this); //show mutes
118 childSetCommitCallback("translate chat",onClickToggleTranslateChat,this);
119 childSetValue("translate chat", gSavedSettings.getBOOL("TranslateChat"));
120 childSetVisible("Chat History Editor with mute",FALSE); 118 childSetVisible("Chat History Editor with mute",FALSE);
121 childSetAction("toggle_active_speakers_btn", onClickToggleActiveSpeakers, this); 119 childSetAction("toggle_active_speakers_btn", onClickToggleActiveSpeakers, this);
122 setDefaultBtn("Chat"); 120 setDefaultBtn("Chat");
@@ -446,26 +444,6 @@ void LLFloaterChat::onClickToggleShowMute(LLUICtrl* caller, void *data)
446 } 444 }
447} 445}
448 446
449// Update the "TranslateChat" pref after "translate chat" checkbox is toggled in
450// the "Local Chat" floater.
451//static
452void LLFloaterChat::onClickToggleTranslateChat(LLUICtrl* caller, void *data)
453{
454 LLFloaterChat* floater = (LLFloaterChat*)data;
455
456 BOOL translate_chat = floater->getChild<LLCheckBoxCtrl>("translate chat")->get();
457 gSavedSettings.setBOOL("TranslateChat", translate_chat);
458}
459
460// Update the "translate chat" checkbox after the "TranslateChat" pref is set in
461// some other place (e.g. prefs dialog).
462//static
463void LLFloaterChat::updateSettings()
464{
465 BOOL translate_chat = gSavedSettings.getBOOL("TranslateChat");
466 LLFloaterChat::getInstance(LLSD())->getChild<LLCheckBoxCtrl>("translate chat")->set(translate_chat);
467}
468
469BOOL checkStringInText(const std::string &text_line, std::string textToMatch) 447BOOL checkStringInText(const std::string &text_line, std::string textToMatch)
470{ 448{
471 boost::smatch what; 449 boost::smatch what;
diff --git a/linden/indra/newview/llfloaterchat.h b/linden/indra/newview/llfloaterchat.h
index f8683b9..14c2242 100644
--- a/linden/indra/newview/llfloaterchat.h
+++ b/linden/indra/newview/llfloaterchat.h
@@ -66,7 +66,6 @@ public:
66 virtual void onVisibilityChange(BOOL cur_visibility); 66 virtual void onVisibilityChange(BOOL cur_visibility);
67 virtual void setMinimized(BOOL); 67 virtual void setMinimized(BOOL);
68 void updateConsoleVisibility(); 68 void updateConsoleVisibility();
69 void updateSettings();
70 69
71 static void setHistoryCursorAndScrollToEnd(); 70 static void setHistoryCursorAndScrollToEnd();
72 71
@@ -82,7 +81,6 @@ public:
82 81
83 static void onClickMute(void *data); 82 static void onClickMute(void *data);
84 static void onClickToggleShowMute(LLUICtrl* caller, void *data); 83 static void onClickToggleShowMute(LLUICtrl* caller, void *data);
85 static void onClickToggleTranslateChat(LLUICtrl* caller, void *data);
86 static void onClickToggleActiveSpeakers(void* userdata); 84 static void onClickToggleActiveSpeakers(void* userdata);
87 static void chatFromLogFile(LLLogChat::ELogLineType type,std::string line, void* userdata); 85 static void chatFromLogFile(LLLogChat::ELogLineType type,std::string line, void* userdata);
88 static void loadHistory(); 86 static void loadHistory();
diff --git a/linden/indra/newview/llprefschat.cpp b/linden/indra/newview/llprefschat.cpp
index 1cdab46..dd4df42 100644
--- a/linden/indra/newview/llprefschat.cpp
+++ b/linden/indra/newview/llprefschat.cpp
@@ -111,8 +111,6 @@ BOOL LLPrefsChatImpl::postBuild()
111 childSetValue("toggle_channel_control", gSavedSettings.getBOOL("ChatChannelSelect")); 111 childSetValue("toggle_channel_control", gSavedSettings.getBOOL("ChatChannelSelect"));
112 childSetValue("console_opacity", gSavedSettings.getF32("ConsoleBackgroundOpacity")); 112 childSetValue("console_opacity", gSavedSettings.getF32("ConsoleBackgroundOpacity"));
113 childSetValue("bubble_chat_opacity", gSavedSettings.getF32("ChatBubbleOpacity")); 113 childSetValue("bubble_chat_opacity", gSavedSettings.getF32("ChatBubbleOpacity"));
114 childSetValue("translate_language_combobox", gSavedSettings.getString("TranslateLanguage"));
115 childSetValue("translate_chat", gSavedSettings.getBOOL("TranslateChat"));
116 114
117 mChatChannel = gSavedSettings.getBOOL("ChatChannelSelect"); 115 mChatChannel = gSavedSettings.getBOOL("ChatChannelSelect");
118 116
@@ -205,8 +203,6 @@ void LLPrefsChatImpl::apply()
205 gSavedSettings.setF32("ConsoleBackgroundOpacity", childGetValue("console_opacity").asReal()); 203 gSavedSettings.setF32("ConsoleBackgroundOpacity", childGetValue("console_opacity").asReal());
206 gSavedSettings.setF32("ChatBubbleOpacity", childGetValue("bubble_chat_opacity").asReal()); 204 gSavedSettings.setF32("ChatBubbleOpacity", childGetValue("bubble_chat_opacity").asReal());
207 205
208 gSavedSettings.setString("TranslateLanguage", childGetValue("translate_language_combobox"));
209 gSavedSettings.setBOOL("TranslateChat", childGetValue("translate_chat"));
210 206
211 bool chan_check = childGetValue("toggle_channel_control"); 207 bool chan_check = childGetValue("toggle_channel_control");
212 gSavedSettings.setBOOL("ChatChannelSelect", chan_check); 208 gSavedSettings.setBOOL("ChatChannelSelect", chan_check);
diff --git a/linden/indra/newview/llviewercontrol.cpp b/linden/indra/newview/llviewercontrol.cpp
index 59d766f..016646e 100644
--- a/linden/indra/newview/llviewercontrol.cpp
+++ b/linden/indra/newview/llviewercontrol.cpp
@@ -511,19 +511,6 @@ bool handleVoiceClientPrefsChanged(const LLSD& newvalue)
511 return true; 511 return true;
512} 512}
513 513
514bool handleTranslateChatPrefsChanged(const LLSD& newvalue)
515{
516 LLFloaterChat* floaterp = LLFloaterChat::getInstance();
517
518 if(floaterp)
519 {
520 // update "translate chat" pref in "Local Chat" floater
521 floaterp->updateSettings();
522 }
523 return true;
524}
525
526
527bool handleSliderScrollWheelMultiplierChanged(const LLSD& newvalue) 514bool handleSliderScrollWheelMultiplierChanged(const LLSD& newvalue)
528{ 515{
529 LLSlider::setScrollWheelMultiplier( newvalue.asInteger() ); 516 LLSlider::setScrollWheelMultiplier( newvalue.asInteger() );
@@ -675,7 +662,6 @@ void settings_setup_listeners()
675 gSavedSettings.getControl("AudioLevelMic")->getSignal()->connect(boost::bind(&handleVoiceClientPrefsChanged, _1)); 662 gSavedSettings.getControl("AudioLevelMic")->getSignal()->connect(boost::bind(&handleVoiceClientPrefsChanged, _1));
676 gSavedSettings.getControl("LipSyncEnabled")->getSignal()->connect(boost::bind(&handleVoiceClientPrefsChanged, _1)); 663 gSavedSettings.getControl("LipSyncEnabled")->getSignal()->connect(boost::bind(&handleVoiceClientPrefsChanged, _1));
677 gSavedSettings.getControl("SliderScrollWheelMultiplier")->getSignal()->connect(boost::bind(&handleSliderScrollWheelMultiplierChanged, _1)); 664 gSavedSettings.getControl("SliderScrollWheelMultiplier")->getSignal()->connect(boost::bind(&handleSliderScrollWheelMultiplierChanged, _1));
678 gSavedSettings.getControl("TranslateChat")->getSignal()->connect(boost::bind(&handleTranslateChatPrefsChanged, _1));
679} 665}
680 666
681template <> eControlType get_control_type<U32>(const U32& in, LLSD& out) 667template <> eControlType get_control_type<U32>(const U32& in, LLSD& out)
diff --git a/linden/indra/newview/llviewermessage.cpp b/linden/indra/newview/llviewermessage.cpp
index cbcfb86..f0c7c0c 100755
--- a/linden/indra/newview/llviewermessage.cpp
+++ b/linden/indra/newview/llviewermessage.cpp
@@ -139,7 +139,6 @@
139#include "llfloaterworldmap.h" 139#include "llfloaterworldmap.h"
140#include "llviewerdisplay.h" 140#include "llviewerdisplay.h"
141#include "llkeythrottle.h" 141#include "llkeythrottle.h"
142#include "lltranslate.h"
143 142
144#include "panelradarentry.h" 143#include "panelradarentry.h"
145 144
@@ -2805,52 +2804,6 @@ void process_decline_callingcard(LLMessageSystem* msg, void**)
2805 LLNotifications::instance().add("CallingCardDeclined"); 2804 LLNotifications::instance().add("CallingCardDeclined");
2806} 2805}
2807 2806
2808class ChatTranslationReceiver : public LLTranslate::TranslationReceiver
2809{
2810public :
2811 ChatTranslationReceiver(const std::string &fromLang, const std::string &toLang, const LLChat &chat,
2812 const std::string &orig_mesg, const BOOL history)
2813 : LLTranslate::TranslationReceiver(fromLang, toLang),
2814 m_chat(chat),
2815 m_origMesg(orig_mesg),
2816 m_history(history)
2817 {
2818 }
2819
2820 static boost::intrusive_ptr<ChatTranslationReceiver> build(const std::string &fromLang, const std::string &toLang, const LLChat &chat, const std::string &orig_mesg, const BOOL history)
2821 {
2822 return boost::intrusive_ptr<ChatTranslationReceiver>(new ChatTranslationReceiver(fromLang, toLang, chat, orig_mesg, history));
2823 }
2824
2825protected:
2826 void handleResponse(const std::string &translation, const std::string &detected_language)
2827 {
2828 // filter out non-interesting responeses
2829 if ( !translation.empty()
2830 && (m_toLang != detected_language)
2831 && (LLStringUtil::compareInsensitive(translation, m_origMesg) != 0) )
2832 {
2833 m_chat.mText += " (" + translation + ")";
2834 }
2835
2836 add_floater_chat(m_chat, m_history);
2837 }
2838
2839 void handleFailure()
2840 {
2841 LLTranslate::TranslationReceiver::handleFailure();
2842
2843 m_chat.mText += " (?)";
2844
2845 add_floater_chat(m_chat, m_history);
2846 }
2847
2848private:
2849 LLChat m_chat;
2850 std::string m_origMesg;
2851 const BOOL m_history;
2852};
2853
2854void add_floater_chat(const LLChat &chat, const BOOL history) 2807void add_floater_chat(const LLChat &chat, const BOOL history)
2855{ 2808{
2856 if (history) 2809 if (history)
@@ -2865,26 +2818,6 @@ void add_floater_chat(const LLChat &chat, const BOOL history)
2865 } 2818 }
2866} 2819}
2867 2820
2868void check_translate_chat(const std::string &mesg, const LLChat &chat, const BOOL history)
2869{
2870 const bool translate = gSavedSettings.getBOOL("TranslateChat");
2871
2872 if (translate && chat.mSourceType != CHAT_SOURCE_SYSTEM)
2873 {
2874 // fromLang hardcoded to "" (autodetection) pending implementation of
2875 // SVC-4879
2876 const std::string &fromLang = "";
2877 const std::string &toLang = LLTranslate::getTranslateLanguage();
2878
2879 LLHTTPClient::ResponderPtr result = ChatTranslationReceiver::build(fromLang, toLang, chat, mesg, history);
2880 LLTranslate::translateMessage(result, fromLang, toLang, mesg);
2881 }
2882 else
2883 {
2884 add_floater_chat(chat, history);
2885 }
2886}
2887
2888void process_chat_from_simulator(LLMessageSystem *msg, void **user_data) 2821void process_chat_from_simulator(LLMessageSystem *msg, void **user_data)
2889{ 2822{
2890 LLChat chat; 2823 LLChat chat;
@@ -3304,12 +3237,12 @@ void process_chat_from_simulator(LLMessageSystem *msg, void **user_data)
3304 && (is_linden || !is_busy || is_owned_by_me)) 3237 && (is_linden || !is_busy || is_owned_by_me))
3305 { 3238 {
3306 // show on screen and add to history 3239 // show on screen and add to history
3307 check_translate_chat(mesg, chat, FALSE); 3240 add_floater_chat(chat, FALSE);
3308 } 3241 }
3309 else 3242 else
3310 { 3243 {
3311 // just add to chat history 3244 // just add to chat history
3312 check_translate_chat(mesg, chat, TRUE); 3245 add_floater_chat(chat, TRUE);
3313 } 3246 }
3314 } 3247 }
3315} 3248}
diff --git a/linden/indra/newview/llviewermessage.h b/linden/indra/newview/llviewermessage.h
index 11a3554..0201ce4 100644
--- a/linden/indra/newview/llviewermessage.h
+++ b/linden/indra/newview/llviewermessage.h
@@ -76,7 +76,6 @@ void process_script_question(LLMessageSystem *msg, void **user_data);
76void process_chat_from_simulator(LLMessageSystem *mesgsys, void **user_data); 76void process_chat_from_simulator(LLMessageSystem *mesgsys, void **user_data);
77 77
78void add_floater_chat(const LLChat &chat, const BOOL history); 78void add_floater_chat(const LLChat &chat, const BOOL history);
79void check_translate_chat(const std::string &mesg, const LLChat &chat, const BOOL history);
80 79
81//void process_agent_to_new_region(LLMessageSystem *mesgsys, void **user_data); 80//void process_agent_to_new_region(LLMessageSystem *mesgsys, void **user_data);
82void send_agent_update(BOOL force_send, BOOL send_reliable = FALSE); 81void send_agent_update(BOOL force_send, BOOL send_reliable = FALSE);
diff --git a/linden/indra/newview/llwldaycycle.cpp b/linden/indra/newview/llwldaycycle.cpp
index 1d17c60..07ac2a4 100644
--- a/linden/indra/newview/llwldaycycle.cpp
+++ b/linden/indra/newview/llwldaycycle.cpp
@@ -51,9 +51,6 @@ LLWLDayCycle::~LLWLDayCycle()
51 51
52void LLWLDayCycle::loadDayCycle(const std::string & fileName) 52void LLWLDayCycle::loadDayCycle(const std::string & fileName)
53{ 53{
54 // clear the first few things
55 mTimeMap.clear();
56
57 // now load the file 54 // now load the file
58 std::string pathName(gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, 55 std::string pathName(gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS,
59 "windlight/days", fileName)); 56 "windlight/days", fileName));
@@ -62,6 +59,9 @@ void LLWLDayCycle::loadDayCycle(const std::string & fileName)
62 llifstream day_cycle_xml(pathName); 59 llifstream day_cycle_xml(pathName);
63 if (day_cycle_xml.is_open()) 60 if (day_cycle_xml.is_open())
64 { 61 {
62 // clear the first few things
63 mTimeMap.clear();
64
65 // load and parse it 65 // load and parse it
66 LLSD day_data(LLSD::emptyArray()); 66 LLSD day_data(LLSD::emptyArray());
67 LLPointer<LLSDParser> parser = new LLSDXMLParser(); 67 LLPointer<LLSDParser> parser = new LLSDXMLParser();
diff --git a/linden/indra/newview/skins/default/xui/en-us/floater_chat_history.xml b/linden/indra/newview/skins/default/xui/en-us/floater_chat_history.xml
index e83a930..b0e70b7 100644
--- a/linden/indra/newview/skins/default/xui/en-us/floater_chat_history.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/floater_chat_history.xml
@@ -78,9 +78,6 @@
78 <check_box bottom_delta="7" enabled="true" follows="left|top" font="SansSerifSmall" 78 <check_box bottom_delta="7" enabled="true" follows="left|top" font="SansSerifSmall"
79 height="20" initial_value="false" label="Show muted text" left_delta="125" 79 height="20" initial_value="false" label="Show muted text" left_delta="125"
80 name="show mutes" radio_style="false" width="116" /> 80 name="show mutes" radio_style="false" width="116" />
81 <check_box bottom_delta="-15" enabled="true" follows="left|top" font="SansSerifSmall"
82 height="20" initial_value="false" label="Translate chat (powered by Google)" left_delta="0"
83 name="translate chat" radio_style="false" width="100" />
84 <button name="toggle_active_speakers_btn" 81 <button name="toggle_active_speakers_btn"
85 label="&lt;&lt;" label_selected="&gt;&gt;" follows="right|top" 82 label="&lt;&lt;" label_selected="&gt;&gt;" follows="right|top"
86 bottom_delta="0" left="262" right="305" height="20" 83 bottom_delta="0" left="262" right="305" height="20"
diff --git a/linden/indra/newview/skins/default/xui/en-us/panel_preferences_chat.xml b/linden/indra/newview/skins/default/xui/en-us/panel_preferences_chat.xml
index cf947ee..62a031c 100644
--- a/linden/indra/newview/skins/default/xui/en-us/panel_preferences_chat.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/panel_preferences_chat.xml
@@ -192,10 +192,10 @@ USE left="270" FOR TABBING OPTIONS
192 </panel> 192 </panel>
193 193
194 194
195 <!-- SPELL CHECKING AND TRANSLATE PANEL --> 195 <!-- SPELL CHECKING PANEL -->
196 196
197 197
198 <panel border="true" bottom="-580" follows="left|top|right|bottom" height="525" label="Spell Checking &amp; Translate" 198 <panel border="true" bottom="-580" follows="left|top|right|bottom" height="525" label="Spell Checking"
199 left="1" mouse_opaque="true" name="spell_check_tab" width="418"> 199 left="1" mouse_opaque="true" name="spell_check_tab" width="418">
200 200
201 201
@@ -258,84 +258,6 @@ USE left="270" FOR TABBING OPTIONS
258 height="1" left="55" name="border" width="380" /> 258 height="1" left="55" name="border" width="380" />
259 259
260 260
261 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
262 bottom_delta="-20" drop_shadow_visible="true" enabled="true" follows="left|top" font-style="BOLD|SHADOW"
263 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="20"
264 mouse_opaque="false" name="text_translate" v_pad="0" width="128">
265 Translate Chat:
266 </text>
267 <check_box bottom_delta="-25" control_name="TranslateChat" enabled="true" follows="left|top"
268 font="SansSerifSmall" height="16" initial_value="false"
269 label="Use machine translation while chatting (powered by Google)" left_delta="30" mouse_opaque="true"
270 name="translate_chat" radio_style="false" width="237" />
271
272 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
273 bottom_delta="-16" drop_shadow_visible="true" enabled="true" follows="left|top"
274 font="SansSerifSmall" h_pad="0" halign="left" height="10" left_delta="0"
275 mouse_opaque="false" name="text_translate_chat" v_pad="0" width="160">
276 Translate into this language:
277 </text>
278
279 <combo_box allow_text_entry="false" bottom_delta="-5" enabled="true"
280 follows="left|top" height="16" left="270" max_chars="135"
281 mouse_opaque="true" name="translate_language_combobox" width="160">
282 <combo_item type="string" length="1" enabled="true" name="System Default Language" value="default">
283 System Default
284 </combo_item>
285 <combo_item type="string" length="1" enabled="true" name="English" value="en">
286 English
287 </combo_item>
288
289 <!-- After "System Default" and "English", please keep the rest of these combo_items in alphabetical order by the first character in the string. -->
290
291 <combo_item type="string" length="1" enabled="true" name="Danish" value="da">
292 Dansk (Danish)
293 </combo_item>
294 <combo_item type="string" length="1" enabled="true" name="Deutsch(German)" value="de">
295 Deutsch (German)
296 </combo_item>
297 <combo_item type="string" length="1" enabled="true" name="Spanish" value="es">
298 Español (Spanish)
299 </combo_item>
300 <combo_item type="string" length="1" enabled="true" name="French" value="fr">
301 Français (French)
302 </combo_item>
303 <combo_item type="string" length="1" enabled="true" name="Italian" value="it">
304 Italiano (Italian)
305 </combo_item>
306 <combo_item type="string" length="1" enabled="true" name="Hungarian" value="hu">
307 Magyar (Hungarian)
308 </combo_item>
309 <combo_item type="string" length="1" enabled="true" name="Dutch" value="nl">
310 Nederlands (Dutch)
311 </combo_item>
312 <combo_item type="string" length="1" enabled="true" name="Polish" value="pl">
313 Polski (Polish)
314 </combo_item>
315 <combo_item type="string" length="1" enabled="true" name="Portugese" value="pt">
316 Portugués (Portuguese)
317 </combo_item>
318 <combo_item type="string" length="1" enabled="true" name="Russian" value="ru">
319 Русский (Russian)
320 </combo_item>
321 <combo_item type="string" length="1" enabled="true" name="Turkish" value="tr">
322 Türkçe (Turkish)
323 </combo_item>
324 <combo_item type="string" length="1" enabled="true" name="Ukrainian" value="uk">
325 Українська (Ukrainian)
326 </combo_item>
327 <combo_item type="string" length="1" enabled="true" name="Chinese" value="zh">
328 中文 (简体) (Chinese)
329 </combo_item>
330 <combo_item type="string" length="1" enabled="true" name="(Japanese)" value="ja">
331 日本語 (Japanese)
332 </combo_item>
333 <combo_item type="string" length="1" enabled="true" name="(Korean)" value="ko">
334 한국어 (Korean)
335 </combo_item>
336 </combo_box>
337
338
339 <button bottom="-20" follows="left|top" font="SansSerifSmall" height="18" label="?" 261 <button bottom="-20" follows="left|top" font="SansSerifSmall" height="18" label="?"
340 name="EmeraldHelp_SpellCheck" tool_tip="Click here for help regarding the settings in this page." 262 name="EmeraldHelp_SpellCheck" tool_tip="Click here for help regarding the settings in this page."
341 right="490" width="18"/> 263 right="490" width="18"/>