OSDN Git Service

Implement GitHub #135: [Feature Request] Selection Count on Status Bar
authorTakashi Sawanaka <sdottaka@users.sourceforge.net>
Sun, 18 Apr 2021 06:53:46 +0000 (15:53 +0900)
committerTakashi Sawanaka <sdottaka@users.sourceforge.net>
Sun, 18 Apr 2021 06:53:46 +0000 (15:53 +0900)
49 files changed:
Externals/crystaledit/editlib/ccrystaleditview.cpp
Externals/crystaledit/editlib/ccrystaltextview.h
Externals/crystaledit/editlib/ccrystaltextview2.cpp
Src/Merge.rc
Src/MergeEditStatus.h
Src/MergeEditView.cpp
Src/MergeEditView.h
Src/MergeStatusBar.cpp
Src/MergeStatusBar.h
Src/resource.h
Translations/TranslationsStatus.html
Translations/TranslationsStatus.md
Translations/TranslationsStatus.xml
Translations/WinMerge/Arabic.po
Translations/WinMerge/Basque.po
Translations/WinMerge/Brazilian.po
Translations/WinMerge/Bulgarian.po
Translations/WinMerge/Catalan.po
Translations/WinMerge/ChineseSimplified.po
Translations/WinMerge/ChineseTraditional.po
Translations/WinMerge/Croatian.po
Translations/WinMerge/Czech.po
Translations/WinMerge/Danish.po
Translations/WinMerge/Dutch.po
Translations/WinMerge/English.pot
Translations/WinMerge/Finnish.po
Translations/WinMerge/French.po
Translations/WinMerge/Galician.po
Translations/WinMerge/German.po
Translations/WinMerge/Greek.po
Translations/WinMerge/Hungarian.po
Translations/WinMerge/Italian.po
Translations/WinMerge/Japanese.po
Translations/WinMerge/Korean.po
Translations/WinMerge/Lithuanian.po
Translations/WinMerge/Norwegian.po
Translations/WinMerge/Persian.po
Translations/WinMerge/Polish.po
Translations/WinMerge/Portuguese.po
Translations/WinMerge/Romanian.po
Translations/WinMerge/Russian.po
Translations/WinMerge/Serbian.po
Translations/WinMerge/Sinhala.po
Translations/WinMerge/Slovak.po
Translations/WinMerge/Slovenian.po
Translations/WinMerge/Spanish.po
Translations/WinMerge/Swedish.po
Translations/WinMerge/Turkish.po
Translations/WinMerge/Ukrainian.po

index 0e73cec..d662144 100644 (file)
@@ -1932,9 +1932,9 @@ OnEditOperation (int nAction, LPCTSTR pszText, size_t cchText)
               m_pTextBuffer->InsertText (nullptr, ptCursorPos.y, ptCursorPos.x,
                                          pszInsertStr, nPos, y, x, CE_ACTION_AUTOINDENT);
               CPoint pt (x, y);
-              SetCursorPos (pt);
               SetSelection (pt, pt);
               SetAnchor (pt);
+              SetCursorPos (pt);
               EnsureVisible (pt);
               // m_pTextBuffer->FlushUndoGroup (this);
             }
@@ -1966,9 +1966,9 @@ OnEditOperation (int nAction, LPCTSTR pszText, size_t cchText)
                   m_pTextBuffer->InsertText (nullptr, ptCursorPos.y, ptCursorPos.x,
                                              pszInsertStr, nPos, y, x, CE_ACTION_AUTOINDENT);
                   CPoint pt (x, y);
-                  SetCursorPos (pt);
                   SetSelection (pt, pt);
                   SetAnchor (pt);
+                  SetCursorPos (pt);
                   EnsureVisible (pt);
                   // m_pTextBuffer->FlushUndoGroup (this);
                 }
@@ -1990,9 +1990,9 @@ OnEditOperation (int nAction, LPCTSTR pszText, size_t cchText)
                                          pszInsertStr, 1, y, x, CE_ACTION_AUTOINDENT);
               ptCursorPos.x = x + 1;
               ptCursorPos.y = y;
-              SetCursorPos (ptCursorPos);
               SetSelection (ptCursorPos, ptCursorPos);
               SetAnchor (ptCursorPos);
+              SetCursorPos (ptCursorPos);
               EnsureVisible (ptCursorPos);
               // m_pTextBuffer->FlushUndoGroup (this);
             }
@@ -2035,9 +2035,9 @@ OnEditOperation (int nAction, LPCTSTR pszText, size_t cchText)
               m_pTextBuffer->InsertText (nullptr, ptCursorPos.y, ptCursorPos.x - 1,
                                          pszInsertStr, nPos, y, x, CE_ACTION_AUTOINDENT);
               CPoint pt (x + 1, y);
-              SetCursorPos (pt);
               SetSelection (pt, pt);
               SetAnchor (pt);
+              SetCursorPos (pt);
               EnsureVisible (pt);
               // m_pTextBuffer->FlushUndoGroup (this);
             }
@@ -2197,9 +2197,9 @@ OnEditAutoExpand ()
                   ptCursorPos.x = x;
                   ptCursorPos.y = y;
                   ASSERT_VALIDTEXTPOS (ptCursorPos);
-                  SetCursorPos (ptCursorPos);
                   SetSelection (ptCursorPos, ptCursorPos);
                   SetAnchor (ptCursorPos);
+                  SetCursorPos (ptCursorPos);
                   OnEditOperation (CE_ACTION_TYPING, pszExpand, _tcslen(pszExpand));
                   ptCursorPos = GetCursorPos ();
                   if (pszSlash == nullptr)
@@ -2636,8 +2636,8 @@ void CCrystalEditView::OnEditGotoLastChange()
     return;
 
   // goto last change
-  SetCursorPos( ptLastChange );
   SetSelection( ptLastChange, ptLastChange );
+  SetCursorPos( ptLastChange );
   EnsureVisible( ptLastChange );
 }
 //END SW
index 25217e9..77f5ee1 100644 (file)
@@ -297,6 +297,8 @@ protected :
     bool IsInsideSelection (const CPoint & ptTextPos);
     bool GetColumnSelection (int nLine, int & nLeftTextPos, int & nRightTextPos);
     void GetSelection (CPoint & ptStart, CPoint & ptEnd);
+    std::pair<CPoint, CPoint> GetSelection ()
+      { CPoint ptStart, ptEnd;  GetSelection(ptStart, ptEnd); return { ptStart, ptEnd }; }
     void GetFullySelectedLines(int & firstLine, int & lastLine);
     virtual void SetSelection (const CPoint & ptStart, const CPoint & ptEnd, bool bUpdateView = true);
 
index 3383489..ff0a6f0 100644 (file)
@@ -104,10 +104,10 @@ MoveLeft (bool bSelect)
     }
   m_nIdealCharPos = CalculateActualOffset (m_ptCursorPos.y, m_ptCursorPos.x);
   EnsureVisible (m_ptCursorPos);
-  UpdateCaret ();
   if (!bSelect)
     m_ptAnchor = m_ptCursorPos;
   SetSelection (m_ptAnchor, m_ptCursorPos);
+  UpdateCaret ();
 }
 
 void CCrystalTextView::
@@ -137,10 +137,10 @@ MoveRight (bool bSelect)
     }
   m_nIdealCharPos = CalculateActualOffset (m_ptCursorPos.y, m_ptCursorPos.x);
   EnsureVisible (m_ptCursorPos);
-  UpdateCaret ();
   if (!bSelect)
     m_ptAnchor = m_ptCursorPos;
   SetSelection (m_ptAnchor, m_ptCursorPos);
+  UpdateCaret ();
 }
 
 void CCrystalTextView::
@@ -171,10 +171,10 @@ MoveWordLeft (bool bSelect)
 
   m_nIdealCharPos = CalculateActualOffset (m_ptCursorPos.y, m_ptCursorPos.x);
   EnsureVisible (m_ptCursorPos);
-  UpdateCaret ();
   if (!bSelect)
     m_ptAnchor = m_ptCursorPos;
   SetSelection (m_ptAnchor, m_ptCursorPos);
+  UpdateCaret ();
 }
 
 void CCrystalTextView::
@@ -203,10 +203,10 @@ MoveWordRight (bool bSelect)
 
   m_nIdealCharPos = CalculateActualOffset (m_ptCursorPos.y, m_ptCursorPos.x);
   EnsureVisible (m_ptCursorPos);
-  UpdateCaret ();
   if (!bSelect)
     m_ptAnchor = m_ptCursorPos;
   SetSelection (m_ptAnchor, m_ptCursorPos);
+  UpdateCaret ();
 }
 
 void CCrystalTextView::
@@ -244,10 +244,10 @@ MoveUp (bool bSelect)
         m_ptCursorPos.x = GetLineLength (m_ptCursorPos.y);
     }
   EnsureVisible (m_ptCursorPos);
-  UpdateCaret ();
   if (!bSelect)
     m_ptAnchor = m_ptCursorPos;
   SetSelection (m_ptAnchor, m_ptCursorPos);
+  UpdateCaret ();
 }
 
 void CCrystalTextView::
