Index: trunk/tmdmcreator/docs/uml/tmdmcreator/128033.diagram
===================================================================
--- trunk/tmdmcreator/docs/uml/tmdmcreator/128033.diagram	(revision 19)
+++ trunk/tmdmcreator/docs/uml/tmdmcreator/128033.diagram	(revision 21)
@@ -3,21 +3,21 @@
 classcanvas 128033 class_ref 128033 // TmDmCreator
   draw_all_relations default hide_attributes default hide_operations default hide_getset_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_context default show_members_multiplicity default show_members_initialization default show_attribute_modifiers default member_max_width 0 show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_relation_modifiers default show_relation_visibility default show_infonote default shadow default show_stereotype_properties default
-  xyz 34.4 74.1 2000
+  xyz 32.3 74.3 2000
 end
 classcanvas 128161 class_ref 128161 // TmDmCopier
   draw_all_relations default hide_attributes default hide_operations default hide_getset_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_context default show_members_multiplicity default show_members_initialization default show_attribute_modifiers default member_max_width 0 show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_relation_modifiers default show_relation_visibility default show_infonote default shadow default show_stereotype_properties default
-  xyz 400.9 184.2 2000
+  xyz 528.3 153.4 2000
 end
 classcanvas 128417 class_ref 141217 // TmDmProcessor
   draw_all_relations default hide_attributes default hide_operations default hide_getset_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_context default show_members_multiplicity default show_members_initialization default show_attribute_modifiers default member_max_width 0 show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_relation_modifiers default show_relation_visibility default show_infonote default shadow default show_stereotype_properties default
-  xyz 196.3 408.1 2000
+  xyz 103.9 345.5 2000
 end
 classcanvas 128545 class_ref 141345 // TmDmProcessorSimple
   draw_all_relations default hide_attributes default hide_operations default hide_getset_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_context default show_members_multiplicity default show_members_initialization default show_attribute_modifiers default member_max_width 0 show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_relation_modifiers default show_relation_visibility default show_infonote default shadow default show_stereotype_properties default
-  xyz 363.9 588.5 2000
+  xyz 363.7 588.3 2000
 end
 classcanvas 128801 class_ref 141473 // TmDmProcessorAttributs
   draw_all_relations default hide_attributes default hide_operations default hide_getset_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_context default show_members_multiplicity default show_members_initialization default show_attribute_modifiers default member_max_width 0 show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_relation_modifiers default show_relation_visibility default show_infonote default shadow default show_stereotype_properties default
-  xyz 17.9 693.8 2000
+  xyz 17.9 693.2 2000
 end
 relationcanvas 128673 relation_ref 128033 // <generalisation>
Index: trunk/tmdmcreator/docs/uml/tmdmcreator/33.session
===================================================================
--- trunk/tmdmcreator/docs/uml/tmdmcreator/33.session	(revision 19)
+++ trunk/tmdmcreator/docs/uml/tmdmcreator/33.session	(revision 21)
@@ -1,10 +1,11 @@
-window_sizes 959 1031 253 700 838 136
+window_sizes 1440 852 253 1181 659 136
 diagrams
   active  classdiagram_ref 128033 // tmdmcreator
-    1573 819 90 4 0 0
+    1177 639 90 4 0 0
 end
 show_stereotypes
-selected operation_ref 144161 // _ProcessAttributesValues
+selected operation_ref 150689 // SwitchCols
 open
+  class_ref 128033 // TmDmCreator
   class_ref 128161 // TmDmCopier
   operation_ref 136481 // ProcessBlock
Index: trunk/tmdmcreator/docs/uml/tmdmcreator/tmdmcreator.prj
===================================================================
--- trunk/tmdmcreator/docs/uml/tmdmcreator/tmdmcreator.prj	(revision 19)
+++ trunk/tmdmcreator/docs/uml/tmdmcreator/tmdmcreator.prj	(revision 21)
@@ -1,5 +1,5 @@
 format 75
 "tmdmcreator"
-  revision 6
+  revision 7
   modified_by 33 "lucien"
 
@@ -251,9 +251,10 @@
       operation 137505 "ProcessFiles"
 	public explicit_return_type "bool"
-	nparams 1
+	nparams 2
 	  param out name "errorsmsg" explicit_type "wxArrayString"
