Index: ui/qt/i10n.qrc
===================================================================
--- ui/qt/i10n.qrc	(révision 0)
+++ ui/qt/i10n.qrc	(révision 0)
@@ -0,0 +1,5 @@
+<RCC>
+    <qresource prefix="/lang">
+        <file>wireshark_fr.qm</file>
+    </qresource>
+</RCC>
Index: ui/qt/display_filter_combo.cpp
===================================================================
--- ui/qt/display_filter_combo.cpp	(révision 41338)
+++ ui/qt/display_filter_combo.cpp	(copie de travail)
@@ -39,7 +39,7 @@
     setEditable(true);
     setLineEdit(new DisplayFilterEdit());
     setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Fixed);
-    setAccessibleName("Dispaly filter selector");
+    setAccessibleName(tr("Display filter selector"));
     cur_display_filter_combo = this;
     setStyleSheet(
             "QComboBox {"
Index: ui/qt/main_welcome.cpp
===================================================================
--- ui/qt/main_welcome.cpp	(révision 41338)
+++ ui/qt/main_welcome.cpp	(copie de travail)
@@ -93,7 +93,7 @@
     grid->setColumnStretch(0, 60);
 
     // Banner row, 3 column span
-    QString banner = QString("Wireshark");
+    QString banner = QString(tr("Wireshark"));
     heading = new QLabel(banner);
     grid->addWidget(heading, 0, 0, 1, 3);
 
@@ -101,13 +101,13 @@
     column = new QVBoxLayout();
     grid->addLayout(column, 1, 0, Qt::AlignTop);
 
-    heading = new QLabel("<h1>Capture</h1>");
+    heading = new QLabel(tr("<h1>Capture</h1>"));
     column->addWidget(heading);
 
     iface_tree = new InterfaceTree(this);
     column->addWidget(iface_tree);
 
-    heading = new QLabel("<h1>Capture Help</h1>");
+    heading = new QLabel(tr("<h1>Capture Help</h1>"));
     column->addWidget(heading);
 
     // Column 2: Files
@@ -115,7 +115,7 @@
     grid->addLayout(column, 1, 1, Qt::AlignTop);
     grid->setColumnStretch(1, 70);
 
-    heading = new QLabel("<h1>Files</h1>");
+    heading = new QLabel(tr("<h1>Files</h1>"));
     column->addWidget(heading);
 
     m_recent_files.setStyleSheet(
@@ -133,7 +133,7 @@
     grid->addLayout(column, 1, 2, Qt::AlignTop);
     grid->setColumnStretch(2, 50);
 
-    heading = new QLabel("<h1>Online</h1>");
+    heading = new QLabel(tr("<h1>Online</h1>"));
     column->addWidget(heading);
 
     // Sigh. This doesn't work in Qt 4.7 on OS X.
@@ -171,7 +171,7 @@
                 itemLabel.append(QString("%1 Bytes").arg(ri->size));
             }
         } else {
-            itemLabel.append("not found)");
+            itemLabel.append(tr("not found)"));
         }
         rfFont.setItalic(!ri->accessible);
         rfItem = m_recent_files.item(rfRow);
Index: ui/qt/main_status_bar.cpp
===================================================================
--- ui/qt/main_status_bar.cpp	(révision 41338)
+++ ui/qt/main_status_bar.cpp	(copie de travail)
@@ -38,9 +38,9 @@
 #include <QSplitter>
 
 #ifdef HAVE_LIBPCAP
-#define DEF_READY_MESSAGE " Ready to load or capture"
+#define DEF_READY_MESSAGE QObject::tr(" Ready to load or capture")
 #else
-#define DEF_READY_MESSAGE " Ready to load file"
+#define DEF_READY_MESSAGE QObject::tr(" Ready to load file")
 #endif
 
 // XXX - The GTK+ code assigns priorities to these and pushes/pops accordingly.
@@ -93,15 +93,15 @@
 
     /* Do we have any packets? */
     if (cfile.count) {
-        packetsStr.append(QString("Packets: %1 Displayed: %2 Marked: %3")
+        packetsStr.append(QString(QObject::tr("Packets: %1 Displayed: %2 Marked: %3"))
                           .arg(cfile.count)
                           .arg(cfile.displayed_count)
                           .arg(cfile.marked_count));
         if(cfile.drops_known) {
-            packetsStr.append(QString(" Dropped: %1").arg(cfile.drops));
+            packetsStr.append(QString(QObject::tr(" Dropped: %1")).arg(cfile.drops));
         }
         if(cfile.ignored_count > 0) {
-            packetsStr.append(QString(" Ignored: %1").arg(cfile.ignored_count));
+            packetsStr.append(QString(QObject::tr(" Ignored: %1")).arg(cfile.ignored_count));
         }
         if(!cfile.is_tempfile) {
             /* Loading an existing file */
@@ -112,7 +112,7 @@
                                         computed_elapsed%1000));
         }
     } else {
-        packetsStr.append("No Packets");
+        packetsStr.append(QObject::tr("No Packets"));
     }
 
     cur_main_status_bar->pushPacketStatus(packetsStr);