@@ -288,10 +288,10 @@ MoveDown (bool bSelect)
         m_ptCursorPos.x = GetLineLength (m_ptCursorPos.y);
     }
   EnsureVisible (m_ptCursorPos);
-  UpdateCaret ();
   if (!bSelect)
     m_ptAnchor = m_ptCursorPos;
   SetSelection (m_ptAnchor, m_ptCursorPos);
+  UpdateCaret ();
 }
 
 void CCrystalTextView::
@@ -321,10 +321,10 @@ MoveHome (bool bSelect)
     m_ptCursorPos.x = nHomePos;
   m_nIdealCharPos = CalculateActualOffset (m_ptCursorPos.y, m_ptCursorPos.x);
   EnsureVisible (m_ptCursorPos);
-  UpdateCaret ();
   if (!bSelect)
     m_ptAnchor = m_ptCursorPos;
   SetSelection (m_ptAnchor, m_ptCursorPos);
+  UpdateCaret ();
 }
 
 void CCrystalTextView::
@@ -339,10 +339,10 @@ MoveEnd (bool bSelect)
   *///END SW
   m_nIdealCharPos = INT_MAX;
   EnsureVisible (m_ptCursorPos);
-  UpdateCaret ();
   if (!bSelect)
     m_ptAnchor = m_ptCursorPos;
   SetSelection (m_ptAnchor, m_ptCursorPos);
+  UpdateCaret ();
 }
 
 void CCrystalTextView::
@@ -378,10 +378,10 @@ MovePgUp (bool bSelect)
   m_nIdealCharPos = CalculateActualOffset (m_ptCursorPos.y, m_ptCursorPos.x);
   EnsureVisible (m_ptCursorPos);    //todo: no vertical scroll
 
-  UpdateCaret ();
   if (!bSelect)
     m_ptAnchor = m_ptCursorPos;
   SetSelection (m_ptAnchor, m_ptCursorPos);
+  UpdateCaret ();
 }
 
 void CCrystalTextView::
@@ -420,10 +420,10 @@ MovePgDn (bool bSelect)
   m_nIdealCharPos = CalculateActualOffset (m_ptCursorPos.y, m_ptCursorPos.x);
   EnsureVisible (m_ptCursorPos);    //todo: no vertical scroll
 
-  UpdateCaret ();
   if (!bSelect)
     m_ptAnchor = m_ptCursorPos;
   SetSelection (m_ptAnchor, m_ptCursorPos);
+  UpdateCaret ();
 }
 
 void CCrystalTextView::
@@ -433,10 +433,10 @@ MoveCtrlHome (bool bSelect)
   m_ptCursorPos.y = 0;
   m_nIdealCharPos = CalculateActualOffset (m_ptCursorPos.y, m_ptCursorPos.x);
   EnsureVisible (m_ptCursorPos);
-  UpdateCaret ();
   if (!bSelect)
     m_ptAnchor = m_ptCursorPos;
   SetSelection (m_ptAnchor, m_ptCursorPos);
+  UpdateCaret ();
 }
 
 void CCrystalTextView::
@@ -446,10 +446,10 @@ MoveCtrlEnd (bool bSelect)
   m_ptCursorPos.x = GetLineLength (m_ptCursorPos.y);
   m_nIdealCharPos = CalculateActualOffset (m_ptCursorPos.y, m_ptCursorPos.x);
   EnsureVisible (m_ptCursorPos);
-  UpdateCaret ();
   if (!bSelect)
     m_ptAnchor = m_ptCursorPos;
   SetSelection (m_ptAnchor, m_ptCursorPos);
+  UpdateCaret ();
 }
 
 void CCrystalTextView::
@@ -644,9 +644,9 @@ OnLButtonDown (UINT nFlags, CPoint point)
             }
 
           m_ptCursorPos = ptEnd;
-          UpdateCaret ();
           EnsureVisible (m_ptCursorPos);
           SetSelection (ptStart, ptEnd);
+          UpdateCaret ();
 
           startDragging();
 
@@ -696,9 +696,9 @@ OnLButtonDown (UINT nFlags, CPoint point)
 
           m_ptAnchor = ptStart;
           m_ptCursorPos = ptEnd;
-          UpdateCaret ();
           EnsureVisible (m_ptCursorPos);
           SetSelection (ptStart, ptEnd);
+          UpdateCaret ();
 
           startDragging();
 
@@ -791,8 +791,8 @@ OnMouseMove (UINT nFlags, CPoint point)
               m_ptCursorPos = ptNewCursorPos;
             }
           EnsureVisible(m_ptCursorPos);
-          UpdateCaret ();
           SetSelection (ptNewCursorPos, ptEnd);
+          UpdateCaret ();
           return;
         }
 
@@ -818,8 +818,8 @@ OnMouseMove (UINT nFlags, CPoint point)
 
       m_ptCursorPos = ptEnd;
       EnsureVisible(m_ptCursorPos);
-      UpdateCaret ();
       SetSelection (ptStart, ptEnd);
+      UpdateCaret ();
     }
 
   if (m_bPreparingToDrag)
@@ -872,8 +872,8 @@ OnLButtonUp (UINT nFlags, CPoint point)
       AdjustTextPoint (point);
       m_ptCursorPos = ClientToText (point);
       EnsureVisible (m_ptCursorPos);
-      UpdateCaret ();
       SetSelection (m_ptCursorPos, m_ptCursorPos);
+      UpdateCaret ();
     }
 
   ASSERT_VALIDTEXTPOS (m_ptCursorPos);
@@ -1010,9 +1010,9 @@ OnLButtonDblClk (UINT nFlags, CPoint point)
 
       m_ptAnchor = ptStart;
       m_ptCursorPos = ptEnd;
-      UpdateCaret ();
       EnsureVisible (m_ptCursorPos);
       SetSelection (ptStart, ptEnd);
+      UpdateCaret ();
       SetCapture ();
       m_nDragSelTimer = SetTimer (CRYSTAL_TIMER_DRAGSEL, 100, nullptr);
       ASSERT (m_nDragSelTimer != 0);
index 4675d21..771093d 100644 (file)
@@ -2907,6 +2907,7 @@ BEGIN
                             "Ln: %s  Col: %d/%d  Ch: %d/%d  EOL: %s"\r
     IDS_EMPTY_LINE_STATUS_INFO "Line: %s"\r
     IDS_LINE_STATUS_INFO    "Ln: %s  Col: %d/%d  Ch: %d/%d"\r
+    IDS_LINE_STATUS_INFO_SEL "  Sel: %d | %d"\r
     IDS_MERGEMODE_MERGING   "Merge"\r
     IDS_DIFF_NUMBER_STATUS_FMT "Difference %1 of %2"\r
     IDS_NO_DIFF_SEL_FMT     "%1 Differences Found"\r
index 1b60559..54d1aa9 100644 (file)
@@ -13,5 +13,5 @@ class IMergeEditStatus
 {
 public:
        virtual void SetLineInfo(LPCTSTR szLine, int nChar, int nChars, int nColumn,
-               int nColumns, LPCTSTR szEol, int nCodepage, bool bHasBom) = 0;
+               int nColumns, int nSelectedLines, int nSelectedChars, LPCTSTR szEol, int nCodepage, bool bHasBom) = 0;
 };
