changeset 155:edab92f3ea0b

* Add translation support -- useful for proper plural handling even in English
author Chris Cannam
date Thu, 02 Dec 2010 21:13:53 +0000
parents 6bcb4a4d6521
children 4999dbf3a266
files confirmcommentdialog.cpp easyhg.pro easyhg.qrc easyhg_en.qm easyhg_en.ts main.cpp mainwindow.cpp
diffstat 7 files changed, 1035 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/confirmcommentdialog.cpp	Thu Dec 02 18:04:21 2010 +0000
+++ b/confirmcommentdialog.cpp	Thu Dec 02 21:13:53 2010 +0000
@@ -87,7 +87,7 @@
     if (files.size() <= 10) {
         text = buildFilesText(introText, files);
     } else {
-        text = "<qt>" + introTextWithCount.arg(files.size()) + "</qt>";
+        text = "<qt>" + introTextWithCount + "</qt>";
     }
     return (QMessageBox::information(parent,
                                      title,
@@ -107,7 +107,7 @@
     if (files.size() <= 10) {
         text = buildFilesText(introText, files);
     } else {
-        text = "<qt>" + introTextWithCount.arg(files.size()) + "</qt>";
+        text = "<qt>" + introTextWithCount + "</qt>";
     }
     return (QMessageBox::warning(parent,
                                  title,
@@ -151,7 +151,7 @@
     if (files.size() <= 10) {
         text = buildFilesText(introText, files);
     } else {
-        text = "<qt>" + introTextWithCount.arg(files.size());
+        text = "<qt>" + introTextWithCount;
     }
     text += tr("<p>Please enter your comment:</qt>");
     return confirmAndComment(parent, title, text, comment, longComment);
--- a/easyhg.pro	Thu Dec 02 18:04:21 2010 +0000
+++ b/easyhg.pro	Thu Dec 02 21:13:53 2010 +0000
@@ -7,6 +7,8 @@
     DESTDIR = .
 }
 
+TRANSLATIONS = easyhg_en.ts
+
 OBJECTS_DIR = o
 MOC_DIR = o
 
--- a/easyhg.qrc	Thu Dec 02 18:04:21 2010 +0000
+++ b/easyhg.qrc	Thu Dec 02 21:13:53 2010 +0000
@@ -22,5 +22,6 @@
         <file>images/hdd_unmount.png</file>
         <file>images/hdd_unmount-64.png</file>
         <file>images/fileopen.png</file>
+	<file>easyhg_en.qm</file>
     </qresource>
 </RCC>
Binary file easyhg_en.qm has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/easyhg_en.ts	Thu Dec 02 21:13:53 2010 +0000
@@ -0,0 +1,1007 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="en_US">
+<context>
+    <name>ChangesetItem</name>
+    <message>
+        <location filename="changesetitem.cpp" line="111"/>
+        <source>&lt;qt&gt;&amp;nbsp;&lt;b&gt;Revision: &lt;/b&gt;%1&lt;/qt&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="changesetitem.cpp" line="118"/>
+        <source>Copy identifier to clipboard</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="changesetitem.cpp" line="127"/>
+        <source>Diff to parent %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="changesetitem.cpp" line="136"/>
+        <source>Diff to parent</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="changesetitem.cpp" line="141"/>
+        <source>Diff to current working folder</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="changesetitem.cpp" line="146"/>
+        <source>Update to this revision</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="changesetitem.cpp" line="149"/>
+        <source>Merge from here to current</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="changesetitem.cpp" line="154"/>
+        <source>Add tag...</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ConfirmCommentDialog</name>
+    <message>
+        <location filename="confirmcommentdialog.cpp" line="156"/>
+        <source>&lt;p&gt;Please enter your comment:&lt;/qt&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>FileStatusWidget</name>
+    <message>
+        <location filename="filestatuswidget.cpp" line="42"/>
+        <source>Local:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="filestatuswidget.cpp" line="50"/>
+        <source>Remote:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="filestatuswidget.cpp" line="55"/>
+        <source>State:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="filestatuswidget.cpp" line="65"/>
+        <source>You have made no changes.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="filestatuswidget.cpp" line="68"/>
+        <source>Unmodified:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="filestatuswidget.cpp" line="69"/>
+        <source>Modified:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="filestatuswidget.cpp" line="70"/>
+        <source>Added:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="filestatuswidget.cpp" line="71"/>
+        <source>Removed:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="filestatuswidget.cpp" line="72"/>
+        <source>Missing:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="filestatuswidget.cpp" line="73"/>
+        <source>Untracked:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="filestatuswidget.cpp" line="75"/>
+        <source>You have not changed these files.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="filestatuswidget.cpp" line="76"/>
+        <source>You have changed these files since you last committed them.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="filestatuswidget.cpp" line="77"/>
+        <source>These files will be added to version control next time you commit.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="filestatuswidget.cpp" line="78"/>
+        <source>These files will be removed from version control next time you commit.&lt;br&gt;They will not be deleted from the local folder.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="filestatuswidget.cpp" line="80"/>
+        <source>These files are recorded in the version control, but absent from your working folder.&lt;br&gt;If you intended to delete them, select them and use Remove to tell the version control system about it.&lt;br&gt;If you deleted them by accident, select them and use Revert to restore their previous contents.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="filestatuswidget.cpp" line="83"/>
+        <source>These files are in your working folder but are not under version control.&lt;br&gt;Select a file and use Add to place it under version control or Ignore to remove it from this list.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="filestatuswidget.cpp" line="86"/>
+        <source>Files highlighted &lt;font color=#d40000&gt;in red&lt;/font&gt; have appeared since your most recent commit or update.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>HgRunner</name>
+    <message>
+        <location filename="hgrunner.cpp" line="119"/>
+        <source>User name:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="hgrunner.cpp" line="121"/>
+        <source>User name for &quot;%1&quot;:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="hgrunner.cpp" line="125"/>
+        <source>Enter user name</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="hgrunner.cpp" line="146"/>
+        <source>Password:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="hgrunner.cpp" line="149"/>
+        <source>Password for &quot;%1&quot; at &quot;%2&quot;:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="hgrunner.cpp" line="152"/>
+        <source>Password for user &quot;%1&quot;:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="hgrunner.cpp" line="158"/>
+        <source>Enter password</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>HgTabWidget</name>
+    <message>
+        <location filename="hgtabwidget.cpp" line="40"/>
+        <source>My work</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="hgtabwidget.cpp" line="44"/>
+        <source>History</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>IncomingDialog</name>
+    <message>
+        <location filename="incomingdialog.cpp" line="38"/>
+        <source>No changes waiting to pull</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="incomingdialog.cpp" line="41"/>
+        <source>The command output was:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message numerus="yes">
+        <location filename="incomingdialog.cpp" line="46"/>
+        <source>There are %n change(s) ready to pull</source>
+        <translation type="unfinished">
+            <numerusform>There is %n change ready to pull</numerusform>
+            <numerusform>There are %n changes ready to pull</numerusform>
+        </translation>
+    </message>
+</context>
+<context>
+    <name>MainWindow</name>
+    <message>
+        <location filename="mainwindow.cpp" line="63"/>
+        <location filename="mainwindow.cpp" line="1045"/>
+        <source>EasyMercurial</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="130"/>
+        <source>About EasyMercurial</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="131"/>
+        <source>&lt;qt&gt;&lt;h2&gt;About EasyMercurial&lt;/h2&gt;&lt;p&gt;EasyMercurial is a simple user interface for the Mercurial version control system.&lt;/p&gt;&lt;p&gt;EasyMercurial is based on hgExplorer by Jari Korhonen, with thanks.&lt;br&gt;EasyMercurial development carried out by Chris Cannam for soundsoftware.ac.uk at the Centre for Digital Music, Queen Mary, University of London.&lt;ul&gt;&lt;li&gt;Copyright &amp;copy; 2010 Jari Korhonen&lt;/li&gt;&lt;li&gt;Copyright &amp;copy; 2010 Chris Cannam&lt;/li&gt;&lt;li&gt;Copyright &amp;copy; 2010 Queen Mary, University of London&lt;/li&gt;&lt;/ul&gt;&lt;p&gt; This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.  See the file COPYING included with this distribution for more information.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="321"/>
+        <source>Commit files</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="370"/>
+        <source>Tag</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="371"/>
+        <source>Enter tag:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="526"/>
+        <source>Revert files</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="326"/>
+        <location filename="mainwindow.cpp" line="328"/>
+        <location filename="mainwindow.cpp" line="531"/>
+        <location filename="mainwindow.cpp" line="533"/>
+        <source>&lt;h3&gt;%1&lt;/h3&gt;&lt;p&gt;%2</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="327"/>
+        <source>You are about to commit the following files:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message numerus="yes">
+        <location filename="mainwindow.cpp" line="329"/>
+        <source>You are about to commit %n file(s):</source>
+        <translation type="unfinished">
+            <numerusform>You are about to commit %n file:</numerusform>
+            <numerusform>You are about to commit %n files:</numerusform>
+        </translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="532"/>
+        <source>You are about to &lt;b&gt;revert&lt;/b&gt; the following files to their previous committed state.&lt;br&gt;&lt;br&gt;This will &lt;b&gt;throw away any changes&lt;/b&gt; that you have made to these files but have not committed:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message numerus="yes">
+        <location filename="mainwindow.cpp" line="534"/>
+        <source>You are about to &lt;b&gt;revert&lt;/b&gt; %n file(s).&lt;br&gt;&lt;br&gt;This will &lt;b&gt;throw away any changes&lt;/b&gt; that you have made to these files but have not committed.</source>
+        <oldsource>You are about to &lt;b&gt;revert&lt;/b&gt; %n files.&lt;br&gt;&lt;br&gt;This will &lt;b&gt;throw away any changes&lt;/b&gt; that you have made to these files but have not committed.</oldsource>
+        <translation type="unfinished">
+            <numerusform>You are about to &lt;b&gt;revert&lt;/b&gt; %n file.&lt;br&gt;&lt;br&gt;This will &lt;b&gt;throw away any changes&lt;/b&gt; that you have made to this file but have not committed.</numerusform>
+            <numerusform>You are about to &lt;b&gt;revert&lt;/b&gt; %n files.&lt;br&gt;&lt;br&gt;This will &lt;b&gt;throw away any changes&lt;/b&gt; that you have made to these files but have not committed.</numerusform>
+        </translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="621"/>
+        <source>Confirm pull</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="622"/>
+        <source>Confirm pull from remote repository</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="623"/>
+        <source>You are about to pull from the following remote repository:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="636"/>
+        <source>Confirm push</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="637"/>
+        <source>Confirm push to remote repository</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="638"/>
+        <source>You are about to push to the following remote repository:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="714"/>
+        <source>Open Repository</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="715"/>
+        <source>&lt;qt&gt;&lt;big&gt;What would you like to open?&lt;/big&gt;&lt;/qt&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="719"/>
+        <source>&lt;qt&gt;&lt;center&gt;&lt;img src=&quot;:images/browser-64.png&quot;&gt;&lt;br&gt;Remote repository&lt;/center&gt;&lt;/qt&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="720"/>
+        <source>Open a remote Mercurial repository, by cloning from its URL into a local folder.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="724"/>
+        <source>&lt;qt&gt;&lt;center&gt;&lt;img src=&quot;:images/hglogo-64.png&quot;&gt;&lt;br&gt;Local repository&lt;/center&gt;&lt;/qt&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="725"/>
+        <source>Open an existing local Mercurial repository.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="729"/>
+        <source>&lt;qt&gt;&lt;center&gt;&lt;img src=&quot;:images/hdd_unmount-64.png&quot;&gt;&lt;br&gt;File folder&lt;/center&gt;&lt;/qt&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="730"/>
+        <source>Open a local folder, by creating a Mercurial repository in it.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="779"/>
+        <source>File chosen</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="780"/>
+        <source>&lt;qt&gt;&lt;b&gt;Folder required&lt;/b&gt;&lt;br&gt;&lt;br&gt;You asked to open &quot;%1&quot;.&lt;br&gt;This is a file; to open a repository, you need to choose a folder.&lt;/qt&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="787"/>
+        <location filename="mainwindow.cpp" line="857"/>
+        <source>Folder does not exist</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="788"/>
+        <source>&lt;qt&gt;&lt;b&gt;Folder does not exist&lt;/b&gt;&lt;br&gt;&lt;br&gt;You asked to open &quot;%1&quot;.&lt;br&gt;This folder does not exist, and it cannot be created because its parent does not exist either.&lt;/qt&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="795"/>
+        <location filename="mainwindow.cpp" line="811"/>
+        <source>Path is in existing repository</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="796"/>
+        <source>&lt;qt&gt;&lt;b&gt;Path is in an existing repository&lt;/b&gt;&lt;br&gt;&lt;br&gt;You asked to initialise a repository at &quot;%1&quot;.&lt;br&gt;This path is already inside an existing repository.&lt;/qt&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="803"/>
+        <location filename="mainwindow.cpp" line="819"/>
+        <source>Path is a file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="804"/>
+        <source>&lt;qt&gt;&lt;b&gt;Path is a file&lt;/b&gt;&lt;br&gt;&lt;br&gt;You asked to initialise a repository at &quot;%1&quot;.&lt;br&gt;This is an existing file; it is only possible to initialise in folders.&lt;/qt&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="812"/>
+        <source>&lt;qt&gt;&lt;b&gt;Local path is in an existing repository&lt;/b&gt;&lt;br&gt;&lt;br&gt;You asked to open a remote repository by cloning it to the local path &quot;%1&quot;.&lt;br&gt;This path is already inside an existing repository.&lt;br&gt;Please provide a new folder name for the local repository.&lt;/qt&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="820"/>
+        <source>&lt;qt&gt;&lt;b&gt;Local path is a file&lt;/b&gt;&lt;br&gt;&lt;br&gt;You asked to open a remote repository by cloning it to the local path &quot;%1&quot;.&lt;br&gt;This path is an existing file.&lt;br&gt;Please provide a new folder name for the local repository.&lt;/qt&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="827"/>
+        <source>Folder exists</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="828"/>
+        <source>&lt;qt&gt;&lt;b&gt;Local folder already exists&lt;/b&gt;&lt;br&gt;&lt;br&gt;You asked to open a remote repository by cloning it to the local path &quot;%1&quot;.&lt;br&gt;This is the path of an existing folder.&lt;br&gt;Please provide a new folder name for the local repository.&lt;/qt&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="835"/>
+        <source>Path is inside a repository</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="836"/>
+        <source>&lt;qt&gt;&lt;b&gt;Open the repository that contains this path?&lt;/b&gt;&lt;br&gt;&lt;br&gt;You asked to open &quot;%1&quot;.&lt;br&gt;This is not the root folder of a repository.&lt;br&gt;But it is inside a repository, whose root is at &quot;%2&quot;. &lt;br&gt;&lt;br&gt;Would you like to open that repository instead?&lt;/qt&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="846"/>
+        <source>Folder has no repository</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="847"/>
+        <source>&lt;qt&gt;&lt;b&gt;Initialise a repository here?&lt;/b&gt;&lt;br&gt;&lt;br&gt;You asked to open &quot;%1&quot;.&lt;br&gt;This folder does not contain a Mercurial repository.&lt;br&gt;&lt;br&gt;Would you like to initialise a repository here?&lt;/qt&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="858"/>
+        <source>&lt;qt&gt;&lt;b&gt;Initialise a new repository?&lt;/b&gt;&lt;br&gt;&lt;br&gt;You asked to open &quot;%1&quot;.&lt;br&gt;This folder does not yet exist.&lt;br&gt;&lt;br&gt;Would you like to create the folder and initialise a new empty repository in it?&lt;/qt&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="868"/>
+        <source>Repository exists</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="869"/>
+        <source>&lt;qt&gt;&lt;b&gt;Open existing repository?&lt;/b&gt;&lt;br&gt;&lt;br&gt;You asked to initialise a new repository at &quot;%1&quot;.&lt;br&gt;This folder already contains a repository.  Would you like to open it?&lt;/qt&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="1034"/>
+        <source>Ok</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="1045"/>
+        <source>Mercurial command did not return any output.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message numerus="yes">
+        <location filename="mainwindow.cpp" line="1127"/>
+        <source>Pushed %n changeset(s)</source>
+        <translation type="unfinished">
+            <numerusform>Pushed %n changeset</numerusform>
+            <numerusform>Pushed %n changesets</numerusform>
+        </translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="1129"/>
+        <source>No changes to push</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="1131"/>
+        <source>Push complete</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="1133"/>
+        <source>The push command output was:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message numerus="yes">
+        <location filename="mainwindow.cpp" line="1143"/>
+        <source>Pulled %n changeset(s)</source>
+        <translation type="unfinished">
+            <numerusform>Pulled %n changeset</numerusform>
+            <numerusform>Pulled %n changesets</numerusform>
+        </translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="1145"/>
+        <source>No changes to pull</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="1147"/>
+        <source>Pull complete</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="1149"/>
+        <source>The pull command output was:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="1190"/>
+        <source>&lt;qt&gt;&lt;h3&gt;Command failed&lt;/h3&gt;&lt;p&gt;The following command failed:&lt;/p&gt;&lt;code&gt;%1&lt;/code&gt;%2&lt;/qt&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="1196"/>
+        <source>&lt;p&gt;Its output said:&lt;/p&gt;&lt;code&gt;%1&lt;/code&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="1201"/>
+        <source>Command failed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="1351"/>
+        <location filename="mainwindow.cpp" line="1694"/>
+        <source>Update</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="1356"/>
+        <location filename="mainwindow.cpp" line="1700"/>
+        <source>Merge</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="1362"/>
+        <source>Merge retry</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="1363"/>
+        <source>Merge retry successful.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="1625"/>
+        <source>the default branch</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="1627"/>
+        <source>branch &quot;%1&quot;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="1630"/>
+        <source>On %1. Not at the head of the branch: consider updating</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="1632"/>
+        <source>&lt;b&gt;Awaiting merge&lt;/b&gt; on %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="1634"/>
+        <source>At the head of %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="1643"/>
+        <source>Init local repository</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="1644"/>
+        <source>Create an empty local repository in selected folder</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="1646"/>
+        <source>Clone from remote</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="1647"/>
+        <source>Clone from remote repository into local repository in selected folder</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="1649"/>
+        <source>Open...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="1650"/>
+        <source>Open repository</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="1653"/>
+        <source>Settings...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="1654"/>
+        <source>View and change application settings</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="1657"/>
+        <source>Exit</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="1659"/>
+        <source>Exit application</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="1663"/>
+        <source>Refresh</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="1664"/>
+        <source>Refresh (info of) status of workfolder files</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="1666"/>
+        <source>Preview</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="1667"/>
+        <source>View info of changesets incoming to us from remote repository (on pull operation)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="1669"/>
+        <source>Pull</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="1670"/>
+        <source>Pull changesets from remote repository to local repository</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="1672"/>
+        <source>Push</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="1673"/>
+        <source>Push local changesets to remote repository</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="1676"/>
+        <location filename="mainwindow.cpp" line="1679"/>
+        <source>Diff</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="1677"/>
+        <source>Filediff: View differences between selected working folder file and local repository file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="1680"/>
+        <source>Folderdiff: View all differences between working folder files and local repository files</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="1682"/>
+        <source>View changesetdiff</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="1683"/>
+        <source>Change set diff: View differences between all files of 2 repository changesets</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="1685"/>
+        <source>Revert</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="1686"/>
+        <source>Undo selected working folder file changes (return to local repository version)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="1688"/>
+        <source>Add</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="1689"/>
+        <source>Add working folder file(s) (selected or all yet untracked) to local repository (on next commit)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="1691"/>
+        <source>Remove</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="1692"/>
+        <source>Remove selected working folder file from local repository (on next commit)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="1695"/>
+        <source>Update working folder from local repository</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="1697"/>
+        <source>Commit</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="1698"/>
+        <source>Save selected file(s) or all changed files in working folder (and all subfolders) to local repository</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="1701"/>
+        <source>Merge two local repository changesets to working folder</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="1707"/>
+        <source>Annotate</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="1708"/>
+        <source>Show line-by-line version information for selected file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="1710"/>
+        <source>Resolve (list)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="1711"/>
+        <source>Resolve (list): Show list of files needing merge</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="1713"/>
+        <source>Resolve (mark)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="1714"/>
+        <source>Resolve (mark): Mark selected file status as resolved</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="1716"/>
+        <source>Retry merge</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="1717"/>
+        <source>Retry merge after failed merge attempt.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="1719"/>
+        <source>Tag revision</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="1720"/>
+        <source>Give decsriptive name (tag) to current workfolder parent revision.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="1722"/>
+        <source>Edit .hgignore</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="1723"/>
+        <source>Edit .hgignore file (file contains names of files that should be ignored by mercurial)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="1725"/>
+        <source>Serve (via http)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="1726"/>
+        <source>Serve local repository via http for workgroup access</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="1729"/>
+        <source>About</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="1730"/>
+        <source>Show the application&apos;s About box</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="1732"/>
+        <source>About Qt</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="1733"/>
+        <source>Show the Qt library&apos;s About box</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="1736"/>
+        <source>Clear selections</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="1742"/>
+        <location filename="mainwindow.cpp" line="1777"/>
+        <source>File</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="1753"/>
+        <source>Advanced</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="1770"/>
+        <source>Help</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="1816"/>
+        <source>Ready</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>MultiChoiceDialog</name>
+    <message>
+        <location filename="multichoicedialog.cpp" line="55"/>
+        <source>&amp;URL:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="multichoicedialog.cpp" line="65"/>
+        <location filename="multichoicedialog.cpp" line="292"/>
+        <source>&amp;File:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="multichoicedialog.cpp" line="76"/>
+        <source>Browse...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="multichoicedialog.cpp" line="186"/>
+        <source>Open Directory</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="multichoicedialog.cpp" line="195"/>
+        <source>Open File</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="multichoicedialog.cpp" line="300"/>
+        <location filename="multichoicedialog.cpp" line="316"/>
+        <source>&amp;Folder:</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QApplication</name>
+    <message>
+        <location filename="main.cpp" line="29"/>
+        <source>EasyMercurial</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QObject</name>
+    <message>
+        <location filename="changeset.cpp" line="72"/>
+        <source>Identifier</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="changeset.cpp" line="73"/>
+        <source>Author</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="changeset.cpp" line="74"/>
+        <source>Date</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="changeset.cpp" line="75"/>
+        <source>Branch</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="changeset.cpp" line="76"/>
+        <source>Tag</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="changeset.cpp" line="77"/>
+        <source>Comment</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RepositoryDialog</name>
+    <message>
+        <location filename="repositorydialog.cpp" line="24"/>
+        <source>Open Repository</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>StartupDialog</name>
+    <message>
+        <location filename="startupdialog.cpp" line="29"/>
+        <source>About me</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="startupdialog.cpp" line="39"/>
+        <source>&lt;qt&gt;&lt;big&gt;Welcome to EasyMercurial!&lt;/qt&gt;&lt;/big&gt;&lt;br&gt;How would you like to be identified in commit messages?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="startupdialog.cpp" line="42"/>
+        <source>Name:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="startupdialog.cpp" line="50"/>
+        <source>Email address:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="startupdialog.cpp" line="58"/>
+        <source>&lt;br&gt;You will appear as:</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>UncommittedItem</name>
+    <message>
+        <location filename="uncommitteditem.cpp" line="71"/>
+        <source>&lt;qt&gt;&amp;nbsp;&lt;b&gt;Uncommitted changes&lt;/b&gt;&lt;/qt&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="uncommitteditem.cpp" line="77"/>
+        <source>Diff</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="uncommitteditem.cpp" line="82"/>
+        <source>Commit...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="uncommitteditem.cpp" line="84"/>
+        <source>Revert...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="uncommitteditem.cpp" line="130"/>
+        <source>Uncommitted changes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="uncommitteditem.cpp" line="135"/>
+        <source>Uncommitted</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="uncommitteditem.cpp" line="139"/>
+        <source>changes</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+</TS>
--- a/main.cpp	Thu Dec 02 18:04:21 2010 +0000
+++ b/main.cpp	Thu Dec 02 21:13:53 2010 +0000
@@ -20,6 +20,7 @@
 #include "debug.h"
 
 #include <QApplication>
+#include <QTranslator>
 #include <QDir>
 
 int main(int argc, char *argv[])
@@ -35,6 +36,13 @@
     installSignalHandlers();
 
     QApplication app(argc, argv);
+
+    QTranslator translator;
+    QString language = QLocale::system().name();
+    QString trname = QString("easyhg_%1").arg(language);
+    translator.load(trname, ":");
+    app.installTranslator(&translator);
+
     QStringList args = app.arguments();
     MainWindow mainWin;
     mainWin.show();
--- a/mainwindow.cpp	Thu Dec 02 18:04:21 2010 +0000
+++ b/mainwindow.cpp	Thu Dec 02 21:13:53 2010 +0000
@@ -318,11 +318,15 @@
     QStringList reportFiles = files;
     if (reportFiles.empty()) reportFiles = hgTabs->getAllCommittableFiles();
 
+    QString cf(tr("Commit files"));
+
     if (ConfirmCommentDialog::confirmAndGetLongComment
         (this,
-         tr("Commit files"),
-         tr("<h3>Commit files</h3><p>You are about to commit the following files:"),
-         tr("<h3>Commit files</h3><p>You are about to commit %1 files."),
+         cf,
+         tr("<h3>%1</h3><p>%2").arg(cf)
+         .arg(tr("You are about to commit the following files:")),
+         tr("<h3>%1</h3><p>%2").arg(cf)
+         .arg(tr("You are about to commit %n file(s):", "", reportFiles.size())),
          reportFiles,
          comment)) {
 
@@ -518,12 +522,16 @@
 
     QStringList files = hgTabs->getSelectedRevertableFiles();
     if (files.empty()) files = hgTabs->getAllRevertableFiles();
+
+    QString rf(tr("Revert files"));
     
     if (ConfirmCommentDialog::confirmDangerousFilesAction
         (this,
-         tr("Revert files"),
-         tr("<h3>Revert files</h3><p>You are about to <b>revert</b> the following files to their previous committed state.<br><br>This will <b>throw away any changes</b> that you have made to these files but have not committed:"),
-         tr("<h3>Revert files</h3><p>You are about to <b>revert</b> %1 files.<br><br>This will <b>throw away any changes</b> that you have made to these files but have not committed."),
+         rf,
+         tr("<h3>%1</h3><p>%2").arg(rf)
+         .arg(tr("You are about to <b>revert</b> the following files to their previous committed state.<br><br>This will <b>throw away any changes</b> that you have made to these files but have not committed:")),
+         tr("<h3>%1</h3><p>%2").arg(rf)
+         .arg(tr("You are about to <b>revert</b> %n file(s).<br><br>This will <b>throw away any changes</b> that you have made to these files but have not committed.", "", files.size())),
          files)) {
         
         if (files.empty()) {