Index: ui/qt/interface_tree.cpp
===================================================================
--- ui/qt/interface_tree.cpp	(révision 41338)
+++ ui/qt/interface_tree.cpp	(copie de travail)
@@ -46,7 +46,7 @@
     header()->setVisible(false);
     setRootIsDecorated(false);
     setUniformRowHeights(true);
-    setAccessibleName("Welcome screen list");
+    setAccessibleName(tr("Welcome screen list"));
 
     setStyleSheet(
             "QTreeWidget {"
@@ -60,7 +60,7 @@
 
     if (if_list == NULL && err == CANT_GET_INTERFACE_LIST) {
         ti = new QTreeWidgetItem();
-        QLabel *label = new QLabel(QString("<h3>No interfaces found</h3>%1").arg(QString().fromUtf8(err_str)));
+        QLabel *label = new QLabel(QString(tr("<h3>No interfaces found</h3>%1")).arg(QString().fromUtf8(err_str)));
         label->setWordWrap(true);
 
         setDisabled(true);
Index: ui/qt/byte_view_tab.cpp
===================================================================
--- ui/qt/byte_view_tab.cpp	(révision 41338)
+++ ui/qt/byte_view_tab.cpp	(copie de travail)
@@ -29,7 +29,7 @@
 ByteViewTab::ByteViewTab(QWidget *parent) :
     QTabWidget(parent)
 {
-    setAccessibleName("Packet bytes");
+    setAccessibleName(tr("Packet bytes"));
     addTab();
 }
 
Index: ui/qt/wireshark_fr.ts
===================================================================
--- ui/qt/wireshark_fr.ts	(révision 0)
+++ ui/qt/wireshark_fr.ts	(révision 0)
@@ -0,0 +1,239 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="fr_FR">
+<context>
+    <name>ByteViewTab</name>
+    <message>
+        <location filename="byte_view_tab.cpp" line="32"/>
+        <source>Packet bytes</source>
+        <translation>Taille du paquet</translation>
+    </message>
+</context>
+<context>
+    <name>DisplayFilterCombo</name>
+    <message>
+        <location filename="display_filter_combo.cpp" line="42"/>
+        <source>Display filter selector</source>
+        <translation>Le sélecteur de filtre</translation>
+    </message>
+</context>
+<context>
+    <name>DisplayFilterEdit</name>
+    <message>
+        <location filename="display_filter_edit.cpp" line="91"/>
+        <source>Display filter entry</source>
+        <oldsource>Dispaly filter entry</oldsource>
+        <translation>Filtre d&apos;entrée</translation>
+    </message>
+    <message>
+        <location filename="display_filter_edit.cpp" line="283"/>
+        <source>Invalid filter</source>
+        <translation>Filtre invalide</translation>
+    </message>
+</context>
+<context>
+    <name>InterfaceTree</name>
+    <message>
+        <location filename="interface_tree.cpp" line="49"/>
+        <source>Welcome screen list</source>
+        <translation>Page de bienvenue</translation>
+    </message>
+    <message>
+        <location filename="interface_tree.cpp" line="63"/>
+        <source>&lt;h3&gt;No interfaces found&lt;/h3&gt;%1</source>
+        <translation>&lt;h3&gt;Pas d&apos;interface trouvée&lt;/h3&gt;%1</translation>
+    </message>
+</context>
+<context>
+    <name>MainWelcome</name>
+    <message>
+        <location filename="main_welcome.cpp" line="96"/>
+        <source>Wireshark</source>
+        <translation></translation>
+    </message>
+    <message>
+        <location filename="main_welcome.cpp" line="104"/>
+        <source>&lt;h1&gt;Capture&lt;/h1&gt;</source>
+        <translation>&lt;h1&gt;Capture&lt;/h1&gt;</translation>
+    </message>
+    <message>
+        <location filename="main_welcome.cpp" line="110"/>
+        <source>&lt;h1&gt;Capture Help&lt;/h1&gt;</source>
+        <translation>&lt;h1&gt;Aide Capture&lt;/h1&gt;</translation>
+    </message>
+    <message>
+        <location filename="main_welcome.cpp" line="118"/>
+        <source>&lt;h1&gt;Files&lt;/h1&gt;</source>
+        <translation>&lt;h1&gt;Fichier&lt;/h1&gt;</translation>
+    </message>
+    <message>
+        <location filename="main_welcome.cpp" line="136"/>
+        <source>&lt;h1&gt;Online&lt;/h1&gt;</source>
+        <translation>&lt;h1&gt;En Ligne&lt;/h1&gt;</translation>
+    </message>
+    <message>
+        <location filename="main_welcome.cpp" line="174"/>
+        <source>not found)</source>
+        <translation>non trouvé)</translation>
+    </message>
+</context>
+<context>
+    <name>MainWindow</name>
+    <message>
+        <location filename="main_window.ui" line="14"/>
+        <source>Wireshark</source>
+        <translation></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="55"/>
+        <source>File</source>
+        <translation>Fichier</translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="59"/>
+        <source>Open Recent</source>
+        <translation>Dernier fichier ouvert</translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="71"/>
+        <source>Edit</source>
+        <translation>Editer</translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="76"/>
+        <source>Capture</source>
+        <translation>Capturer</translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="121"/>
+        <source>toolBar</source>
+        <translation>Bar d&apos;Outils</translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="132"/>
+        <source>Open</source>
+        <translation>Ouvrir</translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="135"/>
+        <source>Ctrl+O</source>
+        <translation></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="140"/>
+        <source>Quit</source>
+        <translation>Quitter</translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="143"/>
+        <source>Ctrl+Q</source>
+        <translation></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="148"/>
+        <source>Interfaces</source>
+        <translation>Interfaces</translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="161"/>
+        <source>Start</source>
+        <translation>Démarrer</translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="164"/>
+        <source>Start capturing packets</source>
+        <translation>Démarrer la capture de paquet</translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="167"/>
+        <source>Ctrl+K</source>
+        <translation></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="176"/>
+        <source>Stop</source>
+        <translation>Arreter</translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="179"/>
+        <source>Stop capturing packets</source>
+        <translation>Arreter la capturer de paquet</translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="184"/>
+        <source>Close</source>
+        <translation>Fermer</translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="187"/>
+        <source>Ctrl+W</source>
+        <translation></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="195"/>
+        <source>No files found</source>
+        <translation>Pas de fichier trouvé</translation>
+    </message>
+    <message>
+        <location filename="main_window.cpp" line="293"/>
+        <source>Wireshark: Open Capture File</source>
+        <translation></translation>
+    </message>
+    <message>
+        <location filename="main_window.cpp" line="383"/>
+        <source>Clear Menu</source>
+        <translation>Effacer menu</translation>
+    </message>
+</context>
+<context>
+    <name>ProtoTree</name>
+    <message>
+        <location filename="proto_tree.cpp" line="145"/>
+        <source>Packet details</source>
+        <translation>Détail du paquet</translation>
+    </message>
+    <message>
+        <location filename="proto_tree.cpp" line="187"/>
+        <source>, 1 byte</source>
+        <translation>, 1 octet</translation>
+    </message>
+    <message>
+        <location filename="proto_tree.cpp" line="189"/>
+        <source>, %1 bytes</source>
+        <translation>, %1 octets</translation>
+    </message>
+</context>
+<context>
+    <name>QObject</name>
+    <message>
+        <location filename="main_status_bar.cpp" line="41"/>
+        <source> Ready to load or capture</source>
+        <translation>Prêt pour charger ou capturer</translation>
+    </message>
+    <message>
+        <location filename="main_status_bar.cpp" line="43"/>
+        <source> Ready to load file</source>
+        <translation>Prêt pour charger un fichier</translation>
+    </message>
+    <message>
+        <location filename="main_status_bar.cpp" line="96"/>
+        <source>Packets: %1 Displayed: %2 Marked: %3</source>
+        <translation>Paquets: %1 Affichés: %2 Marqués: %3</translation>
+    </message>
+    <message>
+        <location filename="main_status_bar.cpp" line="101"/>
+        <source> Dropped: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_status_bar.cpp" line="104"/>
+        <source> Ignored: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_status_bar.cpp" line="115"/>
+        <source>No Packets</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+</TS>
Index: ui/qt/display_filter_edit.cpp
===================================================================
--- ui/qt/display_filter_edit.cpp	(révision 41338)
+++ ui/qt/display_filter_edit.cpp	(copie de travail)
@@ -88,7 +88,7 @@
     m_syntaxState = Empty;
     emptyFilterMessage = QString::fromUtf8("Apply a display filter" UTF8_HORIZONTAL_ELLIPSIS " <%1/>").arg(DEFAULT_MODIFIER);
 