index 501e17c..92de286 100644 (file)
@@ -309,6 +309,36 @@ CString CMergeEditView::GetSelectedText()
 }
 
 /**
+ * @brief Return number of selected characters
+ */
+std::pair<int, int> CMergeEditView::GetSelectedLineAndCharacterCount()
+{
+       auto [ptStart, ptEnd] = GetSelection();
+       int nCharsOrColumns =0;
+       int nSelectedLines = 0;
+       for (int nLine = ptStart.y; nLine <= ptEnd.y; ++nLine)
+       {
+               if ((GetLineFlags(nLine) & (LF_GHOST | LF_INVISIBLE)) == 0)
+               {
+                       int nLineLength = GetLineLength(nLine) + (m_pTextBuffer->GetLineEol(nLine)[0] ? 1 : 0);
+                       nCharsOrColumns += (nLine == ptEnd.y) ? ptEnd.x : nLineLength;
+                       if (nLine == ptStart.y)
+                               nCharsOrColumns -= ptStart.x;
+                       if (nLine < ptEnd.y || (ptStart != ptEnd && ptEnd.x > 0))
+                               ++nSelectedLines;
+               }
+       }
+       if (m_bRectangularSelection)
+       {
+               int nStartLeft, nStartRight, nEndLeft, nEndRight;
+               GetColumnSelection(ptStart.y, nStartLeft, nStartRight);
+               GetColumnSelection(ptEnd.y, nEndLeft, nEndRight);
+               nCharsOrColumns = (std::max)(nStartRight, nEndRight) - (std::min)(nStartLeft, nEndLeft);
+       }
+       return { nSelectedLines, nCharsOrColumns };
+}
+
+/**
  * @brief Get diffs inside selection.
  * @param [out] firstDiff First diff inside selection
  * @param [out] lastDiff Last diff inside selection
@@ -2769,6 +2799,7 @@ void CMergeEditView::OnUpdateCaret()
        int column = -1;
        int columns = -1;
        int curChar = -1;
+       auto [selectedLines, selectedChars] = GetSelectedLineAndCharacterCount();
        DWORD dwLineFlags = 0;
 
        dwLineFlags = m_pTextBuffer->GetLineFlags(nScreenLine);
@@ -2797,7 +2828,8 @@ void CMergeEditView::OnUpdateCaret()
                        sEol = _T("hidden");
        }
        m_piMergeEditStatus->SetLineInfo(sLine, column, columns,
-               curChar, chars, sEol, GetDocument()->m_ptBuf[m_nThisPane]->getCodepage(), GetDocument()->m_ptBuf[m_nThisPane]->getHasBom());
+               curChar, chars, selectedLines, selectedChars,
+               sEol, GetDocument()->m_ptBuf[m_nThisPane]->getCodepage(), GetDocument()->m_ptBuf[m_nThisPane]->getHasBom());
 
        // Is cursor inside difference?
        if (dwLineFlags & LF_NONTRIVIAL_DIFF)
index 1671a32..9ce5c9e 100644 (file)
@@ -117,6 +117,7 @@ public:
        void GetSelectedDiffs(int & firstDiff, int & lastDiff);
        std::map<int, std::vector<int>> GetColumnSelectedWordDiffIndice();
        CString GetSelectedText();
+       std::pair<int, int> GetSelectedLineAndCharacterCount();
        CString GetLineText(int idx);
        CMergeDoc* GetDocument();
        const CMergeDoc *GetDocument() const { return const_cast<CMergeEditView *>(this)->GetDocument(); }
@@ -193,8 +194,8 @@ public:
 // Implementation
 protected:
        virtual ~CMergeEditView();
-       virtual void OnUpdateSibling (CCrystalTextView * pUpdateSource, bool bHorz);
-       virtual void OnUpdateCaret();
+       virtual void OnUpdateSibling (CCrystalTextView * pUpdateSource, bool bHorz) override;
+       virtual void OnUpdateCaret() override;
        bool MergeModeKeyDown(MSG* pMsg);
        int FindPrediffer(LPCTSTR prediffer) const;
        bool IsDiffVisible(const DIFFRANGE& diff, int nLinesBelow = 0);
index fd13748..19e0e4d 100644 (file)
@@ -206,6 +206,8 @@ CMergeStatusBar::MergeStatus::MergeStatus()
 , m_nChars(0)
 , m_nCodepage(-1)
 , m_bHasBom(false)
+, m_nSelectedLines(0)
+, m_nSelectedChars(0)
 , m_pWndStatusBar(nullptr)
 , m_base(0)
 {
@@ -232,6 +234,12 @@ void CMergeStatusBar::MergeStatus::Update()
                        strInfo.Format(_("Ln: %s  Col: %d/%d  Ch: %d/%d  EOL: %s").c_str(),
                                m_sLine.c_str(), m_nColumn, m_nColumns, m_nChar, m_nChars, m_sEolDisplay.c_str(), m_nCodepage, m_sCodepageName.c_str());
                }
+               if (m_nSelectedLines > 0)
+               {
+                       CString strSelected;
+                       strSelected.Format(_("  Sel: %d | %d").c_str(), m_nSelectedLines, m_nSelectedChars);
+                       strInfo += strSelected;
+               }
 
                if (m_nCodepage > 0)
                        strEncoding.Format(_("%s").c_str(), m_sCodepageName.c_str());
@@ -274,10 +282,12 @@ static String EolString(const String & sEol)
 
 /// Receive status line info from crystal window and display
 void CMergeStatusBar::MergeStatus::SetLineInfo(LPCTSTR szLine, int nColumn,
-               int nColumns, int nChar, int nChars, LPCTSTR szEol, int nCodepage, bool bHasBom)
+               int nColumns, int nChar, int nChars, int nSelectedLines, int nSelectedChars, LPCTSTR szEol, int nCodepage, bool bHasBom)
 {
        if (m_sLine != szLine || m_nColumn != nColumn || m_nColumns != nColumns ||
-               m_nChar != nChar || m_nChars != nChars || m_sEol != szEol != 0 || m_nCodepage != nCodepage || m_bHasBom != bHasBom)
+               m_nChar != nChar || m_nChars != nChars || 
+               m_nSelectedLines != nSelectedLines || m_nSelectedChars != nSelectedChars ||
+               m_sEol != szEol != 0 || m_nCodepage != nCodepage || m_bHasBom != bHasBom)
        {
                USES_CONVERSION;
                m_sLine = szLine;
@@ -285,6 +295,8 @@ void CMergeStatusBar::MergeStatus::SetLineInfo(LPCTSTR szLine, int nColumn,
                m_nColumns = nColumns;
                m_nChar = nChar;
                m_nChars = nChars;
+               m_nSelectedLines = nSelectedLines;
+               m_nSelectedChars = nSelectedChars;
                m_sEol = szEol;
                m_sEolDisplay = EolString(m_sEol);
                if (m_nCodepage != nCodepage || m_bHasBom != bHasBom)
index 5e37606..d544874 100644 (file)
@@ -47,7 +47,7 @@ protected:
                MergeStatus();
                // Implement MergeEditStatus
                void SetLineInfo(LPCTSTR szLine, int nColumn, int nColumns,
-                       int nChar, int nChars, LPCTSTR szEol, int nCodepage, bool bHasBom);
+                       int nChar, int nChars, int nSelectedLines, int nSelectedChars, LPCTSTR szEol, int nCodepage, bool bHasBom) override;
                void UpdateResources();
        protected:
                void Update();
@@ -61,6 +61,8 @@ protected:
                int m_nChar; /**< Current char */
                int m_nChars; /**< Amount of chars in line */
                int m_nCodepage;
+               int m_nSelectedLines;
+               int m_nSelectedChars;
                bool m_bHasBom;
                String m_sEol;
                String m_sEolDisplay;
index 1da16f1..ca3026e 100644 (file)
 #define IDS_CONFLICT_THEIRS_FILE        40806\r
 #define IDS_CONFLICT_MINE_FILE          40807\r
 #define IDS_SELFCOMPARE_ORIGINAL_FILE   40808\r
+#define IDS_LINE_STATUS_INFO_SEL        40831\r
 #define IDS_LINE_STATUS_INFO_EOL        40832\r
 #define IDS_EMPTY_LINE_STATUS_INFO      40833\r
 #define IDS_LINE_STATUS_INFO            40834\r
index e6da159..86cb9c9 100644 (file)
@@ -37,7 +37,7 @@
 </head>
 <body>
 <h1>Translations Status</h1>
-<p>Status from <strong>2021-04-15</strong>:</p>
+<p>Status from <strong>2021-04-18</strong>:</p>
 <h2>WinMerge</h2>
 <table class="status">
   <tr>
   </tr>
   <tr>
     <td class="left">Arabic</td>
-    <td class="right">1029</td>
+    <td class="right">1030</td>
     <td class="right translated">914</td>
     <td class="right fuzzy">0</td>
-    <td class="right untranslated">115</td>
+    <td class="right untranslated">116</td>
     <td class="right">89 %</td>
     <td class="center">2019-12-30</td>
   </tr>
   <tr>
     <td class="left">Basque</td>
-    <td class="right">1029</td>
+    <td class="right">1030</td>
     <td class="right translated">650</td>
     <td class="right fuzzy">0</td>
-    <td class="right untranslated">379</td>
+    <td class="right untranslated">380</td>
     <td class="right">63 %</td>
     <td class="center">2013-02-03</td>
   </tr>
   <tr>
     <td class="left">Brazilian</td>
-    <td class="right">1029</td>
+    <td class="right">1030</td>
     <td class="right translated">1029</td>
     <td class="right fuzzy">0</td>
-    <td class="right untranslated">0</td>
+    <td class="right untranslated">1</td>
     <td class="right">100 %</td>
     <td class="center">2021-02-14</td>
   </tr>
   <tr>
     <td class="left">Bulgarian</td>
-    <td class="right">1029</td>
+    <td class="right">1030</td>
     <td class="right translated">955</td>
     <td class="right fuzzy">0</td>
-    <td class="right untranslated">74</td>
+    <td class="right untranslated">75</td>
     <td class="right">93 %</td>
     <td class="center">2021-02-11</td>
   </tr>
   <tr>
     <td class="left">Catalan</td>
-    <td class="right">1029</td>
+    <td class="right">1030</td>
     <td class="right translated">575</td>
     <td class="right fuzzy">0</td>
-    <td class="right untranslated">454</td>
+    <td class="right untranslated">455</td>
     <td class="right">56 %</td>
     <td class="center"></td>
   </tr>
   <tr>
     <td class="left">ChineseSimplified</td>
-    <td class="right">1029</td>
+    <td class="right">1030</td>
     <td class="right translated">987</td>
     <td class="right fuzzy">0</td>
-    <td class="right untranslated">42</td>
+    <td class="right untranslated">43</td>
     <td class="right">96 %</td>
     <td class="center"></td>
   </tr>
   <tr>
     <td class="left">ChineseTraditional</td>
-    <td class="right">1029</td>
+    <td class="right">1030</td>
     <td class="right translated">867</td>
     <td class="right fuzzy">0</td>
