From d4f12f2630d41b0dc534c0d3d0d8ae7b3881c680 Mon Sep 17 00:00:00 2001
From: Andrew Dyukov <adyukov@productengine.com>
Date: Wed, 11 Aug 2010 20:39:34 +0300
Subject: [PATCH] EXT-8425 FIXED Translated names of "Home" and "Esc" keys
 shown in shortcuts.

Each key has KEY (typedef of U8) represantation which is paired with text version of key.
To get strings corresponding to keys LLKeyboard::stringFromKey() is used.

- Added translation of keys into LLKeyboard::stringFromKey().

- Added corresponding strings into strings.xml.

- Changed LLTrans::getKeyboardString() so that it correctly process key names that are not found in strings.xml(returns English name instead of "MissingString").

Reviewed by Vadim Savchuk at https://codereview.productengine.com/secondlife/r/845/

--HG--
branch : product-engine
---
 indra/llwindow/llkeyboard.cpp                  |  7 +++++++
 indra/llxuixml/lltrans.h                       | 11 ++++++-----
 indra/newview/skins/default/xui/en/strings.xml |  3 +++
 3 files changed, 16 insertions(+), 5 deletions(-)

diff --git a/indra/llwindow/llkeyboard.cpp b/indra/llwindow/llkeyboard.cpp
index 16cbf815e0b..8f26f980d15 100644
--- a/indra/llwindow/llkeyboard.cpp
+++ b/indra/llwindow/llkeyboard.cpp
@@ -343,6 +343,13 @@ std::string LLKeyboard::stringFromKey(KEY key)
 		buffer[1] = '\0';
 		res = std::string(buffer);
 	}
+
+	LLKeyStringTranslatorFunc *trans = gKeyboard->mStringTranslator;
+	if (trans != NULL)
+	{
+		res = trans(res.c_str());
+	}
+
 	return res;
 }
 
diff --git a/indra/llxuixml/lltrans.h b/indra/llxuixml/lltrans.h
index 856b9e04fc7..6c8d28b346a 100644
--- a/indra/llxuixml/lltrans.h
+++ b/indra/llxuixml/lltrans.h
@@ -103,11 +103,12 @@ class LLTrans
 		return findString(result, xml_desc, empty);
 	}
 
-        static std::string getKeyboardString(const char* keystring)
-        {
-                // These map directly - no need to specialize
-                return getString( ll_safe_string(keystring) );
-        }
+	static std::string getKeyboardString(const char* keystring)
+	{
+		std::string key_str(keystring);
+		std::string trans_str;
+		return findString(trans_str, "Key_" + key_str) ? trans_str : key_str; 
+	}
 
 	// get the default args
 	static const LLStringUtil::format_map_t& getDefaultArgs()
diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml
index 2aa34b746bd..7a292ab943f 100644
--- a/indra/newview/skins/default/xui/en/strings.xml
+++ b/indra/newview/skins/default/xui/en/strings.xml
@@ -2282,6 +2282,9 @@ Expected .wav, .tga, .bmp, .jpg, .jpeg, or .bvh
 	<string name="accel-win-alt">Alt+</string>
 	<string name="accel-win-shift">Shift+</string>
 
+	<string name="Key_Esc">Esc</string>
+	<string name="Key_Home">Home</string>
+
 	<!-- Previews -->
 	<string name="FileSaved">File Saved</string>
 	<string name="Receiving">Receiving</string>
-- 
GitLab