-    setAccessibleName("Dispaly filter entry");
+    setAccessibleName(tr("Display filter entry"));
 
     //   DFCombo
     //     Bookmark (star)
@@ -280,7 +280,7 @@
         dfilter_free(dfp);
     } else {
         m_syntaxState = Invalid;
-        QString invalidMsg("Invalid filter");
+        QString invalidMsg(tr("Invalid filter"));
         if (dfilter_error_msg) {
             invalidMsg.append(QString().sprintf(": %s", dfilter_error_msg));
         }
Index: ui/qt/wireshark_fr.qm
===================================================================
Impossible d'afficher : fichier considéré comme binaire.
svn:mime-type = application/octet-stream

Modification de propriétés sur ui/qt/wireshark_fr.qm
___________________________________________________________________
Ajouté : svn:mime-type
   + application/octet-stream

Index: ui/qt/proto_tree.cpp
===================================================================
--- ui/qt/proto_tree.cpp	(révision 41338)
+++ ui/qt/proto_tree.cpp	(copie de travail)
@@ -142,7 +142,7 @@
 ProtoTree::ProtoTree(QWidget *parent) :
     QTreeWidget(parent)
 {
-    setAccessibleName("Packet details");
+    setAccessibleName(tr("Packet details"));
     setFont(get_monospace_font());
 
     connect(this, SIGNAL(currentItemChanged(QTreeWidgetItem*, QTreeWidgetItem*)),
@@ -184,9 +184,9 @@
 
             finfo_length = fi->length + fi->appendix_length;
             if (finfo_length == 1) {
-                itemInfo.append(", 1 byte");
+                itemInfo.append(tr(", 1 byte"));
             } else if (finfo_length > 1) {
-                itemInfo.append(QString(", %1 bytes").arg(finfo_length));
+                itemInfo.append(QString(tr(", %1 bytes")).arg(finfo_length));
             }
 
             emit protoItemUnselected();
Index: ui/qt/main.cpp
===================================================================
--- ui/qt/main.cpp	(révision 41338)
+++ ui/qt/main.cpp	(copie de travail)
@@ -117,6 +117,8 @@
 #include <QDebug>
 #include <QDateTime>
 #include <QTextCodec>
+#include <qtranslator.h>
+#include <qlocale.h>
 
 capture_file cfile;
 
@@ -655,6 +657,16 @@
     int                  optind_initial;
     int                  status;
 
+
+    //initialize language !
+
+    QString locale = QLocale::system().name();
+
+    g_log(NULL, G_LOG_LEVEL_DEBUG, "Translator %s", locale.toStdString().c_str());
+    QTranslator translator;
+    translator.load(QString(":/lang/wireshark_") + locale);
+    a.installTranslator(&translator);
+
     // Hopefully we won't have to use QString::fromUtf8() in as many places.
     QTextCodec *utf8codec = QTextCodec::codecForName("UTF-8");
     QTextCodec::setCodecForCStrings(utf8codec);
Index: ui/qt/main_window.cpp
===================================================================
--- ui/qt/main_window.cpp	(révision 41338)
+++ ui/qt/main_window.cpp	(copie de travail)
@@ -148,6 +148,7 @@
 //    main_set_for_capture_file(TRUE);
 
     ui->statusBar->popFileStatus();
+    //TODO:i10n
     QString msg = QString().sprintf("Loading: %s", get_basename(cf->filename));
     ui->statusBar->pushFileStatus(msg);
 }
@@ -379,7 +380,7 @@
         recentMenu->insertAction(NULL, ra);
 
         ra = new QAction(recentMenu);
-        ra->setText("Clear Menu");
+        ra->setText(tr("Clear Menu"));
         recentMenu->insertAction(NULL, ra);
         connect(ra, SIGNAL(triggered()), wsApp, SLOT(clearRecentItems()));
     } else {
Index: ui/qt/QtShark.pro
===================================================================
--- ui/qt/QtShark.pro	(révision 41338)
+++ ui/qt/QtShark.pro	(copie de travail)
@@ -290,8 +290,12 @@
 RESOURCES += \
     toolbar.qrc \
     welcome.qrc \
-    display_filter.qrc
+    display_filter.qrc \
+    i10n.qrc
 
+TRANSLATIONS = \
+        wireshark_fr.ts
+
 ICON = ../../packaging/macosx/Resources/Wireshark.icns
 
 win32: QMAKE_CLEAN += *.pdb