-    <td class="right untranslated">162</td>
+    <td class="right untranslated">163</td>
     <td class="right">84 %</td>
     <td class="center">2010-02-19</td>
   </tr>
   <tr>
     <td class="left">Croatian</td>
-    <td class="right">1029</td>
+    <td class="right">1030</td>
     <td class="right translated">641</td>
     <td class="right fuzzy">1</td>
-    <td class="right untranslated">387</td>
+    <td class="right untranslated">388</td>
     <td class="right">62 %</td>
     <td class="center">2009-02-13</td>
   </tr>
   <tr>
     <td class="left">Czech</td>
-    <td class="right">1029</td>
+    <td class="right">1030</td>
     <td class="right translated">613</td>
     <td class="right fuzzy">0</td>
-    <td class="right untranslated">416</td>
+    <td class="right untranslated">417</td>
     <td class="right">60 %</td>
     <td class="center"></td>
   </tr>
   <tr>
     <td class="left">Danish</td>
-    <td class="right">1029</td>
+    <td class="right">1030</td>
     <td class="right translated">650</td>
     <td class="right fuzzy">0</td>
-    <td class="right untranslated">379</td>
+    <td class="right untranslated">380</td>
     <td class="right">63 %</td>
     <td class="center">2013-01-13</td>
   </tr>
   <tr>
     <td class="left">Dutch</td>
-    <td class="right">1029</td>
+    <td class="right">1030</td>
     <td class="right translated">1027</td>
     <td class="right fuzzy">0</td>
-    <td class="right untranslated">2</td>
+    <td class="right untranslated">3</td>
     <td class="right">100 %</td>
     <td class="center">2018-09-06</td>
   </tr>
   <tr>
     <td class="left">English</td>
-    <td class="right">1030</td>
-    <td class="right translated">1030</td>
+    <td class="right">1031</td>
+    <td class="right translated">1031</td>
     <td class="right fuzzy">0</td>
     <td class="right untranslated">0</td>
     <td class="right">100 %</td>
-    <td class="center">2021-04-15</td>
+    <td class="center">2021-04-18</td>
   </tr>
   <tr>
     <td class="left">Finnish</td>
-    <td class="right">1029</td>
+    <td class="right">1030</td>
     <td class="right translated">914</td>
     <td class="right fuzzy">0</td>
-    <td class="right untranslated">115</td>
+    <td class="right untranslated">116</td>
     <td class="right">89 %</td>
     <td class="center"></td>
   </tr>
   <tr>
     <td class="left">French</td>
-    <td class="right">1029</td>
+    <td class="right">1030</td>
     <td class="right translated">1027</td>
     <td class="right fuzzy">0</td>
-    <td class="right untranslated">2</td>
+    <td class="right untranslated">3</td>
     <td class="right">100 %</td>
     <td class="center">2021-02-10</td>
   </tr>
   <tr>
     <td class="left">Galician</td>
-    <td class="right">1029</td>
+    <td class="right">1030</td>
     <td class="right translated">1029</td>
     <td class="right fuzzy">0</td>
-    <td class="right untranslated">0</td>
+    <td class="right untranslated">1</td>
     <td class="right">100 %</td>
     <td class="center">2021-04-01</td>
   </tr>
   <tr>
     <td class="left">German</td>
-    <td class="right">1029</td>
+    <td class="right">1030</td>
     <td class="right translated">1029</td>
     <td class="right fuzzy">0</td>
-    <td class="right untranslated">0</td>
+    <td class="right untranslated">1</td>
     <td class="right">100 %</td>
     <td class="center">2021-04-04</td>
   </tr>
   <tr>
     <td class="left">Greek</td>
-    <td class="right">1029</td>
+    <td class="right">1030</td>
     <td class="right translated">613</td>
     <td class="right fuzzy">0</td>
-    <td class="right untranslated">416</td>
+    <td class="right untranslated">417</td>
     <td class="right">60 %</td>
     <td class="center"></td>
   </tr>
   <tr>
     <td class="left">Hungarian</td>
-    <td class="right">1029</td>
+    <td class="right">1030</td>
     <td class="right translated">1027</td>
     <td class="right fuzzy">0</td>
-    <td class="right untranslated">2</td>
+    <td class="right untranslated">3</td>
     <td class="right">100 %</td>
     <td class="center">2021-03-15</td>
   </tr>
   <tr>
     <td class="left">Italian</td>
-    <td class="right">1029</td>
+    <td class="right">1030</td>
     <td class="right translated">917</td>
     <td class="right fuzzy">0</td>
-    <td class="right untranslated">112</td>
+    <td class="right untranslated">113</td>
     <td class="right">89 %</td>
     <td class="center">2019-07-12</td>
   </tr>
   <tr>
     <td class="left">Japanese</td>
-    <td class="right">1029</td>
+    <td class="right">1030</td>
     <td class="right translated">1029</td>
     <td class="right fuzzy">0</td>
-    <td class="right untranslated">0</td>
+    <td class="right untranslated">1</td>
     <td class="right">100 %</td>
     <td class="center">2021-03-31</td>
   </tr>
   <tr>
     <td class="left">Korean</td>
-    <td class="right">1029</td>
+    <td class="right">1030</td>
     <td class="right translated">998</td>
     <td class="right fuzzy">0</td>
-    <td class="right untranslated">31</td>
+    <td class="right untranslated">32</td>
     <td class="right">97 %</td>
     <td class="center">2021-03-30</td>
   </tr>
   <tr>
     <td class="left">Lithuanian</td>
-    <td class="right">1029</td>
+    <td class="right">1030</td>
     <td class="right translated">1029</td>
     <td class="right fuzzy">0</td>
-    <td class="right untranslated">0</td>
+    <td class="right untranslated">1</td>
     <td class="right">100 %</td>
     <td class="center">2021-04-01</td>
   </tr>
   <tr>
     <td class="left">Norwegian</td>
-    <td class="right">1029</td>
+    <td class="right">1030</td>
     <td class="right translated">642</td>
     <td class="right fuzzy">0</td>
-    <td class="right untranslated">387</td>
+    <td class="right untranslated">388</td>
     <td class="right">62 %</td>
     <td class="center"></td>
   </tr>
   <tr>
     <td class="left">Persian</td>
-    <td class="right">1029</td>
+    <td class="right">1030</td>
     <td class="right translated">653</td>
     <td class="right fuzzy">0</td>
-    <td class="right untranslated">376</td>
+    <td class="right untranslated">377</td>
     <td class="right">63 %</td>
     <td class="center">2013-08-15</td>
   </tr>
   <tr>
     <td class="left">Polish</td>
-    <td class="right">1029</td>
+    <td class="right">1030</td>
     <td class="right translated">1018</td>
     <td class="right fuzzy">0</td>
-    <td class="right untranslated">11</td>
+    <td class="right untranslated">12</td>
     <td class="right">99 %</td>
     <td class="center"></td>
   </tr>
   <tr>
     <td class="left">Portuguese</td>
-    <td class="right">1029</td>
+    <td class="right">1030</td>
     <td class="right translated">1029</td>
     <td class="right fuzzy">0</td>
-    <td class="right untranslated">0</td>
+    <td class="right untranslated">1</td>
     <td class="right">100 %</td>
     <td class="center">2021-04-10</td>
   </tr>
   <tr>
     <td class="left">Romanian</td>
-    <td class="right">1029</td>
+    <td class="right">1030</td>
     <td class="right translated">571</td>
     <td class="right fuzzy">44</td>
-    <td class="right untranslated">414</td>
+    <td class="right untranslated">415</td>
     <td class="right">60 %</td>
     <td class="center"></td>
   </tr>
   <tr>
     <td class="left">Russian</td>
-    <td class="right">1029</td>
+    <td class="right">1030</td>
     <td class="right translated">1016</td>
     <td class="right fuzzy">0</td>
-    <td class="right untranslated">13</td>
+    <td class="right untranslated">14</td>
     <td class="right">99 %</td>
     <td class="center">2021-03-28</td>
   </tr>
   <tr>
     <td class="left">Serbian</td>
-    <td class="right">1029</td>
+    <td class="right">1030</td>
     <td class="right translated">641</td>
     <td class="right fuzzy">0</td>
-    <td class="right untranslated">388</td>
+    <td class="right untranslated">389</td>
     <td class="right">62 %</td>
     <td class="center"></td>
   </tr>
   <tr>
     <td class="left">Sinhala</td>
-    <td class="right">1029</td>
+    <td class="right">1030</td>
     <td class="right translated">571</td>
     <td class="right fuzzy">63</td>
-    <td class="right untranslated">395</td>
+    <td class="right untranslated">396</td>
     <td class="right">62 %</td>
     <td class="center">2010-12-12</td>
   </tr>
   <tr>
     <td class="left">Slovak</td>
-    <td class="right">1029</td>
+    <td class="right">1030</td>
     <td class="right translated">987</td>
     <td class="right fuzzy">0</td>
-    <td class="right untranslated">42</td>
+    <td class="right untranslated">43</td>
     <td class="right">96 %</td>
     <td class="center">2020-11-02</td>
   </tr>
   <tr>
     <td class="left">Slovenian</td>