-	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} & ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
-"
-	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${t0} & ${p0}${)}${const}${volatile}${throw}${staticnl}{
+	  param in name "languagecolumn" explicit_type "int"
+	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} & ${p0}${v0}, ${t1} ${p1}${)}${const}${volatile}${throw}${abstract};
+"
+	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${t0} & ${p0}, ${t1} ${p1}${)}${const}${volatile}${throw}${staticnl}{
   ${body}}
 "
@@ -379,4 +380,32 @@
       end
 
+      attribute 155169 "m_LanguageCol"
+	protected explicit_type "int"
+	init_value "0"
+	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
+"
+	java_decl ""
+	php_decl ""
+	python_decl ""
+	idl_decl ""
+	set_oper operation_ref 150817 // SetLanguageColumn
+      end
+
+      operation 150689 "SwitchCols"
+	protected explicit_return_type "wxString"
+	nparams 2
+	  param in name "cols" explicit_type "wxArrayString"
+	  param in name "values" explicit_type "wxArrayString"
+	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} * ${p0}, ${t1} * ${p1}${)}${const}${volatile}${throw}${abstract};
+"
+	cpp_def "${comment}${inline}${type} ${class}::${name}${(}const ${t0} & ${p0}, const ${t1} & ${p1}${)}${const}${volatile}${throw}${staticnl}{
+  ${body}}
+"
+	
+	
+	
+	
+      end
+
       operation 135585 "TmDmProcessor"
 	public explicit_return_type ""
@@ -435,4 +464,26 @@
 	
 	
+      end
+
+      operation 150817 "SetLanguageColumn"
+	force_body_gen public explicit_return_type "void"
+	nparams 1
+	  param in name "value" explicit_type "int"
+	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${)}${const}${volatile}${throw};
+"
+	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${t0} ${p0}${)}${const}${volatile}${throw}${staticnl}{
+  m_LanguageCol = ${p0};
+}
+"
+	cpp_name_spec "SetLanguageColumn"
+	
+	java_name_spec "set${Name}"
+	
+	php_name_spec "set${Name}"
+	
+	python_name_spec "set${Name}"
+	
+	idl_name_spec "set_${name}"
+	set_of_attribute attribute_ref 155169 // m_LanguageCol
       end
     end
Index: trunk/tmdmcreator/src/main.cpp
===================================================================
--- trunk/tmdmcreator/src/main.cpp	(revision 19)
+++ trunk/tmdmcreator/src/main.cpp	(revision 21)
@@ -35,6 +35,7 @@
         wxCMD_LINE_VAL_NONE, wxCMD_LINE_OPTION_HELP },
     { wxCMD_LINE_SWITCH, "v", "verbose", "Be more verbose" },
-    { wxCMD_LINE_SWITCH, "t", "toolmap", "toolmap output" },
-    { wxCMD_LINE_SWITCH, "o", "overwrite", "overwrite output" },    
+    { wxCMD_LINE_SWITCH, "t", "toolmap", "toolmap output (default is SQL)" },
+    { wxCMD_LINE_SWITCH, "o", "overwrite", "overwrite output" },
+    { wxCMD_LINE_OPTION, "l", "language", "language column (default is 0)", wxCMD_LINE_VAL_NUMBER, wxCMD_LINE_PARAM_OPTIONAL},
     { wxCMD_LINE_PARAM, NULL, NULL, "[base structure sql file]"},
     { wxCMD_LINE_PARAM, NULL, NULL, "[user structure sql file]"},
@@ -83,4 +84,8 @@
     bool bVerbose = parser.Found("verbose");
     bool bToolMap = parser.Found("toolmap");
+    long myLanguage = 0;
+    if(parser.Found("language", &myLanguage) == true) {
+        wxPrintf(_("Using language column: %ld\n"), myLanguage);
+    }
     if (parser.Found("overwrite") && wxFileExists(parser.GetParam(3))) {
         wxRemoveFile(parser.GetParam(3));
@@ -108,5 +113,5 @@
     }
     
