[PATCH] Localize keymap names in Keymap preferences

  • From: Ingo Weinhold <ingo_weinhold@xxxxxx>
  • Date: Mon, 13 May 2013 14:38:55 +0200

---
 build/jam/HaikuImage                    | 15 +++++++-------
 src/data/keymaps/Jamfile                | 36 +++++++++++++++++++++++++++++++++
 src/preferences/keymap/Jamfile          |  4 ++++
 src/preferences/keymap/KeymapWindow.cpp |  4 +++-
 4 files changed, 51 insertions(+), 8 deletions(-)

diff --git a/build/jam/HaikuImage b/build/jam/HaikuImage
index 479fc94..d2d3fd7 100644
--- a/build/jam/HaikuImage
+++ b/build/jam/HaikuImage
@@ -515,13 +515,14 @@ AddFilesToHaikuImage system data Canna dic canna : 
$(cannaDicCanna) ;
 AddDirectoryToHaikuImage system data Canna dic group ;
 AddDirectoryToHaikuImage system data Canna dic user ;
 
-local keymapFiles = [ Glob [ FDirName $(HAIKU_TOP) src data keymaps ]
-       : *.keymap ] ;
-keymapFiles = $(keymapFiles:BG=keymap) ;
-AddFilesToHaikuImage system data Keymaps : $(keymapFiles) ;
-AddSymlinkToHaikuImage system data Keymaps : Swedish : Finnish ;
-AddSymlinkToHaikuImage system data Keymaps : Slovene : Croatian ;
-AddSymlinkToHaikuImage system data Keymaps : US-International : Brazilian ;
+# keymaps
+AddFilesToHaikuImage system data Keymaps : $(HAIKU_KEYMAP_FILES) ;
+local keymapAlias ;
+for keymapAlias in $(HAIKU_KEYMAP_ALIASES) {
+       local aliasedTo = [ on $(keymapAlias) return $(HAIKU_KEYMAP_FILE) ] ;
+       AddSymlinkToHaikuImage system data Keymaps : $(aliasedTo:BSM)
+               : $(keymapAlias:BSM) ;
+}
 
 # Copy keyboard layout files to the image one-by-one.
 local keyboardLayoutsDir
diff --git a/src/data/keymaps/Jamfile b/src/data/keymaps/Jamfile
index ee802fb..758564b 100644
--- a/src/data/keymaps/Jamfile
+++ b/src/data/keymaps/Jamfile
@@ -25,6 +25,36 @@ actions MkKeymapComp1
        $(2[1]) -o "$(1)" -c "$(2[2-])" ;
 }
 
+
+rule AddKeymapAlias alias : keymap
+{
+       alias = $(alias:G=keymap) ;
+       HAIKU_KEYMAP_FILE on $(alias) = $(keymap:G=keymap) ;
+       HAIKU_KEYMAP_ALIASES += $(alias) ;
+}
+
+
+rule GenerateKeymapLocalizationHeader keymaps
+{
+       local keymapNames = $(HAIKU_KEYMAP_FILES:BSM) 
$(HAIKU_KEYMAP_ALIASES:BSM) ;
+       local header = <keymap-locale>KeymapNames.h ;
+       MakeLocateCommonPlatform $(header) ;
+       Always $(header) ;
+       HAIKU_KEYMAP_NAMES on $(header) = $(keymapNames) ;
+       GenerateKeymapLocalizationHeader1 $(header) ;
+       LocalClean clean : $(header) ;
+}
+
+
+actions GenerateKeymapLocalizationHeader1
+{
+       $(RM) $(1)
+       for name in "$(HAIKU_KEYMAP_NAMES)" ; do
+               echo "B_TRANSLATE_MARK_VOID(\"$name\")" >> $(1)
+       done
+}
+
+
 local keymapFiles = [ GLOB $(SUBDIR) : *.keymap ] ;
 
 # generate the binary file for the keymap files
@@ -33,5 +63,11 @@ for keymapFile in [ FGristFiles $(keymapFiles:D=) ] {
        local binary = $(keymapFile:BG=keymap) ;
        MkKeymapComp $(binary) : $(keymapFile) ;
        Package haiku-inputkit-cvs : $(binary) : boot home config settings 
Keymap ;
+       HAIKU_KEYMAP_FILES += $(binary) ;
 }
 
+AddKeymapAlias Finnish : Swedish ;
+AddKeymapAlias Croatian : Slovene ;
+AddKeymapAlias Brazilian : US-International ;
+
+GenerateKeymapLocalizationHeader ;
diff --git a/src/preferences/keymap/Jamfile b/src/preferences/keymap/Jamfile
index 173d67f..d29b179 100644
--- a/src/preferences/keymap/Jamfile
+++ b/src/preferences/keymap/Jamfile
@@ -1,9 +1,13 @@
 SubDir HAIKU_TOP src preferences keymap ;
 
+UseHeaders [ FDirName $(HAIKU_COMMON_PLATFORM_OBJECT_DIR) data keymaps ] ;
+
 SetSubDirSupportedPlatformsBeOSCompatible ;
 
 UsePrivateHeaders interface shared ;
 
+Includes [ FGristFiles KeymapWindow.cpp ] : <keymap-locale>KeymapNames.h ;
+
 Preference Keymap :
        KeyboardLayout.cpp
        KeyboardLayoutView.cpp
diff --git a/src/preferences/keymap/KeymapWindow.cpp 
b/src/preferences/keymap/KeymapWindow.cpp
index de078ef..fda665f 100644
--- a/src/preferences/keymap/KeymapWindow.cpp
+++ b/src/preferences/keymap/KeymapWindow.cpp
@@ -37,6 +37,7 @@
 #include "KeyboardLayoutView.h"
 #include "KeymapApplication.h"
 #include "KeymapListItem.h"
+#include "KeymapNames.h"
 
 
 #undef B_TRANSLATION_CONTEXT
@@ -827,7 +828,8 @@ KeymapWindow::_FillSystemMaps()
 
        if (directory.SetTo(path.Path()) == B_OK) {
                while (directory.GetNextRef(&ref) == B_OK) {
-                       fSystemListView->AddItem(new KeymapListItem(ref));
+                       fSystemListView->AddItem(
+                               new KeymapListItem(ref, 
B_TRANSLATE_NOCOLLECT(ref.name)));
                }
        }
 }
-- 
1.8.1.4


--knika-dfb55890-f73b-409e-9258-12b029ad5ebd--

Other related posts:

  • » [PATCH] Localize keymap names in Keymap preferences - Ingo Weinhold