-    <td class="right">1029</td>
+    <td class="right">1030</td>
     <td class="right translated">1027</td>
     <td class="right fuzzy">0</td>
-    <td class="right untranslated">2</td>
+    <td class="right untranslated">3</td>
     <td class="right">100 %</td>
     <td class="center">2021-03-02</td>
   </tr>
   <tr>
     <td class="left">Spanish</td>
-    <td class="right">1029</td>
+    <td class="right">1030</td>
     <td class="right translated">883</td>
     <td class="right fuzzy">0</td>
-    <td class="right untranslated">146</td>
+    <td class="right untranslated">147</td>
     <td class="right">86 %</td>
     <td class="center">2020-04-03</td>
   </tr>
   <tr>
     <td class="left">Swedish</td>
-    <td class="right">1029</td>
+    <td class="right">1030</td>
     <td class="right translated">1029</td>
     <td class="right fuzzy">0</td>
-    <td class="right untranslated">0</td>
+    <td class="right untranslated">1</td>
     <td class="right">100 %</td>
     <td class="center">2021-04-10</td>
   </tr>
   <tr>
     <td class="left">Turkish</td>
-    <td class="right">1029</td>
+    <td class="right">1030</td>
     <td class="right translated">983</td>
     <td class="right fuzzy">0</td>
-    <td class="right untranslated">46</td>
-    <td class="right">96 %</td>
+    <td class="right untranslated">47</td>
+    <td class="right">95 %</td>
     <td class="center">2020-09-08</td>
   </tr>
   <tr>
     <td class="left">Ukrainian</td>
-    <td class="right">1029</td>
+    <td class="right">1030</td>
     <td class="right translated">647</td>
     <td class="right fuzzy">0</td>
-    <td class="right untranslated">382</td>
+    <td class="right untranslated">383</td>
     <td class="right">63 %</td>
     <td class="center">2009-06-13</td>
   </tr>
index 97d91f4..f07ce92 100644 (file)
@@ -1,47 +1,47 @@
 # Translations Status
 
-Status from **2021-04-15**:
+Status from **2021-04-18**:
 
 ## WinMerge
 
 | Language             | Total | Translated | Fuzzy | Untranslated | Complete | Last Update |
 |:---------------------|------:|-----------:|------:|-------------:|---------:|:-----------:|
-| Arabic               |  1029 |        914 |     0 |          115 |     89 % |  2019-12-30 |
-| Basque               |  1029 |        650 |     0 |          379 |     63 % |  2013-02-03 |
-| Brazilian            |  1029 |       1029 |     0 |            0 |    100 % |  2021-02-14 |
-| Bulgarian            |  1029 |        955 |     0 |           74 |     93 % |  2021-02-11 |
-| Catalan              |  1029 |        575 |     0 |          454 |     56 % |             |
-| ChineseSimplified    |  1029 |        987 |     0 |           42 |     96 % |             |
-| ChineseTraditional   |  1029 |        867 |     0 |          162 |     84 % |  2010-02-19 |
-| Croatian             |  1029 |        641 |     1 |          387 |     62 % |  2009-02-13 |
-| Czech                |  1029 |        613 |     0 |          416 |     60 % |             |
-| Danish               |  1029 |        650 |     0 |          379 |     63 % |  2013-01-13 |
-| Dutch                |  1029 |       1027 |     0 |            2 |    100 % |  2018-09-06 |
-| English              |  1030 |       1030 |     0 |            0 |    100 % |  2021-04-15 |
-| Finnish              |  1029 |        914 |     0 |          115 |     89 % |             |
-| French               |  1029 |       1027 |     0 |            2 |    100 % |  2021-02-10 |
-| Galician             |  1029 |       1029 |     0 |            0 |    100 % |  2021-04-01 |
-| German               |  1029 |       1029 |     0 |            0 |    100 % |  2021-04-04 |
-| Greek                |  1029 |        613 |     0 |          416 |     60 % |             |
-| Hungarian            |  1029 |       1027 |     0 |            2 |    100 % |  2021-03-15 |
-| Italian              |  1029 |        917 |     0 |          112 |     89 % |  2019-07-12 |
-| Japanese             |  1029 |       1029 |     0 |            0 |    100 % |  2021-03-31 |
-| Korean               |  1029 |        998 |     0 |           31 |     97 % |  2021-03-30 |
-| Lithuanian           |  1029 |       1029 |     0 |            0 |    100 % |  2021-04-01 |
-| Norwegian            |  1029 |        642 |     0 |          387 |     62 % |             |
-| Persian              |  1029 |        653 |     0 |          376 |     63 % |  2013-08-15 |
-| Polish               |  1029 |       1018 |     0 |           11 |     99 % |             |
-| Portuguese           |  1029 |       1029 |     0 |            0 |    100 % |  2021-04-10 |
-| Romanian             |  1029 |        571 |    44 |          414 |     60 % |             |
-| Russian              |  1029 |       1016 |     0 |           13 |     99 % |  2021-03-28 |
-| Serbian              |  1029 |        641 |     0 |          388 |     62 % |             |
-| Sinhala              |  1029 |        571 |    63 |          395 |     62 % |  2010-12-12 |
-| Slovak               |  1029 |        987 |     0 |           42 |     96 % |  2020-11-02 |
-| Slovenian            |  1029 |       1027 |     0 |            2 |    100 % |  2021-03-02 |
-| Spanish              |  1029 |        883 |     0 |          146 |     86 % |  2020-04-03 |
-| Swedish              |  1029 |       1029 |     0 |            0 |    100 % |  2021-04-10 |
-| Turkish              |  1029 |        983 |     0 |           46 |     96 % |  2020-09-08 |
-| Ukrainian            |  1029 |        647 |     0 |          382 |     63 % |  2009-06-13 |
+| Arabic               |  1030 |        914 |     0 |          116 |     89 % |  2019-12-30 |
+| Basque               |  1030 |        650 |     0 |          380 |     63 % |  2013-02-03 |
+| Brazilian            |  1030 |       1029 |     0 |            1 |    100 % |  2021-02-14 |
+| Bulgarian            |  1030 |        955 |     0 |           75 |     93 % |  2021-02-11 |
+| Catalan              |  1030 |        575 |     0 |          455 |     56 % |             |
+| ChineseSimplified    |  1030 |        987 |     0 |           43 |     96 % |             |
+| ChineseTraditional   |  1030 |        867 |     0 |          163 |     84 % |  2010-02-19 |
+| Croatian             |  1030 |        641 |     1 |          388 |     62 % |  2009-02-13 |
+| Czech                |  1030 |        613 |     0 |          417 |     60 % |             |
+| Danish               |  1030 |        650 |     0 |          380 |     63 % |  2013-01-13 |
+| Dutch                |  1030 |       1027 |     0 |            3 |    100 % |  2018-09-06 |
+| English              |  1031 |       1031 |     0 |            0 |    100 % |  2021-04-18 |
+| Finnish              |  1030 |        914 |     0 |          116 |     89 % |             |
+| French               |  1030 |       1027 |     0 |            3 |    100 % |  2021-02-10 |
+| Galician             |  1030 |       1029 |     0 |            1 |    100 % |  2021-04-01 |
+| German               |  1030 |       1029 |     0 |            1 |    100 % |  2021-04-04 |
+| Greek                |  1030 |        613 |     0 |          417 |     60 % |             |
+| Hungarian            |  1030 |       1027 |     0 |            3 |    100 % |  2021-03-15 |
+| Italian              |  1030 |        917 |     0 |          113 |     89 % |  2019-07-12 |
+| Japanese             |  1030 |       1029 |     0 |            1 |    100 % |  2021-03-31 |
+| Korean               |  1030 |        998 |     0 |           32 |     97 % |  2021-03-30 |
+| Lithuanian           |  1030 |       1029 |     0 |            1 |    100 % |  2021-04-01 |
+| Norwegian            |  1030 |        642 |     0 |          388 |     62 % |             |
+| Persian              |  1030 |        653 |     0 |          377 |     63 % |  2013-08-15 |
+| Polish               |  1030 |       1018 |     0 |           12 |     99 % |             |
+| Portuguese           |  1030 |       1029 |     0 |            1 |    100 % |  2021-04-10 |
+| Romanian             |  1030 |        571 |    44 |          415 |     60 % |             |
+| Russian              |  1030 |       1016 |     0 |           14 |     99 % |  2021-03-28 |
+| Serbian              |  1030 |        641 |     0 |          389 |     62 % |             |
+| Sinhala              |  1030 |        571 |    63 |          396 |     62 % |  2010-12-12 |
+| Slovak               |  1030 |        987 |     0 |           43 |     96 % |  2020-11-02 |
+| Slovenian            |  1030 |       1027 |     0 |            3 |    100 % |  2021-03-02 |
+| Spanish              |  1030 |        883 |     0 |          147 |     86 % |  2020-04-03 |
+| Swedish              |  1030 |       1029 |     0 |            1 |    100 % |  2021-04-10 |
+| Turkish              |  1030 |        983 |     0 |           47 |     95 % |  2020-09-08 |
+| Ukrainian            |  1030 |        647 |     0 |          383 |     63 % |  2009-06-13 |
 
 ## ShellExtension
 