-    if (myCreator.ProcessFiles(myErrors) == false) {
+    if (myCreator.ProcessFiles(myErrors, myLanguage) == false) {
         if (bVerbose == true) {
             PrintArray(myErrors);
Index: trunk/tmdmcreator/src/tmdmcreator.cpp
===================================================================
--- trunk/tmdmcreator/src/tmdmcreator.cpp	(revision 19)
+++ trunk/tmdmcreator/src/tmdmcreator.cpp	(revision 21)
@@ -91,5 +91,5 @@
 
 
-bool TmDmCreator::ProcessFiles(wxArrayString & errorsmsg) {
+bool TmDmCreator::ProcessFiles(wxArrayString & errorsmsg, int languagecolumn) {
     errorsmsg.Clear();
     // Copy structure
@@ -109,4 +109,5 @@
     // Process layers
     TmDmProcessorSimple myProc(m_FileNameUserContent, m_FileNameOutSQL);
+    myProc.SetLanguageColumn(languagecolumn);
     int myThematicLayersStart = myProc.FindBlock(_T("thematic_layers"));
     if (myThematicLayersStart == wxNOT_FOUND) {
@@ -132,4 +133,5 @@
     // Process attributs
     TmDmProcessorAttributs myProcAttributs (m_FileNameUserContent, m_FileNameOutSQL);
+    myProcAttributs.SetLanguageColumn(languagecolumn);
     int myAttributStart = myProcAttributs.FindBlock(_T("attributs"));
     if (myAttributStart == wxNOT_FOUND) {
Index: trunk/tmdmcreator/src/tmdmcreator.h
===================================================================
--- trunk/tmdmcreator/src/tmdmcreator.h	(revision 19)
+++ trunk/tmdmcreator/src/tmdmcreator.h	(revision 21)
@@ -42,5 +42,5 @@
     
     bool CheckFiles(wxArrayString & errormsg);
-    bool ProcessFiles(wxArrayString & errorsmsg);    
+    bool ProcessFiles(wxArrayString & errorsmsg, int languagecolumn);
 };
 #endif
Index: trunk/tmdmcreator/src/tmdmprocessor.cpp
===================================================================
--- trunk/tmdmcreator/src/tmdmprocessor.cpp	(revision 19)
+++ trunk/tmdmcreator/src/tmdmprocessor.cpp	(revision 21)
@@ -21,4 +21,5 @@
     m_FileSrc = src;
     m_FileDst = dest;
+    m_LanguageCol = 0;
 }
 
@@ -42,4 +43,29 @@
     }
     return wxNOT_FOUND;
+}
+
+
+
+wxString TmDmProcessor::SwitchCols(wxArrayString * cols, wxArrayString * values, int item) {
+    if (m_LanguageCol == 0) {
+        return values->Item(item);
+    }
+    
+
+    if(cols->Item(item).Contains(_T("_0")) == true) {
+        return values->Item(item + m_LanguageCol);
+    }
+    
+    wxString myColName = wxString::Format(_T("_%d"), m_LanguageCol);
+    if (cols->Item(item).Contains(myColName) == true) {
+        return values->Item(item - m_LanguageCol);
+    }
+    return values->Item(item);
+}
+
+
+
+void TmDmProcessor::SetLanguageColumn(int value) {
+    m_LanguageCol = value;
 }
 
@@ -104,5 +130,5 @@
         myInsert.Append(_T(") VALUES ("));
         for (unsigned int i = 0; i< mySQLCols.GetCount(); i++) {
-            myInsert.Append(wxString::Format(_T("\"%s\","), myValues.Item(i)));
+            myInsert.Append(wxString::Format(_T("\"%s\","), SwitchCols(&mySQLCols, &myValues, i)));
         }
         myInsert.RemoveLast();
@@ -232,5 +258,5 @@
         wxString myInsert = _T("INSERT INTO `dmn_catalog` VALUES (");
         for (unsigned int i = START_COL; i< mySQLCols.GetCount(); i++) {
-            myInsert.Append(wxString::Format(_T("\"%s\","), myValues.Item(i)));
+            myInsert.Append(wxString::Format(_T("\"%s\","), SwitchCols(&mySQLCols, &myValues, i)));
         }
         myInsert.RemoveLast();
Index: trunk/tmdmcreator/src/tmdmprocessor.h
===================================================================
--- trunk/tmdmcreator/src/tmdmprocessor.h	(revision 19)
+++ trunk/tmdmcreator/src/tmdmprocessor.h	(revision 21)
@@ -33,4 +33,7 @@
     wxFileName m_FileDst;
     
+    int m_LanguageCol;
+    wxString SwitchCols(wxArrayString * cols, wxArrayString * values, int item);
+    
 public:
     TmDmProcessor(const wxFileName & src, const wxFileName & dest);
@@ -39,4 +42,6 @@
     int FindBlock(const wxString & blockname);
     virtual bool ProcessBlock(int blockstart, const wxString & tablename) = 0;
+
+    void SetLanguageColumn(int value);
 };
 