index cdc512d..46b5a61 100644 (file)
@@ -1,16 +1,16 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <status>
-  <update>2021-04-15</update>
+  <update>2021-04-18</update>
   <translations project="WinMerge">
     <translation>
       <language>Arabic</language>
       <file>Arabic.po</file>
       <update>2019-12-30</update>
       <strings>
-        <count>1029</count>
+        <count>1030</count>
         <translated>914</translated>
         <fuzzy>0</fuzzy>
-        <untranslated>115</untranslated>
+        <untranslated>116</untranslated>
       </strings>
     </translation>
     <translation>
       <file>Basque.po</file>
       <update>2013-02-03</update>
       <strings>
-        <count>1029</count>
+        <count>1030</count>
         <translated>650</translated>
         <fuzzy>0</fuzzy>
-        <untranslated>379</untranslated>
+        <untranslated>380</untranslated>
       </strings>
       <translators>
         <translator>
       <file>Brazilian.po</file>
       <update>2021-02-14</update>
       <strings>
-        <count>1029</count>
+        <count>1030</count>
         <translated>1029</translated>
         <fuzzy>0</fuzzy>
-        <untranslated>0</untranslated>
+        <untranslated>1</untranslated>
       </strings>
       <translators>
         <translator>
       <file>Bulgarian.po</file>
       <update>2021-02-11</update>
       <strings>
-        <count>1029</count>
+        <count>1030</count>
         <translated>955</translated>
         <fuzzy>0</fuzzy>
-        <untranslated>74</untranslated>
+        <untranslated>75</untranslated>
       </strings>
       <translators>
         <translator>
       <file>Catalan.po</file>
       <update></update>
       <strings>
-        <count>1029</count>
+        <count>1030</count>
         <translated>575</translated>
         <fuzzy>0</fuzzy>
-        <untranslated>454</untranslated>
+        <untranslated>455</untranslated>
       </strings>
       <translators>
         <translator>
       <file>ChineseSimplified.po</file>
       <update></update>
       <strings>
-        <count>1029</count>
+        <count>1030</count>
         <translated>987</translated>
         <fuzzy>0</fuzzy>
-        <untranslated>42</untranslated>
+        <untranslated>43</untranslated>
       </strings>
       <translators>
         <translator>
       <file>ChineseTraditional.po</file>
       <update>2010-02-19</update>
       <strings>
-        <count>1029</count>
+        <count>1030</count>
         <translated>867</translated>
         <fuzzy>0</fuzzy>
-        <untranslated>162</untranslated>
+        <untranslated>163</untranslated>
       </strings>
       <translators>
         <translator>
       <file>Croatian.po</file>
       <update>2009-02-13</update>
       <strings>
-        <count>1029</count>
+        <count>1030</count>
         <translated>641</translated>
         <fuzzy>1</fuzzy>
-        <untranslated>387</untranslated>
+        <untranslated>388</untranslated>
       </strings>
       <translators>
         <translator>
       <file>Czech.po</file>
       <update></update>
       <strings>
-        <count>1029</count>
+        <count>1030</count>
         <translated>613</translated>
         <fuzzy>0</fuzzy>
-        <untranslated>416</untranslated>
+        <untranslated>417</untranslated>
       </strings>
       <translators>
         <translator>
       <file>Danish.po</file>
       <update>2013-01-13</update>
       <strings>
-        <count>1029</count>
+        <count>1030</count>
         <translated>650</translated>
         <fuzzy>0</fuzzy>
-        <untranslated>379</untranslated>
+        <untranslated>380</untranslated>
       </strings>
       <translators>
         <translator>
       <file>Dutch.po</file>
       <update>2018-09-06</update>
       <strings>
-        <count>1029</count>
+        <count>1030</count>
         <translated>1027</translated>
         <fuzzy>0</fuzzy>
-        <untranslated>2</untranslated>
+        <untranslated>3</untranslated>
       </strings>
       <translators>
         <translator>
     <translation template="1">
       <language>English</language>
       <file>English.pot</file>
-      <update>2021-04-15</update>
+      <update>2021-04-18</update>
       <strings>
-        <count>1030</count>
-        <translated>1030</translated>
+        <count>1031</count>
+        <translated>1031</translated>
         <fuzzy>0</fuzzy>
         <untranslated>0</untranslated>
       </strings>
       <file>Finnish.po</file>
       <update></update>
       <strings>
-        <count>1029</count>
+        <count>1030</count>
         <translated>914</translated>
         <fuzzy>0</fuzzy>
-        <untranslated>115</untranslated>
+        <untranslated>116</untranslated>
       </strings>
     </translation>
     <translation>
       <file>French.po</file>
       <update>2021-02-10</update>
       <strings>
-        <count>1029</count>
+        <count>1030</count>
         <translated>1027</translated>
         <fuzzy>0</fuzzy>
-        <untranslated>2</untranslated>
+        <untranslated>3</untranslated>
       </strings>
       <translators>
         <translator maintainer="1">
       <file>Galician.po</file>
       <update>2021-04-01</update>
       <strings>
-        <count>1029</count>
+        <count>1030</count>
         <translated>1029</translated>
         <fuzzy>0</fuzzy>
-        <untranslated>0</untranslated>
+        <untranslated>1</untranslated>
       </strings>
       <translators>
         <translator>
       <file>German.po</file>
       <update>2021-04-04</update>
       <strings>
-        <count>1029</count>
+        <count>1030</count>
         <translated>1029</translated>
         <fuzzy>0</fuzzy>
-        <untranslated>0</untranslated>
+        <untranslated>1</untranslated>
       </strings>
       <translators>
         <translator maintainer="1">
       <file>Greek.po</file>
       <update></update>
       <strings>
-        <count>1029</count>
+        <count>1030</count>
         <translated>613</translated>
         <fuzzy>0</fuzzy>
-        <untranslated>416</untranslated>
+        <untranslated>417</untranslated>
       </strings>
       <translators>
         <translator>
       <file>Hungarian.po</file>
       <update>2021-03-15</update>
       <strings>
-        <count>1029</count>
+        <count>1030</count>
         <translated>1027</translated>
         <fuzzy>0</fuzzy>
-        <untranslated>2</untranslated>
+        <untranslated>3</untranslated>
       </strings>
       <translators>
         <translator>
       <file>Italian.po</file>
       <update>2019-07-12</update>
       <strings>
-        <count>1029</count>
+        <count>1030</count>
         <translated>917</translated>
         <fuzzy>0</fuzzy>
-        <untranslated>112</untranslated>
+        <untranslated>113</untranslated>
       </strings>
       <translators>
         <translator>
       <file>Japanese.po</file>
       <update>2021-03-31</update>
       <strings>
-        <count>1029</count>
+        <count>1030</count>
         <translated>1029</translated>
         <fuzzy>0</fuzzy>
-        <untranslated>0</untranslated>
+        <untranslated>1</untranslated>
       </strings>
       <translators>
         <translator>
       <file>Korean.po</file>
       <update>2021-03-30</update>
       <strings>
-        <count>1029</count>
+        <count>1030</count>
         <translated>998</translated>
         <fuzzy>0</fuzzy>
-        <untranslated>31</untranslated>
+        <untranslated>32</untranslated>
       </strings>
       <translators>
         <translator>
       <file>Lithuanian.po</file>
       <update>2021-04-01</update>
       <strings>
-        <count>1029</count>
+        <count>1030</count>
         <translated>1029</translated>
         <fuzzy>0</fuzzy>
-        <untranslated>0</untranslated>
+        <untranslated>1</untranslated>
       </strings>
       <translators>
         <translator>
       <file>Norwegian.po</file>
       <update></update>
       <strings>
-        <count>1029</count>
+        <count>1030</count>
         <translated>642</translated>
         <fuzzy>0</fuzzy>
-        <untranslated>387</untranslated>
+        <untranslated>388</untranslated>
       </strings>
       <translators>
         <translator>
       <file>Persian.po</file>
       <update>2013-08-15</update>
       <strings>
-        <count>1029</count>
+        <count>1030</count>
         <translated>653</translated>
         <fuzzy>0</fuzzy>
-        <untranslated>376</untranslated>
+        <untranslated>377</untranslated>
       </strings>
       <translators>
         <translator>
       <file>Polish.po</file>
       <update></update>
       <strings>
-        <count>1029</count>
+        <count>1030</count>
         <translated>1018</translated>
         <fuzzy>0</fuzzy>
-        <untranslated>11</untranslated>
+        <untranslated>12</untranslated>
       </strings>
       <translators>
         <translator>
       <file>Portuguese.po</file>
       <update>2021-04-10</update>
       <strings>
-        <count>1029</count>
+        <count>1030</count>
         <translated>1029</translated>
         <fuzzy>0</fuzzy>
-        <untranslated>0</untranslated>
+        <untranslated>1</untranslated>
       </strings>
       <translators>
         <translator>
       <file>Romanian.po</file>
       <update></update>
       <strings>
-        <count>1029</count>
+        <count>1030</count>
         <translated>571</translated>
         <fuzzy>44</fuzzy>
-        <untranslated>414</untranslated>
+        <untranslated>415</untranslated>
       </strings>
       <translators>
         <translator>
       <file>Russian.po</file>
       <update>2021-03-28</update>
       <strings>
-        <count>1029</count>
+        <count>1030</count>
         <translated>1016</translated>
         <fuzzy>0</fuzzy>
-        <untranslated>13</untranslated>
+        <untranslated>14</untranslated>
       </strings>
       <translators>
         <translator>
       <file>Serbian.po</file>
       <update></update>
       <strings>
-        <count>1029</count>
+        <count>1030</count>
         <translated>641</translated>
         <fuzzy>0</fuzzy>
-        <untranslated>388</untranslated>
+        <untranslated>389</untranslated>
       </strings>
       <translators>
         <translator>
       <file>Sinhala.po</file>
       <update>2010-12-12</update>
       <strings>
-        <count>1029</count>
+        <count>1030</count>
         <translated>571</translated>
         <fuzzy>63</fuzzy>
-        <untranslated>395</untranslated>
+        <untranslated>396</untranslated>
       </strings>
       <translators>
         <translator>
       <file>Slovak.po</file>
       <update>2020-11-02</update>
       <strings>
-        <count>1029</count>
+        <count>1030</count>
         <translated>987</translated>
         <fuzzy>0</fuzzy>
-        <untranslated>42</untranslated>
+        <untranslated>43</untranslated>
       </strings>
       <translators>
         <translator>
       <file>Slovenian.po</file>
       <update>2021-03-02</update>
       <strings>
-        <count>1029</count>
+        <count>1030</count>
         <translated>1027</translated>
         <fuzzy>0</fuzzy>
-        <untranslated>2</untranslated>
+        <untranslated>3</untranslated>
       </strings>
       <translators>
         <translator>
       <file>Spanish.po</file>
       <update>2020-04-03</update>
       <strings>
-        <count>1029</count>
+        <count>1030</count>
         <translated>883</translated>
         <fuzzy>0</fuzzy>
-        <untranslated>146</untranslated>
+        <untranslated>147</untranslated>
       </strings>
       <translators>
         <translator>
       <file>Swedish.po</file>
       <update>2021-04-10</update>
       <strings>
-        <count>1029</count>
+        <count>1030</count>
         <translated>1029</translated>
         <fuzzy>0</fuzzy>
-        <untranslated>0</untranslated>
+        <untranslated>1</untranslated>
       </strings>
       <translators>
         <translator>
       <file>Turkish.po</file>
       <update>2020-09-08</update>
       <strings>
-        <count>1029</count>
+        <count>1030</count>
         <translated>983</translated>
         <fuzzy>0</fuzzy>
-        <untranslated>46</untranslated>
+        <untranslated>47</untranslated>
       </strings>
       <translators>
         <translator>
       <file>Ukrainian.po</file>
       <update>2009-06-13</update>
       <strings>
-        <count>1029</count>
+        <count>1030</count>
         <translated>647</translated>
         <fuzzy>0</fuzzy>
-        <untranslated>382</untranslated>
+        <untranslated>383</untranslated>
       </strings>
       <translators>
         <translator>
index 596c9f3..55403f6 100644 (file)
@@ -2241,6 +2241,10 @@ msgstr "السطر: %s"
 msgid "Ln: %s  Col: %d/%d  Ch: %d/%d"
 msgstr "Ln: %s  Col: %d/%d  Ch: %d/%d"
 
+#, c-format
+msgid "  Sel: %d | %d"
+msgstr ""
+
 msgid "Merge"
 msgstr "دمج"
 
index 970476f..66a6586 100644 (file)
@@ -2758,6 +2758,10 @@ msgid "Ln: %s  Col: %d/%d  Ch: %d/%d"
 msgstr ""
 
 #, c-format
+msgid "  Sel: %d | %d"
+msgstr ""
+
+#, c-format
 msgid "Merge"
 msgstr "Batu"
 
index 3275307..6d68c8b 100644 (file)
@@ -2790,6 +2790,10 @@ msgid "Ln: %s  Col: %d/%d  Ch: %d/%d"
 msgstr "Lin: %s  Col: %d/%d  Car: %d/%d"
 
 #, c-format
+msgid "  Sel: %d | %d"
+msgstr ""
+
+#, c-format
 msgid "Merge"
 msgstr "Unir"
 
index 201fdde..c9b8aab 100644 (file)
@@ -2256,6 +2256,10 @@ msgstr "Ред: %s"
 msgid "Ln: %s  Col: %d/%d  Ch: %d/%d"
 msgstr "Ред: %s  колона: %d/%d  знак: %d/%d"
 
+#, c-format
+msgid "  Sel: %d | %d"
+msgstr ""
+
 msgid "Merge"
 msgstr "Сливане"
 
index 669bd89..cdcf667 100644 (file)
@@ -2723,6 +2723,10 @@ msgid "Ln: %s  Col: %d/%d  Ch: %d/%d"
 msgstr ""
 
 #, c-format
+msgid "  Sel: %d | %d"
+msgstr ""
+
+#, c-format
 msgid "Merge"
 msgstr "Combina"
 
index f6152c2..390948c 100644 (file)
@@ -2253,6 +2253,10 @@ msgstr "行: %s"
 msgid "Ln: %s  Col: %d/%d  Ch: %d/%d"
 msgstr "行: %s  列: %d/%d  字符: %d/%d"
 
+#, c-format
+msgid "  Sel: %d | %d"
+msgstr ""
+
 msgid "Merge"
 msgstr "合并"
 
index d72f25b..a07d838 100644 (file)
@@ -2769,6 +2769,10 @@ msgid "Ln: %s  Col: %d/%d  Ch: %d/%d"
 msgstr "Ln: %s  Col: %d/%d  Ch: %d/%d"
 
 #, c-format
+msgid "  Sel: %d | %d"
+msgstr ""
+
+#, c-format
 msgid "Merge"
 msgstr "合併"
 
index e3a82b6..94fc23c 100644 (file)
@@ -2757,6 +2757,10 @@ msgid "Ln: %s  Col: %d/%d  Ch: %d/%d"
 msgstr ""
 
 #, c-format
+msgid "  Sel: %d | %d"
+msgstr ""
+
+#, c-format
 msgid "Merge"
 msgstr "Usporedo"
 
index 3d735f4..12f3fee 100644 (file)
@@ -2726,6 +2726,10 @@ msgid "Ln: %s  Col: %d/%d  Ch: %d/%d"
 msgstr ""
 
 #, c-format
+msgid "  Sel: %d | %d"
+msgstr ""
+
+#, c-format
 msgid "Merge"
 msgstr "Sloučit"
 
index 6f0a78f..7318e23 100644 (file)
@@ -2772,6 +2772,10 @@ msgid "Ln: %s  Col: %d/%d  Ch: %d/%d"
 msgstr ""
 
 #, c-format
+msgid "  Sel: %d | %d"
+msgstr ""
+
+#, c-format
 msgid "Merge"
 msgstr "Flet"
 
index 31f5a51..dcc1517 100644 (file)
@@ -2261,6 +2261,10 @@ msgstr "Regel: %s"
 msgid "Ln: %s  Col: %d/%d  Ch: %d/%d"
 msgstr "Regel: %s  Kolom: %d/%d  Teken: %d/%d"
 
+#, c-format
+msgid "  Sel: %d | %d"
+msgstr ""
+
 msgid "Merge"
 msgstr "Samenvoegen"
 
index 01e8c11..063038f 100644 (file)
@@ -5,7 +5,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: WinMerge\n"
 "Report-Msgid-Bugs-To: https://bugs.winmerge.org/\n"
-"POT-Creation-Date: 2021-04-15 07:51+0000\n"
+"POT-Creation-Date: 2021-04-18 15:21+0000\n"
 "PO-Revision-Date: \n"
 "Last-Translator: \n"
 "Language-Team: English <winmerge-translate@lists.sourceforge.net>\n"
@@ -2120,6 +2120,10 @@ msgstr ""
 msgid "Ln: %s  Col: %d/%d  Ch: %d/%d"
 msgstr ""
 
+#, c-format
+msgid "  Sel: %d | %d"
+msgstr ""
+
 msgid "Merge"
 msgstr ""
 
index 9f5438a..fe294cf 100644 (file)
@@ -2782,6 +2782,10 @@ msgid "Ln: %s  Col: %d/%d  Ch: %d/%d"
 msgstr "Ln: %s  Col: %d/%d  Ch: %d/%d"
 
 #, c-format
+msgid "  Sel: %d | %d"
+msgstr ""
+
+#, c-format
 msgid "Merge"
 msgstr "Yhdistä"
 
index 13357f1..e5012c7 100644 (file)
@@ -2797,6 +2797,10 @@ msgid "Ln: %s  Col: %d/%d  Ch: %d/%d"
 msgstr "Ln: %s  Col: %d/%d  Ch: %d/%d"
 
 #, c-format
+msgid "  Sel: %d | %d"
+msgstr ""
+
+#, c-format
 msgid "Merge"
 msgstr "Fusion"
 
index 8973371..d4d8896 100644 (file)
@@ -2791,6 +2791,10 @@ msgid "Ln: %s  Col: %d/%d  Ch: %d/%d"
 msgstr "Lñ: %s  Col: %d/%d  Car: %d/%d"
 
 #, c-format
+msgid "  Sel: %d | %d"
+msgstr ""
+
+#, c-format
 msgid "Merge"
 msgstr "Mesturar"
 
index 1c3836b..53d00c7 100644 (file)
@@ -2682,6 +2682,10 @@ msgid "Ln: %s  Col: %d/%d  Ch: %d/%d"
 msgstr "Zeile: %s  Spalte: %d/%d  Zeichen: %d/%d"
 
 #, c-format
+msgid "  Sel: %d | %d"
+msgstr ""
+
+#, c-format
 msgid "Merge"
 msgstr "Merge"
 
index 4fd59a0..2954585 100644 (file)
@@ -2751,6 +2751,10 @@ msgid "Ln: %s  Col: %d/%d  Ch: %d/%d"
 msgstr ""
 
 #, c-format
+msgid "  Sel: %d | %d"
+msgstr ""
+
+#, c-format
 msgid "Merge"
 msgstr "Συγχώνευση"
 
index 2247a4d..26b46a2 100644 (file)
@@ -2792,6 +2792,10 @@ msgid "Ln: %s  Col: %d/%d  Ch: %d/%d"
 msgstr "Sor: %s  Oszlop: %d/%d  Karakter: %d/%d"
 
 #, c-format
+msgid "  Sel: %d | %d"
+msgstr ""
+
+#, c-format
 msgid "Merge"
 msgstr "Egyesítés"
 
index 1482abf..2e14765 100644 (file)
@@ -2244,6 +2244,10 @@ msgstr "Linea: %s"
 msgid "Ln: %s  Col: %d/%d  Ch: %d/%d"
 msgstr "Ln: %s  Col: %d/%d  Car: %d/%d"
 
+#, c-format
+msgid "  Sel: %d | %d"
+msgstr ""
+
 msgid "Merge"
 msgstr "Unione"
 
index 89c00d4..1757e6c 100644 (file)
@@ -2237,6 +2237,10 @@ msgstr "行: %s"
 msgid "Ln: %s  Col: %d/%d  Ch: %d/%d"
 msgstr "行: %s  列: %d/%d  文字: %d/%d"
 
+#, c-format
+msgid "  Sel: %d | %d"
+msgstr "  選択: %d | %d"
+
 msgid "Merge"
 msgstr "マージ"
 
index 957e77a..62d3b0d 100644 (file)
@@ -2784,6 +2784,10 @@ msgid "Ln: %s  Col: %d/%d  Ch: %d/%d"
 msgstr "줄: %s  열: %d/%d  문자: %d/%d"
 
 #, c-format
+msgid "  Sel: %d | %d"
+msgstr ""
+
+#, c-format
 msgid "Merge"
 msgstr "병합"
 
index 406d873..aec7f30 100644 (file)
@@ -2129,6 +2129,10 @@ msgstr "Eilutė: %s"
 msgid "Ln: %s  Col: %d/%d  Ch: %d/%d"
 msgstr "Eil.: %s  Stlp.: %d/%d  Sk.: %d/%d"
 
+#, c-format
+msgid "  Sel: %d | %d"
+msgstr ""
+
 msgid "Merge"
 msgstr "Sulieti"
 
index d613031..b0ffadc 100644 (file)
@@ -2757,6 +2757,10 @@ msgid "Ln: %s  Col: %d/%d  Ch: %d/%d"
 msgstr ""
 
 #, c-format
+msgid "  Sel: %d | %d"
+msgstr ""
+
+#, c-format
 msgid "Merge"
 msgstr "Slå sammen"
 
index 4e3ef41..3d0bb52 100644 (file)
@@ -2776,6 +2776,10 @@ msgid "Ln: %s  Col: %d/%d  Ch: %d/%d"
 msgstr "Ln: %s  Col: %d/%d  Ch: %d/%d"
 
 #, c-format
+msgid "  Sel: %d | %d"
+msgstr ""
+
+#, c-format
 msgid "Merge"
 msgstr " پيوند زدن  "
 
index ed77dfe..4dcc52c 100644 (file)
@@ -2126,6 +2126,10 @@ msgstr "Wiersz: %s"
 msgid "Ln: %s  Col: %d/%d  Ch: %d/%d"
 msgstr "Wier: %s  Kol: %d/%d  Zn: %d/%d"
 
+#, c-format
+msgid "  Sel: %d | %d"
+msgstr ""
+
 msgid "Merge"
 msgstr "Scal"
 
index 50627bb..a0a7b17 100644 (file)
@@ -2272,6 +2272,10 @@ msgstr "Linha: %s"
 msgid "Ln: %s  Col: %d/%d  Ch: %d/%d"
 msgstr "Ln: %s  Col: %d/%d  Ch: %d/%d"
 
+#, c-format
+msgid "  Sel: %d | %d"
+msgstr ""
+
 msgid "Merge"
 msgstr "Combinar"
 
index 05bbb1b..bad6d33 100644 (file)
@@ -2752,6 +2752,10 @@ msgid "Ln: %s  Col: %d/%d  Ch: %d/%d"
 msgstr ""
 
 #, c-format
+msgid "  Sel: %d | %d"
+msgstr ""
+
+#, c-format
 msgid "Merge"
 msgstr "Fuziune"
 
index 0e217df..32cd7ef 100644 (file)
@@ -2128,6 +2128,10 @@ msgstr "Строка: %s"
 msgid "Ln: %s  Col: %d/%d  Ch: %d/%d"
 msgstr "Стр: %s  Стб: %d/%d  Симв: %d/%d"
 
+#, c-format
+msgid "  Sel: %d | %d"
+msgstr ""
+
 msgid "Merge"
 msgstr "Объединение"
 
index d579c5a..e8a2fd6 100644 (file)
@@ -2740,6 +2740,10 @@ msgid "Ln: %s  Col: %d/%d  Ch: %d/%d"
 msgstr ""
 
 #, c-format
+msgid "  Sel: %d | %d"
+msgstr ""
+
+#, c-format
 msgid "Merge"
 msgstr "Упореди"
 
index 111065b..fbbb3c3 100644 (file)
@@ -2749,6 +2749,10 @@ msgid "Ln: %s  Col: %d/%d  Ch: %d/%d"
 msgstr "Ln: %s  Col: %d/%d  Ch: %d/%d"
 
 #, c-format
+msgid "  Sel: %d | %d"
+msgstr ""
+
+#, c-format
 msgid "Merge"
 msgstr "මුසු කරන්න"
 
index 95c85e7..0d98dbd 100644 (file)
@@ -2258,6 +2258,10 @@ msgstr "Riadok: %s"
 msgid "Ln: %s  Col: %d/%d  Ch: %d/%d"
 msgstr "Riad: %s  Stĺ: %d/%d  Zn: %d/%d"
 
+#, c-format
+msgid "  Sel: %d | %d"
+msgstr ""
+
 msgid "Merge"
 msgstr "Zlúčiť"
 
index 531a191..685a597 100644 (file)
@@ -2786,6 +2786,10 @@ msgid "Ln: %s  Col: %d/%d  Ch: %d/%d"
 msgstr "Vr: %s  St: %d/%d  Zn: %d/%d"
 
 #, c-format
+msgid "  Sel: %d | %d"
+msgstr ""
+
+#, c-format
 msgid "Merge"
 msgstr "Združi"
 
index b26e151..f764a92 100644 (file)
@@ -2252,6 +2252,10 @@ msgstr "Línea: %s"
 msgid "Ln: %s  Col: %d/%d  Ch: %d/%d"
 msgstr ""
 
+#, c-format
+msgid "  Sel: %d | %d"
+msgstr ""
+
 msgid "Merge"
 msgstr "Combinar"
 
index 69a6cf7..b0ec9fc 100644 (file)
@@ -2785,6 +2785,10 @@ msgid "Ln: %s  Col: %d/%d  Ch: %d/%d"
 msgstr "Ln: %s  Col: %d/%d  Ch: %d/%d"
 
 #, c-format
+msgid "  Sel: %d | %d"
+msgstr ""
+
+#, c-format
 msgid "Merge"
 msgstr "Sammanfoga"
 
index 0d09e74..e6531bc 100644 (file)
@@ -2245,6 +2245,10 @@ msgstr "Satır: %s"
 msgid "Ln: %s  Col: %d/%d  Ch: %d/%d"
 msgstr "Satır: %s  Sütun: %d/%d  Karakter: %d/%d"
 
+#, c-format
+msgid "  Sel: %d | %d"
+msgstr ""
+
 msgid "Merge"
 msgstr "Birleştir"
 
index 703c13d..0dd3144 100644 (file)
@@ -2758,6 +2758,10 @@ msgid "Ln: %s  Col: %d/%d  Ch: %d/%d"
 msgstr ""
 
 #, c-format
+msgid "  Sel: %d | %d"
+msgstr ""
+
+#, c-format
 msgid "Merge"
 msgstr "Об'єднання"