[Debian-l10n-commits] poedit branch master updated. debian/1.8.1-1-2-g7bf6976

Gianfranco Costamagna locutusofborg-guest at moszumanska.debian.org
Sat Jun 13 10:40:13 UTC 2015


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "poedit".

The branch, master has been updated
       via  7bf6976b9f88f9b8ef5062e9a5c9d7278e3b4430 (commit)
       via  26891def5cae58d58c4a2420a2fb905b48177c02 (commit)
       via  b0d1679a6be5bc495f834e578edfcccdd2b76cc8 (commit)
       via  ae1543d18e899819d81a2b77388419dd2804db48 (commit)
       via  78e91284a0fccd898970d522d3166d5989c02383 (commit)
       via  cdb38436ec133334f21ec76af1b30a9a7d34933f (commit)
       via  eeecd6f02f6ce5258778de528d248a5969af8c8d (commit)
       via  878224db2bedfa762a927737cdcc05b631c11fa2 (commit)
       via  8e3662827aee42f2dfd324599bc7d7d4bb294e8e (commit)
       via  2bd88e81ec1acf8746f128bae197004b3a370467 (commit)
       via  6a7c80335c18c65809b3bb2569dac646f315d03e (commit)
       via  3adc43a151237b2e93ad50547240d6b4e86d2d6e (commit)
      from  ecd8833e9eca789b8c5cf2ce8472060d40f227d6 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------

http://anonscm.debian.org/gitweb/?p=debian-l10n/poedit.git;a=commitdiff;h=7bf6976b9f88f9b8ef5062e9a5c9d7278e3b4430

commit 7bf6976b9f88f9b8ef5062e9a5c9d7278e3b4430
Author: Gianfranco Costamagna <costamagnagianfranco at yahoo.it>
Date:   Sat Jun 13 10:00:43 2015 +0200

    Merge experimental branch, disable cpprest features, upload to unstable

-----------------------------------------------------------------------

Summary of changes:
 Makefile.in                                   |    7 +-
 NEWS                                          |   22 +
 README                                        |    8 +-
 admin/ax_cxx_compile_stdcxx_11.m4             |   27 +-
 admin/wxwin.m4                                |   11 +-
 artwork/CrowdinLogo.png                       |  Bin 0 -> 6321 bytes
 artwork/Makefile.am                           |    4 +-
 artwork/Makefile.in                           |   11 +-
 artwork/linux/poedit-sync.png                 |  Bin 0 -> 3074 bytes
 configure                                     | 1469 +++++++++++++++++++------
 configure.ac                                  |  160 ++-
 debian/changelog                              |   28 +
 debian/control                                |   10 +-
 debian/copyright                              |    6 +
 debian/patches/01-desktop.patch               |    4 +-
 debian/patches/mv-poedit-dump-legacy.patch    |    2 +-
 docs/Makefile.in                              |    7 +-
 docs/poedit.1                                 |    4 +-
 locales/Makefile.am                           |    2 +-
 locales/Makefile.in                           |    9 +-
 locales/af.mo                                 |  Bin 10023 -> 9188 bytes
 locales/af.po                                 |  396 +++++--
 locales/am.mo                                 |  Bin 13441 -> 12320 bytes
 locales/am.po                                 |  396 +++++--
 locales/an.mo                                 |  Bin 40783 -> 46735 bytes
 locales/an.po                                 |  455 ++++++--
 locales/ar.mo                                 |  Bin 46811 -> 52682 bytes
 locales/ar.po                                 |  438 ++++++--
 locales/ast.mo                                |  Bin 9398 -> 8533 bytes
 locales/ast.po                                |  396 +++++--
 locales/az.mo                                 |  Bin 37468 -> 38941 bytes
 locales/az.po                                 |  424 +++++--
 locales/be.mo                                 |  Bin 11746 -> 12955 bytes
 locales/be.po                                 |  451 ++++++--
 locales/be at latin.mo                           |  Bin 10753 -> 9861 bytes
 locales/be at latin.po                           |  433 ++++++--
 locales/bg.mo                                 |  Bin 50342 -> 57680 bytes
 locales/bg.po                                 |  597 ++++++----
 locales/bn.mo                                 |  Bin 15987 -> 14555 bytes
 locales/bn.po                                 |  396 +++++--
 locales/br.mo                                 |  Bin 10052 -> 9171 bytes
 locales/br.po                                 |  396 +++++--
 locales/bs.mo                                 |  Bin 39735 -> 43009 bytes
 locales/bs.po                                 |  424 +++++--
 locales/ca.mo                                 |  Bin 40664 -> 46390 bytes
 locales/ca.po                                 |  522 ++++++---
 locales/ca at valencia.mo                        |  Bin 11417 -> 10531 bytes
 locales/ca at valencia.po                        |  396 +++++--
 locales/ckb.mo                                |  Bin 21341 -> 20120 bytes
 locales/ckb.po                                |  402 +++++--
 locales/co.mo                                 |  Bin 37344 -> 47307 bytes
 locales/co.po                                 |  830 +++++++++-----
 locales/cs.mo                                 |  Bin 40521 -> 46426 bytes
 locales/cs.po                                 |  461 ++++++--
 locales/da.mo                                 |  Bin 38701 -> 44229 bytes
 locales/da.po                                 |  463 ++++++--
 locales/de.mo                                 |  Bin 41394 -> 47518 bytes
 locales/de.po                                 |  475 ++++++--
 locales/el.mo                                 |  Bin 36818 -> 35639 bytes
 locales/el.po                                 |  410 +++++--
 locales/en_GB.mo                              |  Bin 37792 -> 41732 bytes
 locales/en_GB.po                              |  423 +++++--
 locales/eo.mo                                 |  Bin 11403 -> 10576 bytes
 locales/eo.po                                 |  398 +++++--
 locales/es.mo                                 |  Bin 40642 -> 46366 bytes
 locales/es.po                                 |  483 +++++---
 locales/et.mo                                 |  Bin 17515 -> 16683 bytes
 locales/et.po                                 |  406 +++++--
 locales/eu.mo                                 |  Bin 38600 -> 44316 bytes
 locales/eu.po                                 |  441 ++++++--
 locales/fa.mo                                 |  Bin 26671 -> 26545 bytes
 locales/fa.po                                 |  417 +++++--
 locales/fi.mo                                 |  Bin 31397 -> 45571 bytes
 locales/fi.po                                 |  623 +++++++----
 locales/fr.mo                                 |  Bin 41885 -> 47862 bytes
 locales/fr.po                                 |  703 ++++++++----
 locales/fur.mo                                |  Bin 9997 -> 9126 bytes
 locales/fur.po                                |  396 +++++--
 locales/fy_NL.mo                              |  Bin 0 -> 9696 bytes
 locales/{af.po => fy_NL.po}                   |  829 ++++++++------
 locales/ga.mo                                 |  Bin 11514 -> 10635 bytes
 locales/ga.po                                 |  399 +++++--
 locales/gl.mo                                 |  Bin 40489 -> 46184 bytes
 locales/gl.po                                 |  437 ++++++--
 locales/he.mo                                 |  Bin 25133 -> 24109 bytes
 locales/he.po                                 |  410 +++++--
 locales/hi.mo                                 |  Bin 17193 -> 15918 bytes
 locales/hi.po                                 |  396 +++++--
 locales/hr.mo                                 |  Bin 33515 -> 32575 bytes
 locales/hr.po                                 |  411 +++++--
 locales/hu.mo                                 |  Bin 41288 -> 47277 bytes
 locales/hu.po                                 |  441 ++++++--
 locales/id.mo                                 |  Bin 38635 -> 44279 bytes
 locales/id.po                                 |  445 ++++++--
 locales/is.mo                                 |  Bin 39698 -> 44691 bytes
 locales/is.po                                 |  487 +++++---
 locales/it.mo                                 |  Bin 40236 -> 45906 bytes
 locales/it.po                                 |  440 ++++++--
 locales/ja.mo                                 |  Bin 43077 -> 49394 bytes
 locales/ja.po                                 |  434 ++++++--
 locales/ka.mo                                 |  Bin 29183 -> 27894 bytes
 locales/ka.po                                 |  414 +++++--
 locales/kk.mo                                 |  Bin 22819 -> 21686 bytes
 locales/kk.po                                 |  405 +++++--
 locales/ko.mo                                 |  Bin 40820 -> 46957 bytes
 locales/ko.po                                 |  432 ++++++--
 locales/ku.mo                                 |  Bin 5051 -> 4418 bytes
 locales/ku.po                                 |  388 +++++--
 locales/ky.mo                                 |  Bin 35893 -> 34699 bytes
 locales/ky.po                                 |  415 +++++--
 locales/lt.mo                                 |  Bin 29207 -> 29513 bytes
 locales/lt.po                                 |  453 +++++---
 locales/lv.mo                                 |  Bin 16550 -> 15650 bytes
 locales/lv.po                                 |  403 +++++--
 locales/mk.mo                                 |  Bin 23367 -> 22218 bytes
 locales/mk.po                                 |  406 +++++--
 locales/mn.mo                                 |  Bin 10685 -> 9832 bytes
 locales/mn.po                                 |  392 +++++--
 locales/mr.mo                                 |  Bin 23823 -> 22490 bytes
 locales/mr.po                                 |  402 +++++--
 locales/ms.mo                                 |  Bin 32437 -> 31631 bytes
 locales/ms.po                                 |  503 ++++++---
 locales/nb.mo                                 |  Bin 38026 -> 43618 bytes
 locales/nb.po                                 |  434 ++++++--
 locales/ne.mo                                 |  Bin 27875 -> 26565 bytes
 locales/ne.po                                 |  406 +++++--
 locales/nl.mo                                 |  Bin 40180 -> 46184 bytes
 locales/nl.po                                 |  752 ++++++++-----
 locales/nn.mo                                 |  Bin 10664 -> 9839 bytes
 locales/nn.po                                 |  396 +++++--
 locales/pa.mo                                 |  Bin 31252 -> 30317 bytes
 locales/pa.po                                 |  430 ++++++--
 locales/pl.mo                                 |  Bin 41109 -> 40575 bytes
 locales/pl.po                                 |  419 +++++--
 locales/poedit.pot                            |  350 ++++--
 locales/pt_BR.mo                              |  Bin 40130 -> 45890 bytes
 locales/pt_BR.po                              |  980 ++++++++++-------
 locales/pt_PT.mo                              |  Bin 39961 -> 45847 bytes
 locales/pt_PT.po                              |  500 ++++++---
 locales/ro.mo                                 |  Bin 24283 -> 25836 bytes
 locales/ro.po                                 |  416 +++++--
 locales/ru.mo                                 |  Bin 51856 -> 59028 bytes
 locales/ru.po                                 |  442 ++++++--
 locales/sk.mo                                 |  Bin 40585 -> 46586 bytes
 locales/sk.po                                 |  441 ++++++--
 locales/sl.mo                                 |  Bin 18083 -> 17263 bytes
 locales/sl.po                                 |  408 +++++--
 locales/sq.mo                                 |  Bin 40128 -> 44768 bytes
 locales/sq.po                                 | 1300 +++++++++++++---------
 locales/sr.mo                                 |  Bin 45692 -> 56843 bytes
 locales/sr.po                                 |  597 +++++++---
 locales/sv.mo                                 |  Bin 39259 -> 44930 bytes
 locales/sv.po                                 |  434 ++++++--
 locales/ta.mo                                 |  Bin 18507 -> 17130 bytes
 locales/ta.po                                 |  396 +++++--
 locales/tg.mo                                 |  Bin 39653 -> 60697 bytes
 locales/tg.po                                 |  713 ++++++++----
 locales/th.mo                                 |  Bin 18603 -> 17329 bytes
 locales/th.po                                 |  435 ++++++--
 locales/tr.mo                                 |  Bin 39757 -> 45563 bytes
 locales/tr.po                                 |  452 ++++++--
 locales/tt.mo                                 |  Bin 9995 -> 9149 bytes
 locales/tt.po                                 |  395 +++++--
 locales/ug.mo                                 |  Bin 20990 -> 19899 bytes
 locales/ug.po                                 |  401 +++++--
 locales/uk.mo                                 |  Bin 51091 -> 58258 bytes
 locales/uk.po                                 |  447 ++++++--
 locales/ur.mo                                 |  Bin 12954 -> 11850 bytes
 locales/ur.po                                 |  396 +++++--
 locales/uz.mo                                 |  Bin 40087 -> 44138 bytes
 locales/uz.po                                 |  603 ++++++----
 locales/vi.mo                                 |  Bin 27729 -> 26775 bytes
 locales/vi.po                                 |  409 +++++--
 locales/wa.mo                                 |  Bin 9076 -> 8354 bytes
 locales/wa.po                                 |  394 +++++--
 locales/zh_CN.mo                              |  Bin 37048 -> 42386 bytes
 locales/zh_CN.po                              |  489 +++++---
 locales/zh_TW.mo                              |  Bin 37090 -> 42331 bytes
 locales/zh_TW.po                              |  431 ++++++--
 poedit.desktop                                |    2 +-
 src/Makefile.am                               |   35 +-
 src/Makefile.in                               |  150 ++-
 src/{tm => }/ThreadPool.h                     |   45 +-
 src/cat_sorting.cpp                           |   15 +-
 src/cat_sorting.h                             |    7 +-
 src/catalog.cpp                               |  725 ++++++++----
 src/catalog.h                                 |  125 ++-
 src/chooselang.cpp                            |    2 +-
 src/concurrency.cpp                           |  110 ++
 src/concurrency.h                             |  238 ++++
 src/crowdin_client.cpp                        |  367 ++++++
 src/crowdin_client.h                          |  137 +++
 src/crowdin_gui.cpp                           |  622 +++++++++++
 src/crowdin_gui.h                             |  109 ++
 src/customcontrols.cpp                        |   94 +-
 src/customcontrols.h                          |   57 +-
 src/digger.cpp                                |   23 +-
 src/digger.h                                  |   11 +-
 src/edapp.cpp                                 |  350 +++++-
 src/edapp.h                                   |   13 +
 src/edframe.cpp                               | 1356 ++++++++++++++---------
 src/edframe.h                                 |   81 +-
 src/edlistctrl.cpp                            |  149 ++-
 src/edlistctrl.h                              |   17 +-
 src/export_html.cpp                           |  511 +++++----
 src/fileviewer.cpp                            |  117 +-
 src/fileviewer.h                              |   38 +-
 src/findframe.cpp                             |  567 +++++++---
 src/findframe.h                               |   51 +-
 src/hidpi.h                                   |    4 +-
 src/http_client.cpp                           |  101 ++
 src/http_client.h                             |  243 ++++
 src/http_client_casablanca.cpp                |  350 ++++++
 src/icuhelpers.h                              |   89 --
 src/keychain/keytar.h                         |   42 +
 src/keychain/keytar_posix.cc                  |  111 ++
 src/language.cpp                              |   73 +-
 src/language.h                                |   13 +
 src/logcapture.h                              |    2 +-
 src/main_toolbar.h                            |    2 +
 src/manager.cpp                               |    2 +-
 src/prefsdlg.cpp                              |  125 ++-
 src/progressinfo.cpp                          |    4 +-
 src/progressinfo.h                            |    2 +-
 src/propertiesdlg.cpp                         |  475 ++++++--
 src/propertiesdlg.h                           |   18 +-
 src/resources/find.xrc                        |  120 --
 src/resources/manager.xrc                     |    1 +
 src/resources/menus.xrc                       |   39 +-
 src/resources/prefs.xrc                       |    4 +
 src/resources/properties.xrc                  |   18 +-
 src/resources/toolbar.xrc                     |    4 +-
 src/sidebar.cpp                               |   59 +-
 src/sidebar.h                                 |   28 +-
 src/spellchecking.cpp                         |    8 +-
 src/str_helpers.h                             |  211 ++++
 src/syntaxhighlighter.cpp                     |    3 +-
 src/text_control.cpp                          |  324 +++++-
 src/text_control.h                            |   62 +-
 src/tm/suggestions.cpp                        |   41 +-
 src/tm/suggestions.h                          |   14 +-
 src/tm/tm_migrate.cpp                         |    9 +-
 src/tm/transmem.cpp                           |  297 +++--
 src/tm/transmem.h                             |   48 +-
 src/utility.cpp                               |   75 +-
 src/utility.h                                 |  140 ++-
 src/version.h                                 |    4 +-
 src/welcomescreen.cpp                         |   17 +-
 src/wx/main_toolbar.cpp                       |   22 +-
 src/wx_backports/activityindicator.h          |   56 +
 src/wx_backports/gtk_activityindicator.h      |   60 +
 src/wx_backports/wx_gtk_activityindicator.cpp |  163 +++
 252 files changed, 36633 insertions(+), 12624 deletions(-)
 create mode 100644 artwork/CrowdinLogo.png
 create mode 100644 artwork/linux/poedit-sync.png
 create mode 100644 locales/fy_NL.mo
 copy locales/{af.po => fy_NL.po} (75%)
 rename src/{tm => }/ThreadPool.h (73%)
 mode change 100755 => 100644
 create mode 100644 src/concurrency.cpp
 create mode 100644 src/concurrency.h
 create mode 100644 src/crowdin_client.cpp
 create mode 100644 src/crowdin_client.h
 create mode 100644 src/crowdin_gui.cpp
 create mode 100644 src/crowdin_gui.h
 create mode 100644 src/http_client.cpp
 create mode 100644 src/http_client.h
 create mode 100644 src/http_client_casablanca.cpp
 delete mode 100644 src/icuhelpers.h
 create mode 100644 src/keychain/keytar.h
 create mode 100644 src/keychain/keytar_posix.cc
 delete mode 100644 src/resources/find.xrc
 create mode 100644 src/str_helpers.h
 create mode 100644 src/wx_backports/activityindicator.h
 create mode 100644 src/wx_backports/gtk_activityindicator.h
 create mode 100644 src/wx_backports/wx_gtk_activityindicator.cpp

diff --git a/Makefile.in b/Makefile.in
index 0605edd..047910e 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -147,7 +147,6 @@ distcleancheck_listfiles = find . -type f -print
 ACLOCAL = @ACLOCAL@
 AMTAR = @AMTAR@
 AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-APPCAST_SUFFIX = @APPCAST_SUFFIX@
 AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
@@ -155,7 +154,9 @@ AWK = @AWK@
 CC = @CC@
 CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
+CLD2_LIBS = @CLD2_LIBS@
 CPPFLAGS = @CPPFLAGS@
+CPPREST_LIBS = @CPPREST_LIBS@
 CXX = @CXX@
 CXXCPP = @CXXCPP@
 CXXDEPMODE = @CXXDEPMODE@
@@ -167,9 +168,11 @@ DEPDIR = @DEPDIR@
 ECHO_C = @ECHO_C@
 ECHO_N = @ECHO_N@
 ECHO_T = @ECHO_T@
+EGREP = @EGREP@
 EXEEXT = @EXEEXT@
 EXPAT_CFLAGS = @EXPAT_CFLAGS@
 EXPAT_LIBS = @EXPAT_LIBS@
+GREP = @GREP@
 GTKSPELL_CFLAGS = @GTKSPELL_CFLAGS@
 GTKSPELL_LIBS = @GTKSPELL_LIBS@
 HAVE_CXX11 = @HAVE_CXX11@
@@ -183,6 +186,8 @@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
 LDFLAGS = @LDFLAGS@
 LIBOBJS = @LIBOBJS@
 LIBS = @LIBS@
+LIBSECRET_CFLAGS = @LIBSECRET_CFLAGS@
+LIBSECRET_LIBS = @LIBSECRET_LIBS@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
 LUCENE_CFLAGS = @LUCENE_CFLAGS@
diff --git a/NEWS b/NEWS
index ae4a540..6473a78 100644
--- a/NEWS
+++ b/NEWS
@@ -1,4 +1,26 @@
 
+Version 1.8.1
+-------------
+
+- fix TM-related crash under heavy concurrency
+- [OS X] fix crash when a concurrent task throws
+
+
+Version 1.8
+-----------
+
+- integration with the Crowdin localization management platform
+- search & replace
+- support for directly handling POT files
+- improved interface for configuring source code paths
+- Poedit now automatically fixes certain broken files produced by certain
+  broken tools (e.g. WPML)
+- modernized HTML export
+- [OS X] Quick  Look preview
+- support for non-English source languages (auto-detected)
+- [Windows] opening multiple Poedit windows now works correctly
+
+
 Version 1.7.7
 -------------
 
diff --git a/README b/README
index 9694b82..a355763 100644
--- a/README
+++ b/README
@@ -32,10 +32,14 @@ Requirements:
   * Unicode build of wxWidgets library, version >= 3.0 (see http://www.wxwidgets.org)
   * ICU
   * LucenePlusPlus
-  * expat
-  * Berkeley DB >= 4.7 if you need legacy (pre-1.6) translation memory
   * If on Unix, GtkSpell for spell checking support
 
+Optional dependencies:
+
+  * cld2 (better language autodetection and non-English source languages)
+  * Expat and Berkeley DB >= 4.7 (legacy translation memory migration)
+  * C++REST SDK >= 2.5 (Crowdin integration)
+
 
  Unix
 ------
diff --git a/admin/ax_cxx_compile_stdcxx_11.m4 b/admin/ax_cxx_compile_stdcxx_11.m4
index 163a4c6..a9a8f58 100644
--- a/admin/ax_cxx_compile_stdcxx_11.m4
+++ b/admin/ax_cxx_compile_stdcxx_11.m4
@@ -27,14 +27,14 @@
 #   Copyright (c) 2008 Benjamin Kosnik <bkoz at redhat.com>
 #   Copyright (c) 2012 Zack Weinberg <zackw at panix.com>
 #   Copyright (c) 2013 Roy Stogner <roystgnr at ices.utexas.edu>
-#   Copyright (c) 2014 Alexey Sokolov <sokolov at google.com>
+#   Copyright (c) 2014, 2015 Google Inc.; contributed by Alexey Sokolov <sokolov at google.com>
 #
 #   Copying and distribution of this file, with or without modification, are
 #   permitted in any medium without royalty provided the copyright notice
 #   and this notice are preserved. This file is offered as-is, without any
 #   warranty.
 
-#serial 4
+#serial 10
 
 m4_define([_AX_CXX_COMPILE_STDCXX_11_testbody], [[
   template <typename T>
@@ -61,6 +61,29 @@ m4_define([_AX_CXX_COMPILE_STDCXX_11_testbody], [[
 
     auto d = a;
     auto l = [](){};
+    // Prevent Clang error: unused variable 'l' [-Werror,-Wunused-variable]
+    struct use_l { use_l() { l(); } };
+
+    // http://stackoverflow.com/questions/13728184/template-aliases-and-sfinae
+    // Clang 3.1 fails with headers of libstd++ 4.8.3 when using std::function because of this
+    namespace test_template_alias_sfinae {
+        struct foo {};
+
+        template<typename T>
+        using member = typename T::member_type;
+
+        template<typename T>
+        void func(...) {}
+
+        template<typename T>
+        void func(member<T>*) {}
+
+        void test();
+
+        void test() {
+            func<foo>(0);
+        }
+    }
 ]])
 
 AC_DEFUN([AX_CXX_COMPILE_STDCXX_11], [dnl
diff --git a/admin/wxwin.m4 b/admin/wxwin.m4
index f0e0bc6..f8e5b70 100644
--- a/admin/wxwin.m4
+++ b/admin/wxwin.m4
@@ -3,7 +3,6 @@ dnl Author:          wxWidgets development team,
 dnl                  Francesco Montorsi,
 dnl                  Bob McCown (Mac-testing)
 dnl Creation date:   24/11/2001
-dnl RCS-ID:          $Id$
 dnl ---------------------------------------------------------------------------
 
 dnl ===========================================================================
@@ -560,7 +559,7 @@ dnl WX_STANDARD_OPTIONS([options-to-add])
 dnl
 dnl Adds to the configure script one or more of the following options:
 dnl   --enable-[debug|unicode|shared|wxshared|wxdebug]
-dnl   --with-[gtk|msw|motif|x11|mac|mgl|dfb]
+dnl   --with-[gtk|msw|motif|x11|mac|dfb]
 dnl   --with-wxversion
 dnl Then checks for their presence and eventually set the DEBUG, UNICODE, SHARED,
 dnl PORT, WX_SHARED, WX_DEBUG, variables to one of the "yes", "no", "auto" values.
@@ -605,10 +604,10 @@ AC_DEFUN([WX_STANDARD_OPTIONS],
                     dnl PORT must be one of the allowed values
                     if test "$TOOLKIT" != "gtk1" -a "$TOOLKIT" != "gtk2" -a \
                             "$TOOLKIT" != "msw" -a "$TOOLKIT" != "motif" -a \
-                            "$TOOLKIT" != "x11" -a "$TOOLKIT" != "mac" -a \
-                            "$TOOLKIT" != "mgl" -a "$TOOLKIT" != "dfb" ; then
+                            "$TOOLKIT" != "osx_carbon" -a "$TOOLKIT" != "osx_cocoa" -a \
+                            "$TOOLKIT" != "dfb" -a "$TOOLKIT" != "x11"; then
                         AC_MSG_ERROR([
-    Unrecognized option value (allowed values: auto, gtk1, gtk2, msw, motif, x11, mac, mgl, dfb)
+    Unrecognized option value (allowed values: auto, gtk1, gtk2, msw, motif, osx_carbon, osx_cocoa, dfb, x11)
                         ])
                     fi
 
@@ -872,7 +871,6 @@ AC_DEFUN([WX_DETECT_STANDARD_OPTION_VALUES],
             WX_OSXCOCOAPORT=$(expr "$WX_SELECTEDCONFIG" : ".*osx_cocoa.*")
             WX_OSXCARBONPORT=$(expr "$WX_SELECTEDCONFIG" : ".*osx_carbon.*")
             WX_X11PORT=$(expr "$WX_SELECTEDCONFIG" : ".*x11.*")
-            WX_MGLPORT=$(expr "$WX_SELECTEDCONFIG" : ".*mgl.*")
             WX_DFBPORT=$(expr "$WX_SELECTEDCONFIG" : ".*dfb.*")
 
             WX_PORT="unknown"
@@ -883,7 +881,6 @@ AC_DEFUN([WX_DETECT_STANDARD_OPTION_VALUES],
             if test "$WX_OSXCOCOAPORT" != "0"; then WX_PORT="osx_cocoa"; fi
             if test "$WX_OSXCARBONPORT" != "0"; then WX_PORT="osx_carbon"; fi
             if test "$WX_X11PORT" != "0"; then WX_PORT="x11"; fi
-            if test "$WX_MGLPORT" != "0"; then WX_PORT="mgl"; fi
             if test "$WX_DFBPORT" != "0"; then WX_PORT="dfb"; fi
 
             dnl NOTE: backward-compatible check for wx2.8; in wx2.9 the mac
diff --git a/artwork/CrowdinLogo.png b/artwork/CrowdinLogo.png
new file mode 100644
index 0000000..70cb86c
Binary files /dev/null and b/artwork/CrowdinLogo.png differ
diff --git a/artwork/Makefile.am b/artwork/Makefile.am
index 6c14174..b833b3e 100644
--- a/artwork/Makefile.am
+++ b/artwork/Makefile.am
@@ -38,6 +38,7 @@ dist_uiicons_DATA = \
 		linux/edit-delete.png \
 		linux/poedit-fuzzy.png \
 		linux/poedit-update.png \
+		linux/poedit-sync.png \
 		linux/poedit-validate.png \
 		linux/sidebar.png \
 		poedit-status-automatic.png \
@@ -50,7 +51,8 @@ dist_uiicons_DATA = \
 		window-close.png \
 		SuggestionError.png \
 		SuggestionTM.png \
-		PoeditWelcome.png
+		PoeditWelcome.png \
+		CrowdinLogo.png
 
 
 MIMETYPES = \
diff --git a/artwork/Makefile.in b/artwork/Makefile.in
index f0abcc9..9da1188 100644
--- a/artwork/Makefile.in
+++ b/artwork/Makefile.in
@@ -107,7 +107,6 @@ DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 AMTAR = @AMTAR@
 AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-APPCAST_SUFFIX = @APPCAST_SUFFIX@
 AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
@@ -115,7 +114,9 @@ AWK = @AWK@
 CC = @CC@
 CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
+CLD2_LIBS = @CLD2_LIBS@
 CPPFLAGS = @CPPFLAGS@
+CPPREST_LIBS = @CPPREST_LIBS@
 CXX = @CXX@
 CXXCPP = @CXXCPP@
 CXXDEPMODE = @CXXDEPMODE@
@@ -127,9 +128,11 @@ DEPDIR = @DEPDIR@
 ECHO_C = @ECHO_C@
 ECHO_N = @ECHO_N@
 ECHO_T = @ECHO_T@
+EGREP = @EGREP@
 EXEEXT = @EXEEXT@
 EXPAT_CFLAGS = @EXPAT_CFLAGS@
 EXPAT_LIBS = @EXPAT_LIBS@
+GREP = @GREP@
 GTKSPELL_CFLAGS = @GTKSPELL_CFLAGS@
 GTKSPELL_LIBS = @GTKSPELL_LIBS@
 HAVE_CXX11 = @HAVE_CXX11@
@@ -143,6 +146,8 @@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
 LDFLAGS = @LDFLAGS@
 LIBOBJS = @LIBOBJS@
 LIBS = @LIBS@
+LIBSECRET_CFLAGS = @LIBSECRET_CFLAGS@
+LIBSECRET_LIBS = @LIBSECRET_LIBS@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
 LUCENE_CFLAGS = @LUCENE_CFLAGS@
@@ -269,6 +274,7 @@ dist_uiicons_DATA = \
 		linux/edit-delete.png \
 		linux/poedit-fuzzy.png \
 		linux/poedit-update.png \
+		linux/poedit-sync.png \
 		linux/poedit-validate.png \
 		linux/sidebar.png \
 		poedit-status-automatic.png \
@@ -281,7 +287,8 @@ dist_uiicons_DATA = \
 		window-close.png \
 		SuggestionError.png \
 		SuggestionTM.png \
-		PoeditWelcome.png
+		PoeditWelcome.png \
+		CrowdinLogo.png
 
 MIMETYPES = \
 		text-x-gettext-translation \
diff --git a/artwork/linux/poedit-sync.png b/artwork/linux/poedit-sync.png
new file mode 100644
index 0000000..49bb3ae
Binary files /dev/null and b/artwork/linux/poedit-sync.png differ
diff --git a/configure b/configure
index 4f44446..003e3a7 100755
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.68 for poedit 1.7.7.
+# Generated by GNU Autoconf 2.68 for poedit 1.8.1.
 #
 # Report bugs to <help at poedit.net>.
 #
@@ -560,31 +560,66 @@ MAKEFLAGS=
 # Identity of this package.
 PACKAGE_NAME='poedit'
 PACKAGE_TARNAME='poedit'
-PACKAGE_VERSION='1.7.7'
-PACKAGE_STRING='poedit 1.7.7'
+PACKAGE_VERSION='1.8.1'
+PACKAGE_STRING='poedit 1.8.1'
 PACKAGE_BUGREPORT='help at poedit.net'
 PACKAGE_URL=''
 
-ac_unique_file="README"
+ac_unique_file="poedit.desktop"
+# Factoring default headers for most tests.
+ac_includes_default="\
+#include <stdio.h>
+#ifdef HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+# include <sys/stat.h>
+#endif
+#ifdef STDC_HEADERS
+# include <stdlib.h>
+# include <stddef.h>
+#else
+# ifdef HAVE_STDLIB_H
+#  include <stdlib.h>
+# endif
+#endif
+#ifdef HAVE_STRING_H
+# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+#  include <memory.h>
+# endif
+# include <string.h>
+#endif
+#ifdef HAVE_STRINGS_H
+# include <strings.h>
+#endif
+#ifdef HAVE_INTTYPES_H
+# include <inttypes.h>
+#endif
+#ifdef HAVE_STDINT_H
+# include <stdint.h>
+#endif
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif"
+
 ac_subst_vars='am__EXEEXT_FALSE
 am__EXEEXT_TRUE
 LTLIBOBJS
 LIBOBJS
 WX_CONFIG_WITH_ARGS
 SED
-APPCAST_SUFFIX
+CLD2_LIBS
+MIGRATE_LEGACY_TM_FALSE
+MIGRATE_LEGACY_TM_TRUE
 EXPAT_LIBS
 EXPAT_CFLAGS
+DB_LIBS
 LUCENE_LIBS
 LUCENE_CFLAGS
-DB_LIBS
 GTKSPELL_LIBS
 GTKSPELL_CFLAGS
 ICU_LIBS
 ICU_CFLAGS
-PKG_CONFIG_LIBDIR
-PKG_CONFIG_PATH
-PKG_CONFIG
 WXRC
 WX_VERSION_MICRO
 WX_VERSION_MINOR
@@ -599,6 +634,16 @@ WX_CXXFLAGS
 WX_CFLAGS
 WX_CPPFLAGS
 WX_CONFIG_PATH
+HAVE_CPPREST_FALSE
+HAVE_CPPREST_TRUE
+LIBSECRET_LIBS
+LIBSECRET_CFLAGS
+PKG_CONFIG_LIBDIR
+PKG_CONFIG_PATH
+PKG_CONFIG
+CPPREST_LIBS
+EGREP
+GREP
 HAVE_CXX11
 CXXCPP
 am__fastdepCXX_FALSE
@@ -714,6 +759,9 @@ with_wx_prefix
 with_wx_exec_prefix
 enable_debug
 enable_dependency_tracking
+with_cpprest
+enable_legacytm
+with_cld2
 '
       ac_precious_vars='build_alias
 host_alias
@@ -727,10 +775,12 @@ CXX
 CXXFLAGS
 CCC
 CXXCPP
-WXRC
 PKG_CONFIG
 PKG_CONFIG_PATH
 PKG_CONFIG_LIBDIR
+LIBSECRET_CFLAGS
+LIBSECRET_LIBS
+WXRC
 ICU_CFLAGS
 ICU_LIBS
 GTKSPELL_CFLAGS
@@ -1281,7 +1331,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures poedit 1.7.7 to adapt to many kinds of systems.
+\`configure' configures poedit 1.8.1 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1351,7 +1401,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of poedit 1.7.7:";;
+     short | recursive ) echo "Configuration of poedit 1.8.1:";;
    esac
   cat <<\_ACEOF
 
@@ -1366,6 +1416,7 @@ Optional Features:
   --enable-debug          Enable debug build
   --disable-dependency-tracking  speeds up one-time build
   --enable-dependency-tracking   do not reject slow dependency extractors
+  --disable-legacytm      disable code to migrate pre-1.6 TM to the new format
 
 Optional Packages:
   --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
@@ -1375,6 +1426,8 @@ Optional Packages:
   --with-wx-prefix=PREFIX Prefix where wxWidgets is installed (optional)
   --with-wx-exec-prefix=PREFIX
                           Exec prefix where wxWidgets is installed (optional)
+  --without-cpprest       Ignore presence of C++ REST SDK and disable it
+  --without-cld2          Ignore presence of cld2 and disable it
 
 Some influential environment variables:
   CC          C compiler command
@@ -1387,12 +1440,16 @@ Some influential environment variables:
   CXX         C++ compiler command
   CXXFLAGS    C++ compiler flags
   CXXCPP      C++ preprocessor
-  WXRC        Path to wxWidget's wxrc resource compiler
   PKG_CONFIG  path to pkg-config utility
   PKG_CONFIG_PATH
               directories to add to pkg-config's search path
   PKG_CONFIG_LIBDIR
               path overriding pkg-config's built-in search path
+  LIBSECRET_CFLAGS
+              C compiler flags for LIBSECRET, overriding pkg-config
+  LIBSECRET_LIBS
+              linker flags for LIBSECRET, overriding pkg-config
+  WXRC        Path to wxWidget's wxrc resource compiler
   ICU_CFLAGS  C compiler flags for ICU, overriding pkg-config
   ICU_LIBS    linker flags for ICU, overriding pkg-config
   GTKSPELL_CFLAGS
@@ -1472,7 +1529,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-poedit configure 1.7.7
+poedit configure 1.8.1
 generated by GNU Autoconf 2.68
 
 Copyright (C) 2010 Free Software Foundation, Inc.
@@ -1599,6 +1656,170 @@ fi
 
 } # ac_fn_cxx_try_cpp
 
+# ac_fn_cxx_check_header_mongrel LINENO HEADER VAR INCLUDES
+# ---------------------------------------------------------
+# Tests whether HEADER exists, giving a warning if it cannot be compiled using
+# the include files in INCLUDES and setting the cache variable VAR
+# accordingly.
+ac_fn_cxx_check_header_mongrel ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if eval \${$3+:} false; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+  # Is the header compilable?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5
+$as_echo_n "checking $2 usability... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+#include <$2>
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ac_header_compiler=yes
+else
+  ac_header_compiler=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5
+$as_echo_n "checking $2 presence... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <$2>
+_ACEOF
+if ac_fn_cxx_try_cpp "$LINENO"; then :
+  ac_header_preproc=yes
+else
+  ac_header_preproc=no
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_cxx_preproc_warn_flag in #((
+  yes:no: )
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+    ;;
+  no:yes:* )
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $2:     check for missing prerequisite headers?" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+( $as_echo "## ------------------------------ ##
+## Report this to help at poedit.net ##
+## ------------------------------ ##"
+     ) | sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+esac
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  eval "$3=\$ac_header_compiler"
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_cxx_check_header_mongrel
+
+# ac_fn_cxx_try_run LINENO
+# ------------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
+# that executables *can* be run.
+ac_fn_cxx_try_run ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
+  { { case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+       $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_retval=$ac_status
+fi
+  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_cxx_try_run
+
+# ac_fn_cxx_check_header_compile LINENO HEADER VAR INCLUDES
+# ---------------------------------------------------------
+# Tests whether HEADER exists and can be compiled using the include files in
+# INCLUDES, setting the cache variable VAR accordingly.
+ac_fn_cxx_check_header_compile ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+#include <$2>
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  eval "$3=yes"
+else
+  eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_cxx_check_header_compile
+
 # ac_fn_cxx_try_link LINENO
 # -------------------------
 # Try to link conftest.$ac_ext, and return whether this succeeded.
@@ -1715,7 +1936,7 @@ cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by poedit $as_me 1.7.7, which was
+It was created by poedit $as_me 1.8.1, which was
 generated by GNU Autoconf 2.68.  Invocation command line was
 
   $ $0 $@
@@ -2063,7 +2284,7 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
-PACKAGE_SHORT_VERSION=1.7.7
+PACKAGE_SHORT_VERSION=1.8.1
 
 
 ac_aux_dir=
@@ -2607,7 +2828,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='poedit'
- VERSION='1.7.7'
+ VERSION='1.8.1'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -4464,6 +4685,29 @@ else
 
     auto d = a;
     auto l = [](){};
+    // Prevent Clang error: unused variable 'l' [-Werror,-Wunused-variable]
+    struct use_l { use_l() { l(); } };
+
+    // http://stackoverflow.com/questions/13728184/template-aliases-and-sfinae
+    // Clang 3.1 fails with headers of libstd++ 4.8.3 when using std::function because of this
+    namespace test_template_alias_sfinae {
+        struct foo {};
+
+        template<typename T>
+        using member = typename T::member_type;
+
+        template<typename T>
+        void func(...) {}
+
+        template<typename T>
+        void func(member<T>*) {}
+
+        void test();
+
+        void test() {
+            func<foo>(0);
+        }
+    }
 
 _ACEOF
 if ac_fn_cxx_try_compile "$LINENO"; then :
@@ -4516,6 +4760,29 @@ else
 
     auto d = a;
     auto l = [](){};
+    // Prevent Clang error: unused variable 'l' [-Werror,-Wunused-variable]
+    struct use_l { use_l() { l(); } };
+
+    // http://stackoverflow.com/questions/13728184/template-aliases-and-sfinae
+    // Clang 3.1 fails with headers of libstd++ 4.8.3 when using std::function because of this
+    namespace test_template_alias_sfinae {
+        struct foo {};
+
+        template<typename T>
+        using member = typename T::member_type;
+
+        template<typename T>
+        void func(...) {}
+
+        template<typename T>
+        void func(member<T>*) {}
+
+        void test();
+
+        void test() {
+            func<foo>(0);
+        }
+    }
 
 _ACEOF
 if ac_fn_cxx_try_compile "$LINENO"; then :
@@ -4574,6 +4841,29 @@ else
 
     auto d = a;
     auto l = [](){};
+    // Prevent Clang error: unused variable 'l' [-Werror,-Wunused-variable]
+    struct use_l { use_l() { l(); } };
+
+    // http://stackoverflow.com/questions/13728184/template-aliases-and-sfinae
+    // Clang 3.1 fails with headers of libstd++ 4.8.3 when using std::function because of this
+    namespace test_template_alias_sfinae {
+        struct foo {};
+
+        template<typename T>
+        using member = typename T::member_type;
+
+        template<typename T>
+        void func(...) {}
+
+        template<typename T>
+        void func(member<T>*) {}
+
+        void test();
+
+        void test() {
+            func<foo>(0);
+        }
+    }
 
 _ACEOF
 if ac_fn_cxx_try_compile "$LINENO"; then :
@@ -4620,6 +4910,7 @@ $as_echo "#define HAVE_CXX11 1" >>confdefs.h
   fi
 
 
+WXLIBS_USED="xrc,stc,html,xml,adv,core,net"
 
 case "$USE_DEBUG" in
 yes)	DEBUG_FLAGS="-g -Wall -O0"
@@ -4627,93 +4918,656 @@ yes)	DEBUG_FLAGS="-g -Wall -O0"
 esac
 
 
-    if test x${WX_CONFIG_NAME+set} != xset ; then
-     WX_CONFIG_NAME=wx-config
-  fi
 
-  if test "x$wx_config_name" != x ; then
-     WX_CONFIG_NAME="$wx_config_name"
-  fi
+# Check whether --with-cpprest was given.
+if test "${with_cpprest+set}" = set; then :
+  withval=$with_cpprest;
+fi
 
-    if test x$wx_config_exec_prefix != x ; then
-     wx_config_args="$wx_config_args --exec-prefix=$wx_config_exec_prefix"
-     WX_LOOKUP_PATH="$wx_config_exec_prefix/bin"
-  fi
-  if test x$wx_config_prefix != x ; then
-     wx_config_args="$wx_config_args --prefix=$wx_config_prefix"
-     WX_LOOKUP_PATH="$WX_LOOKUP_PATH:$wx_config_prefix/bin"
-  fi
-  if test "$cross_compiling" = "yes"; then
-     wx_config_args="$wx_config_args --host=$host_alias"
-  fi
 
-    if test -x "$WX_CONFIG_NAME" ; then
-     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for wx-config" >&5
-$as_echo_n "checking for wx-config... " >&6; }
-     WX_CONFIG_PATH="$WX_CONFIG_NAME"
-     { $as_echo "$as_me:${as_lineno-$LINENO}: result: $WX_CONFIG_PATH" >&5
-$as_echo "$WX_CONFIG_PATH" >&6; }
-  else
-     # Extract the first word of "$WX_CONFIG_NAME", so it can be a program name with args.
-set dummy $WX_CONFIG_NAME; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_WX_CONFIG_PATH+:} false; then :
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
+$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
+if ${ac_cv_path_GREP+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  case $WX_CONFIG_PATH in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_WX_CONFIG_PATH="$WX_CONFIG_PATH" # Let the user override the test with a path.
-  ;;
-  *)
+  if test -z "$GREP"; then
+  ac_path_GREP_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
   as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-as_dummy=""$WX_LOOKUP_PATH:$PATH""
-for as_dir in $as_dummy
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
+    for ac_prog in grep ggrep; do
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_path_WX_CONFIG_PATH="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
+      ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
+      { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue
+# Check for GNU ac_path_GREP and select it if it is found.
+  # Check for GNU $ac_path_GREP
+case `"$ac_path_GREP" --version 2>&1` in
+*GNU*)
+  ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
+*)
+  ac_count=0
+  $as_echo_n 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    $as_echo 'GREP' >> "conftest.nl"
+    "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
+    if test $ac_count -gt ${ac_path_GREP_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_GREP="$ac_path_GREP"
+      ac_path_GREP_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
   done
-IFS=$as_save_IFS
-
-  test -z "$ac_cv_path_WX_CONFIG_PATH" && ac_cv_path_WX_CONFIG_PATH="no"
-  ;;
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
 esac
-fi
-WX_CONFIG_PATH=$ac_cv_path_WX_CONFIG_PATH
-if test -n "$WX_CONFIG_PATH"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $WX_CONFIG_PATH" >&5
-$as_echo "$WX_CONFIG_PATH" >&6; }
+
+      $ac_path_GREP_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_GREP"; then
+    as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+  fi
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  ac_cv_path_GREP=$GREP
 fi
 
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
+$as_echo "$ac_cv_path_GREP" >&6; }
+ GREP="$ac_cv_path_GREP"
 
-  fi
-
-  if test "$WX_CONFIG_PATH" != "no" ; then
-    WX_VERSION=""
 
-    min_wx_version=3.0.0
-    if test -z "--unicode" ; then
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for wxWidgets version >= $min_wx_version" >&5
-$as_echo_n "checking for wxWidgets version >= $min_wx_version... " >&6; }
-    else
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for wxWidgets version >= $min_wx_version (--unicode)" >&5
-$as_echo_n "checking for wxWidgets version >= $min_wx_version (--unicode)... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
+$as_echo_n "checking for egrep... " >&6; }
+if ${ac_cv_path_EGREP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
+   then ac_cv_path_EGREP="$GREP -E"
+   else
+     if test -z "$EGREP"; then
+  ac_path_EGREP_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in egrep; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
+      { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue
+# Check for GNU ac_path_EGREP and select it if it is found.
+  # Check for GNU $ac_path_EGREP
+case `"$ac_path_EGREP" --version 2>&1` in
+*GNU*)
+  ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
+*)
+  ac_count=0
+  $as_echo_n 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    $as_echo 'EGREP' >> "conftest.nl"
+    "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
+    if test $ac_count -gt ${ac_path_EGREP_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_EGREP="$ac_path_EGREP"
+      ac_path_EGREP_max=$ac_count
     fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
+  done
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
 
-            WX_CONFIG_WITH_ARGS="$WX_CONFIG_PATH $wx_config_args --unicode"
-
-    WX_VERSION=`$WX_CONFIG_WITH_ARGS --version 2>/dev/null`
-    wx_config_major_version=`echo $WX_VERSION | \
+      $ac_path_EGREP_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_EGREP"; then
+    as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+  fi
+else
+  ac_cv_path_EGREP=$EGREP
+fi
+
+   fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
+$as_echo "$ac_cv_path_EGREP" >&6; }
+ EGREP="$ac_cv_path_EGREP"
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
+$as_echo_n "checking for ANSI C header files... " >&6; }
+if ${ac_cv_header_stdc+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ac_cv_header_stdc=yes
+else
+  ac_cv_header_stdc=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+if test $ac_cv_header_stdc = yes; then
+  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <string.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "memchr" >/dev/null 2>&1; then :
+
+else
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "free" >/dev/null 2>&1; then :
+
+else
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
+  if test "$cross_compiling" = yes; then :
+  :
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ctype.h>
+#include <stdlib.h>
+#if ((' ' & 0x0FF) == 0x020)
+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+#else
+# define ISLOWER(c) \
+		   (('a' <= (c) && (c) <= 'i') \
+		     || ('j' <= (c) && (c) <= 'r') \
+		     || ('s' <= (c) && (c) <= 'z'))
+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
+#endif
+
+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+int
+main ()
+{
+  int i;
+  for (i = 0; i < 256; i++)
+    if (XOR (islower (i), ISLOWER (i))
+	|| toupper (i) != TOUPPER (i))
+      return 2;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_run "$LINENO"; then :
+
+else
+  ac_cv_header_stdc=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
+$as_echo "$ac_cv_header_stdc" >&6; }
+if test $ac_cv_header_stdc = yes; then
+
+$as_echo "#define STDC_HEADERS 1" >>confdefs.h
+
+fi
+
+# On IRIX 5.3, sys/types and inttypes.h are conflicting.
+for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
+		  inttypes.h stdint.h unistd.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_cxx_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
+"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+if test "x$with_cpprest" != "xno"; then :
+
+      have_cpprest=no
+                        old_CPPFLAGS="$CPPFLAGS"
+      CPPFLAGS="$CPPFLAGS $CXXFLAGS"
+          for ac_header in cpprest/http_client.h
+do :
+  ac_fn_cxx_check_header_mongrel "$LINENO" "cpprest/http_client.h" "ac_cv_header_cpprest_http_client_h" "$ac_includes_default"
+if test "x$ac_cv_header_cpprest_http_client_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_CPPREST_HTTP_CLIENT_H 1
+_ACEOF
+
+                  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libcpprest >= 2.5" >&5
+$as_echo_n "checking for libcpprest >= 2.5... " >&6; }
+                  old_LIBS="$LIBS"
+                  LIBS="-lcpprest $LIBS"
+                  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+                          #include <cpprest/version.h>
+                          #include <cpprest/http_client.h>
+
+int
+main ()
+{
+
+                          #if CPPREST_VERSION < 200500
+                            #error "cpprest >= 2.5 required"
+                          #endif
+                          web::http::client::http_client c(U("http://poedit.net"));
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  have_cpprest=yes
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+                  LIBS="$old_LIBS"
+                  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_cpprest" >&5
+$as_echo "$have_cpprest" >&6; }
+
+fi
+
+done
+
+      CPPFLAGS="$old_CPPFLAGS"
+
+else
+  have_cpprest=no
+fi
+
+
+
+
+
+
+
+
+if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
+	if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
+set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_PKG_CONFIG+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $PKG_CONFIG in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+PKG_CONFIG=$ac_cv_path_PKG_CONFIG
+if test -n "$PKG_CONFIG"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5
+$as_echo "$PKG_CONFIG" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_path_PKG_CONFIG"; then
+  ac_pt_PKG_CONFIG=$PKG_CONFIG
+  # Extract the first word of "pkg-config", so it can be a program name with args.
+set dummy pkg-config; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $ac_pt_PKG_CONFIG in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG
+if test -n "$ac_pt_PKG_CONFIG"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5
+$as_echo "$ac_pt_PKG_CONFIG" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_pt_PKG_CONFIG" = x; then
+    PKG_CONFIG=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    PKG_CONFIG=$ac_pt_PKG_CONFIG
+  fi
+else
+  PKG_CONFIG="$ac_cv_path_PKG_CONFIG"
+fi
+
+fi
+if test -n "$PKG_CONFIG"; then
+	_pkg_min_version=0.9.0
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5
+$as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; }
+	if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
+		{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+	else
+		{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+		PKG_CONFIG=""
+	fi
+fi
+if test "x$have_cpprest" = "xyes"; then :
+
+          $as_echo "#define HAVE_HTTP_CLIENT 1" >>confdefs.h
+
+          CPPREST_LIBS="-lcpprest"
+          WXLIBS_USED="webview,$WXLIBS_USED"
+
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for LIBSECRET" >&5
+$as_echo_n "checking for LIBSECRET... " >&6; }
+
+if test -n "$LIBSECRET_CFLAGS"; then
+    pkg_cv_LIBSECRET_CFLAGS="$LIBSECRET_CFLAGS"
+ elif test -n "$PKG_CONFIG"; then
+    if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libsecret-1\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "libsecret-1") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_LIBSECRET_CFLAGS=`$PKG_CONFIG --cflags "libsecret-1" 2>/dev/null`
+		      test "x$?" != "x0" && pkg_failed=yes
+else
+  pkg_failed=yes
+fi
+ else
+    pkg_failed=untried
+fi
+if test -n "$LIBSECRET_LIBS"; then
+    pkg_cv_LIBSECRET_LIBS="$LIBSECRET_LIBS"
+ elif test -n "$PKG_CONFIG"; then
+    if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libsecret-1\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "libsecret-1") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_LIBSECRET_LIBS=`$PKG_CONFIG --libs "libsecret-1" 2>/dev/null`
+		      test "x$?" != "x0" && pkg_failed=yes
+else
+  pkg_failed=yes
+fi
+ else
+    pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+   	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+        _pkg_short_errors_supported=yes
+else
+        _pkg_short_errors_supported=no
+fi
+        if test $_pkg_short_errors_supported = yes; then
+	        LIBSECRET_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libsecret-1" 2>&1`
+        else
+	        LIBSECRET_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libsecret-1" 2>&1`
+        fi
+	# Put the nasty error message in config.log where it belongs
+	echo "$LIBSECRET_PKG_ERRORS" >&5
+
+	as_fn_error $? "Package requirements (libsecret-1) were not met:
+
+$LIBSECRET_PKG_ERRORS
+
+Consider adjusting the PKG_CONFIG_PATH environment variable if you
+installed software in a non-standard prefix.
+
+Alternatively, you may set the environment variables LIBSECRET_CFLAGS
+and LIBSECRET_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details." "$LINENO" 5
+elif test $pkg_failed = untried; then
+     	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+	{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "The pkg-config script could not be found or is too old.  Make sure it
+is in your PATH or set the PKG_CONFIG environment variable to the full
+path to pkg-config.
+
+Alternatively, you may set the environment variables LIBSECRET_CFLAGS
+and LIBSECRET_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.
+
+To get pkg-config, see <http://pkg-config.freedesktop.org/>.
+See \`config.log' for more details" "$LINENO" 5; }
+else
+	LIBSECRET_CFLAGS=$pkg_cv_LIBSECRET_CFLAGS
+	LIBSECRET_LIBS=$pkg_cv_LIBSECRET_LIBS
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+              CXXFLAGS="$CXXFLAGS $LIBSECRET_CFLAGS"
+
+
+fi
+
+else
+
+          if test "x$with_cpprest" = "xyes"; then :
+  as_fn_error $? "C++ REST SDK requested but not found" "$LINENO" 5
+fi
+
+fi
+ if test "x$have_cpprest" != "xno"; then
+  HAVE_CPPREST_TRUE=
+  HAVE_CPPREST_FALSE='#'
+else
+  HAVE_CPPREST_TRUE='#'
+  HAVE_CPPREST_FALSE=
+fi
+
+
+
+
+
+    if test x${WX_CONFIG_NAME+set} != xset ; then
+     WX_CONFIG_NAME=wx-config
+  fi
+
+  if test "x$wx_config_name" != x ; then
+     WX_CONFIG_NAME="$wx_config_name"
+  fi
+
+    if test x$wx_config_exec_prefix != x ; then
+     wx_config_args="$wx_config_args --exec-prefix=$wx_config_exec_prefix"
+     WX_LOOKUP_PATH="$wx_config_exec_prefix/bin"
+  fi
+  if test x$wx_config_prefix != x ; then
+     wx_config_args="$wx_config_args --prefix=$wx_config_prefix"
+     WX_LOOKUP_PATH="$WX_LOOKUP_PATH:$wx_config_prefix/bin"
+  fi
+  if test "$cross_compiling" = "yes"; then
+     wx_config_args="$wx_config_args --host=$host_alias"
+  fi
+
+    if test -x "$WX_CONFIG_NAME" ; then
+     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for wx-config" >&5
+$as_echo_n "checking for wx-config... " >&6; }
+     WX_CONFIG_PATH="$WX_CONFIG_NAME"
+     { $as_echo "$as_me:${as_lineno-$LINENO}: result: $WX_CONFIG_PATH" >&5
+$as_echo "$WX_CONFIG_PATH" >&6; }
+  else
+     # Extract the first word of "$WX_CONFIG_NAME", so it can be a program name with args.
+set dummy $WX_CONFIG_NAME; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_WX_CONFIG_PATH+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $WX_CONFIG_PATH in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_WX_CONFIG_PATH="$WX_CONFIG_PATH" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_dummy=""$WX_LOOKUP_PATH:$PATH""
+for as_dir in $as_dummy
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_WX_CONFIG_PATH="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  test -z "$ac_cv_path_WX_CONFIG_PATH" && ac_cv_path_WX_CONFIG_PATH="no"
+  ;;
+esac
+fi
+WX_CONFIG_PATH=$ac_cv_path_WX_CONFIG_PATH
+if test -n "$WX_CONFIG_PATH"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $WX_CONFIG_PATH" >&5
+$as_echo "$WX_CONFIG_PATH" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  fi
+
+  if test "$WX_CONFIG_PATH" != "no" ; then
+    WX_VERSION=""
+
+    min_wx_version=3.0.0
+    if test -z "--unicode" ; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for wxWidgets version >= $min_wx_version" >&5
+$as_echo_n "checking for wxWidgets version >= $min_wx_version... " >&6; }
+    else
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for wxWidgets version >= $min_wx_version (--unicode)" >&5
+$as_echo_n "checking for wxWidgets version >= $min_wx_version (--unicode)... " >&6; }
+    fi
+
+            WX_CONFIG_WITH_ARGS="$WX_CONFIG_PATH $wx_config_args --unicode"
+
+    WX_VERSION=`$WX_CONFIG_WITH_ARGS --version 2>/dev/null`
+    wx_config_major_version=`echo $WX_VERSION | \
            sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\1/'`
     wx_config_minor_version=`echo $WX_VERSION | \
            sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\2/'`
@@ -4751,11 +5605,11 @@ $as_echo_n "checking for wxWidgets version >= $min_wx_version (--unicode)... " >
     if test -n "$wx_ver_ok"; then
       { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes (version $WX_VERSION)" >&5
 $as_echo "yes (version $WX_VERSION)" >&6; }
-      WX_LIBS=`$WX_CONFIG_WITH_ARGS --libs xrc,stc,html,xml,adv,core`
+      WX_LIBS=`$WX_CONFIG_WITH_ARGS --libs $WXLIBS_USED`
 
                               { $as_echo "$as_me:${as_lineno-$LINENO}: checking for wxWidgets static library" >&5
 $as_echo_n "checking for wxWidgets static library... " >&6; }
-      WX_LIBS_STATIC=`$WX_CONFIG_WITH_ARGS --static --libs xrc,stc,html,xml,adv,core 2>/dev/null`
+      WX_LIBS_STATIC=`$WX_CONFIG_WITH_ARGS --static --libs $WXLIBS_USED 2>/dev/null`
       if test "x$WX_LIBS_STATIC" = "x"; then
         { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
@@ -4798,16 +5652,16 @@ $as_echo "yes" >&6; }
       fi
 
       if test "x$wx_has_cppflags" = x ; then
-                  WX_CFLAGS=`$WX_CONFIG_WITH_ARGS --cflags xrc,stc,html,xml,adv,core`
+                  WX_CFLAGS=`$WX_CONFIG_WITH_ARGS --cflags $WXLIBS_USED`
          WX_CPPFLAGS=$WX_CFLAGS
          WX_CXXFLAGS=$WX_CFLAGS
 
          WX_CFLAGS_ONLY=$WX_CFLAGS
          WX_CXXFLAGS_ONLY=$WX_CFLAGS
       else
-                  WX_CPPFLAGS=`$WX_CONFIG_WITH_ARGS --cppflags xrc,stc,html,xml,adv,core`
-         WX_CXXFLAGS=`$WX_CONFIG_WITH_ARGS --cxxflags xrc,stc,html,xml,adv,core`
-         WX_CFLAGS=`$WX_CONFIG_WITH_ARGS --cflags xrc,stc,html,xml,adv,core`
+                  WX_CPPFLAGS=`$WX_CONFIG_WITH_ARGS --cppflags $WXLIBS_USED`
+         WX_CXXFLAGS=`$WX_CONFIG_WITH_ARGS --cxxflags $WXLIBS_USED`
+         WX_CFLAGS=`$WX_CONFIG_WITH_ARGS --cflags $WXLIBS_USED`
 
          WX_CFLAGS_ONLY=`echo $WX_CFLAGS | sed "s@^$WX_CPPFLAGS *@@"`
          WX_CXXFLAGS_ONLY=`echo $WX_CXXFLAGS | sed "s@^$WX_CFLAGS *@@"`
@@ -4981,146 +5835,26 @@ $as_echo "not found" >&6; }
       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $WXRC" >&5
 $as_echo "$WXRC" >&6; }
       :
-    fi
-
-
-  fi
-
-
-
-for ac_func in mkdtemp
-do :
-  ac_fn_cxx_check_func "$LINENO" "mkdtemp" "ac_cv_func_mkdtemp"
-if test "x$ac_cv_func_mkdtemp" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_MKDTEMP 1
-_ACEOF
-
-fi
-done
-
-
-
-
-
-
-
-
-
-
-if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
-	if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
-set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_PKG_CONFIG+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $PKG_CONFIG in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
-  ;;
-  *)
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-  ;;
-esac
-fi
-PKG_CONFIG=$ac_cv_path_PKG_CONFIG
-if test -n "$PKG_CONFIG"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5
-$as_echo "$PKG_CONFIG" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_path_PKG_CONFIG"; then
-  ac_pt_PKG_CONFIG=$PKG_CONFIG
-  # Extract the first word of "pkg-config", so it can be a program name with args.
-set dummy pkg-config; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $ac_pt_PKG_CONFIG in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path.
-  ;;
-  *)
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-  ;;
-esac
-fi
-ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG
-if test -n "$ac_pt_PKG_CONFIG"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5
-$as_echo "$ac_pt_PKG_CONFIG" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
+    fi
+
 
-  if test "x$ac_pt_PKG_CONFIG" = x; then
-    PKG_CONFIG=""
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    PKG_CONFIG=$ac_pt_PKG_CONFIG
   fi
-else
-  PKG_CONFIG="$ac_cv_path_PKG_CONFIG"
-fi
+
+
+
+for ac_func in mkdtemp
+do :
+  ac_fn_cxx_check_func "$LINENO" "mkdtemp" "ac_cv_func_mkdtemp"
+if test "x$ac_cv_func_mkdtemp" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_MKDTEMP 1
+_ACEOF
 
 fi
-if test -n "$PKG_CONFIG"; then
-	_pkg_min_version=0.9.0
-	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5
-$as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; }
-	if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
-		{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-	else
-		{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-		PKG_CONFIG=""
-	fi
-fi
+done
+
+
+
 
 pkg_failed=no
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ICU" >&5
@@ -5249,7 +5983,7 @@ if ac_fn_cxx_try_compile "$LINENO"; then :
 
                 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
-                gtkspell_packages="gtkspell-2.0 gtk+-2.0"
+                gtkspell_packages="gtkspell-2.0 gtk+-2.0 >= 2.20"
 
 else
 
@@ -5344,6 +6078,95 @@ fi
 
 
 
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for LUCENE" >&5
+$as_echo_n "checking for LUCENE... " >&6; }
+
+if test -n "$LUCENE_CFLAGS"; then
+    pkg_cv_LUCENE_CFLAGS="$LUCENE_CFLAGS"
+ elif test -n "$PKG_CONFIG"; then
+    if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"liblucene++ >= 3.0.5\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "liblucene++ >= 3.0.5") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_LUCENE_CFLAGS=`$PKG_CONFIG --cflags "liblucene++ >= 3.0.5" 2>/dev/null`
+		      test "x$?" != "x0" && pkg_failed=yes
+else
+  pkg_failed=yes
+fi
+ else
+    pkg_failed=untried
+fi
+if test -n "$LUCENE_LIBS"; then
+    pkg_cv_LUCENE_LIBS="$LUCENE_LIBS"
+ elif test -n "$PKG_CONFIG"; then
+    if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"liblucene++ >= 3.0.5\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "liblucene++ >= 3.0.5") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_LUCENE_LIBS=`$PKG_CONFIG --libs "liblucene++ >= 3.0.5" 2>/dev/null`
+		      test "x$?" != "x0" && pkg_failed=yes
+else
+  pkg_failed=yes
+fi
+ else
+    pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+   	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+        _pkg_short_errors_supported=yes
+else
+        _pkg_short_errors_supported=no
+fi
+        if test $_pkg_short_errors_supported = yes; then
+	        LUCENE_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "liblucene++ >= 3.0.5" 2>&1`
+        else
+	        LUCENE_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "liblucene++ >= 3.0.5" 2>&1`
+        fi
+	# Put the nasty error message in config.log where it belongs
+	echo "$LUCENE_PKG_ERRORS" >&5
+
+
+            as_fn_error $? "missing Lucene++ library" "$LINENO" 5
+
+elif test $pkg_failed = untried; then
+     	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+            as_fn_error $? "missing Lucene++ library" "$LINENO" 5
+
+else
+	LUCENE_CFLAGS=$pkg_cv_LUCENE_CFLAGS
+	LUCENE_LIBS=$pkg_cv_LUCENE_LIBS
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+            CXXFLAGS="$CXXFLAGS $LUCENE_CFLAGS"
+
+
+fi
+
+
+# Check whether --enable-legacytm was given.
+if test "${enable_legacytm+set}" = set; then :
+  enableval=$enable_legacytm;
+fi
+
+
+if test "x$enable_legacytm" != "xno"; then :
+
+        enable_legacytm=yes
+
   old_LIBS="$LIBS"
 
   minversion=4.7
@@ -5441,7 +6264,7 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
     { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
 $as_echo "not found" >&6; }
 
-  as_fn_error $? "cannot find required Berkeley DB >= 4.7" "$LINENO" 5
+          as_fn_error $? "cannot find required Berkeley DB >= 4.7 (req. for legacy TM)" "$LINENO" 5
 
   else
 
@@ -5451,7 +6274,7 @@ _ACEOF
 
 
 
-    cat >>confdefs.h <<_ACEOF
+            cat >>confdefs.h <<_ACEOF
 #define DB_HEADER "$DB_HEADER"
 _ACEOF
 
@@ -5462,19 +6285,19 @@ _ACEOF
 
 
 pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for LUCENE" >&5
-$as_echo_n "checking for LUCENE... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for EXPAT" >&5
+$as_echo_n "checking for EXPAT... " >&6; }
 
-if test -n "$LUCENE_CFLAGS"; then
-    pkg_cv_LUCENE_CFLAGS="$LUCENE_CFLAGS"
+if test -n "$EXPAT_CFLAGS"; then
+    pkg_cv_EXPAT_CFLAGS="$EXPAT_CFLAGS"
  elif test -n "$PKG_CONFIG"; then
     if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"liblucene++ >= 3.0.5\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "liblucene++ >= 3.0.5") 2>&5
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"expat\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "expat") 2>&5
   ac_status=$?
   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }; then
-  pkg_cv_LUCENE_CFLAGS=`$PKG_CONFIG --cflags "liblucene++ >= 3.0.5" 2>/dev/null`
+  pkg_cv_EXPAT_CFLAGS=`$PKG_CONFIG --cflags "expat" 2>/dev/null`
 		      test "x$?" != "x0" && pkg_failed=yes
 else
   pkg_failed=yes
@@ -5482,16 +6305,16 @@ fi
  else
     pkg_failed=untried
 fi
-if test -n "$LUCENE_LIBS"; then
-    pkg_cv_LUCENE_LIBS="$LUCENE_LIBS"
+if test -n "$EXPAT_LIBS"; then
+    pkg_cv_EXPAT_LIBS="$EXPAT_LIBS"
  elif test -n "$PKG_CONFIG"; then
     if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"liblucene++ >= 3.0.5\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "liblucene++ >= 3.0.5") 2>&5
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"expat\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "expat") 2>&5
   ac_status=$?
   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }; then
-  pkg_cv_LUCENE_LIBS=`$PKG_CONFIG --libs "liblucene++ >= 3.0.5" 2>/dev/null`
+  pkg_cv_EXPAT_LIBS=`$PKG_CONFIG --libs "expat" 2>/dev/null`
 		      test "x$?" != "x0" && pkg_failed=yes
 else
   pkg_failed=yes
@@ -5512,120 +6335,123 @@ else
         _pkg_short_errors_supported=no
 fi
         if test $_pkg_short_errors_supported = yes; then
-	        LUCENE_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "liblucene++ >= 3.0.5" 2>&1`
+	        EXPAT_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "expat" 2>&1`
         else
-	        LUCENE_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "liblucene++ >= 3.0.5" 2>&1`
+	        EXPAT_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "expat" 2>&1`
         fi
 	# Put the nasty error message in config.log where it belongs
-	echo "$LUCENE_PKG_ERRORS" >&5
+	echo "$EXPAT_PKG_ERRORS" >&5
 
 
-            as_fn_error $? "missing Lucene++ library" "$LINENO" 5
+                as_fn_error $? "missing Expat library (req. for legacy TM)" "$LINENO" 5
 
 elif test $pkg_failed = untried; then
      	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 
-            as_fn_error $? "missing Lucene++ library" "$LINENO" 5
+                as_fn_error $? "missing Expat library (req. for legacy TM)" "$LINENO" 5
 
 else
-	LUCENE_CFLAGS=$pkg_cv_LUCENE_CFLAGS
-	LUCENE_LIBS=$pkg_cv_LUCENE_LIBS
+	EXPAT_CFLAGS=$pkg_cv_EXPAT_CFLAGS
+	EXPAT_LIBS=$pkg_cv_EXPAT_LIBS
         { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
 
-            CXXFLAGS="$CXXFLAGS $LUCENE_CFLAGS"
+                CXXFLAGS="$CXXFLAGS $EXPAT_CFLAGS"
 
 
 fi
 
+else
+
+        $as_echo "#define DONT_MIGRATE_LEGACY_TM 1" >>confdefs.h
 
-pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for EXPAT" >&5
-$as_echo_n "checking for EXPAT... " >&6; }
 
-if test -n "$EXPAT_CFLAGS"; then
-    pkg_cv_EXPAT_CFLAGS="$EXPAT_CFLAGS"
- elif test -n "$PKG_CONFIG"; then
-    if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"expat\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "expat") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-  pkg_cv_EXPAT_CFLAGS=`$PKG_CONFIG --cflags "expat" 2>/dev/null`
-		      test "x$?" != "x0" && pkg_failed=yes
-else
-  pkg_failed=yes
-fi
- else
-    pkg_failed=untried
 fi
-if test -n "$EXPAT_LIBS"; then
-    pkg_cv_EXPAT_LIBS="$EXPAT_LIBS"
- elif test -n "$PKG_CONFIG"; then
-    if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"expat\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "expat") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-  pkg_cv_EXPAT_LIBS=`$PKG_CONFIG --libs "expat" 2>/dev/null`
-		      test "x$?" != "x0" && pkg_failed=yes
+
+ if test "x$enable_legacytm" != "xno"; then
+  MIGRATE_LEGACY_TM_TRUE=
+  MIGRATE_LEGACY_TM_FALSE='#'
 else
-  pkg_failed=yes
+  MIGRATE_LEGACY_TM_TRUE='#'
+  MIGRATE_LEGACY_TM_FALSE=
 fi
- else
-    pkg_failed=untried
+
+
+
+# Check whether --with-cld2 was given.
+if test "${with_cld2+set}" = set; then :
+  withval=$with_cld2;
 fi
 
 
+if test "x$with_cld2" != "xno"; then :
 
-if test $pkg_failed = yes; then
-   	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+          have_cld2=no
+          for ac_header in cld2/public/compact_lang_det.h
+do :
+  ac_fn_cxx_check_header_mongrel "$LINENO" "cld2/public/compact_lang_det.h" "ac_cv_header_cld2_public_compact_lang_det_h" "$ac_includes_default"
+if test "x$ac_cv_header_cld2_public_compact_lang_det_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_CLD2_PUBLIC_COMPACT_LANG_DET_H 1
+_ACEOF
 
-if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
-        _pkg_short_errors_supported=yes
-else
-        _pkg_short_errors_supported=no
-fi
-        if test $_pkg_short_errors_supported = yes; then
-	        EXPAT_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "expat" 2>&1`
-        else
-	        EXPAT_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "expat" 2>&1`
-        fi
-	# Put the nasty error message in config.log where it belongs
-	echo "$EXPAT_PKG_ERRORS" >&5
+                  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libcld2" >&5
+$as_echo_n "checking for libcld2... " >&6; }
+                  old_LIBS="$LIBS"
+                  LIBS="-lcld2 $LIBS"
+                  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+                          #include <stdio.h>
+                          #include <cld2/public/compact_lang_det.h>
+
+int
+main ()
+{
 
+                          CLD2::isDataDynamic();
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  have_cld2=yes
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+                  LIBS="$old_LIBS"
+                  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_cld2" >&5
+$as_echo "$have_cld2" >&6; }
 
-            as_fn_error $? "missing Expat library" "$LINENO" 5
+fi
 
-elif test $pkg_failed = untried; then
-     	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+done
 
-            as_fn_error $? "missing Expat library" "$LINENO" 5
 
 else
-	EXPAT_CFLAGS=$pkg_cv_EXPAT_CFLAGS
-	EXPAT_LIBS=$pkg_cv_EXPAT_LIBS
-        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+  have_cld2=no
+fi
 
-            CXXFLAGS="$CXXFLAGS $EXPAT_CFLAGS"
+if test "x$have_cld2" = "xyes"; then :
 
+          $as_echo "#define HAVE_CLD2 1" >>confdefs.h
 
-fi
+          CLD2_LIBS="-lcld2"
+
+
+else
 
+          if test "x$with_cld2" = "xyes"; then :
+  as_fn_error $? "cld2 requested but not found" "$LINENO" 5
+fi
 
-APPCAST_SUFFIX=""
-if echo "$VERSION" | grep -q '\(beta\|rc\)' ; then
-    APPCAST_SUFFIX="/beta"
 fi
 
 
 
+
 if test "x$GXX" == "xyes"; then
     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5
 $as_echo_n "checking for a sed that does not truncate output... " >&6; }
@@ -6028,6 +6854,14 @@ if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then
   as_fn_error $? "conditional \"am__fastdepCXX\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
+if test -z "${HAVE_CPPREST_TRUE}" && test -z "${HAVE_CPPREST_FALSE}"; then
+  as_fn_error $? "conditional \"HAVE_CPPREST\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${MIGRATE_LEGACY_TM_TRUE}" && test -z "${MIGRATE_LEGACY_TM_FALSE}"; then
+  as_fn_error $? "conditional \"MIGRATE_LEGACY_TM\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
 
 : "${CONFIG_STATUS=./config.status}"
 ac_write_fail=0
@@ -6437,7 +7271,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by poedit $as_me 1.7.7, which was
+This file was extended by poedit $as_me 1.8.1, which was
 generated by GNU Autoconf 2.68.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -6494,7 +7328,7 @@ _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-poedit config.status 1.7.7
+poedit config.status 1.8.1
 configured by $0, generated by GNU Autoconf 2.68,
   with options \\"\$ac_cs_config\\"
 
@@ -7184,5 +8018,10 @@ fi
 echo "
 Configured $PACKAGE-$VERSION for $host
 
-    Debug build:      $USE_DEBUG
+Enabled features:
+
+    * debug build:                    $USE_DEBUG
+    * legacy (pre-1.6) TM migration:  $enable_legacytm
+    * language detection:             $have_cld2
+    * crowdin integration:            $have_cpprest
 "
diff --git a/configure.ac b/configure.ac
index 24dad63..05e6862 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2,12 +2,12 @@ dnl Process this file with autoconf to produce a configure script.
 
 AC_PREREQ(2.59)
 
-AC_INIT([poedit], [1.7.7], [help at poedit.net])
-PACKAGE_SHORT_VERSION=1.7.7
+AC_INIT([poedit], [1.8.1], [help at poedit.net])
+PACKAGE_SHORT_VERSION=1.8.1
 AC_SUBST(PACKAGE_SHORT_VERSION)
 
 AC_CONFIG_AUX_DIR([admin])
-AC_CONFIG_SRCDIR([README])
+AC_CONFIG_SRCDIR([poedit.desktop])
 
 AC_CANONICAL_BUILD
 AC_CANONICAL_HOST
@@ -49,15 +49,70 @@ AC_PROG_CXXCPP
 AC_LANG([C++])
 AX_CXX_COMPILE_STDCXX_11([], [mandatory])
 
+WXLIBS_USED="xrc,stc,html,xml,adv,core,net"
 
 case "$USE_DEBUG" in
 yes)	DEBUG_FLAGS="-g -Wall -O0"
     ;;    
 esac
 
-WX_CONFIG_CHECK([3.0.0],
-                [WXFOUND=1], [WXFOUND=0],
-                [xrc,stc,html,xml,adv,core], [--unicode])
+
+dnl Check for C++REST SDK used for online features
+AC_ARG_WITH([cpprest],
+    AS_HELP_STRING([--without-cpprest], [Ignore presence of C++ REST SDK and disable it]))
+
+AS_IF([test "x$with_cpprest" != "xno"],
+      [
+      have_cpprest=no
+      dnl C++11 check above modified CXXFLAGS, but AC_CHECK_HEADERS needs
+      dnl it for this header too and it uses only the preprocessor in one
+      dnl of its two phases:
+      old_CPPFLAGS="$CPPFLAGS"
+      CPPFLAGS="$CPPFLAGS $CXXFLAGS"
+          AC_CHECK_HEADERS([cpprest/http_client.h],
+              [
+                  AC_MSG_CHECKING([for libcpprest >= 2.5])
+                  old_LIBS="$LIBS"
+                  LIBS="-lcpprest $LIBS"
+                  AC_LINK_IFELSE([AC_LANG_PROGRAM(
+                      [
+                          #include <cpprest/version.h>
+                          #include <cpprest/http_client.h>
+                      ],
+                      [
+                          #if CPPREST_VERSION < 200500
+                            #error "cpprest >= 2.5 required"
+                          #endif
+                          web::http::client::http_client c(U("http://poedit.net"));
+                      ])],
+                      [have_cpprest=yes])
+                  LIBS="$old_LIBS"
+                  AC_MSG_RESULT([$have_cpprest])
+              ])
+      CPPFLAGS="$old_CPPFLAGS"
+      ],
+      [have_cpprest=no])
+
+AS_IF([test "x$have_cpprest" = "xyes"],
+      [
+          AC_DEFINE([HAVE_HTTP_CLIENT])
+          CPPREST_LIBS="-lcpprest"
+          WXLIBS_USED="webview,$WXLIBS_USED"
+          AC_SUBST(CPPREST_LIBS)
+          PKG_CHECK_MODULES([LIBSECRET], [libsecret-1], [
+              CXXFLAGS="$CXXFLAGS $LIBSECRET_CFLAGS"
+              AC_SUBST(LIBSECRET_LIBS)
+          ])
+      ],
+      [
+          AS_IF([test "x$with_cpprest" = "xyes"],
+                [AC_MSG_ERROR([C++ REST SDK requested but not found])])
+      ])
+AM_CONDITIONAL([HAVE_CPPREST], [test "x$have_cpprest" != "xno"])
+
+
+
+WX_CONFIG_CHECK([3.0.0], [WXFOUND=1], [WXFOUND=0], [$WXLIBS_USED], [--unicode])
 
 if test "$WXFOUND" != 1; then
     AC_MSG_ERROR([
@@ -131,7 +186,7 @@ AC_TRY_COMPILE([#include <wx/defs.h>],
             ],
             [
                 AC_MSG_RESULT([yes])
-                gtkspell_packages="gtkspell-2.0 gtk+-2.0"
+                gtkspell_packages="gtkspell-2.0 gtk+-2.0 >= 2.20"
             ],
             [
                 AC_MSG_RESULT([no])
@@ -149,15 +204,6 @@ PKG_CHECK_MODULES([GTKSPELL], [$gtkspell_packages],
     ])
 
 
-AX_BERKELEY_DB_CXX(4.7,
-[
-    AC_DEFINE_UNQUOTED(DB_HEADER, ["$DB_HEADER"])
-    AC_SUBST(DB_LIBS)
-],
-[
-  AC_MSG_ERROR([cannot find required Berkeley DB >= 4.7])
-])
-
 PKG_CHECK_MODULES([LUCENE], [liblucene++ >= 3.0.5],
         [
             CXXFLAGS="$CXXFLAGS $LUCENE_CFLAGS"
@@ -167,21 +213,78 @@ PKG_CHECK_MODULES([LUCENE], [liblucene++ >= 3.0.5],
             AC_MSG_ERROR([missing Lucene++ library])
         ])
 
-PKG_CHECK_MODULES([EXPAT], [expat],
+
+dnl Check for legacy TM support
+AC_ARG_ENABLE([legacytm],
+    AS_HELP_STRING([--disable-legacytm], [disable code to migrate pre-1.6 TM to the new format]))
+
+AS_IF([test "x$enable_legacytm" != "xno"],
+    [
+        enable_legacytm=yes
+        AX_BERKELEY_DB_CXX(4.7,
         [
-            CXXFLAGS="$CXXFLAGS $EXPAT_CFLAGS"
-            AC_SUBST(EXPAT_LIBS)
+            AC_DEFINE_UNQUOTED(DB_HEADER, ["$DB_HEADER"])
+            AC_SUBST(DB_LIBS)
         ],
         [
-            AC_MSG_ERROR([missing Expat library])
+          AC_MSG_ERROR([cannot find required Berkeley DB >= 4.7 (req. for legacy TM)])
         ])
 
+        PKG_CHECK_MODULES([EXPAT], [expat],
+            [
+                CXXFLAGS="$CXXFLAGS $EXPAT_CFLAGS"
+                AC_SUBST(EXPAT_LIBS)
+            ],
+            [
+                AC_MSG_ERROR([missing Expat library (req. for legacy TM)])
+            ])
+    ],
+    [
+        AC_DEFINE(DONT_MIGRATE_LEGACY_TM)
+    ])
+
+AM_CONDITIONAL([MIGRATE_LEGACY_TM], [test "x$enable_legacytm" != "xno"])
+
+dnl Check for Compact Language Detector 2
+dnl (used for better language detection and for non-English source languages)
+AC_ARG_WITH([cld2],
+    AS_HELP_STRING([--without-cld2], [Ignore presence of cld2 and disable it]))
+
+AS_IF([test "x$with_cld2" != "xno"],
+      [
+          have_cld2=no
+          AC_CHECK_HEADERS([cld2/public/compact_lang_det.h],
+              [
+                  AC_MSG_CHECKING([for libcld2])
+                  old_LIBS="$LIBS"
+                  LIBS="-lcld2 $LIBS"
+                  AC_LINK_IFELSE([AC_LANG_PROGRAM(
+                      [
+                          #include <stdio.h>
+                          #include <cld2/public/compact_lang_det.h>
+                      ],
+                      [
+                          CLD2::isDataDynamic();
+                      ])],
+                      [have_cld2=yes])
+                  LIBS="$old_LIBS"
+                  AC_MSG_RESULT([$have_cld2])
+              ])
+      ],
+      [have_cld2=no])
+
+AS_IF([test "x$have_cld2" = "xyes"],
+      [
+          AC_DEFINE([HAVE_CLD2])
+          CLD2_LIBS="-lcld2"
+          AC_SUBST(CLD2_LIBS)
+      ],
+      [
+          AS_IF([test "x$with_cld2" = "xyes"],
+                [AC_MSG_ERROR([cld2 requested but not found])])
+      ])
+
 
-APPCAST_SUFFIX=""
-if echo "$VERSION" | grep -q '\(beta\|rc\)' ; then
-    APPCAST_SUFFIX="/beta"
-fi
-AC_SUBST(APPCAST_SUFFIX)
 
 
 if test "x$GXX" == "xyes"; then
@@ -212,5 +315,10 @@ AC_OUTPUT
 echo "
 Configured $PACKAGE-$VERSION for $host
 
-    Debug build:      $USE_DEBUG
+Enabled features:
+
+    * debug build:                    $USE_DEBUG
+    * legacy (pre-1.6) TM migration:  $enable_legacytm
+    * language detection:             $have_cld2
+    * crowdin integration:            $have_cpprest
 "
diff --git a/debian/changelog b/debian/changelog
index 7677dd2..ca90e7d 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,31 @@
+poedit (1.8.1-2) unstable; urgency=low
+
+  * Upload to unstable
+    - disable without libcpprest dependency
+      since casablanca suffers of the g++-5 ABI transition
+      problem (cfr: 784655)
+      this means removing libsecret-1-dev and libwxgtk-webview3.0-dev,
+      useless without crowdin integration (cpprest support)
+
+ -- Gianfranco Costamagna <costamagnagianfranco at yahoo.it>  Thu, 04 Jun 2015 18:52:27 +0200
+
+poedit (1.8.1-1) experimental; urgency=medium
+
+  * New Upstream Version.
+
+ -- Gianfranco Costamagna <costamagnagianfranco at yahoo.it>  Thu, 28 May 2015 10:21:52 +0200
+
+poedit (1.8-1) experimental; urgency=medium
+
+  * New Upstream Version
+  * Add libcld2-dev, libcpprest-dev and libsecret-1-dev (where available) as b-d,
+    needed for language detection and crowdin integration.
+    - add libwxgtk-webview3.0-dev needed where cpprest is used.
+  * Patch refresh.
+  * Update copyright file.
+
+ -- Gianfranco Costamagna <costamagnagianfranco at yahoo.it>  Tue, 19 May 2015 17:59:07 +0200
+
 poedit (1.7.7-1) unstable; urgency=medium
 
   * New Upstream Version
diff --git a/debian/control b/debian/control
index afc6598..6a8295b 100644
--- a/debian/control
+++ b/debian/control
@@ -9,14 +9,18 @@ Build-Depends: asciidoc,
                dh-autoreconf,
                gettext,
                libboost-dev,
+               libboost-regex-dev,
+               libboost-system-dev,
+               libcld2-dev [!mips !powerpc !s390x !hppa !ppc64],
+#               libcpprest-dev (>= 2.5) [amd64 i386 arm64 mipsel ppc64el],
                libdb++-dev,
                libgtk2.0-dev,
                libgtkspell-dev,
+               libicu-dev,
                liblucene++-dev,
+#               libsecret-1-dev [amd64 i386 arm64 mipsel ppc64el],
+#               libwxgtk-webview3.0-dev [amd64 i386 arm64 mipsel ppc64el],
                libwxgtk3.0-dev,
-               libicu-dev,
-               libboost-regex-dev,
-               libboost-system-dev,
                xsltproc,
                zip
 Standards-Version: 3.9.6
diff --git a/debian/copyright b/debian/copyright
index f3b7192..ed53bbe 100644
--- a/debian/copyright
+++ b/debian/copyright
@@ -59,6 +59,12 @@ Files: src/pluralforms/pl_evaluate.h
 Copyright: 1998 Vadim Zeitlin <zeitlin at dptmaths.ens-cachan.fr>
 License: wxWindows-3
 
+Files: src/wx_backports/activityindicator.h
+       src/wx_backports/gtk_activityindicator.h
+       src/wx_backports/wx_gtk_activityindicator.cpp
+Copyright: 2015 Vadim Zeitlin <vadim at wxwidgets.org>
+License: wxWindows-3
+
 Files: src/export_html.cpp
 Copyright: 2003 Christophe Hermier
            2013-2015 Vaclav Slavik
diff --git a/debian/patches/01-desktop.patch b/debian/patches/01-desktop.patch
index 0c2c904..8b74cff 100644
--- a/debian/patches/01-desktop.patch
+++ b/debian/patches/01-desktop.patch
@@ -5,10 +5,10 @@ Description: Rename poedit to poeditor in the desktop file
  at http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=101405 for more details.
 --- a/poedit.desktop
 +++ b/poedit.desktop
-@@ -16,7 +16,7 @@
+@@ -16,7 +16,7 @@ GenericName[kk]=Gettext каталогтар түзетушісі
  GenericName[cs]=Editor katalogů Gettext
  GenericName[vi]=Phần mềm sửa bản dịch Gettext
- MimeType=application/x-po;application/x-gettext;text/x-gettext-translation;text/x-po;application/x-gettext-translation;
+ MimeType=application/x-po;application/x-gettext;text/x-gettext-translation;text/x-po;application/x-gettext-translation;text/x-gettext-translation-template;
 -Exec=poedit %F
 +Exec=poeditor %F
  Icon=poedit
diff --git a/debian/patches/mv-poedit-dump-legacy.patch b/debian/patches/mv-poedit-dump-legacy.patch
index f05d80d..b05e0bd 100644
--- a/debian/patches/mv-poedit-dump-legacy.patch
+++ b/debian/patches/mv-poedit-dump-legacy.patch
@@ -1,7 +1,7 @@
 Description: Moving the poedit-dump-legacy file location
 --- poedit-1.6.9.orig/src/tm/tm_migrate.cpp
 +++ poedit-1.6.9/src/tm/tm_migrate.cpp
-@@ -92,7 +92,7 @@ wxString GetDumpToolPath()
+@@ -94,7 +94,7 @@ wxString GetDumpToolPath()
      return path.GetFullPath();
    #endif
  #else
diff --git a/docs/Makefile.in b/docs/Makefile.in
index 19f9d13..e219132 100644
--- a/docs/Makefile.in
+++ b/docs/Makefile.in
@@ -89,7 +89,6 @@ DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 AMTAR = @AMTAR@
 AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-APPCAST_SUFFIX = @APPCAST_SUFFIX@
 AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
@@ -97,7 +96,9 @@ AWK = @AWK@
 CC = @CC@
 CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
+CLD2_LIBS = @CLD2_LIBS@
 CPPFLAGS = @CPPFLAGS@
+CPPREST_LIBS = @CPPREST_LIBS@
 CXX = @CXX@
 CXXCPP = @CXXCPP@
 CXXDEPMODE = @CXXDEPMODE@
@@ -109,9 +110,11 @@ DEPDIR = @DEPDIR@
 ECHO_C = @ECHO_C@
 ECHO_N = @ECHO_N@
 ECHO_T = @ECHO_T@
+EGREP = @EGREP@
 EXEEXT = @EXEEXT@
 EXPAT_CFLAGS = @EXPAT_CFLAGS@
 EXPAT_LIBS = @EXPAT_LIBS@
+GREP = @GREP@
 GTKSPELL_CFLAGS = @GTKSPELL_CFLAGS@
 GTKSPELL_LIBS = @GTKSPELL_LIBS@
 HAVE_CXX11 = @HAVE_CXX11@
@@ -125,6 +128,8 @@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
 LDFLAGS = @LDFLAGS@
 LIBOBJS = @LIBOBJS@
 LIBS = @LIBS@
+LIBSECRET_CFLAGS = @LIBSECRET_CFLAGS@
+LIBSECRET_LIBS = @LIBSECRET_LIBS@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
 LUCENE_CFLAGS = @LUCENE_CFLAGS@
diff --git a/docs/poedit.1 b/docs/poedit.1
index ff77df7..8548771 100644
--- a/docs/poedit.1
+++ b/docs/poedit.1
@@ -2,12 +2,12 @@
 .\"     Title: poedit
 .\"    Author: Vaclav Slavik <vaclav at slavik.io>
 .\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
-.\"      Date: 05/18/2015
+.\"      Date: 05/27/2015
 .\"    Manual: \ \&
 .\"    Source: \ \&
 .\"  Language: English
 .\"
-.TH "POEDIT" "1" "05/18/2015" "\ \&" "\ \&"
+.TH "POEDIT" "1" "05/27/2015" "\ \&" "\ \&"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
diff --git a/locales/Makefile.am b/locales/Makefile.am
index ec0e818..05b20bb 100644
--- a/locales/Makefile.am
+++ b/locales/Makefile.am
@@ -1,5 +1,5 @@
 
-POEDIT_LINGUAS = af am an ar ast az be be at latin bg bn br bs ca ca at valencia ckb co cs da de el en_GB eo es et eu fa fi fr fur ga gl he hi hr hu id is it ja ka kk ko ku ky lt lv mk mn mr ms nb ne nl nn pa pl pt_BR pt_PT ro ru sk sl sq sr sv ta tg th tr tt ug uk ur uz vi wa zh_CN zh_TW
+POEDIT_LINGUAS = af am an ar ast az be be at latin bg bn br bs ca ca at valencia ckb co cs da de el en_GB eo es et eu fa fi fr fur fy_NL ga gl he hi hr hu id is it ja ka kk ko ku ky lt lv mk mn mr ms nb ne nl nn pa pl pt_BR pt_PT ro ru sk sl sq sr sv ta tg th tr tt ug uk ur uz vi wa zh_CN zh_TW
 
 localedir = $(datadir)/locale
 
diff --git a/locales/Makefile.in b/locales/Makefile.in
index 22e1637..8c24efb 100644
--- a/locales/Makefile.in
+++ b/locales/Makefile.in
@@ -57,7 +57,6 @@ DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 AMTAR = @AMTAR@
 AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-APPCAST_SUFFIX = @APPCAST_SUFFIX@
 AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
@@ -65,7 +64,9 @@ AWK = @AWK@
 CC = @CC@
 CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
+CLD2_LIBS = @CLD2_LIBS@
 CPPFLAGS = @CPPFLAGS@
+CPPREST_LIBS = @CPPREST_LIBS@
 CXX = @CXX@
 CXXCPP = @CXXCPP@
 CXXDEPMODE = @CXXDEPMODE@
@@ -77,9 +78,11 @@ DEPDIR = @DEPDIR@
 ECHO_C = @ECHO_C@
 ECHO_N = @ECHO_N@
 ECHO_T = @ECHO_T@
+EGREP = @EGREP@
 EXEEXT = @EXEEXT@
 EXPAT_CFLAGS = @EXPAT_CFLAGS@
 EXPAT_LIBS = @EXPAT_LIBS@
+GREP = @GREP@
 GTKSPELL_CFLAGS = @GTKSPELL_CFLAGS@
 GTKSPELL_LIBS = @GTKSPELL_LIBS@
 HAVE_CXX11 = @HAVE_CXX11@
@@ -93,6 +96,8 @@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
 LDFLAGS = @LDFLAGS@
 LIBOBJS = @LIBOBJS@
 LIBS = @LIBS@
+LIBSECRET_CFLAGS = @LIBSECRET_CFLAGS@
+LIBSECRET_LIBS = @LIBSECRET_LIBS@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
 LUCENE_CFLAGS = @LUCENE_CFLAGS@
@@ -185,7 +190,7 @@ target_alias = @target_alias@
 top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
-POEDIT_LINGUAS = af am an ar ast az be be at latin bg bn br bs ca ca at valencia ckb co cs da de el en_GB eo es et eu fa fi fr fur ga gl he hi hr hu id is it ja ka kk ko ku ky lt lv mk mn mr ms nb ne nl nn pa pl pt_BR pt_PT ro ru sk sl sq sr sv ta tg th tr tt ug uk ur uz vi wa zh_CN zh_TW
+POEDIT_LINGUAS = af am an ar ast az be be at latin bg bn br bs ca ca at valencia ckb co cs da de el en_GB eo es et eu fa fi fr fur fy_NL ga gl he hi hr hu id is it ja ka kk ko ku ky lt lv mk mn mr ms nb ne nl nn pa pl pt_BR pt_PT ro ru sk sl sq sr sv ta tg th tr tt ug uk ur uz vi wa zh_CN zh_TW
 
 # ----------------------------------------------------------------------------
 # Logic for catalogs updating follows
diff --git a/locales/af.mo b/locales/af.mo
index 92bc187..d0e9834 100644
Binary files a/locales/af.mo and b/locales/af.mo differ
diff --git a/locales/af.po b/locales/af.po
index 50af566..b093f0c 100644
--- a/locales/af.po
+++ b/locales/af.po
@@ -2,8 +2,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: poedit\n"
 "Report-Msgid-Bugs-To: help at poedit.net\n"
-"POT-Creation-Date: 2015-01-10 16:00+0100\n"
-"PO-Revision-Date: 2015-03-10 12:33-0400\n"
+"POT-Creation-Date: 2015-05-27 11:31+0200\n"
+"PO-Revision-Date: 2015-05-27 05:17-0400\n"
 "Last-Translator: vslavik <vaclav at slavik.io>\n"
 "Language-Team: Afrikaans\n"
 "Language: af_ZA\n"
@@ -86,6 +86,15 @@ msgstr ""
 msgid "Error saving catalog"
 msgstr "Fout met stoor van katalogus"
 
+msgid "PO Translation Files"
+msgstr ""
+
+msgid "POT Translation Templates"
+msgstr ""
+
+msgid "All Translation Files"
+msgstr ""
+
 msgid "Merging differences..."
 msgstr "Verskille word bygewerk..."
 
@@ -105,6 +114,83 @@ msgstr "Taalkeuse"
 msgid "You must restart Poedit for this change to take effect."
 msgstr "Herbegin Poedit vir hierdie verandering om 'n effek te hê."
 
+msgid "Downloading translations is disabled in this project."
+msgstr ""
+
+msgid "Not authorized, please sign in again."
+msgstr ""
+
+msgid "Sign in to Crowdin"
+msgstr ""
+
+msgid ""
+"Crowdin is an online localization management platform and collaborative "
+"translation tool. Poedit can seamlessly sync PO files managed at Crowdin."
+msgstr ""
+
+msgid "Sign In"
+msgstr ""
+
+msgid "Sign in"
+msgstr ""
+
+msgid "Sign Out"
+msgstr ""
+
+msgid "Sign out"
+msgstr ""
+
+msgid "Waiting for authentication…"
+msgstr ""
+
+msgid "Updating user information…"
+msgstr ""
+
+msgid "Signed in as:"
+msgstr ""
+
+msgid "Learn More About Crowdin"
+msgstr ""
+
+msgid "Learn more about Crowdin"
+msgstr ""
+
+msgid "Open Crowdin translation"
+msgstr ""
+
+msgid "Project:"
+msgstr ""
+
+msgid "Language:"
+msgstr "Taal: "
+
+msgid "File:"
+msgstr ""
+
+msgid "No translation projects listed in your Crowdin account."
+msgstr ""
+
+msgid "This project has no files that can be translated in Poedit."
+msgstr ""
+
+msgid "This file can only be edited in Crowdin’s web interface."
+msgstr ""
+
+msgid "Downloading latest translations…"
+msgstr ""
+
+msgid "Syncing with Crowdin"
+msgstr ""
+
+msgid "Syncing with Crowdin failed."
+msgstr ""
+
+msgid "Crowdin error"
+msgstr ""
+
+msgid "Uploading translations…"
+msgstr ""
+
 msgid "&Copy"
 msgstr ""
 
@@ -149,6 +235,12 @@ msgstr ""
 msgid "don't delete temporary files (for debugging)"
 msgstr ""
 
+msgid "handle a poedit:// URI"
+msgstr ""
+
+msgid "Failed to communicate with Poedit process."
+msgstr ""
+
 #, c-format
 msgid "Unhandled exception occurred: %s"
 msgstr ""
@@ -159,12 +251,6 @@ msgstr ""
 msgid "Open catalog"
 msgstr "Maak katalogus oop"
 
-msgid "All Files"
-msgstr ""
-
-msgid "PO Translation Files"
-msgstr ""
-
 #, c-format
 msgid "File '%s' doesn't exist."
 msgstr "Lêer '%s' bestaan nie."
@@ -392,6 +478,17 @@ msgstr "Meervoud:"
 msgid "Translation:"
 msgstr ""
 
+msgid ""
+"POT files are only templates and don’t contain any translations themselves.\n"
+"To make a translation, create a new PO file based on the template."
+msgstr ""
+
+msgid "Create New Translation"
+msgstr ""
+
+msgid "Create new translation"
+msgstr ""
+
 #. TRANSLATORS: %s is language name in its basic form (as you
 #. would see e.g. in a list of supported languages). You may need
 #. to rephrase it, e.g. to an equivalent of "for language %s".
@@ -439,9 +536,6 @@ msgstr ""
 msgid "Open catalog template"
 msgstr "Maak sjabloon oop"
 
-msgid "POT Translation Templates"
-msgstr ""
-
 msgid "Updating catalog"
 msgstr ""
 
@@ -510,16 +604,18 @@ msgstr[1] ""
 msgid "The translation is ready for use."
 msgstr ""
 
-msgid "No references to this string found."
-msgstr "Geen verwysings na hierdie string gevind nie."
-
-msgid "Please choose the reference you want to show:"
-msgstr "Kies asb. die verwysing wat gewys moet word:"
+msgid "Context:"
+msgstr ""
 
-msgid "References"
-msgstr "Verwysings "
+#, c-format
+msgid "Poedit automatically fixed invalid content in the file “%s”."
+msgstr ""
 
-msgid "Context:"
+msgid ""
+"The file contained duplicate items, which is not allowed in PO files and "
+"would prevent the file from being used. Poedit fixed the issue, but you "
+"should review translations of any items marked as fuzzy and correct them if "
+"necessary."
 msgstr ""
 
 msgid "Language of the translation isn't set."
@@ -531,6 +627,21 @@ msgstr ""
 msgid "Set language"
 msgstr ""
 
+#. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)."
+msgid ""
+"Suggestions are not available if the translation language is not set "
+"correctly. Other features, such as plural forms, may be affected as well."
+msgstr ""
+
+msgid "Language of the translation is the same as source language."
+msgstr ""
+
+msgid "Fix Language"
+msgstr ""
+
+msgid "Fix language"
+msgstr ""
+
 msgid ""
 "This catalog has entries with plural forms, but doesn't have Plural-Forms "
 "header configured."
@@ -561,6 +672,7 @@ msgstr ""
 msgid "Plural forms expression used by the catalog is unusual for %s."
 msgstr ""
 
+#. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the catalog is unusual for %s.")"
 msgid "Review"
 msgstr ""
 
@@ -582,6 +694,12 @@ msgid_plural "%d errors"
 msgstr[0] ""
 msgstr[1] ""
 
+#, c-format
+msgid "%d entry"
+msgid_plural "%d entries"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid " (unsaved)"
 msgstr ""
 
@@ -695,6 +813,9 @@ msgstr ""
 msgid "Form %i"
 msgstr ""
 
+msgid "Singular"
+msgstr ""
+
 msgid "Zero"
 msgstr ""
 
@@ -704,6 +825,9 @@ msgstr ""
 msgid "Two"
 msgstr ""
 
+msgid "Plural"
+msgstr ""
+
 msgid "Other"
 msgstr ""
 
@@ -732,6 +856,12 @@ msgstr ""
 msgid "Show Sidebar"
 msgstr ""
 
+msgid "Hide Status Bar"
+msgstr ""
+
+msgid "Show Status Bar"
+msgstr ""
+
 msgid "Source text"
 msgstr ""
 
@@ -741,6 +871,10 @@ msgstr "Vertaling"
 msgid "ID"
 msgstr ""
 
+#, c-format
+msgid "Source text — %s"
+msgstr ""
+
 msgid "unknown language"
 msgstr ""
 
@@ -751,57 +885,73 @@ msgstr ""
 msgid "Error:"
 msgstr ""
 
-msgid "Project info"
-msgstr "Projekinligting"
+msgid "Source file"
+msgstr "Bronlêer"
 
-msgid "Project name and version:"
-msgstr "Projeknaam en weergawe:"
+msgid "Source file occurrence:"
+msgstr ""
 
-msgid "Language:"
-msgstr "Taal: "
+msgid "Open in Editor"
+msgstr ""
 
-msgid "Team:"
-msgstr "Span:"
+msgid "Open in editor"
+msgstr ""
 
-msgid "Team's email address:"
-msgstr "Span se e-pos adres:"
+msgid "No references for the selected item."
+msgstr ""
 
-msgid "Charset:"
-msgstr "Karakterstel:"
+#, c-format
+msgid "Error opening file %s!"
+msgstr "Fout met oopmaak van lêer %s!"
 
-msgid "Source"
+msgid "Find"
 msgstr ""
 
-msgid "Notes"
-msgstr "Notas"
+msgid "Replace"
+msgstr ""
 
-msgid "Automatic translation"
-msgstr "Outomatiese vertaling"
+#. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.)
+msgid "Options"
+msgstr ""
 
-msgid "Fuzzy translation"
-msgstr "Wasige vertaling"
+msgid "Ignore case"
+msgstr ""
 
-msgid "Notes for translators:"
+msgid "Wrap around"
 msgstr ""
 
-msgid "Comment:"
-msgstr "Kommentaar:"
+msgid "Whole words only"
+msgstr "Slegs heel woorde"
 
-msgid "Source file"
-msgstr "Bronlêer"
+msgid "Find in source texts"
+msgstr ""
 
-msgid "Source file occurrence:"
+msgid "Find in translations"
 msgstr ""
 
-msgid "Open in Editor"
+msgid "Find in comments"
+msgstr "Vind in kommentaar"
+
+msgid "Close"
 msgstr ""
 
-msgid "Open in editor"
+msgid "Replace All"
 msgstr ""
 
-#, c-format
-msgid "Error opening file %s!"
-msgstr "Fout met oopmaak van lêer %s!"
+msgid "Replace all"
+msgstr ""
+
+msgid "< &Previous"
+msgstr ""
+
+msgid "&Next >"
+msgstr ""
+
+msgid "String to find"
+msgstr ""
+
+msgid "Replacement string"
+msgstr ""
 
 #, c-format
 msgid "Cannot execute program: %s"
@@ -995,9 +1145,19 @@ msgstr "Nuwe "
 msgid "Edit"
 msgstr "Redigeer"
 
+msgid "Delete extractor"
+msgstr ""
+
+#, c-format
+msgid "Are you sure you want to delete the “%s” extractor?"
+msgstr ""
+
 msgid "Extractors"
 msgstr ""
 
+msgid "Accounts"
+msgstr ""
+
 msgid "Automatically check for updates"
 msgstr ""
 
@@ -1036,7 +1196,34 @@ msgstr ""
 msgid "Advanced"
 msgstr ""
 
-msgid "Additional keywords"
+msgid ""
+"<big>Drag and Drop Folders Here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+
+msgid ""
+"<big>Drag and drop folders here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+
+msgid "Add Folders..."
+msgstr ""
+
+msgid "Add folders..."
+msgstr ""
+
+msgid "Add Files..."
+msgstr ""
+
+msgid "Add files..."
+msgstr ""
+
+msgid "Add Wildcard..."
+msgstr ""
+
+msgid "Add wildcard..."
 msgstr ""
 
 msgid "Paths"
@@ -1045,6 +1232,9 @@ msgstr "Paaie"
 msgid "Excluded paths"
 msgstr ""
 
+msgid "Additional keywords"
+msgstr ""
+
 msgid "Name of the project the translation is for"
 msgstr ""
 
@@ -1057,6 +1247,9 @@ msgstr ""
 msgid "Please save the file first. This section cannot be edited until then."
 msgstr ""
 
+msgid "Comment:"
+msgstr "Kommentaar:"
+
 msgid "OK"
 msgstr "OK "
 
@@ -1066,42 +1259,6 @@ msgstr ""
 msgid "Clear the comment"
 msgstr "Verwyder kommentaar"
 
-msgid "Find..."
-msgstr "Soek..."
-
-msgid "String to find:"
-msgstr "String om te vind:"
-
-msgid "Case sensitive"
-msgstr "Kas sensitief"
-
-msgid "Start from the first item"
-msgstr "Begin vanaf die eerste item"
-
-msgid "Whole words only"
-msgstr "Slegs heel woorde"
-
-msgid "Find in original strings"
-msgstr "Soek in oorspronklike stringe"
-
-msgid "Find in translations"
-msgstr ""
-
-msgid "Find in comments"
-msgstr "Vind in kommentaar"
-
-msgid "Find in automatic comments"
-msgstr "Vind in outomatiese kommentaar"
-
-msgid "Close"
-msgstr ""
-
-msgid "< &Previous"
-msgstr ""
-
-msgid "&Next >"
-msgstr ""
-
 msgid "Create new translations project"
 msgstr "Skep nuwe vertaalprojek"
 
@@ -1156,6 +1313,12 @@ msgstr ""
 msgid "Open Recent"
 msgstr ""
 
+msgid "Open from Crowdin..."
+msgstr ""
+
+msgid "Open From Crowdin..."
+msgstr ""
+
 msgid "&Save"
 msgstr "&Stoor"
 
@@ -1204,13 +1367,16 @@ msgstr ""
 msgid "&Find..."
 msgstr "&Soek..."
 
+msgid "Replace..."
+msgstr ""
+
 msgid "Find next"
 msgstr ""
 
 msgid "Find previous"
 msgstr ""
 
-msgid "Find"
+msgid "Find and Replace..."
 msgstr ""
 
 msgid "Find Next"
@@ -1252,6 +1418,12 @@ msgstr ""
 msgid "&Group By Context"
 msgstr ""
 
+msgid "Entries with errors first"
+msgstr ""
+
+msgid "Entries with Errors First"
+msgstr ""
+
 msgid "&Untranslated entries first"
 msgstr ""
 
@@ -1261,6 +1433,9 @@ msgstr ""
 msgid "Show sidebar"
 msgstr ""
 
+msgid "Show status bar"
+msgstr ""
+
 msgid "C&atalog"
 msgstr "K&atalogus"
 
@@ -1276,6 +1451,9 @@ msgstr "Werk by vanuit &POT-lêer..."
 msgid "Update from &POT File..."
 msgstr ""
 
+msgid "Sync with Crowdin"
+msgstr ""
+
 msgid "Fill missing translations from &TM..."
 msgstr ""
 
@@ -1400,6 +1578,9 @@ msgstr ""
 msgid "Catalog properties"
 msgstr ""
 
+msgid "Project name and version:"
+msgstr "Projeknaam en weergawe:"
+
 msgid "Plural Forms:"
 msgstr "Meervoudvorme:"
 
@@ -1412,16 +1593,28 @@ msgstr ""
 msgid "Learn about plural forms"
 msgstr ""
 
+msgid "Charset:"
+msgstr "Karakterstel:"
+
+msgid "Team:"
+msgstr "Span:"
+
+msgid "Team's email address:"
+msgstr "Span se e-pos adres:"
+
 msgid "Translation properties"
 msgstr ""
 
+msgid "Sources paths"
+msgstr ""
+
 msgid "Extract text from source files in the following directories:"
 msgstr ""
 
 msgid "Base path:"
 msgstr "Basispad:"
 
-msgid "Sources paths"
+msgid "Sources keywords"
 msgstr ""
 
 msgid ""
@@ -1432,9 +1625,6 @@ msgstr ""
 msgid "Learn about gettext keywords"
 msgstr ""
 
-msgid "Sources keywords"
-msgstr ""
-
 msgid "Update summary"
 msgstr "Dateer opsomming op"
 
@@ -1482,7 +1672,7 @@ msgstr "Werk katalogus by - sinkroniseer met bronne"
 msgid "Toggled if selected string has fuzzy translation"
 msgstr "Dui aan of die gekose string 'n wasige vertaling het"
 
-msgid "Show or hide the sidebar."
+msgid "Show or hide the sidebar"
 msgstr ""
 
 #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer.
@@ -1494,6 +1684,9 @@ msgid ""
 "translation corresponds to."
 msgstr ""
 
+msgid "Notes for translators:"
+msgstr ""
+
 msgid "Add comment"
 msgstr ""
 
@@ -1566,14 +1759,21 @@ msgstr ""
 msgid "Open an existing PO file and edit the translation."
 msgstr ""
 
-msgid "Create new translation"
-msgstr ""
-
 msgid ""
 "Take an existing PO file or POT template and create a new translation from "
 "it."
 msgstr ""
 
+msgid "Collaborate on a translation with Crowdin"
+msgstr ""
+
+msgid ""
+"Download a file from Crowdin project, translate and sync your changes back."
+msgstr ""
+
+msgid "What is Crowdin?"
+msgstr ""
+
 msgid "There are no translations. That’s unusual."
 msgstr ""
 
@@ -1606,3 +1806,9 @@ msgstr ""
 
 msgid "Configure source code extraction in Properties."
 msgstr ""
+
+msgid "Sync"
+msgstr ""
+
+msgid "Synchronize the translation with Crowdin"
+msgstr ""
diff --git a/locales/am.mo b/locales/am.mo
index d3b8cce..e4b4ffe 100644
Binary files a/locales/am.mo and b/locales/am.mo differ
diff --git a/locales/am.po b/locales/am.po
index 16e3e50..9d84269 100644
--- a/locales/am.po
+++ b/locales/am.po
@@ -2,8 +2,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: poedit\n"
 "Report-Msgid-Bugs-To: help at poedit.net\n"
-"POT-Creation-Date: 2015-01-10 16:00+0100\n"
-"PO-Revision-Date: 2015-03-10 12:33-0400\n"
+"POT-Creation-Date: 2015-05-27 11:31+0200\n"
+"PO-Revision-Date: 2015-05-27 05:18-0400\n"
 "Last-Translator: vslavik <vaclav at slavik.io>\n"
 "Language-Team: Amharic\n"
 "Language: am_ET\n"
@@ -82,6 +82,15 @@ msgstr ""
 msgid "Error saving catalog"
 msgstr "መዝገብን የማስቀመጥ ስህተት"
 
+msgid "PO Translation Files"
+msgstr ""
+
+msgid "POT Translation Templates"
+msgstr ""
+
+msgid "All Translation Files"
+msgstr ""
+
 msgid "Merging differences..."
 msgstr "ልዩነቶችን በመቀላቀል ላይ..."
 
@@ -101,6 +110,83 @@ msgstr "ቋንቋ መረጣ"
 msgid "You must restart Poedit for this change to take effect."
 msgstr "ለውጡ እንዲሠራ ፒኦኤዲትን እንደገና ማስነሳት አለብዎት።"
 
+msgid "Downloading translations is disabled in this project."
+msgstr ""
+
+msgid "Not authorized, please sign in again."
+msgstr ""
+
+msgid "Sign in to Crowdin"
+msgstr ""
+
+msgid ""
+"Crowdin is an online localization management platform and collaborative "
+"translation tool. Poedit can seamlessly sync PO files managed at Crowdin."
+msgstr ""
+
+msgid "Sign In"
+msgstr ""
+
+msgid "Sign in"
+msgstr ""
+
+msgid "Sign Out"
+msgstr ""
+
+msgid "Sign out"
+msgstr ""
+
+msgid "Waiting for authentication…"
+msgstr ""
+
+msgid "Updating user information…"
+msgstr ""
+
+msgid "Signed in as:"
+msgstr ""
+
+msgid "Learn More About Crowdin"
+msgstr ""
+
+msgid "Learn more about Crowdin"
+msgstr ""
+
+msgid "Open Crowdin translation"
+msgstr ""
+
+msgid "Project:"
+msgstr ""
+
+msgid "Language:"
+msgstr "ቋንቋ፤"
+
+msgid "File:"
+msgstr ""
+
+msgid "No translation projects listed in your Crowdin account."
+msgstr ""
+
+msgid "This project has no files that can be translated in Poedit."
+msgstr ""
+
+msgid "This file can only be edited in Crowdin’s web interface."
+msgstr ""
+
+msgid "Downloading latest translations…"
+msgstr ""
+
+msgid "Syncing with Crowdin"
+msgstr ""
+
+msgid "Syncing with Crowdin failed."
+msgstr ""
+
+msgid "Crowdin error"
+msgstr ""
+
+msgid "Uploading translations…"
+msgstr ""
+
 msgid "&Copy"
 msgstr ""
 
@@ -145,6 +231,12 @@ msgstr ""
 msgid "don't delete temporary files (for debugging)"
 msgstr ""
 
+msgid "handle a poedit:// URI"
+msgstr ""
+
+msgid "Failed to communicate with Poedit process."
+msgstr ""
+
 #, c-format
 msgid "Unhandled exception occurred: %s"
 msgstr ""
@@ -155,12 +247,6 @@ msgstr ""
 msgid "Open catalog"
 msgstr "መዝገብ ክፈት"
 
-msgid "All Files"
-msgstr ""
-
-msgid "PO Translation Files"
-msgstr ""
-
 #, c-format
 msgid "File '%s' doesn't exist."
 msgstr "ፋይል %s የለም"
@@ -388,6 +474,17 @@ msgstr "ብዙ፦"
 msgid "Translation:"
 msgstr ""
 
+msgid ""
+"POT files are only templates and don’t contain any translations themselves.\n"
+"To make a translation, create a new PO file based on the template."
+msgstr ""
+
+msgid "Create New Translation"
+msgstr ""
+
+msgid "Create new translation"
+msgstr ""
+
 #. TRANSLATORS: %s is language name in its basic form (as you
 #. would see e.g. in a list of supported languages). You may need
 #. to rephrase it, e.g. to an equivalent of "for language %s".
@@ -435,9 +532,6 @@ msgstr ""
 msgid "Open catalog template"
 msgstr "የመዝገብ ቴምፕሌት ክፈት"
 
-msgid "POT Translation Templates"
-msgstr ""
-
 msgid "Updating catalog"
 msgstr ""
 
@@ -506,16 +600,18 @@ msgstr[1] ""
 msgid "The translation is ready for use."
 msgstr ""
 
-msgid "No references to this string found."
-msgstr "ለዚህ ሐረግ ምንም ተጠቃሽ-መረጃ አልተገኘም።"
-
-msgid "Please choose the reference you want to show:"
-msgstr "እባክዎ ለማሳየት የሚፈልጉትን ተጠቃሽ-መረጃ ይምረጡ:"
+msgid "Context:"
+msgstr ""
 
-msgid "References"
-msgstr "ተጠቃሽ-መረጃ"
+#, c-format
+msgid "Poedit automatically fixed invalid content in the file “%s”."
+msgstr ""
 
-msgid "Context:"
+msgid ""
+"The file contained duplicate items, which is not allowed in PO files and "
+"would prevent the file from being used. Poedit fixed the issue, but you "
+"should review translations of any items marked as fuzzy and correct them if "
+"necessary."
 msgstr ""
 
 msgid "Language of the translation isn't set."
@@ -527,6 +623,21 @@ msgstr ""
 msgid "Set language"
 msgstr ""
 
+#. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)."
+msgid ""
+"Suggestions are not available if the translation language is not set "
+"correctly. Other features, such as plural forms, may be affected as well."
+msgstr ""
+
+msgid "Language of the translation is the same as source language."
+msgstr ""
+
+msgid "Fix Language"
+msgstr ""
+
+msgid "Fix language"
+msgstr ""
+
 msgid ""
 "This catalog has entries with plural forms, but doesn't have Plural-Forms "
 "header configured."
@@ -557,6 +668,7 @@ msgstr ""
 msgid "Plural forms expression used by the catalog is unusual for %s."
 msgstr ""
 
+#. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the catalog is unusual for %s.")"
 msgid "Review"
 msgstr ""
 
@@ -578,6 +690,12 @@ msgid_plural "%d errors"
 msgstr[0] ""
 msgstr[1] ""
 
+#, c-format
+msgid "%d entry"
+msgid_plural "%d entries"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid " (unsaved)"
 msgstr ""
 
@@ -691,6 +809,9 @@ msgstr ""
 msgid "Form %i"
 msgstr "ቅጽ %i"
 
+msgid "Singular"
+msgstr ""
+
 msgid "Zero"
 msgstr ""
 
@@ -700,6 +821,9 @@ msgstr ""
 msgid "Two"
 msgstr ""
 
+msgid "Plural"
+msgstr ""
+
 msgid "Other"
 msgstr ""
 
@@ -728,6 +852,12 @@ msgstr ""
 msgid "Show Sidebar"
 msgstr ""
 
+msgid "Hide Status Bar"
+msgstr ""
+
+msgid "Show Status Bar"
+msgstr ""
+
 msgid "Source text"
 msgstr ""
 
@@ -737,6 +867,10 @@ msgstr "ትርጉም"
 msgid "ID"
 msgstr ""
 
+#, c-format
+msgid "Source text — %s"
+msgstr ""
+
 msgid "unknown language"
 msgstr ""
 
@@ -747,57 +881,73 @@ msgstr ""
 msgid "Error:"
 msgstr ""
 
-msgid "Project info"
-msgstr "የመርሃ-ግብር መረጃ"
+msgid "Source file"
+msgstr "የረቂቅ-ስልት ፋይል"
 
-msgid "Project name and version:"
-msgstr "የመርሃ-ግብሩ ስምና ዝርያ:"
+msgid "Source file occurrence:"
+msgstr ""
 
-msgid "Language:"
-msgstr "ቋንቋ፤"
+msgid "Open in Editor"
+msgstr ""
 
-msgid "Team:"
-msgstr "ቡድን:"
+msgid "Open in editor"
+msgstr ""
 
-msgid "Team's email address:"
-msgstr "የቡድኑ ኤ-መልዕክት አድራሻ፤"
+msgid "No references for the selected item."
+msgstr ""
 
-msgid "Charset:"
-msgstr "ፊደል-ኮድ፤"
+#, c-format
+msgid "Error opening file %s!"
+msgstr "%s ፋይልን የመክፈት ስህተት"
 
-msgid "Source"
+msgid "Find"
 msgstr ""
 
-msgid "Notes"
-msgstr "ማስታወሻዎች"
+msgid "Replace"
+msgstr ""
 
-msgid "Automatic translation"
-msgstr "ራስ-ገዝ ትርጉም"
+#. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.)
+msgid "Options"
+msgstr ""
 
-msgid "Fuzzy translation"
-msgstr "ጅምር ትርጉም"
+msgid "Ignore case"
+msgstr ""
 
-msgid "Notes for translators:"
+msgid "Wrap around"
 msgstr ""
 
-msgid "Comment:"
-msgstr "አስተያየት"
+msgid "Whole words only"
+msgstr "ሙሉ ቃላት ብቻ"
 
-msgid "Source file"
-msgstr "የረቂቅ-ስልት ፋይል"
+msgid "Find in source texts"
+msgstr ""
 
-msgid "Source file occurrence:"
+msgid "Find in translations"
 msgstr ""
 
-msgid "Open in Editor"
+msgid "Find in comments"
+msgstr "አስተያየት ውስጥ አግኝ"
+
+msgid "Close"
 msgstr ""
 
-msgid "Open in editor"
+msgid "Replace All"
 msgstr ""
 
-#, c-format
-msgid "Error opening file %s!"
-msgstr "%s ፋይልን የመክፈት ስህተት"
+msgid "Replace all"
+msgstr ""
+
+msgid "< &Previous"
+msgstr ""
+
+msgid "&Next >"
+msgstr ""
+
+msgid "String to find"
+msgstr ""
+
+msgid "Replacement string"
+msgstr ""
 
 #, c-format
 msgid "Cannot execute program: %s"
@@ -989,9 +1139,19 @@ msgstr "አዲስ"
 msgid "Edit"
 msgstr "አርም"
 
+msgid "Delete extractor"
+msgstr ""
+
+#, c-format
+msgid "Are you sure you want to delete the “%s” extractor?"
+msgstr ""
+
 msgid "Extractors"
 msgstr ""
 
+msgid "Accounts"
+msgstr ""
+
 msgid "Automatically check for updates"
 msgstr ""
 
@@ -1030,7 +1190,34 @@ msgstr ""
 msgid "Advanced"
 msgstr ""
 
-msgid "Additional keywords"
+msgid ""
+"<big>Drag and Drop Folders Here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+
+msgid ""
+"<big>Drag and drop folders here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+
+msgid "Add Folders..."
+msgstr ""
+
+msgid "Add folders..."
+msgstr ""
+
+msgid "Add Files..."
+msgstr ""
+
+msgid "Add files..."
+msgstr ""
+
+msgid "Add Wildcard..."
+msgstr ""
+
+msgid "Add wildcard..."
 msgstr ""
 
 msgid "Paths"
@@ -1039,6 +1226,9 @@ msgstr "ዱካውች"
 msgid "Excluded paths"
 msgstr ""
 
+msgid "Additional keywords"
+msgstr ""
+
 msgid "Name of the project the translation is for"
 msgstr ""
 
@@ -1051,6 +1241,9 @@ msgstr ""
 msgid "Please save the file first. This section cannot be edited until then."
 msgstr ""
 
+msgid "Comment:"
+msgstr "አስተያየት"
+
 msgid "OK"
 msgstr "እሺ"
 
@@ -1060,42 +1253,6 @@ msgstr ""
 msgid "Clear the comment"
 msgstr "አስተያየቱን አጥፋ"
 
-msgid "Find..."
-msgstr "ፈልግ..."
-
-msgid "String to find:"
-msgstr "የሚፈለገው ሐረግ:"
-
-msgid "Case sensitive"
-msgstr "ካፒታልና ስሞል የእንግሊዘኛ ፊደሎች የተለያየ እሴት አላቸው"
-
-msgid "Start from the first item"
-msgstr "ከመጀመሪያው ዕቃ ጀምር"
-
-msgid "Whole words only"
-msgstr "ሙሉ ቃላት ብቻ"
-
-msgid "Find in original strings"
-msgstr "በምንጭ ሐረጎች ውስጥ ፈልግ"
-
-msgid "Find in translations"
-msgstr ""
-
-msgid "Find in comments"
-msgstr "አስተያየት ውስጥ አግኝ"
-
-msgid "Find in automatic comments"
-msgstr "ራስ-ገዝ አስተያየት ውስጥ አግኝ"
-
-msgid "Close"
-msgstr ""
-
-msgid "< &Previous"
-msgstr ""
-
-msgid "&Next >"
-msgstr ""
-
 msgid "Create new translations project"
 msgstr "አዲስ የትርጉም መርሃ-ግብር ጀምር "
 
@@ -1150,6 +1307,12 @@ msgstr "ክፈት... &O"
 msgid "Open Recent"
 msgstr ""
 
+msgid "Open from Crowdin..."
+msgstr ""
+
+msgid "Open From Crowdin..."
+msgstr ""
+
 msgid "&Save"
 msgstr "አስቀምጥ &S"
 
@@ -1198,13 +1361,16 @@ msgstr ""
 msgid "&Find..."
 msgstr "ፈልግ... &F"
 
+msgid "Replace..."
+msgstr ""
+
 msgid "Find next"
 msgstr ""
 
 msgid "Find previous"
 msgstr ""
 
-msgid "Find"
+msgid "Find and Replace..."
 msgstr ""
 
 msgid "Find Next"
@@ -1246,6 +1412,12 @@ msgstr ""
 msgid "&Group By Context"
 msgstr ""
 
+msgid "Entries with errors first"
+msgstr ""
+
+msgid "Entries with Errors First"
+msgstr ""
+
 msgid "&Untranslated entries first"
 msgstr ""
 
@@ -1255,6 +1427,9 @@ msgstr ""
 msgid "Show sidebar"
 msgstr ""
 
+msgid "Show status bar"
+msgstr ""
+
 msgid "C&atalog"
 msgstr "መዝገብ &a"
 
@@ -1270,6 +1445,9 @@ msgstr "ከ &POT ሰነድ አሻሽል"
 msgid "Update from &POT File..."
 msgstr ""
 
+msgid "Sync with Crowdin"
+msgstr ""
+
 msgid "Fill missing translations from &TM..."
 msgstr ""
 
@@ -1393,6 +1571,9 @@ msgstr ""
 msgid "Catalog properties"
 msgstr ""
 
+msgid "Project name and version:"
+msgstr "የመርሃ-ግብሩ ስምና ዝርያ:"
+
 msgid "Plural Forms:"
 msgstr "ብዙ-ቤት፦"
 
@@ -1405,16 +1586,28 @@ msgstr ""
 msgid "Learn about plural forms"
 msgstr ""
 
+msgid "Charset:"
+msgstr "ፊደል-ኮድ፤"
+
+msgid "Team:"
+msgstr "ቡድን:"
+
+msgid "Team's email address:"
+msgstr "የቡድኑ ኤ-መልዕክት አድራሻ፤"
+
 msgid "Translation properties"
 msgstr ""
 
+msgid "Sources paths"
+msgstr ""
+
 msgid "Extract text from source files in the following directories:"
 msgstr ""
 
 msgid "Base path:"
 msgstr "መሠረታዊ ዱካ:"
 
-msgid "Sources paths"
+msgid "Sources keywords"
 msgstr ""
 
 msgid ""
@@ -1425,9 +1618,6 @@ msgstr ""
 msgid "Learn about gettext keywords"
 msgstr ""
 
-msgid "Sources keywords"
-msgstr ""
-
 msgid "Update summary"
 msgstr "ማጠቃለያውን አሻሽል"
 
@@ -1475,7 +1665,7 @@ msgstr "መዝገብ አሻሽል - ከምንጩ ጋር አመሳስል"
 msgid "Toggled if selected string has fuzzy translation"
 msgstr "የተመረጠው ሐረግ ጅምር-ትርጉም ከሆነ መቀየሪያው-ተነክቷል"
 
-msgid "Show or hide the sidebar."
+msgid "Show or hide the sidebar"
 msgstr ""
 
 #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer.
@@ -1487,6 +1677,9 @@ msgid ""
 "translation corresponds to."
 msgstr ""
 
+msgid "Notes for translators:"
+msgstr ""
+
 msgid "Add comment"
 msgstr ""
 
@@ -1559,14 +1752,21 @@ msgstr ""
 msgid "Open an existing PO file and edit the translation."
 msgstr ""
 
-msgid "Create new translation"
-msgstr ""
-
 msgid ""
 "Take an existing PO file or POT template and create a new translation from "
 "it."
 msgstr ""
 
+msgid "Collaborate on a translation with Crowdin"
+msgstr ""
+
+msgid ""
+"Download a file from Crowdin project, translate and sync your changes back."
+msgstr ""
+
+msgid "What is Crowdin?"
+msgstr ""
+
 msgid "There are no translations. That’s unusual."
 msgstr ""
 
@@ -1599,3 +1799,9 @@ msgstr ""
 
 msgid "Configure source code extraction in Properties."
 msgstr ""
+
+msgid "Sync"
+msgstr ""
+
+msgid "Synchronize the translation with Crowdin"
+msgstr ""
diff --git a/locales/an.mo b/locales/an.mo
index f9b893b..5dd050b 100644
Binary files a/locales/an.mo and b/locales/an.mo differ
diff --git a/locales/an.po b/locales/an.po
index 9a48836..e0f5b4b 100644
--- a/locales/an.po
+++ b/locales/an.po
@@ -2,11 +2,11 @@ msgid ""
 msgstr ""
 "Project-Id-Version: poedit\n"
 "Report-Msgid-Bugs-To: help at poedit.net\n"
-"POT-Creation-Date: 2015-01-10 16:00+0100\n"
-"PO-Revision-Date: 2015-03-10 12:33-0400\n"
+"POT-Creation-Date: 2015-05-27 11:31+0200\n"
+"PO-Revision-Date: 2015-05-27 05:18-0400\n"
 "Last-Translator: vslavik <vaclav at slavik.io>\n"
 "Language-Team: Aragonese\n"
-"Language: an_AR\n"
+"Language: an_ES\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -94,15 +94,24 @@ msgstr ""
 msgid "Error saving catalog"
 msgstr "S'ha produciu una error en alzar o catalogo"
 
+msgid "PO Translation Files"
+msgstr "Fichers de traducción PO"
+
+msgid "POT Translation Templates"
+msgstr "Plantiellas de traducción POT"
+
+msgid "All Translation Files"
+msgstr "Totz os fichers de traducción"
+
 msgid "Merging differences..."
-msgstr "Mezclando as diferencias..."
+msgstr "Se son mezclando as diferencias..."
 
 #, c-format
 msgid "'%s' is not a valid POT file."
 msgstr "'%s' no ye un fichero POT valido."
 
 msgid "(Use default language)"
-msgstr "(Fer servir luenga por defecto)"
+msgstr "(Fer servir a luenga por defecto)"
 
 msgid "Select your preferred language"
 msgstr "Seleccionar a luenga preferida"
@@ -113,6 +122,87 @@ msgstr "Selección de luenga"
 msgid "You must restart Poedit for this change to take effect."
 msgstr "Cal reenchegar o Poedit ta que os cambeos tiengan efecto."
 
+msgid "Downloading translations is disabled in this project."
+msgstr "A descarga de traduccions ye desactivada en iste prochecto."
+
+msgid "Not authorized, please sign in again."
+msgstr "No'n ye autorizau, encieta la sesión de nuevas."
+
+msgid "Sign in to Crowdin"
+msgstr "Encetar a sesión en o Crowdin."
+
+msgid ""
+"Crowdin is an online localization management platform and collaborative "
+"translation tool. Poedit can seamlessly sync PO files managed at Crowdin."
+msgstr ""
+"O Crowdin ye una plataforma  de chestión de localizacions en linia y una "
+"ferramienta colaborativa de traducción. O Poedit puet sincronizar sin "
+"problema os fichers PO chestionaus en o Crowdin."
+
+msgid "Sign In"
+msgstr "Encetar a sesión"
+
+msgid "Sign in"
+msgstr "Encetar a sesión"
+
+msgid "Sign Out"
+msgstr "Zarrar a sesión"
+
+msgid "Sign out"
+msgstr "Zarrar a sesión"
+
+msgid "Waiting for authentication…"
+msgstr "Se ye asperando l'autenticación…"
+
+msgid "Updating user information…"
+msgstr "Se ye esviellando a información de l'usuario…"
+
+msgid "Signed in as:"
+msgstr "A sesión ye encetada como:"
+
+msgid "Learn More About Crowdin"
+msgstr "Aprender mas arredol d'o Crowdin"
+
+msgid "Learn more about Crowdin"
+msgstr "Aprender mas arredol d'o Crowdin"
+
+msgid "Open Crowdin translation"
+msgstr "Ubrir una traducción d'o Crowdin"
+
+msgid "Project:"
+msgstr "Prochecto:"
+
+msgid "Language:"
+msgstr "Luenga:"
+
+msgid "File:"
+msgstr "Fichero:"
+
+msgid "No translation projects listed in your Crowdin account."
+msgstr ""
+"No bi ha prochectos de traducción listaus en a tuya cuenta d'o Crowdin."
+
+msgid "This project has no files that can be translated in Poedit."
+msgstr "Iste prochecto no tien fichers  que se puedan traducir en o Poedit."
+
+msgid "This file can only be edited in Crowdin’s web interface."
+msgstr "Iste fichero nomás puet editar-se en a interficie web d'o Crowdin."
+
+msgid "Downloading latest translations…"
+msgstr "Se son baixando as zagueras traduccions…"
+
+msgid "Syncing with Crowdin"
+msgstr "Se ye syncronizando con o Crowdin"
+
+msgid "Syncing with Crowdin failed."
+msgstr "A sincronización con o Crowdin ha fallau."
+
+msgid "Crowdin error"
+msgstr "S'ha produciu una error d'o Crowdin"
+
+msgid "Uploading translations…"
+msgstr "Se son puyando as traduccions…"
+
 msgid "&Copy"
 msgstr "&Copiar"
 
@@ -159,6 +249,12 @@ msgstr ""
 msgid "don't delete temporary files (for debugging)"
 msgstr "no eliminar os fichers temporals (ta trobar errors)"
 
+msgid "handle a poedit:// URI"
+msgstr "L'URI no ye valida"
+
+msgid "Failed to communicate with Poedit process."
+msgstr "Ha fallau en comunicar-se con o proceso d'o Poedit."
+
 #, c-format
 msgid "Unhandled exception occurred: %s"
 msgstr "S'ha produciu una error no maniada: %s"
@@ -169,12 +265,6 @@ msgstr "S'ha produciu una error no maniada."
 msgid "Open catalog"
 msgstr "Ubrir un catalogo"
 
-msgid "All Files"
-msgstr "Totz os fichers"
-
-msgid "PO Translation Files"
-msgstr "Fichers de traducción PO"
-
 #, c-format
 msgid "File '%s' doesn't exist."
 msgstr "O fichero '%s' no existe."
@@ -183,7 +273,7 @@ msgstr "O fichero '%s' no existe."
 #. ("Poedit" here, but please use "%s")
 #, c-format
 msgid "About %s"
-msgstr "Sobre %s"
+msgstr "Arredol de %s"
 
 #. TRANSLATORS: This is version information in about dialog, "%s" will be
 #. version number when used
@@ -403,6 +493,20 @@ msgstr "Plural:"
 msgid "Translation:"
 msgstr "Traducción:"
 
+msgid ""
+"POT files are only templates and don’t contain any translations themselves.\n"
+"To make a translation, create a new PO file based on the template."
+msgstr ""
+"Os fichers POT no son que plantiellas y no contienen garra traducción en sí "
+"mesmas.\n"
+"Ta fer una traducción, creya un nuevo fichero PO basau en a plantiella."
+
+msgid "Create New Translation"
+msgstr "Creyar una nueva traducción"
+
+msgid "Create new translation"
+msgstr "Creyar una nueva traducción"
+
 #. TRANSLATORS: %s is language name in its basic form (as you
 #. would see e.g. in a list of supported languages). You may need
 #. to rephrase it, e.g. to an equivalent of "for language %s".
@@ -451,9 +555,6 @@ msgstr "Fichers HTML"
 msgid "Open catalog template"
 msgstr "Ubrir una plantilla de catalogo"
 
-msgid "POT Translation Templates"
-msgstr "Plantiellas de traducción POT"
-
 msgid "Updating catalog"
 msgstr "Se ye esviellando lo catalogo"
 
@@ -502,14 +603,14 @@ msgid ""
 "The file was saved safely and compiled into the MO format, but it will "
 "probably not work correctly."
 msgstr ""
-"O fichero s'ha alzau de traza segura y s'ha compilau ta lo formato MO, pero "
-"probablement no marche correctament."
+"O fichero s'ha alzau de traza segura y s'ha compilau t'o formato MO pero "
+"prebablement no marche correctament."
 
 msgid ""
 "The file was saved safely, but it cannot be compiled into the MO format and "
 "used."
 msgstr ""
-"O fichero s'ha alzau, pero no puet compilar-se ta lo formato MO ni usar-se."
+"O fichero s'ha alzau pero no puet compilar-se t'o formato MO ni usar-se."
 
 msgid ""
 "The file was compiled into the MO format, but it will probably not work "
@@ -536,18 +637,25 @@ msgstr[1] ""
 msgid "The translation is ready for use."
 msgstr "A traducción ye presta pa usar-se."
 
-msgid "No references to this string found."
-msgstr "No se troban referencias a iste texto."
-
-msgid "Please choose the reference you want to show:"
-msgstr "Trigue a referencia que quiere amostrar:"
-
-msgid "References"
-msgstr "Referencias"
-
 msgid "Context:"
 msgstr "Contexto:"
 
+#, c-format
+msgid "Poedit automatically fixed invalid content in the file “%s”."
+msgstr ""
+"O Poedit ha apanyau automaticament conteniu invalido en o fichero “%s”."
+
+msgid ""
+"The file contained duplicate items, which is not allowed in PO files and "
+"would prevent the file from being used. Poedit fixed the issue, but you "
+"should review translations of any items marked as fuzzy and correct them if "
+"necessary."
+msgstr ""
+"O fichero conteniba elementos duplicaus que no ye permitiu en os fichers PO "
+"y podría privar que o fichero estase emplegau. O Poedit ha apanyau o "
+"problema pero habrás de revisar as traduccions de qualques elementos marcaus "
+"como fuscos y correchir-los si ye necesario."
+
 msgid "Language of the translation isn't set."
 msgstr "No s'ha establiu un idioma d'atraducción."
 
@@ -557,6 +665,24 @@ msgstr "Establir l'idioma"
 msgid "Set language"
 msgstr "Establir l'idioma"
 
+#. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)."
+msgid ""
+"Suggestions are not available if the translation language is not set "
+"correctly. Other features, such as plural forms, may be affected as well."
+msgstr ""
+"As sucherencias no son disponibles si l'idioma de traducción no ye "
+"correctament establiu. Atras caracteristicas, tals como as formas plurals, "
+"tamién pueden veyer-sen afectadas."
+
+msgid "Language of the translation is the same as source language."
+msgstr "L'idioma d'a traducción ye o mesmo que l'idioma d'orichen."
+
+msgid "Fix Language"
+msgstr "Apanyar l'idioma"
+
+msgid "Fix language"
+msgstr "Apanyar l'idioma"
+
 msgid ""
 "This catalog has entries with plural forms, but doesn't have Plural-Forms "
 "header configured."
@@ -592,6 +718,7 @@ msgid "Plural forms expression used by the catalog is unusual for %s."
 msgstr ""
 "A expresión de formas plurals que fa servir o catalogo ye insolita ta %s."
 
+#. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the catalog is unusual for %s.")"
 msgid "Review"
 msgstr "Revisar"
 
@@ -614,6 +741,12 @@ msgid_plural "%d errors"
 msgstr[0] "%d error"
 msgstr[1] "%d errors"
 
+#, c-format
+msgid "%d entry"
+msgid_plural "%d entries"
+msgstr[0] "%d dentrada"
+msgstr[1] "%d dentradas"
+
 msgid " (unsaved)"
 msgstr " (sin alzar)"
 
@@ -742,6 +875,9 @@ msgstr "Tot"
 msgid "Form %i"
 msgstr "Forma %i"
 
+msgid "Singular"
+msgstr ""
+
 msgid "Zero"
 msgstr "Zero"
 
@@ -751,6 +887,9 @@ msgstr "Un"
 msgid "Two"
 msgstr "Dos"
 
+msgid "Plural"
+msgstr ""
+
 msgid "Other"
 msgstr "Unatro"
 
@@ -779,6 +918,12 @@ msgstr "Amagar a barra lateral"
 msgid "Show Sidebar"
 msgstr "Amostrar a barra lateral"
 
+msgid "Hide Status Bar"
+msgstr "Amagar a barra d'estau"
+
+msgid "Show Status Bar"
+msgstr "Amostrar a barra d'estau"
+
 msgid "Source text"
 msgstr "Texto fuent"
 
@@ -788,6 +933,10 @@ msgstr "Traducción"
 msgid "ID"
 msgstr "ID"
 
+#, c-format
+msgid "Source text — %s"
+msgstr "Texto d'orichen — %s"
+
 msgid "unknown language"
 msgstr "idioma desconoixiu"
 
@@ -798,57 +947,73 @@ msgstr "Traducción — %s"
 msgid "Error:"
 msgstr "Error:"
 
-msgid "Project info"
-msgstr "Información d'o prochecto"
+msgid "Source file"
+msgstr "Fichero fuent"
 
-msgid "Project name and version:"
-msgstr "Nombre d'o prochecto y versión:"
+msgid "Source file occurrence:"
+msgstr "Fichero fuent coincident:"
 
-msgid "Language:"
-msgstr "Luenga:"
+msgid "Open in Editor"
+msgstr "Ubrir-ne en l'editor"
 
-msgid "Team:"
-msgstr "Equipo:"
+msgid "Open in editor"
+msgstr "Ubrir-ne en l'editor"
 
-msgid "Team's email address:"
-msgstr "Adreza de correu electronico de l'equipo:"
+msgid "No references for the selected item."
+msgstr "No bi ha referencias t'o elemento seleccionau."
 
-msgid "Charset:"
-msgstr "Chuego de caracters:"
+#, c-format
+msgid "Error opening file %s!"
+msgstr "S'ha produciu una error en ubrir o fichero %s!"
 
-msgid "Source"
-msgstr "Orichen"
+msgid "Find"
+msgstr "Mirar"
 
-msgid "Notes"
-msgstr "Notas"
+msgid "Replace"
+msgstr "Substituir"
 
-msgid "Automatic translation"
-msgstr "Traducción automatica"
+#. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.)
+msgid "Options"
+msgstr "Opcions"
 
-msgid "Fuzzy translation"
-msgstr "Traducción provisional"
+msgid "Ignore case"
+msgstr "Ignorar as mayusclas y as minusclas"
 
-msgid "Notes for translators:"
-msgstr "Notas ta os traductors:"
+msgid "Wrap around"
+msgstr "Embolicau arredol"
 
-msgid "Comment:"
-msgstr "Comentario:"
+msgid "Whole words only"
+msgstr "Nomás as parolas completas"
 
-msgid "Source file"
-msgstr "Fichero fuent"
+msgid "Find in source texts"
+msgstr "Mirar en o texto d'orichen"
 
-msgid "Source file occurrence:"
-msgstr "Fichero fuent coincident:"
+msgid "Find in translations"
+msgstr "Mirar en as traduccions"
 
-msgid "Open in Editor"
-msgstr "Ubrir-ne en l'editor"
+msgid "Find in comments"
+msgstr "Mirar en os comentarios"
 
-msgid "Open in editor"
-msgstr "Ubrir-ne en l'editor"
+msgid "Close"
+msgstr "Zarrar"
 
-#, c-format
-msgid "Error opening file %s!"
-msgstr "S'ha produciu una error en ubrir o fichero %s!"
+msgid "Replace All"
+msgstr "Substituir-lo tot"
+
+msgid "Replace all"
+msgstr "Substituir-lo tot"
+
+msgid "< &Previous"
+msgstr "< &Anterior"
+
+msgid "&Next >"
+msgstr "&Siguient >"
+
+msgid "String to find"
+msgstr "Cadena que mirar"
+
+msgid "Replacement string"
+msgstr "Cadena de substitución"
 
 #, c-format
 msgid "Cannot execute program: %s"
@@ -941,7 +1106,7 @@ msgid "Check spelling"
 msgstr "Comprebar a ortografía"
 
 msgid "Always change focus to text input field"
-msgstr "Pasar siempre o foco ta lo quadro de traducción"
+msgstr "Pasar siempre o foco t'o quadro de traducción"
 
 msgid ""
 "Never let the list of strings take focus. If enabled, you must use Ctrl-"
@@ -1055,9 +1220,19 @@ msgstr "Nuevo"
 msgid "Edit"
 msgstr "Editar"
 
+msgid "Delete extractor"
+msgstr "Borrar l'extractor"
+
+#, c-format
+msgid "Are you sure you want to delete the “%s” extractor?"
+msgstr "Yes seguro que quiers eliminar l'extractor “%s”?"
+
 msgid "Extractors"
 msgstr "Extractors"
 
+msgid "Accounts"
+msgstr "Cuentas"
+
 msgid "Automatically check for updates"
 msgstr "Comprebar as actualizacions automaticament"
 
@@ -1100,8 +1275,41 @@ msgstr "Conservar o formato d'os fichers existents"
 msgid "Advanced"
 msgstr "Avanzau"
 
-msgid "Additional keywords"
-msgstr "Parolas clau adicionals"
+msgid ""
+"<big>Drag and Drop Folders Here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+"<big>Arrocegar y soltar carpetas aquí</big>\n"
+"\n"
+"u fer servir o botón +"
+
+msgid ""
+"<big>Drag and drop folders here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+"<big>Arrocegar y soltar carpetas aquí</big>\n"
+"\n"
+"u fer servir o botón +"
+
+msgid "Add Folders..."
+msgstr "Adhibir carpetas"
+
+msgid "Add folders..."
+msgstr "Adhibir carpetas"
+
+msgid "Add Files..."
+msgstr "Adhibir Fichers..."
+
+msgid "Add files..."
+msgstr "Adhibir fichers..."
+
+msgid "Add Wildcard..."
+msgstr "Adhibir comodín"
+
+msgid "Add wildcard..."
+msgstr "Adhibir comodín"
 
 msgid "Paths"
 msgstr "Carpetas"
@@ -1109,6 +1317,9 @@ msgstr "Carpetas"
 msgid "Excluded paths"
 msgstr "Rotas excluidas"
 
+msgid "Additional keywords"
+msgstr "Parolas clau adicionals"
+
 msgid "Name of the project the translation is for"
 msgstr "Nombre d'o prochecto a traducción ye pa"
 
@@ -1123,6 +1334,9 @@ msgstr ""
 "Por favor en primeras alza o fichero. Ista sección no se puet editar dica "
 "que no se'n faiga."
 
+msgid "Comment:"
+msgstr "Comentario:"
+
 msgid "OK"
 msgstr "Acceptar"
 
@@ -1132,42 +1346,6 @@ msgstr "Esbo&rrar"
 msgid "Clear the comment"
 msgstr "Borrar o comentario"
 
-msgid "Find..."
-msgstr "Mirar..."
-
-msgid "String to find:"
-msgstr "Texto que mirar:"
-
-msgid "Case sensitive"
-msgstr "Coincidir as mayusclas y as minusclas"
-
-msgid "Start from the first item"
-msgstr "Empecipiar dende o primer elemento"
-
-msgid "Whole words only"
-msgstr "Nomás as parolas completas"
-
-msgid "Find in original strings"
-msgstr "Mirar en o texto orichinal"
-
-msgid "Find in translations"
-msgstr "Mirar en as traduccions"
-
-msgid "Find in comments"
-msgstr "Mirar en os comentarios"
-
-msgid "Find in automatic comments"
-msgstr "Mirar en os comentarios automaticos"
-
-msgid "Close"
-msgstr "Zarrar"
-
-msgid "< &Previous"
-msgstr "< &Anterior"
-
-msgid "&Next >"
-msgstr "&Siguient >"
-
 msgid "Create new translations project"
 msgstr "Creyar un nuevo prochecto de traducción"
 
@@ -1222,6 +1400,12 @@ msgstr "&Ubrir..."
 msgid "Open Recent"
 msgstr "Ubrir recient"
 
+msgid "Open from Crowdin..."
+msgstr "Ubrir dende o Crowdin…"
+
+msgid "Open From Crowdin..."
+msgstr "Ubrir dende o Crowdin…"
+
 msgid "&Save"
 msgstr "&Alzar"
 
@@ -1270,14 +1454,17 @@ msgstr "&Amostrar as referencias"
 msgid "&Find..."
 msgstr "&Mirar..."
 
+msgid "Replace..."
+msgstr "Substituir…"
+
 msgid "Find next"
 msgstr "Mirar o siguient"
 
 msgid "Find previous"
 msgstr "Mirar l'anterior"
 
-msgid "Find"
-msgstr "Mirar"
+msgid "Find and Replace..."
+msgstr "Mirar y substituir…"
 
 msgid "Find Next"
 msgstr "Mirar o siguient"
@@ -1318,6 +1505,12 @@ msgstr "A&grupar por o contexto"
 msgid "&Group By Context"
 msgstr "A&grupar por o contexto"
 
+msgid "Entries with errors first"
+msgstr "Dentradas con errors primer"
+
+msgid "Entries with Errors First"
+msgstr "Dentradas con errors primer"
+
 msgid "&Untranslated entries first"
 msgstr "&Dentradas sin traducir primer"
 
@@ -1327,6 +1520,9 @@ msgstr "&Dentradas sin traducir primer"
 msgid "Show sidebar"
 msgstr "Amostrar a barra lateral"
 
+msgid "Show status bar"
+msgstr "Amostrar a barra d'estau"
+
 msgid "C&atalog"
 msgstr "C&atalogo"
 
@@ -1342,6 +1538,9 @@ msgstr "Esviellar-lo dende un fichero &POT..."
 msgid "Update from &POT File..."
 msgstr "Esviellar-lo dende un fichero &POT..."
 
+msgid "Sync with Crowdin"
+msgstr "Sincronizar con o Crowdin"
+
 msgid "Fill missing translations from &TM..."
 msgstr "Replenar as traduccions que faltan con as TM..."
 
@@ -1470,6 +1669,9 @@ msgstr ""
 msgid "Catalog properties"
 msgstr "Propiedatz d'o catalogo"
 
+msgid "Project name and version:"
+msgstr "Nombre d'o prochecto y versión:"
+
 msgid "Plural Forms:"
 msgstr "Formas plurals:"
 
@@ -1482,17 +1684,29 @@ msgstr "Emplegar una expresión personalizada"
 msgid "Learn about plural forms"
 msgstr "Aprender arredol de formas plurals"
 
+msgid "Charset:"
+msgstr "Chuego de caracters:"
+
+msgid "Team:"
+msgstr "Equipo:"
+
+msgid "Team's email address:"
+msgstr "Adreza de correu electronico de l'equipo:"
+
 msgid "Translation properties"
 msgstr "Propiedatz de traducción"
 
+msgid "Sources paths"
+msgstr "Directorios fuent"
+
 msgid "Extract text from source files in the following directories:"
 msgstr "Extrayer o texto d'o fichero d'orichen en os directorios siguients:"
 
 msgid "Base path:"
 msgstr "Directorio radiz:"
 
-msgid "Sources paths"
-msgstr "Directorios fuent"
+msgid "Sources keywords"
+msgstr "Parolas clau orichinals"
 
 msgid ""
 "Use these keywords (function names) to recognize translatable strings\n"
@@ -1504,9 +1718,6 @@ msgstr ""
 msgid "Learn about gettext keywords"
 msgstr "Aprender sobre as parolas clau d'o GNU gettext"
 
-msgid "Sources keywords"
-msgstr "Parolas clau orichinals"
-
 msgid "Update summary"
 msgstr "Resumen de l'actualización"
 
@@ -1554,8 +1765,8 @@ msgstr "Esviellar o catalogo, sincronizar-lo con as fuents"
 msgid "Toggled if selected string has fuzzy translation"
 msgstr "Activau si o texto seleccionau ye traduciu provisionalment"
 
-msgid "Show or hide the sidebar."
-msgstr "Amostrar u amagar a barra lateral."
+msgid "Show or hide the sidebar"
+msgstr "Amostrar u amagar a barra lateral"
 
 #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer.
 msgid "Previous source text:"
@@ -1568,6 +1779,9 @@ msgstr ""
 "L'antigo texto fuent (antis que no cambiase entre l'actualización) a lo que "
 "corresponde a traducción aproximada (provisional)."
 
+msgid "Notes for translators:"
+msgstr "Notas ta os traductors:"
+
 msgid "Add comment"
 msgstr "Adhibir un comentario"
 
@@ -1650,9 +1864,6 @@ msgstr "Editar una traducción"
 msgid "Open an existing PO file and edit the translation."
 msgstr "Ubrir un fichero PO existent y editar a suya traducción."
 
-msgid "Create new translation"
-msgstr "Creyar una nueva traducción"
-
 msgid ""
 "Take an existing PO file or POT template and create a new translation from "
 "it."
@@ -1660,6 +1871,18 @@ msgstr ""
 "Prener un fichero PO existent u una plantilla POT y creyar una nueva "
 "traducción d'a mesma."
 
+msgid "Collaborate on a translation with Crowdin"
+msgstr "Colaborar en una traducción con o Crowdin"
+
+msgid ""
+"Download a file from Crowdin project, translate and sync your changes back."
+msgstr ""
+"Baixa un fichero dende o Prochecto d'o Crowdin, traduz y syncroniza os tuyos "
+"cambeos de nuevas."
+
+msgid "What is Crowdin?"
+msgstr "Qué ye o Crowdin?"
+
 msgid "There are no translations. That’s unusual."
 msgstr "No bi ha garra traducción. Ixo ye insolito."
 
@@ -1699,3 +1922,9 @@ msgstr "Esviellar-lo dende as fuents"
 
 msgid "Configure source code extraction in Properties."
 msgstr "Configurar o codigo d'extracción de fuents en propiedatz."
+
+msgid "Sync"
+msgstr "Sincronizar"
+
+msgid "Synchronize the translation with Crowdin"
+msgstr "Sincronizar a traducción con o Crowdin"
diff --git a/locales/ar.mo b/locales/ar.mo
index c693d80..ee7f82f 100644
Binary files a/locales/ar.mo and b/locales/ar.mo differ
diff --git a/locales/ar.po b/locales/ar.po
index 360a575..348bd09 100644
--- a/locales/ar.po
+++ b/locales/ar.po
@@ -2,8 +2,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: poedit\n"
 "Report-Msgid-Bugs-To: help at poedit.net\n"
-"POT-Creation-Date: 2015-01-10 16:00+0100\n"
-"PO-Revision-Date: 2015-03-10 12:33-0400\n"
+"POT-Creation-Date: 2015-05-27 11:31+0200\n"
+"PO-Revision-Date: 2015-05-27 05:17-0400\n"
 "Last-Translator: vslavik <vaclav at slavik.io>\n"
 "Language-Team: Arabic\n"
 "Language: ar_SA\n"
@@ -90,7 +90,16 @@ msgstr ""
 "حُفِظ الملف بترميز UTF-8 بدل ذلك وعُدِّل الإعداد وفقًا لذلك."
 
 msgid "Error saving catalog"
-msgstr "خطأ عند حفظ الكتالوج"
+msgstr "خطأ عند حفظ الكتالوغ"
+
+msgid "PO Translation Files"
+msgstr "ملفّات PO ترجميّة"
+
+msgid "POT Translation Templates"
+msgstr "ملفّات POT قالبيّة"
+
+msgid "All Translation Files"
+msgstr "كل ملفات الترجمة"
 
 msgid "Merging differences..."
 msgstr "يدمج الاختلافات..."
@@ -111,6 +120,85 @@ msgstr "حدّد اللّغة"
 msgid "You must restart Poedit for this change to take effect."
 msgstr "عليك إعادة تشغيل محرِّر Po لتطبيق التغييرات."
 
+msgid "Downloading translations is disabled in this project."
+msgstr "تحميل الترجمات معطّل في هذا المشروع."
+
+msgid "Not authorized, please sign in again."
+msgstr "غير موثوق، رجاء أعد الدخول من جديد."
+
+msgid "Sign in to Crowdin"
+msgstr "سجّل الدخول في كرويدن"
+
+msgid ""
+"Crowdin is an online localization management platform and collaborative "
+"translation tool. Poedit can seamlessly sync PO files managed at Crowdin."
+msgstr ""
+"كرويدن منصة لتسيير التوطين عبر النت و أداة ترجمة تعاونية. يستطيع Poedit  "
+"مزامنة ملفات po المُدارة في كرويدن بسهولة."
+
+msgid "Sign In"
+msgstr "لِج"
+
+msgid "Sign in"
+msgstr "لِج"
+
+msgid "Sign Out"
+msgstr "سجّل الخروج"
+
+msgid "Sign out"
+msgstr "سجّل الخروج"
+
+msgid "Waiting for authentication…"
+msgstr "انتظار المصادقة…"
+
+msgid "Updating user information…"
+msgstr "تحديث معلومات المستخدم…"
+
+msgid "Signed in as:"
+msgstr "سجّل الدخول باسم:"
+
+msgid "Learn More About Crowdin"
+msgstr "اقرأ المزيد عن كرويدن"
+
+msgid "Learn more about Crowdin"
+msgstr "اقرأ المزيد عن كرويدن"
+
+msgid "Open Crowdin translation"
+msgstr "افتح ترجمة كرويدن"
+
+msgid "Project:"
+msgstr "المشروع:"
+
+msgid "Language:"
+msgstr "اللّغة:"
+
+msgid "File:"
+msgstr "الملفّ:"
+
+msgid "No translation projects listed in your Crowdin account."
+msgstr "لا مشاريع ترجمة مدرجة في حسابك في كرويدن."
+
+msgid "This project has no files that can be translated in Poedit."
+msgstr "ليس في هذا المشروع ملفّات يمكن ترجمتها في مُحرِّر Po."
+
+msgid "This file can only be edited in Crowdin’s web interface."
+msgstr "هذا الملف يُمكن أن يحرّر في واجهة وب كرويدن فقط."
+
+msgid "Downloading latest translations…"
+msgstr "ينزّل أحدث التّرجمات…"
+
+msgid "Syncing with Crowdin"
+msgstr "المزامنة مع كرويدن"
+
+msgid "Syncing with Crowdin failed."
+msgstr "فشلت المزامنة مع كرويدن."
+
+msgid "Crowdin error"
+msgstr "خطأ في كرويدن"
+
+msgid "Uploading translations…"
+msgstr "يرفع التّرجمات…"
+
 msgid "&Copy"
 msgstr "ا&نسخ"
 
@@ -155,6 +243,12 @@ msgstr "فضلًا افتح وحرّر ملفّ PO المقابل بدل ذلك.
 msgid "don't delete temporary files (for debugging)"
 msgstr "لا تحذف الملفّات المؤقّتة (للتنقيح)"
 
+msgid "handle a poedit:// URI"
+msgstr ""
+
+msgid "Failed to communicate with Poedit process."
+msgstr ""
+
 #, c-format
 msgid "Unhandled exception occurred: %s"
 msgstr "حدث خطأ لا يمكن التّعامل معه: %s"
@@ -165,12 +259,6 @@ msgstr "حدث خطأ لا يمكن التّعامل معه."
 msgid "Open catalog"
 msgstr "افتح كتالوج"
 
-msgid "All Files"
-msgstr "كلّ الملفّات"
-
-msgid "PO Translation Files"
-msgstr "ملفّات PO ترجميّة"
-
 #, c-format
 msgid "File '%s' doesn't exist."
 msgstr "الملفّ '%s' غير موجود."
@@ -260,7 +348,7 @@ msgid "Make Lower Case"
 msgstr ""
 
 msgid "Capitalize"
-msgstr ""
+msgstr "كبّر الحروف"
 
 msgid "Speech"
 msgstr "الكلام"
@@ -398,6 +486,19 @@ msgstr "الجمع:"
 msgid "Translation:"
 msgstr "التّرجمة:"
 
+msgid ""
+"POT files are only templates and don’t contain any translations themselves.\n"
+"To make a translation, create a new PO file based on the template."
+msgstr ""
+"ملفات POT ليست إلا قوالب و لا تحوي ضمنها أي ترجمة.\n"
+"للترجمة أنشئ ملف PO جديد مبني على القالب."
+
+msgid "Create New Translation"
+msgstr "أنشئ ترجمة جديدة"
+
+msgid "Create new translation"
+msgstr "أنشئ ترجمة جديدة"
+
 #. TRANSLATORS: %s is language name in its basic form (as you
 #. would see e.g. in a list of supported languages). You may need
 #. to rephrase it, e.g. to an equivalent of "for language %s".
@@ -445,9 +546,6 @@ msgstr "ملفّات HTML"
 msgid "Open catalog template"
 msgstr "افتح قالب كتالوج"
 
-msgid "POT Translation Templates"
-msgstr "ملفّات POT قالبيّة"
-
 msgid "Updating catalog"
 msgstr "يحدّث الكتالوج"
 
@@ -528,18 +626,22 @@ msgstr[5] "التّرجمة جاهزة لاستخدامها، لكن توجد %d
 msgid "The translation is ready for use."
 msgstr "التّرجمة جاهزة لاستخدامها."
 
-msgid "No references to this string found."
-msgstr "لم يُعثر على مراجع لهذه السلسلة."
-
-msgid "Please choose the reference you want to show:"
-msgstr "فضلًا اختر المرجع الذي تريد إظهاره:"
-
-msgid "References"
-msgstr "المراجع"
-
 msgid "Context:"
 msgstr "السّياق:"
 
+#, c-format
+msgid "Poedit automatically fixed invalid content in the file “%s”."
+msgstr "لقد أصلح محرّر Po محتوى غير صالح تلقائيا في الملف \"%s\"."
+
+msgid ""
+"The file contained duplicate items, which is not allowed in PO files and "
+"would prevent the file from being used. Poedit fixed the issue, but you "
+"should review translations of any items marked as fuzzy and correct them if "
+"necessary."
+msgstr ""
+"الملف يحوي عناصر مكرّرة، و هذا ما سيمنع من استخدامه. أصلح محرّر Po النقص، و "
+"لكن عليك بمراجعة ترجمات أي عنصر معلّمة على أنها غير أكيدة و تصحيحها إن لزم."
+
 msgid "Language of the translation isn't set."
 msgstr "لغة التّرجمة لم تُعيَّن."
 
@@ -549,6 +651,23 @@ msgstr "عيّن اللغة"
 msgid "Set language"
 msgstr "عيّن اللّغة"
 
+#. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)."
+msgid ""
+"Suggestions are not available if the translation language is not set "
+"correctly. Other features, such as plural forms, may be affected as well."
+msgstr ""
+"الاقتراحات لا تتوفّر إن لم تعيّن لغة التّرجمة تعيينًا صحيحًا. الميزات الأخرى "
+"(كصيغ الجمع) يمكن أن تتأثّر أيضًا."
+
+msgid "Language of the translation is the same as source language."
+msgstr "لغة التّرجمة نفسها لغة المصدر."
+
+msgid "Fix Language"
+msgstr "أصلح اللغة"
+
+msgid "Fix language"
+msgstr "أصلح اللغة"
+
 msgid ""
 "This catalog has entries with plural forms, but doesn't have Plural-Forms "
 "header configured."
@@ -581,6 +700,7 @@ msgstr "أصلح التّرويسة"
 msgid "Plural forms expression used by the catalog is unusual for %s."
 msgstr "تعبير صيغ الجموع الذي يستخدمه الكتالوج غير طبيعيّ لِـ %s."
 
+#. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the catalog is unusual for %s.")"
 msgid "Review"
 msgstr "راجع"
 
@@ -606,6 +726,16 @@ msgstr[3] "%d أخطاء"
 msgstr[4] "%d خطأ"
 msgstr[5] "%d خطأ"
 
+#, c-format
+msgid "%d entry"
+msgid_plural "%d entries"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+msgstr[3] ""
+msgstr[4] ""
+msgstr[5] ""
+
 msgid " (unsaved)"
 msgstr " (غير محفوظ)"
 
@@ -736,6 +866,9 @@ msgstr "كلّ شيء"
 msgid "Form %i"
 msgstr "الشّكل %i"
 
+msgid "Singular"
+msgstr "المفرد"
+
 msgid "Zero"
 msgstr "صفر"
 
@@ -745,6 +878,9 @@ msgstr "واحد"
 msgid "Two"
 msgstr "اثنان"
 
+msgid "Plural"
+msgstr "الجمع"
+
 msgid "Other"
 msgstr "أخرى"
 
@@ -773,6 +909,12 @@ msgstr "أخفِ الشريط الجانبيّ"
 msgid "Show Sidebar"
 msgstr "أظهر الشريط الجانبيّ"
 
+msgid "Hide Status Bar"
+msgstr "إخفاء شريط الحالة"
+
+msgid "Show Status Bar"
+msgstr "إظهار شريط الحالة"
+
 msgid "Source text"
 msgstr "النصّ المصدر"
 
@@ -782,6 +924,10 @@ msgstr "التّرجمة"
 msgid "ID"
 msgstr "المعرّف"
 
+#, c-format
+msgid "Source text — %s"
+msgstr "النّص المصدر— %s"
+
 msgid "unknown language"
 msgstr "لغة مجهولة"
 
@@ -792,57 +938,73 @@ msgstr "التّرجمة — %s"
 msgid "Error:"
 msgstr "خطأ:"
 
-msgid "Project info"
-msgstr "معلومات المشروع"
+msgid "Source file"
+msgstr "الملف المصدر"
 
-msgid "Project name and version:"
-msgstr "اسم المشروع وإصداره:"
+msgid "Source file occurrence:"
+msgstr "حدوث الملف المصدر:"
 
-msgid "Language:"
-msgstr "اللّغة:"
+msgid "Open in Editor"
+msgstr "افتح في المحرّر"
 
-msgid "Team:"
-msgstr "الفريق:"
+msgid "Open in editor"
+msgstr "افتح في المحرّر"
 
-msgid "Team's email address:"
-msgstr "بريد الفريق الإلكترونيّ:"
+msgid "No references for the selected item."
+msgstr "لا مراجع للعنصر المحدّد."
 
-msgid "Charset:"
-msgstr "طقم المحارف:"
+#, c-format
+msgid "Error opening file %s!"
+msgstr "خطأ عند فتح الملفّ %s!"
 
-msgid "Source"
-msgstr "المصدر"
+msgid "Find"
+msgstr "اعثر"
 
-msgid "Notes"
-msgstr "ملاحظات"
+msgid "Replace"
+msgstr "استبدل"
 
-msgid "Automatic translation"
-msgstr "ترجمة آليّة"
+#. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.)
+msgid "Options"
+msgstr "خيارات"
 
-msgid "Fuzzy translation"
-msgstr "ترجمة مُبهمة"
+msgid "Ignore case"
+msgstr "تجاهل حالة الحروف"
 
-msgid "Notes for translators:"
-msgstr "ملاحظات للمترجمين:"
+msgid "Wrap around"
+msgstr "التف حول النص"
 
-msgid "Comment:"
-msgstr "تعليق:"
+msgid "Whole words only"
+msgstr "كلمات كاملة فقط"
 
-msgid "Source file"
-msgstr "الملف المصدر"
+msgid "Find in source texts"
+msgstr "ابحث في نصوص المصدر"
 
-msgid "Source file occurrence:"
-msgstr "حدوث الملف المصدر:"
+msgid "Find in translations"
+msgstr "اعثر في التّرجمات"
 
-msgid "Open in Editor"
-msgstr "افتح في المحرّر"
+msgid "Find in comments"
+msgstr "اعثر في التّعليقات"
 
-msgid "Open in editor"
-msgstr "افتح في المحرّر"
+msgid "Close"
+msgstr "أغلق"
 
-#, c-format
-msgid "Error opening file %s!"
-msgstr "خطأ عند فتح الملفّ %s!"
+msgid "Replace All"
+msgstr "استبدل الكل"
+
+msgid "Replace all"
+msgstr "استبدل الكل"
+
+msgid "< &Previous"
+msgstr "< ال&سّابقة"
+
+msgid "&Next >"
+msgstr "ال&تّالية >"
+
+msgid "String to find"
+msgstr ""
+
+msgid "Replacement string"
+msgstr ""
 
 #, c-format
 msgid "Cannot execute program: %s"
@@ -1042,9 +1204,19 @@ msgstr "جديد"
 msgid "Edit"
 msgstr "حرّر"
 
+msgid "Delete extractor"
+msgstr "حذف المُستخرج"
+
+#, c-format
+msgid "Are you sure you want to delete the “%s” extractor?"
+msgstr "هل أنت متأكد من أنك تريد حذف مستخرج \"%s\"؟"
+
 msgid "Extractors"
 msgstr "المستخرجات"
 
+msgid "Accounts"
+msgstr "الحسابات"
+
 msgid "Automatically check for updates"
 msgstr "التمس آليًّا عن التّحديثات"
 
@@ -1087,8 +1259,41 @@ msgstr "حافظ على تنسيق الملفّات الموجودة"
 msgid "Advanced"
 msgstr "متقدّم"
 
-msgid "Additional keywords"
-msgstr "الكلمات المفتاحيّة الإضافيّة"
+msgid ""
+"<big>Drag and Drop Folders Here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+"<big>اسحب وأسقط المجلدات هنا</big> \n"
+"\n"
+" أو استخدم زر +"
+
+msgid ""
+"<big>Drag and drop folders here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+"<big>اسحب وأسقط المجلدات هنا</big> \n"
+"\n"
+" أو استخدم زر +"
+
+msgid "Add Folders..."
+msgstr "إضافة مجلدات..."
+
+msgid "Add folders..."
+msgstr "إضافة مجلدات..."
+
+msgid "Add Files..."
+msgstr "أضف ملفات..."
+
+msgid "Add files..."
+msgstr "أضف ملفات..."
+
+msgid "Add Wildcard..."
+msgstr ""
+
+msgid "Add wildcard..."
+msgstr ""
 
 msgid "Paths"
 msgstr "المسارات"
@@ -1096,6 +1301,9 @@ msgstr "المسارات"
 msgid "Excluded paths"
 msgstr "المسارات المستثناة"
 
+msgid "Additional keywords"
+msgstr "الكلمات المفتاحيّة الإضافيّة"
+
 msgid "Name of the project the translation is for"
 msgstr "اسم المشروع الذي تكون التّرجمات إليه"
 
@@ -1108,6 +1316,9 @@ msgstr "UTF-8 (مستحسن)"
 msgid "Please save the file first. This section cannot be edited until then."
 msgstr "فضلًا احفظ الملفّ أوّلًا. لا يمكن تحرير هذا القسم حتّى ذلك الحين."
 
+msgid "Comment:"
+msgstr "تعليق:"
+
 msgid "OK"
 msgstr "حسنًا"
 
@@ -1117,42 +1328,6 @@ msgstr "ام&حُ"
 msgid "Clear the comment"
 msgstr "امحُ التّعليق"
 
-msgid "Find..."
-msgstr "اعثر..."
-
-msgid "String to find:"
-msgstr "السلسلة للعثور عليها:"
-
-msgid "Case sensitive"
-msgstr "حسّاس للحالة"
-
-msgid "Start from the first item"
-msgstr "ابدأ من أوّل عنصر"
-
-msgid "Whole words only"
-msgstr "كلمات كاملة فقط"
-
-msgid "Find in original strings"
-msgstr "اعثر في السلاسل الأصلية"
-
-msgid "Find in translations"
-msgstr "اعثر في التّرجمات"
-
-msgid "Find in comments"
-msgstr "اعثر في التّعليقات"
-
-msgid "Find in automatic comments"
-msgstr "اعثر في التّعليقات الآليّة"
-
-msgid "Close"
-msgstr "أغلق"
-
-msgid "< &Previous"
-msgstr "< ال&سّابقة"
-
-msgid "&Next >"
-msgstr "ال&تّالية >"
-
 msgid "Create new translations project"
 msgstr "أنشئ مشروع ترجمات جديد"
 
@@ -1207,6 +1382,12 @@ msgstr "ا&فتح..."
 msgid "Open Recent"
 msgstr "افتح الأخيرة"
 
+msgid "Open from Crowdin..."
+msgstr "افتح من كرويدن..."
+
+msgid "Open From Crowdin..."
+msgstr "افتح من كرويدن..."
+
 msgid "&Save"
 msgstr "ا&حفظ"
 
@@ -1255,14 +1436,17 @@ msgstr "أ&ظهر المراجع"
 msgid "&Find..."
 msgstr "ا&عثر..."
 
+msgid "Replace..."
+msgstr "استبدل..."
+
 msgid "Find next"
 msgstr "اعثر على التّالي"
 
 msgid "Find previous"
 msgstr "اعثر على السّابق"
 
-msgid "Find"
-msgstr "اعثر"
+msgid "Find and Replace..."
+msgstr "ابحث و استبدل..."
 
 msgid "Find Next"
 msgstr "اعثر على التّالي"
@@ -1303,6 +1487,12 @@ msgstr "&جمّع بالسّياق"
 msgid "&Group By Context"
 msgstr "&جمّع بالسّياق"
 
+msgid "Entries with errors first"
+msgstr "المُدخلات مع أخطاء أولا"
+
+msgid "Entries with Errors First"
+msgstr "المُدخلات مع أخطاء أولا"
+
 msgid "&Untranslated entries first"
 msgstr "المُدخلات &غير المُترجَمة أوّلًا"
 
@@ -1312,6 +1502,9 @@ msgstr "المُدخلات &غير المُترجَمة أوّلًا"
 msgid "Show sidebar"
 msgstr "أظهر الشريط الجانبيّ"
 
+msgid "Show status bar"
+msgstr "عرض شريط الحالة"
+
 msgid "C&atalog"
 msgstr "&كتالوج"
 
@@ -1327,6 +1520,9 @@ msgstr "حدّث من &ملف POT..."
 msgid "Update from &POT File..."
 msgstr "حدّث من &ملف POT..."
 
+msgid "Sync with Crowdin"
+msgstr "زامن مع كرويدن"
+
 msgid "Fill missing translations from &TM..."
 msgstr "املأ التّ&رجمات النّاقصة من TM..."
 
@@ -1450,6 +1646,9 @@ msgstr ""
 msgid "Catalog properties"
 msgstr "خصائص الكتالوج"
 
+msgid "Project name and version:"
+msgstr "اسم المشروع وإصداره:"
+
 msgid "Plural Forms:"
 msgstr "صيغ الجموع:"
 
@@ -1462,17 +1661,29 @@ msgstr "استخدم تعبيرًا مخصّصًا"
 msgid "Learn about plural forms"
 msgstr "تعلّم حول صيغ الجموع"
 
+msgid "Charset:"
+msgstr "طقم المحارف:"
+
+msgid "Team:"
+msgstr "الفريق:"
+
+msgid "Team's email address:"
+msgstr "بريد الفريق الإلكترونيّ:"
+
 msgid "Translation properties"
 msgstr "خصائص التّرجمة"
 
+msgid "Sources paths"
+msgstr "مسارات المصادر"
+
 msgid "Extract text from source files in the following directories:"
 msgstr "استخرج النّصوص من الملفات المصدريّة في الأدلّة التّالية:"
 
 msgid "Base path:"
 msgstr "المسار الأساس:"
 
-msgid "Sources paths"
-msgstr "مسارات المصادر"
+msgid "Sources keywords"
+msgstr "كلمات المصادر المفتاحيّة"
 
 msgid ""
 "Use these keywords (function names) to recognize translatable strings\n"
@@ -1484,9 +1695,6 @@ msgstr ""
 msgid "Learn about gettext keywords"
 msgstr "تعلّم حول كلمات غِت​تكست المفتاحيّة"
 
-msgid "Sources keywords"
-msgstr "كلمات المصادر المفتاحيّة"
-
 msgid "Update summary"
 msgstr "حدّث الملخّص"
 
@@ -1534,8 +1742,8 @@ msgstr "تحديث الكتالوج - زامِنه مع المصادر"
 msgid "Toggled if selected string has fuzzy translation"
 msgstr "يُبدَّل إن كانت للسلسلة المحدّدة ترجمة مُبهمة"
 
-msgid "Show or hide the sidebar."
-msgstr "أظهر الشريط الجانبيّ أو أخفه."
+msgid "Show or hide the sidebar"
+msgstr "أظهر الشريط الجانبيّ أو أخفه"
 
 #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer.
 msgid "Previous source text:"
@@ -1547,6 +1755,9 @@ msgid ""
 msgstr ""
 "نصّ المصدر القديم (قبل أن يتغيّر أثناء التحديث) الذي تقابله الترجمة المبهمة."
 
+msgid "Notes for translators:"
+msgstr "ملاحظات للمترجمين:"
+
 msgid "Add comment"
 msgstr "أضف تعليقًا"
 
@@ -1625,14 +1836,21 @@ msgstr "حرّر ترجمة"
 msgid "Open an existing PO file and edit the translation."
 msgstr "افتح ملف PO موجود وحرّر التّرجمة."
 
-msgid "Create new translation"
-msgstr "أنشئ ترجمة جديدة"
-
 msgid ""
 "Take an existing PO file or POT template and create a new translation from "
 "it."
 msgstr "خُذ ملف PO أو قالب POT موجودين وأنشئ ترجمة منهما."
 
+msgid "Collaborate on a translation with Crowdin"
+msgstr "شارك في ترجمة مع كرويدن"
+
+msgid ""
+"Download a file from Crowdin project, translate and sync your changes back."
+msgstr "حمّل ملفا من مشروع في كرويدن، ترجمه و زامن تغييراتك عليه."
+
+msgid "What is Crowdin?"
+msgstr "ما هو كرويدن؟"
+
 msgid "There are no translations. That’s unusual."
 msgstr "ليست هناك ترجمات. هذا غير طبيعي."
 
@@ -1668,3 +1886,9 @@ msgstr "استخرج من المصادر"
 
 msgid "Configure source code extraction in Properties."
 msgstr "اضبط استخراج الشِفرة المصدريّة في الخصائص."
+
+msgid "Sync"
+msgstr "زامن"
+
+msgid "Synchronize the translation with Crowdin"
+msgstr "زامن الترجمة مع كرويدن"
diff --git a/locales/ast.mo b/locales/ast.mo
index 5f3fd6c..9f60cc2 100644
Binary files a/locales/ast.mo and b/locales/ast.mo differ
diff --git a/locales/ast.po b/locales/ast.po
index 5f3cb9d..45d58fa 100644
--- a/locales/ast.po
+++ b/locales/ast.po
@@ -2,8 +2,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: poedit\n"
 "Report-Msgid-Bugs-To: help at poedit.net\n"
-"POT-Creation-Date: 2015-01-10 16:00+0100\n"
-"PO-Revision-Date: 2015-03-10 12:33-0400\n"
+"POT-Creation-Date: 2015-05-27 11:31+0200\n"
+"PO-Revision-Date: 2015-05-27 05:18-0400\n"
 "Last-Translator: vslavik <vaclav at slavik.io>\n"
 "Language-Team: Asturian\n"
 "Language: ast_ES\n"
@@ -83,6 +83,15 @@ msgstr ""
 msgid "Error saving catalog"
 msgstr "Fayu al guardar el catálogu"
 
+msgid "PO Translation Files"
+msgstr ""
+
+msgid "POT Translation Templates"
+msgstr ""
+
+msgid "All Translation Files"
+msgstr ""
+
 msgid "Merging differences..."
 msgstr "Amestando diferencies..."
 
@@ -102,6 +111,83 @@ msgstr "Escoyer llingua"
 msgid "You must restart Poedit for this change to take effect."
 msgstr "Ties qu'entamar Poedit pa que furrule el caumdamientu."
 
+msgid "Downloading translations is disabled in this project."
+msgstr ""
+
+msgid "Not authorized, please sign in again."
+msgstr ""
+
+msgid "Sign in to Crowdin"
+msgstr ""
+
+msgid ""
+"Crowdin is an online localization management platform and collaborative "
+"translation tool. Poedit can seamlessly sync PO files managed at Crowdin."
+msgstr ""
+
+msgid "Sign In"
+msgstr ""
+
+msgid "Sign in"
+msgstr ""
+
+msgid "Sign Out"
+msgstr ""
+
+msgid "Sign out"
+msgstr ""
+
+msgid "Waiting for authentication…"
+msgstr ""
+
+msgid "Updating user information…"
+msgstr ""
+
+msgid "Signed in as:"
+msgstr ""
+
+msgid "Learn More About Crowdin"
+msgstr ""
+
+msgid "Learn more about Crowdin"
+msgstr ""
+
+msgid "Open Crowdin translation"
+msgstr ""
+
+msgid "Project:"
+msgstr ""
+
+msgid "Language:"
+msgstr "Llingua:"
+
+msgid "File:"
+msgstr ""
+
+msgid "No translation projects listed in your Crowdin account."
+msgstr ""
+
+msgid "This project has no files that can be translated in Poedit."
+msgstr ""
+
+msgid "This file can only be edited in Crowdin’s web interface."
+msgstr ""
+
+msgid "Downloading latest translations…"
+msgstr ""
+
+msgid "Syncing with Crowdin"
+msgstr ""
+
+msgid "Syncing with Crowdin failed."
+msgstr ""
+
+msgid "Crowdin error"
+msgstr ""
+
+msgid "Uploading translations…"
+msgstr ""
+
 msgid "&Copy"
 msgstr ""
 
@@ -146,6 +232,12 @@ msgstr ""
 msgid "don't delete temporary files (for debugging)"
 msgstr ""
 
+msgid "handle a poedit:// URI"
+msgstr ""
+
+msgid "Failed to communicate with Poedit process."
+msgstr ""
+
 #, c-format
 msgid "Unhandled exception occurred: %s"
 msgstr ""
@@ -156,12 +248,6 @@ msgstr ""
 msgid "Open catalog"
 msgstr "Abrir catálogu"
 
-msgid "All Files"
-msgstr ""
-
-msgid "PO Translation Files"
-msgstr ""
-
 #, c-format
 msgid "File '%s' doesn't exist."
 msgstr "El ficheru '%s' nun ta"
@@ -389,6 +475,17 @@ msgstr "Plural:"
 msgid "Translation:"
 msgstr ""
 
+msgid ""
+"POT files are only templates and don’t contain any translations themselves.\n"
+"To make a translation, create a new PO file based on the template."
+msgstr ""
+
+msgid "Create New Translation"
+msgstr ""
+
+msgid "Create new translation"
+msgstr ""
+
 #. TRANSLATORS: %s is language name in its basic form (as you
 #. would see e.g. in a list of supported languages). You may need
 #. to rephrase it, e.g. to an equivalent of "for language %s".
@@ -436,9 +533,6 @@ msgstr ""
 msgid "Open catalog template"
 msgstr "Abrir plantilla de catálogu"
 
-msgid "POT Translation Templates"
-msgstr ""
-
 msgid "Updating catalog"
 msgstr ""
 
@@ -507,16 +601,18 @@ msgstr[1] ""
 msgid "The translation is ready for use."
 msgstr ""
 
-msgid "No references to this string found."
-msgstr "No s'alcuentren referencies a esta cadena."
-
-msgid "Please choose the reference you want to show:"
-msgstr "Por favor garra la referencia que quies amosar:"
+msgid "Context:"
+msgstr ""
 
-msgid "References"
-msgstr "Referencies"
+#, c-format
+msgid "Poedit automatically fixed invalid content in the file “%s”."
+msgstr ""
 
-msgid "Context:"
+msgid ""
+"The file contained duplicate items, which is not allowed in PO files and "
+"would prevent the file from being used. Poedit fixed the issue, but you "
+"should review translations of any items marked as fuzzy and correct them if "
+"necessary."
 msgstr ""
 
 msgid "Language of the translation isn't set."
@@ -528,6 +624,21 @@ msgstr ""
 msgid "Set language"
 msgstr ""
 
+#. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)."
+msgid ""
+"Suggestions are not available if the translation language is not set "
+"correctly. Other features, such as plural forms, may be affected as well."
+msgstr ""
+
+msgid "Language of the translation is the same as source language."
+msgstr ""
+
+msgid "Fix Language"
+msgstr ""
+
+msgid "Fix language"
+msgstr ""
+
 msgid ""
 "This catalog has entries with plural forms, but doesn't have Plural-Forms "
 "header configured."
@@ -558,6 +669,7 @@ msgstr ""
 msgid "Plural forms expression used by the catalog is unusual for %s."
 msgstr ""
 
+#. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the catalog is unusual for %s.")"
 msgid "Review"
 msgstr ""
 
@@ -579,6 +691,12 @@ msgid_plural "%d errors"
 msgstr[0] ""
 msgstr[1] ""
 
+#, c-format
+msgid "%d entry"
+msgid_plural "%d entries"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid " (unsaved)"
 msgstr ""
 
@@ -692,6 +810,9 @@ msgstr ""
 msgid "Form %i"
 msgstr ""
 
+msgid "Singular"
+msgstr ""
+
 msgid "Zero"
 msgstr ""
 
@@ -701,6 +822,9 @@ msgstr ""
 msgid "Two"
 msgstr ""
 
+msgid "Plural"
+msgstr ""
+
 msgid "Other"
 msgstr ""
 
@@ -729,6 +853,12 @@ msgstr ""
 msgid "Show Sidebar"
 msgstr ""
 
+msgid "Hide Status Bar"
+msgstr ""
+
+msgid "Show Status Bar"
+msgstr ""
+
 msgid "Source text"
 msgstr ""
 
@@ -738,6 +868,10 @@ msgstr "Torna"
 msgid "ID"
 msgstr ""
 
+#, c-format
+msgid "Source text — %s"
+msgstr ""
+
 msgid "unknown language"
 msgstr ""
 
@@ -748,57 +882,73 @@ msgstr ""
 msgid "Error:"
 msgstr ""
 
-msgid "Project info"
-msgstr "Información de proyeutu"
+msgid "Source file"
+msgstr "Ficheru fonte"
 
-msgid "Project name and version:"
-msgstr "Nome y versión del proyeutu:"
+msgid "Source file occurrence:"
+msgstr ""
 
-msgid "Language:"
-msgstr "Llingua:"
+msgid "Open in Editor"
+msgstr ""
 
-msgid "Team:"
-msgstr "Equipu:"
+msgid "Open in editor"
+msgstr ""
 
-msgid "Team's email address:"
-msgstr "Correu del equipu:"
+msgid "No references for the selected item."
+msgstr ""
 
-msgid "Charset:"
-msgstr "Charset:"
+#, c-format
+msgid "Error opening file %s!"
+msgstr "Fayu al abrir el ficheru %s!"
 
-msgid "Source"
+msgid "Find"
 msgstr ""
 
-msgid "Notes"
-msgstr "Notes"
+msgid "Replace"
+msgstr ""
 
-msgid "Automatic translation"
-msgstr "Torna automática"
+#. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.)
+msgid "Options"
+msgstr ""
 
-msgid "Fuzzy translation"
-msgstr "Torna borrosa"
+msgid "Ignore case"
+msgstr ""
 
-msgid "Notes for translators:"
+msgid "Wrap around"
 msgstr ""
 
-msgid "Comment:"
-msgstr "Comentariu:"
+msgid "Whole words only"
+msgstr "Namás que pallabres enteres"
 
-msgid "Source file"
-msgstr "Ficheru fonte"
+msgid "Find in source texts"
+msgstr ""
 
-msgid "Source file occurrence:"
+msgid "Find in translations"
 msgstr ""
 
-msgid "Open in Editor"
+msgid "Find in comments"
+msgstr "Buscar en comentarios"
+
+msgid "Close"
 msgstr ""
 
-msgid "Open in editor"
+msgid "Replace All"
 msgstr ""
 
-#, c-format
-msgid "Error opening file %s!"
-msgstr "Fayu al abrir el ficheru %s!"
+msgid "Replace all"
+msgstr ""
+
+msgid "< &Previous"
+msgstr ""
+
+msgid "&Next >"
+msgstr ""
+
+msgid "String to find"
+msgstr ""
+
+msgid "Replacement string"
+msgstr ""
 
 #, c-format
 msgid "Cannot execute program: %s"
@@ -988,9 +1138,19 @@ msgstr "Nuevu"
 msgid "Edit"
 msgstr "Remanar"
 
+msgid "Delete extractor"
+msgstr ""
+
+#, c-format
+msgid "Are you sure you want to delete the “%s” extractor?"
+msgstr ""
+
 msgid "Extractors"
 msgstr ""
 
+msgid "Accounts"
+msgstr ""
+
 msgid "Automatically check for updates"
 msgstr ""
 
@@ -1029,7 +1189,34 @@ msgstr ""
 msgid "Advanced"
 msgstr ""
 
-msgid "Additional keywords"
+msgid ""
+"<big>Drag and Drop Folders Here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+
+msgid ""
+"<big>Drag and drop folders here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+
+msgid "Add Folders..."
+msgstr ""
+
+msgid "Add folders..."
+msgstr ""
+
+msgid "Add Files..."
+msgstr ""
+
+msgid "Add files..."
+msgstr ""
+
+msgid "Add Wildcard..."
+msgstr ""
+
+msgid "Add wildcard..."
 msgstr ""
 
 msgid "Paths"
@@ -1038,6 +1225,9 @@ msgstr "Camínos"
 msgid "Excluded paths"
 msgstr ""
 
+msgid "Additional keywords"
+msgstr ""
+
 msgid "Name of the project the translation is for"
 msgstr ""
 
@@ -1050,6 +1240,9 @@ msgstr ""
 msgid "Please save the file first. This section cannot be edited until then."
 msgstr ""
 
+msgid "Comment:"
+msgstr "Comentariu:"
+
 msgid "OK"
 msgstr "Bien"
 
@@ -1059,42 +1252,6 @@ msgstr ""
 msgid "Clear the comment"
 msgstr "Llimpiar el comentariu"
 
-msgid "Find..."
-msgstr "Buscar..."
-
-msgid "String to find:"
-msgstr "Cadena a buscar:"
-
-msgid "Case sensitive"
-msgstr "Dase cuente de mayuscules"
-
-msgid "Start from the first item"
-msgstr "Entamar dende el primer elementu"
-
-msgid "Whole words only"
-msgstr "Namás que pallabres enteres"
-
-msgid "Find in original strings"
-msgstr "Buscar en cadenes orixinales"
-
-msgid "Find in translations"
-msgstr ""
-
-msgid "Find in comments"
-msgstr "Buscar en comentarios"
-
-msgid "Find in automatic comments"
-msgstr "Buscar en comentarios automáticos"
-
-msgid "Close"
-msgstr ""
-
-msgid "< &Previous"
-msgstr ""
-
-msgid "&Next >"
-msgstr ""
-
 msgid "Create new translations project"
 msgstr "Facer nuevos proyectos de torna"
 
@@ -1149,6 +1306,12 @@ msgstr ""
 msgid "Open Recent"
 msgstr ""
 
+msgid "Open from Crowdin..."
+msgstr ""
+
+msgid "Open From Crowdin..."
+msgstr ""
+
 msgid "&Save"
 msgstr "&Guardar"
 
@@ -1197,13 +1360,16 @@ msgstr ""
 msgid "&Find..."
 msgstr "&Buscar..."
 
+msgid "Replace..."
+msgstr ""
+
 msgid "Find next"
 msgstr ""
 
 msgid "Find previous"
 msgstr ""
 
-msgid "Find"
+msgid "Find and Replace..."
 msgstr ""
 
 msgid "Find Next"
@@ -1245,6 +1411,12 @@ msgstr ""
 msgid "&Group By Context"
 msgstr ""
 
+msgid "Entries with errors first"
+msgstr ""
+
+msgid "Entries with Errors First"
+msgstr ""
+
 msgid "&Untranslated entries first"
 msgstr ""
 
@@ -1254,6 +1426,9 @@ msgstr ""
 msgid "Show sidebar"
 msgstr ""
 
+msgid "Show status bar"
+msgstr ""
+
 msgid "C&atalog"
 msgstr "C&atálogu"
 
@@ -1269,6 +1444,9 @@ msgstr "Recargar dende &ficheru POT..."
 msgid "Update from &POT File..."
 msgstr ""
 
+msgid "Sync with Crowdin"
+msgstr ""
+
 msgid "Fill missing translations from &TM..."
 msgstr ""
 
@@ -1392,6 +1570,9 @@ msgstr ""
 msgid "Catalog properties"
 msgstr ""
 
+msgid "Project name and version:"
+msgstr "Nome y versión del proyeutu:"
+
 msgid "Plural Forms:"
 msgstr "Formes plurales:"
 
@@ -1404,16 +1585,28 @@ msgstr ""
 msgid "Learn about plural forms"
 msgstr ""
 
+msgid "Charset:"
+msgstr "Charset:"
+
+msgid "Team:"
+msgstr "Equipu:"
+
+msgid "Team's email address:"
+msgstr "Correu del equipu:"
+
 msgid "Translation properties"
 msgstr ""
 
+msgid "Sources paths"
+msgstr ""
+
 msgid "Extract text from source files in the following directories:"
 msgstr ""
 
 msgid "Base path:"
 msgstr "Direutoriu base:"
 
-msgid "Sources paths"
+msgid "Sources keywords"
 msgstr ""
 
 msgid ""
@@ -1424,9 +1617,6 @@ msgstr ""
 msgid "Learn about gettext keywords"
 msgstr ""
 
-msgid "Sources keywords"
-msgstr ""
-
 msgid "Update summary"
 msgstr "Recargar resumen"
 
@@ -1474,7 +1664,7 @@ msgstr "Recargar catálogos - sincronizar coles fontes"
 msgid "Toggled if selected string has fuzzy translation"
 msgstr "Furrula si la cadena marcada tien una torna borrosa"
 
-msgid "Show or hide the sidebar."
+msgid "Show or hide the sidebar"
 msgstr ""
 
 #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer.
@@ -1486,6 +1676,9 @@ msgid ""
 "translation corresponds to."
 msgstr ""
 
+msgid "Notes for translators:"
+msgstr ""
+
 msgid "Add comment"
 msgstr ""
 
@@ -1558,14 +1751,21 @@ msgstr ""
 msgid "Open an existing PO file and edit the translation."
 msgstr ""
 
-msgid "Create new translation"
-msgstr ""
-
 msgid ""
 "Take an existing PO file or POT template and create a new translation from "
 "it."
 msgstr ""
 
+msgid "Collaborate on a translation with Crowdin"
+msgstr ""
+
+msgid ""
+"Download a file from Crowdin project, translate and sync your changes back."
+msgstr ""
+
+msgid "What is Crowdin?"
+msgstr ""
+
 msgid "There are no translations. That’s unusual."
 msgstr ""
 
@@ -1598,3 +1798,9 @@ msgstr ""
 
 msgid "Configure source code extraction in Properties."
 msgstr ""
+
+msgid "Sync"
+msgstr ""
+
+msgid "Synchronize the translation with Crowdin"
+msgstr ""
diff --git a/locales/az.mo b/locales/az.mo
index 3ddb41f..9ee0f21 100644
Binary files a/locales/az.mo and b/locales/az.mo differ
diff --git a/locales/az.po b/locales/az.po
index b5ddc04..6ae1e24 100644
--- a/locales/az.po
+++ b/locales/az.po
@@ -2,8 +2,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: poedit\n"
 "Report-Msgid-Bugs-To: help at poedit.net\n"
-"POT-Creation-Date: 2015-01-10 16:00+0100\n"
-"PO-Revision-Date: 2015-03-10 12:33-0400\n"
+"POT-Creation-Date: 2015-05-27 11:31+0200\n"
+"PO-Revision-Date: 2015-05-27 05:17-0400\n"
 "Last-Translator: vslavik <vaclav at slavik.io>\n"
 "Language-Team: Azerbaijani\n"
 "Language: az_AZ\n"
@@ -92,6 +92,15 @@ msgstr ""
 msgid "Error saving catalog"
 msgstr "kataloq qeyd edilərkən xəta oldu"
 
+msgid "PO Translation Files"
+msgstr "PO Tərcümə Faylları"
+
+msgid "POT Translation Templates"
+msgstr "POT Tərcümə Şablonları"
+
+msgid "All Translation Files"
+msgstr "Bütün Tərcümə Faylları"
+
 msgid "Merging differences..."
 msgstr "Fərqliliklər birləşdirilir..."
 
@@ -111,6 +120,83 @@ msgstr "Dil seçimi"
 msgid "You must restart Poedit for this change to take effect."
 msgstr "Dəyişikliklər Poedit yenidən başladıldıqdan sonra aktiv olacaq."
 
+msgid "Downloading translations is disabled in this project."
+msgstr "Bu layihədə tərcümələri endirmək deaktivasiya edildi."
+
+msgid "Not authorized, please sign in again."
+msgstr "İzniniz yoxdur, lütfən təkrar daxil olun."
+
+msgid "Sign in to Crowdin"
+msgstr "Crowdin-ə giriş edin"
+
+msgid ""
+"Crowdin is an online localization management platform and collaborative "
+"translation tool. Poedit can seamlessly sync PO files managed at Crowdin."
+msgstr ""
+
+msgid "Sign In"
+msgstr "Giriş"
+
+msgid "Sign in"
+msgstr "Giriş"
+
+msgid "Sign Out"
+msgstr "Çıxış"
+
+msgid "Sign out"
+msgstr "Çıxış"
+
+msgid "Waiting for authentication…"
+msgstr "Təsdiqləmə üçün gözləyir..."
+
+msgid "Updating user information…"
+msgstr "İstifadəçi məlumatları yenilənir..."
+
+msgid "Signed in as:"
+msgstr "Giriş edən:"
+
+msgid "Learn More About Crowdin"
+msgstr "Crowdin Haqqında Məlumat Əldə Edin"
+
+msgid "Learn more about Crowdin"
+msgstr "Crowdin haqqında məlumat əldə edin"
+
+msgid "Open Crowdin translation"
+msgstr "Crowdin tərcüməsini aç"
+
+msgid "Project:"
+msgstr "Layihə:"
+
+msgid "Language:"
+msgstr "Dil:"
+
+msgid "File:"
+msgstr "Fayl:"
+
+msgid "No translation projects listed in your Crowdin account."
+msgstr "Crowdin hesabınızda siyahılanan heç bir tərcümə layihəsi yoxdur."
+
+msgid "This project has no files that can be translated in Poedit."
+msgstr ""
+
+msgid "This file can only be edited in Crowdin’s web interface."
+msgstr ""
+
+msgid "Downloading latest translations…"
+msgstr ""
+
+msgid "Syncing with Crowdin"
+msgstr ""
+
+msgid "Syncing with Crowdin failed."
+msgstr ""
+
+msgid "Crowdin error"
+msgstr ""
+
+msgid "Uploading translations…"
+msgstr ""
+
 msgid "&Copy"
 msgstr "&Köçür"
 
@@ -157,6 +243,12 @@ msgstr ""
 msgid "don't delete temporary files (for debugging)"
 msgstr "müvəqqəti faylları silməyin (nasazlıqların təmiri üçün)"
 
+msgid "handle a poedit:// URI"
+msgstr ""
+
+msgid "Failed to communicate with Poedit process."
+msgstr ""
+
 #, c-format
 msgid "Unhandled exception occurred: %s"
 msgstr "Gözlənilməz bir xəta baş verdi: %s"
@@ -167,12 +259,6 @@ msgstr "Gözlənilməz bir xəta baş verdi."
 msgid "Open catalog"
 msgstr "Kataloqu aç"
 
-msgid "All Files"
-msgstr "Bütün Fayllar"
-
-msgid "PO Translation Files"
-msgstr "PO Tərcümə Faylları"
-
 #, c-format
 msgid "File '%s' doesn't exist."
 msgstr "'%s' faylı yoxdur."
@@ -363,15 +449,15 @@ msgstr "Aşağı"
 
 #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+"
 msgid "ctrl"
-msgstr ""
+msgstr "ctrl"
 
 #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+"
 msgid "alt"
-msgstr ""
+msgstr "alt"
 
 #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+"
 msgid "shift"
-msgstr ""
+msgstr "shift"
 
 msgid "You can't drop more than one file on Poedit window."
 msgstr "Poedit pəncərəsinə birdən artıq faylı sürüşdürüb buraxa bilməzsiniz."
@@ -401,6 +487,17 @@ msgstr "Cəm:"
 msgid "Translation:"
 msgstr "Tərcümə:"
 
+msgid ""
+"POT files are only templates and don’t contain any translations themselves.\n"
+"To make a translation, create a new PO file based on the template."
+msgstr ""
+
+msgid "Create New Translation"
+msgstr "Yeni Tərcümə Yarat"
+
+msgid "Create new translation"
+msgstr "Yeni bir tərcümə hazırlayın"
+
 #. TRANSLATORS: %s is language name in its basic form (as you
 #. would see e.g. in a list of supported languages). You may need
 #. to rephrase it, e.g. to an equivalent of "for language %s".
@@ -449,9 +546,6 @@ msgstr "HTML Faylları"
 msgid "Open catalog template"
 msgstr "Kataloq şablonunu aç"
 
-msgid "POT Translation Templates"
-msgstr "POT Tərcümə Şablonları"
-
 msgid "Updating catalog"
 msgstr "Kataloq yenilənir"
 
@@ -532,18 +626,20 @@ msgstr[1] ""
 msgid "The translation is ready for use."
 msgstr "Tərcümə istifadə üçün hazırdır."
 
-msgid "No references to this string found."
-msgstr "Bu sətir üçün heç bir referans tapılmadı."
-
-msgid "Please choose the reference you want to show:"
-msgstr "Göstərilməsini istədiyiniz referansı seçin:"
-
-msgid "References"
-msgstr "Referanslar"
-
 msgid "Context:"
 msgstr "Kontekst:"
 
+#, c-format
+msgid "Poedit automatically fixed invalid content in the file “%s”."
+msgstr ""
+
+msgid ""
+"The file contained duplicate items, which is not allowed in PO files and "
+"would prevent the file from being used. Poedit fixed the issue, but you "
+"should review translations of any items marked as fuzzy and correct them if "
+"necessary."
+msgstr ""
+
 msgid "Language of the translation isn't set."
 msgstr "Tərcümə dili qurulmamışdır."
 
@@ -553,6 +649,21 @@ msgstr "Dili Qur"
 msgid "Set language"
 msgstr "Dil qurun"
 
+#. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)."
+msgid ""
+"Suggestions are not available if the translation language is not set "
+"correctly. Other features, such as plural forms, may be affected as well."
+msgstr ""
+
+msgid "Language of the translation is the same as source language."
+msgstr ""
+
+msgid "Fix Language"
+msgstr ""
+
+msgid "Fix language"
+msgstr ""
+
 msgid ""
 "This catalog has entries with plural forms, but doesn't have Plural-Forms "
 "header configured."
@@ -587,6 +698,7 @@ msgstr "Başlığı təmir edin"
 msgid "Plural forms expression used by the catalog is unusual for %s."
 msgstr "%s üçün istifadə edilən cəm formatı ifadəsi alışılmış deyil."
 
+#. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the catalog is unusual for %s.")"
 msgid "Review"
 msgstr "Baxış"
 
@@ -608,6 +720,12 @@ msgid_plural "%d errors"
 msgstr[0] "%d xəta"
 msgstr[1] "%d xəta"
 
+#, c-format
+msgid "%d entry"
+msgid_plural "%d entries"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid " (unsaved)"
 msgstr " (qeyd edilməmiş)"
 
@@ -730,6 +848,9 @@ msgstr "Hər şey"
 msgid "Form %i"
 msgstr "Format %i"
 
+msgid "Singular"
+msgstr ""
+
 msgid "Zero"
 msgstr "Sıfır"
 
@@ -739,6 +860,9 @@ msgstr "Bir"
 msgid "Two"
 msgstr "İki"
 
+msgid "Plural"
+msgstr ""
+
 msgid "Other"
 msgstr "Digər"
 
@@ -767,6 +891,12 @@ msgstr "Yan menyunu Gizlət"
 msgid "Show Sidebar"
 msgstr "Yan menyunu Göstər"
 
+msgid "Hide Status Bar"
+msgstr ""
+
+msgid "Show Status Bar"
+msgstr ""
+
 msgid "Source text"
 msgstr "Mənbə mətni"
 
@@ -776,6 +906,10 @@ msgstr "Tərcümə"
 msgid "ID"
 msgstr "ID"
 
+#, c-format
+msgid "Source text — %s"
+msgstr "Mənbə mətni — %s"
+
 msgid "unknown language"
 msgstr "bilinməyən dil"
 
@@ -786,57 +920,73 @@ msgstr "Tərcümə — %s"
 msgid "Error:"
 msgstr "Xəta:"
 
-msgid "Project info"
-msgstr "Layihə haqqında məlumat"
+msgid "Source file"
+msgstr "Mənbə faylı"
 
-msgid "Project name and version:"
-msgstr "Layihənin adı və versiyası:"
+msgid "Source file occurrence:"
+msgstr "Mənbə kodu yaradılması:"
 
-msgid "Language:"
-msgstr "Dil:"
+msgid "Open in Editor"
+msgstr "Redaktorda Aç"
 
-msgid "Team:"
-msgstr "Komanda:"
+msgid "Open in editor"
+msgstr "Redaktorda aç"
 
-msgid "Team's email address:"
-msgstr "Komandanın e-poçt ünvanı:"
+msgid "No references for the selected item."
+msgstr ""
 
-msgid "Charset:"
-msgstr "Kodlaşdırma:"
+#, c-format
+msgid "Error opening file %s!"
+msgstr "'%s' faylı açılarkən xəta oldu!"
 
-msgid "Source"
-msgstr "Mənbə"
+msgid "Find"
+msgstr "Tap"
 
-msgid "Notes"
-msgstr "Qeydlər"
+msgid "Replace"
+msgstr ""
 
-msgid "Automatic translation"
-msgstr "Avtomatik tərcümə"
+#. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.)
+msgid "Options"
+msgstr "Parametrlər"
 
-msgid "Fuzzy translation"
-msgstr "Qeyri-səlis tərcümə"
+msgid "Ignore case"
+msgstr ""
 
-msgid "Notes for translators:"
-msgstr "Tərcüməçilər üçün qeydlər:"
+msgid "Wrap around"
+msgstr ""
 
-msgid "Comment:"
-msgstr "Şərh:"
+msgid "Whole words only"
+msgstr "Mətnə eyni ilə uyğun gələnləri tap"
 
-msgid "Source file"
-msgstr "Mənbə faylı"
+msgid "Find in source texts"
+msgstr ""
 
-msgid "Source file occurrence:"
-msgstr "Mənbə kodu yaradılması:"
+msgid "Find in translations"
+msgstr "Tərcümələrdə tap"
 
-msgid "Open in Editor"
-msgstr "Redaktorda Aç"
+msgid "Find in comments"
+msgstr "Şərhlərdə tapın"
 
-msgid "Open in editor"
-msgstr "Redaktorda aç"
+msgid "Close"
+msgstr "Bağla"
 
-#, c-format
-msgid "Error opening file %s!"
-msgstr "'%s' faylı açılarkən xəta oldu!"
+msgid "Replace All"
+msgstr ""
+
+msgid "Replace all"
+msgstr ""
+
+msgid "< &Previous"
+msgstr "< Öncəki"
+
+msgid "&Next >"
+msgstr "&Sonrakı >"
+
+msgid "String to find"
+msgstr ""
+
+msgid "Replacement string"
+msgstr ""
 
 #, c-format
 msgid "Cannot execute program: %s"
@@ -1036,9 +1186,19 @@ msgstr "Yeni"
 msgid "Edit"
 msgstr "Redaktə et"
 
+msgid "Delete extractor"
+msgstr ""
+
+#, c-format
+msgid "Are you sure you want to delete the “%s” extractor?"
+msgstr ""
+
 msgid "Extractors"
 msgstr ""
 
+msgid "Accounts"
+msgstr ""
+
 msgid "Automatically check for updates"
 msgstr ""
 
@@ -1077,8 +1237,35 @@ msgstr "Var olan faylların formatını qoru"
 msgid "Advanced"
 msgstr "Qabaqcıl"
 
-msgid "Additional keywords"
-msgstr "Əlavə açar kəlmələr"
+msgid ""
+"<big>Drag and Drop Folders Here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+
+msgid ""
+"<big>Drag and drop folders here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+
+msgid "Add Folders..."
+msgstr ""
+
+msgid "Add folders..."
+msgstr ""
+
+msgid "Add Files..."
+msgstr ""
+
+msgid "Add files..."
+msgstr ""
+
+msgid "Add Wildcard..."
+msgstr ""
+
+msgid "Add wildcard..."
+msgstr ""
 
 msgid "Paths"
 msgstr "Yollar"
@@ -1086,6 +1273,9 @@ msgstr "Yollar"
 msgid "Excluded paths"
 msgstr "İstisna edilmiş yollar"
 
+msgid "Additional keywords"
+msgstr "Əlavə açar kəlmələr"
+
 msgid "Name of the project the translation is for"
 msgstr "Bunun üçün hazırlanan tərcümənin adı:"
 
@@ -1100,6 +1290,9 @@ msgstr ""
 "Lütfən əvvəlcə faylı qeyd edin. Qeyd etdikdən sonra bu bölmə redaktə edilə "
 "bilər."
 
+msgid "Comment:"
+msgstr "Şərh:"
+
 msgid "OK"
 msgstr "OK"
 
@@ -1109,42 +1302,6 @@ msgstr "T&əmizlə"
 msgid "Clear the comment"
 msgstr "Şərhi silin"
 
-msgid "Find..."
-msgstr "Tap..."
-
-msgid "String to find:"
-msgstr "Tapılacaq mətn:"
-
-msgid "Case sensitive"
-msgstr "Böyük/kiçik hərfə həssas"
-
-msgid "Start from the first item"
-msgstr "İlk maddədən başladılsın"
-
-msgid "Whole words only"
-msgstr "Mətnə eyni ilə uyğun gələnləri tap"
-
-msgid "Find in original strings"
-msgstr "Orijinal sətirlərdə tapın"
-
-msgid "Find in translations"
-msgstr "Tərcümələrdə tap"
-
-msgid "Find in comments"
-msgstr "Şərhlərdə tapın"
-
-msgid "Find in automatic comments"
-msgstr "Avtomatik şərhlərdə tapın"
-
-msgid "Close"
-msgstr "Bağla"
-
-msgid "< &Previous"
-msgstr "< Öncəki"
-
-msgid "&Next >"
-msgstr "&Sonrakı >"
-
 msgid "Create new translations project"
 msgstr "Yeni tərcümə layihəsi hazırlayın"
 
@@ -1199,6 +1356,12 @@ msgstr "&Aç..."
 msgid "Open Recent"
 msgstr "Son İstifadə Edilənləri Açın"
 
+msgid "Open from Crowdin..."
+msgstr ""
+
+msgid "Open From Crowdin..."
+msgstr "Crowdin-dən Aç..."
+
 msgid "&Save"
 msgstr "&Qeyd et"
 
@@ -1247,14 +1410,17 @@ msgstr "&Parametrləri Göstər"
 msgid "&Find..."
 msgstr "&Tap..."
 
+msgid "Replace..."
+msgstr ""
+
 msgid "Find next"
 msgstr "Sonrakını tapın"
 
 msgid "Find previous"
 msgstr "Öncəkini tapın"
 
-msgid "Find"
-msgstr "Tap"
+msgid "Find and Replace..."
+msgstr "Tap və Dəyişdir..."
 
 msgid "Find Next"
 msgstr "Sonrakını Tapın"
@@ -1295,6 +1461,12 @@ msgstr "&Kontekstə görə qrup"
 msgid "&Group By Context"
 msgstr "&Kontekstə Görə Qrup"
 
+msgid "Entries with errors first"
+msgstr "Əvvəlcə xətalı olan yazılar"
+
+msgid "Entries with Errors First"
+msgstr "Əvvəlcə Xətalı Olan Yazılar"
+
 msgid "&Untranslated entries first"
 msgstr "&Tərcümə edilməmiş yazılar ən üstdə görünsün"
 
@@ -1304,6 +1476,9 @@ msgstr "&Tərcümə Edilməmiş Yazılar Ən Üstdə Görünsün"
 msgid "Show sidebar"
 msgstr "Yan menyunu göstər"
 
+msgid "Show status bar"
+msgstr ""
+
 msgid "C&atalog"
 msgstr "K&ataloq"
 
@@ -1319,6 +1494,9 @@ msgstr "&POT Fayldan yenilə..."
 msgid "Update from &POT File..."
 msgstr "&POT Fayldan Yenilə..."
 
+msgid "Sync with Crowdin"
+msgstr "Crowdin ilə tutuşdurun"
+
 msgid "Fill missing translations from &TM..."
 msgstr "Əksik tərcümələri &TY-dan doldurun..."
 
@@ -1398,7 +1576,7 @@ msgid "Invocation:"
 msgstr "Çağrış:"
 
 msgid "Command to extract translations:"
-msgstr ""
+msgstr "Tərcümələri çıxarmaq üçün əmr:"
 
 msgid ""
 "This is the command used to launch the extractor.\n"
@@ -1443,6 +1621,9 @@ msgstr ""
 msgid "Catalog properties"
 msgstr "Kataloq xüsusiyyətləri"
 
+msgid "Project name and version:"
+msgstr "Layihənin adı və versiyası:"
+
 msgid "Plural Forms:"
 msgstr "Cəm Formatları:"
 
@@ -1455,17 +1636,29 @@ msgstr "Özəl ifadədən istifadə edilsin"
 msgid "Learn about plural forms"
 msgstr "Cəm formatları öyrənin"
 
+msgid "Charset:"
+msgstr "Kodlaşdırma:"
+
+msgid "Team:"
+msgstr "Komanda:"
+
+msgid "Team's email address:"
+msgstr "Komandanın e-poçt ünvanı:"
+
 msgid "Translation properties"
 msgstr "Tərcümə xüsusiyyətləri"
 
+msgid "Sources paths"
+msgstr "Mənbə yolları"
+
 msgid "Extract text from source files in the following directories:"
 msgstr "Mənbə fayllarındakı mətnləri bu direktoriyaya çıxart:"
 
 msgid "Base path:"
 msgstr "Əsas yol:"
 
-msgid "Sources paths"
-msgstr "Mənbə yolları"
+msgid "Sources keywords"
+msgstr "Mənbə açar kəlmələri"
 
 msgid ""
 "Use these keywords (function names) to recognize translatable strings\n"
@@ -1477,9 +1670,6 @@ msgstr ""
 msgid "Learn about gettext keywords"
 msgstr "Gettext açar kəlmələrindən öyrənilsin"
 
-msgid "Sources keywords"
-msgstr "Mənbə açar kəlmələri"
-
 msgid "Update summary"
 msgstr "Yenilənmənin nəticəsi"
 
@@ -1525,7 +1715,7 @@ msgstr "Kataloqu yenilə - mənbə ilə sinxronlaşdır"
 msgid "Toggled if selected string has fuzzy translation"
 msgstr "Seçilən sətrin qeyri-səlis tərcümə statusunu dəyişdirir"
 
-msgid "Show or hide the sidebar."
+msgid "Show or hide the sidebar"
 msgstr ""
 
 #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer.
@@ -1537,6 +1727,9 @@ msgid ""
 "translation corresponds to."
 msgstr ""
 
+msgid "Notes for translators:"
+msgstr "Tərcüməçilər üçün qeydlər:"
+
 msgid "Add comment"
 msgstr "Şərh əlavə et"
 
@@ -1618,15 +1811,24 @@ msgstr "Tərcüməni redaktə et"
 msgid "Open an existing PO file and edit the translation."
 msgstr "Mövcud olan bir PO faylını açaraq tərcüməni redaktə edin."
 
-msgid "Create new translation"
-msgstr "Yeni bir tərcümə hazırlayın"
-
 msgid ""
 "Take an existing PO file or POT template and create a new translation from "
 "it."
 msgstr ""
 "Mövcud olan bir PO faylı ya da POT qəlibindən yeni bir tərcümə yaradın."
 
+msgid "Collaborate on a translation with Crowdin"
+msgstr "Crowdin ilə bir tərcümə üzərində ortaq çalış"
+
+msgid ""
+"Download a file from Crowdin project, translate and sync your changes back."
+msgstr ""
+"Crowdin layihəsindən bir fayl endirin, tərcümə edin və təkrar "
+"dəyişikliklərinizi tutuşdurun."
+
+msgid "What is Crowdin?"
+msgstr "Crowdin nədir?"
+
 msgid "There are no translations. That’s unusual."
 msgstr "Orada heç bir tərcümə yoxdur. Bu qeyri-adi bir şeydir."
 
@@ -1664,3 +1866,9 @@ msgstr "Mənbələrdən alınsın"
 
 msgid "Configure source code extraction in Properties."
 msgstr "Xüsusiyyətlər bölməsindən mənbə koddan almağı konfiqurasiya edin."
+
+msgid "Sync"
+msgstr "Ttutşdur"
+
+msgid "Synchronize the translation with Crowdin"
+msgstr "Tərcüməni Crowdin ilə tutuşdur"
diff --git a/locales/be.mo b/locales/be.mo
index ea991aa..cca0166 100644
Binary files a/locales/be.mo and b/locales/be.mo differ
diff --git a/locales/be.po b/locales/be.po
index d893f97..08a549c 100644
--- a/locales/be.po
+++ b/locales/be.po
@@ -2,8 +2,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: poedit\n"
 "Report-Msgid-Bugs-To: help at poedit.net\n"
-"POT-Creation-Date: 2015-01-10 16:00+0100\n"
-"PO-Revision-Date: 2015-03-10 12:33-0400\n"
+"POT-Creation-Date: 2015-05-27 11:31+0200\n"
+"PO-Revision-Date: 2015-05-27 05:17-0400\n"
 "Last-Translator: vslavik <vaclav at slavik.io>\n"
 "Language-Team: Belarusian\n"
 "Language: be_BY\n"
@@ -85,6 +85,15 @@ msgstr ""
 msgid "Error saving catalog"
 msgstr "Памылка захавання каталога"
 
+msgid "PO Translation Files"
+msgstr ""
+
+msgid "POT Translation Templates"
+msgstr ""
+
+msgid "All Translation Files"
+msgstr ""
+
 msgid "Merging differences..."
 msgstr "Злучэнне адрозненняў..."
 
@@ -104,9 +113,86 @@ msgstr "Вылучэнне мовы"
 msgid "You must restart Poedit for this change to take effect."
 msgstr "Вы мусіце перазапусціць Poedit каб змяненні набылі моц."
 
-msgid "&Copy"
+msgid "Downloading translations is disabled in this project."
+msgstr ""
+
+msgid "Not authorized, please sign in again."
+msgstr ""
+
+msgid "Sign in to Crowdin"
+msgstr ""
+
+msgid ""
+"Crowdin is an online localization management platform and collaborative "
+"translation tool. Poedit can seamlessly sync PO files managed at Crowdin."
+msgstr ""
+
+msgid "Sign In"
+msgstr ""
+
+msgid "Sign in"
+msgstr "Увайсці"
+
+msgid "Sign Out"
+msgstr "Выйсці"
+
+msgid "Sign out"
+msgstr ""
+
+msgid "Waiting for authentication…"
+msgstr ""
+
+msgid "Updating user information…"
+msgstr ""
+
+msgid "Signed in as:"
+msgstr ""
+
+msgid "Learn More About Crowdin"
+msgstr ""
+
+msgid "Learn more about Crowdin"
+msgstr ""
+
+msgid "Open Crowdin translation"
+msgstr ""
+
+msgid "Project:"
+msgstr "Праект:"
+
+msgid "Language:"
+msgstr "Мова:"
+
+msgid "File:"
+msgstr "Файл:"
+
+msgid "No translation projects listed in your Crowdin account."
+msgstr ""
+
+msgid "This project has no files that can be translated in Poedit."
+msgstr ""
+
+msgid "This file can only be edited in Crowdin’s web interface."
+msgstr ""
+
+msgid "Downloading latest translations…"
+msgstr ""
+
+msgid "Syncing with Crowdin"
+msgstr ""
+
+msgid "Syncing with Crowdin failed."
+msgstr ""
+
+msgid "Crowdin error"
+msgstr ""
+
+msgid "Uploading translations…"
 msgstr ""
 
+msgid "&Copy"
+msgstr "&Капіяваць"
+
 msgid "Learn more"
 msgstr ""
 
@@ -148,6 +234,12 @@ msgstr ""
 msgid "don't delete temporary files (for debugging)"
 msgstr ""
 
+msgid "handle a poedit:// URI"
+msgstr ""
+
+msgid "Failed to communicate with Poedit process."
+msgstr ""
+
 #, c-format
 msgid "Unhandled exception occurred: %s"
 msgstr ""
@@ -158,12 +250,6 @@ msgstr ""
 msgid "Open catalog"
 msgstr "Адчыніць каталог"
 
-msgid "All Files"
-msgstr ""
-
-msgid "PO Translation Files"
-msgstr ""
-
 #, c-format
 msgid "File '%s' doesn't exist."
 msgstr "Файл '%s' не існуе."
@@ -172,13 +258,13 @@ msgstr "Файл '%s' не існуе."
 #. ("Poedit" here, but please use "%s")
 #, c-format
 msgid "About %s"
-msgstr ""
+msgstr "Пра %s"
 
 #. TRANSLATORS: This is version information in about dialog, "%s" will be
 #. version number when used
 #, c-format
 msgid "Version %s"
-msgstr ""
+msgstr "Версія %s"
 
 msgid "Poedit is an easy to use translations editor."
 msgstr ""
@@ -271,13 +357,13 @@ msgid "Enter Full Screen"
 msgstr ""
 
 msgid "Window"
-msgstr ""
+msgstr "Акно"
 
 msgid "Minimize"
-msgstr ""
+msgstr "Згарнуць"
 
 msgid "Zoom"
-msgstr ""
+msgstr "Маштаб"
 
 msgid "Bring All to Front"
 msgstr ""
@@ -314,7 +400,7 @@ msgid "&Paste"
 msgstr ""
 
 msgid "Paste"
-msgstr ""
+msgstr "Уставіць"
 
 msgid "&Delete"
 msgstr ""
@@ -323,7 +409,7 @@ msgid "Select &All"
 msgstr ""
 
 msgid "Select All"
-msgstr ""
+msgstr "Вылучыць усё"
 
 #. TRANSLATORS: Keyboard shortcut for display in Windows menus
 #. TRANSLATORS: This is the key shortcut used in menus on Windows, some languages call them differently
@@ -345,11 +431,11 @@ msgstr ""
 
 #. TRANSLATORS: Keyboard shortcut for display in Windows menus
 msgid "Up"
-msgstr ""
+msgstr "Угару"
 
 #. TRANSLATORS: Keyboard shortcut for display in Windows menus
 msgid "Down"
-msgstr ""
+msgstr "Уніз"
 
 #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+"
 msgid "ctrl"
@@ -380,7 +466,7 @@ msgid "&Go"
 msgstr ""
 
 msgid "Source text:"
-msgstr ""
+msgstr "Зыходны тэкст:"
 
 msgid "Singular:"
 msgstr "Адзіночны:"
@@ -389,6 +475,17 @@ msgid "Plural:"
 msgstr "Множны:"
 
 msgid "Translation:"
+msgstr "Пераклад:"
+
+msgid ""
+"POT files are only templates and don’t contain any translations themselves.\n"
+"To make a translation, create a new PO file based on the template."
+msgstr ""
+
+msgid "Create New Translation"
+msgstr ""
+
+msgid "Create new translation"
 msgstr ""
 
 #. TRANSLATORS: %s is language name in its basic form (as you
@@ -400,7 +497,7 @@ msgid ""
 msgstr ""
 
 msgid "Install"
-msgstr ""
+msgstr "Усталяваць"
 
 msgid "Catalog modified. Do you want to save changes?"
 msgstr "Каталог зменены. Вы жадаеце захаваць змяненні?"
@@ -412,7 +509,7 @@ msgid "Your changes will be lost if you don't save them."
 msgstr ""
 
 msgid "Save"
-msgstr ""
+msgstr "Захаваць"
 
 msgid "Don't save"
 msgstr ""
@@ -438,9 +535,6 @@ msgstr ""
 msgid "Open catalog template"
 msgstr "Адчыніць узор каталога"
 
-msgid "POT Translation Templates"
-msgstr ""
-
 msgid "Updating catalog"
 msgstr ""
 
@@ -511,16 +605,18 @@ msgstr[2] ""
 msgid "The translation is ready for use."
 msgstr ""
 
-msgid "No references to this string found."
-msgstr "Не знойдзены спасылкі на гэты радок."
-
-msgid "Please choose the reference you want to show:"
-msgstr "Выберыце, калі ласка, спасылку, якую вы хочаце пабачыць:"
+msgid "Context:"
+msgstr "Кантэкст:"
 
-msgid "References"
-msgstr "Спасылкі"
+#, c-format
+msgid "Poedit automatically fixed invalid content in the file “%s”."
+msgstr ""
 
-msgid "Context:"
+msgid ""
+"The file contained duplicate items, which is not allowed in PO files and "
+"would prevent the file from being used. Poedit fixed the issue, but you "
+"should review translations of any items marked as fuzzy and correct them if "
+"necessary."
 msgstr ""
 
 msgid "Language of the translation isn't set."
@@ -532,6 +628,21 @@ msgstr ""
 msgid "Set language"
 msgstr ""
 
+#. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)."
+msgid ""
+"Suggestions are not available if the translation language is not set "
+"correctly. Other features, such as plural forms, may be affected as well."
+msgstr ""
+
+msgid "Language of the translation is the same as source language."
+msgstr ""
+
+msgid "Fix Language"
+msgstr ""
+
+msgid "Fix language"
+msgstr ""
+
 msgid ""
 "This catalog has entries with plural forms, but doesn't have Plural-Forms "
 "header configured."
@@ -562,6 +673,7 @@ msgstr ""
 msgid "Plural forms expression used by the catalog is unusual for %s."
 msgstr ""
 
+#. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the catalog is unusual for %s.")"
 msgid "Review"
 msgstr ""
 
@@ -584,6 +696,13 @@ msgstr[0] ""
 msgstr[1] ""
 msgstr[2] ""
 
+#, c-format
+msgid "%d entry"
+msgid_plural "%d entries"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+
 msgid " (unsaved)"
 msgstr ""
 
@@ -635,7 +754,7 @@ msgid ""
 msgstr ""
 
 msgid "Fill"
-msgstr ""
+msgstr "Запоўніць"
 
 #, c-format
 msgid "%d entry was filled from the translation memory."
@@ -687,7 +806,7 @@ msgid "Edit comment"
 msgstr "Рэдагаваць каментар"
 
 msgid "Edit Comment"
-msgstr ""
+msgstr "Рэдагаваць каментар"
 
 msgid "References:"
 msgstr "Спасылкі:"
@@ -699,6 +818,9 @@ msgstr ""
 msgid "Form %i"
 msgstr ""
 
+msgid "Singular"
+msgstr "Адзіночны"
+
 msgid "Zero"
 msgstr ""
 
@@ -708,11 +830,14 @@ msgstr ""
 msgid "Two"
 msgstr ""
 
+msgid "Plural"
+msgstr "Множны"
+
 msgid "Other"
-msgstr ""
+msgstr "Iншае"
 
 msgid "&Bookmarks"
-msgstr ""
+msgstr "&Закладкі"
 
 #, c-format
 msgid "Set bookmark %i"
@@ -731,18 +856,28 @@ msgid "Go to Bookmark %i"
 msgstr ""
 
 msgid "Hide Sidebar"
-msgstr ""
+msgstr "Схаваць Бакавую панэль"
 
 msgid "Show Sidebar"
+msgstr "Паказаць Бакавую панэль"
+
+msgid "Hide Status Bar"
+msgstr "Схаваць радок стану"
+
+msgid "Show Status Bar"
 msgstr ""
 
 msgid "Source text"
-msgstr ""
+msgstr "Зыходны тэкст"
 
 msgid "Translation"
 msgstr "Пераклад"
 
 msgid "ID"
+msgstr "ID"
+
+#, c-format
+msgid "Source text — %s"
 msgstr ""
 
 msgid "unknown language"
@@ -753,59 +888,75 @@ msgid "Translation — %s"
 msgstr ""
 
 msgid "Error:"
+msgstr "Памылка:"
+
+msgid "Source file"
+msgstr "Зыходны файл"
+
+msgid "Source file occurrence:"
 msgstr ""
 
-msgid "Project info"
-msgstr "Звесткі аб праекце"
+msgid "Open in Editor"
+msgstr ""
 
-msgid "Project name and version:"
-msgstr "Назва і версія праекта:"
+msgid "Open in editor"
+msgstr ""
 
-msgid "Language:"
-msgstr "Мова:"
+msgid "No references for the selected item."
+msgstr ""
 
-msgid "Team:"
-msgstr "Каманда:"
+#, c-format
+msgid "Error opening file %s!"
+msgstr "Памылка адчынення файла %s!"
 
-msgid "Team's email address:"
-msgstr "Э-паштовы адрас каманды:"
+msgid "Find"
+msgstr "Знайсці"
 
-msgid "Charset:"
-msgstr "Сукупнасць знакаў:"
+msgid "Replace"
+msgstr "Замяніць"
+
+#. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.)
+msgid "Options"
+msgstr "Налады"
 
-msgid "Source"
+msgid "Ignore case"
 msgstr ""
 
-msgid "Notes"
-msgstr "Заўвагі"
+msgid "Wrap around"
+msgstr ""
 
-msgid "Automatic translation"
-msgstr "Самастойны пераклад"
+msgid "Whole words only"
+msgstr ""
 
-msgid "Fuzzy translation"
-msgstr "Цьмяны пераклад"
+msgid "Find in source texts"
+msgstr ""
 
-msgid "Notes for translators:"
+msgid "Find in translations"
 msgstr ""
 
-msgid "Comment:"
-msgstr "Каментар:"
+msgid "Find in comments"
+msgstr "Шукаць у перакладах"
 
-msgid "Source file"
-msgstr "Зыходны файл"
+msgid "Close"
+msgstr "Закрыць"
 
-msgid "Source file occurrence:"
+msgid "Replace All"
 msgstr ""
 
-msgid "Open in Editor"
+msgid "Replace all"
 msgstr ""
 
-msgid "Open in editor"
+msgid "< &Previous"
 msgstr ""
 
-#, c-format
-msgid "Error opening file %s!"
-msgstr "Памылка адчынення файла %s!"
+msgid "&Next >"
+msgstr ""
+
+msgid "String to find"
+msgstr ""
+
+msgid "Replacement string"
+msgstr ""
 
 #, c-format
 msgid "Cannot execute program: %s"
@@ -924,7 +1075,7 @@ msgid "(requires Windows 8 or newer)"
 msgstr ""
 
 msgid "General"
-msgstr ""
+msgstr "Асноўныя"
 
 msgid "Use translation memory"
 msgstr ""
@@ -937,7 +1088,7 @@ msgstr ""
 
 #. TRANSLATORS: This is a button that deletes everything in the translation memory (i.e. clears/resets it).
 msgid "Reset"
-msgstr ""
+msgstr "Скінуць"
 
 msgid "Consult TM when updating from sources"
 msgstr ""
@@ -998,9 +1149,19 @@ msgstr "Новы"
 msgid "Edit"
 msgstr "Праўка"
 
+msgid "Delete extractor"
+msgstr ""
+
+#, c-format
+msgid "Are you sure you want to delete the “%s” extractor?"
+msgstr ""
+
 msgid "Extractors"
 msgstr ""
 
+msgid "Accounts"
+msgstr ""
+
 msgid "Automatically check for updates"
 msgstr ""
 
@@ -1037,9 +1198,36 @@ msgid "Preserve formatting of existing files"
 msgstr ""
 
 msgid "Advanced"
+msgstr "Пашыраныя налады"
+
+msgid ""
+"<big>Drag and Drop Folders Here</big>\n"
+"\n"
+"or use the + button"
 msgstr ""
 
-msgid "Additional keywords"
+msgid ""
+"<big>Drag and drop folders here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+
+msgid "Add Folders..."
+msgstr ""
+
+msgid "Add folders..."
+msgstr ""
+
+msgid "Add Files..."
+msgstr ""
+
+msgid "Add files..."
+msgstr ""
+
+msgid "Add Wildcard..."
+msgstr ""
+
+msgid "Add wildcard..."
 msgstr ""
 
 msgid "Paths"
@@ -1048,6 +1236,9 @@ msgstr "Шляхі"
 msgid "Excluded paths"
 msgstr ""
 
+msgid "Additional keywords"
+msgstr ""
+
 msgid "Name of the project the translation is for"
 msgstr ""
 
@@ -1060,6 +1251,9 @@ msgstr ""
 msgid "Please save the file first. This section cannot be edited until then."
 msgstr ""
 
+msgid "Comment:"
+msgstr "Каментар:"
+
 msgid "OK"
 msgstr "Добра"
 
@@ -1069,42 +1263,6 @@ msgstr ""
 msgid "Clear the comment"
 msgstr "Ачысціць каментар"
 
-msgid "Find..."
-msgstr "Знайсці..."
-
-msgid "String to find:"
-msgstr "Радок для пошуку:"
-
-msgid "Case sensitive"
-msgstr "Адрозніваць вялікія/малыя літары"
-
-msgid "Start from the first item"
-msgstr "Пачаць з першай адзінкі"
-
-msgid "Whole words only"
-msgstr ""
-
-msgid "Find in original strings"
-msgstr "Шукаць у першапачатковых радках"
-
-msgid "Find in translations"
-msgstr ""
-
-msgid "Find in comments"
-msgstr "Шукаць у перакладах"
-
-msgid "Find in automatic comments"
-msgstr "Шукаць у самаствораных каментарах"
-
-msgid "Close"
-msgstr ""
-
-msgid "< &Previous"
-msgstr ""
-
-msgid "&Next >"
-msgstr ""
-
 msgid "Create new translations project"
 msgstr "Стварыць новы праект перакладу"
 
@@ -1115,7 +1273,7 @@ msgid "Delete the project"
 msgstr "Выдаліць праект"
 
 msgid "Update all"
-msgstr ""
+msgstr "Абнавіць усё"
 
 msgid "Update all catalogs in the project"
 msgstr "Абнавіць усе каталогі праекта"
@@ -1159,6 +1317,12 @@ msgstr ""
 msgid "Open Recent"
 msgstr ""
 
+msgid "Open from Crowdin..."
+msgstr ""
+
+msgid "Open From Crowdin..."
+msgstr ""
+
 msgid "&Save"
 msgstr "&Захаваць"
 
@@ -1207,13 +1371,16 @@ msgstr ""
 msgid "&Find..."
 msgstr "&Знайсці..."
 
-msgid "Find next"
+msgid "Replace..."
 msgstr ""
 
+msgid "Find next"
+msgstr "Знайсці нiжэй"
+
 msgid "Find previous"
-msgstr ""
+msgstr "Знайсці вышэй"
 
-msgid "Find"
+msgid "Find and Replace..."
 msgstr ""
 
 msgid "Find Next"
@@ -1255,6 +1422,12 @@ msgstr ""
 msgid "&Group By Context"
 msgstr ""
 
+msgid "Entries with errors first"
+msgstr ""
+
+msgid "Entries with Errors First"
+msgstr ""
+
 msgid "&Untranslated entries first"
 msgstr ""
 
@@ -1264,6 +1437,9 @@ msgstr ""
 msgid "Show sidebar"
 msgstr ""
 
+msgid "Show status bar"
+msgstr ""
+
 msgid "C&atalog"
 msgstr "К&аталог"
 
@@ -1271,12 +1447,15 @@ msgid "&Update from sources"
 msgstr "&Абнавіць з зыходнікаў"
 
 msgid "&Update from Sources"
-msgstr ""
+msgstr "&Абнавіць з зыходнікаў"
 
 msgid "Update from &POT file..."
 msgstr "Абнавіць з файла &POT..."
 
 msgid "Update from &POT File..."
+msgstr "Абнавіць з файла &POT..."
+
+msgid "Sync with Crowdin"
 msgstr ""
 
 msgid "Fill missing translations from &TM..."
@@ -1402,6 +1581,9 @@ msgstr ""
 msgid "Catalog properties"
 msgstr ""
 
+msgid "Project name and version:"
+msgstr "Назва і версія праекта:"
+
 msgid "Plural Forms:"
 msgstr "Множныя Формы:"
 
@@ -1414,16 +1596,28 @@ msgstr ""
 msgid "Learn about plural forms"
 msgstr ""
 
+msgid "Charset:"
+msgstr "Сукупнасць знакаў:"
+
+msgid "Team:"
+msgstr "Каманда:"
+
+msgid "Team's email address:"
+msgstr "Э-паштовы адрас каманды:"
+
 msgid "Translation properties"
 msgstr ""
 
+msgid "Sources paths"
+msgstr ""
+
 msgid "Extract text from source files in the following directories:"
 msgstr ""
 
 msgid "Base path:"
 msgstr "Базавы шлях:"
 
-msgid "Sources paths"
+msgid "Sources keywords"
 msgstr ""
 
 msgid ""
@@ -1434,9 +1628,6 @@ msgstr ""
 msgid "Learn about gettext keywords"
 msgstr ""
 
-msgid "Sources keywords"
-msgstr ""
-
 msgid "Update summary"
 msgstr "Абнавіць зводку"
 
@@ -1464,7 +1655,7 @@ msgid "(0 new, 0 obsolete)"
 msgstr "(0 новых, 0 састарэлых)"
 
 msgid "Open"
-msgstr ""
+msgstr "Адчыніць"
 
 msgid "Save catalog"
 msgstr "Захаваць каталог"
@@ -1476,7 +1667,7 @@ msgid "Check for errors in the translation"
 msgstr ""
 
 msgid "Update"
-msgstr ""
+msgstr "Абнавіць"
 
 msgid "Update catalog - synchronize it with sources"
 msgstr "Абнавіць каталог - сінхранізаваць яго з зыходнікамі"
@@ -1484,7 +1675,7 @@ msgstr "Абнавіць каталог - сінхранізаваць яго з
 msgid "Toggled if selected string has fuzzy translation"
 msgstr "Уключана, калі вылучаны радок мае цьмяны пераклад"
 
-msgid "Show or hide the sidebar."
+msgid "Show or hide the sidebar"
 msgstr ""
 
 #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer.
@@ -1496,6 +1687,9 @@ msgid ""
 "translation corresponds to."
 msgstr ""
 
+msgid "Notes for translators:"
+msgstr ""
+
 msgid "Add comment"
 msgstr ""
 
@@ -1568,14 +1762,21 @@ msgstr ""
 msgid "Open an existing PO file and edit the translation."
 msgstr ""
 
-msgid "Create new translation"
-msgstr ""
-
 msgid ""
 "Take an existing PO file or POT template and create a new translation from "
 "it."
 msgstr ""
 
+msgid "Collaborate on a translation with Crowdin"
+msgstr ""
+
+msgid ""
+"Download a file from Crowdin project, translate and sync your changes back."
+msgstr ""
+
+msgid "What is Crowdin?"
+msgstr ""
+
 msgid "There are no translations. That’s unusual."
 msgstr ""
 
@@ -1608,3 +1809,9 @@ msgstr ""
 
 msgid "Configure source code extraction in Properties."
 msgstr ""
+
+msgid "Sync"
+msgstr "Сінхранізацыя"
+
+msgid "Synchronize the translation with Crowdin"
+msgstr ""
diff --git a/locales/be at latin.mo b/locales/be at latin.mo
index fa0f9da..c90cb4a 100644
Binary files a/locales/be at latin.mo and b/locales/be at latin.mo differ
diff --git a/locales/be at latin.po b/locales/be at latin.po
index 0e58e67..891ad92 100644
--- a/locales/be at latin.po
+++ b/locales/be at latin.po
@@ -4,7 +4,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Poedit 1.6\n"
 "Report-Msgid-Bugs-To: help at poedit.net\n"
-"POT-Creation-Date: 2015-01-10 16:00+0100\n"
+"POT-Creation-Date: 2015-05-27 11:31+0200\n"
 "PO-Revision-Date: 2008-03-03 14:41+0200\n"
 "Last-Translator: Alaksandar Navicki <zolak at lacinka.org>\n"
 "Language-Team: \n"
@@ -89,6 +89,17 @@ msgstr ""
 msgid "Error saving catalog"
 msgstr "Pamyłka pry zapisie katalohu"
 
+#, fuzzy
+msgid "PO Translation Files"
+msgstr "Pamiać pierakładaŭ"
+
+#, fuzzy
+msgid "POT Translation Templates"
+msgstr "Pamiać pierakładaŭ"
+
+msgid "All Translation Files"
+msgstr ""
+
 msgid "Merging differences..."
 msgstr "Spałučeńnie roźnic..."
 
@@ -108,6 +119,83 @@ msgstr "Vybar movy"
 msgid "You must restart Poedit for this change to take effect."
 msgstr "Kab źmieny byli zachavanyja, treba ŭruchomić prahramu Poedit znoŭ."
 
+msgid "Downloading translations is disabled in this project."
+msgstr ""
+
+msgid "Not authorized, please sign in again."
+msgstr ""
+
+msgid "Sign in to Crowdin"
+msgstr ""
+
+msgid ""
+"Crowdin is an online localization management platform and collaborative "
+"translation tool. Poedit can seamlessly sync PO files managed at Crowdin."
+msgstr ""
+
+msgid "Sign In"
+msgstr ""
+
+msgid "Sign in"
+msgstr ""
+
+msgid "Sign Out"
+msgstr ""
+
+msgid "Sign out"
+msgstr ""
+
+msgid "Waiting for authentication…"
+msgstr ""
+
+msgid "Updating user information…"
+msgstr ""
+
+msgid "Signed in as:"
+msgstr ""
+
+msgid "Learn More About Crowdin"
+msgstr ""
+
+msgid "Learn more about Crowdin"
+msgstr ""
+
+msgid "Open Crowdin translation"
+msgstr ""
+
+msgid "Project:"
+msgstr ""
+
+msgid "Language:"
+msgstr "Mova:"
+
+msgid "File:"
+msgstr ""
+
+msgid "No translation projects listed in your Crowdin account."
+msgstr ""
+
+msgid "This project has no files that can be translated in Poedit."
+msgstr ""
+
+msgid "This file can only be edited in Crowdin’s web interface."
+msgstr ""
+
+msgid "Downloading latest translations…"
+msgstr ""
+
+msgid "Syncing with Crowdin"
+msgstr ""
+
+msgid "Syncing with Crowdin failed."
+msgstr ""
+
+msgid "Crowdin error"
+msgstr ""
+
+msgid "Uploading translations…"
+msgstr ""
+
 msgid "&Copy"
 msgstr ""
 
@@ -153,6 +241,12 @@ msgstr ""
 msgid "don't delete temporary files (for debugging)"
 msgstr ""
 
+msgid "handle a poedit:// URI"
+msgstr ""
+
+msgid "Failed to communicate with Poedit process."
+msgstr ""
+
 #, c-format
 msgid "Unhandled exception occurred: %s"
 msgstr ""
@@ -163,14 +257,6 @@ msgstr ""
 msgid "Open catalog"
 msgstr "Adčyni kataloh"
 
-#, fuzzy
-msgid "All Files"
-msgstr "Dadaj fajły"
-
-#, fuzzy
-msgid "PO Translation Files"
-msgstr "Pamiać pierakładaŭ"
-
 #, c-format
 msgid "File '%s' doesn't exist."
 msgstr "Fajł '%s' nie isnuje."
@@ -406,6 +492,18 @@ msgstr "Množny lik:"
 msgid "Translation:"
 msgstr "Pierakład"
 
+msgid ""
+"POT files are only templates and don’t contain any translations themselves.\n"
+"To make a translation, create a new PO file based on the template."
+msgstr ""
+
+msgid "Create New Translation"
+msgstr ""
+
+#, fuzzy
+msgid "Create new translation"
+msgstr "Stvary novy prajekt pierakładaŭ"
+
 #. TRANSLATORS: %s is language name in its basic form (as you
 #. would see e.g. in a list of supported languages). You may need
 #. to rephrase it, e.g. to an equivalent of "for language %s".
@@ -455,10 +553,6 @@ msgid "Open catalog template"
 msgstr "Adčyni šablon katalohu"
 
 #, fuzzy
-msgid "POT Translation Templates"
-msgstr "Pamiać pierakładaŭ"
-
-#, fuzzy
 msgid "Updating catalog"
 msgstr "Aktualizacyja katalohu..."
 
@@ -537,19 +631,21 @@ msgstr[2] "Pierakład &sumniŭny"
 msgid "The translation is ready for use."
 msgstr "Pierakład &sumniŭny"
 
-msgid "No references to this string found."
-msgstr "Spasyłak da hetaj frazy nia znojdziena."
-
-msgid "Please choose the reference you want to show:"
-msgstr "Abiary spasyłku, jakuju ty chočaš pakazać:"
-
-msgid "References"
-msgstr "Spasyłki"
-
 #, fuzzy
 msgid "Context:"
 msgstr "Kryničny fajł"
 
+#, c-format
+msgid "Poedit automatically fixed invalid content in the file “%s”."
+msgstr ""
+
+msgid ""
+"The file contained duplicate items, which is not allowed in PO files and "
+"would prevent the file from being used. Poedit fixed the issue, but you "
+"should review translations of any items marked as fuzzy and correct them if "
+"necessary."
+msgstr ""
+
 msgid "Language of the translation isn't set."
 msgstr ""
 
@@ -561,6 +657,21 @@ msgstr "Abiary movu"
 msgid "Set language"
 msgstr "Abiary movu"
 
+#. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)."
+msgid ""
+"Suggestions are not available if the translation language is not set "
+"correctly. Other features, such as plural forms, may be affected as well."
+msgstr ""
+
+msgid "Language of the translation is the same as source language."
+msgstr ""
+
+msgid "Fix Language"
+msgstr ""
+
+msgid "Fix language"
+msgstr ""
+
 msgid ""
 "This catalog has entries with plural forms, but doesn't have Plural-Forms "
 "header configured."
@@ -591,6 +702,7 @@ msgstr ""
 msgid "Plural forms expression used by the catalog is unusual for %s."
 msgstr ""
 
+#. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the catalog is unusual for %s.")"
 msgid "Review"
 msgstr ""
 
@@ -613,6 +725,13 @@ msgstr[0] ""
 msgstr[1] ""
 msgstr[2] ""
 
+#, c-format
+msgid "%d entry"
+msgid_plural "%d entries"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+
 msgid " (unsaved)"
 msgstr ""
 
@@ -739,6 +858,9 @@ msgstr ""
 msgid "Form %i"
 msgstr "Forma %i"
 
+msgid "Singular"
+msgstr ""
+
 msgid "Zero"
 msgstr ""
 
@@ -748,6 +870,9 @@ msgstr ""
 msgid "Two"
 msgstr ""
 
+msgid "Plural"
+msgstr ""
+
 msgid "Other"
 msgstr ""
 
@@ -776,6 +901,12 @@ msgstr ""
 msgid "Show Sidebar"
 msgstr ""
 
+msgid "Hide Status Bar"
+msgstr ""
+
+msgid "Show Status Bar"
+msgstr ""
+
 #, fuzzy
 msgid "Source text"
 msgstr "Kryničny fajł"
@@ -786,6 +917,10 @@ msgstr "Pierakład"
 msgid "ID"
 msgstr ""
 
+#, c-format
+msgid "Source text — %s"
+msgstr ""
+
 msgid "unknown language"
 msgstr ""
 
@@ -796,62 +931,81 @@ msgstr "Pierakład"
 msgid "Error:"
 msgstr ""
 
-msgid "Project info"
-msgstr "Pra prajekt"
+msgid "Source file"
+msgstr "Kryničny fajł"
 
-msgid "Project name and version:"
-msgstr "Nazva prajektu i versija:"
+#, fuzzy
+msgid "Source file occurrence:"
+msgstr "Kryničny fajł"
 
-msgid "Language:"
-msgstr "Mova:"
+#, fuzzy
+msgid "Open in Editor"
+msgstr "Redaktar"
 
-msgid "Team:"
-msgstr "Supołka:"
+#, fuzzy
+msgid "Open in editor"
+msgstr "Redaktar"
 
-msgid "Team's email address:"
-msgstr "Adras email supołki:"
+msgid "No references for the selected item."
+msgstr ""
 
-msgid "Charset:"
-msgstr "Nabor znakaŭ:"
+#, c-format
+msgid "Error opening file %s!"
+msgstr "Pamyłka pry adčynieńni fajłu %s!"
 
 #, fuzzy
-msgid "Source"
-msgstr "Kryničny fajł"
+msgid "Find"
+msgstr "Znajdzi..."
 
-msgid "Notes"
-msgstr "Natatki"
+msgid "Replace"
+msgstr ""
 
-msgid "Automatic translation"
-msgstr "Aŭtamatyčny pierakład"
+#. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.)
+msgid "Options"
+msgstr ""
 
-msgid "Fuzzy translation"
-msgstr "Sumniŭny pierakład"
+msgid "Ignore case"
+msgstr ""
 
-#, fuzzy
-msgid "Notes for translators:"
-msgstr "Aŭtamatyčnyja pierakłady:"
+msgid "Wrap around"
+msgstr ""
 
-msgid "Comment:"
-msgstr "Kamentar:"
+msgid "Whole words only"
+msgstr "Tolki cełyja słovy"
 
-msgid "Source file"
-msgstr "Kryničny fajł"
+msgid "Find in source texts"
+msgstr ""
 
 #, fuzzy
-msgid "Source file occurrence:"
-msgstr "Kryničny fajł"
+msgid "Find in translations"
+msgstr "Pierakład"
+
+msgid "Find in comments"
+msgstr "Znajdzi ŭ kamentaroch"
 
 #, fuzzy
-msgid "Open in Editor"
-msgstr "Redaktar"
+msgid "Close"
+msgstr "Za&čyni"
+
+msgid "Replace All"
+msgstr ""
+
+msgid "Replace all"
+msgstr ""
 
 #, fuzzy
-msgid "Open in editor"
-msgstr "Redaktar"
+msgid "< &Previous"
+msgstr "< Papiaredni"
 
-#, c-format
-msgid "Error opening file %s!"
-msgstr "Pamyłka pry adčynieńni fajłu %s!"
+#, fuzzy
+msgid "&Next >"
+msgstr "Nastupny >"
+
+msgid "String to find"
+msgstr ""
+
+msgid "Replacement string"
+msgstr ""
 
 #, fuzzy, c-format
 msgid "Cannot execute program: %s"
@@ -1060,10 +1214,20 @@ msgstr "Novy"
 msgid "Edit"
 msgstr "Redahuj"
 
+msgid "Delete extractor"
+msgstr ""
+
+#, c-format
+msgid "Are you sure you want to delete the “%s” extractor?"
+msgstr ""
+
 #, fuzzy
 msgid "Extractors"
 msgstr "&Aktualizuj z krynicaŭ"
 
+msgid "Accounts"
+msgstr ""
+
 #, fuzzy
 msgid "Automatically check for updates"
 msgstr "Aŭtamatyčna praviaraj najaŭnaść novaj versii Poedit"
@@ -1105,9 +1269,35 @@ msgstr ""
 msgid "Advanced"
 msgstr ""
 
-#, fuzzy
-msgid "Additional keywords"
-msgstr "Abjekt u śpisie klučavych słovaŭ:"
+msgid ""
+"<big>Drag and Drop Folders Here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+
+msgid ""
+"<big>Drag and drop folders here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+
+msgid "Add Folders..."
+msgstr ""
+
+msgid "Add folders..."
+msgstr ""
+
+msgid "Add Files..."
+msgstr ""
+
+msgid "Add files..."
+msgstr ""
+
+msgid "Add Wildcard..."
+msgstr ""
+
+msgid "Add wildcard..."
+msgstr ""
 
 msgid "Paths"
 msgstr "Ściežki"
@@ -1116,6 +1306,10 @@ msgid "Excluded paths"
 msgstr ""
 
 #, fuzzy
+msgid "Additional keywords"
+msgstr "Abjekt u śpisie klučavych słovaŭ:"
+
+#, fuzzy
 msgid "Name of the project the translation is for"
 msgstr "Spasyłak da hetaj frazy nia znojdziena."
 
@@ -1128,6 +1322,9 @@ msgstr ""
 msgid "Please save the file first. This section cannot be edited until then."
 msgstr ""
 
+msgid "Comment:"
+msgstr "Kamentar:"
+
 msgid "OK"
 msgstr "OK"
 
@@ -1138,46 +1335,6 @@ msgstr "Vyčyść"
 msgid "Clear the comment"
 msgstr "Vyčyść hety kamentar"
 
-msgid "Find..."
-msgstr "Znajdzi..."
-
-msgid "String to find:"
-msgstr "Šukanaja fraza:"
-
-msgid "Case sensitive"
-msgstr "Uličvaj vieličyniu litar"
-
-msgid "Start from the first item"
-msgstr "Pačni ad pieršaha elementu"
-
-msgid "Whole words only"
-msgstr "Tolki cełyja słovy"
-
-msgid "Find in original strings"
-msgstr "Znajdzi ŭ aryhinalnych frazach"
-
-#, fuzzy
-msgid "Find in translations"
-msgstr "Pierakład"
-
-msgid "Find in comments"
-msgstr "Znajdzi ŭ kamentaroch"
-
-msgid "Find in automatic comments"
-msgstr "Znajdzi ŭ aŭtamatyčnych kamentaroch"
-
-#, fuzzy
-msgid "Close"
-msgstr "Za&čyni"
-
-#, fuzzy
-msgid "< &Previous"
-msgstr "< Papiaredni"
-
-#, fuzzy
-msgid "&Next >"
-msgstr "Nastupny >"
-
 msgid "Create new translations project"
 msgstr "Stvary novy prajekt pierakładaŭ"
 
@@ -1237,6 +1394,12 @@ msgstr "&Adčyni..."
 msgid "Open Recent"
 msgstr "Adčyni kataloh"
 
+msgid "Open from Crowdin..."
+msgstr ""
+
+msgid "Open From Crowdin..."
+msgstr ""
+
 msgid "&Save"
 msgstr "&Zapišy"
 
@@ -1292,6 +1455,9 @@ msgstr "&Pakazvaj spasyłki"
 msgid "&Find..."
 msgstr "&Znajdzi..."
 
+msgid "Replace..."
+msgstr ""
+
 #, fuzzy
 msgid "Find next"
 msgstr "Znajdzi ŭ kamentaroch"
@@ -1300,9 +1466,8 @@ msgstr "Znajdzi ŭ kamentaroch"
 msgid "Find previous"
 msgstr "< Papiaredni"
 
-#, fuzzy
-msgid "Find"
-msgstr "Znajdzi..."
+msgid "Find and Replace..."
+msgstr ""
 
 #, fuzzy
 msgid "Find Next"
@@ -1351,6 +1516,12 @@ msgstr ""
 msgid "&Group By Context"
 msgstr ""
 
+msgid "Entries with errors first"
+msgstr ""
+
+msgid "Entries with Errors First"
+msgstr ""
+
 msgid "&Untranslated entries first"
 msgstr ""
 
@@ -1360,6 +1531,9 @@ msgstr ""
 msgid "Show sidebar"
 msgstr ""
 
+msgid "Show status bar"
+msgstr ""
+
 msgid "C&atalog"
 msgstr "K&ataloh"
 
@@ -1377,6 +1551,9 @@ msgstr "Aktualizuj z fajłu &POT..."
 msgid "Update from &POT File..."
 msgstr "Aktualizuj z fajłu &POT..."
 
+msgid "Sync with Crowdin"
+msgstr ""
+
 #, fuzzy
 msgid "Fill missing translations from &TM..."
 msgstr "Znajdzi ŭ pierakładach"
@@ -1522,6 +1699,9 @@ msgstr ""
 msgid "Catalog properties"
 msgstr ""
 
+msgid "Project name and version:"
+msgstr "Nazva prajektu i versija:"
+
 msgid "Plural Forms:"
 msgstr "Formy množnaha liku:"
 
@@ -1535,10 +1715,23 @@ msgstr ""
 msgid "Learn about plural forms"
 msgstr ""
 
+msgid "Charset:"
+msgstr "Nabor znakaŭ:"
+
+msgid "Team:"
+msgstr "Supołka:"
+
+msgid "Team's email address:"
+msgstr "Adras email supołki:"
+
 #, fuzzy
 msgid "Translation properties"
 msgstr "Pamiać pierakładaŭ"
 
+#, fuzzy
+msgid "Sources paths"
+msgstr "Ściežki pošuku"
+
 msgid "Extract text from source files in the following directories:"
 msgstr ""
 
@@ -1546,7 +1739,7 @@ msgid "Base path:"
 msgstr "Asnoŭnaja ściežka:"
 
 #, fuzzy
-msgid "Sources paths"
+msgid "Sources keywords"
 msgstr "Ściežki pošuku"
 
 #, fuzzy
@@ -1560,10 +1753,6 @@ msgstr ""
 msgid "Learn about gettext keywords"
 msgstr ""
 
-#, fuzzy
-msgid "Sources keywords"
-msgstr "Ściežki pošuku"
-
 msgid "Update summary"
 msgstr "Aktualizuj padsumavańnie"
 
@@ -1613,7 +1802,7 @@ msgstr "Aktualizuj kataloh – synchranizuj jaho z krynicami"
 msgid "Toggled if selected string has fuzzy translation"
 msgstr "Uklučana, kali dla zaznačanaj frazy jość sumniŭny pierakład"
 
-msgid "Show or hide the sidebar."
+msgid "Show or hide the sidebar"
 msgstr ""
 
 #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer.
@@ -1627,6 +1816,10 @@ msgid ""
 msgstr ""
 
 #, fuzzy
+msgid "Notes for translators:"
+msgstr "Aŭtamatyčnyja pierakłady:"
+
+#, fuzzy
 msgid "Add comment"
 msgstr "Redahuj kamentar"
 
@@ -1709,15 +1902,21 @@ msgstr "Pierakład"
 msgid "Open an existing PO file and edit the translation."
 msgstr ""
 
-#, fuzzy
-msgid "Create new translation"
-msgstr "Stvary novy prajekt pierakładaŭ"
-
 msgid ""
 "Take an existing PO file or POT template and create a new translation from "
 "it."
 msgstr ""
 
+msgid "Collaborate on a translation with Crowdin"
+msgstr ""
+
+msgid ""
+"Download a file from Crowdin project, translate and sync your changes back."
+msgstr ""
+
+msgid "What is Crowdin?"
+msgstr ""
+
 msgid "There are no translations. That’s unusual."
 msgstr ""
 
@@ -1752,3 +1951,9 @@ msgstr "&Aktualizuj z krynicaŭ"
 
 msgid "Configure source code extraction in Properties."
 msgstr ""
+
+msgid "Sync"
+msgstr ""
+
+msgid "Synchronize the translation with Crowdin"
+msgstr ""
diff --git a/locales/bg.mo b/locales/bg.mo
index 86f46f4..ac3995b 100644
Binary files a/locales/bg.mo and b/locales/bg.mo differ
diff --git a/locales/bg.po b/locales/bg.po
index 5c587aa..2fcd2e5 100644
--- a/locales/bg.po
+++ b/locales/bg.po
@@ -2,8 +2,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: poedit\n"
 "Report-Msgid-Bugs-To: help at poedit.net\n"
-"POT-Creation-Date: 2015-01-10 16:00+0100\n"
-"PO-Revision-Date: 2015-03-10 12:33-0400\n"
+"POT-Creation-Date: 2015-05-27 11:31+0200\n"
+"PO-Revision-Date: 2015-05-27 05:17-0400\n"
 "Last-Translator: vslavik <vaclav at slavik.io>\n"
 "Language-Team: Bulgarian\n"
 "Language: bg_BG\n"
@@ -54,12 +54,12 @@ msgid ""
 "There were errors when loading the catalog. Some data may be missing or "
 "corrupted as the result."
 msgstr ""
-"По време на зареждането на каталога се появиха грешки. Някои данни може да "
-"липсват или да са неправилни."
+"Имаше грешки при зареждане на каталога. Може да има липсващи или повредени "
+"данни."
 
 #, c-format
 msgid "Couldn't load file %s, it is probably corrupted."
-msgstr "Грешка при отваряне на файл „%s“, вероятно е повреден."
+msgstr "Грешка при отваряне на файлът „%s“, той вероятно е повреден."
 
 #, c-format
 msgid ""
@@ -67,7 +67,7 @@ msgid ""
 "Please save it under different name."
 msgstr ""
 "Файлът „%s“ е без право на запис.\n"
-"Запазете го под различно име."
+"Запазете го под друго име."
 
 #, c-format
 msgid "Couldn't save file %s."
@@ -84,15 +84,24 @@ msgid ""
 "\n"
 "It was saved in UTF-8 instead and the setting was modified accordingly."
 msgstr ""
-"Този каталог не може да бъде запазен в знаков набор „%s“,\n"
-"както е указано в настройките. Вместо това е запазен\n"
+"Този каталог не може да бъде запазен в знаковият набор „%s“,\n"
+"указан в настройките. Вместо това е запазен\n"
 "в UTF-8, а настройките са променени."
 
 msgid "Error saving catalog"
 msgstr "Грешка при запазване на каталога"
 
+msgid "PO Translation Files"
+msgstr "Файлове с преводи"
+
+msgid "POT Translation Templates"
+msgstr "Шаблон за преводи"
+
+msgid "All Translation Files"
+msgstr "Всички файлове за превод"
+
 msgid "Merging differences..."
-msgstr "Вмъкване на разликите…"
+msgstr "Обединяване на разликите…"
 
 #, c-format
 msgid "'%s' is not a valid POT file."
@@ -105,16 +114,96 @@ msgid "Select your preferred language"
 msgstr "Избиране на предпочитан език"
 
 msgid "Language selection"
-msgstr "Избор на език"
+msgstr "Избиране на език"
 
 msgid "You must restart Poedit for this change to take effect."
-msgstr "За да има ефект тази промяна трябва да отворите отново Poedit."
+msgstr "Трябва да рестартирате Poedit, за да влезе в сила тази промяна."
+
+msgid "Downloading translations is disabled in this project."
+msgstr "Изтеглянето на преводи е изключено за този проект."
+
+msgid "Not authorized, please sign in again."
+msgstr "Не сте удостоверени, моля, впишете се отново."
+
+msgid "Sign in to Crowdin"
+msgstr "Вписване се в Crowdin"
+
+msgid ""
+"Crowdin is an online localization management platform and collaborative "
+"translation tool. Poedit can seamlessly sync PO files managed at Crowdin."
+msgstr ""
+"Crowdin е онлайн платформа за управление на локализации и инструмент за "
+"съвместни преводи. Poedit може безпроблемно да синхронизира PO, управлявани "
+"от Crowdin."
+
+msgid "Sign In"
+msgstr "Вписване"
+
+msgid "Sign in"
+msgstr "Вписване"
+
+msgid "Sign Out"
+msgstr "Изход"
+
+msgid "Sign out"
+msgstr "Изход"
+
+msgid "Waiting for authentication…"
+msgstr "Изчакване за удостоверяване…"
+
+msgid "Updating user information…"
+msgstr "Актуализиране на информацията на потребителя…"
+
+msgid "Signed in as:"
+msgstr "Вписани като:"
+
+msgid "Learn More About Crowdin"
+msgstr "Научете повече за Crowdin"
+
+msgid "Learn more about Crowdin"
+msgstr "Научете повече за Crowdin"
+
+msgid "Open Crowdin translation"
+msgstr "Отваряне на превод от Crowdin"
+
+msgid "Project:"
+msgstr "Проект:"
+
+msgid "Language:"
+msgstr "Език:"
+
+msgid "File:"
+msgstr "Файл:"
+
+msgid "No translation projects listed in your Crowdin account."
+msgstr "Няма проекти за превод във вашия профил в Crowdin."
+
+msgid "This project has no files that can be translated in Poedit."
+msgstr "Този проект няма файлове, които да могат да бъдат преведени с Poedit."
+
+msgid "This file can only be edited in Crowdin’s web interface."
+msgstr "Този файл може да бъде редактиран само през уеб интерфейса на Crowdin."
+
+msgid "Downloading latest translations…"
+msgstr "Изтегляне на последните преводи…"
+
+msgid "Syncing with Crowdin"
+msgstr "Синхронизиране с Crowdin"
+
+msgid "Syncing with Crowdin failed."
+msgstr "Неуспешно синхронизиране с Crowdin."
+
+msgid "Crowdin error"
+msgstr "Грешка в Crowdin"
+
+msgid "Uploading translations…"
+msgstr "Изпращане на преводи…"
 
 msgid "&Copy"
 msgstr "&Копиране"
 
 msgid "Learn more"
-msgstr "Научете още"
+msgstr "Научете повече"
 
 msgid "Learn More"
 msgstr "Научете повече"
@@ -124,7 +213,7 @@ msgid "Failed command: %s"
 msgstr "Неуспешна команда: %s"
 
 msgid "Failed to merge gettext catalogs."
-msgstr "Каталозите на gettext не могат да бъдат слети."
+msgstr "Неуспешно обединяване на каталози на gettext."
 
 msgid "Scanning files..."
 msgstr "Обработка на файловете…"
@@ -156,6 +245,12 @@ msgstr ""
 msgid "don't delete temporary files (for debugging)"
 msgstr "временните файлове да не бъдат изтривани (при проблеми)"
 
+msgid "handle a poedit:// URI"
+msgstr "управление на схемата poedit://"
+
+msgid "Failed to communicate with Poedit process."
+msgstr ""
+
 #, c-format
 msgid "Unhandled exception occurred: %s"
 msgstr "Неприхванато изключение: %s"
@@ -166,12 +261,6 @@ msgstr "Неприхванато изключение."
 msgid "Open catalog"
 msgstr "Отваряне на каталог"
 
-msgid "All Files"
-msgstr "Всички файлове"
-
-msgid "PO Translation Files"
-msgstr "Файлове с преводи"
-
 #, c-format
 msgid "File '%s' doesn't exist."
 msgstr "Файлът „%s“ не съществува!"
@@ -195,13 +284,13 @@ msgid "Catalogs Manager"
 msgstr "&Управление на каталози"
 
 msgid "Check for Updates..."
-msgstr "Проверка за &актуализация…"
+msgstr "Проверка за &актуализация"
 
 msgid "&Edit"
-msgstr "&Редакция"
+msgstr "&Редактиране"
 
 msgid "Undo"
-msgstr "Връщане"
+msgstr "Отмяна"
 
 msgid "Redo"
 msgstr "Повтаряне"
@@ -222,7 +311,7 @@ msgid "Check Document Now"
 msgstr "Проверка на документа"
 
 msgid "Check Spelling While Typing"
-msgstr "Проверка на правописа в реално време"
+msgstr "Проверка на правописа при въвеждане"
 
 msgid "Check Grammar With Spelling"
 msgstr "Проверка на правописа"
@@ -237,7 +326,7 @@ msgid "Show Substitutions"
 msgstr "Показване на замествания"
 
 msgid "Smart Copy/Paste"
-msgstr "Умни копиране и поставяне"
+msgstr "Умно копиране и поставяне"
 
 msgid "Smart Quotes"
 msgstr "Умни кавички"
@@ -249,7 +338,7 @@ msgid "Smart Links"
 msgstr "Умни връзки"
 
 msgid "Text Replacement"
-msgstr "Замяна на текст"
+msgstr "Заместване на текст"
 
 msgid "Transformations"
 msgstr "Трансформации"
@@ -297,11 +386,11 @@ msgid "The file cannot be opened."
 msgstr "Файлът не може да бъде отворен."
 
 msgid "Invalid file"
-msgstr "Новалиден файл"
+msgstr "Невалиден файл"
 
 msgid ""
 "The file may be either corrupted or in a format not recognized by Poedit."
-msgstr "Файлът вероятно е повреден или е непознат за Poedit тип."
+msgstr "Файлът може да е повреден или е непознат за Poedit формат."
 
 msgid "&Undo"
 msgstr "&Отмяна"
@@ -376,7 +465,7 @@ msgstr "Не може да пускате повече от един файл в
 
 #, c-format
 msgid "File '%s' is not a message catalog."
-msgstr "Файлът „%s“ не е каталог със съобщения."
+msgstr "Файлът „%s“ не е файл за превод."
 
 msgid "Poedit"
 msgstr "Poedit"
@@ -399,6 +488,19 @@ msgstr "Множествено число:"
 msgid "Translation:"
 msgstr "Превод:"
 
+msgid ""
+"POT files are only templates and don’t contain any translations themselves.\n"
+"To make a translation, create a new PO file based on the template."
+msgstr ""
+"Файловете POT са само шаблони и сами по себе си не съдържат преводи.\n"
+"За да започнете превод създайте нов файл PO базиран на този шаблон."
+
+msgid "Create New Translation"
+msgstr "Създаване на превод"
+
+msgid "Create new translation"
+msgstr "Създаване на &нов превод"
+
 #. TRANSLATORS: %s is language name in its basic form (as you
 #. would see e.g. in a list of supported languages). You may need
 #. to rephrase it, e.g. to an equivalent of "for language %s".
@@ -418,7 +520,7 @@ msgid "Save changes"
 msgstr "Запазване на промените"
 
 msgid "Your changes will be lost if you don't save them."
-msgstr "Направени промени ще бъдат загубени ако не бъдат запазени."
+msgstr "Направените промени ще бъдат загубени ако не бъдат запазени."
 
 msgid "Save"
 msgstr "&Запазване"
@@ -447,9 +549,6 @@ msgstr "HTML файлове"
 msgid "Open catalog template"
 msgstr "Отваряне на шаблон на каталог"
 
-msgid "POT Translation Templates"
-msgstr "Шаблон за преводи"
-
 msgid "Updating catalog"
 msgstr "Актуализация на каталог"
 
@@ -467,7 +566,7 @@ msgstr ""
 "открит на мястото, посочено в настройките на каталога."
 
 msgid "Entries in the catalog are probably incorrect."
-msgstr "Файловете в каталога вероятно са неправилни."
+msgstr "Низовете в каталога вероятно са неправилни."
 
 msgid "Updating the catalog failed. Click on 'Details >>' for details."
 msgstr "Неуспешна актуализация на каталога. За подробности натиснете „Още»“."
@@ -475,8 +574,8 @@ msgstr "Неуспешна актуализация на каталога. За
 #, c-format
 msgid "%d issue with the translation found."
 msgid_plural "%d issues with the translation found."
-msgstr[0] "%d проблем с превода е установен."
-msgstr[1] "%d проблема с превода са установени."
+msgstr[0] "С превода има %d проблем."
+msgstr[1] "С превода има %d проблема."
 
 msgid "Validation results"
 msgstr "Резултат от валидиране"
@@ -485,8 +584,8 @@ msgid ""
 "Entries with errors were marked in red in the list. Details of the error "
 "will be shown when you select such an entry."
 msgstr ""
-"Низовете с грешки са маркирани с червено в списъка. Подробности ще бъде "
-"показани, когато изберете такъв запис."
+"Низовете с грешки са разграничени в списъка с червен цвят на фона. "
+"Подробности ще бъдат показани, когато изберете такъв запис."
 
 msgid "The file was saved safely."
 msgstr "Файлът беше запазен."
@@ -525,26 +624,49 @@ msgstr[1] "Преводът е готов за използване, но все
 msgid "The translation is ready for use."
 msgstr "Преводът е готов за използване."
 
-msgid "No references to this string found."
-msgstr "Не са открити позовавания на този низ."
-
-msgid "Please choose the reference you want to show:"
-msgstr "Изберете позоваването, което да бъде показано:"
-
-msgid "References"
-msgstr "Позоваване"
-
 msgid "Context:"
 msgstr "Контекст:"
 
+#, c-format
+msgid "Poedit automatically fixed invalid content in the file “%s”."
+msgstr "PoEdit автоматично оправи невалидно съдържание във файла „%s“."
+
+msgid ""
+"The file contained duplicate items, which is not allowed in PO files and "
+"would prevent the file from being used. Poedit fixed the issue, but you "
+"should review translations of any items marked as fuzzy and correct them if "
+"necessary."
+msgstr ""
+"Файлът съдържа дублирани елементи, което е непозволено във файлове PO и ще "
+"пречат на използването му. PoEdit оправя този проблем, но трябва да "
+"прегледате преводите на всички, маркирани като мъгляви, елементи и ако е "
+"необходимо да ги коригирате."
+
 msgid "Language of the translation isn't set."
 msgstr "Липсва език на превода."
 
 msgid "Set Language"
-msgstr "Избор на език"
+msgstr "Избиране на език"
 
 msgid "Set language"
-msgstr "Избор на език"
+msgstr "Избиране на език"
+
+#. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)."
+msgid ""
+"Suggestions are not available if the translation language is not set "
+"correctly. Other features, such as plural forms, may be affected as well."
+msgstr ""
+"Предложенията са недостъпни за неправилно конфигурирани езици. Други "
+"възможности като формите за множествено число също може да бъдат засегнати."
+
+msgid "Language of the translation is the same as source language."
+msgstr "Езикът на превода е същият като изходния език."
+
+msgid "Fix Language"
+msgstr "Промяна на езика"
+
+msgid "Fix language"
+msgstr "Промяна на езика"
 
 msgid ""
 "This catalog has entries with plural forms, but doesn't have Plural-Forms "
@@ -581,6 +703,7 @@ msgid "Plural forms expression used by the catalog is unusual for %s."
 msgstr ""
 "Изразът за формите на множественото число на каталога е необичаен за %s език."
 
+#. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the catalog is unusual for %s.")"
 msgid "Review"
 msgstr "Рецензия"
 
@@ -602,6 +725,12 @@ msgid_plural "%d errors"
 msgstr[0] "%d грешка"
 msgstr[1] "%d грешки"
 
+#, c-format
+msgid "%d entry"
+msgid_plural "%d entries"
+msgstr[0] "%d елемент"
+msgstr[1] "%d елемента"
+
 msgid " (unsaved)"
 msgstr " (незапазен)"
 
@@ -626,9 +755,9 @@ msgid ""
 "permanently removed. You will have to translate them again if they are added "
 "back in the future."
 msgstr ""
-"Ако продължите с прочистването, всички преводи, маркирани като изтрити ще "
-"бъдат премахнати. Ще трябва да ги преведете отново, ако бъдат върнати в "
-"последствие."
+"Ако продължите с прочистването, всички преводи, обозначени като изтрити ще "
+"бъдат премахнати. Ще трябва да ги превеждате отново, ако в последствие бъдат "
+"върнати."
 
 msgid "Keep"
 msgstr "&Отказ"
@@ -646,18 +775,19 @@ msgid ""
 "By default, inaccurate results are filled in as well and marked as fuzzy. "
 "Check this option to only include accurate matches."
 msgstr ""
-"По подразбиране неточните резултати се добавят, но се маркират като неясни. "
-"Отметнете, за да се добавят само точните съвпадения."
+"Стандартно неточните резултати се добавят, но се отбелязват като мъгляви. "
+"Отметнете, за да бъдат добавени само точните съвпадения."
 
 msgid "Don’t mark exact matches as fuzzy"
-msgstr "Точните съвпадения да не бъдат маркирани като непълни"
+msgstr "Точните съвпадения да не бъдат отбелязвани като мъгляви"
 
 msgid ""
 "Only enable if you trust the quality of your TM. By default, all matches "
 "from the TM are marked as fuzzy and should be reviewed."
 msgstr ""
-"Включете само ако имате доверие в качеството на вашата ПП. Стандартно всички "
-"съвпадения от ПП са отбелязани като неясни и трябва да бъдат прегледани."
+"Отметнете само ако имате доверие в качеството на вашата ПП. Стандартно "
+"всички съвпадения от ПП са отбелязани като мъгляви и трябва да бъдат "
+"прегледани."
 
 msgid "Fill"
 msgstr "Попълване"
@@ -672,11 +802,11 @@ msgid ""
 "The translations were marked as fuzzy, because they may be inaccurate. You "
 "should review them for correctness."
 msgstr ""
-"Преведените низове са маркирани като неясни, защото може да съдържат "
+"Преведените низове са отбелязани като мъгляви, защото може да съдържат "
 "неточности. Трябва да бъдат прегледани."
 
 msgid "No entries could be filled from the translation memory."
-msgstr "Нито един низ не можа да бъде преведен от паметта с преводи."
+msgstr "Нито един низ не беше преведен от паметта с преводи."
 
 msgid ""
 "The TM doesn’t contain any strings similar to the content of this file. It "
@@ -688,7 +818,7 @@ msgstr ""
 "ръчно превеждате."
 
 msgid "Translating"
-msgstr "Превевод"
+msgstr "Превод"
 
 msgid "Filling missing translations from TM..."
 msgstr "Превеждане от паметта с преводи…"
@@ -706,16 +836,16 @@ msgid "Copy from Source Text"
 msgstr "Копиране от изходния текст"
 
 msgid "Clear translation"
-msgstr "&Изтриване на превода"
+msgstr "И&зчистване на превода"
 
 msgid "Clear Translation"
-msgstr "&Изтриване на преводa"
+msgstr "И&зчистване на преводa"
 
 msgid "Edit comment"
-msgstr "Редакция на &коментар"
+msgstr "Редактиране на &коментар"
 
 msgid "Edit Comment"
-msgstr "Редакция на &коментар"
+msgstr "Редактиране на &коментар"
 
 msgid "References:"
 msgstr "Позовавания:"
@@ -727,15 +857,21 @@ msgstr "Всичко"
 msgid "Form %i"
 msgstr "Форма %i"
 
+msgid "Singular"
+msgstr "Единствено число"
+
 msgid "Zero"
 msgstr "Нула"
 
 msgid "One"
-msgstr "Един"
+msgstr "Едно"
 
 msgid "Two"
 msgstr "Два"
 
+msgid "Plural"
+msgstr "Множествено число"
+
 msgid "Other"
 msgstr "Повече"
 
@@ -764,6 +900,12 @@ msgstr "&Скриване странична лента"
 msgid "Show Sidebar"
 msgstr "&Видима странична лента"
 
+msgid "Hide Status Bar"
+msgstr "Скриване на лента за състоянието"
+
+msgid "Show Status Bar"
+msgstr "Показване на лента за състоянието"
+
 msgid "Source text"
 msgstr "Изходен текст"
 
@@ -773,6 +915,10 @@ msgstr "Превод"
 msgid "ID"
 msgstr "Идентификатор"
 
+#, c-format
+msgid "Source text — %s"
+msgstr "Изходен текст – %s"
+
 msgid "unknown language"
 msgstr "неизвестен език"
 
@@ -783,57 +929,73 @@ msgstr "Превод на %s"
 msgid "Error:"
 msgstr "Грешка:"
 
-msgid "Project info"
-msgstr "Информация за проекта"
+msgid "Source file"
+msgstr "Файл с изходен код"
 
-msgid "Project name and version:"
-msgstr "Име и версия на проекта:"
+msgid "Source file occurrence:"
+msgstr "&Позоваване:"
 
-msgid "Language:"
-msgstr "Език:"
+msgid "Open in Editor"
+msgstr "Отваряне с редактор"
 
-msgid "Team:"
-msgstr "Екип:"
+msgid "Open in editor"
+msgstr "Отваряне с редактор"
 
-msgid "Team's email address:"
-msgstr "Електронна поща на екипа:"
+msgid "No references for the selected item."
+msgstr "Няма предпочитания за избрания елемент."
 
-msgid "Charset:"
-msgstr "Знаков набор:"
+#, c-format
+msgid "Error opening file %s!"
+msgstr "Грешка при отваряне на „%s“!"
 
-msgid "Source"
-msgstr "Изходен код"
+msgid "Find"
+msgstr "Търсене…"
 
-msgid "Notes"
-msgstr "Бележки"
+msgid "Replace"
+msgstr "Заместване"
 
-msgid "Automatic translation"
-msgstr "Автоматичен превод"
+#. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.)
+msgid "Options"
+msgstr "Настройки"
 
-msgid "Fuzzy translation"
-msgstr "Неясен превод"
+msgid "Ignore case"
+msgstr "Незачитане на регистъра"
 
-msgid "Notes for translators:"
-msgstr "Бележка към преводача:"
+msgid "Wrap around"
+msgstr "Безконечно търсене"
 
-msgid "Comment:"
-msgstr "&Коментар:"
+msgid "Whole words only"
+msgstr "&Цели думи"
 
-msgid "Source file"
-msgstr "Файл с изходен код"
+msgid "Find in source texts"
+msgstr "Търсене в изходните низове"
 
-msgid "Source file occurrence:"
-msgstr "&Позоваване:"
+msgid "Find in translations"
+msgstr "Търсене в &преводите"
 
-msgid "Open in Editor"
-msgstr "Отваряне с редактор"
+msgid "Find in comments"
+msgstr "Търсене в &коментарите"
 
-msgid "Open in editor"
-msgstr "Отваряне с редактор"
+msgid "Close"
+msgstr "&Затваряне"
 
-#, c-format
-msgid "Error opening file %s!"
-msgstr "Грешка при отваряне на „%s“!"
+msgid "Replace All"
+msgstr "Замяна всички"
+
+msgid "Replace all"
+msgstr "Замяна всички"
+
+msgid "< &Previous"
+msgstr "&< Предишен"
+
+msgid "&Next >"
+msgstr "Следващ &>"
+
+msgid "String to find"
+msgstr "Търсете"
+
+msgid "Replacement string"
+msgstr "Заместете"
 
 #, c-format
 msgid "Cannot execute program: %s"
@@ -861,7 +1023,7 @@ msgid "Untrans"
 msgstr "Непреведени"
 
 msgid "Fuzzy"
-msgstr "Неясен"
+msgstr "Мъгляв"
 
 msgid "Bad Tokens"
 msgstr "Сгрешени"
@@ -870,7 +1032,7 @@ msgid "Last modified"
 msgstr "Последна промяна"
 
 msgid "Select directory"
-msgstr "Избор на папка"
+msgstr "Избиране на папка"
 
 msgid "Directories:"
 msgstr "Папки:"
@@ -914,19 +1076,19 @@ msgstr ""
 "заглавката „Last-Translator“ на файловете на GNU gettext."
 
 msgid "Editing"
-msgstr "Редакция"
+msgstr "Редактиране"
 
 msgid "Automatically compile MO file when saving"
 msgstr "&автоматично компилиране до файл MO при запазване"
 
 msgid "Show summary after catalog update"
-msgstr "Показване на &резюме след актуализиране на каталог"
+msgstr "&резюме след актуализиране на каталог"
 
 msgid "Check spelling"
-msgstr "Проверка на правописа"
+msgstr "&проверка на правописа"
 
 msgid "Always change focus to text input field"
-msgstr "&Полето за въвеждане на превод винаги на фокус"
+msgstr "полето за превод &винаги на фокус"
 
 msgid ""
 "Never let the list of strings take focus. If enabled, you must use Ctrl-"
@@ -958,7 +1120,7 @@ msgid "General"
 msgstr "Общи"
 
 msgid "Use translation memory"
-msgstr "Използване на &паметта с преводи"
+msgstr "използване на &паметта с преводи"
 
 msgid "Learn From Files..."
 msgstr "&Научаване от файлове…"
@@ -971,7 +1133,7 @@ msgid "Reset"
 msgstr "Възстановяване"
 
 msgid "Consult TM when updating from sources"
-msgstr "Използване на п&аметта с преводи при актуализация от изходен код"
+msgstr "използване на п&аметта с преводи при актуализация от изходен код"
 
 msgid ""
 "If enabled, Poedit will try to fill in new entries using your previous\n"
@@ -980,7 +1142,7 @@ msgid ""
 "you edit and the larger the TM grows, the better it gets."
 msgstr ""
 "Ако е отметнато, Poedit ще опита да преведе новите низове, използвайки\n"
-"предишни преводи, запомнени в паметта. Ако паметта е почти празна\n"
+"предишни преводи, запомнени в паметта. Ако ПП е почти празна\n"
 "преводите ще бъдат неточни. Колкото повече преводи има запомнени,\n"
 "толкова по-точно ще бъде автоматичното им извличане."
 
@@ -991,7 +1153,7 @@ msgid "Database size on disk:"
 msgstr "Големина на базата от данни:"
 
 msgid "Select translation files to import"
-msgstr "Избор на файлове за импорт"
+msgstr "Избиране на файлове за импорт"
 
 msgid "Translation Memory"
 msgstr "Памет с преводи"
@@ -1035,11 +1197,21 @@ msgid "New"
 msgstr "&Добавяне"
 
 msgid "Edit"
-msgstr "&Редакция"
+msgstr "&Редактиране"
+
+msgid "Delete extractor"
+msgstr "Изтриване на инструмент за извличане"
+
+#, c-format
+msgid "Are you sure you want to delete the “%s” extractor?"
+msgstr "Наистина ли желаете да изтриете инструментът за извличане „%s“?"
 
 msgid "Extractors"
 msgstr "Извличане"
 
+msgid "Accounts"
+msgstr "Профили"
+
 msgid "Automatically check for updates"
 msgstr "автоматична &проверка за актуализация"
 
@@ -1070,7 +1242,7 @@ msgid "Unix (recommended)"
 msgstr "Unix (препоръчително)"
 
 msgid "Windows"
-msgstr "Уиндоус"
+msgstr "Windows"
 
 #. TRANSLATORS: Followed by text control for entering number; wraps text at given width
 msgid "Wrap at:"
@@ -1082,8 +1254,41 @@ msgstr "&запазване на формата на съществуващит
 msgid "Advanced"
 msgstr "Разширени"
 
-msgid "Additional keywords"
-msgstr "Допълнителни ключови думи"
+msgid ""
+"<big>Drag and Drop Folders Here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+"<big>Плъзнете и пуснете папки тук</big> \n"
+"\n"
+"или натиснете бутона „+“"
+
+msgid ""
+"<big>Drag and drop folders here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+"<big>Плъзнете и пуснете папки тук</big> \n"
+"\n"
+"или натиснете бутона „+“"
+
+msgid "Add Folders..."
+msgstr "Добавяне на папки…"
+
+msgid "Add folders..."
+msgstr "Добавяне на папки…"
+
+msgid "Add Files..."
+msgstr "Добавяне на файлове…"
+
+msgid "Add files..."
+msgstr "Добавяне на файлове…"
+
+msgid "Add Wildcard..."
+msgstr "Добавяне на заместващ знак…"
+
+msgid "Add wildcard..."
+msgstr "Добавяне на заместващ знак…"
 
 msgid "Paths"
 msgstr "Пътища"
@@ -1091,6 +1296,9 @@ msgstr "Пътища"
 msgid "Excluded paths"
 msgstr "Пренебрегнати пътища"
 
+msgid "Additional keywords"
+msgstr "Допълнителни ключови думи"
+
 msgid "Name of the project the translation is for"
 msgstr "име и версия"
 
@@ -1101,7 +1309,10 @@ msgid "UTF-8 (recommended)"
 msgstr "UTF-8 (препоръчително)"
 
 msgid "Please save the file first. This section cannot be edited until then."
-msgstr "Моля, първо запазете файла. Тези настройки ще са неактивни до тогава."
+msgstr "Моля, първо запазете файла. Тези настройки ще са неактивни дотогава."
+
+msgid "Comment:"
+msgstr "&Коментар:"
 
 msgid "OK"
 msgstr "Д&обре"
@@ -1110,49 +1321,13 @@ msgid "C&lear"
 msgstr "И&зчистване"
 
 msgid "Clear the comment"
-msgstr "Изтриване на коментара"
-
-msgid "Find..."
-msgstr "Търсене…"
-
-msgid "String to find:"
-msgstr "Низ за &търсене:"
-
-msgid "Case sensitive"
-msgstr "&Чувствителност към регистъра"
-
-msgid "Start from the first item"
-msgstr "&Начало от първия низ"
-
-msgid "Whole words only"
-msgstr "Само &цели думи"
-
-msgid "Find in original strings"
-msgstr "Търсене в &изходните низове"
-
-msgid "Find in translations"
-msgstr "Търсене в &преводите"
-
-msgid "Find in comments"
-msgstr "Търсене в &коментарите"
-
-msgid "Find in automatic comments"
-msgstr "Търсене в &автоматичните коментари"
-
-msgid "Close"
-msgstr "&Затваряне"
-
-msgid "< &Previous"
-msgstr "&< Предишен"
-
-msgid "&Next >"
-msgstr "Следващ &>"
+msgstr "Изчистване на коментара"
 
 msgid "Create new translations project"
 msgstr "Създаване на нов проект за превод"
 
 msgid "Edit the project"
-msgstr "Редакция на проекта"
+msgstr "Редактиране на проекта"
 
 msgid "Delete the project"
 msgstr "Изтриване на проекта"
@@ -1164,13 +1339,13 @@ msgid "Update all catalogs in the project"
 msgstr "Актуализиране на всички каталози в проекта"
 
 msgid "Edit project"
-msgstr "Редакция на проект"
+msgstr "Редактиране на проект"
 
 msgid "Project name:"
 msgstr "Име на проекта:"
 
 msgid "Browse"
-msgstr "Избор"
+msgstr "Избиране"
 
 msgid "Add directory to the list"
 msgstr "Добавяне на папка към списъка"
@@ -1179,7 +1354,7 @@ msgid "&Preferences..."
 msgstr "&Настройки…"
 
 msgid "&Close"
-msgstr "&Изход"
+msgstr "&Затваряне"
 
 msgid "E&xit"
 msgstr "&Изход"
@@ -1202,6 +1377,12 @@ msgstr "&Отваряне…"
 msgid "Open Recent"
 msgstr "Последно използвани"
 
+msgid "Open from Crowdin..."
+msgstr "Отваряне от Crowdin…"
+
+msgid "Open From Crowdin..."
+msgstr "Отваряне от Crowdin…"
+
 msgid "&Save"
 msgstr "&Запазване"
 
@@ -1218,7 +1399,7 @@ msgid "E&xport as HTML..."
 msgstr "Е&кспортиране като HTML…"
 
 msgid "Check for updates..."
-msgstr "Проверка за актуализация…"
+msgstr "Проверка за &актуализация"
 
 msgid "Catalogs &manager"
 msgstr "&Управление на каталози"
@@ -1227,16 +1408,16 @@ msgid "Catalogs &Manager"
 msgstr "&Управление на каталози"
 
 msgid "Translation is &fuzzy"
-msgstr "Маркиране като &неясен"
+msgstr "Отбелязване като &мъгляв"
 
 msgid "Translation Is &Fuzzy"
-msgstr "Маркиране като &неясен"
+msgstr "Отбелязване като &мъгляв"
 
 msgid "Edit &comment"
-msgstr "Редакция на &коментар"
+msgstr "Редактиране на &коментар"
 
 msgid "Edit &Comment"
-msgstr "Редакция на &коментар"
+msgstr "Редактиране на &коментар"
 
 msgid "Suggestions"
 msgstr "Предложения"
@@ -1250,14 +1431,17 @@ msgstr "Показване на &позоваване"
 msgid "&Find..."
 msgstr "&Търсене…"
 
+msgid "Replace..."
+msgstr "Заместване…"
+
 msgid "Find next"
 msgstr "&Следващо съвпадение"
 
 msgid "Find previous"
 msgstr "&Предишно съвпадение"
 
-msgid "Find"
-msgstr "Търсене…"
+msgid "Find and Replace..."
+msgstr "Търсене и заместване…"
 
 msgid "Find Next"
 msgstr "&Следващо съвпадение"
@@ -1281,10 +1465,10 @@ msgid "Sort by &File Order"
 msgstr "Сортиране по &файл"
 
 msgid "Sort by &source"
-msgstr "Сортиране по &изходен код"
+msgstr "Сортиране по &изходен текст"
 
 msgid "Sort by &Source"
-msgstr "Сортиране по &изходен код"
+msgstr "Сортиране по &изходен текст"
 
 msgid "Sort by &translation"
 msgstr "Сортиране по &превод"
@@ -1298,6 +1482,12 @@ msgstr "&Групиране по контекст"
 msgid "&Group By Context"
 msgstr "&Групиране по контекст"
 
+msgid "Entries with errors first"
+msgstr "Преводите с грешки първи"
+
+msgid "Entries with Errors First"
+msgstr "Преводите с грешки първи"
+
 msgid "&Untranslated entries first"
 msgstr "Н&епреведените първи"
 
@@ -1307,6 +1497,9 @@ msgstr "Н&епреведените първи"
 msgid "Show sidebar"
 msgstr "&Предишен низ"
 
+msgid "Show status bar"
+msgstr "Показване на лента за състоянието"
+
 msgid "C&atalog"
 msgstr "&Каталог"
 
@@ -1322,6 +1515,9 @@ msgstr "Актуализация от &файл POT…"
 msgid "Update from &POT File..."
 msgstr "Актуализация от &файл POT…"
 
+msgid "Sync with Crowdin"
+msgstr "Синхронизиране с Crowdin"
+
 msgid "Fill missing translations from &TM..."
 msgstr "П&ревеждане от паметта"
 
@@ -1450,6 +1646,9 @@ msgstr ""
 msgid "Catalog properties"
 msgstr "Свойства на каталога"
 
+msgid "Project name and version:"
+msgstr "Име и версия на проекта:"
+
 msgid "Plural Forms:"
 msgstr "Форми за множествено число:"
 
@@ -1462,17 +1661,29 @@ msgstr "Специфичен &израз"
 msgid "Learn about plural forms"
 msgstr "Повече за множествените форми"
 
+msgid "Charset:"
+msgstr "Знаков набор:"
+
+msgid "Team:"
+msgstr "Екип:"
+
+msgid "Team's email address:"
+msgstr "Електронна поща на екипа:"
+
 msgid "Translation properties"
 msgstr "Свойства на превода"
 
+msgid "Sources paths"
+msgstr "Пътища за претърсване"
+
 msgid "Extract text from source files in the following directories:"
 msgstr "Извличане на низове от изходните файлове в следните папки:"
 
 msgid "Base path:"
 msgstr "Основен път:"
 
-msgid "Sources paths"
-msgstr "Пътища за претърсване"
+msgid "Sources keywords"
+msgstr "Ключови думи в изходния код"
 
 msgid ""
 "Use these keywords (function names) to recognize translatable strings\n"
@@ -1484,9 +1695,6 @@ msgstr ""
 msgid "Learn about gettext keywords"
 msgstr "Повече за ключовите думи на GNU gettext"
 
-msgid "Sources keywords"
-msgstr "Ключови думи в изходния код"
-
 msgid "Update summary"
 msgstr "Резюме"
 
@@ -1495,7 +1703,7 @@ msgid ""
 "Poedit will add them to the catalog now."
 msgstr ""
 "Тези низове бяха намерени в изходния код, но не и в каталога.\n"
-"Poedit ще ги прибави към каталога."
+"Poedit ще ги прибави към него."
 
 msgid "New strings"
 msgstr "Добавени"
@@ -1532,10 +1740,10 @@ msgid "Update catalog - synchronize it with sources"
 msgstr "Актуализиране на каталог — синхронизиране с изходния код"
 
 msgid "Toggled if selected string has fuzzy translation"
-msgstr "Превключване на маркер за неясен превод"
+msgstr "Превключване на маркер за мъгляв превод"
 
-msgid "Show or hide the sidebar."
-msgstr "Показва или скрива страничната лента."
+msgid "Show or hide the sidebar"
+msgstr "Показва или скрива страничната лента"
 
 #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer.
 msgid "Previous source text:"
@@ -1546,7 +1754,10 @@ msgid ""
 "translation corresponds to."
 msgstr ""
 "Старият изходен текст (преди промяна от актуализация), на който съответства "
-"неясният превод."
+"мъглявият превод."
+
+msgid "Notes for translators:"
+msgstr "Бележка към преводача:"
 
 msgid "Add comment"
 msgstr "Добавяне на коментар"
@@ -1593,8 +1804,8 @@ msgid ""
 "This must be done before Poedit can start. It may take a few minutes if you "
 "have lots of translations stored, but should normally be much faster."
 msgstr ""
-"Това трябва да бъде направено преди отваряне на Poedit. Може да отнеме "
-"няколко минути ако имате запазени много преводи, но обикновено е по-бързо."
+"Това трябва да бъде направено преди отваряне на Poedit. Ако имате запазени "
+"много преводи може да отнеме няколко минути, но обикновено е по-бързо."
 
 msgid "Proceed"
 msgstr "Продължаване"
@@ -1621,18 +1832,25 @@ msgid "Welcome to Poedit"
 msgstr "Здравейте от Poedit"
 
 msgid "Edit a translation"
-msgstr "&Редакция на превод"
+msgstr "&Редактиране на превод"
 
 msgid "Open an existing PO file and edit the translation."
-msgstr "Отваряне на съществуващ каталог и редакция на превода."
-
-msgid "Create new translation"
-msgstr "Създаване на &нов превод"
+msgstr "Отваряне на съществуващ каталог и редактиране на превода."
 
 msgid ""
 "Take an existing PO file or POT template and create a new translation from "
 "it."
-msgstr "Създаване на нов каталог на базата на съществуващ каталог или шаблон."
+msgstr "Създаване на каталог на базата на съществуващ или от шаблон."
+
+msgid "Collaborate on a translation with Crowdin"
+msgstr "Съвместна работа по превод в Crowdin"
+
+msgid ""
+"Download a file from Crowdin project, translate and sync your changes back."
+msgstr "Изтегляне на файл от проект в Crowdin, превеждане и допринасяне."
+
+msgid "What is Crowdin?"
+msgstr "Какво е Crowdin?"
 
 msgid "There are no translations. That’s unusual."
 msgstr "Няма низове за превод. Това е необичайно."
@@ -1647,21 +1865,20 @@ msgstr ""
 "Низовете за превод не се добавят ръчно в Gettext, а се извличат автоматично "
 "от изходен код.\n"
 "По този начин те са винаги актуални и точни.\n"
-"Преводачите обикновено използват PO-шаблони (POT) приготвени за тях от "
+"Преводачите обикновено използват шаблони PO (POT) приготвени за тях от "
 "разработчика."
 
 msgid "(Learn more about GNU gettext)"
-msgstr "(Научете още за GNU gettext)"
+msgstr "(Научете повече за GNU gettext)"
 
 msgid "The simplest way to fill this catalog is to update it from a POT:"
-msgstr ""
-"Най-лесният начин за попълване на каталог е актуализацията от файл POT:"
+msgstr "Най-лесния начин за попълване на каталог е актуализацията от файл POT:"
 
 msgid "Update from POT"
 msgstr "Актуализация от &файл POT"
 
 msgid "Take translatable strings from an existing POT template."
-msgstr "Използване на изходни низове от съществуващ POT шаблон."
+msgstr "Използване на изходни низове от съществуващ шаблон POT."
 
 msgid ""
 "You can also extract translatable strings directly from the source code:"
@@ -1672,3 +1889,9 @@ msgstr "Актуализация от &изходен код"
 
 msgid "Configure source code extraction in Properties."
 msgstr "Настройка на извличане от изходен код."
+
+msgid "Sync"
+msgstr "Синхронизиране"
+
+msgid "Synchronize the translation with Crowdin"
+msgstr "Синхронизиране на превода с Crowdin"
diff --git a/locales/bn.mo b/locales/bn.mo
index 6f23dd5..1a677e3 100644
Binary files a/locales/bn.mo and b/locales/bn.mo differ
diff --git a/locales/bn.po b/locales/bn.po
index 8f39e77..7022473 100644
--- a/locales/bn.po
+++ b/locales/bn.po
@@ -2,8 +2,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: poedit\n"
 "Report-Msgid-Bugs-To: help at poedit.net\n"
-"POT-Creation-Date: 2015-01-10 16:00+0100\n"
-"PO-Revision-Date: 2015-03-10 12:33-0400\n"
+"POT-Creation-Date: 2015-05-27 11:31+0200\n"
+"PO-Revision-Date: 2015-05-27 05:17-0400\n"
 "Last-Translator: vslavik <vaclav at slavik.io>\n"
 "Language-Team: Bengali\n"
 "Language: bn_BD\n"
@@ -82,6 +82,15 @@ msgstr ""
 msgid "Error saving catalog"
 msgstr "তালিকা সেভ করতে সমস্যা হয়েছে"
 
+msgid "PO Translation Files"
+msgstr ""
+
+msgid "POT Translation Templates"
+msgstr ""
+
+msgid "All Translation Files"
+msgstr ""
+
 msgid "Merging differences..."
 msgstr "পার্থক্যগুলি মেলানো হচ্ছে..."
 
@@ -101,6 +110,83 @@ msgstr "ভাষা নির্বাচন"
 msgid "You must restart Poedit for this change to take effect."
 msgstr "এই পরিবর্তনকে ব্যবহার করতে হলে আপনাকে অবশ্যই Poedit পুনরায় চালাতে হবে।"
 
+msgid "Downloading translations is disabled in this project."
+msgstr ""
+
+msgid "Not authorized, please sign in again."
+msgstr ""
+
+msgid "Sign in to Crowdin"
+msgstr ""
+
+msgid ""
+"Crowdin is an online localization management platform and collaborative "
+"translation tool. Poedit can seamlessly sync PO files managed at Crowdin."
+msgstr ""
+
+msgid "Sign In"
+msgstr ""
+
+msgid "Sign in"
+msgstr ""
+
+msgid "Sign Out"
+msgstr ""
+
+msgid "Sign out"
+msgstr ""
+
+msgid "Waiting for authentication…"
+msgstr ""
+
+msgid "Updating user information…"
+msgstr ""
+
+msgid "Signed in as:"
+msgstr ""
+
+msgid "Learn More About Crowdin"
+msgstr ""
+
+msgid "Learn more about Crowdin"
+msgstr ""
+
+msgid "Open Crowdin translation"
+msgstr ""
+
+msgid "Project:"
+msgstr ""
+
+msgid "Language:"
+msgstr "ভাষা:"
+
+msgid "File:"
+msgstr ""
+
+msgid "No translation projects listed in your Crowdin account."
+msgstr ""
+
+msgid "This project has no files that can be translated in Poedit."
+msgstr ""
+
+msgid "This file can only be edited in Crowdin’s web interface."
+msgstr ""
+
+msgid "Downloading latest translations…"
+msgstr ""
+
+msgid "Syncing with Crowdin"
+msgstr ""
+
+msgid "Syncing with Crowdin failed."
+msgstr ""
+
+msgid "Crowdin error"
+msgstr ""
+
+msgid "Uploading translations…"
+msgstr ""
+
 msgid "&Copy"
 msgstr ""
 
@@ -145,6 +231,12 @@ msgstr ""
 msgid "don't delete temporary files (for debugging)"
 msgstr ""
 
+msgid "handle a poedit:// URI"
+msgstr ""
+
+msgid "Failed to communicate with Poedit process."
+msgstr ""
+
 #, c-format
 msgid "Unhandled exception occurred: %s"
 msgstr ""
@@ -155,12 +247,6 @@ msgstr ""
 msgid "Open catalog"
 msgstr "তালিকা খুলো"
 
-msgid "All Files"
-msgstr ""
-
-msgid "PO Translation Files"
-msgstr ""
-
 #, c-format
 msgid "File '%s' doesn't exist."
 msgstr "'%s' ফাইলের কোন অস্তিত্ব নেই।"
@@ -388,6 +474,17 @@ msgstr "বহুবচন:"
 msgid "Translation:"
 msgstr ""
 
+msgid ""
+"POT files are only templates and don’t contain any translations themselves.\n"
+"To make a translation, create a new PO file based on the template."
+msgstr ""
+
+msgid "Create New Translation"
+msgstr ""
+
+msgid "Create new translation"
+msgstr ""
+
 #. TRANSLATORS: %s is language name in its basic form (as you
 #. would see e.g. in a list of supported languages). You may need
 #. to rephrase it, e.g. to an equivalent of "for language %s".
@@ -435,9 +532,6 @@ msgstr ""
 msgid "Open catalog template"
 msgstr "নমুনা তালিকা খুলো"
 
-msgid "POT Translation Templates"
-msgstr ""
-
 msgid "Updating catalog"
 msgstr ""
 
@@ -506,16 +600,18 @@ msgstr[1] ""
 msgid "The translation is ready for use."
 msgstr ""
 
-msgid "No references to this string found."
-msgstr "এই বাক্যের প্রতি কোন নির্দেশ পাওয়া যায়নি।"
-
-msgid "Please choose the reference you want to show:"
-msgstr "অনুগ্রহকরে যে নির্দেশটি আপনি দেখতে চাইছেন তা বাছাই করুন:"
+msgid "Context:"
+msgstr ""
 
-msgid "References"
-msgstr "নির্দেশাবলী"
+#, c-format
+msgid "Poedit automatically fixed invalid content in the file “%s”."
+msgstr ""
 
-msgid "Context:"
+msgid ""
+"The file contained duplicate items, which is not allowed in PO files and "
+"would prevent the file from being used. Poedit fixed the issue, but you "
+"should review translations of any items marked as fuzzy and correct them if "
+"necessary."
 msgstr ""
 
 msgid "Language of the translation isn't set."
@@ -527,6 +623,21 @@ msgstr ""
 msgid "Set language"
 msgstr ""
 
+#. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)."
+msgid ""
+"Suggestions are not available if the translation language is not set "
+"correctly. Other features, such as plural forms, may be affected as well."
+msgstr ""
+
+msgid "Language of the translation is the same as source language."
+msgstr ""
+
+msgid "Fix Language"
+msgstr ""
+
+msgid "Fix language"
+msgstr ""
+
 msgid ""
 "This catalog has entries with plural forms, but doesn't have Plural-Forms "
 "header configured."
@@ -557,6 +668,7 @@ msgstr ""
 msgid "Plural forms expression used by the catalog is unusual for %s."
 msgstr ""
 
+#. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the catalog is unusual for %s.")"
 msgid "Review"
 msgstr ""
 
@@ -578,6 +690,12 @@ msgid_plural "%d errors"
 msgstr[0] ""
 msgstr[1] ""
 
+#, c-format
+msgid "%d entry"
+msgid_plural "%d entries"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid " (unsaved)"
 msgstr ""
 
@@ -691,6 +809,9 @@ msgstr ""
 msgid "Form %i"
 msgstr "%i থেকে"
 
+msgid "Singular"
+msgstr ""
+
 msgid "Zero"
 msgstr ""
 
@@ -700,6 +821,9 @@ msgstr ""
 msgid "Two"
 msgstr ""
 
+msgid "Plural"
+msgstr ""
+
 msgid "Other"
 msgstr ""
 
@@ -728,6 +852,12 @@ msgstr ""
 msgid "Show Sidebar"
 msgstr ""
 
+msgid "Hide Status Bar"
+msgstr ""
+
+msgid "Show Status Bar"
+msgstr ""
+
 msgid "Source text"
 msgstr ""
 
@@ -737,6 +867,10 @@ msgstr "অনুবাদ"
 msgid "ID"
 msgstr ""
 
+#, c-format
+msgid "Source text — %s"
+msgstr ""
+
 msgid "unknown language"
 msgstr ""
 
@@ -747,57 +881,73 @@ msgstr ""
 msgid "Error:"
 msgstr ""
 
-msgid "Project info"
-msgstr "প্রজেক্টের তথ্য"
+msgid "Source file"
+msgstr "মূল ফাইল"
 
-msgid "Project name and version:"
-msgstr "প্রজেক্টের নাম এবং ভার্সন:"
+msgid "Source file occurrence:"
+msgstr ""
 
-msgid "Language:"
-msgstr "ভাষা:"
+msgid "Open in Editor"
+msgstr ""
 
-msgid "Team:"
-msgstr "দল:"
+msgid "Open in editor"
+msgstr ""
 
-msgid "Team's email address:"
-msgstr "দলের ই-মেইল ঠিকানা:"
+msgid "No references for the selected item."
+msgstr ""
 
-msgid "Charset:"
-msgstr "লিপিমালা:"
+#, c-format
+msgid "Error opening file %s!"
+msgstr "%s ফাইল খুলতে সমস্যা হয়েছে!"
 
-msgid "Source"
+msgid "Find"
 msgstr ""
 
-msgid "Notes"
-msgstr "দ্রষ্টব্য"
+msgid "Replace"
+msgstr ""
 
-msgid "Automatic translation"
-msgstr "সয়ংক্রিয় অনুবাদ"
+#. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.)
+msgid "Options"
+msgstr ""
 
-msgid "Fuzzy translation"
-msgstr "অস্পষ্ট অনুবাদ"
+msgid "Ignore case"
+msgstr ""
 
-msgid "Notes for translators:"
+msgid "Wrap around"
 msgstr ""
 
-msgid "Comment:"
-msgstr "মন্তব্য:"
+msgid "Whole words only"
+msgstr "শুধুমাত্র সম্পুর্ন শব্দ"
 
-msgid "Source file"
-msgstr "মূল ফাইল"
+msgid "Find in source texts"
+msgstr ""
 
-msgid "Source file occurrence:"
+msgid "Find in translations"
 msgstr ""
 
-msgid "Open in Editor"
+msgid "Find in comments"
+msgstr "মন্তব্যে অনুসন্ধান করো"
+
+msgid "Close"
 msgstr ""
 
-msgid "Open in editor"
+msgid "Replace All"
 msgstr ""
 
-#, c-format
-msgid "Error opening file %s!"
-msgstr "%s ফাইল খুলতে সমস্যা হয়েছে!"
+msgid "Replace all"
+msgstr ""
+
+msgid "< &Previous"
+msgstr ""
+
+msgid "&Next >"
+msgstr ""
+
+msgid "String to find"
+msgstr ""
+
+msgid "Replacement string"
+msgstr ""
 
 #, c-format
 msgid "Cannot execute program: %s"
@@ -990,9 +1140,19 @@ msgstr "নতুন"
 msgid "Edit"
 msgstr "সম্পাদন"
 
+msgid "Delete extractor"
+msgstr ""
+
+#, c-format
+msgid "Are you sure you want to delete the “%s” extractor?"
+msgstr ""
+
 msgid "Extractors"
 msgstr ""
 
+msgid "Accounts"
+msgstr ""
+
 msgid "Automatically check for updates"
 msgstr ""
 
@@ -1031,7 +1191,34 @@ msgstr ""
 msgid "Advanced"
 msgstr ""
 
-msgid "Additional keywords"
+msgid ""
+"<big>Drag and Drop Folders Here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+
+msgid ""
+"<big>Drag and drop folders here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+
+msgid "Add Folders..."
+msgstr ""
+
+msgid "Add folders..."
+msgstr ""
+
+msgid "Add Files..."
+msgstr ""
+
+msgid "Add files..."
+msgstr ""
+
+msgid "Add Wildcard..."
+msgstr ""
+
+msgid "Add wildcard..."
 msgstr ""
 
 msgid "Paths"
@@ -1040,6 +1227,9 @@ msgstr "পাথ"
 msgid "Excluded paths"
 msgstr ""
 
+msgid "Additional keywords"
+msgstr ""
+
 msgid "Name of the project the translation is for"
 msgstr ""
 
@@ -1052,6 +1242,9 @@ msgstr ""
 msgid "Please save the file first. This section cannot be edited until then."
 msgstr ""
 
+msgid "Comment:"
+msgstr "মন্তব্য:"
+
 msgid "OK"
 msgstr "ঠিক আছে"
 
@@ -1061,42 +1254,6 @@ msgstr ""
 msgid "Clear the comment"
 msgstr "মন্তব্য মুছে ফেলো"
 
-msgid "Find..."
-msgstr "অনুসন্ধান..."
-
-msgid "String to find:"
-msgstr "অনুসন্ধান করার জন্য বাক্য:"
-
-msgid "Case sensitive"
-msgstr "অক্ষর সুবেদী"
-
-msgid "Start from the first item"
-msgstr "প্রথম উপাদান থেকে শুরু করো"
-
-msgid "Whole words only"
-msgstr "শুধুমাত্র সম্পুর্ন শব্দ"
-
-msgid "Find in original strings"
-msgstr "মূল বাক্যের মধ্যে অনুসন্ধান করো"
-
-msgid "Find in translations"
-msgstr ""
-
-msgid "Find in comments"
-msgstr "মন্তব্যে অনুসন্ধান করো"
-
-msgid "Find in automatic comments"
-msgstr "&সয়ংক্রিয় মন্তব্য উইন্ডোতে অনুসন্ধান করো"
-
-msgid "Close"
-msgstr ""
-
-msgid "< &Previous"
-msgstr ""
-
-msgid "&Next >"
-msgstr ""
-
 msgid "Create new translations project"
 msgstr "নতুন অনুবাদ প্রজেক্ট তৈরী করো"
 
@@ -1151,6 +1308,12 @@ msgstr "&খুলবে"
 msgid "Open Recent"
 msgstr ""
 
+msgid "Open from Crowdin..."
+msgstr ""
+
+msgid "Open From Crowdin..."
+msgstr ""
+
 msgid "&Save"
 msgstr "&সংরক্ষণ"
 
@@ -1199,13 +1362,16 @@ msgstr ""
 msgid "&Find..."
 msgstr "&অনুসন্ধান"
 
+msgid "Replace..."
+msgstr ""
+
 msgid "Find next"
 msgstr ""
 
 msgid "Find previous"
 msgstr ""
 
-msgid "Find"
+msgid "Find and Replace..."
 msgstr ""
 
 msgid "Find Next"
@@ -1247,6 +1413,12 @@ msgstr ""
 msgid "&Group By Context"
 msgstr ""
 
+msgid "Entries with errors first"
+msgstr ""
+
+msgid "Entries with Errors First"
+msgstr ""
+
 msgid "&Untranslated entries first"
 msgstr ""
 
@@ -1256,6 +1428,9 @@ msgstr ""
 msgid "Show sidebar"
 msgstr ""
 
+msgid "Show status bar"
+msgstr ""
+
 msgid "C&atalog"
 msgstr "তালি&কা"
 
@@ -1271,6 +1446,9 @@ msgstr "&POT ফাইল থেকে আপডেট করো..."
 msgid "Update from &POT File..."
 msgstr ""
 
+msgid "Sync with Crowdin"
+msgstr ""
+
 msgid "Fill missing translations from &TM..."
 msgstr ""
 
@@ -1394,6 +1572,9 @@ msgstr ""
 msgid "Catalog properties"
 msgstr ""
 
+msgid "Project name and version:"
+msgstr "প্রজেক্টের নাম এবং ভার্সন:"
+
 msgid "Plural Forms:"
 msgstr "বহুবচন আকারসমূহ:"
 
@@ -1406,16 +1587,28 @@ msgstr ""
 msgid "Learn about plural forms"
 msgstr ""
 
+msgid "Charset:"
+msgstr "লিপিমালা:"
+
+msgid "Team:"
+msgstr "দল:"
+
+msgid "Team's email address:"
+msgstr "দলের ই-মেইল ঠিকানা:"
+
 msgid "Translation properties"
 msgstr ""
 
+msgid "Sources paths"
+msgstr ""
+
 msgid "Extract text from source files in the following directories:"
 msgstr ""
 
 msgid "Base path:"
 msgstr "বেইজ পাথ:"
 
-msgid "Sources paths"
+msgid "Sources keywords"
 msgstr ""
 
 msgid ""
@@ -1426,9 +1619,6 @@ msgstr ""
 msgid "Learn about gettext keywords"
 msgstr ""
 
-msgid "Sources keywords"
-msgstr ""
-
 msgid "Update summary"
 msgstr "সারাংশ আপডেট করো"
 
@@ -1476,7 +1666,7 @@ msgstr "উৎ‌সের সাথে মিলিয়ে - তালিকা
 msgid "Toggled if selected string has fuzzy translation"
 msgstr "নির্বাচিত বাক্যে অস্পষ্ট অনুবাদ থাকলে প্রতিস্থাপন করো"
 
-msgid "Show or hide the sidebar."
+msgid "Show or hide the sidebar"
 msgstr ""
 
 #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer.
@@ -1488,6 +1678,9 @@ msgid ""
 "translation corresponds to."
 msgstr ""
 
+msgid "Notes for translators:"
+msgstr ""
+
 msgid "Add comment"
 msgstr ""
 
@@ -1560,14 +1753,21 @@ msgstr ""
 msgid "Open an existing PO file and edit the translation."
 msgstr ""
 
-msgid "Create new translation"
-msgstr ""
-
 msgid ""
 "Take an existing PO file or POT template and create a new translation from "
 "it."
 msgstr ""
 
+msgid "Collaborate on a translation with Crowdin"
+msgstr ""
+
+msgid ""
+"Download a file from Crowdin project, translate and sync your changes back."
+msgstr ""
+
+msgid "What is Crowdin?"
+msgstr ""
+
 msgid "There are no translations. That’s unusual."
 msgstr ""
 
@@ -1600,3 +1800,9 @@ msgstr ""
 
 msgid "Configure source code extraction in Properties."
 msgstr ""
+
+msgid "Sync"
+msgstr ""
+
+msgid "Synchronize the translation with Crowdin"
+msgstr ""
diff --git a/locales/br.mo b/locales/br.mo
index a0f05fc..c7d1be1 100644
Binary files a/locales/br.mo and b/locales/br.mo differ
diff --git a/locales/br.po b/locales/br.po
index 3a863bf..855b36b 100644
--- a/locales/br.po
+++ b/locales/br.po
@@ -2,8 +2,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: poedit\n"
 "Report-Msgid-Bugs-To: help at poedit.net\n"
-"POT-Creation-Date: 2015-01-10 16:00+0100\n"
-"PO-Revision-Date: 2015-03-10 12:33-0400\n"
+"POT-Creation-Date: 2015-05-27 11:31+0200\n"
+"PO-Revision-Date: 2015-05-27 05:18-0400\n"
 "Last-Translator: vslavik <vaclav at slavik.io>\n"
 "Language-Team: Breton\n"
 "Language: br_FR\n"
@@ -85,6 +85,15 @@ msgstr ""
 msgid "Error saving catalog"
 msgstr "Fazi en ur enrollañ ar c'hatalog"
 
+msgid "PO Translation Files"
+msgstr ""
+
+msgid "POT Translation Templates"
+msgstr ""
+
+msgid "All Translation Files"
+msgstr ""
+
 msgid "Merging differences..."
 msgstr "Kendeuziñ an diforc'hioù..."
 
@@ -104,6 +113,83 @@ msgstr "Dibab ar yezh"
 msgid "You must restart Poedit for this change to take effect."
 msgstr "Ret ro deoc'h adloc'hañ Poedit evit ma vo oberiant ho kemmoù."
 
+msgid "Downloading translations is disabled in this project."
+msgstr ""
+
+msgid "Not authorized, please sign in again."
+msgstr ""
+
+msgid "Sign in to Crowdin"
+msgstr ""
+
+msgid ""
+"Crowdin is an online localization management platform and collaborative "
+"translation tool. Poedit can seamlessly sync PO files managed at Crowdin."
+msgstr ""
+
+msgid "Sign In"
+msgstr ""
+
+msgid "Sign in"
+msgstr ""
+
+msgid "Sign Out"
+msgstr ""
+
+msgid "Sign out"
+msgstr ""
+
+msgid "Waiting for authentication…"
+msgstr ""
+
+msgid "Updating user information…"
+msgstr ""
+
+msgid "Signed in as:"
+msgstr ""
+
+msgid "Learn More About Crowdin"
+msgstr ""
+
+msgid "Learn more about Crowdin"
+msgstr ""
+
+msgid "Open Crowdin translation"
+msgstr ""
+
+msgid "Project:"
+msgstr ""
+
+msgid "Language:"
+msgstr "Yezh :"
+
+msgid "File:"
+msgstr ""
+
+msgid "No translation projects listed in your Crowdin account."
+msgstr ""
+
+msgid "This project has no files that can be translated in Poedit."
+msgstr ""
+
+msgid "This file can only be edited in Crowdin’s web interface."
+msgstr ""
+
+msgid "Downloading latest translations…"
+msgstr ""
+
+msgid "Syncing with Crowdin"
+msgstr ""
+
+msgid "Syncing with Crowdin failed."
+msgstr ""
+
+msgid "Crowdin error"
+msgstr ""
+
+msgid "Uploading translations…"
+msgstr ""
+
 msgid "&Copy"
 msgstr ""
 
@@ -148,6 +234,12 @@ msgstr ""
 msgid "don't delete temporary files (for debugging)"
 msgstr ""
 
+msgid "handle a poedit:// URI"
+msgstr ""
+
+msgid "Failed to communicate with Poedit process."
+msgstr ""
+
 #, c-format
 msgid "Unhandled exception occurred: %s"
 msgstr ""
@@ -158,12 +250,6 @@ msgstr ""
 msgid "Open catalog"
 msgstr "Digeriñ ur c'hatalog"
 
-msgid "All Files"
-msgstr ""
-
-msgid "PO Translation Files"
-msgstr ""
-
 #, c-format
 msgid "File '%s' doesn't exist."
 msgstr "N'eus ket eus ar restr '%s'."
@@ -391,6 +477,17 @@ msgstr "Liester :"
 msgid "Translation:"
 msgstr ""
 
+msgid ""
+"POT files are only templates and don’t contain any translations themselves.\n"
+"To make a translation, create a new PO file based on the template."
+msgstr ""
+
+msgid "Create New Translation"
+msgstr ""
+
+msgid "Create new translation"
+msgstr ""
+
 #. TRANSLATORS: %s is language name in its basic form (as you
 #. would see e.g. in a list of supported languages). You may need
 #. to rephrase it, e.g. to an equivalent of "for language %s".
@@ -438,9 +535,6 @@ msgstr ""
 msgid "Open catalog template"
 msgstr "Digeriñ ur patrom katalog"
 
-msgid "POT Translation Templates"
-msgstr ""
-
 msgid "Updating catalog"
 msgstr ""
 
@@ -509,16 +603,18 @@ msgstr[1] ""
 msgid "The translation is ready for use."
 msgstr ""
 
-msgid "No references to this string found."
-msgstr "N'eus bet kavet dave ebet d'an hedad."
-
-msgid "Please choose the reference you want to show:"
-msgstr "Dibabit an dave ho peus c'hoant da ziskouez :"
+msgid "Context:"
+msgstr ""
 
-msgid "References"
-msgstr "Daveoù"
+#, c-format
+msgid "Poedit automatically fixed invalid content in the file “%s”."
+msgstr ""
 
-msgid "Context:"
+msgid ""
+"The file contained duplicate items, which is not allowed in PO files and "
+"would prevent the file from being used. Poedit fixed the issue, but you "
+"should review translations of any items marked as fuzzy and correct them if "
+"necessary."
 msgstr ""
 
 msgid "Language of the translation isn't set."
@@ -530,6 +626,21 @@ msgstr ""
 msgid "Set language"
 msgstr ""
 
+#. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)."
+msgid ""
+"Suggestions are not available if the translation language is not set "
+"correctly. Other features, such as plural forms, may be affected as well."
+msgstr ""
+
+msgid "Language of the translation is the same as source language."
+msgstr ""
+
+msgid "Fix Language"
+msgstr ""
+
+msgid "Fix language"
+msgstr ""
+
 msgid ""
 "This catalog has entries with plural forms, but doesn't have Plural-Forms "
 "header configured."
@@ -560,6 +671,7 @@ msgstr ""
 msgid "Plural forms expression used by the catalog is unusual for %s."
 msgstr ""
 
+#. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the catalog is unusual for %s.")"
 msgid "Review"
 msgstr ""
 
@@ -581,6 +693,12 @@ msgid_plural "%d errors"
 msgstr[0] ""
 msgstr[1] ""
 
+#, c-format
+msgid "%d entry"
+msgid_plural "%d entries"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid " (unsaved)"
 msgstr ""
 
@@ -694,6 +812,9 @@ msgstr ""
 msgid "Form %i"
 msgstr ""
 
+msgid "Singular"
+msgstr ""
+
 msgid "Zero"
 msgstr ""
 
@@ -703,6 +824,9 @@ msgstr ""
 msgid "Two"
 msgstr ""
 
+msgid "Plural"
+msgstr ""
+
 msgid "Other"
 msgstr ""
 
@@ -731,6 +855,12 @@ msgstr ""
 msgid "Show Sidebar"
 msgstr ""
 
+msgid "Hide Status Bar"
+msgstr ""
+
+msgid "Show Status Bar"
+msgstr ""
+
 msgid "Source text"
 msgstr ""
 
@@ -740,6 +870,10 @@ msgstr "Troidigezh"
 msgid "ID"
 msgstr ""
 
+#, c-format
+msgid "Source text — %s"
+msgstr ""
+
 msgid "unknown language"
 msgstr ""
 
@@ -750,57 +884,73 @@ msgstr ""
 msgid "Error:"
 msgstr ""
 
-msgid "Project info"
-msgstr "Titouroù raktres"
+msgid "Source file"
+msgstr "Restr tarzh "
 
-msgid "Project name and version:"
-msgstr "Anv ha stumm ar raktres :"
+msgid "Source file occurrence:"
+msgstr ""
 
-msgid "Language:"
-msgstr "Yezh :"
+msgid "Open in Editor"
+msgstr ""
 
-msgid "Team:"
-msgstr "Skipailh:"
+msgid "Open in editor"
+msgstr ""
 
-msgid "Team's email address:"
-msgstr "Postel ar skipailh :"
+msgid "No references for the selected item."
+msgstr ""
 
-msgid "Charset:"
-msgstr "Bodad-arouezennoù :"
+#, c-format
+msgid "Error opening file %s!"
+msgstr "Fazi en ur zigeriñ ar restr %s !"
 
-msgid "Source"
+msgid "Find"
 msgstr ""
 
-msgid "Notes"
-msgstr "Notennoù"
+msgid "Replace"
+msgstr ""
 
-msgid "Automatic translation"
-msgstr "Treiñ war-eeun"
+#. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.)
+msgid "Options"
+msgstr ""
 
-msgid "Fuzzy translation"
-msgstr "Troidigezh damc'hraet"
+msgid "Ignore case"
+msgstr ""
 
-msgid "Notes for translators:"
+msgid "Wrap around"
 msgstr ""
 
-msgid "Comment:"
-msgstr "Evezhiadenn :"
+msgid "Whole words only"
+msgstr "Gerioù a-bezh hepken"
 
-msgid "Source file"
-msgstr "Restr tarzh "
+msgid "Find in source texts"
+msgstr ""
 
-msgid "Source file occurrence:"
+msgid "Find in translations"
 msgstr ""
 
-msgid "Open in Editor"
+msgid "Find in comments"
+msgstr "Klask e-touez an evezhiadennoù"
+
+msgid "Close"
 msgstr ""
 
-msgid "Open in editor"
+msgid "Replace All"
 msgstr ""
 
-#, c-format
-msgid "Error opening file %s!"
-msgstr "Fazi en ur zigeriñ ar restr %s !"
+msgid "Replace all"
+msgstr ""
+
+msgid "< &Previous"
+msgstr ""
+
+msgid "&Next >"
+msgstr ""
+
+msgid "String to find"
+msgstr ""
+
+msgid "Replacement string"
+msgstr ""
 
 #, c-format
 msgid "Cannot execute program: %s"
@@ -993,9 +1143,19 @@ msgstr "Nevez"
 msgid "Edit"
 msgstr "Kemmañ"
 
+msgid "Delete extractor"
+msgstr ""
+
+#, c-format
+msgid "Are you sure you want to delete the “%s” extractor?"
+msgstr ""
+
 msgid "Extractors"
 msgstr ""
 
+msgid "Accounts"
+msgstr ""
+
 msgid "Automatically check for updates"
 msgstr ""
 
@@ -1034,7 +1194,34 @@ msgstr ""
 msgid "Advanced"
 msgstr ""
 
-msgid "Additional keywords"
+msgid ""
+"<big>Drag and Drop Folders Here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+
+msgid ""
+"<big>Drag and drop folders here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+
+msgid "Add Folders..."
+msgstr ""
+
+msgid "Add folders..."
+msgstr ""
+
+msgid "Add Files..."
+msgstr ""
+
+msgid "Add files..."
+msgstr ""
+
+msgid "Add Wildcard..."
+msgstr ""
+
+msgid "Add wildcard..."
 msgstr ""
 
 msgid "Paths"
@@ -1043,6 +1230,9 @@ msgstr "Hentoù-lec'hiañ"
 msgid "Excluded paths"
 msgstr ""
 
+msgid "Additional keywords"
+msgstr ""
+
 msgid "Name of the project the translation is for"
 msgstr ""
 
@@ -1055,6 +1245,9 @@ msgstr ""
 msgid "Please save the file first. This section cannot be edited until then."
 msgstr ""
 
+msgid "Comment:"
+msgstr "Evezhiadenn :"
+
 msgid "OK"
 msgstr "Mat eo"
 
@@ -1064,42 +1257,6 @@ msgstr ""
 msgid "Clear the comment"
 msgstr "Diverkañ an evezhiadenn"
 
-msgid "Find..."
-msgstr "Klask..."
-
-msgid "String to find:"
-msgstr "Hedad da glask :"
-
-msgid "Case sensitive"
-msgstr "Diwall gant ar pennlizherennoù"
-
-msgid "Start from the first item"
-msgstr "Kregiñ adalek an elfenn gentañ"
-
-msgid "Whole words only"
-msgstr "Gerioù a-bezh hepken"
-
-msgid "Find in original strings"
-msgstr "Klask en hedadoù a-orin"
-
-msgid "Find in translations"
-msgstr ""
-
-msgid "Find in comments"
-msgstr "Klask e-touez an evezhiadennoù"
-
-msgid "Find in automatic comments"
-msgstr "Klask e-touez an evezhiadennoù automatek"
-
-msgid "Close"
-msgstr ""
-
-msgid "< &Previous"
-msgstr ""
-
-msgid "&Next >"
-msgstr ""
-
 msgid "Create new translations project"
 msgstr "Sevel ur raktres treiñ nevez"
 
@@ -1154,6 +1311,12 @@ msgstr ""
 msgid "Open Recent"
 msgstr ""
 
+msgid "Open from Crowdin..."
+msgstr ""
+
+msgid "Open From Crowdin..."
+msgstr ""
+
 msgid "&Save"
 msgstr "&Enrollañ"
 
@@ -1202,13 +1365,16 @@ msgstr ""
 msgid "&Find..."
 msgstr "&Klask..."
 
+msgid "Replace..."
+msgstr ""
+
 msgid "Find next"
 msgstr ""
 
 msgid "Find previous"
 msgstr ""
 
-msgid "Find"
+msgid "Find and Replace..."
 msgstr ""
 
 msgid "Find Next"
@@ -1250,6 +1416,12 @@ msgstr ""
 msgid "&Group By Context"
 msgstr ""
 
+msgid "Entries with errors first"
+msgstr ""
+
+msgid "Entries with Errors First"
+msgstr ""
+
 msgid "&Untranslated entries first"
 msgstr ""
 
@@ -1259,6 +1431,9 @@ msgstr ""
 msgid "Show sidebar"
 msgstr ""
 
+msgid "Show status bar"
+msgstr ""
+
 msgid "C&atalog"
 msgstr "K&atalog"
 
@@ -1274,6 +1449,9 @@ msgstr "Hizivaat adalek ur restr &POT..."
 msgid "Update from &POT File..."
 msgstr ""
 
+msgid "Sync with Crowdin"
+msgstr ""
+
 msgid "Fill missing translations from &TM..."
 msgstr ""
 
@@ -1397,6 +1575,9 @@ msgstr ""
 msgid "Catalog properties"
 msgstr ""
 
+msgid "Project name and version:"
+msgstr "Anv ha stumm ar raktres :"
+
 msgid "Plural Forms:"
 msgstr "Furmoù liester :"
 
@@ -1409,16 +1590,28 @@ msgstr ""
 msgid "Learn about plural forms"
 msgstr ""
 
+msgid "Charset:"
+msgstr "Bodad-arouezennoù :"
+
+msgid "Team:"
+msgstr "Skipailh:"
+
+msgid "Team's email address:"
+msgstr "Postel ar skipailh :"
+
 msgid "Translation properties"
 msgstr ""
 
+msgid "Sources paths"
+msgstr ""
+
 msgid "Extract text from source files in the following directories:"
 msgstr ""
 
 msgid "Base path:"
 msgstr "Hent-lec'hiañ diazez :"
 
-msgid "Sources paths"
+msgid "Sources keywords"
 msgstr ""
 
 msgid ""
@@ -1429,9 +1622,6 @@ msgstr ""
 msgid "Learn about gettext keywords"
 msgstr ""
 
-msgid "Sources keywords"
-msgstr ""
-
 msgid "Update summary"
 msgstr "Hizivaat an diverradenn"
 
@@ -1479,7 +1669,7 @@ msgstr "Hizivaat ar c'hatalog - kempredañ anezhañ gant an tarzhoù"
 msgid "Toggled if selected string has fuzzy translation"
 msgstr "Lakaet war an tu gin m'eo dammdroet an hedad dibabet"
 
-msgid "Show or hide the sidebar."
+msgid "Show or hide the sidebar"
 msgstr ""
 
 #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer.
@@ -1491,6 +1681,9 @@ msgid ""
 "translation corresponds to."
 msgstr ""
 
+msgid "Notes for translators:"
+msgstr ""
+
 msgid "Add comment"
 msgstr ""
 
@@ -1563,14 +1756,21 @@ msgstr ""
 msgid "Open an existing PO file and edit the translation."
 msgstr ""
 
-msgid "Create new translation"
-msgstr ""
-
 msgid ""
 "Take an existing PO file or POT template and create a new translation from "
 "it."
 msgstr ""
 
+msgid "Collaborate on a translation with Crowdin"
+msgstr ""
+
+msgid ""
+"Download a file from Crowdin project, translate and sync your changes back."
+msgstr ""
+
+msgid "What is Crowdin?"
+msgstr ""
+
 msgid "There are no translations. That’s unusual."
 msgstr ""
 
@@ -1603,3 +1803,9 @@ msgstr ""
 
 msgid "Configure source code extraction in Properties."
 msgstr ""
+
+msgid "Sync"
+msgstr ""
+
+msgid "Synchronize the translation with Crowdin"
+msgstr ""
diff --git a/locales/bs.mo b/locales/bs.mo
index 84500cc..ed3e659 100644
Binary files a/locales/bs.mo and b/locales/bs.mo differ
diff --git a/locales/bs.po b/locales/bs.po
index 090d900..61825b8 100644
--- a/locales/bs.po
+++ b/locales/bs.po
@@ -2,8 +2,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: poedit\n"
 "Report-Msgid-Bugs-To: help at poedit.net\n"
-"POT-Creation-Date: 2015-01-10 16:00+0100\n"
-"PO-Revision-Date: 2015-03-10 12:33-0400\n"
+"POT-Creation-Date: 2015-05-27 11:31+0200\n"
+"PO-Revision-Date: 2015-05-27 05:30-0400\n"
 "Last-Translator: vslavik <vaclav at slavik.io>\n"
 "Language-Team: Bosnian\n"
 "Language: bs_BA\n"
@@ -96,6 +96,15 @@ msgstr ""
 msgid "Error saving catalog"
 msgstr "Greška pri snimanju kataloga"
 
+msgid "PO Translation Files"
+msgstr "PO fajlovi sa prijevodom"
+
+msgid "POT Translation Templates"
+msgstr "POT predlošci prijevoda"
+
+msgid "All Translation Files"
+msgstr ""
+
 msgid "Merging differences..."
 msgstr "Sastavljanje razlika..."
 
@@ -115,6 +124,86 @@ msgstr "Odabir jezika"
 msgid "You must restart Poedit for this change to take effect."
 msgstr "Morate ponovo pokrenuti Poedit da bi promjene počele djelovati."
 
+msgid "Downloading translations is disabled in this project."
+msgstr "Preuzimanje prijevoda je onemogućeno u ovom projektu."
+
+msgid "Not authorized, please sign in again."
+msgstr "Nemate ovlaštenje, molimo vas da se ponovo prijavite."
+
+msgid "Sign in to Crowdin"
+msgstr "Prijavi se u Crowdin"
+
+msgid ""
+"Crowdin is an online localization management platform and collaborative "
+"translation tool. Poedit can seamlessly sync PO files managed at Crowdin."
+msgstr ""
+"Crowdin je online platforma za upravljanje lokalizacijama i kolaborativni "
+"prevodilački alat. Poedit može neprimjetno sinhronizovati PO datoteke na "
+"Crowdinu."
+
+msgid "Sign In"
+msgstr "Prijava"
+
+msgid "Sign in"
+msgstr "Prijava"
+
+msgid "Sign Out"
+msgstr "Odjava"
+
+msgid "Sign out"
+msgstr "Odjava"
+
+msgid "Waiting for authentication…"
+msgstr "Čekam na autentifikaciju..."
+
+msgid "Updating user information…"
+msgstr "Ažuriram korisničke informacije..."
+
+msgid "Signed in as:"
+msgstr "Prijavljeni ste kao:"
+
+msgid "Learn More About Crowdin"
+msgstr "Saznaj više o Crowdinu"
+
+msgid "Learn more about Crowdin"
+msgstr "Saznaj više o Crowdinu"
+
+msgid "Open Crowdin translation"
+msgstr "Otvori Crowdin prijevod"
+
+msgid "Project:"
+msgstr "Projekat:"
+
+msgid "Language:"
+msgstr "Jezik:"
+
+msgid "File:"
+msgstr "Datoteka:"
+
+msgid "No translation projects listed in your Crowdin account."
+msgstr "Nema projekata u vašem Crowdin računu."
+
+msgid "This project has no files that can be translated in Poedit."
+msgstr "Ovaj projekat nema datoteka koje je moguće prevoditi u Poeditu."
+
+msgid "This file can only be edited in Crowdin’s web interface."
+msgstr ""
+
+msgid "Downloading latest translations…"
+msgstr "Preuzimam najnovije prijevode..."
+
+msgid "Syncing with Crowdin"
+msgstr "Sinhroniziram sa Crowdinom"
+
+msgid "Syncing with Crowdin failed."
+msgstr "Sinhronizacija sa Crowdinom nije uspjela."
+
+msgid "Crowdin error"
+msgstr "Crowdin greška"
+
+msgid "Uploading translations…"
+msgstr "Ažuriram prijevode..."
+
 msgid "&Copy"
 msgstr "&Kopiraj"
 
@@ -161,6 +250,12 @@ msgstr ""
 msgid "don't delete temporary files (for debugging)"
 msgstr "ne briši privremene datoteke (zbog debugginga)"
 
+msgid "handle a poedit:// URI"
+msgstr "upravljač za poedit:// URI"
+
+msgid "Failed to communicate with Poedit process."
+msgstr ""
+
 #, c-format
 msgid "Unhandled exception occurred: %s"
 msgstr "Desio se neočekivan izuzetak: %s"
@@ -171,12 +266,6 @@ msgstr "Desio se neočekivan izuzetak."
 msgid "Open catalog"
 msgstr "Otvori katalog"
 
-msgid "All Files"
-msgstr "Svi fajlovi"
-
-msgid "PO Translation Files"
-msgstr "PO fajlovi sa prijevodom"
-
 #, c-format
 msgid "File '%s' doesn't exist."
 msgstr "Datoteka '%s' ne postoji."
@@ -404,6 +493,17 @@ msgstr "Množina:"
 msgid "Translation:"
 msgstr "Prijevod:"
 
+msgid ""
+"POT files are only templates and don’t contain any translations themselves.\n"
+"To make a translation, create a new PO file based on the template."
+msgstr ""
+
+msgid "Create New Translation"
+msgstr ""
+
+msgid "Create new translation"
+msgstr "Kreiraj novi prijevod"
+
 #. TRANSLATORS: %s is language name in its basic form (as you
 #. would see e.g. in a list of supported languages). You may need
 #. to rephrase it, e.g. to an equivalent of "for language %s".
@@ -452,9 +552,6 @@ msgstr "HTML fajlovi"
 msgid "Open catalog template"
 msgstr "Otvori predložak kataloga"
 
-msgid "POT Translation Templates"
-msgstr "POT predlošci prijevoda"
-
 msgid "Updating catalog"
 msgstr "Ažuriram katalog"
 
@@ -535,18 +632,20 @@ msgstr[2] "Prijevod je spreman za upotrebu, ali još %d unosa nije prevedeno."
 msgid "The translation is ready for use."
 msgstr "Prijevod je spreman za upotrebu."
 
-msgid "No references to this string found."
-msgstr "Nema pronađenih referenci vezanih za ovaj string."
-
-msgid "Please choose the reference you want to show:"
-msgstr "Molimo vas da odaberete reference koje želite prikazati:"
-
-msgid "References"
-msgstr "Reference"
-
 msgid "Context:"
 msgstr "Kontekst:"
 
+#, c-format
+msgid "Poedit automatically fixed invalid content in the file “%s”."
+msgstr ""
+
+msgid ""
+"The file contained duplicate items, which is not allowed in PO files and "
+"would prevent the file from being used. Poedit fixed the issue, but you "
+"should review translations of any items marked as fuzzy and correct them if "
+"necessary."
+msgstr ""
+
 msgid "Language of the translation isn't set."
 msgstr "Jezik prijevoda još nije postavljen."
 
@@ -556,6 +655,23 @@ msgstr "Postavi jezik"
 msgid "Set language"
 msgstr "Odaberite jezik"
 
+#. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)."
+msgid ""
+"Suggestions are not available if the translation language is not set "
+"correctly. Other features, such as plural forms, may be affected as well."
+msgstr ""
+"Prijedlozi nisu dostupni ako jezik prijevoda nije ispravno odabran. Ostale "
+"mogućnosti  također mogu biti nedostupne. kao npr. oblici množine."
+
+msgid "Language of the translation is the same as source language."
+msgstr "Jezik prijevoda je isti kao i izvorni jezik."
+
+msgid "Fix Language"
+msgstr "Popravi jezik"
+
+msgid "Fix language"
+msgstr "Popravi jezik"
+
 msgid ""
 "This catalog has entries with plural forms, but doesn't have Plural-Forms "
 "header configured."
@@ -590,6 +706,7 @@ msgstr "Popravi zaglavlje"
 msgid "Plural forms expression used by the catalog is unusual for %s."
 msgstr "Obrazac množine koji se koristi u katalogu nije uobičajen za %s jezik."
 
+#. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the catalog is unusual for %s.")"
 msgid "Review"
 msgstr "Pregledaj"
 
@@ -612,6 +729,13 @@ msgstr[0] "%d greška"
 msgstr[1] "%d greške"
 msgstr[2] "%d grešaka"
 
+#, c-format
+msgid "%d entry"
+msgid_plural "%d entries"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+
 msgid " (unsaved)"
 msgstr " (nesačuvano)"
 
@@ -739,6 +863,9 @@ msgstr "Sve"
 msgid "Form %i"
 msgstr "Oblik %i"
 
+msgid "Singular"
+msgstr ""
+
 msgid "Zero"
 msgstr "Nula"
 
@@ -748,6 +875,9 @@ msgstr "Jedan"
 msgid "Two"
 msgstr "Dva"
 
+msgid "Plural"
+msgstr ""
+
 msgid "Other"
 msgstr "Ostalo"
 
@@ -776,6 +906,12 @@ msgstr "Sakrij bočnu traku"
 msgid "Show Sidebar"
 msgstr "Prikaži bočnu traku"
 
+msgid "Hide Status Bar"
+msgstr ""
+
+msgid "Show Status Bar"
+msgstr ""
+
 msgid "Source text"
 msgstr "Originalni tekst"
 
@@ -785,6 +921,10 @@ msgstr "Prijevod"
 msgid "ID"
 msgstr "ID"
 
+#, c-format
+msgid "Source text — %s"
+msgstr "Izvorni tekst — %s"
+
 msgid "unknown language"
 msgstr "nepoznat jezik"
 
@@ -795,57 +935,73 @@ msgstr "Prijevod — %s"
 msgid "Error:"
 msgstr "Greška:"
 
-msgid "Project info"
-msgstr "Informacije o projektu"
+msgid "Source file"
+msgstr "Izvorna datoteka"
 
-msgid "Project name and version:"
-msgstr "Ime projekta i verzija:"
+msgid "Source file occurrence:"
+msgstr "Pojavljivanje originalne datoteke:"
 
-msgid "Language:"
-msgstr "Jezik:"
+msgid "Open in Editor"
+msgstr "Otvori u uređivaču"
 
-msgid "Team:"
-msgstr "Tim:"
+msgid "Open in editor"
+msgstr "Otvori u uređivaču"
 
-msgid "Team's email address:"
-msgstr "Email adresa tima:"
+msgid "No references for the selected item."
+msgstr "Nema referenci za odabranu stavku."
 
-msgid "Charset:"
-msgstr "Kodiranje znakova:"
+#, c-format
+msgid "Error opening file %s!"
+msgstr "Grešla pri otvaranju datoteke %s!"
 
-msgid "Source"
-msgstr "Original"
+msgid "Find"
+msgstr "Pronađi"
 
-msgid "Notes"
-msgstr "Bilješke"
+msgid "Replace"
+msgstr "Zamijeni"
 
-msgid "Automatic translation"
-msgstr "Automatski prijevod"
+#. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.)
+msgid "Options"
+msgstr "Opcije"
 
-msgid "Fuzzy translation"
-msgstr "Nejasan prijevod"
+msgid "Ignore case"
+msgstr "Zanemari velika/mala slova"
 
-msgid "Notes for translators:"
-msgstr "Napomena prevodiocu:"
+msgid "Wrap around"
+msgstr "Omotaj"
 
-msgid "Comment:"
-msgstr "Komentar:"
+msgid "Whole words only"
+msgstr "Samo cijele riječi"
 
-msgid "Source file"
-msgstr "Izvorna datoteka"
+msgid "Find in source texts"
+msgstr "Pronađi u izvornim tekstovima"
 
-msgid "Source file occurrence:"
-msgstr "Pojavljivanje originalne datoteke:"
+msgid "Find in translations"
+msgstr "Pronađi u prijevodima"
 
-msgid "Open in Editor"
-msgstr "Otvori u uređivaču"
+msgid "Find in comments"
+msgstr "Pronađi u komentarima"
 
-msgid "Open in editor"
-msgstr "Otvori u uređivaču"
+msgid "Close"
+msgstr "Zatvori"
 
-#, c-format
-msgid "Error opening file %s!"
-msgstr "Grešla pri otvaranju datoteke %s!"
+msgid "Replace All"
+msgstr "Zamijeni sve"
+
+msgid "Replace all"
+msgstr "Zamijeni sve"
+
+msgid "< &Previous"
+msgstr "< &Prethodno"
+
+msgid "&Next >"
+msgstr "&Sljedeće >"
+
+msgid "String to find"
+msgstr "String koji tražite"
+
+msgid "Replacement string"
+msgstr "Zamjenski string"
 
 #, c-format
 msgid "Cannot execute program: %s"
@@ -1049,9 +1205,19 @@ msgstr "Novo"
 msgid "Edit"
 msgstr "Uredi"
 
+msgid "Delete extractor"
+msgstr "Obriši ekstraktor"
+
+#, c-format
+msgid "Are you sure you want to delete the “%s” extractor?"
+msgstr "Jeste li sigurni da želite obrisati \"%s\" ekstrator?"
+
 msgid "Extractors"
 msgstr "Izdvajanje"
 
+msgid "Accounts"
+msgstr "Računi"
+
 msgid "Automatically check for updates"
 msgstr "Automatski provjeravaj ima li ažuriranja"
 
@@ -1094,8 +1260,35 @@ msgstr "Sačuvaj oblikovanje postojećih datoteka"
 msgid "Advanced"
 msgstr "Napredno"
 
-msgid "Additional keywords"
-msgstr "Dodatne ključne riječi"
+msgid ""
+"<big>Drag and Drop Folders Here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+
+msgid ""
+"<big>Drag and drop folders here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+
+msgid "Add Folders..."
+msgstr ""
+
+msgid "Add folders..."
+msgstr ""
+
+msgid "Add Files..."
+msgstr ""
+
+msgid "Add files..."
+msgstr ""
+
+msgid "Add Wildcard..."
+msgstr ""
+
+msgid "Add wildcard..."
+msgstr ""
 
 msgid "Paths"
 msgstr "Putanje"
@@ -1103,6 +1296,9 @@ msgstr "Putanje"
 msgid "Excluded paths"
 msgstr "Izuzete putanje"
 
+msgid "Additional keywords"
+msgstr "Dodatne ključne riječi"
+
 msgid "Name of the project the translation is for"
 msgstr "Naziv projekta za koji je namijenjen ovaj prijevod"
 
@@ -1117,6 +1313,9 @@ msgstr ""
 "Molimo vas da prvo sačuvate datoteku. Ova sekcija se ne može uređivati dok "
 "to ne uradite."
 
+msgid "Comment:"
+msgstr "Komentar:"
+
 msgid "OK"
 msgstr "U redu"
 
@@ -1126,42 +1325,6 @@ msgstr "O&čisti"
 msgid "Clear the comment"
 msgstr "Očisti komentar"
 
-msgid "Find..."
-msgstr "Pronađi..."
-
-msgid "String to find:"
-msgstr "Pronađi string:"
-
-msgid "Case sensitive"
-msgstr "Osjetljivost na mala i velika slova"
-
-msgid "Start from the first item"
-msgstr "Započni od prve stavke"
-
-msgid "Whole words only"
-msgstr "Samo cijele riječi"
-
-msgid "Find in original strings"
-msgstr "Pronađi u originalnim stringovima"
-
-msgid "Find in translations"
-msgstr "Pronađi u prijevodima"
-
-msgid "Find in comments"
-msgstr "Pronađi u komentarima"
-
-msgid "Find in automatic comments"
-msgstr "Pronađi u automatskim komentarima"
-
-msgid "Close"
-msgstr "Zatvori"
-
-msgid "< &Previous"
-msgstr "< &Prethodno"
-
-msgid "&Next >"
-msgstr "&Sljedeće >"
-
 msgid "Create new translations project"
 msgstr "Napravi novi projekt prevođenja"
 
@@ -1216,6 +1379,12 @@ msgstr "&Otvori..."
 msgid "Open Recent"
 msgstr "Otvori nedavne"
 
+msgid "Open from Crowdin..."
+msgstr "Otvori iz Crowdina..."
+
+msgid "Open From Crowdin..."
+msgstr "Otvori iz Crowdina..."
+
 msgid "&Save"
 msgstr "&Sačuvaj"
 
@@ -1264,14 +1433,17 @@ msgstr "&Prikaži reference"
 msgid "&Find..."
 msgstr "&Pronađi..."
 
+msgid "Replace..."
+msgstr "Zamijeni..."
+
 msgid "Find next"
 msgstr "Pronađi sljedeće"
 
 msgid "Find previous"
 msgstr "Pronađi prethodno"
 
-msgid "Find"
-msgstr "Pronađi"
+msgid "Find and Replace..."
+msgstr "Pronađi i zamijeni..."
 
 msgid "Find Next"
 msgstr "Pronađi sljedeće"
@@ -1312,6 +1484,12 @@ msgstr "& Grupiši po kontekstu"
 msgid "&Group By Context"
 msgstr "& Grupiši po kontekstu"
 
+msgid "Entries with errors first"
+msgstr "Prvo unosi sa greškama"
+
+msgid "Entries with Errors First"
+msgstr "Prvo unosi sa greškama"
+
 msgid "&Untranslated entries first"
 msgstr "&Prvo prikaži neprevedene rečenice"
 
@@ -1321,6 +1499,9 @@ msgstr "&Prvo prikaži neprevedene rečenice"
 msgid "Show sidebar"
 msgstr "Prikaži bočnu traku"
 
+msgid "Show status bar"
+msgstr ""
+
 msgid "C&atalog"
 msgstr "K&atalog"
 
@@ -1336,6 +1517,9 @@ msgstr "Ažuriraj iz &POT datoteke..."
 msgid "Update from &POT File..."
 msgstr "Ažuriraj iz &POT datoteke..."
 
+msgid "Sync with Crowdin"
+msgstr "Sinhronizuj sa Crowdinom"
+
 msgid "Fill missing translations from &TM..."
 msgstr "Popuni nedostajuće prijevode koristeći &TM..."
 
@@ -1464,6 +1648,9 @@ msgstr ""
 msgid "Catalog properties"
 msgstr "Svojstva kataloga"
 
+msgid "Project name and version:"
+msgstr "Ime projekta i verzija:"
+
 msgid "Plural Forms:"
 msgstr "Obrazac množine:"
 
@@ -1476,17 +1663,29 @@ msgstr "Koristi vlastiti izraz"
 msgid "Learn about plural forms"
 msgstr "Saznaj više o oblicima množina"
 
+msgid "Charset:"
+msgstr "Kodiranje znakova:"
+
+msgid "Team:"
+msgstr "Tim:"
+
+msgid "Team's email address:"
+msgstr "Email adresa tima:"
+
 msgid "Translation properties"
 msgstr "Svojstva prijevoda"
 
+msgid "Sources paths"
+msgstr "Putanje originala"
+
 msgid "Extract text from source files in the following directories:"
 msgstr "Izvezi tekst iz originalnih datoteka u sljedeće foldere:"
 
 msgid "Base path:"
 msgstr "Bazna putanja:"
 
-msgid "Sources paths"
-msgstr "Putanje originala"
+msgid "Sources keywords"
+msgstr "Ključne riječi originala"
 
 msgid ""
 "Use these keywords (function names) to recognize translatable strings\n"
@@ -1499,9 +1698,6 @@ msgstr ""
 msgid "Learn about gettext keywords"
 msgstr "Saznaj više o gettext ključnim riječima"
 
-msgid "Sources keywords"
-msgstr "Ključne riječi originala"
-
 msgid "Update summary"
 msgstr "Rezime ažuriranja"
 
@@ -1549,8 +1745,8 @@ msgstr "Ažuriraj katalog - sinhronizacija sa izvorima"
 msgid "Toggled if selected string has fuzzy translation"
 msgstr "Uključite ako odabrani string ima nejasan prijevod"
 
-msgid "Show or hide the sidebar."
-msgstr "Prikazuje ili sakriva bočnu traku."
+msgid "Show or hide the sidebar"
+msgstr "Prikazuje ili sakriva bočnu traku"
 
 #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer.
 msgid "Previous source text:"
@@ -1563,6 +1759,9 @@ msgstr ""
 "Stari izvorni tekst (prije promjene nakon ažuriranja) kojem je odgovarao "
 "nejasni prijevod."
 
+msgid "Notes for translators:"
+msgstr "Napomena prevodiocu:"
+
 msgid "Add comment"
 msgstr "Dodaj komentar"
 
@@ -1643,15 +1842,24 @@ msgstr "Uredi prijevod"
 msgid "Open an existing PO file and edit the translation."
 msgstr "Otvori postojeću PO datoteku i uredi prijevod."
 
-msgid "Create new translation"
-msgstr "Kreiraj novi prijevod"
-
 msgid ""
 "Take an existing PO file or POT template and create a new translation from "
 "it."
 msgstr ""
 "Uzmi postojeću PO datoteku ili POT predložak i kreiraj prijevod iz njega."
 
+msgid "Collaborate on a translation with Crowdin"
+msgstr "Sarađujte na prijevodu pomoću Crowdina"
+
+msgid ""
+"Download a file from Crowdin project, translate and sync your changes back."
+msgstr ""
+"Preuzmite datoteku sa Crowdina, prevedite je i pošaljite vaše prijevode "
+"nazad."
+
+msgid "What is Crowdin?"
+msgstr "Šta je Crowdin?"
+
 msgid "There are no translations. That’s unusual."
 msgstr "Nema prijevoda. Ovo je neobično."
 
@@ -1693,3 +1901,9 @@ msgstr "Ažuriraj iz originala"
 
 msgid "Configure source code extraction in Properties."
 msgstr "Konfigurišite izvoz izvornog koda u Svojstvima."
+
+msgid "Sync"
+msgstr "Sinhronizuj"
+
+msgid "Synchronize the translation with Crowdin"
+msgstr "Sinhronizuj prijevode sa Crowdinom"
diff --git a/locales/ca.mo b/locales/ca.mo
index e81b49c..46f97b5 100644
Binary files a/locales/ca.mo and b/locales/ca.mo differ
diff --git a/locales/ca.po b/locales/ca.po
index 7b9d44b..847ee28 100644
--- a/locales/ca.po
+++ b/locales/ca.po
@@ -2,8 +2,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: poedit\n"
 "Report-Msgid-Bugs-To: help at poedit.net\n"
-"POT-Creation-Date: 2015-01-10 16:00+0100\n"
-"PO-Revision-Date: 2015-03-10 12:33-0400\n"
+"POT-Creation-Date: 2015-05-27 11:31+0200\n"
+"PO-Revision-Date: 2015-05-27 05:17-0400\n"
 "Last-Translator: vslavik <vaclav at slavik.io>\n"
 "Language-Team: Catalan\n"
 "Language: ca_ES\n"
@@ -23,7 +23,7 @@ msgid "Don't Show Again"
 msgstr "No tornis a mostrar-ho"
 
 msgid "Don't show again"
-msgstr "No tornis a mostrar-ho"
+msgstr "No tornar a mostrar"
 
 #, c-format
 msgid "%i line of file '%s' was not loaded correctly."
@@ -42,7 +42,7 @@ msgstr "El format de la capçalera és incorrecte: «%s»"
 msgid ""
 "Broken catalog file: singular form msgstr used together with msgid_plural"
 msgstr ""
-"Fitxer de catàleg malmès: la forma singular del msgstr s'ha fet sevir "
+"Fitxer de catàleg malmès: la forma singular del msgstr s'ha fet servir "
 "conjuntament amb msgid_plural"
 
 msgid "Broken catalog file: plural form msgstr used without msgid_plural"
@@ -71,12 +71,12 @@ msgstr ""
 
 #, c-format
 msgid "Couldn't save file %s."
-msgstr "No s'ha pogut desar el fitxer %s."
+msgstr "No s’ha pogut desar el fitxer %s."
 
 msgid ""
 "There was a problem formatting the file nicely (but it was saved all right)."
 msgstr ""
-"S'ha produït un problema en formatar el fitxer (però s'ha desat "
+"S’ha produït un problema en formatar el fitxer (però s’ha desat "
 "correctament)."
 
 #, c-format
@@ -95,25 +95,115 @@ msgstr ""
 msgid "Error saving catalog"
 msgstr "S’ha produït un error en desar el catàleg"
 
+msgid "PO Translation Files"
+msgstr "Fitxers de traducció PO"
+
+msgid "POT Translation Templates"
+msgstr "Plantilles de traducció .POT"
+
+msgid "All Translation Files"
+msgstr "Tots els fitxers de traducció"
+
 msgid "Merging differences..."
 msgstr "S’estan fusionant les diferències…"
 
 #, c-format
 msgid "'%s' is not a valid POT file."
-msgstr "El fitxer «%s» no és un fitxer POT vàlid."
+msgstr "El fitxer POT «%s» no és vàlid."
 
 msgid "(Use default language)"
-msgstr "(Utilitza l'idioma predeterminat)"
+msgstr "(Usa l'idioma predeterminat)"
 
 msgid "Select your preferred language"
 msgstr "Trieu el vostre idioma preferit"
 
 msgid "Language selection"
-msgstr "Selecció d'idioma"
+msgstr "Selecció d’idioma"
 
 msgid "You must restart Poedit for this change to take effect."
 msgstr "Heu de reiniciar el Poedit perquè aquest canvi tingui efecte."
 
+msgid "Downloading translations is disabled in this project."
+msgstr "Aquest projecte ha inhabilitat les baixades de traduccions."
+
+msgid "Not authorized, please sign in again."
+msgstr "Acció no autoritzada. Inicieu una sessió de nou."
+
+msgid "Sign in to Crowdin"
+msgstr "Inicia la sessió a Crowdin"
+
+msgid ""
+"Crowdin is an online localization management platform and collaborative "
+"translation tool. Poedit can seamlessly sync PO files managed at Crowdin."
+msgstr ""
+"El Crowdin és una plataforma de gestió de localització en línia i una eina "
+"de traducció col·laborativa. El Poedit pot sincronitzar sense problema els "
+"fitxers PO gestionats al Crowdin."
+
+msgid "Sign In"
+msgstr "Inicia la sessió"
+
+msgid "Sign in"
+msgstr "Inicia la sessió"
+
+msgid "Sign Out"
+msgstr "Tanca la sessió"
+
+msgid "Sign out"
+msgstr "Tanca la sessió"
+
+msgid "Waiting for authentication…"
+msgstr "Esperant autenticació…"
+
+msgid "Updating user information…"
+msgstr "S'està actualitzant la informació d'usuari…"
+
+msgid "Signed in as:"
+msgstr "Sessió iniciada com a:"
+
+msgid "Learn More About Crowdin"
+msgstr "Més informació sobre el Crowdin"
+
+msgid "Learn more about Crowdin"
+msgstr "Més informació sobre el Crowdin"
+
+msgid "Open Crowdin translation"
+msgstr "Obre la traducció del Crowdin"
+
+msgid "Project:"
+msgstr "Projecte:"
+
+msgid "Language:"
+msgstr "Idioma:"
+
+msgid "File:"
+msgstr "Fitxer:"
+
+msgid "No translation projects listed in your Crowdin account."
+msgstr ""
+"No hi ha cap project de traducció llistada en el vostre compte de Crowdin."
+
+msgid "This project has no files that can be translated in Poedit."
+msgstr "Aquest project no té cap fitxer que es pugui traduir en el Poedit."
+
+msgid "This file can only be edited in Crowdin’s web interface."
+msgstr "Aquest fitxer només es pot editar en la interfície web del Crowdin."
+
+msgid "Downloading latest translations…"
+msgstr "S'estan baixant les traduccions més actuals…"
+
+msgid "Syncing with Crowdin"
+msgstr "S'està sincronitzant amb el Crowdin"
+
+msgid "Syncing with Crowdin failed."
+msgstr "La sincronització amb el Crowdin ha fallat."
+
+msgid "Crowdin error"
+msgstr "Error del Crowdin"
+
+msgid "Uploading translations…"
+msgstr "S’estan pujant les traduccions…"
+
 msgid "&Copy"
 msgstr "&Copia"
 
@@ -142,7 +232,7 @@ msgid "Failed to load extracted catalog."
 msgstr "No s'ha pogut carregar el catàleg extret."
 
 msgid "&Help"
-msgstr "A&juda"
+msgstr "&Ajuda"
 
 msgid "MO files can’t be directly edited in Poedit."
 msgstr "Els fitxers MO no es poden editar directament al Poedit."
@@ -160,6 +250,12 @@ msgstr ""
 msgid "don't delete temporary files (for debugging)"
 msgstr "no suprimeixis els fitxers temporals (per depuració)"
 
+msgid "handle a poedit:// URI"
+msgstr "gestiona un URI poedit://"
+
+msgid "Failed to communicate with Poedit process."
+msgstr ""
+
 #, c-format
 msgid "Unhandled exception occurred: %s"
 msgstr "S’ha produït una excepció no controlada: %s"
@@ -170,12 +266,6 @@ msgstr "S’ha produït una excepció no controlada."
 msgid "Open catalog"
 msgstr "Obre el catàleg"
 
-msgid "All Files"
-msgstr "Tots els fitxers"
-
-msgid "PO Translation Files"
-msgstr "Fitxers de traducció PO"
-
 #, c-format
 msgid "File '%s' doesn't exist."
 msgstr "El fitxer «%s» no existeix."
@@ -211,7 +301,7 @@ msgid "Redo"
 msgstr "Refés"
 
 msgid "Paste and Match Style"
-msgstr "Estil d'enganxa i concordança"
+msgstr "Enganxa amb el mateix estil"
 
 msgid "Delete"
 msgstr "Suprimeix"
@@ -403,6 +493,19 @@ msgstr "Plural:"
 msgid "Translation:"
 msgstr "Traducció:"
 
+msgid ""
+"POT files are only templates and don’t contain any translations themselves.\n"
+"To make a translation, create a new PO file based on the template."
+msgstr ""
+"Els fitxers POT només són plantilles i no contenen cap traducció.\n"
+"Per a fer una traducció, creeu un fitxer PO nou basat en la plantilla."
+
+msgid "Create New Translation"
+msgstr "Crea una traducció nova"
+
+msgid "Create new translation"
+msgstr "Crea una nova traducció"
+
 #. TRANSLATORS: %s is language name in its basic form (as you
 #. would see e.g. in a list of supported languages). You may need
 #. to rephrase it, e.g. to an equivalent of "for language %s".
@@ -452,9 +555,6 @@ msgstr "Fitxers HTML"
 msgid "Open catalog template"
 msgstr "Obre la plantilla de catàleg"
 
-msgid "POT Translation Templates"
-msgstr "Plantilles de traducció .POT"
-
 msgid "Updating catalog"
 msgstr "S'està actualitzant el catàleg"
 
@@ -486,7 +586,7 @@ msgstr[0] "S'ha trobat %d problema amb la traducció."
 msgstr[1] "S'han trobat %d problemes amb la traducció."
 
 msgid "Validation results"
-msgstr "Resultats de validació"
+msgstr "Resultats de la validació"
 
 msgid ""
 "Entries with errors were marked in red in the list. Details of the error "
@@ -530,27 +630,34 @@ msgid "The translation is ready for use, but %d entry is not translated yet."
 msgid_plural ""
 "The translation is ready for use, but %d entries are not translated yet."
 msgstr[0] ""
-"La traducció està a punt per ser utilitzada, però %d cadena no s'ha traduït "
-"encara."
+"La traducció està a punt de ser usada, però %d cadena encara no s'ha traduït."
 msgstr[1] ""
-"La traducció està a punt per ser utilitzada, però %d cadenes no s'han "
-"traduït encara."
+"La traducció està a punt de ser usada, però %d cadenes encara no s'han "
+"traduït."
 
 msgid "The translation is ready for use."
-msgstr "La memòria de traducció està llesta per ser utilitzada."
-
-msgid "No references to this string found."
-msgstr "No s'ha trobat cap referència a aquesta cadena."
-
-msgid "Please choose the reference you want to show:"
-msgstr "Trieu la referència que vulgueu mostrar:"
-
-msgid "References"
-msgstr "Referències"
+msgstr "La memòria de traducció està llesta per a ser usada."
 
 msgid "Context:"
 msgstr "Context:"
 
+#, c-format
+msgid "Poedit automatically fixed invalid content in the file “%s”."
+msgstr ""
+"El Poedit ha corregit automàticament el contingut invàlid en el fitxer \"%s"
+"\"."
+
+msgid ""
+"The file contained duplicate items, which is not allowed in PO files and "
+"would prevent the file from being used. Poedit fixed the issue, but you "
+"should review translations of any items marked as fuzzy and correct them if "
+"necessary."
+msgstr ""
+"El fitxer ha contingut ítems duplicats, que no es permet en els fitxers PO i "
+"prevendria que el fitxer s'usara. El Poedit ha corregit el problema, però "
+"deveu revisar les traduccions de tots els ítems marcats com a difuses i "
+"corregir-les si és necessari."
+
 msgid "Language of the translation isn't set."
 msgstr "L'idioma de la traducció no està establert."
 
@@ -560,6 +667,24 @@ msgstr "Estableix l'idioma"
 msgid "Set language"
 msgstr "Seleccioneu l'idioma"
 
+#. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)."
+msgid ""
+"Suggestions are not available if the translation language is not set "
+"correctly. Other features, such as plural forms, may be affected as well."
+msgstr ""
+"Els suggeriments no es disposen si l'idioma de traducció no està establerta "
+"correctament. Altres característiques, com les formes plurals, també es "
+"poden afectar."
+
+msgid "Language of the translation is the same as source language."
+msgstr "L'idioma de la traducció es el mateix que l'idioma font."
+
+msgid "Fix Language"
+msgstr "Corregeix idioma"
+
+msgid "Fix language"
+msgstr "Corregeix idioma"
+
 msgid ""
 "This catalog has entries with plural forms, but doesn't have Plural-Forms "
 "header configured."
@@ -579,7 +704,7 @@ msgstr "Falta la capçalera necessària Plural-Forms."
 
 #, c-format
 msgid "Syntax error in Plural-Forms header (\"%s\")."
-msgstr "S'ha produït un error de sintaxis a la capçalera Plural-Forms («%s»)."
+msgstr "Hi ha un error de sintaxis a la capçalera Plural-Forms («%s»)."
 
 msgid "Fix the Header"
 msgstr "Corregeix la capçalera"
@@ -592,9 +717,9 @@ msgstr "Corregeix la capçalera"
 #. to rephrase it, e.g. to an equivalent of "for language %s".
 #, c-format
 msgid "Plural forms expression used by the catalog is unusual for %s."
-msgstr ""
-"L'expressió de formes plurals utilitzada pel catàleg es inusual pel %s."
+msgstr "L'expressió de formes plurals usada pel catàleg és inusual per al %s."
 
+#. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the catalog is unusual for %s.")"
 msgid "Review"
 msgstr "Repassa"
 
@@ -617,6 +742,12 @@ msgid_plural "%d errors"
 msgstr[0] "%d error"
 msgstr[1] "%d errors"
 
+#, c-format
+msgid "%d entry"
+msgid_plural "%d entries"
+msgstr[0] "%d entrada"
+msgstr[1] "%d entrades"
+
 msgid " (unsaved)"
 msgstr " (no desat)"
 
@@ -634,7 +765,7 @@ msgid "Purge deleted translations"
 msgstr "Buida les traduccions obsoletes"
 
 msgid "Do you want to remove all translations that are no longer used?"
-msgstr "Voleu suprimir totes les traduccions que ja no s'utilitzen?"
+msgstr "Voleu suprimir totes les traduccions que ja no s'usin?"
 
 msgid ""
 "If you continue with purging, all translations marked as deleted will be "
@@ -743,6 +874,9 @@ msgstr "Tot"
 msgid "Form %i"
 msgstr "Forma %i"
 
+msgid "Singular"
+msgstr "Singular"
+
 msgid "Zero"
 msgstr "Zero"
 
@@ -752,6 +886,9 @@ msgstr "Un"
 msgid "Two"
 msgstr "Dos"
 
+msgid "Plural"
+msgstr "Plural"
+
 msgid "Other"
 msgstr "Altre"
 
@@ -780,6 +917,12 @@ msgstr "Amaga la barra lateral"
 msgid "Show Sidebar"
 msgstr "Mostra la barra lateral"
 
+msgid "Hide Status Bar"
+msgstr "Amaga la barra d'estat"
+
+msgid "Show Status Bar"
+msgstr "Mostra la barra d'estat"
+
 msgid "Source text"
 msgstr "Text font"
 
@@ -787,7 +930,11 @@ msgid "Translation"
 msgstr "Traducció"
 
 msgid "ID"
-msgstr "ID"
+msgstr "Id."
+
+#, c-format
+msgid "Source text — %s"
+msgstr "Text font — %s"
 
 msgid "unknown language"
 msgstr "idioma desconegut"
@@ -799,67 +946,83 @@ msgstr "Traducció — %s"
 msgid "Error:"
 msgstr "Error:"
 
-msgid "Project info"
-msgstr "Informació del projecte"
+msgid "Source file"
+msgstr "Fitxer de codi font"
 
-msgid "Project name and version:"
-msgstr "Nom i versió del projecte:"
+msgid "Source file occurrence:"
+msgstr "Ocurrència al fitxer font:"
 
-msgid "Language:"
-msgstr "Idioma:"
+msgid "Open in Editor"
+msgstr "Obre en l’editor"
 
-msgid "Team:"
-msgstr "Equip:"
+msgid "Open in editor"
+msgstr "Obre en l’editor"
 
-msgid "Team's email address:"
-msgstr "Adreça de correu electrònic de l'equip:"
+msgid "No references for the selected item."
+msgstr "No hi ha referències per a l'ítem seleccionat."
 
-msgid "Charset:"
-msgstr "Joc de caràcters:"
+#, c-format
+msgid "Error opening file %s!"
+msgstr "S'ha produït un error en obrir el fitxer %s!"
 
-msgid "Source"
-msgstr "Font"
+msgid "Find"
+msgstr "Cerca"
 
-msgid "Notes"
-msgstr "Notes"
+msgid "Replace"
+msgstr "Reemplaça"
 
-msgid "Automatic translation"
-msgstr "Traducció automàtica"
+#. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.)
+msgid "Options"
+msgstr "Opcions"
 
-msgid "Fuzzy translation"
-msgstr "Traducció difusa"
+msgid "Ignore case"
+msgstr "Ignora majúscules/minúscules"
 
-msgid "Notes for translators:"
-msgstr "Notes per als traductors:"
+msgid "Wrap around"
+msgstr ""
 
-msgid "Comment:"
-msgstr "Comentari:"
+msgid "Whole words only"
+msgstr "Només les paraules senceres"
 
-msgid "Source file"
-msgstr "Fitxer de codi font"
+msgid "Find in source texts"
+msgstr "Cerca en els texts font"
 
-msgid "Source file occurrence:"
-msgstr "Ocurrència al fitxer font:"
+msgid "Find in translations"
+msgstr "Cerca a les traduccions"
 
-msgid "Open in Editor"
-msgstr "Obre en l’editor"
+msgid "Find in comments"
+msgstr "Cerca als comentaris"
 
-msgid "Open in editor"
-msgstr "Obre en l’editor"
+msgid "Close"
+msgstr "Tanca"
 
-#, c-format
-msgid "Error opening file %s!"
-msgstr "S'ha produït un error en obrir el fitxer %s!"
+msgid "Replace All"
+msgstr "Reemplaça-ho tot"
+
+msgid "Replace all"
+msgstr "Reemplaça-ho tot"
+
+msgid "< &Previous"
+msgstr "< &Anterior"
+
+msgid "&Next >"
+msgstr "&Següent >"
+
+msgid "String to find"
+msgstr "Cadena a trobar"
+
+msgid "Replacement string"
+msgstr "Cadena de reemplaçament"
 
 #, c-format
 msgid "Cannot execute program: %s"
 msgstr "No es pot executar el programa: %s"
 
 msgid "Language Code or Name (e.g. en_GB)"
-msgstr "Codi d'idioma o nom (per exemple, ca_ES)"
+msgstr "Codi d’idioma o nom (p. ex., ca_ES)"
 
 msgid "Translation Language"
-msgstr "Idioma de traducció"
+msgstr "Idioma de la traducció"
 
 msgid "Language of the translation:"
 msgstr "Idioma de la traducció:"
@@ -974,7 +1137,7 @@ msgid "General"
 msgstr "General"
 
 msgid "Use translation memory"
-msgstr "Utilitza la memòria de traducció"
+msgstr "Usa la memòria de traducció"
 
 msgid "Learn From Files..."
 msgstr "Aprèn de fitxers..."
@@ -995,10 +1158,10 @@ msgid ""
 "near-empty, it will not be very effective. The more translations\n"
 "you edit and the larger the TM grows, the better it gets."
 msgstr ""
-"Si es troba activada, Poedit mirarà d'omplir les noves entrades utilitzant\n"
+"Si es troba activada, Poedit mirarà d'omplir les noves entrades usant\n"
 "traduccions prèvies que estiguin desades en la memòria de traducció.\n"
 "Si la MT és quasi buida, no serà molt efectiu. Quan més traduccions\n"
-"faci i més gran sigui la MT, més bé funcionarà.  "
+"faci i més gran sigui la MT, més bé funcionarà."
 
 msgid "Stored translations:"
 msgstr "Traduccions emmagatzemades:"
@@ -1022,7 +1185,7 @@ msgid "Reset translation memory"
 msgstr "Esborra la memòria de traduccions"
 
 msgid "Are you sure you want to reset the translation memory?"
-msgstr "Esteu segur de voler esborrar la memòria de traduccions?"
+msgstr "Esteu segur que voleu restabir la memòria de traduccions?"
 
 msgid ""
 "Resetting the translation memory will irrevocably delete all stored "
@@ -1053,9 +1216,19 @@ msgstr "Nou"
 msgid "Edit"
 msgstr "Edita"
 
+msgid "Delete extractor"
+msgstr "Suprimeix l’extractor"
+
+#, c-format
+msgid "Are you sure you want to delete the “%s” extractor?"
+msgstr "Esteu segur que voleu suprimir l’extractor «%s»?"
+
 msgid "Extractors"
 msgstr "Extractors"
 
+msgid "Accounts"
+msgstr "Comptes"
+
 msgid "Automatically check for updates"
 msgstr "Comprova si hi ha actualitzacions automàticament"
 
@@ -1098,8 +1271,41 @@ msgstr "Preserva el format dels fitxers existents"
 msgid "Advanced"
 msgstr "Avançades"
 
-msgid "Additional keywords"
-msgstr "Paraules clau addicionals"
+msgid ""
+"<big>Drag and Drop Folders Here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+"<big>Arrossegueu i deixeu anar carpetes aquí</big>\n"
+"\n"
+"o usa el botó +"
+
+msgid ""
+"<big>Drag and drop folders here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+"<big>Arrossegueu i deixeu anar carpetes aquí</big>\n"
+"\n"
+"o usa el botó +"
+
+msgid "Add Folders..."
+msgstr "Afegeix carpetes..."
+
+msgid "Add folders..."
+msgstr "Afegeix carpetes..."
+
+msgid "Add Files..."
+msgstr "Afegeix fitxers..."
+
+msgid "Add files..."
+msgstr "Afegeix fitxers..."
+
+msgid "Add Wildcard..."
+msgstr "Afegeix comodí..."
+
+msgid "Add wildcard..."
+msgstr "Afegeix comodí..."
 
 msgid "Paths"
 msgstr "Camins"
@@ -1107,6 +1313,9 @@ msgstr "Camins"
 msgid "Excluded paths"
 msgstr "Camins exclosos"
 
+msgid "Additional keywords"
+msgstr "Paraules clau addicionals"
+
 msgid "Name of the project the translation is for"
 msgstr "Nom del project pel qual és la traducció"
 
@@ -1117,12 +1326,13 @@ msgid "UTF-8 (recommended)"
 msgstr "UTF-8 (recomanat)"
 
 msgid "Please save the file first. This section cannot be edited until then."
-msgstr ""
-"Si us plau, deseu el fitxer primer. Aquesta secció no es pot editar fins "
-"llavors."
+msgstr "Deseu el fitxer primer. No es pot editar aquesta secció fins llavors."
+
+msgid "Comment:"
+msgstr "Comentari:"
 
 msgid "OK"
-msgstr "D'acord"
+msgstr "D’acord"
 
 msgid "C&lear"
 msgstr "&Neteja"
@@ -1130,42 +1340,6 @@ msgstr "&Neteja"
 msgid "Clear the comment"
 msgstr "Neteja el comentari"
 
-msgid "Find..."
-msgstr "Cerca..."
-
-msgid "String to find:"
-msgstr "Cadena a cercar:"
-
-msgid "Case sensitive"
-msgstr "Distingeix entre majúscules i minúscules"
-
-msgid "Start from the first item"
-msgstr "Comença des del primer element"
-
-msgid "Whole words only"
-msgstr "Només les paraules senceres"
-
-msgid "Find in original strings"
-msgstr "Cerca a les cadenes originals"
-
-msgid "Find in translations"
-msgstr "Cerca a les traduccions"
-
-msgid "Find in comments"
-msgstr "Cerca als comentaris"
-
-msgid "Find in automatic comments"
-msgstr "Cerca als comentaris automàtics"
-
-msgid "Close"
-msgstr "Tanca"
-
-msgid "< &Previous"
-msgstr "< &Anterior"
-
-msgid "&Next >"
-msgstr "&Següent >"
-
 msgid "Create new translations project"
 msgstr "Crea un nou projecte de traduccions"
 
@@ -1220,6 +1394,12 @@ msgstr "&Obre..."
 msgid "Open Recent"
 msgstr "Obre recents"
 
+msgid "Open from Crowdin..."
+msgstr "Obre des del Crowdin..."
+
+msgid "Open From Crowdin..."
+msgstr "Obre des del Crowdin..."
+
 msgid "&Save"
 msgstr "De&sa"
 
@@ -1268,14 +1448,17 @@ msgstr "Mo&stra les referències"
 msgid "&Find..."
 msgstr "&Cerca..."
 
+msgid "Replace..."
+msgstr "Reemplaça..."
+
 msgid "Find next"
 msgstr "Cerca el següent"
 
 msgid "Find previous"
 msgstr "Cerca l'anterior"
 
-msgid "Find"
-msgstr "Cerca"
+msgid "Find and Replace..."
+msgstr "Troba i reemplaça..."
 
 msgid "Find Next"
 msgstr "Cerca el següent"
@@ -1316,6 +1499,12 @@ msgstr "A&grupa pel context"
 msgid "&Group By Context"
 msgstr "A&grupa pel context"
 
+msgid "Entries with errors first"
+msgstr "Entrades amb errors primers"
+
+msgid "Entries with Errors First"
+msgstr "Entrades amb errors primers"
+
 msgid "&Untranslated entries first"
 msgstr "&Primer les entrades no trad&uïdes"
 
@@ -1325,8 +1514,11 @@ msgstr "&Primer les entrades no trad&uïdes"
 msgid "Show sidebar"
 msgstr "Mostra la barra lateral"
 
+msgid "Show status bar"
+msgstr "Mostra la barra d'estat"
+
 msgid "C&atalog"
-msgstr "C&atàleg"
+msgstr "&Catàleg"
 
 msgid "&Update from sources"
 msgstr "Act&ualitza des de les fonts"
@@ -1340,6 +1532,9 @@ msgstr "Actualitza des del fitxer &POT..."
 msgid "Update from &POT File..."
 msgstr "Actualitza des del fitxer &POT..."
 
+msgid "Sync with Crowdin"
+msgstr "Sincronitza amb el Crowdin"
+
 msgid "Fill missing translations from &TM..."
 msgstr "Omple les traduccions mancants des de la &MT..."
 
@@ -1362,10 +1557,10 @@ msgid "&Properties..."
 msgstr "&Propietats..."
 
 msgid "&Done and next"
-msgstr "&Fet i següent"
+msgstr "&Fet, següent"
 
 msgid "&Done and Next"
-msgstr "&Fet i següent"
+msgstr "&Fet, següent"
 
 msgid "&Previous translation"
 msgstr "Traducció &anterior"
@@ -1468,43 +1663,55 @@ msgstr ""
 msgid "Catalog properties"
 msgstr "Propietats del catàleg"
 
+msgid "Project name and version:"
+msgstr "Nom i versió del projecte:"
+
 msgid "Plural Forms:"
 msgstr "Formes plurals:"
 
 msgid "Use default rules for this language"
-msgstr "Utilitza les regles per defecte en aquest idioma"
+msgstr "Usa les regles per defecte en aquest idioma"
 
 msgid "Use custom expression"
-msgstr "Utilitza una expressió personalitzada"
+msgstr "Usa una expressió personalitzada"
 
 msgid "Learn about plural forms"
 msgstr "Apreneu sobre les formes plurals"
 
+msgid "Charset:"
+msgstr "Joc de caràcters:"
+
+msgid "Team:"
+msgstr "Equip:"
+
+msgid "Team's email address:"
+msgstr "Adreça electrònica de l’equip:"
+
 msgid "Translation properties"
 msgstr "Propietats de la traducció"
 
+msgid "Sources paths"
+msgstr "Camins de fonts"
+
 msgid "Extract text from source files in the following directories:"
 msgstr "Extreu el text dels fitxers font dels següents directoris:"
 
 msgid "Base path:"
 msgstr "Camí base:"
 
-msgid "Sources paths"
-msgstr "Camins de fonts"
+msgid "Sources keywords"
+msgstr "Paraules clau de fonts"
 
 msgid ""
 "Use these keywords (function names) to recognize translatable strings\n"
 "in source files:"
 msgstr ""
-"Utilitza aquestes paraules clau (noms de funcions) per a reconèixer\n"
-"les cadenes traduïbles en els fitxers de codi font:"
+"Usa aquestes paraules clau (noms de funcions) per a reconèixer les\n"
+"cadenes traduïbles en els fitxers de codi font:"
 
 msgid "Learn about gettext keywords"
 msgstr "Apreneu sobre les paraules clau de gettext"
 
-msgid "Sources keywords"
-msgstr "Paraules clau de fonts"
-
 msgid "Update summary"
 msgstr "Actualitza resum"
 
@@ -1552,8 +1759,8 @@ msgstr "Actualitza el catàleg - sincronitza'l amb les fonts"
 msgid "Toggled if selected string has fuzzy translation"
 msgstr "Commutat si la cadena seleccionada té una traducció difusa"
 
-msgid "Show or hide the sidebar."
-msgstr "Mostra o amaga la barra lateral."
+msgid "Show or hide the sidebar"
+msgstr "Mostra o amaga la barra lateral"
 
 #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer.
 msgid "Previous source text:"
@@ -1566,6 +1773,9 @@ msgstr ""
 "El text font vell (abans que canviés durant una actualització) al qual "
 "correspon la traducció difusa."
 
+msgid "Notes for translators:"
+msgstr "Notes per als traductors:"
+
 msgid "Add comment"
 msgstr "Afegeix un comentari"
 
@@ -1639,7 +1849,7 @@ msgid "Cannot create temporary directory."
 msgstr "No s'ha pogut crear el directori temporal."
 
 msgid "Welcome to Poedit"
-msgstr "Benvingut al Poedit"
+msgstr "Us donem la benvinguda al Poedit"
 
 msgid "Edit a translation"
 msgstr "Edita una traducció"
@@ -1647,15 +1857,24 @@ msgstr "Edita una traducció"
 msgid "Open an existing PO file and edit the translation."
 msgstr "Obre un fitxer PO existent i edita la traducció."
 
-msgid "Create new translation"
-msgstr "Crea una nova traducció"
-
 msgid ""
 "Take an existing PO file or POT template and create a new translation from "
 "it."
 msgstr ""
 "Pren un fitxer PO o plantilla existent i crea una nova traducció de el."
 
+msgid "Collaborate on a translation with Crowdin"
+msgstr "Col·labora en una traducció amb el Crowdin"
+
+msgid ""
+"Download a file from Crowdin project, translate and sync your changes back."
+msgstr ""
+"Baixa un fitxer del projecte de Crowdin, tradueix-lo i sincronitza els "
+"vostres canvis de tornada."
+
+msgid "What is Crowdin?"
+msgstr "Què és el Crowdin?"
+
 msgid "There are no translations. That’s unusual."
 msgstr "No hi ha traduccions. Això es inusual."
 
@@ -1666,13 +1885,12 @@ msgid ""
 "Translators typically use PO template files (POTs) prepared for them by the "
 "developer."
 msgstr ""
-"Entrades traduïbles no s'afegeixen manualment en el sistema Gettext, però "
-"automàticament\n"
-"s'extreuen des del codi font. D'aquesta manera, queden actualitzades i "
+"Les entrades traduïbles no s'afegeixen manualment en el sistema Gettext, "
+"sinó que s'extreuen\n"
+"automàticament des del codi font. D'aquesta manera, queden actualitzades i "
 "correctes.\n"
-"Els traductors típicament utilitzen fitxers de plantilla PO (POTs) preparats "
-"pels pel\n"
-"desenvolupador."
+"Els traductors típicament usen fitxers de plantilla PO (POTs) preparats pels "
+"pel desenvolupador."
 
 msgid "(Learn more about GNU gettext)"
 msgstr "(Apreneu més sobre el GNU gettext)"
@@ -1697,3 +1915,9 @@ msgstr "Extreu des de les fonts"
 
 msgid "Configure source code extraction in Properties."
 msgstr "Configura l'extracció de codi font en els Propietats."
+
+msgid "Sync"
+msgstr "Sincronitza"
+
+msgid "Synchronize the translation with Crowdin"
+msgstr "Sincronitza la traducció amb el Crowdin"
diff --git a/locales/ca at valencia.mo b/locales/ca at valencia.mo
index 5f230b6..6f05786 100644
Binary files a/locales/ca at valencia.mo and b/locales/ca at valencia.mo differ
diff --git a/locales/ca at valencia.po b/locales/ca at valencia.po
index 57e1090..fe4a970 100644
--- a/locales/ca at valencia.po
+++ b/locales/ca at valencia.po
@@ -2,8 +2,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: poedit\n"
 "Report-Msgid-Bugs-To: help at poedit.net\n"
-"POT-Creation-Date: 2015-01-10 16:00+0100\n"
-"PO-Revision-Date: 2015-03-10 12:34-0400\n"
+"POT-Creation-Date: 2015-05-27 11:31+0200\n"
+"PO-Revision-Date: 2015-05-27 05:18-0400\n"
 "Last-Translator: vslavik <vaclav at slavik.io>\n"
 "Language-Team: Valencian\n"
 "Language: val_ES\n"
@@ -88,6 +88,15 @@ msgstr ""
 msgid "Error saving catalog"
 msgstr "S'ha produït un error en alçar el catàleg"
 
+msgid "PO Translation Files"
+msgstr ""
+
+msgid "POT Translation Templates"
+msgstr ""
+
+msgid "All Translation Files"
+msgstr ""
+
 msgid "Merging differences..."
 msgstr "S'estan fusionant les diferències..."
 
@@ -107,6 +116,83 @@ msgstr "Selecció d'idioma"
 msgid "You must restart Poedit for this change to take effect."
 msgstr "Heu de reiniciar el Poedit perquè este canvi tinga efecte."
 
+msgid "Downloading translations is disabled in this project."
+msgstr ""
+
+msgid "Not authorized, please sign in again."
+msgstr ""
+
+msgid "Sign in to Crowdin"
+msgstr ""
+
+msgid ""
+"Crowdin is an online localization management platform and collaborative "
+"translation tool. Poedit can seamlessly sync PO files managed at Crowdin."
+msgstr ""
+
+msgid "Sign In"
+msgstr ""
+
+msgid "Sign in"
+msgstr ""
+
+msgid "Sign Out"
+msgstr ""
+
+msgid "Sign out"
+msgstr ""
+
+msgid "Waiting for authentication…"
+msgstr ""
+
+msgid "Updating user information…"
+msgstr ""
+
+msgid "Signed in as:"
+msgstr ""
+
+msgid "Learn More About Crowdin"
+msgstr ""
+
+msgid "Learn more about Crowdin"
+msgstr ""
+
+msgid "Open Crowdin translation"
+msgstr ""
+
+msgid "Project:"
+msgstr ""
+
+msgid "Language:"
+msgstr "Idioma:"
+
+msgid "File:"
+msgstr ""
+
+msgid "No translation projects listed in your Crowdin account."
+msgstr ""
+
+msgid "This project has no files that can be translated in Poedit."
+msgstr ""
+
+msgid "This file can only be edited in Crowdin’s web interface."
+msgstr ""
+
+msgid "Downloading latest translations…"
+msgstr ""
+
+msgid "Syncing with Crowdin"
+msgstr ""
+
+msgid "Syncing with Crowdin failed."
+msgstr ""
+
+msgid "Crowdin error"
+msgstr ""
+
+msgid "Uploading translations…"
+msgstr ""
+
 msgid "&Copy"
 msgstr ""
 
@@ -151,6 +237,12 @@ msgstr ""
 msgid "don't delete temporary files (for debugging)"
 msgstr ""
 
+msgid "handle a poedit:// URI"
+msgstr ""
+
+msgid "Failed to communicate with Poedit process."
+msgstr ""
+
 #, c-format
 msgid "Unhandled exception occurred: %s"
 msgstr ""
@@ -161,12 +253,6 @@ msgstr ""
 msgid "Open catalog"
 msgstr "Obri el catàleg"
 
-msgid "All Files"
-msgstr ""
-
-msgid "PO Translation Files"
-msgstr ""
-
 #, c-format
 msgid "File '%s' doesn't exist."
 msgstr "El fitxer «%s» no existeix."
@@ -394,6 +480,17 @@ msgstr "Plural:"
 msgid "Translation:"
 msgstr ""
 
+msgid ""
+"POT files are only templates and don’t contain any translations themselves.\n"
+"To make a translation, create a new PO file based on the template."
+msgstr ""
+
+msgid "Create New Translation"
+msgstr ""
+
+msgid "Create new translation"
+msgstr ""
+
 #. TRANSLATORS: %s is language name in its basic form (as you
 #. would see e.g. in a list of supported languages). You may need
 #. to rephrase it, e.g. to an equivalent of "for language %s".
@@ -441,9 +538,6 @@ msgstr ""
 msgid "Open catalog template"
 msgstr "Obri la plantilla de catàleg"
 
-msgid "POT Translation Templates"
-msgstr ""
-
 msgid "Updating catalog"
 msgstr ""
 
@@ -512,16 +606,18 @@ msgstr[1] ""
 msgid "The translation is ready for use."
 msgstr ""
 
-msgid "No references to this string found."
-msgstr "No s'ha trobat cap referència a esta cadena."
-
-msgid "Please choose the reference you want to show:"
-msgstr "Trieu la referència que vulgueu mostrar:"
+msgid "Context:"
+msgstr ""
 
-msgid "References"
-msgstr "Referències"
+#, c-format
+msgid "Poedit automatically fixed invalid content in the file “%s”."
+msgstr ""
 
-msgid "Context:"
+msgid ""
+"The file contained duplicate items, which is not allowed in PO files and "
+"would prevent the file from being used. Poedit fixed the issue, but you "
+"should review translations of any items marked as fuzzy and correct them if "
+"necessary."
 msgstr ""
 
 msgid "Language of the translation isn't set."
@@ -533,6 +629,21 @@ msgstr ""
 msgid "Set language"
 msgstr ""
 
+#. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)."
+msgid ""
+"Suggestions are not available if the translation language is not set "
+"correctly. Other features, such as plural forms, may be affected as well."
+msgstr ""
+
+msgid "Language of the translation is the same as source language."
+msgstr ""
+
+msgid "Fix Language"
+msgstr ""
+
+msgid "Fix language"
+msgstr ""
+
 msgid ""
 "This catalog has entries with plural forms, but doesn't have Plural-Forms "
 "header configured."
@@ -563,6 +674,7 @@ msgstr ""
 msgid "Plural forms expression used by the catalog is unusual for %s."
 msgstr ""
 
+#. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the catalog is unusual for %s.")"
 msgid "Review"
 msgstr ""
 
@@ -585,6 +697,12 @@ msgid_plural "%d errors"
 msgstr[0] ""
 msgstr[1] ""
 
+#, c-format
+msgid "%d entry"
+msgid_plural "%d entries"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid " (unsaved)"
 msgstr ""
 
@@ -698,6 +816,9 @@ msgstr ""
 msgid "Form %i"
 msgstr "Forma %i"
 
+msgid "Singular"
+msgstr ""
+
 msgid "Zero"
 msgstr ""
 
@@ -707,6 +828,9 @@ msgstr ""
 msgid "Two"
 msgstr ""
 
+msgid "Plural"
+msgstr ""
+
 msgid "Other"
 msgstr ""
 
@@ -735,6 +859,12 @@ msgstr ""
 msgid "Show Sidebar"
 msgstr ""
 
+msgid "Hide Status Bar"
+msgstr ""
+
+msgid "Show Status Bar"
+msgstr ""
+
 msgid "Source text"
 msgstr ""
 
@@ -744,6 +874,10 @@ msgstr "Traducció"
 msgid "ID"
 msgstr ""
 
+#, c-format
+msgid "Source text — %s"
+msgstr ""
+
 msgid "unknown language"
 msgstr ""
 
@@ -754,57 +888,73 @@ msgstr ""
 msgid "Error:"
 msgstr ""
 
-msgid "Project info"
-msgstr "Informació del projecte"
+msgid "Source file"
+msgstr "Fitxer de codi font"
 
-msgid "Project name and version:"
-msgstr "Nom i versió del projecte:"
+msgid "Source file occurrence:"
+msgstr ""
 
-msgid "Language:"
-msgstr "Idioma:"
+msgid "Open in Editor"
+msgstr ""
 
-msgid "Team:"
-msgstr "Equip:"
+msgid "Open in editor"
+msgstr ""
 
-msgid "Team's email address:"
-msgstr "Adreça de correu de l'equip:"
+msgid "No references for the selected item."
+msgstr ""
 
-msgid "Charset:"
-msgstr "Joc de caràcters:"
+#, c-format
+msgid "Error opening file %s!"
+msgstr "S'ha produït un error en obrir el fitxer %s."
 
-msgid "Source"
+msgid "Find"
 msgstr ""
 
-msgid "Notes"
-msgstr "Notes"
+msgid "Replace"
+msgstr ""
 
-msgid "Automatic translation"
-msgstr "Traducció automàtica"
+#. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.)
+msgid "Options"
+msgstr ""
 
-msgid "Fuzzy translation"
-msgstr "Traducció difusa"
+msgid "Ignore case"
+msgstr ""
 
-msgid "Notes for translators:"
+msgid "Wrap around"
 msgstr ""
 
-msgid "Comment:"
-msgstr "Comentari:"
+msgid "Whole words only"
+msgstr "Només les paraules senceres"
 
-msgid "Source file"
-msgstr "Fitxer de codi font"
+msgid "Find in source texts"
+msgstr ""
 
-msgid "Source file occurrence:"
+msgid "Find in translations"
 msgstr ""
 
-msgid "Open in Editor"
+msgid "Find in comments"
+msgstr "Cerca a els comentaris"
+
+msgid "Close"
 msgstr ""
 
-msgid "Open in editor"
+msgid "Replace All"
 msgstr ""
 
-#, c-format
-msgid "Error opening file %s!"
-msgstr "S'ha produït un error en obrir el fitxer %s."
+msgid "Replace all"
+msgstr ""
+
+msgid "< &Previous"
+msgstr ""
+
+msgid "&Next >"
+msgstr ""
+
+msgid "String to find"
+msgstr ""
+
+msgid "Replacement string"
+msgstr ""
 
 #, c-format
 msgid "Cannot execute program: %s"
@@ -998,9 +1148,19 @@ msgstr "Nou"
 msgid "Edit"
 msgstr "Edita"
 
+msgid "Delete extractor"
+msgstr ""
+
+#, c-format
+msgid "Are you sure you want to delete the “%s” extractor?"
+msgstr ""
+
 msgid "Extractors"
 msgstr ""
 
+msgid "Accounts"
+msgstr ""
+
 msgid "Automatically check for updates"
 msgstr ""
 
@@ -1039,7 +1199,34 @@ msgstr ""
 msgid "Advanced"
 msgstr ""
 
-msgid "Additional keywords"
+msgid ""
+"<big>Drag and Drop Folders Here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+
+msgid ""
+"<big>Drag and drop folders here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+
+msgid "Add Folders..."
+msgstr ""
+
+msgid "Add folders..."
+msgstr ""
+
+msgid "Add Files..."
+msgstr ""
+
+msgid "Add files..."
+msgstr ""
+
+msgid "Add Wildcard..."
+msgstr ""
+
+msgid "Add wildcard..."
 msgstr ""
 
 msgid "Paths"
@@ -1048,6 +1235,9 @@ msgstr "Camins"
 msgid "Excluded paths"
 msgstr ""
 
+msgid "Additional keywords"
+msgstr ""
+
 msgid "Name of the project the translation is for"
 msgstr ""
 
@@ -1060,6 +1250,9 @@ msgstr ""
 msgid "Please save the file first. This section cannot be edited until then."
 msgstr ""
 
+msgid "Comment:"
+msgstr "Comentari:"
+
 msgid "OK"
 msgstr "D'acord"
 
@@ -1069,42 +1262,6 @@ msgstr ""
 msgid "Clear the comment"
 msgstr "Neteja el comentari"
 
-msgid "Find..."
-msgstr "Cerca..."
-
-msgid "String to find:"
-msgstr "Cadena a cercar:"
-
-msgid "Case sensitive"
-msgstr "Distingeix entre majúscules i minúscules"
-
-msgid "Start from the first item"
-msgstr "Comença des del primer element"
-
-msgid "Whole words only"
-msgstr "Només les paraules senceres"
-
-msgid "Find in original strings"
-msgstr "Cerca a les cadenes originals"
-
-msgid "Find in translations"
-msgstr ""
-
-msgid "Find in comments"
-msgstr "Cerca a els comentaris"
-
-msgid "Find in automatic comments"
-msgstr "Cerca als comentaris automàtics"
-
-msgid "Close"
-msgstr ""
-
-msgid "< &Previous"
-msgstr ""
-
-msgid "&Next >"
-msgstr ""
-
 msgid "Create new translations project"
 msgstr "Crea un projecte nou de traduccions"
 
@@ -1159,6 +1316,12 @@ msgstr "&Obri..."
 msgid "Open Recent"
 msgstr ""
 
+msgid "Open from Crowdin..."
+msgstr ""
+
+msgid "Open From Crowdin..."
+msgstr ""
+
 msgid "&Save"
 msgstr "Al&ça"
 
@@ -1207,13 +1370,16 @@ msgstr ""
 msgid "&Find..."
 msgstr "&Cerca..."
 
+msgid "Replace..."
+msgstr ""
+
 msgid "Find next"
 msgstr ""
 
 msgid "Find previous"
 msgstr ""
 
-msgid "Find"
+msgid "Find and Replace..."
 msgstr ""
 
 msgid "Find Next"
@@ -1255,6 +1421,12 @@ msgstr ""
 msgid "&Group By Context"
 msgstr ""
 
+msgid "Entries with errors first"
+msgstr ""
+
+msgid "Entries with Errors First"
+msgstr ""
+
 msgid "&Untranslated entries first"
 msgstr ""
 
@@ -1264,6 +1436,9 @@ msgstr ""
 msgid "Show sidebar"
 msgstr ""
 
+msgid "Show status bar"
+msgstr ""
+
 msgid "C&atalog"
 msgstr "C&atàleg"
 
@@ -1279,6 +1454,9 @@ msgstr "Actualitza des del fitxer &POT..."
 msgid "Update from &POT File..."
 msgstr ""
 
+msgid "Sync with Crowdin"
+msgstr ""
+
 msgid "Fill missing translations from &TM..."
 msgstr ""
 
@@ -1403,6 +1581,9 @@ msgstr ""
 msgid "Catalog properties"
 msgstr ""
 
+msgid "Project name and version:"
+msgstr "Nom i versió del projecte:"
+
 msgid "Plural Forms:"
 msgstr "Formes plurals:"
 
@@ -1415,16 +1596,28 @@ msgstr ""
 msgid "Learn about plural forms"
 msgstr ""
 
+msgid "Charset:"
+msgstr "Joc de caràcters:"
+
+msgid "Team:"
+msgstr "Equip:"
+
+msgid "Team's email address:"
+msgstr "Adreça de correu de l'equip:"
+
 msgid "Translation properties"
 msgstr ""
 
+msgid "Sources paths"
+msgstr ""
+
 msgid "Extract text from source files in the following directories:"
 msgstr ""
 
 msgid "Base path:"
 msgstr "Camí base:"
 
-msgid "Sources paths"
+msgid "Sources keywords"
 msgstr ""
 
 msgid ""
@@ -1435,9 +1628,6 @@ msgstr ""
 msgid "Learn about gettext keywords"
 msgstr ""
 
-msgid "Sources keywords"
-msgstr ""
-
 msgid "Update summary"
 msgstr "Actualitza resum"
 
@@ -1485,7 +1675,7 @@ msgstr "Actualitza el catàleg - sincronitza'l amb les fonts"
 msgid "Toggled if selected string has fuzzy translation"
 msgstr "Commutat si la cadena seleccionada té una traducció difusa"
 
-msgid "Show or hide the sidebar."
+msgid "Show or hide the sidebar"
 msgstr ""
 
 #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer.
@@ -1497,6 +1687,9 @@ msgid ""
 "translation corresponds to."
 msgstr ""
 
+msgid "Notes for translators:"
+msgstr ""
+
 msgid "Add comment"
 msgstr ""
 
@@ -1569,14 +1762,21 @@ msgstr ""
 msgid "Open an existing PO file and edit the translation."
 msgstr ""
 
-msgid "Create new translation"
-msgstr ""
-
 msgid ""
 "Take an existing PO file or POT template and create a new translation from "
 "it."
 msgstr ""
 
+msgid "Collaborate on a translation with Crowdin"
+msgstr ""
+
+msgid ""
+"Download a file from Crowdin project, translate and sync your changes back."
+msgstr ""
+
+msgid "What is Crowdin?"
+msgstr ""
+
 msgid "There are no translations. That’s unusual."
 msgstr ""
 
@@ -1609,3 +1809,9 @@ msgstr ""
 
 msgid "Configure source code extraction in Properties."
 msgstr ""
+
+msgid "Sync"
+msgstr ""
+
+msgid "Synchronize the translation with Crowdin"
+msgstr ""
diff --git a/locales/ckb.mo b/locales/ckb.mo
index d4806b8..bb16196 100644
Binary files a/locales/ckb.mo and b/locales/ckb.mo differ
diff --git a/locales/ckb.po b/locales/ckb.po
index aa74e44..26306c7 100644
--- a/locales/ckb.po
+++ b/locales/ckb.po
@@ -2,8 +2,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: poedit\n"
 "Report-Msgid-Bugs-To: help at poedit.net\n"
-"POT-Creation-Date: 2015-01-10 16:00+0100\n"
-"PO-Revision-Date: 2015-03-10 12:34-0400\n"
+"POT-Creation-Date: 2015-05-27 11:31+0200\n"
+"PO-Revision-Date: 2015-05-27 05:18-0400\n"
 "Last-Translator: vslavik <vaclav at slavik.io>\n"
 "Language-Team: Sorani (Kurdish)\n"
 "Language: ckb_IR\n"
@@ -87,6 +87,15 @@ msgstr ""
 msgid "Error saving catalog"
 msgstr "هەڵە لە پاشەکەوتکردنی کەتەلۆگ"
 
+msgid "PO Translation Files"
+msgstr ""
+
+msgid "POT Translation Templates"
+msgstr ""
+
+msgid "All Translation Files"
+msgstr ""
+
 msgid "Merging differences..."
 msgstr "لکاندنی جیاوازییەکان"
 
@@ -108,6 +117,83 @@ msgstr ""
 "پێویستە دووبارە Poedit دەستپێبکەیتەوە بۆ ئەوەی گۆڕانکارییەکان شوێنی خۆیان "
 "بگرن."
 
+msgid "Downloading translations is disabled in this project."
+msgstr ""
+
+msgid "Not authorized, please sign in again."
+msgstr ""
+
+msgid "Sign in to Crowdin"
+msgstr ""
+
+msgid ""
+"Crowdin is an online localization management platform and collaborative "
+"translation tool. Poedit can seamlessly sync PO files managed at Crowdin."
+msgstr ""
+
+msgid "Sign In"
+msgstr ""
+
+msgid "Sign in"
+msgstr ""
+
+msgid "Sign Out"
+msgstr ""
+
+msgid "Sign out"
+msgstr ""
+
+msgid "Waiting for authentication…"
+msgstr ""
+
+msgid "Updating user information…"
+msgstr ""
+
+msgid "Signed in as:"
+msgstr ""
+
+msgid "Learn More About Crowdin"
+msgstr ""
+
+msgid "Learn more about Crowdin"
+msgstr ""
+
+msgid "Open Crowdin translation"
+msgstr ""
+
+msgid "Project:"
+msgstr ""
+
+msgid "Language:"
+msgstr "زمان:"
+
+msgid "File:"
+msgstr ""
+
+msgid "No translation projects listed in your Crowdin account."
+msgstr ""
+
+msgid "This project has no files that can be translated in Poedit."
+msgstr ""
+
+msgid "This file can only be edited in Crowdin’s web interface."
+msgstr ""
+
+msgid "Downloading latest translations…"
+msgstr ""
+
+msgid "Syncing with Crowdin"
+msgstr ""
+
+msgid "Syncing with Crowdin failed."
+msgstr ""
+
+msgid "Crowdin error"
+msgstr ""
+
+msgid "Uploading translations…"
+msgstr ""
+
 msgid "&Copy"
 msgstr ""
 
@@ -152,6 +238,12 @@ msgstr ""
 msgid "don't delete temporary files (for debugging)"
 msgstr "پەڕگە کاتییەکان مەسڕەوە(بۆ ڕاستکردنەوە)"
 
+msgid "handle a poedit:// URI"
+msgstr ""
+
+msgid "Failed to communicate with Poedit process."
+msgstr ""
+
 #, c-format
 msgid "Unhandled exception occurred: %s"
 msgstr ""
@@ -162,12 +254,6 @@ msgstr ""
 msgid "Open catalog"
 msgstr "کردنەوەی کەتەلۆگ"
 
-msgid "All Files"
-msgstr ""
-
-msgid "PO Translation Files"
-msgstr ""
-
 #, c-format
 msgid "File '%s' doesn't exist."
 msgstr "پەڕگەی '%s' بوونی نییە."
@@ -395,6 +481,17 @@ msgstr "کۆ:"
 msgid "Translation:"
 msgstr "وەرگێڕان:"
 
+msgid ""
+"POT files are only templates and don’t contain any translations themselves.\n"
+"To make a translation, create a new PO file based on the template."
+msgstr ""
+
+msgid "Create New Translation"
+msgstr ""
+
+msgid "Create new translation"
+msgstr ""
+
 #. TRANSLATORS: %s is language name in its basic form (as you
 #. would see e.g. in a list of supported languages). You may need
 #. to rephrase it, e.g. to an equivalent of "for language %s".
@@ -442,9 +539,6 @@ msgstr ""
 msgid "Open catalog template"
 msgstr "کردنەوەی کەتەلۆگی داڕێژە"
 
-msgid "POT Translation Templates"
-msgstr ""
-
 msgid "Updating catalog"
 msgstr ""
 
@@ -515,16 +609,18 @@ msgstr[1] ""
 msgid "The translation is ready for use."
 msgstr ""
 
-msgid "No references to this string found."
-msgstr "هیچ ئاماژەپێکراوێک بۆ ئەم زنجیرەنووسەیە نەدۆزرایەوە"
-
-msgid "Please choose the reference you want to show:"
-msgstr "تکایە ئەو ئاماژەپێکراوە هەڵبژێرە کە دەتەوێت پیشان بدرێت:"
+msgid "Context:"
+msgstr ""
 
-msgid "References"
-msgstr "ئاماژەپێکراوەکان"
+#, c-format
+msgid "Poedit automatically fixed invalid content in the file “%s”."
+msgstr ""
 
-msgid "Context:"
+msgid ""
+"The file contained duplicate items, which is not allowed in PO files and "
+"would prevent the file from being used. Poedit fixed the issue, but you "
+"should review translations of any items marked as fuzzy and correct them if "
+"necessary."
 msgstr ""
 
 msgid "Language of the translation isn't set."
@@ -536,6 +632,21 @@ msgstr ""
 msgid "Set language"
 msgstr ""
 
+#. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)."
+msgid ""
+"Suggestions are not available if the translation language is not set "
+"correctly. Other features, such as plural forms, may be affected as well."
+msgstr ""
+
+msgid "Language of the translation is the same as source language."
+msgstr ""
+
+msgid "Fix Language"
+msgstr ""
+
+msgid "Fix language"
+msgstr ""
+
 msgid ""
 "This catalog has entries with plural forms, but doesn't have Plural-Forms "
 "header configured."
@@ -570,6 +681,7 @@ msgstr "چاککردنەوەی ناوونیشان"
 msgid "Plural forms expression used by the catalog is unusual for %s."
 msgstr ""
 
+#. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the catalog is unusual for %s.")"
 msgid "Review"
 msgstr ""
 
@@ -591,6 +703,12 @@ msgid_plural "%d errors"
 msgstr[0] ""
 msgstr[1] ""
 
+#, c-format
+msgid "%d entry"
+msgid_plural "%d entries"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid " (unsaved)"
 msgstr ""
 
@@ -707,6 +825,9 @@ msgstr ""
 msgid "Form %i"
 msgstr "فۆڕم %i"
 
+msgid "Singular"
+msgstr ""
+
 msgid "Zero"
 msgstr ""
 
@@ -716,6 +837,9 @@ msgstr ""
 msgid "Two"
 msgstr ""
 
+msgid "Plural"
+msgstr ""
+
 msgid "Other"
 msgstr ""
 
@@ -744,6 +868,12 @@ msgstr ""
 msgid "Show Sidebar"
 msgstr ""
 
+msgid "Hide Status Bar"
+msgstr ""
+
+msgid "Show Status Bar"
+msgstr ""
+
 msgid "Source text"
 msgstr "دەقی ژێدەر"
 
@@ -753,6 +883,10 @@ msgstr "وەرگێڕانەکان"
 msgid "ID"
 msgstr ""
 
+#, c-format
+msgid "Source text — %s"
+msgstr ""
+
 msgid "unknown language"
 msgstr ""
 
@@ -763,57 +897,73 @@ msgstr ""
 msgid "Error:"
 msgstr ""
 
-msgid "Project info"
-msgstr "زانیارییەکانی پرۆژە"
+msgid "Source file"
+msgstr "پەڕگەی ژێدەر"
 
-msgid "Project name and version:"
-msgstr "ناو و وەشانی پرۆژە:"
+msgid "Source file occurrence:"
+msgstr "گوێزەرەوەکانی کۆدی ژێدەر:"
 
-msgid "Language:"
-msgstr "زمان:"
+msgid "Open in Editor"
+msgstr ""
 
-msgid "Team:"
-msgstr "ستافی کار:"
+msgid "Open in editor"
+msgstr ""
 
-msgid "Team's email address:"
-msgstr "پۆستی ئەلیکترۆنی ستافی کار:"
+msgid "No references for the selected item."
+msgstr ""
 
-msgid "Charset:"
-msgstr "Koma tîpan (Charset):"
+#, c-format
+msgid "Error opening file %s!"
+msgstr "هەڵە لە کردنەوەی پەڕگەی %s!"
 
-msgid "Source"
-msgstr "ژێدەر"
+msgid "Find"
+msgstr ""
 
-msgid "Notes"
-msgstr "سەرنجەکان"
+msgid "Replace"
+msgstr ""
 
-msgid "Automatic translation"
-msgstr "وەرگێڕانی خۆکاریی"
+#. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.)
+msgid "Options"
+msgstr ""
 
-msgid "Fuzzy translation"
-msgstr "وەرگێڕانی ناڕوون"
+msgid "Ignore case"
+msgstr ""
 
-msgid "Notes for translators:"
+msgid "Wrap around"
 msgstr ""
 
-msgid "Comment:"
-msgstr "لێدوان:"
+msgid "Whole words only"
+msgstr "تەنیا گشت وشەکان"
 
-msgid "Source file"
-msgstr "پەڕگەی ژێدەر"
+msgid "Find in source texts"
+msgstr ""
 
-msgid "Source file occurrence:"
-msgstr "گوێزەرەوەکانی کۆدی ژێدەر:"
+msgid "Find in translations"
+msgstr ""
 
-msgid "Open in Editor"
+msgid "Find in comments"
+msgstr "دۆزینەوە لە لێدوانەکان"
+
+msgid "Close"
+msgstr "داخستن"
+
+msgid "Replace All"
 msgstr ""
 
-msgid "Open in editor"
+msgid "Replace all"
 msgstr ""
 
-#, c-format
-msgid "Error opening file %s!"
-msgstr "هەڵە لە کردنەوەی پەڕگەی %s!"
+msgid "< &Previous"
+msgstr ""
+
+msgid "&Next >"
+msgstr ""
+
+msgid "String to find"
+msgstr ""
+
+msgid "Replacement string"
+msgstr ""
 
 #, c-format
 msgid "Cannot execute program: %s"
@@ -1006,9 +1156,19 @@ msgstr "نوێ"
 msgid "Edit"
 msgstr "دەستکاریکردن"
 
+msgid "Delete extractor"
+msgstr ""
+
+#, c-format
+msgid "Are you sure you want to delete the “%s” extractor?"
+msgstr ""
+
 msgid "Extractors"
 msgstr ""
 
+msgid "Accounts"
+msgstr ""
+
 msgid "Automatically check for updates"
 msgstr ""
 
@@ -1047,7 +1207,34 @@ msgstr ""
 msgid "Advanced"
 msgstr ""
 
-msgid "Additional keywords"
+msgid ""
+"<big>Drag and Drop Folders Here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+
+msgid ""
+"<big>Drag and drop folders here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+
+msgid "Add Folders..."
+msgstr ""
+
+msgid "Add folders..."
+msgstr ""
+
+msgid "Add Files..."
+msgstr ""
+
+msgid "Add files..."
+msgstr ""
+
+msgid "Add Wildcard..."
+msgstr ""
+
+msgid "Add wildcard..."
 msgstr ""
 
 msgid "Paths"
@@ -1056,6 +1243,9 @@ msgstr "ڕێچکەکان"
 msgid "Excluded paths"
 msgstr ""
 
+msgid "Additional keywords"
+msgstr ""
+
 msgid "Name of the project the translation is for"
 msgstr ""
 
@@ -1068,6 +1258,9 @@ msgstr "UTF-8 (پێشنیارکراو)"
 msgid "Please save the file first. This section cannot be edited until then."
 msgstr ""
 
+msgid "Comment:"
+msgstr "لێدوان:"
+
 msgid "OK"
 msgstr "باشە"
 
@@ -1077,42 +1270,6 @@ msgstr ""
 msgid "Clear the comment"
 msgstr "سڕینەوەی لێدوان"
 
-msgid "Find..."
-msgstr "دۆزینەوە..."
-
-msgid "String to find:"
-msgstr "زنجیرە نووسە بۆ دۆزینەوە:"
-
-msgid "Case sensitive"
-msgstr "دۆخ هەستیارە"
-
-msgid "Start from the first item"
-msgstr "دەستپێکردن لە بڕگەی یەکەمەوە"
-
-msgid "Whole words only"
-msgstr "تەنیا گشت وشەکان"
-
-msgid "Find in original strings"
-msgstr "دۆزینەوە لە زنجیرەنووسە ڕەسەنەکەدا"
-
-msgid "Find in translations"
-msgstr ""
-
-msgid "Find in comments"
-msgstr "دۆزینەوە لە لێدوانەکان"
-
-msgid "Find in automatic comments"
-msgstr "دۆزینەوە لە لێدوانە خۆکارییەکان"
-
-msgid "Close"
-msgstr "داخستن"
-
-msgid "< &Previous"
-msgstr ""
-
-msgid "&Next >"
-msgstr ""
-
 msgid "Create new translations project"
 msgstr "دروستکردنی پرۆژەیەکی نوێی وەرگێڕان"
 
@@ -1167,6 +1324,12 @@ msgstr "&کردنەوە..."
 msgid "Open Recent"
 msgstr ""
 
+msgid "Open from Crowdin..."
+msgstr ""
+
+msgid "Open From Crowdin..."
+msgstr ""
+
 msgid "&Save"
 msgstr "&پاشەکەوت کردن"
 
@@ -1215,13 +1378,16 @@ msgstr "&پیشاندانی ئاماژەپێکراوەکان"
 msgid "&Find..."
 msgstr "&دۆزینەوە..."
 
+msgid "Replace..."
+msgstr ""
+
 msgid "Find next"
 msgstr ""
 
 msgid "Find previous"
 msgstr ""
 
-msgid "Find"
+msgid "Find and Replace..."
 msgstr ""
 
 msgid "Find Next"
@@ -1263,6 +1429,12 @@ msgstr ""
 msgid "&Group By Context"
 msgstr ""
 
+msgid "Entries with errors first"
+msgstr ""
+
+msgid "Entries with Errors First"
+msgstr ""
+
 msgid "&Untranslated entries first"
 msgstr "&سەرەتا وەرنەگێڕدراوە تێئاخنراوەکان"
 
@@ -1272,6 +1444,9 @@ msgstr "&سەرەتا وەرنەگێڕدراوە تێئاخنراوەکان"
 msgid "Show sidebar"
 msgstr ""
 
+msgid "Show status bar"
+msgstr ""
+
 msgid "C&atalog"
 msgstr "کە&تەلۆگ"
 
@@ -1287,6 +1462,9 @@ msgstr "نوێکردنەوە لە پەڕگەی &POT ـەوە..."
 msgid "Update from &POT File..."
 msgstr "نوێکردنەوە لە پەڕگەی &POT ـەوە..."
 
+msgid "Sync with Crowdin"
+msgstr ""
+
 msgid "Fill missing translations from &TM..."
 msgstr ""
 
@@ -1410,6 +1588,9 @@ msgstr ""
 msgid "Catalog properties"
 msgstr "تایبەتمەندییەکانی کەتەلۆگ"
 
+msgid "Project name and version:"
+msgstr "ناو و وەشانی پرۆژە:"
+
 msgid "Plural Forms:"
 msgstr "فۆڕمە دووانییەکان:"
 
@@ -1422,17 +1603,29 @@ msgstr ""
 msgid "Learn about plural forms"
 msgstr ""
 
+msgid "Charset:"
+msgstr "Koma tîpan (Charset):"
+
+msgid "Team:"
+msgstr "ستافی کار:"
+
+msgid "Team's email address:"
+msgstr "پۆستی ئەلیکترۆنی ستافی کار:"
+
 msgid "Translation properties"
 msgstr ""
 
+msgid "Sources paths"
+msgstr "ژێدەرەکانی ڕێچکەکان"
+
 msgid "Extract text from source files in the following directories:"
 msgstr "دەرهێنانی دەق لە پەڕگەکانی ژێدەرەوە لە پێڕستەکانی دادێ:"
 
 msgid "Base path:"
 msgstr "ڕێچکەی بنچینە:"
 
-msgid "Sources paths"
-msgstr "ژێدەرەکانی ڕێچکەکان"
+msgid "Sources keywords"
+msgstr "ژێدەرەکانی کلیلەوشە"
 
 msgid ""
 "Use these keywords (function names) to recognize translatable strings\n"
@@ -1445,9 +1638,6 @@ msgstr ""
 msgid "Learn about gettext keywords"
 msgstr ""
 
-msgid "Sources keywords"
-msgstr "ژێدەرەکانی کلیلەوشە"
-
 msgid "Update summary"
 msgstr "کورتە نوێ بکەرەوە"
 
@@ -1495,7 +1685,7 @@ msgstr "نوێکردنەوەی کەتەلۆگ - هاوکاتکردنی لەگە
 msgid "Toggled if selected string has fuzzy translation"
 msgstr "جێگیرکردن ئەگەر زنجیرەنووسەی دەستنیشانکراو وەرگێڕانی ناڕوونی هەبوو"
 
-msgid "Show or hide the sidebar."
+msgid "Show or hide the sidebar"
 msgstr ""
 
 #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer.
@@ -1507,6 +1697,9 @@ msgid ""
 "translation corresponds to."
 msgstr ""
 
+msgid "Notes for translators:"
+msgstr ""
+
 msgid "Add comment"
 msgstr ""
 
@@ -1579,14 +1772,21 @@ msgstr ""
 msgid "Open an existing PO file and edit the translation."
 msgstr ""
 
-msgid "Create new translation"
-msgstr ""
-
 msgid ""
 "Take an existing PO file or POT template and create a new translation from "
 "it."
 msgstr ""
 
+msgid "Collaborate on a translation with Crowdin"
+msgstr ""
+
+msgid ""
+"Download a file from Crowdin project, translate and sync your changes back."
+msgstr ""
+
+msgid "What is Crowdin?"
+msgstr ""
+
 msgid "There are no translations. That’s unusual."
 msgstr ""
 
@@ -1619,3 +1819,9 @@ msgstr ""
 
 msgid "Configure source code extraction in Properties."
 msgstr ""
+
+msgid "Sync"
+msgstr ""
+
+msgid "Synchronize the translation with Crowdin"
+msgstr ""
diff --git a/locales/co.mo b/locales/co.mo
index 01db084..d1aeb0d 100644
Binary files a/locales/co.mo and b/locales/co.mo differ
diff --git a/locales/co.po b/locales/co.po
index bec5f6b..3bb889d 100644
--- a/locales/co.po
+++ b/locales/co.po
@@ -2,8 +2,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: poedit\n"
 "Report-Msgid-Bugs-To: help at poedit.net\n"
-"POT-Creation-Date: 2015-01-10 16:00+0100\n"
-"PO-Revision-Date: 2015-03-10 12:33-0400\n"
+"POT-Creation-Date: 2015-05-27 11:31+0200\n"
+"PO-Revision-Date: 2015-05-27 05:18-0400\n"
 "Last-Translator: vslavik <vaclav at slavik.io>\n"
 "Language-Team: Corsican\n"
 "Language: co_FR\n"
@@ -20,7 +20,7 @@ msgid "Hide this notification message"
 msgstr "Piattà stu messaghju di nutificazione"
 
 msgid "Don't Show Again"
-msgstr "Ùn affissà più"
+msgstr "Ùn Affissà Più"
 
 msgid "Don't show again"
 msgstr "Ùn affissà più"
@@ -42,7 +42,7 @@ msgstr "Rubrica malfuttuta : '%s'"
 msgid ""
 "Broken catalog file: singular form msgstr used together with msgid_plural"
 msgstr ""
-"Schedariu di catalogu alteratu : forma singulare msgstr impiegata cù "
+"Schedariu di catalogu alteratu : forma singulare msgstr impiegata inseme cù "
 "msgid_plural"
 
 msgid "Broken catalog file: plural form msgstr used without msgid_plural"
@@ -54,12 +54,12 @@ msgid ""
 "There were errors when loading the catalog. Some data may be missing or "
 "corrupted as the result."
 msgstr ""
-"Ci eranu sbaglii mentre u caricamentu di u catalogu. Podasse qualchì datu "
+"Ci eranu errori mentre u caricamentu di u catalogu. Podasse qualchì datu "
 "manca o hè alteratu."
 
 #, c-format
 msgid "Couldn't load file %s, it is probably corrupted."
-msgstr "Ùn pò micca incaricà u schedariu %s, podasse hè alteratu."
+msgstr "Ùn pò micca caricà u schedariu %s, podasse hè alteratu."
 
 #, c-format
 msgid ""
@@ -67,7 +67,7 @@ msgid ""
 "Please save it under different name."
 msgstr ""
 "U schedariu '%s' pò solu esse lettu è ùn pò micca esse\n"
-"arregistratu. Ci vole à salvallu cù unu altru nome."
+"arregistratu. Ci vole à salvallu cù un altru nome."
 
 #, c-format
 msgid "Couldn't save file %s."
@@ -76,7 +76,7 @@ msgstr "Ùn pò micca arregistrà u schedariu %s."
 msgid ""
 "There was a problem formatting the file nicely (but it was saved all right)."
 msgstr ""
-"Ci era unu prublemu mentre a creazione di u schedariu (ma hè statu criatu "
+"Ci era un prublema mentre a creazione di u schedariu (ma hè statu creatu "
 "quantunque)."
 
 #, c-format
@@ -87,22 +87,31 @@ msgid ""
 "It was saved in UTF-8 instead and the setting was modified accordingly."
 msgstr ""
 "U catalogu ùn pò micca esse arregistratu cù u mazzu di caratteri '%s' "
-"indicatu in l'ozzioni di u catalogu.\n"
+"indicatu in e preferenze di u catalogu.\n"
 "\n"
 "Hè statu arregistratu in UTF-8 è l'ozzione hè statu mudificata."
 
 msgid "Error saving catalog"
-msgstr "Sbagliu à l'arregistramentu di u catalogu"
+msgstr "Errore à l'arregistramentu di u catalogu"
+
+msgid "PO Translation Files"
+msgstr "Schedarii di Traduzzione PO"
+
+msgid "POT Translation Templates"
+msgstr "Mudelli di Traduzzione POT"
+
+msgid "All Translation Files"
+msgstr "Tutti Schedarii di Traduzzione"
 
 msgid "Merging differences..."
-msgstr "Cumbinà e sfarenze..."
+msgstr "Unisce e sfarenze..."
 
 #, c-format
 msgid "'%s' is not a valid POT file."
-msgstr "'%s' ùn hè micca unu schedariu POT leghjittimu."
+msgstr "'%s' ùn hè micca un schedariu POT accettevule."
 
 msgid "(Use default language)"
-msgstr "(Impiegate a lingua generica)"
+msgstr "(Impiegà a lingua predefinita)"
 
 msgid "Select your preferred language"
 msgstr "Selezziunà a vostra lingua preferita"
@@ -113,6 +122,86 @@ msgstr "Scelta di a lingua"
 msgid "You must restart Poedit for this change to take effect."
 msgstr "Ci vole à rilancià Poedit per piglià stu cambiamentu in effettu."
 
+msgid "Downloading translations is disabled in this project."
+msgstr "Telecaricà e traduzzioni ùn hè micca pussibule cù stu prughjettu."
+
+msgid "Not authorized, please sign in again."
+msgstr "Micca auturizatu, autenticassi torna."
+
+msgid "Sign in to Crowdin"
+msgstr "Autenticassi à Crowdin"
+
+msgid ""
+"Crowdin is an online localization management platform and collaborative "
+"translation tool. Poedit can seamlessly sync PO files managed at Crowdin."
+msgstr ""
+"Crowdin hè una piattaforma inlinea di ghjestione di lucalizazione è un "
+"attrezzu di traduzzione in collaborazione. Poedit pò dinù sincrunizà i "
+"schedarii PO amministrati da Crowdin."
+
+msgid "Sign In"
+msgstr "Autenticazione"
+
+msgid "Sign in"
+msgstr "Autenticazione"
+
+msgid "Sign Out"
+msgstr "Scunnettassi"
+
+msgid "Sign out"
+msgstr "Scunnettassi"
+
+msgid "Waiting for authentication…"
+msgstr "In aspettanza d'autenticazione..."
+
+msgid "Updating user information…"
+msgstr "Mudificazione di l'infurmazioni di l'utilizatore..."
+
+msgid "Signed in as:"
+msgstr "Autenticatu cum'è :"
+
+msgid "Learn More About Crowdin"
+msgstr "Sapene di Più Nantu à Crowdin"
+
+msgid "Learn more about Crowdin"
+msgstr "Sapene di più nantu à Crowdin"
+
+msgid "Open Crowdin translation"
+msgstr "Apre una traduzzione Crowdin"
+
+msgid "Project:"
+msgstr "Prughjettu :"
+
+msgid "Language:"
+msgstr "Lingua :"
+
+msgid "File:"
+msgstr "Schedariu :"
+
+msgid "No translation projects listed in your Crowdin account."
+msgstr "Ùn ci hè micca di prughjettu di traduzzione in u vostru contu Crowdin."
+
+msgid "This project has no files that can be translated in Poedit."
+msgstr "Stu prughjettu ùn hà alcunu schedariu chì pò esse traduttu in Poedit."
+
+msgid "This file can only be edited in Crowdin’s web interface."
+msgstr "Stu schedariu pò esse mudificatu solu in l'interfaccia web di Crowdin."
+
+msgid "Downloading latest translations…"
+msgstr "Telecaricamentu in corsu di l'ultime traduzzioni..."
+
+msgid "Syncing with Crowdin"
+msgstr "Sincrunizendu cù Crowdin"
+
+msgid "Syncing with Crowdin failed."
+msgstr "Fiascu di a sincrunisazione cù Crowdin."
+
+msgid "Crowdin error"
+msgstr "Errore da Crowdin"
+
+msgid "Uploading translations…"
+msgstr "Incaricamentu in corsu di e traduzzioni..."
+
 msgid "&Copy"
 msgstr "Cu&pià"
 
@@ -120,7 +209,7 @@ msgid "Learn more"
 msgstr "Per sapene di più"
 
 msgid "Learn More"
-msgstr "Per sapene di più"
+msgstr "Per Sapene di Più"
 
 #, c-format
 msgid "Failed command: %s"
@@ -135,21 +224,19 @@ msgstr "Esaminà i schedarii..."
 #. TRANSLATORS: '%s' is replaced with the kind of the files (e.g. C++, PHP, ...)
 #, c-format
 msgid "Parsing %s files..."
-msgstr "Analisa di %s schedarii..."
+msgstr "Analisa di i schedarii %s..."
 
 msgid "Failed to load extracted catalog."
 msgstr "Fiascu per caricà u catalogu estrattu."
 
 msgid "&Help"
-msgstr "&Aiutu"
+msgstr "Ai&utu"
 
 msgid "MO files can’t be directly edited in Poedit."
 msgstr "I schedarii MO ùn ponu micca esse mudificati cù Poedit."
 
 msgid "Error opening file"
-msgstr ""
-"Errore scunnisciutu à l'apertura di schedariu. Assicuratevvi chì u schedariu "
-"sia accessibule è sia unu ducumentu XML accettevule."
+msgstr "Errore à l'apertura di u schedariu"
 
 msgid ""
 "Please open and edit the corresponding PO file instead. When you save it, "
@@ -159,7 +246,13 @@ msgstr ""
 "u schedariu MO serà mudificatu dinù."
 
 msgid "don't delete temporary files (for debugging)"
-msgstr "ùn sgassate micca i schedarii timpurari (per debugging)"
+msgstr "ùn cacciate micca i schedarii timpurari (per spannà)"
+
+msgid "handle a poedit:// URI"
+msgstr "Manighjà un poedit:// URI"
+
+msgid "Failed to communicate with Poedit process."
+msgstr "Fiascu per cummunicà cù u prucessu Poedit."
 
 #, c-format
 msgid "Unhandled exception occurred: %s"
@@ -169,17 +262,11 @@ msgid "Unhandled exception occurred."
 msgstr "Un anumalia imprevista s'hè affaccata."
 
 msgid "Open catalog"
-msgstr "Apre u catalogu"
-
-msgid "All Files"
-msgstr "Tutti i Schedarii"
-
-msgid "PO Translation Files"
-msgstr "Schedarii di Traduzzione PO"
+msgstr "Apre un catalogu"
 
 #, c-format
 msgid "File '%s' doesn't exist."
-msgstr "U schedariu '%s' ùn esista micca."
+msgstr "U schedariu '%s' ùn esiste micca."
 
 #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name
 #. ("Poedit" here, but please use "%s")
@@ -195,15 +282,14 @@ msgstr "Versione %s"
 
 msgid "Poedit is an easy to use translations editor."
 msgstr ""
-"Corsican translation by Patriccollu di Santa Maria Sichè.\n"
-"\n"
-"Poedit hè unu editore di traduzzione faciule à aduprà."
+"Poedit hè un editore di traduzzione faciule à aduprà. A traduzzione in "
+"lingua corsa hè statu fatta da Patriccollu di Santa Maria Sichè."
 
 msgid "Catalogs Manager"
-msgstr "Amministrazione di i Cataloghi"
+msgstr "Amministratore di Cataloghi"
 
 msgid "Check for Updates..."
-msgstr "Circà e Messe à Ghjornu..."
+msgstr "Circà i Rinnovi..."
 
 msgid "&Edit"
 msgstr "&Mudificà"
@@ -212,19 +298,19 @@ msgid "Undo"
 msgstr "Disfà"
 
 msgid "Redo"
-msgstr "Riffà"
+msgstr "Rifà"
 
 msgid "Paste and Match Style"
 msgstr "Incullà è fà Currisponde u Stilu"
 
 msgid "Delete"
-msgstr "Sguassà"
+msgstr "Caccià"
 
 msgid "Spelling and Grammar"
-msgstr "Ortografia è Gramatica"
+msgstr "Ortugrafia è Gramatica"
 
 msgid "Show Spelling and Grammar"
-msgstr "Affissà Ortografia è Gramatica"
+msgstr "Affissà Ortugrafia è Gramatica"
 
 msgid "Check Document Now"
 msgstr "Verificà u ducumentu avà"
@@ -236,7 +322,7 @@ msgid "Check Grammar With Spelling"
 msgstr "Verificà a gramatica cù l'ortugrafia"
 
 msgid "Correct Spelling Automatically"
-msgstr "Currege l'ortugrafia automaticamente"
+msgstr "Currege l'ortugrafia autumaticamente"
 
 msgid "Substitutions"
 msgstr "Sustituzioni"
@@ -275,22 +361,22 @@ msgid "Speech"
 msgstr "Discussione"
 
 msgid "Start Speaking"
-msgstr "Principià u Discorsu"
+msgstr "Principià un Discorsu"
 
 msgid "Stop Speaking"
 msgstr "Piantà u Discorsu"
 
 msgid "&View"
-msgstr "&Fà vede"
+msgstr "&Affissà"
 
 msgid "Enter Full Screen"
-msgstr ""
+msgstr "Passà in Screnu Sanu"
 
 msgid "Window"
 msgstr "Finestra"
 
 msgid "Minimize"
-msgstr "Impuculì in lu spaziu di nutificazione di u sistemu"
+msgstr "Impuculì in lu spaziu di nutificazione di u sistema"
 
 msgid "Zoom"
 msgstr "Ingrandamentu"
@@ -316,7 +402,7 @@ msgid "&Undo"
 msgstr "&Disfà"
 
 msgid "&Redo"
-msgstr "&Riffà"
+msgstr "&Rifà"
 
 msgid "Cu&t"
 msgstr "&Taglià"
@@ -358,7 +444,7 @@ msgstr "Maiusc+"
 
 #. TRANSLATORS: Keyboard shortcut for display in Windows menus
 msgid "Enter"
-msgstr "Intrata"
+msgstr "Entrée"
 
 #. TRANSLATORS: Keyboard shortcut for display in Windows menus
 msgid "Up"
@@ -385,7 +471,7 @@ msgstr "Ùn pudete micca depone più d'unu schedariu in a finestra di Poedit."
 
 #, c-format
 msgid "File '%s' is not a message catalog."
-msgstr "U schedariu '%s' ùn hè micca unu catalogu di messaghju."
+msgstr "U schedariu '%s' ùn hè micca un catalogu di messaghju."
 
 msgid "Poedit"
 msgstr "Poedit"
@@ -397,7 +483,7 @@ msgid "&Go"
 msgstr "&Và"
 
 msgid "Source text:"
-msgstr "Testu surghjente :"
+msgstr "Testu d'urigine :"
 
 msgid "Singular:"
 msgstr "Singulare :"
@@ -408,6 +494,20 @@ msgstr "Plurale :"
 msgid "Translation:"
 msgstr "Traduzzione :"
 
+msgid ""
+"POT files are only templates and don’t contain any translations themselves.\n"
+"To make a translation, create a new PO file based on the template."
+msgstr ""
+"I schedarii POT sò solu mudelli è ùn cuntenenu micca di traduzzione.\n"
+"Per fà una traduzzione, create un novu schedariu PO appughjatu nantu à u "
+"mudellu."
+
+msgid "Create New Translation"
+msgstr "Creà una Traduzzione Nova"
+
+msgid "Create new translation"
+msgstr "Creà una nova traduzzione"
+
 #. TRANSLATORS: %s is language name in its basic form (as you
 #. would see e.g. in a list of supported languages). You may need
 #. to rephrase it, e.g. to an equivalent of "for language %s".
@@ -415,6 +515,8 @@ msgstr "Traduzzione :"
 msgid ""
 "Spellchecking is disabled, because the dictionary for %s isn’t installed."
 msgstr ""
+"U cuntrollu d'ortugrafia hè disattivatu, perchè u dizziunariu %s ùn hè micca "
+"installatu."
 
 msgid "Install"
 msgstr "Installà"
@@ -426,7 +528,7 @@ msgid "Save changes"
 msgstr "Arregistrà i cambiamenti"
 
 msgid "Your changes will be lost if you don't save them."
-msgstr "I vostri cambiamenti seranu persi s'è voi ùn li arregistrate micca"
+msgstr "I vostri cambiamenti seranu persi s'è voi ùn li arregistrate micca."
 
 msgid "Save"
 msgstr "Arregistrà"
@@ -441,13 +543,13 @@ msgid "Save as..."
 msgstr "Arregistrà cù u nome..."
 
 msgid "Compile to..."
-msgstr ""
+msgstr "Compilà ver di..."
 
 msgid "Compiled Translation Files"
-msgstr ""
+msgstr "Schedarii di Traduzzione Trasfurmati da una Cumpilazione"
 
 msgid "Export as..."
-msgstr "Espurtà cum'è..."
+msgstr "Espurtà cù u nome..."
 
 msgid "HTML Files"
 msgstr "Schedarii HTML"
@@ -455,22 +557,22 @@ msgstr "Schedarii HTML"
 msgid "Open catalog template"
 msgstr "Apre u mudellu di catalogu"
 
-msgid "POT Translation Templates"
-msgstr "Mudelli di Traduzzione POT"
-
 msgid "Updating catalog"
-msgstr "Mudificazione di u catalogu"
+msgstr "Mudificazione di catalogu"
 
 msgid "Source code not available."
-msgstr ""
+msgstr "U testu d'urigine ùn hè micca dispunibule."
 
 msgid "Updating failed"
-msgstr ""
+msgstr "Mudificazione fiasca"
 
 msgid ""
 "Translations couldn’t be updated from the source code, because no code was "
 "found in the location specified in the catalog’s Properties."
 msgstr ""
+"E traduzzioni ùn ponu micca esse mudificate à partesi di u testu d'urigine, "
+"perchè alcunu testu ùn hè statu trovu in u locu indicatu in e Pruprietà di u "
+"catalogu."
 
 msgid "Entries in the catalog are probably incorrect."
 msgstr "Qualchì entrata in u catalogu hè gattiva."
@@ -482,8 +584,8 @@ msgstr ""
 #, c-format
 msgid "%d issue with the translation found."
 msgid_plural "%d issues with the translation found."
-msgstr[0] "%d frasa cù a traduzzione trova."
-msgstr[1] "%d frase cù a traduzzione trova."
+msgstr[0] "%d prublema trovu in a traduzzione."
+msgstr[1] "%d prublemi trovi in a traduzzione."
 
 msgid "Validation results"
 msgstr "Risultati di a validazione"
@@ -492,8 +594,8 @@ msgid ""
 "Entries with errors were marked in red in the list. Details of the error "
 "will be shown when you select such an entry."
 msgstr ""
-"Entrate cù sbaglii sò marcate di rossu in a lista. Detaglii nantu à u "
-"sbagliu seranu visti quandu l'entrata serà selezziunata."
+"Entrate cù sbaglii sò marcate di rossu in a lista. I detaglii di u sbagliu "
+"seranu videvule quandu l'entrata serà selezziunata."
 
 msgid "The file was saved safely."
 msgstr "U schedariu hè statu arregistratu bè."
@@ -516,12 +618,14 @@ msgid ""
 "The file was compiled into the MO format, but it will probably not work "
 "correctly."
 msgstr ""
+"U schedariu hè statu trasfurmatu in a forma MO, ma podasse ùn funziunerà "
+"micca bè."
 
 msgid "The file cannot be compiled into the MO format and used."
-msgstr ""
+msgstr "U schedariu ùn pò micca esse trasfurmatu in a forma MO è impiegatu."
 
 msgid "No problems with the translation found."
-msgstr "Ùn ci hè penseru cù sta traduzzione."
+msgstr "Ùn ci hè micca prublema cù sta traduzzione."
 
 #, c-format
 msgid "The translation is ready for use, but %d entry is not translated yet."
@@ -535,33 +639,58 @@ msgstr[1] ""
 msgid "The translation is ready for use."
 msgstr "A traduzzione hè pronta à l'approdu."
 
-msgid "No references to this string found."
-msgstr "Manc'una referenza trova per sta frasa."
-
-msgid "Please choose the reference you want to show:"
-msgstr "Sceglite a referenza chì voi vulete mustrà :"
-
-msgid "References"
-msgstr "Referenze"
-
 msgid "Context:"
 msgstr "Cuntestu :"
 
+#, c-format
+msgid "Poedit automatically fixed invalid content in the file “%s”."
+msgstr ""
+"Poedit hà currettu autumaticamente u cuntenutu gattivu in u schedariu “%s”."
+
+msgid ""
+"The file contained duplicate items, which is not allowed in PO files and "
+"would prevent the file from being used. Poedit fixed the issue, but you "
+"should review translations of any items marked as fuzzy and correct them if "
+"necessary."
+msgstr ""
+"U schedariu cuntinia elementi in doppiu, cio chì ùn hè micca permessu in i "
+"schedarii PO è pudia impedisce u schedariu d'esse impiegatu. Poedit hà "
+"currettu u prublema, ma ci vole à rivede e traduzzioni di l'elementi chì sò "
+"marcati cum'è dubbitosi è à curregelli s'ellu hè bisognu."
+
 msgid "Language of the translation isn't set."
 msgstr "A lingua di a traduzzione ùn hè micca definita."
 
 msgid "Set Language"
-msgstr ""
+msgstr "Definisce a Lingua"
 
 msgid "Set language"
 msgstr "Definisce a lingua"
 
+#. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)."
+msgid ""
+"Suggestions are not available if the translation language is not set "
+"correctly. Other features, such as plural forms, may be affected as well."
+msgstr ""
+"E suggestioni ùn sò micca dispunibule s'è a lingua di traduzzione ùn hè "
+"micca definita bè. D'altre funzioni, cum'è e forme plurale, ponu esse "
+"affettate dinù."
+
+msgid "Language of the translation is the same as source language."
+msgstr "A lingua di a traduzzione hè listessa chì quella d'urigine."
+
+msgid "Fix Language"
+msgstr "Currege a Lingua"
+
+msgid "Fix language"
+msgstr "Currege a lingua"
+
 msgid ""
 "This catalog has entries with plural forms, but doesn't have Plural-Forms "
 "header configured."
 msgstr ""
 "Stu catalogu hà entrate cù forme plurale, ma a rubrica Forme-Plurale ùn hè "
-"micca curretta."
+"micca pronta."
 
 msgid ""
 "Entries in this catalog have different plural forms count from what "
@@ -575,13 +704,13 @@ msgstr "Manca a rubrica Forme-Plurale chì hè richiesta."
 
 #, c-format
 msgid "Syntax error in Plural-Forms header (\"%s\")."
-msgstr "Sbagliu in a rubrica di e Forme-Plurale (\"%s\")."
+msgstr "Sbagliu di sintassa in a rubrica Forme-Plurale (\"%s\")."
 
 msgid "Fix the Header"
-msgstr ""
+msgstr "Currege a Rubrica"
 
 msgid "Fix the header"
-msgstr "Cambià a rubrica"
+msgstr "Currege a rubrica"
 
 #. TRANSLATORS: %s is language name in its basic form (as you
 #. would see e.g. in a list of supported languages). You may need
@@ -592,26 +721,34 @@ msgstr ""
 "L'espressione di e forme plurale impiegata da u catalogu hè strana per a "
 "lingua %s."
 
+#. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the catalog is unusual for %s.")"
 msgid "Review"
 msgstr "Revista"
 
 #, c-format
 msgid "Error loading message catalog file '%s'."
-msgstr "Sbagliu cù u schedariu di catalogu di messaghju '%s'."
+msgstr ""
+"Errore mentre u caricamentu di u schedariu di catalogu di messaghju '%s'."
 
 #, c-format
 msgid "Translated: %d of %d (%d %%)"
-msgstr ""
+msgstr "Traduttu : %d frà %d (%d %%)"
 
 #, c-format
 msgid "Remaining: %d"
-msgstr ""
+msgstr "Restu : %d"
 
 #, c-format
 msgid "%d error"
 msgid_plural "%d errors"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "%d errore"
+msgstr[1] "%d errori"
+
+#, c-format
+msgid "%d entry"
+msgid_plural "%d entries"
+msgstr[0] "%d entrata"
+msgstr[1] "%d entrate"
 
 msgid " (unsaved)"
 msgstr " (micca arregistratu)"
@@ -620,34 +757,34 @@ msgid " (modified)"
 msgstr " (mudificatu)"
 
 msgid "Go"
-msgstr ""
+msgstr "Và"
 
 #, c-format
 msgid "Failed to update translation memory: %s"
 msgstr "Fiascu per rinnovà a memoria di a traduzzione: %s"
 
 msgid "Purge deleted translations"
-msgstr "Toglie e traduzzione sguassate"
+msgstr "Spurgulà e traduzzioni cacciate"
 
 msgid "Do you want to remove all translations that are no longer used?"
-msgstr "Vulete sgassà tutti i traduzzioni ch'ùn sò più impiegati ?"
+msgstr "Vulete toglie tutte e traduzzioni ch'ùn sò più impiegate ?"
 
 msgid ""
 "If you continue with purging, all translations marked as deleted will be "
 "permanently removed. You will have to translate them again if they are added "
 "back in the future."
 msgstr ""
-"S'è voi cuntinuate cusì, tutti i traduzzioni marchati cum'è sguassati seranu "
-"cacciati. Ci vulerà à traduceli torna s'elli sò aghjunti à l'avvene dinù."
+"S'è voi cuntinuate cusì, tutte e traduzzioni marchate cum'è cacciate seranu "
+"tolte per sempre. Ci vulerà à traducele torna s'elle sò aghjunte à l'avvene."
 
 msgid "Keep"
 msgstr "Cunservà"
 
 msgid "Purge"
-msgstr "Toglie"
+msgstr "Spurgulà"
 
 msgid "Fill missing translations from TM"
-msgstr "Riempie e traduzzioni viote da a MT"
+msgstr "Riempie e traduzzioni viote à partesi di a MdT"
 
 msgid "Only fill in exact matches"
 msgstr "Riempie solu e frase uguale"
@@ -656,16 +793,19 @@ msgid ""
 "By default, inaccurate results are filled in as well and marked as fuzzy. "
 "Check this option to only include accurate matches."
 msgstr ""
-"Da bona regula, i resulti chì s'assumuglianu so riempiuti dinù è annutati "
-"cum'è foschi. Attivà st'ozzione per riempie solu e frase uguale."
+"Di bona regula, i resulti chì s'assumuglianu sò riempiuti dinù è annutati "
+"cum'è dubbitosi. Attivà st'ozzione per riempie solu e frase uguale."
 
 msgid "Don’t mark exact matches as fuzzy"
-msgstr ""
+msgstr "Ùn marcate micca e frase uguale cum'è dubbitose"
 
 msgid ""
 "Only enable if you trust the quality of your TM. By default, all matches "
 "from the TM are marked as fuzzy and should be reviewed."
 msgstr ""
+"Attivà solu st'ozzione s'è voi site sicuru di a vostra MdT. Osinnò tutte e "
+"suggestioni chì venenu di a MdT sò annutate cum'è dubbitose è deveranu esse "
+"verificate."
 
 msgid "Fill"
 msgstr "Riempie"
@@ -680,8 +820,8 @@ msgid ""
 "The translations were marked as fuzzy, because they may be inaccurate. You "
 "should review them for correctness."
 msgstr ""
-"E traduzzioni sò statu marcate cum'è fosche, perchè sò podasse imprecise. Ci "
-"vole à verificà a so accuratezza."
+"E traduzzioni sò statu marcate cum'è dubbitose, perchè sò podasse imprecise. "
+"Ci vole à verificà a so accuratezza."
 
 msgid "No entries could be filled from the translation memory."
 msgstr "Alcuna entrata appruvistata da a memoria di traduzzione."
@@ -691,39 +831,39 @@ msgid ""
 "is only effective for semi-automatic translations after Poedit learns enough "
 "from files that you translated manually."
 msgstr ""
-"A MT ùn cuntene micca di frasa simile à u cuntenutu di stu schedariu. Quessu "
-"funziona per traduzzioni mezu-autumatiche dopu chì Poedit abbia amparatu "
+"A MdT ùn cuntene alcuna frasa simile à u cuntenutu di stu schedariu. Quessu "
+"funziona bè per traduzzioni mezu-autumatiche dopu chì Poedit abbia amparatu "
 "abbastanza da i schedarii tradutti da una manera manuale."
 
 msgid "Translating"
-msgstr "Traduzzione automatica in corsu..."
+msgstr "Traduzzione autumatica in corsu"
 
 msgid "Filling missing translations from TM..."
-msgstr "Riempiime in corsu di e traduzzioni viote da a MT..."
+msgstr "Riempiime in corsu di e traduzzioni viote à partesi di a MdT..."
 
 #, c-format
 msgid "Translated %u string"
 msgid_plural "Translated %u strings"
-msgstr[0] "%u frasa tradutta automaticamente"
-msgstr[1] "%u frase tradutte automaticamente"
+msgstr[0] "%u frasa tradutta autumaticamente"
+msgstr[1] "%u frase tradutte autumaticamente"
 
 msgid "Copy from source text"
-msgstr "Cupià da u &testu surghjente"
+msgstr "Cupià da u testu d'&urigine"
 
 msgid "Copy from Source Text"
-msgstr "Cupià da u &Testu Surghjente"
+msgstr "Cupià da u Testu d'&Urigine"
 
 msgid "Clear translation"
-msgstr "&Sguassà a traduzzione"
+msgstr "&Viutà a traduzzione"
 
 msgid "Clear Translation"
-msgstr "&Sguassà a Traduzzione"
+msgstr "&Viutà a Traduzzione"
 
 msgid "Edit comment"
-msgstr "Mudificà u cummentariu"
+msgstr "Mudificà u cummentu"
 
 msgid "Edit Comment"
-msgstr "Mudificà Cummentariu"
+msgstr "Mudificà u Cummentu"
 
 msgid "References:"
 msgstr "Referenze :"
@@ -735,6 +875,9 @@ msgstr "Tuttu"
 msgid "Form %i"
 msgstr "Forma %i"
 
+msgid "Singular"
+msgstr "Singulare"
+
 msgid "Zero"
 msgstr "Zeru"
 
@@ -744,6 +887,9 @@ msgstr "Unu"
 msgid "Two"
 msgstr "Dui"
 
+msgid "Plural"
+msgstr "Plurale"
+
 msgid "Other"
 msgstr "Altru"
 
@@ -752,28 +898,34 @@ msgstr "&Indette"
 
 #, c-format
 msgid "Set bookmark %i"
-msgstr ""
+msgstr "Definisce l'indetta %i"
 
 #, c-format
 msgid "Go to bookmark %i"
-msgstr ""
+msgstr "Andà à l'indetta %i"
 
 #, c-format
 msgid "Set Bookmark %i"
-msgstr ""
+msgstr "Definisce l'Indetta %i"
 
 #, c-format
 msgid "Go to Bookmark %i"
-msgstr ""
+msgstr "Andà à l'Indetta %i"
 
 msgid "Hide Sidebar"
-msgstr "Piantà a Barra di Latu"
+msgstr "Piantà a Barra Laterale"
 
 msgid "Show Sidebar"
-msgstr "Affissà a Barra di Latu"
+msgstr "Affissà a Barra Laterale"
+
+msgid "Hide Status Bar"
+msgstr "Piattà a Barra di Statu"
+
+msgid "Show Status Bar"
+msgstr "Affissà a Barra di Statu"
 
 msgid "Source text"
-msgstr "Testu surghjente"
+msgstr "Testu d'urigine"
 
 msgid "Translation"
 msgstr "Traduzzione"
@@ -781,6 +933,10 @@ msgstr "Traduzzione"
 msgid "ID"
 msgstr "ID"
 
+#, c-format
+msgid "Source text — %s"
+msgstr "Testu d'urigine — %s"
+
 msgid "unknown language"
 msgstr "lingua scunnisciuta"
 
@@ -791,61 +947,77 @@ msgstr "Traduzzione — %s"
 msgid "Error:"
 msgstr "Sbagliu :"
 
-msgid "Project info"
-msgstr "Infurmazione nantu à u prughjettu"
+msgid "Source file"
+msgstr "Schedariu d'urigine"
 
-msgid "Project name and version:"
-msgstr "Nome è versione di u prughjettu :"
+msgid "Source file occurrence:"
+msgstr "Occurrenza di schedariu d'urigine :"
 
-msgid "Language:"
-msgstr "Lingua :"
+msgid "Open in Editor"
+msgstr "Apre cù l'Editore"
 
-msgid "Team:"
-msgstr "Squadra :"
+msgid "Open in editor"
+msgstr "Apre cù l'editore"
 
-msgid "Team's email address:"
-msgstr "Indirizzu elettronicu di a squadra :"
+msgid "No references for the selected item."
+msgstr "Alcuna referenza per l'elementu selezziunatu."
 
-msgid "Charset:"
-msgstr "Mazzu di caratteri :"
+#, c-format
+msgid "Error opening file %s!"
+msgstr "Errore à l'apertura di u schedariu '%s' !"
 
-msgid "Source"
-msgstr "Surghjente"
+msgid "Find"
+msgstr "Circà"
 
-msgid "Notes"
-msgstr "Annutazioni"
+msgid "Replace"
+msgstr "Rimpiazzà"
 
-msgid "Automatic translation"
-msgstr "Traduzzione automatica"
+#. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.)
+msgid "Options"
+msgstr "Ozzioni"
 
-msgid "Fuzzy translation"
-msgstr "Traduzzione fosca :"
+msgid "Ignore case"
+msgstr "Ùn sfarenzià micca maiuscule è minuscule"
 
-msgid "Notes for translators:"
-msgstr "Annutazioni per i traduttori :"
+msgid "Wrap around"
+msgstr "Circunvoglie"
 
-msgid "Comment:"
-msgstr "Cummentariu :"
+msgid "Whole words only"
+msgstr "Solu e parolle sane"
 
-msgid "Source file"
-msgstr "Schedariu surghjente"
+msgid "Find in source texts"
+msgstr "Circà in i testi d'urigine"
 
-msgid "Source file occurrence:"
-msgstr "Schedariu surghjente :"
+msgid "Find in translations"
+msgstr "Circà in e traduzzioni"
 
-msgid "Open in Editor"
-msgstr ""
+msgid "Find in comments"
+msgstr "Circà in i cummenti"
 
-msgid "Open in editor"
-msgstr ""
+msgid "Close"
+msgstr "Chjode"
 
-#, c-format
-msgid "Error opening file %s!"
-msgstr "Sbagliu à l'apertura di u schedariu '%s' !"
+msgid "Replace All"
+msgstr "Rimpiazzà Tutti"
+
+msgid "Replace all"
+msgstr "Rimpiazzà tutti"
+
+msgid "< &Previous"
+msgstr "< &Precedente"
+
+msgid "&Next >"
+msgstr "&Seguente >"
+
+msgid "String to find"
+msgstr "Frasa à circà"
+
+msgid "Replacement string"
+msgstr "Frasa di rimpiazzamentu"
 
 #, c-format
 msgid "Cannot execute program: %s"
-msgstr "Ùn pò micca eseguisce u prugramu : %s"
+msgstr "Ùn pò micca eseguisce u prugramma : %s"
 
 msgid "Language Code or Name (e.g. en_GB)"
 msgstr "Codice o Nome di a Lingua (i.e. : en_GB)"
@@ -857,7 +1029,7 @@ msgid "Language of the translation:"
 msgstr "Lingua di a traduzzione :"
 
 msgid "Poedit - Catalogs manager"
-msgstr "Poedit - Amministrazione di i cataloghi "
+msgstr "Poedit - Amministratore di cataloghi"
 
 msgid "Catalog"
 msgstr "Catalogu"
@@ -869,7 +1041,7 @@ msgid "Untrans"
 msgstr "Micca traduttu"
 
 msgid "Fuzzy"
-msgstr "Foscu"
+msgstr "Dubbitosu"
 
 msgid "Bad Tokens"
 msgstr "Marche Gattive"
@@ -887,7 +1059,7 @@ msgid "<unnamed>"
 msgstr "<senza nome>"
 
 msgid "Do you want to delete the project?"
-msgstr "Vulete sguassà u prughjettu ?"
+msgstr "Vulete caccià u prughjettu ?"
 
 msgid "Confirmation"
 msgstr "Cunfirmazione"
@@ -897,13 +1069,13 @@ msgid ""
 "all catalogs in this project?"
 msgstr ""
 "Site sicuru di vulè mudificà in massa\n"
-"tutti i cataloghi in stu prughjettu ?"
+"tutti i cataloghi di stu prughjettu ?"
 
 msgid "Information about the translator"
 msgstr "Infurmazione apprupositu di u traduttore"
 
 msgid "Name:"
-msgstr "Nome:"
+msgstr "Nome :"
 
 msgid "Your Name"
 msgstr "U vostru Nome"
@@ -925,16 +1097,16 @@ msgid "Editing"
 msgstr "Mudificazione"
 
 msgid "Automatically compile MO file when saving"
-msgstr "Pruduce automaticamente u schedariu MO à l'arregistramentu"
+msgstr "Pruduce autumaticamente u schedariu MO à l'arregistramentu"
 
 msgid "Show summary after catalog update"
-msgstr "Affissà u riassuntu dopu à a mudificazione di u catalogu"
+msgstr "Affissà u riassuntu dopu à u rinnovu di u catalogu"
 
 msgid "Check spelling"
 msgstr "Verificà l'ortugrafia"
 
 msgid "Always change focus to text input field"
-msgstr "Dà a primura à u testu piuttostu chì a a lista"
+msgstr "Dà a primura à u testu piuttostu chì à a lista"
 
 msgid ""
 "Never let the list of strings take focus. If enabled, you must use Ctrl-"
@@ -955,7 +1127,7 @@ msgid "Use custom text fields font:"
 msgstr "Impiegà una grafia persunalizata per i testi :"
 
 msgid "Change UI language"
-msgstr "Cambià a lingua di l'UI"
+msgstr "Cambià a lingua di l'interfaccia"
 
 #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions
 msgid "(requires Windows 8 or newer)"
@@ -975,10 +1147,10 @@ msgstr "Amparà da schedarii..."
 
 #. TRANSLATORS: This is a button that deletes everything in the translation memory (i.e. clears/resets it).
 msgid "Reset"
-msgstr ""
+msgstr "Viutà"
 
 msgid "Consult TM when updating from sources"
-msgstr "Esaminà a MT quandu a mudificazione si face da i testi d'urigine"
+msgstr "Esaminà a MdT quandu a mudificazione si face da i testi d'urigine"
 
 msgid ""
 "If enabled, Poedit will try to fill in new entries using your previous\n"
@@ -988,8 +1160,8 @@ msgid ""
 msgstr ""
 "S'è st'ozzione hè attiva, Poedit pruverà di riempie e nove entrate\n"
 "impieghendu e vostre precedente traduzzioni arregistrate in a memoria di\n"
-"traduzzione. S'è a MT hè guasi viota, ùn serà micca assai efficiente.\n"
-"Più vi ferete di traduzzioni, più a MT crescerà è diventerà efficiente."
+"traduzzione. S'è a MdT hè guasi viota, ùn serà micca assai efficiente.\n"
+"Più vi ferete di traduzzioni, più a MdT crescerà è serà efficiente."
 
 msgid "Stored translations:"
 msgstr "Traduzzioni ammanugliate :"
@@ -1010,15 +1182,17 @@ msgid "Finalizing..."
 msgstr "Cumpiimentu in corsu..."
 
 msgid "Reset translation memory"
-msgstr ""
+msgstr "Viutà a memoria di traduzzione"
 
 msgid "Are you sure you want to reset the translation memory?"
-msgstr ""
+msgstr "Site sicuru di vulè viutà a memoria di traduzzione ?"
 
 msgid ""
 "Resetting the translation memory will irrevocably delete all stored "
 "translations from it. You can’t undo this operation."
 msgstr ""
+"A viotatura di a memoria di traduzzione caccierà tutte e traduzzioni chì sò "
+"arregistrate dentru. Ùn pudete micca disfà st'operazione."
 
 msgid "Cancel"
 msgstr "Abbandunà"
@@ -1027,14 +1201,14 @@ msgstr "Abbandunà"
 #. Long text looks weird there, too short (like TM) too, but less so. "General" is about ideal
 #. length there.
 msgid "TM"
-msgstr "MT"
+msgstr "MdT"
 
 msgid ""
 "Source code extractors are used to find translatable strings in the source "
 "code files and extract them so that they can be translated."
 msgstr ""
 "I prugrammi d'estrazzione sò fatti per truvà e frase traducevule in i "
-"schedarii di testu d'urigine, è estraelle per ch'elli sianu tradutti."
+"schedarii di testu d'urigine, è estraelle per ch'elle sianu tradutte."
 
 msgid "New"
 msgstr "Novu"
@@ -1042,11 +1216,21 @@ msgstr "Novu"
 msgid "Edit"
 msgstr "Mudificà"
 
+msgid "Delete extractor"
+msgstr "Sguassà l'attrezzu d'estrazzione"
+
+#, c-format
+msgid "Are you sure you want to delete the “%s” extractor?"
+msgstr "Site sicuru di vulè sguassà l'attrezzu d'estrazzione “%s” ?"
+
 msgid "Extractors"
-msgstr "Attrezzi d'estrazzione"
+msgstr "Estrazzione"
+
+msgid "Accounts"
+msgstr "Conti"
 
 msgid "Automatically check for updates"
-msgstr "Cuntrollà automaticamente i rinnovi"
+msgstr "Cuntrollà autumaticamente i rinnovi"
 
 msgid "Include beta versions"
 msgstr "Include e versioni 'beta'"
@@ -1065,6 +1249,8 @@ msgid ""
 "These settings affect internal formatting of PO files. Adjust them if you "
 "have specific requirements e.g. because of version control."
 msgstr ""
+"Ste preferenze affettanu a forma interna di i schedarii PO. Accunciatele s'è "
+"voi avete una dumanda particulare, per indettu, un cuntrollu di versione."
 
 msgid "Line endings:"
 msgstr "Fine di a linea :"
@@ -1077,23 +1263,59 @@ msgstr "Windows"
 
 #. TRANSLATORS: Followed by text control for entering number; wraps text at given width
 msgid "Wrap at:"
-msgstr ""
+msgstr "Girà à :"
 
 msgid "Preserve formatting of existing files"
-msgstr ""
+msgstr "Cunservà a forma di i schedarii chì esistenu"
 
 msgid "Advanced"
+msgstr "Espertu"
+
+msgid ""
+"<big>Drag and Drop Folders Here</big>\n"
+"\n"
+"or use the + button"
 msgstr ""
+"<big>Sguillà é Depone i Cartulari Quì</big>\n"
+"\n"
+"o impiegate u buttone +"
 
-msgid "Additional keywords"
-msgstr "Parolle chjave addiziunale"
+msgid ""
+"<big>Drag and drop folders here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+"<big>Sguillà é depone i cartulari quì</big>\n"
+"\n"
+"o impiegate u buttone +"
+
+msgid "Add Folders..."
+msgstr "Aghjunghje Cartulari..."
+
+msgid "Add folders..."
+msgstr "Aghjunghje cartulari..."
+
+msgid "Add Files..."
+msgstr "Aghjunghje Schedarii..."
+
+msgid "Add files..."
+msgstr "Aghjunghje schedarii..."
+
+msgid "Add Wildcard..."
+msgstr "Aghjunghje un Caratteru Genericu..."
+
+msgid "Add wildcard..."
+msgstr "Aghjunghje un caratteru genericu..."
 
 msgid "Paths"
-msgstr "Camini"
+msgstr "Passeghji"
 
 msgid "Excluded paths"
 msgstr "Passeghji escludi"
 
+msgid "Additional keywords"
+msgstr "Parolle chjave addiziunale"
+
 msgid "Name of the project the translation is for"
 msgstr "Nome di prughjettu di sta traduzzione"
 
@@ -1108,71 +1330,38 @@ msgstr ""
 "In primu locu, ci vole à arregistrà u schedariu. Osinnò sta sezzione ùn pò "
 "micca esse mudificata."
 
+msgid "Comment:"
+msgstr "Cummentu :"
+
 msgid "OK"
 msgstr "OK"
 
 msgid "C&lear"
-msgstr "Sguassà"
+msgstr "&Viutà"
 
 msgid "Clear the comment"
-msgstr "Sguassà u cummentariu"
-
-msgid "Find..."
-msgstr "Circà.."
-
-msgid "String to find:"
-msgstr "Frasa à circà :"
-
-msgid "Case sensitive"
-msgstr "Sfarenzià Maiuscule è minuscule"
-
-msgid "Start from the first item"
-msgstr "Principià da u primu elementu"
-
-msgid "Whole words only"
-msgstr "Solu parolle sane"
-
-msgid "Find in original strings"
-msgstr "Circà in e frase d'urigine"
-
-msgid "Find in translations"
-msgstr "Circà in e traduzzioni"
-
-msgid "Find in comments"
-msgstr "Circà in cummentarii"
-
-msgid "Find in automatic comments"
-msgstr "Circà in cummentarii autumatichi"
-
-msgid "Close"
-msgstr "Chjode"
-
-msgid "< &Previous"
-msgstr "< &Precedente"
-
-msgid "&Next >"
-msgstr "&Seguente >"
+msgstr "Viutà u cummentu"
 
 msgid "Create new translations project"
-msgstr "Creà novu prughjettu di traduzzioni"
+msgstr "Creà un novu prughjettu di traduzzioni"
 
 msgid "Edit the project"
 msgstr "Mudificà u prughjettu"
 
 msgid "Delete the project"
-msgstr "Sguassà u prughjettu"
+msgstr "Caccià u prughjettu"
 
 msgid "Update all"
 msgstr "Mudificà tuttu"
 
 msgid "Update all catalogs in the project"
-msgstr "Mudificà tutti i cataloghi in stu prughjettu"
+msgstr "Mudificà tutti i cataloghi di stu prughjettu"
 
 msgid "Edit project"
-msgstr "Mudificà prughjettu"
+msgstr "Mudificà u prughjettu"
 
 msgid "Project name:"
-msgstr "Nome di u prughjettu :"
+msgstr "Nome di prughjettu :"
 
 msgid "Browse"
 msgstr "Sfuglià"
@@ -1187,7 +1376,7 @@ msgid "&Close"
 msgstr "&Chjode"
 
 msgid "E&xit"
-msgstr "E&sce"
+msgstr "&Esce"
 
 msgid "Quit"
 msgstr "Esce"
@@ -1196,10 +1385,10 @@ msgid "&New..."
 msgstr "&Novu..."
 
 msgid "New from &POT/PO file..."
-msgstr "Novu da unu schedariu P&OT/PO..."
+msgstr "Novu da un schedariu P&OT/PO..."
 
 msgid "New From &POT/PO File..."
-msgstr "Novu da unu Schedariu P&OT/PO..."
+msgstr "Novu da un Schedariu P&OT/PO..."
 
 msgid "&Open..."
 msgstr "&Apre..."
@@ -1207,6 +1396,12 @@ msgstr "&Apre..."
 msgid "Open Recent"
 msgstr "Apre Recente"
 
+msgid "Open from Crowdin..."
+msgstr "Apre cù Crowdin..."
+
+msgid "Open From Crowdin..."
+msgstr "Apre Cù Crowdin..."
+
 msgid "&Save"
 msgstr "A&rregistrà"
 
@@ -1217,7 +1412,7 @@ msgid "Save &As..."
 msgstr "Arregistrà &cù u Nome..."
 
 msgid "Compile to MO..."
-msgstr "Trasfurmà ver di MO..."
+msgstr "Trasfurmà in un schedariu MO..."
 
 msgid "E&xport as HTML..."
 msgstr "Espurtà cum'è &HTML..."
@@ -1226,43 +1421,46 @@ msgid "Check for updates..."
 msgstr "Circà i rinno&vi..."
 
 msgid "Catalogs &manager"
-msgstr "A&mministrazione di i cataloghi"
+msgstr "A&mministratore di cataloghi"
 
 msgid "Catalogs &Manager"
-msgstr "A&mministrazione di i Cataloghi"
+msgstr "A&mministratore di Cataloghi"
 
 msgid "Translation is &fuzzy"
-msgstr "A traduzzione hè &fosca"
+msgstr "A traduzzione hè du&bbitosa"
 
 msgid "Translation Is &Fuzzy"
-msgstr "A Traduzzione Hè &Fosca"
+msgstr "A Traduzzione Hè Du&bbitosa"
 
 msgid "Edit &comment"
-msgstr "&Mudificà u cummentariu"
+msgstr "&Mudificà u cummentu"
 
 msgid "Edit &Comment"
-msgstr "&Mudificà Cummentariu"
+msgstr "&Mudificà u Cummentu"
 
 msgid "Suggestions"
 msgstr "Suggestioni"
 
 msgid "&Show references"
-msgstr "Fà vede e &referenze"
+msgstr "&Affissà e referenze"
 
 msgid "&Show References"
-msgstr "Fà vede e &Referenze"
+msgstr "&Affissà e Referenze"
 
 msgid "&Find..."
 msgstr "&Circà..."
 
+msgid "Replace..."
+msgstr "Rimpiazzà..."
+
 msgid "Find next"
 msgstr "Circà seguente"
 
 msgid "Find previous"
 msgstr "Circà precedente"
 
-msgid "Find"
-msgstr "Circà"
+msgid "Find and Replace..."
+msgstr "Circà è Rimpiazzà..."
 
 msgid "Find Next"
 msgstr "Circà Seguente"
@@ -1280,16 +1478,16 @@ msgid "Display Entry &IDs"
 msgstr "Affissà l'&ID di l'Entrate"
 
 msgid "Sort by &file order"
-msgstr "Classificà da l'&urdine di u schedariu"
+msgstr "Classificà da l'&ordine di schedariu"
 
 msgid "Sort by &File Order"
-msgstr "Classificà da l'&Urdine di u Schedariu"
+msgstr "Classificà da l'&Ordine di Schedariu"
 
 msgid "Sort by &source"
-msgstr "Classificà da a &surghjente"
+msgstr "Classificà da u testu d'&urigine"
 
 msgid "Sort by &Source"
-msgstr "Classificà da a &Surghjente"
+msgstr "Classificà da u Testu d'&Urigine"
 
 msgid "Sort by &translation"
 msgstr "Classificà da a &traduzzione"
@@ -1303,6 +1501,12 @@ msgstr "&Gruppu da contestu"
 msgid "&Group By Context"
 msgstr "&Gruppu da Contestu"
 
+msgid "Entries with errors first"
+msgstr "Elementi cù &sbaglii in primu"
+
+msgid "Entries with Errors First"
+msgstr "Elementi cù Sbaglii in Primu"
+
 msgid "&Untranslated entries first"
 msgstr "&Elementi micca tradutti in primu"
 
@@ -1310,34 +1514,40 @@ msgid "&Untranslated Entries First"
 msgstr "&Elementi Micca Tradutti in Primu"
 
 msgid "Show sidebar"
-msgstr "Affissà a barra di latu"
+msgstr "Affissà a barra laterale"
+
+msgid "Show status bar"
+msgstr "Affissà a barra di statu"
 
 msgid "C&atalog"
 msgstr "&Catalogu"
 
 msgid "&Update from sources"
-msgstr "&Mudificà da i surghjenti"
+msgstr "&Mudificà da i testi d'urigine"
 
 msgid "&Update from Sources"
-msgstr "&Mudificà da i Surghjenti"
+msgstr "&Mudificà da i Testi d'Urigine"
 
 msgid "Update from &POT file..."
-msgstr "Novu catalogu da unu schedariu P&OT..."
+msgstr "Mudificà da un schedariu P&OT..."
 
 msgid "Update from &POT File..."
-msgstr "Novu Catalogu da unu Schedariu P&OT..."
+msgstr "Mudificà da un Schedariu P&OT..."
+
+msgid "Sync with Crowdin"
+msgstr "Sincrunizà cù Crowdin"
 
 msgid "Fill missing translations from &TM..."
-msgstr "Riempie e traduzzioni viote da a &MT..."
+msgstr "Riempie e traduzzioni viote à partesi di a Md&T..."
 
 msgid "Fill Missing Translations from &TM..."
-msgstr "Riempie e Traduzzioni Viote da a &MT..."
+msgstr "Riempie e Traduzzioni Viote à partesi di a Md&T..."
 
 msgid "&Purge deleted translations"
-msgstr "Toglie e traduzzione sguassate"
+msgstr "Spur&gulà e traduzzioni cacciate"
 
 msgid "&Purge Deleted Translations"
-msgstr "Toglie e Traduzzione Sguassate"
+msgstr "Spur&gulà e Traduzzioni Cacciate"
 
 msgid "&Validate translations"
 msgstr "&Validazione di e traduzzione"
@@ -1361,34 +1571,34 @@ msgid "&Previous Translation"
 msgstr "Traduzzione &Precedente"
 
 msgid "&Next translation"
-msgstr "Traduzzione segue&nte"
+msgstr "Traduzzione &seguente"
 
 msgid "&Next Translation"
-msgstr "Traduzzione Segue&nte"
+msgstr "Traduzzione &Seguente"
 
 msgid "P&revious unfinished"
-msgstr "P&recedente incumpletu"
+msgstr "Incumpletu p&recedente"
 
 msgid "P&revious Unfinished"
-msgstr "P&recedente Incumpletu"
+msgstr "Incumpletu P&recedente"
 
 msgid "Ne&xt unfinished"
-msgstr "S&eguente incumpletu"
+msgstr "Incumpletu s&eguente"
 
 msgid "Ne&xt Unfinished"
-msgstr "S&eguente Incumpletu"
+msgstr "Incumpletu S&eguente"
 
 msgid "&Online help"
-msgstr "Aiutu in &linea"
+msgstr "Aiutu &inlinea"
 
 msgid "&Online Help"
-msgstr "Aiutu in &Linea"
+msgstr "Aiutu &Inlinea"
 
 msgid "&GNU gettext manual"
-msgstr "Ducumentazione &GNU gettext"
+msgstr "&Ducumentazione GNU gettext"
 
 msgid "&GNU gettext Manual"
-msgstr "Ducumentazione &GNU gettext"
+msgstr "&Ducumentazione GNU gettext"
 
 msgid "&About Poedit"
 msgstr "&Apprupositu di Poedit"
@@ -1397,10 +1607,10 @@ msgid "&About"
 msgstr "&Apprupositu"
 
 msgid "Extractor setup"
-msgstr "Installazione di l'attrezzi d'estrazzione"
+msgstr "Installazione di l'attrezzu d'estrazzione"
 
 msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):"
-msgstr "Lista di i stinzioni separati cù punti-virgule (i.e. *.cpp;*.h) :"
+msgstr "Lista di i stinzioni separati da punti-virgule (i.e. *.cpp;*.h) :"
 
 msgid "Invocation:"
 msgstr "Invucazione :"
@@ -1414,46 +1624,49 @@ msgid ""
 "of keywords, %F to list of input files,\n"
 "%C to charset flag (see below)."
 msgstr ""
-"Ghjè a cummanda impiegata per dimarrà l'estrazzione.\n"
+"Ghjè a cummanda impiegata per lancià l'attrezzu d'estrazzione.\n"
 "%o hè u nome di schedariu in esciuta, %K per a lista\n"
 "di e parolle chjave, %F per a lista di schedarii in entrata,\n"
 "%C per l'ozzione di u mazzu di caratteri (fighjate inghjò)."
 
 msgid "An item in keywords list:"
-msgstr "Unu elementu in a lista di e parolle chjave :"
+msgstr "Un elementu in a lista di e parolle chjave :"
 
 msgid ""
 "This will be attached to the command line once\n"
 "for each keyword. %k expands to the keyword."
 msgstr ""
-"Quessu serà ligatu à a linea di cummanda unu\n"
-"per ogni parolla chjava. %k aghjunghje stu valore."
+"Quessu serà ligatu à a linea di cummanda una volta\n"
+"per ogni parolla chjave. %k estende à a parolla chjave."
 
 msgid "An item in input files list:"
-msgstr "Unu elementu in a lista di i schedarii in entrata :"
+msgstr "Un elementu in a lista di schedarii d'entrata :"
 
 #, c-format
 msgid ""
 "This will be attached to the command line once\n"
 "for each input file. %f expands to the filename."
 msgstr ""
-"Quessu serà ligatu à a linea di cummanda unu\n"
-"per ogni schedariu in entrata. %f aghjunghje stu valore."
+"Quessu serà ligatu à a linea di cummanda una volta per ogni\n"
+"schedariu in entrata. %f estende à u nome di schedariu."
 
 msgid "Source code charset:"
-msgstr "Mazzu di caratteri di u codice surghjente :"
+msgstr "Mazzu di caratteri di u testu d'urigine :"
 
 #, c-format
 msgid ""
 "This will be attached to the command line\n"
 "only if source codecharset was given. %c expands to charset value."
 msgstr ""
-"Quessu serà ligatu à a linea di cummanda\n"
-"solu s'è ci hè unu mazzu di caratteri. %c aghjunghje stu valore."
+"Quessu serà ligatu à a linea di cummanda solu s'è ci hè un\n"
+"mazzu di caratteri di u testu d'urigine. %c estende à stu valore."
 
 msgid "Catalog properties"
 msgstr "Pruprietà di u catalogu"
 
+msgid "Project name and version:"
+msgstr "Nome è versione di prughjettu :"
+
 msgid "Plural Forms:"
 msgstr "Forme Plurale :"
 
@@ -1466,17 +1679,29 @@ msgstr "Impiegà un espressione predefinita"
 msgid "Learn about plural forms"
 msgstr "Per amparà nantu à e forme plurale"
 
+msgid "Charset:"
+msgstr "Mazzu di caratteri :"
+
+msgid "Team:"
+msgstr "Squadra :"
+
+msgid "Team's email address:"
+msgstr "Indirizzu elettronicu di a squadra :"
+
 msgid "Translation properties"
 msgstr "Pruprietà di a traduzzione"
 
+msgid "Sources paths"
+msgstr "Passeghji d'urigine"
+
 msgid "Extract text from source files in the following directories:"
-msgstr "Estrae testu da i schedarii surghjente in sti cartulari :"
+msgstr "Estrae testu da i schedarii d'urigine in sti cartulari :"
 
 msgid "Base path:"
-msgstr "Caminu di urigine :"
+msgstr "Passeghju di basa :"
 
-msgid "Sources paths"
-msgstr "Camini di surghjenti"
+msgid "Sources keywords"
+msgstr "Parolle chjave di testi d'urigine"
 
 msgid ""
 "Use these keywords (function names) to recognize translatable strings\n"
@@ -1488,11 +1713,8 @@ msgstr ""
 msgid "Learn about gettext keywords"
 msgstr "Per sapene più nantu à e parolle chjave gettext"
 
-msgid "Sources keywords"
-msgstr "Parolle chjave di i surghjenti"
-
 msgid "Update summary"
-msgstr "Riassuntu di a mudificazione"
+msgstr "Riassuntu di e mudificazioni"
 
 msgid ""
 "These strings were found in the sources but were not in the catalog.\n"
@@ -1515,7 +1737,7 @@ msgid "Obsolete strings"
 msgstr "Frase anziane"
 
 msgid "(0 new, 0 obsolete)"
-msgstr "(0 novu, 0 anzianu)"
+msgstr "(0 nova, 0 anziana)"
 
 msgid "Open"
 msgstr "Apre"
@@ -1533,39 +1755,44 @@ msgid "Update"
 msgstr "Mudificà"
 
 msgid "Update catalog - synchronize it with sources"
-msgstr "Mudificà u catalogu - Sincrunizalu cù i surghjenti"
+msgstr "Mudificà u catalogu - Sincrunizallu cù i testi d'urigine"
 
 msgid "Toggled if selected string has fuzzy translation"
-msgstr "Pone s'è a frasa selezziunata hà una traduzzione fosca"
+msgstr "Attivata s'è a frasa selezziunata hà una traduzzione dubbitosa"
 
-msgid "Show or hide the sidebar."
-msgstr "Affissà o piantà a barra di latu."
+msgid "Show or hide the sidebar"
+msgstr "Affissà o piantà a barra laterale"
 
 #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer.
 msgid "Previous source text:"
-msgstr ""
+msgstr "U precedente testu d'urigine :"
 
 msgid ""
 "The old source text (before it changed during an update) that the fuzzy "
 "translation corresponds to."
 msgstr ""
+"U vechju testu d'urigine (nanzu ch'ellu sia cambiatu) chì curresponde à a "
+"traduzzione dubbitosa."
+
+msgid "Notes for translators:"
+msgstr "Annutazioni per i traduttori :"
 
 msgid "Add comment"
-msgstr "Aghjunghje un cummentariu"
+msgstr "Aghjunghje un cummentu"
 
 msgid "Add Comment"
-msgstr "Aghjunghje un Cummentariu"
+msgstr "Aghjunghje un Cummentu"
 
 msgid "Translation suggestions:"
-msgstr "Pruposte di traduzzione :"
+msgstr "Suggestioni di traduzzione :"
 
 #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows).
 msgid "No matches found"
-msgstr ""
+msgstr "Alcuna occurrenza trova"
 
 #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (OS X, Linux).
 msgid "No Matches Found"
-msgstr ""
+msgstr "Alcuna Occurrenza Trova"
 
 msgid "This string was found in Poedit’s translation memory."
 msgstr "Sta frasa hè statu trova in a memoria di traduzzione di Poedit."
@@ -1629,18 +1856,27 @@ msgid "Edit a translation"
 msgstr "Mudificà una traduzzione"
 
 msgid "Open an existing PO file and edit the translation."
-msgstr "Apre unu schedariu PO chì esiste è mudificà a traduzzione."
-
-msgid "Create new translation"
-msgstr "Creà una nova traduzzione"
+msgstr "Apre un schedariu PO chì esiste è mudificà a traduzzione."
 
 msgid ""
 "Take an existing PO file or POT template and create a new translation from "
 "it."
 msgstr ""
-"Parte da unu schedariu PO o unu mudellu POTchì esiste per creà una nova "
+"Parte da un schedariu PO o un mudellu POT chì esiste per creà una nova "
 "traduzzione."
 
+msgid "Collaborate on a translation with Crowdin"
+msgstr "Cullaburà à una traduzzione cù Crowdin"
+
+msgid ""
+"Download a file from Crowdin project, translate and sync your changes back."
+msgstr ""
+"Telecaricà un schedariu à partesi di un prughjettu Crowdin, traducellu è "
+"sincrunizà e vostre mudificazioni dopu."
+
+msgid "What is Crowdin?"
+msgstr "Cosa hè Crowdin ?"
+
 msgid "There are no translations. That’s unusual."
 msgstr "Ùn ci hè mancuna traduzzione. Quessa pare stranu."
 
@@ -1651,24 +1887,24 @@ msgid ""
 "Translators typically use PO template files (POTs) prepared for them by the "
 "developer."
 msgstr ""
-"L'elementi traducevule ùn sò micca aghjunti à a manu in u sistemu Gettext, "
+"L'elementi traducevule ùn sò micca aghjunti à a manu in u sistema Gettext, "
 "ma sò autumaticamente estratti\n"
 "da u testu d'urigine. Cusì, sò sempre attualizati è esatti.\n"
-"Da bona regula, i traduttori impieganu i schedarii di mudellu PO (POT) "
-"preparati da u prugrammatore."
+"Di bona regula, i traduttori impieganu i schedarii di mudellu PO (POT) "
+"appruntati da u prugrammatore."
 
 msgid "(Learn more about GNU gettext)"
 msgstr "(Sapene di più nantu à GNU gettext)"
 
 msgid "The simplest way to fill this catalog is to update it from a POT:"
 msgstr ""
-"A manera a più simplice di riempie stu catalogu hè di rinnuvallu da unu POT :"
+"A manera a più simplice di riempie stu catalogu hè di rinnuvallu da un POT :"
 
 msgid "Update from POT"
-msgstr "Mudificà da unu POT"
+msgstr "Mudificà da un POT"
 
 msgid "Take translatable strings from an existing POT template."
-msgstr "Piglià e frase traducevule da unu mudellu POT chì esiste."
+msgstr "Piglià e frase traducevule da un mudellu POT chì esiste."
 
 msgid ""
 "You can also extract translatable strings directly from the source code:"
@@ -1680,3 +1916,9 @@ msgstr "Estrae da i schedarii d'urigine"
 msgid "Configure source code extraction in Properties."
 msgstr ""
 "Sceglie l'ozzioni di l'estrazzione da i schedarii d'urigine in Pruprietà."
+
+msgid "Sync"
+msgstr "Sincrunizà"
+
+msgid "Synchronize the translation with Crowdin"
+msgstr "Sincrunizà a traduzzione cù Crowdin"
diff --git a/locales/cs.mo b/locales/cs.mo
index 62cd3ee..0ad18fd 100644
Binary files a/locales/cs.mo and b/locales/cs.mo differ
diff --git a/locales/cs.po b/locales/cs.po
index 871ba8d..716ac43 100644
--- a/locales/cs.po
+++ b/locales/cs.po
@@ -2,8 +2,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: poedit\n"
 "Report-Msgid-Bugs-To: help at poedit.net\n"
-"POT-Creation-Date: 2015-01-10 16:00+0100\n"
-"PO-Revision-Date: 2015-03-10 12:33-0400\n"
+"POT-Creation-Date: 2015-05-27 11:31+0200\n"
+"PO-Revision-Date: 2015-05-27 05:17-0400\n"
 "Last-Translator: vslavik <vaclav at slavik.io>\n"
 "Language-Team: Czech\n"
 "Language: cs_CZ\n"
@@ -34,11 +34,11 @@ msgstr[2] "%i řádků souboru ‚%s‘ nebylo načteno správně."
 
 #, c-format
 msgid "Line %d of file '%s' is corrupted (not valid %s data)."
-msgstr "Řádek %d souboru '%s' je poškozený (neplatná data v %s)."
+msgstr "Řádek %d souboru ‚%s‘ je poškozený (neplatná data v %s)."
 
 #, c-format
 msgid "Malformed header: '%s'"
-msgstr "Poškozená hlavička: '%s'"
+msgstr "Poškozená hlavička: ‚%s‘"
 
 msgid ""
 "Broken catalog file: singular form msgstr used together with msgid_plural"
@@ -63,7 +63,7 @@ msgid ""
 "File '%s' is read-only and cannot be saved.\n"
 "Please save it under different name."
 msgstr ""
-"Soubor '%s' je jen pro čtení a není možné jej přepsat.\n"
+"Soubor ‚%s‘ je jen pro čtení a není možné jej přepsat.\n"
 "Uložte katalog pod jiným názvem."
 
 #, c-format
@@ -81,7 +81,7 @@ msgid ""
 "\n"
 "It was saved in UTF-8 instead and the setting was modified accordingly."
 msgstr ""
-"Katalog nemohl být uložen ve znakové sadě '%s' zadané ve vlastnostech "
+"Katalog nemohl být uložen ve znakové sadě ‚%s‘ zadané ve vlastnostech "
 "katalogu.\n"
 "\n"
 "Místo toho byl uložen v UTF-8 a nastavení bylo příslušně změněno."
@@ -89,12 +89,21 @@ msgstr ""
 msgid "Error saving catalog"
 msgstr "Při ukládání katalogu došlo k chybě"
 
+msgid "PO Translation Files"
+msgstr "Soubory překladů PO"
+
+msgid "POT Translation Templates"
+msgstr "Šablony překladů POT"
+
+msgid "All Translation Files"
+msgstr "Všechny překladové soubory"
+
 msgid "Merging differences..."
 msgstr "Slučování rozdílů..."
 
 #, c-format
 msgid "'%s' is not a valid POT file."
-msgstr "POT soubor '%s' je poškozený."
+msgstr "POT soubor ‚%s‘ je poškozený."
 
 msgid "(Use default language)"
 msgstr "(výchozí jazyk)"
@@ -108,6 +117,89 @@ msgstr "Výběr jazyka"
 msgid "You must restart Poedit for this change to take effect."
 msgstr "Tato změna se projeví až po opětovném spuštění Poeditu."
 
+msgid "Downloading translations is disabled in this project."
+msgstr "Stahování překladů je pro tento projekt zakázáno."
+
+msgid "Not authorized, please sign in again."
+msgstr "Nedostatečná oprávnění, zkuste se znovu přihlásit."
+
+msgid "Sign in to Crowdin"
+msgstr "Přihlásit se do Crowdin"
+
+msgid ""
+"Crowdin is an online localization management platform and collaborative "
+"translation tool. Poedit can seamlessly sync PO files managed at Crowdin."
+msgstr ""
+"Crowdin je online platforma pro správu lokalizací a nástroj pro spolupráci "
+"na překladu. Poedit umožňuje jednoduchou synchronizaci PO souborů "
+"spravovaných prostřednictvím Crowdin."
+
+msgid "Sign In"
+msgstr "Přihlásit se"
+
+msgid "Sign in"
+msgstr "Přihlásit se"
+
+msgid "Sign Out"
+msgstr "Odhlásit se"
+
+msgid "Sign out"
+msgstr "Odhlásit se"
+
+msgid "Waiting for authentication…"
+msgstr "Čekání na ověření…"
+
+msgid "Updating user information…"
+msgstr "Aktualizace informací o uživateli…"
+
+msgid "Signed in as:"
+msgstr "Přihlášen jako:"
+
+msgid "Learn More About Crowdin"
+msgstr "Další informace o Crowdin"
+
+msgid "Learn more about Crowdin"
+msgstr "Další informace o Crowdin"
+
+msgid "Open Crowdin translation"
+msgstr "Otevřít Crowdin překlad"
+
+msgid "Project:"
+msgstr "Projekt:"
+
+msgid "Language:"
+msgstr "Jazyk:"
+
+msgid "File:"
+msgstr "Soubor:"
+
+msgid "No translation projects listed in your Crowdin account."
+msgstr "Ve vašem Crowdin účtu nemáte nastaveny žádné překladové projekty."
+
+msgid "This project has no files that can be translated in Poedit."
+msgstr ""
+"Projekt neobsahuje žádné soubory, které by bylo možné přeložit "
+"prostřednictvím programu Poedit."
+
+msgid "This file can only be edited in Crowdin’s web interface."
+msgstr ""
+"Tento soubor lze upravit pouze prostřednictvím webového rozhraní Crowdin."
+
+msgid "Downloading latest translations…"
+msgstr "Stahování nejnovějších překladů…"
+
+msgid "Syncing with Crowdin"
+msgstr "Synchronizace s Crowdin"
+
+msgid "Syncing with Crowdin failed."
+msgstr "Synchronizace s Crowdin se nezdařila."
+
+msgid "Crowdin error"
+msgstr "Crowdin chyba"
+
+msgid "Uploading translations…"
+msgstr "Odesílání překladů…"
+
 msgid "&Copy"
 msgstr "&Kopírovat"
 
@@ -154,6 +246,12 @@ msgstr ""
 msgid "don't delete temporary files (for debugging)"
 msgstr "nemazat dočasné soubory (kvůli ladění)"
 
+msgid "handle a poedit:// URI"
+msgstr "zpracovat poedit:// URI"
+
+msgid "Failed to communicate with Poedit process."
+msgstr "Nelze komunikovat s procesem Poeditu."
+
 #, c-format
 msgid "Unhandled exception occurred: %s"
 msgstr "Došlo k neošetřené výjimce: %s"
@@ -164,15 +262,9 @@ msgstr "Došlo k neošetřené výjimce."
 msgid "Open catalog"
 msgstr "Otevřít katalog"
 
-msgid "All Files"
-msgstr "Všechny soubory"
-
-msgid "PO Translation Files"
-msgstr "Soubory překladů PO"
-
 #, c-format
 msgid "File '%s' doesn't exist."
-msgstr "Soubor '%s' neexistuje."
+msgstr "Soubor ‚%s‘ neexistuje."
 
 #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name
 #. ("Poedit" here, but please use "%s")
@@ -274,7 +366,7 @@ msgid "&View"
 msgstr "&Zobrazení"
 
 msgid "Enter Full Screen"
-msgstr "Spustit režim celé obrazovky"
+msgstr "Zobrazit na celou obrazovku"
 
 msgid "Window"
 msgstr "Okno"
@@ -374,7 +466,7 @@ msgstr "Na okno Poeditu nelze přetáhnou více než jeden soubor."
 
 #, c-format
 msgid "File '%s' is not a message catalog."
-msgstr "Soubor '%s' není překladový katalog."
+msgstr "Soubor ‚%s‘ není překladový katalog."
 
 msgid "Poedit"
 msgstr "Poedit"
@@ -397,6 +489,19 @@ msgstr "Plurál:"
 msgid "Translation:"
 msgstr "Překlad:"
 
+msgid ""
+"POT files are only templates and don’t contain any translations themselves.\n"
+"To make a translation, create a new PO file based on the template."
+msgstr ""
+"Soubory POT jsou jen šablony a sami o sobě neobsahují žádné překlady.\n"
+"Pro vytvoření překladu vytvořte na základě šablony nový PO soubor."
+
+msgid "Create New Translation"
+msgstr "Vytvořit nový překlad"
+
+msgid "Create new translation"
+msgstr "Vytvořit nový překlad"
+
 #. TRANSLATORS: %s is language name in its basic form (as you
 #. would see e.g. in a list of supported languages). You may need
 #. to rephrase it, e.g. to an equivalent of "for language %s".
@@ -446,9 +551,6 @@ msgstr "Soubory HTML"
 msgid "Open catalog template"
 msgstr "Otevřít šablonu katalogu"
 
-msgid "POT Translation Templates"
-msgstr "Šablony překladů POT"
-
 msgid "Updating catalog"
 msgstr "Probíhá aktualizace katalogu"
 
@@ -535,18 +637,24 @@ msgstr[2] ""
 msgid "The translation is ready for use."
 msgstr "Překlad je připraven k použití."
 
-msgid "No references to this string found."
-msgstr "Nebyly nalezeny žádné odkazy na tento řetězec."
-
-msgid "Please choose the reference you want to show:"
-msgstr "Vyberte odkaz, který chcete zobrazit:"
-
-msgid "References"
-msgstr "Odkazy"
-
 msgid "Context:"
 msgstr "Kontext:"
 
+#, c-format
+msgid "Poedit automatically fixed invalid content in the file “%s”."
+msgstr "Poedit automaticky opravil chybný obsah souboru „%s“."
+
+msgid ""
+"The file contained duplicate items, which is not allowed in PO files and "
+"would prevent the file from being used. Poedit fixed the issue, but you "
+"should review translations of any items marked as fuzzy and correct them if "
+"necessary."
+msgstr ""
+"Soubor obsahoval duplicitní položky, což není v PO souborech povoleno a "
+"zabránilo by to jejich použití. Poedit tento problém opravil, ale měli byste "
+"zkontrolovat všechny překlady označené jako přibližné a v případě potřeby je "
+"opravit."
+
 msgid "Language of the translation isn't set."
 msgstr "Jazyk překladu není nastaven."
 
@@ -556,6 +664,23 @@ msgstr "Nastavit jazyk"
 msgid "Set language"
 msgstr "Nastavit jazyk"
 
+#. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)."
+msgid ""
+"Suggestions are not available if the translation language is not set "
+"correctly. Other features, such as plural forms, may be affected as well."
+msgstr ""
+"Pokud není správně nastaven jazyk překladu, nejsou k dispozici návrhy. "
+"Ovlivněny mohou být i další funkce, jako například formy plurálu."
+
+msgid "Language of the translation is the same as source language."
+msgstr "Jazyk překladu je shodný s jazykem zdroje."
+
+msgid "Fix Language"
+msgstr "Opravit jazyk"
+
+msgid "Fix language"
+msgstr "Opravit jazyk"
+
 msgid ""
 "This catalog has entries with plural forms, but doesn't have Plural-Forms "
 "header configured."
@@ -574,7 +699,7 @@ msgstr "V hlavičce chybí povinná položka Plural-Forms."
 
 #, c-format
 msgid "Syntax error in Plural-Forms header (\"%s\")."
-msgstr "Syntaktická chyba v hlavičce Plural-Forms (\"%s\")."
+msgstr "Syntaktická chyba v hlavičce Plural-Forms („%s“)."
 
 msgid "Fix the Header"
 msgstr "Opravit hlavičku"
@@ -589,12 +714,13 @@ msgstr "Opravit hlavičku"
 msgid "Plural forms expression used by the catalog is unusual for %s."
 msgstr "Výraz pro formy plurálu používá pro jazyk %s nezvyklý formát."
 
+#. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the catalog is unusual for %s.")"
 msgid "Review"
 msgstr "Zkontrolovat"
 
 #, c-format
 msgid "Error loading message catalog file '%s'."
-msgstr "Při načítání katalogu '%s' došlo k chybě."
+msgstr "Při načítání katalogu ‚%s‘ došlo k chybě."
 
 #, c-format
 msgid "Translated: %d of %d (%d %%)"
@@ -611,6 +737,13 @@ msgstr[0] "%d chyba"
 msgstr[1] "%d chyby"
 msgstr[2] "%d chyb"
 
+#, c-format
+msgid "%d entry"
+msgid_plural "%d entries"
+msgstr[0] "%d položka"
+msgstr[1] "%d položky"
+msgstr[2] "%d položek"
+
 msgid " (unsaved)"
 msgstr " (neuloženo)"
 
@@ -708,7 +841,7 @@ msgstr "Vyplňování překladů z překladové paměti..."
 #, c-format
 msgid "Translated %u string"
 msgid_plural "Translated %u strings"
-msgstr[0] "Přeložen %u řetězec"
+msgstr[0] "Přeložen jeden řetězec"
 msgstr[1] "Přeloženy %u řetězce"
 msgstr[2] "Přeloženo %u řetězců"
 
@@ -740,6 +873,9 @@ msgstr "Vše"
 msgid "Form %i"
 msgstr "Forma %i"
 
+msgid "Singular"
+msgstr "Singulár"
+
 msgid "Zero"
 msgstr "Nula"
 
@@ -749,6 +885,9 @@ msgstr "Jeden"
 msgid "Two"
 msgstr "Dva"
 
+msgid "Plural"
+msgstr "Plurál"
+
 msgid "Other"
 msgstr "Ostatní"
 
@@ -777,6 +916,12 @@ msgstr "Skrýt postranní panel"
 msgid "Show Sidebar"
 msgstr "Zobrazit postranní panel"
 
+msgid "Hide Status Bar"
+msgstr "Skrýt stavový řádek"
+
+msgid "Show Status Bar"
+msgstr "Zobrazit stavový řádek"
+
 msgid "Source text"
 msgstr "Originál"
 
@@ -786,6 +931,10 @@ msgstr "Překlad"
 msgid "ID"
 msgstr "ID"
 
+#, c-format
+msgid "Source text — %s"
+msgstr "Zdrojový text — %s"
+
 msgid "unknown language"
 msgstr "neznámý jazyk"
 
@@ -796,57 +945,73 @@ msgstr "Překlad — %s"
 msgid "Error:"
 msgstr "Chyba:"
 
-msgid "Project info"
-msgstr "Informace o projektu"
+msgid "Source file"
+msgstr "Zdrojový soubor"
 
-msgid "Project name and version:"
-msgstr "Název a verze projektu:"
+msgid "Source file occurrence:"
+msgstr "Výskyt ve zdrojovém kódu:"
 
-msgid "Language:"
-msgstr "Jazyk:"
+msgid "Open in Editor"
+msgstr "Otevřít v editoru"
 
-msgid "Team:"
-msgstr "Tým:"
+msgid "Open in editor"
+msgstr "Otevřít v editoru"
 
-msgid "Team's email address:"
-msgstr "Emailová adresa týmu:"
+msgid "No references for the selected item."
+msgstr "Žádné výskyty vybrané položky."
 
-msgid "Charset:"
-msgstr "Znaková sada:"
+#, c-format
+msgid "Error opening file %s!"
+msgstr "Při otevírání souboru %s došlo k chybě!"
 
-msgid "Source"
-msgstr "Originál"
+msgid "Find"
+msgstr "Najít"
 
-msgid "Notes"
-msgstr "Poznámky"
+msgid "Replace"
+msgstr "Nahradit"
 
-msgid "Automatic translation"
-msgstr "Automatický překlad"
+#. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.)
+msgid "Options"
+msgstr "Možnosti"
 
-msgid "Fuzzy translation"
-msgstr "Přibližný překlad"
+msgid "Ignore case"
+msgstr "Ignorovat velikost písmen"
 
-msgid "Notes for translators:"
-msgstr "Poznámky pro překladatele:"
+msgid "Wrap around"
+msgstr "Po dosažení konce hledat od začátku"
 
-msgid "Comment:"
-msgstr "Komentář:"
+msgid "Whole words only"
+msgstr "Jen celá slova"
 
-msgid "Source file"
-msgstr "Zdrojový soubor"
+msgid "Find in source texts"
+msgstr "Hledat ve zdrojových textech"
 
-msgid "Source file occurrence:"
-msgstr "Výskyt ve zdrojovém kódu:"
+msgid "Find in translations"
+msgstr "Hledat v překladech"
 
-msgid "Open in Editor"
-msgstr "Otevřít v editoru"
+msgid "Find in comments"
+msgstr "Hledat v komentářích"
 
-msgid "Open in editor"
-msgstr "Otevřít v editoru"
+msgid "Close"
+msgstr "Zavřít"
 
-#, c-format
-msgid "Error opening file %s!"
-msgstr "Při otevírání souboru %s došlo k chybě!"
+msgid "Replace All"
+msgstr "Nahradit vše"
+
+msgid "Replace all"
+msgstr "Nahradit vše"
+
+msgid "< &Previous"
+msgstr "< &Předchozí"
+
+msgid "&Next >"
+msgstr "&Další >"
+
+msgid "String to find"
+msgstr "Hledaný řetězec"
+
+msgid "Replacement string"
+msgstr "Nahradit za"
 
 #, c-format
 msgid "Cannot execute program: %s"
@@ -1049,9 +1214,19 @@ msgstr "Nový"
 msgid "Edit"
 msgstr "Upravit"
 
+msgid "Delete extractor"
+msgstr "Smazat extraktor"
+
+#, c-format
+msgid "Are you sure you want to delete the “%s” extractor?"
+msgstr "Opravdu chcete „%s“ extraktor smazat?"
+
 msgid "Extractors"
 msgstr "Extraktory"
 
+msgid "Accounts"
+msgstr "Účty"
+
 msgid "Automatically check for updates"
 msgstr "Automaticky kontrolovat dostupnost aktualizací"
 
@@ -1094,8 +1269,41 @@ msgstr "Zachovat stávající formátování souboru"
 msgid "Advanced"
 msgstr "Pokročilé"
 
-msgid "Additional keywords"
-msgstr "Další klíčová slova"
+msgid ""
+"<big>Drag and Drop Folders Here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+"<big>Sem přetáhněte adresáře</big>\n"
+"\n"
+"nebo použijte tlačítko +"
+
+msgid ""
+"<big>Drag and drop folders here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+"<big>Sem přetáhněte adresáře</big>\n"
+"\n"
+"nebo použijte tlačítko +"
+
+msgid "Add Folders..."
+msgstr "Přidat adresáře..."
+
+msgid "Add folders..."
+msgstr "Přidat adresáře..."
+
+msgid "Add Files..."
+msgstr "Přidat soubory..."
+
+msgid "Add files..."
+msgstr "Přidat soubory..."
+
+msgid "Add Wildcard..."
+msgstr "Přidat zástupný řetězec..."
+
+msgid "Add wildcard..."
+msgstr "Přidat zástupný řetězec..."
 
 msgid "Paths"
 msgstr "Cesty"
@@ -1103,6 +1311,9 @@ msgstr "Cesty"
 msgid "Excluded paths"
 msgstr "Ignorovat cesty"
 
+msgid "Additional keywords"
+msgstr "Další klíčová slova"
+
 msgid "Name of the project the translation is for"
 msgstr "Název projektu, pro který je překlad určen"
 
@@ -1115,6 +1326,9 @@ msgstr "UTF-8 (doporučeno)"
 msgid "Please save the file first. This section cannot be edited until then."
 msgstr "Nejdříve soubor uložte, jinak nebude možné tuto sekci editovat."
 
+msgid "Comment:"
+msgstr "Komentář:"
+
 msgid "OK"
 msgstr "OK"
 
@@ -1124,42 +1338,6 @@ msgstr "&Smazat"
 msgid "Clear the comment"
 msgstr "Odstranit komentář"
 
-msgid "Find..."
-msgstr "Najít..."
-
-msgid "String to find:"
-msgstr "Hledaný řetězec:"
-
-msgid "Case sensitive"
-msgstr "Rozlišovat velikost písmen"
-
-msgid "Start from the first item"
-msgstr "Hledat od začátku katalogu"
-
-msgid "Whole words only"
-msgstr "Jen celá slova"
-
-msgid "Find in original strings"
-msgstr "Hledat v původních řetězcích"
-
-msgid "Find in translations"
-msgstr "Hledat v překladech"
-
-msgid "Find in comments"
-msgstr "Hledat v komentářích"
-
-msgid "Find in automatic comments"
-msgstr "Hledat v automatických komentářích"
-
-msgid "Close"
-msgstr "Zavřít"
-
-msgid "< &Previous"
-msgstr "< &Předchozí"
-
-msgid "&Next >"
-msgstr "&Další >"
-
 msgid "Create new translations project"
 msgstr "Vytvořit nový překladový projekt"
 
@@ -1214,6 +1392,12 @@ msgstr "&Otevřít..."
 msgid "Open Recent"
 msgstr "Otevřít poslední položku"
 
+msgid "Open from Crowdin..."
+msgstr "Otevřít z Crowdin..."
+
+msgid "Open From Crowdin..."
+msgstr "Otevřít z Crowdin..."
+
 msgid "&Save"
 msgstr "&Uložit"
 
@@ -1262,14 +1446,17 @@ msgstr "&Zobrazit odkazy"
 msgid "&Find..."
 msgstr "&Najít..."
 
+msgid "Replace..."
+msgstr "Nahradit..."
+
 msgid "Find next"
 msgstr "Najít další"
 
 msgid "Find previous"
 msgstr "Najít předchozí"
 
-msgid "Find"
-msgstr "Najít"
+msgid "Find and Replace..."
+msgstr "Najít a nahradit..."
 
 msgid "Find Next"
 msgstr "Najít další"
@@ -1310,6 +1497,12 @@ msgstr "S&eskupit podle kontextu"
 msgid "&Group By Context"
 msgstr "S&eskupit podle kontextu"
 
+msgid "Entries with errors first"
+msgstr "Položky s chybami jako první"
+
+msgid "Entries with Errors First"
+msgstr "Položky s chybami jako první"
+
 msgid "&Untranslated entries first"
 msgstr "&Nepřeložené položky jako první"
 
@@ -1319,6 +1512,9 @@ msgstr "&Nepřeložené položky jako první"
 msgid "Show sidebar"
 msgstr "Zobrazit postranní panel"
 
+msgid "Show status bar"
+msgstr "Zobrazit stavový řádek"
+
 msgid "C&atalog"
 msgstr "&Katalog"
 
@@ -1334,6 +1530,9 @@ msgstr "Aktualizovat z &POT souboru..."
 msgid "Update from &POT File..."
 msgstr "Aktualizovat z &POT souboru..."
 
+msgid "Sync with Crowdin"
+msgstr "Synchronizovat s Crowdin"
+
 msgid "Fill missing translations from &TM..."
 msgstr "&Doplnit chybějící překlady z překladové paměti..."
 
@@ -1461,6 +1660,9 @@ msgstr ""
 msgid "Catalog properties"
 msgstr "Vlastnosti katalogu"
 
+msgid "Project name and version:"
+msgstr "Název a verze projektu:"
+
 msgid "Plural Forms:"
 msgstr "Formy plurálu:"
 
@@ -1473,17 +1675,29 @@ msgstr "Použít vlastní výraz"
 msgid "Learn about plural forms"
 msgstr "Podrobnosti o formách plurálu"
 
+msgid "Charset:"
+msgstr "Znaková sada:"
+
+msgid "Team:"
+msgstr "Tým:"
+
+msgid "Team's email address:"
+msgstr "Emailová adresa týmu:"
+
 msgid "Translation properties"
 msgstr "Vlastnosti překladu"
 
+msgid "Sources paths"
+msgstr "Prohledávané cesty"
+
 msgid "Extract text from source files in the following directories:"
 msgstr "Extrahovat text ze zdrojových souborů v těchto adresářích:"
 
 msgid "Base path:"
 msgstr "Základní cesta:"
 
-msgid "Sources paths"
-msgstr "Prohledávané cesty"
+msgid "Sources keywords"
+msgstr "Klíčová slova"
 
 msgid ""
 "Use these keywords (function names) to recognize translatable strings\n"
@@ -1495,9 +1709,6 @@ msgstr ""
 msgid "Learn about gettext keywords"
 msgstr "Podrobnosti o klíčových slovech gettext"
 
-msgid "Sources keywords"
-msgstr "Klíčová slova"
-
 msgid "Update summary"
 msgstr "Výsledek aktualizace"
 
@@ -1545,8 +1756,8 @@ msgstr "Aktualizovat katalog - synchronizovat jej se zdrojovými kódy"
 msgid "Toggled if selected string has fuzzy translation"
 msgstr "Aktivní pokud se u vybrané položky jedná o přibližný překlad"
 
-msgid "Show or hide the sidebar."
-msgstr "Zobrazit nebo skrýt postranní panel."
+msgid "Show or hide the sidebar"
+msgstr "Zobrazit nebo skrýt postranní panel"
 
 #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer.
 msgid "Previous source text:"
@@ -1559,6 +1770,9 @@ msgstr ""
 "Původní zdrojový text (než byl při aktualizaci změněn), kterému odpovídá "
 "použitý přibližný překlad."
 
+msgid "Notes for translators:"
+msgstr "Poznámky pro překladatele:"
+
 msgid "Add comment"
 msgstr "Přidat komentář"
 
@@ -1638,9 +1852,6 @@ msgstr "Upravit překlad"
 msgid "Open an existing PO file and edit the translation."
 msgstr "Otevře existující PO katalog a umožní jeho úpravu."
 
-msgid "Create new translation"
-msgstr "Vytvořit nový překlad"
-
 msgid ""
 "Take an existing PO file or POT template and create a new translation from "
 "it."
@@ -1648,6 +1859,18 @@ msgstr ""
 "Použije existující soubor PO nebo POT jako šablonu pro vytvoření nového "
 "překladu."
 
+msgid "Collaborate on a translation with Crowdin"
+msgstr "Spolupracovat na překladu prostřednictvím Crowdin"
+
+msgid ""
+"Download a file from Crowdin project, translate and sync your changes back."
+msgstr ""
+"Stáhne soubor z Crowdin projektu a po jeho překladu synchronizuje provedené "
+"změny zpět."
+
+msgid "What is Crowdin?"
+msgstr "Co je Crowdin?"
+
 msgid "There are no translations. That’s unusual."
 msgstr "V souboru nejsou žádné překlady. To je neobvyklé."
 
@@ -1687,3 +1910,9 @@ msgstr "Extrahovat ze zdrojových souborů"
 msgid "Configure source code extraction in Properties."
 msgstr ""
 "Parametry pro extrakci ze zdrojového kódu nastavte ve Vlastnostech katalogu."
+
+msgid "Sync"
+msgstr "Synchronizovat"
+
+msgid "Synchronize the translation with Crowdin"
+msgstr "Synchronizovat překlad s Crowdin"
diff --git a/locales/da.mo b/locales/da.mo
index 99581ea..fd6183b 100644
Binary files a/locales/da.mo and b/locales/da.mo differ
diff --git a/locales/da.po b/locales/da.po
index aa01770..e784dea 100644
--- a/locales/da.po
+++ b/locales/da.po
@@ -2,8 +2,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: poedit\n"
 "Report-Msgid-Bugs-To: help at poedit.net\n"
-"POT-Creation-Date: 2015-01-10 16:00+0100\n"
-"PO-Revision-Date: 2015-03-10 12:33-0400\n"
+"POT-Creation-Date: 2015-05-27 11:31+0200\n"
+"PO-Revision-Date: 2015-05-27 05:17-0400\n"
 "Last-Translator: vslavik <vaclav at slavik.io>\n"
 "Language-Team: Danish\n"
 "Language: da_DK\n"
@@ -88,6 +88,15 @@ msgstr ""
 msgid "Error saving catalog"
 msgstr "Fejl ved gemning af katalog"
 
+msgid "PO Translation Files"
+msgstr "PO oversættelsesfiler"
+
+msgid "POT Translation Templates"
+msgstr "POT oversættelses skabeloner"
+
+msgid "All Translation Files"
+msgstr "Alle oversættelsesfiler"
+
 msgid "Merging differences..."
 msgstr "Samler forskelle..."
 
@@ -107,6 +116,86 @@ msgstr "Sprogvalg"
 msgid "You must restart Poedit for this change to take effect."
 msgstr "Du skal genstarte Poedit før denne ændring træder i kraft."
 
+msgid "Downloading translations is disabled in this project."
+msgstr "Download af oversættelser er deaktiveret i dette projekt."
+
+msgid "Not authorized, please sign in again."
+msgstr "Ikke autoriseret, log venligst ind igen."
+
+msgid "Sign in to Crowdin"
+msgstr "Log ind på Crowdin"
+
+msgid ""
+"Crowdin is an online localization management platform and collaborative "
+"translation tool. Poedit can seamlessly sync PO files managed at Crowdin."
+msgstr ""
+"Crowdin er en online lokaliseringhåndterings platform og et kollaborativt "
+"oversættelsesværktøj. Poedit kan uden problemer synkronisere PO filer der "
+"bliver håndteret på Crowdin."
+
+msgid "Sign In"
+msgstr "Log ind"
+
+msgid "Sign in"
+msgstr "Log ind"
+
+msgid "Sign Out"
+msgstr "Log ud"
+
+msgid "Sign out"
+msgstr "Log ud"
+
+msgid "Waiting for authentication…"
+msgstr "Venter på godkendelse…"
+
+msgid "Updating user information…"
+msgstr "Opdaterer brugeroplysninger…"
+
+msgid "Signed in as:"
+msgstr "Logget ind som:"
+
+msgid "Learn More About Crowdin"
+msgstr "Lær mere om Crowdin"
+
+msgid "Learn more about Crowdin"
+msgstr "Lær mere om Crowdin"
+
+msgid "Open Crowdin translation"
+msgstr "Åben Crowdin oversættelse"
+
+msgid "Project:"
+msgstr "Projekt:"
+
+msgid "Language:"
+msgstr "Sprog:"
+
+msgid "File:"
+msgstr "Fil:"
+
+msgid "No translation projects listed in your Crowdin account."
+msgstr "Ingen oversættelsesprojekter i din Crowdin konto."
+
+msgid "This project has no files that can be translated in Poedit."
+msgstr "Dette projekt har ikke nogen filer der kan oversættes i Poedit."
+
+msgid "This file can only be edited in Crowdin’s web interface."
+msgstr "Denne fil kan kun redigeres i Crowdin’s webbrugerflade."
+
+msgid "Downloading latest translations…"
+msgstr "Downloader de nyeste oversættelser…"
+
+msgid "Syncing with Crowdin"
+msgstr "Synkroniserer med Crowdin"
+
+msgid "Syncing with Crowdin failed."
+msgstr "Synkronisering med Crowdin mislykkedes."
+
+msgid "Crowdin error"
+msgstr "Crowdin fejl"
+
+msgid "Uploading translations…"
+msgstr "Uploader oversættelser…"
+
 msgid "&Copy"
 msgstr "&Kopier"
 
@@ -153,6 +242,12 @@ msgstr ""
 msgid "don't delete temporary files (for debugging)"
 msgstr "slet ikke midlertidige filer (til fejlretning)"
 
+msgid "handle a poedit:// URI"
+msgstr "Håndter en poedit:// URI"
+
+msgid "Failed to communicate with Poedit process."
+msgstr "Der kunne ikke kommunikere med Poedit-processen."
+
 #, c-format
 msgid "Unhandled exception occurred: %s"
 msgstr "Uhåndteret undtagelse opstod: %s"
@@ -163,12 +258,6 @@ msgstr "Uhåndteret undtagelse opstod."
 msgid "Open catalog"
 msgstr "Åbn katalog"
 
-msgid "All Files"
-msgstr "Alle filer"
-
-msgid "PO Translation Files"
-msgstr "PO oversættelsesfiler"
-
 #, c-format
 msgid "File '%s' doesn't exist."
 msgstr "Filen \"%s\" findes ikke."
@@ -201,7 +290,7 @@ msgid "Undo"
 msgstr "Fortryd"
 
 msgid "Redo"
-msgstr "Omgør"
+msgstr "Gentag"
 
 msgid "Paste and Match Style"
 msgstr "Indsæt og tilpas stil"
@@ -222,7 +311,7 @@ msgid "Check Spelling While Typing"
 msgstr "Tjek stavning mens du skriver"
 
 msgid "Check Grammar With Spelling"
-msgstr "Tjek gramatik med stavning"
+msgstr "Kontroller grammatik med stavning"
 
 msgid "Correct Spelling Automatically"
 msgstr "Kontroller automatisk stavning"
@@ -304,7 +393,7 @@ msgid "&Undo"
 msgstr "&Fortryd"
 
 msgid "&Redo"
-msgstr "&Omgør"
+msgstr "&Gentag"
 
 msgid "Cu&t"
 msgstr "Kli&p"
@@ -396,6 +485,19 @@ msgstr "Flertal:"
 msgid "Translation:"
 msgstr "Oversættelse:"
 
+msgid ""
+"POT files are only templates and don’t contain any translations themselves.\n"
+"To make a translation, create a new PO file based on the template."
+msgstr ""
+"POT-filer er kun skabeloner som ikke indeholder nogen oversættelser.\n"
+"For at oprette en oversættelse skal du oprette en ny PO-fil fra skabelonen."
+
+msgid "Create New Translation"
+msgstr "Opret ny skabelon"
+
+msgid "Create new translation"
+msgstr "Opret ny oversættelse"
+
 #. TRANSLATORS: %s is language name in its basic form (as you
 #. would see e.g. in a list of supported languages). You may need
 #. to rephrase it, e.g. to an equivalent of "for language %s".
@@ -443,9 +545,6 @@ msgstr "HTML filer"
 msgid "Open catalog template"
 msgstr "Åbn katalogskabelon"
 
-msgid "POT Translation Templates"
-msgstr "POT oversættelses skabeloner"
-
 msgid "Updating catalog"
 msgstr "Opdaterer katalog"
 
@@ -525,26 +624,49 @@ msgstr[1] "Oversættelsen er klar til brug, men %d emner er ikke oversat endnu."
 msgid "The translation is ready for use."
 msgstr "Oversættelsen er klar til brug."
 
-msgid "No references to this string found."
-msgstr "Ingen referencer til denne tekst blev fundet."
-
-msgid "Please choose the reference you want to show:"
-msgstr "Vælg venligst den reference du vil have fremvist:"
-
-msgid "References"
-msgstr "Referencer"
-
 msgid "Context:"
 msgstr "Kontekst:"
 
+#, c-format
+msgid "Poedit automatically fixed invalid content in the file “%s”."
+msgstr "Poedit rettede automatisk ugyldigt indhold i filen \"%s\"."
+
+msgid ""
+"The file contained duplicate items, which is not allowed in PO files and "
+"would prevent the file from being used. Poedit fixed the issue, but you "
+"should review translations of any items marked as fuzzy and correct them if "
+"necessary."
+msgstr ""
+"Filen indeholdt duplikerede emner som ikke er tilladt i PO filer, og som "
+"kunne forhindre filen i at blive brugt. Poedit rettede fejlen, men du bør "
+"gennemgå oversættelser af alle emner der er markeret som uafklaret og rette "
+"dem om nødvendigt."
+
 msgid "Language of the translation isn't set."
-msgstr "Sprog for oversættelsen er ikke valgt."
+msgstr "Sprog for oversættelsen er ikke angivet."
 
 msgid "Set Language"
 msgstr "Indstil sprog"
 
 msgid "Set language"
-msgstr "Indstil sprog"
+msgstr "Angiv sprog"
+
+#. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)."
+msgid ""
+"Suggestions are not available if the translation language is not set "
+"correctly. Other features, such as plural forms, may be affected as well."
+msgstr ""
+"Forslag er ikke tilgængelige hvis oversættelsessproget ikke er angivet "
+"korrekt. Andre ting, såsom flertalsformer kan også blive påvirket."
+
+msgid "Language of the translation is the same as source language."
+msgstr "Oversættelsessproget er det samme som kildesproget."
+
+msgid "Fix Language"
+msgstr "Ret sprog"
+
+msgid "Fix language"
+msgstr "Ret sprog"
 
 msgid ""
 "This catalog has entries with plural forms, but doesn't have Plural-Forms "
@@ -581,6 +703,7 @@ msgid "Plural forms expression used by the catalog is unusual for %s."
 msgstr ""
 "Flertals formular udtrykket der bruges af kataloget er usædvanligt for %s."
 
+#. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the catalog is unusual for %s.")"
 msgid "Review"
 msgstr "Korrektur"
 
@@ -602,6 +725,12 @@ msgid_plural "%d errors"
 msgstr[0] "%d fejl"
 msgstr[1] "%d fejl"
 
+#, c-format
+msgid "%d entry"
+msgid_plural "%d entries"
+msgstr[0] "%d post"
+msgstr[1] "%d poster"
+
 msgid " (unsaved)"
 msgstr " (ej gemt)"
 
@@ -692,7 +821,7 @@ msgid "Translating"
 msgstr "Oversætter"
 
 msgid "Filling missing translations from TM..."
-msgstr "Udfylder manglende oversættelser fra &TM"
+msgstr "Udfylder manglende oversættelser fra TM..."
 
 #, c-format
 msgid "Translated %u string"
@@ -728,6 +857,9 @@ msgstr "Alt"
 msgid "Form %i"
 msgstr "Form %i"
 
+msgid "Singular"
+msgstr "Ental"
+
 msgid "Zero"
 msgstr "Nul"
 
@@ -737,6 +869,9 @@ msgstr "En"
 msgid "Two"
 msgstr "To"
 
+msgid "Plural"
+msgstr "Flertal"
+
 msgid "Other"
 msgstr "Andet"
 
@@ -765,6 +900,12 @@ msgstr "Skjul sidebjælke"
 msgid "Show Sidebar"
 msgstr "Vis sidebjælke"
 
+msgid "Hide Status Bar"
+msgstr "Skjul statuslinje"
+
+msgid "Show Status Bar"
+msgstr "Vis statuslinje"
+
 msgid "Source text"
 msgstr "Oprindelig tekst"
 
@@ -774,6 +915,10 @@ msgstr "Oversættelse"
 msgid "ID"
 msgstr "ID"
 
+#, c-format
+msgid "Source text — %s"
+msgstr "Kildetekst — %s"
+
 msgid "unknown language"
 msgstr "ukendt sprog"
 
@@ -784,57 +929,73 @@ msgstr "Oversættelse — %s"
 msgid "Error:"
 msgstr "Fejl:"
 
-msgid "Project info"
-msgstr "Projektinformation"
+msgid "Source file"
+msgstr "Kildefil"
 
-msgid "Project name and version:"
-msgstr "Projektnavn og version:"
+msgid "Source file occurrence:"
+msgstr "Kildefilsforekomst:"
 
-msgid "Language:"
-msgstr "Sprog:"
+msgid "Open in Editor"
+msgstr "Åben i editor"
 
-msgid "Team:"
-msgstr "Hold:"
+msgid "Open in editor"
+msgstr "Åben i editor"
 
-msgid "Team's email address:"
-msgstr "E-mail-adressen for holdet:"
+msgid "No references for the selected item."
+msgstr "Ingen referencer for at det valgte emne."
 
-msgid "Charset:"
-msgstr "Tegnsæt:"
+#, c-format
+msgid "Error opening file %s!"
+msgstr "Fejl ved åbning af filen %s!"
 
-msgid "Source"
-msgstr "Oprindelig tekst"
+msgid "Find"
+msgstr "Find"
 
-msgid "Notes"
-msgstr "Noter"
+msgid "Replace"
+msgstr "Erstat"
 
-msgid "Automatic translation"
-msgstr "Automatisk oversættelse"
+#. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.)
+msgid "Options"
+msgstr "Indstillinger"
 
-msgid "Fuzzy translation"
-msgstr "Uafklaret oversættelse"
+msgid "Ignore case"
+msgstr "Ignorer forskelle på store og små bogstaver"
 
-msgid "Notes for translators:"
-msgstr "Noter til oversættere:"
+msgid "Wrap around"
+msgstr "Ombrydning"
 
-msgid "Comment:"
-msgstr "Kommentar:"
+msgid "Whole words only"
+msgstr "Kun hele ord"
 
-msgid "Source file"
-msgstr "Kildefil"
+msgid "Find in source texts"
+msgstr "Find i kildetekster"
 
-msgid "Source file occurrence:"
-msgstr "Kildefilsforekomst:"
+msgid "Find in translations"
+msgstr "Find i oversættelser"
 
-msgid "Open in Editor"
-msgstr "Åben i editor"
+msgid "Find in comments"
+msgstr "Find i kommentarer"
 
-msgid "Open in editor"
-msgstr "Åben i editor"
+msgid "Close"
+msgstr "Luk"
 
-#, c-format
-msgid "Error opening file %s!"
-msgstr "Fejl ved åbning af filen %s!"
+msgid "Replace All"
+msgstr "Erstat alle"
+
+msgid "Replace all"
+msgstr "Erstat alle"
+
+msgid "< &Previous"
+msgstr "< &Forrige"
+
+msgid "&Next >"
+msgstr "&Næste >"
+
+msgid "String to find"
+msgstr "Streng som skal findes"
+
+msgid "Replacement string"
+msgstr "Erstatningsstreng"
 
 #, c-format
 msgid "Cannot execute program: %s"
@@ -859,7 +1020,7 @@ msgid "Total"
 msgstr "I alt"
 
 msgid "Untrans"
-msgstr "Untrans"
+msgstr "Ej-oversat"
 
 msgid "Fuzzy"
 msgstr "Uafklaret"
@@ -880,7 +1041,7 @@ msgid "<unnamed>"
 msgstr "<unavngivet>"
 
 msgid "Do you want to delete the project?"
-msgstr "Vil du virkelig slette projektet?"
+msgstr "Vil du slette projektet?"
 
 msgid "Confirmation"
 msgstr "Bekræftelse"
@@ -924,7 +1085,7 @@ msgid "Show summary after catalog update"
 msgstr "Vis resume efter katalogopdatering"
 
 msgid "Check spelling"
-msgstr "Tjek stavning"
+msgstr "Stavekontrol"
 
 msgid "Always change focus to text input field"
 msgstr "Skift altid fokus til indtastningsfeltet for tekst"
@@ -1038,14 +1199,24 @@ msgstr "Ny"
 msgid "Edit"
 msgstr "Redigér"
 
+msgid "Delete extractor"
+msgstr "Slet udtækker"
+
+#, c-format
+msgid "Are you sure you want to delete the “%s” extractor?"
+msgstr "Er du sikker på du vil slette \"%s\"-udtrækkeren?"
+
 msgid "Extractors"
 msgstr "Udtrækkere"
 
+msgid "Accounts"
+msgstr "Konti"
+
 msgid "Automatically check for updates"
 msgstr "Søg automatisk efter opdateringer"
 
 msgid "Include beta versions"
-msgstr "Inkludér betaversioner"
+msgstr "Medtag betaversioner"
 
 msgid ""
 "Beta versions contain the latest new features and improvements, but may be a "
@@ -1083,17 +1254,53 @@ msgstr "Bevar formatering af eksisterende filer"
 msgid "Advanced"
 msgstr "Avanceret"
 
-msgid "Additional keywords"
-msgstr "Yderligere nøgleord"
+msgid ""
+"<big>Drag and Drop Folders Here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+"<big>Træk og slip mapper her</big>\n"
+"\n"
+"eller brug + knappen"
+
+msgid ""
+"<big>Drag and drop folders here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+"<big>Træk og slip mapper her</big>\n"
+"\n"
+"eller brug + knappen"
+
+msgid "Add Folders..."
+msgstr "Tilføj mapper..."
+
+msgid "Add folders..."
+msgstr "Tilføj mapper..."
+
+msgid "Add Files..."
+msgstr "Tilføj filer..."
+
+msgid "Add files..."
+msgstr "Tilføj filer..."
+
+msgid "Add Wildcard..."
+msgstr "Tilføj wildcard..."
+
+msgid "Add wildcard..."
+msgstr "Tilføj wildcard..."
 
 msgid "Paths"
 msgstr "Stier"
 
 msgid "Excluded paths"
-msgstr "Ekskluderede stier"
+msgstr "Udelukkede stier"
+
+msgid "Additional keywords"
+msgstr "Yderligere nøgleord"
 
 msgid "Name of the project the translation is for"
-msgstr "Navn på projektet som oversættelsen er for"
+msgstr "Navn på projektet som oversættelsen er til"
 
 msgid "e.g. nplurals=2; plural=(n > 1);"
 msgstr "f.eks. nplurals=2; plural=(n > 1);"
@@ -1106,51 +1313,18 @@ msgstr ""
 "Gem venligst filen først. Denne kan sektion kan ikke redigere før det er "
 "sket."
 
+msgid "Comment:"
+msgstr "Kommentar:"
+
 msgid "OK"
-msgstr "O.k."
+msgstr "OK"
 
 msgid "C&lear"
-msgstr "Ryd"
+msgstr "&Ryd"
 
 msgid "Clear the comment"
 msgstr "Ryd kommentaren"
 
-msgid "Find..."
-msgstr "Find..."
-
-msgid "String to find:"
-msgstr "Find tekst:"
-
-msgid "Case sensitive"
-msgstr "Store/små bogstaver forskellige"
-
-msgid "Start from the first item"
-msgstr "Begynd fra det første element"
-
-msgid "Whole words only"
-msgstr "Kun hele ord"
-
-msgid "Find in original strings"
-msgstr "Find i originaltekster"
-
-msgid "Find in translations"
-msgstr "Find i oversættelser"
-
-msgid "Find in comments"
-msgstr "Find i kommentarer"
-
-msgid "Find in automatic comments"
-msgstr "Søg i automatiske kommentarer"
-
-msgid "Close"
-msgstr "Luk"
-
-msgid "< &Previous"
-msgstr "< &Forrige"
-
-msgid "&Next >"
-msgstr "&Næste >"
-
 msgid "Create new translations project"
 msgstr "Opret nyt oversættelsesprojekt"
 
@@ -1205,6 +1379,12 @@ msgstr "&Åbn..."
 msgid "Open Recent"
 msgstr "Åbn nylige"
 
+msgid "Open from Crowdin..."
+msgstr "Åbn fra Crowdin..."
+
+msgid "Open From Crowdin..."
+msgstr "Åbn fra Crowdin..."
+
 msgid "&Save"
 msgstr "&Gem"
 
@@ -1253,14 +1433,17 @@ msgstr "&Vis referencer"
 msgid "&Find..."
 msgstr "&Find..."
 
+msgid "Replace..."
+msgstr "Erstat..."
+
 msgid "Find next"
 msgstr "Find næste"
 
 msgid "Find previous"
 msgstr "Find forrige"
 
-msgid "Find"
-msgstr "Find"
+msgid "Find and Replace..."
+msgstr "Find og erstat..."
 
 msgid "Find Next"
 msgstr "Find næste"
@@ -1301,6 +1484,12 @@ msgstr "&Grupper efter kontekst"
 msgid "&Group By Context"
 msgstr "&Grupper efter kontekst"
 
+msgid "Entries with errors first"
+msgstr "Emner med fejl først"
+
+msgid "Entries with Errors First"
+msgstr "Emner med fejl først"
+
 msgid "&Untranslated entries first"
 msgstr "&Ikke oversatte tekster først"
 
@@ -1310,6 +1499,9 @@ msgstr "&Ikke oversatte tekster først"
 msgid "Show sidebar"
 msgstr "Vis sidebjælke"
 
+msgid "Show status bar"
+msgstr "Vis statuslinje"
+
 msgid "C&atalog"
 msgstr "K&atalog"
 
@@ -1325,6 +1517,9 @@ msgstr "Opdatér fra &POT-fil..."
 msgid "Update from &POT File..."
 msgstr "Opdatér fra &POT-fil..."
 
+msgid "Sync with Crowdin"
+msgstr "Synkroniser med Crowdin"
+
 msgid "Fill missing translations from &TM..."
 msgstr "Udfyld manglende oversættelser fra &TM..."
 
@@ -1452,6 +1647,9 @@ msgstr ""
 msgid "Catalog properties"
 msgstr "Egenskaber for katalog"
 
+msgid "Project name and version:"
+msgstr "Projektnavn og version:"
+
 msgid "Plural Forms:"
 msgstr "Flertalsformer:"
 
@@ -1464,17 +1662,29 @@ msgstr "Brug tilpasset udtryk"
 msgid "Learn about plural forms"
 msgstr "Lær mere om flertalsformer"
 
+msgid "Charset:"
+msgstr "Tegnsæt:"
+
+msgid "Team:"
+msgstr "Hold:"
+
+msgid "Team's email address:"
+msgstr "E-mail-adressen for holdet:"
+
 msgid "Translation properties"
 msgstr "Oversættelsesegenskaber"
 
+msgid "Sources paths"
+msgstr "Søgestier"
+
 msgid "Extract text from source files in the following directories:"
 msgstr "Uddrag tekst fra kildefiler i disse mapper:"
 
 msgid "Base path:"
 msgstr "Basissti:"
 
-msgid "Sources paths"
-msgstr "Søgestier"
+msgid "Sources keywords"
+msgstr "Nøgleord i kildefil"
 
 msgid ""
 "Use these keywords (function names) to recognize translatable strings\n"
@@ -1486,9 +1696,6 @@ msgstr ""
 msgid "Learn about gettext keywords"
 msgstr "Lær om gettext nøgleord"
 
-msgid "Sources keywords"
-msgstr "Nøgleord i kildefil"
-
 msgid "Update summary"
 msgstr "Opdatér resume"
 
@@ -1536,8 +1743,8 @@ msgstr "Opdatér katalog - synkronisér med kilder"
 msgid "Toggled if selected string has fuzzy translation"
 msgstr "Skifter om den valgte oversættelse er uafklaret"
 
-msgid "Show or hide the sidebar."
-msgstr "Vis eller skjul sidebjælken."
+msgid "Show or hide the sidebar"
+msgstr "Vis eller skjul sidepanelet"
 
 #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer.
 msgid "Previous source text:"
@@ -1550,6 +1757,9 @@ msgstr ""
 "Den gamle kildetekst (før den blev ændret ved en opdatering) som uafklaret "
 "oversættelse svarer til."
 
+msgid "Notes for translators:"
+msgstr "Noter til oversættere:"
+
 msgid "Add comment"
 msgstr "Tilføj kommentar"
 
@@ -1628,9 +1838,6 @@ msgstr "Redigér en oversættelse"
 msgid "Open an existing PO file and edit the translation."
 msgstr "Åben en eksisterende PO fil og rediger oversættelsen."
 
-msgid "Create new translation"
-msgstr "Opret ny oversættelse"
-
 msgid ""
 "Take an existing PO file or POT template and create a new translation from "
 "it."
@@ -1638,6 +1845,18 @@ msgstr ""
 "Tag en eksisterende PO fil eller POT skabelon og opret en  ny oversættelse "
 "fra den."
 
+msgid "Collaborate on a translation with Crowdin"
+msgstr "Samarbejd om en oversættelse med Crowdin"
+
+msgid ""
+"Download a file from Crowdin project, translate and sync your changes back."
+msgstr ""
+"Download en fil fra et Crowdin projekt, oversæt og synkroniser dine "
+"ændringer tilbage."
+
+msgid "What is Crowdin?"
+msgstr "Hvad er Crowdin?"
+
 msgid "There are no translations. That’s unusual."
 msgstr "Der er ikke nogen oversættelser. Det er usædvanligt."
 
@@ -1676,3 +1895,9 @@ msgstr "Udtræk fra kilder"
 
 msgid "Configure source code extraction in Properties."
 msgstr "Konfigurer kildekode udtrækning i Egenskaber."
+
+msgid "Sync"
+msgstr "Synk"
+
+msgid "Synchronize the translation with Crowdin"
+msgstr "Synkroniser oversættelsen med Crowdin"
diff --git a/locales/de.mo b/locales/de.mo
index 20a004f..b699f9c 100644
Binary files a/locales/de.mo and b/locales/de.mo differ
diff --git a/locales/de.po b/locales/de.po
index 37da3a5..a190213 100644
--- a/locales/de.po
+++ b/locales/de.po
@@ -2,8 +2,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: poedit\n"
 "Report-Msgid-Bugs-To: help at poedit.net\n"
-"POT-Creation-Date: 2015-01-10 16:00+0100\n"
-"PO-Revision-Date: 2015-03-10 12:33-0400\n"
+"POT-Creation-Date: 2015-05-27 11:31+0200\n"
+"PO-Revision-Date: 2015-05-27 05:17-0400\n"
 "Last-Translator: vslavik <vaclav at slavik.io>\n"
 "Language-Team: German\n"
 "Language: de_DE\n"
@@ -95,6 +95,15 @@ msgstr ""
 msgid "Error saving catalog"
 msgstr "Fehler beim Speichern der Katalogdatei"
 
+msgid "PO Translation Files"
+msgstr "PO-Übersetzungsdateien"
+
+msgid "POT Translation Templates"
+msgstr "POT-Übersetzungsvorlagen"
+
+msgid "All Translation Files"
+msgstr "Alle Übersetzungsdateien"
+
 msgid "Merging differences..."
 msgstr "Änderungen werden zusammengefügt …"
 
@@ -114,6 +123,89 @@ msgstr "Sprachauswahl"
 msgid "You must restart Poedit for this change to take effect."
 msgstr "Sie müssen Poedit neu starten, damit diese Änderung wirksam wird."
 
+msgid "Downloading translations is disabled in this project."
+msgstr "Herunterladen von Übersetzungen ist in diesem Projekt deaktiviert."
+
+msgid "Not authorized, please sign in again."
+msgstr "Nicht autorisiert, bitte melden Sie sich erneut an."
+
+msgid "Sign in to Crowdin"
+msgstr "Bei Crowdin anmelden"
+
+msgid ""
+"Crowdin is an online localization management platform and collaborative "
+"translation tool. Poedit can seamlessly sync PO files managed at Crowdin."
+msgstr ""
+"Crowdin ist eine Onlineplattform zur Lokalisierung und ein Werkzeug zum "
+"gemeinsamen Übersetzen. Poedit kann PO-Dateien, die mittels Crowdin "
+"verwaltet werden, problemlos synchronisieren."
+
+msgid "Sign In"
+msgstr "Anmelden"
+
+msgid "Sign in"
+msgstr "Anmelden"
+
+msgid "Sign Out"
+msgstr "Abmelden"
+
+msgid "Sign out"
+msgstr "Abmelden"
+
+msgid "Waiting for authentication…"
+msgstr "Auf Authentifizierung warten …"
+
+msgid "Updating user information…"
+msgstr "Benutzerinformationen werden aktualisiert …"
+
+msgid "Signed in as:"
+msgstr "Angemeldet als:"
+
+msgid "Learn More About Crowdin"
+msgstr "Erfahren Sie mehr über Crowdin"
+
+msgid "Learn more about Crowdin"
+msgstr "Erfahren Sie mehr über Crowdin"
+
+msgid "Open Crowdin translation"
+msgstr "Crowdin-Übersetzung öffnen"
+
+msgid "Project:"
+msgstr "Projekt:"
+
+msgid "Language:"
+msgstr "Sprache:"
+
+msgid "File:"
+msgstr "Datei:"
+
+msgid "No translation projects listed in your Crowdin account."
+msgstr "Es sind keine Übersetzungsprojekte in Ihrem Crowdin-Konto gelistet."
+
+msgid "This project has no files that can be translated in Poedit."
+msgstr ""
+"In diesem Projekt befinden sich keine Dateien, die mit Poedit übersetzt "
+"werden können."
+
+msgid "This file can only be edited in Crowdin’s web interface."
+msgstr ""
+"Diese Datei kann nur in der Weboberfläche von Crowdin bearbeitet werden."
+
+msgid "Downloading latest translations…"
+msgstr "Neueste Übersetzungen werden heruntergeladen …"
+
+msgid "Syncing with Crowdin"
+msgstr "Synchronisierung mit Crowdin"
+
+msgid "Syncing with Crowdin failed."
+msgstr "Fehler bei der Synchronisierung mit Crowdin."
+
+msgid "Crowdin error"
+msgstr "Crowdin Fehler"
+
+msgid "Uploading translations…"
+msgstr "Übersetzungen werden hochgeladen …"
+
 msgid "&Copy"
 msgstr "&Kopieren"
 
@@ -160,6 +252,12 @@ msgstr ""
 msgid "don't delete temporary files (for debugging)"
 msgstr "Temporäre Dateien nicht entfernen (für Fehlersuche)"
 
+msgid "handle a poedit:// URI"
+msgstr "poedit:// Adresse verwenden"
+
+msgid "Failed to communicate with Poedit process."
+msgstr "Kommunikation mit Poedit-Prozess fehlgeschlagen."
+
 #, c-format
 msgid "Unhandled exception occurred: %s"
 msgstr "Ein unerwarteter Fehler ist aufgetreten: %s"
@@ -170,12 +268,6 @@ msgstr "Ein unerwarteter Fehler ist aufgetreten."
 msgid "Open catalog"
 msgstr "Katalog öffnen"
 
-msgid "All Files"
-msgstr "Alle Dateien"
-
-msgid "PO Translation Files"
-msgstr "PO-Übersetzungsdateien"
-
 #, c-format
 msgid "File '%s' doesn't exist."
 msgstr "Die Datei »%s« existiert nicht."
@@ -208,10 +300,10 @@ msgid "Undo"
 msgstr "Rückgängig"
 
 msgid "Redo"
-msgstr "Wiederholen"
+msgstr "Wiederherstellen"
 
 msgid "Paste and Match Style"
-msgstr "Einsetzen und Formatierung"
+msgstr "Einsetzen und Stil anpassen"
 
 msgid "Delete"
 msgstr "Löschen"
@@ -405,6 +497,20 @@ msgstr "Plural:"
 msgid "Translation:"
 msgstr "Übersetzung:"
 
+msgid ""
+"POT files are only templates and don’t contain any translations themselves.\n"
+"To make a translation, create a new PO file based on the template."
+msgstr ""
+"POT-Dateien sind nur Vorlagen, sie enthalten selbst keine Übersetzungen.\n"
+"Um eine Übersetzung zu starten, legen Sie eine neue PO-Datei an, die auf der "
+"Vorlage basiert."
+
+msgid "Create New Translation"
+msgstr "Neue Übersetzung anlegen"
+
+msgid "Create new translation"
+msgstr "Neue Übersetzung erstellen"
+
 #. TRANSLATORS: %s is language name in its basic form (as you
 #. would see e.g. in a list of supported languages). You may need
 #. to rephrase it, e.g. to an equivalent of "for language %s".
@@ -454,9 +560,6 @@ msgstr "HTML-Dateien"
 msgid "Open catalog template"
 msgstr "Katalogvorlage öffnen"
 
-msgid "POT Translation Templates"
-msgstr "POT-Übersetzungsvorlagen"
-
 msgid "Updating catalog"
 msgstr "Katalog wird aktualisiert"
 
@@ -488,7 +591,7 @@ msgstr[0] "Es wurde %d Problem mit der Übersetzung gefunden"
 msgstr[1] "Es wurden %d Probleme mit der Übersetzung gefunden"
 
 msgid "Validation results"
-msgstr "Prüfungsergebnisse"
+msgstr "Überprüfungsergebnisse"
 
 msgid ""
 "Entries with errors were marked in red in the list. Details of the error "
@@ -504,7 +607,7 @@ msgid ""
 "The file was saved safely and compiled into the MO format, but it will "
 "probably not work correctly."
 msgstr ""
-"Die Datei wurde sicher gespeichert und in das MO Format konvertiert, aber "
+"Die Datei wurde sicher gespeichert und in das MO-Format konvertiert, aber "
 "möglicherweise funktioniert es nicht korrekt."
 
 msgid ""
@@ -541,18 +644,25 @@ msgstr[1] ""
 msgid "The translation is ready for use."
 msgstr "Die Übersetzung kann verwendet werden."
 
-msgid "No references to this string found."
-msgstr "Keine Verweise auf diese Zeichenkette gefunden."
-
-msgid "Please choose the reference you want to show:"
-msgstr "Bitte wählen Sie einen Verweis zum Anzeigen aus:"
-
-msgid "References"
-msgstr "Verweise"
-
 msgid "Context:"
 msgstr "Zusammenhang:"
 
+#, c-format
+msgid "Poedit automatically fixed invalid content in the file “%s”."
+msgstr ""
+"Ungültige Inhalte der Datei »%s« wurden von Poedit automatisch korrigiert."
+
+msgid ""
+"The file contained duplicate items, which is not allowed in PO files and "
+"would prevent the file from being used. Poedit fixed the issue, but you "
+"should review translations of any items marked as fuzzy and correct them if "
+"necessary."
+msgstr ""
+"Die Datei enthält doppelte Einträge, was in PO-Dateien nicht zulässig ist "
+"und dazu führen würde, dass die Datei nicht verwendet wird. Dieses Problem "
+"wurde von Poedit behoben. Sie sollten allerdings Übersetzungen, die als "
+"unklar markiert sind, prüfen und diese falls erforderlich korrigieren."
+
 msgid "Language of the translation isn't set."
 msgstr "Sprache der Übersetzung ist nicht festgelegt."
 
@@ -562,6 +672,24 @@ msgstr "Sprache festlegen"
 msgid "Set language"
 msgstr "Sprache festlegen"
 
+#. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)."
+msgid ""
+"Suggestions are not available if the translation language is not set "
+"correctly. Other features, such as plural forms, may be affected as well."
+msgstr ""
+"Vorschläge sind nicht verfügbar, wenn die Übersetzungssprache nicht richtig "
+"eingestellt ist. Andere Funktionen wie z.B. Pluralformen, können ebenfalls "
+"betroffen sein."
+
+msgid "Language of the translation is the same as source language."
+msgstr "Sprache der Übersetzung ist dieselbe wie die Ausgangssprache."
+
+msgid "Fix Language"
+msgstr "Sprache korrekt festlegen"
+
+msgid "Fix language"
+msgstr "Sprache korrekt festlegen"
+
 msgid ""
 "This catalog has entries with plural forms, but doesn't have Plural-Forms "
 "header configured."
@@ -581,7 +709,7 @@ msgstr "Im Kopfbereich der Datei fehlt die Angabe »Plural-Forms«."
 
 #, c-format
 msgid "Syntax error in Plural-Forms header (\"%s\")."
-msgstr "Syntaxfehler im Dateikopf »Plural-Forms« (\"%s\")."
+msgstr "Syntaxfehler im Dateikopf bei »Plural-Forms« (»%s«)."
 
 msgid "Fix the Header"
 msgstr "Kopfbereich reparieren"
@@ -596,8 +724,9 @@ msgstr "Kopfbereich reparieren"
 msgid "Plural forms expression used by the catalog is unusual for %s."
 msgstr "Verwendete Plural-Form des Kataloges ist unüblich für %s."
 
+#. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the catalog is unusual for %s.")"
 msgid "Review"
-msgstr "Überprüfung"
+msgstr "Überprüfen"
 
 #, c-format
 msgid "Error loading message catalog file '%s'."
@@ -617,6 +746,12 @@ msgid_plural "%d errors"
 msgstr[0] "%d Fehler"
 msgstr[1] "%d Fehler"
 
+#, c-format
+msgid "%d entry"
+msgid_plural "%d entries"
+msgstr[0] "%d Eintrag"
+msgstr[1] "%d Einträge"
+
 msgid " (unsaved)"
 msgstr " (ungespeichert)"
 
@@ -745,17 +880,23 @@ msgstr "Alles"
 msgid "Form %i"
 msgstr "Form %i"
 
+msgid "Singular"
+msgstr "Singular"
+
 msgid "Zero"
 msgstr "Null"
 
 msgid "One"
-msgstr "Eins"
+msgstr "Singular"
 
 msgid "Two"
 msgstr "Zwei"
 
+msgid "Plural"
+msgstr "Plural"
+
 msgid "Other"
-msgstr "Andere"
+msgstr "Plural"
 
 msgid "&Bookmarks"
 msgstr "&Lesezeichen"
@@ -782,6 +923,12 @@ msgstr "Seitenleiste ausblenden"
 msgid "Show Sidebar"
 msgstr "Seitenleiste anzeigen"
 
+msgid "Hide Status Bar"
+msgstr "Statusleiste ausblenden"
+
+msgid "Show Status Bar"
+msgstr "Statusleiste anzeigen"
+
 msgid "Source text"
 msgstr "Quelltext"
 
@@ -791,6 +938,10 @@ msgstr "Übersetzung"
 msgid "ID"
 msgstr "ID"
 
+#, c-format
+msgid "Source text — %s"
+msgstr "Quelltext — %s"
+
 msgid "unknown language"
 msgstr "unbekannte Sprache"
 
@@ -801,57 +952,73 @@ msgstr "Übersetzung – %s"
 msgid "Error:"
 msgstr "Fehler:"
 
-msgid "Project info"
-msgstr "Projektinfo"
+msgid "Source file"
+msgstr "Quelldatei"
 
-msgid "Project name and version:"
-msgstr "Projektname und -version:"
+msgid "Source file occurrence:"
+msgstr "Vorkommen in Quelldatei:"
 
-msgid "Language:"
-msgstr "Sprache:"
+msgid "Open in Editor"
+msgstr "In Editor öffnen"
 
-msgid "Team:"
-msgstr "Übersetzerteam:"
+msgid "Open in editor"
+msgstr "In Editor öffnen"
 
-msgid "Team's email address:"
-msgstr "E-Mail-Adresse des Übersetzerteams:"
+msgid "No references for the selected item."
+msgstr "Keine Verweise für das ausgewählte Element."
 
-msgid "Charset:"
-msgstr "Zeichensatz:"
+#, c-format
+msgid "Error opening file %s!"
+msgstr "Fehler beim Öffnen der Datei »%s«."
 
-msgid "Source"
-msgstr "Quelle"
+msgid "Find"
+msgstr "Suchen"
 
-msgid "Notes"
-msgstr "Anmerkungen"
+msgid "Replace"
+msgstr "Ersetzen"
 
-msgid "Automatic translation"
-msgstr "Automatische Übersetzung"
+#. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.)
+msgid "Options"
+msgstr "Optionen"
 
-msgid "Fuzzy translation"
-msgstr "Unklare Übersetzung"
+msgid "Ignore case"
+msgstr "Groß-/Kleinschreibung ignorieren"
 
-msgid "Notes for translators:"
-msgstr "Anmerkungen für Übersetzer:"
+msgid "Wrap around"
+msgstr "Am Ende von vorne beginnen"
 
-msgid "Comment:"
-msgstr "Kommentar:"
+msgid "Whole words only"
+msgstr "Nur ganze Wörter"
 
-msgid "Source file"
-msgstr "Quelldatei"
+msgid "Find in source texts"
+msgstr "In Quelltexten suchen"
 
-msgid "Source file occurrence:"
-msgstr "Vorkommen in Quelldatei:"
+msgid "Find in translations"
+msgstr "In Übersetzungen suchen"
 
-msgid "Open in Editor"
-msgstr "In Editor öffnen"
+msgid "Find in comments"
+msgstr "In Kommentaren suchen"
 
-msgid "Open in editor"
-msgstr "In Editor öffnen"
+msgid "Close"
+msgstr "Schließen"
 
-#, c-format
-msgid "Error opening file %s!"
-msgstr "Fehler beim Öffnen der Datei »%s«."
+msgid "Replace All"
+msgstr "Alle ersetzen"
+
+msgid "Replace all"
+msgstr "Alle ersetzen"
+
+msgid "< &Previous"
+msgstr "< &Zurück"
+
+msgid "&Next >"
+msgstr "&Weiter >"
+
+msgid "String to find"
+msgstr "Zu suchende Zeichenkette"
+
+msgid "Replacement string"
+msgstr "Ersatzzeichenkette"
 
 #, c-format
 msgid "Cannot execute program: %s"
@@ -938,7 +1105,7 @@ msgid "Automatically compile MO file when saving"
 msgstr "MO-Datei beim Speichern automatisch erstellen"
 
 msgid "Show summary after catalog update"
-msgstr "Nach Katalogaktualisierung Bericht anzeigen"
+msgstr "Bericht nach Katalogaktualisierung anzeigen"
 
 msgid "Check spelling"
 msgstr "Rechtschreibung prüfen"
@@ -1058,9 +1225,19 @@ msgstr "Neu"
 msgid "Edit"
 msgstr "Bearbeiten"
 
+msgid "Delete extractor"
+msgstr "Extraktor entfernen"
+
+#, c-format
+msgid "Are you sure you want to delete the “%s” extractor?"
+msgstr "Sind Sie sicher, dass der Extraktor »%s« entfernt werden soll?"
+
 msgid "Extractors"
 msgstr "Extraktoren"
 
+msgid "Accounts"
+msgstr "Konten"
+
 msgid "Automatically check for updates"
 msgstr "Automatisch nach Aktualisierungen suchen"
 
@@ -1104,8 +1281,41 @@ msgstr "Formatierung vorhandener Dateien beibehalten"
 msgid "Advanced"
 msgstr "Erweitert"
 
-msgid "Additional keywords"
-msgstr "Zusätzliche Schlüsselwörter"
+msgid ""
+"<big>Drag and Drop Folders Here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+"<big>Ziehen und legen Sie Ordner hier ab</big>\n"
+"\n"
+"oder verwenden Sie den + Knopf"
+
+msgid ""
+"<big>Drag and drop folders here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+"<big>Ziehen und legen Sie Ordner hier ab</big>\n"
+"\n"
+"oder verwenden Sie den + Knopf"
+
+msgid "Add Folders..."
+msgstr "Ordner hinzufügen …"
+
+msgid "Add folders..."
+msgstr "Ordner hinzufügen …"
+
+msgid "Add Files..."
+msgstr "Dateien hinzufügen …"
+
+msgid "Add files..."
+msgstr "Dateien hinzufügen …"
+
+msgid "Add Wildcard..."
+msgstr "Platzhalter hinzufügen …"
+
+msgid "Add wildcard..."
+msgstr "Platzhalter hinzufügen …"
 
 msgid "Paths"
 msgstr "Pfade"
@@ -1113,6 +1323,9 @@ msgstr "Pfade"
 msgid "Excluded paths"
 msgstr "Ausgeschlossene Pfade"
 
+msgid "Additional keywords"
+msgstr "Zusätzliche Schlüsselwörter"
+
 msgid "Name of the project the translation is for"
 msgstr "Name des Projektes der Übersetzung"
 
@@ -1127,6 +1340,9 @@ msgstr ""
 "Bitte speichern Sie die Datei vorher. Dieser Abschnitt kann bis dahin nicht "
 "bearbeitet werden."
 
+msgid "Comment:"
+msgstr "Kommentar:"
+
 msgid "OK"
 msgstr "OK"
 
@@ -1136,42 +1352,6 @@ msgstr "&Löschen"
 msgid "Clear the comment"
 msgstr "Kommentar löschen"
 
-msgid "Find..."
-msgstr "Suchen …"
-
-msgid "String to find:"
-msgstr "Gesuchte Zeichenkette:"
-
-msgid "Case sensitive"
-msgstr "Groß-/Kleinschreibung beachten"
-
-msgid "Start from the first item"
-msgstr "Mit dem ersten Eintrag anfangen"
-
-msgid "Whole words only"
-msgstr "Nur ganze Wörter"
-
-msgid "Find in original strings"
-msgstr "In Quelltexten suchen"
-
-msgid "Find in translations"
-msgstr "In Übersetzungen suchen"
-
-msgid "Find in comments"
-msgstr "In Kommentaren suchen"
-
-msgid "Find in automatic comments"
-msgstr "In automatischen Kommentaren suchen"
-
-msgid "Close"
-msgstr "Schließen"
-
-msgid "< &Previous"
-msgstr "< &Zurück"
-
-msgid "&Next >"
-msgstr "&Weiter >"
-
 msgid "Create new translations project"
 msgstr "Neues Übersetzungsprojekt erstellen"
 
@@ -1226,6 +1406,12 @@ msgstr "Ö&ffnen …"
 msgid "Open Recent"
 msgstr "Zuletzt geöffnete Dateien"
 
+msgid "Open from Crowdin..."
+msgstr "Von Crowdin öffnen …"
+
+msgid "Open From Crowdin..."
+msgstr "Von Crowdin öffnen …"
+
 msgid "&Save"
 msgstr "&Speichern"
 
@@ -1274,14 +1460,17 @@ msgstr "&Verweise anzeigen"
 msgid "&Find..."
 msgstr "&Suchen …"
 
+msgid "Replace..."
+msgstr "Ersetzen …"
+
 msgid "Find next"
 msgstr "Nächstes Vorkommen suchen"
 
 msgid "Find previous"
 msgstr "Vorheriges Vorkommen suchen"
 
-msgid "Find"
-msgstr "Suchen"
+msgid "Find and Replace..."
+msgstr "Suchen und ersetzen …"
 
 msgid "Find Next"
 msgstr "Nächstes Vorkommen suchen"
@@ -1322,6 +1511,12 @@ msgstr "Nach Zusammenhang &gruppieren"
 msgid "&Group By Context"
 msgstr "Nach Zusammenhang &gruppieren"
 
+msgid "Entries with errors first"
+msgstr "Einträge mit Fehlern zuerst"
+
+msgid "Entries with Errors First"
+msgstr "Einträge mit Fehlern zuerst"
+
 msgid "&Untranslated entries first"
 msgstr "&Nicht übersetzte Einträge zuerst"
 
@@ -1331,6 +1526,9 @@ msgstr "&Nicht übersetzte Einträge zuerst"
 msgid "Show sidebar"
 msgstr "Seitenleiste anzeigen"
 
+msgid "Show status bar"
+msgstr "Statusleiste anzeigen"
+
 msgid "C&atalog"
 msgstr "&Katalog"
 
@@ -1346,6 +1544,9 @@ msgstr "Aus &POT-Datei aktualisieren …"
 msgid "Update from &POT File..."
 msgstr "Aus &POT-Datei aktualisieren …"
 
+msgid "Sync with Crowdin"
+msgstr "Mit Crowdin synchronisieren"
+
 msgid "Fill missing translations from &TM..."
 msgstr "Fehlende Übersetzungen aus dem Übersetzungsspeicher &füllen …"
 
@@ -1368,10 +1569,10 @@ msgid "&Properties..."
 msgstr "&Eigenschaften …"
 
 msgid "&Done and next"
-msgstr "&Erledigt und Nächster"
+msgstr "&Erledigt und weiter"
 
 msgid "&Done and Next"
-msgstr "&Erledigt und Nächster"
+msgstr "&Erledigt und weiter"
 
 msgid "&Previous translation"
 msgstr "&Vorherige Übersetzung"
@@ -1475,6 +1676,9 @@ msgstr ""
 msgid "Catalog properties"
 msgstr "Katalog-Eigenschaften"
 
+msgid "Project name and version:"
+msgstr "Projektname und -version:"
+
 msgid "Plural Forms:"
 msgstr "Pluralformen:"
 
@@ -1487,17 +1691,29 @@ msgstr "Benutzerdefinierten Ausdruck verwenden"
 msgid "Learn about plural forms"
 msgstr "Weitere Informationen zu Pluralformen"
 
+msgid "Charset:"
+msgstr "Zeichensatz:"
+
+msgid "Team:"
+msgstr "Übersetzerteam:"
+
+msgid "Team's email address:"
+msgstr "E-Mail-Adresse des Übersetzerteams:"
+
 msgid "Translation properties"
 msgstr "Übersetzungseinstellungen"
 
+msgid "Sources paths"
+msgstr "Quell-Pfade"
+
 msgid "Extract text from source files in the following directories:"
 msgstr "Text aus Quelldateien in den folgenden Ordnern extrahieren:"
 
 msgid "Base path:"
 msgstr "Ausgangspfad:"
 
-msgid "Sources paths"
-msgstr "Quell-Pfade"
+msgid "Sources keywords"
+msgstr "Schlüsselwörter aus Quelltexten"
 
 msgid ""
 "Use these keywords (function names) to recognize translatable strings\n"
@@ -1509,11 +1725,8 @@ msgstr ""
 msgid "Learn about gettext keywords"
 msgstr "Weitere Informationen zu gettext-Schlüsselwörtern"
 
-msgid "Sources keywords"
-msgstr "Schlüsselwörter aus Quelltexten"
-
 msgid "Update summary"
-msgstr "Übersicht aktualisieren"
+msgstr "Zusammenfassung der Aktualisierung"
 
 msgid ""
 "These strings were found in the sources but were not in the catalog.\n"
@@ -1561,8 +1774,8 @@ msgid "Toggled if selected string has fuzzy translation"
 msgstr ""
 "Gesetzt, wenn die ausgewählte Zeichenkette eine unklare Übersetzung enthält"
 
-msgid "Show or hide the sidebar."
-msgstr "Seitenleiste anzeigen oder verbergen."
+msgid "Show or hide the sidebar"
+msgstr "Seitenleiste anzeigen oder verbergen"
 
 #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer.
 msgid "Previous source text:"
@@ -1575,6 +1788,9 @@ msgstr ""
 "Früherer Quelltext (vor der Änderung durch eine Aktualisierung), zu der die "
 "unklare Übersetzung gehört."
 
+msgid "Notes for translators:"
+msgstr "Anmerkungen für Übersetzer:"
+
 msgid "Add comment"
 msgstr "Kommentar hinzufügen"
 
@@ -1611,7 +1827,7 @@ msgstr "Migration wird vorbereitet …"
 
 #, c-format
 msgid "Migration exit status: %d"
-msgstr "Migration Exit Status: %d"
+msgstr "Rückgabestatus der Migration: %d"
 
 msgid "Poedit needs to convert your translation memory to a new format."
 msgstr "Poedit muss den Übersetzungsspeicher in ein neues Format umwandeln."
@@ -1655,9 +1871,6 @@ msgstr "Übersetzung bearbeiten"
 msgid "Open an existing PO file and edit the translation."
 msgstr "Existierende PO-Datei öffnen und Übersetzung bearbeiten."
 
-msgid "Create new translation"
-msgstr "Neue Übersetzung erstellen"
-
 msgid ""
 "Take an existing PO file or POT template and create a new translation from "
 "it."
@@ -1665,6 +1878,18 @@ msgstr ""
 "Eine existierende PO-Datei oder POT-Vorlage verwenden und eine neue "
 "Übersetzung daraus erstellen."
 
+msgid "Collaborate on a translation with Crowdin"
+msgstr "Arbeiten Sie an einer Übersetzung mit Crowdin"
+
+msgid ""
+"Download a file from Crowdin project, translate and sync your changes back."
+msgstr ""
+"Herunterladen einer Datei aus einem Crowdin Projekt, übersetzen und "
+"zurücksynchronisieren Ihrer Änderungen."
+
+msgid "What is Crowdin?"
+msgstr "Was ist Crowdin?"
+
 msgid "There are no translations. That’s unusual."
 msgstr "Es gibt keine Übersetzungen. Das ist ungewöhnlich."
 
@@ -1676,10 +1901,10 @@ msgid ""
 "developer."
 msgstr ""
 "Übersetzbare Einträge werden nicht manuell in das Gettext-System "
-"hinzugefügt, aber automatisch vom\n"
-"Quellcode extrahiert. So bleibt alles immer aktuell und genau.\n"
-"Übersetzen verwenden typischerweise PO-Vorlagen (POTs), welche vom "
-"Programmierer vorbereitet werden."
+"hinzugefügt, sondern automatisch aus dem \n"
+"Quellcode extrahiert. So bleibt immer alles aktuell und genau.\n"
+"Übersetzer verwenden üblicherweise PO-Vorlagen (POTs), welche von "
+"Programmierern vorbereitet werden."
 
 msgid "(Learn more about GNU gettext)"
 msgstr "(Mehr über GNU gettext erfahren)"
@@ -1705,3 +1930,9 @@ msgstr "Aus Quellcode extrahieren"
 
 msgid "Configure source code extraction in Properties."
 msgstr "Quellcode-Extrahierung in den Einstellungen konfigurieren."
+
+msgid "Sync"
+msgstr "Sync"
+
+msgid "Synchronize the translation with Crowdin"
+msgstr "Synchronisieren der Übersetzung mit Crowdin"
diff --git a/locales/el.mo b/locales/el.mo
index 075ffdc..a617000 100644
Binary files a/locales/el.mo and b/locales/el.mo differ
diff --git a/locales/el.po b/locales/el.po
index 3ae93b0..37aa1fe 100644
--- a/locales/el.po
+++ b/locales/el.po
@@ -2,8 +2,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: poedit\n"
 "Report-Msgid-Bugs-To: help at poedit.net\n"
-"POT-Creation-Date: 2015-01-10 16:00+0100\n"
-"PO-Revision-Date: 2015-03-10 12:33-0400\n"
+"POT-Creation-Date: 2015-05-27 11:31+0200\n"
+"PO-Revision-Date: 2015-05-27 05:17-0400\n"
 "Last-Translator: vslavik <vaclav at slavik.io>\n"
 "Language-Team: Greek\n"
 "Language: el_GR\n"
@@ -95,6 +95,15 @@ msgstr ""
 msgid "Error saving catalog"
 msgstr "Σφάλμα αποθήκευσης καταλόγου"
 
+msgid "PO Translation Files"
+msgstr ""
+
+msgid "POT Translation Templates"
+msgstr ""
+
+msgid "All Translation Files"
+msgstr ""
+
 msgid "Merging differences..."
 msgstr "Συνένωση διαφορών..."
 
@@ -115,6 +124,83 @@ msgid "You must restart Poedit for this change to take effect."
 msgstr ""
 "Πρέπει να γίνει επανεκκίνηση του Poedit, ώστε αυτή η αλλαγή να έχει επίδραση."
 
+msgid "Downloading translations is disabled in this project."
+msgstr ""
+
+msgid "Not authorized, please sign in again."
+msgstr ""
+
+msgid "Sign in to Crowdin"
+msgstr ""
+
+msgid ""
+"Crowdin is an online localization management platform and collaborative "
+"translation tool. Poedit can seamlessly sync PO files managed at Crowdin."
+msgstr ""
+
+msgid "Sign In"
+msgstr ""
+
+msgid "Sign in"
+msgstr ""
+
+msgid "Sign Out"
+msgstr ""
+
+msgid "Sign out"
+msgstr ""
+
+msgid "Waiting for authentication…"
+msgstr ""
+
+msgid "Updating user information…"
+msgstr ""
+
+msgid "Signed in as:"
+msgstr ""
+
+msgid "Learn More About Crowdin"
+msgstr ""
+
+msgid "Learn more about Crowdin"
+msgstr ""
+
+msgid "Open Crowdin translation"
+msgstr ""
+
+msgid "Project:"
+msgstr ""
+
+msgid "Language:"
+msgstr "Γλώσσα:"
+
+msgid "File:"
+msgstr ""
+
+msgid "No translation projects listed in your Crowdin account."
+msgstr ""
+
+msgid "This project has no files that can be translated in Poedit."
+msgstr ""
+
+msgid "This file can only be edited in Crowdin’s web interface."
+msgstr ""
+
+msgid "Downloading latest translations…"
+msgstr ""
+
+msgid "Syncing with Crowdin"
+msgstr ""
+
+msgid "Syncing with Crowdin failed."
+msgstr ""
+
+msgid "Crowdin error"
+msgstr ""
+
+msgid "Uploading translations…"
+msgstr ""
+
 msgid "&Copy"
 msgstr ""
 
@@ -159,6 +245,12 @@ msgstr ""
 msgid "don't delete temporary files (for debugging)"
 msgstr "χωρίς διαγραφή των προσωρινών αρχείων (για αποσφαλμάτωση)"
 
+msgid "handle a poedit:// URI"
+msgstr ""
+
+msgid "Failed to communicate with Poedit process."
+msgstr ""
+
 #, c-format
 msgid "Unhandled exception occurred: %s"
 msgstr ""
@@ -169,12 +261,6 @@ msgstr ""
 msgid "Open catalog"
 msgstr "Άνοιγμα καταλόγου"
 
-msgid "All Files"
-msgstr ""
-
-msgid "PO Translation Files"
-msgstr ""
-
 #, c-format
 msgid "File '%s' doesn't exist."
 msgstr "Το αρχείο '%s' δεν υπάρχει."
@@ -405,6 +491,17 @@ msgstr "Πληθυντικός:"
 msgid "Translation:"
 msgstr "Μετάφραση:"
 
+msgid ""
+"POT files are only templates and don’t contain any translations themselves.\n"
+"To make a translation, create a new PO file based on the template."
+msgstr ""
+
+msgid "Create New Translation"
+msgstr ""
+
+msgid "Create new translation"
+msgstr "Δημιουργία νέας μετάφρασης"
+
 #. TRANSLATORS: %s is language name in its basic form (as you
 #. would see e.g. in a list of supported languages). You may need
 #. to rephrase it, e.g. to an equivalent of "for language %s".
@@ -452,9 +549,6 @@ msgstr ""
 msgid "Open catalog template"
 msgstr "Άνοιγμα προτύπου καταλόγου"
 
-msgid "POT Translation Templates"
-msgstr ""
-
 msgid "Updating catalog"
 msgstr "Ενημερώνεται ο κατάλογος"
 
@@ -530,18 +624,20 @@ msgstr[1] ""
 msgid "The translation is ready for use."
 msgstr "Η μετάφραση είναι έτοιμη προς χρήση."
 
-msgid "No references to this string found."
-msgstr "Καμία αναφορά στο στίχο που βρέθηκε."
-
-msgid "Please choose the reference you want to show:"
-msgstr "Παρακαλώ επιλέξτε την αναφορά που θέλετε να εμφανίσετε:"
-
-msgid "References"
-msgstr "Αναφορές"
-
 msgid "Context:"
 msgstr "Περιεχόμενα:"
 
+#, c-format
+msgid "Poedit automatically fixed invalid content in the file “%s”."
+msgstr ""
+
+msgid ""
+"The file contained duplicate items, which is not allowed in PO files and "
+"would prevent the file from being used. Poedit fixed the issue, but you "
+"should review translations of any items marked as fuzzy and correct them if "
+"necessary."
+msgstr ""
+
 msgid "Language of the translation isn't set."
 msgstr "δεν έχει οριστεί η γλώσσα της μετάφρασης."
 
@@ -551,6 +647,21 @@ msgstr ""
 msgid "Set language"
 msgstr "Ορισμός γλώσσας"
 
+#. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)."
+msgid ""
+"Suggestions are not available if the translation language is not set "
+"correctly. Other features, such as plural forms, may be affected as well."
+msgstr ""
+
+msgid "Language of the translation is the same as source language."
+msgstr ""
+
+msgid "Fix Language"
+msgstr ""
+
+msgid "Fix language"
+msgstr ""
+
 msgid ""
 "This catalog has entries with plural forms, but doesn't have Plural-Forms "
 "header configured."
@@ -587,6 +698,7 @@ msgstr ""
 "Οι μορφές πληθυντικού, οι οποίες χρησιμοποιούνται για τον κατάλογο, είναι "
 "ασυνήθιστες για το %s."
 
+#. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the catalog is unusual for %s.")"
 msgid "Review"
 msgstr "Επισκόπηση"
 
@@ -608,6 +720,12 @@ msgid_plural "%d errors"
 msgstr[0] ""
 msgstr[1] ""
 
+#, c-format
+msgid "%d entry"
+msgid_plural "%d entries"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid " (unsaved)"
 msgstr " (μη αποθηκευμένο)"
 
@@ -727,6 +845,9 @@ msgstr "Τα πάντα"
 msgid "Form %i"
 msgstr "Μορφή %i"
 
+msgid "Singular"
+msgstr ""
+
 msgid "Zero"
 msgstr "Μηδέν"
 
@@ -736,6 +857,9 @@ msgstr "Ένα"
 msgid "Two"
 msgstr "Δύο"
 
+msgid "Plural"
+msgstr ""
+
 msgid "Other"
 msgstr "Άλλο"
 
@@ -764,6 +888,12 @@ msgstr ""
 msgid "Show Sidebar"
 msgstr ""
 
+msgid "Hide Status Bar"
+msgstr ""
+
+msgid "Show Status Bar"
+msgstr ""
+
 msgid "Source text"
 msgstr "Πηγαίο κείμενο"
 
@@ -773,6 +903,10 @@ msgstr "Μετάφραση"
 msgid "ID"
 msgstr "Ταυτότητα"
 
+#, c-format
+msgid "Source text — %s"
+msgstr ""
+
 msgid "unknown language"
 msgstr "άγνωστη γλώσσα"
 
@@ -783,57 +917,73 @@ msgstr "Μετάφραση — %s"
 msgid "Error:"
 msgstr "Σφάλμα:"
 
-msgid "Project info"
-msgstr "Πληροφορίες εργασίας"
+msgid "Source file"
+msgstr "Αρχείο πηγαίου κώδικα"
 
-msgid "Project name and version:"
-msgstr "Όνομα εργασίας και έκδοση:"
+msgid "Source file occurrence:"
+msgstr "Συνύπαρξη πηγαίου αρχείου:"
 
-msgid "Language:"
-msgstr "Γλώσσα:"
+msgid "Open in Editor"
+msgstr ""
 
-msgid "Team:"
-msgstr "Ομάδα:"
+msgid "Open in editor"
+msgstr ""
 
-msgid "Team's email address:"
-msgstr "Ηλεκτρονική διεύθυνση ομάδας:"
+msgid "No references for the selected item."
+msgstr ""
 
-msgid "Charset:"
-msgstr "Σύνολο Χαρακτήρων:"
+#, c-format
+msgid "Error opening file %s!"
+msgstr "Σφάλμα ανοίγματος αρχείου %s!"
 
-msgid "Source"
-msgstr "Πηγή"
+msgid "Find"
+msgstr "Εύρεση"
 
-msgid "Notes"
-msgstr "Σημειώσεις"
+msgid "Replace"
+msgstr ""
 
-msgid "Automatic translation"
-msgstr "Αυτόματη μετάφραση"
+#. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.)
+msgid "Options"
+msgstr ""
 
-msgid "Fuzzy translation"
-msgstr "Ασαφής μετάφραση"
+msgid "Ignore case"
+msgstr ""
 
-msgid "Notes for translators:"
-msgstr "Σημειώσεις για τους Μεταφραστές:"
+msgid "Wrap around"
+msgstr ""
 
-msgid "Comment:"
-msgstr "Σχόλιο:"
+msgid "Whole words only"
+msgstr "Πλήρης λέξεις μόνο"
 
-msgid "Source file"
-msgstr "Αρχείο πηγαίου κώδικα"
+msgid "Find in source texts"
+msgstr ""
 
-msgid "Source file occurrence:"
-msgstr "Συνύπαρξη πηγαίου αρχείου:"
+msgid "Find in translations"
+msgstr ""
 
-msgid "Open in Editor"
+msgid "Find in comments"
+msgstr "Ανεύρεση στα σχόλια"
+
+msgid "Close"
+msgstr "Κλείσιμο"
+
+msgid "Replace All"
 msgstr ""
 
-msgid "Open in editor"
+msgid "Replace all"
 msgstr ""
 
-#, c-format
-msgid "Error opening file %s!"
-msgstr "Σφάλμα ανοίγματος αρχείου %s!"
+msgid "< &Previous"
+msgstr "< &Προηγούμενο"
+
+msgid "&Next >"
+msgstr "&Επόμενο >"
+
+msgid "String to find"
+msgstr ""
+
+msgid "Replacement string"
+msgstr ""
 
 #, c-format
 msgid "Cannot execute program: %s"
@@ -1027,9 +1177,19 @@ msgstr "Νέο"
 msgid "Edit"
 msgstr "Επεξεργασία"
 
+msgid "Delete extractor"
+msgstr ""
+
+#, c-format
+msgid "Are you sure you want to delete the “%s” extractor?"
+msgstr ""
+
 msgid "Extractors"
 msgstr ""
 
+msgid "Accounts"
+msgstr ""
+
 msgid "Automatically check for updates"
 msgstr ""
 
@@ -1068,8 +1228,35 @@ msgstr ""
 msgid "Advanced"
 msgstr ""
 
-msgid "Additional keywords"
-msgstr "Επιπρόσθετες λέξεις-κλειδιά"
+msgid ""
+"<big>Drag and Drop Folders Here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+
+msgid ""
+"<big>Drag and drop folders here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+
+msgid "Add Folders..."
+msgstr ""
+
+msgid "Add folders..."
+msgstr ""
+
+msgid "Add Files..."
+msgstr ""
+
+msgid "Add files..."
+msgstr ""
+
+msgid "Add Wildcard..."
+msgstr ""
+
+msgid "Add wildcard..."
+msgstr ""
 
 msgid "Paths"
 msgstr "Διαδρομές"
@@ -1077,6 +1264,9 @@ msgstr "Διαδρομές"
 msgid "Excluded paths"
 msgstr ""
 
+msgid "Additional keywords"
+msgstr "Επιπρόσθετες λέξεις-κλειδιά"
+
 msgid "Name of the project the translation is for"
 msgstr "Το όνομα της εργασίας για την οποία είναι η μετάφραση"
 
@@ -1091,6 +1281,9 @@ msgstr ""
 "Παρακαλώ αποθήκευσε αυτό το αρχείο, πρώτα, ώστε να μπορεί να γίνει, μετά, "
 "επεξεργασία αυτού του τμήματος."
 
+msgid "Comment:"
+msgstr "Σχόλιο:"
+
 msgid "OK"
 msgstr "Εντάξει"
 
@@ -1100,42 +1293,6 @@ msgstr "&Καθαρισμός"
 msgid "Clear the comment"
 msgstr "Καθαρισμός σχολίου"
 
-msgid "Find..."
-msgstr "Εύρεση..."
-
-msgid "String to find:"
-msgstr "Στίχοι προς εύρεση:"
-
-msgid "Case sensitive"
-msgstr "Ταίριασμα πεζών-κεφαλαίων"
-
-msgid "Start from the first item"
-msgstr "Ξεκίνημα από το πρώτο αντικείμενο"
-
-msgid "Whole words only"
-msgstr "Πλήρης λέξεις μόνο"
-
-msgid "Find in original strings"
-msgstr "Εύρεση στους αρχικούς στίχους"
-
-msgid "Find in translations"
-msgstr ""
-
-msgid "Find in comments"
-msgstr "Ανεύρεση στα σχόλια"
-
-msgid "Find in automatic comments"
-msgstr "Ανεύρεση στα αυτόματα σχόλια"
-
-msgid "Close"
-msgstr "Κλείσιμο"
-
-msgid "< &Previous"
-msgstr "< &Προηγούμενο"
-
-msgid "&Next >"
-msgstr "&Επόμενο >"
-
 msgid "Create new translations project"
 msgstr "Δημιουργία νέας εργασίας μετάφρασης"
 
@@ -1190,6 +1347,12 @@ msgstr "&Άνοιγμα..."
 msgid "Open Recent"
 msgstr ""
 
+msgid "Open from Crowdin..."
+msgstr ""
+
+msgid "Open From Crowdin..."
+msgstr ""
+
 msgid "&Save"
 msgstr "&Αποθήκευση"
 
@@ -1238,14 +1401,17 @@ msgstr "&Εμφάνιση των Αναφορών"
 msgid "&Find..."
 msgstr "&Εύρεση..."
 
+msgid "Replace..."
+msgstr ""
+
 msgid "Find next"
 msgstr "Εύρεση επόμενου"
 
 msgid "Find previous"
 msgstr "Εύρεση προηγούμενου"
 
-msgid "Find"
-msgstr "Εύρεση"
+msgid "Find and Replace..."
+msgstr ""
 
 msgid "Find Next"
 msgstr "Εύρεση Επόμενου"
@@ -1286,6 +1452,12 @@ msgstr ""
 msgid "&Group By Context"
 msgstr ""
 
+msgid "Entries with errors first"
+msgstr ""
+
+msgid "Entries with Errors First"
+msgstr ""
+
 msgid "&Untranslated entries first"
 msgstr "Πρώτα οι &αμετάφραστες καταχωρήσεις"
 
@@ -1295,6 +1467,9 @@ msgstr "Πρώτα οι &Αμετάφραστες Καταχωρήσεις"
 msgid "Show sidebar"
 msgstr ""
 
+msgid "Show status bar"
+msgstr ""
+
 msgid "C&atalog"
 msgstr "Κ&ατάλογος"
 
@@ -1310,6 +1485,9 @@ msgstr "Ενημέρωση από το αρχείο &POT..."
 msgid "Update from &POT File..."
 msgstr "Ενημέρωση από το Αρχείο &POT..."
 
+msgid "Sync with Crowdin"
+msgstr ""
+
 msgid "Fill missing translations from &TM..."
 msgstr ""
 
@@ -1434,6 +1612,9 @@ msgstr ""
 msgid "Catalog properties"
 msgstr "Ιδιότητες καταλόγου"
 
+msgid "Project name and version:"
+msgstr "Όνομα εργασίας και έκδοση:"
+
 msgid "Plural Forms:"
 msgstr "Μορφές Πληθυντικού:"
 
@@ -1446,17 +1627,29 @@ msgstr "Χρήση προσαρμοσμένων εκφράσεων"
 msgid "Learn about plural forms"
 msgstr "Πληροφορίες για τις Μορφές Πληθυντικού"
 
+msgid "Charset:"
+msgstr "Σύνολο Χαρακτήρων:"
+
+msgid "Team:"
+msgstr "Ομάδα:"
+
+msgid "Team's email address:"
+msgstr "Ηλεκτρονική διεύθυνση ομάδας:"
+
 msgid "Translation properties"
 msgstr ""
 
+msgid "Sources paths"
+msgstr "Διαδρομές των πηγών"
+
 msgid "Extract text from source files in the following directories:"
 msgstr "Εξαγωγή του κειμένου από τα πηγαία αρχεία στους ακόλουθους φακέλους:"
 
 msgid "Base path:"
 msgstr "Διαδρομή βάσης:"
 
-msgid "Sources paths"
-msgstr "Διαδρομές των πηγών"
+msgid "Sources keywords"
+msgstr "Λέξεις-κλειδιά των πηγών"
 
 msgid ""
 "Use these keywords (function names) to recognize translatable strings\n"
@@ -1469,9 +1662,6 @@ msgstr ""
 msgid "Learn about gettext keywords"
 msgstr "Εκμάθηση από λέξεις-κλειδιά του γκέττεξτ"
 
-msgid "Sources keywords"
-msgstr "Λέξεις-κλειδιά των πηγών"
-
 msgid "Update summary"
 msgstr "Περίληψη ενημέρωσης"
 
@@ -1519,7 +1709,7 @@ msgstr "Ενημέρωση καταλόγου - συγχρονισμός με τ
 msgid "Toggled if selected string has fuzzy translation"
 msgstr "Ενεργοποιημένο αν ο επιλεγμένος στίχος έχει ασαφή μετάφραση"
 
-msgid "Show or hide the sidebar."
+msgid "Show or hide the sidebar"
 msgstr ""
 
 #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer.
@@ -1531,6 +1721,9 @@ msgid ""
 "translation corresponds to."
 msgstr ""
 
+msgid "Notes for translators:"
+msgstr "Σημειώσεις για τους Μεταφραστές:"
+
 msgid "Add comment"
 msgstr ""
 
@@ -1608,9 +1801,6 @@ msgstr "Επεξεργασία μιας μετάφρασης"
 msgid "Open an existing PO file and edit the translation."
 msgstr "Άνοιγμα ενός υπάρχοντος αρχείου .PO, και επεξεργασία της μετάφρασης. "
 
-msgid "Create new translation"
-msgstr "Δημιουργία νέας μετάφρασης"
-
 msgid ""
 "Take an existing PO file or POT template and create a new translation from "
 "it."
@@ -1618,6 +1808,16 @@ msgstr ""
 "Χρησιμοποίησε ένα υπάρχον αρχείο .PO, ή ένα πρότυπο .POT, και δημιούργησε "
 "μία νέα μετάφραση."
 
+msgid "Collaborate on a translation with Crowdin"
+msgstr ""
+
+msgid ""
+"Download a file from Crowdin project, translate and sync your changes back."
+msgstr ""
+
+msgid "What is Crowdin?"
+msgstr ""
+
 msgid "There are no translations. That’s unusual."
 msgstr "Δεν υπάρχουν μεταφράσεις. Αυτό είναι ασυνήθιστο."
 
@@ -1659,3 +1859,9 @@ msgstr "Εξαγωγή από τις πηγές"
 
 msgid "Configure source code extraction in Properties."
 msgstr "Ρύθμισε την εξαγωγή του πηγαίου κώδικα στις Ιδιότητες."
+
+msgid "Sync"
+msgstr ""
+
+msgid "Synchronize the translation with Crowdin"
+msgstr ""
diff --git a/locales/en_GB.mo b/locales/en_GB.mo
index 4eea74a..9b38bc7 100644
Binary files a/locales/en_GB.mo and b/locales/en_GB.mo differ
diff --git a/locales/en_GB.po b/locales/en_GB.po
index 1d585c4..4744db5 100644
--- a/locales/en_GB.po
+++ b/locales/en_GB.po
@@ -2,8 +2,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: poedit\n"
 "Report-Msgid-Bugs-To: help at poedit.net\n"
-"POT-Creation-Date: 2015-01-10 16:00+0100\n"
-"PO-Revision-Date: 2015-03-10 12:33-0400\n"
+"POT-Creation-Date: 2015-05-27 11:31+0200\n"
+"PO-Revision-Date: 2015-05-27 05:18-0400\n"
 "Last-Translator: vslavik <vaclav at slavik.io>\n"
 "Language-Team: English, United Kingdom\n"
 "Language: en_GB\n"
@@ -90,6 +90,15 @@ msgstr ""
 msgid "Error saving catalog"
 msgstr "Error saving catalogue"
 
+msgid "PO Translation Files"
+msgstr "PO Translation Files"
+
+msgid "POT Translation Templates"
+msgstr "POT Translation Templates"
+
+msgid "All Translation Files"
+msgstr "All Translation Files"
+
 msgid "Merging differences..."
 msgstr "Merging differences..."
 
@@ -109,6 +118,85 @@ msgstr "Language selection"
 msgid "You must restart Poedit for this change to take effect."
 msgstr "You must restart Poedit for this change to take effect."
 
+msgid "Downloading translations is disabled in this project."
+msgstr "Downloading translations is disabled in this project."
+
+msgid "Not authorized, please sign in again."
+msgstr "Not authorised, please sign in again."
+
+msgid "Sign in to Crowdin"
+msgstr "Sign in to Crowdin"
+
+msgid ""
+"Crowdin is an online localization management platform and collaborative "
+"translation tool. Poedit can seamlessly sync PO files managed at Crowdin."
+msgstr ""
+"Crowdin is an online localisation management platform and collaborative "
+"translation tool. Poedit can seamlessly sync PO files managed at Crowdin."
+
+msgid "Sign In"
+msgstr "Sign In"
+
+msgid "Sign in"
+msgstr "Sign in"
+
+msgid "Sign Out"
+msgstr "Sign Out"
+
+msgid "Sign out"
+msgstr "Sign out"
+
+msgid "Waiting for authentication…"
+msgstr "Waiting for authentication…"
+
+msgid "Updating user information…"
+msgstr "Updating user information…"
+
+msgid "Signed in as:"
+msgstr "Signed in as:"
+
+msgid "Learn More About Crowdin"
+msgstr "Learn More About Crowdin"
+
+msgid "Learn more about Crowdin"
+msgstr "Learn more about Crowdin"
+
+msgid "Open Crowdin translation"
+msgstr "Open Crowdin translation"
+
+msgid "Project:"
+msgstr "Project:"
+
+msgid "Language:"
+msgstr "Language:"
+
+msgid "File:"
+msgstr "File:"
+
+msgid "No translation projects listed in your Crowdin account."
+msgstr "No translation projects listed in your Crowdin account."
+
+msgid "This project has no files that can be translated in Poedit."
+msgstr "This project has no files that can be translated in Poedit."
+
+msgid "This file can only be edited in Crowdin’s web interface."
+msgstr "This file can only be edited in Crowdin’s web interface."
+
+msgid "Downloading latest translations…"
+msgstr "Downloading latest translations…"
+
+msgid "Syncing with Crowdin"
+msgstr "Syncing with Crowdin"
+
+msgid "Syncing with Crowdin failed."
+msgstr "Syncing with Crowdin failed."
+
+msgid "Crowdin error"
+msgstr "Crowdin error"
+
+msgid "Uploading translations…"
+msgstr "Uploading translations…"
+
 msgid "&Copy"
 msgstr "&Copy"
 
@@ -155,6 +243,12 @@ msgstr ""
 msgid "don't delete temporary files (for debugging)"
 msgstr "don't delete temporary files (for debugging)"
 
+msgid "handle a poedit:// URI"
+msgstr "handle a poedit:// URI"
+
+msgid "Failed to communicate with Poedit process."
+msgstr ""
+
 #, c-format
 msgid "Unhandled exception occurred: %s"
 msgstr "Unhandled exception occurred: %s"
@@ -165,12 +259,6 @@ msgstr "Unhandled exception occurred."
 msgid "Open catalog"
 msgstr "Open catalogue"
 
-msgid "All Files"
-msgstr "All Files"
-
-msgid "PO Translation Files"
-msgstr "PO Translation Files"
-
 #, c-format
 msgid "File '%s' doesn't exist."
 msgstr "File '%s' doesn't exist."
@@ -399,6 +487,19 @@ msgstr "Plural:"
 msgid "Translation:"
 msgstr "Translation:"
 
+msgid ""
+"POT files are only templates and don’t contain any translations themselves.\n"
+"To make a translation, create a new PO file based on the template."
+msgstr ""
+"POT files are only templates and don’t contain any translations themselves.\n"
+"To make a translation, create a new PO file based on the template."
+
+msgid "Create New Translation"
+msgstr "Create New Translation"
+
+msgid "Create new translation"
+msgstr "Create new translation"
+
 #. TRANSLATORS: %s is language name in its basic form (as you
 #. would see e.g. in a list of supported languages). You may need
 #. to rephrase it, e.g. to an equivalent of "for language %s".
@@ -447,9 +548,6 @@ msgstr "HTML Files"
 msgid "Open catalog template"
 msgstr "Open catalogue template"
 
-msgid "POT Translation Templates"
-msgstr "POT Translation Templates"
-
 msgid "Updating catalog"
 msgstr "Updating catalogue"
 
@@ -530,18 +628,20 @@ msgstr[1] ""
 msgid "The translation is ready for use."
 msgstr "The translation is ready for use."
 
-msgid "No references to this string found."
-msgstr "No references to this string found."
-
-msgid "Please choose the reference you want to show:"
-msgstr "Please choose the reference you want to show:"
-
-msgid "References"
-msgstr "References"
-
 msgid "Context:"
 msgstr "Context:"
 
+#, c-format
+msgid "Poedit automatically fixed invalid content in the file “%s”."
+msgstr ""
+
+msgid ""
+"The file contained duplicate items, which is not allowed in PO files and "
+"would prevent the file from being used. Poedit fixed the issue, but you "
+"should review translations of any items marked as fuzzy and correct them if "
+"necessary."
+msgstr ""
+
 msgid "Language of the translation isn't set."
 msgstr "Language of the translation isn't set."
 
@@ -551,6 +651,23 @@ msgstr "Set Language"
 msgid "Set language"
 msgstr "Set language"
 
+#. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)."
+msgid ""
+"Suggestions are not available if the translation language is not set "
+"correctly. Other features, such as plural forms, may be affected as well."
+msgstr ""
+"Suggestions are not available if the translation language is not set "
+"correctly. Other features, such as plural forms, may be affected as well."
+
+msgid "Language of the translation is the same as source language."
+msgstr "Language of the translation is the same as source language."
+
+msgid "Fix Language"
+msgstr "Fix Language"
+
+msgid "Fix language"
+msgstr "Fix language"
+
 msgid ""
 "This catalog has entries with plural forms, but doesn't have Plural-Forms "
 "header configured."
@@ -585,6 +702,7 @@ msgstr "Fix the header"
 msgid "Plural forms expression used by the catalog is unusual for %s."
 msgstr "Plural forms expression used by the catalogue is unusual for %s."
 
+#. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the catalog is unusual for %s.")"
 msgid "Review"
 msgstr "Review"
 
@@ -606,6 +724,12 @@ msgid_plural "%d errors"
 msgstr[0] "%d error"
 msgstr[1] "%d errors"
 
+#, c-format
+msgid "%d entry"
+msgid_plural "%d entries"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid " (unsaved)"
 msgstr " (unsaved)"
 
@@ -731,6 +855,9 @@ msgstr "Everything"
 msgid "Form %i"
 msgstr "Form %i"
 
+msgid "Singular"
+msgstr "Singular"
+
 msgid "Zero"
 msgstr "Zero"
 
@@ -740,6 +867,9 @@ msgstr "One"
 msgid "Two"
 msgstr "Two"
 
+msgid "Plural"
+msgstr "Plural"
+
 msgid "Other"
 msgstr "Other"
 
@@ -768,6 +898,12 @@ msgstr "Hide Sidebar"
 msgid "Show Sidebar"
 msgstr "Show Sidebar"
 
+msgid "Hide Status Bar"
+msgstr ""
+
+msgid "Show Status Bar"
+msgstr ""
+
 msgid "Source text"
 msgstr "Source text"
 
@@ -777,6 +913,10 @@ msgstr "Translation"
 msgid "ID"
 msgstr "ID"
 
+#, c-format
+msgid "Source text — %s"
+msgstr "Source text — %s"
+
 msgid "unknown language"
 msgstr "unknown language"
 
@@ -787,57 +927,73 @@ msgstr "Translation — %s"
 msgid "Error:"
 msgstr "Error:"
 
-msgid "Project info"
-msgstr "Project info"
+msgid "Source file"
+msgstr "Source file"
 
-msgid "Project name and version:"
-msgstr "Project name and version:"
+msgid "Source file occurrence:"
+msgstr "Source file occurrence:"
 
-msgid "Language:"
-msgstr "Language:"
+msgid "Open in Editor"
+msgstr "Open in Editor"
 
-msgid "Team:"
-msgstr "Team:"
+msgid "Open in editor"
+msgstr "Open in editor"
 
-msgid "Team's email address:"
-msgstr "Team's e-mail address:"
+msgid "No references for the selected item."
+msgstr "No references for the selected item."
 
-msgid "Charset:"
-msgstr "Charset:"
+#, c-format
+msgid "Error opening file %s!"
+msgstr "Error opening file %s!"
 
-msgid "Source"
-msgstr "Source"
+msgid "Find"
+msgstr "Find"
 
-msgid "Notes"
-msgstr "Notes"
+msgid "Replace"
+msgstr "Replace"
 
-msgid "Automatic translation"
-msgstr "Automatic translation"
+#. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.)
+msgid "Options"
+msgstr "Options"
 
-msgid "Fuzzy translation"
-msgstr "Fuzzy translation"
+msgid "Ignore case"
+msgstr "Ignore case"
 
-msgid "Notes for translators:"
-msgstr "Notes for translators:"
+msgid "Wrap around"
+msgstr "Wrap around"
 
-msgid "Comment:"
-msgstr "Comment:"
+msgid "Whole words only"
+msgstr "Whole words only"
 
-msgid "Source file"
-msgstr "Source file"
+msgid "Find in source texts"
+msgstr "Find in source texts"
 
-msgid "Source file occurrence:"
-msgstr "Source file occurrence:"
+msgid "Find in translations"
+msgstr "Find in translations"
 
-msgid "Open in Editor"
-msgstr "Open in Editor"
+msgid "Find in comments"
+msgstr "Find in comments"
 
-msgid "Open in editor"
-msgstr "Open in editor"
+msgid "Close"
+msgstr "Close"
 
-#, c-format
-msgid "Error opening file %s!"
-msgstr "Error opening file %s!"
+msgid "Replace All"
+msgstr "Replace All"
+
+msgid "Replace all"
+msgstr "Replace all"
+
+msgid "< &Previous"
+msgstr "< &Previous"
+
+msgid "&Next >"
+msgstr "&Next >"
+
+msgid "String to find"
+msgstr "String to find"
+
+msgid "Replacement string"
+msgstr "Replacement string"
 
 #, c-format
 msgid "Cannot execute program: %s"
@@ -1040,9 +1196,19 @@ msgstr "New"
 msgid "Edit"
 msgstr "Edit"
 
+msgid "Delete extractor"
+msgstr "Delete extractor"
+
+#, c-format
+msgid "Are you sure you want to delete the “%s” extractor?"
+msgstr "Are you sure you want to delete the “%s” extractor?"
+
 msgid "Extractors"
 msgstr "Extractors"
 
+msgid "Accounts"
+msgstr "Accounts"
+
 msgid "Automatically check for updates"
 msgstr "Automatically check for updates"
 
@@ -1085,8 +1251,35 @@ msgstr "Preserve formatting of existing files"
 msgid "Advanced"
 msgstr "Advanced"
 
-msgid "Additional keywords"
-msgstr "Additional keywords"
+msgid ""
+"<big>Drag and Drop Folders Here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+
+msgid ""
+"<big>Drag and drop folders here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+
+msgid "Add Folders..."
+msgstr ""
+
+msgid "Add folders..."
+msgstr ""
+
+msgid "Add Files..."
+msgstr ""
+
+msgid "Add files..."
+msgstr ""
+
+msgid "Add Wildcard..."
+msgstr ""
+
+msgid "Add wildcard..."
+msgstr ""
 
 msgid "Paths"
 msgstr "Paths"
@@ -1094,6 +1287,9 @@ msgstr "Paths"
 msgid "Excluded paths"
 msgstr "Excluded paths"
 
+msgid "Additional keywords"
+msgstr "Additional keywords"
+
 msgid "Name of the project the translation is for"
 msgstr "Name of the project the translation is for"
 
@@ -1106,6 +1302,9 @@ msgstr "UTF-8 (recommended)"
 msgid "Please save the file first. This section cannot be edited until then."
 msgstr "Please save the file first. This section cannot be edited until then."
 
+msgid "Comment:"
+msgstr "Comment:"
+
 msgid "OK"
 msgstr "OK"
 
@@ -1115,42 +1314,6 @@ msgstr "C&lear"
 msgid "Clear the comment"
 msgstr "Clear the comment"
 
-msgid "Find..."
-msgstr "Find..."
-
-msgid "String to find:"
-msgstr "String to find:"
-
-msgid "Case sensitive"
-msgstr "Case sensitive"
-
-msgid "Start from the first item"
-msgstr "Start from the first item"
-
-msgid "Whole words only"
-msgstr "Whole words only"
-
-msgid "Find in original strings"
-msgstr "Find in original strings"
-
-msgid "Find in translations"
-msgstr "Find in translations"
-
-msgid "Find in comments"
-msgstr "Find in comments"
-
-msgid "Find in automatic comments"
-msgstr "Find in automatic comments"
-
-msgid "Close"
-msgstr "Close"
-
-msgid "< &Previous"
-msgstr "< &Previous"
-
-msgid "&Next >"
-msgstr "&Next >"
-
 msgid "Create new translations project"
 msgstr "Create new translations project"
 
@@ -1205,6 +1368,12 @@ msgstr "&Open..."
 msgid "Open Recent"
 msgstr "Open Recent"
 
+msgid "Open from Crowdin..."
+msgstr "Open from Crowdin..."
+
+msgid "Open From Crowdin..."
+msgstr "Open From Crowdin..."
+
 msgid "&Save"
 msgstr "&Save"
 
@@ -1253,14 +1422,17 @@ msgstr "&Show References"
 msgid "&Find..."
 msgstr "&Find..."
 
+msgid "Replace..."
+msgstr "Replace..."
+
 msgid "Find next"
 msgstr "Find next"
 
 msgid "Find previous"
 msgstr "Find previous"
 
-msgid "Find"
-msgstr "Find"
+msgid "Find and Replace..."
+msgstr "Find and Replace..."
 
 msgid "Find Next"
 msgstr "Find Next"
@@ -1301,6 +1473,12 @@ msgstr "&Group by context"
 msgid "&Group By Context"
 msgstr "&Group By Context"
 
+msgid "Entries with errors first"
+msgstr "Entries with errors first"
+
+msgid "Entries with Errors First"
+msgstr "Entries with Errors First"
+
 msgid "&Untranslated entries first"
 msgstr "&Untranslated entries first"
 
@@ -1310,6 +1488,9 @@ msgstr "&Untranslated Entries First"
 msgid "Show sidebar"
 msgstr "Show sidebar"
 
+msgid "Show status bar"
+msgstr ""
+
 msgid "C&atalog"
 msgstr "C&atalogue"
 
@@ -1325,6 +1506,9 @@ msgstr "Update from &POT file..."
 msgid "Update from &POT File..."
 msgstr "Update from &POT File..."
 
+msgid "Sync with Crowdin"
+msgstr "Sync with Crowdin"
+
 msgid "Fill missing translations from &TM..."
 msgstr "Fill missing translations from &TM..."
 
@@ -1452,6 +1636,9 @@ msgstr ""
 msgid "Catalog properties"
 msgstr "Catalogue properties"
 
+msgid "Project name and version:"
+msgstr "Project name and version:"
+
 msgid "Plural Forms:"
 msgstr "Plural Forms:"
 
@@ -1464,17 +1651,29 @@ msgstr "Use custom expression"
 msgid "Learn about plural forms"
 msgstr "Learn about plural forms"
 
+msgid "Charset:"
+msgstr "Charset:"
+
+msgid "Team:"
+msgstr "Team:"
+
+msgid "Team's email address:"
+msgstr "Team's e-mail address:"
+
 msgid "Translation properties"
 msgstr "Translation properties"
 
+msgid "Sources paths"
+msgstr "Sources paths"
+
 msgid "Extract text from source files in the following directories:"
 msgstr "Extract text from source files in the following directories:"
 
 msgid "Base path:"
 msgstr "Base path:"
 
-msgid "Sources paths"
-msgstr "Sources paths"
+msgid "Sources keywords"
+msgstr "Sources keywords"
 
 msgid ""
 "Use these keywords (function names) to recognize translatable strings\n"
@@ -1486,9 +1685,6 @@ msgstr ""
 msgid "Learn about gettext keywords"
 msgstr "Learn about gettext keywords"
 
-msgid "Sources keywords"
-msgstr "Sources keywords"
-
 msgid "Update summary"
 msgstr "Update summary"
 
@@ -1536,8 +1732,8 @@ msgstr "Update catalogue - synchronise it with sources"
 msgid "Toggled if selected string has fuzzy translation"
 msgstr "Toggled if selected string has fuzzy translation"
 
-msgid "Show or hide the sidebar."
-msgstr "Show or hide the sidebar."
+msgid "Show or hide the sidebar"
+msgstr "Show or hide the sidebar"
 
 #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer.
 msgid "Previous source text:"
@@ -1550,6 +1746,9 @@ msgstr ""
 "The old source text (before it changed during an update) that the fuzzy "
 "translation corresponds to."
 
+msgid "Notes for translators:"
+msgstr "Notes for translators:"
+
 msgid "Add comment"
 msgstr "Add comment"
 
@@ -1628,9 +1827,6 @@ msgstr "Edit a translation"
 msgid "Open an existing PO file and edit the translation."
 msgstr "Open an existing PO file and edit the translation."
 
-msgid "Create new translation"
-msgstr "Create new translation"
-
 msgid ""
 "Take an existing PO file or POT template and create a new translation from "
 "it."
@@ -1638,6 +1834,17 @@ msgstr ""
 "Take an existing PO file or POT template and create a new translation from "
 "it."
 
+msgid "Collaborate on a translation with Crowdin"
+msgstr "Collaborate on a translation with Crowdin"
+
+msgid ""
+"Download a file from Crowdin project, translate and sync your changes back."
+msgstr ""
+"Download a file from Crowdin project, translate and sync your changes back."
+
+msgid "What is Crowdin?"
+msgstr "What is Crowdin?"
+
 msgid "There are no translations. That’s unusual."
 msgstr "There are no translations. That’s unusual."
 
@@ -1676,3 +1883,9 @@ msgstr "Extract from sources"
 
 msgid "Configure source code extraction in Properties."
 msgstr "Configure source code extraction in Properties."
+
+msgid "Sync"
+msgstr "Sync"
+
+msgid "Synchronize the translation with Crowdin"
+msgstr "Synchronise the translation with Crowdin"
diff --git a/locales/eo.mo b/locales/eo.mo
index cb7519b..ccb4642 100644
Binary files a/locales/eo.mo and b/locales/eo.mo differ
diff --git a/locales/eo.po b/locales/eo.po
index d8a0649..5bd5510 100644
--- a/locales/eo.po
+++ b/locales/eo.po
@@ -2,8 +2,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: poedit\n"
 "Report-Msgid-Bugs-To: help at poedit.net\n"
-"POT-Creation-Date: 2015-01-10 16:00+0100\n"
-"PO-Revision-Date: 2015-03-10 12:33-0400\n"
+"POT-Creation-Date: 2015-05-27 11:31+0200\n"
+"PO-Revision-Date: 2015-05-27 05:18-0400\n"
 "Last-Translator: vslavik <vaclav at slavik.io>\n"
 "Language-Team: Esperanto\n"
 "Language: eo_UY\n"
@@ -85,6 +85,15 @@ msgstr ""
 msgid "Error saving catalog"
 msgstr "Eraro dum konservado de katalogo"
 
+msgid "PO Translation Files"
+msgstr ""
+
+msgid "POT Translation Templates"
+msgstr ""
+
+msgid "All Translation Files"
+msgstr ""
+
 msgid "Merging differences..."
 msgstr "Daŭras kunfandado de malsamaĵoj..."
 
@@ -104,6 +113,83 @@ msgstr "Lingvoelekto"
 msgid "You must restart Poedit for this change to take effect."
 msgstr "Vi devas relanĉi Poedit-on por efektivigi tiun ŝanĝon."
 
+msgid "Downloading translations is disabled in this project."
+msgstr ""
+
+msgid "Not authorized, please sign in again."
+msgstr ""
+
+msgid "Sign in to Crowdin"
+msgstr ""
+
+msgid ""
+"Crowdin is an online localization management platform and collaborative "
+"translation tool. Poedit can seamlessly sync PO files managed at Crowdin."
+msgstr ""
+
+msgid "Sign In"
+msgstr ""
+
+msgid "Sign in"
+msgstr ""
+
+msgid "Sign Out"
+msgstr ""
+
+msgid "Sign out"
+msgstr ""
+
+msgid "Waiting for authentication…"
+msgstr ""
+
+msgid "Updating user information…"
+msgstr ""
+
+msgid "Signed in as:"
+msgstr ""
+
+msgid "Learn More About Crowdin"
+msgstr ""
+
+msgid "Learn more about Crowdin"
+msgstr ""
+
+msgid "Open Crowdin translation"
+msgstr ""
+
+msgid "Project:"
+msgstr ""
+
+msgid "Language:"
+msgstr "Lingvo:"
+
+msgid "File:"
+msgstr ""
+
+msgid "No translation projects listed in your Crowdin account."
+msgstr ""
+
+msgid "This project has no files that can be translated in Poedit."
+msgstr ""
+
+msgid "This file can only be edited in Crowdin’s web interface."
+msgstr ""
+
+msgid "Downloading latest translations…"
+msgstr ""
+
+msgid "Syncing with Crowdin"
+msgstr ""
+
+msgid "Syncing with Crowdin failed."
+msgstr ""
+
+msgid "Crowdin error"
+msgstr ""
+
+msgid "Uploading translations…"
+msgstr ""
+
 msgid "&Copy"
 msgstr ""
 
@@ -148,6 +234,12 @@ msgstr ""
 msgid "don't delete temporary files (for debugging)"
 msgstr ""
 
+msgid "handle a poedit:// URI"
+msgstr ""
+
+msgid "Failed to communicate with Poedit process."
+msgstr ""
+
 #, c-format
 msgid "Unhandled exception occurred: %s"
 msgstr ""
@@ -158,12 +250,6 @@ msgstr ""
 msgid "Open catalog"
 msgstr "Malfermi katalogon"
 
-msgid "All Files"
-msgstr ""
-
-msgid "PO Translation Files"
-msgstr ""
-
 #, c-format
 msgid "File '%s' doesn't exist."
 msgstr "Dosiero '%s' ne ekzistas."
@@ -391,6 +477,17 @@ msgstr "Pluralo:"
 msgid "Translation:"
 msgstr "Traduko:"
 
+msgid ""
+"POT files are only templates and don’t contain any translations themselves.\n"
+"To make a translation, create a new PO file based on the template."
+msgstr ""
+
+msgid "Create New Translation"
+msgstr ""
+
+msgid "Create new translation"
+msgstr ""
+
 #. TRANSLATORS: %s is language name in its basic form (as you
 #. would see e.g. in a list of supported languages). You may need
 #. to rephrase it, e.g. to an equivalent of "for language %s".
@@ -438,9 +535,6 @@ msgstr ""
 msgid "Open catalog template"
 msgstr "Malfermi katalogan ŝablonon"
 
-msgid "POT Translation Templates"
-msgstr ""
-
 msgid "Updating catalog"
 msgstr ""
 
@@ -509,18 +603,20 @@ msgstr[1] ""
 msgid "The translation is ready for use."
 msgstr ""
 
-msgid "No references to this string found."
-msgstr "Neniuj referencoj al tiu ĉeno trovitaj."
-
-msgid "Please choose the reference you want to show:"
-msgstr "Bv elekti la referencon, kiun vi volas vidigi:"
-
-msgid "References"
-msgstr "Referencoj"
-
 msgid "Context:"
 msgstr "Kunteksto:"
 
+#, c-format
+msgid "Poedit automatically fixed invalid content in the file “%s”."
+msgstr ""
+
+msgid ""
+"The file contained duplicate items, which is not allowed in PO files and "
+"would prevent the file from being used. Poedit fixed the issue, but you "
+"should review translations of any items marked as fuzzy and correct them if "
+"necessary."
+msgstr ""
+
 msgid "Language of the translation isn't set."
 msgstr ""
 
@@ -530,6 +626,21 @@ msgstr ""
 msgid "Set language"
 msgstr ""
 
+#. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)."
+msgid ""
+"Suggestions are not available if the translation language is not set "
+"correctly. Other features, such as plural forms, may be affected as well."
+msgstr ""
+
+msgid "Language of the translation is the same as source language."
+msgstr ""
+
+msgid "Fix Language"
+msgstr ""
+
+msgid "Fix language"
+msgstr ""
+
 msgid ""
 "This catalog has entries with plural forms, but doesn't have Plural-Forms "
 "header configured."
@@ -560,6 +671,7 @@ msgstr ""
 msgid "Plural forms expression used by the catalog is unusual for %s."
 msgstr ""
 
+#. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the catalog is unusual for %s.")"
 msgid "Review"
 msgstr ""
 
@@ -581,6 +693,12 @@ msgid_plural "%d errors"
 msgstr[0] ""
 msgstr[1] ""
 
+#, c-format
+msgid "%d entry"
+msgid_plural "%d entries"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid " (unsaved)"
 msgstr ""
 
@@ -694,6 +812,9 @@ msgstr "Ĉio"
 msgid "Form %i"
 msgstr "Formo %i"
 
+msgid "Singular"
+msgstr ""
+
 msgid "Zero"
 msgstr "Nulo"
 
@@ -703,6 +824,9 @@ msgstr "Unu"
 msgid "Two"
 msgstr "Du"
 
+msgid "Plural"
+msgstr ""
+
 msgid "Other"
 msgstr "Alia"
 
@@ -731,6 +855,12 @@ msgstr ""
 msgid "Show Sidebar"
 msgstr ""
 
+msgid "Hide Status Bar"
+msgstr ""
+
+msgid "Show Status Bar"
+msgstr ""
+
 msgid "Source text"
 msgstr ""
 
@@ -740,6 +870,10 @@ msgstr "Traduko"
 msgid "ID"
 msgstr ""
 
+#, c-format
+msgid "Source text — %s"
+msgstr ""
+
 msgid "unknown language"
 msgstr ""
 
@@ -750,57 +884,73 @@ msgstr "Traduko: %s"
 msgid "Error:"
 msgstr ""
 
-msgid "Project info"
-msgstr "Projektaj informoj"
+msgid "Source file"
+msgstr "Fonta dosiero"
 
-msgid "Project name and version:"
-msgstr "Projektaj nomo kaj versio:"
+msgid "Source file occurrence:"
+msgstr ""
 
-msgid "Language:"
-msgstr "Lingvo:"
+msgid "Open in Editor"
+msgstr ""
 
-msgid "Team:"
-msgstr "Skipo:"
+msgid "Open in editor"
+msgstr ""
 
-msgid "Team's email address:"
-msgstr "Skipa retadreso:"
+msgid "No references for the selected item."
+msgstr ""
 
-msgid "Charset:"
-msgstr "Signaro:"
+#, c-format
+msgid "Error opening file %s!"
+msgstr "Eraro dum malfermo de dosiero %s!"
 
-msgid "Source"
+msgid "Find"
 msgstr ""
 
-msgid "Notes"
-msgstr "Notoj"
+msgid "Replace"
+msgstr ""
 
-msgid "Automatic translation"
-msgstr "Aŭtomata traduko"
+#. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.)
+msgid "Options"
+msgstr ""
 
-msgid "Fuzzy translation"
-msgstr "Necerta traduko"
+msgid "Ignore case"
+msgstr ""
 
-msgid "Notes for translators:"
+msgid "Wrap around"
 msgstr ""
 
-msgid "Comment:"
-msgstr "Komento:"
+msgid "Whole words only"
+msgstr "Nur tutaj vortoj"
 
-msgid "Source file"
-msgstr "Fonta dosiero"
+msgid "Find in source texts"
+msgstr ""
 
-msgid "Source file occurrence:"
+msgid "Find in translations"
 msgstr ""
 
-msgid "Open in Editor"
+msgid "Find in comments"
+msgstr "Serĉi en komentoj"
+
+msgid "Close"
+msgstr "Fermi"
+
+msgid "Replace All"
 msgstr ""
 
-msgid "Open in editor"
+msgid "Replace all"
 msgstr ""
 
-#, c-format
-msgid "Error opening file %s!"
-msgstr "Eraro dum malfermo de dosiero %s!"
+msgid "< &Previous"
+msgstr ""
+
+msgid "&Next >"
+msgstr ""
+
+msgid "String to find"
+msgstr ""
+
+msgid "Replacement string"
+msgstr ""
 
 #, c-format
 msgid "Cannot execute program: %s"
@@ -993,9 +1143,19 @@ msgstr "Nova"
 msgid "Edit"
 msgstr "Redakti"
 
+msgid "Delete extractor"
+msgstr ""
+
+#, c-format
+msgid "Are you sure you want to delete the “%s” extractor?"
+msgstr ""
+
 msgid "Extractors"
 msgstr ""
 
+msgid "Accounts"
+msgstr ""
+
 msgid "Automatically check for updates"
 msgstr ""
 
@@ -1034,7 +1194,34 @@ msgstr ""
 msgid "Advanced"
 msgstr ""
 
-msgid "Additional keywords"
+msgid ""
+"<big>Drag and Drop Folders Here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+
+msgid ""
+"<big>Drag and drop folders here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+
+msgid "Add Folders..."
+msgstr ""
+
+msgid "Add folders..."
+msgstr ""
+
+msgid "Add Files..."
+msgstr ""
+
+msgid "Add files..."
+msgstr ""
+
+msgid "Add Wildcard..."
+msgstr ""
+
+msgid "Add wildcard..."
 msgstr ""
 
 msgid "Paths"
@@ -1043,6 +1230,9 @@ msgstr "Vojprefiksoj"
 msgid "Excluded paths"
 msgstr ""
 
+msgid "Additional keywords"
+msgstr ""
+
 msgid "Name of the project the translation is for"
 msgstr ""
 
@@ -1055,6 +1245,9 @@ msgstr ""
 msgid "Please save the file first. This section cannot be edited until then."
 msgstr ""
 
+msgid "Comment:"
+msgstr "Komento:"
+
 msgid "OK"
 msgstr "Konfirmi"
 
@@ -1064,42 +1257,6 @@ msgstr ""
 msgid "Clear the comment"
 msgstr "Forviŝi la komenton"
 
-msgid "Find..."
-msgstr "Serĉi..."
-
-msgid "String to find:"
-msgstr "Serĉota ĉeno:"
-
-msgid "Case sensitive"
-msgstr "Usklecodistinga"
-
-msgid "Start from the first item"
-msgstr "Komenci je la unua ero"
-
-msgid "Whole words only"
-msgstr "Nur tutaj vortoj"
-
-msgid "Find in original strings"
-msgstr "Serĉi en fontaj ĉenoj"
-
-msgid "Find in translations"
-msgstr ""
-
-msgid "Find in comments"
-msgstr "Serĉi en komentoj"
-
-msgid "Find in automatic comments"
-msgstr "&Serĉi en aŭtomataj komentoj"
-
-msgid "Close"
-msgstr "Fermi"
-
-msgid "< &Previous"
-msgstr ""
-
-msgid "&Next >"
-msgstr ""
-
 msgid "Create new translations project"
 msgstr "Krei novan tradukprojekton"
 
@@ -1154,6 +1311,12 @@ msgstr "&Malfermi..."
 msgid "Open Recent"
 msgstr ""
 
+msgid "Open from Crowdin..."
+msgstr ""
+
+msgid "Open From Crowdin..."
+msgstr ""
+
 msgid "&Save"
 msgstr "&Konservi"
 
@@ -1202,13 +1365,16 @@ msgstr ""
 msgid "&Find..."
 msgstr "&Serĉi..."
 
+msgid "Replace..."
+msgstr ""
+
 msgid "Find next"
 msgstr ""
 
 msgid "Find previous"
 msgstr ""
 
-msgid "Find"
+msgid "Find and Replace..."
 msgstr ""
 
 msgid "Find Next"
@@ -1250,6 +1416,12 @@ msgstr ""
 msgid "&Group By Context"
 msgstr ""
 
+msgid "Entries with errors first"
+msgstr ""
+
+msgid "Entries with Errors First"
+msgstr ""
+
 msgid "&Untranslated entries first"
 msgstr ""
 
@@ -1259,6 +1431,9 @@ msgstr ""
 msgid "Show sidebar"
 msgstr ""
 
+msgid "Show status bar"
+msgstr ""
+
 msgid "C&atalog"
 msgstr "K&atalogo"
 
@@ -1274,6 +1449,9 @@ msgstr "Ĝisdatigi el &POT-dosiero..."
 msgid "Update from &POT File..."
 msgstr ""
 
+msgid "Sync with Crowdin"
+msgstr ""
+
 msgid "Fill missing translations from &TM..."
 msgstr ""
 
@@ -1398,6 +1576,9 @@ msgstr ""
 msgid "Catalog properties"
 msgstr ""
 
+msgid "Project name and version:"
+msgstr "Projektaj nomo kaj versio:"
+
 msgid "Plural Forms:"
 msgstr "Pluralaj Formoj:"
 
@@ -1410,16 +1591,28 @@ msgstr ""
 msgid "Learn about plural forms"
 msgstr ""
 
+msgid "Charset:"
+msgstr "Signaro:"
+
+msgid "Team:"
+msgstr "Skipo:"
+
+msgid "Team's email address:"
+msgstr "Skipa retadreso:"
+
 msgid "Translation properties"
 msgstr ""
 
+msgid "Sources paths"
+msgstr ""
+
 msgid "Extract text from source files in the following directories:"
 msgstr ""
 
 msgid "Base path:"
 msgstr "Baza vojprefikso:"
 
-msgid "Sources paths"
+msgid "Sources keywords"
 msgstr ""
 
 msgid ""
@@ -1430,9 +1623,6 @@ msgstr ""
 msgid "Learn about gettext keywords"
 msgstr ""
 
-msgid "Sources keywords"
-msgstr ""
-
 msgid "Update summary"
 msgstr "Ĝisdatigi resumon"
 
@@ -1480,7 +1670,7 @@ msgstr "Ĝisdatigi katalogon - sinkronigi ĝin kun fontkodo"
 msgid "Toggled if selected string has fuzzy translation"
 msgstr "Baskuligata se elektita ĉeno havas necertan tradukon"
 
-msgid "Show or hide the sidebar."
+msgid "Show or hide the sidebar"
 msgstr ""
 
 #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer.
@@ -1492,6 +1682,9 @@ msgid ""
 "translation corresponds to."
 msgstr ""
 
+msgid "Notes for translators:"
+msgstr ""
+
 msgid "Add comment"
 msgstr ""
 
@@ -1564,14 +1757,21 @@ msgstr ""
 msgid "Open an existing PO file and edit the translation."
 msgstr ""
 
-msgid "Create new translation"
-msgstr ""
-
 msgid ""
 "Take an existing PO file or POT template and create a new translation from "
 "it."
 msgstr ""
 
+msgid "Collaborate on a translation with Crowdin"
+msgstr ""
+
+msgid ""
+"Download a file from Crowdin project, translate and sync your changes back."
+msgstr ""
+
+msgid "What is Crowdin?"
+msgstr ""
+
 msgid "There are no translations. That’s unusual."
 msgstr ""
 
@@ -1604,3 +1804,9 @@ msgstr ""
 
 msgid "Configure source code extraction in Properties."
 msgstr ""
+
+msgid "Sync"
+msgstr ""
+
+msgid "Synchronize the translation with Crowdin"
+msgstr ""
diff --git a/locales/es.mo b/locales/es.mo
index b9d6321..c25d239 100644
Binary files a/locales/es.mo and b/locales/es.mo differ
diff --git a/locales/es.po b/locales/es.po
index f3e6878..02a8134 100644
--- a/locales/es.po
+++ b/locales/es.po
@@ -2,8 +2,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: poedit\n"
 "Report-Msgid-Bugs-To: help at poedit.net\n"
-"POT-Creation-Date: 2015-01-10 16:00+0100\n"
-"PO-Revision-Date: 2015-03-10 12:34-0400\n"
+"POT-Creation-Date: 2015-05-27 11:31+0200\n"
+"PO-Revision-Date: 2015-05-27 05:17-0400\n"
 "Last-Translator: vslavik <vaclav at slavik.io>\n"
 "Language-Team: Spanish\n"
 "Language: es_ES\n"
@@ -37,7 +37,7 @@ msgstr "La línea %d del archivo «%s» está dañada (datos %s no válidos)."
 
 #, c-format
 msgid "Malformed header: '%s'"
-msgstr "La cabecera tiene un formato incorrecto: «%s»"
+msgstr "Cabecera con formato incorrecto: «%s»"
 
 msgid ""
 "Broken catalog file: singular form msgstr used together with msgid_plural"
@@ -74,7 +74,7 @@ msgstr "No se pudo guardar el archivo %s."
 msgid ""
 "There was a problem formatting the file nicely (but it was saved all right)."
 msgstr ""
-"Ocurrió un problema al dar formato al archivo (pero se ha guardado bien)."
+"Ocurrió un problema al dar formato al archivo (pero se guardó correctamente)."
 
 #, c-format
 msgid ""
@@ -91,6 +91,15 @@ msgstr ""
 msgid "Error saving catalog"
 msgstr "Error al guardar el catálogo"
 
+msgid "PO Translation Files"
+msgstr "Archivos de traducción PO"
+
+msgid "POT Translation Templates"
+msgstr "Plantillas de traducción POT"
+
+msgid "All Translation Files"
+msgstr "Todos los archivos de traducción"
+
 msgid "Merging differences..."
 msgstr "Combinando las diferencias…"
 
@@ -110,6 +119,86 @@ msgstr "Selección de idioma"
 msgid "You must restart Poedit for this change to take effect."
 msgstr "Debe reiniciar Poedit para que los cambios surtan efecto."
 
+msgid "Downloading translations is disabled in this project."
+msgstr "La descarga de traducciones está desactivada en este proyecto."
+
+msgid "Not authorized, please sign in again."
+msgstr "Acción no autorizada. Acceda a la cuenta de nuevo."
+
+msgid "Sign in to Crowdin"
+msgstr "Acceder a Crowdin"
+
+msgid ""
+"Crowdin is an online localization management platform and collaborative "
+"translation tool. Poedit can seamlessly sync PO files managed at Crowdin."
+msgstr ""
+"Crowdin es una plataforma de gestión de regionalización y traducción "
+"colaborativa en línea. Poedit puede sincronizar archivos PO gestionados con "
+"Crowdin."
+
+msgid "Sign In"
+msgstr "Acceder"
+
+msgid "Sign in"
+msgstr "Acceder"
+
+msgid "Sign Out"
+msgstr "Salir"
+
+msgid "Sign out"
+msgstr "Salir"
+
+msgid "Waiting for authentication…"
+msgstr "Esperando la autenticación…"
+
+msgid "Updating user information…"
+msgstr "Actualizando la información del usuario…"
+
+msgid "Signed in as:"
+msgstr "Se identificó como:"
+
+msgid "Learn More About Crowdin"
+msgstr "Más información sobre Crowdin"
+
+msgid "Learn more about Crowdin"
+msgstr "Más información sobre Crowdin"
+
+msgid "Open Crowdin translation"
+msgstr "Abrir traducción de Crowdin"
+
+msgid "Project:"
+msgstr "Proyecto:"
+
+msgid "Language:"
+msgstr "Idioma:"
+
+msgid "File:"
+msgstr "Archivo:"
+
+msgid "No translation projects listed in your Crowdin account."
+msgstr "No hay proyectos de traducción en su cuenta de Crowdin."
+
+msgid "This project has no files that can be translated in Poedit."
+msgstr "Este proyecto no contiene archivos traducibles en Poedit."
+
+msgid "This file can only be edited in Crowdin’s web interface."
+msgstr "Este archivo solo puede editarse en la interfaz web de Crowdin."
+
+msgid "Downloading latest translations…"
+msgstr "Descargando las traducciones más recientes…"
+
+msgid "Syncing with Crowdin"
+msgstr "Sincronizando con Crowdin"
+
+msgid "Syncing with Crowdin failed."
+msgstr "Falló la sincronización con Crowdin."
+
+msgid "Crowdin error"
+msgstr "Error de Crowdin"
+
+msgid "Uploading translations…"
+msgstr "Cargando las traducciones…"
+
 msgid "&Copy"
 msgstr "&Copiar"
 
@@ -124,7 +213,7 @@ msgid "Failed command: %s"
 msgstr "Orden errónea: %s"
 
 msgid "Failed to merge gettext catalogs."
-msgstr "Error al fusionar los catálogos de gettext."
+msgstr "Error al combinar los catálogos de Gettext."
 
 msgid "Scanning files..."
 msgstr "Analizando los archivos…"
@@ -135,7 +224,7 @@ msgid "Parsing %s files..."
 msgstr "Analizando %s archivos…"
 
 msgid "Failed to load extracted catalog."
-msgstr "Error al cargar el catálogo extraído."
+msgstr "Falló la carga del catálogo extraído."
 
 msgid "&Help"
 msgstr "Ay&uda"
@@ -156,6 +245,12 @@ msgstr ""
 msgid "don't delete temporary files (for debugging)"
 msgstr "no eliminar archivos temporales (para depuración)"
 
+msgid "handle a poedit:// URI"
+msgstr "manejar un URI poedit://"
+
+msgid "Failed to communicate with Poedit process."
+msgstr "Error al comunicarse con un proceso de Poedit."
+
 #, c-format
 msgid "Unhandled exception occurred: %s"
 msgstr "Se produjo una excepción no controlada: %s"
@@ -166,12 +261,6 @@ msgstr "Se produjo una excepción no controlada."
 msgid "Open catalog"
 msgstr "Abrir catálogo"
 
-msgid "All Files"
-msgstr "Todos los archivos"
-
-msgid "PO Translation Files"
-msgstr "Archivos de traducción PO"
-
 #, c-format
 msgid "File '%s' doesn't exist."
 msgstr "El archivo «%s» no existe."
@@ -189,7 +278,7 @@ msgid "Version %s"
 msgstr "Versión %s"
 
 msgid "Poedit is an easy to use translations editor."
-msgstr "Poedit es un editor de traducciones de fácil uso."
+msgstr "Poedit es un editor de traducciones fácil de usar."
 
 msgid "Catalogs Manager"
 msgstr "Gestor de catálogos"
@@ -207,7 +296,7 @@ msgid "Redo"
 msgstr "Rehacer"
 
 msgid "Paste and Match Style"
-msgstr "Pegar y coincidir estilo"
+msgstr "Pegar con el mismo estilo"
 
 msgid "Delete"
 msgstr "Eliminar"
@@ -225,7 +314,7 @@ msgid "Check Spelling While Typing"
 msgstr "Revisar ortografía al escribir"
 
 msgid "Check Grammar With Spelling"
-msgstr "Revisar gramática y ortografía"
+msgstr "Comprobar gramática con la ortografía"
 
 msgid "Correct Spelling Automatically"
 msgstr "Corregir ortografía automáticamente"
@@ -237,13 +326,13 @@ msgid "Show Substitutions"
 msgstr "Mostrar sustituciones"
 
 msgid "Smart Copy/Paste"
-msgstr "Copiar/pegar inteligente"
+msgstr "Copipegado inteligente"
 
 msgid "Smart Quotes"
 msgstr "Comillas tipográficas"
 
 msgid "Smart Dashes"
-msgstr "Rayas inteligentes"
+msgstr "Guiones inteligentes"
 
 msgid "Smart Links"
 msgstr "Enlaces inteligentes"
@@ -399,6 +488,20 @@ msgstr "Plural:"
 msgid "Translation:"
 msgstr "Traducción:"
 
+msgid ""
+"POT files are only templates and don’t contain any translations themselves.\n"
+"To make a translation, create a new PO file based on the template."
+msgstr ""
+"Los archivos POT son plantillas; no contienen traducciones.\n"
+"Para realizar una traducción, cree un archivo PO nuevo basado en la "
+"plantilla."
+
+msgid "Create New Translation"
+msgstr "Crear traducción nueva"
+
+msgid "Create new translation"
+msgstr "Crear traducción nueva"
+
 #. TRANSLATORS: %s is language name in its basic form (as you
 #. would see e.g. in a list of supported languages). You may need
 #. to rephrase it, e.g. to an equivalent of "for language %s".
@@ -447,9 +550,6 @@ msgstr "Archivos HTML"
 msgid "Open catalog template"
 msgstr "Abrir plantilla de catálogo"
 
-msgid "POT Translation Templates"
-msgstr "Plantillas de traducción POT"
-
 msgid "Updating catalog"
 msgstr "Actualizando el catálogo"
 
@@ -534,18 +634,25 @@ msgstr[1] ""
 msgid "The translation is ready for use."
 msgstr "La traducción está lista para su uso."
 
-msgid "No references to this string found."
-msgstr "No se encontraron referencias a esta cadena."
-
-msgid "Please choose the reference you want to show:"
-msgstr "Elija la referencia que quiera mostrar:"
-
-msgid "References"
-msgstr "Referencias"
-
 msgid "Context:"
 msgstr "Contexto:"
 
+#, c-format
+msgid "Poedit automatically fixed invalid content in the file “%s”."
+msgstr ""
+"Poedit corrigió automáticamente el contenido no válido del archivo «%s»."
+
+msgid ""
+"The file contained duplicate items, which is not allowed in PO files and "
+"would prevent the file from being used. Poedit fixed the issue, but you "
+"should review translations of any items marked as fuzzy and correct them if "
+"necessary."
+msgstr ""
+"El archivo contenía elementos duplicados, lo que impediría su "
+"funcionamiento. Poedit ha corregido el problema, pero debe revisar las "
+"traducciones de cualesquier elementos marcados como provisionales y "
+"corregirlas si es necesario."
+
 msgid "Language of the translation isn't set."
 msgstr "No se ha establecido el idioma de la traducción."
 
@@ -555,6 +662,23 @@ msgstr "Establecer idioma"
 msgid "Set language"
 msgstr "Establecer el idioma"
 
+#. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)."
+msgid ""
+"Suggestions are not available if the translation language is not set "
+"correctly. Other features, such as plural forms, may be affected as well."
+msgstr ""
+"Si el idioma de traducción no se configura correctamente, se afectarán "
+"funcionalidades como las sugerencias y la gestión de formas plurales."
+
+msgid "Language of the translation is the same as source language."
+msgstr "El idioma de la traducción es igual que el del texto original."
+
+msgid "Fix Language"
+msgstr "Corregir idioma"
+
+msgid "Fix language"
+msgstr "Corregir idioma"
+
 msgid ""
 "This catalog has entries with plural forms, but doesn't have Plural-Forms "
 "header configured."
@@ -590,12 +714,13 @@ msgid "Plural forms expression used by the catalog is unusual for %s."
 msgstr ""
 "La expresión de formas plurales usada en el catálogo es inusual en el %s."
 
+#. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the catalog is unusual for %s.")"
 msgid "Review"
 msgstr "Revisar"
 
 #, c-format
 msgid "Error loading message catalog file '%s'."
-msgstr "Error al cargar archivo de catálogo de mensajes «%s»."
+msgstr "Ocurrió un error al cargar el catálogo de mensajes «%s»."
 
 #, c-format
 msgid "Translated: %d of %d (%d %%)"
@@ -611,6 +736,12 @@ msgid_plural "%d errors"
 msgstr[0] "%d error"
 msgstr[1] "%d errores"
 
+#, c-format
+msgid "%d entry"
+msgid_plural "%d entries"
+msgstr[0] "%d entrada"
+msgstr[1] "%d entradas"
+
 msgid " (unsaved)"
 msgstr "(sin guardar)"
 
@@ -635,12 +766,12 @@ msgid ""
 "permanently removed. You will have to translate them again if they are added "
 "back in the future."
 msgstr ""
-"Si continúa con el purgado, se eliminarán permanentemente las traducciones "
-"no utilizadas. Si estas cadenas se añaden de nuevo en el futuro, tendrá que "
-"traducirlas de nuevo."
+"Si continúa con el purgado se eliminarán permanentemente todas las "
+"traducciones no utilizadas. Si las cadenas correspondientes se vuelven a "
+"añadir, deberá traducirlas de nuevo."
 
 msgid "Keep"
-msgstr "Mantener"
+msgstr "Conservar"
 
 msgid "Purge"
 msgstr "Purgar"
@@ -738,6 +869,9 @@ msgstr "Todo"
 msgid "Form %i"
 msgstr "Formulario %i"
 
+msgid "Singular"
+msgstr "Singular"
+
 msgid "Zero"
 msgstr "Cero"
 
@@ -747,6 +881,9 @@ msgstr "Uno"
 msgid "Two"
 msgstr "Dos"
 
+msgid "Plural"
+msgstr "Plural"
+
 msgid "Other"
 msgstr "Otro"
 
@@ -775,6 +912,12 @@ msgstr "Ocultar barra lateral"
 msgid "Show Sidebar"
 msgstr "Mostrar barra lateral"
 
+msgid "Hide Status Bar"
+msgstr "Ocultar barra de estado"
+
+msgid "Show Status Bar"
+msgstr "Mostrar barra de estado"
+
 msgid "Source text"
 msgstr "Texto de origen"
 
@@ -784,6 +927,10 @@ msgstr "Traducción"
 msgid "ID"
 msgstr "Id."
 
+#, c-format
+msgid "Source text — %s"
+msgstr "Texto de origen: %s"
+
 msgid "unknown language"
 msgstr "idioma desconocido"
 
@@ -794,57 +941,73 @@ msgstr "Traducción: %s"
 msgid "Error:"
 msgstr "Error:"
 
-msgid "Project info"
-msgstr "Información del proyecto"
+msgid "Source file"
+msgstr "Archivo de origen"
 
-msgid "Project name and version:"
-msgstr "Nombre del proyecto y versión:"
+msgid "Source file occurrence:"
+msgstr "Ocurrencia en archivo de fuente:"
 
-msgid "Language:"
-msgstr "Idioma:"
+msgid "Open in Editor"
+msgstr "Abrir en el editor"
 
-msgid "Team:"
-msgstr "Equipo:"
+msgid "Open in editor"
+msgstr "Abrir en el editor"
 
-msgid "Team's email address:"
-msgstr "Dirección de correo del equipo:"
+msgid "No references for the selected item."
+msgstr "No hay referencias para el elemento seleccionado."
 
-msgid "Charset:"
-msgstr "Conjunto de caracteres:"
+#, c-format
+msgid "Error opening file %s!"
+msgstr "Ocurrió un error al abrir el archivo %s."
 
-msgid "Source"
-msgstr "Origen"
+msgid "Find"
+msgstr "Buscar"
 
-msgid "Notes"
-msgstr "Notas"
+msgid "Replace"
+msgstr "Reemplazar"
 
-msgid "Automatic translation"
-msgstr "Traducción automática"
+#. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.)
+msgid "Options"
+msgstr "Opciones"
 
-msgid "Fuzzy translation"
-msgstr "Traducción provisional"
+msgid "Ignore case"
+msgstr "Ignorar mayúsculas y minúsculas"
 
-msgid "Notes for translators:"
-msgstr "Notas para traductores:"
+msgid "Wrap around"
+msgstr "Envolver"
 
-msgid "Comment:"
-msgstr "Comentario:"
+msgid "Whole words only"
+msgstr "Solo palabras completas"
 
-msgid "Source file"
-msgstr "Archivo de origen"
+msgid "Find in source texts"
+msgstr "Encontrar en textos originales"
 
-msgid "Source file occurrence:"
-msgstr "Ocurrencia en archivo de fuente:"
+msgid "Find in translations"
+msgstr "Buscar en traducciones"
 
-msgid "Open in Editor"
-msgstr "Abrir en el editor"
+msgid "Find in comments"
+msgstr "Buscar en los comentarios"
 
-msgid "Open in editor"
-msgstr "Abrir en el editor"
+msgid "Close"
+msgstr "Cerrar"
 
-#, c-format
-msgid "Error opening file %s!"
-msgstr "Ocurrió un error al abrir el archivo %s."
+msgid "Replace All"
+msgstr "Reemplazar todo"
+
+msgid "Replace all"
+msgstr "Reemplazar todo"
+
+msgid "< &Previous"
+msgstr "< &Anterior"
+
+msgid "&Next >"
+msgstr "&Siguiente >"
+
+msgid "String to find"
+msgstr "Texto que encontrar"
+
+msgid "Replacement string"
+msgstr "Texto de reemplazo"
 
 #, c-format
 msgid "Cannot execute program: %s"
@@ -959,7 +1122,7 @@ msgid "Use custom text fields font:"
 msgstr "Usar tipo de letra personalizado en campos de texto:"
 
 msgid "Change UI language"
-msgstr "Cambiar idioma de la interfaz de usuario"
+msgstr "Cambiar idioma de la interfaz"
 
 #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions
 msgid "(requires Windows 8 or newer)"
@@ -982,7 +1145,7 @@ msgid "Reset"
 msgstr "Restablecer"
 
 msgid "Consult TM when updating from sources"
-msgstr "Consultar MT al actualizar desde orígenes"
+msgstr "Consultar MT al actualizar desde fuentes"
 
 msgid ""
 "If enabled, Poedit will try to fill in new entries using your previous\n"
@@ -1049,9 +1212,19 @@ msgstr "Nuevo"
 msgid "Edit"
 msgstr "Editar"
 
+msgid "Delete extractor"
+msgstr "Eliminar extractor"
+
+#, c-format
+msgid "Are you sure you want to delete the “%s” extractor?"
+msgstr "¿Realmente quiere eliminar el extractor «%s»?"
+
 msgid "Extractors"
 msgstr "Extractores"
 
+msgid "Accounts"
+msgstr "Cuentas"
+
 msgid "Automatically check for updates"
 msgstr "Buscar actualizaciones automáticamente"
 
@@ -1095,8 +1268,41 @@ msgstr "Conservar el formato de los archivos existentes"
 msgid "Advanced"
 msgstr "Avanzadas"
 
-msgid "Additional keywords"
-msgstr "Palabras clave adicionales"
+msgid ""
+"<big>Drag and Drop Folders Here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+"<big>Arrastrar y Soltar carpetas aquí</big>\n"
+"\n"
+"o usar el botón +"
+
+msgid ""
+"<big>Drag and drop folders here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+"<big>Arrastrar y soltar carpetas aquí</big>\n"
+"\n"
+"o usar el botón +"
+
+msgid "Add Folders..."
+msgstr "Añadir Carpetas..."
+
+msgid "Add folders..."
+msgstr "Añadir carpetas..."
+
+msgid "Add Files..."
+msgstr "Añadir Archivos..."
+
+msgid "Add files..."
+msgstr "Añadir archivos..."
+
+msgid "Add Wildcard..."
+msgstr "Añadir Comodín..."
+
+msgid "Add wildcard..."
+msgstr "Añadir comodín..."
 
 msgid "Paths"
 msgstr "Rutas"
@@ -1104,6 +1310,9 @@ msgstr "Rutas"
 msgid "Excluded paths"
 msgstr "Rutas excluidas"
 
+msgid "Additional keywords"
+msgstr "Palabras clave adicionales"
+
 msgid "Name of the project the translation is for"
 msgstr "El nombre del proyecto al que se destina esta traducción"
 
@@ -1117,6 +1326,9 @@ msgid "Please save the file first. This section cannot be edited until then."
 msgstr ""
 "Guarde el archivo primero. No se podrá editar esta sección hasta que lo haga."
 
+msgid "Comment:"
+msgstr "Comentario:"
+
 msgid "OK"
 msgstr "Aceptar"
 
@@ -1126,42 +1338,6 @@ msgstr "&Vaciar"
 msgid "Clear the comment"
 msgstr "Borrar el comentario"
 
-msgid "Find..."
-msgstr "Buscar…"
-
-msgid "String to find:"
-msgstr "Texto que buscar:"
-
-msgid "Case sensitive"
-msgstr "Distinguir mayúsculas y minúsculas"
-
-msgid "Start from the first item"
-msgstr "Comenzar desde el primer elemento"
-
-msgid "Whole words only"
-msgstr "Solo palabras completas"
-
-msgid "Find in original strings"
-msgstr "Buscar en los mensajes originales"
-
-msgid "Find in translations"
-msgstr "Buscar en traducciones"
-
-msgid "Find in comments"
-msgstr "Buscar en los comentarios"
-
-msgid "Find in automatic comments"
-msgstr "Buscar en los comentarios automáticos"
-
-msgid "Close"
-msgstr "Cerrar"
-
-msgid "< &Previous"
-msgstr "< &Anterior"
-
-msgid "&Next >"
-msgstr "&Siguiente >"
-
 msgid "Create new translations project"
 msgstr "Crear proyecto de traducción nuevo"
 
@@ -1216,6 +1392,12 @@ msgstr "&Abrir…"
 msgid "Open Recent"
 msgstr "Abrir recientes"
 
+msgid "Open from Crowdin..."
+msgstr "Abrir desde Crowdin…"
+
+msgid "Open From Crowdin..."
+msgstr "Abrir desde Crowdin..."
+
 msgid "&Save"
 msgstr "&Guardar"
 
@@ -1264,14 +1446,17 @@ msgstr "&Mostrar referencias"
 msgid "&Find..."
 msgstr "&Buscar…"
 
+msgid "Replace..."
+msgstr "Reemplazar..."
+
 msgid "Find next"
 msgstr "Buscar siguiente"
 
 msgid "Find previous"
 msgstr "Buscar anterior"
 
-msgid "Find"
-msgstr "Buscar"
+msgid "Find and Replace..."
+msgstr "Buscar y reemplazar..."
 
 msgid "Find Next"
 msgstr "Buscar siguiente"
@@ -1312,6 +1497,12 @@ msgstr "A&grupar por contexto"
 msgid "&Group By Context"
 msgstr "A&grupar por contexto"
 
+msgid "Entries with errors first"
+msgstr "Primero las entradas con errores"
+
+msgid "Entries with Errors First"
+msgstr "Primero las entradas con errores"
+
 msgid "&Untranslated entries first"
 msgstr "&Entradas sin traducir primero"
 
@@ -1321,11 +1512,14 @@ msgstr "&Entradas sin traducir primero"
 msgid "Show sidebar"
 msgstr "Mostrar barra lateral"
 
+msgid "Show status bar"
+msgstr "Mostrar barra de estado"
+
 msgid "C&atalog"
 msgstr "&Catálogo"
 
 msgid "&Update from sources"
-msgstr "&Actualizar desde fuentes"
+msgstr "Act&ualizar desde fuentes"
 
 msgid "&Update from Sources"
 msgstr "&Actualizar desde fuentes"
@@ -1336,6 +1530,9 @@ msgstr "Actualizar desde archivo &POT…"
 msgid "Update from &POT File..."
 msgstr "Actualizar desde archivo &POT…"
 
+msgid "Sync with Crowdin"
+msgstr "Sincronizar con Crowdin"
+
 msgid "Fill missing translations from &TM..."
 msgstr "Cubrir traducciones faltantes a partir de M&T…"
 
@@ -1358,7 +1555,7 @@ msgid "&Properties..."
 msgstr "&Propiedades…"
 
 msgid "&Done and next"
-msgstr "Hecho, &siguiente"
+msgstr "Hecho, e ir al siguiente"
 
 msgid "&Done and Next"
 msgstr "Hecho, &siguiente"
@@ -1394,7 +1591,7 @@ msgid "&Online Help"
 msgstr "&Ayuda en línea"
 
 msgid "&GNU gettext manual"
-msgstr "Manual de &GNU gettext"
+msgstr "Manual de &Gettext"
 
 msgid "&GNU gettext Manual"
 msgstr "Manual de &GNU gettext"
@@ -1429,7 +1626,7 @@ msgstr ""
 "%C define el conjunto de caracteres (vea abajo)."
 
 msgid "An item in keywords list:"
-msgstr "Elemento de la lista de palabras clave:"
+msgstr "Un elemento de la lista de palabras clave:"
 
 msgid ""
 "This will be attached to the command line once\n"
@@ -1439,7 +1636,7 @@ msgstr ""
 "cada palabra clave. %k contiene la palabra clave."
 
 msgid "An item in input files list:"
-msgstr "Elemento de la lista de archivos de entrada:"
+msgstr "Un elemento de la lista de archivos de entrada:"
 
 #, c-format
 msgid ""
@@ -1463,6 +1660,9 @@ msgstr ""
 msgid "Catalog properties"
 msgstr "Propiedades del catálogo"
 
+msgid "Project name and version:"
+msgstr "Nombre del proyecto y versión:"
+
 msgid "Plural Forms:"
 msgstr "Formas plurales:"
 
@@ -1475,9 +1675,21 @@ msgstr "Usar expresión personalizada"
 msgid "Learn about plural forms"
 msgstr "Más información sobre formas plurales"
 
+msgid "Charset:"
+msgstr "Conjunto de caracteres:"
+
+msgid "Team:"
+msgstr "Equipo:"
+
+msgid "Team's email address:"
+msgstr "Dirección de correo e. del equipo:"
+
 msgid "Translation properties"
 msgstr "Propiedades de traducción"
 
+msgid "Sources paths"
+msgstr "Rutas de fuentes"
+
 msgid "Extract text from source files in the following directories:"
 msgstr ""
 "Extraer textos de archivos de código fuente en las carpetas siguientes:"
@@ -1485,8 +1697,8 @@ msgstr ""
 msgid "Base path:"
 msgstr "Directorio raíz:"
 
-msgid "Sources paths"
-msgstr "Rutas de fuentes"
+msgid "Sources keywords"
+msgstr "Palabras clave originales"
 
 msgid ""
 "Use these keywords (function names) to recognize translatable strings\n"
@@ -1498,9 +1710,6 @@ msgstr ""
 msgid "Learn about gettext keywords"
 msgstr "Más información sobre palabras clave de gettext"
 
-msgid "Sources keywords"
-msgstr "Palabras clave originales"
-
 msgid "Update summary"
 msgstr "Resumen de la actualización"
 
@@ -1543,13 +1752,13 @@ msgid "Update"
 msgstr "Actualizar"
 
 msgid "Update catalog - synchronize it with sources"
-msgstr "Actualizar catálogo, sincronizarlo con los orígenes"
+msgstr "Actualizar catálogo, sincronizarlo con sus fuentes"
 
 msgid "Toggled if selected string has fuzzy translation"
-msgstr "Activado si el texto seleccionado está traducido provisionalmente"
+msgstr "Activado si el texto seleccionado posee una traducción confusa"
 
-msgid "Show or hide the sidebar."
-msgstr "Mostrar u ocultar la barra lateral."
+msgid "Show or hide the sidebar"
+msgstr "Mostrar u ocultar la barra lateral"
 
 #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer.
 msgid "Previous source text:"
@@ -1562,6 +1771,9 @@ msgstr ""
 "El antiguo texto fuente (antes de que cambiara durante la actualización) al "
 "que corresponde la traducción aproximada (fuzzy)."
 
+msgid "Notes for translators:"
+msgstr "Notas para traductores:"
+
 msgid "Add comment"
 msgstr "Añadir comentario"
 
@@ -1641,15 +1853,24 @@ msgstr "Editar una traducción"
 msgid "Open an existing PO file and edit the translation."
 msgstr "Abrir un archivo PO existente y editar la traducción."
 
-msgid "Create new translation"
-msgstr "Crear traducción nueva"
-
 msgid ""
 "Take an existing PO file or POT template and create a new translation from "
 "it."
 msgstr ""
 "Tomar un archivo PO o POT existente y crear una traducción a partir de este."
 
+msgid "Collaborate on a translation with Crowdin"
+msgstr "Colaborar en la traducción con Crowdin"
+
+msgid ""
+"Download a file from Crowdin project, translate and sync your changes back."
+msgstr ""
+"Descargue un archivo de un proyecto de Crowdin, tradúzcalo y sincronice sus "
+"cambios."
+
+msgid "What is Crowdin?"
+msgstr "¿Qué es Crowdin?"
+
 msgid "There are no translations. That’s unusual."
 msgstr "No hay traducciones. Eso es inusual."
 
@@ -1689,3 +1910,9 @@ msgstr "Extraer desde código fuente"
 
 msgid "Configure source code extraction in Properties."
 msgstr "Configure la extracción de código fuente en Propiedades."
+
+msgid "Sync"
+msgstr "Sincronización"
+
+msgid "Synchronize the translation with Crowdin"
+msgstr "Sincronizar la traducción con Crowdin"
diff --git a/locales/et.mo b/locales/et.mo
index 66ef8c1..de77ead 100644
Binary files a/locales/et.mo and b/locales/et.mo differ
diff --git a/locales/et.po b/locales/et.po
index 010fc6e..b8b1a63 100644
--- a/locales/et.po
+++ b/locales/et.po
@@ -2,8 +2,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: poedit\n"
 "Report-Msgid-Bugs-To: help at poedit.net\n"
-"POT-Creation-Date: 2015-01-10 16:00+0100\n"
-"PO-Revision-Date: 2015-03-10 12:33-0400\n"
+"POT-Creation-Date: 2015-05-27 11:31+0200\n"
+"PO-Revision-Date: 2015-05-27 05:17-0400\n"
 "Last-Translator: vslavik <vaclav at slavik.io>\n"
 "Language-Team: Estonian\n"
 "Language: et_EE\n"
@@ -84,6 +84,15 @@ msgstr ""
 msgid "Error saving catalog"
 msgstr "Tõrge kataloogi salvestamisel"
 
+msgid "PO Translation Files"
+msgstr ""
+
+msgid "POT Translation Templates"
+msgstr ""
+
+msgid "All Translation Files"
+msgstr ""
+
 msgid "Merging differences..."
 msgstr "Ühendan erinevused..."
 
@@ -103,6 +112,83 @@ msgstr "Keelevalik"
 msgid "You must restart Poedit for this change to take effect."
 msgstr "Selle muudatuse jõustumiseks peab Poedit-i taaskäivitama."
 
+msgid "Downloading translations is disabled in this project."
+msgstr ""
+
+msgid "Not authorized, please sign in again."
+msgstr ""
+
+msgid "Sign in to Crowdin"
+msgstr ""
+
+msgid ""
+"Crowdin is an online localization management platform and collaborative "
+"translation tool. Poedit can seamlessly sync PO files managed at Crowdin."
+msgstr ""
+
+msgid "Sign In"
+msgstr ""
+
+msgid "Sign in"
+msgstr ""
+
+msgid "Sign Out"
+msgstr ""
+
+msgid "Sign out"
+msgstr ""
+
+msgid "Waiting for authentication…"
+msgstr ""
+
+msgid "Updating user information…"
+msgstr ""
+
+msgid "Signed in as:"
+msgstr ""
+
+msgid "Learn More About Crowdin"
+msgstr ""
+
+msgid "Learn more about Crowdin"
+msgstr ""
+
+msgid "Open Crowdin translation"
+msgstr ""
+
+msgid "Project:"
+msgstr ""
+
+msgid "Language:"
+msgstr "Keel:"
+
+msgid "File:"
+msgstr ""
+
+msgid "No translation projects listed in your Crowdin account."
+msgstr ""
+
+msgid "This project has no files that can be translated in Poedit."
+msgstr ""
+
+msgid "This file can only be edited in Crowdin’s web interface."
+msgstr ""
+
+msgid "Downloading latest translations…"
+msgstr ""
+
+msgid "Syncing with Crowdin"
+msgstr ""
+
+msgid "Syncing with Crowdin failed."
+msgstr ""
+
+msgid "Crowdin error"
+msgstr ""
+
+msgid "Uploading translations…"
+msgstr ""
+
 msgid "&Copy"
 msgstr ""
 
@@ -147,6 +233,12 @@ msgstr ""
 msgid "don't delete temporary files (for debugging)"
 msgstr "ajutisi faile ei kustutata (silumiseks)"
 
+msgid "handle a poedit:// URI"
+msgstr ""
+
+msgid "Failed to communicate with Poedit process."
+msgstr ""
+
 #, c-format
 msgid "Unhandled exception occurred: %s"
 msgstr ""
@@ -157,12 +249,6 @@ msgstr ""
 msgid "Open catalog"
 msgstr "Kataloogi avamine"
 
-msgid "All Files"
-msgstr ""
-
-msgid "PO Translation Files"
-msgstr ""
-
 #, c-format
 msgid "File '%s' doesn't exist."
 msgstr "Pole faili '%s'."
@@ -390,6 +476,17 @@ msgstr "Mitmus:"
 msgid "Translation:"
 msgstr "Tõlge:"
 
+msgid ""
+"POT files are only templates and don’t contain any translations themselves.\n"
+"To make a translation, create a new PO file based on the template."
+msgstr ""
+
+msgid "Create New Translation"
+msgstr ""
+
+msgid "Create new translation"
+msgstr ""
+
 #. TRANSLATORS: %s is language name in its basic form (as you
 #. would see e.g. in a list of supported languages). You may need
 #. to rephrase it, e.g. to an equivalent of "for language %s".
@@ -437,9 +534,6 @@ msgstr ""
 msgid "Open catalog template"
 msgstr "Kataloogimalli avamine"
 
-msgid "POT Translation Templates"
-msgstr ""
-
 msgid "Updating catalog"
 msgstr "Kataloogi uuendamine"
 
@@ -514,18 +608,20 @@ msgstr[1] ""
 msgid "The translation is ready for use."
 msgstr "Tõlge on kasutamiseks valmis."
 
-msgid "No references to this string found."
-msgstr "Viiteid sellele tekstile ei leitud."
-
-msgid "Please choose the reference you want to show:"
-msgstr "Vali viide, mida soovid näidata:"
-
-msgid "References"
-msgstr "Viited"
-
 msgid "Context:"
 msgstr "Kontekst:"
 
+#, c-format
+msgid "Poedit automatically fixed invalid content in the file “%s”."
+msgstr ""
+
+msgid ""
+"The file contained duplicate items, which is not allowed in PO files and "
+"would prevent the file from being used. Poedit fixed the issue, but you "
+"should review translations of any items marked as fuzzy and correct them if "
+"necessary."
+msgstr ""
+
 msgid "Language of the translation isn't set."
 msgstr ""
 
@@ -535,6 +631,21 @@ msgstr ""
 msgid "Set language"
 msgstr ""
 
+#. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)."
+msgid ""
+"Suggestions are not available if the translation language is not set "
+"correctly. Other features, such as plural forms, may be affected as well."
+msgstr ""
+
+msgid "Language of the translation is the same as source language."
+msgstr ""
+
+msgid "Fix Language"
+msgstr ""
+
+msgid "Fix language"
+msgstr ""
+
 msgid ""
 "This catalog has entries with plural forms, but doesn't have Plural-Forms "
 "header configured."
@@ -569,6 +680,7 @@ msgstr "Paranda päis"
 msgid "Plural forms expression used by the catalog is unusual for %s."
 msgstr ""
 
+#. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the catalog is unusual for %s.")"
 msgid "Review"
 msgstr ""
 
@@ -590,6 +702,12 @@ msgid_plural "%d errors"
 msgstr[0] ""
 msgstr[1] ""
 
+#, c-format
+msgid "%d entry"
+msgid_plural "%d entries"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid " (unsaved)"
 msgstr ""
 
@@ -705,6 +823,9 @@ msgstr ""
 msgid "Form %i"
 msgstr "%i vorm"
 
+msgid "Singular"
+msgstr ""
+
 msgid "Zero"
 msgstr ""
 
@@ -714,6 +835,9 @@ msgstr ""
 msgid "Two"
 msgstr ""
 
+msgid "Plural"
+msgstr ""
+
 msgid "Other"
 msgstr ""
 
@@ -742,6 +866,12 @@ msgstr ""
 msgid "Show Sidebar"
 msgstr ""
 
+msgid "Hide Status Bar"
+msgstr ""
+
+msgid "Show Status Bar"
+msgstr ""
+
 msgid "Source text"
 msgstr "Originaaltekst"
 
@@ -751,6 +881,10 @@ msgstr "Tõlge"
 msgid "ID"
 msgstr ""
 
+#, c-format
+msgid "Source text — %s"
+msgstr ""
+
 msgid "unknown language"
 msgstr ""
 
@@ -761,57 +895,73 @@ msgstr ""
 msgid "Error:"
 msgstr "Viga:"
 
-msgid "Project info"
-msgstr "Projekti info"
+msgid "Source file"
+msgstr "Lähtefail"
 
-msgid "Project name and version:"
-msgstr "Projekti nimi ja versioon:"
+msgid "Source file occurrence:"
+msgstr "Lähtefaili esinemine:"
 
-msgid "Language:"
-msgstr "Keel:"
+msgid "Open in Editor"
+msgstr ""
 
-msgid "Team:"
-msgstr "Meeskond:"
+msgid "Open in editor"
+msgstr ""
 
-msgid "Team's email address:"
-msgstr "Meeskonna e-postiaadress:"
+msgid "No references for the selected item."
+msgstr ""
 
-msgid "Charset:"
-msgstr "Märgistik:"
+#, c-format
+msgid "Error opening file %s!"
+msgstr "Tõrge faili %s avamisel!"
 
-msgid "Source"
-msgstr "Lähtekood"
+msgid "Find"
+msgstr ""
 
-msgid "Notes"
-msgstr "Märkused"
+msgid "Replace"
+msgstr ""
 
-msgid "Automatic translation"
-msgstr "Automaatne tõlkimine"
+#. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.)
+msgid "Options"
+msgstr ""
 
-msgid "Fuzzy translation"
-msgstr "Segane tõlge"
+msgid "Ignore case"
+msgstr ""
 
-msgid "Notes for translators:"
-msgstr "Märkused tõlkijate jaoks:"
+msgid "Wrap around"
+msgstr ""
 
-msgid "Comment:"
-msgstr "Kommentaar:"
+msgid "Whole words only"
+msgstr "Ainult terved sõnad"
 
-msgid "Source file"
-msgstr "Lähtefail"
+msgid "Find in source texts"
+msgstr ""
 
-msgid "Source file occurrence:"
-msgstr "Lähtefaili esinemine:"
+msgid "Find in translations"
+msgstr ""
 
-msgid "Open in Editor"
+msgid "Find in comments"
+msgstr "Otsitakse kommentaaridest"
+
+msgid "Close"
+msgstr "Sulge"
+
+msgid "Replace All"
 msgstr ""
 
-msgid "Open in editor"
+msgid "Replace all"
 msgstr ""
 
-#, c-format
-msgid "Error opening file %s!"
-msgstr "Tõrge faili %s avamisel!"
+msgid "< &Previous"
+msgstr ""
+
+msgid "&Next >"
+msgstr ""
+
+msgid "String to find"
+msgstr ""
+
+msgid "Replacement string"
+msgstr ""
 
 #, c-format
 msgid "Cannot execute program: %s"
@@ -1004,9 +1154,19 @@ msgstr "Uus"
 msgid "Edit"
 msgstr "Muuda"
 
+msgid "Delete extractor"
+msgstr ""
+
+#, c-format
+msgid "Are you sure you want to delete the “%s” extractor?"
+msgstr ""
+
 msgid "Extractors"
 msgstr ""
 
+msgid "Accounts"
+msgstr ""
+
 msgid "Automatically check for updates"
 msgstr ""
 
@@ -1045,7 +1205,34 @@ msgstr ""
 msgid "Advanced"
 msgstr ""
 
-msgid "Additional keywords"
+msgid ""
+"<big>Drag and Drop Folders Here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+
+msgid ""
+"<big>Drag and drop folders here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+
+msgid "Add Folders..."
+msgstr ""
+
+msgid "Add folders..."
+msgstr ""
+
+msgid "Add Files..."
+msgstr ""
+
+msgid "Add files..."
+msgstr ""
+
+msgid "Add Wildcard..."
+msgstr ""
+
+msgid "Add wildcard..."
 msgstr ""
 
 msgid "Paths"
@@ -1054,6 +1241,9 @@ msgstr "Rajad"
 msgid "Excluded paths"
 msgstr ""
 
+msgid "Additional keywords"
+msgstr ""
+
 msgid "Name of the project the translation is for"
 msgstr ""
 
@@ -1066,6 +1256,9 @@ msgstr "UTF-8 (soovituslik)"
 msgid "Please save the file first. This section cannot be edited until then."
 msgstr ""
 
+msgid "Comment:"
+msgstr "Kommentaar:"
+
 msgid "OK"
 msgstr "OK"
 
@@ -1075,42 +1268,6 @@ msgstr "&Tühjenda"
 msgid "Clear the comment"
 msgstr "Tühjenda kommentaar"
 
-msgid "Find..."
-msgstr "Otsing..."
-
-msgid "String to find:"
-msgstr "Otsisõne:"
-
-msgid "Case sensitive"
-msgstr "Tõstutundlik"
-
-msgid "Start from the first item"
-msgstr "&Alustatakse algusest"
-
-msgid "Whole words only"
-msgstr "Ainult terved sõnad"
-
-msgid "Find in original strings"
-msgstr "Otsitakse originaaltekstidest"
-
-msgid "Find in translations"
-msgstr ""
-
-msgid "Find in comments"
-msgstr "Otsitakse kommentaaridest"
-
-msgid "Find in automatic comments"
-msgstr "Otsitakse automaatsetest kommentaaridest"
-
-msgid "Close"
-msgstr "Sulge"
-
-msgid "< &Previous"
-msgstr ""
-
-msgid "&Next >"
-msgstr ""
-
 msgid "Create new translations project"
 msgstr "Loo uus tõlkeprojekt"
 
@@ -1165,6 +1322,12 @@ msgstr "&Avamine..."
 msgid "Open Recent"
 msgstr ""
 
+msgid "Open from Crowdin..."
+msgstr ""
+
+msgid "Open From Crowdin..."
+msgstr ""
+
 msgid "&Save"
 msgstr "&Salvesta"
 
@@ -1213,13 +1376,16 @@ msgstr "&Näita viiteid"
 msgid "&Find..."
 msgstr "&Otsi..."
 
+msgid "Replace..."
+msgstr ""
+
 msgid "Find next"
 msgstr ""
 
 msgid "Find previous"
 msgstr ""
 
-msgid "Find"
+msgid "Find and Replace..."
 msgstr ""
 
 msgid "Find Next"
@@ -1261,6 +1427,12 @@ msgstr ""
 msgid "&Group By Context"
 msgstr ""
 
+msgid "Entries with errors first"
+msgstr ""
+
+msgid "Entries with Errors First"
+msgstr ""
+
 msgid "&Untranslated entries first"
 msgstr "&Tõlkimata tekstid eespool"
 
@@ -1270,6 +1442,9 @@ msgstr "Tõlkimata tekstid &eespool"
 msgid "Show sidebar"
 msgstr ""
 
+msgid "Show status bar"
+msgstr ""
+
 msgid "C&atalog"
 msgstr "&Kataloog"
 
@@ -1285,6 +1460,9 @@ msgstr "Uuendus &POT failist..."
 msgid "Update from &POT File..."
 msgstr "Uuendus &POT failist..."
 
+msgid "Sync with Crowdin"
+msgstr ""
+
 msgid "Fill missing translations from &TM..."
 msgstr ""
 
@@ -1408,6 +1586,9 @@ msgstr ""
 msgid "Catalog properties"
 msgstr "Kataloogi omadused"
 
+msgid "Project name and version:"
+msgstr "Projekti nimi ja versioon:"
+
 msgid "Plural Forms:"
 msgstr "Mitmuse vormid:"
 
@@ -1420,17 +1601,29 @@ msgstr ""
 msgid "Learn about plural forms"
 msgstr "Mitmuse vormide kohta lähemalt uurimine"
 
+msgid "Charset:"
+msgstr "Märgistik:"
+
+msgid "Team:"
+msgstr "Meeskond:"
+
+msgid "Team's email address:"
+msgstr "Meeskonna e-postiaadress:"
+
 msgid "Translation properties"
 msgstr ""
 
+msgid "Sources paths"
+msgstr "Otsingurajad"
+
 msgid "Extract text from source files in the following directories:"
 msgstr "Teksti otsitakse järgnevates kataloogides asuvast lähtekoodist:"
 
 msgid "Base path:"
 msgstr "Baasrada:"
 
-msgid "Sources paths"
-msgstr "Otsingurajad"
+msgid "Sources keywords"
+msgstr "Lähtekoodi võtmesõnad"
 
 msgid ""
 "Use these keywords (function names) to recognize translatable strings\n"
@@ -1442,9 +1635,6 @@ msgstr ""
 msgid "Learn about gettext keywords"
 msgstr ""
 
-msgid "Sources keywords"
-msgstr "Lähtekoodi võtmesõnad"
-
 msgid "Update summary"
 msgstr "Uuendamise kokkuvõte"
 
@@ -1492,7 +1682,7 @@ msgstr "Uuenda kataloog - sünkroniseeri lähtekoodiga"
 msgid "Toggled if selected string has fuzzy translation"
 msgstr "Märgitud, kui valitud tekst sisaldab kahtlast tõlget"
 
-msgid "Show or hide the sidebar."
+msgid "Show or hide the sidebar"
 msgstr ""
 
 #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer.
@@ -1504,6 +1694,9 @@ msgid ""
 "translation corresponds to."
 msgstr ""
 
+msgid "Notes for translators:"
+msgstr "Märkused tõlkijate jaoks:"
+
 msgid "Add comment"
 msgstr ""
 
@@ -1576,14 +1769,21 @@ msgstr ""
 msgid "Open an existing PO file and edit the translation."
 msgstr ""
 
-msgid "Create new translation"
-msgstr ""
-
 msgid ""
 "Take an existing PO file or POT template and create a new translation from "
 "it."
 msgstr ""
 
+msgid "Collaborate on a translation with Crowdin"
+msgstr ""
+
+msgid ""
+"Download a file from Crowdin project, translate and sync your changes back."
+msgstr ""
+
+msgid "What is Crowdin?"
+msgstr ""
+
 msgid "There are no translations. That’s unusual."
 msgstr ""
 
@@ -1616,3 +1816,9 @@ msgstr ""
 
 msgid "Configure source code extraction in Properties."
 msgstr ""
+
+msgid "Sync"
+msgstr ""
+
+msgid "Synchronize the translation with Crowdin"
+msgstr ""
diff --git a/locales/eu.mo b/locales/eu.mo
index 87fd9ae..b5716a3 100644
Binary files a/locales/eu.mo and b/locales/eu.mo differ
diff --git a/locales/eu.po b/locales/eu.po
index e9d69ed..154b12e 100644
--- a/locales/eu.po
+++ b/locales/eu.po
@@ -2,8 +2,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: poedit\n"
 "Report-Msgid-Bugs-To: help at poedit.net\n"
-"POT-Creation-Date: 2015-01-10 16:00+0100\n"
-"PO-Revision-Date: 2015-03-10 12:33-0400\n"
+"POT-Creation-Date: 2015-05-27 11:31+0200\n"
+"PO-Revision-Date: 2015-05-27 05:17-0400\n"
 "Last-Translator: vslavik <vaclav at slavik.io>\n"
 "Language-Team: Basque\n"
 "Language: eu_ES\n"
@@ -91,6 +91,15 @@ msgstr ""
 msgid "Error saving catalog"
 msgstr "Akatsa katalogoa gordetzerakoan"
 
+msgid "PO Translation Files"
+msgstr "PO Itzulpen Agiriak"
+
+msgid "POT Translation Templates"
+msgstr "POT Itzulpen Ereduak"
+
+msgid "All Translation Files"
+msgstr "Itzulpen Agiri Guztiak"
+
 msgid "Merging differences..."
 msgstr "Ezberdintasunak batzen..."
 
@@ -110,6 +119,86 @@ msgstr "Hizkuntza hautapena"
 msgid "You must restart Poedit for this change to take effect."
 msgstr "Poedit berrabiarazi behar duzu aldaketa honek eragina izateko."
 
+msgid "Downloading translations is disabled in this project."
+msgstr "Itzulpenak jeistea ezgaituta dago egitasmo honetan."
+
+msgid "Not authorized, please sign in again."
+msgstr "Baimen gabe, mesedez hasi saioa berriro."
+
+msgid "Sign in to Crowdin"
+msgstr "Hasi saio Crowdin-en"
+
+msgid ""
+"Crowdin is an online localization management platform and collaborative "
+"translation tool. Poedit can seamlessly sync PO files managed at Crowdin."
+msgstr ""
+"Crowdin onlineko lokalizazio kudeaketa plataforma bat  eta elkarlaguntza "
+"itzulpen tresna bat da. Poedit-ek arazo gabe aldiberetu ditzake Crowdinen "
+"kudeatutako PO agiriak."
+
+msgid "Sign In"
+msgstr "Hasi saioa"
+
+msgid "Sign in"
+msgstr "Hasi saioa"
+
+msgid "Sign Out"
+msgstr "Amaitu Saioa"
+
+msgid "Sign out"
+msgstr "Amaitu saioa"
+
+msgid "Waiting for authentication…"
+msgstr "Egiaztapenaren zain..."
+
+msgid "Updating user information…"
+msgstr "Erabiltzaile argibideak eguneratzen..."
+
+msgid "Signed in as:"
+msgstr "Saio hasita honela:"
+
+msgid "Learn More About Crowdin"
+msgstr "Jakin Gehiago Crowdin Buruz"
+
+msgid "Learn more about Crowdin"
+msgstr "Jakin gehiago Crowdin buruz"
+
+msgid "Open Crowdin translation"
+msgstr "Ireki Crowdin itzulpena"
+
+msgid "Project:"
+msgstr "Egitasmoa:"
+
+msgid "Language:"
+msgstr "Hizkuntza:"
+
+msgid "File:"
+msgstr "Agiria:"
+
+msgid "No translation projects listed in your Crowdin account."
+msgstr "Ez dago itzulpen egitasmorik zerrendatuta zure Crowdin kontuan."
+
+msgid "This project has no files that can be translated in Poedit."
+msgstr "Egitasmo ez du Poedit-en itzuli daitekeen agiririk."
+
+msgid "This file can only be edited in Crowdin’s web interface."
+msgstr "Agiri hau Crowdin-en web interfazean besterik ezin da editatu."
+
+msgid "Downloading latest translations…"
+msgstr "Azken itzulpenak jeisten..."
+
+msgid "Syncing with Crowdin"
+msgstr "Crowdin-ekin aldiberetzen"
+
+msgid "Syncing with Crowdin failed."
+msgstr "Hutsegitea Crowdin-ekin aldiberetzean."
+
+msgid "Crowdin error"
+msgstr "Crowdin akatsa"
+
+msgid "Uploading translations…"
+msgstr "Itzulpenak igotzen..."
+
 msgid "&Copy"
 msgstr "&Kopiatu"
 
@@ -156,6 +245,12 @@ msgstr ""
 msgid "don't delete temporary files (for debugging)"
 msgstr "ez ezabatu aldibaterako agiriak (garbiketarako)"
 
+msgid "handle a poedit:// URI"
+msgstr "kudeatu poedit:// URI bat"
+
+msgid "Failed to communicate with Poedit process."
+msgstr "Hutsegitea Poedit prozesuarekin harremantzean."
+
 #, c-format
 msgid "Unhandled exception occurred: %s"
 msgstr "Kudeatu ezinezko salbuespen bat gertatu da: %s"
@@ -166,12 +261,6 @@ msgstr "Kudeatu ezinezko salbuespen bat gertatu da."
 msgid "Open catalog"
 msgstr "Ireki"
 
-msgid "All Files"
-msgstr "Agiri Guztiak"
-
-msgid "PO Translation Files"
-msgstr "PO Itzulpen Agiriak"
-
 #, c-format
 msgid "File '%s' doesn't exist."
 msgstr "'%s' agiria ez dago."
@@ -240,13 +329,13 @@ msgid "Smart Copy/Paste"
 msgstr "Itsatsi/Kopiatu Adimentsua"
 
 msgid "Smart Quotes"
-msgstr "Adartxoak Adimentsuak"
+msgstr "Adartxo Adimentsuak"
 
 msgid "Smart Dashes"
 msgstr "Elkarmarra Adimentsuak"
 
 msgid "Smart Links"
-msgstr "Loturak Adimentsuak"
+msgstr "Lotura Adimentsuak"
 
 msgid "Text Replacement"
 msgstr "Idazki Ordezpena"
@@ -401,6 +490,19 @@ msgstr "Anitza:"
 msgid "Translation:"
 msgstr "Itzulpena:"
 
+msgid ""
+"POT files are only templates and don’t contain any translations themselves.\n"
+"To make a translation, create a new PO file based on the template."
+msgstr ""
+"POT agiriak ereduak besterik ez dira eta ez dute inolako itzulpenik berez.\n"
+"Itzulpena egiteko, sortu PO agiri berri bat ereduan ohinarrituz."
+
+msgid "Create New Translation"
+msgstr "Sortu Itzulpen Berria"
+
+msgid "Create new translation"
+msgstr "Sortu itzulpen berria"
+
 #. TRANSLATORS: %s is language name in its basic form (as you
 #. would see e.g. in a list of supported languages). You may need
 #. to rephrase it, e.g. to an equivalent of "for language %s".
@@ -448,9 +550,6 @@ msgstr "HTML Agiriak"
 msgid "Open catalog template"
 msgstr "Ireki katalogo eredua"
 
-msgid "POT Translation Templates"
-msgstr "POT Itzulpen Ereduak"
-
 msgid "Updating catalog"
 msgstr "Katalogoa eguneratzen"
 
@@ -532,18 +631,25 @@ msgstr[1] ""
 msgid "The translation is ready for use."
 msgstr "Itzulpena erabiltzeko gertu dago."
 
-msgid "No references to this string found."
-msgstr "Ez da kate honentzako xehetasunik aurkitu."
-
-msgid "Please choose the reference you want to show:"
-msgstr "Mesedez hautatu ager dadin nahi duzun xehetasuna:"
-
-msgid "References"
-msgstr "Xehetasunak"
-
 msgid "Context:"
 msgstr "Hitzingurua:"
 
+#, c-format
+msgid "Poedit automatically fixed invalid content in the file “%s”."
+msgstr ""
+"Poedit-ek berezgaitasunez zuzendu ditu \"%s\" agiriko eduki baliogabeak."
+
+msgid ""
+"The file contained duplicate items, which is not allowed in PO files and "
+"would prevent the file from being used. Poedit fixed the issue, but you "
+"should review translations of any items marked as fuzzy and correct them if "
+"necessary."
+msgstr ""
+"Agiriak gai bikoiztuak ditu, zeina ez dago ahalbidetuta PO agirietan eta "
+"agiria erabiltzea saihestuko da. Poedit-ek arazo hau zuzendu du, baina "
+"zalantzazkoa bezala markaturiko gaien itzulpenak berrikusi behar dituzu eta "
+"zuzendu beharrezkoa bada."
+
 msgid "Language of the translation isn't set."
 msgstr "Itzulpenaren hizkuntza ez dago ezarrita."
 
@@ -553,6 +659,24 @@ msgstr "Ezarri Hizkuntza"
 msgid "Set language"
 msgstr "Ezarri hizkuntza "
 
+#. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)."
+msgid ""
+"Suggestions are not available if the translation language is not set "
+"correctly. Other features, such as plural forms, may be affected as well."
+msgstr ""
+"Iradokizunak ez daude eskuragarri itzulpen hizkuntza ez badago zuzen "
+"ezarrita. Beste ezaugarri batzuk, forma anitzak bezalakoak, badaiteke "
+"eragina izatea ere."
+
+msgid "Language of the translation is the same as source language."
+msgstr "Itzulpen hizkuntza iturburu hizkuntzaren berdina da."
+
+msgid "Fix Language"
+msgstr "Zuzendu Hizkuntza"
+
+msgid "Fix language"
+msgstr "Zuzendu hizkuntza"
+
 msgid ""
 "This catalog has entries with plural forms, but doesn't have Plural-Forms "
 "header configured."
@@ -587,6 +711,7 @@ msgstr "Zuzendu idazburua"
 msgid "Plural forms expression used by the catalog is unusual for %s."
 msgstr "Katalogoak erabiltzen dituen anitz formak ezohikoak dira %s-rako."
 
+#. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the catalog is unusual for %s.")"
 msgid "Review"
 msgstr "Berrikusi"
 
@@ -608,6 +733,12 @@ msgid_plural "%d errors"
 msgstr[0] ""
 msgstr[1] "%d akats"
 
+#, c-format
+msgid "%d entry"
+msgid_plural "%d entries"
+msgstr[0] "%d sarrera"
+msgstr[1] "%d sarrera"
+
 msgid " (unsaved)"
 msgstr " (gordegabe)"
 
@@ -734,6 +865,9 @@ msgstr "Dena"
 msgid "Form %i"
 msgstr "Forma %i"
 
+msgid "Singular"
+msgstr "Bakuna"
+
 msgid "Zero"
 msgstr "Zero"
 
@@ -743,6 +877,9 @@ msgstr "Bat"
 msgid "Two"
 msgstr "Bi"
 
+msgid "Plural"
+msgstr "Anitza"
+
 msgid "Other"
 msgstr "Beste"
 
@@ -771,6 +908,12 @@ msgstr "Ezkutatu Albobarra"
 msgid "Show Sidebar"
 msgstr "Erakutsi Albobarra"
 
+msgid "Hide Status Bar"
+msgstr "Ezkutatu Egoera Barra"
+
+msgid "Show Status Bar"
+msgstr "Erakutsi Egoera Barra"
+
 msgid "Source text"
 msgstr "Iturburu idazkia"
 
@@ -780,6 +923,10 @@ msgstr "Itzulpena"
 msgid "ID"
 msgstr "ID-a"
 
+#, c-format
+msgid "Source text — %s"
+msgstr "Iturburu idazkia — %s"
+
 msgid "unknown language"
 msgstr "hizkuntza ezezaguna"
 
@@ -790,57 +937,73 @@ msgstr "Itzulpena — %s"
 msgid "Error:"
 msgstr "Akatsa:"
 
-msgid "Project info"
-msgstr "Egitasmo argibideak"
+msgid "Source file"
+msgstr "Iturburu agiria"
 
-msgid "Project name and version:"
-msgstr "Egitasmoaren izena eta bertsioa:"
+msgid "Source file occurrence:"
+msgstr "Iturburu agiri gertaera:"
 
-msgid "Language:"
-msgstr "Hizkuntza:"
+msgid "Open in Editor"
+msgstr "Ireki Editatzailean"
 
-msgid "Team:"
-msgstr "Taldea:"
+msgid "Open in editor"
+msgstr "Ireki editatzailean"
 
-msgid "Team's email address:"
-msgstr "Taldearen post@ helbidea:"
+msgid "No references for the selected item."
+msgstr "Ez da xehetasunik aurkitu hautaturiko gaiarentzat."
 
-msgid "Charset:"
-msgstr "Hizkikodea:"
+#, c-format
+msgid "Error opening file %s!"
+msgstr "Akatsa %s agiria irekitzerakoan!"
 
-msgid "Source"
-msgstr "Iturburua "
+msgid "Find"
+msgstr "Bilatu"
 
-msgid "Notes"
-msgstr "Oharrak"
+msgid "Replace"
+msgstr "Ordeztu"
 
-msgid "Automatic translation"
-msgstr "Berezgaitasunezko itzulpena"
+#. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.)
+msgid "Options"
+msgstr "Aukerak"
 
-msgid "Fuzzy translation"
-msgstr "Zalantzazko itzulpena"
+msgid "Ignore case"
+msgstr "ezikusi larri-xeheak"
 
-msgid "Notes for translators:"
-msgstr "Itzultzaileentzako oharrak:"
+msgid "Wrap around"
+msgstr "Inguratu"
 
-msgid "Comment:"
-msgstr "Aipamena:"
+msgid "Whole words only"
+msgstr "Hitz osoak bakarrik"
 
-msgid "Source file"
-msgstr "Iturburu agiria"
+msgid "Find in source texts"
+msgstr "Bilatu iturburu idazkietan"
 
-msgid "Source file occurrence:"
-msgstr "Iturburu agiri gertaera:"
+msgid "Find in translations"
+msgstr "Bilatu itzulpenetan"
 
-msgid "Open in Editor"
-msgstr "Ireki Editatzailean"
+msgid "Find in comments"
+msgstr "Bilatu aipamenetan"
 
-msgid "Open in editor"
-msgstr "Ireki editatzailean"
+msgid "Close"
+msgstr "Itxi"
 
-#, c-format
-msgid "Error opening file %s!"
-msgstr "Akatsa %s agiria irekitzerakoan!"
+msgid "Replace All"
+msgstr "Ordeztu Denak"
+
+msgid "Replace all"
+msgstr "Ordeztu denak"
+
+msgid "< &Previous"
+msgstr "< &Aurrekoa"
+
+msgid "&Next >"
+msgstr "&Hurrengoa >"
+
+msgid "String to find"
+msgstr "Bilatzeko katea"
+
+msgid "Replacement string"
+msgstr "Ordezte katea"
 
 #, c-format
 msgid "Cannot execute program: %s"
@@ -1043,9 +1206,19 @@ msgstr "Berria"
 msgid "Edit"
 msgstr "Editatu"
 
+msgid "Delete extractor"
+msgstr "Ezabatu ateratzailea"
+
+#, c-format
+msgid "Are you sure you want to delete the “%s” extractor?"
+msgstr "Zihur zaude \"%s\" ateratzailea ezabatzea nahi duzula?"
+
 msgid "Extractors"
 msgstr "Ateratzaileak"
 
+msgid "Accounts"
+msgstr "Kontuak"
+
 msgid "Automatically check for updates"
 msgstr "Berezgaitasunez egiaztatu eguneraketak"
 
@@ -1088,8 +1261,41 @@ msgstr "Heutsi dauden agirien heuskarriari"
 msgid "Advanced"
 msgstr "Aurreratua"
 
-msgid "Additional keywords"
-msgstr "Giltza-hitz gehigarriak:"
+msgid ""
+"<big>Drag and Drop Folders Here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+"<big>Arrastatu eta Askatu Agiritegiak Hona</big>\n"
+"\n"
+"edo erabili + botoia"
+
+msgid ""
+"<big>Drag and drop folders here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+"<big>Arrastatu eta askatu agiritegiak hona</big>\n"
+"\n"
+"edo erabili + botoia"
+
+msgid "Add Folders..."
+msgstr "Gehitu Agiritegiak..."
+
+msgid "Add folders..."
+msgstr "Gehitu agiritegiak..."
+
+msgid "Add Files..."
+msgstr "Gehitu Agiriak..."
+
+msgid "Add files..."
+msgstr "Gehitu agiriak..."
+
+msgid "Add Wildcard..."
+msgstr "Gehitu Ordez-hizkia..."
+
+msgid "Add wildcard..."
+msgstr "Gehitu ordez-hizkia..."
 
 msgid "Paths"
 msgstr "Helburuak"
@@ -1097,6 +1303,9 @@ msgstr "Helburuak"
 msgid "Excluded paths"
 msgstr "Baztertutako helburuak"
 
+msgid "Additional keywords"
+msgstr "Giltza-hitz gehigarriak:"
+
 msgid "Name of the project the translation is for"
 msgstr "Itzulpen egitasmo honetarako izena"
 
@@ -1109,6 +1318,9 @@ msgstr "UTF-8 (gomendatua)"
 msgid "Please save the file first. This section cannot be edited until then."
 msgstr "Mesedez gorde agiria lehenik. Atal hau ezin ordura arte editatu."
 
+msgid "Comment:"
+msgstr "Aipamena:"
+
 msgid "OK"
 msgstr "Ongi"
 
@@ -1118,42 +1330,6 @@ msgstr "&Garbitu"
 msgid "Clear the comment"
 msgstr "Garbitu aipamena "
 
-msgid "Find..."
-msgstr "Bilatu..."
-
-msgid "String to find:"
-msgstr "Bilatu beharreko katea:"
-
-msgid "Case sensitive"
-msgstr "Bereizi hizki larri-xeheak"
-
-msgid "Start from the first item"
-msgstr "Hasi lehen gaitik"
-
-msgid "Whole words only"
-msgstr "Hitz osoak bakarrik"
-
-msgid "Find in original strings"
-msgstr "Bilatu jatorrizko kateetan"
-
-msgid "Find in translations"
-msgstr "Bilatu itzulpenetan"
-
-msgid "Find in comments"
-msgstr "Bilatu aipamenetan"
-
-msgid "Find in automatic comments"
-msgstr "Bilatu berezgaitasunezko aipamenetan"
-
-msgid "Close"
-msgstr "Itxi"
-
-msgid "< &Previous"
-msgstr "< &Aurrekoa"
-
-msgid "&Next >"
-msgstr "&Hurrengoa >"
-
 msgid "Create new translations project"
 msgstr "Sortu itzulpen egitasmo berria"
 
@@ -1208,6 +1384,12 @@ msgstr "&Ireki..."
 msgid "Open Recent"
 msgstr "Ireki Berrikia"
 
+msgid "Open from Crowdin..."
+msgstr "Ireki Crowdin-etik..."
+
+msgid "Open From Crowdin..."
+msgstr "Ireki Crowdin-etik..."
+
 msgid "&Save"
 msgstr "&Gorde"
 
@@ -1256,14 +1438,17 @@ msgstr "Erakutsi Xehetasunak"
 msgid "&Find..."
 msgstr "Bilatu..."
 
+msgid "Replace..."
+msgstr "Ordeztu..."
+
 msgid "Find next"
 msgstr "Bilatu &hurrengoa"
 
 msgid "Find previous"
 msgstr "Bilatu a&urrekoa"
 
-msgid "Find"
-msgstr "Bilatu"
+msgid "Find and Replace..."
+msgstr "Bilatu eta Ordeztu..."
 
 msgid "Find Next"
 msgstr "Bilatu Hurrengoa"
@@ -1304,6 +1489,12 @@ msgstr "&Multzokatu hitzinguruz"
 msgid "&Group By Context"
 msgstr "&Multzokatu Hitzinguruz"
 
+msgid "Entries with errors first"
+msgstr "Akatsak dituzten sarrerak lehenik"
+
+msgid "Entries with Errors First"
+msgstr "Akatsak dituzten Sarrerak Lehenik"
+
 msgid "&Untranslated entries first"
 msgstr "Itzuligabeko &Sarrerak Lehenik"
 
@@ -1313,6 +1504,9 @@ msgstr "Itzuligabeko &Sarrerak Lehenik"
 msgid "Show sidebar"
 msgstr "Erakutsi albobarra"
 
+msgid "Show status bar"
+msgstr "Erakutsi egoera barra"
+
 msgid "C&atalog"
 msgstr "&Katalogoa"
 
@@ -1328,6 +1522,9 @@ msgstr "Eguneratu &POT agiritik"
 msgid "Update from &POT File..."
 msgstr "Eguneratu &POT Agiritik..."
 
+msgid "Sync with Crowdin"
+msgstr "Aldiberetu Crowdin-ekin"
+
 msgid "Fill missing translations from &TM..."
 msgstr "Bete ez dauden itzulpenak &IO-tik..."
 
@@ -1455,6 +1652,9 @@ msgstr ""
 msgid "Catalog properties"
 msgstr "Katalogoaren ezaugarriak"
 
+msgid "Project name and version:"
+msgstr "Egitasmoaren izena eta bertsioa:"
+
 msgid "Plural Forms:"
 msgstr "Anitz Formak:"
 
@@ -1467,17 +1667,29 @@ msgstr "Erabili norbere adierazpena"
 msgid "Learn about plural forms"
 msgstr "Jakin gehiago anitz formetaz"
 
+msgid "Charset:"
+msgstr "Hizkikodea:"
+
+msgid "Team:"
+msgstr "Taldea:"
+
+msgid "Team's email address:"
+msgstr "Taldearen post@ helbidea:"
+
 msgid "Translation properties"
 msgstr "Itzulpenaren ezaugarriak"
 
+msgid "Sources paths"
+msgstr "Iturburuen helburuak"
+
 msgid "Extract text from source files in the following directories:"
 msgstr "Atera idazkia iturburu agirietatik hurrengo zuzenbideetan:"
 
 msgid "Base path:"
 msgstr "Ohinarri helburua:"
 
-msgid "Sources paths"
-msgstr "Iturburuen helburuak"
+msgid "Sources keywords"
+msgstr "Iturburuetako giltza-hitzak"
 
 msgid ""
 "Use these keywords (function names) to recognize translatable strings\n"
@@ -1489,9 +1701,6 @@ msgstr ""
 msgid "Learn about gettext keywords"
 msgstr "Jakin gehiago gettext giltza-hitzetaz"
 
-msgid "Sources keywords"
-msgstr "Iturburuetako giltza-hitzak"
-
 msgid "Update summary"
 msgstr "Eguneratu laburpena"
 
@@ -1539,8 +1748,8 @@ msgstr "Eguneratu katalogoa - aldiberetu iturburuekin "
 msgid "Toggled if selected string has fuzzy translation"
 msgstr "Sakatuta hautaturiko katea zalantzazko itzulpena bada"
 
-msgid "Show or hide the sidebar."
-msgstr "Erakutsi edo ezkutatu albobarra."
+msgid "Show or hide the sidebar"
+msgstr "Erakutsi edo ezkutatu albobarra"
 
 #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer.
 msgid "Previous source text:"
@@ -1553,6 +1762,9 @@ msgstr ""
 "Zalantzazko itzulpena dagokion iturburu idazki zaharra (eguneraketa batean "
 "aldatu aurrekoa)."
 
+msgid "Notes for translators:"
+msgstr "Itzultzaileentzako oharrak:"
+
 msgid "Add comment"
 msgstr "Gehitu aipamena"
 
@@ -1633,9 +1845,6 @@ msgstr "Editatu itzulpen bat"
 msgid "Open an existing PO file and edit the translation."
 msgstr "Ireki badagoen PO agiri bat eta editatu itzulpena."
 
-msgid "Create new translation"
-msgstr "Sortu itzulpen berria"
-
 msgid ""
 "Take an existing PO file or POT template and create a new translation from "
 "it."
@@ -1643,6 +1852,18 @@ msgstr ""
 "Hartu badagoen PO agiri bat edo POT eredu bat eta sortu itzulpen berri bat "
 "bertatik."
 
+msgid "Collaborate on a translation with Crowdin"
+msgstr "Lagundu itzulpen batean Crowdin-ekin"
+
+msgid ""
+"Download a file from Crowdin project, translate and sync your changes back."
+msgstr ""
+"Jeitsi agiri bat Crowdin egitasmotik, itzuli eta aldiberetu zure aldaketak "
+"berriro."
+
+msgid "What is Crowdin?"
+msgstr "Zer da Crowdin?"
+
 msgid "There are no translations. That’s unusual."
 msgstr "Ez dago itzulpenik. Hori ezohikoa da."
 
@@ -1680,3 +1901,9 @@ msgstr "&Atera iturburuetatik"
 
 msgid "Configure source code extraction in Properties."
 msgstr "Itxuratu iturburu kode aterapena Ezaugarriak-en"
+
+msgid "Sync"
+msgstr "Aldiberetu"
+
+msgid "Synchronize the translation with Crowdin"
+msgstr "Aldiberetu itzulpena Crowdin-ekin"
diff --git a/locales/fa.mo b/locales/fa.mo
index 0d916ec..fe40d1a 100644
Binary files a/locales/fa.mo and b/locales/fa.mo differ
diff --git a/locales/fa.po b/locales/fa.po
index 057f4ac..3a0e787 100644
--- a/locales/fa.po
+++ b/locales/fa.po
@@ -2,8 +2,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: poedit\n"
 "Report-Msgid-Bugs-To: help at poedit.net\n"
-"POT-Creation-Date: 2015-01-10 16:00+0100\n"
-"PO-Revision-Date: 2015-03-10 12:33-0400\n"
+"POT-Creation-Date: 2015-05-27 11:31+0200\n"
+"PO-Revision-Date: 2015-05-27 05:17-0400\n"
 "Last-Translator: vslavik <vaclav at slavik.io>\n"
 "Language-Team: Persian\n"
 "Language: fa_IR\n"
@@ -82,6 +82,15 @@ msgstr ""
 msgid "Error saving catalog"
 msgstr "خطا در ذخیره کردن پوشه"
 
+msgid "PO Translation Files"
+msgstr "فایل های ترجمه Po"
+
+msgid "POT Translation Templates"
+msgstr "قالب ترجمه POT"
+
+msgid "All Translation Files"
+msgstr ""
+
 msgid "Merging differences..."
 msgstr "پیوست تفاوت‌ها..."
 
@@ -93,7 +102,7 @@ msgid "(Use default language)"
 msgstr "(استفاده از زبان پیش‌فرض)"
 
 msgid "Select your preferred language"
-msgstr ""
+msgstr "زبانی که ترجیحی را انتخاب کنید"
 
 msgid "Language selection"
 msgstr "گزینش زبان"
@@ -102,6 +111,85 @@ msgid "You must restart Poedit for this change to take effect."
 msgstr ""
 "شما باید Poedit را برای تأثیر کردن این تغییرات دوباره راه‌اندازی نمایید."
 
+msgid "Downloading translations is disabled in this project."
+msgstr "دانلود ترجمه برای این پروژه مسدود است."
+
+msgid "Not authorized, please sign in again."
+msgstr "ورودی غیر مجاز,لطفا مجددا وارد شوید."
+
+msgid "Sign in to Crowdin"
+msgstr "ورود به Crowdin"
+
+msgid ""
+"Crowdin is an online localization management platform and collaborative "
+"translation tool. Poedit can seamlessly sync PO files managed at Crowdin."
+msgstr ""
+"Crowdin یک برنامه ی آنلاین محلی سازی زبان و ابزار ترجمه گروهی و مشترکانه "
+"است. Poedit به صورت پیشفرض توانایی همگام سازی فایل های PO در Crowdin دارد."
+
+msgid "Sign In"
+msgstr "ورود"
+
+msgid "Sign in"
+msgstr "ورود"
+
+msgid "Sign Out"
+msgstr "خروج"
+
+msgid "Sign out"
+msgstr ""
+
+msgid "Waiting for authentication…"
+msgstr ""
+
+msgid "Updating user information…"
+msgstr ""
+
+msgid "Signed in as:"
+msgstr ""
+
+msgid "Learn More About Crowdin"
+msgstr ""
+
+msgid "Learn more about Crowdin"
+msgstr ""
+
+msgid "Open Crowdin translation"
+msgstr ""
+
+msgid "Project:"
+msgstr ""
+
+msgid "Language:"
+msgstr "زبان:"
+
+msgid "File:"
+msgstr ""
+
+msgid "No translation projects listed in your Crowdin account."
+msgstr ""
+
+msgid "This project has no files that can be translated in Poedit."
+msgstr ""
+
+msgid "This file can only be edited in Crowdin’s web interface."
+msgstr ""
+
+msgid "Downloading latest translations…"
+msgstr ""
+
+msgid "Syncing with Crowdin"
+msgstr ""
+
+msgid "Syncing with Crowdin failed."
+msgstr ""
+
+msgid "Crowdin error"
+msgstr ""
+
+msgid "Uploading translations…"
+msgstr ""
+
 msgid "&Copy"
 msgstr "& کپی"
 
@@ -146,6 +234,12 @@ msgstr ""
 msgid "don't delete temporary files (for debugging)"
 msgstr ""
 
+msgid "handle a poedit:// URI"
+msgstr ""
+
+msgid "Failed to communicate with Poedit process."
+msgstr ""
+
 #, c-format
 msgid "Unhandled exception occurred: %s"
 msgstr ""
@@ -156,12 +250,6 @@ msgstr ""
 msgid "Open catalog"
 msgstr "باز کردن پوشه"
 
-msgid "All Files"
-msgstr "همه پرونده ها"
-
-msgid "PO Translation Files"
-msgstr "فایل های ترجمه Po"
-
 #, c-format
 msgid "File '%s' doesn't exist."
 msgstr "پرونده '%s' وجود ندارد.."
@@ -389,6 +477,17 @@ msgstr "جمع:"
 msgid "Translation:"
 msgstr "ترجمه:"
 
+msgid ""
+"POT files are only templates and don’t contain any translations themselves.\n"
+"To make a translation, create a new PO file based on the template."
+msgstr ""
+
+msgid "Create New Translation"
+msgstr ""
+
+msgid "Create new translation"
+msgstr "ایجاد ترجمه جدید"
+
 #. TRANSLATORS: %s is language name in its basic form (as you
 #. would see e.g. in a list of supported languages). You may need
 #. to rephrase it, e.g. to an equivalent of "for language %s".
@@ -436,9 +535,6 @@ msgstr "پرونده HTML"
 msgid "Open catalog template"
 msgstr "باز کردن الگوی پوشه"
 
-msgid "POT Translation Templates"
-msgstr "قالب ترجمه POT"
-
 msgid "Updating catalog"
 msgstr "به روزرسانی لیست"
 
@@ -505,18 +601,20 @@ msgstr[0] "ترجمه آماده برای استفاده است، اما نوش
 msgid "The translation is ready for use."
 msgstr "ترجمه آماده برای استفاده است."
 
-msgid "No references to this string found."
-msgstr "هیچ مرجعی برای این رشته یافت نشد."
-
-msgid "Please choose the reference you want to show:"
-msgstr "لطفاً مرجعی را که می‌خواهید نشان داده شود را انتخاب نمایید:"
-
-msgid "References"
-msgstr "مرجع‌ها"
-
 msgid "Context:"
 msgstr "چهار چوب:"
 
+#, c-format
+msgid "Poedit automatically fixed invalid content in the file “%s”."
+msgstr ""
+
+msgid ""
+"The file contained duplicate items, which is not allowed in PO files and "
+"would prevent the file from being used. Poedit fixed the issue, but you "
+"should review translations of any items marked as fuzzy and correct them if "
+"necessary."
+msgstr ""
+
 msgid "Language of the translation isn't set."
 msgstr "زبان ترجمه مشخص نگردیده است."
 
@@ -526,6 +624,21 @@ msgstr "انتخاب زبان"
 msgid "Set language"
 msgstr "انتخاب زبان"
 
+#. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)."
+msgid ""
+"Suggestions are not available if the translation language is not set "
+"correctly. Other features, such as plural forms, may be affected as well."
+msgstr ""
+
+msgid "Language of the translation is the same as source language."
+msgstr ""
+
+msgid "Fix Language"
+msgstr ""
+
+msgid "Fix language"
+msgstr ""
+
 msgid ""
 "This catalog has entries with plural forms, but doesn't have Plural-Forms "
 "header configured."
@@ -556,6 +669,7 @@ msgstr "تعمیر سرنویس"
 msgid "Plural forms expression used by the catalog is unusual for %s."
 msgstr ""
 
+#. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the catalog is unusual for %s.")"
 msgid "Review"
 msgstr "بررسی"
 
@@ -576,6 +690,11 @@ msgid "%d error"
 msgid_plural "%d errors"
 msgstr[0] "%d خطا"
 
+#, c-format
+msgid "%d entry"
+msgid_plural "%d entries"
+msgstr[0] ""
+
 msgid " (unsaved)"
 msgstr " (ذخیره نشده)"
 
@@ -687,6 +806,9 @@ msgstr "همه چیز"
 msgid "Form %i"
 msgstr "از %i"
 
+msgid "Singular"
+msgstr ""
+
 msgid "Zero"
 msgstr "صفر"
 
@@ -696,6 +818,9 @@ msgstr "یک"
 msgid "Two"
 msgstr "دو"
 
+msgid "Plural"
+msgstr ""
+
 msgid "Other"
 msgstr "سایر موارد"
 
@@ -724,6 +849,12 @@ msgstr "پنهان کردن نوار جانبی"
 msgid "Show Sidebar"
 msgstr "نمایش نوار جانبی"
 
+msgid "Hide Status Bar"
+msgstr ""
+
+msgid "Show Status Bar"
+msgstr ""
+
 msgid "Source text"
 msgstr "منبع متن"
 
@@ -733,6 +864,10 @@ msgstr "ترجمه"
 msgid "ID"
 msgstr "شناسه"
 
+#, c-format
+msgid "Source text — %s"
+msgstr ""
+
 msgid "unknown language"
 msgstr "زبان ناشناخته"
 
@@ -743,57 +878,73 @@ msgstr "ترجمه — %s"
 msgid "Error:"
 msgstr "خطا:"
 
-msgid "Project info"
-msgstr "اطلاعات پروژه"
+msgid "Source file"
+msgstr "پرونده منبع"
 
-msgid "Project name and version:"
-msgstr "نسخه و نام پروژه:"
+msgid "Source file occurrence:"
+msgstr ""
 
-msgid "Language:"
-msgstr "زبان:"
+msgid "Open in Editor"
+msgstr "باز کردن در ویرایشگر"
 
-msgid "Team:"
-msgstr "گروه:"
+msgid "Open in editor"
+msgstr "باز کردن در ویرایشگر"
 
-msgid "Team's email address:"
-msgstr "نشانی پست الکترونیکی گروه:"
+msgid "No references for the selected item."
+msgstr ""
 
-msgid "Charset:"
-msgstr "مجموعه‌نویسه:"
+#, c-format
+msgid "Error opening file %s!"
+msgstr "خطا در باز کردن پرونده %s!"
 
-msgid "Source"
-msgstr "منبع"
+msgid "Find"
+msgstr "یافتن"
 
-msgid "Notes"
-msgstr "یادداشت‌ها"
+msgid "Replace"
+msgstr ""
 
-msgid "Automatic translation"
-msgstr "ترجمه خودکار"
+#. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.)
+msgid "Options"
+msgstr ""
 
-msgid "Fuzzy translation"
-msgstr "ترجمه فازی"
+msgid "Ignore case"
+msgstr ""
 
-msgid "Notes for translators:"
-msgstr "یادداشت ها برای مترجمان:"
+msgid "Wrap around"
+msgstr ""
 
-msgid "Comment:"
-msgstr "توضیح:"
+msgid "Whole words only"
+msgstr "فقط کلمه کامل"
 
-msgid "Source file"
-msgstr "پرونده منبع"
+msgid "Find in source texts"
+msgstr ""
 
-msgid "Source file occurrence:"
+msgid "Find in translations"
 msgstr ""
 
-msgid "Open in Editor"
-msgstr "باز کردن در ویرایشگر"
+msgid "Find in comments"
+msgstr "یافتن در توضیحات"
 
-msgid "Open in editor"
-msgstr "باز کردن در ویرایشگر"
+msgid "Close"
+msgstr "ببند"
 
-#, c-format
-msgid "Error opening file %s!"
-msgstr "خطا در باز کردن پرونده %s!"
+msgid "Replace All"
+msgstr ""
+
+msgid "Replace all"
+msgstr ""
+
+msgid "< &Previous"
+msgstr "قبلی >"
+
+msgid "&Next >"
+msgstr "& بعدی >"
+
+msgid "String to find"
+msgstr ""
+
+msgid "Replacement string"
+msgstr ""
 
 #, c-format
 msgid "Cannot execute program: %s"
@@ -986,9 +1137,19 @@ msgstr "جدید"
 msgid "Edit"
 msgstr "ویرایش"
 
+msgid "Delete extractor"
+msgstr ""
+
+#, c-format
+msgid "Are you sure you want to delete the “%s” extractor?"
+msgstr ""
+
 msgid "Extractors"
 msgstr "استخراج کننده"
 
+msgid "Accounts"
+msgstr ""
+
 msgid "Automatically check for updates"
 msgstr ""
 
@@ -1027,8 +1188,35 @@ msgstr ""
 msgid "Advanced"
 msgstr "پیشرفته"
 
-msgid "Additional keywords"
-msgstr "واژه های كليدی اضافی"
+msgid ""
+"<big>Drag and Drop Folders Here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+
+msgid ""
+"<big>Drag and drop folders here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+
+msgid "Add Folders..."
+msgstr ""
+
+msgid "Add folders..."
+msgstr ""
+
+msgid "Add Files..."
+msgstr ""
+
+msgid "Add files..."
+msgstr ""
+
+msgid "Add Wildcard..."
+msgstr ""
+
+msgid "Add wildcard..."
+msgstr ""
 
 msgid "Paths"
 msgstr "مسیرها"
@@ -1036,6 +1224,9 @@ msgstr "مسیرها"
 msgid "Excluded paths"
 msgstr "مسیر های جدا شده"
 
+msgid "Additional keywords"
+msgstr "واژه های كليدی اضافی"
+
 msgid "Name of the project the translation is for"
 msgstr ""
 
@@ -1048,6 +1239,9 @@ msgstr ""
 msgid "Please save the file first. This section cannot be edited until then."
 msgstr ""
 
+msgid "Comment:"
+msgstr "توضیح:"
+
 msgid "OK"
 msgstr "تایید"
 
@@ -1057,42 +1251,6 @@ msgstr ""
 msgid "Clear the comment"
 msgstr "پاک کردن توضیح"
 
-msgid "Find..."
-msgstr "یافتن..."
-
-msgid "String to find:"
-msgstr "رشته‌ای برای یافتن: "
-
-msgid "Case sensitive"
-msgstr "کازه"
-
-msgid "Start from the first item"
-msgstr "شروع از اولین مورد"
-
-msgid "Whole words only"
-msgstr "فقط کلمه کامل"
-
-msgid "Find in original strings"
-msgstr "یافتن در رشته‌های اصلی "
-
-msgid "Find in translations"
-msgstr ""
-
-msgid "Find in comments"
-msgstr "یافتن در توضیحات"
-
-msgid "Find in automatic comments"
-msgstr "یافتن در ترجمه‌ها"
-
-msgid "Close"
-msgstr "ببند"
-
-msgid "< &Previous"
-msgstr "قبلی >"
-
-msgid "&Next >"
-msgstr "& بعدی >"
-
 msgid "Create new translations project"
 msgstr "ایجاد یک پروژه‌ی ترجمه جدید"
 
@@ -1147,6 +1305,12 @@ msgstr "&باز کردن..."
 msgid "Open Recent"
 msgstr ""
 
+msgid "Open from Crowdin..."
+msgstr ""
+
+msgid "Open From Crowdin..."
+msgstr ""
+
 msgid "&Save"
 msgstr "&ذخیره"
 
@@ -1195,14 +1359,17 @@ msgstr ""
 msgid "&Find..."
 msgstr "&یافتن..."
 
+msgid "Replace..."
+msgstr ""
+
 msgid "Find next"
 msgstr "یافتن بعدی"
 
 msgid "Find previous"
 msgstr "یافتن قبلی"
 
-msgid "Find"
-msgstr "یافتن"
+msgid "Find and Replace..."
+msgstr ""
 
 msgid "Find Next"
 msgstr "یافتن بعدی"
@@ -1243,6 +1410,12 @@ msgstr "& گروه بندی بر اساس زمینه"
 msgid "&Group By Context"
 msgstr "& گروه بندی بر اساس زمینه"
 
+msgid "Entries with errors first"
+msgstr ""
+
+msgid "Entries with Errors First"
+msgstr ""
+
 msgid "&Untranslated entries first"
 msgstr "اول ورود ترجمه نشده ها"
 
@@ -1252,6 +1425,9 @@ msgstr "اول ورود ترجمه نشده ها"
 msgid "Show sidebar"
 msgstr "نمایش نوار جانبی"
 
+msgid "Show status bar"
+msgstr ""
+
 msgid "C&atalog"
 msgstr "پوشه"
 
@@ -1267,6 +1443,9 @@ msgstr "بروزسازی از پرونده &POT..."
 msgid "Update from &POT File..."
 msgstr "بروزسازی از پرونده POT..."
 
+msgid "Sync with Crowdin"
+msgstr ""
+
 msgid "Fill missing translations from &TM..."
 msgstr ""
 
@@ -1388,6 +1567,9 @@ msgstr ""
 msgid "Catalog properties"
 msgstr ""
 
+msgid "Project name and version:"
+msgstr "نسخه و نام پروژه:"
+
 msgid "Plural Forms:"
 msgstr "حالت‌های جمع:"
 
@@ -1400,17 +1582,29 @@ msgstr ""
 msgid "Learn about plural forms"
 msgstr ""
 
+msgid "Charset:"
+msgstr "مجموعه‌نویسه:"
+
+msgid "Team:"
+msgstr "گروه:"
+
+msgid "Team's email address:"
+msgstr "نشانی پست الکترونیکی گروه:"
+
 msgid "Translation properties"
 msgstr ""
 
+msgid "Sources paths"
+msgstr ""
+
 msgid "Extract text from source files in the following directories:"
 msgstr ""
 
 msgid "Base path:"
 msgstr "مسیر پایه:"
 
-msgid "Sources paths"
-msgstr ""
+msgid "Sources keywords"
+msgstr "واژه های كليدی منابع"
 
 msgid ""
 "Use these keywords (function names) to recognize translatable strings\n"
@@ -1420,9 +1614,6 @@ msgstr ""
 msgid "Learn about gettext keywords"
 msgstr ""
 
-msgid "Sources keywords"
-msgstr "واژه های كليدی منابع"
-
 msgid "Update summary"
 msgstr "خلاصه بروزسازی"
 
@@ -1470,8 +1661,8 @@ msgstr "پوشه بروزسازی - همزمان سازی آن با منابع"
 msgid "Toggled if selected string has fuzzy translation"
 msgstr "تعویض اگر رشته انتخاب شده ترجمه نامعلوم دارد"
 
-msgid "Show or hide the sidebar."
-msgstr "نمایش یا عدم نمایش نوار."
+msgid "Show or hide the sidebar"
+msgstr "نمایش یا عدم نمایش نوار"
 
 #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer.
 msgid "Previous source text:"
@@ -1482,6 +1673,9 @@ msgid ""
 "translation corresponds to."
 msgstr ""
 
+msgid "Notes for translators:"
+msgstr "یادداشت ها برای مترجمان:"
+
 msgid "Add comment"
 msgstr "اضافه کردن نظر"
 
@@ -1554,14 +1748,21 @@ msgstr "ویرایش ترجمه"
 msgid "Open an existing PO file and edit the translation."
 msgstr ""
 
-msgid "Create new translation"
-msgstr "ایجاد ترجمه جدید"
-
 msgid ""
 "Take an existing PO file or POT template and create a new translation from "
 "it."
 msgstr ""
 
+msgid "Collaborate on a translation with Crowdin"
+msgstr ""
+
+msgid ""
+"Download a file from Crowdin project, translate and sync your changes back."
+msgstr ""
+
+msgid "What is Crowdin?"
+msgstr ""
+
 msgid "There are no translations. That’s unusual."
 msgstr ""
 
@@ -1594,3 +1795,9 @@ msgstr ""
 
 msgid "Configure source code extraction in Properties."
 msgstr ""
+
+msgid "Sync"
+msgstr ""
+
+msgid "Synchronize the translation with Crowdin"
+msgstr ""
diff --git a/locales/fi.mo b/locales/fi.mo
index ee44a43..5e2e2cb 100644
Binary files a/locales/fi.mo and b/locales/fi.mo differ
diff --git a/locales/fi.po b/locales/fi.po
index 904f5f2..fb12bf2 100644
--- a/locales/fi.po
+++ b/locales/fi.po
@@ -2,8 +2,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: poedit\n"
 "Report-Msgid-Bugs-To: help at poedit.net\n"
-"POT-Creation-Date: 2015-01-10 16:00+0100\n"
-"PO-Revision-Date: 2015-03-10 12:33-0400\n"
+"POT-Creation-Date: 2015-05-27 11:31+0200\n"
+"PO-Revision-Date: 2015-05-27 05:17-0400\n"
 "Last-Translator: vslavik <vaclav at slavik.io>\n"
 "Language-Team: Finnish\n"
 "Language: fi_FI\n"
@@ -28,12 +28,12 @@ msgstr "Älä näytä enää"
 #, c-format
 msgid "%i line of file '%s' was not loaded correctly."
 msgid_plural "%i lines of file '%s' were not loaded correctly."
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "%i rivi tiedostosta ”%s” ei latautunut oikein."
+msgstr[1] "%i riviä tiedostosta ”%s” ei latautunut oikein."
 
 #, c-format
 msgid "Line %d of file '%s' is corrupted (not valid %s data)."
-msgstr ""
+msgstr "Rivi %d tiedostossa ”%s” on korruptoitunut (ei kelvollista %s-dataa)."
 
 #, c-format
 msgid "Malformed header: '%s'"
@@ -93,6 +93,15 @@ msgstr ""
 msgid "Error saving catalog"
 msgstr "Virhe katalogia tallennettaessa"
 
+msgid "PO Translation Files"
+msgstr "PO-käännöstiedostot"
+
+msgid "POT Translation Templates"
+msgstr "POT-käännöspohjat"
+
+msgid "All Translation Files"
+msgstr "Kaikki käännöstiedostot"
+
 msgid "Merging differences..."
 msgstr "Yhdistetään eroavaisuuksia..."
 
@@ -112,8 +121,88 @@ msgstr "Kielen valinta"
 msgid "You must restart Poedit for this change to take effect."
 msgstr "Poedit täytyy käynnistää uudestaan muutoksien käyttöön ottamiseksi."
 
-msgid "&Copy"
+msgid "Downloading translations is disabled in this project."
+msgstr "Käännösten lataus on poistettu käytöstä tässä projektissa."
+
+msgid "Not authorized, please sign in again."
+msgstr "Ei valtuutusta; kirjaudu uudelleen."
+
+msgid "Sign in to Crowdin"
+msgstr "Kirjaudu Crowdiniin"
+
+msgid ""
+"Crowdin is an online localization management platform and collaborative "
+"translation tool. Poedit can seamlessly sync PO files managed at Crowdin."
 msgstr ""
+"Crowdin on verkossa toimiva lokalisoinninhallinta-alusta ja yhteistyökalu "
+"kääntämiseen. Poedit osaa saumattomasti synkronoida Crowdinissa hallittuja "
+"PO-tiedostoja."
+
+msgid "Sign In"
+msgstr "Kirjaudu"
+
+msgid "Sign in"
+msgstr "Kirjaudu"
+
+msgid "Sign Out"
+msgstr "Kirjaudu ulos"
+
+msgid "Sign out"
+msgstr "Kirjaudu ulos"
+
+msgid "Waiting for authentication…"
+msgstr "Odotetaan todennusta..."
+
+msgid "Updating user information…"
+msgstr "Päivitetään käyttäjätietoja..."
+
+msgid "Signed in as:"
+msgstr "Kirjautuneena käyttäjänä:"
+
+msgid "Learn More About Crowdin"
+msgstr "Lisätietoja Crowdinista"
+
+msgid "Learn more about Crowdin"
+msgstr "Lisätietoja Crowdinista"
+
+msgid "Open Crowdin translation"
+msgstr "Avaa Crowdin-käännös"
+
+msgid "Project:"
+msgstr "Projekti:"
+
+msgid "Language:"
+msgstr "Kieli:"
+
+msgid "File:"
+msgstr "Tiedosto:"
+
+msgid "No translation projects listed in your Crowdin account."
+msgstr "Crowdin-tiliisi ei liity käännösprojekteja."
+
+msgid "This project has no files that can be translated in Poedit."
+msgstr "Tässä projektissa ei ole Poeditillä käännettäviä tiedostoja."
+
+msgid "This file can only be edited in Crowdin’s web interface."
+msgstr "Tätä tiedostoa voi muokata vain Crowdinin web-käyttöliittymässä."
+
+msgid "Downloading latest translations…"
+msgstr "Ladataan uusimmat käännökset..."
+
+msgid "Syncing with Crowdin"
+msgstr "Synkronoidaan Crowdiniin"
+
+msgid "Syncing with Crowdin failed."
+msgstr "Synkronointi Crowdiniin epäonnistui."
+
+msgid "Crowdin error"
+msgstr "Crowdin-virhe"
+
+msgid "Uploading translations…"
+msgstr "Lähetetään käännöksiä..."
+
+msgid "&Copy"
+msgstr "&Kopioi"
 
 msgid "Learn more"
 msgstr "Lisätietoja"
@@ -137,41 +226,43 @@ msgid "Parsing %s files..."
 msgstr "Jäsennetään %s tiedostoa..."
 
 msgid "Failed to load extracted catalog."
-msgstr "Puretun katalogin lataaminen epäonnistui."
+msgstr "Poimitun katalogin lataaminen epäonnistui."
 
 msgid "&Help"
 msgstr "&Ohje"
 
 msgid "MO files can’t be directly edited in Poedit."
-msgstr ""
+msgstr "MO-tiedostoja ei voi suoraan muokata Poeditillä."
 
 msgid "Error opening file"
-msgstr ""
+msgstr "Virhe tiedoston avaamisessa"
 
 msgid ""
 "Please open and edit the corresponding PO file instead. When you save it, "
 "the MO file will be updated as well."
 msgstr ""
+"Avaa ja muokkaa sen sijaan vastaavaa PO-tiedostoa. Kun se tallennetaan, MO-"
+"tiedosto päivittyy samalla."
 
 msgid "don't delete temporary files (for debugging)"
 msgstr "älä poista tilapäistiedostoja (vianjäljitystä varten)"
 
+msgid "handle a poedit:// URI"
+msgstr "käsittele poedit://-osoite"
+
+msgid "Failed to communicate with Poedit process."
+msgstr "Kommunikointi Poedit-prosessin kanssa epäonnistui."
+
 #, c-format
 msgid "Unhandled exception occurred: %s"
-msgstr ""
+msgstr "Tapahtui käsittelemätön poikkeus: %s"
 
 msgid "Unhandled exception occurred."
-msgstr ""
+msgstr "Tapahtui käsittelemätön poikkeus."
 
 msgid "Open catalog"
 msgstr "Avaa katalogi"
 
-msgid "All Files"
-msgstr "Kaikki tiedostot"
-
-msgid "PO Translation Files"
-msgstr "PO-käännöstiedostot"
-
 #, c-format
 msgid "File '%s' doesn't exist."
 msgstr "Tiedostoa ”%s” ei ole olemassa."
@@ -180,7 +271,7 @@ msgstr "Tiedostoa ”%s” ei ole olemassa."
 #. ("Poedit" here, but please use "%s")
 #, c-format
 msgid "About %s"
-msgstr "Tietoja %s-ohjelmasta"
+msgstr "Tietoja: %s"
 
 #. TRANSLATORS: This is version information in about dialog, "%s" will be
 #. version number when used
@@ -276,19 +367,19 @@ msgid "&View"
 msgstr "&Näytä"
 
 msgid "Enter Full Screen"
-msgstr ""
+msgstr "Siirry koko näytön tilaan"
 
 msgid "Window"
 msgstr "Ikkuna"
 
 msgid "Minimize"
-msgstr ""
+msgstr "Pienennä"
 
 msgid "Zoom"
-msgstr ""
+msgstr "Zoomaa"
 
 msgid "Bring All to Front"
-msgstr ""
+msgstr "Tuo kaikki eteen"
 
 msgid "PO Translation"
 msgstr "PO-käännös"
@@ -304,34 +395,34 @@ msgid ""
 msgstr "Tiedosto voi olla joko vioittunut tai muodossa, jota Poedit ei tunne."
 
 msgid "&Undo"
-msgstr ""
+msgstr "K&umoa"
 
 msgid "&Redo"
-msgstr ""
+msgstr "&Tee uudelleen"
 
 msgid "Cu&t"
-msgstr ""
+msgstr "&Leikkaa"
 
 msgid "Cut"
-msgstr ""
+msgstr "Leikkaa"
 
 msgid "Copy"
-msgstr ""
+msgstr "Kopioi"
 
 msgid "&Paste"
-msgstr ""
+msgstr "L&iitä"
 
 msgid "Paste"
-msgstr ""
+msgstr "Sijoita"
 
 msgid "&Delete"
-msgstr ""
+msgstr "&Poista"
 
 msgid "Select &All"
-msgstr ""
+msgstr "Valitse k&aikki"
 
 msgid "Select All"
-msgstr ""
+msgstr "Valitse kaikki"
 
 #. TRANSLATORS: Keyboard shortcut for display in Windows menus
 #. TRANSLATORS: This is the key shortcut used in menus on Windows, some languages call them differently
@@ -385,7 +476,7 @@ msgid "&File"
 msgstr "&Tiedosto"
 
 msgid "&Go"
-msgstr "&Mene"
+msgstr "&Siirry"
 
 msgid "Source text:"
 msgstr "Lähdeteksti:"
@@ -399,6 +490,19 @@ msgstr "Monikko:"
 msgid "Translation:"
 msgstr "Käännös:"
 
+msgid ""
+"POT files are only templates and don’t contain any translations themselves.\n"
+"To make a translation, create a new PO file based on the template."
+msgstr ""
+"POT-tiedostot ovat pelkkiä käännöspohjia, eivätkä itse sisällä käännöksiä.\n"
+"Tee käännös luomalla uusi PO-tiedosto käännöspohjan perusteella."
+
+msgid "Create New Translation"
+msgstr "Luo uusi käännös"
+
+msgid "Create new translation"
+msgstr "Luo uusi käännös"
+
 #. TRANSLATORS: %s is language name in its basic form (as you
 #. would see e.g. in a list of supported languages). You may need
 #. to rephrase it, e.g. to an equivalent of "for language %s".
@@ -406,9 +510,11 @@ msgstr "Käännös:"
 msgid ""
 "Spellchecking is disabled, because the dictionary for %s isn’t installed."
 msgstr ""
+"Oikeinkirjoituksen tarkistus on poissa käytöstä, koska kielelle %s ei ole "
+"asennettu sanakirjaa."
 
 msgid "Install"
-msgstr ""
+msgstr "Asenna"
 
 msgid "Catalog modified. Do you want to save changes?"
 msgstr "Katalogia muokattu. Haluatko tallentaa muutokset?"
@@ -432,10 +538,10 @@ msgid "Save as..."
 msgstr "Tallenna nimellä..."
 
 msgid "Compile to..."
-msgstr ""
+msgstr "Muunna..."
 
 msgid "Compiled Translation Files"
-msgstr ""
+msgstr "Muunnetut käännöstiedostot"
 
 msgid "Export as..."
 msgstr "Vie tiedosto..."
@@ -446,22 +552,21 @@ msgstr "HTML-tiedostot"
 msgid "Open catalog template"
 msgstr "Avaa katalogimallipohja"
 
-msgid "POT Translation Templates"
-msgstr ""
-
 msgid "Updating catalog"
 msgstr "Päivitetään katalogia"
 
 msgid "Source code not available."
-msgstr ""
+msgstr "Lähdekoodi ei ole käytettävissä."
 
 msgid "Updating failed"
-msgstr ""
+msgstr "Päivitys epäonnistui"
 
 msgid ""
 "Translations couldn’t be updated from the source code, because no code was "
 "found in the location specified in the catalog’s Properties."
 msgstr ""
+"Käännösten päivittäminen lähdekoodista ei onnistunut, koska katalogin "
+"ominaisuuksissa annetusta sijainnista ei löytynyt koodia."
 
 msgid "Entries in the catalog are probably incorrect."
 msgstr "Katalogin merkinnät ovat todennäköisesti virheelliset."
@@ -507,9 +612,10 @@ msgid ""
 "The file was compiled into the MO format, but it will probably not work "
 "correctly."
 msgstr ""
+"Tiedosto muunnettiin MO-muotoon, mutta se ei todennäköisesti toimi oikein."
 
 msgid "The file cannot be compiled into the MO format and used."
-msgstr ""
+msgstr "Tiedostoa ei voi muuntaa MO-muotoon eikä sitä voi käyttää."
 
 msgid "No problems with the translation found."
 msgstr "Käännöksestä ei löytynyt ongelmia."
@@ -524,27 +630,50 @@ msgstr[1] "Käännös on käyttövalmis, mutta %d viestiä on vielä kääntäm
 msgid "The translation is ready for use."
 msgstr "Käännös on käyttövalmis."
 
-msgid "No references to this string found."
-msgstr "Viittauksia tähän merkkijonoon ei löytynyt."
-
-msgid "Please choose the reference you want to show:"
-msgstr "Näytä viite, jonka haluat näyttää:"
-
-msgid "References"
-msgstr "Viitteet"
-
 msgid "Context:"
 msgstr "Asiayhteys:"
 
+#, c-format
+msgid "Poedit automatically fixed invalid content in the file “%s”."
+msgstr "Poedit korjasi automaattisesti tiedoston ”%s” virheellisen sisällön."
+
+msgid ""
+"The file contained duplicate items, which is not allowed in PO files and "
+"would prevent the file from being used. Poedit fixed the issue, but you "
+"should review translations of any items marked as fuzzy and correct them if "
+"necessary."
+msgstr ""
+"Tiedosto sisälsi kahdenkertaisia kohtia, mikä ei ole sallittua PO-"
+"tiedostoissa ja estäisi tiedoston käytön. Poedit korjasi ongelman, mutta "
+"käännöksestä on syytä käydä läpi kaikki vajaiksi merkityt viestit ja "
+"tarvittaessa korjata ne."
+
 msgid "Language of the translation isn't set."
 msgstr "Käännöksen kieltä ei ole vielä asetettu."
 
 msgid "Set Language"
-msgstr ""
+msgstr "Aseta kieli"
 
 msgid "Set language"
 msgstr "Aseta kieli"
 
+#. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)."
+msgid ""
+"Suggestions are not available if the translation language is not set "
+"correctly. Other features, such as plural forms, may be affected as well."
+msgstr ""
+"Ehdotukset eivät ole käytettävissä, jos käännöksen kieltä ei ole asetettu "
+"oikein. Muut ominaisuudet, kuten monikkomuodot, voivat myös toimia väärin."
+
+msgid "Language of the translation is the same as source language."
+msgstr "Käännöksen kieli on sama kuin lähdekieli."
+
+msgid "Fix Language"
+msgstr "Korjaa kieli"
+
+msgid "Fix language"
+msgstr "Korjaa kieli"
+
 msgid ""
 "This catalog has entries with plural forms, but doesn't have Plural-Forms "
 "header configured."
@@ -567,7 +696,7 @@ msgid "Syntax error in Plural-Forms header (\"%s\")."
 msgstr "Kielioppivirhe Plural-Forms -otsakkeessa (”%s”)."
 
 msgid "Fix the Header"
-msgstr ""
+msgstr "Korjaa otsake"
 
 msgid "Fix the header"
 msgstr "Korjaa otsake"
@@ -580,6 +709,7 @@ msgid "Plural forms expression used by the catalog is unusual for %s."
 msgstr ""
 "Katalogissa käytetty Plural-Forms-lauseke on epätavallinen kielelle %s."
 
+#. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the catalog is unusual for %s.")"
 msgid "Review"
 msgstr "Katselmointi"
 
@@ -593,13 +723,19 @@ msgstr "Käännetty: %d/%d (%d %%)"
 
 #, c-format
 msgid "Remaining: %d"
-msgstr ""
+msgstr "Jäljellä: %d"
 
 #, c-format
 msgid "%d error"
 msgid_plural "%d errors"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "%d virhe"
+msgstr[1] "%d virhettä"
+
+#, c-format
+msgid "%d entry"
+msgid_plural "%d entries"
+msgstr[0] "%d viesti"
+msgstr[1] "%d viestiä"
 
 msgid " (unsaved)"
 msgstr " (tallentamaton)"
@@ -608,7 +744,7 @@ msgid " (modified)"
 msgstr " (muokattu)"
 
 msgid "Go"
-msgstr ""
+msgstr "Siirry"
 
 #, c-format
 msgid "Failed to update translation memory: %s"
@@ -636,26 +772,31 @@ msgid "Purge"
 msgstr "Puhdista"
 
 msgid "Fill missing translations from TM"
-msgstr ""
+msgstr "Täytä puuttuvat käännökset käännösmuistista"
 
 msgid "Only fill in exact matches"
-msgstr ""
+msgstr "Täytä vain tarkat täsmäävyydet"
 
 msgid ""
 "By default, inaccurate results are filled in as well and marked as fuzzy. "
 "Check this option to only include accurate matches."
 msgstr ""
+"Oletuksena käännökset täytetään myös epätäsmällisten tulosten perustella ja "
+"merkitään vajaiksi. Valitse tämä vaihtoehto, jos haluat käyttää vain "
+"tarkasti täsmääviä."
 
 msgid "Don’t mark exact matches as fuzzy"
-msgstr ""
+msgstr "Älä merkitse tarkkoja täsmäävyyksiä vajaiksi"
 
 msgid ""
 "Only enable if you trust the quality of your TM. By default, all matches "
 "from the TM are marked as fuzzy and should be reviewed."
 msgstr ""
+"Ota käyttöön vain, jos luotat käännösmuistin laatuun. Muussa tapauksessa "
+"kaikki täsmäävyydet merkitään vajaiksi ja ne on syytä tarkistaa."
 
 msgid "Fill"
-msgstr ""
+msgstr "Täytä"
 
 #, c-format
 msgid "%d entry was filled from the translation memory."
@@ -667,7 +808,7 @@ msgid ""
 "The translations were marked as fuzzy, because they may be inaccurate. You "
 "should review them for correctness."
 msgstr ""
-"Käännökset merkittiin epätarkoiksi. Ne on syytä käydä läpi oikeellisuuden "
+"Käännökset merkittiin vajaiksi. Ne on syytä käydä läpi oikeellisuuden "
 "varmistamiseksi."
 
 msgid "No entries could be filled from the translation memory."
@@ -692,8 +833,8 @@ msgstr "Täydennetään puuttuvat käännökset käännösmuistista..."
 #, c-format
 msgid "Translated %u string"
 msgid_plural "Translated %u strings"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "Käännetty %u merkkijono"
+msgstr[1] "Käännetty %u merkkijonoa"
 
 msgid "Copy from source text"
 msgstr "Kopioi lähdetekstistä"
@@ -723,6 +864,9 @@ msgstr "Kaikki"
 msgid "Form %i"
 msgstr "Muoto %i"
 
+msgid "Singular"
+msgstr "Yksikkö"
+
 msgid "Zero"
 msgstr "Nolla"
 
@@ -732,6 +876,9 @@ msgstr "Yksi"
 msgid "Two"
 msgstr "Kaksi"
 
+msgid "Plural"
+msgstr "Monikko"
+
 msgid "Other"
 msgstr "Muut"
 
@@ -760,6 +907,12 @@ msgstr "Piilota sivupalkki"
 msgid "Show Sidebar"
 msgstr "Näytä sivupalkki"
 
+msgid "Hide Status Bar"
+msgstr "Piilota tilarivi"
+
+msgid "Show Status Bar"
+msgstr "Näytä tilarivi"
+
 msgid "Source text"
 msgstr "Lähdeteksti"
 
@@ -769,6 +922,10 @@ msgstr "Käännös"
 msgid "ID"
 msgstr "ID"
 
+#, c-format
+msgid "Source text — %s"
+msgstr "Lähdeteksti — %s"
+
 msgid "unknown language"
 msgstr "tuntematon kieli"
 
@@ -779,57 +936,73 @@ msgstr "Käännös — %s"
 msgid "Error:"
 msgstr "Virhe:"
 
-msgid "Project info"
-msgstr "Projektin tiedot"
+msgid "Source file"
+msgstr "Lähdetiedosto"
 
-msgid "Project name and version:"
-msgstr "Projektin nimi ja versio:"
+msgid "Source file occurrence:"
+msgstr "Lähdetiedoston esiintymä:"
 
-msgid "Language:"
-msgstr "Kieli:"
+msgid "Open in Editor"
+msgstr "Avaa editorissa"
 
-msgid "Team:"
-msgstr "Tiimi:"
+msgid "Open in editor"
+msgstr "Avaa editorissa"
 
-msgid "Team's email address:"
-msgstr "Tiimin sähköpostiosoite:"
+msgid "No references for the selected item."
+msgstr "Ei viittauksia valittuun kohteeseen."
 
-msgid "Charset:"
-msgstr "Merkistö:"
+#, c-format
+msgid "Error opening file %s!"
+msgstr "Virhe tiedostoa %s avattaessa!"
 
-msgid "Source"
-msgstr "Lähde"
+msgid "Find"
+msgstr "Etsi"
 
-msgid "Notes"
-msgstr "Muistiinpanot"
+msgid "Replace"
+msgstr "Korvaa"
 
-msgid "Automatic translation"
-msgstr "Automaattinen käännös"
+#. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.)
+msgid "Options"
+msgstr "Valinnat"
 
-msgid "Fuzzy translation"
-msgstr "Epätarkka käännös"
+msgid "Ignore case"
+msgstr "Älä huomioi kirjainkokoa"
 
-msgid "Notes for translators:"
-msgstr "Huomautukset kääntäjille:"
+msgid "Wrap around"
+msgstr "Jatka alusta"
 
-msgid "Comment:"
-msgstr "Kommentti:"
+msgid "Whole words only"
+msgstr "Vain kokonaiset sanat"
 
-msgid "Source file"
-msgstr "Lähdetiedosto"
+msgid "Find in source texts"
+msgstr "Etsi lähdeteksteistä"
 
-msgid "Source file occurrence:"
-msgstr "Lähdetiedoston esiintymä:"
+msgid "Find in translations"
+msgstr "Etsi käännöksistä"
 
-msgid "Open in Editor"
-msgstr ""
+msgid "Find in comments"
+msgstr "Hae kommenteista"
 
-msgid "Open in editor"
-msgstr ""
+msgid "Close"
+msgstr "Sulje"
 
-#, c-format
-msgid "Error opening file %s!"
-msgstr "Virhe tiedostoa %s avattaessa!"
+msgid "Replace All"
+msgstr "Korvaa kaikki"
+
+msgid "Replace all"
+msgstr "Korvaa kaikki"
+
+msgid "< &Previous"
+msgstr "< &Edellinen"
+
+msgid "&Next >"
+msgstr "&Seuraava >"
+
+msgid "String to find"
+msgstr "Etsittävä teksti"
+
+msgid "Replacement string"
+msgstr "Korvaava teksti"
 
 #, c-format
 msgid "Cannot execute program: %s"
@@ -857,7 +1030,7 @@ msgid "Untrans"
 msgstr "Ei käänn"
 
 msgid "Fuzzy"
-msgstr "Epätarkka"
+msgstr "Vajaa"
 
 msgid "Bad Tokens"
 msgstr "Virheelliset merkit"
@@ -888,7 +1061,7 @@ msgstr ""
 "tämän projektin kaikki katalogit?"
 
 msgid "Information about the translator"
-msgstr ""
+msgstr "Tietoja kääntäjästä"
 
 msgid "Name:"
 msgstr "Nimi:"
@@ -906,12 +1079,14 @@ msgid ""
 "Your name and email address are only used to set the Last-Translator header "
 "of GNU gettext files."
 msgstr ""
+"Nimeäsi ja sähköpostiosoitettasi käytetään ainoastaan GNU-gettext-"
+"tiedostojen Last-Translator-otsakkeessa."
 
 msgid "Editing"
-msgstr ""
+msgstr "Muokkaus"
 
 msgid "Automatically compile MO file when saving"
-msgstr ""
+msgstr "Muunna automaattisesti MO-tiedostoksi tallennettaessa"
 
 msgid "Show summary after catalog update"
 msgstr "Näytä yhteenveto katalogin päivityksen jälkeen"
@@ -936,20 +1111,20 @@ msgid "Appearance"
 msgstr "Ulkoasu"
 
 msgid "Use custom list font:"
-msgstr ""
+msgstr "Listan fontti:"
 
 msgid "Use custom text fields font:"
-msgstr ""
+msgstr "Tekstikenttien fontti:"
 
 msgid "Change UI language"
 msgstr "Vaihda käyttöliittymän kieli"
 
 #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions
 msgid "(requires Windows 8 or newer)"
-msgstr ""
+msgstr "(vaatii Windows 8:n tai uudemman)"
 
 msgid "General"
-msgstr ""
+msgstr "Yleiset"
 
 msgid "Use translation memory"
 msgstr "Käytä käännösmuistia"
@@ -958,11 +1133,11 @@ msgid "Learn From Files..."
 msgstr "Opi tiedostoista..."
 
 msgid "Learn from files..."
-msgstr ""
+msgstr "Opi tiedostoista..."
 
 #. TRANSLATORS: This is a button that deletes everything in the translation memory (i.e. clears/resets it).
 msgid "Reset"
-msgstr ""
+msgstr "Tyhjennä"
 
 msgid "Consult TM when updating from sources"
 msgstr "Hyödynnä käännösmuistia päivitettäessä lähteistä"
@@ -997,15 +1172,17 @@ msgid "Finalizing..."
 msgstr "Viimeistellään..."
 
 msgid "Reset translation memory"
-msgstr ""
+msgstr "Tyhjennä käännösmuisti"
 
 msgid "Are you sure you want to reset the translation memory?"
-msgstr ""
+msgstr "Haluatko varmasti tyhjentää käännösmuistin?"
 
 msgid ""
 "Resetting the translation memory will irrevocably delete all stored "
 "translations from it. You can’t undo this operation."
 msgstr ""
+"Käännösmuistin tyhjentäminen tuhoaa kaikki sen sisältämät käännökset "
+"peruuttamattomasti. Tätä toimenpidettä ei voi perua."
 
 msgid "Cancel"
 msgstr "Peruuta"
@@ -1014,12 +1191,15 @@ msgstr "Peruuta"
 #. Long text looks weird there, too short (like TM) too, but less so. "General" is about ideal
 #. length there.
 msgid "TM"
-msgstr ""
+msgstr "Muisti"
 
 msgid ""
 "Source code extractors are used to find translatable strings in the source "
 "code files and extract them so that they can be translated."
 msgstr ""
+"Lähdekoodipoimimia käytetään käännettävien tekstien etsimiseen "
+"lähdekooditiedostoista sekä näiden tekstien poimimiseen käännöksen tekemistä "
+"varten."
 
 msgid "New"
 msgstr "Uusi"
@@ -1027,11 +1207,21 @@ msgstr "Uusi"
 msgid "Edit"
 msgstr "Muokkaa"
 
+msgid "Delete extractor"
+msgstr "Poista poimin"
+
+#, c-format
+msgid "Are you sure you want to delete the “%s” extractor?"
+msgstr "Haluatko varmasti poistaa “%s“-poimimen?"
+
 msgid "Extractors"
-msgstr ""
+msgstr "Poimimet"
+
+msgid "Accounts"
+msgstr "Tilit"
 
 msgid "Automatically check for updates"
-msgstr ""
+msgstr "Tarkasta päivitykset automaattisesti"
 
 msgid "Include beta versions"
 msgstr "Tarkasta myös beta-versiot"
@@ -1040,17 +1230,21 @@ msgid ""
 "Beta versions contain the latest new features and improvements, but may be a "
 "bit less stable."
 msgstr ""
+"Beta-versiot sisältävät uusimmat ominaisuudet ja parannukset, mutta "
+"saattavat olla hieman epävakaampia."
 
 msgid "Updates"
-msgstr ""
+msgstr "Päivitykset"
 
 msgid ""
 "These settings affect internal formatting of PO files. Adjust them if you "
 "have specific requirements e.g. because of version control."
 msgstr ""
+"Nämä asetukset vaikuttavat PO-tiedostojen sisäiseen muotoiluun. Niitä voi "
+"tarvittaessa muuttaa esim. versionhallinnasta johtuvien vaatimusten vuoksi."
 
 msgid "Line endings:"
-msgstr ""
+msgstr "Rivinvaihdot:"
 
 msgid "Unix (recommended)"
 msgstr "Unix (suositeltu)"
@@ -1060,22 +1254,58 @@ msgstr "Windows"
 
 #. TRANSLATORS: Followed by text control for entering number; wraps text at given width
 msgid "Wrap at:"
-msgstr ""
+msgstr "Rivitys:"
 
 msgid "Preserve formatting of existing files"
-msgstr ""
+msgstr "Säilytä olemassa olevien tiedostojen muotoilu"
 
 msgid "Advanced"
 msgstr "Lisäasetukset"
 
-msgid "Additional keywords"
-msgstr "Lisäavainsanat"
+msgid ""
+"<big>Drag and Drop Folders Here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+"<big>Vedä ja pudota kansioita tähän</big>\n"
+"\n"
+"tai käytä +-painiketta"
+
+msgid ""
+"<big>Drag and drop folders here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+"<big>Vedä ja pudota kansioita tähän</big>\n"
+"\n"
+"tai käytä +-painiketta"
+
+msgid "Add Folders..."
+msgstr "Lisää kansioita..."
+
+msgid "Add folders..."
+msgstr "Lisää kansioita..."
+
+msgid "Add Files..."
+msgstr "Lisää tiedostoja..."
+
+msgid "Add files..."
+msgstr "Lisää tiedostoja"
+
+msgid "Add Wildcard..."
+msgstr "Lisää korvausmerkki..."
+
+msgid "Add wildcard..."
+msgstr "Lisää korvausmerkki..."
 
 msgid "Paths"
 msgstr "Polut"
 
 msgid "Excluded paths"
-msgstr ""
+msgstr "Ohitettavat polut"
+
+msgid "Additional keywords"
+msgstr "Lisäavainsanat"
 
 msgid "Name of the project the translation is for"
 msgstr "Projektin nimi, jolle tämä käännös on tarkoitettu"
@@ -1089,6 +1319,9 @@ msgstr "UTF-8 (suositeltu)"
 msgid "Please save the file first. This section cannot be edited until then."
 msgstr "Tallenna tiedosto ensin. Tätä osaa ei voi muokata sitä ennen."
 
+msgid "Comment:"
+msgstr "Kommentti:"
+
 msgid "OK"
 msgstr "OK"
 
@@ -1098,42 +1331,6 @@ msgstr "T&yhjennä"
 msgid "Clear the comment"
 msgstr "Tyhjennä kommentti"
 
-msgid "Find..."
-msgstr "Etsi..."
-
-msgid "String to find:"
-msgstr "Haettava merkkijono:"
-
-msgid "Case sensitive"
-msgstr "Kirjasinkoko vaikuttaa"
-
-msgid "Start from the first item"
-msgstr "Aloita ensimmäisestä kohteesta"
-
-msgid "Whole words only"
-msgstr "Vain kokonaiset sanat"
-
-msgid "Find in original strings"
-msgstr "Hae alkuperäisistä merkkijonoista"
-
-msgid "Find in translations"
-msgstr "Etsi käännöksistä"
-
-msgid "Find in comments"
-msgstr "Hae kommenteista"
-
-msgid "Find in automatic comments"
-msgstr "Hae automaattisista kommenteista"
-
-msgid "Close"
-msgstr "Sulje"
-
-msgid "< &Previous"
-msgstr "< &Edellinen"
-
-msgid "&Next >"
-msgstr "&Seuraava >"
-
 msgid "Create new translations project"
 msgstr "Luo uusi käännösprojekti"
 
@@ -1186,7 +1383,13 @@ msgid "&Open..."
 msgstr "&Avaa..."
 
 msgid "Open Recent"
-msgstr ""
+msgstr "Avaa äskettäinen"
+
+msgid "Open from Crowdin..."
+msgstr "Avaa Crowdinista..."
+
+msgid "Open From Crowdin..."
+msgstr "Avaa Crowdinista..."
 
 msgid "&Save"
 msgstr "Ta&llenna"
@@ -1198,7 +1401,7 @@ msgid "Save &As..."
 msgstr "Tallenna &nimellä..."
 
 msgid "Compile to MO..."
-msgstr ""
+msgstr "Muunna MO-muotoon..."
 
 msgid "E&xport as HTML..."
 msgstr "&Vie HTML-muodossa..."
@@ -1213,10 +1416,10 @@ msgid "Catalogs &Manager"
 msgstr "Katalo&gien hallinta"
 
 msgid "Translation is &fuzzy"
-msgstr "Käännös on &epätarkka"
+msgstr "Käännös on &vajaa"
 
 msgid "Translation Is &Fuzzy"
-msgstr "Käännös on &epätarkka"
+msgstr "Käännös on &vajaa"
 
 msgid "Edit &comment"
 msgstr "Muokkaa &kommenttia"
@@ -1236,14 +1439,17 @@ msgstr "&Näytä viittaukset"
 msgid "&Find..."
 msgstr "E&tsi..."
 
+msgid "Replace..."
+msgstr "Korvaa..."
+
 msgid "Find next"
 msgstr "Etsi seuraava"
 
 msgid "Find previous"
 msgstr "Etsi edellinen"
 
-msgid "Find"
-msgstr "Etsi"
+msgid "Find and Replace..."
+msgstr "Etsi ja korvaa..."
 
 msgid "Find Next"
 msgstr "Etsi seuraava"
@@ -1279,10 +1485,16 @@ msgid "Sort by &Translation"
 msgstr "Järjestä &käännöksen mukaan"
 
 msgid "&Group by context"
-msgstr ""
+msgstr "&Ryhmittele konteksteittain"
 
 msgid "&Group By Context"
-msgstr ""
+msgstr "&Ryhmittele konteksteittain"
+
+msgid "Entries with errors first"
+msgstr "Virheitä sisältävät ensin"
+
+msgid "Entries with Errors First"
+msgstr "Virheitä sisältävät ensin"
 
 msgid "&Untranslated entries first"
 msgstr "Kääntämättö&mät ensin"
@@ -1293,6 +1505,9 @@ msgstr "Kääntämättö&mät ensin"
 msgid "Show sidebar"
 msgstr "Näytä sivupalkki"
 
+msgid "Show status bar"
+msgstr "Näytä tilarivi"
+
 msgid "C&atalog"
 msgstr "K&atalogi"
 
@@ -1308,11 +1523,14 @@ msgstr "Päivitä &POT-tiedostosta..."
 msgid "Update from &POT File..."
 msgstr "Päivitä &POT-tiedostosta..."
 
+msgid "Sync with Crowdin"
+msgstr "Synkronoi Crowdiniin"
+
 msgid "Fill missing translations from &TM..."
-msgstr ""
+msgstr "Täytä puuttuvat käännökset käännös&muistista..."
 
 msgid "Fill Missing Translations from &TM..."
-msgstr ""
+msgstr "Täytä puuttuvat käännökset käännös&muistista..."
 
 msgid "&Purge deleted translations"
 msgstr "P&uhdista poistetut käännökset"
@@ -1378,7 +1596,7 @@ msgid "&About"
 msgstr "&Tietoja"
 
 msgid "Extractor setup"
-msgstr ""
+msgstr "Poimimen asetukset"
 
 msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):"
 msgstr "Lista tiedostopäätteistä eroteltuna puolipisteillä (esim. *.cpp;*.h):"
@@ -1387,7 +1605,7 @@ msgid "Invocation:"
 msgstr "Suoritus:"
 
 msgid "Command to extract translations:"
-msgstr ""
+msgstr "Komento käännettävien tekstien poimimiseen:"
 
 msgid ""
 "This is the command used to launch the extractor.\n"
@@ -1395,6 +1613,10 @@ msgid ""
 "of keywords, %F to list of input files,\n"
 "%C to charset flag (see below)."
 msgstr ""
+"Tätä komentoa käytetään poimimen suorittamiseen.\n"
+"%o laajennetaan tulostiedoston nimeksi, %K avainsana-\n"
+"listaksi, %F syötetiedostojen listaksi,\n"
+"%C merkistölipuksi (ks. alempaa)."
 
 msgid "An item in keywords list:"
 msgstr "Kohde avainsanalistassa:"
@@ -1431,6 +1653,9 @@ msgstr ""
 msgid "Catalog properties"
 msgstr "Katalogin ominaisuudet"
 
+msgid "Project name and version:"
+msgstr "Projektin nimi ja versio:"
+
 msgid "Plural Forms:"
 msgstr "Monikkomuodot:"
 
@@ -1443,17 +1668,29 @@ msgstr "Käytä omaa lauseketta"
 msgid "Learn about plural forms"
 msgstr "Lisätietoja monikkomuodoista"
 
+msgid "Charset:"
+msgstr "Merkistö:"
+
+msgid "Team:"
+msgstr "Tiimi:"
+
+msgid "Team's email address:"
+msgstr "Tiimin sähköpostiosoite:"
+
 msgid "Translation properties"
 msgstr "Käännöksen ominaisuudet"
 
+msgid "Sources paths"
+msgstr "Lähteiden polut"
+
 msgid "Extract text from source files in the following directories:"
 msgstr "Pura tekstit lähdekoodeista, jotka ovat seuraavissa kansioissa:"
 
 msgid "Base path:"
 msgstr "Kantapolku:"
 
-msgid "Sources paths"
-msgstr "Lähteiden polut"
+msgid "Sources keywords"
+msgstr "Lähteiden avainsanat"
 
 msgid ""
 "Use these keywords (function names) to recognize translatable strings\n"
@@ -1465,9 +1702,6 @@ msgstr ""
 msgid "Learn about gettext keywords"
 msgstr "Lisätietoja gettextin avainsanoista"
 
-msgid "Sources keywords"
-msgstr "Lähteiden avainsanat"
-
 msgid "Update summary"
 msgstr "Päivityksen yhteenveto"
 
@@ -1513,19 +1747,24 @@ msgid "Update catalog - synchronize it with sources"
 msgstr "Päivityskatalogi - synkronoi se lähteen kanssa"
 
 msgid "Toggled if selected string has fuzzy translation"
-msgstr "Päällä, jos valitussa merkkijonossa on epätarkkoja käännöksiä"
+msgstr "Päällä, jos valitulla tekstillä on vajaa käännös"
 
-msgid "Show or hide the sidebar."
-msgstr ""
+msgid "Show or hide the sidebar"
+msgstr "Näytä tai piilota  sivupalkki"
 
 #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer.
 msgid "Previous source text:"
-msgstr ""
+msgstr "Aiempi lähdeteksti:"
 
 msgid ""
 "The old source text (before it changed during an update) that the fuzzy "
 "translation corresponds to."
 msgstr ""
+"Vanha lähdeteksti (ennen sen muuttumista päivityksen aikana), jota vajaa "
+"käännös vastaa."
+
+msgid "Notes for translators:"
+msgstr "Huomautukset kääntäjille:"
 
 msgid "Add comment"
 msgstr "Lisää kommentti"
@@ -1538,18 +1777,18 @@ msgstr "Käännösehdotukset:"
 
 #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows).
 msgid "No matches found"
-msgstr ""
+msgstr "Vastaavuuksia ei löydy"
 
 #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (OS X, Linux).
 msgid "No Matches Found"
-msgstr ""
+msgstr "Vastaavuuksia ei löydy"
 
 msgid "This string was found in Poedit’s translation memory."
-msgstr ""
+msgstr "Tämä merkkijono löytyi Poeditin käännösmuistista."
 
 #, c-format
 msgid "(New: %i, obsolete: %i)"
-msgstr ""
+msgstr "(Uusi: %i, vanhentunut: %i)"
 
 #, c-format
 msgid "Importing translations: %d"
@@ -1607,15 +1846,23 @@ msgstr "Muokkaa käännöstä"
 msgid "Open an existing PO file and edit the translation."
 msgstr "Avaa olemassa oleva PO-tiedosto ja muokkaa käännöstä."
 
-msgid "Create new translation"
-msgstr "Luo uusi käännös"
-
 msgid ""
 "Take an existing PO file or POT template and create a new translation from "
 "it."
 msgstr ""
 "Luo uusi käännös olemassa olevasta PO-tiedostosta tai POT-mallipohjasta."
 
+msgid "Collaborate on a translation with Crowdin"
+msgstr "Tee käännöstä yhteistyönä Crowdinissa"
+
+msgid ""
+"Download a file from Crowdin project, translate and sync your changes back."
+msgstr ""
+"Lataa tiedosto Crowdin-projektista, käännä ja synkronoi muutoksesi takaisin."
+
+msgid "What is Crowdin?"
+msgstr "Mikä on Crowdin?"
+
 msgid "There are no translations. That’s unusual."
 msgstr "Käännöksiä ei ole. Sepä erikoista."
 
@@ -1655,3 +1902,9 @@ msgstr "Poimi lähdekoodista"
 
 msgid "Configure source code extraction in Properties."
 msgstr "Konfiguroi lähdekoodista poimiminen asetuksissa."
+
+msgid "Sync"
+msgstr "Synkronoi"
+
+msgid "Synchronize the translation with Crowdin"
+msgstr "Synkronoi Crowdin-käännökseen"
diff --git a/locales/fr.mo b/locales/fr.mo
index 762198d..9e2172d 100644
Binary files a/locales/fr.mo and b/locales/fr.mo differ
diff --git a/locales/fr.po b/locales/fr.po
index 319d5cf..b870beb 100644
--- a/locales/fr.po
+++ b/locales/fr.po
@@ -2,8 +2,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: poedit\n"
 "Report-Msgid-Bugs-To: help at poedit.net\n"
-"POT-Creation-Date: 2015-01-10 16:00+0100\n"
-"PO-Revision-Date: 2015-03-10 12:33-0400\n"
+"POT-Creation-Date: 2015-05-27 11:31+0200\n"
+"PO-Revision-Date: 2015-05-27 05:17-0400\n"
 "Last-Translator: vslavik <vaclav at slavik.io>\n"
 "Language-Team: French\n"
 "Language: fr_FR\n"
@@ -53,11 +53,11 @@ msgid ""
 "corrupted as the result."
 msgstr ""
 "Il y a eu des erreurs lors du chargement du catalogue. Il se pourrait que "
-"des données manquent ou soient corrompues."
+"des données soient manquantes ou corrompues."
 
 #, c-format
 msgid "Couldn't load file %s, it is probably corrupted."
-msgstr "Échec au chargement du fichier %s : il est probablement corrompu."
+msgstr "Échec du chargement du fichier %s : il est probablement corrompu."
 
 #, c-format
 msgid ""
@@ -92,6 +92,15 @@ msgstr ""
 msgid "Error saving catalog"
 msgstr "Erreur d'enregistrement du catalogue"
 
+msgid "PO Translation Files"
+msgstr "Fichiers de traduction PO"
+
+msgid "POT Translation Templates"
+msgstr "Modèles de traduction POT"
+
+msgid "All Translation Files"
+msgstr "Tous les fichiers de traduction"
+
 msgid "Merging differences..."
 msgstr "Intégration des changements..."
 
@@ -111,6 +120,87 @@ msgstr "Sélection de langue"
 msgid "You must restart Poedit for this change to take effect."
 msgstr "Vous devez redémarrer Poedit pour que ce changement prenne effet."
 
+msgid "Downloading translations is disabled in this project."
+msgstr "Le téléchargement des traductions est désactivé dans ce projet."
+
+msgid "Not authorized, please sign in again."
+msgstr "Non autorisé, veuillez vous connecter à nouveau."
+
+msgid "Sign in to Crowdin"
+msgstr "Connectez-vous sur Crowdin"
+
+msgid ""
+"Crowdin is an online localization management platform and collaborative "
+"translation tool. Poedit can seamlessly sync PO files managed at Crowdin."
+msgstr ""
+"Crowdin est une plateforme de gestion de localisation en ligne et un outil "
+"de traduction collaborative. Poedit peut parfaitement synchroniser les "
+"fichiers PO avec Crowdin."
+
+msgid "Sign In"
+msgstr "S'identifier"
+
+msgid "Sign in"
+msgstr "S'identifier"
+
+msgid "Sign Out"
+msgstr "Se déconnecter"
+
+msgid "Sign out"
+msgstr "Se déconnecter"
+
+msgid "Waiting for authentication…"
+msgstr "En attente d'authentification..."
+
+msgid "Updating user information…"
+msgstr "Mise à jour des informations de l'utilisateur..."
+
+msgid "Signed in as:"
+msgstr "Connecté en tant que :"
+
+msgid "Learn More About Crowdin"
+msgstr "En savoir plus sur Crowdin"
+
+msgid "Learn more about Crowdin"
+msgstr "En savoir plus sur Crowdin"
+
+msgid "Open Crowdin translation"
+msgstr "Ouvrir la traduction Crowdin"
+
+msgid "Project:"
+msgstr "Projet :"
+
+msgid "Language:"
+msgstr "Langue :"
+
+msgid "File:"
+msgstr "Fichier :"
+
+msgid "No translation projects listed in your Crowdin account."
+msgstr "Aucun projet de traduction listé dans votre compte Crowdin."
+
+msgid "This project has no files that can be translated in Poedit."
+msgstr "Ce projet n'a aucun fichier qui puisse être traduit avec Poedit."
+
+msgid "This file can only be edited in Crowdin’s web interface."
+msgstr ""
+"Ce fichier ne peut être modifié qu'à partir de l'interface web de Crowdin."
+
+msgid "Downloading latest translations…"
+msgstr "Téléchargement des dernières traductions..."
+
+msgid "Syncing with Crowdin"
+msgstr "Synchronisation avec Crowdin"
+
+msgid "Syncing with Crowdin failed."
+msgstr "La synchronisation avec Crowdin a échoué."
+
+msgid "Crowdin error"
+msgstr "Erreur Crowdin"
+
+msgid "Uploading translations…"
+msgstr "Téléchargement des traductions..."
+
 msgid "&Copy"
 msgstr "&Copier"
 
@@ -122,7 +212,7 @@ msgstr "En savoir plus"
 
 #, c-format
 msgid "Failed command: %s"
-msgstr "Commande en échec : %s"
+msgstr "La commande a échoué : %s"
 
 msgid "Failed to merge gettext catalogs."
 msgstr "Échec de la fusion des catalogues gettext."
@@ -133,13 +223,13 @@ msgstr "Analyse des fichiers..."
 #. TRANSLATORS: '%s' is replaced with the kind of the files (e.g. C++, PHP, ...)
 #, c-format
 msgid "Parsing %s files..."
-msgstr "Analyse fichiers %s..."
+msgstr "Analyse de %s fichiers..."
 
 msgid "Failed to load extracted catalog."
 msgstr "Échec du chargement du catalogue extrait."
 
 msgid "&Help"
-msgstr "&?"
+msgstr "&Aide"
 
 msgid "MO files can’t be directly edited in Poedit."
 msgstr "Les fichiers MO ne peuvent pas être directement modifiés dans Poedit."
@@ -157,6 +247,12 @@ msgstr ""
 msgid "don't delete temporary files (for debugging)"
 msgstr "ne pas supprimer les fichiers temporaires (à des fins de débogage)"
 
+msgid "handle a poedit:// URI"
+msgstr "gère une URI de Poedit : // URI"
+
+msgid "Failed to communicate with Poedit process."
+msgstr "Échec lors de la communication avec Poedit."
+
 #, c-format
 msgid "Unhandled exception occurred: %s"
 msgstr "Une exception non gérée s'est produite : %s"
@@ -167,12 +263,6 @@ msgstr "Une exception non gérée s'est produite."
 msgid "Open catalog"
 msgstr "Ouvrir un catalogue"
 
-msgid "All Files"
-msgstr "Tous les fichiers"
-
-msgid "PO Translation Files"
-msgstr "Fichiers de traduction PO"
-
 #, c-format
 msgid "File '%s' doesn't exist."
 msgstr "Le fichier « %s » n'existe pas."
@@ -190,13 +280,13 @@ msgid "Version %s"
 msgstr "Version %s"
 
 msgid "Poedit is an easy to use translations editor."
-msgstr "Poedit est un éditeur de traductions simple à utiliser."
+msgstr "Poedit est un logiciel de traduction simple à utiliser."
 
 msgid "Catalogs Manager"
 msgstr "Gestionnaire de catalogues"
 
 msgid "Check for Updates..."
-msgstr "Vérifier les mises à jour..."
+msgstr "Recherche des mises à jour..."
 
 msgid "&Edit"
 msgstr "&Modifier"
@@ -208,7 +298,7 @@ msgid "Redo"
 msgstr "Refaire"
 
 msgid "Paste and Match Style"
-msgstr "Coller et respecter le style"
+msgstr "Coller en conservant la mise en forme"
 
 msgid "Delete"
 msgstr "Supprimer"
@@ -217,13 +307,13 @@ msgid "Spelling and Grammar"
 msgstr "Orthographe et Grammaire"
 
 msgid "Show Spelling and Grammar"
-msgstr "Afficher Orthographe et Grammaire"
+msgstr "Afficher l'orthographe et la grammaire"
 
 msgid "Check Document Now"
 msgstr "Vérifier le document maintenant"
 
 msgid "Check Spelling While Typing"
-msgstr "Vérifier l’orthographe en tapant"
+msgstr "Vérifier l'orthographe lors de la frappe"
 
 msgid "Check Grammar With Spelling"
 msgstr "Vérifier la grammaire avec l’orthographe"
@@ -235,13 +325,13 @@ msgid "Substitutions"
 msgstr "Substitutions"
 
 msgid "Show Substitutions"
-msgstr "Afficher Substitutions"
+msgstr "Afficher les substitutions"
 
 msgid "Smart Copy/Paste"
 msgstr "Copier/coller intelligent "
 
 msgid "Smart Quotes"
-msgstr "Guillements intelligents"
+msgstr "Guillemets intelligents"
 
 msgid "Smart Dashes"
 msgstr "Tirets intelligents"
@@ -262,16 +352,16 @@ msgid "Make Lower Case"
 msgstr "Mettre en minuscules"
 
 msgid "Capitalize"
-msgstr "Majuscule"
+msgstr "Mettre en majuscule"
 
 msgid "Speech"
-msgstr "Parler"
+msgstr "Dicter"
 
 msgid "Start Speaking"
-msgstr "Commencer à Parler"
+msgstr "Commencer à parler"
 
 msgid "Stop Speaking"
-msgstr "Arrêter de Parler"
+msgstr "Arrêter de parler"
 
 msgid "&View"
 msgstr "&Affichage"
@@ -303,8 +393,7 @@ msgstr "Fichier invalide"
 msgid ""
 "The file may be either corrupted or in a format not recognized by Poedit."
 msgstr ""
-"Le fichier peut être soit corrompu soit dans un format non reconnu par "
-"Poedit."
+"Le fichier est peut-être corrompu ou dans un format non reconnu par Poedit."
 
 msgid "&Undo"
 msgstr "Ann&uler"
@@ -381,7 +470,7 @@ msgstr ""
 
 #, c-format
 msgid "File '%s' is not a message catalog."
-msgstr "Le fichier « %s » n'est pas un catalogue."
+msgstr "Le fichier « %s » n'est pas un catalogue de messages."
 
 msgid "Poedit"
 msgstr "Poedit"
@@ -393,7 +482,7 @@ msgid "&Go"
 msgstr "&Démarrer"
 
 msgid "Source text:"
-msgstr "Texte original :"
+msgstr "Texte source :"
 
 msgid "Singular:"
 msgstr "Singulier :"
@@ -404,6 +493,20 @@ msgstr "Pluriel :"
 msgid "Translation:"
 msgstr "Traduction :"
 
+msgid ""
+"POT files are only templates and don’t contain any translations themselves.\n"
+"To make a translation, create a new PO file based on the template."
+msgstr ""
+"Les fichiers POT ne sont que des modèles et ne contiennent pas de "
+"traductions. \n"
+"Pour faire une traduction, créez un nouveau fichier PO à partir du modèle."
+
+msgid "Create New Translation"
+msgstr "Créer une nouvelle traduction"
+
+msgid "Create new translation"
+msgstr "Créer une nouvelle traduction"
+
 #. TRANSLATORS: %s is language name in its basic form (as you
 #. would see e.g. in a list of supported languages). You may need
 #. to rephrase it, e.g. to an equivalent of "for language %s".
@@ -418,13 +521,14 @@ msgid "Install"
 msgstr "Installer"
 
 msgid "Catalog modified. Do you want to save changes?"
-msgstr "Le catalogue a été modifié. Voulez-vous enregistrer les changements ?"
+msgstr ""
+"Le catalogue a été modifié. Voulez-vous enregistrer les modifications ?"
 
 msgid "Save changes"
-msgstr "Enregistrer les changements"
+msgstr "Enregistrer les modifications"
 
 msgid "Your changes will be lost if you don't save them."
-msgstr "Vos changements seront perdus si vous ne les enregistrez pas"
+msgstr "Vos modifications seront perdues si vous ne les enregistrez pas."
 
 msgid "Save"
 msgstr "Enregistrer"
@@ -453,9 +557,6 @@ msgstr "Fichiers HTML"
 msgid "Open catalog template"
 msgstr "Ouvrir un modèle de catalogue"
 
-msgid "POT Translation Templates"
-msgstr "Modèles de traduction POT"
-
 msgid "Updating catalog"
 msgstr "Mise à jour du catalogue"
 
@@ -495,8 +596,8 @@ msgid ""
 "will be shown when you select such an entry."
 msgstr ""
 "Les entrées avec des erreurs ont été marquées en rouge dans la liste. Les "
-"détails de l'erreur seront affichés lorsque vous sélectionnez une telle "
-"entrée."
+"détails de l'erreur s'afficheront lorsque vous sélectionnerez ce type "
+"d'entrée."
 
 msgid "The file was saved safely."
 msgstr "Le fichier a été enregistré en toute sécurité."
@@ -505,15 +606,15 @@ msgid ""
 "The file was saved safely and compiled into the MO format, but it will "
 "probably not work correctly."
 msgstr ""
-"Le fichier a été enregistré en toute sécurité et compilé dans le format MO, "
-"mais il ne fonctionnera sans doute pas parfaitement."
+"Le fichier a été enregistré en toute sécurité et compilé au format MO, mais "
+"il ne fonctionnera probablement pas correctement."
 
 msgid ""
 "The file was saved safely, but it cannot be compiled into the MO format and "
 "used."
 msgstr ""
 "Le fichier a été enregistré en toute sécurité, mais il ne peut pas être "
-"compilé dans le format MO et utilisé."
+"compilé au format MO ni être utilisé."
 
 msgid ""
 "The file was compiled into the MO format, but it will probably not work "
@@ -542,17 +643,24 @@ msgstr[1] ""
 msgid "The translation is ready for use."
 msgstr "La traduction est prête à être utilisée."
 
-msgid "No references to this string found."
-msgstr "Aucune référence trouvée pour cette chaîne."
-
-msgid "Please choose the reference you want to show:"
-msgstr "Veuillez choisir la référence que vous voulez voir :"
+msgid "Context:"
+msgstr "Contexte :"
 
-msgid "References"
-msgstr "Références"
+#, c-format
+msgid "Poedit automatically fixed invalid content in the file “%s”."
+msgstr ""
+"Poedit a automatiquement corrigé le contenu non valide du fichier \"%s\"."
 
-msgid "Context:"
-msgstr "Texte original :"
+msgid ""
+"The file contained duplicate items, which is not allowed in PO files and "
+"would prevent the file from being used. Poedit fixed the issue, but you "
+"should review translations of any items marked as fuzzy and correct them if "
+"necessary."
+msgstr ""
+"Le fichier contenait des éléments en double, ce qui n'est pas permis dans "
+"les fichiers PO et empêcherait son utilisation. Poedit a réglé ce problème, "
+"mais vous devriez réviser les traductions de tous les éléments marqués comme "
+"approximatifs et les corriger si nécessaire."
 
 msgid "Language of the translation isn't set."
 msgstr "La langue de traduction n’est pas définie."
@@ -563,26 +671,44 @@ msgstr "Définir la langue"
 msgid "Set language"
 msgstr "Définir la langue"
 
+#. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)."
+msgid ""
+"Suggestions are not available if the translation language is not set "
+"correctly. Other features, such as plural forms, may be affected as well."
+msgstr ""
+"Les suggestions ne sont pas disponibles si la langue de traduction n'est pas "
+"définie. Les autres fonctionnalités, comme les pluriels, peuvent être "
+"également affectées."
+
+msgid "Language of the translation is the same as source language."
+msgstr "La langue de traduction est identique à la langue source."
+
+msgid "Fix Language"
+msgstr "Corriger la langue"
+
+msgid "Fix language"
+msgstr "Corriger la langue"
+
 msgid ""
 "This catalog has entries with plural forms, but doesn't have Plural-Forms "
 "header configured."
 msgstr ""
-"Ce catalogue a des éléments avec une forme plurielle, mais son en-tête "
-"Plural-Forms n'est pas configurée."
+"Ce catalogue a des entrées au pluriel, mais l'en-tête Pluriel n'est pas "
+"configurée."
 
 msgid ""
 "Entries in this catalog have different plural forms count from what "
 "catalog's Plural-Forms header says"
 msgstr ""
 "Les entrées dans ce catalogue ont un nombre de formes plurielles différent "
-"de celui indiqué dans l'en-tête Plural-Forms"
+"de celui indiqué dans l'en-tête Pluriel"
 
 msgid "Required header Plural-Forms is missing."
-msgstr "L'en-tête nécessaire des formes plurielles est absente."
+msgstr "L'en-tête Pluriel requise est absente."
 
 #, c-format
 msgid "Syntax error in Plural-Forms header (\"%s\")."
-msgstr "Erreur de syntaxe dans l'en-tête des formes plurielles (\"%s\")."
+msgstr "Erreur de syntaxe dans l'en-tête Pluriel (\"%s\")."
 
 msgid "Fix the Header"
 msgstr "Corriger l'en-tête"
@@ -596,11 +722,11 @@ msgstr "Corriger l'en-tête"
 #, c-format
 msgid "Plural forms expression used by the catalog is unusual for %s."
 msgstr ""
-"L'expression des formes plurielles utilisée par le catalogue est "
-"inhabituelle pour le %s."
+"Les formes plurielles utilisées par le catalogue sont inhabituelles pour %s."
 
+#. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the catalog is unusual for %s.")"
 msgid "Review"
-msgstr "Modifier"
+msgstr "Réviser"
 
 #, c-format
 msgid "Error loading message catalog file '%s'."
@@ -620,6 +746,12 @@ msgid_plural "%d errors"
 msgstr[0] "%d erreur"
 msgstr[1] "%d erreurs"
 
+#, c-format
+msgid "%d entry"
+msgid_plural "%d entries"
+msgstr[0] "%d entrée"
+msgstr[1] "%d entrées"
+
 msgid " (unsaved)"
 msgstr " (non sauvegardé)"
 
@@ -634,7 +766,7 @@ msgid "Failed to update translation memory: %s"
 msgstr "Echec de la mise à jour de la mémoire de traduction : %s"
 
 msgid "Purge deleted translations"
-msgstr "Purger les traductions supprimées"
+msgstr "Effacer les traductions supprimées"
 
 msgid "Do you want to remove all translations that are no longer used?"
 msgstr ""
@@ -645,15 +777,15 @@ msgid ""
 "permanently removed. You will have to translate them again if they are added "
 "back in the future."
 msgstr ""
-"Si vous continuez à purger, toutes les traductions marquées comme supprimées "
-"seront définitivement supprimées. Vous allez avoir à les re-traduire si "
-"elles sont rétablies dans le futur."
+"En continuant le nettoyage, toutes les traductions marquées comme supprimées "
+"seront définitivement effacées. Il faudra recommencer la traduction si elles "
+"sont de nouveau ajoutées."
 
 msgid "Keep"
 msgstr "Conserver"
 
 msgid "Purge"
-msgstr "Purger"
+msgstr "Effacer"
 
 msgid "Fill missing translations from TM"
 msgstr "Remplir les traductions manquantes avec la MT"
@@ -676,7 +808,7 @@ msgid ""
 "Only enable if you trust the quality of your TM. By default, all matches "
 "from the TM are marked as fuzzy and should be reviewed."
 msgstr ""
-"Activer uniquement si vous faites confiance à la qualité de votre Mémoire de "
+"Activer uniquement si vous êtes certain de la qualité de votre Mémoire de "
 "Traduction. Par défaut, tous les résultats sont marqués comme approximatifs "
 "et sont à revoir."
 
@@ -686,18 +818,19 @@ msgstr "Remplir"
 #, c-format
 msgid "%d entry was filled from the translation memory."
 msgid_plural "%d entries were filled from the translation memory."
-msgstr[0] "%d entrée à été remplie par la mémoire de traduction."
-msgstr[1] "%d entrées ont été remplies par la mémoire de traduction."
+msgstr[0] "%d entrée à été complétée par la mémoire de traduction."
+msgstr[1] "%d entrées ont été complétées par la mémoire de traduction."
 
 msgid ""
 "The translations were marked as fuzzy, because they may be inaccurate. You "
 "should review them for correctness."
 msgstr ""
-"Les traductions sont marquées comme approximative. Vous devriez les passez "
-"en revue pour vérifier leur exactitude."
+"Les traductions sont marquées comme approximatives car elles risquent d'être "
+"incorrectes. Vous devriez vérifier leur pertinence."
 
 msgid "No entries could be filled from the translation memory."
-msgstr "Aucune entrée n'a pu être remplie par la mémoire de traduction."
+msgstr ""
+"Aucune entrée n'a pu être complétée à partir de la mémoire de traduction."
 
 msgid ""
 "The TM doesn’t contain any strings similar to the content of this file. It "
@@ -709,10 +842,10 @@ msgstr ""
 "ait appris suffisamment de fichiers traduits manuellement."
 
 msgid "Translating"
-msgstr "Traduction"
+msgstr "Traduction en cours"
 
 msgid "Filling missing translations from TM..."
-msgstr "Remplissage des traductions manquantes avec la &MT..."
+msgstr "Remplissage des traductions manquantes avec la MT..."
 
 #, c-format
 msgid "Translated %u string"
@@ -721,16 +854,16 @@ msgstr[0] "%u chaîne traduite"
 msgstr[1] "%u chaînes traduites"
 
 msgid "Copy from source text"
-msgstr "Copier depuis l'original"
+msgstr "Copier depuis le texte source"
 
 msgid "Copy from Source Text"
-msgstr "Copier à partir de l'original"
+msgstr "Copier à partir du texte source"
 
 msgid "Clear translation"
-msgstr "Vider la traduction"
+msgstr "Effacer la traduction"
 
 msgid "Clear Translation"
-msgstr "Vider la traduction"
+msgstr "Effacer la traduction"
 
 msgid "Edit comment"
 msgstr "Modifier le commentaire"
@@ -748,6 +881,9 @@ msgstr "Tout"
 msgid "Form %i"
 msgstr "Forme %i"
 
+msgid "Singular"
+msgstr "Singulier"
+
 msgid "Zero"
 msgstr "Zéro"
 
@@ -757,6 +893,9 @@ msgstr "Un"
 msgid "Two"
 msgstr "Deux"
 
+msgid "Plural"
+msgstr "Pluriel"
+
 msgid "Other"
 msgstr "Autre"
 
@@ -785,8 +924,14 @@ msgstr "Masquer le panneau latéral"
 msgid "Show Sidebar"
 msgstr "Afficher le panneau latéral"
 
+msgid "Hide Status Bar"
+msgstr "Masquer la barre d'état"
+
+msgid "Show Status Bar"
+msgstr "Afficher la barre d'état"
+
 msgid "Source text"
-msgstr "Texte original"
+msgstr "Texte source"
 
 msgid "Translation"
 msgstr "Traduction"
@@ -794,6 +939,10 @@ msgstr "Traduction"
 msgid "ID"
 msgstr "ID"
 
+#, c-format
+msgid "Source text — %s"
+msgstr "Texte source — %s"
+
 msgid "unknown language"
 msgstr "langue inconnue"
 
@@ -804,64 +953,80 @@ msgstr "Traduction — %s"
 msgid "Error:"
 msgstr "Erreur :"
 
-msgid "Project info"
-msgstr "Informations"
+msgid "Source file"
+msgstr "Fichier source"
 
-msgid "Project name and version:"
-msgstr "Nom et version du projet :"
+msgid "Source file occurrence:"
+msgstr "Présence du fichier source:"
 
-msgid "Language:"
-msgstr "Langue :"
+msgid "Open in Editor"
+msgstr "Ouvrir dans l’Éditeur"
 
-msgid "Team:"
-msgstr "Équipe de traduction :"
+msgid "Open in editor"
+msgstr "Ouvrir dans l'éditeur"
 
-msgid "Team's email address:"
-msgstr "Adresse électronique de l'équipe :"
+msgid "No references for the selected item."
+msgstr "Aucune référence pour l'élément sélectionné."
 
-msgid "Charset:"
-msgstr "Jeu de caractères :"
+#, c-format
+msgid "Error opening file %s!"
+msgstr "Erreur à l'ouverture du fichier %s !"
 
-msgid "Source"
-msgstr "Source"
+msgid "Find"
+msgstr "Trouver"
 
-msgid "Notes"
-msgstr "Notes"
+msgid "Replace"
+msgstr "Remplacer"
 
-msgid "Automatic translation"
-msgstr "Traduction automatique"
+#. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.)
+msgid "Options"
+msgstr "Options"
 
-msgid "Fuzzy translation"
-msgstr "Traduction approximative"
+msgid "Ignore case"
+msgstr "Ignorer la casse"
 
-msgid "Notes for translators:"
-msgstr "Notes pour les traducteurs :"
+msgid "Wrap around"
+msgstr "Boucler"
 
-msgid "Comment:"
-msgstr "Commentaire :"
+msgid "Whole words only"
+msgstr "Mots entiers uniquement"
 
-msgid "Source file"
-msgstr "Fichier source"
+msgid "Find in source texts"
+msgstr "Trouver dans les textes sources"
 
-msgid "Source file occurrence:"
-msgstr "Fichier source :"
+msgid "Find in translations"
+msgstr "Trouver dans les traductions"
 
-msgid "Open in Editor"
-msgstr "Ouvrir dans l’Éditeur"
+msgid "Find in comments"
+msgstr "Chercher dans les commentaires"
 
-msgid "Open in editor"
-msgstr "Ouvrir dans l'éditeur"
+msgid "Close"
+msgstr "Fermer"
 
-#, c-format
-msgid "Error opening file %s!"
-msgstr "Erreur à l'ouverture du fichier %s !"
+msgid "Replace All"
+msgstr "Remplacer tout"
+
+msgid "Replace all"
+msgstr "Remplacer tout"
+
+msgid "< &Previous"
+msgstr "< &Précédente"
+
+msgid "&Next >"
+msgstr "&Suivant >"
+
+msgid "String to find"
+msgstr "Chaîne à rechercher "
+
+msgid "Replacement string"
+msgstr "Chaîne de remplacement"
 
 #, c-format
 msgid "Cannot execute program: %s"
 msgstr "Impossible d'exécuter le programme : %s"
 
 msgid "Language Code or Name (e.g. en_GB)"
-msgstr "Code ou nom de la langue (p.ex. fr_FR)"
+msgstr "Code ou nom de la langue (ex. fr_FR)"
 
 msgid "Translation Language"
 msgstr "Langue de traduction"
@@ -870,7 +1035,7 @@ msgid "Language of the translation:"
 msgstr "Langue de la traduction :"
 
 msgid "Poedit - Catalogs manager"
-msgstr "Poedit - Gestionnaire de catalogues"
+msgstr "Poedit - Gestionnaire des catalogues"
 
 msgid "Catalog"
 msgstr "Catalogue"
@@ -879,7 +1044,7 @@ msgid "Total"
 msgstr "Total"
 
 msgid "Untrans"
-msgstr "Non traduite"
+msgstr "Non traduit"
 
 msgid "Fuzzy"
 msgstr "Approximative"
@@ -941,7 +1106,7 @@ msgid "Automatically compile MO file when saving"
 msgstr "Compiler automatiquement le fichier MO lors de l'enregistrement"
 
 msgid "Show summary after catalog update"
-msgstr "Afficher un résumé après la mise à jour du catalogue"
+msgstr "Afficher le résumé après la mise à jour du catalogue"
 
 msgid "Check spelling"
 msgstr "Vérifier l’orthographe"
@@ -954,10 +1119,10 @@ msgid ""
 "arrows for keyboard navigation but you can also type text immediately, "
 "without having to press Tab to change focus."
 msgstr ""
-"Ne pas laisser la main à la liste des chaînes. Si activée, vous pourrez "
-"utiliser les touches Ctrl + Haut/Bas pour la navigation dans liste des "
-"chaînes sans avoir à utiliser la touche de tabulation pour activer la zone "
-"de traduction."
+"Ne jamais laisser la main à la liste des chaînes. Lorsqu'elle est activée, "
+"il faut utiliser les touches Ctrl + Haut/Bas de navigation, mais vous pouvez "
+"aussi taper le texte directement sans avoir à utiliser la touche de "
+"tabulation pour activer la zone de traduction."
 
 msgid "Appearance"
 msgstr "Apparence"
@@ -969,7 +1134,7 @@ msgid "Use custom text fields font:"
 msgstr "Utiliser une police personnalisée pour les champs texte :"
 
 msgid "Change UI language"
-msgstr "Langue d'a&ffichage..."
+msgstr "Changer la langue de l'interface"
 
 #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions
 msgid "(requires Windows 8 or newer)"
@@ -982,7 +1147,7 @@ msgid "Use translation memory"
 msgstr "Utiliser la mémoire de traduction"
 
 msgid "Learn From Files..."
-msgstr "Apprendre à partir de fichiers..."
+msgstr "Apprendre à partir des fichiers..."
 
 msgid "Learn from files..."
 msgstr "Apprendre à partir de fichiers..."
@@ -1058,11 +1223,21 @@ msgid "New"
 msgstr "Nouveau"
 
 msgid "Edit"
-msgstr "Modifier..."
+msgstr "Modifier"
+
+msgid "Delete extractor"
+msgstr "Supprimer l'extracteur"
+
+#, c-format
+msgid "Are you sure you want to delete the “%s” extractor?"
+msgstr "Êtes-vous sûr de vouloir supprimer l'extracteur «%s » ?"
 
 msgid "Extractors"
 msgstr "Extracteurs"
 
+msgid "Accounts"
+msgstr "Comptes"
+
 msgid "Automatically check for updates"
 msgstr "Rechercher automatiquement les mises à jour"
 
@@ -1098,7 +1273,7 @@ msgstr "Windows"
 
 #. TRANSLATORS: Followed by text control for entering number; wraps text at given width
 msgid "Wrap at:"
-msgstr "Passage à la ligne à :"
+msgstr "Passer à la ligne à :"
 
 msgid "Preserve formatting of existing files"
 msgstr "Préserver le formatage des fichiers existants"
@@ -1106,8 +1281,41 @@ msgstr "Préserver le formatage des fichiers existants"
 msgid "Advanced"
 msgstr "Avancés"
 
-msgid "Additional keywords"
-msgstr "Mots clés supplémentaires"
+msgid ""
+"<big>Drag and Drop Folders Here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+"<big>Glissez-déposez les dossiers ici</big>\n"
+"\n"
+"ou utilisez le bouton +"
+
+msgid ""
+"<big>Drag and drop folders here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+"<big>Glissez-déposez les dossiers ici</big>\n"
+"\n"
+"ou utilisez le bouton +"
+
+msgid "Add Folders..."
+msgstr "Ajouter des dossiers..."
+
+msgid "Add folders..."
+msgstr "Ajouter des dossiers..."
+
+msgid "Add Files..."
+msgstr "Ajouter des fichiers..."
+
+msgid "Add files..."
+msgstr "Ajouter des fichiers..."
+
+msgid "Add Wildcard..."
+msgstr "Ajout du caractère générique..."
+
+msgid "Add wildcard..."
+msgstr "Ajout du caractère générique..."
 
 msgid "Paths"
 msgstr "Chemins"
@@ -1115,8 +1323,11 @@ msgstr "Chemins"
 msgid "Excluded paths"
 msgstr "Chemins exclus"
 
+msgid "Additional keywords"
+msgstr "Mots clés supplémentaires"
+
 msgid "Name of the project the translation is for"
-msgstr "Nom du projet pour lequel sont les traductions"
+msgstr "Nom du projet de traduction"
 
 msgid "e.g. nplurals=2; plural=(n > 1);"
 msgstr "p. ex. nplurals=2; plural=(n > 1);"
@@ -1126,11 +1337,14 @@ msgstr "UTF-8 (recommandé)"
 
 msgid "Please save the file first. This section cannot be edited until then."
 msgstr ""
-"Veuillez sauvegarder le fichier en premier. Cette section ne peut pas être "
-"modifiée avant cela."
+"Veuillez d'abord enregistrer le fichier. Cette section ne peut pas être "
+"modifiée avant."
+
+msgid "Comment:"
+msgstr "Commentaire :"
 
 msgid "OK"
-msgstr "OK"
+msgstr "Ok"
 
 msgid "C&lear"
 msgstr "&Effacer"
@@ -1138,42 +1352,6 @@ msgstr "&Effacer"
 msgid "Clear the comment"
 msgstr "Effacer le commentaire"
 
-msgid "Find..."
-msgstr "Rechercher..."
-
-msgid "String to find:"
-msgstr "Chaîne à rechercher :"
-
-msgid "Case sensitive"
-msgstr "Respecter la casse"
-
-msgid "Start from the first item"
-msgstr "Partir du premier élément"
-
-msgid "Whole words only"
-msgstr "Mots entiers uniquement"
-
-msgid "Find in original strings"
-msgstr "Rechercher dans les chaînes originales"
-
-msgid "Find in translations"
-msgstr "Trouver dans les traductions"
-
-msgid "Find in comments"
-msgstr "Rechercher dans les commentaires"
-
-msgid "Find in automatic comments"
-msgstr "Rechercher dans les commentaires automatiques"
-
-msgid "Close"
-msgstr "Fermer"
-
-msgid "< &Previous"
-msgstr "< &Précédente"
-
-msgid "&Next >"
-msgstr "&Suivant >"
-
 msgid "Create new translations project"
 msgstr "Créer un nouveau projet de traduction"
 
@@ -1205,7 +1383,7 @@ msgid "&Preferences..."
 msgstr "&Préférences..."
 
 msgid "&Close"
-msgstr "&Quitter"
+msgstr "&Fermer"
 
 msgid "E&xit"
 msgstr "&Quitter"
@@ -1217,10 +1395,10 @@ msgid "&New..."
 msgstr "&Nouveau…"
 
 msgid "New from &POT/PO file..."
-msgstr "Nouveau depuis un fichier &POT/PO..."
+msgstr "Nouveau à partir d'un fichier &POT/PO..."
 
 msgid "New From &POT/PO File..."
-msgstr "Nouveau depuis un fichier &POT/PO..."
+msgstr "Nouveau à partir d'un fichier &POT/PO..."
 
 msgid "&Open..."
 msgstr "&Ouvrir..."
@@ -1228,23 +1406,29 @@ msgstr "&Ouvrir..."
 msgid "Open Recent"
 msgstr "Récemment ouverts"
 
+msgid "Open from Crowdin..."
+msgstr "Ouvrir à partir de Crowdin..."
+
+msgid "Open From Crowdin..."
+msgstr "Ouvrir à partir de Crowdin..."
+
 msgid "&Save"
-msgstr "Enregi&strer"
+msgstr "&Enregistrer"
 
 msgid "Save &as..."
-msgstr "Enregistrer sous..."
+msgstr "Enregistrer &sous..."
 
 msgid "Save &As..."
-msgstr "Enregistrer sous..."
+msgstr "Enregistrer &sous..."
 
 msgid "Compile to MO..."
-msgstr "Compiler le Mo..."
+msgstr "Compiler le MO..."
 
 msgid "E&xport as HTML..."
 msgstr "Exporter en HTML…"
 
 msgid "Check for updates..."
-msgstr "Vérifier les mises à jour…"
+msgstr "Recherche de mises à jour..."
 
 msgid "Catalogs &manager"
 msgstr "Gestion des &catalogues"
@@ -1259,10 +1443,10 @@ msgid "Translation Is &Fuzzy"
 msgstr "La traduction est &approximative"
 
 msgid "Edit &comment"
-msgstr "Mofidier le &commentaire"
+msgstr "Mofidifier le &commentaire"
 
 msgid "Edit &Comment"
-msgstr "Mofidier le &commentaire"
+msgstr "Mofidifier le &commentaire"
 
 msgid "Suggestions"
 msgstr "Suggestions"
@@ -1274,55 +1458,64 @@ msgid "&Show References"
 msgstr "&Voir les références"
 
 msgid "&Find..."
-msgstr "Rec&hercher..."
+msgstr "&Rechercher..."
+
+msgid "Replace..."
+msgstr "Remplacer..."
 
 msgid "Find next"
-msgstr "Trouver le suivant"
+msgstr "Chercher le suivant"
 
 msgid "Find previous"
 msgstr "Trouver le précédent"
 
-msgid "Find"
-msgstr "Trouver"
+msgid "Find and Replace..."
+msgstr "Rechercher et remplacer..."
 
 msgid "Find Next"
-msgstr "Trouver le suivant"
+msgstr "Chercher le suivant"
 
 msgid "Find Previous"
-msgstr "Trouver le précédent"
+msgstr "Chercher le précédent"
 
 msgid "&Preferences"
 msgstr "&Préférences"
 
 msgid "Display entry &IDs"
-msgstr "Afficher les IDs des entrées"
+msgstr "Afficher les &IDs des entrées"
 
 msgid "Display Entry &IDs"
-msgstr "Afficher les IDs des entrées"
+msgstr "Afficher les &IDs des entrées"
 
 msgid "Sort by &file order"
-msgstr "Trier selon le &fichier"
+msgstr "Trier par &fichier"
 
 msgid "Sort by &File Order"
-msgstr "Trier selon le &fichier"
+msgstr "Trier par &fichier"
 
 msgid "Sort by &source"
-msgstr "Trier selon la &source"
+msgstr "Trier par &source"
 
 msgid "Sort by &Source"
-msgstr "Trier selon la &source"
+msgstr "Trier par &source"
 
 msgid "Sort by &translation"
-msgstr "Trier selon la &traduction"
+msgstr "Trier par &traduction"
 
 msgid "Sort by &Translation"
-msgstr "Trier selon la &traduction"
+msgstr "Trier par &traduction"
 
 msgid "&Group by context"
 msgstr "&Grouper par contexte"
 
 msgid "&Group By Context"
-msgstr "&Groupe par contexte"
+msgstr "&Grouper par contexte"
+
+msgid "Entries with errors first"
+msgstr "Entrées avec erreurs en premier"
+
+msgid "Entries with Errors First"
+msgstr "Entrées avec erreurs en premier"
 
 msgid "&Untranslated entries first"
 msgstr "Entrées &non traduites en premier"
@@ -1333,14 +1526,17 @@ msgstr "Entrées &non traduites en premier"
 msgid "Show sidebar"
 msgstr "Afficher le panneau latéral"
 
+msgid "Show status bar"
+msgstr "Afficher la barre d'état"
+
 msgid "C&atalog"
-msgstr "C&atalogue"
+msgstr "&Catalogue"
 
 msgid "&Update from sources"
-msgstr "Mise à jo&ur depuis les sources"
+msgstr "&Mettre à jour depuis les sources"
 
 msgid "&Update from Sources"
-msgstr "Mise à jo&ur depuis les sources"
+msgstr "&Mettre à jour depuis les sources"
 
 msgid "Update from &POT file..."
 msgstr "Mettre à jour depuis un fichier &POT..."
@@ -1348,17 +1544,20 @@ msgstr "Mettre à jour depuis un fichier &POT..."
 msgid "Update from &POT File..."
 msgstr "Mettre à jour depuis un fichier &POT..."
 
+msgid "Sync with Crowdin"
+msgstr "Synchroniser avec Crowdin"
+
 msgid "Fill missing translations from &TM..."
-msgstr "Remplir les traductions manquantes avec l'O&TA..."
+msgstr "Remplir les traductions manquantes avec l'M&T..."
 
 msgid "Fill Missing Translations from &TM..."
-msgstr "Remplir les traductions manquantes avec l'O&TA..."
+msgstr "Remplir les traductions manquantes avec l'M&T..."
 
 msgid "&Purge deleted translations"
-msgstr "&Purger les traductions supprimées"
+msgstr "&Effacer les traductions supprimées"
 
 msgid "&Purge Deleted Translations"
-msgstr "&Purger les traductions supprimées"
+msgstr "&Effacer les traductions supprimées"
 
 msgid "&Validate translations"
 msgstr "&Valider les traductions"
@@ -1388,10 +1587,10 @@ msgid "&Next Translation"
 msgstr "Traduction suiva&nte"
 
 msgid "P&revious unfinished"
-msgstr "Incomplet p&récédent"
+msgstr "P&récédent incomplet"
 
 msgid "P&revious Unfinished"
-msgstr "Incomplet p&récédent"
+msgstr "P&récédent incomplet"
 
 msgid "Ne&xt unfinished"
 msgstr "Incomplet suivan&t"
@@ -1412,16 +1611,17 @@ msgid "&GNU gettext Manual"
 msgstr "Manuel de &GNU gettext"
 
 msgid "&About Poedit"
-msgstr "À &propos de Poedit"
+msgstr "&À propos de Poedit"
 
 msgid "&About"
-msgstr "À &propos"
+msgstr "&À propos"
 
 msgid "Extractor setup"
 msgstr "Installation de l'extracteur"
 
 msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):"
-msgstr "Extensions, séparées par des points-virgules (e.g. *.cpp;*.h) :"
+msgstr ""
+"Liste des extensions séparées par des points-virgules (ex. *.cpp;*.h) :"
 
 msgid "Invocation:"
 msgstr "Appel :"
@@ -1436,10 +1636,10 @@ msgid ""
 "%C to charset flag (see below)."
 msgstr ""
 "Voici les commandes lançant l'extracteur.\n"
-"%o étendre au nom du fichier de sortie,\n"
-"%K lister les mots clés,\n"
-"%F lister les fichiers d'entrée,\n"
-"%C jeu de caractères (voir ci-dessous)."
+"%o : étendre au nom du fichier de sortie,\n"
+"%K : lister les mots clés,\n"
+"%F : lister les fichiers d'entrée,\n"
+"%C : jeu de caractères (voir ci-dessous)."
 
 msgid "An item in keywords list:"
 msgstr "Un élément de la liste des mots clés :"
@@ -1452,7 +1652,7 @@ msgstr ""
 "mot clé. %k : le mot clé."
 
 msgid "An item in input files list:"
-msgstr "Un élément de la liste des fichiers d'éléments :"
+msgstr "Un élément de la liste des fichiers d'entrée :"
 
 #, c-format
 msgid ""
@@ -1476,6 +1676,9 @@ msgstr ""
 msgid "Catalog properties"
 msgstr "Propriétés du catalogue"
 
+msgid "Project name and version:"
+msgstr "Nom et version du projet :"
+
 msgid "Plural Forms:"
 msgstr "Formes plurielles :"
 
@@ -1488,17 +1691,29 @@ msgstr "Utiliser une expression personnalisée"
 msgid "Learn about plural forms"
 msgstr "En savoir plus sur les formes plurielles"
 
+msgid "Charset:"
+msgstr "Jeu de caractères :"
+
+msgid "Team:"
+msgstr "Équipe de traduction :"
+
+msgid "Team's email address:"
+msgstr "Adresse électronique de l'équipe :"
+
 msgid "Translation properties"
 msgstr "Propriétés de traduction"
 
+msgid "Sources paths"
+msgstr "Chemins des sources"
+
 msgid "Extract text from source files in the following directories:"
-msgstr "Extraire le texte des répertoires suivants :"
+msgstr "Extraire le texte des fichiers sources dans les répertoires suivants :"
 
 msgid "Base path:"
 msgstr "Chemin de base :"
 
-msgid "Sources paths"
-msgstr "Chemins des sources"
+msgid "Sources keywords"
+msgstr "Mots-clés sources"
 
 msgid ""
 "Use these keywords (function names) to recognize translatable strings\n"
@@ -1510,9 +1725,6 @@ msgstr ""
 msgid "Learn about gettext keywords"
 msgstr "En savoir plus sur les mots clés gettext"
 
-msgid "Sources keywords"
-msgstr "Mots-clés source"
-
 msgid "Update summary"
 msgstr "Résumé de la mise à jour"
 
@@ -1522,7 +1734,7 @@ msgid ""
 msgstr ""
 "Les chaînes suivantes ont été trouvées dans les sources mais n'existent pas "
 "dans le catalogue.\n"
-"Poedit va les ajouter au catalogue maintenant."
+"Poedit les ajoute au catalogue."
 
 msgid "New strings"
 msgstr "Nouvelles chaînes"
@@ -1531,14 +1743,14 @@ msgid ""
 "These strings are no longer in the sources.\n"
 "Poedit will remove them from the catalog now."
 msgstr ""
-"Les chaînes suivantes ne sont plus présentes dans les sources.\n"
-"Poedit va les retirer du catalogue maintenant."
+"Ces chaînes ne sont plus dans les sources.\n"
+"Poedit les retire du catalogue."
 
 msgid "Obsolete strings"
-msgstr "Chaînes désuètes"
+msgstr "Chaînes obsolètes"
 
 msgid "(0 new, 0 obsolete)"
-msgstr "(0 nouvelle, 0 désuète)"
+msgstr "(0 nouvelle, 0 obsolète)"
 
 msgid "Open"
 msgstr "Ouvrir"
@@ -1559,12 +1771,10 @@ msgid "Update catalog - synchronize it with sources"
 msgstr "Mettre à jour le catalogue - Synchroniser avec les sources"
 
 msgid "Toggled if selected string has fuzzy translation"
-msgstr ""
-"Basculer la traduction sélectionnée en traduction approximative (et "
-"inversement)"
+msgstr "Activer si la chaîne sélectionnée est traduite approximativement"
 
-msgid "Show or hide the sidebar."
-msgstr "Afficher ou masquer le panneau latéral."
+msgid "Show or hide the sidebar"
+msgstr "Afficher ou masquer le panneau latéral"
 
 #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer.
 msgid "Previous source text:"
@@ -1577,6 +1787,9 @@ msgstr ""
 "L'ancien texte source (avant son changement durant une mise à jour) auquel "
 "correspond la traduction approximative."
 
+msgid "Notes for translators:"
+msgstr "Notes pour les traducteurs :"
+
 msgid "Add comment"
 msgstr "Ajouter un commentaire"
 
@@ -1603,7 +1816,7 @@ msgstr "(Nouvelle : %i, obsolète : %i)"
 
 #, c-format
 msgid "Importing translations: %d"
-msgstr "Importation des traductions : %d"
+msgstr "Import de traductions : %d"
 
 msgid "Poedit Update"
 msgstr "Mise à jour de Poedit"
@@ -1617,22 +1830,21 @@ msgstr "État de la migration : %d"
 
 msgid "Poedit needs to convert your translation memory to a new format."
 msgstr ""
-"Poedit a besoin de convertir votre mémoire de traduction dans un nouveau "
-"format."
+"Poedit doit convertir votre mémoire de traduction dans un nouveau format."
 
 msgid ""
 "This must be done before Poedit can start. It may take a few minutes if you "
 "have lots of translations stored, but should normally be much faster."
 msgstr ""
-"Cela doit être fait avant que Poedit ne puisse démarrer. Cela peut prendre "
-"quelques minutes si vous avez beaucoup de traductions stockées, mais cela "
-"devrait normalement être très rapide."
+"Il faut le faire avant le démarrage de Poedit. Cela peut prendre quelques "
+"minutes si vous avez beaucoup de traductions stockées, mais ce devrait "
+"normalement être plus rapide."
 
 msgid "Proceed"
-msgstr "Procéder"
+msgstr "Poursuivre"
 
 msgid "Translation memory migration failed."
-msgstr "Echec de la migration de la mémoire de traduction."
+msgstr "Échec de la migration de la mémoire de traduction."
 
 #, c-format
 msgid ""
@@ -1645,8 +1857,8 @@ msgstr ""
 "\n"
 " • %s\n"
 "\n"
-"S'il vous plaît envoyez un e-mail à help at poedit.net et nous allons régler ce "
-"problème."
+"Veuillez envoyer un e-mail à help at poedit.net pour que nous puissions régler "
+"le problème."
 
 msgid "Cannot create temporary directory."
 msgstr "Impossible de créer le répertoire temporaire."
@@ -1660,15 +1872,24 @@ msgstr "Modifier une traduction"
 msgid "Open an existing PO file and edit the translation."
 msgstr "Ouvrir un fichier PO existant et modifier la traduction."
 
-msgid "Create new translation"
-msgstr "Créer une nouvelle traduction"
-
 msgid ""
 "Take an existing PO file or POT template and create a new translation from "
 "it."
 msgstr ""
-"À partir d'un fichier PO existant ou d'un modèle POT créer une nouvelle "
-"traduction."
+"Créer une nouvelle traduction partir d'un fichier PO ou d'un modèle POT "
+"existant."
+
+msgid "Collaborate on a translation with Crowdin"
+msgstr "Collaborer à une traduction avec Crowdin"
+
+msgid ""
+"Download a file from Crowdin project, translate and sync your changes back."
+msgstr ""
+"Télécharger un fichier d'un projet Crowdin, traduire et synchroniser vos "
+"modifications."
+
+msgid "What is Crowdin?"
+msgstr "Qu'est-ce que Crowdin ?"
 
 msgid "There are no translations. That’s unusual."
 msgstr "Il n’y a pas de traductions. Ce n’est pas courant."
@@ -1680,11 +1901,11 @@ msgid ""
 "Translators typically use PO template files (POTs) prepared for them by the "
 "developer."
 msgstr ""
-"Les entrées traduisibles ne sont pas ajoutées manuellement dans le système "
+"Les entrées traduisibles ne sont pas ajoutées manuellement au système "
 "Gettext, mais sont extraites automatiquement\n"
 "à partir du code source. De cette façon, elles restent à jour et exactes.\n"
 "Les traducteurs utilisent généralement des fichiers de modèle PO (POTS) "
-"préparés pour eux par le développeur."
+"préparés par le développeur."
 
 msgid "(Learn more about GNU gettext)"
 msgstr "(En savoir plus sur GNU gettext)"
@@ -1711,3 +1932,9 @@ msgstr "Extraire depuis les sources"
 
 msgid "Configure source code extraction in Properties."
 msgstr "Configurer l’extraction de code source dans les Propriétés."
+
+msgid "Sync"
+msgstr "Synchroniser"
+
+msgid "Synchronize the translation with Crowdin"
+msgstr "Synchroniser la traduction avec Crowdin"
diff --git a/locales/fur.mo b/locales/fur.mo
index 8ec8a14..cf75440 100644
Binary files a/locales/fur.mo and b/locales/fur.mo differ
diff --git a/locales/fur.po b/locales/fur.po
index b94dd04..a5a09f8 100644
--- a/locales/fur.po
+++ b/locales/fur.po
@@ -2,8 +2,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: poedit\n"
 "Report-Msgid-Bugs-To: help at poedit.net\n"
-"POT-Creation-Date: 2015-01-10 16:00+0100\n"
-"PO-Revision-Date: 2015-03-10 12:33-0400\n"
+"POT-Creation-Date: 2015-05-27 11:31+0200\n"
+"PO-Revision-Date: 2015-05-27 05:18-0400\n"
 "Last-Translator: vslavik <vaclav at slavik.io>\n"
 "Language-Team: Friulian\n"
 "Language: fur_IT\n"
@@ -88,6 +88,15 @@ msgstr ""
 msgid "Error saving catalog"
 msgstr "Erôr salvant il catalic"
 
+msgid "PO Translation Files"
+msgstr ""
+
+msgid "POT Translation Templates"
+msgstr ""
+
+msgid "All Translation Files"
+msgstr ""
+
 msgid "Merging differences..."
 msgstr "Zontant lis diferencis..."
 
@@ -107,6 +116,83 @@ msgstr "Selezion de lenghe"
 msgid "You must restart Poedit for this change to take effect."
 msgstr "Tu 'nd âs di tornâ a inviâ Poedit par viodi i cambiaments."
 
+msgid "Downloading translations is disabled in this project."
+msgstr ""
+
+msgid "Not authorized, please sign in again."
+msgstr ""
+
+msgid "Sign in to Crowdin"
+msgstr ""
+
+msgid ""
+"Crowdin is an online localization management platform and collaborative "
+"translation tool. Poedit can seamlessly sync PO files managed at Crowdin."
+msgstr ""
+
+msgid "Sign In"
+msgstr ""
+
+msgid "Sign in"
+msgstr ""
+
+msgid "Sign Out"
+msgstr ""
+
+msgid "Sign out"
+msgstr ""
+
+msgid "Waiting for authentication…"
+msgstr ""
+
+msgid "Updating user information…"
+msgstr ""
+
+msgid "Signed in as:"
+msgstr ""
+
+msgid "Learn More About Crowdin"
+msgstr ""
+
+msgid "Learn more about Crowdin"
+msgstr ""
+
+msgid "Open Crowdin translation"
+msgstr ""
+
+msgid "Project:"
+msgstr ""
+
+msgid "Language:"
+msgstr "Lengaç:"
+
+msgid "File:"
+msgstr ""
+
+msgid "No translation projects listed in your Crowdin account."
+msgstr ""
+
+msgid "This project has no files that can be translated in Poedit."
+msgstr ""
+
+msgid "This file can only be edited in Crowdin’s web interface."
+msgstr ""
+
+msgid "Downloading latest translations…"
+msgstr ""
+
+msgid "Syncing with Crowdin"
+msgstr ""
+
+msgid "Syncing with Crowdin failed."
+msgstr ""
+
+msgid "Crowdin error"
+msgstr ""
+
+msgid "Uploading translations…"
+msgstr ""
+
 msgid "&Copy"
 msgstr ""
 
@@ -151,6 +237,12 @@ msgstr ""
 msgid "don't delete temporary files (for debugging)"
 msgstr ""
 
+msgid "handle a poedit:// URI"
+msgstr ""
+
+msgid "Failed to communicate with Poedit process."
+msgstr ""
+
 #, c-format
 msgid "Unhandled exception occurred: %s"
 msgstr ""
@@ -161,12 +253,6 @@ msgstr ""
 msgid "Open catalog"
 msgstr "Viarç catalic"
 
-msgid "All Files"
-msgstr ""
-
-msgid "PO Translation Files"
-msgstr ""
-
 #, c-format
 msgid "File '%s' doesn't exist."
 msgstr "Il file '%s' nol esist."
@@ -394,6 +480,17 @@ msgstr "Plurâl:"
 msgid "Translation:"
 msgstr ""
 
+msgid ""
+"POT files are only templates and don’t contain any translations themselves.\n"
+"To make a translation, create a new PO file based on the template."
+msgstr ""
+
+msgid "Create New Translation"
+msgstr ""
+
+msgid "Create new translation"
+msgstr ""
+
 #. TRANSLATORS: %s is language name in its basic form (as you
 #. would see e.g. in a list of supported languages). You may need
 #. to rephrase it, e.g. to an equivalent of "for language %s".
@@ -441,9 +538,6 @@ msgstr ""
 msgid "Open catalog template"
 msgstr "Viarç model di catalic"
 
-msgid "POT Translation Templates"
-msgstr ""
-
 msgid "Updating catalog"
 msgstr ""
 
@@ -512,16 +606,18 @@ msgstr[1] ""
 msgid "The translation is ready for use."
 msgstr ""
 
-msgid "No references to this string found."
-msgstr "Nissun riferiment a cheste stringhe cjatât."
-
-msgid "Please choose the reference you want to show:"
-msgstr "Sielç par plasê i riferiments che tu vuelis mostrâ:"
+msgid "Context:"
+msgstr ""
 
-msgid "References"
-msgstr "Riferiments"
+#, c-format
+msgid "Poedit automatically fixed invalid content in the file “%s”."
+msgstr ""
 
-msgid "Context:"
+msgid ""
+"The file contained duplicate items, which is not allowed in PO files and "
+"would prevent the file from being used. Poedit fixed the issue, but you "
+"should review translations of any items marked as fuzzy and correct them if "
+"necessary."
 msgstr ""
 
 msgid "Language of the translation isn't set."
@@ -533,6 +629,21 @@ msgstr ""
 msgid "Set language"
 msgstr ""
 
+#. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)."
+msgid ""
+"Suggestions are not available if the translation language is not set "
+"correctly. Other features, such as plural forms, may be affected as well."
+msgstr ""
+
+msgid "Language of the translation is the same as source language."
+msgstr ""
+
+msgid "Fix Language"
+msgstr ""
+
+msgid "Fix language"
+msgstr ""
+
 msgid ""
 "This catalog has entries with plural forms, but doesn't have Plural-Forms "
 "header configured."
@@ -563,6 +674,7 @@ msgstr ""
 msgid "Plural forms expression used by the catalog is unusual for %s."
 msgstr ""
 
+#. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the catalog is unusual for %s.")"
 msgid "Review"
 msgstr ""
 
@@ -584,6 +696,12 @@ msgid_plural "%d errors"
 msgstr[0] ""
 msgstr[1] ""
 
+#, c-format
+msgid "%d entry"
+msgid_plural "%d entries"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid " (unsaved)"
 msgstr ""
 
@@ -697,6 +815,9 @@ msgstr ""
 msgid "Form %i"
 msgstr ""
 
+msgid "Singular"
+msgstr ""
+
 msgid "Zero"
 msgstr ""
 
@@ -706,6 +827,9 @@ msgstr ""
 msgid "Two"
 msgstr ""
 
+msgid "Plural"
+msgstr ""
+
 msgid "Other"
 msgstr ""
 
@@ -734,6 +858,12 @@ msgstr ""
 msgid "Show Sidebar"
 msgstr ""
 
+msgid "Hide Status Bar"
+msgstr ""
+
+msgid "Show Status Bar"
+msgstr ""
+
 msgid "Source text"
 msgstr ""
 
@@ -743,6 +873,10 @@ msgstr "Traduzion"
 msgid "ID"
 msgstr ""
 
+#, c-format
+msgid "Source text — %s"
+msgstr ""
+
 msgid "unknown language"
 msgstr ""
 
@@ -753,57 +887,73 @@ msgstr ""
 msgid "Error:"
 msgstr ""
 
-msgid "Project info"
-msgstr "Info progjet"
+msgid "Source file"
+msgstr "File sorzint"
 
-msgid "Project name and version:"
-msgstr "Non dal progjet e version:"
+msgid "Source file occurrence:"
+msgstr ""
 
-msgid "Language:"
-msgstr "Lengaç:"
+msgid "Open in Editor"
+msgstr ""
 
-msgid "Team:"
-msgstr "Clape:"
+msgid "Open in editor"
+msgstr ""
 
-msgid "Team's email address:"
-msgstr "Recapit email de clape:"
+msgid "No references for the selected item."
+msgstr ""
 
-msgid "Charset:"
-msgstr "Set di caratars:"
+#, c-format
+msgid "Error opening file %s!"
+msgstr "Erôr viarzint il file %s!"
 
-msgid "Source"
+msgid "Find"
 msgstr ""
 
-msgid "Notes"
-msgstr "Notis"
+msgid "Replace"
+msgstr ""
 
-msgid "Automatic translation"
-msgstr "Traduzion automatiche"
+#. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.)
+msgid "Options"
+msgstr ""
 
-msgid "Fuzzy translation"
-msgstr "Traduzion malsigure"
+msgid "Ignore case"
+msgstr ""
 
-msgid "Notes for translators:"
+msgid "Wrap around"
 msgstr ""
 
-msgid "Comment:"
-msgstr "Coment:"
+msgid "Whole words only"
+msgstr "Dome peraulis intiris"
 
-msgid "Source file"
-msgstr "File sorzint"
+msgid "Find in source texts"
+msgstr ""
 
-msgid "Source file occurrence:"
+msgid "Find in translations"
 msgstr ""
 
-msgid "Open in Editor"
+msgid "Find in comments"
+msgstr "Cjate tai coments"
+
+msgid "Close"
 msgstr ""
 
-msgid "Open in editor"
+msgid "Replace All"
 msgstr ""
 
-#, c-format
-msgid "Error opening file %s!"
-msgstr "Erôr viarzint il file %s!"
+msgid "Replace all"
+msgstr ""
+
+msgid "< &Previous"
+msgstr ""
+
+msgid "&Next >"
+msgstr ""
+
+msgid "String to find"
+msgstr ""
+
+msgid "Replacement string"
+msgstr ""
 
 #, c-format
 msgid "Cannot execute program: %s"
@@ -996,9 +1146,19 @@ msgstr "Gnûf"
 msgid "Edit"
 msgstr "Edite"
 
+msgid "Delete extractor"
+msgstr ""
+
+#, c-format
+msgid "Are you sure you want to delete the “%s” extractor?"
+msgstr ""
+
 msgid "Extractors"
 msgstr ""
 
+msgid "Accounts"
+msgstr ""
+
 msgid "Automatically check for updates"
 msgstr ""
 
@@ -1037,7 +1197,34 @@ msgstr ""
 msgid "Advanced"
 msgstr ""
 
-msgid "Additional keywords"
+msgid ""
+"<big>Drag and Drop Folders Here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+
+msgid ""
+"<big>Drag and drop folders here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+
+msgid "Add Folders..."
+msgstr ""
+
+msgid "Add folders..."
+msgstr ""
+
+msgid "Add Files..."
+msgstr ""
+
+msgid "Add files..."
+msgstr ""
+
+msgid "Add Wildcard..."
+msgstr ""
+
+msgid "Add wildcard..."
 msgstr ""
 
 msgid "Paths"
@@ -1046,6 +1233,9 @@ msgstr "Percors"
 msgid "Excluded paths"
 msgstr ""
 
+msgid "Additional keywords"
+msgstr ""
+
 msgid "Name of the project the translation is for"
 msgstr ""
 
@@ -1058,6 +1248,9 @@ msgstr ""
 msgid "Please save the file first. This section cannot be edited until then."
 msgstr ""
 
+msgid "Comment:"
+msgstr "Coment:"
+
 msgid "OK"
 msgstr "OK"
 
@@ -1067,42 +1260,6 @@ msgstr ""
 msgid "Clear the comment"
 msgstr "Nete il coment"
 
-msgid "Find..."
-msgstr "Cjate..."
-
-msgid "String to find:"
-msgstr "Stringhe di cjatâ:"
-
-msgid "Case sensitive"
-msgstr "Maiuscul/Minuscul"
-
-msgid "Start from the first item"
-msgstr "Scomence de prime vôs"
-
-msgid "Whole words only"
-msgstr "Dome peraulis intiris"
-
-msgid "Find in original strings"
-msgstr "Cjate intes stringhis origjinâls"
-
-msgid "Find in translations"
-msgstr ""
-
-msgid "Find in comments"
-msgstr "Cjate tai coments"
-
-msgid "Find in automatic comments"
-msgstr "Cjate tai coments automatics"
-
-msgid "Close"
-msgstr ""
-
-msgid "< &Previous"
-msgstr ""
-
-msgid "&Next >"
-msgstr ""
-
 msgid "Create new translations project"
 msgstr "Cree gnûf progjet di traduzions"
 
@@ -1157,6 +1314,12 @@ msgstr ""
 msgid "Open Recent"
 msgstr ""
 
+msgid "Open from Crowdin..."
+msgstr ""
+
+msgid "Open From Crowdin..."
+msgstr ""
+
 msgid "&Save"
 msgstr "&Salve"
 
@@ -1205,13 +1368,16 @@ msgstr ""
 msgid "&Find..."
 msgstr "C&jate..."
 
+msgid "Replace..."
+msgstr ""
+
 msgid "Find next"
 msgstr ""
 
 msgid "Find previous"
 msgstr ""
 
-msgid "Find"
+msgid "Find and Replace..."
 msgstr ""
 
 msgid "Find Next"
@@ -1253,6 +1419,12 @@ msgstr ""
 msgid "&Group By Context"
 msgstr ""
 
+msgid "Entries with errors first"
+msgstr ""
+
+msgid "Entries with Errors First"
+msgstr ""
+
 msgid "&Untranslated entries first"
 msgstr ""
 
@@ -1262,6 +1434,9 @@ msgstr ""
 msgid "Show sidebar"
 msgstr ""
 
+msgid "Show status bar"
+msgstr ""
+
 msgid "C&atalog"
 msgstr "&Catalic"
 
@@ -1277,6 +1452,9 @@ msgstr "Atualize di un file &POT"
 msgid "Update from &POT File..."
 msgstr ""
 
+msgid "Sync with Crowdin"
+msgstr ""
+
 msgid "Fill missing translations from &TM..."
 msgstr ""
 
@@ -1400,6 +1578,9 @@ msgstr ""
 msgid "Catalog properties"
 msgstr ""
 
+msgid "Project name and version:"
+msgstr "Non dal progjet e version:"
+
 msgid "Plural Forms:"
 msgstr "Formis plurâls:"
 
@@ -1412,16 +1593,28 @@ msgstr ""
 msgid "Learn about plural forms"
 msgstr ""
 
+msgid "Charset:"
+msgstr "Set di caratars:"
+
+msgid "Team:"
+msgstr "Clape:"
+
+msgid "Team's email address:"
+msgstr "Recapit email de clape:"
+
 msgid "Translation properties"
 msgstr ""
 
+msgid "Sources paths"
+msgstr ""
+
 msgid "Extract text from source files in the following directories:"
 msgstr ""
 
 msgid "Base path:"
 msgstr "Percors base:"
 
-msgid "Sources paths"
+msgid "Sources keywords"
 msgstr ""
 
 msgid ""
@@ -1432,9 +1625,6 @@ msgstr ""
 msgid "Learn about gettext keywords"
 msgstr ""
 
-msgid "Sources keywords"
-msgstr ""
-
 msgid "Update summary"
 msgstr "Sunt de atualizazion"
 
@@ -1482,7 +1672,7 @@ msgstr "Atualize catalic - sincronizilu cui sorzints"
 msgid "Toggled if selected string has fuzzy translation"
 msgstr "Impueste se la traduzion de stringhe selezionade e je malsigure"
 
-msgid "Show or hide the sidebar."
+msgid "Show or hide the sidebar"
 msgstr ""
 
 #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer.
@@ -1494,6 +1684,9 @@ msgid ""
 "translation corresponds to."
 msgstr ""
 
+msgid "Notes for translators:"
+msgstr ""
+
 msgid "Add comment"
 msgstr ""
 
@@ -1566,14 +1759,21 @@ msgstr ""
 msgid "Open an existing PO file and edit the translation."
 msgstr ""
 
-msgid "Create new translation"
-msgstr ""
-
 msgid ""
 "Take an existing PO file or POT template and create a new translation from "
 "it."
 msgstr ""
 
+msgid "Collaborate on a translation with Crowdin"
+msgstr ""
+
+msgid ""
+"Download a file from Crowdin project, translate and sync your changes back."
+msgstr ""
+
+msgid "What is Crowdin?"
+msgstr ""
+
 msgid "There are no translations. That’s unusual."
 msgstr ""
 
@@ -1606,3 +1806,9 @@ msgstr ""
 
 msgid "Configure source code extraction in Properties."
 msgstr ""
+
+msgid "Sync"
+msgstr ""
+
+msgid "Synchronize the translation with Crowdin"
+msgstr ""
diff --git a/locales/fy_NL.mo b/locales/fy_NL.mo
new file mode 100644
index 0000000..901969b
Binary files /dev/null and b/locales/fy_NL.mo differ
diff --git a/locales/af.po b/locales/fy_NL.po
similarity index 75%
copy from locales/af.po
copy to locales/fy_NL.po
index 50af566..073a107 100644
--- a/locales/af.po
+++ b/locales/fy_NL.po
@@ -2,28 +2,28 @@ msgid ""
 msgstr ""
 "Project-Id-Version: poedit\n"
 "Report-Msgid-Bugs-To: help at poedit.net\n"
-"POT-Creation-Date: 2015-01-10 16:00+0100\n"
-"PO-Revision-Date: 2015-03-10 12:33-0400\n"
+"POT-Creation-Date: 2015-05-27 11:31+0200\n"
+"PO-Revision-Date: 2015-05-27 05:17-0400\n"
 "Last-Translator: vslavik <vaclav at slavik.io>\n"
-"Language-Team: Afrikaans\n"
-"Language: af_ZA\n"
+"Language-Team: Frisian\n"
+"Language: fy_NL\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 "X-Generator: crowdin.com\n"
 "X-Crowdin-Project: poedit\n"
-"X-Crowdin-Language: af\n"
+"X-Crowdin-Language: fy-NL\n"
 "X-Crowdin-File: /locales/poedit.pot\n"
 
 msgid "Hide this notification message"
 msgstr ""
 
 msgid "Don't Show Again"
-msgstr ""
+msgstr "Net mear werjaan"
 
 msgid "Don't show again"
-msgstr ""
+msgstr "Net mear werjaan"
 
 #, c-format
 msgid "%i line of file '%s' was not loaded correctly."
@@ -37,35 +37,29 @@ msgstr ""
 
 #, c-format
 msgid "Malformed header: '%s'"
-msgstr "Wangevormde kopstuk: '%s'"
+msgstr ""
 
 msgid ""
 "Broken catalog file: singular form msgstr used together with msgid_plural"
 msgstr ""
-"Gebroke kataloguslêer: enkelvoudvorm msgstr is gebruik saam met msgid_plural"
 
 msgid "Broken catalog file: plural form msgstr used without msgid_plural"
 msgstr ""
-"Gebroke kataloguslêer: meervoudvorm msgstr is gebruik sonder msgid_plural"
 
 msgid ""
 "There were errors when loading the catalog. Some data may be missing or "
 "corrupted as the result."
 msgstr ""
-"Daar het foute voorgekom tydens die laai van die katalogus.  As gevolg "
-"daarvan kan sommige data ontbreek of korrup wees."
 
 #, c-format
 msgid "Couldn't load file %s, it is probably corrupted."
-msgstr "Kon nie lêer %s laai nie.  Dit is waarskynlik korrup."
+msgstr ""
 
 #, c-format
 msgid ""
 "File '%s' is read-only and cannot be saved.\n"
 "Please save it under different name."
 msgstr ""
-"Lêer '%s' is lees-alleen en kan nie gestoor word nie.\n"
-"Stoor dit asb met 'n ander lêernaam."
 
 #, c-format
 msgid "Couldn't save file %s."
@@ -84,36 +78,122 @@ msgid ""
 msgstr ""
 
 msgid "Error saving catalog"
-msgstr "Fout met stoor van katalogus"
+msgstr ""
+
+msgid "PO Translation Files"
+msgstr ""
+
+msgid "POT Translation Templates"
+msgstr ""
+
+msgid "All Translation Files"
+msgstr ""
 
 msgid "Merging differences..."
-msgstr "Verskille word bygewerk..."
+msgstr ""
 
 #, c-format
 msgid "'%s' is not a valid POT file."
-msgstr "'%s' is nie 'n geldige POT-lêer nie."
+msgstr ""
 
 msgid "(Use default language)"
-msgstr "(Gebruik verstektaal)"
+msgstr "(Standerttaal brûke)"
 
 msgid "Select your preferred language"
-msgstr "Asseblief kies jou voorkeurtaal"
+msgstr "Kies jo foarkartaal"
 
 msgid "Language selection"
-msgstr "Taalkeuse"
+msgstr "Taalseleksje"
 
 msgid "You must restart Poedit for this change to take effect."
-msgstr "Herbegin Poedit vir hierdie verandering om 'n effek te hê."
+msgstr ""
 
-msgid "&Copy"
+msgid "Downloading translations is disabled in this project."
 msgstr ""
 
-msgid "Learn more"
+msgid "Not authorized, please sign in again."
 msgstr ""
 
-msgid "Learn More"
+msgid "Sign in to Crowdin"
+msgstr "Ynlogge by Crowdin"
+
+msgid ""
+"Crowdin is an online localization management platform and collaborative "
+"translation tool. Poedit can seamlessly sync PO files managed at Crowdin."
 msgstr ""
 
+msgid "Sign In"
+msgstr "Ynlogge"
+
+msgid "Sign in"
+msgstr "Ynlogge"
+
+msgid "Sign Out"
+msgstr "Utlogge"
+
+msgid "Sign out"
+msgstr "Utlogge"
+
+msgid "Waiting for authentication…"
+msgstr ""
+
+msgid "Updating user information…"
+msgstr ""
+
+msgid "Signed in as:"
+msgstr ""
+
+msgid "Learn More About Crowdin"
+msgstr ""
+
+msgid "Learn more about Crowdin"
+msgstr ""
+
+msgid "Open Crowdin translation"
+msgstr ""
+
+msgid "Project:"
+msgstr "Projekt:"
+
+msgid "Language:"
+msgstr "Taal:"
+
+msgid "File:"
+msgstr ""
+
+msgid "No translation projects listed in your Crowdin account."
+msgstr ""
+
+msgid "This project has no files that can be translated in Poedit."
+msgstr ""
+
+msgid "This file can only be edited in Crowdin’s web interface."
+msgstr ""
+
+msgid "Downloading latest translations…"
+msgstr ""
+
+msgid "Syncing with Crowdin"
+msgstr ""
+
+msgid "Syncing with Crowdin failed."
+msgstr ""
+
+msgid "Crowdin error"
+msgstr ""
+
+msgid "Uploading translations…"
+msgstr ""
+
+msgid "&Copy"
+msgstr "&Kopiearje"
+
+msgid "Learn more"
+msgstr "Lês mear"
+
+msgid "Learn More"
+msgstr "Lês mear"
+
 #, c-format
 msgid "Failed command: %s"
 msgstr ""
@@ -122,7 +202,7 @@ msgid "Failed to merge gettext catalogs."
 msgstr ""
 
 msgid "Scanning files..."
-msgstr "Lêers word verwerk..."
+msgstr ""
 
 #. TRANSLATORS: '%s' is replaced with the kind of the files (e.g. C++, PHP, ...)
 #, c-format
@@ -133,7 +213,7 @@ msgid "Failed to load extracted catalog."
 msgstr ""
 
 msgid "&Help"
-msgstr "&Hulp"
+msgstr "&Help"
 
 msgid "MO files can’t be directly edited in Poedit."
 msgstr ""
@@ -149,6 +229,12 @@ msgstr ""
 msgid "don't delete temporary files (for debugging)"
 msgstr ""
 
+msgid "handle a poedit:// URI"
+msgstr ""
+
+msgid "Failed to communicate with Poedit process."
+msgstr ""
+
 #, c-format
 msgid "Unhandled exception occurred: %s"
 msgstr ""
@@ -157,53 +243,47 @@ msgid "Unhandled exception occurred."
 msgstr ""
 
 msgid "Open catalog"
-msgstr "Maak katalogus oop"
-
-msgid "All Files"
-msgstr ""
-
-msgid "PO Translation Files"
-msgstr ""
+msgstr "Katalogus iepenje"
 
 #, c-format
 msgid "File '%s' doesn't exist."
-msgstr "Lêer '%s' bestaan nie."
+msgstr ""
 
 #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name
 #. ("Poedit" here, but please use "%s")
 #, c-format
 msgid "About %s"
-msgstr ""
+msgstr "Oer %s"
 
 #. TRANSLATORS: This is version information in about dialog, "%s" will be
 #. version number when used
 #, c-format
 msgid "Version %s"
-msgstr ""
+msgstr "Ferzje %s"
 
 msgid "Poedit is an easy to use translations editor."
 msgstr ""
 
 msgid "Catalogs Manager"
-msgstr ""
+msgstr "Katalogusbehearder"
 
 msgid "Check for Updates..."
 msgstr ""
 
 msgid "&Edit"
-msgstr "R&edigeer"
+msgstr "B&ewurkje"
 
 msgid "Undo"
-msgstr "Herroep"
+msgstr "Ungedien meitsje"
 
 msgid "Redo"
-msgstr ""
+msgstr "Opnij"
 
 msgid "Paste and Match Style"
 msgstr ""
 
 msgid "Delete"
-msgstr "Wis uit"
+msgstr "Fuortsmite"
 
 msgid "Spelling and Grammar"
 msgstr ""
@@ -224,25 +304,25 @@ msgid "Correct Spelling Automatically"
 msgstr ""
 
 msgid "Substitutions"
-msgstr ""
+msgstr "Ferfangings"
 
 msgid "Show Substitutions"
-msgstr ""
+msgstr "Ferfangings werjaan"
 
 msgid "Smart Copy/Paste"
-msgstr ""
+msgstr "Snoad kopiearje/plakke"
 
 msgid "Smart Quotes"
-msgstr ""
+msgstr "Snoade oanhellingstekens"
 
 msgid "Smart Dashes"
-msgstr ""
+msgstr "Snoade strypkes"
 
 msgid "Smart Links"
-msgstr ""
+msgstr "Snoade keppelings"
 
 msgid "Text Replacement"
-msgstr ""
+msgstr "Tekstferfanging"
 
 msgid "Transformations"
 msgstr ""
@@ -257,7 +337,7 @@ msgid "Capitalize"
 msgstr ""
 
 msgid "Speech"
-msgstr ""
+msgstr "Spraak"
 
 msgid "Start Speaking"
 msgstr ""
@@ -266,25 +346,25 @@ msgid "Stop Speaking"
 msgstr ""
 
 msgid "&View"
-msgstr "&Besigtig"
+msgstr "&Besjen"
 
 msgid "Enter Full Screen"
 msgstr ""
 
 msgid "Window"
-msgstr ""
+msgstr "Finster"
 
 msgid "Minimize"
-msgstr ""
+msgstr "Minimalisearje"
 
 msgid "Zoom"
-msgstr ""
+msgstr "Ynzoome"
 
 msgid "Bring All to Front"
 msgstr ""
 
 msgid "PO Translation"
-msgstr ""
+msgstr "PO-oersetting"
 
 msgid "The file cannot be opened."
 msgstr ""
@@ -297,101 +377,112 @@ msgid ""
 msgstr ""
 
 msgid "&Undo"
-msgstr ""
+msgstr "&Ungedien meitsje"
 
 msgid "&Redo"
-msgstr ""
+msgstr "&Opnij"
 
 msgid "Cu&t"
-msgstr ""
+msgstr "Kni&ppe"
 
 msgid "Cut"
-msgstr ""
+msgstr "Knippe"
 
 msgid "Copy"
-msgstr ""
+msgstr "Kopiearje"
 
 msgid "&Paste"
-msgstr ""
+msgstr "&Plakke"
 
 msgid "Paste"
-msgstr ""
+msgstr "Plakke"
 
 msgid "&Delete"
-msgstr ""
+msgstr "&Fuortsmite"
 
 msgid "Select &All"
-msgstr ""
+msgstr "&Alles selektearje"
 
 msgid "Select All"
-msgstr ""
+msgstr "Alles selektearje"
 
 #. TRANSLATORS: Keyboard shortcut for display in Windows menus
 #. TRANSLATORS: This is the key shortcut used in menus on Windows, some languages call them differently
 msgid "Ctrl+"
-msgstr ""
+msgstr "Ctrl+"
 
 #. TRANSLATORS: Keyboard shortcut for display in Windows menus
 #. TRANSLATORS: This is the key shortcut used in menus on Windows, some languages call them differently
 msgid "Alt+"
-msgstr ""
+msgstr "Alt+"
 
 #. TRANSLATORS: Keyboard shortcut for display in Windows menus
 msgid "Shift+"
-msgstr ""
+msgstr "Shift+"
 
 #. TRANSLATORS: Keyboard shortcut for display in Windows menus
 msgid "Enter"
-msgstr ""
+msgstr "Enter"
 
 #. TRANSLATORS: Keyboard shortcut for display in Windows menus
 msgid "Up"
-msgstr ""
+msgstr "Omheech"
 
 #. TRANSLATORS: Keyboard shortcut for display in Windows menus
 msgid "Down"
-msgstr ""
+msgstr "Omleech"
 
 #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+"
 msgid "ctrl"
-msgstr ""
+msgstr "ctrl"
 
 #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+"
 msgid "alt"
-msgstr ""
+msgstr "alt"
 
 #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+"
 msgid "shift"
-msgstr ""
+msgstr "shift"
 
 msgid "You can't drop more than one file on Poedit window."
-msgstr "Slegs een lêer kan na die Poedit-venster gesleep word."
+msgstr ""
 
 #, c-format
 msgid "File '%s' is not a message catalog."
 msgstr ""
 
 msgid "Poedit"
-msgstr "Poedit "
+msgstr "Poedit"
 
 msgid "&File"
-msgstr "&Lêer"
+msgstr ""
 
 msgid "&Go"
-msgstr ""
+msgstr "&Navigearje"
 
 msgid "Source text:"
 msgstr ""
 
 msgid "Singular:"
-msgstr "Enkelvoud"
+msgstr "Iental:"
 
 msgid "Plural:"
-msgstr "Meervoud:"
+msgstr "Meartal:"
 
 msgid "Translation:"
+msgstr "Oersetting:"
+
+msgid ""
+"POT files are only templates and don’t contain any translations themselves.\n"
+"To make a translation, create a new PO file based on the template."
 msgstr ""
 
+msgid "Create New Translation"
+msgstr ""
+
+msgid "Create new translation"
+msgstr "Nije oersetting meitsje"
+
 #. TRANSLATORS: %s is language name in its basic form (as you
 #. would see e.g. in a list of supported languages). You may need
 #. to rephrase it, e.g. to an equivalent of "for language %s".
@@ -401,45 +492,42 @@ msgid ""
 msgstr ""
 
 msgid "Install"
-msgstr ""
+msgstr "Ynstallearje"
 
 msgid "Catalog modified. Do you want to save changes?"
-msgstr "Die katalogus het verander.  Wil jy die veranderinge stoor?"
+msgstr ""
 
 msgid "Save changes"
-msgstr "Stoor veranderinge?"
+msgstr ""
 
 msgid "Your changes will be lost if you don't save them."
 msgstr ""
 
 msgid "Save"
-msgstr ""
+msgstr "Bewarje"
 
 msgid "Don't save"
-msgstr ""
+msgstr "Net bewarje"
 
 msgid "Don't Save"
-msgstr ""
+msgstr "Net bewarje"
 
 msgid "Save as..."
-msgstr "Stoor as..."
+msgstr "Bewarje as..."
 
 msgid "Compile to..."
-msgstr ""
+msgstr "Kompilearre nei..."
 
 msgid "Compiled Translation Files"
 msgstr ""
 
 msgid "Export as..."
-msgstr "Skryf uit as ..."
+msgstr "Eksportearje as..."
 
 msgid "HTML Files"
 msgstr ""
 
 msgid "Open catalog template"
-msgstr "Maak sjabloon oop"
-
-msgid "POT Translation Templates"
 msgstr ""
 
 msgid "Updating catalog"
@@ -457,7 +545,7 @@ msgid ""
 msgstr ""
 
 msgid "Entries in the catalog are probably incorrect."
-msgstr "Inskrywings in die katalogus is waarskynlik verkeerd."
+msgstr ""
 
 msgid "Updating the catalog failed. Click on 'Details >>' for details."
 msgstr ""
@@ -510,27 +598,44 @@ msgstr[1] ""
 msgid "The translation is ready for use."
 msgstr ""
 
-msgid "No references to this string found."
-msgstr "Geen verwysings na hierdie string gevind nie."
-
-msgid "Please choose the reference you want to show:"
-msgstr "Kies asb. die verwysing wat gewys moet word:"
+msgid "Context:"
+msgstr "Kontekst:"
 
-msgid "References"
-msgstr "Verwysings "
+#, c-format
+msgid "Poedit automatically fixed invalid content in the file “%s”."
+msgstr ""
 
-msgid "Context:"
+msgid ""
+"The file contained duplicate items, which is not allowed in PO files and "
+"would prevent the file from being used. Poedit fixed the issue, but you "
+"should review translations of any items marked as fuzzy and correct them if "
+"necessary."
 msgstr ""
 
 msgid "Language of the translation isn't set."
 msgstr ""
 
 msgid "Set Language"
-msgstr ""
+msgstr "Taal ynstelle"
 
 msgid "Set language"
+msgstr "Taal ynstelle"
+
+#. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)."
+msgid ""
+"Suggestions are not available if the translation language is not set "
+"correctly. Other features, such as plural forms, may be affected as well."
+msgstr ""
+
+msgid "Language of the translation is the same as source language."
 msgstr ""
 
+msgid "Fix Language"
+msgstr "Taal reparearje"
+
+msgid "Fix language"
+msgstr "Taal reparearje"
+
 msgid ""
 "This catalog has entries with plural forms, but doesn't have Plural-Forms "
 "header configured."
@@ -561,8 +666,9 @@ msgstr ""
 msgid "Plural forms expression used by the catalog is unusual for %s."
 msgstr ""
 
+#. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the catalog is unusual for %s.")"
 msgid "Review"
-msgstr ""
+msgstr "Neisjen"
 
 #, c-format
 msgid "Error loading message catalog file '%s'."
@@ -574,22 +680,28 @@ msgstr ""
 
 #, c-format
 msgid "Remaining: %d"
-msgstr ""
+msgstr "Oerbliuwend: %d"
 
 #, c-format
 msgid "%d error"
 msgid_plural "%d errors"
+msgstr[0] "%d flater"
+msgstr[1] "%d flaters"
+
+#, c-format
+msgid "%d entry"
+msgid_plural "%d entries"
 msgstr[0] ""
 msgstr[1] ""
 
 msgid " (unsaved)"
-msgstr ""
+msgstr " (net-bewarre)"
 
 msgid " (modified)"
-msgstr " (gewysig) "
+msgstr " (feroare)"
 
 msgid "Go"
-msgstr ""
+msgstr "Navigearje"
 
 #, c-format
 msgid "Failed to update translation memory: %s"
@@ -608,7 +720,7 @@ msgid ""
 msgstr ""
 
 msgid "Keep"
-msgstr ""
+msgstr "Behâlde"
 
 msgid "Purge"
 msgstr ""
@@ -633,7 +745,7 @@ msgid ""
 msgstr ""
 
 msgid "Fill"
-msgstr ""
+msgstr "Ynfolje"
 
 #, c-format
 msgid "%d entry was filled from the translation memory."
@@ -656,7 +768,7 @@ msgid ""
 msgstr ""
 
 msgid "Translating"
-msgstr ""
+msgstr "Oan it oersette"
 
 msgid "Filling missing translations from TM..."
 msgstr ""
@@ -674,41 +786,47 @@ msgid "Copy from Source Text"
 msgstr ""
 
 msgid "Clear translation"
-msgstr ""
+msgstr "Oersetting wiskje"
 
 msgid "Clear Translation"
-msgstr ""
+msgstr "Oersetting wiskje"
 
 msgid "Edit comment"
-msgstr "Redigeer kommentaar"
+msgstr "Opmerking bewurkje"
 
 msgid "Edit Comment"
-msgstr ""
+msgstr "Opmerking bewurkje"
 
 msgid "References:"
-msgstr "Verwysings: "
+msgstr "Ferwizings:"
 
 msgid "Everything"
-msgstr ""
+msgstr "Alles"
 
 #, c-format
 msgid "Form %i"
+msgstr "Formulier %i"
+
+msgid "Singular"
 msgstr ""
 
 msgid "Zero"
-msgstr ""
+msgstr "Nul"
 
 msgid "One"
-msgstr ""
+msgstr "Ien"
 
 msgid "Two"
+msgstr "Twa"
+
+msgid "Plural"
 msgstr ""
 
 msgid "Other"
-msgstr ""
+msgstr "Oare"
 
 msgid "&Bookmarks"
-msgstr "&Boekmerke"
+msgstr "&Blêdwizers"
 
 #, c-format
 msgid "Set bookmark %i"
@@ -730,94 +848,120 @@ msgid "Hide Sidebar"
 msgstr ""
 
 msgid "Show Sidebar"
+msgstr "Sydbalke toane"
+
+msgid "Hide Status Bar"
+msgstr ""
+
+msgid "Show Status Bar"
 msgstr ""
 
 msgid "Source text"
 msgstr ""
 
 msgid "Translation"
-msgstr "Vertaling"
+msgstr "Oersetting"
 
 msgid "ID"
+msgstr "ID"
+
+#, c-format
+msgid "Source text — %s"
 msgstr ""
 
 msgid "unknown language"
-msgstr ""
+msgstr "ûnbekende taal"
 
 #, c-format
 msgid "Translation — %s"
-msgstr ""
+msgstr "Oersetting — %s"
 
 msgid "Error:"
+msgstr "Flater:"
+
+msgid "Source file"
 msgstr ""
 
-msgid "Project info"
-msgstr "Projekinligting"
+msgid "Source file occurrence:"
+msgstr ""
 
-msgid "Project name and version:"
-msgstr "Projeknaam en weergawe:"
+msgid "Open in Editor"
+msgstr ""
 
-msgid "Language:"
-msgstr "Taal: "
+msgid "Open in editor"
+msgstr ""
 
-msgid "Team:"
-msgstr "Span:"
+msgid "No references for the selected item."
+msgstr ""
 
-msgid "Team's email address:"
-msgstr "Span se e-pos adres:"
+#, c-format
+msgid "Error opening file %s!"
+msgstr ""
 
-msgid "Charset:"
-msgstr "Karakterstel:"
+msgid "Find"
+msgstr "Sykje"
 
-msgid "Source"
+msgid "Replace"
 msgstr ""
 
-msgid "Notes"
-msgstr "Notas"
+#. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.)
+msgid "Options"
+msgstr "Opsjes"
 
-msgid "Automatic translation"
-msgstr "Outomatiese vertaling"
+msgid "Ignore case"
+msgstr ""
 
-msgid "Fuzzy translation"
-msgstr "Wasige vertaling"
+msgid "Wrap around"
+msgstr ""
 
-msgid "Notes for translators:"
+msgid "Whole words only"
 msgstr ""
 
-msgid "Comment:"
-msgstr "Kommentaar:"
+msgid "Find in source texts"
+msgstr ""
 
-msgid "Source file"
-msgstr "Bronlêer"
+msgid "Find in translations"
+msgstr ""
 
-msgid "Source file occurrence:"
+msgid "Find in comments"
 msgstr ""
 
-msgid "Open in Editor"
+msgid "Close"
+msgstr "Slute"
+
+msgid "Replace All"
 msgstr ""
 
-msgid "Open in editor"
+msgid "Replace all"
 msgstr ""
 
-#, c-format
-msgid "Error opening file %s!"
-msgstr "Fout met oopmaak van lêer %s!"
+msgid "< &Previous"
+msgstr "< &Foarige"
+
+msgid "&Next >"
+msgstr "&Folgjende >"
+
+msgid "String to find"
+msgstr ""
+
+msgid "Replacement string"
+msgstr ""
 
 #, c-format
 msgid "Cannot execute program: %s"
 msgstr ""
 
 msgid "Language Code or Name (e.g. en_GB)"
-msgstr ""
+msgstr "Taalkoade of -namme (bgl. fy_NL)"
 
 msgid "Translation Language"
-msgstr ""
+msgstr "Oersettingstaal"
 
 msgid "Language of the translation:"
 msgstr ""
 
 msgid "Poedit - Catalogs manager"
-msgstr "Poedit - Katalogusbestuurder "
+msgstr ""
 
 msgid "Catalog"
 msgstr "Katalogus"
@@ -826,53 +970,51 @@ msgid "Total"
 msgstr "Totaal"
 
 msgid "Untrans"
-msgstr "Onvertaal"
+msgstr "Unoerset"
 
 msgid "Fuzzy"
-msgstr "Wasig"
+msgstr ""
 
 msgid "Bad Tokens"
-msgstr "Onaanvaarbare tokens"
+msgstr ""
 
 msgid "Last modified"
-msgstr "Laas verander"
+msgstr ""
 
 msgid "Select directory"
-msgstr "Kies gids "
+msgstr ""
 
 msgid "Directories:"
-msgstr "Gidse:"
+msgstr "Mappen:"
 
 msgid "<unnamed>"
-msgstr "<onbenoemd>"
+msgstr "<nammeleas>"
 
 msgid "Do you want to delete the project?"
-msgstr "Wil jy die projek uitvee?"
+msgstr ""
 
 msgid "Confirmation"
-msgstr "Bevestiging"
+msgstr "Befêstiging"
 
 msgid ""
 "Do you really want to do mass update of\n"
 "all catalogs in this project?"
 msgstr ""
-"Wil jy regtig 'n massa-opdatering doen van\n"
-"alle katalogusse in hierdie projek?"
 
 msgid "Information about the translator"
 msgstr ""
 
 msgid "Name:"
-msgstr ""
+msgstr "Namme:"
 
 msgid "Your Name"
-msgstr ""
+msgstr "Jo namme"
 
 msgid "Email:"
-msgstr ""
+msgstr "E-mailadres:"
 
 msgid "your_email at example.com"
-msgstr ""
+msgstr "jo_e-mail at example.com"
 
 msgid ""
 "Your name and email address are only used to set the Last-Translator header "
@@ -880,32 +1022,28 @@ msgid ""
 msgstr ""
 
 msgid "Editing"
-msgstr ""
+msgstr "Bewurkje"
 
 msgid "Automatically compile MO file when saving"
 msgstr ""
 
 msgid "Show summary after catalog update"
-msgstr "Wys opsomming na katalogus opdatering"
+msgstr ""
 
 msgid "Check spelling"
 msgstr ""
 
 msgid "Always change focus to text input field"
-msgstr "Verander altyd die fokus na die teks-insleutelveld"
+msgstr ""
 
 msgid ""
 "Never let the list of strings take focus. If enabled, you must use Ctrl-"
 "arrows for keyboard navigation but you can also type text immediately, "
 "without having to press Tab to change focus."
 msgstr ""
-"Laat die lys van stringe nooit fokus kry nie.  As hierdie opsie aangeskakel "
-"is moet Ctrl saam met pyltjies gebruik word vir sleutelbordnavigasie, maar "
-"sodoende kan vertaalteks dadelik getik word sonder om eers Tab te druk om "
-"fokus te verkry."
 
 msgid "Appearance"
-msgstr ""
+msgstr "Werjefte"
 
 msgid "Use custom list font:"
 msgstr ""
@@ -914,14 +1052,14 @@ msgid "Use custom text fields font:"
 msgstr ""
 
 msgid "Change UI language"
-msgstr "Verander koppelvlaktaal"
+msgstr ""
 
 #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions
 msgid "(requires Windows 8 or newer)"
 msgstr ""
 
 msgid "General"
-msgstr ""
+msgstr "Algemien"
 
 msgid "Use translation memory"
 msgstr ""
@@ -934,7 +1072,7 @@ msgstr ""
 
 #. TRANSLATORS: This is a button that deletes everything in the translation memory (i.e. clears/resets it).
 msgid "Reset"
-msgstr ""
+msgstr "Ferfarskje"
 
 msgid "Consult TM when updating from sources"
 msgstr ""
@@ -956,13 +1094,13 @@ msgid "Select translation files to import"
 msgstr ""
 
 msgid "Translation Memory"
-msgstr "Vertaalgeheue"
+msgstr ""
 
 msgid "Importing translations..."
 msgstr ""
 
 msgid "Finalizing..."
-msgstr ""
+msgstr "Ofwurkje..."
 
 msgid "Reset translation memory"
 msgstr ""
@@ -976,13 +1114,13 @@ msgid ""
 msgstr ""
 
 msgid "Cancel"
-msgstr "Kanseleer"
+msgstr "Annulearje"
 
 #. TRANSLATORS: This is abbreviation of "Translation Memory" used in Preferences on OS X.
 #. Long text looks weird there, too short (like TM) too, but less so. "General" is about ideal
 #. length there.
 msgid "TM"
-msgstr ""
+msgstr "TM"
 
 msgid ""
 "Source code extractors are used to find translatable strings in the source "
@@ -990,14 +1128,24 @@ msgid ""
 msgstr ""
 
 msgid "New"
-msgstr "Nuwe "
+msgstr "Nij"
 
 msgid "Edit"
-msgstr "Redigeer"
+msgstr "Bewurkje"
+
+msgid "Delete extractor"
+msgstr ""
+
+#, c-format
+msgid "Are you sure you want to delete the “%s” extractor?"
+msgstr ""
 
 msgid "Extractors"
 msgstr ""
 
+msgid "Accounts"
+msgstr ""
+
 msgid "Automatically check for updates"
 msgstr ""
 
@@ -1010,7 +1158,7 @@ msgid ""
 msgstr ""
 
 msgid "Updates"
-msgstr ""
+msgstr "Updates"
 
 msgid ""
 "These settings affect internal formatting of PO files. Adjust them if you "
@@ -1018,10 +1166,10 @@ msgid ""
 msgstr ""
 
 msgid "Line endings:"
-msgstr ""
+msgstr "Rigeleinen:"
 
 msgid "Unix (recommended)"
-msgstr ""
+msgstr "Unix (oanbefelle)"
 
 msgid "Windows"
 msgstr "Windows"
@@ -1034,115 +1182,112 @@ msgid "Preserve formatting of existing files"
 msgstr ""
 
 msgid "Advanced"
-msgstr ""
+msgstr "Avansearre"
 
-msgid "Additional keywords"
+msgid ""
+"<big>Drag and Drop Folders Here</big>\n"
+"\n"
+"or use the + button"
 msgstr ""
 
-msgid "Paths"
-msgstr "Paaie"
-
-msgid "Excluded paths"
+msgid ""
+"<big>Drag and drop folders here</big>\n"
+"\n"
+"or use the + button"
 msgstr ""
 
-msgid "Name of the project the translation is for"
+msgid "Add Folders..."
 msgstr ""
 
-msgid "e.g. nplurals=2; plural=(n > 1);"
+msgid "Add folders..."
 msgstr ""
 
-msgid "UTF-8 (recommended)"
+msgid "Add Files..."
 msgstr ""
 
-msgid "Please save the file first. This section cannot be edited until then."
+msgid "Add files..."
 msgstr ""
 
-msgid "OK"
-msgstr "OK "
-
-msgid "C&lear"
+msgid "Add Wildcard..."
 msgstr ""
 
-msgid "Clear the comment"
-msgstr "Verwyder kommentaar"
+msgid "Add wildcard..."
+msgstr ""
 
-msgid "Find..."
-msgstr "Soek..."
+msgid "Paths"
+msgstr "Paden"
 
-msgid "String to find:"
-msgstr "String om te vind:"
+msgid "Excluded paths"
+msgstr ""
 
-msgid "Case sensitive"
-msgstr "Kas sensitief"
+msgid "Additional keywords"
+msgstr ""
 
-msgid "Start from the first item"
-msgstr "Begin vanaf die eerste item"
+msgid "Name of the project the translation is for"
+msgstr ""
 
-msgid "Whole words only"
-msgstr "Slegs heel woorde"
+msgid "e.g. nplurals=2; plural=(n > 1);"
+msgstr "bgl. nplurals=2; plural=(n != 1);"
 
-msgid "Find in original strings"
-msgstr "Soek in oorspronklike stringe"
+msgid "UTF-8 (recommended)"
+msgstr "UTF-8 (oanbefelle)"
 
-msgid "Find in translations"
+msgid "Please save the file first. This section cannot be edited until then."
 msgstr ""
 
-msgid "Find in comments"
-msgstr "Vind in kommentaar"
-
-msgid "Find in automatic comments"
-msgstr "Vind in outomatiese kommentaar"
+msgid "Comment:"
+msgstr "Opmerking:"
 
-msgid "Close"
-msgstr ""
+msgid "OK"
+msgstr "OK"
 
-msgid "< &Previous"
-msgstr ""
+msgid "C&lear"
+msgstr "&Wiskje"
 
-msgid "&Next >"
+msgid "Clear the comment"
 msgstr ""
 
 msgid "Create new translations project"
-msgstr "Skep nuwe vertaalprojek"
+msgstr ""
 
 msgid "Edit the project"
-msgstr "Redigeer die projek"
+msgstr ""
 
 msgid "Delete the project"
-msgstr "Vee die projek uit"
+msgstr ""
 
 msgid "Update all"
 msgstr ""
 
 msgid "Update all catalogs in the project"
-msgstr "Bring alle katalogusse in die projek op datum"
+msgstr ""
 
 msgid "Edit project"
-msgstr "Redigeer projek"
+msgstr "Projekt bewurkje"
 
 msgid "Project name:"
-msgstr "Projeknaam:"
+msgstr ""
 
 msgid "Browse"
-msgstr "Blaai"
+msgstr "Blêdzje"
 
 msgid "Add directory to the list"
-msgstr "Voeg gids by die lys"
+msgstr ""
 
 msgid "&Preferences..."
-msgstr "&Voorkeure..."
+msgstr "&Foarkarren..."
 
 msgid "&Close"
-msgstr "Maak &toe "
+msgstr "&Slute"
 
 msgid "E&xit"
-msgstr ""
+msgstr "&Ofslute"
 
 msgid "Quit"
-msgstr ""
+msgstr "Ofslute"
 
 msgid "&New..."
-msgstr ""
+msgstr "&Nij..."
 
 msgid "New from &POT/PO file..."
 msgstr ""
@@ -1151,19 +1296,25 @@ msgid "New From &POT/PO File..."
 msgstr ""
 
 msgid "&Open..."
-msgstr ""
+msgstr "&Iepenje..."
 
 msgid "Open Recent"
 msgstr ""
 
+msgid "Open from Crowdin..."
+msgstr ""
+
+msgid "Open From Crowdin..."
+msgstr ""
+
 msgid "&Save"
-msgstr "&Stoor"
+msgstr "&Bewarje"
 
 msgid "Save &as..."
-msgstr "Stoor &as..."
+msgstr "Bewarje &as..."
 
 msgid "Save &As..."
-msgstr ""
+msgstr "Bewarje &as..."
 
 msgid "Compile to MO..."
 msgstr ""
@@ -1175,52 +1326,55 @@ msgid "Check for updates..."
 msgstr ""
 
 msgid "Catalogs &manager"
-msgstr "Katalogus&bestuurder"
+msgstr "&Katalogusbehearder"
 
 msgid "Catalogs &Manager"
-msgstr ""
+msgstr "&Katalogusbehearder"
 
 msgid "Translation is &fuzzy"
-msgstr "&Vertaling is wasig"
+msgstr ""
 
 msgid "Translation Is &Fuzzy"
 msgstr ""
 
 msgid "Edit &comment"
-msgstr "&Redigeer kommentaar"
+msgstr "&Opmerking bewurkje"
 
 msgid "Edit &Comment"
-msgstr ""
+msgstr "&Opmerking bewurkje"
 
 msgid "Suggestions"
-msgstr ""
+msgstr "Suggestjes"
 
 msgid "&Show references"
-msgstr "&Wys verwysings"
+msgstr "&Ferwizing werjaan"
 
 msgid "&Show References"
-msgstr ""
+msgstr "&Ferwizing werjaan"
 
 msgid "&Find..."
-msgstr "&Soek..."
+msgstr "&Sykje..."
 
-msgid "Find next"
+msgid "Replace..."
 msgstr ""
 
+msgid "Find next"
+msgstr "Folgjende sykje"
+
 msgid "Find previous"
-msgstr ""
+msgstr "Foarige sykje"
 
-msgid "Find"
+msgid "Find and Replace..."
 msgstr ""
 
 msgid "Find Next"
-msgstr ""
+msgstr "Folgjende sykje"
 
 msgid "Find Previous"
-msgstr ""
+msgstr "Foarige sykje"
 
 msgid "&Preferences"
-msgstr ""
+msgstr "&Foarkarren"
 
 msgid "Display entry &IDs"
 msgstr ""
@@ -1235,21 +1389,27 @@ msgid "Sort by &File Order"
 msgstr ""
 
 msgid "Sort by &source"
-msgstr ""
+msgstr "Sortearje op &boarne"
 
 msgid "Sort by &Source"
-msgstr ""
+msgstr "Sortearje op &boarne"
 
 msgid "Sort by &translation"
-msgstr ""
+msgstr "Sortearje op oerse&tting"
 
 msgid "Sort by &Translation"
-msgstr ""
+msgstr "Sortearje op oerse&tting"
 
 msgid "&Group by context"
-msgstr ""
+msgstr "&Groepearje nei kontekst"
 
 msgid "&Group By Context"
+msgstr "&Groepearje nei kontekst"
+
+msgid "Entries with errors first"
+msgstr ""
+
+msgid "Entries with Errors First"
 msgstr ""
 
 msgid "&Untranslated entries first"
@@ -1259,23 +1419,29 @@ msgid "&Untranslated Entries First"
 msgstr ""
 
 msgid "Show sidebar"
+msgstr "Sydbalke toane"
+
+msgid "Show status bar"
 msgstr ""
 
 msgid "C&atalog"
 msgstr "K&atalogus"
 
 msgid "&Update from sources"
-msgstr "Werk by vanuit &bronlêers"
+msgstr ""
 
 msgid "&Update from Sources"
 msgstr ""
 
 msgid "Update from &POT file..."
-msgstr "Werk by vanuit &POT-lêer..."
+msgstr ""
 
 msgid "Update from &POT File..."
 msgstr ""
 
+msgid "Sync with Crowdin"
+msgstr ""
+
 msgid "Fill missing translations from &TM..."
 msgstr ""
 
@@ -1283,7 +1449,7 @@ msgid "Fill Missing Translations from &TM..."
 msgstr ""
 
 msgid "&Purge deleted translations"
-msgstr "&Verwyder vertalings wat vir uitvee gemerk is"
+msgstr ""
 
 msgid "&Purge Deleted Translations"
 msgstr ""
@@ -1295,25 +1461,25 @@ msgid "&Validate Translations"
 msgstr ""
 
 msgid "&Properties..."
-msgstr ""
+msgstr "&Eigenskippen..."
 
 msgid "&Done and next"
-msgstr ""
+msgstr "&Klear en folgjende"
 
 msgid "&Done and Next"
-msgstr ""
+msgstr "&Klear en folgjende"
 
 msgid "&Previous translation"
-msgstr ""
+msgstr "&Foarige oersetting"
 
 msgid "&Previous Translation"
-msgstr ""
+msgstr "&Foarige oersetting"
 
 msgid "&Next translation"
-msgstr ""
+msgstr "&Folgjende oersetting"
 
 msgid "&Next Translation"
-msgstr ""
+msgstr "&Folgjende oersetting"
 
 msgid "P&revious unfinished"
 msgstr ""
@@ -1340,19 +1506,19 @@ msgid "&GNU gettext Manual"
 msgstr ""
 
 msgid "&About Poedit"
-msgstr ""
+msgstr "&Oer Poedit"
 
 msgid "&About"
-msgstr ""
+msgstr "&Oer"
 
 msgid "Extractor setup"
 msgstr ""
 
 msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):"
-msgstr "Lys van uitgange geskei deur kommapunte (bv. *.cpp;*.h):"
+msgstr ""
 
 msgid "Invocation:"
-msgstr "Aktivering:"
+msgstr "Oanrop:"
 
 msgid "Command to extract translations:"
 msgstr ""
@@ -1365,43 +1531,39 @@ msgid ""
 msgstr ""
 
 msgid "An item in keywords list:"
-msgstr "'n Item in die lys van sleutelwoorde:"
+msgstr ""
 
 msgid ""
 "This will be attached to the command line once\n"
 "for each keyword. %k expands to the keyword."
 msgstr ""
-"Dit sal vir elke sleutelwoord eenmaal bygevoeg word\n"
-"by die bevellyn.  %k brei uit na die sleutelwoord."
 
 msgid "An item in input files list:"
-msgstr "'n Item in die lys van toevoerlêers:"
+msgstr ""
 
 #, c-format
 msgid ""
 "This will be attached to the command line once\n"
 "for each input file. %f expands to the filename."
 msgstr ""
-"Dit sal vir elke toevoerlêer eenmaal bygevoeg word\n"
-"by die bevellyn.  %f brei uit na die lêernaam."
 
 msgid "Source code charset:"
-msgstr "Bronkode karakterstel:"
+msgstr ""
 
 #, c-format
 msgid ""
 "This will be attached to the command line\n"
 "only if source codecharset was given. %c expands to charset value."
 msgstr ""
-"Dit sal vir elke toevoerlêer slegs bygevoeg word\n"
-"by die bevellyn as die bronkodekarakterstel gegee is.  %c brei uit na die "
-"karakterstel waarde."
 
 msgid "Catalog properties"
-msgstr ""
+msgstr "Kataloguseigenskippen"
+
+msgid "Project name and version:"
+msgstr "Projektnamme en -ferzje:"
 
 msgid "Plural Forms:"
-msgstr "Meervoudvorme:"
+msgstr ""
 
 msgid "Use default rules for this language"
 msgstr ""
@@ -1412,16 +1574,28 @@ msgstr ""
 msgid "Learn about plural forms"
 msgstr ""
 
+msgid "Charset:"
+msgstr "Tekenset:"
+
+msgid "Team:"
+msgstr "Team:"
+
+msgid "Team's email address:"
+msgstr "E-mailadres fan it team:"
+
 msgid "Translation properties"
 msgstr ""
 
+msgid "Sources paths"
+msgstr "Boarnepaden"
+
 msgid "Extract text from source files in the following directories:"
 msgstr ""
 
 msgid "Base path:"
-msgstr "Basispad:"
+msgstr "Basispaad:"
 
-msgid "Sources paths"
+msgid "Sources keywords"
 msgstr ""
 
 msgid ""
@@ -1432,40 +1606,33 @@ msgstr ""
 msgid "Learn about gettext keywords"
 msgstr ""
 
-msgid "Sources keywords"
-msgstr ""
-
 msgid "Update summary"
-msgstr "Dateer opsomming op"
+msgstr ""
 
 msgid ""
 "These strings were found in the sources but were not in the catalog.\n"
 "Poedit will add them to the catalog now."
 msgstr ""
-"Hierdie string is gevind in die bronkkode, maar nie in die katalogus nie.\n"
-"Poedit gaan hulle nou byvoeg by die katalogus."
 
 msgid "New strings"
-msgstr "Nuwe stringe"
+msgstr "Nije strings"
 
 msgid ""
 "These strings are no longer in the sources.\n"
 "Poedit will remove them from the catalog now."
 msgstr ""
-"Hierdie string is nie meer in die bronkode nie.\n"
-"Poedit gaan hulle nou verwyder."
 
 msgid "Obsolete strings"
-msgstr "Verouderde stringe"
+msgstr ""
 
 msgid "(0 new, 0 obsolete)"
-msgstr "(0 nuut, 0 verouderd)"
+msgstr ""
 
 msgid "Open"
-msgstr ""
+msgstr "Iepenje"
 
 msgid "Save catalog"
-msgstr "Stoor katalogus"
+msgstr "Katalogus bewarje"
 
 msgid "Validate"
 msgstr ""
@@ -1474,15 +1641,15 @@ msgid "Check for errors in the translation"
 msgstr ""
 
 msgid "Update"
-msgstr ""
+msgstr "Bywurkje"
 
 msgid "Update catalog - synchronize it with sources"
-msgstr "Werk katalogus by - sinkroniseer met bronne"
+msgstr ""
 
 msgid "Toggled if selected string has fuzzy translation"
-msgstr "Dui aan of die gekose string 'n wasige vertaling het"
+msgstr ""
 
-msgid "Show or hide the sidebar."
+msgid "Show or hide the sidebar"
 msgstr ""
 
 #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer.
@@ -1494,11 +1661,14 @@ msgid ""
 "translation corresponds to."
 msgstr ""
 
-msgid "Add comment"
+msgid "Notes for translators:"
 msgstr ""
 
+msgid "Add comment"
+msgstr "Opmerking tafoegje"
+
 msgid "Add Comment"
-msgstr ""
+msgstr "Opmerking tafoegje"
 
 msgid "Translation suggestions:"
 msgstr ""
@@ -1516,14 +1686,14 @@ msgstr ""
 
 #, c-format
 msgid "(New: %i, obsolete: %i)"
-msgstr ""
+msgstr "(Nij: %i, ferâldere: %i)"
 
 #, c-format
 msgid "Importing translations: %d"
-msgstr ""
+msgstr "Oersettings ymportearje: %d"
 
 msgid "Poedit Update"
-msgstr ""
+msgstr "Poedit-update"
 
 msgid "Preparing migration..."
 msgstr ""
@@ -1541,7 +1711,7 @@ msgid ""
 msgstr ""
 
 msgid "Proceed"
-msgstr "Gaan voort "
+msgstr "Trochgean"
 
 msgid "Translation memory migration failed."
 msgstr ""
@@ -1558,7 +1728,7 @@ msgid "Cannot create temporary directory."
 msgstr ""
 
 msgid "Welcome to Poedit"
-msgstr ""
+msgstr "Wolkom by Poedit"
 
 msgid "Edit a translation"
 msgstr ""
@@ -1566,14 +1736,21 @@ msgstr ""
 msgid "Open an existing PO file and edit the translation."
 msgstr ""
 
-msgid "Create new translation"
-msgstr ""
-
 msgid ""
 "Take an existing PO file or POT template and create a new translation from "
 "it."
 msgstr ""
 
+msgid "Collaborate on a translation with Crowdin"
+msgstr ""
+
+msgid ""
+"Download a file from Crowdin project, translate and sync your changes back."
+msgstr ""
+
+msgid "What is Crowdin?"
+msgstr ""
+
 msgid "There are no translations. That’s unusual."
 msgstr ""
 
@@ -1586,7 +1763,7 @@ msgid ""
 msgstr ""
 
 msgid "(Learn more about GNU gettext)"
-msgstr ""
+msgstr "(Lês mear oer GNU-gettext)"
 
 msgid "The simplest way to fill this catalog is to update it from a POT:"
 msgstr ""
@@ -1606,3 +1783,9 @@ msgstr ""
 
 msgid "Configure source code extraction in Properties."
 msgstr ""
+
+msgid "Sync"
+msgstr ""
+
+msgid "Synchronize the translation with Crowdin"
+msgstr ""
diff --git a/locales/ga.mo b/locales/ga.mo
index 85c1fd7..8f359ca 100644
Binary files a/locales/ga.mo and b/locales/ga.mo differ
diff --git a/locales/ga.po b/locales/ga.po
index 2444f1f..8c5f70f 100644
--- a/locales/ga.po
+++ b/locales/ga.po
@@ -2,8 +2,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: poedit\n"
 "Report-Msgid-Bugs-To: help at poedit.net\n"
-"POT-Creation-Date: 2015-01-10 16:00+0100\n"
-"PO-Revision-Date: 2015-03-10 12:33-0400\n"
+"POT-Creation-Date: 2015-05-27 11:31+0200\n"
+"PO-Revision-Date: 2015-05-27 05:17-0400\n"
 "Last-Translator: vslavik <vaclav at slavik.io>\n"
 "Language-Team: Irish\n"
 "Language: ga_IE\n"
@@ -91,6 +91,15 @@ msgstr ""
 msgid "Error saving catalog"
 msgstr "Tharla botún ag chuir an clár i dtaisce"
 
+msgid "PO Translation Files"
+msgstr ""
+
+msgid "POT Translation Templates"
+msgstr ""
+
+msgid "All Translation Files"
+msgstr ""
+
 msgid "Merging differences..."
 msgstr "Ag cumascú éagsúlachtaí..."
 
@@ -110,6 +119,83 @@ msgstr "Rogha béarla"
 msgid "You must restart Poedit for this change to take effect."
 msgstr "Caithfear Poedit a atosú chun an athrú a chur i bhfeidhm."
 
+msgid "Downloading translations is disabled in this project."
+msgstr ""
+
+msgid "Not authorized, please sign in again."
+msgstr ""
+
+msgid "Sign in to Crowdin"
+msgstr ""
+
+msgid ""
+"Crowdin is an online localization management platform and collaborative "
+"translation tool. Poedit can seamlessly sync PO files managed at Crowdin."
+msgstr ""
+
+msgid "Sign In"
+msgstr ""
+
+msgid "Sign in"
+msgstr ""
+
+msgid "Sign Out"
+msgstr ""
+
+msgid "Sign out"
+msgstr ""
+
+msgid "Waiting for authentication…"
+msgstr ""
+
+msgid "Updating user information…"
+msgstr ""
+
+msgid "Signed in as:"
+msgstr ""
+
+msgid "Learn More About Crowdin"
+msgstr ""
+
+msgid "Learn more about Crowdin"
+msgstr ""
+
+msgid "Open Crowdin translation"
+msgstr ""
+
+msgid "Project:"
+msgstr ""
+
+msgid "Language:"
+msgstr "Béarla:"
+
+msgid "File:"
+msgstr ""
+
+msgid "No translation projects listed in your Crowdin account."
+msgstr ""
+
+msgid "This project has no files that can be translated in Poedit."
+msgstr ""
+
+msgid "This file can only be edited in Crowdin’s web interface."
+msgstr ""
+
+msgid "Downloading latest translations…"
+msgstr ""
+
+msgid "Syncing with Crowdin"
+msgstr ""
+
+msgid "Syncing with Crowdin failed."
+msgstr ""
+
+msgid "Crowdin error"
+msgstr ""
+
+msgid "Uploading translations…"
+msgstr ""
+
 msgid "&Copy"
 msgstr ""
 
@@ -154,6 +240,12 @@ msgstr ""
 msgid "don't delete temporary files (for debugging)"
 msgstr ""
 
+msgid "handle a poedit:// URI"
+msgstr ""
+
+msgid "Failed to communicate with Poedit process."
+msgstr ""
+
 #, c-format
 msgid "Unhandled exception occurred: %s"
 msgstr ""
@@ -164,12 +256,6 @@ msgstr ""
 msgid "Open catalog"
 msgstr "Oscail clár"
 
-msgid "All Files"
-msgstr ""
-
-msgid "PO Translation Files"
-msgstr ""
-
 #, c-format
 msgid "File '%s' doesn't exist."
 msgstr "Níl an comhad '%s' ann."
@@ -398,6 +484,17 @@ msgstr "Iolra:"
 msgid "Translation:"
 msgstr ""
 
+msgid ""
+"POT files are only templates and don’t contain any translations themselves.\n"
+"To make a translation, create a new PO file based on the template."
+msgstr ""
+
+msgid "Create New Translation"
+msgstr ""
+
+msgid "Create new translation"
+msgstr ""
+
 #. TRANSLATORS: %s is language name in its basic form (as you
 #. would see e.g. in a list of supported languages). You may need
 #. to rephrase it, e.g. to an equivalent of "for language %s".
@@ -445,9 +542,6 @@ msgstr ""
 msgid "Open catalog template"
 msgstr "Oscail fíoraí an chláir"
 
-msgid "POT Translation Templates"
-msgstr ""
-
 msgid "Updating catalog"
 msgstr ""
 
@@ -522,16 +616,18 @@ msgstr[4] ""
 msgid "The translation is ready for use."
 msgstr ""
 
-msgid "No references to this string found."
-msgstr "Níor aimsíodh tagairtí don teaghrán seo."
-
-msgid "Please choose the reference you want to show:"
-msgstr "Roghnaigh an tagairt a dteastaíonn uait taispeáint:"
+msgid "Context:"
+msgstr ""
 
-msgid "References"
-msgstr "Tagairtí"
+#, c-format
+msgid "Poedit automatically fixed invalid content in the file “%s”."
+msgstr ""
 
-msgid "Context:"
+msgid ""
+"The file contained duplicate items, which is not allowed in PO files and "
+"would prevent the file from being used. Poedit fixed the issue, but you "
+"should review translations of any items marked as fuzzy and correct them if "
+"necessary."
 msgstr ""
 
 msgid "Language of the translation isn't set."
@@ -543,6 +639,21 @@ msgstr ""
 msgid "Set language"
 msgstr ""
 
+#. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)."
+msgid ""
+"Suggestions are not available if the translation language is not set "
+"correctly. Other features, such as plural forms, may be affected as well."
+msgstr ""
+
+msgid "Language of the translation is the same as source language."
+msgstr ""
+
+msgid "Fix Language"
+msgstr ""
+
+msgid "Fix language"
+msgstr ""
+
 msgid ""
 "This catalog has entries with plural forms, but doesn't have Plural-Forms "
 "header configured."
@@ -573,6 +684,7 @@ msgstr ""
 msgid "Plural forms expression used by the catalog is unusual for %s."
 msgstr ""
 
+#. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the catalog is unusual for %s.")"
 msgid "Review"
 msgstr ""
 
@@ -597,6 +709,15 @@ msgstr[2] ""
 msgstr[3] ""
 msgstr[4] ""
 
+#, c-format
+msgid "%d entry"
+msgid_plural "%d entries"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+msgstr[3] ""
+msgstr[4] ""
+
 msgid " (unsaved)"
 msgstr ""
 
@@ -716,6 +837,9 @@ msgstr ""
 msgid "Form %i"
 msgstr "Leagan %i"
 
+msgid "Singular"
+msgstr ""
+
 msgid "Zero"
 msgstr ""
 
@@ -725,6 +849,9 @@ msgstr ""
 msgid "Two"
 msgstr ""
 
+msgid "Plural"
+msgstr ""
+
 msgid "Other"
 msgstr ""
 
@@ -753,6 +880,12 @@ msgstr ""
 msgid "Show Sidebar"
 msgstr ""
 
+msgid "Hide Status Bar"
+msgstr ""
+
+msgid "Show Status Bar"
+msgstr ""
+
 msgid "Source text"
 msgstr ""
 
@@ -762,6 +895,10 @@ msgstr "Aistriúchán"
 msgid "ID"
 msgstr ""
 
+#, c-format
+msgid "Source text — %s"
+msgstr ""
+
 msgid "unknown language"
 msgstr ""
 
@@ -772,57 +909,73 @@ msgstr ""
 msgid "Error:"
 msgstr ""
 
-msgid "Project info"
-msgstr "Faisnéis an togra"
+msgid "Source file"
+msgstr "Comhad foinse"
 
-msgid "Project name and version:"
-msgstr "Ainm agus leagan an togra:"
+msgid "Source file occurrence:"
+msgstr ""
 
-msgid "Language:"
-msgstr "Béarla:"
+msgid "Open in Editor"
+msgstr ""
 
-msgid "Team:"
-msgstr "Foireann:"
+msgid "Open in editor"
+msgstr ""
 
-msgid "Team's email address:"
-msgstr "Seoladh ríomhphoist na foirne:"
+msgid "No references for the selected item."
+msgstr ""
 
-msgid "Charset:"
-msgstr "Foireann litreacha:"
+#, c-format
+msgid "Error opening file %s!"
+msgstr "Tharla botún ag oscailt comhad %s!"
+
+msgid "Find"
+msgstr ""
 
-msgid "Source"
+msgid "Replace"
 msgstr ""
 
-msgid "Notes"
-msgstr "Nótaí"
+#. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.)
+msgid "Options"
+msgstr ""
 
-msgid "Automatic translation"
-msgstr "Aistriúchán uathoibríoch"
+msgid "Ignore case"
+msgstr ""
 
-msgid "Fuzzy translation"
-msgstr "Aistriúchán doiléir"
+msgid "Wrap around"
+msgstr ""
 
-msgid "Notes for translators:"
+msgid "Whole words only"
+msgstr "Focail iomlán amháin"
+
+msgid "Find in source texts"
 msgstr ""
 
-msgid "Comment:"
-msgstr "Nóta tráchta:"
+msgid "Find in translations"
+msgstr ""
 
-msgid "Source file"
-msgstr "Comhad foinse"
+msgid "Find in comments"
+msgstr "Aimsigh sna nótaí tráchta"
 
-msgid "Source file occurrence:"
+msgid "Close"
 msgstr ""
 
-msgid "Open in Editor"
+msgid "Replace All"
 msgstr ""
 
-msgid "Open in editor"
+msgid "Replace all"
 msgstr ""
 
-#, c-format
-msgid "Error opening file %s!"
-msgstr "Tharla botún ag oscailt comhad %s!"
+msgid "< &Previous"
+msgstr ""
+
+msgid "&Next >"
+msgstr ""
+
+msgid "String to find"
+msgstr ""
+
+msgid "Replacement string"
+msgstr ""
 
 #, c-format
 msgid "Cannot execute program: %s"
@@ -1016,9 +1169,19 @@ msgstr "Nua"
 msgid "Edit"
 msgstr "Déan eagar"
 
+msgid "Delete extractor"
+msgstr ""
+
+#, c-format
+msgid "Are you sure you want to delete the “%s” extractor?"
+msgstr ""
+
 msgid "Extractors"
 msgstr ""
 
+msgid "Accounts"
+msgstr ""
+
 msgid "Automatically check for updates"
 msgstr ""
 
@@ -1057,7 +1220,34 @@ msgstr ""
 msgid "Advanced"
 msgstr ""
 
-msgid "Additional keywords"
+msgid ""
+"<big>Drag and Drop Folders Here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+
+msgid ""
+"<big>Drag and drop folders here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+
+msgid "Add Folders..."
+msgstr ""
+
+msgid "Add folders..."
+msgstr ""
+
+msgid "Add Files..."
+msgstr ""
+
+msgid "Add files..."
+msgstr ""
+
+msgid "Add Wildcard..."
+msgstr ""
+
+msgid "Add wildcard..."
 msgstr ""
 
 msgid "Paths"
@@ -1066,6 +1256,9 @@ msgstr "Cosáin:"
 msgid "Excluded paths"
 msgstr ""
 
+msgid "Additional keywords"
+msgstr ""
+
 msgid "Name of the project the translation is for"
 msgstr ""
 
@@ -1078,6 +1271,9 @@ msgstr ""
 msgid "Please save the file first. This section cannot be edited until then."
 msgstr ""
 
+msgid "Comment:"
+msgstr "Nóta tráchta:"
+
 msgid "OK"
 msgstr "Tá go maith"
 
@@ -1087,42 +1283,6 @@ msgstr ""
 msgid "Clear the comment"
 msgstr "Glan an nóta tráchta"
 
-msgid "Find..."
-msgstr "Aimsigh..."
-
-msgid "String to find:"
-msgstr "Teaghrán le haimsiú:"
-
-msgid "Case sensitive"
-msgstr "Cásíogair"
-
-msgid "Start from the first item"
-msgstr "Tosaigh ón chéad mhír"
-
-msgid "Whole words only"
-msgstr "Focail iomlán amháin"
-
-msgid "Find in original strings"
-msgstr "Aimsigh sna teaghráin bunaidh"
-
-msgid "Find in translations"
-msgstr ""
-
-msgid "Find in comments"
-msgstr "Aimsigh sna nótaí tráchta"
-
-msgid "Find in automatic comments"
-msgstr "Aimsigh i nótaí tráchta uathoibríoch"
-
-msgid "Close"
-msgstr ""
-
-msgid "< &Previous"
-msgstr ""
-
-msgid "&Next >"
-msgstr ""
-
 msgid "Create new translations project"
 msgstr "Cruthaigh togra aistriúcháin nua"
 
@@ -1177,6 +1337,12 @@ msgstr "&Oscail..."
 msgid "Open Recent"
 msgstr ""
 
+msgid "Open from Crowdin..."
+msgstr ""
+
+msgid "Open From Crowdin..."
+msgstr ""
+
 msgid "&Save"
 msgstr "&Cuir i dtaisce"
 
@@ -1225,13 +1391,16 @@ msgstr ""
 msgid "&Find..."
 msgstr "&Aimsigh..."
 
+msgid "Replace..."
+msgstr ""
+
 msgid "Find next"
 msgstr ""
 
 msgid "Find previous"
 msgstr ""
 
-msgid "Find"
+msgid "Find and Replace..."
 msgstr ""
 
 msgid "Find Next"
@@ -1273,6 +1442,12 @@ msgstr ""
 msgid "&Group By Context"
 msgstr ""
 
+msgid "Entries with errors first"
+msgstr ""
+
+msgid "Entries with Errors First"
+msgstr ""
+
 msgid "&Untranslated entries first"
 msgstr ""
 
@@ -1282,6 +1457,9 @@ msgstr ""
 msgid "Show sidebar"
 msgstr ""
 
+msgid "Show status bar"
+msgstr ""
+
 msgid "C&atalog"
 msgstr "C&omhad"
 
@@ -1297,6 +1475,9 @@ msgstr "Nuashonraigh ó chomhad &POT..."
 msgid "Update from &POT File..."
 msgstr ""
 
+msgid "Sync with Crowdin"
+msgstr ""
+
 msgid "Fill missing translations from &TM..."
 msgstr ""
 
@@ -1421,6 +1602,9 @@ msgstr ""
 msgid "Catalog properties"
 msgstr ""
 
+msgid "Project name and version:"
+msgstr "Ainm agus leagan an togra:"
+
 msgid "Plural Forms:"
 msgstr "Leaganacha Iolra:"
 
@@ -1433,16 +1617,28 @@ msgstr ""
 msgid "Learn about plural forms"
 msgstr ""
 
+msgid "Charset:"
+msgstr "Foireann litreacha:"
+
+msgid "Team:"
+msgstr "Foireann:"
+
+msgid "Team's email address:"
+msgstr "Seoladh ríomhphoist na foirne:"
+
 msgid "Translation properties"
 msgstr ""
 
+msgid "Sources paths"
+msgstr ""
+
 msgid "Extract text from source files in the following directories:"
 msgstr ""
 
 msgid "Base path:"
 msgstr "Cosán bunaidh:"
 
-msgid "Sources paths"
+msgid "Sources keywords"
 msgstr ""
 
 msgid ""
@@ -1453,9 +1649,6 @@ msgstr ""
 msgid "Learn about gettext keywords"
 msgstr ""
 
-msgid "Sources keywords"
-msgstr ""
-
 msgid "Update summary"
 msgstr "Nuashonraigh achoimre"
 
@@ -1503,7 +1696,7 @@ msgstr "Nuashonraigh an clár - comhaimsearaigh é le foinsí"
 msgid "Toggled if selected string has fuzzy translation"
 msgstr "Scagtha má tá aistriúchán doiléir ag an teaghrán roghnaithe"
 
-msgid "Show or hide the sidebar."
+msgid "Show or hide the sidebar"
 msgstr ""
 
 #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer.
@@ -1515,6 +1708,9 @@ msgid ""
 "translation corresponds to."
 msgstr ""
 
+msgid "Notes for translators:"
+msgstr ""
+
 msgid "Add comment"
 msgstr ""
 
@@ -1587,14 +1783,21 @@ msgstr ""
 msgid "Open an existing PO file and edit the translation."
 msgstr ""
 
-msgid "Create new translation"
-msgstr ""
-
 msgid ""
 "Take an existing PO file or POT template and create a new translation from "
 "it."
 msgstr ""
 
+msgid "Collaborate on a translation with Crowdin"
+msgstr ""
+
+msgid ""
+"Download a file from Crowdin project, translate and sync your changes back."
+msgstr ""
+
+msgid "What is Crowdin?"
+msgstr ""
+
 msgid "There are no translations. That’s unusual."
 msgstr ""
 
@@ -1627,3 +1830,9 @@ msgstr ""
 
 msgid "Configure source code extraction in Properties."
 msgstr ""
+
+msgid "Sync"
+msgstr ""
+
+msgid "Synchronize the translation with Crowdin"
+msgstr ""
diff --git a/locales/gl.mo b/locales/gl.mo
index 25dab80..a19e47e 100644
Binary files a/locales/gl.mo and b/locales/gl.mo differ
diff --git a/locales/gl.po b/locales/gl.po
index a5460f7..6e3750f 100644
--- a/locales/gl.po
+++ b/locales/gl.po
@@ -2,8 +2,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: poedit\n"
 "Report-Msgid-Bugs-To: help at poedit.net\n"
-"POT-Creation-Date: 2015-01-10 16:00+0100\n"
-"PO-Revision-Date: 2015-03-10 12:33-0400\n"
+"POT-Creation-Date: 2015-05-27 11:31+0200\n"
+"PO-Revision-Date: 2015-05-27 05:17-0400\n"
 "Last-Translator: vslavik <vaclav at slavik.io>\n"
 "Language-Team: Galician\n"
 "Language: gl_ES\n"
@@ -76,8 +76,7 @@ msgstr "Non foi posíbel gardar o ficheiro %s."
 msgid ""
 "There was a problem formatting the file nicely (but it was saved all right)."
 msgstr ""
-"Produciuse un problema ao formatar o ficheiro de forma agradábel (pero "
-"gardouse correctamente)."
+"Produciuse un problema ao formatar o ficheiro (pero gardouse correctamente)."
 
 #, c-format
 msgid ""
@@ -94,6 +93,15 @@ msgstr ""
 msgid "Error saving catalog"
 msgstr "Produciuse un erro ao gardar o catálogo"
 
+msgid "PO Translation Files"
+msgstr "Ficheiros de tradución PO"
+
+msgid "POT Translation Templates"
+msgstr "Modelos de tradución POT"
+
+msgid "All Translation Files"
+msgstr "Todos os ficheiros de tradución"
+
 msgid "Merging differences..."
 msgstr "Fusionando as diferencias..."
 
@@ -113,6 +121,86 @@ msgstr "Selección de idioma"
 msgid "You must restart Poedit for this change to take effect."
 msgstr "Debe reiniciar Poedit para que este cambio teña efecto."
 
+msgid "Downloading translations is disabled in this project."
+msgstr "A descarga de traducións está deshabilitada neste proxecto."
+
+msgid "Not authorized, please sign in again."
+msgstr "Acción non autorizada; accede de novo."
+
+msgid "Sign in to Crowdin"
+msgstr "Acceder a Crowdin"
+
+msgid ""
+"Crowdin is an online localization management platform and collaborative "
+"translation tool. Poedit can seamlessly sync PO files managed at Crowdin."
+msgstr ""
+"Crowdin é unha plataforma de xestión de localización e tradución "
+"colaborativas en liña. Poedit pode sincronizar ficheiros PO xestionados con "
+"Crowdin."
+
+msgid "Sign In"
+msgstr "Acceder"
+
+msgid "Sign in"
+msgstr "Acceder"
+
+msgid "Sign Out"
+msgstr "Saír"
+
+msgid "Sign out"
+msgstr "Saír"
+
+msgid "Waiting for authentication…"
+msgstr "Agardando a autenticación…"
+
+msgid "Updating user information…"
+msgstr "Actualizando a información do usuario…"
+
+msgid "Signed in as:"
+msgstr "Sesión iniciada como:"
+
+msgid "Learn More About Crowdin"
+msgstr "Máis información sobre Crowdin"
+
+msgid "Learn more about Crowdin"
+msgstr "Máis información sobre Crowdin"
+
+msgid "Open Crowdin translation"
+msgstr "Abrir tradución de Crowdin"
+
+msgid "Project:"
+msgstr "Proxecto:"
+
+msgid "Language:"
+msgstr "Idioma:"
+
+msgid "File:"
+msgstr "Ficheiro:"
+
+msgid "No translation projects listed in your Crowdin account."
+msgstr "Ningún proxecto de tradución listado na súa conta de Crowdin."
+
+msgid "This project has no files that can be translated in Poedit."
+msgstr "Este proxecto non ten ficheiros para traducir en Poedit."
+
+msgid "This file can only be edited in Crowdin’s web interface."
+msgstr "Este ficheiro só se pode editar desde a interface web de Crowdin."
+
+msgid "Downloading latest translations…"
+msgstr "Descargando as traducións máis recentes…"
+
+msgid "Syncing with Crowdin"
+msgstr "Sincronizando con Crowdin"
+
+msgid "Syncing with Crowdin failed."
+msgstr "Erro ao sincronizar con Crowdin."
+
+msgid "Crowdin error"
+msgstr "Erro de Crowdin"
+
+msgid "Uploading translations…"
+msgstr "Cargando as traducións…"
+
 msgid "&Copy"
 msgstr "&Copiar"
 
@@ -159,6 +247,12 @@ msgstr ""
 msgid "don't delete temporary files (for debugging)"
 msgstr "non eliminar os ficheiros temporais (para depuración)"
 
+msgid "handle a poedit:// URI"
+msgstr "identificador dun URI poedit://"
+
+msgid "Failed to communicate with Poedit process."
+msgstr "Erro de comunicación co proceso do Poedit."
+
 #, c-format
 msgid "Unhandled exception occurred: %s"
 msgstr "Produciuse unha excepción non controlada: %s"
@@ -169,12 +263,6 @@ msgstr "Produciuse unha excepción non controlada."
 msgid "Open catalog"
 msgstr "Abrir catálogo"
 
-msgid "All Files"
-msgstr "Todos os ficheiros"
-
-msgid "PO Translation Files"
-msgstr "Ficheiros de tradución PO"
-
 #, c-format
 msgid "File '%s' doesn't exist."
 msgstr "O ficheiro '%s' non existe."
@@ -403,6 +491,19 @@ msgstr "Plural:"
 msgid "Translation:"
 msgstr "Tradución:"
 
+msgid ""
+"POT files are only templates and don’t contain any translations themselves.\n"
+"To make a translation, create a new PO file based on the template."
+msgstr ""
+"Os ficheiros POT son unicamente modelos e non conteñen traducións.\n"
+"Para traducir, cre un novo ficheiro PO con base no modelo."
+
+msgid "Create New Translation"
+msgstr "Crear unha nova tradución"
+
+msgid "Create new translation"
+msgstr "Crear unha nova tradución"
+
 #. TRANSLATORS: %s is language name in its basic form (as you
 #. would see e.g. in a list of supported languages). You may need
 #. to rephrase it, e.g. to an equivalent of "for language %s".
@@ -452,9 +553,6 @@ msgstr "Ficheiros HTML"
 msgid "Open catalog template"
 msgstr "Abrir patrón de catálogo"
 
-msgid "POT Translation Templates"
-msgstr "Modelos de tradución POT"
-
 msgid "Updating catalog"
 msgstr "Actualizando o catálogo"
 
@@ -539,18 +637,24 @@ msgstr[1] ""
 msgid "The translation is ready for use."
 msgstr "A tradución está lista para utilizar."
 
-msgid "No references to this string found."
-msgstr "Non se atoparon referencias a esta cadea."
-
-msgid "Please choose the reference you want to show:"
-msgstr "Escolla a referencia que desexa mostrar:"
-
-msgid "References"
-msgstr "Referencias"
-
 msgid "Context:"
 msgstr "Contexto:"
 
+#, c-format
+msgid "Poedit automatically fixed invalid content in the file “%s”."
+msgstr ""
+"Poedit corrixiu automaticamente o contido non válido do ficheiro \"%s\"."
+
+msgid ""
+"The file contained duplicate items, which is not allowed in PO files and "
+"would prevent the file from being used. Poedit fixed the issue, but you "
+"should review translations of any items marked as fuzzy and correct them if "
+"necessary."
+msgstr ""
+"O ficheiro contiña elementos duplicados, non permitidos nos ficheiros PO, o "
+"cal evitaría que fose usado. Poedit solucionou o problema, mais debe revisar "
+"as traducións marcadas como dubidosas e corrixilas en caso de ser preciso."
+
 msgid "Language of the translation isn't set."
 msgstr "O idioma da tradución está sen definir."
 
@@ -560,6 +664,24 @@ msgstr "Definir idioma"
 msgid "Set language"
 msgstr "Definir o idioma"
 
+#. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)."
+msgid ""
+"Suggestions are not available if the translation language is not set "
+"correctly. Other features, such as plural forms, may be affected as well."
+msgstr ""
+"As suxestións non están dispoñibles se o idioma de tradución non está "
+"definido correctamente. Outras funcionalidades, tales como as formas "
+"plurais, tamén poden verse afectadas."
+
+msgid "Language of the translation is the same as source language."
+msgstr "O idioma da tradución é o mesmo que o de orixe."
+
+msgid "Fix Language"
+msgstr "Solucionar idioma"
+
+msgid "Fix language"
+msgstr "Solucionar idioma"
+
 msgid ""
 "This catalog has entries with plural forms, but doesn't have Plural-Forms "
 "header configured."
@@ -594,6 +716,7 @@ msgstr "Arranxar a cabeceira"
 msgid "Plural forms expression used by the catalog is unusual for %s."
 msgstr "A expresión de formas plurais usada no catálogo non é habitual no %s."
 
+#. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the catalog is unusual for %s.")"
 msgid "Review"
 msgstr "Revisar"
 
@@ -615,6 +738,12 @@ msgid_plural "%d errors"
 msgstr[0] "%d erro"
 msgstr[1] "%d erros"
 
+#, c-format
+msgid "%d entry"
+msgid_plural "%d entries"
+msgstr[0] "%d entrada"
+msgstr[1] "%d entrada"
+
 msgid " (unsaved)"
 msgstr " (sen gardar)"
 
@@ -740,6 +869,9 @@ msgstr "Todo"
 msgid "Form %i"
 msgstr "Forma %i"
 
+msgid "Singular"
+msgstr "Singular"
+
 msgid "Zero"
 msgstr "Cero"
 
@@ -749,6 +881,9 @@ msgstr "Un"
 msgid "Two"
 msgstr "Dous"
 
+msgid "Plural"
+msgstr "Plural"
+
 msgid "Other"
 msgstr "Outro"
 
@@ -777,6 +912,12 @@ msgstr "Agochar barra lateral"
 msgid "Show Sidebar"
 msgstr "Mostrar barra lateral"
 
+msgid "Hide Status Bar"
+msgstr "Agochar a barra de estado"
+
+msgid "Show Status Bar"
+msgstr "Mostrar a barra de estado"
+
 msgid "Source text"
 msgstr "Texto orixe"
 
@@ -786,6 +927,10 @@ msgstr "Tradución"
 msgid "ID"
 msgstr "ID"
 
+#, c-format
+msgid "Source text — %s"
+msgstr "Texto fonte — %s"
+
 msgid "unknown language"
 msgstr "idioma descoñecido"
 
@@ -796,57 +941,73 @@ msgstr "Tradución — %s"
 msgid "Error:"
 msgstr "Erro:"
 
-msgid "Project info"
-msgstr "Información do proxecto"
+msgid "Source file"
+msgstr "Ficheiro fonte"
 
-msgid "Project name and version:"
-msgstr "Nome e versión do proxecto:"
+msgid "Source file occurrence:"
+msgstr "Aparición en ficheiro de código fonte:"
 
-msgid "Language:"
-msgstr "Idioma:"
+msgid "Open in Editor"
+msgstr "Abrir no editor"
 
-msgid "Team:"
-msgstr "Equipo:"
+msgid "Open in editor"
+msgstr "Abrir no editor"
 
-msgid "Team's email address:"
-msgstr "Enderezo de correo-e (e-mail) do equipo:"
+msgid "No references for the selected item."
+msgstr "Non hai referencias para o elemento seleccionado."
 
-msgid "Charset:"
-msgstr "Xogo de caracteres:"
+#, c-format
+msgid "Error opening file %s!"
+msgstr "Produciuse un erro ao abrir o ficheiro %s!"
 
-msgid "Source"
-msgstr "Fonte"
+msgid "Find"
+msgstr "Buscar"
 
-msgid "Notes"
-msgstr "Notas"
+msgid "Replace"
+msgstr "Substituír"
 
-msgid "Automatic translation"
-msgstr "Tradución automática"
+#. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.)
+msgid "Options"
+msgstr "Opcións"
 
-msgid "Fuzzy translation"
-msgstr "Tradución dubidosa"
+msgid "Ignore case"
+msgstr "Ignorar maiúsculas e minúsculas"
 
-msgid "Notes for translators:"
-msgstr "Notas para os tradutores:"
+msgid "Wrap around"
+msgstr "Busca circular"
 
-msgid "Comment:"
-msgstr "Comentario:"
+msgid "Whole words only"
+msgstr "Só palabras completas"
 
-msgid "Source file"
-msgstr "Ficheiro fonte"
+msgid "Find in source texts"
+msgstr "Atopar nos textos fonte"
 
-msgid "Source file occurrence:"
-msgstr "Aparición en ficheiro de código fonte:"
+msgid "Find in translations"
+msgstr "Buscar nas traducións"
 
-msgid "Open in Editor"
-msgstr "Abrir no editor"
+msgid "Find in comments"
+msgstr "Buscar nos comentarios"
 
-msgid "Open in editor"
-msgstr "Abrir no editor"
+msgid "Close"
+msgstr "Pechar"
 
-#, c-format
-msgid "Error opening file %s!"
-msgstr "Produciuse un erro ao abrir o ficheiro %s!"
+msgid "Replace All"
+msgstr "Substituír todo"
+
+msgid "Replace all"
+msgstr "Substituír todo"
+
+msgid "< &Previous"
+msgstr "< &Anterior"
+
+msgid "&Next >"
+msgstr "&Seguinte >"
+
+msgid "String to find"
+msgstr "Texto que atopar"
+
+msgid "Replacement string"
+msgstr "Texto de substitución"
 
 #, c-format
 msgid "Cannot execute program: %s"
@@ -1051,9 +1212,19 @@ msgstr "Novo"
 msgid "Edit"
 msgstr "Editar"
 
+msgid "Delete extractor"
+msgstr "Eliminar extractor"
+
+#, c-format
+msgid "Are you sure you want to delete the “%s” extractor?"
+msgstr "Ten a certeza de querer eliminar o extractor \"%s\"?"
+
 msgid "Extractors"
 msgstr "Extractores"
 
+msgid "Accounts"
+msgstr "Contas"
+
 msgid "Automatically check for updates"
 msgstr "Mirar de actualizacións automaticamente"
 
@@ -1096,8 +1267,41 @@ msgstr "Conservar o formato dos ficheiros existentes"
 msgid "Advanced"
 msgstr "Avanzadas"
 
-msgid "Additional keywords"
-msgstr "Palabras chave adicionais"
+msgid ""
+"<big>Drag and Drop Folders Here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+"<big>Arrastre e solte cartafoles aquí</big>\n"
+"\n"
+"ou utilice o botón +"
+
+msgid ""
+"<big>Drag and drop folders here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+"<big>Arrastre e solte cartafoles aquí</big>\n"
+"\n"
+"ou utilice o botón +"
+
+msgid "Add Folders..."
+msgstr "Engadir cartafoles..."
+
+msgid "Add folders..."
+msgstr "Engadir cartafoles..."
+
+msgid "Add Files..."
+msgstr "Engadir ficheiros..."
+
+msgid "Add files..."
+msgstr "Engadir ficheiros..."
+
+msgid "Add Wildcard..."
+msgstr "Engadir comodín..."
+
+msgid "Add wildcard..."
+msgstr "Engadir comodín..."
 
 msgid "Paths"
 msgstr "Rutas"
@@ -1105,6 +1309,9 @@ msgstr "Rutas"
 msgid "Excluded paths"
 msgstr "Camiños excluídos"
 
+msgid "Additional keywords"
+msgstr "Palabras chave adicionais"
+
 msgid "Name of the project the translation is for"
 msgstr "O nome do proxecto ao que pertence esta tradución"
 
@@ -1119,6 +1326,9 @@ msgstr ""
 "Por favor, garde o ficheiro primeiro. Esta sección non pode ser editar ata "
 "que o faga."
 
+msgid "Comment:"
+msgstr "Comentario:"
+
 msgid "OK"
 msgstr "Aceptar"
 
@@ -1128,42 +1338,6 @@ msgstr "&Borrar"
 msgid "Clear the comment"
 msgstr "Borrar o comentario"
 
-msgid "Find..."
-msgstr "Buscar..."
-
-msgid "String to find:"
-msgstr "Cadea a buscar:"
-
-msgid "Case sensitive"
-msgstr "Distinguir entre maiúsculas e minúsculas"
-
-msgid "Start from the first item"
-msgstr "Comezar desde o primeiro elemento"
-
-msgid "Whole words only"
-msgstr "Só palabras completas"
-
-msgid "Find in original strings"
-msgstr "Buscar nas cadeas orixinais"
-
-msgid "Find in translations"
-msgstr "Buscar nas traducións"
-
-msgid "Find in comments"
-msgstr "Buscar nos comentarios"
-
-msgid "Find in automatic comments"
-msgstr "Buscar nos comentarios automáticos"
-
-msgid "Close"
-msgstr "Pechar"
-
-msgid "< &Previous"
-msgstr "< &Anterior"
-
-msgid "&Next >"
-msgstr "&Seguinte >"
-
 msgid "Create new translations project"
 msgstr "Crear novo proxecto de tradución"
 
@@ -1218,6 +1392,12 @@ msgstr "&Abrir..."
 msgid "Open Recent"
 msgstr "Abrir recentes"
 
+msgid "Open from Crowdin..."
+msgstr "Abrir desde Crowdin..."
+
+msgid "Open From Crowdin..."
+msgstr "Abrir desde Crowdin..."
+
 msgid "&Save"
 msgstr "&Gardar"
 
@@ -1266,14 +1446,17 @@ msgstr "Mo&strar as referencias"
 msgid "&Find..."
 msgstr "&Buscar..."
 
+msgid "Replace..."
+msgstr "Substituír..."
+
 msgid "Find next"
 msgstr "Buscar seguinte"
 
 msgid "Find previous"
 msgstr "Buscar anterior"
 
-msgid "Find"
-msgstr "Buscar"
+msgid "Find and Replace..."
+msgstr "Atopar e substituír..."
 
 msgid "Find Next"
 msgstr "Buscar seguinte"
@@ -1314,6 +1497,12 @@ msgstr "A&grupar por contexto"
 msgid "&Group By Context"
 msgstr "A&grupar por contexto"
 
+msgid "Entries with errors first"
+msgstr "Primeiro as entradas con erros"
+
+msgid "Entries with Errors First"
+msgstr "Primeiro as entradas con erros"
+
 msgid "&Untranslated entries first"
 msgstr "Entradas &sen traducir primeiro"
 
@@ -1323,6 +1512,9 @@ msgstr "Entradas &sen traducir primeiro"
 msgid "Show sidebar"
 msgstr "Mostrar barra lateral"
 
+msgid "Show status bar"
+msgstr "Mostrar a barra de estado"
+
 msgid "C&atalog"
 msgstr "C&atálogo"
 
@@ -1338,6 +1530,9 @@ msgstr "Actualizar desde un ficheiro &POT..."
 msgid "Update from &POT File..."
 msgstr "Actualizar desde un ficheiro &POT..."
 
+msgid "Sync with Crowdin"
+msgstr "Sincronizar con Crowdin"
+
 msgid "Fill missing translations from &TM..."
 msgstr "Cubrir as traducións pendentes a partir da MT..."
 
@@ -1469,6 +1664,9 @@ msgstr ""
 msgid "Catalog properties"
 msgstr "Propiedades do catálogo"
 
+msgid "Project name and version:"
+msgstr "Nome e versión do proxecto:"
+
 msgid "Plural Forms:"
 msgstr "Formas de plural:"
 
@@ -1481,9 +1679,21 @@ msgstr "Utilizar expresión personalizada"
 msgid "Learn about plural forms"
 msgstr "Aprenda sobre as formas plurais"
 
+msgid "Charset:"
+msgstr "Xogo de caracteres:"
+
+msgid "Team:"
+msgstr "Equipo:"
+
+msgid "Team's email address:"
+msgstr "Enderezo de correo-e (e-mail) do equipo:"
+
 msgid "Translation properties"
 msgstr "Propiedades da tradución"
 
+msgid "Sources paths"
+msgstr "Rutas do código fonte"
+
 msgid "Extract text from source files in the following directories:"
 msgstr ""
 "Extraer textos dos ficheiros de código fonte que están nos seguintes "
@@ -1492,8 +1702,8 @@ msgstr ""
 msgid "Base path:"
 msgstr "Ruta base:"
 
-msgid "Sources paths"
-msgstr "Rutas do código fonte"
+msgid "Sources keywords"
+msgstr "Palabras clave do código fonte"
 
 msgid ""
 "Use these keywords (function names) to recognize translatable strings\n"
@@ -1505,9 +1715,6 @@ msgstr ""
 msgid "Learn about gettext keywords"
 msgstr "Saber máis sobre as palabras chave de gettext"
 
-msgid "Sources keywords"
-msgstr "Palabras clave do código fonte"
-
 msgid "Update summary"
 msgstr "Resumo da actualización"
 
@@ -1555,8 +1762,8 @@ msgstr "Actualizar catálogo - sincronizalo coas súas fontes"
 msgid "Toggled if selected string has fuzzy translation"
 msgstr "Marcado se a cadea seleccionada ten unha tradución dubidosa"
 
-msgid "Show or hide the sidebar."
-msgstr "Mostrar ou agochar a barra lateral."
+msgid "Show or hide the sidebar"
+msgstr "Mostrar ou agochar a barra lateral"
 
 #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer.
 msgid "Previous source text:"
@@ -1569,6 +1776,9 @@ msgstr ""
 "O texto fonte antigo (antes de mudar pla actualización) ao que corresponde a "
 "tradución aproximada."
 
+msgid "Notes for translators:"
+msgstr "Notas para os tradutores:"
+
 msgid "Add comment"
 msgstr "Engadir comentario"
 
@@ -1648,15 +1858,22 @@ msgstr "Editar unha tradución"
 msgid "Open an existing PO file and edit the translation."
 msgstr "Abrir un ficheiro PO existente e editar a tradución."
 
-msgid "Create new translation"
-msgstr "Crear unha nova tradución"
-
 msgid ""
 "Take an existing PO file or POT template and create a new translation from "
 "it."
 msgstr ""
 "Tomar un ficheiro PO ou POT existente e crear unha traducción a partir deste."
 
+msgid "Collaborate on a translation with Crowdin"
+msgstr "Colabora na tradución con Crowdin"
+
+msgid ""
+"Download a file from Crowdin project, translate and sync your changes back."
+msgstr "Descargue un ficheiro desde Crowdin, traduza e sincronice os cambios."
+
+msgid "What is Crowdin?"
+msgstr "Que é Crowdin?"
+
 msgid "There are no translations. That’s unusual."
 msgstr "Non hai traducións. Isto non é o habitual."
 
@@ -1695,3 +1912,9 @@ msgstr "Extraer desde as fontes"
 
 msgid "Configure source code extraction in Properties."
 msgstr "Configure a extracción de código fonte en Propiedades."
+
+msgid "Sync"
+msgstr "Sincronizar"
+
+msgid "Synchronize the translation with Crowdin"
+msgstr "Sincronizar a tradución con Crowdin"
diff --git a/locales/he.mo b/locales/he.mo
index b6fe8bc..2e63481 100644
Binary files a/locales/he.mo and b/locales/he.mo differ
diff --git a/locales/he.po b/locales/he.po
index 2b9cf47..4ef9ee6 100644
--- a/locales/he.po
+++ b/locales/he.po
@@ -2,8 +2,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: poedit\n"
 "Report-Msgid-Bugs-To: help at poedit.net\n"
-"POT-Creation-Date: 2015-01-10 16:00+0100\n"
-"PO-Revision-Date: 2015-03-10 12:33-0400\n"
+"POT-Creation-Date: 2015-05-27 11:31+0200\n"
+"PO-Revision-Date: 2015-05-27 05:17-0400\n"
 "Last-Translator: vslavik <vaclav at slavik.io>\n"
 "Language-Team: Hebrew\n"
 "Language: he_IL\n"
@@ -83,6 +83,15 @@ msgstr ""
 msgid "Error saving catalog"
 msgstr "שגיאה בשמירת קובץ הקטלוג"
 
+msgid "PO Translation Files"
+msgstr ""
+
+msgid "POT Translation Templates"
+msgstr ""
+
+msgid "All Translation Files"
+msgstr ""
+
 msgid "Merging differences..."
 msgstr "מתבצע שילוב בין ההבדלים..."
 
@@ -102,6 +111,83 @@ msgstr "בחירת שפה"
 msgid "You must restart Poedit for this change to take effect."
 msgstr "עליך להפעיל מחדש את Poedit כדי שהשינויים ייכנסו לתוקף."
 
+msgid "Downloading translations is disabled in this project."
+msgstr ""
+
+msgid "Not authorized, please sign in again."
+msgstr ""
+
+msgid "Sign in to Crowdin"
+msgstr ""
+
+msgid ""
+"Crowdin is an online localization management platform and collaborative "
+"translation tool. Poedit can seamlessly sync PO files managed at Crowdin."
+msgstr ""
+
+msgid "Sign In"
+msgstr ""
+
+msgid "Sign in"
+msgstr ""
+
+msgid "Sign Out"
+msgstr ""
+
+msgid "Sign out"
+msgstr ""
+
+msgid "Waiting for authentication…"
+msgstr ""
+
+msgid "Updating user information…"
+msgstr ""
+
+msgid "Signed in as:"
+msgstr ""
+
+msgid "Learn More About Crowdin"
+msgstr ""
+
+msgid "Learn more about Crowdin"
+msgstr ""
+
+msgid "Open Crowdin translation"
+msgstr ""
+
+msgid "Project:"
+msgstr ""
+
+msgid "Language:"
+msgstr "שפה:"
+
+msgid "File:"
+msgstr ""
+
+msgid "No translation projects listed in your Crowdin account."
+msgstr ""
+
+msgid "This project has no files that can be translated in Poedit."
+msgstr ""
+
+msgid "This file can only be edited in Crowdin’s web interface."
+msgstr ""
+
+msgid "Downloading latest translations…"
+msgstr ""
+
+msgid "Syncing with Crowdin"
+msgstr ""
+
+msgid "Syncing with Crowdin failed."
+msgstr ""
+
+msgid "Crowdin error"
+msgstr ""
+
+msgid "Uploading translations…"
+msgstr ""
+
 msgid "&Copy"
 msgstr ""
 
@@ -146,6 +232,12 @@ msgstr ""
 msgid "don't delete temporary files (for debugging)"
 msgstr "לא  למחוק קבצים זמניים (לצורכי ניפוי שגיאות)"
 
+msgid "handle a poedit:// URI"
+msgstr ""
+
+msgid "Failed to communicate with Poedit process."
+msgstr ""
+
 #, c-format
 msgid "Unhandled exception occurred: %s"
 msgstr ""
@@ -156,12 +248,6 @@ msgstr ""
 msgid "Open catalog"
 msgstr "פתיחת קטלוג"
 
-msgid "All Files"
-msgstr ""
-
-msgid "PO Translation Files"
-msgstr ""
-
 #, c-format
 msgid "File '%s' doesn't exist."
 msgstr "הקובץ '%s' לא קיים."
@@ -389,6 +475,17 @@ msgstr "רבים:"
 msgid "Translation:"
 msgstr "תרגום:"
 
+msgid ""
+"POT files are only templates and don’t contain any translations themselves.\n"
+"To make a translation, create a new PO file based on the template."
+msgstr ""
+
+msgid "Create New Translation"
+msgstr ""
+
+msgid "Create new translation"
+msgstr "יצירת תרגום חדש"
+
 #. TRANSLATORS: %s is language name in its basic form (as you
 #. would see e.g. in a list of supported languages). You may need
 #. to rephrase it, e.g. to an equivalent of "for language %s".
@@ -436,9 +533,6 @@ msgstr ""
 msgid "Open catalog template"
 msgstr "פתיחת תבנית קטלוג"
 
-msgid "POT Translation Templates"
-msgstr ""
-
 msgid "Updating catalog"
 msgstr "הקטלוג מעודכן"
 
@@ -509,18 +603,20 @@ msgstr[1] ""
 msgid "The translation is ready for use."
 msgstr "התרגום מוכן לשימוש."
 
-msgid "No references to this string found."
-msgstr "לא נמצאו הפניות למחרוזת זו."
-
-msgid "Please choose the reference you want to show:"
-msgstr "נא לבחור את ההפניה שברצונך להציג:"
-
-msgid "References"
-msgstr "הפניות"
-
 msgid "Context:"
 msgstr "הקשר:"
 
+#, c-format
+msgid "Poedit automatically fixed invalid content in the file “%s”."
+msgstr ""
+
+msgid ""
+"The file contained duplicate items, which is not allowed in PO files and "
+"would prevent the file from being used. Poedit fixed the issue, but you "
+"should review translations of any items marked as fuzzy and correct them if "
+"necessary."
+msgstr ""
+
 msgid "Language of the translation isn't set."
 msgstr "שפת התרגום לא מוגדרת."
 
@@ -530,6 +626,21 @@ msgstr ""
 msgid "Set language"
 msgstr "הגדרת שפה"
 
+#. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)."
+msgid ""
+"Suggestions are not available if the translation language is not set "
+"correctly. Other features, such as plural forms, may be affected as well."
+msgstr ""
+
+msgid "Language of the translation is the same as source language."
+msgstr ""
+
+msgid "Fix Language"
+msgstr ""
+
+msgid "Fix language"
+msgstr ""
+
 msgid ""
 "This catalog has entries with plural forms, but doesn't have Plural-Forms "
 "header configured."
@@ -560,6 +671,7 @@ msgstr "תיקון הכותרת"
 msgid "Plural forms expression used by the catalog is unusual for %s."
 msgstr ""
 
+#. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the catalog is unusual for %s.")"
 msgid "Review"
 msgstr "סקירה"
 
@@ -581,6 +693,12 @@ msgid_plural "%d errors"
 msgstr[0] ""
 msgstr[1] ""
 
+#, c-format
+msgid "%d entry"
+msgid_plural "%d entries"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid " (unsaved)"
 msgstr " (לא נשמר)"
 
@@ -696,6 +814,9 @@ msgstr "הכול"
 msgid "Form %i"
 msgstr "צורה %i"
 
+msgid "Singular"
+msgstr ""
+
 msgid "Zero"
 msgstr "אפס"
 
@@ -705,6 +826,9 @@ msgstr "אחד"
 msgid "Two"
 msgstr "שתיים"
 
+msgid "Plural"
+msgstr ""
+
 msgid "Other"
 msgstr "אחר"
 
@@ -733,6 +857,12 @@ msgstr ""
 msgid "Show Sidebar"
 msgstr ""
 
+msgid "Hide Status Bar"
+msgstr ""
+
+msgid "Show Status Bar"
+msgstr ""
+
 msgid "Source text"
 msgstr "טקסט המקור"
 
@@ -742,6 +872,10 @@ msgstr "תרגום"
 msgid "ID"
 msgstr "מזהה"
 
+#, c-format
+msgid "Source text — %s"
+msgstr ""
+
 msgid "unknown language"
 msgstr "שפה לא ידועה"
 
@@ -752,57 +886,73 @@ msgstr "תרגום — %s"
 msgid "Error:"
 msgstr "שגיאה:"
 
-msgid "Project info"
-msgstr "מידע על המיזם"
+msgid "Source file"
+msgstr "קובץ מקור"
 
-msgid "Project name and version:"
-msgstr "שם וגרסת המיזם:"
+msgid "Source file occurrence:"
+msgstr "מופע בקובץ המקור:"
 
-msgid "Language:"
-msgstr "שפה:"
+msgid "Open in Editor"
+msgstr ""
 
-msgid "Team:"
-msgstr "צוות:"
+msgid "Open in editor"
+msgstr ""
 
-msgid "Team's email address:"
-msgstr "כתובת הדוא״ל של הקבוצה:"
+msgid "No references for the selected item."
+msgstr ""
 
-msgid "Charset:"
-msgstr "קידוד:"
+#, c-format
+msgid "Error opening file %s!"
+msgstr "שגיאה בפתיחת הקובץ %s!"
 
-msgid "Source"
-msgstr "מקור"
+msgid "Find"
+msgstr "חיפוש"
 
-msgid "Notes"
-msgstr "הערות"
+msgid "Replace"
+msgstr ""
 
-msgid "Automatic translation"
-msgstr "תרגום אוטומטי"
+#. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.)
+msgid "Options"
+msgstr ""
 
-msgid "Fuzzy translation"
-msgstr "תרגום מעורפל"
+msgid "Ignore case"
+msgstr ""
 
-msgid "Notes for translators:"
-msgstr "הערות למתרגמים:"
+msgid "Wrap around"
+msgstr ""
 
-msgid "Comment:"
-msgstr "הערה:"
+msgid "Whole words only"
+msgstr "מילים שלמות בלבד"
 
-msgid "Source file"
-msgstr "קובץ מקור"
+msgid "Find in source texts"
+msgstr ""
 
-msgid "Source file occurrence:"
-msgstr "מופע בקובץ המקור:"
+msgid "Find in translations"
+msgstr ""
 
-msgid "Open in Editor"
+msgid "Find in comments"
+msgstr "חיפוש בהערות"
+
+msgid "Close"
+msgstr "סגירה"
+
+msgid "Replace All"
 msgstr ""
 
-msgid "Open in editor"
+msgid "Replace all"
 msgstr ""
 
-#, c-format
-msgid "Error opening file %s!"
-msgstr "שגיאה בפתיחת הקובץ %s!"
+msgid "< &Previous"
+msgstr "< ה&קודם"
+
+msgid "&Next >"
+msgstr "ה&בא >"
+
+msgid "String to find"
+msgstr ""
+
+msgid "Replacement string"
+msgstr ""
 
 #, c-format
 msgid "Cannot execute program: %s"
@@ -995,9 +1145,19 @@ msgstr "חדש"
 msgid "Edit"
 msgstr "עריכה"
 
+msgid "Delete extractor"
+msgstr ""
+
+#, c-format
+msgid "Are you sure you want to delete the “%s” extractor?"
+msgstr ""
+
 msgid "Extractors"
 msgstr ""
 
+msgid "Accounts"
+msgstr ""
+
 msgid "Automatically check for updates"
 msgstr ""
 
@@ -1036,8 +1196,35 @@ msgstr ""
 msgid "Advanced"
 msgstr ""
 
-msgid "Additional keywords"
-msgstr "מילות מפתח נוספות"
+msgid ""
+"<big>Drag and Drop Folders Here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+
+msgid ""
+"<big>Drag and drop folders here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+
+msgid "Add Folders..."
+msgstr ""
+
+msgid "Add folders..."
+msgstr ""
+
+msgid "Add Files..."
+msgstr ""
+
+msgid "Add files..."
+msgstr ""
+
+msgid "Add Wildcard..."
+msgstr ""
+
+msgid "Add wildcard..."
+msgstr ""
 
 msgid "Paths"
 msgstr "נתיבים"
@@ -1045,6 +1232,9 @@ msgstr "נתיבים"
 msgid "Excluded paths"
 msgstr ""
 
+msgid "Additional keywords"
+msgstr "מילות מפתח נוספות"
+
 msgid "Name of the project the translation is for"
 msgstr "שם המיזם עבורו מיועד התרגום"
 
@@ -1057,6 +1247,9 @@ msgstr "UTF-8 (מומלץ)"
 msgid "Please save the file first. This section cannot be edited until then."
 msgstr ""
 
+msgid "Comment:"
+msgstr "הערה:"
+
 msgid "OK"
 msgstr "אישור"
 
@@ -1066,42 +1259,6 @@ msgstr "&פינוי"
 msgid "Clear the comment"
 msgstr "נקה את ההערה"
 
-msgid "Find..."
-msgstr "חיפוש..."
-
-msgid "String to find:"
-msgstr "מחרוזת לחיפוש:"
-
-msgid "Case sensitive"
-msgstr "מבדיל בין אותיות גדולות לקטנות"
-
-msgid "Start from the first item"
-msgstr "התחלה מהפריט הראשון"
-
-msgid "Whole words only"
-msgstr "מילים שלמות בלבד"
-
-msgid "Find in original strings"
-msgstr "חיפוש במחרוזות המקוריות"
-
-msgid "Find in translations"
-msgstr ""
-
-msgid "Find in comments"
-msgstr "חיפוש בהערות"
-
-msgid "Find in automatic comments"
-msgstr "חיפוש בהערות האוטומטיות"
-
-msgid "Close"
-msgstr "סגירה"
-
-msgid "< &Previous"
-msgstr "< ה&קודם"
-
-msgid "&Next >"
-msgstr "ה&בא >"
-
 msgid "Create new translations project"
 msgstr "יצירת מיזם תרגומים חדש"
 
@@ -1156,6 +1313,12 @@ msgstr "&פתיחה..."
 msgid "Open Recent"
 msgstr ""
 
+msgid "Open from Crowdin..."
+msgstr ""
+
+msgid "Open From Crowdin..."
+msgstr ""
+
 msgid "&Save"
 msgstr "ש&מירה"
 
@@ -1204,14 +1367,17 @@ msgstr "ה&צגת ההפניות"
 msgid "&Find..."
 msgstr "&חיפוש..."
 
+msgid "Replace..."
+msgstr ""
+
 msgid "Find next"
 msgstr "חיפוש הבא"
 
 msgid "Find previous"
 msgstr "חיפוש הקודם"
 
-msgid "Find"
-msgstr "חיפוש"
+msgid "Find and Replace..."
+msgstr ""
 
 msgid "Find Next"
 msgstr "חיפוש הבא"
@@ -1252,6 +1418,12 @@ msgstr ""
 msgid "&Group By Context"
 msgstr ""
 
+msgid "Entries with errors first"
+msgstr ""
+
+msgid "Entries with Errors First"
+msgstr ""
+
 msgid "&Untranslated entries first"
 msgstr "רשומות &בלתי מתורגמות תחילה"
 
@@ -1261,6 +1433,9 @@ msgstr "רשומות &בלתי מתורגמות תחילה"
 msgid "Show sidebar"
 msgstr ""
 
+msgid "Show status bar"
+msgstr ""
+
 msgid "C&atalog"
 msgstr "&קטלוג"
 
@@ -1276,6 +1451,9 @@ msgstr "עד&כון מקובץ POT..."
 msgid "Update from &POT File..."
 msgstr "עד&כון מקובץ POT..."
 
+msgid "Sync with Crowdin"
+msgstr ""
+
 msgid "Fill missing translations from &TM..."
 msgstr ""
 
@@ -1399,6 +1577,9 @@ msgstr ""
 msgid "Catalog properties"
 msgstr "מאפייני הקטלוג"
 
+msgid "Project name and version:"
+msgstr "שם וגרסת המיזם:"
+
 msgid "Plural Forms:"
 msgstr "צורות רבים:"
 
@@ -1411,17 +1592,29 @@ msgstr "שימוש בביטוי מותאם אישית"
 msgid "Learn about plural forms"
 msgstr "מידע על צורות רבים"
 
+msgid "Charset:"
+msgstr "קידוד:"
+
+msgid "Team:"
+msgstr "צוות:"
+
+msgid "Team's email address:"
+msgstr "כתובת הדוא״ל של הקבוצה:"
+
 msgid "Translation properties"
 msgstr ""
 
+msgid "Sources paths"
+msgstr "נתיבי המקור"
+
 msgid "Extract text from source files in the following directories:"
 msgstr "חילוץ טקסט מקובצי המקור בתיקיות הבאות:"
 
 msgid "Base path:"
 msgstr "נתיב בסיס:"
 
-msgid "Sources paths"
-msgstr "נתיבי המקור"
+msgid "Sources keywords"
+msgstr "מילות מפתח המקורות"
 
 msgid ""
 "Use these keywords (function names) to recognize translatable strings\n"
@@ -1434,9 +1627,6 @@ msgstr ""
 msgid "Learn about gettext keywords"
 msgstr "מידע על מילות מפתח של gettext"
 
-msgid "Sources keywords"
-msgstr "מילות מפתח המקורות"
-
 msgid "Update summary"
 msgstr "תקציר עדכון"
 
@@ -1484,7 +1674,7 @@ msgstr "עדכון קטלוג - סנכרון עם קוד המקור"
 msgid "Toggled if selected string has fuzzy translation"
 msgstr "מסומן אם למחרוזת שנבחרה התרגום מעורפל"
 
-msgid "Show or hide the sidebar."
+msgid "Show or hide the sidebar"
 msgstr ""
 
 #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer.
@@ -1496,6 +1686,9 @@ msgid ""
 "translation corresponds to."
 msgstr ""
 
+msgid "Notes for translators:"
+msgstr "הערות למתרגמים:"
+
 msgid "Add comment"
 msgstr ""
 
@@ -1568,14 +1761,21 @@ msgstr "עריכת תרגום"
 msgid "Open an existing PO file and edit the translation."
 msgstr "פתיחת קובץ PO קיים ועריכת התרגום."
 
-msgid "Create new translation"
-msgstr "יצירת תרגום חדש"
-
 msgid ""
 "Take an existing PO file or POT template and create a new translation from "
 "it."
 msgstr ""
 
+msgid "Collaborate on a translation with Crowdin"
+msgstr ""
+
+msgid ""
+"Download a file from Crowdin project, translate and sync your changes back."
+msgstr ""
+
+msgid "What is Crowdin?"
+msgstr ""
+
 msgid "There are no translations. That’s unusual."
 msgstr "אין תרגומים. זה מצב חריג."
 
@@ -1608,3 +1808,9 @@ msgstr ""
 
 msgid "Configure source code extraction in Properties."
 msgstr "ניתן להגדיר את חילוץ קוד המקור ב־Properties."
+
+msgid "Sync"
+msgstr ""
+
+msgid "Synchronize the translation with Crowdin"
+msgstr ""
diff --git a/locales/hi.mo b/locales/hi.mo
index 01214d2..78b0e53 100644
Binary files a/locales/hi.mo and b/locales/hi.mo differ
diff --git a/locales/hi.po b/locales/hi.po
index c86e435..2b9aba5 100644
--- a/locales/hi.po
+++ b/locales/hi.po
@@ -2,8 +2,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: poedit\n"
 "Report-Msgid-Bugs-To: help at poedit.net\n"
-"POT-Creation-Date: 2015-01-10 16:00+0100\n"
-"PO-Revision-Date: 2015-03-10 12:33-0400\n"
+"POT-Creation-Date: 2015-05-27 11:31+0200\n"
+"PO-Revision-Date: 2015-05-27 05:18-0400\n"
 "Last-Translator: vslavik <vaclav at slavik.io>\n"
 "Language-Team: Hindi\n"
 "Language: hi_IN\n"
@@ -84,6 +84,15 @@ msgstr ""
 msgid "Error saving catalog"
 msgstr "सूचीपत्र को सुरक्षित करने में त्रुटि"
 
+msgid "PO Translation Files"
+msgstr ""
+
+msgid "POT Translation Templates"
+msgstr ""
+
+msgid "All Translation Files"
+msgstr ""
+
 msgid "Merging differences..."
 msgstr "अंतरों को विलय किया जा रहा है..."
 
@@ -103,6 +112,83 @@ msgstr "भाषा चयन"
 msgid "You must restart Poedit for this change to take effect."
 msgstr "इन परिवर्तनों को प्रभाव में लाने के लिए आपको Poedit को पुनःआरम्भ करना होगा।"
 
+msgid "Downloading translations is disabled in this project."
+msgstr ""
+
+msgid "Not authorized, please sign in again."
+msgstr ""
+
+msgid "Sign in to Crowdin"
+msgstr ""
+
+msgid ""
+"Crowdin is an online localization management platform and collaborative "
+"translation tool. Poedit can seamlessly sync PO files managed at Crowdin."
+msgstr ""
+
+msgid "Sign In"
+msgstr ""
+
+msgid "Sign in"
+msgstr ""
+
+msgid "Sign Out"
+msgstr ""
+
+msgid "Sign out"
+msgstr ""
+
+msgid "Waiting for authentication…"
+msgstr ""
+
+msgid "Updating user information…"
+msgstr ""
+
+msgid "Signed in as:"
+msgstr ""
+
+msgid "Learn More About Crowdin"
+msgstr ""
+
+msgid "Learn more about Crowdin"
+msgstr ""
+
+msgid "Open Crowdin translation"
+msgstr ""
+
+msgid "Project:"
+msgstr ""
+
+msgid "Language:"
+msgstr "भाषा:"
+
+msgid "File:"
+msgstr ""
+
+msgid "No translation projects listed in your Crowdin account."
+msgstr ""
+
+msgid "This project has no files that can be translated in Poedit."
+msgstr ""
+
+msgid "This file can only be edited in Crowdin’s web interface."
+msgstr ""
+
+msgid "Downloading latest translations…"
+msgstr ""
+
+msgid "Syncing with Crowdin"
+msgstr ""
+
+msgid "Syncing with Crowdin failed."
+msgstr ""
+
+msgid "Crowdin error"
+msgstr ""
+
+msgid "Uploading translations…"
+msgstr ""
+
 msgid "&Copy"
 msgstr ""
 
@@ -147,6 +233,12 @@ msgstr ""
 msgid "don't delete temporary files (for debugging)"
 msgstr ""
 
+msgid "handle a poedit:// URI"
+msgstr ""
+
+msgid "Failed to communicate with Poedit process."
+msgstr ""
+
 #, c-format
 msgid "Unhandled exception occurred: %s"
 msgstr ""
@@ -157,12 +249,6 @@ msgstr ""
 msgid "Open catalog"
 msgstr "सूचीपत्र को खोलें"
 
-msgid "All Files"
-msgstr ""
-
-msgid "PO Translation Files"
-msgstr ""
-
 #, c-format
 msgid "File '%s' doesn't exist."
 msgstr "'%s' विद्यमान नहीं है।"
@@ -390,6 +476,17 @@ msgstr "बहुवचन:"
 msgid "Translation:"
 msgstr ""
 
+msgid ""
+"POT files are only templates and don’t contain any translations themselves.\n"
+"To make a translation, create a new PO file based on the template."
+msgstr ""
+
+msgid "Create New Translation"
+msgstr ""
+
+msgid "Create new translation"
+msgstr ""
+
 #. TRANSLATORS: %s is language name in its basic form (as you
 #. would see e.g. in a list of supported languages). You may need
 #. to rephrase it, e.g. to an equivalent of "for language %s".
@@ -437,9 +534,6 @@ msgstr ""
 msgid "Open catalog template"
 msgstr "सूचीपत्र मानकपत्र को खोलें"
 
-msgid "POT Translation Templates"
-msgstr ""
-
 msgid "Updating catalog"
 msgstr ""
 
@@ -508,16 +602,18 @@ msgstr[1] ""
 msgid "The translation is ready for use."
 msgstr ""
 
-msgid "No references to this string found."
-msgstr "इस श्रेणी के लिए कोई संदर्भ नहीं मिला।"
-
-msgid "Please choose the reference you want to show:"
-msgstr "कॄपया उस संदर्भ का चयन करें जिसे आप दर्शाना चाहते है:"
+msgid "Context:"
+msgstr ""
 
-msgid "References"
-msgstr "संदर्भ"
+#, c-format
+msgid "Poedit automatically fixed invalid content in the file “%s”."
+msgstr ""
 
-msgid "Context:"
+msgid ""
+"The file contained duplicate items, which is not allowed in PO files and "
+"would prevent the file from being used. Poedit fixed the issue, but you "
+"should review translations of any items marked as fuzzy and correct them if "
+"necessary."
 msgstr ""
 
 msgid "Language of the translation isn't set."
@@ -529,6 +625,21 @@ msgstr ""
 msgid "Set language"
 msgstr ""
 
+#. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)."
+msgid ""
+"Suggestions are not available if the translation language is not set "
+"correctly. Other features, such as plural forms, may be affected as well."
+msgstr ""
+
+msgid "Language of the translation is the same as source language."
+msgstr ""
+
+msgid "Fix Language"
+msgstr ""
+
+msgid "Fix language"
+msgstr ""
+
 msgid ""
 "This catalog has entries with plural forms, but doesn't have Plural-Forms "
 "header configured."
@@ -559,6 +670,7 @@ msgstr ""
 msgid "Plural forms expression used by the catalog is unusual for %s."
 msgstr ""
 
+#. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the catalog is unusual for %s.")"
 msgid "Review"
 msgstr ""
 
@@ -580,6 +692,12 @@ msgid_plural "%d errors"
 msgstr[0] ""
 msgstr[1] ""
 
+#, c-format
+msgid "%d entry"
+msgid_plural "%d entries"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid " (unsaved)"
 msgstr ""
 
@@ -693,6 +811,9 @@ msgstr ""
 msgid "Form %i"
 msgstr "रूप %i"
 
+msgid "Singular"
+msgstr ""
+
 msgid "Zero"
 msgstr ""
 
@@ -702,6 +823,9 @@ msgstr ""
 msgid "Two"
 msgstr ""
 
+msgid "Plural"
+msgstr ""
+
 msgid "Other"
 msgstr ""
 
@@ -730,6 +854,12 @@ msgstr ""
 msgid "Show Sidebar"
 msgstr ""
 
+msgid "Hide Status Bar"
+msgstr ""
+
+msgid "Show Status Bar"
+msgstr ""
+
 msgid "Source text"
 msgstr ""
 
@@ -739,6 +869,10 @@ msgstr "अनुवाद"
 msgid "ID"
 msgstr ""
 
+#, c-format
+msgid "Source text — %s"
+msgstr ""
+
 msgid "unknown language"
 msgstr ""
 
@@ -749,57 +883,73 @@ msgstr ""
 msgid "Error:"
 msgstr ""
 
-msgid "Project info"
-msgstr "परियोजना सूचना"
+msgid "Source file"
+msgstr "स्रोत फ़ाइल"
 
-msgid "Project name and version:"
-msgstr "परियोजना नाम और संस्मरण:"
+msgid "Source file occurrence:"
+msgstr ""
 
-msgid "Language:"
-msgstr "भाषा:"
+msgid "Open in Editor"
+msgstr ""
 
-msgid "Team:"
-msgstr "दल:"
+msgid "Open in editor"
+msgstr ""
 
-msgid "Team's email address:"
-msgstr "दल का विपत्र पता:"
+msgid "No references for the selected item."
+msgstr ""
 
-msgid "Charset:"
-msgstr "शब्दसमुच्चय:"
+#, c-format
+msgid "Error opening file %s!"
+msgstr "%s फ़ाइल को खोलने में त्रुटि!"
 
-msgid "Source"
+msgid "Find"
 msgstr ""
 
-msgid "Notes"
-msgstr "जानकारियां"
+msgid "Replace"
+msgstr ""
 
-msgid "Automatic translation"
-msgstr "स्वचलित अनुवाद"
+#. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.)
+msgid "Options"
+msgstr ""
 
-msgid "Fuzzy translation"
-msgstr "अस्पष्ट अनुवाद"
+msgid "Ignore case"
+msgstr ""
 
-msgid "Notes for translators:"
+msgid "Wrap around"
 msgstr ""
 
-msgid "Comment:"
-msgstr "टिप्पणी:"
+msgid "Whole words only"
+msgstr "सिर्फ पूर्ण शब्द"
 
-msgid "Source file"
-msgstr "स्रोत फ़ाइल"
+msgid "Find in source texts"
+msgstr ""
 
-msgid "Source file occurrence:"
+msgid "Find in translations"
 msgstr ""
 
-msgid "Open in Editor"
+msgid "Find in comments"
+msgstr "टिप्पणी मे खोजे"
+
+msgid "Close"
 msgstr ""
 
-msgid "Open in editor"
+msgid "Replace All"
 msgstr ""
 
-#, c-format
-msgid "Error opening file %s!"
-msgstr "%s फ़ाइल को खोलने में त्रुटि!"
+msgid "Replace all"
+msgstr ""
+
+msgid "< &Previous"
+msgstr ""
+
+msgid "&Next >"
+msgstr ""
+
+msgid "String to find"
+msgstr ""
+
+msgid "Replacement string"
+msgstr ""
 
 #, c-format
 msgid "Cannot execute program: %s"
@@ -992,9 +1142,19 @@ msgstr "नया"
 msgid "Edit"
 msgstr "संपादन"
 
+msgid "Delete extractor"
+msgstr ""
+
+#, c-format
+msgid "Are you sure you want to delete the “%s” extractor?"
+msgstr ""
+
 msgid "Extractors"
 msgstr ""
 
+msgid "Accounts"
+msgstr ""
+
 msgid "Automatically check for updates"
 msgstr ""
 
@@ -1033,7 +1193,34 @@ msgstr ""
 msgid "Advanced"
 msgstr ""
 
-msgid "Additional keywords"
+msgid ""
+"<big>Drag and Drop Folders Here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+
+msgid ""
+"<big>Drag and drop folders here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+
+msgid "Add Folders..."
+msgstr ""
+
+msgid "Add folders..."
+msgstr ""
+
+msgid "Add Files..."
+msgstr ""
+
+msgid "Add files..."
+msgstr ""
+
+msgid "Add Wildcard..."
+msgstr ""
+
+msgid "Add wildcard..."
 msgstr ""
 
 msgid "Paths"
@@ -1042,6 +1229,9 @@ msgstr "पथ"
 msgid "Excluded paths"
 msgstr ""
 
+msgid "Additional keywords"
+msgstr ""
+
 msgid "Name of the project the translation is for"
 msgstr ""
 
@@ -1054,6 +1244,9 @@ msgstr ""
 msgid "Please save the file first. This section cannot be edited until then."
 msgstr ""
 
+msgid "Comment:"
+msgstr "टिप्पणी:"
+
 msgid "OK"
 msgstr "ठीक"
 
@@ -1063,42 +1256,6 @@ msgstr ""
 msgid "Clear the comment"
 msgstr "इस टिप्पणी को साफ़ करें"
 
-msgid "Find..."
-msgstr "खोजें..."
-
-msgid "String to find:"
-msgstr "श्रेणी जिसे खोजना है:"
-
-msgid "Case sensitive"
-msgstr "छोटा-बड़ा संवेदी"
-
-msgid "Start from the first item"
-msgstr "पहले अंश से शुरू करे"
-
-msgid "Whole words only"
-msgstr "सिर्फ पूर्ण शब्द"
-
-msgid "Find in original strings"
-msgstr "मूल श्रेणियों में खोजें"
-
-msgid "Find in translations"
-msgstr ""
-
-msgid "Find in comments"
-msgstr "टिप्पणी मे खोजे"
-
-msgid "Find in automatic comments"
-msgstr "स्वचलित टिप्पणी खिड़की मे खोजे"
-
-msgid "Close"
-msgstr ""
-
-msgid "< &Previous"
-msgstr ""
-
-msgid "&Next >"
-msgstr ""
-
 msgid "Create new translations project"
 msgstr "नये अनुवाद परियोजना का निर्माण करें"
 
@@ -1153,6 +1310,12 @@ msgstr "खोलें (&O)..."
 msgid "Open Recent"
 msgstr ""
 
+msgid "Open from Crowdin..."
+msgstr ""
+
+msgid "Open From Crowdin..."
+msgstr ""
+
 msgid "&Save"
 msgstr "सुरक्षित करें (&S)"
 
@@ -1201,13 +1364,16 @@ msgstr ""
 msgid "&Find..."
 msgstr "खोज (&F)..."
 
+msgid "Replace..."
+msgstr ""
+
 msgid "Find next"
 msgstr ""
 
 msgid "Find previous"
 msgstr ""
 
-msgid "Find"
+msgid "Find and Replace..."
 msgstr ""
 
 msgid "Find Next"
@@ -1249,6 +1415,12 @@ msgstr ""
 msgid "&Group By Context"
 msgstr ""
 
+msgid "Entries with errors first"
+msgstr ""
+
+msgid "Entries with Errors First"
+msgstr ""
+
 msgid "&Untranslated entries first"
 msgstr ""
 
@@ -1258,6 +1430,9 @@ msgstr ""
 msgid "Show sidebar"
 msgstr ""
 
+msgid "Show status bar"
+msgstr ""
+
 msgid "C&atalog"
 msgstr "सूचीपत्र (&a)"
 
@@ -1273,6 +1448,9 @@ msgstr "पॉट (POT) फ़ाइल से अपडेट करें..."
 msgid "Update from &POT File..."
 msgstr ""
 
+msgid "Sync with Crowdin"
+msgstr ""
+
 msgid "Fill missing translations from &TM..."
 msgstr ""
 
@@ -1396,6 +1574,9 @@ msgstr ""
 msgid "Catalog properties"
 msgstr ""
 
+msgid "Project name and version:"
+msgstr "परियोजना नाम और संस्मरण:"
+
 msgid "Plural Forms:"
 msgstr "बहुवचन रूप:"
 
@@ -1408,16 +1589,28 @@ msgstr ""
 msgid "Learn about plural forms"
 msgstr ""
 
+msgid "Charset:"
+msgstr "शब्दसमुच्चय:"
+
+msgid "Team:"
+msgstr "दल:"
+
+msgid "Team's email address:"
+msgstr "दल का विपत्र पता:"
+
 msgid "Translation properties"
 msgstr ""
 
+msgid "Sources paths"
+msgstr ""
+
 msgid "Extract text from source files in the following directories:"
 msgstr ""
 
 msgid "Base path:"
 msgstr "मूल पथ:"
 
-msgid "Sources paths"
+msgid "Sources keywords"
 msgstr ""
 
 msgid ""
@@ -1428,9 +1621,6 @@ msgstr ""
 msgid "Learn about gettext keywords"
 msgstr ""
 
-msgid "Sources keywords"
-msgstr ""
-
 msgid "Update summary"
 msgstr "सारांश को अपडेट करें"
 
@@ -1478,7 +1668,7 @@ msgstr "सूचीपत्र अपडेट - स्रोतों के
 msgid "Toggled if selected string has fuzzy translation"
 msgstr "टॉगल्ड यदि चयनित श्रेणी अस्पष्ट अनुवाद हो चुका है"
 
-msgid "Show or hide the sidebar."
+msgid "Show or hide the sidebar"
 msgstr ""
 
 #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer.
@@ -1490,6 +1680,9 @@ msgid ""
 "translation corresponds to."
 msgstr ""
 
+msgid "Notes for translators:"
+msgstr ""
+
 msgid "Add comment"
 msgstr ""
 
@@ -1562,14 +1755,21 @@ msgstr ""
 msgid "Open an existing PO file and edit the translation."
 msgstr ""
 
-msgid "Create new translation"
-msgstr ""
-
 msgid ""
 "Take an existing PO file or POT template and create a new translation from "
 "it."
 msgstr ""
 
+msgid "Collaborate on a translation with Crowdin"
+msgstr ""
+
+msgid ""
+"Download a file from Crowdin project, translate and sync your changes back."
+msgstr ""
+
+msgid "What is Crowdin?"
+msgstr ""
+
 msgid "There are no translations. That’s unusual."
 msgstr ""
 
@@ -1602,3 +1802,9 @@ msgstr ""
 
 msgid "Configure source code extraction in Properties."
 msgstr ""
+
+msgid "Sync"
+msgstr ""
+
+msgid "Synchronize the translation with Crowdin"
+msgstr ""
diff --git a/locales/hr.mo b/locales/hr.mo
index 08e37d7..ced6457 100644
Binary files a/locales/hr.mo and b/locales/hr.mo differ
diff --git a/locales/hr.po b/locales/hr.po
index 368d2c9..3746c2b 100644
--- a/locales/hr.po
+++ b/locales/hr.po
@@ -2,8 +2,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: poedit\n"
 "Report-Msgid-Bugs-To: help at poedit.net\n"
-"POT-Creation-Date: 2015-01-10 16:00+0100\n"
-"PO-Revision-Date: 2015-03-10 12:33-0400\n"
+"POT-Creation-Date: 2015-05-27 11:31+0200\n"
+"PO-Revision-Date: 2015-05-27 05:17-0400\n"
 "Last-Translator: vslavik <vaclav at slavik.io>\n"
 "Language-Team: Croatian\n"
 "Language: hr_HR\n"
@@ -95,6 +95,15 @@ msgstr ""
 msgid "Error saving catalog"
 msgstr "Greška pri spremanju kataloga"
 
+msgid "PO Translation Files"
+msgstr "PO prevoditeljske datoteke"
+
+msgid "POT Translation Templates"
+msgstr "POT predlošci prijevoda"
+
+msgid "All Translation Files"
+msgstr ""
+
 msgid "Merging differences..."
 msgstr "Spajanje razlika"
 
@@ -114,6 +123,83 @@ msgstr "Odabir jezika"
 msgid "You must restart Poedit for this change to take effect."
 msgstr "Ponovo pokrenite Poedit kako bi promjena imala učinak"
 
+msgid "Downloading translations is disabled in this project."
+msgstr ""
+
+msgid "Not authorized, please sign in again."
+msgstr ""
+
+msgid "Sign in to Crowdin"
+msgstr ""
+
+msgid ""
+"Crowdin is an online localization management platform and collaborative "
+"translation tool. Poedit can seamlessly sync PO files managed at Crowdin."
+msgstr ""
+
+msgid "Sign In"
+msgstr ""
+
+msgid "Sign in"
+msgstr ""
+
+msgid "Sign Out"
+msgstr ""
+
+msgid "Sign out"
+msgstr ""
+
+msgid "Waiting for authentication…"
+msgstr ""
+
+msgid "Updating user information…"
+msgstr ""
+
+msgid "Signed in as:"
+msgstr ""
+
+msgid "Learn More About Crowdin"
+msgstr ""
+
+msgid "Learn more about Crowdin"
+msgstr ""
+
+msgid "Open Crowdin translation"
+msgstr ""
+
+msgid "Project:"
+msgstr ""
+
+msgid "Language:"
+msgstr "Jezik:"
+
+msgid "File:"
+msgstr ""
+
+msgid "No translation projects listed in your Crowdin account."
+msgstr ""
+
+msgid "This project has no files that can be translated in Poedit."
+msgstr ""
+
+msgid "This file can only be edited in Crowdin’s web interface."
+msgstr ""
+
+msgid "Downloading latest translations…"
+msgstr ""
+
+msgid "Syncing with Crowdin"
+msgstr ""
+
+msgid "Syncing with Crowdin failed."
+msgstr ""
+
+msgid "Crowdin error"
+msgstr ""
+
+msgid "Uploading translations…"
+msgstr ""
+
 msgid "&Copy"
 msgstr "&Kopiraj"
 
@@ -160,6 +246,12 @@ msgstr ""
 msgid "don't delete temporary files (for debugging)"
 msgstr "Nemoj brisati privremene datoteke za ispravljanje grešaka."
 
+msgid "handle a poedit:// URI"
+msgstr ""
+
+msgid "Failed to communicate with Poedit process."
+msgstr ""
+
 #, c-format
 msgid "Unhandled exception occurred: %s"
 msgstr "Dogodila se neočekivana iznimka %s"
@@ -170,12 +262,6 @@ msgstr "Dogodila se neočekivana iznimka"
 msgid "Open catalog"
 msgstr "Otvori katalog"
 
-msgid "All Files"
-msgstr "Sve datoteke"
-
-msgid "PO Translation Files"
-msgstr "PO prevoditeljske datoteke"
-
 #, c-format
 msgid "File '%s' doesn't exist."
 msgstr "Datoteka '%s' ne postoji."
@@ -403,6 +489,17 @@ msgstr "Množina:"
 msgid "Translation:"
 msgstr "Prijevod"
 
+msgid ""
+"POT files are only templates and don’t contain any translations themselves.\n"
+"To make a translation, create a new PO file based on the template."
+msgstr ""
+
+msgid "Create New Translation"
+msgstr ""
+
+msgid "Create new translation"
+msgstr "Izradi novi prijevod"
+
 #. TRANSLATORS: %s is language name in its basic form (as you
 #. would see e.g. in a list of supported languages). You may need
 #. to rephrase it, e.g. to an equivalent of "for language %s".
@@ -450,9 +547,6 @@ msgstr "HTML datoteke"
 msgid "Open catalog template"
 msgstr "otvori predložak kataloga"
 
-msgid "POT Translation Templates"
-msgstr "POT predlošci prijevoda"
-
 msgid "Updating catalog"
 msgstr "Ažuriranje kataloga..."
 
@@ -529,18 +623,20 @@ msgstr[2] "Prijevodje spreman za upotrebu ali %d unosa  još nije prevedeno."
 msgid "The translation is ready for use."
 msgstr "Prijevod je spreman za upotrebu."
 
-msgid "No references to this string found."
-msgstr "Za ovaj string nema pronađenih referenci."
-
-msgid "Please choose the reference you want to show:"
-msgstr "Odaberite referencu koju želite prikazati."
-
-msgid "References"
-msgstr "Reference"
-
 msgid "Context:"
 msgstr "Kontekst"
 
+#, c-format
+msgid "Poedit automatically fixed invalid content in the file “%s”."
+msgstr ""
+
+msgid ""
+"The file contained duplicate items, which is not allowed in PO files and "
+"would prevent the file from being used. Poedit fixed the issue, but you "
+"should review translations of any items marked as fuzzy and correct them if "
+"necessary."
+msgstr ""
+
 msgid "Language of the translation isn't set."
 msgstr "Nije određen jezik za prijevod"
 
@@ -550,6 +646,21 @@ msgstr ""
 msgid "Set language"
 msgstr "Postavi jezik"
 
+#. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)."
+msgid ""
+"Suggestions are not available if the translation language is not set "
+"correctly. Other features, such as plural forms, may be affected as well."
+msgstr ""
+
+msgid "Language of the translation is the same as source language."
+msgstr ""
+
+msgid "Fix Language"
+msgstr ""
+
+msgid "Fix language"
+msgstr ""
+
 msgid ""
 "This catalog has entries with plural forms, but doesn't have Plural-Forms "
 "header configured."
@@ -584,6 +695,7 @@ msgstr "Ispravi zaglavlje"
 msgid "Plural forms expression used by the catalog is unusual for %s."
 msgstr "Izraz oblika množine korištenu katalogu nije uobičajen za %s."
 
+#. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the catalog is unusual for %s.")"
 msgid "Review"
 msgstr "Razmotri"
 
@@ -606,6 +718,13 @@ msgstr[0] ""
 msgstr[1] ""
 msgstr[2] ""
 
+#, c-format
+msgid "%d entry"
+msgid_plural "%d entries"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+
 msgid " (unsaved)"
 msgstr " (nespremljeno)"
 
@@ -729,6 +848,9 @@ msgstr "Sve"
 msgid "Form %i"
 msgstr "Oblik %i"
 
+msgid "Singular"
+msgstr ""
+
 msgid "Zero"
 msgstr "Nula"
 
@@ -738,6 +860,9 @@ msgstr "Jedan"
 msgid "Two"
 msgstr "Dva"
 
+msgid "Plural"
+msgstr ""
+
 msgid "Other"
 msgstr "Drugo"
 
@@ -766,6 +891,12 @@ msgstr ""
 msgid "Show Sidebar"
 msgstr ""
 
+msgid "Hide Status Bar"
+msgstr ""
+
+msgid "Show Status Bar"
+msgstr ""
+
 msgid "Source text"
 msgstr "Izvorni tekst"
 
@@ -775,6 +906,10 @@ msgstr "Prijevod"
 msgid "ID"
 msgstr "ID"
 
+#, c-format
+msgid "Source text — %s"
+msgstr ""
+
 msgid "unknown language"
 msgstr "Nepoznati jezik"
 
@@ -785,57 +920,73 @@ msgstr "Prijevod %s"
 msgid "Error:"
 msgstr "Greška"
 
-msgid "Project info"
-msgstr "Podaci o projektu"
+msgid "Source file"
+msgstr "Izvorna datoteka"
 
-msgid "Project name and version:"
-msgstr "Ime i inačica projekta"
+msgid "Source file occurrence:"
+msgstr "Podudaranje s izvornom datotekom"
 
-msgid "Language:"
-msgstr "Jezik:"
+msgid "Open in Editor"
+msgstr ""
 
-msgid "Team:"
-msgstr "Tim:"
+msgid "Open in editor"
+msgstr ""
 
-msgid "Team's email address:"
-msgstr "Adresa e-pošte tima:"
+msgid "No references for the selected item."
+msgstr ""
 
-msgid "Charset:"
-msgstr "Kodna stranica:"
+#, c-format
+msgid "Error opening file %s!"
+msgstr "Greška pri otvaranju datoteke %s!"
 
-msgid "Source"
-msgstr "Izvor"
+msgid "Find"
+msgstr "Pronađi"
 
-msgid "Notes"
-msgstr "Napomene"
+msgid "Replace"
+msgstr ""
 
-msgid "Automatic translation"
-msgstr "Automatsko prevođenje"
+#. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.)
+msgid "Options"
+msgstr ""
 
-msgid "Fuzzy translation"
-msgstr "Nejasan prijevod"
+msgid "Ignore case"
+msgstr ""
 
-msgid "Notes for translators:"
-msgstr "Napomene prevoditeljima"
+msgid "Wrap around"
+msgstr ""
 
-msgid "Comment:"
-msgstr "Komentar"
+msgid "Whole words only"
+msgstr "Samo cijele riječi"
 
-msgid "Source file"
-msgstr "Izvorna datoteka"
+msgid "Find in source texts"
+msgstr ""
 
-msgid "Source file occurrence:"
-msgstr "Podudaranje s izvornom datotekom"
+msgid "Find in translations"
+msgstr "Pronađi u prijevodima"
 
-msgid "Open in Editor"
+msgid "Find in comments"
+msgstr "Pronađi u komentarima"
+
+msgid "Close"
+msgstr "&Zatvori"
+
+msgid "Replace All"
 msgstr ""
 
-msgid "Open in editor"
+msgid "Replace all"
 msgstr ""
 
-#, c-format
-msgid "Error opening file %s!"
-msgstr "Greška pri otvaranju datoteke %s!"
+msgid "< &Previous"
+msgstr "< &Prethodno"
+
+msgid "&Next >"
+msgstr "&Sljedeće"
+
+msgid "String to find"
+msgstr ""
+
+msgid "Replacement string"
+msgstr ""
 
 #, c-format
 msgid "Cannot execute program: %s"
@@ -1038,9 +1189,19 @@ msgstr "Novo"
 msgid "Edit"
 msgstr "Uredi"
 
+msgid "Delete extractor"
+msgstr ""
+
+#, c-format
+msgid "Are you sure you want to delete the “%s” extractor?"
+msgstr ""
+
 msgid "Extractors"
 msgstr "Izdvajači"
 
+msgid "Accounts"
+msgstr ""
+
 msgid "Automatically check for updates"
 msgstr "Automatska provjera ažuriranja"
 
@@ -1081,8 +1242,35 @@ msgstr ""
 msgid "Advanced"
 msgstr ""
 
-msgid "Additional keywords"
-msgstr "Dodatne ključne riječi"
+msgid ""
+"<big>Drag and Drop Folders Here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+
+msgid ""
+"<big>Drag and drop folders here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+
+msgid "Add Folders..."
+msgstr ""
+
+msgid "Add folders..."
+msgstr ""
+
+msgid "Add Files..."
+msgstr ""
+
+msgid "Add files..."
+msgstr ""
+
+msgid "Add Wildcard..."
+msgstr ""
+
+msgid "Add wildcard..."
+msgstr ""
 
 msgid "Paths"
 msgstr "Putanje"
@@ -1090,6 +1278,9 @@ msgstr "Putanje"
 msgid "Excluded paths"
 msgstr "Isključene putanje"
 
+msgid "Additional keywords"
+msgstr "Dodatne ključne riječi"
+
 msgid "Name of the project the translation is for"
 msgstr "Ime projekta za koji je prijevod"
 
@@ -1102,6 +1293,9 @@ msgstr "UTF-8 (preporučeno)"
 msgid "Please save the file first. This section cannot be edited until then."
 msgstr "Prvo spremite datoteku. Ovaj dio se ne može uređivati prije spremanja."
 
+msgid "Comment:"
+msgstr "Komentar"
+
 msgid "OK"
 msgstr "U redu"
 
@@ -1111,42 +1305,6 @@ msgstr "O&čisti"
 msgid "Clear the comment"
 msgstr "Očisti napomenu"
 
-msgid "Find..."
-msgstr "Pronađi..."
-
-msgid "String to find:"
-msgstr "Pronađi string"
-
-msgid "Case sensitive"
-msgstr "osjetljivo na velika i mala slova"
-
-msgid "Start from the first item"
-msgstr "Počni od prve stavke"
-
-msgid "Whole words only"
-msgstr "Samo cijele riječi"
-
-msgid "Find in original strings"
-msgstr "Pronađi u izvornim stringovima"
-
-msgid "Find in translations"
-msgstr "Pronađi u prijevodima"
-
-msgid "Find in comments"
-msgstr "Pronađi u komentarima"
-
-msgid "Find in automatic comments"
-msgstr "Pronađi u automatskim komentarima"
-
-msgid "Close"
-msgstr "&Zatvori"
-
-msgid "< &Previous"
-msgstr "< &Prethodno"
-
-msgid "&Next >"
-msgstr "&Sljedeće"
-
 msgid "Create new translations project"
 msgstr "Izradi novi projekt prevođenja"
 
@@ -1201,6 +1359,12 @@ msgstr "&Otvori..."
 msgid "Open Recent"
 msgstr "Otvori nedavno"
 
+msgid "Open from Crowdin..."
+msgstr ""
+
+msgid "Open From Crowdin..."
+msgstr ""
+
 msgid "&Save"
 msgstr "&Spremi"
 
@@ -1249,14 +1413,17 @@ msgstr "&Prikaži reference"
 msgid "&Find..."
 msgstr "&pronađi..."
 
+msgid "Replace..."
+msgstr ""
+
 msgid "Find next"
 msgstr "Pronađi sljedeće"
 
 msgid "Find previous"
 msgstr "Pronađi prethodno"
 
-msgid "Find"
-msgstr "Pronađi"
+msgid "Find and Replace..."
+msgstr ""
 
 msgid "Find Next"
 msgstr "pronađi sljedeće"
@@ -1297,6 +1464,12 @@ msgstr "&Grupiraj po kontekstu"
 msgid "&Group By Context"
 msgstr "&Grupiraj po kontekstu"
 
+msgid "Entries with errors first"
+msgstr ""
+
+msgid "Entries with Errors First"
+msgstr ""
+
 msgid "&Untranslated entries first"
 msgstr "&Prvo neprevedeni unosi"
 
@@ -1306,6 +1479,9 @@ msgstr "&Prvo neprevedeni unosi"
 msgid "Show sidebar"
 msgstr ""
 
+msgid "Show status bar"
+msgstr ""
+
 msgid "C&atalog"
 msgstr "K&atalog"
 
@@ -1321,6 +1497,9 @@ msgstr "Ažuriraj iz &POT datoteke..."
 msgid "Update from &POT File..."
 msgstr "Ažuriraj iz &POT datoteke..."
 
+msgid "Sync with Crowdin"
+msgstr ""
+
 msgid "Fill missing translations from &TM..."
 msgstr ""
 
@@ -1448,6 +1627,9 @@ msgstr ""
 msgid "Catalog properties"
 msgstr "Svojstva kataloga"
 
+msgid "Project name and version:"
+msgstr "Ime i inačica projekta"
+
 msgid "Plural Forms:"
 msgstr "Oblici množine"
 
@@ -1460,17 +1642,29 @@ msgstr "Koristi prilagođene izraze"
 msgid "Learn about plural forms"
 msgstr "Nauči više o oblicima množine"
 
+msgid "Charset:"
+msgstr "Kodna stranica:"
+
+msgid "Team:"
+msgstr "Tim:"
+
+msgid "Team's email address:"
+msgstr "Adresa e-pošte tima:"
+
 msgid "Translation properties"
 msgstr "Svojstva prijevoda"
 
+msgid "Sources paths"
+msgstr "Putanje do izvora"
+
 msgid "Extract text from source files in the following directories:"
 msgstr "Izdvoji tekst iz izvornih datoteka u sljedećim mapama:"
 
 msgid "Base path:"
 msgstr "Osnovna putanja"
 
-msgid "Sources paths"
-msgstr "Putanje do izvora"
+msgid "Sources keywords"
+msgstr "Ključne riječi izvora"
 
 msgid ""
 "Use these keywords (function names) to recognize translatable strings\n"
@@ -1483,9 +1677,6 @@ msgstr ""
 msgid "Learn about gettext keywords"
 msgstr "nauči više o gettext ključnim riječima"
 
-msgid "Sources keywords"
-msgstr "Ključne riječi izvora"
-
 msgid "Update summary"
 msgstr "Ažuriranje sažetka"
 
@@ -1533,7 +1724,7 @@ msgstr "Ažuriraj katalog, uskladi ga s izvorima"
 msgid "Toggled if selected string has fuzzy translation"
 msgstr "promijenjeno ako odabrani string ima nejasan prijevod"
 
-msgid "Show or hide the sidebar."
+msgid "Show or hide the sidebar"
 msgstr ""
 
 #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer.
@@ -1545,6 +1736,9 @@ msgid ""
 "translation corresponds to."
 msgstr ""
 
+msgid "Notes for translators:"
+msgstr "Napomene prevoditeljima"
+
 msgid "Add comment"
 msgstr ""
 
@@ -1624,15 +1818,22 @@ msgstr "Uredi prijevod"
 msgid "Open an existing PO file and edit the translation."
 msgstr "otvori postojeću PO datoteku i uredi prijevod"
 
-msgid "Create new translation"
-msgstr "Izradi novi prijevod"
-
 msgid ""
 "Take an existing PO file or POT template and create a new translation from "
 "it."
 msgstr ""
 "otvori postojeću PO datoteku ili POT predložak i od njih izradi novi prijevod"
 
+msgid "Collaborate on a translation with Crowdin"
+msgstr ""
+
+msgid ""
+"Download a file from Crowdin project, translate and sync your changes back."
+msgstr ""
+
+msgid "What is Crowdin?"
+msgstr ""
+
 msgid "There are no translations. That’s unusual."
 msgstr "Nema prijevoda, to je neobično"
 
@@ -1672,3 +1873,9 @@ msgstr "Izdvoji iz izvora"
 
 msgid "Configure source code extraction in Properties."
 msgstr "Konfiguriraj izdvajanje iz izvornog koda u svojstvima"
+
+msgid "Sync"
+msgstr ""
+
+msgid "Synchronize the translation with Crowdin"
+msgstr ""
diff --git a/locales/hu.mo b/locales/hu.mo
index d613d84..c65e841 100644
Binary files a/locales/hu.mo and b/locales/hu.mo differ
diff --git a/locales/hu.po b/locales/hu.po
index e390e31..f491e22 100644
--- a/locales/hu.po
+++ b/locales/hu.po
@@ -2,8 +2,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: poedit\n"
 "Report-Msgid-Bugs-To: help at poedit.net\n"
-"POT-Creation-Date: 2015-01-10 16:00+0100\n"
-"PO-Revision-Date: 2015-03-10 12:33-0400\n"
+"POT-Creation-Date: 2015-05-27 11:31+0200\n"
+"PO-Revision-Date: 2015-05-27 05:17-0400\n"
 "Last-Translator: vslavik <vaclav at slavik.io>\n"
 "Language-Team: Hungarian\n"
 "Language: hu_HU\n"
@@ -91,6 +91,15 @@ msgstr ""
 msgid "Error saving catalog"
 msgstr "Hiba a katalógus mentésekor"
 
+msgid "PO Translation Files"
+msgstr "PO fordítási fájlok"
+
+msgid "POT Translation Templates"
+msgstr "POT fordítási sablonok"
+
+msgid "All Translation Files"
+msgstr "Minden fordítási fájl"
+
 msgid "Merging differences..."
 msgstr "Eltérések összefésülése…"
 
@@ -110,6 +119,88 @@ msgstr "Nyelv választás"
 msgid "You must restart Poedit for this change to take effect."
 msgstr "Újra kell indítania a Poeditet a módosítás életbe léptetéséhez."
 
+msgid "Downloading translations is disabled in this project."
+msgstr "A fordítások letöltése ebben a projektben le van tiltva."
+
+msgid "Not authorized, please sign in again."
+msgstr "Nem engedélyezett, kérjük jelentkezzen be újra."
+
+msgid "Sign in to Crowdin"
+msgstr "Bejelentkezés a Crowdin-ra"
+
+msgid ""
+"Crowdin is an online localization management platform and collaborative "
+"translation tool. Poedit can seamlessly sync PO files managed at Crowdin."
+msgstr ""
+"A Crowdin egy online honosításkezelő platform és együttműködésen alapuló "
+"fordítási eszköz. A Poedit gond nélkül képes szinkronizálni a Crowdin-on "
+"kezelt PO fájlokat."
+
+msgid "Sign In"
+msgstr "Bejelentkezés"
+
+msgid "Sign in"
+msgstr "Bejelentkezés"
+
+msgid "Sign Out"
+msgstr "Kijelentkezés"
+
+msgid "Sign out"
+msgstr "Kijelentkezés"
+
+msgid "Waiting for authentication…"
+msgstr "Várakozás a hitelesítésre…"
+
+msgid "Updating user information…"
+msgstr "Felhasználói adatok frissítése…"
+
+msgid "Signed in as:"
+msgstr "Bejelentkezve mint:"
+
+msgid "Learn More About Crowdin"
+msgstr "Tudjon meg többet a Crowdin-ről"
+
+msgid "Learn more about Crowdin"
+msgstr "Tudjon meg többet a Crowdin-ről"
+
+msgid "Open Crowdin translation"
+msgstr "Crowdin fordítás megnyitása"
+
+msgid "Project:"
+msgstr "Projekt:"
+
+msgid "Language:"
+msgstr "Nyelv:"
+
+msgid "File:"
+msgstr "Fájl:"
+
+msgid "No translation projects listed in your Crowdin account."
+msgstr "Nem szerepel fordítási projekt az Ön Crowdin fiókjában."
+
+msgid "This project has no files that can be translated in Poedit."
+msgstr ""
+"Ebben a fordítási projektben nincs olyan fájl, amit a Poedit-tel fordítani "
+"lehetne."
+
+msgid "This file can only be edited in Crowdin’s web interface."
+msgstr "Ez a fájl csak a Crowdin webes felületén szerkeszthető."
+
+msgid "Downloading latest translations…"
+msgstr "A legújabb fordítások letöltése…"
+
+msgid "Syncing with Crowdin"
+msgstr "Szinkronizálás a Crowdin-nel"
+
+msgid "Syncing with Crowdin failed."
+msgstr "Nem sikerült szinkronizálni a Crowdin-nel."
+
+msgid "Crowdin error"
+msgstr "Crowdin hiba"
+
+msgid "Uploading translations…"
+msgstr "Fordítások feltöltése…"
+
 msgid "&Copy"
 msgstr "&Másolás"
 
@@ -156,6 +247,12 @@ msgstr ""
 msgid "don't delete temporary files (for debugging)"
 msgstr "ne törölje az ideiglenes fájlokat (hibakereséshez)"
 
+msgid "handle a poedit:// URI"
+msgstr "kezel egy poedit:// URI"
+
+msgid "Failed to communicate with Poedit process."
+msgstr "Nem sikerült kommunikálni a Poedit folyamattal."
+
 #, c-format
 msgid "Unhandled exception occurred: %s"
 msgstr "Nem kezelt kivétel történt: %s"
@@ -166,12 +263,6 @@ msgstr "Nem kezelt kivétel történt"
 msgid "Open catalog"
 msgstr "Katalógus megnyitása"
 
-msgid "All Files"
-msgstr "Minden fájl"
-
-msgid "PO Translation Files"
-msgstr "PO fordítási fájlok"
-
 #, c-format
 msgid "File '%s' doesn't exist."
 msgstr "Nem található a(z) „%s” fájl."
@@ -400,6 +491,19 @@ msgstr "Többes szám:"
 msgid "Translation:"
 msgstr "Fordítás:"
 
+msgid ""
+"POT files are only templates and don’t contain any translations themselves.\n"
+"To make a translation, create a new PO file based on the template."
+msgstr ""
+"A POT fájl csak egy sablon és nem  tartalmaz fordításokat.\n"
+"Fordítás készítéséhez hozzon létre egy új PO fájlt a sablon alapján."
+
+msgid "Create New Translation"
+msgstr "Új fordítás létrehozása"
+
+msgid "Create new translation"
+msgstr "Új fordítási projekt létrehozása"
+
 #. TRANSLATORS: %s is language name in its basic form (as you
 #. would see e.g. in a list of supported languages). You may need
 #. to rephrase it, e.g. to an equivalent of "for language %s".
@@ -448,9 +552,6 @@ msgstr "HTML fájlok"
 msgid "Open catalog template"
 msgstr "Katalógus sablon megnyitása"
 
-msgid "POT Translation Templates"
-msgstr "POT fordítási sablonok"
-
 msgid "Updating catalog"
 msgstr "Katalógus frissítése"
 
@@ -530,18 +631,26 @@ msgstr[1] "A fordítás használatra kész, de %d bejegyzés még nincs lefordí
 msgid "The translation is ready for use."
 msgstr "A fordítás használatra kész."
 
-msgid "No references to this string found."
-msgstr "Nem találhatóak hivatkozások erre a szövegre."
-
-msgid "Please choose the reference you want to show:"
-msgstr "Válassza ki a megtekinteni kívánt hivatkozást:"
-
-msgid "References"
-msgstr "Hivatkozások"
-
 msgid "Context:"
 msgstr "Kontextus:"
 
+#, c-format
+msgid "Poedit automatically fixed invalid content in the file “%s”."
+msgstr ""
+"A Poedit a(z) “%s” fájlban automatikusan kijavította a nem megfelelő "
+"tartalmat."
+
+msgid ""
+"The file contained duplicate items, which is not allowed in PO files and "
+"would prevent the file from being used. Poedit fixed the issue, but you "
+"should review translations of any items marked as fuzzy and correct them if "
+"necessary."
+msgstr ""
+"A fájl PO fájlokban nem engedélyezett és a fájl használatát megakadályozó "
+"ismétlődő elemeket tartalmaz. A Poedit kijavította ezt a problémát, de "
+"minden bizonytalannak jelölt fordítási bejegyzés felülvizsgálata és estleges "
+"javítása szükséges."
+
 msgid "Language of the translation isn't set."
 msgstr "A fordítás nyelve nincs beállítva."
 
@@ -551,6 +660,23 @@ msgstr "Nyelv kiválasztása"
 msgid "Set language"
 msgstr "Válassza ki a nyelvet"
 
+#. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)."
+msgid ""
+"Suggestions are not available if the translation language is not set "
+"correctly. Other features, such as plural forms, may be affected as well."
+msgstr ""
+"A javaslatok nem érthetők el, ha a fordítás nyelve nincs pontosan beállítva. "
+"Ez más funkciókra, mint pl.: a többes számú alakokra is hatással lehet."
+
+msgid "Language of the translation is the same as source language."
+msgstr "A fordítás nyelve megegyezik a forrásnyelvvel."
+
+msgid "Fix Language"
+msgstr "Beállítás kijavítása"
+
+msgid "Fix language"
+msgstr "Beállítás kijavítása"
+
 msgid ""
 "This catalog has entries with plural forms, but doesn't have Plural-Forms "
 "header configured."
@@ -587,6 +713,7 @@ msgstr ""
 "A katalógus által használt többes szám kifejezés a %s nyelvhez nem "
 "használatos."
 
+#. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the catalog is unusual for %s.")"
 msgid "Review"
 msgstr "Felülvizsgálat"
 
@@ -608,6 +735,12 @@ msgid_plural "%d errors"
 msgstr[0] "%d hiba"
 msgstr[1] "%d hiba"
 
+#, c-format
+msgid "%d entry"
+msgid_plural "%d entries"
+msgstr[0] "%d bejegyzés"
+msgstr[1] "%d bejegyzés"
+
 msgid " (unsaved)"
 msgstr " (nincs mentve)"
 
@@ -699,7 +832,7 @@ msgid "Translating"
 msgstr "Fordítás"
 
 msgid "Filling missing translations from TM..."
-msgstr "Hiányzó fordítás lefordítása TM-ből..."
+msgstr "Hiányzó fordítás lefordítása FM-ből..."
 
 #, c-format
 msgid "Translated %u string"
@@ -735,6 +868,9 @@ msgstr "Minden"
 msgid "Form %i"
 msgstr "%i. alak"
 
+msgid "Singular"
+msgstr "Egyes szám"
+
 msgid "Zero"
 msgstr "Nulla"
 
@@ -744,6 +880,9 @@ msgstr "Egy"
 msgid "Two"
 msgstr "Kettő"
 
+msgid "Plural"
+msgstr "Többes szám"
+
 msgid "Other"
 msgstr "Egyéb"
 
@@ -772,6 +911,12 @@ msgstr "Oldalsáv elrejtése"
 msgid "Show Sidebar"
 msgstr "Oldalsáv megjelenítése"
 
+msgid "Hide Status Bar"
+msgstr "Állapotsor elrejtése"
+
+msgid "Show Status Bar"
+msgstr "Állapotsor megjelenítése"
+
 msgid "Source text"
 msgstr "Forrásszöveg"
 
@@ -781,6 +926,10 @@ msgstr "Fordítás"
 msgid "ID"
 msgstr "Azonosító"
 
+#, c-format
+msgid "Source text — %s"
+msgstr "Forrásszöveg — %s"
+
 msgid "unknown language"
 msgstr "ismeretlen nyelv"
 
@@ -791,57 +940,73 @@ msgstr "Fordítás — %s"
 msgid "Error:"
 msgstr "Hiba:"
 
-msgid "Project info"
-msgstr "Projekt információk"
+msgid "Source file"
+msgstr "Forrásfájl"
 
-msgid "Project name and version:"
-msgstr "Projekt neve és verziószáma:"
+msgid "Source file occurrence:"
+msgstr "Forrásfájli előfordulás:"
 
-msgid "Language:"
-msgstr "Nyelv:"
+msgid "Open in Editor"
+msgstr "Megnyitás a szerkesztőben"
 
-msgid "Team:"
-msgstr "Csapat:"
+msgid "Open in editor"
+msgstr "Megnyitás a szerkesztőben"
 
-msgid "Team's email address:"
-msgstr "Csapat e-mail címe:"
+msgid "No references for the selected item."
+msgstr "A kiválasztott elemhez nincs referencia."
 
-msgid "Charset:"
-msgstr "Karakterkódolás:"
+#, c-format
+msgid "Error opening file %s!"
+msgstr "Hiba a(z) %s fájl megnyitásakor!"
 
-msgid "Source"
-msgstr "Forrás"
+msgid "Find"
+msgstr "Keresés…"
 
-msgid "Notes"
-msgstr "Jegyzetek"
+msgid "Replace"
+msgstr "Csere"
 
-msgid "Automatic translation"
-msgstr "Automatikus fordítás"
+#. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.)
+msgid "Options"
+msgstr "Beállítások"
 
-msgid "Fuzzy translation"
-msgstr "Bizonytalan fordítás"
+msgid "Ignore case"
+msgstr "Kis- és nagybetűk egyezőek"
 
-msgid "Notes for translators:"
-msgstr "Megjegyzések a fordítóknak:"
+msgid "Wrap around"
+msgstr "Körkörös keresés"
 
-msgid "Comment:"
-msgstr "Megjegyzés:"
+msgid "Whole words only"
+msgstr "Csak teljes szóra"
 
-msgid "Source file"
-msgstr "Forrásfájl"
+msgid "Find in source texts"
+msgstr "Keresés a forrásszövegben"
 
-msgid "Source file occurrence:"
-msgstr "Forrásfájli előfordulás:"
+msgid "Find in translations"
+msgstr "Keresés a fordításban"
 
-msgid "Open in Editor"
-msgstr "Megnyitás a szerkesztőben"
+msgid "Find in comments"
+msgstr "Keresés a megjegyzésekben"
 
-msgid "Open in editor"
-msgstr "Megnyitás a szerkesztőben"
+msgid "Close"
+msgstr "Bezárás"
 
-#, c-format
-msgid "Error opening file %s!"
-msgstr "Hiba a(z) %s fájl megnyitásakor!"
+msgid "Replace All"
+msgstr "Összes cseréje"
+
+msgid "Replace all"
+msgstr "Összes cseréje"
+
+msgid "< &Previous"
+msgstr "< Előző"
+
+msgid "&Next >"
+msgstr "Következő >"
+
+msgid "String to find"
+msgstr "Keresendő karakterlánc"
+
+msgid "Replacement string"
+msgstr "Behelyettesítendő karakterlánc"
 
 #, c-format
 msgid "Cannot execute program: %s"
@@ -1046,9 +1211,19 @@ msgstr "Új"
 msgid "Edit"
 msgstr "Szerkesztés"
 
+msgid "Delete extractor"
+msgstr "Kivonatoló törlése"
+
+#, c-format
+msgid "Are you sure you want to delete the “%s” extractor?"
+msgstr "Biztosan törölni szeretné a \"%s\" kivonatolót?"
+
 msgid "Extractors"
 msgstr "Kivonatolók"
 
+msgid "Accounts"
+msgstr "Fiókok"
+
 msgid "Automatically check for updates"
 msgstr "Frissítések automatikus keresése"
 
@@ -1091,8 +1266,41 @@ msgstr "A meglévő fájlok formázásának megőrzése"
 msgid "Advanced"
 msgstr "Haladó"
 
-msgid "Additional keywords"
-msgstr "Kiegészítő kulcsszavak"
+msgid ""
+"<big>Drag and Drop Folders Here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+"<big>Húzza ide a mappákat</big>\n"
+"\n"
+"vagy használja a + gombot"
+
+msgid ""
+"<big>Drag and drop folders here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+"<big>Húzza ide a mappákat</big>\n"
+"\n"
+"vagy használja a + gombot"
+
+msgid "Add Folders..."
+msgstr "Mappák hozzáadása..."
+
+msgid "Add folders..."
+msgstr "Mappák hozzáadása..."
+
+msgid "Add Files..."
+msgstr "Fájlok hozzáadása..."
+
+msgid "Add files..."
+msgstr "Fájlok hozzáadása..."
+
+msgid "Add Wildcard..."
+msgstr "Joker karakter hozzáadása..."
+
+msgid "Add wildcard..."
+msgstr "Helyettesítő karakter hozzáadása..."
 
 msgid "Paths"
 msgstr "Útvonalak"
@@ -1100,6 +1308,9 @@ msgstr "Útvonalak"
 msgid "Excluded paths"
 msgstr "Kizárt elérési utak"
 
+msgid "Additional keywords"
+msgstr "Kiegészítő kulcsszavak"
+
 msgid "Name of the project the translation is for"
 msgstr "A projekt megnevezése, és aminek a fordítása:"
 
@@ -1113,6 +1324,9 @@ msgid "Please save the file first. This section cannot be edited until then."
 msgstr ""
 "Kérjük először mentse el fájlt. Ez a szakasz mindaddig nem lesz szerkeszthető"
 
+msgid "Comment:"
+msgstr "Megjegyzés:"
+
 msgid "OK"
 msgstr "OK"
 
@@ -1122,42 +1336,6 @@ msgstr "Tör&lés"
 msgid "Clear the comment"
 msgstr "Megjegyzés törlése"
 
-msgid "Find..."
-msgstr "Keresés…"
-
-msgid "String to find:"
-msgstr "Keresett szöveg:"
-
-msgid "Case sensitive"
-msgstr "Kis- és nagybetűk megkülönböztetése"
-
-msgid "Start from the first item"
-msgstr "Az első elemtől kezdve"
-
-msgid "Whole words only"
-msgstr "Csak teljes szóra"
-
-msgid "Find in original strings"
-msgstr "Keresés az eredeti szövegekben"
-
-msgid "Find in translations"
-msgstr "Keresés a fordításban"
-
-msgid "Find in comments"
-msgstr "Keresés a megjegyzésekben"
-
-msgid "Find in automatic comments"
-msgstr "Keresés az automatikus megjegyzésekben"
-
-msgid "Close"
-msgstr "Bezárás"
-
-msgid "< &Previous"
-msgstr "< Előző"
-
-msgid "&Next >"
-msgstr "Következő >"
-
 msgid "Create new translations project"
 msgstr "Új fordítási projekt létrehozása"
 
@@ -1212,6 +1390,12 @@ msgstr "&Megnyitás…"
 msgid "Open Recent"
 msgstr "Legutóbbi megnyitása"
 
+msgid "Open from Crowdin..."
+msgstr "Megnyitás a Crowdin-ról..."
+
+msgid "Open From Crowdin..."
+msgstr "Megnyitás a Crowdin-ról..."
+
 msgid "&Save"
 msgstr "Menté&s"
 
@@ -1260,14 +1444,17 @@ msgstr "&Hivatkozások megjelenítése"
 msgid "&Find..."
 msgstr "&Keresés…"
 
+msgid "Replace..."
+msgstr "Csere..."
+
 msgid "Find next"
 msgstr "Következő keresése"
 
 msgid "Find previous"
 msgstr "Előző keresése"
 
-msgid "Find"
-msgstr "Keresés…"
+msgid "Find and Replace..."
+msgstr "Keresés és csere..."
 
 msgid "Find Next"
 msgstr "Következő keresése"
@@ -1308,6 +1495,12 @@ msgstr "Szövegkörnyezeti &csoportosítás"
 msgid "&Group By Context"
 msgstr "Szövegkörnyezeti &csoportosítás"
 
+msgid "Entries with errors first"
+msgstr "Hibás bejegyzések elöl"
+
+msgid "Entries with Errors First"
+msgstr "Hibás bejegyzések elöl"
+
 msgid "&Untranslated entries first"
 msgstr "&Lefordítatlan bejegyzések előre"
 
@@ -1317,6 +1510,9 @@ msgstr "&Lefordítatlan bejegyzések előre"
 msgid "Show sidebar"
 msgstr "Oldalsáv megjelenítése"
 
+msgid "Show status bar"
+msgstr "Állapotsor megjelenítése"
+
 msgid "C&atalog"
 msgstr "&Katalógus"
 
@@ -1332,6 +1528,9 @@ msgstr "Frissítés &POT fájlból…"
 msgid "Update from &POT File..."
 msgstr "Frissítés &POT fájlból…"
 
+msgid "Sync with Crowdin"
+msgstr "Szinkronizáció a Crowdin-nel"
+
 msgid "Fill missing translations from &TM..."
 msgstr "Hiányzó fordítás kitöltése &FM-ből..."
 
@@ -1459,6 +1658,9 @@ msgstr ""
 msgid "Catalog properties"
 msgstr "Katalógus tulajdonságok"
 
+msgid "Project name and version:"
+msgstr "Projekt neve és verziószáma:"
+
 msgid "Plural Forms:"
 msgstr "Többes számú alakok:"
 
@@ -1471,17 +1673,29 @@ msgstr "Egyéni kifejezés használata"
 msgid "Learn about plural forms"
 msgstr "Tudjon meg többet a többes számú alakokról"
 
+msgid "Charset:"
+msgstr "Karakterkódolás:"
+
+msgid "Team:"
+msgstr "Csapat:"
+
+msgid "Team's email address:"
+msgstr "Csapat e-mail címe:"
+
 msgid "Translation properties"
 msgstr "Fordítás tulajdonságai"
 
+msgid "Sources paths"
+msgstr "Források útvonalai"
+
 msgid "Extract text from source files in the following directories:"
 msgstr "Szövegek kinyerése a következő könyvtárakban lévő forrásfájlokból:"
 
 msgid "Base path:"
 msgstr "Alap útvonal:"
 
-msgid "Sources paths"
-msgstr "Források útvonalai"
+msgid "Sources keywords"
+msgstr "Források kulcsszavai"
 
 msgid ""
 "Use these keywords (function names) to recognize translatable strings\n"
@@ -1493,9 +1707,6 @@ msgstr ""
 msgid "Learn about gettext keywords"
 msgstr "Tudjon meg többet a gettext kulcsszavakról"
 
-msgid "Sources keywords"
-msgstr "Források kulcsszavai"
-
 msgid "Update summary"
 msgstr "Frissítési összefoglaló"
 
@@ -1543,8 +1754,8 @@ msgstr "Katalógus frissítése - szinkronizálás a forrásokhoz"
 msgid "Toggled if selected string has fuzzy translation"
 msgstr "Bekapcsolva, ha a kijelölt szöveg fordítása még bizonytalan"
 
-msgid "Show or hide the sidebar."
-msgstr "Oldalsáv megjelenítése/elrejtése."
+msgid "Show or hide the sidebar"
+msgstr "Oldalsáv megjelenítése/elrejtése"
 
 #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer.
 msgid "Previous source text:"
@@ -1557,6 +1768,9 @@ msgstr ""
 "A régi forrásszöveg (a frissítést megelőző állapotú), ami bizonytalan "
 "fordításnak tekinthető."
 
+msgid "Notes for translators:"
+msgstr "Megjegyzések a fordítóknak:"
+
 msgid "Add comment"
 msgstr "Hozzászólás"
 
@@ -1636,9 +1850,6 @@ msgstr "Fordítás szerkesztése"
 msgid "Open an existing PO file and edit the translation."
 msgstr "Egy létező PO fájl megnyitása, és a fordítás szerkesztése"
 
-msgid "Create new translation"
-msgstr "Új fordítási projekt létrehozása"
-
 msgid ""
 "Take an existing PO file or POT template and create a new translation from "
 "it."
@@ -1646,6 +1857,18 @@ msgstr ""
 "Egy már meglévő PO fájl vagy POT sablon kiválasztása és új fordítás "
 "készítése belőle."
 
+msgid "Collaborate on a translation with Crowdin"
+msgstr "Együttműködés a Crowdin-nel egy fordításban"
+
+msgid ""
+"Download a file from Crowdin project, translate and sync your changes back."
+msgstr ""
+"Töltsön le egy fájlt egy Crowdin projektből, fordítsa le, majd "
+"szinkronizálja Crowdin-en lévőkkel."
+
+msgid "What is Crowdin?"
+msgstr "Mi az a Crowdin?"
+
 msgid "There are no translations. That’s unusual."
 msgstr "Nem léteznek fordítások. Ez szokatlan."
 
@@ -1685,3 +1908,9 @@ msgstr "Kinyerés forrás fájlból"
 
 msgid "Configure source code extraction in Properties."
 msgstr "Forráskód extrakció konfigurálása a Tulajdonságok panelen"
+
+msgid "Sync"
+msgstr "Szinkronizáció"
+
+msgid "Synchronize the translation with Crowdin"
+msgstr "Fordítások szinkronizálása a Crowdin-nel"
diff --git a/locales/id.mo b/locales/id.mo
index 0887b66..33a3376 100644
Binary files a/locales/id.mo and b/locales/id.mo differ
diff --git a/locales/id.po b/locales/id.po
index 27bbb8b..f7f0efa 100644
--- a/locales/id.po
+++ b/locales/id.po
@@ -2,8 +2,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: poedit\n"
 "Report-Msgid-Bugs-To: help at poedit.net\n"
-"POT-Creation-Date: 2015-01-10 16:00+0100\n"
-"PO-Revision-Date: 2015-03-10 12:33-0400\n"
+"POT-Creation-Date: 2015-05-27 11:31+0200\n"
+"PO-Revision-Date: 2015-05-27 05:17-0400\n"
 "Last-Translator: vslavik <vaclav at slavik.io>\n"
 "Language-Team: Indonesian\n"
 "Language: id_ID\n"
@@ -56,7 +56,7 @@ msgstr ""
 
 #, c-format
 msgid "Couldn't load file %s, it is probably corrupted."
-msgstr "Tak bisa memuat berkas %s. mungkin cacat."
+msgstr "Tak bisa memuat berkas %s, mungkin cacat."
 
 #, c-format
 msgid ""
@@ -91,6 +91,15 @@ msgstr ""
 msgid "Error saving catalog"
 msgstr "Gagal menyimpan katalog"
 
+msgid "PO Translation Files"
+msgstr "Berkas Terjemahan PO"
+
+msgid "POT Translation Templates"
+msgstr "Templat Terjemahan POT"
+
+msgid "All Translation Files"
+msgstr "Semua Berkas Terjemahan"
+
 msgid "Merging differences..."
 msgstr "Menyatukan perbedaan..."
 
@@ -110,6 +119,87 @@ msgstr "Pilihan bahasa"
 msgid "You must restart Poedit for this change to take effect."
 msgstr "Jalankan ulang Poedit agar efek perubahan terlihat."
 
+msgid "Downloading translations is disabled in this project."
+msgstr "Mengunduh terjemahan dinonaktifkan dalam proyek ini."
+
+msgid "Not authorized, please sign in again."
+msgstr "Tidak berwenang, silakan masuk lagi."
+
+msgid "Sign in to Crowdin"
+msgstr "Masuk ke Crowdin"
+
+msgid ""
+"Crowdin is an online localization management platform and collaborative "
+"translation tool. Poedit can seamlessly sync PO files managed at Crowdin."
+msgstr ""
+"Crowdin adalah sebuah platform manajemen lokalisasi daring dan alat "
+"penerjemahan kolaboratif. Poedit dapat menyelaraskan berkas PO yang dikelola "
+"pada Crowdin secara mulus."
+
+msgid "Sign In"
+msgstr "Masuk"
+
+msgid "Sign in"
+msgstr "Masuk"
+
+msgid "Sign Out"
+msgstr "Keluar"
+
+msgid "Sign out"
+msgstr "Keluar"
+
+msgid "Waiting for authentication…"
+msgstr "Menunggu otentikasi…"
+
+msgid "Updating user information…"
+msgstr "Memutakhirkan informasi pengguna…"
+
+msgid "Signed in as:"
+msgstr "Masuk sebagai:"
+
+msgid "Learn More About Crowdin"
+msgstr "Pelajari Lebih Lanjut Tentang Crowdin"
+
+msgid "Learn more about Crowdin"
+msgstr "Pelajari lebih lanjut tentang Crowdin"
+
+msgid "Open Crowdin translation"
+msgstr "Buka terjemahan Crowdin"
+
+msgid "Project:"
+msgstr "Proyek:"
+
+msgid "Language:"
+msgstr "Bahasa:"
+
+msgid "File:"
+msgstr "Berkas:"
+
+msgid "No translation projects listed in your Crowdin account."
+msgstr "Tidak ada proyek terjemahan yang tercantum dalam akun Crowdin Anda."
+
+msgid "This project has no files that can be translated in Poedit."
+msgstr ""
+"Proyek ini tidak memiliki berkas yang dapat diterjemahkan dalam Poedit."
+
+msgid "This file can only be edited in Crowdin’s web interface."
+msgstr "Berkas ini hanya dapat disunting dalam antar muka web Crowdin."
+
+msgid "Downloading latest translations…"
+msgstr "Unduh terjemahan terbaru…"
+
+msgid "Syncing with Crowdin"
+msgstr "Menyelaraskan dengan Crowdin"
+
+msgid "Syncing with Crowdin failed."
+msgstr "Penyelarasan dengan Crowdin gagal."
+
+msgid "Crowdin error"
+msgstr "Kesalahan Crowdin"
+
+msgid "Uploading translations…"
+msgstr "Mengunggah terjemahan…"
+
 msgid "&Copy"
 msgstr "&Salin"
 
@@ -156,6 +246,12 @@ msgstr ""
 msgid "don't delete temporary files (for debugging)"
 msgstr "jangan hapus berkas sementara (untuk pengawakutuan)"
 
+msgid "handle a poedit:// URI"
+msgstr "menangani URI poedit://"
+
+msgid "Failed to communicate with Poedit process."
+msgstr "Gagal berkomunikasi dengan proses Poedit."
+
 #, c-format
 msgid "Unhandled exception occurred: %s"
 msgstr "Eksepsi tidak tertangani terjadi: %s"
@@ -166,12 +262,6 @@ msgstr "Eksepsi tidak tertangani terjadi."
 msgid "Open catalog"
 msgstr "Buka katalog"
 
-msgid "All Files"
-msgstr "Semua Berkas"
-
-msgid "PO Translation Files"
-msgstr "Berkas Terjemahan PO"
-
 #, c-format
 msgid "File '%s' doesn't exist."
 msgstr "Berkas '%s' tidak ada."
@@ -400,6 +490,20 @@ msgstr "Jamak:"
 msgid "Translation:"
 msgstr "Terjemahan:"
 
+msgid ""
+"POT files are only templates and don’t contain any translations themselves.\n"
+"To make a translation, create a new PO file based on the template."
+msgstr ""
+"Berkas POT hanya templat dan tidak memuat terjemahan apapun.\n"
+"Untuk membuat suatu terjemahan, buatlah sebuah berkas PO baru berbasis "
+"templat itu."
+
+msgid "Create New Translation"
+msgstr "Buat Terjemahan Baru"
+
+msgid "Create new translation"
+msgstr "Buat terjemahan baru"
+
 #. TRANSLATORS: %s is language name in its basic form (as you
 #. would see e.g. in a list of supported languages). You may need
 #. to rephrase it, e.g. to an equivalent of "for language %s".
@@ -447,9 +551,6 @@ msgstr "Berkas HTML"
 msgid "Open catalog template"
 msgstr "Buka templat katalog"
 
-msgid "POT Translation Templates"
-msgstr "Templat Terjemahan POT"
-
 msgid "Updating catalog"
 msgstr "Memperbarui katalog"
 
@@ -527,18 +628,25 @@ msgstr[0] ""
 msgid "The translation is ready for use."
 msgstr "Terjemahan siap digunakan."
 
-msgid "No references to this string found."
-msgstr "Tak ditemukan referensi ke kalimat ini."
-
-msgid "Please choose the reference you want to show:"
-msgstr "Silahkan pilih referensi yg ingin ditampilkan"
-
-msgid "References"
-msgstr "Referensi"
-
 msgid "Context:"
 msgstr "Konteks:"
 
+#, c-format
+msgid "Poedit automatically fixed invalid content in the file “%s”."
+msgstr ""
+"Poedit secara otomatis memperbaiki isi yang tak valid dalam berkas \"%s\"."
+
+msgid ""
+"The file contained duplicate items, which is not allowed in PO files and "
+"would prevent the file from being used. Poedit fixed the issue, but you "
+"should review translations of any items marked as fuzzy and correct them if "
+"necessary."
+msgstr ""
+"Berkas memuat butir-butir duplikat, yang tak diizinkan dalam berkas PO dan "
+"akan mencegah berkas dipakai. Poedit memperbaiki masalah ini, tapi Anda "
+"mesti meninjau sebarang terjemahan yang ditandai sebagai ragu dan "
+"memperbaiki mereka bila perlu."
+
 msgid "Language of the translation isn't set."
 msgstr "Bahasa terjemahan belum dipilih."
 
@@ -548,6 +656,23 @@ msgstr "Atur bahasa"
 msgid "Set language"
 msgstr "Atur bahasa"
 
+#. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)."
+msgid ""
+"Suggestions are not available if the translation language is not set "
+"correctly. Other features, such as plural forms, may be affected as well."
+msgstr ""
+"Saran tidak tersedia jika bahasa terjemahan tidak diatur dengan benar. Fitur "
+"lainnya, seperti bentuk jamak, mungkin akan terpengaruh juga."
+
+msgid "Language of the translation is the same as source language."
+msgstr "Bahasa terjemahan sama dengan bahasa sumber."
+
+msgid "Fix Language"
+msgstr "Perbaiki Bahasa"
+
+msgid "Fix language"
+msgstr "Perbaiki bahasa"
+
 msgid ""
 "This catalog has entries with plural forms, but doesn't have Plural-Forms "
 "header configured."
@@ -582,6 +707,7 @@ msgstr "Perbaiki header"
 msgid "Plural forms expression used by the catalog is unusual for %s."
 msgstr "Ekspresi bentuk jamak yang dipakai oleh katalog tak umum bagi %s."
 
+#. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the catalog is unusual for %s.")"
 msgid "Review"
 msgstr "Tinjau"
 
@@ -602,6 +728,11 @@ msgid "%d error"
 msgid_plural "%d errors"
 msgstr[0] "%d kesalahan"
 
+#, c-format
+msgid "%d entry"
+msgid_plural "%d entries"
+msgstr[0] "%d entri"
+
 msgid " (unsaved)"
 msgstr " (belum disimpan)"
 
@@ -725,6 +856,9 @@ msgstr "Segalanya"
 msgid "Form %i"
 msgstr "Formulir %i"
 
+msgid "Singular"
+msgstr "Tunggal"
+
 msgid "Zero"
 msgstr "Nol"
 
@@ -734,6 +868,9 @@ msgstr "Satu"
 msgid "Two"
 msgstr "Dua"
 
+msgid "Plural"
+msgstr "Jamak"
+
 msgid "Other"
 msgstr "Lainnya"
 
@@ -762,6 +899,12 @@ msgstr "Sembunyikan Bilah Sisi"
 msgid "Show Sidebar"
 msgstr "Tampilkan Bilah Sisi"
 
+msgid "Hide Status Bar"
+msgstr "Sembunyikan Bilah Status"
+
+msgid "Show Status Bar"
+msgstr "Tampilkan Bilah Status"
+
 msgid "Source text"
 msgstr "Teks sumber"
 
@@ -771,6 +914,10 @@ msgstr "Terjemahan"
 msgid "ID"
 msgstr "ID"
 
+#, c-format
+msgid "Source text — %s"
+msgstr "Teks sumber — %s"
+
 msgid "unknown language"
 msgstr "bahasa tak dikenal"
 
@@ -781,57 +928,73 @@ msgstr "Terjemahan — %s"
 msgid "Error:"
 msgstr "Galat:"
 
-msgid "Project info"
-msgstr "Info projek"
+msgid "Source file"
+msgstr "Berkas sumber"
 
-msgid "Project name and version:"
-msgstr "Nama dan versi projek:"
+msgid "Source file occurrence:"
+msgstr "Kemunculan berkas sumber:"
 
-msgid "Language:"
-msgstr "Bahasa:"
+msgid "Open in Editor"
+msgstr "Buka Dalam Penyunting"
 
-msgid "Team:"
-msgstr "Tim:"
+msgid "Open in editor"
+msgstr "Buka dalam penyunting"
 
-msgid "Team's email address:"
-msgstr "Alamat surel Tim:"
+msgid "No references for the selected item."
+msgstr "Tidak ada acuan untuk butir yang dipilih."
 
-msgid "Charset:"
-msgstr "Set karakter:"
+#, c-format
+msgid "Error opening file %s!"
+msgstr "Gagal membuka berkas %s!"
 
-msgid "Source"
-msgstr "Sumber"
+msgid "Find"
+msgstr "Cari"
 
-msgid "Notes"
-msgstr "Catatan"
+msgid "Replace"
+msgstr "Ganti"
 
-msgid "Automatic translation"
-msgstr "Penerjemahan otomatis"
+#. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.)
+msgid "Options"
+msgstr "Opsi"
 
-msgid "Fuzzy translation"
-msgstr "Terjemahan ragu"
+msgid "Ignore case"
+msgstr "Abaikan besar kecil huruf"
 
-msgid "Notes for translators:"
-msgstr "Catatan bagi para penerjemah:"
+msgid "Wrap around"
+msgstr "Ulang dari awal"
 
-msgid "Comment:"
-msgstr "Komentar:"
+msgid "Whole words only"
+msgstr "Hanya kata lengkap"
 
-msgid "Source file"
-msgstr "Berkas sumber"
+msgid "Find in source texts"
+msgstr "Cari dalam teks sumber"
 
-msgid "Source file occurrence:"
-msgstr "Kemunculan berkas sumber:"
+msgid "Find in translations"
+msgstr "Cari dalam terjemahan"
 
-msgid "Open in Editor"
-msgstr "Buka Dalam Penyunting"
+msgid "Find in comments"
+msgstr "Cari dalam komentar"
 
-msgid "Open in editor"
-msgstr "Buka dalam penyunting"
+msgid "Close"
+msgstr "Tutup"
 
-#, c-format
-msgid "Error opening file %s!"
-msgstr "Gagal membuka berkas %s!"
+msgid "Replace All"
+msgstr "Ganti Semua"
+
+msgid "Replace all"
+msgstr "Ganti semua"
+
+msgid "< &Previous"
+msgstr "< Se&belumnya"
+
+msgid "&Next >"
+msgstr "Berikut&nya >"
+
+msgid "String to find"
+msgstr "Kalimat yang dicari"
+
+msgid "Replacement string"
+msgstr "Kalimat pengganti"
 
 #, c-format
 msgid "Cannot execute program: %s"
@@ -1036,9 +1199,19 @@ msgstr "Baru"
 msgid "Edit"
 msgstr "Sunting"
 
+msgid "Delete extractor"
+msgstr "Hapus ekstraktor"
+
+#, c-format
+msgid "Are you sure you want to delete the “%s” extractor?"
+msgstr "Anda yakin Anda ingin menghapus ekstraktor \"%s\"?"
+
 msgid "Extractors"
 msgstr "Pengekstrak"
 
+msgid "Accounts"
+msgstr "Akun"
+
 msgid "Automatically check for updates"
 msgstr "Secara otomatis memeriksa pembaruan"
 
@@ -1069,7 +1242,7 @@ msgid "Unix (recommended)"
 msgstr "Unix (disarankan)"
 
 msgid "Windows"
-msgstr "Jendela"
+msgstr "Windows"
 
 #. TRANSLATORS: Followed by text control for entering number; wraps text at given width
 msgid "Wrap at:"
@@ -1081,8 +1254,41 @@ msgstr "Pertahankan format berkas yang sudah ada"
 msgid "Advanced"
 msgstr "Tingkat lanjut"
 
-msgid "Additional keywords"
-msgstr "Kata kunci tambahan"
+msgid ""
+"<big>Drag and Drop Folders Here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+"<big>Seret dan Jatuhkan Folder Di Sini</big>\n"
+"\n"
+"atau gunakan tombol +"
+
+msgid ""
+"<big>Drag and drop folders here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+"<big>Folder Seret dan jatuhkan folder di sini</big>\n"
+"\n"
+"atau gunakan tombol +"
+
+msgid "Add Folders..."
+msgstr "Tambah Folder..."
+
+msgid "Add folders..."
+msgstr "Tambah folder..."
+
+msgid "Add Files..."
+msgstr "Tambah Berkas..."
+
+msgid "Add files..."
+msgstr "Tambah berkas..."
+
+msgid "Add Wildcard..."
+msgstr "Tambah Wildcard..."
+
+msgid "Add wildcard..."
+msgstr "Tambah wildcard..."
 
 msgid "Paths"
 msgstr "Path"
@@ -1090,6 +1296,9 @@ msgstr "Path"
 msgid "Excluded paths"
 msgstr "Path yang dikecualikan"
 
+msgid "Additional keywords"
+msgstr "Kata kunci tambahan"
+
 msgid "Name of the project the translation is for"
 msgstr "Terjemahan ini untuk projek bernama tersebut"
 
@@ -1102,6 +1311,9 @@ msgstr "UTF-8 (disarankan)"
 msgid "Please save the file first. This section cannot be edited until then."
 msgstr "Harap simpan dulu. Seksi ini tak bisa disunting sebelum itu."
 
+msgid "Comment:"
+msgstr "Komentar:"
+
 msgid "OK"
 msgstr "OK"
 
@@ -1111,42 +1323,6 @@ msgstr "&Bersihkan"
 msgid "Clear the comment"
 msgstr "Hapus komentar"
 
-msgid "Find..."
-msgstr "Cari..."
-
-msgid "String to find:"
-msgstr "Kalimat yang dicari:"
-
-msgid "Case sensitive"
-msgstr "Peka besar kecil huruf"
-
-msgid "Start from the first item"
-msgstr "Mulai dari item pertama"
-
-msgid "Whole words only"
-msgstr "Hanya kata lengkap"
-
-msgid "Find in original strings"
-msgstr "Cari di kalimat asli"
-
-msgid "Find in translations"
-msgstr "Cari dalam terjemahan"
-
-msgid "Find in comments"
-msgstr "Cari dalam komentar"
-
-msgid "Find in automatic comments"
-msgstr "Cari di komentar otomatis"
-
-msgid "Close"
-msgstr "Tutup"
-
-msgid "< &Previous"
-msgstr "< Se&belumnya"
-
-msgid "&Next >"
-msgstr "Berikut&nya >"
-
 msgid "Create new translations project"
 msgstr "Buat projek terjemahan baru"
 
@@ -1201,6 +1377,12 @@ msgstr "&Buka..."
 msgid "Open Recent"
 msgstr "Buka Yang Baru-baru Ini"
 
+msgid "Open from Crowdin..."
+msgstr "Buka dari Crowdin..."
+
+msgid "Open From Crowdin..."
+msgstr "Buka Dari Crowdin..."
+
 msgid "&Save"
 msgstr "&Simpan"
 
@@ -1249,14 +1431,17 @@ msgstr "Perlihatkan Referen&si"
 msgid "&Find..."
 msgstr "&Cari..."
 
+msgid "Replace..."
+msgstr "Ganti..."
+
 msgid "Find next"
 msgstr "Cari berikutnya"
 
 msgid "Find previous"
 msgstr "Cari sebelumnya"
 
-msgid "Find"
-msgstr "Cari"
+msgid "Find and Replace..."
+msgstr "Cari dan Ganti..."
 
 msgid "Find Next"
 msgstr "Cari Berikutnya"
@@ -1297,6 +1482,12 @@ msgstr "&Kelompokkan menurut konteks"
 msgid "&Group By Context"
 msgstr "&Kelompokkan Menurut Konteks"
 
+msgid "Entries with errors first"
+msgstr "Entri dengan kesalahan di awal"
+
+msgid "Entries with Errors First"
+msgstr "Entri dengan Kesalahan Dulu"
+
 msgid "&Untranslated entries first"
 msgstr "Entri bel&um diterjemahkan di awal"
 
@@ -1306,6 +1497,9 @@ msgstr "Entri Bel&um Diterjemahkan Di Awal"
 msgid "Show sidebar"
 msgstr "Tampilkan bilah sisi"
 
+msgid "Show status bar"
+msgstr "Tampilkan bilah status"
+
 msgid "C&atalog"
 msgstr "K&atalog"
 
@@ -1321,6 +1515,9 @@ msgstr "Perbarui dari berkas &POT..."
 msgid "Update from &POT File..."
 msgstr "Perbarui dari Berkas &POT..."
 
+msgid "Sync with Crowdin"
+msgstr "Selaraskan dengan Crowdin"
+
 msgid "Fill missing translations from &TM..."
 msgstr "Isi terjemahan yang kosong dari &TM..."
 
@@ -1449,6 +1646,9 @@ msgstr ""
 msgid "Catalog properties"
 msgstr "Properti katalog"
 
+msgid "Project name and version:"
+msgstr "Nama dan versi projek:"
+
 msgid "Plural Forms:"
 msgstr "Bentuk jamak:"
 
@@ -1461,17 +1661,29 @@ msgstr "Gunakan ekspresi pilihan sendiri"
 msgid "Learn about plural forms"
 msgstr "Belajar tentang bentuk jamak"
 
+msgid "Charset:"
+msgstr "Set karakter:"
+
+msgid "Team:"
+msgstr "Tim:"
+
+msgid "Team's email address:"
+msgstr "Alamat surel Tim:"
+
 msgid "Translation properties"
 msgstr "Properti terjemahan"
 
+msgid "Sources paths"
+msgstr "Path sumber"
+
 msgid "Extract text from source files in the following directories:"
 msgstr "Ekstrak teks dari berkas sumber di direktori berikut:"
 
 msgid "Base path:"
 msgstr "Path dasar:"
 
-msgid "Sources paths"
-msgstr "Path sumber"
+msgid "Sources keywords"
+msgstr "Kata-kata kunci sumber"
 
 msgid ""
 "Use these keywords (function names) to recognize translatable strings\n"
@@ -1483,9 +1695,6 @@ msgstr ""
 msgid "Learn about gettext keywords"
 msgstr "Belajar tentang kata kunci gettext"
 
-msgid "Sources keywords"
-msgstr "Kata-kata kunci sumber"
-
 msgid "Update summary"
 msgstr "Perbarui rangkuman"
 
@@ -1533,8 +1742,8 @@ msgstr "Perbarui katalog - mensinkronkan dengan sumber"
 msgid "Toggled if selected string has fuzzy translation"
 msgstr "Dijungkitkan jika kalimat yang dipilih memiliki terjemahan ragu"
 
-msgid "Show or hide the sidebar."
-msgstr "Tampilkan atau sembunyikan bilah sisi."
+msgid "Show or hide the sidebar"
+msgstr "Tampilkan atau sembunyikan bilah sisi"
 
 #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer.
 msgid "Previous source text:"
@@ -1547,6 +1756,9 @@ msgstr ""
 "Teks sumber lama (sebelum berubah selama pemutakhiran) yang berkaitan dengan "
 "terjemahan ragu."
 
+msgid "Notes for translators:"
+msgstr "Catatan bagi para penerjemah:"
+
 msgid "Add comment"
 msgstr "Tambah komentar"
 
@@ -1626,15 +1838,24 @@ msgstr "Sunting suatu terjemahan"
 msgid "Open an existing PO file and edit the translation."
 msgstr "Buka berkas PO yang ada dan sunting terjemahan tersebut."
 
-msgid "Create new translation"
-msgstr "Buat terjemahan baru"
-
 msgid ""
 "Take an existing PO file or POT template and create a new translation from "
 "it."
 msgstr ""
 "Ambil berkas PO atau templat POT yang ada dan buat terjemahan baru darinya."
 
+msgid "Collaborate on a translation with Crowdin"
+msgstr "Kolaborasi penerjemahan dengan Crowdin"
+
+msgid ""
+"Download a file from Crowdin project, translate and sync your changes back."
+msgstr ""
+"Unduh suatu berkas dari proyek Crowdin, terjemahkan, dan selaraskan balik "
+"perubahan Anda."
+
+msgid "What is Crowdin?"
+msgstr "Apa itu Crowdin?"
+
 msgid "There are no translations. That’s unusual."
 msgstr "Tidak ada terjemahan. Itu tidak biasa."
 
@@ -1657,8 +1878,8 @@ msgstr "(Belajar lebih banyak tentang gettext GNU)"
 
 msgid "The simplest way to fill this catalog is to update it from a POT:"
 msgstr ""
-"Cara termudah untuk memenuhi katalog inin adalah dengan memutakhirkannya "
-"dari suatu POT:"
+"Cara termudah untuk memenuhi katalog ini adalah dengan memutakhirkannya dari "
+"suatu POT:"
 
 msgid "Update from POT"
 msgstr "Perbarui dari POT"
@@ -1678,3 +1899,9 @@ msgstr "Ekstrak dari sumber"
 
 msgid "Configure source code extraction in Properties."
 msgstr "Atur konfigurasi ekstraksi kode sumber dalam Properti."
+
+msgid "Sync"
+msgstr "Selaraskan"
+
+msgid "Synchronize the translation with Crowdin"
+msgstr "Selaraskan terjemahan dengan Crowdin"
diff --git a/locales/is.mo b/locales/is.mo
index 2960b40..bdceec7 100644
Binary files a/locales/is.mo and b/locales/is.mo differ
diff --git a/locales/is.po b/locales/is.po
index 3d74888..3c08643 100644
--- a/locales/is.po
+++ b/locales/is.po
@@ -2,8 +2,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: poedit\n"
 "Report-Msgid-Bugs-To: help at poedit.net\n"
-"POT-Creation-Date: 2015-01-10 16:00+0100\n"
-"PO-Revision-Date: 2015-03-10 12:33-0400\n"
+"POT-Creation-Date: 2015-05-27 11:31+0200\n"
+"PO-Revision-Date: 2015-05-27 05:17-0400\n"
 "Last-Translator: vslavik <vaclav at slavik.io>\n"
 "Language-Team: Icelandic\n"
 "Language: is_IS\n"
@@ -23,13 +23,13 @@ msgid "Don't Show Again"
 msgstr "Ekki birta þetta aftur"
 
 msgid "Don't show again"
-msgstr "Ekki sýna aftur"
+msgstr "Ekki birta aftur"
 
 #, c-format
 msgid "%i line of file '%s' was not loaded correctly."
 msgid_plural "%i lines of file '%s' were not loaded correctly."
-msgstr[0] "%i lína úr skránni '%s' hlóðst ekki rétt inn."
-msgstr[1] "%i línur úr skránni '%s' hlóðust ekki rétt inn."
+msgstr[0] "%i lína úr skránni '%s' var ekki lesin rétt inn."
+msgstr[1] "%i línur úr skránni '%s' voru ekki lesnar rétt inn."
 
 #, c-format
 msgid "Line %d of file '%s' is corrupted (not valid %s data)."
@@ -55,15 +55,15 @@ msgstr ""
 
 #, c-format
 msgid "Couldn't load file %s, it is probably corrupted."
-msgstr "Gat ekki hlaðið inn skránni %s, hún er líklega skemmd."
+msgstr "Gat ekki lesið skrána %s, hún er líklega skemmd."
 
 #, c-format
 msgid ""
 "File '%s' is read-only and cannot be saved.\n"
 "Please save it under different name."
 msgstr ""
-"Skráin '%s' er aðeins lesanleg og er ekki hægt að vista.\n"
-"Vistaðu hana með öðru heiti."
+"Aðeins er hægt að lesa skrá %s en ekki hægt að vista.\n"
+"Vistaðu hana undir öðru heiti."
 
 #, c-format
 msgid "Couldn't save file %s."
@@ -89,6 +89,15 @@ msgstr ""
 msgid "Error saving catalog"
 msgstr "Villa við vistun á þýðingaskrá"
 
+msgid "PO Translation Files"
+msgstr "PO þýðingaskrár"
+
+msgid "POT Translation Templates"
+msgstr "POT þýðingasniðmát"
+
+msgid "All Translation Files"
+msgstr "Allar þýðingaskrár"
+
 msgid "Merging differences..."
 msgstr "Samþætti mismun..."
 
@@ -100,7 +109,7 @@ msgid "(Use default language)"
 msgstr "(Nota sjálfgefið tungumál)"
 
 msgid "Select your preferred language"
-msgstr "Veldu aðaltungumál þitt"
+msgstr "Veldu aðaltungumálið þitt"
 
 msgid "Language selection"
 msgstr "Velja tungumál"
@@ -108,6 +117,85 @@ msgstr "Velja tungumál"
 msgid "You must restart Poedit for this change to take effect."
 msgstr "Þú þarft að endurræsa Poedit til að þessi breyting taki gildi."
 
+msgid "Downloading translations is disabled in this project."
+msgstr "Ekki er hægt að sækja þýðingar í þessu verki."
+
+msgid "Not authorized, please sign in again."
+msgstr "Ekki leyfilegt, skráðu þig aftur inn."
+
+msgid "Sign in to Crowdin"
+msgstr "Skrá inn í Crowdin"
+
+msgid ""
+"Crowdin is an online localization management platform and collaborative "
+"translation tool. Poedit can seamlessly sync PO files managed at Crowdin."
+msgstr ""
+"Crowdin is an online localization management platform and collaborative "
+"translation tool. Poedit can seamlessly sync PO files managed at Crowdin."
+
+msgid "Sign In"
+msgstr "Skrá inn"
+
+msgid "Sign in"
+msgstr "Skrá inn"
+
+msgid "Sign Out"
+msgstr "Skrá út"
+
+msgid "Sign out"
+msgstr "Skrá út"
+
+msgid "Waiting for authentication…"
+msgstr "Bíð eftir auðkenningu…"
+
+msgid "Updating user information…"
+msgstr "Uppfæri upplýsingar um notanda…"
+
+msgid "Signed in as:"
+msgstr "Skráður inn sem:"
+
+msgid "Learn More About Crowdin"
+msgstr "Læra meira um Crowdin"
+
+msgid "Learn more about Crowdin"
+msgstr "Læra meira um Crowdin"
+
+msgid "Open Crowdin translation"
+msgstr "Opna Crowdin þýðingu"
+
+msgid "Project:"
+msgstr "Verkefni:"
+
+msgid "Language:"
+msgstr "Tungumál:"
+
+msgid "File:"
+msgstr "File:"
+
+msgid "No translation projects listed in your Crowdin account."
+msgstr "Engin þýðingarverkefni eru skráð á þínu Crowdin svæði."
+
+msgid "This project has no files that can be translated in Poedit."
+msgstr "Þetta verkefni er ekki með neinar skrár sem hægt er að þýða í Poedit."
+
+msgid "This file can only be edited in Crowdin’s web interface."
+msgstr "Þessari skrá er aðeins hægt að breyta á vefsvæði Crowdin."
+
+msgid "Downloading latest translations…"
+msgstr "Næ í nýjustu þýðingar…"
+
+msgid "Syncing with Crowdin"
+msgstr "Samstilli við Crowdin"
+
+msgid "Syncing with Crowdin failed."
+msgstr "Samstilling við Crowdin mistókst."
+
+msgid "Crowdin error"
+msgstr "Crowdin villa"
+
+msgid "Uploading translations…"
+msgstr "Sendi inn þýðingar…"
+
 msgid "&Copy"
 msgstr "&Afrita"
 
@@ -154,6 +242,12 @@ msgstr ""
 msgid "don't delete temporary files (for debugging)"
 msgstr "ekki eyða bráðabirgðaskrám (fyrir aflúsun)"
 
+msgid "handle a poedit:// URI"
+msgstr "handle a poedit:// URI"
+
+msgid "Failed to communicate with Poedit process."
+msgstr ""
+
 #, c-format
 msgid "Unhandled exception occurred: %s"
 msgstr "Ómeðhöndlað frávik kom upp: %s"
@@ -164,12 +258,6 @@ msgstr "Ómeðhöndlað frávik kom upp."
 msgid "Open catalog"
 msgstr "Opna þýðingaskrá"
 
-msgid "All Files"
-msgstr "Allar skrár"
-
-msgid "PO Translation Files"
-msgstr "PO þýðingaskrár"
-
 #, c-format
 msgid "File '%s' doesn't exist."
 msgstr "Skráin '%s' fannst ekki."
@@ -397,6 +485,19 @@ msgstr "Fleirtala:"
 msgid "Translation:"
 msgstr "Þýðing:"
 
+msgid ""
+"POT files are only templates and don’t contain any translations themselves.\n"
+"To make a translation, create a new PO file based on the template."
+msgstr ""
+"POT skrár eru aðeins þýðingasniðmát og innihalda engar þýðingar.\n"
+"Til að þýða verður að búa til nýja PO skrá byggða á sniðmátinu."
+
+msgid "Create New Translation"
+msgstr "Búa til nýja þýðingu"
+
+msgid "Create new translation"
+msgstr "Búa til nýja þýðingu"
+
 #. TRANSLATORS: %s is language name in its basic form (as you
 #. would see e.g. in a list of supported languages). You may need
 #. to rephrase it, e.g. to an equivalent of "for language %s".
@@ -446,9 +547,6 @@ msgstr "HTML skrár"
 msgid "Open catalog template"
 msgstr "Opna þýðingaskráarsniðmát"
 
-msgid "POT Translation Templates"
-msgstr "POT þýðingasniðmát"
-
 msgid "Updating catalog"
 msgstr "Uppfæri þýðingaskrá"
 
@@ -495,8 +593,8 @@ msgid ""
 "The file was saved safely and compiled into the MO format, but it will "
 "probably not work correctly."
 msgstr ""
-"The file was saved safely and compiled into the MO format, but it will "
-"probably not work correctly."
+"Skráin var sannlega vistuð og vistþýdd yfir á MO-form , en mun líklega ekki "
+"virka rétt."
 
 msgid ""
 "The file was saved safely, but it cannot be compiled into the MO format and "
@@ -509,11 +607,10 @@ msgid ""
 "The file was compiled into the MO format, but it will probably not work "
 "correctly."
 msgstr ""
-"The file was compiled into the MO format, but it will probably not work "
-"correctly."
+"Skráin var sannlega vistþýdd yfir á MO-form , en mun líklega ekki virka rétt."
 
 msgid "The file cannot be compiled into the MO format and used."
-msgstr "The file cannot be compiled into the MO format and used."
+msgstr "Ekki er hægt að vistþýða skrána yfir á MO-form til notkunar."
 
 msgid "No problems with the translation found."
 msgstr "Engin vandamál fundust í þýðingunni."
@@ -528,18 +625,20 @@ msgstr[1] "Þýðingin er tilbúin til notkunar, en %d færslur er samt óþýdd
 msgid "The translation is ready for use."
 msgstr "Þýðingaminnið er tilbúið til notkunar."
 
-msgid "No references to this string found."
-msgstr "Engar tilvísanir í þennan streng fundust."
-
-msgid "Please choose the reference you want to show:"
-msgstr "Veldu þá tilvísun sem þú vilt sýna:"
-
-msgid "References"
-msgstr "Tilvísanir"
-
 msgid "Context:"
 msgstr "Samhengi:"
 
+#, c-format
+msgid "Poedit automatically fixed invalid content in the file “%s”."
+msgstr ""
+
+msgid ""
+"The file contained duplicate items, which is not allowed in PO files and "
+"would prevent the file from being used. Poedit fixed the issue, but you "
+"should review translations of any items marked as fuzzy and correct them if "
+"necessary."
+msgstr ""
+
 msgid "Language of the translation isn't set."
 msgstr "Tungumál þýðingar er ekki stillt."
 
@@ -549,6 +648,23 @@ msgstr "Settu inn tungumál"
 msgid "Set language"
 msgstr "Veldu tungumál"
 
+#. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)."
+msgid ""
+"Suggestions are not available if the translation language is not set "
+"correctly. Other features, such as plural forms, may be affected as well."
+msgstr ""
+"Suggestions are not available if the translation language is not set "
+"correctly. Other features, such as plural forms, may be affected as well."
+
+msgid "Language of the translation is the same as source language."
+msgstr "Tungumál þýðingar er það sama og upprunatungumálið."
+
+msgid "Fix Language"
+msgstr "Laga tungumál"
+
+msgid "Fix language"
+msgstr "Laga tungumál"
+
 msgid ""
 "This catalog has entries with plural forms, but doesn't have Plural-Forms "
 "header configured."
@@ -583,6 +699,7 @@ msgstr "Laga hausinn"
 msgid "Plural forms expression used by the catalog is unusual for %s."
 msgstr "Fleirtöluformssniðið sem notað er í þýðingaskránni er óvenjulegt í %s."
 
+#. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the catalog is unusual for %s.")"
 msgid "Review"
 msgstr "Yfirfara"
 
@@ -604,6 +721,12 @@ msgid_plural "%d errors"
 msgstr[0] "%d villa"
 msgstr[1] "%d villur"
 
+#, c-format
+msgid "%d entry"
+msgid_plural "%d entries"
+msgstr[0] "%d færsla"
+msgstr[1] "%d færslur"
+
 msgid " (unsaved)"
 msgstr " (óvistað)"
 
@@ -667,8 +790,8 @@ msgstr "Fylla inn"
 #, c-format
 msgid "%d entry was filled from the translation memory."
 msgid_plural "%d entries were filled from the translation memory."
-msgstr[0] "%d entry was filled from the translation memory."
-msgstr[1] "%d entries were filled from the translation memory."
+msgstr[0] "%d færsla var fyllt með samsvörun úr þýðingaminni."
+msgstr[1] "%d færslur voru fylltar með samsvörunum úr þýðingaminni."
 
 msgid ""
 "The translations were marked as fuzzy, because they may be inaccurate. You "
@@ -729,6 +852,9 @@ msgstr "Allt"
 msgid "Form %i"
 msgstr "Form %i"
 
+msgid "Singular"
+msgstr "Eintala"
+
 msgid "Zero"
 msgstr "Núll"
 
@@ -738,6 +864,9 @@ msgstr "Einn"
 msgid "Two"
 msgstr "Tveir"
 
+msgid "Plural"
+msgstr "Fleirtala"
+
 msgid "Other"
 msgstr "Annað"
 
@@ -766,6 +895,12 @@ msgstr "Fela hliðarspjald"
 msgid "Show Sidebar"
 msgstr "Birta hliðarspjald"
 
+msgid "Hide Status Bar"
+msgstr "Fela stöðustiku"
+
+msgid "Show Status Bar"
+msgstr "Birta stöðustiku"
+
 msgid "Source text"
 msgstr "Frumtexti"
 
@@ -775,6 +910,10 @@ msgstr "Þýðing"
 msgid "ID"
 msgstr "Auðkenni (ID)"
 
+#, c-format
+msgid "Source text — %s"
+msgstr "Frumtexti — %s"
+
 msgid "unknown language"
 msgstr "óþekkt tungumál"
 
@@ -785,57 +924,73 @@ msgstr "Þýðing — %s"
 msgid "Error:"
 msgstr "Villa:"
 
-msgid "Project info"
-msgstr "Upplýsingar um þýðingaverkefni"
+msgid "Source file"
+msgstr "Upprunaskrá"
 
-msgid "Project name and version:"
-msgstr "Nafn þýðingaverkefnis og útgáfunúmer:"
+msgid "Source file occurrence:"
+msgstr "Tilvik í upprunaskrá:"
 
-msgid "Language:"
-msgstr "Tungumál:"
+msgid "Open in Editor"
+msgstr "Opna í ritli"
 
-msgid "Team:"
-msgstr "Teymi:"
+msgid "Open in editor"
+msgstr "Opna í ritli"
 
-msgid "Team's email address:"
-msgstr "Netfang þýðingateymis:"
+msgid "No references for the selected item."
+msgstr "Engar tilvísanir í valið atriði."
 
-msgid "Charset:"
-msgstr "Stafasett:"
+#, c-format
+msgid "Error opening file %s!"
+msgstr "Villa við opnun á skránni %s!"
 
-msgid "Source"
-msgstr "Uppruni"
+msgid "Find"
+msgstr "Finna"
 
-msgid "Notes"
-msgstr "Minnispunktar"
+msgid "Replace"
+msgstr "Skipta út"
 
-msgid "Automatic translation"
-msgstr "Sjálfvirk þýðing"
+#. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.)
+msgid "Options"
+msgstr "Valkostir"
 
-msgid "Fuzzy translation"
-msgstr "Óskýr þýðing"
+msgid "Ignore case"
+msgstr "Hunsa há/lágstafi"
 
-msgid "Notes for translators:"
-msgstr "Minnispunktar fyrir þýðendur:"
+msgid "Wrap around"
+msgstr "Umbrjóta texta"
 
-msgid "Comment:"
-msgstr "Athugasemd:"
+msgid "Whole words only"
+msgstr "Aðeins stök orð"
 
-msgid "Source file"
-msgstr "Upprunaskrá"
+msgid "Find in source texts"
+msgstr "Find in source texts"
 
-msgid "Source file occurrence:"
-msgstr "Tilvik í upprunaskrá:"
+msgid "Find in translations"
+msgstr "Finna í þýðingum"
 
-msgid "Open in Editor"
-msgstr "Opna í ritli"
+msgid "Find in comments"
+msgstr "Finna í athugasemdum"
 
-msgid "Open in editor"
-msgstr "Opna í ritli"
+msgid "Close"
+msgstr "Loka"
 
-#, c-format
-msgid "Error opening file %s!"
-msgstr "Villa við opnun á skránni %s!"
+msgid "Replace All"
+msgstr "Skipta út öllu"
+
+msgid "Replace all"
+msgstr "Skipta út öllu"
+
+msgid "< &Previous"
+msgstr "< &Fyrra"
+
+msgid "&Next >"
+msgstr "&Næsta >"
+
+msgid "String to find"
+msgstr "Finna streng"
+
+msgid "Replacement string"
+msgstr "Útskiptistrengur"
 
 #, c-format
 msgid "Cannot execute program: %s"
@@ -922,7 +1077,7 @@ msgid "Automatically compile MO file when saving"
 msgstr "Vistþýða sjálfkrafa MO-skrár við vistun"
 
 msgid "Show summary after catalog update"
-msgstr "Birta samantekt eftur uppfærslu þýðingaskráa"
+msgstr "Birta samantekt eftir uppfærslu þýðingaskráa"
 
 msgid "Check spelling"
 msgstr "Athuga stafsetningu"
@@ -973,7 +1128,7 @@ msgid "Reset"
 msgstr "Endurstilla"
 
 msgid "Consult TM when updating from sources"
-msgstr "Fletta upp í þýpingaminni við uppfærslu ú frumskrám"
+msgstr "Fletta upp í þýðingaminni við uppfærslu úr frumskrám"
 
 msgid ""
 "If enabled, Poedit will try to fill in new entries using your previous\n"
@@ -1030,8 +1185,9 @@ msgid ""
 "Source code extractors are used to find translatable strings in the source "
 "code files and extract them so that they can be translated."
 msgstr ""
-"Source code extractors are used to find translatable strings in the source "
-"code files and extract them so that they can be translated."
+"Frumkóðaþáttarar (source code extractors) eru notaðir til að finna þýðanlega "
+"strengi inni í frumkóðaskrám og setja í nýjar skrár svo hægt sé að þýða "
+"strengina."
 
 msgid "New"
 msgstr "Nýtt"
@@ -1039,9 +1195,19 @@ msgstr "Nýtt"
 msgid "Edit"
 msgstr "Breyta"
 
+msgid "Delete extractor"
+msgstr "Eyða þáttara"
+
+#, c-format
+msgid "Are you sure you want to delete the “%s” extractor?"
+msgstr "Ertu viss um að þú viljir eyða “%s” þáttaranum?"
+
 msgid "Extractors"
 msgstr "Þáttarar"
 
+msgid "Accounts"
+msgstr "Aðgangar"
+
 msgid "Automatically check for updates"
 msgstr "Athuga sjálfvirkt með uppfærslur"
 
@@ -1052,8 +1218,8 @@ msgid ""
 "Beta versions contain the latest new features and improvements, but may be a "
 "bit less stable."
 msgstr ""
-"Beta versions contain the latest new features and improvements, but may be a "
-"bit less stable."
+"Beta-útgáfur innihalda nýjustu eiginleika og bætingu á þeim sem fyrir voru, "
+"en gætu verið óstöðugri."
 
 msgid "Updates"
 msgstr "Uppfærslur"
@@ -1062,8 +1228,8 @@ msgid ""
 "These settings affect internal formatting of PO files. Adjust them if you "
 "have specific requirements e.g. because of version control."
 msgstr ""
-"These settings affect internal formatting of PO files. Adjust them if you "
-"have specific requirements e.g. because of version control."
+"Þessar stillingar hafa áhrif á innra snið PO-skráa. Breyttu þeim ef þú hefur "
+"sértækar þarfir eins og t.d. vegna útgáfustýringar."
 
 msgid "Line endings:"
 msgstr "Línuendingar:"
@@ -1084,8 +1250,41 @@ msgstr "Vernda snið fyrirliggjandi skráa"
 msgid "Advanced"
 msgstr "Ítarlegt"
 
-msgid "Additional keywords"
-msgstr "Aukaleg stikkorð:"
+msgid ""
+"<big>Drag and Drop Folders Here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+"<big>Dragðu og slepptu möppum hér</big>\n"
+"\n"
+"eða notaðu + hnappinn"
+
+msgid ""
+"<big>Drag and drop folders here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+"<big>Dragðu og slepptu möppum hér</big>\n"
+"\n"
+"eða notaðu + hnappinn"
+
+msgid "Add Folders..."
+msgstr "Bæta við möppum..."
+
+msgid "Add folders..."
+msgstr "Bæta við möppum..."
+
+msgid "Add Files..."
+msgstr "Bæta við skrám..."
+
+msgid "Add files..."
+msgstr "Bæta við skrám..."
+
+msgid "Add Wildcard..."
+msgstr "Bæta við algildistákni..."
+
+msgid "Add wildcard..."
+msgstr "Bæta við algildistákni..."
 
 msgid "Paths"
 msgstr "Slóðir"
@@ -1093,6 +1292,9 @@ msgstr "Slóðir"
 msgid "Excluded paths"
 msgstr "Slóðir sem á að sleppa"
 
+msgid "Additional keywords"
+msgstr "Aukaleg stikkorð:"
+
 msgid "Name of the project the translation is for"
 msgstr "Heiti þýðingaverkefnis sem þýðingin er ætluð"
 
@@ -1107,8 +1309,11 @@ msgstr ""
 "Endilega vistaðu skrána fyrst. Ekki er hægt að sýsla með þennan hluta fyrr "
 "en það hefur verið gert."
 
+msgid "Comment:"
+msgstr "Athugasemd:"
+
 msgid "OK"
-msgstr "OK"
+msgstr "Í lagi"
 
 msgid "C&lear"
 msgstr "&Hreinsa"
@@ -1116,42 +1321,6 @@ msgstr "&Hreinsa"
 msgid "Clear the comment"
 msgstr "Hreinsa athugasemd"
 
-msgid "Find..."
-msgstr "Finna..."
-
-msgid "String to find:"
-msgstr "Finna streng:"
-
-msgid "Case sensitive"
-msgstr "Næmt fyrir há og lágstöfum"
-
-msgid "Start from the first item"
-msgstr "Byrja á fyrsta atriðinu"
-
-msgid "Whole words only"
-msgstr "Aðeins stök orð"
-
-msgid "Find in original strings"
-msgstr "Finna í upprunalegum strengjum"
-
-msgid "Find in translations"
-msgstr "Finna í þýðingum"
-
-msgid "Find in comments"
-msgstr "Finna í athugasemdum"
-
-msgid "Find in automatic comments"
-msgstr "Finna í sjálfvirkum athugasemdum"
-
-msgid "Close"
-msgstr "Loka"
-
-msgid "< &Previous"
-msgstr "< &Fyrra"
-
-msgid "&Next >"
-msgstr "&Næsta >"
-
 msgid "Create new translations project"
 msgstr "Búa til nýtt þýðingarverkefni"
 
@@ -1206,6 +1375,12 @@ msgstr "&Opna..."
 msgid "Open Recent"
 msgstr "Opna nýlegt"
 
+msgid "Open from Crowdin..."
+msgstr "Opna frá Crowdin..."
+
+msgid "Open From Crowdin..."
+msgstr "Opna frá Crowdin..."
+
 msgid "&Save"
 msgstr "Vi&sta"
 
@@ -1254,14 +1429,17 @@ msgstr "&Sýna tilvísanir"
 msgid "&Find..."
 msgstr "&Leita..."
 
+msgid "Replace..."
+msgstr "Skipta út..."
+
 msgid "Find next"
 msgstr "Finna næsta"
 
 msgid "Find previous"
 msgstr "Finna fyrra"
 
-msgid "Find"
-msgstr "Finna"
+msgid "Find and Replace..."
+msgstr "Finna og skipta út..."
 
 msgid "Find Next"
 msgstr "Finna næsta"
@@ -1302,6 +1480,12 @@ msgstr "&Hópa eftir samhengi"
 msgid "&Group By Context"
 msgstr "&Hópa eftir samhengi"
 
+msgid "Entries with errors first"
+msgstr "Færslur með villum fyrst"
+
+msgid "Entries with Errors First"
+msgstr "Færslur með villum fyrst"
+
 msgid "&Untranslated entries first"
 msgstr "Óþýddar &færslur fyrst"
 
@@ -1311,6 +1495,9 @@ msgstr "Óþýddar &færslur fyrst"
 msgid "Show sidebar"
 msgstr "Birta hliðarspjald"
 
+msgid "Show status bar"
+msgstr "Birta stöðustiku"
+
 msgid "C&atalog"
 msgstr "Þýðing&askrá"
 
@@ -1326,6 +1513,9 @@ msgstr "Uppfæra frá &POT skrá..."
 msgid "Update from &POT File..."
 msgstr "Uppfæra frá &POT skrá..."
 
+msgid "Sync with Crowdin"
+msgstr "Samstilla við Crowdin"
+
 msgid "Fill missing translations from &TM..."
 msgstr "F&ylla inn þýðingar sem vantar úr ÞM..."
 
@@ -1405,7 +1595,7 @@ msgid "Invocation:"
 msgstr "Ræsing:"
 
 msgid "Command to extract translations:"
-msgstr "Command to extract translations:"
+msgstr "Skipun til að ná í þýðingar:"
 
 msgid ""
 "This is the command used to launch the extractor.\n"
@@ -1440,7 +1630,7 @@ msgstr ""
 "fyrir hverja inntaksskrá. %f kemur í stað skráarheitisins."
 
 msgid "Source code charset:"
-msgstr "Stafasett frumkóða:"
+msgstr "Stafatafla frumkóða:"
 
 #, c-format
 msgid ""
@@ -1448,12 +1638,15 @@ msgid ""
 "only if source codecharset was given. %c expands to charset value."
 msgstr ""
 "Þetta mun verða viðhengt á skipanalínu, einungis\n"
-"ef upprunastafasett hefur verið gefið upp. %c kemur í stað gildis "
-"stafasettsins."
+"ef upprunaleg stafatafla hefur verið gefið upp. %c kemur í stað gildis "
+"stafatöflunnar."
 
 msgid "Catalog properties"
 msgstr "Eiginleikar þýðingaskrár"
 
+msgid "Project name and version:"
+msgstr "Nafn þýðingaverkefnis og útgáfunúmer:"
+
 msgid "Plural Forms:"
 msgstr "Fleirtöluform:"
 
@@ -1466,17 +1659,29 @@ msgstr "Nota sérsniðna segð"
 msgid "Learn about plural forms"
 msgstr "Vita meira um fleirtöluform"
 
+msgid "Charset:"
+msgstr "Stafatafla:"
+
+msgid "Team:"
+msgstr "Teymi:"
+
+msgid "Team's email address:"
+msgstr "Netfang þýðingateymis:"
+
 msgid "Translation properties"
 msgstr "Eiginleikar þýðingar"
 
+msgid "Sources paths"
+msgstr "Slóðir upprunaskráa"
+
 msgid "Extract text from source files in the following directories:"
 msgstr "Ná í texta úr upprunaskrám í eftirfarandi möppum:"
 
 msgid "Base path:"
 msgstr "Grunnslóð:"
 
-msgid "Sources paths"
-msgstr "Slóðir upprunaskráa"
+msgid "Sources keywords"
+msgstr "Stikkorð upprunaskráa"
 
 msgid ""
 "Use these keywords (function names) to recognize translatable strings\n"
@@ -1488,9 +1693,6 @@ msgstr ""
 msgid "Learn about gettext keywords"
 msgstr "Vita meira um gettext stikkorð"
 
-msgid "Sources keywords"
-msgstr "Stikkorð upprunaskráa"
-
 msgid "Update summary"
 msgstr "Samantekt uppfærslu"
 
@@ -1538,8 +1740,8 @@ msgstr "Uppfæra þýðingaskrár - samræma við upprunaskrár"
 msgid "Toggled if selected string has fuzzy translation"
 msgstr "Víxlað ef valin strengur inniheldur óljósa þýðingu"
 
-msgid "Show or hide the sidebar."
-msgstr "Birta eða fela hliðarspjald."
+msgid "Show or hide the sidebar"
+msgstr "Birta eða fela hliðarspjald"
 
 #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer.
 msgid "Previous source text:"
@@ -1549,8 +1751,11 @@ msgid ""
 "The old source text (before it changed during an update) that the fuzzy "
 "translation corresponds to."
 msgstr ""
-"The old source text (before it changed during an update) that the fuzzy "
-"translation corresponds to."
+"Eldri upprunatexti (áður en hann breyttist við uppfærslu) sem óskýra "
+"þýðingin á við."
+
+msgid "Notes for translators:"
+msgstr "Minnispunktar fyrir þýðendur:"
 
 msgid "Add comment"
 msgstr "Bæta við athugasemd"
@@ -1630,9 +1835,6 @@ msgstr "Breyta þýðingu"
 msgid "Open an existing PO file and edit the translation."
 msgstr "Opna PO-skrá sem er til staðar og sýsla með þýðingar."
 
-msgid "Create new translation"
-msgstr "Búa til nýja þýðingu"
-
 msgid ""
 "Take an existing PO file or POT template and create a new translation from "
 "it."
@@ -1640,6 +1842,17 @@ msgstr ""
 "Taka PO-skrá eða POT-sniðmát sem er til staðar og búa til nýjar þýðingar út "
 "frá því."
 
+msgid "Collaborate on a translation with Crowdin"
+msgstr "Collaborate on a translation with Crowdin"
+
+msgid ""
+"Download a file from Crowdin project, translate and sync your changes back."
+msgstr ""
+"Download a file from Crowdin project, translate and sync your changes back."
+
+msgid "What is Crowdin?"
+msgstr "Hvað er Crowdin?"
+
 msgid "There are no translations. That’s unusual."
 msgstr "Það eru engar þýðingar. Mjög óvenjulegt."
 
@@ -1678,3 +1891,9 @@ msgstr "Ná í úr frumkóða"
 
 msgid "Configure source code extraction in Properties."
 msgstr "Stilla útdrátt upprunakóða í kjörstillingum."
+
+msgid "Sync"
+msgstr "Samstilla"
+
+msgid "Synchronize the translation with Crowdin"
+msgstr "Samræma þýðinguna með Crowdin"
diff --git a/locales/it.mo b/locales/it.mo
index d8cc01a..18c8cbb 100644
Binary files a/locales/it.mo and b/locales/it.mo differ
diff --git a/locales/it.po b/locales/it.po
index 01f09bd..eed6b74 100644
--- a/locales/it.po
+++ b/locales/it.po
@@ -2,8 +2,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: poedit\n"
 "Report-Msgid-Bugs-To: help at poedit.net\n"
-"POT-Creation-Date: 2015-01-10 16:00+0100\n"
-"PO-Revision-Date: 2015-03-10 12:33-0400\n"
+"POT-Creation-Date: 2015-05-27 11:31+0200\n"
+"PO-Revision-Date: 2015-05-27 05:17-0400\n"
 "Last-Translator: vslavik <vaclav at slavik.io>\n"
 "Language-Team: Italian\n"
 "Language: it_IT\n"
@@ -93,6 +93,15 @@ msgstr ""
 msgid "Error saving catalog"
 msgstr "Errore durante il salvataggio del catalogo"
 
+msgid "PO Translation Files"
+msgstr "File di traduzione PO"
+
+msgid "POT Translation Templates"
+msgstr "Modelli di traduzione POT"
+
+msgid "All Translation Files"
+msgstr "Tutti i file di traduzione"
+
 msgid "Merging differences..."
 msgstr "Unione delle differenze..."
 
@@ -112,6 +121,87 @@ msgstr "Selezione della lingua"
 msgid "You must restart Poedit for this change to take effect."
 msgstr "Riavvia Poedit affinché questo cambiamento abbia effetto."
 
+msgid "Downloading translations is disabled in this project."
+msgstr "In questo progetto il download della traduzione è diabilitato."
+
+msgid "Not authorized, please sign in again."
+msgstr "Non autorizzato. Riprova."
+
+msgid "Sign in to Crowdin"
+msgstr "Accedi a Crowdin"
+
+msgid ""
+"Crowdin is an online localization management platform and collaborative "
+"translation tool. Poedit can seamlessly sync PO files managed at Crowdin."
+msgstr ""
+"Crowdin è un sistema online di gestione traduzioni di tipo collaborativo. "
+"Poedit può sincronizzare i file PO gestiti da Crowdin."
+
+msgid "Sign In"
+msgstr "Accedi"
+
+msgid "Sign in"
+msgstr "Accedi"
+
+msgid "Sign Out"
+msgstr "Disconnetti"
+
+msgid "Sign out"
+msgstr "Disconnetti"
+
+msgid "Waiting for authentication…"
+msgstr "Attesa autentificazione…"
+
+msgid "Updating user information…"
+msgstr "Aggiornamento info utente…"
+
+msgid "Signed in as:"
+msgstr "Accedi come:"
+
+msgid "Learn More About Crowdin"
+msgstr "Altre info su Crowdin"
+
+msgid "Learn more about Crowdin"
+msgstr "Altre info su Crowdin"
+
+msgid "Open Crowdin translation"
+msgstr "Apri traduzione Crowdin"
+
+msgid "Project:"
+msgstr "Progetto:"
+
+msgid "Language:"
+msgstr "Lingua:"
+
+msgid "File:"
+msgstr "File:"
+
+msgid "No translation projects listed in your Crowdin account."
+msgstr "Nessun progetto traduzione nel tuo account Crowdin."
+
+msgid "This project has no files that can be translated in Poedit."
+msgstr "Questo progetto non ha file che possono essere tradotti con Poedit."
+
+msgid "This file can only be edited in Crowdin’s web interface."
+msgstr ""
+"Questo file può essere modificato solamente tramite l'interfaccia web di "
+"Crowdin."
+
+msgid "Downloading latest translations…"
+msgstr "Download traduzione aggiornata…"
+
+msgid "Syncing with Crowdin"
+msgstr "Sincronizza con Crowdin"
+
+msgid "Syncing with Crowdin failed."
+msgstr "Sincronizzazione con Crowdin fallita."
+
+msgid "Crowdin error"
+msgstr "Errore di Crowdin"
+
+msgid "Uploading translations…"
+msgstr "Aggiorno traduzioni..."
+
 msgid "&Copy"
 msgstr "&Copia"
 
@@ -158,6 +248,12 @@ msgstr ""
 msgid "don't delete temporary files (for debugging)"
 msgstr "non eliminare i file temporanei (per il debug)"
 
+msgid "handle a poedit:// URI"
+msgstr "gestire un poedit:// URI"
+
+msgid "Failed to communicate with Poedit process."
+msgstr "Impossibile comunicare con Poedit."
+
 #, c-format
 msgid "Unhandled exception occurred: %s"
 msgstr "Si è verificata un'eccezione non gestita: %s"
@@ -168,12 +264,6 @@ msgstr "Si è verificata un'eccezione non gestita."
 msgid "Open catalog"
 msgstr "Apri catalogo"
 
-msgid "All Files"
-msgstr "Tutti i file"
-
-msgid "PO Translation Files"
-msgstr "File di traduzione PO"
-
 #, c-format
 msgid "File '%s' doesn't exist."
 msgstr "Il file '%s' non esiste."
@@ -403,6 +493,19 @@ msgstr "Plurale:"
 msgid "Translation:"
 msgstr "Traduzione:"
 
+msgid ""
+"POT files are only templates and don’t contain any translations themselves.\n"
+"To make a translation, create a new PO file based on the template."
+msgstr ""
+"I file POT sono solo modelli e non contengono traduzioni.\n"
+"Per fare una traduzione, crea un nuovo file PO utilizzando un modello."
+
+msgid "Create New Translation"
+msgstr "Crea nuova traduzione"
+
+msgid "Create new translation"
+msgstr "Crea nuova traduzione"
+
 #. TRANSLATORS: %s is language name in its basic form (as you
 #. would see e.g. in a list of supported languages). You may need
 #. to rephrase it, e.g. to an equivalent of "for language %s".
@@ -452,9 +555,6 @@ msgstr "File HTML"
 msgid "Open catalog template"
 msgstr "Apri modello di catalogo"
 
-msgid "POT Translation Templates"
-msgstr "Modelli di traduzione POT"
-
 msgid "Updating catalog"
 msgstr "Aggiornamento del catalogo in corso"
 
@@ -540,18 +640,25 @@ msgstr[1] ""
 msgid "The translation is ready for use."
 msgstr "La traduzione è pronta per l'uso."
 
-msgid "No references to this string found."
-msgstr "Nessun riferimento trovato per la stringa."
-
-msgid "Please choose the reference you want to show:"
-msgstr "Scegli i riferimenti da visualizzare:"
-
-msgid "References"
-msgstr "Riferimenti"
-
 msgid "Context:"
 msgstr "Contesto:"
 
+#, c-format
+msgid "Poedit automatically fixed invalid content in the file “%s”."
+msgstr ""
+"Poedit correggerà automaticamente il contenuto non valido nel file \"%s\"."
+
+msgid ""
+"The file contained duplicate items, which is not allowed in PO files and "
+"would prevent the file from being used. Poedit fixed the issue, but you "
+"should review translations of any items marked as fuzzy and correct them if "
+"necessary."
+msgstr ""
+"Il file contiene elementi duplicati, che non sono permessi nei file PO e "
+"devono essere rimossi per prevenirne l'uso. Poedit correggerà questo "
+"problema, ma dovrai rivedere le traduzioni di ogni elemento segnato come "
+"\"Da verificare\" e corregerle se necessario."
+
 msgid "Language of the translation isn't set."
 msgstr "Lingua traduzione non impostata"
 
@@ -561,6 +668,24 @@ msgstr "Imposta lingua"
 msgid "Set language"
 msgstr "Imposta lingua"
 
+#. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)."
+msgid ""
+"Suggestions are not available if the translation language is not set "
+"correctly. Other features, such as plural forms, may be affected as well."
+msgstr ""
+"I suggerimenti non sono disponibili se la lingua di traduzione non è "
+"impostata correttamente. Anche altre caratteristiche, come le forme plurali, "
+"possono essere interessate."
+
+msgid "Language of the translation is the same as source language."
+msgstr "La lingua della traduzione è la stessa della lingua sorgente."
+
+msgid "Fix Language"
+msgstr "Correggi la lingua"
+
+msgid "Fix language"
+msgstr "Correggi la lingua"
+
 msgid ""
 "This catalog has entries with plural forms, but doesn't have Plural-Forms "
 "header configured."
@@ -595,6 +720,7 @@ msgstr "Correggi l'intestazione"
 msgid "Plural forms expression used by the catalog is unusual for %s."
 msgstr "Le espressione forme plurali usate dal catalogo sono inusuali per %s"
 
+#. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the catalog is unusual for %s.")"
 msgid "Review"
 msgstr "Revisiona"
 
@@ -616,6 +742,12 @@ msgid_plural "%d errors"
 msgstr[0] "%d errore"
 msgstr[1] "%d errori"
 
+#, c-format
+msgid "%d entry"
+msgid_plural "%d entries"
+msgstr[0] "%d voce"
+msgstr[1] "%d voci"
+
 msgid " (unsaved)"
 msgstr " (non salvato)"
 
@@ -743,6 +875,9 @@ msgstr "Qualsiasi"
 msgid "Form %i"
 msgstr "Modulo %i"
 
+msgid "Singular"
+msgstr "Singolare"
+
 msgid "Zero"
 msgstr "Zero"
 
@@ -752,6 +887,9 @@ msgstr "Singolare"
 msgid "Two"
 msgstr "Due"
 
+msgid "Plural"
+msgstr "Plurale"
+
 msgid "Other"
 msgstr "Plurale"
 
@@ -780,6 +918,12 @@ msgstr "Nascondi barra laterale"
 msgid "Show Sidebar"
 msgstr "Mostra barra laterale"
 
+msgid "Hide Status Bar"
+msgstr "Nascondi barra di stato"
+
+msgid "Show Status Bar"
+msgstr "Visualizza barra di stato"
+
 msgid "Source text"
 msgstr "Testo sorgente"
 
@@ -789,6 +933,10 @@ msgstr "Traduzione"
 msgid "ID"
 msgstr "ID"
 
+#, c-format
+msgid "Source text — %s"
+msgstr "Testo sorgente — %s"
+
 msgid "unknown language"
 msgstr "lingua sconosciuta"
 
@@ -799,57 +947,73 @@ msgstr "Traduzione — %s"
 msgid "Error:"
 msgstr "Errore:"
 
-msgid "Project info"
-msgstr "Informazioni del progetto"
+msgid "Source file"
+msgstr "File sorgente"
 
-msgid "Project name and version:"
-msgstr "Nome e versione del progetto:"
+msgid "Source file occurrence:"
+msgstr "Occorrenze file sorgente:"
 
-msgid "Language:"
-msgstr "Lingua:"
+msgid "Open in Editor"
+msgstr "Apri nell'editor"
 
-msgid "Team:"
-msgstr "Squadra:"
+msgid "Open in editor"
+msgstr "Apri nell'editor"
 
-msgid "Team's email address:"
-msgstr "Indirizzo email della squadra:"
+msgid "No references for the selected item."
+msgstr "Non ci sono riferimenti per l'elemento selezionato."
 
-msgid "Charset:"
-msgstr "Set di caratteri:"
+#, c-format
+msgid "Error opening file %s!"
+msgstr "Errore durante l'apertura del file %s!"
 
-msgid "Source"
-msgstr "Sorgente"
+msgid "Find"
+msgstr "Trova"
 
-msgid "Notes"
-msgstr "Note"
+msgid "Replace"
+msgstr "Sostituisci"
 
-msgid "Automatic translation"
-msgstr "Traduzione automatica"
+#. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.)
+msgid "Options"
+msgstr "Opzioni"
 
-msgid "Fuzzy translation"
-msgstr "Traduzione non verificata"
+msgid "Ignore case"
+msgstr "Non distinguere le maiuscole"
 
-msgid "Notes for translators:"
-msgstr "Note per i traduttori:"
+msgid "Wrap around"
+msgstr "Torna su se raggiungi la fine"
 
-msgid "Comment:"
-msgstr "Commento:"
+msgid "Whole words only"
+msgstr "Solo parole intere"
 
-msgid "Source file"
-msgstr "File sorgente"
+msgid "Find in source texts"
+msgstr "Trova nel testo sorgente"
 
-msgid "Source file occurrence:"
-msgstr "Occorrenze file sorgente:"
+msgid "Find in translations"
+msgstr "Trova nella traduzione"
 
-msgid "Open in Editor"
-msgstr "Apri nell'editor"
+msgid "Find in comments"
+msgstr "Trova nei commenti"
 
-msgid "Open in editor"
-msgstr "Apri nell'editor"
+msgid "Close"
+msgstr "Chiudi"
 
-#, c-format
-msgid "Error opening file %s!"
-msgstr "Errore durante l'apertura del file %s!"
+msgid "Replace All"
+msgstr "Sostituisci tutto"
+
+msgid "Replace all"
+msgstr "Sostituisci tutto"
+
+msgid "< &Previous"
+msgstr "< &Indietro"
+
+msgid "&Next >"
+msgstr "Ava&nti >"
+
+msgid "String to find"
+msgstr "Stringa da trovare"
+
+msgid "Replacement string"
+msgstr "Stringa di sostituzione"
 
 #, c-format
 msgid "Cannot execute program: %s"
@@ -965,7 +1129,7 @@ msgid "Use custom text fields font:"
 msgstr "Usa un carattere personalizzato per i campi di testo:"
 
 msgid "Change UI language"
-msgstr "Cambia la lingua dell'interfaccia"
+msgstr "Cambia lingua dell'interfaccia"
 
 #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions
 msgid "(requires Windows 8 or newer)"
@@ -1055,9 +1219,19 @@ msgstr "Nuovo"
 msgid "Edit"
 msgstr "Modifica"
 
+msgid "Delete extractor"
+msgstr "Elimina estrattore"
+
+#, c-format
+msgid "Are you sure you want to delete the “%s” extractor?"
+msgstr "Sei sicuro di voler eliminare l'estrattore \"%s\"?"
+
 msgid "Extractors"
 msgstr "Estrattori"
 
+msgid "Accounts"
+msgstr "Account"
+
 msgid "Automatically check for updates"
 msgstr "Controlla automaticamente gli aggiornamenti"
 
@@ -1100,8 +1274,41 @@ msgstr "Preserva la formattazione dei file esistenti"
 msgid "Advanced"
 msgstr "Avanzate"
 
-msgid "Additional keywords"
-msgstr "Parole chiave aggiuntive"
+msgid ""
+"<big>Drag and Drop Folders Here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+"<big>Trascina qui le cartelle</big>\n"
+"\n"
+"o usa il pulsante +"
+
+msgid ""
+"<big>Drag and drop folders here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+"<big>Trascina qui le cartelle</big>\n"
+"\n"
+"o usa il pulsante +"
+
+msgid "Add Folders..."
+msgstr "Aggiungi cartelle..."
+
+msgid "Add folders..."
+msgstr "Aggiungi cartelle..."
+
+msgid "Add Files..."
+msgstr "Aggiungi file..."
+
+msgid "Add files..."
+msgstr "Aggiungi file..."
+
+msgid "Add Wildcard..."
+msgstr "Aggiungi caratteri jolly..."
+
+msgid "Add wildcard..."
+msgstr "Aggiungi caratteri jolly..."
 
 msgid "Paths"
 msgstr "Percorsi"
@@ -1109,6 +1316,9 @@ msgstr "Percorsi"
 msgid "Excluded paths"
 msgstr "Percorsi esclusi"
 
+msgid "Additional keywords"
+msgstr "Parole chiave aggiuntive"
+
 msgid "Name of the project the translation is for"
 msgstr "Nome del progetto per la traduzione"
 
@@ -1122,6 +1332,9 @@ msgid "Please save the file first. This section cannot be edited until then."
 msgstr ""
 "Salva prima il file. Questa sezione non può essere modificata fino ad allora."
 
+msgid "Comment:"
+msgstr "Commento:"
+
 msgid "OK"
 msgstr "OK"
 
@@ -1131,42 +1344,6 @@ msgstr "Cance&lla"
 msgid "Clear the comment"
 msgstr "Cancella il commento"
 
-msgid "Find..."
-msgstr "Trova..."
-
-msgid "String to find:"
-msgstr "Stringa da cercare:"
-
-msgid "Case sensitive"
-msgstr "Distingui MAIUSCOLE/minuscole"
-
-msgid "Start from the first item"
-msgstr "Inizia dalla prima voce"
-
-msgid "Whole words only"
-msgstr "Solo parole intere"
-
-msgid "Find in original strings"
-msgstr "Trova nelle stringhe originali"
-
-msgid "Find in translations"
-msgstr "Trova nella traduzione"
-
-msgid "Find in comments"
-msgstr "Trova nei commenti"
-
-msgid "Find in automatic comments"
-msgstr "Trova nei commenti automatici"
-
-msgid "Close"
-msgstr "Chiudi"
-
-msgid "< &Previous"
-msgstr "< &Indietro"
-
-msgid "&Next >"
-msgstr "Ava&nti >"
-
 msgid "Create new translations project"
 msgstr "Crea nuovo progetto di traduzione"
 
@@ -1221,6 +1398,12 @@ msgstr "&Apri..."
 msgid "Open Recent"
 msgstr "Apri recente"
 
+msgid "Open from Crowdin..."
+msgstr "Apri da Crowdin..."
+
+msgid "Open From Crowdin..."
+msgstr "Apri da Crowdin..."
+
 msgid "&Save"
 msgstr "&Salva"
 
@@ -1269,14 +1452,17 @@ msgstr "Mo&stra riferimenti"
 msgid "&Find..."
 msgstr "&Trova..."
 
+msgid "Replace..."
+msgstr "Sostituisci..."
+
 msgid "Find next"
 msgstr "Trova successivo"
 
 msgid "Find previous"
 msgstr "Trova precedente"
 
-msgid "Find"
-msgstr "Trova"
+msgid "Find and Replace..."
+msgstr "Trova e sostituisci..."
 
 msgid "Find Next"
 msgstr "Trova successivo"
@@ -1317,6 +1503,12 @@ msgstr "&Raggruppa per contesto"
 msgid "&Group By Context"
 msgstr "&Raggruppa per contesto"
 
+msgid "Entries with errors first"
+msgstr "Prima le voci con errori"
+
+msgid "Entries with Errors First"
+msgstr "Prima le voci con errori"
+
 msgid "&Untranslated entries first"
 msgstr "&Prima le voci non tradotte"
 
@@ -1326,6 +1518,9 @@ msgstr "&Prima voci non tradotte"
 msgid "Show sidebar"
 msgstr "Mostra barra laterale"
 
+msgid "Show status bar"
+msgstr "Visualizza barra di stato"
+
 msgid "C&atalog"
 msgstr "C&atalogo"
 
@@ -1341,6 +1536,9 @@ msgstr "Aggiorna da file &POT..."
 msgid "Update from &POT File..."
 msgstr "Aggiorna da file &POT..."
 
+msgid "Sync with Crowdin"
+msgstr "Sincronizza con Crowdin"
+
 msgid "Fill missing translations from &TM..."
 msgstr "Riempi traduzioni mancanti prendendole dalla M&T..."
 
@@ -1469,6 +1667,9 @@ msgstr ""
 msgid "Catalog properties"
 msgstr "Proprietà del catalogo"
 
+msgid "Project name and version:"
+msgstr "Nome e versione del progetto:"
+
 msgid "Plural Forms:"
 msgstr "Forme plurali:"
 
@@ -1481,17 +1682,29 @@ msgstr "Usa espressione personale"
 msgid "Learn about plural forms"
 msgstr "Informazioni sulle forme plurali"
 
+msgid "Charset:"
+msgstr "Set di caratteri:"
+
+msgid "Team:"
+msgstr "Squadra:"
+
+msgid "Team's email address:"
+msgstr "Indirizzo email della squadra:"
+
 msgid "Translation properties"
 msgstr "Proprietà traduzione"
 
+msgid "Sources paths"
+msgstr "Percorsi sorgente"
+
 msgid "Extract text from source files in the following directories:"
 msgstr "Estrai testo dai file sorgenti nelle seguenti cartelle:"
 
 msgid "Base path:"
 msgstr "Percorso di base:"
 
-msgid "Sources paths"
-msgstr "Percorsi sorgente"
+msgid "Sources keywords"
+msgstr "Chiavi ricerca sorgente"
 
 msgid ""
 "Use these keywords (function names) to recognize translatable strings\n"
@@ -1504,9 +1717,6 @@ msgstr ""
 msgid "Learn about gettext keywords"
 msgstr "Info sulle parole chiave gettext"
 
-msgid "Sources keywords"
-msgstr "Chiavi ricerca sorgente"
-
 msgid "Update summary"
 msgstr "Aggiorna riepilogo"
 
@@ -1555,8 +1765,8 @@ msgid "Toggled if selected string has fuzzy translation"
 msgstr ""
 "Attiva/disattiva se la stringa selezionata ha una traduzione non pronta"
 
-msgid "Show or hide the sidebar."
-msgstr "Visualizza/nascondi la barra laterale."
+msgid "Show or hide the sidebar"
+msgstr "Visualizza/nascondi la barra laterale"
 
 #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer.
 msgid "Previous source text:"
@@ -1569,6 +1779,9 @@ msgstr ""
 "Il vecchio testo sorgente (prima di modificarlo durante un aggiornamento) "
 "che corrisponde alla traduzione non verificata."
 
+msgid "Notes for translators:"
+msgstr "Note per i traduttori:"
+
 msgid "Add comment"
 msgstr "Aggiungi commento"
 
@@ -1647,9 +1860,6 @@ msgstr "Modifica una traduzione"
 msgid "Open an existing PO file and edit the translation."
 msgstr "Apri un file PO esistente e modifica la traduzione."
 
-msgid "Create new translation"
-msgstr "Crea nuova traduzione"
-
 msgid ""
 "Take an existing PO file or POT template and create a new translation from "
 "it."
@@ -1657,6 +1867,18 @@ msgstr ""
 "Apri un file PO o un modello POT e crea una nuova traduzione a partire da "
 "esso."
 
+msgid "Collaborate on a translation with Crowdin"
+msgstr "Collabora a una traduzione con Crowdin"
+
+msgid ""
+"Download a file from Crowdin project, translate and sync your changes back."
+msgstr ""
+"Scarica un file da un progetto Crowdin, traduci e lo sincronizza con le tue "
+"modifiche."
+
+msgid "What is Crowdin?"
+msgstr "Che cos'è Crowdin?"
+
 msgid "There are no translations. That’s unusual."
 msgstr "Non ci sono traduzioni, Questo è inusuale."
 
@@ -1698,3 +1920,9 @@ msgstr "Estrai dai sorgenti"
 
 msgid "Configure source code extraction in Properties."
 msgstr "Configura estrazione codice sorgente in Proprietà."
+
+msgid "Sync"
+msgstr "Sincronizza"
+
+msgid "Synchronize the translation with Crowdin"
+msgstr "Sincronizza la traduzione con Crowdin"
diff --git a/locales/ja.mo b/locales/ja.mo
index f6b5eed..40e5ff7 100644
Binary files a/locales/ja.mo and b/locales/ja.mo differ
diff --git a/locales/ja.po b/locales/ja.po
index fac47a1..e756955 100644
--- a/locales/ja.po
+++ b/locales/ja.po
@@ -2,8 +2,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: poedit\n"
 "Report-Msgid-Bugs-To: help at poedit.net\n"
-"POT-Creation-Date: 2015-01-10 16:00+0100\n"
-"PO-Revision-Date: 2015-03-10 12:33-0400\n"
+"POT-Creation-Date: 2015-05-27 11:31+0200\n"
+"PO-Revision-Date: 2015-05-27 05:17-0400\n"
 "Last-Translator: vslavik <vaclav at slavik.io>\n"
 "Language-Team: Japanese\n"
 "Language: ja_JP\n"
@@ -28,7 +28,7 @@ msgstr "今後表示しない"
 #, c-format
 msgid "%i line of file '%s' was not loaded correctly."
 msgid_plural "%i lines of file '%s' were not loaded correctly."
-msgstr[0] "%i行目 (ファイル '%s') が正しく読み込めませんでした。"
+msgstr[0] "ファイル ‘%2$s' の%1$i行目が正しく読み込めませんでした。"
 
 #, c-format
 msgid "Line %d of file '%s' is corrupted (not valid %s data)."
@@ -90,6 +90,15 @@ msgstr ""
 msgid "Error saving catalog"
 msgstr "カタログ保存エラー"
 
+msgid "PO Translation Files"
+msgstr "PO 翻訳ファイル"
+
+msgid "POT Translation Templates"
+msgstr "POT 翻訳テンプレート"
+
+msgid "All Translation Files"
+msgstr "すべての翻訳ファイル"
+
 msgid "Merging differences..."
 msgstr "差分を統合しています…"
 
@@ -109,6 +118,86 @@ msgstr "言語選択"
 msgid "You must restart Poedit for this change to take effect."
 msgstr "変更を有効にするには Poedit を再起動してください。"
 
+msgid "Downloading translations is disabled in this project."
+msgstr "このプロジェクトでは、翻訳のダウンロードが無効になっています。"
+
+msgid "Not authorized, please sign in again."
+msgstr "未認証です。もう一度ログインしてください。"
+
+msgid "Sign in to Crowdin"
+msgstr "Crowdin にログイン"
+
+msgid ""
+"Crowdin is an online localization management platform and collaborative "
+"translation tool. Poedit can seamlessly sync PO files managed at Crowdin."
+msgstr ""
+"Crowdin は、オンラインのローカリゼーション管理プラットフォームであり、共同翻"
+"訳ツールです。Poedit は Crowdin で管理されている PO ファイルをシームレスに同"
+"期することができます。"
+
+msgid "Sign In"
+msgstr "ログイン"
+
+msgid "Sign in"
+msgstr "ログイン"
+
+msgid "Sign Out"
+msgstr "ログアウト"
+
+msgid "Sign out"
+msgstr "ログアウト"
+
+msgid "Waiting for authentication…"
+msgstr "認証を待機中…"
+
+msgid "Updating user information…"
+msgstr "ユーザー情報を更新しています…"
+
+msgid "Signed in as:"
+msgstr "ログイン中:"
+
+msgid "Learn More About Crowdin"
+msgstr "Crowdin について"
+
+msgid "Learn more about Crowdin"
+msgstr "Crowdin について"
+
+msgid "Open Crowdin translation"
+msgstr "Crowdin 翻訳を開く"
+
+msgid "Project:"
+msgstr "プロジェクト:"
+
+msgid "Language:"
+msgstr "言語:"
+
+msgid "File:"
+msgstr "ファイル:"
+
+msgid "No translation projects listed in your Crowdin account."
+msgstr "あなたの Crowdin アカウントには翻訳プロジェクトが何もありません。"
+
+msgid "This project has no files that can be translated in Poedit."
+msgstr "このプロジェクトには Poedit で翻訳できるファイルがありません。"
+
+msgid "This file can only be edited in Crowdin’s web interface."
+msgstr "このファイルは Crowdin の Web インターフェイスでのみ編集できます。"
+
+msgid "Downloading latest translations…"
+msgstr "最新の翻訳をダウンロード中…"
+
+msgid "Syncing with Crowdin"
+msgstr "Crowdin と同期中"
+
+msgid "Syncing with Crowdin failed."
+msgstr "Crowdin との同期に失敗しました。"
+
+msgid "Crowdin error"
+msgstr "Crowdin エラー"
+
+msgid "Uploading translations…"
+msgstr "翻訳をアップロード中…"
+
 msgid "&Copy"
 msgstr "コピー (&C)"
 
@@ -155,6 +244,12 @@ msgstr ""
 msgid "don't delete temporary files (for debugging)"
 msgstr "一時ファイルを削除しない (デバッグ向け)"
 
+msgid "handle a poedit:// URI"
+msgstr "poedit:// URI を処理"
+
+msgid "Failed to communicate with Poedit process."
+msgstr ""
+
 #, c-format
 msgid "Unhandled exception occurred: %s"
 msgstr "未処理例外が発生しました: %s"
@@ -165,12 +260,6 @@ msgstr "未処理例外が発生しました。"
 msgid "Open catalog"
 msgstr "カタログを開く"
 
-msgid "All Files"
-msgstr "すべてのファイル"
-
-msgid "PO Translation Files"
-msgstr "PO 翻訳ファイル"
-
 #, c-format
 msgid "File '%s' doesn't exist."
 msgstr "ファイル ‘%s’ が見つかりません。"
@@ -398,6 +487,20 @@ msgstr "複数形:"
 msgid "Translation:"
 msgstr "翻訳:"
 
+msgid ""
+"POT files are only templates and don’t contain any translations themselves.\n"
+"To make a translation, create a new PO file based on the template."
+msgstr ""
+"POT ファイルはテンプレートのみで、それ自体に翻訳は含まれていません。 \n"
+"翻訳を行うには、このテンプレートをベースにして新しい PO ファイルを作成しま"
+"す。"
+
+msgid "Create New Translation"
+msgstr "新しい翻訳を作成"
+
+msgid "Create new translation"
+msgstr "翻訳プロジェクトを新規作成する"
+
 #. TRANSLATORS: %s is language name in its basic form (as you
 #. would see e.g. in a list of supported languages). You may need
 #. to rephrase it, e.g. to an equivalent of "for language %s".
@@ -446,9 +549,6 @@ msgstr "HTML ファイル"
 msgid "Open catalog template"
 msgstr "カタログの雛形を開く"
 
-msgid "POT Translation Templates"
-msgstr "POT 翻訳テンプレート"
-
 msgid "Updating catalog"
 msgstr "カタログを更新中"
 
@@ -526,18 +626,23 @@ msgstr[0] "この翻訳を利用できますが、%d件の項目がまだ翻訳
 msgid "The translation is ready for use."
 msgstr "この翻訳は使用できます。"
 
-msgid "No references to this string found."
-msgstr "この文字列への参照は見つかりませんでした。"
-
-msgid "Please choose the reference you want to show:"
-msgstr "表示したい参照を選択してください:"
-
-msgid "References"
-msgstr "参照"
-
 msgid "Context:"
 msgstr "コンテキスト:"
 
+#, c-format
+msgid "Poedit automatically fixed invalid content in the file “%s”."
+msgstr "Poedit は、ファイル「%s」内の無効なコンテンツを自動的に修正しました。"
+
+msgid ""
+"The file contained duplicate items, which is not allowed in PO files and "
+"would prevent the file from being used. Poedit fixed the issue, but you "
+"should review translations of any items marked as fuzzy and correct them if "
+"necessary."
+msgstr ""
+"ファイルに重複する項目が含まれています。重複項目は PO ファイルでは許可されて"
+"おらず、ファイルの利用を妨げます。Poedit はこの問題を修正しましたが、未確定と"
+"してマークされている項目を確認し必要に応じて修正する必要があります。"
+
 msgid "Language of the translation isn't set."
 msgstr "翻訳の言語が設定されていません。"
 
@@ -547,6 +652,23 @@ msgstr "言語を設定"
 msgid "Set language"
 msgstr "言語を設定"
 
+#. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)."
+msgid ""
+"Suggestions are not available if the translation language is not set "
+"correctly. Other features, such as plural forms, may be affected as well."
+msgstr ""
+"翻訳言語が正しく設定されていない場合、提案は利用できません。また、複数形など"
+"の他の機能にも影響する可能性があります。"
+
+msgid "Language of the translation is the same as source language."
+msgstr "翻訳言語がソース言語と同一です。"
+
+msgid "Fix Language"
+msgstr "言語を修正"
+
+msgid "Fix language"
+msgstr "言語を修正"
+
 msgid ""
 "This catalog has entries with plural forms, but doesn't have Plural-Forms "
 "header configured."
@@ -582,6 +704,7 @@ msgid "Plural forms expression used by the catalog is unusual for %s."
 msgstr ""
 "このカタログで使われている複数形表現は、%sの一般的なものではありません。"
 
+#. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the catalog is unusual for %s.")"
 msgid "Review"
 msgstr "レビュー"
 
@@ -602,6 +725,11 @@ msgid "%d error"
 msgid_plural "%d errors"
 msgstr[0] "%d件のエラー"
 
+#, c-format
+msgid "%d entry"
+msgid_plural "%d entries"
+msgstr[0] "%d項目"
+
 msgid " (unsaved)"
 msgstr " (未保存)"
 
@@ -723,6 +851,9 @@ msgstr "すべて"
 msgid "Form %i"
 msgstr "形式 %i"
 
+msgid "Singular"
+msgstr "単数形"
+
 msgid "Zero"
 msgstr "0"
 
@@ -732,6 +863,9 @@ msgstr "1"
 msgid "Two"
 msgstr "2"
 
+msgid "Plural"
+msgstr "複数形"
+
 msgid "Other"
 msgstr "その他"
 
@@ -760,6 +894,12 @@ msgstr "サイドバーを隠す"
 msgid "Show Sidebar"
 msgstr "サイドバーを表示"
 
+msgid "Hide Status Bar"
+msgstr "ステータスバーを非表示"
+
+msgid "Show Status Bar"
+msgstr "ステータスバーを表示"
+
 msgid "Source text"
 msgstr "ソーステキスト"
 
@@ -769,6 +909,10 @@ msgstr "対訳"
 msgid "ID"
 msgstr "ID"
 
+#, c-format
+msgid "Source text — %s"
+msgstr "ソース テキスト — %s"
+
 msgid "unknown language"
 msgstr "不明な言語"
 
@@ -779,57 +923,73 @@ msgstr "翻訳 — %s"
 msgid "Error:"
 msgstr "エラー:"
 
-msgid "Project info"
-msgstr "情報"
+msgid "Source file"
+msgstr "ソースファイル"
 
-msgid "Project name and version:"
-msgstr "プロジェクト名とバージョン:"
+msgid "Source file occurrence:"
+msgstr "ソースファイルでの出現:"
 
-msgid "Language:"
-msgstr "言語:"
+msgid "Open in Editor"
+msgstr "エディターで開く"
 
-msgid "Team:"
-msgstr "翻訳チーム:"
+msgid "Open in editor"
+msgstr "エディターで開く"
 
-msgid "Team's email address:"
-msgstr "翻訳チームのメールアドレス:"
+msgid "No references for the selected item."
+msgstr "選択項目の参照情報はありません。"
 
-msgid "Charset:"
-msgstr "文字符号化法:"
+#, c-format
+msgid "Error opening file %s!"
+msgstr "ファイル %s を開く際にエラーが発生しました。"
 
-msgid "Source"
-msgstr "ソース"
+msgid "Find"
+msgstr "検索"
 
-msgid "Notes"
-msgstr "注記"
+msgid "Replace"
+msgstr "置き換え"
 
-msgid "Automatic translation"
-msgstr "自動翻訳"
+#. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.)
+msgid "Options"
+msgstr "設定"
 
-msgid "Fuzzy translation"
-msgstr "未確定翻訳"
+msgid "Ignore case"
+msgstr "大文字小文字を無視"
 
-msgid "Notes for translators:"
-msgstr "翻訳者への注記:"
+msgid "Wrap around"
+msgstr "回り込み"
 
-msgid "Comment:"
-msgstr "コメント:"
+msgid "Whole words only"
+msgstr "空白等で区切られた単語だけを探す"
 
-msgid "Source file"
-msgstr "ソースファイル"
+msgid "Find in source texts"
+msgstr "ソース テキストを検索"
 
-msgid "Source file occurrence:"
-msgstr "ソースファイルでの出現:"
+msgid "Find in translations"
+msgstr "翻訳された文字列を検索対象に含める"
 
-msgid "Open in Editor"
-msgstr "エディターで開く"
+msgid "Find in comments"
+msgstr "コメントを検索対象に含める"
 
-msgid "Open in editor"
-msgstr "エディターで開く"
+msgid "Close"
+msgstr "閉じる"
 
-#, c-format
-msgid "Error opening file %s!"
-msgstr "ファイル %s を開く際にエラーが発生しました。"
+msgid "Replace All"
+msgstr "すべて置換"
+
+msgid "Replace all"
+msgstr "すべて置換"
+
+msgid "< &Previous"
+msgstr "< 前へ (&P)"
+
+msgid "&Next >"
+msgstr "次へ > (&N)"
+
+msgid "String to find"
+msgstr "検索する文字列"
+
+msgid "Replacement string"
+msgstr "置換文字列"
 
 #, c-format
 msgid "Cannot execute program: %s"
@@ -1031,9 +1191,19 @@ msgstr "新規"
 msgid "Edit"
 msgstr "編集"
 
+msgid "Delete extractor"
+msgstr "抽出ツールを削除"
+
+#, c-format
+msgid "Are you sure you want to delete the “%s” extractor?"
+msgstr "本当に「%s」抽出ツールを削除してもよいですか ?"
+
 msgid "Extractors"
 msgstr "抽出ツール"
 
+msgid "Accounts"
+msgstr "アカウント"
+
 msgid "Automatically check for updates"
 msgstr "自動的に更新を確認"
 
@@ -1076,8 +1246,41 @@ msgstr "既存ファイルのフォーマットを保護する"
 msgid "Advanced"
 msgstr "上級者モード"
 
-msgid "Additional keywords"
-msgstr "追加キーワード"
+msgid ""
+"<big>Drag and Drop Folders Here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+"<big>フォルダーをここにドラッグアンドドロップ</big>\n"
+"\n"
+"または [+] ボタンを使ってください。"
+
+msgid ""
+"<big>Drag and drop folders here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+"<big>フォルダーをここにドラッグアンドドロップ</big>\n"
+"\n"
+"または [+] ボタンを使ってください。"
+
+msgid "Add Folders..."
+msgstr "フォルダーを追加…"
+
+msgid "Add folders..."
+msgstr "フォルダーを追加…"
+
+msgid "Add Files..."
+msgstr "ファイルを追加…"
+
+msgid "Add files..."
+msgstr "ファイルを追加…"
+
+msgid "Add Wildcard..."
+msgstr "ワイルドカードを追加…"
+
+msgid "Add wildcard..."
+msgstr "ワイルドカードを追加…"
 
 msgid "Paths"
 msgstr "パス"
@@ -1085,6 +1288,9 @@ msgstr "パス"
 msgid "Excluded paths"
 msgstr "除外するパス"
 
+msgid "Additional keywords"
+msgstr "追加キーワード"
+
 msgid "Name of the project the translation is for"
 msgstr "翻訳するプロジェクトの名称"
 
@@ -1098,6 +1304,9 @@ msgid "Please save the file first. This section cannot be edited until then."
 msgstr ""
 "まずファイルを保存してください。保存するまでこのセクションは編集できません。"
 
+msgid "Comment:"
+msgstr "コメント:"
+
 msgid "OK"
 msgstr "OK"
 
@@ -1107,42 +1316,6 @@ msgstr "クリア(&L)"
 msgid "Clear the comment"
 msgstr "コメントのクリア"
 
-msgid "Find..."
-msgstr "検索…"
-
-msgid "String to find:"
-msgstr "検索する文字列:"
-
-msgid "Case sensitive"
-msgstr "大小文字を区別する"
-
-msgid "Start from the first item"
-msgstr "最初の項目から順に検索する"
-
-msgid "Whole words only"
-msgstr "空白等で区切られた単語だけを探す"
-
-msgid "Find in original strings"
-msgstr "原文を検索対象に含める"
-
-msgid "Find in translations"
-msgstr "翻訳された文字列を検索対象に含める"
-
-msgid "Find in comments"
-msgstr "コメントを検索対象に含める"
-
-msgid "Find in automatic comments"
-msgstr "自動コメントを検索対象に含める"
-
-msgid "Close"
-msgstr "閉じる"
-
-msgid "< &Previous"
-msgstr "< 前へ (&P)"
-
-msgid "&Next >"
-msgstr "次へ > (&N)"
-
 msgid "Create new translations project"
 msgstr "翻訳プロジェクトを作成する"
 
@@ -1197,6 +1370,12 @@ msgstr "開く… (&O)"
 msgid "Open Recent"
 msgstr "最近のファイルを開く"
 
+msgid "Open from Crowdin..."
+msgstr "Crowdin から開く…"
+
+msgid "Open From Crowdin..."
+msgstr "Crowdin から開く…"
+
 msgid "&Save"
 msgstr "保存 (&S)"
 
@@ -1245,14 +1424,17 @@ msgstr "参照画面の表示 (&S)"
 msgid "&Find..."
 msgstr "検索… (&F)"
 
+msgid "Replace..."
+msgstr "置換…"
+
 msgid "Find next"
 msgstr "次を検索"
 
 msgid "Find previous"
 msgstr "前を検索"
 
-msgid "Find"
-msgstr "検索"
+msgid "Find and Replace..."
+msgstr "検索・置換"
 
 msgid "Find Next"
 msgstr "次を検索"
@@ -1293,6 +1475,12 @@ msgstr "コンテクストでグループ化 (&G)"
 msgid "&Group By Context"
 msgstr "コンテクストでグループ化 (&G)"
 
+msgid "Entries with errors first"
+msgstr "エラーのある項目を先頭に表示"
+
+msgid "Entries with Errors First"
+msgstr "エラーのある項目を先頭に表示"
+
 msgid "&Untranslated entries first"
 msgstr "未訳の項目を先頭に (&U)"
 
@@ -1302,6 +1490,9 @@ msgstr "未訳の項目を先頭に (&U)"
 msgid "Show sidebar"
 msgstr "サイドバーを表示"
 
+msgid "Show status bar"
+msgstr "ステータスバーを表示"
+
 msgid "C&atalog"
 msgstr "カタログ(&A)"
 
@@ -1317,6 +1508,9 @@ msgstr "POT ファイルから更新… (&P)"
 msgid "Update from &POT File..."
 msgstr "POT ファイルから更新… (&P)"
 
+msgid "Sync with Crowdin"
+msgstr "Crowdin と同期"
+
 msgid "Fill missing translations from &TM..."
 msgstr "翻訳メモリを使って未翻訳項目を埋める… (&T)"
 
@@ -1444,6 +1638,9 @@ msgstr ""
 msgid "Catalog properties"
 msgstr "カタログの設定"
 
+msgid "Project name and version:"
+msgstr "プロジェクト名とバージョン:"
+
 msgid "Plural Forms:"
 msgstr "複数形:"
 
@@ -1456,17 +1653,29 @@ msgstr "カスタム表現を使用"
 msgid "Learn about plural forms"
 msgstr "複数形とは"
 
+msgid "Charset:"
+msgstr "文字符号化法:"
+
+msgid "Team:"
+msgstr "翻訳チーム:"
+
+msgid "Team's email address:"
+msgstr "翻訳チームのメールアドレス:"
+
 msgid "Translation properties"
 msgstr "翻訳の設定"
 
+msgid "Sources paths"
+msgstr "ソースの検索パス"
+
 msgid "Extract text from source files in the following directories:"
 msgstr "以下のディレクトリのソースファイルからテキストを抽出:"
 
 msgid "Base path:"
 msgstr "ベースのパス:"
 
-msgid "Sources paths"
-msgstr "ソースの検索パス"
+msgid "Sources keywords"
+msgstr "ソース中のキーワード"
 
 msgid ""
 "Use these keywords (function names) to recognize translatable strings\n"
@@ -1478,9 +1687,6 @@ msgstr ""
 msgid "Learn about gettext keywords"
 msgstr "gettext キーワードとは"
 
-msgid "Sources keywords"
-msgstr "ソース中のキーワード"
-
 msgid "Update summary"
 msgstr "要約を更新"
 
@@ -1529,7 +1735,7 @@ msgstr "カタログの更新 - ソースと同期させる"
 msgid "Toggled if selected string has fuzzy translation"
 msgstr "選択した文字列に未確定翻訳がある場合は切り替えられます"
 
-msgid "Show or hide the sidebar."
+msgid "Show or hide the sidebar"
 msgstr "サイドバーを表示・非表示にする。"
 
 #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer.
@@ -1541,6 +1747,9 @@ msgid ""
 "translation corresponds to."
 msgstr "未確定翻訳が対応する、更新で変更される前の旧ソーステキスト。"
 
+msgid "Notes for translators:"
+msgstr "翻訳者への注記:"
+
 msgid "Add comment"
 msgstr "コメントを追加"
 
@@ -1619,15 +1828,24 @@ msgstr "翻訳を編集"
 msgid "Open an existing PO file and edit the translation."
 msgstr "既存の PO ファイルを開いて翻訳を編集する。"
 
-msgid "Create new translation"
-msgstr "翻訳プロジェクトを新規作成する"
-
 msgid ""
 "Take an existing PO file or POT template and create a new translation from "
 "it."
 msgstr ""
 "既存の PO または POT テンプレートから新しい翻訳プロジェクトを作成する。"
 
+msgid "Collaborate on a translation with Crowdin"
+msgstr "Crowdin で翻訳の共同作業をする"
+
+msgid ""
+"Download a file from Crowdin project, translate and sync your changes back."
+msgstr ""
+"Crowdin プロジェクトからファイルをダウンロードし、翻訳した後に変更内容を同期"
+"します。"
+
+msgid "What is Crowdin?"
+msgstr "Crowdin とは ?"
+
 msgid "There are no translations. That’s unusual."
 msgstr "翻訳が存在しません。何かがおかしいようです。"
 
@@ -1665,3 +1883,9 @@ msgstr "ソースから抽出"
 
 msgid "Configure source code extraction in Properties."
 msgstr "設定画面でソースコード抽出を設定できます。"
+
+msgid "Sync"
+msgstr "同期"
+
+msgid "Synchronize the translation with Crowdin"
+msgstr "Crowdin と翻訳を同期する"
diff --git a/locales/ka.mo b/locales/ka.mo
index 39ede40..33d69d6 100644
Binary files a/locales/ka.mo and b/locales/ka.mo differ
diff --git a/locales/ka.po b/locales/ka.po
index 0a3ba34..e2f5016 100644
--- a/locales/ka.po
+++ b/locales/ka.po
@@ -2,15 +2,15 @@ msgid ""
 msgstr ""
 "Project-Id-Version: poedit\n"
 "Report-Msgid-Bugs-To: help at poedit.net\n"
-"POT-Creation-Date: 2015-01-10 16:00+0100\n"
-"PO-Revision-Date: 2015-03-10 12:33-0400\n"
+"POT-Creation-Date: 2015-05-27 11:31+0200\n"
+"PO-Revision-Date: 2015-05-27 05:17-0400\n"
 "Last-Translator: vslavik <vaclav at slavik.io>\n"
 "Language-Team: Georgian\n"
 "Language: ka_GE\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
 "X-Generator: crowdin.com\n"
 "X-Crowdin-Project: poedit\n"
 "X-Crowdin-Language: ka\n"
@@ -29,6 +29,7 @@ msgstr "ეს შეტყობინება მეტი აღარ მ
 msgid "%i line of file '%s' was not loaded correctly."
 msgid_plural "%i lines of file '%s' were not loaded correctly."
 msgstr[0] ""
+msgstr[1] ""
 
 #, c-format
 msgid "Line %d of file '%s' is corrupted (not valid %s data)."
@@ -89,6 +90,15 @@ msgstr ""
 msgid "Error saving catalog"
 msgstr "შეცდომა კატალოგის დამახსოვრებისას"
 
+msgid "PO Translation Files"
+msgstr ""
+
+msgid "POT Translation Templates"
+msgstr ""
+
+msgid "All Translation Files"
+msgstr ""
+
 msgid "Merging differences..."
 msgstr "მიმდინარეობს ცვლილებების შეთავსება..."
 
@@ -108,6 +118,83 @@ msgstr "ენების ამორჩევა"
 msgid "You must restart Poedit for this change to take effect."
 msgstr "ამ ცვლილების გასააქტიურებლად Poedit თავიდან უნდა გამოიძახოთ."
 
+msgid "Downloading translations is disabled in this project."
+msgstr ""
+
+msgid "Not authorized, please sign in again."
+msgstr ""
+
+msgid "Sign in to Crowdin"
+msgstr ""
+
+msgid ""
+"Crowdin is an online localization management platform and collaborative "
+"translation tool. Poedit can seamlessly sync PO files managed at Crowdin."
+msgstr ""
+
+msgid "Sign In"
+msgstr ""
+
+msgid "Sign in"
+msgstr ""
+
+msgid "Sign Out"
+msgstr ""
+
+msgid "Sign out"
+msgstr ""
+
+msgid "Waiting for authentication…"
+msgstr ""
+
+msgid "Updating user information…"
+msgstr ""
+
+msgid "Signed in as:"
+msgstr ""
+
+msgid "Learn More About Crowdin"
+msgstr ""
+
+msgid "Learn more about Crowdin"
+msgstr ""
+
+msgid "Open Crowdin translation"
+msgstr ""
+
+msgid "Project:"
+msgstr ""
+
+msgid "Language:"
+msgstr "ენა:"
+
+msgid "File:"
+msgstr ""
+
+msgid "No translation projects listed in your Crowdin account."
+msgstr ""
+
+msgid "This project has no files that can be translated in Poedit."
+msgstr ""
+
+msgid "This file can only be edited in Crowdin’s web interface."
+msgstr ""
+
+msgid "Downloading latest translations…"
+msgstr ""
+
+msgid "Syncing with Crowdin"
+msgstr ""
+
+msgid "Syncing with Crowdin failed."
+msgstr ""
+
+msgid "Crowdin error"
+msgstr ""
+
+msgid "Uploading translations…"
+msgstr ""
+
 msgid "&Copy"
 msgstr ""
 
@@ -152,6 +239,12 @@ msgstr ""
 msgid "don't delete temporary files (for debugging)"
 msgstr "დროებითი ფაილების შენარჩუნება (დიაგნოსტიკის მიზნი)"
 
+msgid "handle a poedit:// URI"
+msgstr ""
+
+msgid "Failed to communicate with Poedit process."
+msgstr ""
+
 #, c-format
 msgid "Unhandled exception occurred: %s"
 msgstr ""
@@ -162,12 +255,6 @@ msgstr ""
 msgid "Open catalog"
 msgstr "კატალოგის გახსნა"
 
-msgid "All Files"
-msgstr ""
-
-msgid "PO Translation Files"
-msgstr ""
-
 #, c-format
 msgid "File '%s' doesn't exist."
 msgstr "ფაილი ’%s’ არ არსებობს."
@@ -397,6 +484,17 @@ msgstr "მრავლობითში:"
 msgid "Translation:"
 msgstr "თარგმანი:"
 
+msgid ""
+"POT files are only templates and don’t contain any translations themselves.\n"
+"To make a translation, create a new PO file based on the template."
+msgstr ""
+
+msgid "Create New Translation"
+msgstr ""
+
+msgid "Create new translation"
+msgstr ""
+
 #. TRANSLATORS: %s is language name in its basic form (as you
 #. would see e.g. in a list of supported languages). You may need
 #. to rephrase it, e.g. to an equivalent of "for language %s".
@@ -444,9 +542,6 @@ msgstr ""
 msgid "Open catalog template"
 msgstr "კატალოგის შაბლონის გახსნა"
 
-msgid "POT Translation Templates"
-msgstr ""
-
 msgid "Updating catalog"
 msgstr "კატალოგის განახლება"
 
@@ -473,6 +568,7 @@ msgstr ""
 msgid "%d issue with the translation found."
 msgid_plural "%d issues with the translation found."
 msgstr[0] "თარგმანთან დაკავშირებით წარმოიშვა %d შეფერხება."
+msgstr[1] "თარგმანთან დაკავშირებით წარმოიშვა %d შეფერხება."
 
 msgid "Validation results"
 msgstr "ვალიდაციის შედეგები"
@@ -515,22 +611,25 @@ msgid "The translation is ready for use, but %d entry is not translated yet."
 msgid_plural ""
 "The translation is ready for use, but %d entries are not translated yet."
 msgstr[0] ""
+msgstr[1] ""
 
 msgid "The translation is ready for use."
 msgstr "თარგმანი გამოსაყენებლად მზად არის."
 
-msgid "No references to this string found."
-msgstr "ამ სტრიქონზე ვერაფერი მოვიძიე."
-
-msgid "Please choose the reference you want to show:"
-msgstr "გთხოვთ ამოირჩიეთ დახმარება, რომლის ნახვაც გნებავთ"
-
-msgid "References"
-msgstr "დახმარებები"
-
 msgid "Context:"
 msgstr "კონტექსტი:"
 
+#, c-format
+msgid "Poedit automatically fixed invalid content in the file “%s”."
+msgstr ""
+
+msgid ""
+"The file contained duplicate items, which is not allowed in PO files and "
+"would prevent the file from being used. Poedit fixed the issue, but you "
+"should review translations of any items marked as fuzzy and correct them if "
+"necessary."
+msgstr ""
+
 msgid "Language of the translation isn't set."
 msgstr ""
 
@@ -540,6 +639,21 @@ msgstr ""
 msgid "Set language"
 msgstr ""
 
+#. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)."
+msgid ""
+"Suggestions are not available if the translation language is not set "
+"correctly. Other features, such as plural forms, may be affected as well."
+msgstr ""
+
+msgid "Language of the translation is the same as source language."
+msgstr ""
+
+msgid "Fix Language"
+msgstr ""
+
+msgid "Fix language"
+msgstr ""
+
 msgid ""
 "This catalog has entries with plural forms, but doesn't have Plural-Forms "
 "header configured."
@@ -576,6 +690,7 @@ msgstr "ჰედერის გამოსწორება"
 msgid "Plural forms expression used by the catalog is unusual for %s."
 msgstr ""
 
+#. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the catalog is unusual for %s.")"
 msgid "Review"
 msgstr ""
 
@@ -595,6 +710,13 @@ msgstr ""
 msgid "%d error"
 msgid_plural "%d errors"
 msgstr[0] ""
+msgstr[1] ""
+
+#, c-format
+msgid "%d entry"
+msgid_plural "%d entries"
+msgstr[0] ""
+msgstr[1] ""
 
 msgid " (unsaved)"
 msgstr ""
@@ -656,6 +778,7 @@ msgstr ""
 msgid "%d entry was filled from the translation memory."
 msgid_plural "%d entries were filled from the translation memory."
 msgstr[0] ""
+msgstr[1] ""
 
 msgid ""
 "The translations were marked as fuzzy, because they may be inaccurate. You "
@@ -681,6 +804,7 @@ msgstr ""
 msgid "Translated %u string"
 msgid_plural "Translated %u strings"
 msgstr[0] ""
+msgstr[1] ""
 
 msgid "Copy from source text"
 msgstr "საწყისი ტექსტიდან კოპირება"
@@ -710,6 +834,9 @@ msgstr ""
 msgid "Form %i"
 msgstr "%i-დან"
 
+msgid "Singular"
+msgstr ""
+
 msgid "Zero"
 msgstr ""
 
@@ -719,6 +846,9 @@ msgstr ""
 msgid "Two"
 msgstr ""
 
+msgid "Plural"
+msgstr ""
+
 msgid "Other"
 msgstr ""
 
@@ -747,6 +877,12 @@ msgstr ""
 msgid "Show Sidebar"
 msgstr ""
 
+msgid "Hide Status Bar"
+msgstr ""
+
+msgid "Show Status Bar"
+msgstr ""
+
 msgid "Source text"
 msgstr "წყაროს ტექსტი:"
 
@@ -756,6 +892,10 @@ msgstr "თარგმანი"
 msgid "ID"
 msgstr ""
 
+#, c-format
+msgid "Source text — %s"
+msgstr ""
+
 msgid "unknown language"
 msgstr ""
 
@@ -766,57 +906,73 @@ msgstr ""
 msgid "Error:"
 msgstr "შეცდომა:"
 
-msgid "Project info"
-msgstr "ინფორმაცია პროექტზე"
+msgid "Source file"
+msgstr "საწყისი ფაილი"
 
-msgid "Project name and version:"
-msgstr "პროექტის სახელი და ვერსია:"
+msgid "Source file occurrence:"
+msgstr "წყაროს ფაილი:"
 
-msgid "Language:"
-msgstr "ენა:"
+msgid "Open in Editor"
+msgstr ""
 
-msgid "Team:"
-msgstr "ჯგუფი:"
+msgid "Open in editor"
+msgstr ""
 
-msgid "Team's email address:"
-msgstr "ჯგუფის ელფოსტა:"
+msgid "No references for the selected item."
+msgstr ""
 
-msgid "Charset:"
-msgstr "კოდირება:"
+#, c-format
+msgid "Error opening file %s!"
+msgstr "შეცდომა %s ფაილის გამოძახებისას!"
 
-msgid "Source"
-msgstr "წყარო"
+msgid "Find"
+msgstr ""
 
-msgid "Notes"
-msgstr "შენიშვნები"
+msgid "Replace"
+msgstr ""
 
-msgid "Automatic translation"
-msgstr "ავტომატური თარგმანი:"
+#. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.)
+msgid "Options"
+msgstr ""
 
-msgid "Fuzzy translation"
-msgstr "გაუმართავი თარგმანი"
+msgid "Ignore case"
+msgstr ""
 
-msgid "Notes for translators:"
-msgstr "შენიშვნები მთარგმნელთათვის:"
+msgid "Wrap around"
+msgstr ""
 
-msgid "Comment:"
-msgstr "შენიშვნები:"
+msgid "Whole words only"
+msgstr "მხოლოდ მთლიანი სიტყვები"
 
-msgid "Source file"
-msgstr "საწყისი ფაილი"
+msgid "Find in source texts"
+msgstr ""
 
-msgid "Source file occurrence:"
-msgstr "წყაროს ფაილი:"
+msgid "Find in translations"
+msgstr ""
 
-msgid "Open in Editor"
+msgid "Find in comments"
+msgstr "შენიშვნებში ძიება"
+
+msgid "Close"
+msgstr "დაკეტვა"
+
+msgid "Replace All"
 msgstr ""
 
-msgid "Open in editor"
+msgid "Replace all"
 msgstr ""
 
-#, c-format
-msgid "Error opening file %s!"
-msgstr "შეცდომა %s ფაილის გამოძახებისას!"
+msgid "< &Previous"
+msgstr ""
+
+msgid "&Next >"
+msgstr ""
+
+msgid "String to find"
+msgstr ""
+
+msgid "Replacement string"
+msgstr ""
 
 #, c-format
 msgid "Cannot execute program: %s"
@@ -1010,9 +1166,19 @@ msgstr "ახალი"
 msgid "Edit"
 msgstr "დამუშავება"
 
+msgid "Delete extractor"
+msgstr ""
+
+#, c-format
+msgid "Are you sure you want to delete the “%s” extractor?"
+msgstr ""
+
 msgid "Extractors"
 msgstr ""
 
+msgid "Accounts"
+msgstr ""
+
 msgid "Automatically check for updates"
 msgstr ""
 
@@ -1051,7 +1217,34 @@ msgstr ""
 msgid "Advanced"
 msgstr ""
 
-msgid "Additional keywords"
+msgid ""
+"<big>Drag and Drop Folders Here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+
+msgid ""
+"<big>Drag and drop folders here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+
+msgid "Add Folders..."
+msgstr ""
+
+msgid "Add folders..."
+msgstr ""
+
+msgid "Add Files..."
+msgstr ""
+
+msgid "Add files..."
+msgstr ""
+
+msgid "Add Wildcard..."
+msgstr ""
+
+msgid "Add wildcard..."
 msgstr ""
 
 msgid "Paths"
@@ -1060,6 +1253,9 @@ msgstr "მდებარეობები"
 msgid "Excluded paths"
 msgstr ""
 
+msgid "Additional keywords"
+msgstr ""
+
 msgid "Name of the project the translation is for"
 msgstr ""
 
@@ -1072,6 +1268,9 @@ msgstr "UTF-8 (რეკომენდირებულია)"
 msgid "Please save the file first. This section cannot be edited until then."
 msgstr ""
 
+msgid "Comment:"
+msgstr "შენიშვნები:"
+
 msgid "OK"
 msgstr "კარგი"
 
@@ -1081,42 +1280,6 @@ msgstr "გა&წმენდა"
 msgid "Clear the comment"
 msgstr "დოკუმენტის გაწმენდა"
 
-msgid "Find..."
-msgstr "იპოვე..."
-
-msgid "String to find:"
-msgstr "საძიებელი ტექსტი:"
-
-msgid "Case sensitive"
-msgstr "განასხვავე დიდი/პატარა ასოები"
-
-msgid "Start from the first item"
-msgstr "პირველი ელემენტიდან დაწყება"
-
-msgid "Whole words only"
-msgstr "მხოლოდ მთლიანი სიტყვები"
-
-msgid "Find in original strings"
-msgstr "იპოვე საწყის/სათარგმნელ ტექსტებში"
-
-msgid "Find in translations"
-msgstr ""
-
-msgid "Find in comments"
-msgstr "შენიშვნებში ძიება"
-
-msgid "Find in automatic comments"
-msgstr "იპოვე ავტომატურ შენიშვნებში"
-
-msgid "Close"
-msgstr "დაკეტვა"
-
-msgid "< &Previous"
-msgstr ""
-
-msgid "&Next >"
-msgstr ""
-
 msgid "Create new translations project"
 msgstr "შექმენი ახალი სათარგმი პროექტი"
 
@@ -1171,6 +1334,12 @@ msgstr "გ&ახსნა..."
 msgid "Open Recent"
 msgstr ""
 
+msgid "Open from Crowdin..."
+msgstr ""
+
+msgid "Open From Crowdin..."
+msgstr ""
+
 msgid "&Save"
 msgstr "შ&ენახვა"
 
@@ -1219,13 +1388,16 @@ msgstr "&მითითებების ჩვენება"
 msgid "&Find..."
 msgstr "&იპოვე..."
 
+msgid "Replace..."
+msgstr ""
+
 msgid "Find next"
 msgstr ""
 
 msgid "Find previous"
 msgstr ""
 
-msgid "Find"
+msgid "Find and Replace..."
 msgstr ""
 
 msgid "Find Next"
@@ -1267,6 +1439,12 @@ msgstr ""
 msgid "&Group By Context"
 msgstr ""
 
+msgid "Entries with errors first"
+msgstr ""
+
+msgid "Entries with Errors First"
+msgstr ""
+
 msgid "&Untranslated entries first"
 msgstr "&ჯერ უთარგმნელი შენატანები"
 
@@ -1276,6 +1454,9 @@ msgstr "&ჯერ უთარგმნელი შენატანები
 msgid "Show sidebar"
 msgstr ""
 
+msgid "Show status bar"
+msgstr ""
+
 msgid "C&atalog"
 msgstr "კ&ატალოგი"
 
@@ -1291,6 +1472,9 @@ msgstr "განაახლე &POT ფაილიდან..."
 msgid "Update from &POT File..."
 msgstr "&POT ფაილიდან განახლება..."
 
+msgid "Sync with Crowdin"
+msgstr ""
+
 msgid "Fill missing translations from &TM..."
 msgstr ""
 
@@ -1415,6 +1599,9 @@ msgstr ""
 msgid "Catalog properties"
 msgstr "კატალოგის თვისებები"
 
+msgid "Project name and version:"
+msgstr "პროექტის სახელი და ვერსია:"
+
 msgid "Plural Forms:"
 msgstr "მრავლობითი ფორმები:"
 
@@ -1427,17 +1614,29 @@ msgstr ""
 msgid "Learn about plural forms"
 msgstr "დამატებითი ინფორმაცია მრავლობითის ფორმებთან დაკავშირებით"
 
+msgid "Charset:"
+msgstr "კოდირება:"
+
+msgid "Team:"
+msgstr "ჯგუფი:"
+
+msgid "Team's email address:"
+msgstr "ჯგუფის ელფოსტა:"
+
 msgid "Translation properties"
 msgstr ""
 
+msgid "Sources paths"
+msgstr "წყაროს მდებარეობები"
+
 msgid "Extract text from source files in the following directories:"
 msgstr "შემდეგი ფოლდერებში წყარო-ფაილებიდან ტექსტის ამოღება:"
 
 msgid "Base path:"
 msgstr "ძირითადი მდებარეობა:"
 
-msgid "Sources paths"
-msgstr "წყაროს მდებარეობები"
+msgid "Sources keywords"
+msgstr "წყაროს საკვანძო სიტყვები"
 
 msgid ""
 "Use these keywords (function names) to recognize translatable strings\n"
@@ -1449,9 +1648,6 @@ msgstr ""
 msgid "Learn about gettext keywords"
 msgstr ""
 
-msgid "Sources keywords"
-msgstr "წყაროს საკვანძო სიტყვები"
-
 msgid "Update summary"
 msgstr "შეჯამების განახლება"
 
@@ -1499,7 +1695,7 @@ msgstr "კატალოგის განახლება - წყარ
 msgid "Toggled if selected string has fuzzy translation"
 msgstr "შეანაცვლე ამორჩეული თარგმანის ’გაუმართავი’ სტატუსი"
 
-msgid "Show or hide the sidebar."
+msgid "Show or hide the sidebar"
 msgstr ""
 
 #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer.
@@ -1511,6 +1707,9 @@ msgid ""
 "translation corresponds to."
 msgstr ""
 
+msgid "Notes for translators:"
+msgstr "შენიშვნები მთარგმნელთათვის:"
+
 msgid "Add comment"
 msgstr ""
 
@@ -1583,14 +1782,21 @@ msgstr ""
 msgid "Open an existing PO file and edit the translation."
 msgstr ""
 
-msgid "Create new translation"
-msgstr ""
-
 msgid ""
 "Take an existing PO file or POT template and create a new translation from "
 "it."
 msgstr ""
 
+msgid "Collaborate on a translation with Crowdin"
+msgstr ""
+
+msgid ""
+"Download a file from Crowdin project, translate and sync your changes back."
+msgstr ""
+
+msgid "What is Crowdin?"
+msgstr ""
+
 msgid "There are no translations. That’s unusual."
 msgstr ""
 
@@ -1623,3 +1829,9 @@ msgstr ""
 
 msgid "Configure source code extraction in Properties."
 msgstr ""
+
+msgid "Sync"
+msgstr ""
+
+msgid "Synchronize the translation with Crowdin"
+msgstr ""
diff --git a/locales/kk.mo b/locales/kk.mo
index fc1a871..c153aea 100644
Binary files a/locales/kk.mo and b/locales/kk.mo differ
diff --git a/locales/kk.po b/locales/kk.po
index d98759d..1cf986b 100644
--- a/locales/kk.po
+++ b/locales/kk.po
@@ -2,8 +2,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: poedit\n"
 "Report-Msgid-Bugs-To: help at poedit.net\n"
-"POT-Creation-Date: 2015-01-10 16:00+0100\n"
-"PO-Revision-Date: 2015-03-10 12:33-0400\n"
+"POT-Creation-Date: 2015-05-27 11:31+0200\n"
+"PO-Revision-Date: 2015-05-27 05:17-0400\n"
 "Last-Translator: vslavik <vaclav at slavik.io>\n"
 "Language-Team: Kazakh\n"
 "Language: kk_KZ\n"
@@ -87,6 +87,15 @@ msgstr ""
 msgid "Error saving catalog"
 msgstr "Каталогты сақтау қатесі"
 
+msgid "PO Translation Files"
+msgstr ""
+
+msgid "POT Translation Templates"
+msgstr ""
+
+msgid "All Translation Files"
+msgstr ""
+
 msgid "Merging differences..."
 msgstr "Өзгерістерді біріктіру..."
 
@@ -106,6 +115,83 @@ msgstr "Тілді таңдау"
 msgid "You must restart Poedit for this change to take effect."
 msgstr "Өзгерістерді іске асыру үшін Poedit-ті қайта іске қосыңыз."
 
+msgid "Downloading translations is disabled in this project."
+msgstr ""
+
+msgid "Not authorized, please sign in again."
+msgstr ""
+
+msgid "Sign in to Crowdin"
+msgstr ""
+
+msgid ""
+"Crowdin is an online localization management platform and collaborative "
+"translation tool. Poedit can seamlessly sync PO files managed at Crowdin."
+msgstr ""
+
+msgid "Sign In"
+msgstr ""
+
+msgid "Sign in"
+msgstr ""
+
+msgid "Sign Out"
+msgstr ""
+
+msgid "Sign out"
+msgstr ""
+
+msgid "Waiting for authentication…"
+msgstr ""
+
+msgid "Updating user information…"
+msgstr ""
+
+msgid "Signed in as:"
+msgstr ""
+
+msgid "Learn More About Crowdin"
+msgstr ""
+
+msgid "Learn more about Crowdin"
+msgstr ""
+
+msgid "Open Crowdin translation"
+msgstr ""
+
+msgid "Project:"
+msgstr ""
+
+msgid "Language:"
+msgstr "Тіл:"
+
+msgid "File:"
+msgstr ""
+
+msgid "No translation projects listed in your Crowdin account."
+msgstr ""
+
+msgid "This project has no files that can be translated in Poedit."
+msgstr ""
+
+msgid "This file can only be edited in Crowdin’s web interface."
+msgstr ""
+
+msgid "Downloading latest translations…"
+msgstr ""
+
+msgid "Syncing with Crowdin"
+msgstr ""
+
+msgid "Syncing with Crowdin failed."
+msgstr ""
+
+msgid "Crowdin error"
+msgstr ""
+
+msgid "Uploading translations…"
+msgstr ""
+
 msgid "&Copy"
 msgstr ""
 
@@ -150,6 +236,12 @@ msgstr ""
 msgid "don't delete temporary files (for debugging)"
 msgstr "уақытша файлдарды өшірмеу (жөндеу режимі үшін пайдалы)"
 
+msgid "handle a poedit:// URI"
+msgstr ""
+
+msgid "Failed to communicate with Poedit process."
+msgstr ""
+
 #, c-format
 msgid "Unhandled exception occurred: %s"
 msgstr ""
@@ -160,12 +252,6 @@ msgstr ""
 msgid "Open catalog"
 msgstr "Каталогты ашу"
 
-msgid "All Files"
-msgstr "Барлық файлдар"
-
-msgid "PO Translation Files"
-msgstr ""
-
 #, c-format
 msgid "File '%s' doesn't exist."
 msgstr "'%s' файлы жоқ болып тұр."
@@ -393,6 +479,17 @@ msgstr "Көпше түрі:"
 msgid "Translation:"
 msgstr "Аударма:"
 
+msgid ""
+"POT files are only templates and don’t contain any translations themselves.\n"
+"To make a translation, create a new PO file based on the template."
+msgstr ""
+
+msgid "Create New Translation"
+msgstr ""
+
+msgid "Create new translation"
+msgstr ""
+
 #. TRANSLATORS: %s is language name in its basic form (as you
 #. would see e.g. in a list of supported languages). You may need
 #. to rephrase it, e.g. to an equivalent of "for language %s".
@@ -440,9 +537,6 @@ msgstr ""
 msgid "Open catalog template"
 msgstr "Каталог шаблонын ашу"
 
-msgid "POT Translation Templates"
-msgstr ""
-
 msgid "Updating catalog"
 msgstr "Каталогты жаңарту"
 
@@ -513,18 +607,20 @@ msgstr[0] ""
 msgid "The translation is ready for use."
 msgstr "Аударма қолдануға дайын."
 
-msgid "No references to this string found."
-msgstr "Бұл жолға сілтеулер табылмады."
-
-msgid "Please choose the reference you want to show:"
-msgstr "Көрсету керек байланысты тандаңыз:"
-
-msgid "References"
-msgstr "Сілтеулер"
-
 msgid "Context:"
 msgstr "Контекст:"
 
+#, c-format
+msgid "Poedit automatically fixed invalid content in the file “%s”."
+msgstr ""
+
+msgid ""
+"The file contained duplicate items, which is not allowed in PO files and "
+"would prevent the file from being used. Poedit fixed the issue, but you "
+"should review translations of any items marked as fuzzy and correct them if "
+"necessary."
+msgstr ""
+
 msgid "Language of the translation isn't set."
 msgstr ""
 
@@ -534,6 +630,21 @@ msgstr ""
 msgid "Set language"
 msgstr ""
 
+#. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)."
+msgid ""
+"Suggestions are not available if the translation language is not set "
+"correctly. Other features, such as plural forms, may be affected as well."
+msgstr ""
+
+msgid "Language of the translation is the same as source language."
+msgstr ""
+
+msgid "Fix Language"
+msgstr ""
+
+msgid "Fix language"
+msgstr ""
+
 msgid ""
 "This catalog has entries with plural forms, but doesn't have Plural-Forms "
 "header configured."
@@ -568,6 +679,7 @@ msgstr "Өрісті дұрыстау"
 msgid "Plural forms expression used by the catalog is unusual for %s."
 msgstr ""
 
+#. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the catalog is unusual for %s.")"
 msgid "Review"
 msgstr ""
 
@@ -588,6 +700,11 @@ msgid "%d error"
 msgid_plural "%d errors"
 msgstr[0] ""
 
+#, c-format
+msgid "%d entry"
+msgid_plural "%d entries"
+msgstr[0] ""
+
 msgid " (unsaved)"
 msgstr ""
 
@@ -701,6 +818,9 @@ msgstr ""
 msgid "Form %i"
 msgstr "Пішім %i"
 
+msgid "Singular"
+msgstr ""
+
 msgid "Zero"
 msgstr ""
 
@@ -710,6 +830,9 @@ msgstr ""
 msgid "Two"
 msgstr ""
 
+msgid "Plural"
+msgstr ""
+
 msgid "Other"
 msgstr ""
 
@@ -738,6 +861,12 @@ msgstr ""
 msgid "Show Sidebar"
 msgstr ""
 
+msgid "Hide Status Bar"
+msgstr ""
+
+msgid "Show Status Bar"
+msgstr ""
+
 msgid "Source text"
 msgstr "Бастапқы код мәтіні"
 
@@ -747,6 +876,10 @@ msgstr "Аударма"
 msgid "ID"
 msgstr ""
 
+#, c-format
+msgid "Source text — %s"
+msgstr ""
+
 msgid "unknown language"
 msgstr ""
 
@@ -757,57 +890,73 @@ msgstr ""
 msgid "Error:"
 msgstr "Қате:"
 
-msgid "Project info"
-msgstr "Жоба ақпараты"
+msgid "Source file"
+msgstr "Бастапқы код файлы"
 
-msgid "Project name and version:"
-msgstr "Жоба аты мен нұсқасы:"
+msgid "Source file occurrence:"
+msgstr "Бастапқы код файлында кездесу:"
 
-msgid "Language:"
-msgstr "Тіл:"
+msgid "Open in Editor"
+msgstr ""
 
-msgid "Team:"
-msgstr "Топ:"
+msgid "Open in editor"
+msgstr ""
 
-msgid "Team's email address:"
-msgstr "Топтың эл. пошта адресі:"
+msgid "No references for the selected item."
+msgstr ""
 
-msgid "Charset:"
-msgstr "Кодтауы:"
+#, c-format
+msgid "Error opening file %s!"
+msgstr "%s файлын ашу қатемен аяқталды!"
 
-msgid "Source"
-msgstr "Қайнар көзі"
+msgid "Find"
+msgstr ""
 
-msgid "Notes"
-msgstr "Белгілер"
+msgid "Replace"
+msgstr ""
 
-msgid "Automatic translation"
-msgstr "Автоаудару"
+#. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.)
+msgid "Options"
+msgstr ""
 
-msgid "Fuzzy translation"
-msgstr "Дәлсіз аударма"
+msgid "Ignore case"
+msgstr ""
 
-msgid "Notes for translators:"
-msgstr "Аудармашылар үшін ескертулер:"
+msgid "Wrap around"
+msgstr ""
 
-msgid "Comment:"
-msgstr "Түсіндірме:"
+msgid "Whole words only"
+msgstr "Тек толық сөздер"
 
-msgid "Source file"
-msgstr "Бастапқы код файлы"
+msgid "Find in source texts"
+msgstr ""
 
-msgid "Source file occurrence:"
-msgstr "Бастапқы код файлында кездесу:"
+msgid "Find in translations"
+msgstr ""
 
-msgid "Open in Editor"
+msgid "Find in comments"
+msgstr "Түсіндірмелер ішінен іздеу"
+
+msgid "Close"
+msgstr "Жабу"
+
+msgid "Replace All"
 msgstr ""
 
-msgid "Open in editor"
+msgid "Replace all"
 msgstr ""
 
-#, c-format
-msgid "Error opening file %s!"
-msgstr "%s файлын ашу қатемен аяқталды!"
+msgid "< &Previous"
+msgstr ""
+
+msgid "&Next >"
+msgstr ""
+
+msgid "String to find"
+msgstr ""
+
+msgid "Replacement string"
+msgstr ""
 
 #, c-format
 msgid "Cannot execute program: %s"
@@ -1000,9 +1149,19 @@ msgstr "Жаңа"
 msgid "Edit"
 msgstr "Түзету"
 
+msgid "Delete extractor"
+msgstr ""
+
+#, c-format
+msgid "Are you sure you want to delete the “%s” extractor?"
+msgstr ""
+
 msgid "Extractors"
 msgstr ""
 
+msgid "Accounts"
+msgstr ""
+
 msgid "Automatically check for updates"
 msgstr ""
 
@@ -1041,7 +1200,34 @@ msgstr ""
 msgid "Advanced"
 msgstr ""
 
-msgid "Additional keywords"
+msgid ""
+"<big>Drag and Drop Folders Here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+
+msgid ""
+"<big>Drag and drop folders here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+
+msgid "Add Folders..."
+msgstr ""
+
+msgid "Add folders..."
+msgstr ""
+
+msgid "Add Files..."
+msgstr ""
+
+msgid "Add files..."
+msgstr ""
+
+msgid "Add Wildcard..."
+msgstr ""
+
+msgid "Add wildcard..."
 msgstr ""
 
 msgid "Paths"
@@ -1050,6 +1236,9 @@ msgstr "Жолдар"
 msgid "Excluded paths"
 msgstr ""
 
+msgid "Additional keywords"
+msgstr ""
+
 msgid "Name of the project the translation is for"
 msgstr ""
 
@@ -1062,6 +1251,9 @@ msgstr "UTF-8 (ұсынылады)"
 msgid "Please save the file first. This section cannot be edited until then."
 msgstr ""
 
+msgid "Comment:"
+msgstr "Түсіндірме:"
+
 msgid "OK"
 msgstr "ОК"
 
@@ -1071,42 +1263,6 @@ msgstr "Та&зарту"
 msgid "Clear the comment"
 msgstr "Түсіндірмені өшіру"
 
-msgid "Find..."
-msgstr "Іздеу..."
-
-msgid "String to find:"
-msgstr "Ізделінетін жол:"
-
-msgid "Case sensitive"
-msgstr "Регистрге сезімтал"
-
-msgid "Start from the first item"
-msgstr "Бірінші элементтен бастау"
-
-msgid "Whole words only"
-msgstr "Тек толық сөздер"
-
-msgid "Find in original strings"
-msgstr "Бастапқы жолдар ішінен іздеу"
-
-msgid "Find in translations"
-msgstr ""
-
-msgid "Find in comments"
-msgstr "Түсіндірмелер ішінен іздеу"
-
-msgid "Find in automatic comments"
-msgstr "Авто түсіндірмелер ішінен іздеу"
-
-msgid "Close"
-msgstr "Жабу"
-
-msgid "< &Previous"
-msgstr ""
-
-msgid "&Next >"
-msgstr ""
-
 msgid "Create new translations project"
 msgstr "Жаңа аудармалар жобасын жасау"
 
@@ -1161,6 +1317,12 @@ msgstr "А&шу..."
 msgid "Open Recent"
 msgstr ""
 
+msgid "Open from Crowdin..."
+msgstr ""
+
+msgid "Open From Crowdin..."
+msgstr ""
+
 msgid "&Save"
 msgstr "&Сақтау"
 
@@ -1209,13 +1371,16 @@ msgstr "Ба&йланыстарды көрсету"
 msgid "&Find..."
 msgstr "І&здеу..."
 
+msgid "Replace..."
+msgstr ""
+
 msgid "Find next"
 msgstr ""
 
 msgid "Find previous"
 msgstr ""
 
-msgid "Find"
+msgid "Find and Replace..."
 msgstr ""
 
 msgid "Find Next"
@@ -1257,6 +1422,12 @@ msgstr ""
 msgid "&Group By Context"
 msgstr ""
 
+msgid "Entries with errors first"
+msgstr ""
+
+msgid "Entries with Errors First"
+msgstr ""
+
 msgid "&Untranslated entries first"
 msgstr "Алд&ымен аударылмаған нәрселер "
 
@@ -1266,6 +1437,9 @@ msgstr "Алд&ымен аударылмаған нәрселер "
 msgid "Show sidebar"
 msgstr ""
 
+msgid "Show status bar"
+msgstr ""
+
 msgid "C&atalog"
 msgstr "К&аталог"
 
@@ -1281,6 +1455,9 @@ msgstr "POT &файлынан жаңарту..."
 msgid "Update from &POT File..."
 msgstr "POT &файлынан жаңарту..."
 
+msgid "Sync with Crowdin"
+msgstr ""
+
 msgid "Fill missing translations from &TM..."
 msgstr ""
 
@@ -1404,6 +1581,9 @@ msgstr ""
 msgid "Catalog properties"
 msgstr "Каталог қасиеттері"
 
+msgid "Project name and version:"
+msgstr "Жоба аты мен нұсқасы:"
+
 msgid "Plural Forms:"
 msgstr "Көпше түрлері:"
 
@@ -1416,17 +1596,29 @@ msgstr ""
 msgid "Learn about plural forms"
 msgstr "Көпше түрлері жөнінде білу"
 
+msgid "Charset:"
+msgstr "Кодтауы:"
+
+msgid "Team:"
+msgstr "Топ:"
+
+msgid "Team's email address:"
+msgstr "Топтың эл. пошта адресі:"
+
 msgid "Translation properties"
 msgstr ""
 
+msgid "Sources paths"
+msgstr "Бастапқы кодтар орналасу жолдары"
+
 msgid "Extract text from source files in the following directories:"
 msgstr "Келесі бумалардағы бастапқы код файлдарынан мәтінді алу:"
 
 msgid "Base path:"
 msgstr "Негізгі жолы:"
 
-msgid "Sources paths"
-msgstr "Бастапқы кодтар орналасу жолдары"
+msgid "Sources keywords"
+msgstr "Бастапқы код кілт сөздері"
 
 msgid ""
 "Use these keywords (function names) to recognize translatable strings\n"
@@ -1438,9 +1630,6 @@ msgstr ""
 msgid "Learn about gettext keywords"
 msgstr ""
 
-msgid "Sources keywords"
-msgstr "Бастапқы код кілт сөздері"
-
 msgid "Update summary"
 msgstr "Жаңарту ақпараты"
 
@@ -1488,7 +1677,7 @@ msgstr "Каталогты жаңарту - бастапқы кодтармен
 msgid "Toggled if selected string has fuzzy translation"
 msgstr "Тандалған жол аудармасы дәл/дәлсіздігін көрсетуін ауыстырады."
 
-msgid "Show or hide the sidebar."
+msgid "Show or hide the sidebar"
 msgstr ""
 
 #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer.
@@ -1500,6 +1689,9 @@ msgid ""
 "translation corresponds to."
 msgstr ""
 
+msgid "Notes for translators:"
+msgstr "Аудармашылар үшін ескертулер:"
+
 msgid "Add comment"
 msgstr ""
 
@@ -1572,14 +1764,21 @@ msgstr ""
 msgid "Open an existing PO file and edit the translation."
 msgstr ""
 
-msgid "Create new translation"
-msgstr ""
-
 msgid ""
 "Take an existing PO file or POT template and create a new translation from "
 "it."
 msgstr ""
 
+msgid "Collaborate on a translation with Crowdin"
+msgstr ""
+
+msgid ""
+"Download a file from Crowdin project, translate and sync your changes back."
+msgstr ""
+
+msgid "What is Crowdin?"
+msgstr ""
+
 msgid "There are no translations. That’s unusual."
 msgstr ""
 
@@ -1612,3 +1811,9 @@ msgstr ""
 
 msgid "Configure source code extraction in Properties."
 msgstr ""
+
+msgid "Sync"
+msgstr ""
+
+msgid "Synchronize the translation with Crowdin"
+msgstr ""
diff --git a/locales/ko.mo b/locales/ko.mo
index cb59cdf..73a1408 100644
Binary files a/locales/ko.mo and b/locales/ko.mo differ
diff --git a/locales/ko.po b/locales/ko.po
index 24d9e92..383ca1a 100644
--- a/locales/ko.po
+++ b/locales/ko.po
@@ -2,8 +2,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: poedit\n"
 "Report-Msgid-Bugs-To: help at poedit.net\n"
-"POT-Creation-Date: 2015-01-10 16:00+0100\n"
-"PO-Revision-Date: 2015-03-10 12:33-0400\n"
+"POT-Creation-Date: 2015-05-27 11:31+0200\n"
+"PO-Revision-Date: 2015-05-27 05:17-0400\n"
 "Last-Translator: vslavik <vaclav at slavik.io>\n"
 "Language-Team: Korean\n"
 "Language: ko_KR\n"
@@ -88,6 +88,15 @@ msgstr ""
 msgid "Error saving catalog"
 msgstr "카탈로그 저장 오류"
 
+msgid "PO Translation Files"
+msgstr "PO 번역 파일"
+
+msgid "POT Translation Templates"
+msgstr "POT 번역 양식"
+
+msgid "All Translation Files"
+msgstr "모든 번역 파일"
+
 msgid "Merging differences..."
 msgstr "차이점 병합..."
 
@@ -107,6 +116,85 @@ msgstr "언어 선택"
 msgid "You must restart Poedit for this change to take effect."
 msgstr "바뀐 내용을 반영하려면 Poedit를 다시 시작해야 합니다."
 
+msgid "Downloading translations is disabled in this project."
+msgstr "이 프로젝트에서는 번역 다운로드를 사용할 수 없습니다."
+
+msgid "Not authorized, please sign in again."
+msgstr "인증하지 않았습니다. 다시 로그인하십시오."
+
+msgid "Sign in to Crowdin"
+msgstr "클라우드인에 접속"
+
+msgid ""
+"Crowdin is an online localization management platform and collaborative "
+"translation tool. Poedit can seamlessly sync PO files managed at Crowdin."
+msgstr ""
+"클라우드인은 온라인 번역 관리 플랫폼이며 협력을 기반으로 한 번역 도구입니다. "
+"PoEdit는 클라우드인에서 po 파일을 감쪽같이 동기화할 수 있습니다."
+
+msgid "Sign In"
+msgstr "접속"
+
+msgid "Sign in"
+msgstr "접속"
+
+msgid "Sign Out"
+msgstr "접속 끊기"
+
+msgid "Sign out"
+msgstr "접속 끊기"
+
+msgid "Waiting for authentication…"
+msgstr "인증 대기 중..."
+
+msgid "Updating user information…"
+msgstr "사용자 정보 업데이트 중..."
+
+msgid "Signed in as:"
+msgstr "다음 이름으로 로그인 함:"
+
+msgid "Learn More About Crowdin"
+msgstr "클라우드인 더 알아보기"
+
+msgid "Learn more about Crowdin"
+msgstr "클라우드인 더 알아보기"
+
+msgid "Open Crowdin translation"
+msgstr "클라우드인 번역 열기"
+
+msgid "Project:"
+msgstr "프로젝트:"
+
+msgid "Language:"
+msgstr "언어:"
+
+msgid "File:"
+msgstr "파일:"
+
+msgid "No translation projects listed in your Crowdin account."
+msgstr "클라우드인 계정에 번역 프로젝트가 없습니다."
+
+msgid "This project has no files that can be translated in Poedit."
+msgstr "이 프로젝트에는 PoEdit로 편집할 수 있는 파일이 없습니다."
+
+msgid "This file can only be edited in Crowdin’s web interface."
+msgstr "이 파일은 클라우드인 웹 인터페이스에서만 편집할 수 있습니다."
+
+msgid "Downloading latest translations…"
+msgstr "최신 번역 다운로드 중..."
+
+msgid "Syncing with Crowdin"
+msgstr "클라우드인과 동기화 중"
+
+msgid "Syncing with Crowdin failed."
+msgstr "클라우드인과 동기화에 실패했습니다."
+
+msgid "Crowdin error"
+msgstr "클라우드인 오류"
+
+msgid "Uploading translations…"
+msgstr "번역 업데이트 중..."
+
 msgid "&Copy"
 msgstr "복사(&C)"
 
@@ -153,6 +241,12 @@ msgstr ""
 msgid "don't delete temporary files (for debugging)"
 msgstr "(디버깅을 위해) 임시 파일을 지우지 않음"
 
+msgid "handle a poedit:// URI"
+msgstr "poedit:// URI 처리"
+
+msgid "Failed to communicate with Poedit process."
+msgstr "Poedit 프로세스와의 통신에 실패했습니다."
+
 #, c-format
 msgid "Unhandled exception occurred: %s"
 msgstr "처리하지 못한 오류 발생: %s"
@@ -163,12 +257,6 @@ msgstr "처리하지 못한 오류가 발생했습니다."
 msgid "Open catalog"
 msgstr "카탈로그 열기"
 
-msgid "All Files"
-msgstr "모든 파일"
-
-msgid "PO Translation Files"
-msgstr "PO 번역 파일"
-
 #, c-format
 msgid "File '%s' doesn't exist."
 msgstr "'%s' 파일이 존재하지 않습니다."
@@ -396,6 +484,19 @@ msgstr "복수 문장:"
 msgid "Translation:"
 msgstr "번역:"
 
+msgid ""
+"POT files are only templates and don’t contain any translations themselves.\n"
+"To make a translation, create a new PO file based on the template."
+msgstr ""
+"POT 파일은 양식일 뿐이며 어떤 번역 내용도 들어있지 않습니다.\n"
+"번역하려면, 이 양식을 기반으로 새 PO 파일을 만드십시오."
+
+msgid "Create New Translation"
+msgstr "새 번역 만들기"
+
+msgid "Create new translation"
+msgstr "새 번역 만들기"
+
 #. TRANSLATORS: %s is language name in its basic form (as you
 #. would see e.g. in a list of supported languages). You may need
 #. to rephrase it, e.g. to an equivalent of "for language %s".
@@ -443,9 +544,6 @@ msgstr "HTML 파일"
 msgid "Open catalog template"
 msgstr "카탈로그 양식 열기"
 
-msgid "POT Translation Templates"
-msgstr "POT 번역 양식"
-
 msgid "Updating catalog"
 msgstr "카탈로그 업데이트 중"
 
@@ -519,18 +617,23 @@ msgstr[0] "번역을 사용할 준비가 되지만, 아직 항목 %d개를 번
 msgid "The translation is ready for use."
 msgstr "번역을 사용할 준비가 되었습니다."
 
-msgid "No references to this string found."
-msgstr "이 문자열의 참조가 없습니다."
-
-msgid "Please choose the reference you want to show:"
-msgstr "보기 원하는 참조를 선택하십시오:"
-
-msgid "References"
-msgstr "참조"
-
 msgid "Context:"
 msgstr "문맥:"
 
+#, c-format
+msgid "Poedit automatically fixed invalid content in the file “%s”."
+msgstr "Poedit가 “%s” 파일의 잘못된 내용을 자동으로 수정했습니다."
+
+msgid ""
+"The file contained duplicate items, which is not allowed in PO files and "
+"would prevent the file from being used. Poedit fixed the issue, but you "
+"should review translations of any items marked as fuzzy and correct them if "
+"necessary."
+msgstr ""
+"PO 파일에서 허용하지 않는 중복 항목이 있으며, 이 때문에 파일을 사용하지 못합"
+"니다. Poedit에서 이 문제를 해결했지만 모호함 상태로 나타난 일부 항목의 번역"
+"을 검토해야 하며, 필요한 경우 해당 항목을 수정해야합니다."
+
 msgid "Language of the translation isn't set."
 msgstr "번역 언어를 설정하지 않았습니다."
 
@@ -540,6 +643,23 @@ msgstr "언어 설정"
 msgid "Set language"
 msgstr "언어 설정"
 
+#. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)."
+msgid ""
+"Suggestions are not available if the translation language is not set "
+"correctly. Other features, such as plural forms, may be affected as well."
+msgstr ""
+"번역 언어를 올바르게 선택하지 않으면 제안 기능을 사용할 수 없습니다. 서수와 "
+"같은 기능도 마찬가지로 영향을 받을 수 있습니다."
+
+msgid "Language of the translation is the same as source language."
+msgstr "번역 언어가 원본 언어와 같습니다."
+
+msgid "Fix Language"
+msgstr "언어 수정"
+
+msgid "Fix language"
+msgstr "언어 수정"
+
 msgid ""
 "This catalog has entries with plural forms, but doesn't have Plural-Forms "
 "header configured."
@@ -574,6 +694,7 @@ msgstr "헤더 수정"
 msgid "Plural forms expression used by the catalog is unusual for %s."
 msgstr "카탈로그에서 사용하는 서수 형식 표현식은 %s에 대해 드뭅니다."
 
+#. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the catalog is unusual for %s.")"
 msgid "Review"
 msgstr "검토"
 
@@ -594,6 +715,11 @@ msgid "%d error"
 msgid_plural "%d errors"
 msgstr[0] "오류 %d개"
 
+#, c-format
+msgid "%d entry"
+msgid_plural "%d entries"
+msgstr[0] "항목 %d개"
+
 msgid " (unsaved)"
 msgstr " (저장하지 않음)"
 
@@ -716,6 +842,9 @@ msgstr "모두"
 msgid "Form %i"
 msgstr "%i번 양식"
 
+msgid "Singular"
+msgstr "단수"
+
 msgid "Zero"
 msgstr "영"
 
@@ -725,6 +854,9 @@ msgstr "하나"
 msgid "Two"
 msgstr "둘"
 
+msgid "Plural"
+msgstr "복수"
+
 msgid "Other"
 msgstr "기타"
 
@@ -753,6 +885,12 @@ msgstr "가장자리 표시줄 숨김"
 msgid "Show Sidebar"
 msgstr "가장자리 표시줄 표시"
 
+msgid "Hide Status Bar"
+msgstr "상태 표시줄 숨기기"
+
+msgid "Show Status Bar"
+msgstr "상태 표시줄 표시"
+
 msgid "Source text"
 msgstr "소스 텍스트"
 
@@ -762,6 +900,10 @@ msgstr "번역"
 msgid "ID"
 msgstr "ID"
 
+#, c-format
+msgid "Source text — %s"
+msgstr "원본 단어 — %s"
+
 msgid "unknown language"
 msgstr "알 수 없는 언어"
 
@@ -772,57 +914,73 @@ msgstr "번역 — %s"
 msgid "Error:"
 msgstr "오류:"
 
-msgid "Project info"
-msgstr "프로젝트 정보"
+msgid "Source file"
+msgstr "소스 파일"
 
-msgid "Project name and version:"
-msgstr "프로젝트 이름과 버전:"
+msgid "Source file occurrence:"
+msgstr "소스 파일 발견 횟수:"
 
-msgid "Language:"
-msgstr "언어:"
+msgid "Open in Editor"
+msgstr "편집기에서 열기"
 
-msgid "Team:"
-msgstr "팀:"
+msgid "Open in editor"
+msgstr "편집기에서 열기"
 
-msgid "Team's email address:"
-msgstr "팀 전자메일:"
+msgid "No references for the selected item."
+msgstr "선택한 항목의 참조가 없습니다"
 
-msgid "Charset:"
-msgstr "문자세트:"
+#, c-format
+msgid "Error opening file %s!"
+msgstr "%s 파일을 여는 중 오류!"
 
-msgid "Source"
-msgstr "소스"
+msgid "Find"
+msgstr "찾기"
 
-msgid "Notes"
-msgstr "노트"
+msgid "Replace"
+msgstr "바꾸기"
 
-msgid "Automatic translation"
-msgstr "자동 번역"
+#. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.)
+msgid "Options"
+msgstr "옵션"
 
-msgid "Fuzzy translation"
-msgstr "모호한 번역"
+msgid "Ignore case"
+msgstr "대소문자 무시"
 
-msgid "Notes for translators:"
-msgstr "번역 참고:"
+msgid "Wrap around"
+msgstr "자동 줄 바꾸기"
 
-msgid "Comment:"
-msgstr "주석:"
+msgid "Whole words only"
+msgstr "단어 단위로 검색"
 
-msgid "Source file"
-msgstr "소스 파일"
+msgid "Find in source texts"
+msgstr "원본 문자열에서 찾기"
 
-msgid "Source file occurrence:"
-msgstr "소스 파일 발견 횟수:"
+msgid "Find in translations"
+msgstr "번역에서 찾기"
 
-msgid "Open in Editor"
-msgstr "편집기에서 열기"
+msgid "Find in comments"
+msgstr "주석에서 찾기"
 
-msgid "Open in editor"
-msgstr "편집기에서 열기"
+msgid "Close"
+msgstr "닫기"
 
-#, c-format
-msgid "Error opening file %s!"
-msgstr "%s 파일을 여는 중 오류!"
+msgid "Replace All"
+msgstr "모두 바꾸기"
+
+msgid "Replace all"
+msgstr "모두 바꾸기"
+
+msgid "< &Previous"
+msgstr "< 이전(&P)"
+
+msgid "&Next >"
+msgstr "다음(&N) >"
+
+msgid "String to find"
+msgstr "찾을 문자열"
+
+msgid "Replacement string"
+msgstr "바꿀 문자열"
 
 #, c-format
 msgid "Cannot execute program: %s"
@@ -1024,9 +1182,19 @@ msgstr "새 파일"
 msgid "Edit"
 msgstr "편집"
 
+msgid "Delete extractor"
+msgstr "추출 프로그램 삭제"
+
+#, c-format
+msgid "Are you sure you want to delete the “%s” extractor?"
+msgstr "정말로 “%s” 추출 프로그램을 삭제하시겠습니까?"
+
 msgid "Extractors"
 msgstr "추출 프로그램"
 
+msgid "Accounts"
+msgstr "계정"
+
 msgid "Automatically check for updates"
 msgstr "업데이트 자동 확인"
 
@@ -1068,8 +1236,41 @@ msgstr "기존 파일 서식 유지"
 msgid "Advanced"
 msgstr "고급"
 
-msgid "Additional keywords"
-msgstr "추가 키워드"
+msgid ""
+"<big>Drag and Drop Folders Here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+"<big>여기에 폴더를 끌어 놓거나</big>,\n"
+"\n"
+"+ 단추를 사용하십시오."
+
+msgid ""
+"<big>Drag and drop folders here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+"<big>여기에 폴더를 끌어 놓거나</big>,\n"
+"\n"
+"+ 단추를 사용하십시오."
+
+msgid "Add Folders..."
+msgstr "폴더 추가..."
+
+msgid "Add folders..."
+msgstr "폴더 추가..."
+
+msgid "Add Files..."
+msgstr "파일 추가..."
+
+msgid "Add files..."
+msgstr "파일 추가..."
+
+msgid "Add Wildcard..."
+msgstr "와일드카드 추가..."
+
+msgid "Add wildcard..."
+msgstr "와일드카드 추가..."
 
 msgid "Paths"
 msgstr "경로"
@@ -1077,6 +1278,9 @@ msgstr "경로"
 msgid "Excluded paths"
 msgstr "제외 경로"
 
+msgid "Additional keywords"
+msgstr "추가 키워드"
+
 msgid "Name of the project the translation is for"
 msgstr "번역에 대한 프로젝트 이름"
 
@@ -1089,6 +1293,9 @@ msgstr "UTF-8(추천)"
 msgid "Please save the file first. This section cannot be edited until then."
 msgstr "먼저 파일을 저장하십시오. 그 전까지는 이 섹션을 편집할 수 없습니다."
 
+msgid "Comment:"
+msgstr "주석:"
+
 msgid "OK"
 msgstr "확인"
 
@@ -1098,42 +1305,6 @@ msgstr "지우기(&L)"
 msgid "Clear the comment"
 msgstr "주석 지우기"
 
-msgid "Find..."
-msgstr "찾기..."
-
-msgid "String to find:"
-msgstr "찾을 문자열:"
-
-msgid "Case sensitive"
-msgstr "대소문자 구별"
-
-msgid "Start from the first item"
-msgstr "처음부터 찾기"
-
-msgid "Whole words only"
-msgstr "단어 단위로 검색"
-
-msgid "Find in original strings"
-msgstr "원문에서 찾기"
-
-msgid "Find in translations"
-msgstr "번역에서 찾기"
-
-msgid "Find in comments"
-msgstr "주석에서 찾기"
-
-msgid "Find in automatic comments"
-msgstr "자동 주석에서 찾기"
-
-msgid "Close"
-msgstr "닫기"
-
-msgid "< &Previous"
-msgstr "< 이전(&P)"
-
-msgid "&Next >"
-msgstr "다음(&N) >"
-
 msgid "Create new translations project"
 msgstr "새 번역 프로젝트 만들기"
 
@@ -1188,6 +1359,12 @@ msgstr "열기(&O)..."
 msgid "Open Recent"
 msgstr "최근 파일 열기"
 
+msgid "Open from Crowdin..."
+msgstr "클라우드인에서 열기..."
+
+msgid "Open From Crowdin..."
+msgstr "클라우드인에서 열기..."
+
 msgid "&Save"
 msgstr "저장(&S)"
 
@@ -1236,14 +1413,17 @@ msgstr "참조 보기(&S)"
 msgid "&Find..."
 msgstr "찾기(&F)..."
 
+msgid "Replace..."
+msgstr "바꾸기..."
+
 msgid "Find next"
 msgstr "다음 찾기"
 
 msgid "Find previous"
 msgstr "이전 찾기"
 
-msgid "Find"
-msgstr "찾기"
+msgid "Find and Replace..."
+msgstr "찾아 바꾸기"
 
 msgid "Find Next"
 msgstr "다음 찾기"
@@ -1284,6 +1464,12 @@ msgstr "상태별 모음(&G)"
 msgid "&Group By Context"
 msgstr "상태별 모음(&G)"
 
+msgid "Entries with errors first"
+msgstr "오류 항목을 우선 표시"
+
+msgid "Entries with Errors First"
+msgstr "오류 항목을 우선 표시"
+
 msgid "&Untranslated entries first"
 msgstr "번역하지 않은 항목 먼저(&U)"
 
@@ -1293,6 +1479,9 @@ msgstr "번역하지 않은 항목 먼저(&U)"
 msgid "Show sidebar"
 msgstr "가장자리 표시줄 표시"
 
+msgid "Show status bar"
+msgstr "상태 표시줄 표시"
+
 msgid "C&atalog"
 msgstr "카탈로그(&A)"
 
@@ -1308,6 +1497,9 @@ msgstr "POT 파일로 업데이트(&P)..."
 msgid "Update from &POT File..."
 msgstr "POT 파일로 업데이트(&P)..."
 
+msgid "Sync with Crowdin"
+msgstr "클라우드인과 동기화"
+
 msgid "Fill missing translations from &TM..."
 msgstr "번역 기억장소의 내용으로 빠진 번역 채우기(&T)..."
 
@@ -1435,6 +1627,9 @@ msgstr ""
 msgid "Catalog properties"
 msgstr "카탈로그 속성"
 
+msgid "Project name and version:"
+msgstr "프로젝트 이름과 버전:"
+
 msgid "Plural Forms:"
 msgstr "문장내 복수 표시 형식:"
 
@@ -1447,17 +1642,29 @@ msgstr "사용자 정의 표현식 사용"
 msgid "Learn about plural forms"
 msgstr "서수 형식에 대해 알아보기"
 
+msgid "Charset:"
+msgstr "문자세트:"
+
+msgid "Team:"
+msgstr "팀:"
+
+msgid "Team's email address:"
+msgstr "팀 전자메일:"
+
 msgid "Translation properties"
 msgstr "번역 속성"
 
+msgid "Sources paths"
+msgstr "소스 경로"
+
 msgid "Extract text from source files in the following directories:"
 msgstr "다음 디렉터리의 소스 파일에서 텍스트를 추출합니다:"
 
 msgid "Base path:"
 msgstr "기본 경로:"
 
-msgid "Sources paths"
-msgstr "소스 경로"
+msgid "Sources keywords"
+msgstr "소스 키워드"
 
 msgid ""
 "Use these keywords (function names) to recognize translatable strings\n"
@@ -1469,9 +1676,6 @@ msgstr ""
 msgid "Learn about gettext keywords"
 msgstr "gettext 키워드에 대해 알아보기"
 
-msgid "Sources keywords"
-msgstr "소스 키워드"
-
 msgid "Update summary"
 msgstr "업데이트 요약"
 
@@ -1519,8 +1723,8 @@ msgstr "카탈로그 업데이트 - 소스와 동기화합니다"
 msgid "Toggled if selected string has fuzzy translation"
 msgstr "선택한 문자열이 모호한 번역상태면 전환됩니다."
 
-msgid "Show or hide the sidebar."
-msgstr "가장자리 표시줄을 표시하거나 숨깁니다."
+msgid "Show or hide the sidebar"
+msgstr "가장자리 표시줄을 표시하거나 숨깁니다"
 
 #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer.
 msgid "Previous source text:"
@@ -1532,6 +1736,9 @@ msgid ""
 msgstr ""
 "모호한 번역이 채워진 각각의 오래된 원본 텍스트(업데이트하여 바뀌기 전)입니다."
 
+msgid "Notes for translators:"
+msgstr "번역 참고:"
+
 msgid "Add comment"
 msgstr "주석 추가"
 
@@ -1610,14 +1817,23 @@ msgstr "번역 편집"
 msgid "Open an existing PO file and edit the translation."
 msgstr "기존 PO 파일을 열고 번역을 편집합니다."
 
-msgid "Create new translation"
-msgstr "새 번역 만들기"
-
 msgid ""
 "Take an existing PO file or POT template and create a new translation from "
 "it."
 msgstr "기존 PO 파일 또는 POT 양식을 취하여 새 번역을 만듭니다."
 
+msgid "Collaborate on a translation with Crowdin"
+msgstr "클라우드인에서 번역 협업 진행"
+
+msgid ""
+"Download a file from Crowdin project, translate and sync your changes back."
+msgstr ""
+"클라우드인 프로젝트에서 파일을 다운로드하여 번역하고, 동기화하여 파일을 되돌"
+"려 보냅니다."
+
+msgid "What is Crowdin?"
+msgstr "클라우드인이 무엇인가요?"
+
 msgid "There are no translations. That’s unusual."
 msgstr "번역이 없습니다. 흔한 일이 아닙니다."
 
@@ -1654,3 +1870,9 @@ msgstr "소스에서 가져오기"
 
 msgid "Configure source code extraction in Properties."
 msgstr "속성에서 소스 코드 추출을 설정합니다."
+
+msgid "Sync"
+msgstr "동기화"
+
+msgid "Synchronize the translation with Crowdin"
+msgstr "클라우드인과 번역 동기화"
diff --git a/locales/ku.mo b/locales/ku.mo
index d916650..086a8a2 100644
Binary files a/locales/ku.mo and b/locales/ku.mo differ
diff --git a/locales/ku.po b/locales/ku.po
index e6ea5ed..48eae10 100644
--- a/locales/ku.po
+++ b/locales/ku.po
@@ -2,8 +2,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: poedit\n"
 "Report-Msgid-Bugs-To: help at poedit.net\n"
-"POT-Creation-Date: 2015-01-10 16:00+0100\n"
-"PO-Revision-Date: 2015-03-10 12:33-0400\n"
+"POT-Creation-Date: 2015-05-27 11:31+0200\n"
+"PO-Revision-Date: 2015-05-27 05:17-0400\n"
 "Last-Translator: vslavik <vaclav at slavik.io>\n"
 "Language-Team: Kurdish\n"
 "Language: ku_TR\n"
@@ -80,6 +80,15 @@ msgstr ""
 msgid "Error saving catalog"
 msgstr ""
 
+msgid "PO Translation Files"
+msgstr ""
+
+msgid "POT Translation Templates"
+msgstr ""
+
+msgid "All Translation Files"
+msgstr ""
+
 msgid "Merging differences..."
 msgstr ""
 
@@ -99,6 +108,83 @@ msgstr "Hilbijartina zimanî"
 msgid "You must restart Poedit for this change to take effect."
 msgstr ""
 
+msgid "Downloading translations is disabled in this project."
+msgstr ""
+
+msgid "Not authorized, please sign in again."
+msgstr ""
+
+msgid "Sign in to Crowdin"
+msgstr ""
+
+msgid ""
+"Crowdin is an online localization management platform and collaborative "
+"translation tool. Poedit can seamlessly sync PO files managed at Crowdin."
+msgstr ""
+
+msgid "Sign In"
+msgstr ""
+
+msgid "Sign in"
+msgstr ""
+
+msgid "Sign Out"
+msgstr ""
+
+msgid "Sign out"
+msgstr ""
+
+msgid "Waiting for authentication…"
+msgstr ""
+
+msgid "Updating user information…"
+msgstr ""
+
+msgid "Signed in as:"
+msgstr ""
+
+msgid "Learn More About Crowdin"
+msgstr ""
+
+msgid "Learn more about Crowdin"
+msgstr ""
+
+msgid "Open Crowdin translation"
+msgstr ""
+
+msgid "Project:"
+msgstr ""
+
+msgid "Language:"
+msgstr "Ziman:"
+
+msgid "File:"
+msgstr ""
+
+msgid "No translation projects listed in your Crowdin account."
+msgstr ""
+
+msgid "This project has no files that can be translated in Poedit."
+msgstr ""
+
+msgid "This file can only be edited in Crowdin’s web interface."
+msgstr ""
+
+msgid "Downloading latest translations…"
+msgstr ""
+
+msgid "Syncing with Crowdin"
+msgstr ""
+
+msgid "Syncing with Crowdin failed."
+msgstr ""
+
+msgid "Crowdin error"
+msgstr ""
+
+msgid "Uploading translations…"
+msgstr ""
+
 msgid "&Copy"
 msgstr ""
 
@@ -143,6 +229,12 @@ msgstr ""
 msgid "don't delete temporary files (for debugging)"
 msgstr ""
 
+msgid "handle a poedit:// URI"
+msgstr ""
+
+msgid "Failed to communicate with Poedit process."
+msgstr ""
+
 #, c-format
 msgid "Unhandled exception occurred: %s"
 msgstr ""
@@ -153,12 +245,6 @@ msgstr ""
 msgid "Open catalog"
 msgstr "Katalogê veke"
 
-msgid "All Files"
-msgstr ""
-
-msgid "PO Translation Files"
-msgstr ""
-
 #, c-format
 msgid "File '%s' doesn't exist."
 msgstr "Dosyaya '%s' tune."
@@ -386,6 +472,17 @@ msgstr ""
 msgid "Translation:"
 msgstr ""
 
+msgid ""
+"POT files are only templates and don’t contain any translations themselves.\n"
+"To make a translation, create a new PO file based on the template."
+msgstr ""
+
+msgid "Create New Translation"
+msgstr ""
+
+msgid "Create new translation"
+msgstr ""
+
 #. TRANSLATORS: %s is language name in its basic form (as you
 #. would see e.g. in a list of supported languages). You may need
 #. to rephrase it, e.g. to an equivalent of "for language %s".
@@ -433,9 +530,6 @@ msgstr ""
 msgid "Open catalog template"
 msgstr "Şablona katalogê veke"
 
-msgid "POT Translation Templates"
-msgstr ""
-
 msgid "Updating catalog"
 msgstr ""
 
@@ -504,16 +598,18 @@ msgstr[1] ""
 msgid "The translation is ready for use."
 msgstr ""
 
-msgid "No references to this string found."
+msgid "Context:"
 msgstr ""
 
-msgid "Please choose the reference you want to show:"
+#, c-format
+msgid "Poedit automatically fixed invalid content in the file “%s”."
 msgstr ""
 
-msgid "References"
-msgstr "Referans"
-
-msgid "Context:"
+msgid ""
+"The file contained duplicate items, which is not allowed in PO files and "
+"would prevent the file from being used. Poedit fixed the issue, but you "
+"should review translations of any items marked as fuzzy and correct them if "
+"necessary."
 msgstr ""
 
 msgid "Language of the translation isn't set."
@@ -525,6 +621,21 @@ msgstr ""
 msgid "Set language"
 msgstr ""
 
+#. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)."
+msgid ""
+"Suggestions are not available if the translation language is not set "
+"correctly. Other features, such as plural forms, may be affected as well."
+msgstr ""
+
+msgid "Language of the translation is the same as source language."
+msgstr ""
+
+msgid "Fix Language"
+msgstr ""
+
+msgid "Fix language"
+msgstr ""
+
 msgid ""
 "This catalog has entries with plural forms, but doesn't have Plural-Forms "
 "header configured."
@@ -555,6 +666,7 @@ msgstr ""
 msgid "Plural forms expression used by the catalog is unusual for %s."
 msgstr ""
 
+#. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the catalog is unusual for %s.")"
 msgid "Review"
 msgstr ""
 
@@ -576,6 +688,12 @@ msgid_plural "%d errors"
 msgstr[0] ""
 msgstr[1] ""
 
+#, c-format
+msgid "%d entry"
+msgid_plural "%d entries"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid " (unsaved)"
 msgstr ""
 
@@ -689,6 +807,9 @@ msgstr ""
 msgid "Form %i"
 msgstr ""
 
+msgid "Singular"
+msgstr ""
+
 msgid "Zero"
 msgstr ""
 
@@ -698,6 +819,9 @@ msgstr ""
 msgid "Two"
 msgstr ""
 
+msgid "Plural"
+msgstr ""
+
 msgid "Other"
 msgstr ""
 
@@ -726,6 +850,12 @@ msgstr ""
 msgid "Show Sidebar"
 msgstr ""
 
+msgid "Hide Status Bar"
+msgstr ""
+
+msgid "Show Status Bar"
+msgstr ""
+
 msgid "Source text"
 msgstr ""
 
@@ -735,6 +865,10 @@ msgstr "Werger"
 msgid "ID"
 msgstr ""
 
+#, c-format
+msgid "Source text — %s"
+msgstr ""
+
 msgid "unknown language"
 msgstr ""
 
@@ -745,56 +879,72 @@ msgstr ""
 msgid "Error:"
 msgstr ""
 
-msgid "Project info"
-msgstr "Agahiyên projeyê"
+msgid "Source file"
+msgstr "Dosiya çavkanî"
 
-msgid "Project name and version:"
-msgstr "Nav û guhertoya bernamê:"
+msgid "Source file occurrence:"
+msgstr ""
 
-msgid "Language:"
-msgstr "Ziman:"
+msgid "Open in Editor"
+msgstr ""
 
-msgid "Team:"
-msgstr "Kom:"
+msgid "Open in editor"
+msgstr ""
 
-msgid "Team's email address:"
-msgstr "Navnîşana e-peyamê ya komê:"
+msgid "No references for the selected item."
+msgstr ""
 
-msgid "Charset:"
-msgstr "Koma tîpan (Charset):"
+#, c-format
+msgid "Error opening file %s!"
+msgstr ""
+
+msgid "Find"
+msgstr ""
+
+msgid "Replace"
+msgstr ""
 
-msgid "Source"
+#. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.)
+msgid "Options"
 msgstr ""
 
-msgid "Notes"
-msgstr "Têbînî:"
+msgid "Ignore case"
+msgstr ""
 
-msgid "Automatic translation"
-msgstr "Wergerandina jixweber"
+msgid "Wrap around"
+msgstr ""
 
-msgid "Fuzzy translation"
-msgstr "Wergera fuzî"
+msgid "Whole words only"
+msgstr ""
 
-msgid "Notes for translators:"
+msgid "Find in source texts"
 msgstr ""
 
-msgid "Comment:"
-msgstr "Şîrove:"
+msgid "Find in translations"
+msgstr ""
 
-msgid "Source file"
-msgstr "Dosiya çavkanî"
+msgid "Find in comments"
+msgstr "Di şîrovan de bibîne"
 
-msgid "Source file occurrence:"
+msgid "Close"
 msgstr ""
 
-msgid "Open in Editor"
+msgid "Replace All"
 msgstr ""
 
-msgid "Open in editor"
+msgid "Replace all"
 msgstr ""
 
-#, c-format
-msgid "Error opening file %s!"
+msgid "< &Previous"
+msgstr ""
+
+msgid "&Next >"
+msgstr ""
+
+msgid "String to find"
+msgstr ""
+
+msgid "Replacement string"
 msgstr ""
 
 #, c-format
@@ -983,9 +1133,19 @@ msgstr "Nû"
 msgid "Edit"
 msgstr "Biguherhîne"
 
+msgid "Delete extractor"
+msgstr ""
+
+#, c-format
+msgid "Are you sure you want to delete the “%s” extractor?"
+msgstr ""
+
 msgid "Extractors"
 msgstr ""
 
+msgid "Accounts"
+msgstr ""
+
 msgid "Automatically check for updates"
 msgstr ""
 
@@ -1024,71 +1184,68 @@ msgstr ""
 msgid "Advanced"
 msgstr ""
 
-msgid "Additional keywords"
+msgid ""
+"<big>Drag and Drop Folders Here</big>\n"
+"\n"
+"or use the + button"
 msgstr ""
 
-msgid "Paths"
-msgstr "Rê"
-
-msgid "Excluded paths"
+msgid ""
+"<big>Drag and drop folders here</big>\n"
+"\n"
+"or use the + button"
 msgstr ""
 
-msgid "Name of the project the translation is for"
+msgid "Add Folders..."
 msgstr ""
 
-msgid "e.g. nplurals=2; plural=(n > 1);"
+msgid "Add folders..."
 msgstr ""
 
-msgid "UTF-8 (recommended)"
+msgid "Add Files..."
 msgstr ""
 
-msgid "Please save the file first. This section cannot be edited until then."
+msgid "Add files..."
 msgstr ""
 
-msgid "OK"
-msgstr "Temam"
-
-msgid "C&lear"
+msgid "Add Wildcard..."
 msgstr ""
 
-msgid "Clear the comment"
-msgstr "Şîrovê paqij bike"
-
-msgid "Find..."
-msgstr "Bibîne..."
+msgid "Add wildcard..."
+msgstr ""
 
-msgid "String to find:"
-msgstr "Hevoka bê dîtin:"
+msgid "Paths"
+msgstr "Rê"
 
-msgid "Case sensitive"
-msgstr "Ji tîpên biçûk/MEZIN re bihîstyar"
+msgid "Excluded paths"
+msgstr ""
 
-msgid "Start from the first item"
-msgstr "Dest bi hevoka yekemîn bike"
+msgid "Additional keywords"
+msgstr ""
 
-msgid "Whole words only"
+msgid "Name of the project the translation is for"
 msgstr ""
 
-msgid "Find in original strings"
+msgid "e.g. nplurals=2; plural=(n > 1);"
 msgstr ""
 
-msgid "Find in translations"
+msgid "UTF-8 (recommended)"
 msgstr ""
 
-msgid "Find in comments"
-msgstr "Di şîrovan de bibîne"
+msgid "Please save the file first. This section cannot be edited until then."
+msgstr ""
 
-msgid "Find in automatic comments"
-msgstr "Di şîrovên jixweber de bibîne"
+msgid "Comment:"
+msgstr "Şîrove:"
 
-msgid "Close"
-msgstr ""
+msgid "OK"
+msgstr "Temam"
 
-msgid "< &Previous"
+msgid "C&lear"
 msgstr ""
 
-msgid "&Next >"
-msgstr ""
+msgid "Clear the comment"
+msgstr "Şîrovê paqij bike"
 
 msgid "Create new translations project"
 msgstr ""
@@ -1144,6 +1301,12 @@ msgstr ""
 msgid "Open Recent"
 msgstr ""
 
+msgid "Open from Crowdin..."
+msgstr ""
+
+msgid "Open From Crowdin..."
+msgstr ""
+
 msgid "&Save"
 msgstr "&Tomar bike"
 
@@ -1192,13 +1355,16 @@ msgstr ""
 msgid "&Find..."
 msgstr "&Bibîne..."
 
+msgid "Replace..."
+msgstr ""
+
 msgid "Find next"
 msgstr ""
 
 msgid "Find previous"
 msgstr ""
 
-msgid "Find"
+msgid "Find and Replace..."
 msgstr ""
 
 msgid "Find Next"
@@ -1240,6 +1406,12 @@ msgstr ""
 msgid "&Group By Context"
 msgstr ""
 
+msgid "Entries with errors first"
+msgstr ""
+
+msgid "Entries with Errors First"
+msgstr ""
+
 msgid "&Untranslated entries first"
 msgstr ""
 
@@ -1249,6 +1421,9 @@ msgstr ""
 msgid "Show sidebar"
 msgstr ""
 
+msgid "Show status bar"
+msgstr ""
+
 msgid "C&atalog"
 msgstr "&Katalog"
 
@@ -1264,6 +1439,9 @@ msgstr "Ji dosiya &POT rojane bike..."
 msgid "Update from &POT File..."
 msgstr ""
 
+msgid "Sync with Crowdin"
+msgstr ""
+
 msgid "Fill missing translations from &TM..."
 msgstr ""
 
@@ -1381,6 +1559,9 @@ msgstr ""
 msgid "Catalog properties"
 msgstr ""
 
+msgid "Project name and version:"
+msgstr "Nav û guhertoya bernamê:"
+
 msgid "Plural Forms:"
 msgstr ""
 
@@ -1393,16 +1574,28 @@ msgstr ""
 msgid "Learn about plural forms"
 msgstr ""
 
+msgid "Charset:"
+msgstr "Koma tîpan (Charset):"
+
+msgid "Team:"
+msgstr "Kom:"
+
+msgid "Team's email address:"
+msgstr "Navnîşana e-peyamê ya komê:"
+
 msgid "Translation properties"
 msgstr ""
 
+msgid "Sources paths"
+msgstr ""
+
 msgid "Extract text from source files in the following directories:"
 msgstr ""
 
 msgid "Base path:"
 msgstr "Riya bingehî:"
 
-msgid "Sources paths"
+msgid "Sources keywords"
 msgstr ""
 
 msgid ""
@@ -1413,9 +1606,6 @@ msgstr ""
 msgid "Learn about gettext keywords"
 msgstr ""
 
-msgid "Sources keywords"
-msgstr ""
-
 msgid "Update summary"
 msgstr "Kurte rojane bike"
 
@@ -1459,7 +1649,7 @@ msgstr ""
 msgid "Toggled if selected string has fuzzy translation"
 msgstr ""
 
-msgid "Show or hide the sidebar."
+msgid "Show or hide the sidebar"
 msgstr ""
 
 #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer.
@@ -1471,6 +1661,9 @@ msgid ""
 "translation corresponds to."
 msgstr ""
 
+msgid "Notes for translators:"
+msgstr ""
+
 msgid "Add comment"
 msgstr ""
 
@@ -1543,14 +1736,21 @@ msgstr ""
 msgid "Open an existing PO file and edit the translation."
 msgstr ""
 
-msgid "Create new translation"
-msgstr ""
-
 msgid ""
 "Take an existing PO file or POT template and create a new translation from "
 "it."
 msgstr ""
 
+msgid "Collaborate on a translation with Crowdin"
+msgstr ""
+
+msgid ""
+"Download a file from Crowdin project, translate and sync your changes back."
+msgstr ""
+
+msgid "What is Crowdin?"
+msgstr ""
+
 msgid "There are no translations. That’s unusual."
 msgstr ""
 
@@ -1583,3 +1783,9 @@ msgstr ""
 
 msgid "Configure source code extraction in Properties."
 msgstr ""
+
+msgid "Sync"
+msgstr ""
+
+msgid "Synchronize the translation with Crowdin"
+msgstr ""
diff --git a/locales/ky.mo b/locales/ky.mo
index 5064ffd..49b8a93 100644
Binary files a/locales/ky.mo and b/locales/ky.mo differ
diff --git a/locales/ky.po b/locales/ky.po
index e082e84..6903d34 100644
--- a/locales/ky.po
+++ b/locales/ky.po
@@ -2,8 +2,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: poedit\n"
 "Report-Msgid-Bugs-To: help at poedit.net\n"
-"POT-Creation-Date: 2015-01-10 16:00+0100\n"
-"PO-Revision-Date: 2015-03-10 12:33-0400\n"
+"POT-Creation-Date: 2015-05-27 11:31+0200\n"
+"PO-Revision-Date: 2015-05-27 05:18-0400\n"
 "Last-Translator: vslavik <vaclav at slavik.io>\n"
 "Language-Team: Kyrgyz\n"
 "Language: ky_KG\n"
@@ -92,6 +92,15 @@ msgstr ""
 msgid "Error saving catalog"
 msgstr "Каталогду сактоо учурунда ката чыкты"
 
+msgid "PO Translation Files"
+msgstr ""
+
+msgid "POT Translation Templates"
+msgstr ""
+
+msgid "All Translation Files"
+msgstr ""
+
 msgid "Merging differences..."
 msgstr "Айырмалары бириктирилүүдө..."
 
@@ -112,6 +121,83 @@ msgid "You must restart Poedit for this change to take effect."
 msgstr ""
 "Ушул өзгөртүү күчүнө кириш үчүн, сиз Poedit'ти кайта жүргүзүшүңүз керек."
 
+msgid "Downloading translations is disabled in this project."
+msgstr ""
+
+msgid "Not authorized, please sign in again."
+msgstr ""
+
+msgid "Sign in to Crowdin"
+msgstr ""
+
+msgid ""
+"Crowdin is an online localization management platform and collaborative "
+"translation tool. Poedit can seamlessly sync PO files managed at Crowdin."
+msgstr ""
+
+msgid "Sign In"
+msgstr ""
+
+msgid "Sign in"
+msgstr ""
+
+msgid "Sign Out"
+msgstr ""
+
+msgid "Sign out"
+msgstr ""
+
+msgid "Waiting for authentication…"
+msgstr ""
+
+msgid "Updating user information…"
+msgstr ""
+
+msgid "Signed in as:"
+msgstr ""
+
+msgid "Learn More About Crowdin"
+msgstr ""
+
+msgid "Learn more about Crowdin"
+msgstr ""
+
+msgid "Open Crowdin translation"
+msgstr ""
+
+msgid "Project:"
+msgstr ""
+
+msgid "Language:"
+msgstr "Тил:"
+
+msgid "File:"
+msgstr ""
+
+msgid "No translation projects listed in your Crowdin account."
+msgstr ""
+
+msgid "This project has no files that can be translated in Poedit."
+msgstr ""
+
+msgid "This file can only be edited in Crowdin’s web interface."
+msgstr ""
+
+msgid "Downloading latest translations…"
+msgstr ""
+
+msgid "Syncing with Crowdin"
+msgstr ""
+
+msgid "Syncing with Crowdin failed."
+msgstr ""
+
+msgid "Crowdin error"
+msgstr ""
+
+msgid "Uploading translations…"
+msgstr ""
+
 msgid "&Copy"
 msgstr "&Көчүрүү"
 
@@ -156,6 +242,12 @@ msgstr ""
 msgid "don't delete temporary files (for debugging)"
 msgstr "(оңдоо үчүн) убактылуу файлдарды өчүрбөө"
 
+msgid "handle a poedit:// URI"
+msgstr ""
+
+msgid "Failed to communicate with Poedit process."
+msgstr ""
+
 #, c-format
 msgid "Unhandled exception occurred: %s"
 msgstr ""
@@ -166,12 +258,6 @@ msgstr ""
 msgid "Open catalog"
 msgstr "Каталогду ачуу"
 
-msgid "All Files"
-msgstr "Бардык файлдар"
-
-msgid "PO Translation Files"
-msgstr ""
-
 #, c-format
 msgid "File '%s' doesn't exist."
 msgstr "'%s' файлы жок."
@@ -399,6 +485,17 @@ msgstr "Көптүгү:"
 msgid "Translation:"
 msgstr "Котормо:"
 
+msgid ""
+"POT files are only templates and don’t contain any translations themselves.\n"
+"To make a translation, create a new PO file based on the template."
+msgstr ""
+
+msgid "Create New Translation"
+msgstr ""
+
+msgid "Create new translation"
+msgstr "Жаңы котормону жаратуу"
+
 #. TRANSLATORS: %s is language name in its basic form (as you
 #. would see e.g. in a list of supported languages). You may need
 #. to rephrase it, e.g. to an equivalent of "for language %s".
@@ -446,9 +543,6 @@ msgstr "HTML файлдар"
 msgid "Open catalog template"
 msgstr "Каталог шаблонун ачуу"
 
-msgid "POT Translation Templates"
-msgstr ""
-
 msgid "Updating catalog"
 msgstr "Каталог жаңыланууда"
 
@@ -521,18 +615,20 @@ msgstr[0] ""
 msgid "The translation is ready for use."
 msgstr "Котормо колдонууга даяр."
 
-msgid "No references to this string found."
-msgstr "Ушул сап үчүн байланыштар табылган жок."
-
-msgid "Please choose the reference you want to show:"
-msgstr "Көрсөтүүгө керек болгон байланышты тандаңыз:"
-
-msgid "References"
-msgstr "Байланыштары"
-
 msgid "Context:"
 msgstr "Контексти:"
 
+#, c-format
+msgid "Poedit automatically fixed invalid content in the file “%s”."
+msgstr ""
+
+msgid ""
+"The file contained duplicate items, which is not allowed in PO files and "
+"would prevent the file from being used. Poedit fixed the issue, but you "
+"should review translations of any items marked as fuzzy and correct them if "
+"necessary."
+msgstr ""
+
 msgid "Language of the translation isn't set."
 msgstr "Котормонун тили орнотулган жок."
 
@@ -542,6 +638,21 @@ msgstr ""
 msgid "Set language"
 msgstr "Тил орнотуу"
 
+#. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)."
+msgid ""
+"Suggestions are not available if the translation language is not set "
+"correctly. Other features, such as plural forms, may be affected as well."
+msgstr ""
+
+msgid "Language of the translation is the same as source language."
+msgstr ""
+
+msgid "Fix Language"
+msgstr ""
+
+msgid "Fix language"
+msgstr ""
+
 msgid ""
 "This catalog has entries with plural forms, but doesn't have Plural-Forms "
 "header configured."
@@ -577,6 +688,7 @@ msgid "Plural forms expression used by the catalog is unusual for %s."
 msgstr ""
 "Каталог менен колдонулган көптүк сан туюнтмасы %s үчүн адаттагыдай эмес."
 
+#. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the catalog is unusual for %s.")"
 msgid "Review"
 msgstr "Сереп"
 
@@ -597,6 +709,11 @@ msgid "%d error"
 msgid_plural "%d errors"
 msgstr[0] ""
 
+#, c-format
+msgid "%d entry"
+msgid_plural "%d entries"
+msgstr[0] ""
+
 msgid " (unsaved)"
 msgstr " (сакталган жок)"
 
@@ -711,6 +828,9 @@ msgstr "Бардыгы"
 msgid "Form %i"
 msgstr "%i формасы"
 
+msgid "Singular"
+msgstr ""
+
 msgid "Zero"
 msgstr "Нөл"
 
@@ -720,6 +840,9 @@ msgstr "Бир"
 msgid "Two"
 msgstr "Эки"
 
+msgid "Plural"
+msgstr ""
+
 msgid "Other"
 msgstr "Башка"
 
@@ -748,6 +871,12 @@ msgstr ""
 msgid "Show Sidebar"
 msgstr ""
 
+msgid "Hide Status Bar"
+msgstr ""
+
+msgid "Show Status Bar"
+msgstr ""
+
 msgid "Source text"
 msgstr "Баштапкы тексти"
 
@@ -757,6 +886,10 @@ msgstr "Котормо"
 msgid "ID"
 msgstr "ID"
 
+#, c-format
+msgid "Source text — %s"
+msgstr ""
+
 msgid "unknown language"
 msgstr "белгисиз тил"
 
@@ -767,57 +900,73 @@ msgstr "Котормо — %s"
 msgid "Error:"
 msgstr "Катасы:"
 
-msgid "Project info"
-msgstr "Долбоор маалыматы"
+msgid "Source file"
+msgstr "Баштапкы файлы"
 
-msgid "Project name and version:"
-msgstr "Долбоордун аты жана версиясы:"
+msgid "Source file occurrence:"
+msgstr "Баштапкы файлдын кирүүсү:"
 
-msgid "Language:"
-msgstr "Тил:"
+msgid "Open in Editor"
+msgstr ""
 
-msgid "Team:"
-msgstr "Команда:"
+msgid "Open in editor"
+msgstr "Редактордон ачуу"
 
-msgid "Team's email address:"
-msgstr "Команданын e-mail дареги:"
+msgid "No references for the selected item."
+msgstr ""
 
-msgid "Charset:"
-msgstr "Кодировка:"
+#, c-format
+msgid "Error opening file %s!"
+msgstr "%s файлын ачуу учурунда ката чыкты!"
 
-msgid "Source"
-msgstr "Баштапкы тексти"
+msgid "Find"
+msgstr "Табуу"
 
-msgid "Notes"
-msgstr "Эскертүүлөр"
+msgid "Replace"
+msgstr ""
 
-msgid "Automatic translation"
-msgstr "Автоматтык котормо"
+#. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.)
+msgid "Options"
+msgstr ""
 
-msgid "Fuzzy translation"
-msgstr "Так эмес котормо"
+msgid "Ignore case"
+msgstr ""
 
-msgid "Notes for translators:"
-msgstr "Котормочулар үчүн эскертүүлөр:"
+msgid "Wrap around"
+msgstr ""
 
-msgid "Comment:"
-msgstr "Комментарий:"
+msgid "Whole words only"
+msgstr "Бүтүн сөздөрдү гана"
 
-msgid "Source file"
-msgstr "Баштапкы файлы"
+msgid "Find in source texts"
+msgstr ""
 
-msgid "Source file occurrence:"
-msgstr "Баштапкы файлдын кирүүсү:"
+msgid "Find in translations"
+msgstr ""
 
-msgid "Open in Editor"
+msgid "Find in comments"
+msgstr "Комментарийлерден издөө"
+
+msgid "Close"
+msgstr "Жабуу"
+
+msgid "Replace All"
 msgstr ""
 
-msgid "Open in editor"
-msgstr "Редактордон ачуу"
+msgid "Replace all"
+msgstr ""
 
-#, c-format
-msgid "Error opening file %s!"
-msgstr "%s файлын ачуу учурунда ката чыкты!"
+msgid "< &Previous"
+msgstr "< &Артка"
+
+msgid "&Next >"
+msgstr "&Кийинки >"
+
+msgid "String to find"
+msgstr ""
+
+msgid "Replacement string"
+msgstr ""
 
 #, c-format
 msgid "Cannot execute program: %s"
@@ -1011,9 +1160,19 @@ msgstr "Жаңы"
 msgid "Edit"
 msgstr "Оңдоо"
 
+msgid "Delete extractor"
+msgstr ""
+
+#, c-format
+msgid "Are you sure you want to delete the “%s” extractor?"
+msgstr ""
+
 msgid "Extractors"
 msgstr ""
 
+msgid "Accounts"
+msgstr ""
+
 msgid "Automatically check for updates"
 msgstr ""
 
@@ -1052,8 +1211,35 @@ msgstr ""
 msgid "Advanced"
 msgstr ""
 
-msgid "Additional keywords"
-msgstr "Кошумча ачкыч сөздөрү"
+msgid ""
+"<big>Drag and Drop Folders Here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+
+msgid ""
+"<big>Drag and drop folders here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+
+msgid "Add Folders..."
+msgstr ""
+
+msgid "Add folders..."
+msgstr ""
+
+msgid "Add Files..."
+msgstr ""
+
+msgid "Add files..."
+msgstr ""
+
+msgid "Add Wildcard..."
+msgstr ""
+
+msgid "Add wildcard..."
+msgstr ""
 
 msgid "Paths"
 msgstr "Жолдор"
@@ -1061,6 +1247,9 @@ msgstr "Жолдор"
 msgid "Excluded paths"
 msgstr ""
 
+msgid "Additional keywords"
+msgstr "Кошумча ачкыч сөздөрү"
+
 msgid "Name of the project the translation is for"
 msgstr "Котормонун долбоор аты"
 
@@ -1074,6 +1263,9 @@ msgid "Please save the file first. This section cannot be edited until then."
 msgstr ""
 "Файлды биринчисинен сактаңыз. Бул бөлүктү ага чейин түзөтүүгө мүмкүн эмес."
 
+msgid "Comment:"
+msgstr "Комментарий:"
+
 msgid "OK"
 msgstr "OK"
 
@@ -1083,42 +1275,6 @@ msgstr "&Тазалоо"
 msgid "Clear the comment"
 msgstr "Комментарийди тазалоо"
 
-msgid "Find..."
-msgstr "Табуу..."
-
-msgid "String to find:"
-msgstr "Табыла турган сап:"
-
-msgid "Case sensitive"
-msgstr "Регистрди эсепке алуу"
-
-msgid "Start from the first item"
-msgstr "Биринчи пункттан баштоо"
-
-msgid "Whole words only"
-msgstr "Бүтүн сөздөрдү гана"
-
-msgid "Find in original strings"
-msgstr "Баштапкы саптардан издөө"
-
-msgid "Find in translations"
-msgstr ""
-
-msgid "Find in comments"
-msgstr "Комментарийлерден издөө"
-
-msgid "Find in automatic comments"
-msgstr "Автоматтык комментарийлерден издөө"
-
-msgid "Close"
-msgstr "Жабуу"
-
-msgid "< &Previous"
-msgstr "< &Артка"
-
-msgid "&Next >"
-msgstr "&Кийинки >"
-
 msgid "Create new translations project"
 msgstr "Жаңы котормолор долбоорун жаратуу"
 
@@ -1173,6 +1329,12 @@ msgstr "&Ачуу..."
 msgid "Open Recent"
 msgstr ""
 
+msgid "Open from Crowdin..."
+msgstr ""
+
+msgid "Open From Crowdin..."
+msgstr ""
+
 msgid "&Save"
 msgstr "&Сактоо"
 
@@ -1221,14 +1383,17 @@ msgstr "Байланыштарын &көрсөтүү"
 msgid "&Find..."
 msgstr "&Табуу..."
 
+msgid "Replace..."
+msgstr ""
+
 msgid "Find next"
 msgstr "Кийинкисин табуу"
 
 msgid "Find previous"
 msgstr "Мурункусун табуу"
 
-msgid "Find"
-msgstr "Табуу"
+msgid "Find and Replace..."
+msgstr ""
 
 msgid "Find Next"
 msgstr "Кийинкисин табуу"
@@ -1269,6 +1434,12 @@ msgstr ""
 msgid "&Group By Context"
 msgstr ""
 
+msgid "Entries with errors first"
+msgstr ""
+
+msgid "Entries with Errors First"
+msgstr ""
+
 msgid "&Untranslated entries first"
 msgstr "Которулба&ган жазуулар биринчи"
 
@@ -1278,6 +1449,9 @@ msgstr "Которулба&ган жазуулар биринчи"
 msgid "Show sidebar"
 msgstr ""
 
+msgid "Show status bar"
+msgstr ""
+
 msgid "C&atalog"
 msgstr "&Каталог"
 
@@ -1293,6 +1467,9 @@ msgstr "POT &файлынан жаңылоо..."
 msgid "Update from &POT File..."
 msgstr "POT &файлынан жаңылоо..."
 
+msgid "Sync with Crowdin"
+msgstr ""
+
 msgid "Fill missing translations from &TM..."
 msgstr ""
 
@@ -1351,10 +1528,10 @@ msgid "&Online Help"
 msgstr "&Онлайн жардам"
 
 msgid "&GNU gettext manual"
-msgstr "&GNU gettext колдонмосу"
+msgstr "&GNU gettext нускоосу"
 
 msgid "&GNU gettext Manual"
-msgstr "&GNU gettext колдонмосу"
+msgstr "&GNU gettext нускоосу"
 
 msgid "&About Poedit"
 msgstr "Poedit &жөнүндө"
@@ -1417,6 +1594,9 @@ msgstr ""
 msgid "Catalog properties"
 msgstr "Каталогдун касиеттери"
 
+msgid "Project name and version:"
+msgstr "Долбоордун аты жана версиясы:"
+
 msgid "Plural Forms:"
 msgstr "Көптүк саны:"
 
@@ -1429,17 +1609,29 @@ msgstr "Башка туюнтманы колдонуу"
 msgid "Learn about plural forms"
 msgstr "Көптүк сандар жөнүндө окуу"
 
+msgid "Charset:"
+msgstr "Кодировка:"
+
+msgid "Team:"
+msgstr "Команда:"
+
+msgid "Team's email address:"
+msgstr "Команданын e-mail дареги:"
+
 msgid "Translation properties"
 msgstr "Котормонун өзгөчөлүктөрү"
 
+msgid "Sources paths"
+msgstr "Баштапкы файлдардын жолдору"
+
 msgid "Extract text from source files in the following directories:"
 msgstr "Төмөнкү папкаларга баштапкы файлдардан текстти чыгаруу:"
 
 msgid "Base path:"
 msgstr "Базага жол:"
 
-msgid "Sources paths"
-msgstr "Баштапкы файлдардын жолдору"
+msgid "Sources keywords"
+msgstr "Баштапкы файлдардын ачкыч сөздөрү"
 
 msgid ""
 "Use these keywords (function names) to recognize translatable strings\n"
@@ -1451,9 +1643,6 @@ msgstr ""
 msgid "Learn about gettext keywords"
 msgstr "Gettext ачкыч сөздөрү жөнүндө окуңуз"
 
-msgid "Sources keywords"
-msgstr "Баштапкы файлдардын ачкыч сөздөрү"
-
 msgid "Update summary"
 msgstr "Жаңылоо маалыматы"
 
@@ -1501,7 +1690,7 @@ msgstr "Каталогду жаңылоо - баштапкы файлдар ме
 msgid "Toggled if selected string has fuzzy translation"
 msgstr "Тандалган сапта так эмес котормо бар болуп калса басылган болот"
 
-msgid "Show or hide the sidebar."
+msgid "Show or hide the sidebar"
 msgstr ""
 
 #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer.
@@ -1513,6 +1702,9 @@ msgid ""
 "translation corresponds to."
 msgstr ""
 
+msgid "Notes for translators:"
+msgstr "Котормочулар үчүн эскертүүлөр:"
+
 msgid "Add comment"
 msgstr ""
 
@@ -1587,14 +1779,21 @@ msgstr "Котормону түзөтүү"
 msgid "Open an existing PO file and edit the translation."
 msgstr "Бар болгон PO файлын ачып котормону түзөтүү."
 
-msgid "Create new translation"
-msgstr "Жаңы котормону жаратуу"
-
 msgid ""
 "Take an existing PO file or POT template and create a new translation from "
 "it."
 msgstr "Бар болгон PO файлын же POT калыбын алып андан жаңы котормону жасаңыз."
 
+msgid "Collaborate on a translation with Crowdin"
+msgstr ""
+
+msgid ""
+"Download a file from Crowdin project, translate and sync your changes back."
+msgstr ""
+
+msgid "What is Crowdin?"
+msgstr ""
+
 msgid "There are no translations. That’s unusual."
 msgstr "Бул жерде котормолор жок. Кызык."
 
@@ -1633,3 +1832,9 @@ msgstr "Баштапкы коддорунан чыгаруу"
 
 msgid "Configure source code extraction in Properties."
 msgstr "Касиеттеринен баштапкы кодунун чыгарылышын ырастоо."
+
+msgid "Sync"
+msgstr ""
+
+msgid "Synchronize the translation with Crowdin"
+msgstr ""
diff --git a/locales/lt.mo b/locales/lt.mo
index 1065e64..7b5e8fc 100644
Binary files a/locales/lt.mo and b/locales/lt.mo differ
diff --git a/locales/lt.po b/locales/lt.po
index a2d43d4..25ac4c1 100644
--- a/locales/lt.po
+++ b/locales/lt.po
@@ -2,8 +2,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: poedit\n"
 "Report-Msgid-Bugs-To: help at poedit.net\n"
-"POT-Creation-Date: 2015-01-10 16:00+0100\n"
-"PO-Revision-Date: 2015-03-10 12:33-0400\n"
+"POT-Creation-Date: 2015-05-27 11:31+0200\n"
+"PO-Revision-Date: 2015-05-27 05:17-0400\n"
 "Last-Translator: vslavik <vaclav at slavik.io>\n"
 "Language-Team: Lithuanian\n"
 "Language: lt_LT\n"
@@ -91,6 +91,15 @@ msgstr ""
 msgid "Error saving catalog"
 msgstr "Klaida išsaugant katalogą"
 
+msgid "PO Translation Files"
+msgstr ""
+
+msgid "POT Translation Templates"
+msgstr ""
+
+msgid "All Translation Files"
+msgstr ""
+
 msgid "Merging differences..."
 msgstr "Suliejami skirtumai..."
 
@@ -110,14 +119,91 @@ msgstr "Kalbos pasirinkimas"
 msgid "You must restart Poedit for this change to take effect."
 msgstr "Šis pakeitimas įsigalios paleidus Poedit iš naujo."
 
-msgid "&Copy"
+msgid "Downloading translations is disabled in this project."
+msgstr ""
+
+msgid "Not authorized, please sign in again."
+msgstr ""
+
+msgid "Sign in to Crowdin"
+msgstr "Prisijungti prie Crowdin"
+
+msgid ""
+"Crowdin is an online localization management platform and collaborative "
+"translation tool. Poedit can seamlessly sync PO files managed at Crowdin."
+msgstr ""
+
+msgid "Sign In"
+msgstr ""
+
+msgid "Sign in"
+msgstr ""
+
+msgid "Sign Out"
+msgstr ""
+
+msgid "Sign out"
+msgstr ""
+
+msgid "Waiting for authentication…"
+msgstr ""
+
+msgid "Updating user information…"
+msgstr ""
+
+msgid "Signed in as:"
+msgstr ""
+
+msgid "Learn More About Crowdin"
+msgstr ""
+
+msgid "Learn more about Crowdin"
+msgstr ""
+
+msgid "Open Crowdin translation"
+msgstr ""
+
+msgid "Project:"
+msgstr "Projektas:"
+
+msgid "Language:"
+msgstr "Kalba:"
+
+msgid "File:"
+msgstr "Failas:"
+
+msgid "No translation projects listed in your Crowdin account."
+msgstr ""
+
+msgid "This project has no files that can be translated in Poedit."
+msgstr ""
+
+msgid "This file can only be edited in Crowdin’s web interface."
+msgstr ""
+
+msgid "Downloading latest translations…"
 msgstr ""
 
+msgid "Syncing with Crowdin"
+msgstr ""
+
+msgid "Syncing with Crowdin failed."
+msgstr ""
+
+msgid "Crowdin error"
+msgstr ""
+
+msgid "Uploading translations…"
+msgstr ""
+
+msgid "&Copy"
+msgstr "&Kopijuoti"
+
 msgid "Learn more"
 msgstr "Sužinokite daugiau"
 
 msgid "Learn More"
-msgstr ""
+msgstr "Sužinoti daugiau"
 
 #, c-format
 msgid "Failed command: %s"
@@ -154,6 +240,12 @@ msgstr ""
 msgid "don't delete temporary files (for debugging)"
 msgstr "netrinti laikinų failų (derinimui)"
 
+msgid "handle a poedit:// URI"
+msgstr ""
+
+msgid "Failed to communicate with Poedit process."
+msgstr ""
+
 #, c-format
 msgid "Unhandled exception occurred: %s"
 msgstr ""
@@ -164,12 +256,6 @@ msgstr ""
 msgid "Open catalog"
 msgstr "Atverti katalogą"
 
-msgid "All Files"
-msgstr ""
-
-msgid "PO Translation Files"
-msgstr ""
-
 #, c-format
 msgid "File '%s' doesn't exist."
 msgstr "Failo „%s“ nėra."
@@ -277,7 +363,7 @@ msgid "Enter Full Screen"
 msgstr ""
 
 msgid "Window"
-msgstr ""
+msgstr "Langas"
 
 msgid "Minimize"
 msgstr ""
@@ -289,7 +375,7 @@ msgid "Bring All to Front"
 msgstr ""
 
 msgid "PO Translation"
-msgstr ""
+msgstr "PO vertimas"
 
 msgid "The file cannot be opened."
 msgstr "Atverti failo nepavyko."
@@ -335,20 +421,20 @@ msgstr ""
 #. TRANSLATORS: Keyboard shortcut for display in Windows menus
 #. TRANSLATORS: This is the key shortcut used in menus on Windows, some languages call them differently
 msgid "Ctrl+"
-msgstr ""
+msgstr "Ctrl+"
 
 #. TRANSLATORS: Keyboard shortcut for display in Windows menus
 #. TRANSLATORS: This is the key shortcut used in menus on Windows, some languages call them differently
 msgid "Alt+"
-msgstr ""
+msgstr "Alt+"
 
 #. TRANSLATORS: Keyboard shortcut for display in Windows menus
 msgid "Shift+"
-msgstr ""
+msgstr "Shift+"
 
 #. TRANSLATORS: Keyboard shortcut for display in Windows menus
 msgid "Enter"
-msgstr ""
+msgstr "Enter"
 
 #. TRANSLATORS: Keyboard shortcut for display in Windows menus
 msgid "Up"
@@ -360,15 +446,15 @@ msgstr ""
 
 #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+"
 msgid "ctrl"
-msgstr ""
+msgstr "ctrl"
 
 #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+"
 msgid "alt"
-msgstr ""
+msgstr "alt"
 
 #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+"
 msgid "shift"
-msgstr ""
+msgstr "shift"
 
 msgid "You can't drop more than one file on Poedit window."
 msgstr "Negalite užvilkti daugiau nei vieno failo ant Poedit lango."
@@ -398,6 +484,17 @@ msgstr "Daugiskaita:"
 msgid "Translation:"
 msgstr "Vertimas:"
 
+msgid ""
+"POT files are only templates and don’t contain any translations themselves.\n"
+"To make a translation, create a new PO file based on the template."
+msgstr ""
+
+msgid "Create New Translation"
+msgstr ""
+
+msgid "Create new translation"
+msgstr "Sukurti naują vertimą"
+
 #. TRANSLATORS: %s is language name in its basic form (as you
 #. would see e.g. in a list of supported languages). You may need
 #. to rephrase it, e.g. to an equivalent of "for language %s".
@@ -440,14 +537,11 @@ msgid "Export as..."
 msgstr "Eksportuoti kaip..."
 
 msgid "HTML Files"
-msgstr ""
+msgstr "HTML failai"
 
 msgid "Open catalog template"
 msgstr "Atverti katalogo šabloną"
 
-msgid "POT Translation Templates"
-msgstr ""
-
 msgid "Updating catalog"
 msgstr "Atnaujinamas katalogas"
 
@@ -526,27 +620,44 @@ msgstr[2] "Vertimas paruoštas naudoti, bet %d įrašų dar neišversta."
 msgid "The translation is ready for use."
 msgstr "Vertimas paruoštas naudoti."
 
-msgid "No references to this string found."
-msgstr "Nėra nuorodų į šias eilutes."
-
-msgid "Please choose the reference you want to show:"
-msgstr "Pasirinkite nuorodas, kurias norite rodyti:"
-
-msgid "References"
-msgstr "Nuorodos"
-
 msgid "Context:"
 msgstr "Kontekstas:"
 
+#, c-format
+msgid "Poedit automatically fixed invalid content in the file “%s”."
+msgstr ""
+
+msgid ""
+"The file contained duplicate items, which is not allowed in PO files and "
+"would prevent the file from being used. Poedit fixed the issue, but you "
+"should review translations of any items marked as fuzzy and correct them if "
+"necessary."
+msgstr ""
+
 msgid "Language of the translation isn't set."
 msgstr "Nenustatyta vertimo kalba."
 
 msgid "Set Language"
-msgstr ""
+msgstr "Nustatyti kalbą"
 
 msgid "Set language"
 msgstr "Nurodyti kalbą"
 
+#. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)."
+msgid ""
+"Suggestions are not available if the translation language is not set "
+"correctly. Other features, such as plural forms, may be affected as well."
+msgstr ""
+
+msgid "Language of the translation is the same as source language."
+msgstr ""
+
+msgid "Fix Language"
+msgstr ""
+
+msgid "Fix language"
+msgstr ""
+
 msgid ""
 "This catalog has entries with plural forms, but doesn't have Plural-Forms "
 "header configured."
@@ -581,6 +692,7 @@ msgstr "Pataisyti antraštę"
 msgid "Plural forms expression used by the catalog is unusual for %s."
 msgstr "Daugiskaitos forma naudojama kataloge nėra įprasta %s kalbai."
 
+#. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the catalog is unusual for %s.")"
 msgid "Review"
 msgstr "Peržiūrėti"
 
@@ -599,6 +711,13 @@ msgstr ""
 #, c-format
 msgid "%d error"
 msgid_plural "%d errors"
+msgstr[0] "%d klaida"
+msgstr[1] "%d klaida"
+msgstr[2] "%d klaidos"
+
+#, c-format
+msgid "%d entry"
+msgid_plural "%d entries"
 msgstr[0] ""
 msgstr[1] ""
 msgstr[2] ""
@@ -688,7 +807,7 @@ msgid "Translating"
 msgstr "Verčiama"
 
 msgid "Filling missing translations from TM..."
-msgstr "Užpildomi trūkstami vertimai vertimais iš vertimų atminties..."
+msgstr "Vertimais užpildomi trūkstami vertimai iš vertimų atminties..."
 
 #, c-format
 msgid "Translated %u string"
@@ -725,6 +844,9 @@ msgstr "Viskas"
 msgid "Form %i"
 msgstr "Forma %i"
 
+msgid "Singular"
+msgstr ""
+
 msgid "Zero"
 msgstr "Nulis"
 
@@ -734,6 +856,9 @@ msgstr "Vienas"
 msgid "Two"
 msgstr "Du"
 
+msgid "Plural"
+msgstr ""
+
 msgid "Other"
 msgstr "Kita"
 
@@ -762,6 +887,12 @@ msgstr ""
 msgid "Show Sidebar"
 msgstr ""
 
+msgid "Hide Status Bar"
+msgstr ""
+
+msgid "Show Status Bar"
+msgstr ""
+
 msgid "Source text"
 msgstr "Išeities tekstas"
 
@@ -771,6 +902,10 @@ msgstr "Vertimas"
 msgid "ID"
 msgstr "ID"
 
+#, c-format
+msgid "Source text — %s"
+msgstr "Šaltinio tekstas — %s"
+
 msgid "unknown language"
 msgstr "nežinoma kalba"
 
@@ -781,57 +916,73 @@ msgstr "Vertimas - %s"
 msgid "Error:"
 msgstr "Klaida:"
 
-msgid "Project info"
-msgstr "Projekto informacija"
+msgid "Source file"
+msgstr "Išeities failas"
 
-msgid "Project name and version:"
-msgstr "Projekto pavadinimas ir versija:"
+msgid "Source file occurrence:"
+msgstr "Išeities failas pasikartojimai:"
 
-msgid "Language:"
-msgstr "Kalba:"
+msgid "Open in Editor"
+msgstr ""
 
-msgid "Team:"
-msgstr "Komanda:"
+msgid "Open in editor"
+msgstr ""
 
-msgid "Team's email address:"
-msgstr "Komandos el. paštas:"
+msgid "No references for the selected item."
+msgstr ""
 
-msgid "Charset:"
-msgstr "Koduotė:"
+#, c-format
+msgid "Error opening file %s!"
+msgstr "Klaida atveriant failą %s!"
 
-msgid "Source"
-msgstr "Išeities failas"
+msgid "Find"
+msgstr "Ieškoti"
 
-msgid "Notes"
-msgstr "Pastabos"
+msgid "Replace"
+msgstr "Pakeisti"
 
-msgid "Automatic translation"
-msgstr "Automatinis vertimas"
+#. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.)
+msgid "Options"
+msgstr ""
 
-msgid "Fuzzy translation"
-msgstr "Neaiškus vertimas"
+msgid "Ignore case"
+msgstr ""
 
-msgid "Notes for translators:"
-msgstr "Pastabos vertėjams:"
+msgid "Wrap around"
+msgstr ""
 
-msgid "Comment:"
-msgstr "Komentaras:"
+msgid "Whole words only"
+msgstr "Tik pilnus žodžius"
 
-msgid "Source file"
-msgstr "Išeities failas"
+msgid "Find in source texts"
+msgstr ""
 
-msgid "Source file occurrence:"
-msgstr "Išeities failas pasikartojimai:"
+msgid "Find in translations"
+msgstr "Ieškoti vertime"
 
-msgid "Open in Editor"
+msgid "Find in comments"
+msgstr "Ieškoti komentaruose"
+
+msgid "Close"
+msgstr "Užverti"
+
+msgid "Replace All"
 msgstr ""
 
-msgid "Open in editor"
+msgid "Replace all"
 msgstr ""
 
-#, c-format
-msgid "Error opening file %s!"
-msgstr "Klaida atveriant failą %s!"
+msgid "< &Previous"
+msgstr "< &Ansktesnis"
+
+msgid "&Next >"
+msgstr "&Sekantis >"
+
+msgid "String to find"
+msgstr ""
+
+msgid "Replacement string"
+msgstr ""
 
 #, c-format
 msgid "Cannot execute program: %s"
@@ -893,16 +1044,16 @@ msgid "Information about the translator"
 msgstr ""
 
 msgid "Name:"
-msgstr ""
+msgstr "Vardas:"
 
 msgid "Your Name"
 msgstr ""
 
 msgid "Email:"
-msgstr ""
+msgstr "El. paštas:"
 
 msgid "your_email at example.com"
-msgstr ""
+msgstr "mano at adresas.lt"
 
 msgid ""
 "Your name and email address are only used to set the Last-Translator header "
@@ -1014,7 +1165,7 @@ msgstr "Atsisakyti"
 #. Long text looks weird there, too short (like TM) too, but less so. "General" is about ideal
 #. length there.
 msgid "TM"
-msgstr ""
+msgstr "VA"
 
 msgid ""
 "Source code extractors are used to find translatable strings in the source "
@@ -1027,9 +1178,19 @@ msgstr "Naujas"
 msgid "Edit"
 msgstr "Keisti"
 
+msgid "Delete extractor"
+msgstr ""
+
+#, c-format
+msgid "Are you sure you want to delete the “%s” extractor?"
+msgstr ""
+
 msgid "Extractors"
 msgstr ""
 
+msgid "Accounts"
+msgstr ""
+
 msgid "Automatically check for updates"
 msgstr ""
 
@@ -1042,7 +1203,7 @@ msgid ""
 msgstr ""
 
 msgid "Updates"
-msgstr ""
+msgstr "Atnaujinimai"
 
 msgid ""
 "These settings affect internal formatting of PO files. Adjust them if you "
@@ -1068,8 +1229,35 @@ msgstr ""
 msgid "Advanced"
 msgstr ""
 
-msgid "Additional keywords"
-msgstr "Papildomi raktažodžiai"
+msgid ""
+"<big>Drag and Drop Folders Here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+
+msgid ""
+"<big>Drag and drop folders here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+
+msgid "Add Folders..."
+msgstr ""
+
+msgid "Add folders..."
+msgstr ""
+
+msgid "Add Files..."
+msgstr ""
+
+msgid "Add files..."
+msgstr ""
+
+msgid "Add Wildcard..."
+msgstr ""
+
+msgid "Add wildcard..."
+msgstr ""
 
 msgid "Paths"
 msgstr "Keliai"
@@ -1077,6 +1265,9 @@ msgstr "Keliai"
 msgid "Excluded paths"
 msgstr ""
 
+msgid "Additional keywords"
+msgstr "Papildomi raktažodžiai"
+
 msgid "Name of the project the translation is for"
 msgstr "Projekto vardas kuriam skirtas vertimas"
 
@@ -1091,6 +1282,9 @@ msgstr ""
 "Prašom pirma išsaugoti failą. Kol neišsaugosite šio skyriaus bus negalima "
 "redaguoti."
 
+msgid "Comment:"
+msgstr "Komentaras:"
+
 msgid "OK"
 msgstr "Gerai"
 
@@ -1100,42 +1294,6 @@ msgstr "Iš&valyti"
 msgid "Clear the comment"
 msgstr "Išvalyti komentarą"
 
-msgid "Find..."
-msgstr "Ieškoti..."
-
-msgid "String to find:"
-msgstr "Ieškoma eilutė:"
-
-msgid "Case sensitive"
-msgstr "Skirti raidžių dydį"
-
-msgid "Start from the first item"
-msgstr "Pradėti nuo pirmo įrašo"
-
-msgid "Whole words only"
-msgstr "Tik pilnus žodžius"
-
-msgid "Find in original strings"
-msgstr "Ieškoti originalo eilutėse"
-
-msgid "Find in translations"
-msgstr "Ieškoti vertime"
-
-msgid "Find in comments"
-msgstr "Ieškoti komentaruose"
-
-msgid "Find in automatic comments"
-msgstr "Ieškoti automatiniuose komentaruose"
-
-msgid "Close"
-msgstr "Užverti"
-
-msgid "< &Previous"
-msgstr "< &Ansktesnis"
-
-msgid "&Next >"
-msgstr "&Sekantis >"
-
 msgid "Create new translations project"
 msgstr "Sukurti naują vertimų projektą"
 
@@ -1190,6 +1348,12 @@ msgstr "&Atverti..."
 msgid "Open Recent"
 msgstr ""
 
+msgid "Open from Crowdin..."
+msgstr ""
+
+msgid "Open From Crowdin..."
+msgstr ""
+
 msgid "&Save"
 msgstr "&Išsaugoti"
 
@@ -1238,14 +1402,17 @@ msgstr "&Rodyti nuorodas"
 msgid "&Find..."
 msgstr "&Ieškoti..."
 
+msgid "Replace..."
+msgstr ""
+
 msgid "Find next"
 msgstr "Surasti kitą"
 
 msgid "Find previous"
 msgstr "Surasti ankstesnį"
 
-msgid "Find"
-msgstr "Ieškoti"
+msgid "Find and Replace..."
+msgstr ""
 
 msgid "Find Next"
 msgstr "Surasti kitą"
@@ -1286,6 +1453,12 @@ msgstr ""
 msgid "&Group By Context"
 msgstr ""
 
+msgid "Entries with errors first"
+msgstr ""
+
+msgid "Entries with Errors First"
+msgstr ""
+
 msgid "&Untranslated entries first"
 msgstr "&Pirmiausia neišversti įrašai"
 
@@ -1295,6 +1468,9 @@ msgstr "&Pirmiausia neišversti įrašai"
 msgid "Show sidebar"
 msgstr ""
 
+msgid "Show status bar"
+msgstr ""
+
 msgid "C&atalog"
 msgstr "K&atalogas"
 
@@ -1310,6 +1486,9 @@ msgstr "Atnaujinti iš &POT failo..."
 msgid "Update from &POT File..."
 msgstr "Atnaujinti iš &POT failo..."
 
+msgid "Sync with Crowdin"
+msgstr ""
+
 msgid "Fill missing translations from &TM..."
 msgstr ""
 
@@ -1433,6 +1612,9 @@ msgstr ""
 msgid "Catalog properties"
 msgstr "Katalogo savybės"
 
+msgid "Project name and version:"
+msgstr "Projekto pavadinimas ir versija:"
+
 msgid "Plural Forms:"
 msgstr "Daugiskaitos formos:"
 
@@ -1445,17 +1627,29 @@ msgstr "Naudoti pasirinktines išraiškas"
 msgid "Learn about plural forms"
 msgstr "Sužinkokite apie daugiskaitos formas"
 
+msgid "Charset:"
+msgstr "Koduotė:"
+
+msgid "Team:"
+msgstr "Komanda:"
+
+msgid "Team's email address:"
+msgstr "Komandos el. paštas:"
+
 msgid "Translation properties"
 msgstr "Vertimo savybės"
 
+msgid "Sources paths"
+msgstr "Išeities failų keliai"
+
 msgid "Extract text from source files in the following directories:"
 msgstr "Eksportuoti tekstą iš išeities failų esančių šiuose aplankaluose:"
 
 msgid "Base path:"
 msgstr "Pagrindinis kelias:"
 
-msgid "Sources paths"
-msgstr "Išeities failų keliai"
+msgid "Sources keywords"
+msgstr "Išeities failų raktažodžiai"
 
 msgid ""
 "Use these keywords (function names) to recognize translatable strings\n"
@@ -1467,9 +1661,6 @@ msgstr ""
 msgid "Learn about gettext keywords"
 msgstr "Sužinokite daugiau apie gettext raktažodžius"
 
-msgid "Sources keywords"
-msgstr "Išeities failų raktažodžiai"
-
 msgid "Update summary"
 msgstr "Atnaujinti santrauką"
 
@@ -1517,7 +1708,7 @@ msgstr "Atnaujinti katalogą - sinchronizuoti jį su išeities tekstais"
 msgid "Toggled if selected string has fuzzy translation"
 msgstr "Įjungtas, jei pasirinktos eilutės vertimas yra neaiškus"
 
-msgid "Show or hide the sidebar."
+msgid "Show or hide the sidebar"
 msgstr ""
 
 #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer.
@@ -1529,11 +1720,14 @@ msgid ""
 "translation corresponds to."
 msgstr ""
 
+msgid "Notes for translators:"
+msgstr "Pastabos vertėjams:"
+
 msgid "Add comment"
-msgstr ""
+msgstr "Pridėti komentarą"
 
 msgid "Add Comment"
-msgstr ""
+msgstr "Pridėti komentarą"
 
 msgid "Translation suggestions:"
 msgstr "Vertimų siūlymai:"
@@ -1607,14 +1801,21 @@ msgstr "Keisti vertimą"
 msgid "Open an existing PO file and edit the translation."
 msgstr "Atverti egzistuojantį PO failą ir redaguoti vertimą."
 
-msgid "Create new translation"
-msgstr "Sukurti naują vertimą"
-
 msgid ""
 "Take an existing PO file or POT template and create a new translation from "
 "it."
 msgstr "Paimti esamą PO ar POT failą ir sukurti iš jo naują vertimą."
 
+msgid "Collaborate on a translation with Crowdin"
+msgstr ""
+
+msgid ""
+"Download a file from Crowdin project, translate and sync your changes back."
+msgstr ""
+
+msgid "What is Crowdin?"
+msgstr "Kas yra Crowdin?"
+
 msgid "There are no translations. That’s unusual."
 msgstr "Nėra vertimų. Neįprasta."
 
@@ -1652,3 +1853,9 @@ msgstr "Išskleisti iš šaltinių"
 
 msgid "Configure source code extraction in Properties."
 msgstr "Pradinio kodo ištraukimą galite sukonfigūruoti savybėse."
+
+msgid "Sync"
+msgstr ""
+
+msgid "Synchronize the translation with Crowdin"
+msgstr ""
diff --git a/locales/lv.mo b/locales/lv.mo
index 90170cb..617643e 100644
Binary files a/locales/lv.mo and b/locales/lv.mo differ
diff --git a/locales/lv.po b/locales/lv.po
index 9226d2c..ce9dbd7 100644
--- a/locales/lv.po
+++ b/locales/lv.po
@@ -2,8 +2,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: poedit\n"
 "Report-Msgid-Bugs-To: help at poedit.net\n"
-"POT-Creation-Date: 2015-01-10 16:00+0100\n"
-"PO-Revision-Date: 2015-03-10 12:33-0400\n"
+"POT-Creation-Date: 2015-05-27 11:31+0200\n"
+"PO-Revision-Date: 2015-05-27 05:17-0400\n"
 "Last-Translator: vslavik <vaclav at slavik.io>\n"
 "Language-Team: Latvian\n"
 "Language: lv_LV\n"
@@ -87,6 +87,15 @@ msgstr ""
 msgid "Error saving catalog"
 msgstr "Kļūda saglabājot katalogu"
 
+msgid "PO Translation Files"
+msgstr ""
+
+msgid "POT Translation Templates"
+msgstr ""
+
+msgid "All Translation Files"
+msgstr ""
+
 msgid "Merging differences..."
 msgstr "Apvienoju atšķirības..."
 
@@ -106,6 +115,83 @@ msgstr "Valodas izvēle"
 msgid "You must restart Poedit for this change to take effect."
 msgstr "Jums ir jāpārstartē Poedit, lai šīs izmaiņas stātos spēkā."
 
+msgid "Downloading translations is disabled in this project."
+msgstr ""
+
+msgid "Not authorized, please sign in again."
+msgstr ""
+
+msgid "Sign in to Crowdin"
+msgstr ""
+
+msgid ""
+"Crowdin is an online localization management platform and collaborative "
+"translation tool. Poedit can seamlessly sync PO files managed at Crowdin."
+msgstr ""
+
+msgid "Sign In"
+msgstr ""
+
+msgid "Sign in"
+msgstr ""
+
+msgid "Sign Out"
+msgstr ""
+
+msgid "Sign out"
+msgstr ""
+
+msgid "Waiting for authentication…"
+msgstr ""
+
+msgid "Updating user information…"
+msgstr ""
+
+msgid "Signed in as:"
+msgstr ""
+
+msgid "Learn More About Crowdin"
+msgstr ""
+
+msgid "Learn more about Crowdin"
+msgstr ""
+
+msgid "Open Crowdin translation"
+msgstr ""
+
+msgid "Project:"
+msgstr ""
+
+msgid "Language:"
+msgstr "Valoda:"
+
+msgid "File:"
+msgstr ""
+
+msgid "No translation projects listed in your Crowdin account."
+msgstr ""
+
+msgid "This project has no files that can be translated in Poedit."
+msgstr ""
+
+msgid "This file can only be edited in Crowdin’s web interface."
+msgstr ""
+
+msgid "Downloading latest translations…"
+msgstr ""
+
+msgid "Syncing with Crowdin"
+msgstr ""
+
+msgid "Syncing with Crowdin failed."
+msgstr ""
+
+msgid "Crowdin error"
+msgstr ""
+
+msgid "Uploading translations…"
+msgstr ""
+
 msgid "&Copy"
 msgstr ""
 
@@ -150,6 +236,12 @@ msgstr ""
 msgid "don't delete temporary files (for debugging)"
 msgstr "neizdzēst pagaidu failus (atkļūdošanai)"
 
+msgid "handle a poedit:// URI"
+msgstr ""
+
+msgid "Failed to communicate with Poedit process."
+msgstr ""
+
 #, c-format
 msgid "Unhandled exception occurred: %s"
 msgstr ""
@@ -160,12 +252,6 @@ msgstr ""
 msgid "Open catalog"
 msgstr "Atvērt katalogu"
 
-msgid "All Files"
-msgstr ""
-
-msgid "PO Translation Files"
-msgstr ""
-
 #, c-format
 msgid "File '%s' doesn't exist."
 msgstr "Fails '%s' neeksistē."
@@ -393,6 +479,17 @@ msgstr "Daudzskaitlis:"
 msgid "Translation:"
 msgstr "Tulkojums:"
 
+msgid ""
+"POT files are only templates and don’t contain any translations themselves.\n"
+"To make a translation, create a new PO file based on the template."
+msgstr ""
+
+msgid "Create New Translation"
+msgstr ""
+
+msgid "Create new translation"
+msgstr ""
+
 #. TRANSLATORS: %s is language name in its basic form (as you
 #. would see e.g. in a list of supported languages). You may need
 #. to rephrase it, e.g. to an equivalent of "for language %s".
@@ -440,9 +537,6 @@ msgstr ""
 msgid "Open catalog template"
 msgstr "Atvērt kataloga paraugu"
 
-msgid "POT Translation Templates"
-msgstr ""
-
 msgid "Updating catalog"
 msgstr ""
 
@@ -515,16 +609,18 @@ msgstr[2] ""
 msgid "The translation is ready for use."
 msgstr ""
 
-msgid "No references to this string found."
-msgstr "Šai virknei nav atrastas atsauces."
-
-msgid "Please choose the reference you want to show:"
-msgstr "Lūdzu, izvēlieties atsauci, kuru vēlaties aplūkot:"
+msgid "Context:"
+msgstr ""
 
-msgid "References"
-msgstr "Atsauces"
+#, c-format
+msgid "Poedit automatically fixed invalid content in the file “%s”."
+msgstr ""
 
-msgid "Context:"
+msgid ""
+"The file contained duplicate items, which is not allowed in PO files and "
+"would prevent the file from being used. Poedit fixed the issue, but you "
+"should review translations of any items marked as fuzzy and correct them if "
+"necessary."
 msgstr ""
 
 msgid "Language of the translation isn't set."
@@ -536,6 +632,21 @@ msgstr ""
 msgid "Set language"
 msgstr ""
 
+#. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)."
+msgid ""
+"Suggestions are not available if the translation language is not set "
+"correctly. Other features, such as plural forms, may be affected as well."
+msgstr ""
+
+msgid "Language of the translation is the same as source language."
+msgstr ""
+
+msgid "Fix Language"
+msgstr ""
+
+msgid "Fix language"
+msgstr ""
+
 msgid ""
 "This catalog has entries with plural forms, but doesn't have Plural-Forms "
 "header configured."
@@ -570,6 +681,7 @@ msgstr "Salabot galveni"
 msgid "Plural forms expression used by the catalog is unusual for %s."
 msgstr ""
 
+#. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the catalog is unusual for %s.")"
 msgid "Review"
 msgstr ""
 
@@ -592,6 +704,13 @@ msgstr[0] ""
 msgstr[1] ""
 msgstr[2] ""
 
+#, c-format
+msgid "%d entry"
+msgid_plural "%d entries"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+
 msgid " (unsaved)"
 msgstr ""
 
@@ -710,6 +829,9 @@ msgstr ""
 msgid "Form %i"
 msgstr "Forma %i"
 
+msgid "Singular"
+msgstr ""
+
 msgid "Zero"
 msgstr ""
 
@@ -719,6 +841,9 @@ msgstr ""
 msgid "Two"
 msgstr ""
 
+msgid "Plural"
+msgstr ""
+
 msgid "Other"
 msgstr ""
 
@@ -747,6 +872,12 @@ msgstr ""
 msgid "Show Sidebar"
 msgstr ""
 
+msgid "Hide Status Bar"
+msgstr ""
+
+msgid "Show Status Bar"
+msgstr ""
+
 msgid "Source text"
 msgstr "Avota teksts"
 
@@ -756,6 +887,10 @@ msgstr "Tulkojums"
 msgid "ID"
 msgstr ""
 
+#, c-format
+msgid "Source text — %s"
+msgstr ""
+
 msgid "unknown language"
 msgstr ""
 
@@ -766,57 +901,73 @@ msgstr ""
 msgid "Error:"
 msgstr ""
 
-msgid "Project info"
-msgstr "Projekta informācija"
+msgid "Source file"
+msgstr "Avota fails"
 
-msgid "Project name and version:"
-msgstr "Projekta nosaukums un versija:"
+msgid "Source file occurrence:"
+msgstr "Avota faila gadījums:"
 
-msgid "Language:"
-msgstr "Valoda:"
+msgid "Open in Editor"
+msgstr ""
 
-msgid "Team:"
-msgstr "Komanda:"
+msgid "Open in editor"
+msgstr ""
 
-msgid "Team's email address:"
-msgstr "Komandas e-pasta adrese:"
+msgid "No references for the selected item."
+msgstr ""
 
-msgid "Charset:"
-msgstr "Simbolkopa:"
+#, c-format
+msgid "Error opening file %s!"
+msgstr "Kļūda atverot failu %s!"
 
-msgid "Source"
-msgstr "Avots"
+msgid "Find"
+msgstr ""
 
-msgid "Notes"
-msgstr "Piezīmes"
+msgid "Replace"
+msgstr ""
 
-msgid "Automatic translation"
-msgstr "Automātiskais tulkojums"
+#. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.)
+msgid "Options"
+msgstr ""
 
-msgid "Fuzzy translation"
-msgstr "Nepilnīgs tulkojums"
+msgid "Ignore case"
+msgstr ""
 
-msgid "Notes for translators:"
+msgid "Wrap around"
 msgstr ""
 
-msgid "Comment:"
-msgstr "Komentārs:"
+msgid "Whole words only"
+msgstr "Tikai veselus vārdus"
 
-msgid "Source file"
-msgstr "Avota fails"
+msgid "Find in source texts"
+msgstr ""
 
-msgid "Source file occurrence:"
-msgstr "Avota faila gadījums:"
+msgid "Find in translations"
+msgstr ""
 
-msgid "Open in Editor"
+msgid "Find in comments"
+msgstr "Meklēt komentāros"
+
+msgid "Close"
+msgstr "Aizvērt"
+
+msgid "Replace All"
 msgstr ""
 
-msgid "Open in editor"
+msgid "Replace all"
 msgstr ""
 
-#, c-format
-msgid "Error opening file %s!"
-msgstr "Kļūda atverot failu %s!"
+msgid "< &Previous"
+msgstr ""
+
+msgid "&Next >"
+msgstr ""
+
+msgid "String to find"
+msgstr ""
+
+msgid "Replacement string"
+msgstr ""
 
 #, c-format
 msgid "Cannot execute program: %s"
@@ -1009,9 +1160,19 @@ msgstr "Jauns"
 msgid "Edit"
 msgstr "Rediģēt"
 
+msgid "Delete extractor"
+msgstr ""
+
+#, c-format
+msgid "Are you sure you want to delete the “%s” extractor?"
+msgstr ""
+
 msgid "Extractors"
 msgstr ""
 
+msgid "Accounts"
+msgstr ""
+
 msgid "Automatically check for updates"
 msgstr ""
 
@@ -1050,7 +1211,34 @@ msgstr ""
 msgid "Advanced"
 msgstr ""
 
-msgid "Additional keywords"
+msgid ""
+"<big>Drag and Drop Folders Here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+
+msgid ""
+"<big>Drag and drop folders here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+
+msgid "Add Folders..."
+msgstr ""
+
+msgid "Add folders..."
+msgstr ""
+
+msgid "Add Files..."
+msgstr ""
+
+msgid "Add files..."
+msgstr ""
+
+msgid "Add Wildcard..."
+msgstr ""
+
+msgid "Add wildcard..."
 msgstr ""
 
 msgid "Paths"
@@ -1059,6 +1247,9 @@ msgstr "Ceļi"
 msgid "Excluded paths"
 msgstr ""
 
+msgid "Additional keywords"
+msgstr ""
+
 msgid "Name of the project the translation is for"
 msgstr ""
 
@@ -1071,6 +1262,9 @@ msgstr "UTF-8 (ieteicamais)"
 msgid "Please save the file first. This section cannot be edited until then."
 msgstr ""
 
+msgid "Comment:"
+msgstr "Komentārs:"
+
 msgid "OK"
 msgstr "Labi"
 
@@ -1080,42 +1274,6 @@ msgstr ""
 msgid "Clear the comment"
 msgstr "Notīrīt komentāru"
 
-msgid "Find..."
-msgstr "Meklēt..."
-
-msgid "String to find:"
-msgstr "Meklējamā virkne:"
-
-msgid "Case sensitive"
-msgstr "Saskaņot reģistru"
-
-msgid "Start from the first item"
-msgstr "Sākt no pirmā vienuma"
-
-msgid "Whole words only"
-msgstr "Tikai veselus vārdus"
-
-msgid "Find in original strings"
-msgstr "Meklēt oriģinālajās virknēs"
-
-msgid "Find in translations"
-msgstr ""
-
-msgid "Find in comments"
-msgstr "Meklēt komentāros"
-
-msgid "Find in automatic comments"
-msgstr "Meklēt automātiskajos komentāros"
-
-msgid "Close"
-msgstr "Aizvērt"
-
-msgid "< &Previous"
-msgstr ""
-
-msgid "&Next >"
-msgstr ""
-
 msgid "Create new translations project"
 msgstr "Izveidot jaunu tulkošanas projektu"
 
@@ -1170,6 +1328,12 @@ msgstr "&Atvērt..."
 msgid "Open Recent"
 msgstr ""
 
+msgid "Open from Crowdin..."
+msgstr ""
+
+msgid "Open From Crowdin..."
+msgstr ""
+
 msgid "&Save"
 msgstr "&Saglabāt"
 
@@ -1218,13 +1382,16 @@ msgstr "&Parādīt atsauces"
 msgid "&Find..."
 msgstr "&Atrast..."
 
+msgid "Replace..."
+msgstr ""
+
 msgid "Find next"
 msgstr ""
 
 msgid "Find previous"
 msgstr ""
 
-msgid "Find"
+msgid "Find and Replace..."
 msgstr ""
 
 msgid "Find Next"
@@ -1266,6 +1433,12 @@ msgstr ""
 msgid "&Group By Context"
 msgstr ""
 
+msgid "Entries with errors first"
+msgstr ""
+
+msgid "Entries with Errors First"
+msgstr ""
+
 msgid "&Untranslated entries first"
 msgstr "Vispirms neizt&ulkotos ierakstus"
 
@@ -1275,6 +1448,9 @@ msgstr "Vispirms neizt&ulkotos ierakstus"
 msgid "Show sidebar"
 msgstr ""
 
+msgid "Show status bar"
+msgstr ""
+
 msgid "C&atalog"
 msgstr "K&atalogs"
 
@@ -1290,6 +1466,9 @@ msgstr "Atjaunot no &POT faila..."
 msgid "Update from &POT File..."
 msgstr "Atjaunot no &POT faila..."
 
+msgid "Sync with Crowdin"
+msgstr ""
+
 msgid "Fill missing translations from &TM..."
 msgstr ""
 
@@ -1413,6 +1592,9 @@ msgstr ""
 msgid "Catalog properties"
 msgstr "Kataloga īpašības"
 
+msgid "Project name and version:"
+msgstr "Projekta nosaukums un versija:"
+
 msgid "Plural Forms:"
 msgstr "Daudzskaitļa formas:"
 
@@ -1425,17 +1607,29 @@ msgstr ""
 msgid "Learn about plural forms"
 msgstr ""
 
+msgid "Charset:"
+msgstr "Simbolkopa:"
+
+msgid "Team:"
+msgstr "Komanda:"
+
+msgid "Team's email address:"
+msgstr "Komandas e-pasta adrese:"
+
 msgid "Translation properties"
 msgstr ""
 
+msgid "Sources paths"
+msgstr "Avotu ceļi"
+
 msgid "Extract text from source files in the following directories:"
 msgstr "Izvilkt tekstu no avotu failiem sekojošajās mapēs:"
 
 msgid "Base path:"
 msgstr "Bāzes ceļš:"
 
-msgid "Sources paths"
-msgstr "Avotu ceļi"
+msgid "Sources keywords"
+msgstr "Avotu atslēgvārdi"
 
 msgid ""
 "Use these keywords (function names) to recognize translatable strings\n"
@@ -1448,9 +1642,6 @@ msgstr ""
 msgid "Learn about gettext keywords"
 msgstr ""
 
-msgid "Sources keywords"
-msgstr "Avotu atslēgvārdi"
-
 msgid "Update summary"
 msgstr "Atjaunot kopsavilkumu"
 
@@ -1498,7 +1689,7 @@ msgstr "Atjaunot katalogu - sinhronizēt to ar avotiem"
 msgid "Toggled if selected string has fuzzy translation"
 msgstr "Noslēgt, ja izvēlētā virkne satur nepilnīgu tulkojumu"
 
-msgid "Show or hide the sidebar."
+msgid "Show or hide the sidebar"
 msgstr ""
 
 #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer.
@@ -1510,6 +1701,9 @@ msgid ""
 "translation corresponds to."
 msgstr ""
 
+msgid "Notes for translators:"
+msgstr ""
+
 msgid "Add comment"
 msgstr ""
 
@@ -1582,14 +1776,21 @@ msgstr ""
 msgid "Open an existing PO file and edit the translation."
 msgstr ""
 
-msgid "Create new translation"
-msgstr ""
-
 msgid ""
 "Take an existing PO file or POT template and create a new translation from "
 "it."
 msgstr ""
 
+msgid "Collaborate on a translation with Crowdin"
+msgstr ""
+
+msgid ""
+"Download a file from Crowdin project, translate and sync your changes back."
+msgstr ""
+
+msgid "What is Crowdin?"
+msgstr ""
+
 msgid "There are no translations. That’s unusual."
 msgstr ""
 
@@ -1622,3 +1823,9 @@ msgstr ""
 
 msgid "Configure source code extraction in Properties."
 msgstr ""
+
+msgid "Sync"
+msgstr ""
+
+msgid "Synchronize the translation with Crowdin"
+msgstr ""
diff --git a/locales/mk.mo b/locales/mk.mo
index d22c5cb..6603fcf 100644
Binary files a/locales/mk.mo and b/locales/mk.mo differ
diff --git a/locales/mk.po b/locales/mk.po
index fac5e50..5b18052 100644
--- a/locales/mk.po
+++ b/locales/mk.po
@@ -2,8 +2,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: poedit\n"
 "Report-Msgid-Bugs-To: help at poedit.net\n"
-"POT-Creation-Date: 2015-01-10 16:00+0100\n"
-"PO-Revision-Date: 2015-03-10 12:33-0400\n"
+"POT-Creation-Date: 2015-05-27 11:31+0200\n"
+"PO-Revision-Date: 2015-05-27 05:17-0400\n"
 "Last-Translator: vslavik <vaclav at slavik.io>\n"
 "Language-Team: Macedonian (FYROM)\n"
 "Language: mk_MK\n"
@@ -91,6 +91,15 @@ msgstr ""
 msgid "Error saving catalog"
 msgstr "Грешка при зачувување на каталогот"
 
+msgid "PO Translation Files"
+msgstr ""
+
+msgid "POT Translation Templates"
+msgstr ""
+
+msgid "All Translation Files"
+msgstr ""
+
 msgid "Merging differences..."
 msgstr "Спојување на разликите..."
 
@@ -110,6 +119,83 @@ msgstr "Избор на јазик"
 msgid "You must restart Poedit for this change to take effect."
 msgstr "Мора да го рестартирате Poedit за да има ефект оваа измена."
 
+msgid "Downloading translations is disabled in this project."
+msgstr ""
+
+msgid "Not authorized, please sign in again."
+msgstr ""
+
+msgid "Sign in to Crowdin"
+msgstr ""
+
+msgid ""
+"Crowdin is an online localization management platform and collaborative "
+"translation tool. Poedit can seamlessly sync PO files managed at Crowdin."
+msgstr ""
+
+msgid "Sign In"
+msgstr ""
+
+msgid "Sign in"
+msgstr ""
+
+msgid "Sign Out"
+msgstr ""
+
+msgid "Sign out"
+msgstr ""
+
+msgid "Waiting for authentication…"
+msgstr ""
+
+msgid "Updating user information…"
+msgstr ""
+
+msgid "Signed in as:"
+msgstr ""
+
+msgid "Learn More About Crowdin"
+msgstr ""
+
+msgid "Learn more about Crowdin"
+msgstr ""
+
+msgid "Open Crowdin translation"
+msgstr ""
+
+msgid "Project:"
+msgstr ""
+
+msgid "Language:"
+msgstr "Јазик:"
+
+msgid "File:"
+msgstr ""
+
+msgid "No translation projects listed in your Crowdin account."
+msgstr ""
+
+msgid "This project has no files that can be translated in Poedit."
+msgstr ""
+
+msgid "This file can only be edited in Crowdin’s web interface."
+msgstr ""
+
+msgid "Downloading latest translations…"
+msgstr ""
+
+msgid "Syncing with Crowdin"
+msgstr ""
+
+msgid "Syncing with Crowdin failed."
+msgstr ""
+
+msgid "Crowdin error"
+msgstr ""
+
+msgid "Uploading translations…"
+msgstr ""
+
 msgid "&Copy"
 msgstr ""
 
@@ -154,6 +240,12 @@ msgstr ""
 msgid "don't delete temporary files (for debugging)"
 msgstr "не ги бришете привремените датотеки (за дебугирање)"
 
+msgid "handle a poedit:// URI"
+msgstr ""
+
+msgid "Failed to communicate with Poedit process."
+msgstr ""
+
 #, c-format
 msgid "Unhandled exception occurred: %s"
 msgstr ""
@@ -164,12 +256,6 @@ msgstr ""
 msgid "Open catalog"
 msgstr "Отвори каталог"
 
-msgid "All Files"
-msgstr ""
-
-msgid "PO Translation Files"
-msgstr ""
-
 #, c-format
 msgid "File '%s' doesn't exist."
 msgstr "Датотеката '%s' не постои."
@@ -397,6 +483,17 @@ msgstr "Множина:"
 msgid "Translation:"
 msgstr "Превод:"
 
+msgid ""
+"POT files are only templates and don’t contain any translations themselves.\n"
+"To make a translation, create a new PO file based on the template."
+msgstr ""
+
+msgid "Create New Translation"
+msgstr ""
+
+msgid "Create new translation"
+msgstr ""
+
 #. TRANSLATORS: %s is language name in its basic form (as you
 #. would see e.g. in a list of supported languages). You may need
 #. to rephrase it, e.g. to an equivalent of "for language %s".
@@ -444,9 +541,6 @@ msgstr ""
 msgid "Open catalog template"
 msgstr "Отвори шаблон за каталог"
 
-msgid "POT Translation Templates"
-msgstr ""
-
 msgid "Updating catalog"
 msgstr "Ажурирање на каталог"
 
@@ -519,18 +613,20 @@ msgstr[1] ""
 msgid "The translation is ready for use."
 msgstr "Преводот е спремен за користење."
 
-msgid "No references to this string found."
-msgstr "Нема пронајдени референци за овој израз."
-
-msgid "Please choose the reference you want to show:"
-msgstr "Ве молам изберете ја референцата што сакате да ја покажете:"
-
-msgid "References"
-msgstr "Референци"
-
 msgid "Context:"
 msgstr "Контекст:"
 
+#, c-format
+msgid "Poedit automatically fixed invalid content in the file “%s”."
+msgstr ""
+
+msgid ""
+"The file contained duplicate items, which is not allowed in PO files and "
+"would prevent the file from being used. Poedit fixed the issue, but you "
+"should review translations of any items marked as fuzzy and correct them if "
+"necessary."
+msgstr ""
+
 msgid "Language of the translation isn't set."
 msgstr ""
 
@@ -540,6 +636,21 @@ msgstr ""
 msgid "Set language"
 msgstr ""
 
+#. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)."
+msgid ""
+"Suggestions are not available if the translation language is not set "
+"correctly. Other features, such as plural forms, may be affected as well."
+msgstr ""
+
+msgid "Language of the translation is the same as source language."
+msgstr ""
+
+msgid "Fix Language"
+msgstr ""
+
+msgid "Fix language"
+msgstr ""
+
 msgid ""
 "This catalog has entries with plural forms, but doesn't have Plural-Forms "
 "header configured."
@@ -574,6 +685,7 @@ msgstr "Поправи заглавие"
 msgid "Plural forms expression used by the catalog is unusual for %s."
 msgstr ""
 
+#. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the catalog is unusual for %s.")"
 msgid "Review"
 msgstr ""
 
@@ -595,6 +707,12 @@ msgid_plural "%d errors"
 msgstr[0] ""
 msgstr[1] ""
 
+#, c-format
+msgid "%d entry"
+msgid_plural "%d entries"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid " (unsaved)"
 msgstr ""
 
@@ -711,6 +829,9 @@ msgstr ""
 msgid "Form %i"
 msgstr "Формулар %i"
 
+msgid "Singular"
+msgstr ""
+
 msgid "Zero"
 msgstr ""
 
@@ -720,6 +841,9 @@ msgstr ""
 msgid "Two"
 msgstr ""
 
+msgid "Plural"
+msgstr ""
+
 msgid "Other"
 msgstr ""
 
@@ -748,6 +872,12 @@ msgstr ""
 msgid "Show Sidebar"
 msgstr ""
 
+msgid "Hide Status Bar"
+msgstr ""
+
+msgid "Show Status Bar"
+msgstr ""
+
 msgid "Source text"
 msgstr "Изворен текст"
 
@@ -757,6 +887,10 @@ msgstr "Превод"
 msgid "ID"
 msgstr ""
 
+#, c-format
+msgid "Source text — %s"
+msgstr ""
+
 msgid "unknown language"
 msgstr ""
 
@@ -767,57 +901,73 @@ msgstr ""
 msgid "Error:"
 msgstr "Грешка:"
 
-msgid "Project info"
-msgstr "Информација за проектот"
+msgid "Source file"
+msgstr "Изворна датотека"
 
-msgid "Project name and version:"
-msgstr "Име и верзија на проектот:"
+msgid "Source file occurrence:"
+msgstr "Појава на изворна датотека:"
 
-msgid "Language:"
-msgstr "Јазик:"
+msgid "Open in Editor"
+msgstr ""
 
-msgid "Team:"
-msgstr "Тим:"
+msgid "Open in editor"
+msgstr ""
 
-msgid "Team's email address:"
-msgstr "Адреса за е-пошта на тимот:"
+msgid "No references for the selected item."
+msgstr ""
 
-msgid "Charset:"
-msgstr "Кодна табела:"
+#, c-format
+msgid "Error opening file %s!"
+msgstr "Грешка при отворање на датотеката %s!"
 
-msgid "Source"
-msgstr "Извор"
+msgid "Find"
+msgstr ""
 
-msgid "Notes"
-msgstr "Забелешки"
+msgid "Replace"
+msgstr ""
 
-msgid "Automatic translation"
-msgstr "Автоматки превод"
+#. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.)
+msgid "Options"
+msgstr ""
 
-msgid "Fuzzy translation"
-msgstr "Нејасен превод"
+msgid "Ignore case"
+msgstr ""
 
-msgid "Notes for translators:"
-msgstr "Белешка за преведувачите:"
+msgid "Wrap around"
+msgstr ""
 
-msgid "Comment:"
-msgstr "Коментар:"
+msgid "Whole words only"
+msgstr "Само цели зборови"
 
-msgid "Source file"
-msgstr "Изворна датотека"
+msgid "Find in source texts"
+msgstr ""
 
-msgid "Source file occurrence:"
-msgstr "Појава на изворна датотека:"
+msgid "Find in translations"
+msgstr ""
 
-msgid "Open in Editor"
+msgid "Find in comments"
+msgstr "Барај во коментари"
+
+msgid "Close"
+msgstr "Затвори"
+
+msgid "Replace All"
 msgstr ""
 
-msgid "Open in editor"
+msgid "Replace all"
 msgstr ""
 
-#, c-format
-msgid "Error opening file %s!"
-msgstr "Грешка при отворање на датотеката %s!"
+msgid "< &Previous"
+msgstr ""
+
+msgid "&Next >"
+msgstr ""
+
+msgid "String to find"
+msgstr ""
+
+msgid "Replacement string"
+msgstr ""
 
 #, c-format
 msgid "Cannot execute program: %s"
@@ -1010,9 +1160,19 @@ msgstr "Ново"
 msgid "Edit"
 msgstr "Уреди"
 
+msgid "Delete extractor"
+msgstr ""
+
+#, c-format
+msgid "Are you sure you want to delete the “%s” extractor?"
+msgstr ""
+
 msgid "Extractors"
 msgstr ""
 
+msgid "Accounts"
+msgstr ""
+
 msgid "Automatically check for updates"
 msgstr ""
 
@@ -1051,7 +1211,34 @@ msgstr ""
 msgid "Advanced"
 msgstr ""
 
-msgid "Additional keywords"
+msgid ""
+"<big>Drag and Drop Folders Here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+
+msgid ""
+"<big>Drag and drop folders here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+
+msgid "Add Folders..."
+msgstr ""
+
+msgid "Add folders..."
+msgstr ""
+
+msgid "Add Files..."
+msgstr ""
+
+msgid "Add files..."
+msgstr ""
+
+msgid "Add Wildcard..."
+msgstr ""
+
+msgid "Add wildcard..."
 msgstr ""
 
 msgid "Paths"
@@ -1060,6 +1247,9 @@ msgstr "Патеки"
 msgid "Excluded paths"
 msgstr ""
 
+msgid "Additional keywords"
+msgstr ""
+
 msgid "Name of the project the translation is for"
 msgstr ""
 
@@ -1072,6 +1262,9 @@ msgstr "UTF-8 (препорачано)"
 msgid "Please save the file first. This section cannot be edited until then."
 msgstr ""
 
+msgid "Comment:"
+msgstr "Коментар:"
+
 msgid "OK"
 msgstr "Во ред"
 
@@ -1081,42 +1274,6 @@ msgstr "Исчисти"
 msgid "Clear the comment"
 msgstr "Исчисти го коментарот"
 
-msgid "Find..."
-msgstr "Барај..."
-
-msgid "String to find:"
-msgstr "Низа за барање:"
-
-msgid "Case sensitive"
-msgstr "Чувствително на големина на букви"
-
-msgid "Start from the first item"
-msgstr "Започни од првиот елемент"
-
-msgid "Whole words only"
-msgstr "Само цели зборови"
-
-msgid "Find in original strings"
-msgstr "Барај во оригинални низи"
-
-msgid "Find in translations"
-msgstr ""
-
-msgid "Find in comments"
-msgstr "Барај во коментари"
-
-msgid "Find in automatic comments"
-msgstr "Барај во автоматски коментари"
-
-msgid "Close"
-msgstr "Затвори"
-
-msgid "< &Previous"
-msgstr ""
-
-msgid "&Next >"
-msgstr ""
-
 msgid "Create new translations project"
 msgstr "Создај нов преведувачки проект"
 
@@ -1171,6 +1328,12 @@ msgstr "Отвори..."
 msgid "Open Recent"
 msgstr ""
 
+msgid "Open from Crowdin..."
+msgstr ""
+
+msgid "Open From Crowdin..."
+msgstr ""
+
 msgid "&Save"
 msgstr "Зачувај"
 
@@ -1219,13 +1382,16 @@ msgstr "Прикажи референци"
 msgid "&Find..."
 msgstr "Барај..."
 
+msgid "Replace..."
+msgstr ""
+
 msgid "Find next"
 msgstr ""
 
 msgid "Find previous"
 msgstr ""
 
-msgid "Find"
+msgid "Find and Replace..."
 msgstr ""
 
 msgid "Find Next"
@@ -1267,6 +1433,12 @@ msgstr ""
 msgid "&Group By Context"
 msgstr ""
 
+msgid "Entries with errors first"
+msgstr ""
+
+msgid "Entries with Errors First"
+msgstr ""
+
 msgid "&Untranslated entries first"
 msgstr "Прво непреведните ставки"
 
@@ -1276,6 +1448,9 @@ msgstr "Прво непреведните ставки"
 msgid "Show sidebar"
 msgstr ""
 
+msgid "Show status bar"
+msgstr ""
+
 msgid "C&atalog"
 msgstr "Каталог"
 
@@ -1291,6 +1466,9 @@ msgstr "Ажурирај од POT датотека..."
 msgid "Update from &POT File..."
 msgstr "Ажурирај од РОТ датотека..."
 
+msgid "Sync with Crowdin"
+msgstr ""
+
 msgid "Fill missing translations from &TM..."
 msgstr ""
 
@@ -1415,6 +1593,9 @@ msgstr ""
 msgid "Catalog properties"
 msgstr "Својства на каталог"
 
+msgid "Project name and version:"
+msgstr "Име и верзија на проектот:"
+
 msgid "Plural Forms:"
 msgstr "Множински форми:"
 
@@ -1427,17 +1608,29 @@ msgstr ""
 msgid "Learn about plural forms"
 msgstr "Дознај повеќе за форми на множина"
 
+msgid "Charset:"
+msgstr "Кодна табела:"
+
+msgid "Team:"
+msgstr "Тим:"
+
+msgid "Team's email address:"
+msgstr "Адреса за е-пошта на тимот:"
+
 msgid "Translation properties"
 msgstr ""
 
+msgid "Sources paths"
+msgstr "Изворни патеки"
+
 msgid "Extract text from source files in the following directories:"
 msgstr "Отпакувај го текстот од изворните датотеки во следниот директориум:"
 
 msgid "Base path:"
 msgstr "Основна патека:"
 
-msgid "Sources paths"
-msgstr "Изворни патеки"
+msgid "Sources keywords"
+msgstr "Изворни клучни зборови"
 
 msgid ""
 "Use these keywords (function names) to recognize translatable strings\n"
@@ -1449,9 +1642,6 @@ msgstr ""
 msgid "Learn about gettext keywords"
 msgstr ""
 
-msgid "Sources keywords"
-msgstr "Изворни клучни зборови"
-
 msgid "Update summary"
 msgstr "Извештај од ажурирање"
 
@@ -1500,7 +1690,7 @@ msgstr "Ажурирај каталог - синхронизирај со изв
 msgid "Toggled if selected string has fuzzy translation"
 msgstr "Се менува ако низа има нејаен превод"
 
-msgid "Show or hide the sidebar."
+msgid "Show or hide the sidebar"
 msgstr ""
 
 #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer.
@@ -1512,6 +1702,9 @@ msgid ""
 "translation corresponds to."
 msgstr ""
 
+msgid "Notes for translators:"
+msgstr "Белешка за преведувачите:"
+
 msgid "Add comment"
 msgstr ""
 
@@ -1584,14 +1777,21 @@ msgstr ""
 msgid "Open an existing PO file and edit the translation."
 msgstr ""
 
-msgid "Create new translation"
-msgstr ""
-
 msgid ""
 "Take an existing PO file or POT template and create a new translation from "
 "it."
 msgstr ""
 
+msgid "Collaborate on a translation with Crowdin"
+msgstr ""
+
+msgid ""
+"Download a file from Crowdin project, translate and sync your changes back."
+msgstr ""
+
+msgid "What is Crowdin?"
+msgstr ""
+
 msgid "There are no translations. That’s unusual."
 msgstr ""
 
@@ -1624,3 +1824,9 @@ msgstr ""
 
 msgid "Configure source code extraction in Properties."
 msgstr ""
+
+msgid "Sync"
+msgstr ""
+
+msgid "Synchronize the translation with Crowdin"
+msgstr ""
diff --git a/locales/mn.mo b/locales/mn.mo
index 5adfbc3..02adbfe 100644
Binary files a/locales/mn.mo and b/locales/mn.mo differ
diff --git a/locales/mn.po b/locales/mn.po
index d9eead2..14d7c83 100644
--- a/locales/mn.po
+++ b/locales/mn.po
@@ -2,8 +2,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: poedit\n"
 "Report-Msgid-Bugs-To: help at poedit.net\n"
-"POT-Creation-Date: 2015-01-10 16:00+0100\n"
-"PO-Revision-Date: 2015-03-10 12:33-0400\n"
+"POT-Creation-Date: 2015-05-27 11:31+0200\n"
+"PO-Revision-Date: 2015-05-27 05:17-0400\n"
 "Last-Translator: vslavik <vaclav at slavik.io>\n"
 "Language-Team: Mongolian\n"
 "Language: mn_MN\n"
@@ -80,6 +80,15 @@ msgstr ""
 msgid "Error saving catalog"
 msgstr "Каталог хадгалахад алдаатай"
 
+msgid "PO Translation Files"
+msgstr ""
+
+msgid "POT Translation Templates"
+msgstr ""
+
+msgid "All Translation Files"
+msgstr ""
+
 msgid "Merging differences..."
 msgstr "Ялгааг нийлүүлж байна..."
 
@@ -99,6 +108,83 @@ msgstr "Хэл сонголт"
 msgid "You must restart Poedit for this change to take effect."
 msgstr "Та  энэ өөрчлөлтийг идвэхжүүлэхийн тулд Poedit-ийг дахин ачаална уу!"
 
+msgid "Downloading translations is disabled in this project."
+msgstr ""
+
+msgid "Not authorized, please sign in again."
+msgstr ""
+
+msgid "Sign in to Crowdin"
+msgstr ""
+
+msgid ""
+"Crowdin is an online localization management platform and collaborative "
+"translation tool. Poedit can seamlessly sync PO files managed at Crowdin."
+msgstr ""
+
+msgid "Sign In"
+msgstr ""
+
+msgid "Sign in"
+msgstr ""
+
+msgid "Sign Out"
+msgstr ""
+
+msgid "Sign out"
+msgstr ""
+
+msgid "Waiting for authentication…"
+msgstr ""
+
+msgid "Updating user information…"
+msgstr ""
+
+msgid "Signed in as:"
+msgstr ""
+
+msgid "Learn More About Crowdin"
+msgstr ""
+
+msgid "Learn more about Crowdin"
+msgstr ""
+
+msgid "Open Crowdin translation"
+msgstr ""
+
+msgid "Project:"
+msgstr ""
+
+msgid "Language:"
+msgstr "Хэл:"
+
+msgid "File:"
+msgstr ""
+
+msgid "No translation projects listed in your Crowdin account."
+msgstr ""
+
+msgid "This project has no files that can be translated in Poedit."
+msgstr ""
+
+msgid "This file can only be edited in Crowdin’s web interface."
+msgstr ""
+
+msgid "Downloading latest translations…"
+msgstr ""
+
+msgid "Syncing with Crowdin"
+msgstr ""
+
+msgid "Syncing with Crowdin failed."
+msgstr ""
+
+msgid "Crowdin error"
+msgstr ""
+
+msgid "Uploading translations…"
+msgstr ""
+
 msgid "&Copy"
 msgstr ""
 
@@ -143,6 +229,12 @@ msgstr ""
 msgid "don't delete temporary files (for debugging)"
 msgstr ""
 
+msgid "handle a poedit:// URI"
+msgstr ""
+
+msgid "Failed to communicate with Poedit process."
+msgstr ""
+
 #, c-format
 msgid "Unhandled exception occurred: %s"
 msgstr ""
@@ -153,12 +245,6 @@ msgstr ""
 msgid "Open catalog"
 msgstr "Каталог нээх"
 
-msgid "All Files"
-msgstr ""
-
-msgid "PO Translation Files"
-msgstr ""
-
 #, c-format
 msgid "File '%s' doesn't exist."
 msgstr "Файл  '%s' байхгүй байна."
@@ -386,6 +472,17 @@ msgstr ""
 msgid "Translation:"
 msgstr ""
 
+msgid ""
+"POT files are only templates and don’t contain any translations themselves.\n"
+"To make a translation, create a new PO file based on the template."
+msgstr ""
+
+msgid "Create New Translation"
+msgstr ""
+
+msgid "Create new translation"
+msgstr ""
+
 #. TRANSLATORS: %s is language name in its basic form (as you
 #. would see e.g. in a list of supported languages). You may need
 #. to rephrase it, e.g. to an equivalent of "for language %s".
@@ -433,9 +530,6 @@ msgstr ""
 msgid "Open catalog template"
 msgstr "Бэлэн каталог загвар нээх"
 
-msgid "POT Translation Templates"
-msgstr ""
-
 msgid "Updating catalog"
 msgstr ""
 
@@ -504,16 +598,18 @@ msgstr[1] ""
 msgid "The translation is ready for use."
 msgstr ""
 
-msgid "No references to this string found."
-msgstr "Энэ тэмдэгт мөрд хамаарах лавламж олдмонгүй."
-
-msgid "Please choose the reference you want to show:"
-msgstr "Үзүүлэх лавламжийг сонгоно уу:"
+msgid "Context:"
+msgstr ""
 
-msgid "References"
-msgstr "Лавламжууд"
+#, c-format
+msgid "Poedit automatically fixed invalid content in the file “%s”."
+msgstr ""
 
-msgid "Context:"
+msgid ""
+"The file contained duplicate items, which is not allowed in PO files and "
+"would prevent the file from being used. Poedit fixed the issue, but you "
+"should review translations of any items marked as fuzzy and correct them if "
+"necessary."
 msgstr ""
 
 msgid "Language of the translation isn't set."
@@ -525,6 +621,21 @@ msgstr ""
 msgid "Set language"
 msgstr ""
 
+#. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)."
+msgid ""
+"Suggestions are not available if the translation language is not set "
+"correctly. Other features, such as plural forms, may be affected as well."
+msgstr ""
+
+msgid "Language of the translation is the same as source language."
+msgstr ""
+
+msgid "Fix Language"
+msgstr ""
+
+msgid "Fix language"
+msgstr ""
+
 msgid ""
 "This catalog has entries with plural forms, but doesn't have Plural-Forms "
 "header configured."
@@ -555,6 +666,7 @@ msgstr ""
 msgid "Plural forms expression used by the catalog is unusual for %s."
 msgstr ""
 
+#. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the catalog is unusual for %s.")"
 msgid "Review"
 msgstr ""
 
@@ -576,6 +688,12 @@ msgid_plural "%d errors"
 msgstr[0] ""
 msgstr[1] ""
 
+#, c-format
+msgid "%d entry"
+msgid_plural "%d entries"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid " (unsaved)"
 msgstr ""
 
@@ -689,6 +807,9 @@ msgstr ""
 msgid "Form %i"
 msgstr ""
 
+msgid "Singular"
+msgstr ""
+
 msgid "Zero"
 msgstr ""
 
@@ -698,6 +819,9 @@ msgstr ""
 msgid "Two"
 msgstr ""
 
+msgid "Plural"
+msgstr ""
+
 msgid "Other"
 msgstr ""
 
@@ -726,6 +850,12 @@ msgstr ""
 msgid "Show Sidebar"
 msgstr ""
 
+msgid "Hide Status Bar"
+msgstr ""
+
+msgid "Show Status Bar"
+msgstr ""
+
 msgid "Source text"
 msgstr ""
 
@@ -735,6 +865,10 @@ msgstr "Орчуулга"
 msgid "ID"
 msgstr ""
 
+#, c-format
+msgid "Source text — %s"
+msgstr ""
+
 msgid "unknown language"
 msgstr ""
 
@@ -745,57 +879,73 @@ msgstr ""
 msgid "Error:"
 msgstr ""
 
-msgid "Project info"
-msgstr "Төслийн мэдээлэл"
+msgid "Source file"
+msgstr "Эх файл"
 
-msgid "Project name and version:"
-msgstr "Төслийн нэр ба хувилбар:"
+msgid "Source file occurrence:"
+msgstr ""
 
-msgid "Language:"
-msgstr "Хэл:"
+msgid "Open in Editor"
+msgstr ""
 
-msgid "Team:"
-msgstr "Баг:"
+msgid "Open in editor"
+msgstr ""
 
-msgid "Team's email address:"
-msgstr "Багийн э-захианы хаяг:"
+msgid "No references for the selected item."
+msgstr ""
 
-msgid "Charset:"
-msgstr "Кодчлол:"
+#, c-format
+msgid "Error opening file %s!"
+msgstr "%s файлыг нээхэд алдаатай!"
 
-msgid "Source"
+msgid "Find"
 msgstr ""
 
-msgid "Notes"
-msgstr "Тэмдэглэлүүд"
+msgid "Replace"
+msgstr ""
 
-msgid "Automatic translation"
-msgstr "Автомат орчуулга:"
+#. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.)
+msgid "Options"
+msgstr ""
 
-msgid "Fuzzy translation"
-msgstr "Бүдэг орчуулга"
+msgid "Ignore case"
+msgstr ""
 
-msgid "Notes for translators:"
+msgid "Wrap around"
 msgstr ""
 
-msgid "Comment:"
-msgstr "Тайлбар:"
+msgid "Whole words only"
+msgstr ""
 
-msgid "Source file"
-msgstr "Эх файл"
+msgid "Find in source texts"
+msgstr ""
 
-msgid "Source file occurrence:"
+msgid "Find in translations"
 msgstr ""
 
-msgid "Open in Editor"
+msgid "Find in comments"
 msgstr ""
 
-msgid "Open in editor"
+msgid "Close"
 msgstr ""
 
-#, c-format
-msgid "Error opening file %s!"
-msgstr "%s файлыг нээхэд алдаатай!"
+msgid "Replace All"
+msgstr ""
+
+msgid "Replace all"
+msgstr ""
+
+msgid "< &Previous"
+msgstr ""
+
+msgid "&Next >"
+msgstr ""
+
+msgid "String to find"
+msgstr ""
+
+msgid "Replacement string"
+msgstr ""
 
 #, c-format
 msgid "Cannot execute program: %s"
@@ -987,9 +1137,19 @@ msgstr "Шинэ"
 msgid "Edit"
 msgstr "Засах"
 
+msgid "Delete extractor"
+msgstr ""
+
+#, c-format
+msgid "Are you sure you want to delete the “%s” extractor?"
+msgstr ""
+
 msgid "Extractors"
 msgstr ""
 
+msgid "Accounts"
+msgstr ""
+
 msgid "Automatically check for updates"
 msgstr ""
 
@@ -1028,72 +1188,69 @@ msgstr ""
 msgid "Advanced"
 msgstr ""
 
-msgid "Additional keywords"
+msgid ""
+"<big>Drag and Drop Folders Here</big>\n"
+"\n"
+"or use the + button"
 msgstr ""
 
-msgid "Paths"
-msgstr "Замууд"
-
-msgid "Excluded paths"
+msgid ""
+"<big>Drag and drop folders here</big>\n"
+"\n"
+"or use the + button"
 msgstr ""
 
-msgid "Name of the project the translation is for"
+msgid "Add Folders..."
 msgstr ""
 
-msgid "e.g. nplurals=2; plural=(n > 1);"
+msgid "Add folders..."
 msgstr ""
 
-msgid "UTF-8 (recommended)"
+msgid "Add Files..."
 msgstr ""
 
-msgid "Please save the file first. This section cannot be edited until then."
+msgid "Add files..."
 msgstr ""
 
-msgid "OK"
-msgstr "ОК"
-
-msgid "C&lear"
+msgid "Add Wildcard..."
 msgstr ""
 
-msgid "Clear the comment"
-msgstr "Тайлбарыг арилгах"
-
-msgid "Find..."
-msgstr "Хайх..."
-
-msgid "String to find:"
-msgstr "Хайх тэмдэгт мөр:"
+msgid "Add wildcard..."
+msgstr ""
 
-msgid "Case sensitive"
-msgstr "Том жижиг үсэг ялгана"
+msgid "Paths"
+msgstr "Замууд"
 
-msgid "Start from the first item"
+msgid "Excluded paths"
 msgstr ""
 
-msgid "Whole words only"
+msgid "Additional keywords"
 msgstr ""
 
-msgid "Find in original strings"
-msgstr "Эх хувилбарын мөрнөөс хайх"
-
-msgid "Find in translations"
+msgid "Name of the project the translation is for"
 msgstr ""
 
-msgid "Find in comments"
+msgid "e.g. nplurals=2; plural=(n > 1);"
 msgstr ""
 
-msgid "Find in automatic comments"
+msgid "UTF-8 (recommended)"
 msgstr ""
 
-msgid "Close"
+msgid "Please save the file first. This section cannot be edited until then."
 msgstr ""
 
-msgid "< &Previous"
-msgstr ""
+msgid "Comment:"
+msgstr "Тайлбар:"
 
-msgid "&Next >"
+msgid "OK"
+msgstr "ОК"
+
+msgid "C&lear"
 msgstr ""
 
+msgid "Clear the comment"
+msgstr "Тайлбарыг арилгах"
+
 msgid "Create new translations project"
 msgstr "Шинэ орчуулгын төсөл үүсгэх"
 
@@ -1148,6 +1305,12 @@ msgstr ""
 msgid "Open Recent"
 msgstr ""
 
+msgid "Open from Crowdin..."
+msgstr ""
+
+msgid "Open From Crowdin..."
+msgstr ""
+
 msgid "&Save"
 msgstr "&Хадгалах"
 
@@ -1196,13 +1359,16 @@ msgstr ""
 msgid "&Find..."
 msgstr "&Хайх"
 
+msgid "Replace..."
+msgstr ""
+
 msgid "Find next"
 msgstr ""
 
 msgid "Find previous"
 msgstr ""
 
-msgid "Find"
+msgid "Find and Replace..."
 msgstr ""
 
 msgid "Find Next"
@@ -1244,6 +1410,12 @@ msgstr ""
 msgid "&Group By Context"
 msgstr ""
 
+msgid "Entries with errors first"
+msgstr ""
+
+msgid "Entries with Errors First"
+msgstr ""
+
 msgid "&Untranslated entries first"
 msgstr ""
 
@@ -1253,6 +1425,9 @@ msgstr ""
 msgid "Show sidebar"
 msgstr ""
 
+msgid "Show status bar"
+msgstr ""
+
 msgid "C&atalog"
 msgstr ""
 
@@ -1268,6 +1443,9 @@ msgstr "&POT файлаас шинэчилж байна..."
 msgid "Update from &POT File..."
 msgstr ""
 
+msgid "Sync with Crowdin"
+msgstr ""
+
 msgid "Fill missing translations from &TM..."
 msgstr ""
 
@@ -1391,6 +1569,9 @@ msgstr ""
 msgid "Catalog properties"
 msgstr ""
 
+msgid "Project name and version:"
+msgstr "Төслийн нэр ба хувилбар:"
+
 msgid "Plural Forms:"
 msgstr ""
 
@@ -1403,16 +1584,28 @@ msgstr ""
 msgid "Learn about plural forms"
 msgstr ""
 
+msgid "Charset:"
+msgstr "Кодчлол:"
+
+msgid "Team:"
+msgstr "Баг:"
+
+msgid "Team's email address:"
+msgstr "Багийн э-захианы хаяг:"
+
 msgid "Translation properties"
 msgstr ""
 
+msgid "Sources paths"
+msgstr ""
+
 msgid "Extract text from source files in the following directories:"
 msgstr ""
 
 msgid "Base path:"
 msgstr "Үндсэн зам:"
 
-msgid "Sources paths"
+msgid "Sources keywords"
 msgstr ""
 
 msgid ""
@@ -1423,9 +1616,6 @@ msgstr ""
 msgid "Learn about gettext keywords"
 msgstr ""
 
-msgid "Sources keywords"
-msgstr ""
-
 msgid "Update summary"
 msgstr "Шинэчлэлийн хураангуй"
 
@@ -1473,7 +1663,7 @@ msgstr "Каталог шинэчлэх - эхтэй цуг зэрэгцүүлэ
 msgid "Toggled if selected string has fuzzy translation"
 msgstr "Хэрэв сонгогдсон тэмдэгт мөр бүдэг орчуулгатай бол солигдоно"
 
-msgid "Show or hide the sidebar."
+msgid "Show or hide the sidebar"
 msgstr ""
 
 #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer.
@@ -1485,6 +1675,9 @@ msgid ""
 "translation corresponds to."
 msgstr ""
 
+msgid "Notes for translators:"
+msgstr ""
+
 msgid "Add comment"
 msgstr ""
 
@@ -1557,14 +1750,21 @@ msgstr ""
 msgid "Open an existing PO file and edit the translation."
 msgstr ""
 
-msgid "Create new translation"
-msgstr ""
-
 msgid ""
 "Take an existing PO file or POT template and create a new translation from "
 "it."
 msgstr ""
 
+msgid "Collaborate on a translation with Crowdin"
+msgstr ""
+
+msgid ""
+"Download a file from Crowdin project, translate and sync your changes back."
+msgstr ""
+
+msgid "What is Crowdin?"
+msgstr ""
+
 msgid "There are no translations. That’s unusual."
 msgstr ""
 
@@ -1597,3 +1797,9 @@ msgstr ""
 
 msgid "Configure source code extraction in Properties."
 msgstr ""
+
+msgid "Sync"
+msgstr ""
+
+msgid "Synchronize the translation with Crowdin"
+msgstr ""
diff --git a/locales/mr.mo b/locales/mr.mo
index 2e1f4bd..2769338 100644
Binary files a/locales/mr.mo and b/locales/mr.mo differ
diff --git a/locales/mr.po b/locales/mr.po
index e4dc853..3368e23 100644
--- a/locales/mr.po
+++ b/locales/mr.po
@@ -2,8 +2,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: poedit\n"
 "Report-Msgid-Bugs-To: help at poedit.net\n"
-"POT-Creation-Date: 2015-01-10 16:00+0100\n"
-"PO-Revision-Date: 2015-03-10 12:33-0400\n"
+"POT-Creation-Date: 2015-05-27 11:31+0200\n"
+"PO-Revision-Date: 2015-05-27 05:17-0400\n"
 "Last-Translator: vslavik <vaclav at slavik.io>\n"
 "Language-Team: Marathi\n"
 "Language: mr_IN\n"
@@ -84,6 +84,15 @@ msgstr ""
 msgid "Error saving catalog"
 msgstr "संग्रह सेव्ह करण्यात त्रुटी"
 
+msgid "PO Translation Files"
+msgstr ""
+
+msgid "POT Translation Templates"
+msgstr ""
+
+msgid "All Translation Files"
+msgstr ""
+
 msgid "Merging differences..."
 msgstr "भिन्न (वाक्ये) एकत्रित करतोय..."
 
@@ -103,6 +112,83 @@ msgstr "भाषेची निवड"
 msgid "You must restart Poedit for this change to take effect."
 msgstr "ह्या बदलाचे परिणाम दिसण्यासाठी तुम्हाला Poedit पुन्हा सुरू करावे लागेल."
 
+msgid "Downloading translations is disabled in this project."
+msgstr ""
+
+msgid "Not authorized, please sign in again."
+msgstr ""
+
+msgid "Sign in to Crowdin"
+msgstr ""
+
+msgid ""
+"Crowdin is an online localization management platform and collaborative "
+"translation tool. Poedit can seamlessly sync PO files managed at Crowdin."
+msgstr ""
+
+msgid "Sign In"
+msgstr ""
+
+msgid "Sign in"
+msgstr ""
+
+msgid "Sign Out"
+msgstr ""
+
+msgid "Sign out"
+msgstr ""
+
+msgid "Waiting for authentication…"
+msgstr ""
+
+msgid "Updating user information…"
+msgstr ""
+
+msgid "Signed in as:"
+msgstr ""
+
+msgid "Learn More About Crowdin"
+msgstr ""
+
+msgid "Learn more about Crowdin"
+msgstr ""
+
+msgid "Open Crowdin translation"
+msgstr ""
+
+msgid "Project:"
+msgstr ""
+
+msgid "Language:"
+msgstr "भाषा:"
+
+msgid "File:"
+msgstr ""
+
+msgid "No translation projects listed in your Crowdin account."
+msgstr ""
+
+msgid "This project has no files that can be translated in Poedit."
+msgstr ""
+
+msgid "This file can only be edited in Crowdin’s web interface."
+msgstr ""
+
+msgid "Downloading latest translations…"
+msgstr ""
+
+msgid "Syncing with Crowdin"
+msgstr ""
+
+msgid "Syncing with Crowdin failed."
+msgstr ""
+
+msgid "Crowdin error"
+msgstr ""
+
+msgid "Uploading translations…"
+msgstr ""
+
 msgid "&Copy"
 msgstr ""
 
@@ -147,6 +233,12 @@ msgstr ""
 msgid "don't delete temporary files (for debugging)"
 msgstr "तात्पुरत्या फाईल्स काढू नकोस (दोष काढण्याकरिता)"
 
+msgid "handle a poedit:// URI"
+msgstr ""
+
+msgid "Failed to communicate with Poedit process."
+msgstr ""
+
 #, c-format
 msgid "Unhandled exception occurred: %s"
 msgstr ""
@@ -157,12 +249,6 @@ msgstr ""
 msgid "Open catalog"
 msgstr "संग्रह उघड"
 
-msgid "All Files"
-msgstr ""
-
-msgid "PO Translation Files"
-msgstr ""
-
 #, c-format
 msgid "File '%s' doesn't exist."
 msgstr "'%s' फाईल अस्तित्वात नाहीये."
@@ -390,6 +476,17 @@ msgstr "अनेकवचनं:"
 msgid "Translation:"
 msgstr "भाषांतर:"
 
+msgid ""
+"POT files are only templates and don’t contain any translations themselves.\n"
+"To make a translation, create a new PO file based on the template."
+msgstr ""
+
+msgid "Create New Translation"
+msgstr ""
+
+msgid "Create new translation"
+msgstr ""
+
 #. TRANSLATORS: %s is language name in its basic form (as you
 #. would see e.g. in a list of supported languages). You may need
 #. to rephrase it, e.g. to an equivalent of "for language %s".
@@ -437,9 +534,6 @@ msgstr ""
 msgid "Open catalog template"
 msgstr "संग्रह साचा उघड"
 
-msgid "POT Translation Templates"
-msgstr ""
-
 msgid "Updating catalog"
 msgstr ""
 
@@ -508,16 +602,18 @@ msgstr[1] ""
 msgid "The translation is ready for use."
 msgstr ""
 
-msgid "No references to this string found."
-msgstr "ह्या मजकुरासाठी एकही संदर्भ मिळाला नाही."
-
-msgid "Please choose the reference you want to show:"
-msgstr "जो संदर्भ तुम्हाला दाखवायचा आहे तो कृपया निवडा:"
+msgid "Context:"
+msgstr ""
 
-msgid "References"
-msgstr "संदर्भ"
+#, c-format
+msgid "Poedit automatically fixed invalid content in the file “%s”."
+msgstr ""
 
-msgid "Context:"
+msgid ""
+"The file contained duplicate items, which is not allowed in PO files and "
+"would prevent the file from being used. Poedit fixed the issue, but you "
+"should review translations of any items marked as fuzzy and correct them if "
+"necessary."
 msgstr ""
 
 msgid "Language of the translation isn't set."
@@ -529,6 +625,21 @@ msgstr ""
 msgid "Set language"
 msgstr ""
 
+#. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)."
+msgid ""
+"Suggestions are not available if the translation language is not set "
+"correctly. Other features, such as plural forms, may be affected as well."
+msgstr ""
+
+msgid "Language of the translation is the same as source language."
+msgstr ""
+
+msgid "Fix Language"
+msgstr ""
+
+msgid "Fix language"
+msgstr ""
+
 msgid ""
 "This catalog has entries with plural forms, but doesn't have Plural-Forms "
 "header configured."
@@ -561,6 +672,7 @@ msgstr "शीर्षभाग दुरूस्त कर"
 msgid "Plural forms expression used by the catalog is unusual for %s."
 msgstr ""
 
+#. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the catalog is unusual for %s.")"
 msgid "Review"
 msgstr ""
 
@@ -582,6 +694,12 @@ msgid_plural "%d errors"
 msgstr[0] ""
 msgstr[1] ""
 
+#, c-format
+msgid "%d entry"
+msgid_plural "%d entries"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid " (unsaved)"
 msgstr ""
 
@@ -697,6 +815,9 @@ msgstr ""
 msgid "Form %i"
 msgstr "फॉर्म %i"
 
+msgid "Singular"
+msgstr ""
+
 msgid "Zero"
 msgstr ""
 
@@ -706,6 +827,9 @@ msgstr ""
 msgid "Two"
 msgstr ""
 
+msgid "Plural"
+msgstr ""
+
 msgid "Other"
 msgstr ""
 
@@ -734,6 +858,12 @@ msgstr ""
 msgid "Show Sidebar"
 msgstr ""
 
+msgid "Hide Status Bar"
+msgstr ""
+
+msgid "Show Status Bar"
+msgstr ""
+
 msgid "Source text"
 msgstr "स्त्रोत पाठ्य"
 
@@ -743,6 +873,10 @@ msgstr "भाषांतर"
 msgid "ID"
 msgstr ""
 
+#, c-format
+msgid "Source text — %s"
+msgstr ""
+
 msgid "unknown language"
 msgstr ""
 
@@ -753,57 +887,73 @@ msgstr ""
 msgid "Error:"
 msgstr ""
 
-msgid "Project info"
-msgstr "प्रकल्पाची माहिती"
+msgid "Source file"
+msgstr "स्त्रोत फाईल"
 
-msgid "Project name and version:"
-msgstr "प्रकल्पाचे नाव आणि आवृत्ती:"
+msgid "Source file occurrence:"
+msgstr "स्त्रोत फाईल घटनाक्रम:"
 
-msgid "Language:"
-msgstr "भाषा:"
+msgid "Open in Editor"
+msgstr ""
 
-msgid "Team:"
-msgstr "संघ:"
+msgid "Open in editor"
+msgstr ""
 
-msgid "Team's email address:"
-msgstr "संघाचा ई-मेल पत्ता:"
+msgid "No references for the selected item."
+msgstr ""
 
-msgid "Charset:"
-msgstr "अक्षरसंच:"
+#, c-format
+msgid "Error opening file %s!"
+msgstr "फाईल %s उघडण्यात त्रुटी!"
 
-msgid "Source"
-msgstr "स्त्रोत"
+msgid "Find"
+msgstr ""
 
-msgid "Notes"
-msgstr "टीपा:"
+msgid "Replace"
+msgstr ""
 
-msgid "Automatic translation"
-msgstr "स्वयंचलित भाषांतर"
+#. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.)
+msgid "Options"
+msgstr ""
 
-msgid "Fuzzy translation"
-msgstr "अस्पष्ट भाषांतर"
+msgid "Ignore case"
+msgstr ""
 
-msgid "Notes for translators:"
+msgid "Wrap around"
 msgstr ""
 
-msgid "Comment:"
-msgstr "टीप:"
+msgid "Whole words only"
+msgstr "फक्त संपूर्ण शब्द"
 
-msgid "Source file"
-msgstr "स्त्रोत फाईल"
+msgid "Find in source texts"
+msgstr ""
 
-msgid "Source file occurrence:"
-msgstr "स्त्रोत फाईल घटनाक्रम:"
+msgid "Find in translations"
+msgstr ""
 
-msgid "Open in Editor"
+msgid "Find in comments"
+msgstr "टीपांमध्ये शोध"
+
+msgid "Close"
+msgstr "बंद"
+
+msgid "Replace All"
 msgstr ""
 
-msgid "Open in editor"
+msgid "Replace all"
 msgstr ""
 
-#, c-format
-msgid "Error opening file %s!"
-msgstr "फाईल %s उघडण्यात त्रुटी!"
+msgid "< &Previous"
+msgstr ""
+
+msgid "&Next >"
+msgstr ""
+
+msgid "String to find"
+msgstr ""
+
+msgid "Replacement string"
+msgstr ""
 
 #, c-format
 msgid "Cannot execute program: %s"
@@ -995,9 +1145,19 @@ msgstr "नवीन"
 msgid "Edit"
 msgstr "संपादन"
 
+msgid "Delete extractor"
+msgstr ""
+
+#, c-format
+msgid "Are you sure you want to delete the “%s” extractor?"
+msgstr ""
+
 msgid "Extractors"
 msgstr ""
 
+msgid "Accounts"
+msgstr ""
+
 msgid "Automatically check for updates"
 msgstr ""
 
@@ -1036,7 +1196,34 @@ msgstr ""
 msgid "Advanced"
 msgstr ""
 
-msgid "Additional keywords"
+msgid ""
+"<big>Drag and Drop Folders Here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+
+msgid ""
+"<big>Drag and drop folders here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+
+msgid "Add Folders..."
+msgstr ""
+
+msgid "Add folders..."
+msgstr ""
+
+msgid "Add Files..."
+msgstr ""
+
+msgid "Add files..."
+msgstr ""
+
+msgid "Add Wildcard..."
+msgstr ""
+
+msgid "Add wildcard..."
 msgstr ""
 
 msgid "Paths"
@@ -1045,6 +1232,9 @@ msgstr "ठिकाणं"
 msgid "Excluded paths"
 msgstr ""
 
+msgid "Additional keywords"
+msgstr ""
+
 msgid "Name of the project the translation is for"
 msgstr ""
 
@@ -1057,6 +1247,9 @@ msgstr "UTF-8 (हे योग्य राहील)"
 msgid "Please save the file first. This section cannot be edited until then."
 msgstr ""
 
+msgid "Comment:"
+msgstr "टीप:"
+
 msgid "OK"
 msgstr "ठीक"
 
@@ -1066,42 +1259,6 @@ msgstr ""
 msgid "Clear the comment"
 msgstr "टीप स्वच्छ कर"
 
-msgid "Find..."
-msgstr "शोध..."
-
-msgid "String to find:"
-msgstr "शोधायचा मजकूर:"
-
-msgid "Case sensitive"
-msgstr "Case Sensitive (अक्षरांतील फरक महत्वाचा)"
-
-msgid "Start from the first item"
-msgstr "पहिल्या कलमापासून सुरूवात करा"
-
-msgid "Whole words only"
-msgstr "फक्त संपूर्ण शब्द"
-
-msgid "Find in original strings"
-msgstr "मूळ मजकुरांमध्ये शोध"
-
-msgid "Find in translations"
-msgstr ""
-
-msgid "Find in comments"
-msgstr "टीपांमध्ये शोध"
-
-msgid "Find in automatic comments"
-msgstr "स्वयंचलित टीपांमध्ये शोध"
-
-msgid "Close"
-msgstr "बंद"
-
-msgid "< &Previous"
-msgstr ""
-
-msgid "&Next >"
-msgstr ""
-
 msgid "Create new translations project"
 msgstr "नवीन भाषांतर प्रकल्प बनव"
 
@@ -1156,6 +1313,12 @@ msgstr "...उघड (&O)"
 msgid "Open Recent"
 msgstr ""
 
+msgid "Open from Crowdin..."
+msgstr ""
+
+msgid "Open From Crowdin..."
+msgstr ""
+
 msgid "&Save"
 msgstr "सेव्ह कर (&S)"
 
@@ -1204,13 +1367,16 @@ msgstr "संदर्भं दाखव (&S)"
 msgid "&Find..."
 msgstr "शोध... (&F)"
 
+msgid "Replace..."
+msgstr ""
+
 msgid "Find next"
 msgstr ""
 
 msgid "Find previous"
 msgstr ""
 
-msgid "Find"
+msgid "Find and Replace..."
 msgstr ""
 
 msgid "Find Next"
@@ -1252,6 +1418,12 @@ msgstr ""
 msgid "&Group By Context"
 msgstr ""
 
+msgid "Entries with errors first"
+msgstr ""
+
+msgid "Entries with Errors First"
+msgstr ""
+
 msgid "&Untranslated entries first"
 msgstr "भाषांतर न केलेली मजकुरं प्रथम (&U)"
 
@@ -1261,6 +1433,9 @@ msgstr "भाषांतर न केलेली मजकुरं प्
 msgid "Show sidebar"
 msgstr ""
 
+msgid "Show status bar"
+msgstr ""
+
 msgid "C&atalog"
 msgstr "संग्रह (&a)"
 
@@ -1276,6 +1451,9 @@ msgstr "POT फाईलपासून अद्ययावत कर... (&P)"
 msgid "Update from &POT File..."
 msgstr "POT फाईलपासून अद्ययावत कर... (&P)"
 
+msgid "Sync with Crowdin"
+msgstr ""
+
 msgid "Fill missing translations from &TM..."
 msgstr ""
 
@@ -1399,6 +1577,9 @@ msgstr ""
 msgid "Catalog properties"
 msgstr "संग्रहाचे गुणधर्म"
 
+msgid "Project name and version:"
+msgstr "प्रकल्पाचे नाव आणि आवृत्ती:"
+
 msgid "Plural Forms:"
 msgstr "अनेकवचनी रूपं:"
 
@@ -1411,17 +1592,29 @@ msgstr ""
 msgid "Learn about plural forms"
 msgstr ""
 
+msgid "Charset:"
+msgstr "अक्षरसंच:"
+
+msgid "Team:"
+msgstr "संघ:"
+
+msgid "Team's email address:"
+msgstr "संघाचा ई-मेल पत्ता:"
+
 msgid "Translation properties"
 msgstr ""
 
+msgid "Sources paths"
+msgstr "स्त्रोत ठिकाणं:"
+
 msgid "Extract text from source files in the following directories:"
 msgstr "पुढील डिरेक्टरींमध्ये स्त्रोत फाईल्समधून पाठ्यं काढ:"
 
 msgid "Base path:"
 msgstr "मुख्य ठिकाण:"
 
-msgid "Sources paths"
-msgstr "स्त्रोत ठिकाणं:"
+msgid "Sources keywords"
+msgstr "स्त्रोत ओळखशब्द:"
 
 msgid ""
 "Use these keywords (function names) to recognize translatable strings\n"
@@ -1433,9 +1626,6 @@ msgstr ""
 msgid "Learn about gettext keywords"
 msgstr ""
 
-msgid "Sources keywords"
-msgstr "स्त्रोत ओळखशब्द:"
-
 msgid "Update summary"
 msgstr "सारांश अद्ययावत कर"
 
@@ -1483,7 +1673,7 @@ msgstr "संग्रह अद्ययावत कर - स्त्रो
 msgid "Toggled if selected string has fuzzy translation"
 msgstr "निवडलेल्या मजकूराचे भाषांतर अस्पष्ट असल्यास टोलावले जाईल"
 
-msgid "Show or hide the sidebar."
+msgid "Show or hide the sidebar"
 msgstr ""
 
 #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer.
@@ -1495,6 +1685,9 @@ msgid ""
 "translation corresponds to."
 msgstr ""
 
+msgid "Notes for translators:"
+msgstr ""
+
 msgid "Add comment"
 msgstr ""
 
@@ -1567,14 +1760,21 @@ msgstr ""
 msgid "Open an existing PO file and edit the translation."
 msgstr ""
 
-msgid "Create new translation"
-msgstr ""
-
 msgid ""
 "Take an existing PO file or POT template and create a new translation from "
 "it."
 msgstr ""
 
+msgid "Collaborate on a translation with Crowdin"
+msgstr ""
+
+msgid ""
+"Download a file from Crowdin project, translate and sync your changes back."
+msgstr ""
+
+msgid "What is Crowdin?"
+msgstr ""
+
 msgid "There are no translations. That’s unusual."
 msgstr ""
 
@@ -1607,3 +1807,9 @@ msgstr ""
 
 msgid "Configure source code extraction in Properties."
 msgstr ""
+
+msgid "Sync"
+msgstr ""
+
+msgid "Synchronize the translation with Crowdin"
+msgstr ""
diff --git a/locales/ms.mo b/locales/ms.mo
index 5167fc0..f039f23 100644
Binary files a/locales/ms.mo and b/locales/ms.mo differ
diff --git a/locales/ms.po b/locales/ms.po
index b503911..8414cc8 100644
--- a/locales/ms.po
+++ b/locales/ms.po
@@ -2,8 +2,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: poedit\n"
 "Report-Msgid-Bugs-To: help at poedit.net\n"
-"POT-Creation-Date: 2015-01-10 16:00+0100\n"
-"PO-Revision-Date: 2015-03-10 12:33-0400\n"
+"POT-Creation-Date: 2015-05-27 11:31+0200\n"
+"PO-Revision-Date: 2015-05-27 05:18-0400\n"
 "Last-Translator: vslavik <vaclav at slavik.io>\n"
 "Language-Team: Malay\n"
 "Language: ms_MY\n"
@@ -17,7 +17,7 @@ msgstr ""
 "X-Crowdin-File: /locales/poedit.pot\n"
 
 msgid "Hide this notification message"
-msgstr "Sorok mesej notis ini"
+msgstr "Sembunyikan mesej pemberitahuan ini"
 
 msgid "Don't Show Again"
 msgstr ""
@@ -36,17 +36,15 @@ msgstr "Baris %d fail '%s' rosak (data %s tidak sah)."
 
 #, c-format
 msgid "Malformed header: '%s'"
-msgstr "Header cacat: '%s'"
+msgstr "Pengepala canggaan: '%s'"
 
 msgid ""
 "Broken catalog file: singular form msgstr used together with msgid_plural"
 msgstr ""
-"Fail katalog rosak: kata tunggal daripada msgstr digunakan bersama "
-"msgid_plural"
+"Fail katalog rosak: kata tunggal msgstr digunakan bersama dengan msgid_plural"
 
 msgid "Broken catalog file: plural form msgstr used without msgid_plural"
-msgstr ""
-"Fail katalog rosak: kata jamak daripada msgstr digunakan tanpa msgid_plural"
+msgstr "Fail katalog rosak: kata jamak msgstr digunakan tanpa msgid_plural"
 
 msgid ""
 "There were errors when loading the catalog. Some data may be missing or "
@@ -57,19 +55,19 @@ msgstr ""
 
 #, c-format
 msgid "Couldn't load file %s, it is probably corrupted."
-msgstr "Gagal memuat fail '%s', berkemungkinan rosak."
+msgstr "Gagal memuat fail %s, ia berkemungkinan rosak."
 
 #, c-format
 msgid ""
 "File '%s' is read-only and cannot be saved.\n"
 "Please save it under different name."
 msgstr ""
-"File '%s' adalah baca-saja dan tidak dapat disimpan.\n"
-"Sila simpan dengan nama lain."
+"File '%s' adalah baca-sahaja dan tidak dapat disimpan.\n"
+"Sila simpannya dengan nama lain."
 
 #, c-format
 msgid "Couldn't save file %s."
-msgstr "Tidak dapat simpan fail %s."
+msgstr "Tidak dapat menyimpan fail %s."
 
 msgid ""
 "There was a problem formatting the file nicely (but it was saved all right)."
@@ -92,12 +90,21 @@ msgstr ""
 msgid "Error saving catalog"
 msgstr "Ralat menyimpan katalog"
 
+msgid "PO Translation Files"
+msgstr "Fail Terjemahan PO"
+
+msgid "POT Translation Templates"
+msgstr "Templat Terjemahan POT"
+
+msgid "All Translation Files"
+msgstr ""
+
 msgid "Merging differences..."
-msgstr "Menggabung perbezaan..."
+msgstr "Menggabungkan perbezaan..."
 
 #, c-format
 msgid "'%s' is not a valid POT file."
-msgstr "'%s' bukanlah fail POT sah."
+msgstr "'%s' bukan fail POT yang sah."
 
 msgid "(Use default language)"
 msgstr "(Guna bahasa lalai)"
@@ -106,23 +113,100 @@ msgid "Select your preferred language"
 msgstr "Pilih bahasa keutamaan anda"
 
 msgid "Language selection"
-msgstr "Pilihan Bahasa "
+msgstr "Pilihan bahasa"
 
 msgid "You must restart Poedit for this change to take effect."
-msgstr "Jalankan semula Poedit untuk mengaktifkan perubahan."
+msgstr "Mula semula Poedit untuk mengaktifkan perubahan ini."
+
+msgid "Downloading translations is disabled in this project."
+msgstr ""
+
+msgid "Not authorized, please sign in again."
+msgstr ""
+
+msgid "Sign in to Crowdin"
+msgstr ""
+
+msgid ""
+"Crowdin is an online localization management platform and collaborative "
+"translation tool. Poedit can seamlessly sync PO files managed at Crowdin."
+msgstr ""
+
+msgid "Sign In"
+msgstr ""
+
+msgid "Sign in"
+msgstr ""
+
+msgid "Sign Out"
+msgstr ""
+
+msgid "Sign out"
+msgstr ""
+
+msgid "Waiting for authentication…"
+msgstr ""
+
+msgid "Updating user information…"
+msgstr ""
+
+msgid "Signed in as:"
+msgstr ""
+
+msgid "Learn More About Crowdin"
+msgstr ""
+
+msgid "Learn more about Crowdin"
+msgstr ""
+
+msgid "Open Crowdin translation"
+msgstr ""
+
+msgid "Project:"
+msgstr ""
+
+msgid "Language:"
+msgstr "Bahasa:"
+
+msgid "File:"
+msgstr ""
+
+msgid "No translation projects listed in your Crowdin account."
+msgstr ""
+
+msgid "This project has no files that can be translated in Poedit."
+msgstr ""
+
+msgid "This file can only be edited in Crowdin’s web interface."
+msgstr ""
+
+msgid "Downloading latest translations…"
+msgstr ""
+
+msgid "Syncing with Crowdin"
+msgstr ""
+
+msgid "Syncing with Crowdin failed."
+msgstr ""
+
+msgid "Crowdin error"
+msgstr ""
+
+msgid "Uploading translations…"
+msgstr ""
 
 msgid "&Copy"
 msgstr "&Salin"
 
 msgid "Learn more"
-msgstr "Pelajari lagi"
+msgstr "Ketahui lebih lanjut"
 
 msgid "Learn More"
 msgstr "Ketahui Lebih Lanjut"
 
 #, c-format
 msgid "Failed command: %s"
-msgstr "Araham gagal: %s"
+msgstr "Perintah gagal: %s"
 
 msgid "Failed to merge gettext catalogs."
 msgstr "Gagal menggabungkan katalog gettext."
@@ -133,7 +217,7 @@ msgstr "Mengimbas fail..."
 #. TRANSLATORS: '%s' is replaced with the kind of the files (e.g. C++, PHP, ...)
 #, c-format
 msgid "Parsing %s files..."
-msgstr "Menghurai %s fail..."
+msgstr "Menghurai fail %s..."
 
 msgid "Failed to load extracted catalog."
 msgstr "Gagal memuat katalog yang diekstrak."
@@ -155,7 +239,13 @@ msgstr ""
 "akan dikemaskini juga."
 
 msgid "don't delete temporary files (for debugging)"
-msgstr "jangan padam fail semestara (untuk menyahpepijat)"
+msgstr "jangan padam fail sementara (untuk menyahpepijat)"
+
+msgid "handle a poedit:// URI"
+msgstr ""
+
+msgid "Failed to communicate with Poedit process."
+msgstr ""
 
 #, c-format
 msgid "Unhandled exception occurred: %s"
@@ -167,12 +257,6 @@ msgstr "Pengecualian tidak dikendalikan berlaku."
 msgid "Open catalog"
 msgstr "Buka katalog"
 
-msgid "All Files"
-msgstr "Semua Fail"
-
-msgid "PO Translation Files"
-msgstr "Fail Terjemahan PO"
-
 #, c-format
 msgid "File '%s' doesn't exist."
 msgstr "Fail '%s' tidak wujud."
@@ -181,7 +265,7 @@ msgstr "Fail '%s' tidak wujud."
 #. ("Poedit" here, but please use "%s")
 #, c-format
 msgid "About %s"
-msgstr "Perihal %s"
+msgstr "Mengenai %s"
 
 #. TRANSLATORS: This is version information in about dialog, "%s" will be
 #. version number when used
@@ -190,7 +274,7 @@ msgid "Version %s"
 msgstr "Versi %s"
 
 msgid "Poedit is an easy to use translations editor."
-msgstr "Podit adalah edit terjemahan yang mudah guna."
+msgstr "Poedit adalah editor terjemahan yang mudah digunakan."
 
 msgid "Catalogs Manager"
 msgstr "Pengurus Katalog"
@@ -202,10 +286,10 @@ msgid "&Edit"
 msgstr "&Edit"
 
 msgid "Undo"
-msgstr "Batal"
+msgstr "Buat asal"
 
 msgid "Redo"
-msgstr "Ulanglaku"
+msgstr "Buat semula"
 
 msgid "Paste and Match Style"
 msgstr "Tampal dan Padankan Gaya"
@@ -220,10 +304,10 @@ msgid "Show Spelling and Grammar"
 msgstr "Tunjuk Ejaan dan Tatabahasa"
 
 msgid "Check Document Now"
-msgstr "Periksa Dokumen Sekatang"
+msgstr "Periksa Dokumen Sekarang"
 
 msgid "Check Spelling While Typing"
-msgstr "Periksa Ejaan Tika Menaip"
+msgstr "Periksa Ejaan Ketika Menaip"
 
 msgid "Check Grammar With Spelling"
 msgstr "Periksa Tatabahasa Dengan Ejaan"
@@ -232,7 +316,7 @@ msgid "Correct Spelling Automatically"
 msgstr "Betulkan Ejaan Secara Automatik"
 
 msgid "Substitutions"
-msgstr "PErtukaran"
+msgstr "Penggantian"
 
 msgid "Show Substitutions"
 msgstr "Tunjuk Pertukaran"
@@ -387,7 +471,7 @@ msgid "&File"
 msgstr "&Fail"
 
 msgid "&Go"
-msgstr "Per&gi"
+msgstr "&Pergi"
 
 msgid "Source text:"
 msgstr "Teks sumber:"
@@ -401,6 +485,17 @@ msgstr "Jamak:"
 msgid "Translation:"
 msgstr "Terjemahan:"
 
+msgid ""
+"POT files are only templates and don’t contain any translations themselves.\n"
+"To make a translation, create a new PO file based on the template."
+msgstr ""
+
+msgid "Create New Translation"
+msgstr ""
+
+msgid "Create new translation"
+msgstr "Cipta terjemahan baru"
+
 #. TRANSLATORS: %s is language name in its basic form (as you
 #. would see e.g. in a list of supported languages). You may need
 #. to rephrase it, e.g. to an equivalent of "for language %s".
@@ -448,9 +543,6 @@ msgstr "Fail HTML"
 msgid "Open catalog template"
 msgstr "Buka templat katalog"
 
-msgid "POT Translation Templates"
-msgstr "Templat Terjemahan POT"
-
 msgid "Updating catalog"
 msgstr "Mengemaskini katalog"
 
@@ -524,18 +616,20 @@ msgstr[0] ""
 msgid "The translation is ready for use."
 msgstr "Terjemahan sedia untuk digunakan."
 
-msgid "No references to this string found."
-msgstr "Tiada rujukan kepada rentetan ini tidak ditemui."
-
-msgid "Please choose the reference you want to show:"
-msgstr "Sila pilih rujukan yang anda ingin tunjukkan:"
-
-msgid "References"
-msgstr "Rujukan"
-
 msgid "Context:"
 msgstr "Konteks:"
 
+#, c-format
+msgid "Poedit automatically fixed invalid content in the file “%s”."
+msgstr ""
+
+msgid ""
+"The file contained duplicate items, which is not allowed in PO files and "
+"would prevent the file from being used. Poedit fixed the issue, but you "
+"should review translations of any items marked as fuzzy and correct them if "
+"necessary."
+msgstr ""
+
 msgid "Language of the translation isn't set."
 msgstr "Bahasa terjemahan tidak ditetapkan."
 
@@ -545,6 +639,21 @@ msgstr ""
 msgid "Set language"
 msgstr "Tetapkan bahasa "
 
+#. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)."
+msgid ""
+"Suggestions are not available if the translation language is not set "
+"correctly. Other features, such as plural forms, may be affected as well."
+msgstr ""
+
+msgid "Language of the translation is the same as source language."
+msgstr ""
+
+msgid "Fix Language"
+msgstr ""
+
+msgid "Fix language"
+msgstr ""
+
 msgid ""
 "This catalog has entries with plural forms, but doesn't have Plural-Forms "
 "header configured."
@@ -580,6 +689,7 @@ msgid "Plural forms expression used by the catalog is unusual for %s."
 msgstr ""
 "Bentuk ungkapan kata jamak yang digunakan oleh katalog untuk %s luar biasa. "
 
+#. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the catalog is unusual for %s.")"
 msgid "Review"
 msgstr ""
 
@@ -600,11 +710,16 @@ msgid "%d error"
 msgid_plural "%d errors"
 msgstr[0] ""
 
+#, c-format
+msgid "%d entry"
+msgid_plural "%d entries"
+msgstr[0] ""
+
 msgid " (unsaved)"
-msgstr " (tak tersimpan)"
+msgstr " (tidak disimpan)"
 
 msgid " (modified)"
-msgstr " (berubah)"
+msgstr " (diubah suai)"
 
 msgid "Go"
 msgstr ""
@@ -693,10 +808,10 @@ msgid_plural "Translated %u strings"
 msgstr[0] "Rentetan %u yang telah diterjemah"
 
 msgid "Copy from source text"
-msgstr "Salin daripada teks sumber"
+msgstr "Salin daripada Sumber Teks"
 
 msgid "Copy from Source Text"
-msgstr "Salin daripada Teks Sumber"
+msgstr "Salin daripada Sumber Teks"
 
 msgid "Clear translation"
 msgstr "Lapangkan terjemahan"
@@ -720,6 +835,9 @@ msgstr "Kesemuanya"
 msgid "Form %i"
 msgstr "Borang %i"
 
+msgid "Singular"
+msgstr ""
+
 msgid "Zero"
 msgstr "Sifar"
 
@@ -729,11 +847,14 @@ msgstr "Satu"
 msgid "Two"
 msgstr "Dua"
 
+msgid "Plural"
+msgstr ""
+
 msgid "Other"
 msgstr "Lain"
 
 msgid "&Bookmarks"
-msgstr "Tanda &Buku"
+msgstr "&Penanda Buku"
 
 #, c-format
 msgid "Set bookmark %i"
@@ -757,6 +878,12 @@ msgstr ""
 msgid "Show Sidebar"
 msgstr ""
 
+msgid "Hide Status Bar"
+msgstr ""
+
+msgid "Show Status Bar"
+msgstr ""
+
 msgid "Source text"
 msgstr "Teks sumber"
 
@@ -766,6 +893,10 @@ msgstr "Terjemahan"
 msgid "ID"
 msgstr "ID"
 
+#, c-format
+msgid "Source text — %s"
+msgstr ""
+
 msgid "unknown language"
 msgstr "bahasa tidak diketahui"
 
@@ -776,57 +907,73 @@ msgstr "Terjemahan — %s"
 msgid "Error:"
 msgstr "Ralat:"
 
-msgid "Project info"
-msgstr "Info projek"
+msgid "Source file"
+msgstr "Fail sumber"
 
-msgid "Project name and version:"
-msgstr "Nama Projek dan versi :"
+msgid "Source file occurrence:"
+msgstr "Berlakunya fail sumber:"
 
-msgid "Language:"
-msgstr "Bahasa:"
+msgid "Open in Editor"
+msgstr ""
 
-msgid "Team:"
-msgstr "Pasukan:"
+msgid "Open in editor"
+msgstr ""
 
-msgid "Team's email address:"
-msgstr "Alamat email pasukan:"
+msgid "No references for the selected item."
+msgstr ""
 
-msgid "Charset:"
-msgstr "Set aksara:"
+#, c-format
+msgid "Error opening file %s!"
+msgstr "Ralat membuka fail %s!"
 
-msgid "Source"
-msgstr "Sumber"
+msgid "Find"
+msgstr "Cari"
 
-msgid "Notes"
-msgstr "Nota"
+msgid "Replace"
+msgstr ""
 
-msgid "Automatic translation"
-msgstr "Terjemahan automatik"
+#. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.)
+msgid "Options"
+msgstr ""
 
-msgid "Fuzzy translation"
-msgstr "Terjemahan kabur"
+msgid "Ignore case"
+msgstr ""
 
-msgid "Notes for translators:"
-msgstr "Nota untuk penterjemah:"
+msgid "Wrap around"
+msgstr ""
 
-msgid "Comment:"
-msgstr "Komen:"
+msgid "Whole words only"
+msgstr "Semua kata sahaja"
 
-msgid "Source file"
-msgstr "Fail sumber"
+msgid "Find in source texts"
+msgstr ""
 
-msgid "Source file occurrence:"
-msgstr "Berlakunya fail sumber:"
+msgid "Find in translations"
+msgstr "Cari dalam terjemahan"
 
-msgid "Open in Editor"
+msgid "Find in comments"
+msgstr "Cari dalam komen"
+
+msgid "Close"
+msgstr "Tutup"
+
+msgid "Replace All"
 msgstr ""
 
-msgid "Open in editor"
+msgid "Replace all"
 msgstr ""
 
-#, c-format
-msgid "Error opening file %s!"
-msgstr "Ralat membuka fail %s!"
+msgid "< &Previous"
+msgstr "< &Sebelumnya"
+
+msgid "&Next >"
+msgstr "&Seterusnya >"
+
+msgid "String to find"
+msgstr ""
+
+msgid "Replacement string"
+msgstr ""
 
 #, c-format
 msgid "Cannot execute program: %s"
@@ -857,7 +1004,7 @@ msgid "Fuzzy"
 msgstr "Kabur"
 
 msgid "Bad Tokens"
-msgstr "Token rosak"
+msgstr "Token Rosak"
 
 msgid "Last modified"
 msgstr "Terakhir diubah"
@@ -919,7 +1066,7 @@ msgid "Check spelling"
 msgstr "Periksa ejaan"
 
 msgid "Always change focus to text input field"
-msgstr "Sentiasa ubah fokus ke medam masukan teks"
+msgstr "Sentiasa ubah fokus ke medan input teks"
 
 msgid ""
 "Never let the list of strings take focus. If enabled, you must use Ctrl-"
@@ -1028,9 +1175,19 @@ msgstr "Baru"
 msgid "Edit"
 msgstr "Edit"
 
+msgid "Delete extractor"
+msgstr ""
+
+#, c-format
+msgid "Are you sure you want to delete the “%s” extractor?"
+msgstr ""
+
 msgid "Extractors"
 msgstr "Pengekstrak"
 
+msgid "Accounts"
+msgstr ""
+
 msgid "Automatically check for updates"
 msgstr "Periksa kemaskini secara automatik"
 
@@ -1071,8 +1228,35 @@ msgstr ""
 msgid "Advanced"
 msgstr ""
 
-msgid "Additional keywords"
-msgstr "Katakunci tambahan"
+msgid ""
+"<big>Drag and Drop Folders Here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+
+msgid ""
+"<big>Drag and drop folders here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+
+msgid "Add Folders..."
+msgstr ""
+
+msgid "Add folders..."
+msgstr ""
+
+msgid "Add Files..."
+msgstr ""
+
+msgid "Add files..."
+msgstr ""
+
+msgid "Add Wildcard..."
+msgstr ""
+
+msgid "Add wildcard..."
+msgstr ""
 
 msgid "Paths"
 msgstr "Laluan"
@@ -1080,6 +1264,9 @@ msgstr "Laluan"
 msgid "Excluded paths"
 msgstr "Laluan Dikecualikan"
 
+msgid "Additional keywords"
+msgstr "Kata kunci tambahan"
+
 msgid "Name of the project the translation is for"
 msgstr "Nama projek terjemahan adalah untuk"
 
@@ -1092,6 +1279,9 @@ msgstr "UTF-8 (disarankan)"
 msgid "Please save the file first. This section cannot be edited until then."
 msgstr "Sila simpan fail dahulu. Seksyen ini tidak boleh diedit buat masa ini."
 
+msgid "Comment:"
+msgstr "Komen:"
+
 msgid "OK"
 msgstr "OK"
 
@@ -1101,42 +1291,6 @@ msgstr "&Lapang"
 msgid "Clear the comment"
 msgstr "Lapangkan komen"
 
-msgid "Find..."
-msgstr "Cari..."
-
-msgid "String to find:"
-msgstr "Rentetan dicari:"
-
-msgid "Case sensitive"
-msgstr "Kes sensitif"
-
-msgid "Start from the first item"
-msgstr "Mulakan dari item pertama"
-
-msgid "Whole words only"
-msgstr "Semua kata sahaja"
-
-msgid "Find in original strings"
-msgstr "Cari dalam rentetan asal"
-
-msgid "Find in translations"
-msgstr "Cari dalam terjemahan"
-
-msgid "Find in comments"
-msgstr "Cari dalam komen"
-
-msgid "Find in automatic comments"
-msgstr "Cari dalam komen automatik"
-
-msgid "Close"
-msgstr "Tutup"
-
-msgid "< &Previous"
-msgstr "< &Terdahulu"
-
-msgid "&Next >"
-msgstr "&Berikut >"
-
 msgid "Create new translations project"
 msgstr "Cipta projek terjemahan baru"
 
@@ -1191,6 +1345,12 @@ msgstr "&Buka..."
 msgid "Open Recent"
 msgstr "Buka Terbaru"
 
+msgid "Open from Crowdin..."
+msgstr ""
+
+msgid "Open From Crowdin..."
+msgstr ""
+
 msgid "&Save"
 msgstr "&Simpan"
 
@@ -1239,14 +1399,17 @@ msgstr "&Tunjuk Rujukan"
 msgid "&Find..."
 msgstr "&Cari..."
 
+msgid "Replace..."
+msgstr ""
+
 msgid "Find next"
 msgstr "Cari berikut"
 
 msgid "Find previous"
 msgstr "Cari terdahulu"
 
-msgid "Find"
-msgstr "Cari"
+msgid "Find and Replace..."
+msgstr ""
 
 msgid "Find Next"
 msgstr "Cari Berikut"
@@ -1287,23 +1450,32 @@ msgstr "&Kumpulan melalui konteks"
 msgid "&Group By Context"
 msgstr "&Kumpulkan Melalui Konteks"
 
+msgid "Entries with errors first"
+msgstr ""
+
+msgid "Entries with Errors First"
+msgstr ""
+
 msgid "&Untranslated entries first"
-msgstr "Masukan bel&um diterjemah pertama"
+msgstr "&Masukan tidak diterjemah terlebih dahulu"
 
 msgid "&Untranslated Entries First"
-msgstr "Masukan Bel&um Diterjemah Pertama"
+msgstr "&Masukan Belum Diterjemah Terlebih Dahulu"
 
 msgid "Show sidebar"
 msgstr ""
 
+msgid "Show status bar"
+msgstr ""
+
 msgid "C&atalog"
 msgstr "K&atalog"
 
 msgid "&Update from sources"
-msgstr "Kemaskini dari s&umber"
+msgstr "&Kemas kini dari sumber"
 
 msgid "&Update from Sources"
-msgstr "Kemaskini dari S&umber"
+msgstr "&Kemas kini dari Sumber"
 
 msgid "Update from &POT file..."
 msgstr "Kemaskini dari fail &POT..."
@@ -1311,6 +1483,9 @@ msgstr "Kemaskini dari fail &POT..."
 msgid "Update from &POT File..."
 msgstr "Kemaskini dari Fail &POT..."
 
+msgid "Sync with Crowdin"
+msgstr ""
+
 msgid "Fill missing translations from &TM..."
 msgstr ""
 
@@ -1318,10 +1493,10 @@ msgid "Fill Missing Translations from &TM..."
 msgstr ""
 
 msgid "&Purge deleted translations"
-msgstr "Usir terjemahan diha&pus"
+msgstr "&Singkirkan terjemahan dihapus"
 
 msgid "&Purge Deleted Translations"
-msgstr "Usir Terjemahan Diha&pus"
+msgstr "&Singkirkan Terjemahan Dihapus"
 
 msgid "&Validate translations"
 msgstr "&Sahkan terjemahan"
@@ -1330,13 +1505,13 @@ msgid "&Validate Translations"
 msgstr "&Sahkan Terjemahan"
 
 msgid "&Properties..."
-msgstr "&Ciri-ciri..."
+msgstr "&Sifat..."
 
 msgid "&Done and next"
-msgstr "Selesai &dan berikut"
+msgstr "&Selesai dan seterusnya"
 
 msgid "&Done and Next"
-msgstr "Selesai &dan Berikut"
+msgstr "&Selesai dan Seterusnya"
 
 msgid "&Previous translation"
 msgstr "&Terjemahan sebelumnya"
@@ -1363,10 +1538,10 @@ msgid "Ne&xt Unfinished"
 msgstr "&Selepasnya yang Tidak Selesai"
 
 msgid "&Online help"
-msgstr "Bantuan atas talian"
+msgstr "&Bantuan dalam talian"
 
 msgid "&Online Help"
-msgstr "Bantuan Atas Talian"
+msgstr "&Bantuan dalam talian"
 
 msgid "&GNU gettext manual"
 msgstr "Manual &GNU gettext"
@@ -1375,10 +1550,10 @@ msgid "&GNU gettext Manual"
 msgstr "Manual &GNU gettext"
 
 msgid "&About Poedit"
-msgstr "Perih&al Poedit"
+msgstr "&Mengenai Poedit"
 
 msgid "&About"
-msgstr "Perih&al"
+msgstr "&Mengenai"
 
 msgid "Extractor setup"
 msgstr "Persediaan pengekstrak"
@@ -1400,7 +1575,7 @@ msgid ""
 msgstr ""
 
 msgid "An item in keywords list:"
-msgstr "Item dalam fail senarai katakunci:"
+msgstr "Item dalam senarai kata kunci:"
 
 msgid ""
 "This will be attached to the command line once\n"
@@ -1435,6 +1610,9 @@ msgstr ""
 msgid "Catalog properties"
 msgstr "Ciri-ciri katalog"
 
+msgid "Project name and version:"
+msgstr "Nama Projek dan versi :"
+
 msgid "Plural Forms:"
 msgstr "Tatacara jamak:"
 
@@ -1447,17 +1625,29 @@ msgstr "Guna ungkapan langganan"
 msgid "Learn about plural forms"
 msgstr "Pelajari perihal bentuk kata jamak"
 
+msgid "Charset:"
+msgstr "Set aksara:"
+
+msgid "Team:"
+msgstr "Pasukan:"
+
+msgid "Team's email address:"
+msgstr "Alamat email pasukan:"
+
 msgid "Translation properties"
 msgstr "Sifat terjemahan"
 
+msgid "Sources paths"
+msgstr "Laluan sumber"
+
 msgid "Extract text from source files in the following directories:"
 msgstr "Ekstrak teks daripada fail sumber di dalam direktori berikut:"
 
 msgid "Base path:"
-msgstr "Laluan dasar:"
+msgstr "Laluan asas:"
 
-msgid "Sources paths"
-msgstr "Laluan sumber"
+msgid "Sources keywords"
+msgstr "Katakunci sumber"
 
 msgid ""
 "Use these keywords (function names) to recognize translatable strings\n"
@@ -1469,9 +1659,6 @@ msgstr ""
 msgid "Learn about gettext keywords"
 msgstr "Pelajari perihal katakunci gettext"
 
-msgid "Sources keywords"
-msgstr "Katakunci sumber"
-
 msgid "Update summary"
 msgstr "Kemaskini ringkasan"
 
@@ -1519,7 +1706,7 @@ msgstr "Kemaskini katalog - segerakkannya dengan sumber"
 msgid "Toggled if selected string has fuzzy translation"
 msgstr "Togol jika rentetan dipilih mempunyai terjemahan kabur"
 
-msgid "Show or hide the sidebar."
+msgid "Show or hide the sidebar"
 msgstr ""
 
 #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer.
@@ -1531,6 +1718,9 @@ msgid ""
 "translation corresponds to."
 msgstr ""
 
+msgid "Notes for translators:"
+msgstr "Nota untuk penterjemah:"
+
 msgid "Add comment"
 msgstr ""
 
@@ -1610,14 +1800,21 @@ msgstr "Edit terjemahan"
 msgid "Open an existing PO file and edit the translation."
 msgstr "Buka dan edit fail PO sedia ada."
 
-msgid "Create new translation"
-msgstr "Cipta terjemahan baru"
-
 msgid ""
 "Take an existing PO file or POT template and create a new translation from "
 "it."
 msgstr "Ambil fail PO atau templat POT dan cipta terjemahan baru daripadanya."
 
+msgid "Collaborate on a translation with Crowdin"
+msgstr ""
+
+msgid ""
+"Download a file from Crowdin project, translate and sync your changes back."
+msgstr ""
+
+msgid "What is Crowdin?"
+msgstr ""
+
 msgid "There are no translations. That’s unusual."
 msgstr "Tida terdapat terjemahan. Ini luar biasa."
 
@@ -1660,3 +1857,9 @@ msgstr "Ekstrak daripada sumber"
 
 msgid "Configure source code extraction in Properties."
 msgstr "Konfigur pengekstrakan kod sumber pada Ciri-ciri."
+
+msgid "Sync"
+msgstr ""
+
+msgid "Synchronize the translation with Crowdin"
+msgstr ""
diff --git a/locales/nb.mo b/locales/nb.mo
index dd4f882..6fd7cec 100644
Binary files a/locales/nb.mo and b/locales/nb.mo differ
diff --git a/locales/nb.po b/locales/nb.po
index 6038823..c1188b0 100644
--- a/locales/nb.po
+++ b/locales/nb.po
@@ -2,8 +2,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: poedit\n"
 "Report-Msgid-Bugs-To: help at poedit.net\n"
-"POT-Creation-Date: 2015-01-10 16:00+0100\n"
-"PO-Revision-Date: 2015-03-10 12:33-0400\n"
+"POT-Creation-Date: 2015-05-27 11:31+0200\n"
+"PO-Revision-Date: 2015-05-27 05:18-0400\n"
 "Last-Translator: vslavik <vaclav at slavik.io>\n"
 "Language-Team: Norwegian Bokmal\n"
 "Language: nb_NO\n"
@@ -89,6 +89,15 @@ msgstr ""
 msgid "Error saving catalog"
 msgstr "Feil ved lagring av katalog"
 
+msgid "PO Translation Files"
+msgstr "PO oversettelsesfiler"
+
+msgid "POT Translation Templates"
+msgstr "POT oversettelse maler"
+
+msgid "All Translation Files"
+msgstr "Alle oversettelsesfiler"
+
 msgid "Merging differences..."
 msgstr "Slår sammen endringer ..."
 
@@ -108,6 +117,86 @@ msgstr "Språk valg"
 msgid "You must restart Poedit for this change to take effect."
 msgstr "Du må restarte Poedit for at denne endringene skal bli tatt i bruk."
 
+msgid "Downloading translations is disabled in this project."
+msgstr "Nedlasting av oversettelser er deaktivert i dette prosjektet."
+
+msgid "Not authorized, please sign in again."
+msgstr "Ikke autorisert, vennligst logg inn igjen."
+
+msgid "Sign in to Crowdin"
+msgstr "Logg inn på Crowdin"
+
+msgid ""
+"Crowdin is an online localization management platform and collaborative "
+"translation tool. Poedit can seamlessly sync PO files managed at Crowdin."
+msgstr ""
+"Crowdin er en plattform for lokaliseringsbehandling og et samarbeidende "
+"oversettelsesverktøy på nett. Poedit kan sømløst synkronisere PO-filer som "
+"håndteres på Crowdin."
+
+msgid "Sign In"
+msgstr "Logg inn"
+
+msgid "Sign in"
+msgstr "Logg inn"
+
+msgid "Sign Out"
+msgstr "Logg ut"
+
+msgid "Sign out"
+msgstr "Logg ut"
+
+msgid "Waiting for authentication…"
+msgstr "Venter på godkjenning..."
+
+msgid "Updating user information…"
+msgstr "Oppdaterer brukerinformasjon..."
+
+msgid "Signed in as:"
+msgstr "Pålogget som:"
+
+msgid "Learn More About Crowdin"
+msgstr "Lær mer om Crowdin"
+
+msgid "Learn more about Crowdin"
+msgstr "Lær mer om Crowdin"
+
+msgid "Open Crowdin translation"
+msgstr "Åpne Crowdin-oversettelse"
+
+msgid "Project:"
+msgstr "Prosjekt:"
+
+msgid "Language:"
+msgstr "&Språk:"
+
+msgid "File:"
+msgstr "Fil:"
+
+msgid "No translation projects listed in your Crowdin account."
+msgstr "Ingen oversettelsesprosjekter er listet i din Crowdin-konto."
+
+msgid "This project has no files that can be translated in Poedit."
+msgstr "Dette prosjektet har ingen filer som kan oversettes i Poedit."
+
+msgid "This file can only be edited in Crowdin’s web interface."
+msgstr "Denne filen kan kun redigeres i Crowdin sitt web-grensesnitt."
+
+msgid "Downloading latest translations…"
+msgstr "Laster ned nyeste oversettelser..."
+
+msgid "Syncing with Crowdin"
+msgstr "Synkroniserer med Crowdin"
+
+msgid "Syncing with Crowdin failed."
+msgstr "Synkronisering med Crowdin mislyktes."
+
+msgid "Crowdin error"
+msgstr "Crowdin-feil"
+
+msgid "Uploading translations…"
+msgstr "Laster opp oversettelser..."
+
 msgid "&Copy"
 msgstr "Kopier"
 
@@ -154,6 +243,12 @@ msgstr ""
 msgid "don't delete temporary files (for debugging)"
 msgstr "ikke Slett midlertidige filer (for feilsøking)"
 
+msgid "handle a poedit:// URI"
+msgstr "håndter en poedit://-URI"
+
+msgid "Failed to communicate with Poedit process."
+msgstr "Kunne ikke kommunisere med Poedit-prosess."
+
 #, c-format
 msgid "Unhandled exception occurred: %s"
 msgstr "Ubehandlet unntak oppstod: %s"
@@ -164,12 +259,6 @@ msgstr "Ubehandlet unntak oppstod."
 msgid "Open catalog"
 msgstr "Åpne katalog"
 
-msgid "All Files"
-msgstr "Alle filer"
-
-msgid "PO Translation Files"
-msgstr "PO oversettelsesfiler"
-
 #, c-format
 msgid "File '%s' doesn't exist."
 msgstr "Fila «%s» fins ikke."
@@ -398,6 +487,19 @@ msgstr "Flertall:"
 msgid "Translation:"
 msgstr "Oversettelse:"
 
+msgid ""
+"POT files are only templates and don’t contain any translations themselves.\n"
+"To make a translation, create a new PO file based on the template."
+msgstr ""
+"POT-filer er bare maler og inneholder ikke noen oversettelser i seg selv.\n"
+"For å lage en oversettelse, opprett en ny PO-fil basert på malen."
+
+msgid "Create New Translation"
+msgstr "Opprett ny oversettelse"
+
+msgid "Create new translation"
+msgstr "Lag ny oversettelse"
+
 #. TRANSLATORS: %s is language name in its basic form (as you
 #. would see e.g. in a list of supported languages). You may need
 #. to rephrase it, e.g. to an equivalent of "for language %s".
@@ -445,9 +547,6 @@ msgstr "HTML-filer"
 msgid "Open catalog template"
 msgstr "Åpne katalogmal"
 
-msgid "POT Translation Templates"
-msgstr "POT oversettelse maler"
-
 msgid "Updating catalog"
 msgstr "Oppdatere katalog"
 
@@ -526,18 +625,23 @@ msgstr[1] ""
 msgid "The translation is ready for use."
 msgstr "Oversettelsen er klar til bruk."
 
-msgid "No references to this string found."
-msgstr "Fant ingen referanse til teksten."
-
-msgid "Please choose the reference you want to show:"
-msgstr "Velg referansen du vil vise:"
-
-msgid "References"
-msgstr "Referanser"
-
 msgid "Context:"
 msgstr "Kontekst:"
 
+#, c-format
+msgid "Poedit automatically fixed invalid content in the file “%s”."
+msgstr "Poedit ordner automatisk innholdet i filen “%s”."
+
+msgid ""
+"The file contained duplicate items, which is not allowed in PO files and "
+"would prevent the file from being used. Poedit fixed the issue, but you "
+"should review translations of any items marked as fuzzy and correct them if "
+"necessary."
+msgstr ""
+"Filen inneholder dupliserte elementer, som ikke er tillatt i PO-filer og vil "
+"hindre at filen blir brukt. Poedit har løst problemet, men du bør vurdere "
+"oversettelser av alle elementer merket som suspekt og rette dem om nødvendig."
+
 msgid "Language of the translation isn't set."
 msgstr "Språk oversettelsen er ikke satt."
 
@@ -547,6 +651,23 @@ msgstr "Angi språk"
 msgid "Set language"
 msgstr "Angi språk"
 
+#. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)."
+msgid ""
+"Suggestions are not available if the translation language is not set "
+"correctly. Other features, such as plural forms, may be affected as well."
+msgstr ""
+"Forslag er ikke tilgjengelig hvis oversettelsespråket ikke er riktig angitt. "
+"Andre funksjoner, for eksempel flertallsformer, påvirkes også."
+
+msgid "Language of the translation is the same as source language."
+msgstr "Språket i oversettelsen er det samme som kilde språk."
+
+msgid "Fix Language"
+msgstr "Fastsette språk"
+
+msgid "Fix language"
+msgstr "Fastsette språk"
+
 msgid ""
 "This catalog has entries with plural forms, but doesn't have Plural-Forms "
 "header configured."
@@ -581,6 +702,7 @@ msgstr "Reparer hode"
 msgid "Plural forms expression used by the catalog is unusual for %s."
 msgstr "Flertallsformer uttrykket som brukes av katalogen er uvanlig for %s."
 
+#. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the catalog is unusual for %s.")"
 msgid "Review"
 msgstr "Gjennomgang"
 
@@ -602,6 +724,12 @@ msgid_plural "%d errors"
 msgstr[0] "%d feil"
 msgstr[1] "%d feil"
 
+#, c-format
+msgid "%d entry"
+msgid_plural "%d entries"
+msgstr[0] "%d oppføring"
+msgstr[1] "%d oppføringer"
+
 msgid " (unsaved)"
 msgstr " (ulagret)"
 
@@ -727,6 +855,9 @@ msgstr "Alt"
 msgid "Form %i"
 msgstr "Form %i"
 
+msgid "Singular"
+msgstr "Entall"
+
 msgid "Zero"
 msgstr "Null"
 
@@ -736,6 +867,9 @@ msgstr "En"
 msgid "Two"
 msgstr "To"
 
+msgid "Plural"
+msgstr "Flertall"
+
 msgid "Other"
 msgstr "Andre"
 
@@ -764,6 +898,12 @@ msgstr "Skjul Sidepanel"
 msgid "Show Sidebar"
 msgstr "Vis Sidepanel"
 
+msgid "Hide Status Bar"
+msgstr "Skjul statuslinje"
+
+msgid "Show Status Bar"
+msgstr "Vis statuslinje"
+
 msgid "Source text"
 msgstr "Kildetekst"
 
@@ -773,6 +913,10 @@ msgstr "Oversettelse"
 msgid "ID"
 msgstr "ID"
 
+#, c-format
+msgid "Source text — %s"
+msgstr "Kildetekst — %s"
+
 msgid "unknown language"
 msgstr "Ukjent språk"
 
@@ -783,57 +927,73 @@ msgstr "Oversettelse-%s"
 msgid "Error:"
 msgstr "Feil:"
 
-msgid "Project info"
-msgstr "Prosjektinfo"
+msgid "Source file"
+msgstr "Kildefil"
 
-msgid "Project name and version:"
-msgstr "&Prosjektnavn og -versjon:"
+msgid "Source file occurrence:"
+msgstr "Kilde fil forekomst:"
 
-msgid "Language:"
-msgstr "&Språk:"
+msgid "Open in Editor"
+msgstr "Åpne i redigeringsprogram"
 
-msgid "Team:"
-msgstr "&Lag:"
+msgid "Open in editor"
+msgstr "Åpne i redigeringsprogram"
 
-msgid "Team's email address:"
-msgstr "&E-post-adressen til laget:"
+msgid "No references for the selected item."
+msgstr "Ingen referanser for det valgte elementet."
 
-msgid "Charset:"
-msgstr "&Tegnkoding:"
+#, c-format
+msgid "Error opening file %s!"
+msgstr "Feil ved åpning av fila «%s»."
 
-msgid "Source"
-msgstr "Kilde"
+msgid "Find"
+msgstr "Finn"
 
-msgid "Notes"
-msgstr "Notater"
+msgid "Replace"
+msgstr "Erstatt"
 
-msgid "Automatic translation"
-msgstr "Automatisk oversettelse"
+#. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.)
+msgid "Options"
+msgstr "Alternativer"
 
-msgid "Fuzzy translation"
-msgstr "Uklar oversettelse"
+msgid "Ignore case"
+msgstr "Ignorer små/STORE bokstaver"
 
-msgid "Notes for translators:"
-msgstr "Notater for oversettere:"
+msgid "Wrap around"
+msgstr "Pakk rundt"
 
-msgid "Comment:"
-msgstr "Kommentar:"
+msgid "Whole words only"
+msgstr "Bare hele ord"
 
-msgid "Source file"
-msgstr "Kildefil"
+msgid "Find in source texts"
+msgstr "Finn i kilde tekster"
 
-msgid "Source file occurrence:"
-msgstr "Kilde fil forekomst:"
+msgid "Find in translations"
+msgstr "Finn i oversettelser"
 
-msgid "Open in Editor"
-msgstr "Åpne i redigeringsprogram"
+msgid "Find in comments"
+msgstr "Finn i kommentarer"
 
-msgid "Open in editor"
-msgstr "Åpne i redigeringsprogram"
+msgid "Close"
+msgstr "Lukk"
 
-#, c-format
-msgid "Error opening file %s!"
-msgstr "Feil ved åpning av fila «%s»."
+msgid "Replace All"
+msgstr "Erstatt alle"
+
+msgid "Replace all"
+msgstr "Erstatt alle"
+
+msgid "< &Previous"
+msgstr "<Tidligere"
+
+msgid "&Next >"
+msgstr "&Neste >"
+
+msgid "String to find"
+msgstr "Streng å finne"
+
+msgid "Replacement string"
+msgstr "Erstattingsstreng"
 
 #, c-format
 msgid "Cannot execute program: %s"
@@ -1036,9 +1196,19 @@ msgstr "&Ny"
 msgid "Edit"
 msgstr "&Rediger"
 
+msgid "Delete extractor"
+msgstr "Slett ekstraktor"
+
+#, c-format
+msgid "Are you sure you want to delete the “%s” extractor?"
+msgstr "Er du sikker på at du vil slette \"%s\" ekstraktor?"
+
 msgid "Extractors"
 msgstr "Utpakker"
 
+msgid "Accounts"
+msgstr "Kontoer"
+
 msgid "Automatically check for updates"
 msgstr "Automatisk se etter oppdateringer"
 
@@ -1081,8 +1251,41 @@ msgstr "Beholde formateringen av eksisterende filer"
 msgid "Advanced"
 msgstr "Avansert"
 
-msgid "Additional keywords"
-msgstr "Flere søkeord"
+msgid ""
+"<big>Drag and Drop Folders Here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+"<big>Dra og slipp mapper her</big> \n"
+"\n"
+"eller bruk + knappen"
+
+msgid ""
+"<big>Drag and drop folders here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+"<big>Dra og slipp mapper her</big> \n"
+"\n"
+"eller bruk + knappen"
+
+msgid "Add Folders..."
+msgstr "Legg til mapper..."
+
+msgid "Add folders..."
+msgstr "Legg til mapper..."
+
+msgid "Add Files..."
+msgstr "Legg til filer..."
+
+msgid "Add files..."
+msgstr "Legg til filer..."
+
+msgid "Add Wildcard..."
+msgstr "Legg til jokertegn..."
+
+msgid "Add wildcard..."
+msgstr "Legg til jokertegn..."
 
 msgid "Paths"
 msgstr "Stier"
@@ -1090,6 +1293,9 @@ msgstr "Stier"
 msgid "Excluded paths"
 msgstr "Ekskluderte baner"
 
+msgid "Additional keywords"
+msgstr "Flere søkeord"
+
 msgid "Name of the project the translation is for"
 msgstr "Navnet på prosjektet oversettelsen er for"
 
@@ -1102,6 +1308,9 @@ msgstr "UTF-8 (anbefales)"
 msgid "Please save the file first. This section cannot be edited until then."
 msgstr "Lagre filen først. Denne delen kan ikke redigeres før da."
 
+msgid "Comment:"
+msgstr "Kommentar:"
+
 msgid "OK"
 msgstr "&OK"
 
@@ -1111,42 +1320,6 @@ msgstr "Tøm"
 msgid "Clear the comment"
 msgstr "Fjern kommentaren"
 
-msgid "Find..."
-msgstr "Søk etter ..."
-
-msgid "String to find:"
-msgstr "Sø&k etter:"
-
-msgid "Case sensitive"
-msgstr "Skill mellom store og små &bokstaver"
-
-msgid "Start from the first item"
-msgstr "Begynn med første element"
-
-msgid "Whole words only"
-msgstr "Bare hele ord"
-
-msgid "Find in original strings"
-msgstr "Søk i &originalteksten"
-
-msgid "Find in translations"
-msgstr "Finn i oversettelser"
-
-msgid "Find in comments"
-msgstr "Finn i kommentarer"
-
-msgid "Find in automatic comments"
-msgstr "Finn i automatiske kommentarer"
-
-msgid "Close"
-msgstr "Lukk"
-
-msgid "< &Previous"
-msgstr "<Tidligere"
-
-msgid "&Next >"
-msgstr "&Neste >"
-
 msgid "Create new translations project"
 msgstr "Lag nytt oversettelsesprosjekt"
 
@@ -1201,6 +1374,12 @@ msgstr "&Åpne ..."
 msgid "Open Recent"
 msgstr "Åpne siste"
 
+msgid "Open from Crowdin..."
+msgstr "Åpne fra Crowdin..."
+
+msgid "Open From Crowdin..."
+msgstr "Åpne fra Crowdin..."
+
 msgid "&Save"
 msgstr "La&gre"
 
@@ -1249,14 +1428,17 @@ msgstr "Vi&s referanser"
 msgid "&Find..."
 msgstr "Søk &etter ..."
 
+msgid "Replace..."
+msgstr "Erstatt..."
+
 msgid "Find next"
 msgstr "Finn neste"
 
 msgid "Find previous"
 msgstr "Finn forrige"
 
-msgid "Find"
-msgstr "Finn"
+msgid "Find and Replace..."
+msgstr "Søk og erstatt..."
 
 msgid "Find Next"
 msgstr "Finn neste"
@@ -1297,6 +1479,12 @@ msgstr "&Grupper på kontekst"
 msgid "&Group By Context"
 msgstr "&Grupper på kontekst"
 
+msgid "Entries with errors first"
+msgstr "Poster med feil først"
+
+msgid "Entries with Errors First"
+msgstr "Poster med feil først"
+
 msgid "&Untranslated entries first"
 msgstr "&Uoversatte poster først"
 
@@ -1306,6 +1494,9 @@ msgstr "&Uoversatte poster først"
 msgid "Show sidebar"
 msgstr "Vis Sidepanel"
 
+msgid "Show status bar"
+msgstr "Vis statuslinje"
+
 msgid "C&atalog"
 msgstr "K&atalog"
 
@@ -1321,6 +1512,9 @@ msgstr "Oppdater fra &POT-fil..."
 msgid "Update from &POT File..."
 msgstr "Oppdater fra &POT-fil..."
 
+msgid "Sync with Crowdin"
+msgstr "Synkroniser med Crowdin"
+
 msgid "Fill missing translations from &TM..."
 msgstr "Utfyll oversettelser fra &TM..."
 
@@ -1448,6 +1642,9 @@ msgstr ""
 msgid "Catalog properties"
 msgstr "Katalog egenskaper"
 
+msgid "Project name and version:"
+msgstr "&Prosjektnavn og -versjon:"
+
 msgid "Plural Forms:"
 msgstr "Flertallsformer:"
 
@@ -1460,17 +1657,29 @@ msgstr "Bruke egendefinerte uttrykk"
 msgid "Learn about plural forms"
 msgstr "Lær om flertallsformer"
 
+msgid "Charset:"
+msgstr "&Tegnkoding:"
+
+msgid "Team:"
+msgstr "&Lag:"
+
+msgid "Team's email address:"
+msgstr "&E-post-adressen til laget:"
+
 msgid "Translation properties"
 msgstr "Egenskaper for oversettelse"
 
+msgid "Sources paths"
+msgstr "Kildebaner"
+
 msgid "Extract text from source files in the following directories:"
 msgstr "Trekk ut tekst fra kildefiler i følgende kataloger:"
 
 msgid "Base path:"
 msgstr "&Grunnsti:"
 
-msgid "Sources paths"
-msgstr "Kildebaner"
+msgid "Sources keywords"
+msgstr "Kilder nøkkelord"
 
 msgid ""
 "Use these keywords (function names) to recognize translatable strings\n"
@@ -1483,9 +1692,6 @@ msgstr ""
 msgid "Learn about gettext keywords"
 msgstr "Lær om gettext søkeord"
 
-msgid "Sources keywords"
-msgstr "Kilder nøkkelord"
-
 msgid "Update summary"
 msgstr "Sammendrag"
 
@@ -1533,8 +1739,8 @@ msgstr "Oppdater katalog"
 msgid "Toggled if selected string has fuzzy translation"
 msgstr "Uklar oversettelse"
 
-msgid "Show or hide the sidebar."
-msgstr "Vis eller Skjul sidepanelet."
+msgid "Show or hide the sidebar"
+msgstr "Vis eller Skjul sidepanelet"
 
 #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer.
 msgid "Previous source text:"
@@ -1547,6 +1753,9 @@ msgstr ""
 "Gammel kilde tekst (før det endres under en oppdatering) som samsvarer med "
 "fuzzy oversettelsen."
 
+msgid "Notes for translators:"
+msgstr "Notater for oversettere:"
+
 msgid "Add comment"
 msgstr "Legg til kommentar"
 
@@ -1626,9 +1835,6 @@ msgstr "Redigere en oversettelse"
 msgid "Open an existing PO file and edit the translation."
 msgstr "Åpne en eksisterende PO-fil og redigere oversettelsen."
 
-msgid "Create new translation"
-msgstr "Lag ny oversettelse"
-
 msgid ""
 "Take an existing PO file or POT template and create a new translation from "
 "it."
@@ -1636,6 +1842,18 @@ msgstr ""
 "Ta en eksisterende PO-fil eller POT mal og opprette en ny oversettelse fra "
 "den."
 
+msgid "Collaborate on a translation with Crowdin"
+msgstr "Samarbeide om en oversettelse med Crowdin"
+
+msgid ""
+"Download a file from Crowdin project, translate and sync your changes back."
+msgstr ""
+"Last ned en fil fra Crowdin prosjekt, oversett og synkroniser endringene "
+"tilbake."
+
+msgid "What is Crowdin?"
+msgstr "Hva er Crowdin?"
+
 msgid "There are no translations. That’s unusual."
 msgstr "Det finnes ingen oversettelser. Det er uvanlig."
 
@@ -1673,3 +1891,9 @@ msgstr "Utdrag fra kilder"
 
 msgid "Configure source code extraction in Properties."
 msgstr "Konfigurere kilde koden utvinning i egenskaper."
+
+msgid "Sync"
+msgstr "Synkronisering"
+
+msgid "Synchronize the translation with Crowdin"
+msgstr "Synkroniser oversettelsen med Crowdin"
diff --git a/locales/ne.mo b/locales/ne.mo
index d179163..6191e84 100644
Binary files a/locales/ne.mo and b/locales/ne.mo differ
diff --git a/locales/ne.po b/locales/ne.po
index 1515ed5..ac65ac7 100644
--- a/locales/ne.po
+++ b/locales/ne.po
@@ -2,8 +2,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: poedit\n"
 "Report-Msgid-Bugs-To: help at poedit.net\n"
-"POT-Creation-Date: 2015-01-10 16:00+0100\n"
-"PO-Revision-Date: 2015-03-10 12:33-0400\n"
+"POT-Creation-Date: 2015-05-27 11:31+0200\n"
+"PO-Revision-Date: 2015-05-27 05:18-0400\n"
 "Last-Translator: vslavik <vaclav at slavik.io>\n"
 "Language-Team: Nepali\n"
 "Language: ne_NP\n"
@@ -84,6 +84,15 @@ msgstr ""
 msgid "Error saving catalog"
 msgstr "सूचीपत्रलाई बचत गर्दा त्रुटि"
 
+msgid "PO Translation Files"
+msgstr ""
+
+msgid "POT Translation Templates"
+msgstr ""
+
+msgid "All Translation Files"
+msgstr ""
+
 msgid "Merging differences..."
 msgstr "अन्तर गाभिदै छ ।"
 
@@ -103,6 +112,83 @@ msgstr "भाषाको चयन"
 msgid "You must restart Poedit for this change to take effect."
 msgstr "परिवर्तनको प्रयोगका लागि Poedit लाई पुनःः आरम्भ गर्नु पर्छ ।"
 
+msgid "Downloading translations is disabled in this project."
+msgstr ""
+
+msgid "Not authorized, please sign in again."
+msgstr ""
+
+msgid "Sign in to Crowdin"
+msgstr ""
+
+msgid ""
+"Crowdin is an online localization management platform and collaborative "
+"translation tool. Poedit can seamlessly sync PO files managed at Crowdin."
+msgstr ""
+
+msgid "Sign In"
+msgstr ""
+
+msgid "Sign in"
+msgstr ""
+
+msgid "Sign Out"
+msgstr ""
+
+msgid "Sign out"
+msgstr ""
+
+msgid "Waiting for authentication…"
+msgstr ""
+
+msgid "Updating user information…"
+msgstr ""
+
+msgid "Signed in as:"
+msgstr ""
+
+msgid "Learn More About Crowdin"
+msgstr ""
+
+msgid "Learn more about Crowdin"
+msgstr ""
+
+msgid "Open Crowdin translation"
+msgstr ""
+
+msgid "Project:"
+msgstr ""
+
+msgid "Language:"
+msgstr "भाषा:"
+
+msgid "File:"
+msgstr ""
+
+msgid "No translation projects listed in your Crowdin account."
+msgstr ""
+
+msgid "This project has no files that can be translated in Poedit."
+msgstr ""
+
+msgid "This file can only be edited in Crowdin’s web interface."
+msgstr ""
+
+msgid "Downloading latest translations…"
+msgstr ""
+
+msgid "Syncing with Crowdin"
+msgstr ""
+
+msgid "Syncing with Crowdin failed."
+msgstr ""
+
+msgid "Crowdin error"
+msgstr ""
+
+msgid "Uploading translations…"
+msgstr ""
+
 msgid "&Copy"
 msgstr ""
 
@@ -147,6 +233,12 @@ msgstr ""
 msgid "don't delete temporary files (for debugging)"
 msgstr "अस्थाइ फाइलहरू नमेट्नु होला (खानतलासीका लागि)"
 
+msgid "handle a poedit:// URI"
+msgstr ""
+
+msgid "Failed to communicate with Poedit process."
+msgstr ""
+
 #, c-format
 msgid "Unhandled exception occurred: %s"
 msgstr ""
@@ -157,12 +249,6 @@ msgstr ""
 msgid "Open catalog"
 msgstr "सूचीपत्रलाइ उघार"
 
-msgid "All Files"
-msgstr ""
-
-msgid "PO Translation Files"
-msgstr ""
-
 #, c-format
 msgid "File '%s' doesn't exist."
 msgstr "'%s' फाइल विद्यमान छैन ।"
@@ -390,6 +476,17 @@ msgstr "बहुवचन:"
 msgid "Translation:"
 msgstr "&अनुवाद"
 
+msgid ""
+"POT files are only templates and don’t contain any translations themselves.\n"
+"To make a translation, create a new PO file based on the template."
+msgstr ""
+
+msgid "Create New Translation"
+msgstr ""
+
+msgid "Create new translation"
+msgstr ""
+
 #. TRANSLATORS: %s is language name in its basic form (as you
 #. would see e.g. in a list of supported languages). You may need
 #. to rephrase it, e.g. to an equivalent of "for language %s".
@@ -437,9 +534,6 @@ msgstr ""
 msgid "Open catalog template"
 msgstr "सूचीपत्रको लेखोट उघार"
 
-msgid "POT Translation Templates"
-msgstr ""
-
 msgid "Updating catalog"
 msgstr "सूचीपत्र अद्यावधिक हुदैछ ।"
 
@@ -512,18 +606,20 @@ msgstr[1] ""
 msgid "The translation is ready for use."
 msgstr "अनुवाद प्रयोग योग्य छ ।"
 
-msgid "No references to this string found."
-msgstr "यो पदावलीको लागि कोहि संदर्भ पाइएन ।"
-
-msgid "Please choose the reference you want to show:"
-msgstr "कृपया तपाईले देखाउन चाहेको संदर्भको चयन गर्नु होस् :"
-
-msgid "References"
-msgstr "संदर्भ"
-
 msgid "Context:"
 msgstr "परिवेस"
 
+#, c-format
+msgid "Poedit automatically fixed invalid content in the file “%s”."
+msgstr ""
+
+msgid ""
+"The file contained duplicate items, which is not allowed in PO files and "
+"would prevent the file from being used. Poedit fixed the issue, but you "
+"should review translations of any items marked as fuzzy and correct them if "
+"necessary."
+msgstr ""
+
 msgid "Language of the translation isn't set."
 msgstr ""
 
@@ -533,6 +629,21 @@ msgstr ""
 msgid "Set language"
 msgstr ""
 
+#. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)."
+msgid ""
+"Suggestions are not available if the translation language is not set "
+"correctly. Other features, such as plural forms, may be affected as well."
+msgstr ""
+
+msgid "Language of the translation is the same as source language."
+msgstr ""
+
+msgid "Fix Language"
+msgstr ""
+
+msgid "Fix language"
+msgstr ""
+
 msgid ""
 "This catalog has entries with plural forms, but doesn't have Plural-Forms "
 "header configured."
@@ -565,6 +676,7 @@ msgstr "शिर्षकको किटानी"
 msgid "Plural forms expression used by the catalog is unusual for %s."
 msgstr ""
 
+#. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the catalog is unusual for %s.")"
 msgid "Review"
 msgstr ""
 
@@ -586,6 +698,12 @@ msgid_plural "%d errors"
 msgstr[0] ""
 msgstr[1] ""
 
+#, c-format
+msgid "%d entry"
+msgid_plural "%d entries"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid " (unsaved)"
 msgstr ""
 
@@ -702,6 +820,9 @@ msgstr ""
 msgid "Form %i"
 msgstr "रूप %i"
 
+msgid "Singular"
+msgstr ""
+
 msgid "Zero"
 msgstr ""
 
@@ -711,6 +832,9 @@ msgstr ""
 msgid "Two"
 msgstr ""
 
+msgid "Plural"
+msgstr ""
+
 msgid "Other"
 msgstr ""
 
@@ -739,6 +863,12 @@ msgstr ""
 msgid "Show Sidebar"
 msgstr ""
 
+msgid "Hide Status Bar"
+msgstr ""
+
+msgid "Show Status Bar"
+msgstr ""
+
 msgid "Source text"
 msgstr "मूल पाठ"
 
@@ -748,6 +878,10 @@ msgstr "अनुवाद"
 msgid "ID"
 msgstr ""
 
+#, c-format
+msgid "Source text — %s"
+msgstr ""
+
 msgid "unknown language"
 msgstr ""
 
@@ -758,57 +892,73 @@ msgstr ""
 msgid "Error:"
 msgstr "त्रुटी"
 
-msgid "Project info"
-msgstr "परियोजना बारे जानकारी"
+msgid "Source file"
+msgstr "स्रोत फ़ाइल"
 
-msgid "Project name and version:"
-msgstr "परियोजनाको नाम र संस्करण:"
+msgid "Source file occurrence:"
+msgstr "स्रोत फ़ाइलको पटक "
 
-msgid "Language:"
-msgstr "भाषा:"
+msgid "Open in Editor"
+msgstr ""
 
-msgid "Team:"
-msgstr "समुह"
+msgid "Open in editor"
+msgstr ""
 
-msgid "Team's email address:"
-msgstr "समुहको इमेल "
+msgid "No references for the selected item."
+msgstr ""
 
-msgid "Charset:"
-msgstr "वर्णसेट"
+#, c-format
+msgid "Error opening file %s!"
+msgstr "%s फ़ाइललाई खोल्दा त्रुटि भयो!"
 
-msgid "Source"
-msgstr "श्रोत"
+msgid "Find"
+msgstr ""
 
-msgid "Notes"
-msgstr "टिप्पणीहरू"
+msgid "Replace"
+msgstr ""
 
-msgid "Automatic translation"
-msgstr "स्वचलित अनुवाद"
+#. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.)
+msgid "Options"
+msgstr ""
 
-msgid "Fuzzy translation"
-msgstr "कुरूप अनुवाद"
+msgid "Ignore case"
+msgstr ""
 
-msgid "Notes for translators:"
-msgstr "अनुवादकलाई टिप्पणी "
+msgid "Wrap around"
+msgstr ""
 
-msgid "Comment:"
-msgstr "टिप्पणी:"
+msgid "Whole words only"
+msgstr "सम्पूर्ण शब्द मात्र"
 
-msgid "Source file"
-msgstr "स्रोत फ़ाइल"
+msgid "Find in source texts"
+msgstr ""
 
-msgid "Source file occurrence:"
-msgstr "स्रोत फ़ाइलको पटक "
+msgid "Find in translations"
+msgstr ""
 
-msgid "Open in Editor"
+msgid "Find in comments"
+msgstr "टिप्पणीमा फेला पार"
+
+msgid "Close"
+msgstr "&बन्द गर"
+
+msgid "Replace All"
 msgstr ""
 
-msgid "Open in editor"
+msgid "Replace all"
 msgstr ""
 
-#, c-format
-msgid "Error opening file %s!"
-msgstr "%s फ़ाइललाई खोल्दा त्रुटि भयो!"
+msgid "< &Previous"
+msgstr ""
+
+msgid "&Next >"
+msgstr ""
+
+msgid "String to find"
+msgstr ""
+
+msgid "Replacement string"
+msgstr ""
 
 #, c-format
 msgid "Cannot execute program: %s"
@@ -1001,9 +1151,19 @@ msgstr "नया"
 msgid "Edit"
 msgstr "संपादन"
 
+msgid "Delete extractor"
+msgstr ""
+
+#, c-format
+msgid "Are you sure you want to delete the “%s” extractor?"
+msgstr ""
+
 msgid "Extractors"
 msgstr ""
 
+msgid "Accounts"
+msgstr ""
+
 msgid "Automatically check for updates"
 msgstr ""
 
@@ -1042,7 +1202,34 @@ msgstr ""
 msgid "Advanced"
 msgstr ""
 
-msgid "Additional keywords"
+msgid ""
+"<big>Drag and Drop Folders Here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+
+msgid ""
+"<big>Drag and drop folders here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+
+msgid "Add Folders..."
+msgstr ""
+
+msgid "Add folders..."
+msgstr ""
+
+msgid "Add Files..."
+msgstr ""
+
+msgid "Add files..."
+msgstr ""
+
+msgid "Add Wildcard..."
+msgstr ""
+
+msgid "Add wildcard..."
 msgstr ""
 
 msgid "Paths"
@@ -1051,6 +1238,9 @@ msgstr "मार्ग"
 msgid "Excluded paths"
 msgstr ""
 
+msgid "Additional keywords"
+msgstr ""
+
 msgid "Name of the project the translation is for"
 msgstr ""
 
@@ -1063,6 +1253,9 @@ msgstr "UTF-8 (सिफारिस)"
 msgid "Please save the file first. This section cannot be edited until then."
 msgstr ""
 
+msgid "Comment:"
+msgstr "टिप्पणी:"
+
 msgid "OK"
 msgstr "ठीक"
 
@@ -1072,42 +1265,6 @@ msgstr "&मेटाउ"
 msgid "Clear the comment"
 msgstr "यो टिप्पणीलाई मेटाइ देउ"
 
-msgid "Find..."
-msgstr "फेला पार"
-
-msgid "String to find:"
-msgstr "खोज्नु पर्ने पदावली:"
-
-msgid "Case sensitive"
-msgstr "वर्ण संवेदनसिल"
-
-msgid "Start from the first item"
-msgstr "पहिलो सामाग्रीबाट शुरू गर"
-
-msgid "Whole words only"
-msgstr "सम्पूर्ण शब्द मात्र"
-
-msgid "Find in original strings"
-msgstr "मूल पदावलीमा खोज"
-
-msgid "Find in translations"
-msgstr ""
-
-msgid "Find in comments"
-msgstr "टिप्पणीमा फेला पार"
-
-msgid "Find in automatic comments"
-msgstr "स्वचलित टिप्पणी विन्डोजमा खोज"
-
-msgid "Close"
-msgstr "&बन्द गर"
-
-msgid "< &Previous"
-msgstr ""
-
-msgid "&Next >"
-msgstr ""
-
 msgid "Create new translations project"
 msgstr "नयाँ अनुवाद परियोजनाको सिर्जना गर ।"
 
@@ -1162,6 +1319,12 @@ msgstr "&उघार ..."
 msgid "Open Recent"
 msgstr ""
 
+msgid "Open from Crowdin..."
+msgstr ""
+
+msgid "Open From Crowdin..."
+msgstr ""
+
 msgid "&Save"
 msgstr "&बचत गर"
 
@@ -1210,13 +1373,16 @@ msgstr "&सन्दर्भलाई देखाउ"
 msgid "&Find..."
 msgstr "&फेला पार ..."
 
+msgid "Replace..."
+msgstr ""
+
 msgid "Find next"
 msgstr ""
 
 msgid "Find previous"
 msgstr ""
 
-msgid "Find"
+msgid "Find and Replace..."
 msgstr ""
 
 msgid "Find Next"
@@ -1258,6 +1424,12 @@ msgstr ""
 msgid "&Group By Context"
 msgstr ""
 
+msgid "Entries with errors first"
+msgstr ""
+
+msgid "Entries with Errors First"
+msgstr ""
+
 msgid "&Untranslated entries first"
 msgstr "&अनुवाद नगरेकालाई सिरानमा राख्ने"
 
@@ -1267,6 +1439,9 @@ msgstr "&अनुवाद नगरेकालाई सिरानमा 
 msgid "Show sidebar"
 msgstr ""
 
+msgid "Show status bar"
+msgstr ""
+
 msgid "C&atalog"
 msgstr "&सूचीपत्र "
 
@@ -1282,6 +1457,9 @@ msgstr "POT फ़ाइलबाट अद्यावधिक गर..."
 msgid "Update from &POT File..."
 msgstr "POT फाइलबाट &अद्यावदीक गर्नु होस् ।"
 
+msgid "Sync with Crowdin"
+msgstr ""
+
 msgid "Fill missing translations from &TM..."
 msgstr ""
 
@@ -1405,6 +1583,9 @@ msgstr ""
 msgid "Catalog properties"
 msgstr "सुचीपत्रका गुणहरू"
 
+msgid "Project name and version:"
+msgstr "परियोजनाको नाम र संस्करण:"
+
 msgid "Plural Forms:"
 msgstr "बहुवचन रूप:"
 
@@ -1417,17 +1598,29 @@ msgstr ""
 msgid "Learn about plural forms"
 msgstr "बहुवचनको बारेमा जानकारी ।"
 
+msgid "Charset:"
+msgstr "वर्णसेट"
+
+msgid "Team:"
+msgstr "समुह"
+
+msgid "Team's email address:"
+msgstr "समुहको इमेल "
+
 msgid "Translation properties"
 msgstr ""
 
+msgid "Sources paths"
+msgstr "श्रोत मार्ग"
+
 msgid "Extract text from source files in the following directories:"
 msgstr "तपसिलको घर्रामा श्रोत फाइलका पाठहरूलाई ल्याउ।"
 
 msgid "Base path:"
 msgstr "आधार मार्ग"
 
-msgid "Sources paths"
-msgstr "श्रोत मार्ग"
+msgid "Sources keywords"
+msgstr "श्रोत मुख्यशब्द"
 
 msgid ""
 "Use these keywords (function names) to recognize translatable strings\n"
@@ -1439,9 +1632,6 @@ msgstr ""
 msgid "Learn about gettext keywords"
 msgstr ""
 
-msgid "Sources keywords"
-msgstr "श्रोत मुख्यशब्द"
-
 msgid "Update summary"
 msgstr "सारांशलाई अद्यावधिकरन गर"
 
@@ -1489,7 +1679,7 @@ msgstr "अद्यावधिक सूचीपत्रको श्रो
 msgid "Toggled if selected string has fuzzy translation"
 msgstr "यदि चयन गरेको पदावली कुरूप अनुवाद छ भने उल्टाउ"
 
-msgid "Show or hide the sidebar."
+msgid "Show or hide the sidebar"
 msgstr ""
 
 #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer.
@@ -1501,6 +1691,9 @@ msgid ""
 "translation corresponds to."
 msgstr ""
 
+msgid "Notes for translators:"
+msgstr "अनुवादकलाई टिप्पणी "
+
 msgid "Add comment"
 msgstr ""
 
@@ -1573,14 +1766,21 @@ msgstr ""
 msgid "Open an existing PO file and edit the translation."
 msgstr ""
 
-msgid "Create new translation"
-msgstr ""
-
 msgid ""
 "Take an existing PO file or POT template and create a new translation from "
 "it."
 msgstr ""
 
+msgid "Collaborate on a translation with Crowdin"
+msgstr ""
+
+msgid ""
+"Download a file from Crowdin project, translate and sync your changes back."
+msgstr ""
+
+msgid "What is Crowdin?"
+msgstr ""
+
 msgid "There are no translations. That’s unusual."
 msgstr ""
 
@@ -1613,3 +1813,9 @@ msgstr ""
 
 msgid "Configure source code extraction in Properties."
 msgstr ""
+
+msgid "Sync"
+msgstr ""
+
+msgid "Synchronize the translation with Crowdin"
+msgstr ""
diff --git a/locales/nl.mo b/locales/nl.mo
index 8add323..d251f0f 100644
Binary files a/locales/nl.mo and b/locales/nl.mo differ
diff --git a/locales/nl.po b/locales/nl.po
index 29f4550..1d46928 100644
--- a/locales/nl.po
+++ b/locales/nl.po
@@ -2,8 +2,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: poedit\n"
 "Report-Msgid-Bugs-To: help at poedit.net\n"
-"POT-Creation-Date: 2015-01-10 16:00+0100\n"
-"PO-Revision-Date: 2015-03-10 12:33-0400\n"
+"POT-Creation-Date: 2015-05-27 11:31+0200\n"
+"PO-Revision-Date: 2015-05-27 05:30-0400\n"
 "Last-Translator: vslavik <vaclav at slavik.io>\n"
 "Language-Team: Dutch\n"
 "Language: nl_NL\n"
@@ -17,10 +17,10 @@ msgstr ""
 "X-Crowdin-File: /locales/poedit.pot\n"
 
 msgid "Hide this notification message"
-msgstr "Verberg deze melding"
+msgstr "Deze melding verbergen"
 
 msgid "Don't Show Again"
-msgstr "Dit niet meer tonen"
+msgstr "Niet meer weergeven"
 
 msgid "Don't show again"
 msgstr "Niet meer weergeven"
@@ -33,11 +33,11 @@ msgstr[1] "Regels %i van bestand '%s' zijn niet correct geladen."
 
 #, c-format
 msgid "Line %d of file '%s' is corrupted (not valid %s data)."
-msgstr "Regel %d van bestand '%s' is corrupt (geen geldige %s-gegevens)."
+msgstr "Regel %d van bestand '%s' is beschadigd (geen geldige %s-gegevens)."
 
 #, c-format
 msgid "Malformed header: '%s'"
-msgstr "Foutieve header: '%s'"
+msgstr "Verkeerd vormgegeven header: '%s'"
 
 msgid ""
 "Broken catalog file: singular form msgstr used together with msgid_plural"
@@ -59,25 +59,25 @@ msgstr ""
 
 #, c-format
 msgid "Couldn't load file %s, it is probably corrupted."
-msgstr "Kon bestand '%s' niet laden, het is waarschijnlijk corrupt."
+msgstr "Bestand '%s' kon niet geladen worden, het is waarschijnlijk corrupt."
 
 #, c-format
 msgid ""
 "File '%s' is read-only and cannot be saved.\n"
 "Please save it under different name."
 msgstr ""
-"Bestand '%s' is 'alleen lezen' en kan niet worden\n"
+"Het bestand '%s' is 'alleen-lezen' en kan niet worden\n"
 "opgeslagen. Gelieve het op te slaan onder een andere naam."
 
 #, c-format
 msgid "Couldn't save file %s."
-msgstr "Kon bestand %s niet opslaan."
+msgstr "Bestand %s kon niet worden opgeslagen."
 
 msgid ""
 "There was a problem formatting the file nicely (but it was saved all right)."
 msgstr ""
-"Er was een probleem bij het netjes opmaken van het bestand (maar het is wel "
-"opgeslagen)."
+"Er is een probleem opgetreden bij het netjes opmaken van het bestand (maar "
+"het is wel opgeslagen)."
 
 #, c-format
 msgid ""
@@ -89,14 +89,23 @@ msgstr ""
 "De catalogus kon niet opgeslagen worden met de '%s'-tekenset zoals opgegeven "
 "in de catalogus-instellingen..\n"
 "\n"
-"Hij werd in plaats daarvan opgeslagen in UTF-8 en de instelling werd in "
-"overeenstemming daarmee aangepast."
+"Hij werd in plaats daarvan opgeslagen in UTF8-formaat en de instelling werd "
+"in overeenstemming daarmee aangepast."
 
 msgid "Error saving catalog"
 msgstr "Fout bij het opslaan van de catalogus"
 
+msgid "PO Translation Files"
+msgstr "PO-vertaalbestanden"
+
+msgid "POT Translation Templates"
+msgstr "POT-vertaalsjablonen"
+
+msgid "All Translation Files"
+msgstr "Alle vertalingsbestanden"
+
 msgid "Merging differences..."
-msgstr "Bezig met samenvoegen van verschillen..."
+msgstr "Samenvoegen van verschillen..."
 
 #, c-format
 msgid "'%s' is not a valid POT file."
@@ -112,13 +121,92 @@ msgid "Language selection"
 msgstr "Taalselectie"
 
 msgid "You must restart Poedit for this change to take effect."
-msgstr "U moet Poedit herstarten om deze verandering toe te passen."
+msgstr "U moet Poedit opnieuw starten voordat deze verandering effect heeft."
+
+msgid "Downloading translations is disabled in this project."
+msgstr "Het downloaden van vertalingen is uitgeschakeld in dit project."
+
+msgid "Not authorized, please sign in again."
+msgstr "Niet geautoriseerd, log a.u.b. opnieuw in."
+
+msgid "Sign in to Crowdin"
+msgstr "Inloggen bij Crowdin"
+
+msgid ""
+"Crowdin is an online localization management platform and collaborative "
+"translation tool. Poedit can seamlessly sync PO files managed at Crowdin."
+msgstr ""
+"Crowdin is een online vertaalbeheerplatform en vertalingssamenwerk-tool. "
+"Poedit kan naadloos de op Crowdin beheerde PO-bestanden synchroniseren."
+
+msgid "Sign In"
+msgstr "Inloggen"
+
+msgid "Sign in"
+msgstr "Inloggen"
+
+msgid "Sign Out"
+msgstr "Uitloggen"
+
+msgid "Sign out"
+msgstr "Uitloggen"
+
+msgid "Waiting for authentication…"
+msgstr "Wachten op autorisatie…"
+
+msgid "Updating user information…"
+msgstr "Gebruikersinformatie bijwerken…"
+
+msgid "Signed in as:"
+msgstr "Ingelogd als:"
+
+msgid "Learn More About Crowdin"
+msgstr "Meer te weten komen over Crowdin"
+
+msgid "Learn more about Crowdin"
+msgstr "Meer te weten komen over Crowdin"
+
+msgid "Open Crowdin translation"
+msgstr "Crowdin-vertaling openen"
+
+msgid "Project:"
+msgstr "Project:"
+
+msgid "Language:"
+msgstr "Taal:"
+
+msgid "File:"
+msgstr "Bestand:"
+
+msgid "No translation projects listed in your Crowdin account."
+msgstr "Er zijn geen vertaalprojecten aanwezig in uw Crowdin-account."
+
+msgid "This project has no files that can be translated in Poedit."
+msgstr "Dit project bevat geen bestanden die vertaald kunnen worden in Poedit."
+
+msgid "This file can only be edited in Crowdin’s web interface."
+msgstr "Dit bestand kan alleen bewerkt worden in de Crowdin-webinterface."
+
+msgid "Downloading latest translations…"
+msgstr "De meest recente vertalingen downloaden…"
+
+msgid "Syncing with Crowdin"
+msgstr "Synchroniseren met Crowdin"
+
+msgid "Syncing with Crowdin failed."
+msgstr "Synchronisatie met Crowdin mislukt."
+
+msgid "Crowdin error"
+msgstr "Crowdin-fout"
+
+msgid "Uploading translations…"
+msgstr "Vertalingen uploaden…"
 
 msgid "&Copy"
 msgstr "&Kopiëren"
 
 msgid "Learn more"
-msgstr "Lees meer"
+msgstr "Meer informatie"
 
 msgid "Learn More"
 msgstr "Meer informatie"
@@ -128,7 +216,7 @@ msgid "Failed command: %s"
 msgstr "Mislukte opdracht: %s"
 
 msgid "Failed to merge gettext catalogs."
-msgstr "Kon gettext-catalogi niet samenvoegen."
+msgstr "Gettext-catalogi samenvoegen mislukt."
 
 msgid "Scanning files..."
 msgstr "Bestanden doorzoeken..."
@@ -139,10 +227,10 @@ msgid "Parsing %s files..."
 msgstr "%s bestanden aan het lezen..."
 
 msgid "Failed to load extracted catalog."
-msgstr "Laden van geëxtraheerde catalogus mislukt."
+msgstr "Het laden van de geëxtraheerde catalogus is mislukt."
 
 msgid "&Help"
-msgstr "&Help"
+msgstr "&Hulp"
 
 msgid "MO files can’t be directly edited in Poedit."
 msgstr "MO-bestanden kunnen niet direct bewerkt worden in Poedit."
@@ -158,24 +246,24 @@ msgstr ""
 "u dat opslaat zal het MO-bestand ook bijgewerkt worden."
 
 msgid "don't delete temporary files (for debugging)"
-msgstr "wis geen tijdelijke bestanden (voor foutopsporing)"
+msgstr "tijdelijke bestanden (voor foutopsporing) niet verwijderen"
+
+msgid "handle a poedit:// URI"
+msgstr "omgaan met een Poedit://-URI"
+
+msgid "Failed to communicate with Poedit process."
+msgstr "Communicatie met het Poedit-proces mislukt."
 
 #, c-format
 msgid "Unhandled exception occurred: %s"
-msgstr "Er is een onverwerkte uitzondering opgetreden: %s"
+msgstr "Er is een niet-verwerkte uitzondering opgetreden: %s"
 
 msgid "Unhandled exception occurred."
-msgstr "Er is een onverwerkte uitzondering opgetreden."
+msgstr "Er is een niet-verwerkte uitzondering opgetreden."
 
 msgid "Open catalog"
 msgstr "Catalogus openen"
 
-msgid "All Files"
-msgstr "Alle bestanden"
-
-msgid "PO Translation Files"
-msgstr "PO-vertaalbestanden"
-
 #, c-format
 msgid "File '%s' doesn't exist."
 msgstr "Het bestand '%s' bestaat niet."
@@ -193,7 +281,7 @@ msgid "Version %s"
 msgstr "Versie %s"
 
 msgid "Poedit is an easy to use translations editor."
-msgstr "Poedit is een eenvoudig te gebruiken vertalingenbewerker."
+msgstr "Poedit is een eenvoudig te gebruiken vertalingsbewerker."
 
 msgid "Catalogs Manager"
 msgstr "Catalogusbeheerder"
@@ -208,10 +296,10 @@ msgid "Undo"
 msgstr "Ongedaan maken"
 
 msgid "Redo"
-msgstr "Opnieuw doen"
+msgstr "Terugdraaien"
 
 msgid "Paste and Match Style"
-msgstr "Stijl plakken en laten overeenkomen"
+msgstr "Stijl plakken en overeen laten komen"
 
 msgid "Delete"
 msgstr "Verwijderen"
@@ -220,25 +308,25 @@ msgid "Spelling and Grammar"
 msgstr "Spelling en grammatica"
 
 msgid "Show Spelling and Grammar"
-msgstr "Spelling en grammatica weergeven"
+msgstr "Toon spelling en grammatica"
 
 msgid "Check Document Now"
-msgstr "Document nu controleren"
+msgstr "Controleer document nu"
 
 msgid "Check Spelling While Typing"
-msgstr "Spelling controleren tijdens typen"
+msgstr "Spelling controleren tijdens het typen"
 
 msgid "Check Grammar With Spelling"
-msgstr "Grammatica en spelling controleren"
+msgstr "Controleer grammatica tegelijk met spelling"
 
 msgid "Correct Spelling Automatically"
-msgstr "Spelling automatisch corrigeren"
+msgstr "Corrigeer spelling automatisch"
 
 msgid "Substitutions"
-msgstr "Vervangingen"
+msgstr "Vervanging"
 
 msgid "Show Substitutions"
-msgstr "Vervangingen weergeven"
+msgstr "Toon vervangingen"
 
 msgid "Smart Copy/Paste"
 msgstr "Slim kopiëren/plakken"
@@ -247,37 +335,37 @@ msgid "Smart Quotes"
 msgstr "Slimme aanhalingstekens"
 
 msgid "Smart Dashes"
-msgstr "Slimme liggende streepjes"
+msgstr "Slimme streepjes"
 
 msgid "Smart Links"
-msgstr "Slimme links"
+msgstr "Slimme koppelingen"
 
 msgid "Text Replacement"
 msgstr "Tekstvervanging"
 
 msgid "Transformations"
-msgstr "Transformaties"
+msgstr "Omzettingen"
 
 msgid "Make Upper Case"
-msgstr "Hoofdletters maken"
+msgstr "Zet om in hoofdletters"
 
 msgid "Make Lower Case"
-msgstr "Kleine letters maken"
+msgstr "Zet om in kleine letters"
 
 msgid "Capitalize"
-msgstr "Hoofdletters"
+msgstr "Zet om in beginhoofdletters"
 
 msgid "Speech"
 msgstr "Spraak"
 
 msgid "Start Speaking"
-msgstr "Beginnen met spreken"
+msgstr "Start spraakfunctie"
 
 msgid "Stop Speaking"
-msgstr "Stoppen met spreken"
+msgstr "Stop spraakfunctie"
 
 msgid "&View"
-msgstr "B&eeld"
+msgstr "&Bekijken"
 
 msgid "Enter Full Screen"
 msgstr "Ga naar volledig scherm"
@@ -286,19 +374,19 @@ msgid "Window"
 msgstr "Venster"
 
 msgid "Minimize"
-msgstr "Minimaliseren"
+msgstr "Minimaliseer"
 
 msgid "Zoom"
-msgstr "Zoomen"
+msgstr "Vergroot/verklein"
 
 msgid "Bring All to Front"
-msgstr "Alles naar voor brengen"
+msgstr "Alles naar de voorgrond brengen"
 
 msgid "PO Translation"
 msgstr "PO-vertaling"
 
 msgid "The file cannot be opened."
-msgstr "Het bestand kan niet geopend worden."
+msgstr "Het bestand kan niet worden geopend."
 
 msgid "Invalid file"
 msgstr "Ongeldig bestand"
@@ -306,14 +394,14 @@ msgstr "Ongeldig bestand"
 msgid ""
 "The file may be either corrupted or in a format not recognized by Poedit."
 msgstr ""
-"Het bestand kan corrupt zijn of in een formaat dat niet herkend wordt door "
-"Poedit."
+"Het bestand kan corrupt zijn of een opmaak hebben die niet herkend wordt "
+"door Poedit."
 
 msgid "&Undo"
 msgstr "&Ongedaan maken"
 
 msgid "&Redo"
-msgstr "Opnie&uw doen"
+msgstr "&Terugdraaien"
 
 msgid "Cu&t"
 msgstr "Kni&ppen"
@@ -391,10 +479,10 @@ msgid "&File"
 msgstr "&Bestand"
 
 msgid "&Go"
-msgstr "&Gaan"
+msgstr "&Navigeren"
 
 msgid "Source text:"
-msgstr "Brontekst"
+msgstr "Brontekst:"
 
 msgid "Singular:"
 msgstr "Enkelvoud:"
@@ -405,6 +493,20 @@ msgstr "Meervoud:"
 msgid "Translation:"
 msgstr "Vertaling:"
 
+msgid ""
+"POT files are only templates and don’t contain any translations themselves.\n"
+"To make a translation, create a new PO file based on the template."
+msgstr ""
+"POT-bestanden zijn slechts sjablonen en bevatten zelf geen vertalingen.\n"
+"Maak een nieuw PO-bestand aan op basis van dit sjabloon, om een vertaling te "
+"maken."
+
+msgid "Create New Translation"
+msgstr "Nieuwe vertaling maken"
+
+msgid "Create new translation"
+msgstr "Nieuwe vertaling maken"
+
 #. TRANSLATORS: %s is language name in its basic form (as you
 #. would see e.g. in a list of supported languages). You may need
 #. to rephrase it, e.g. to an equivalent of "for language %s".
@@ -419,13 +521,13 @@ msgid "Install"
 msgstr "Installeren"
 
 msgid "Catalog modified. Do you want to save changes?"
-msgstr "De catalogus is veranderd. Wilt u de veranderingen bewaren?"
+msgstr "De catalogus is gewijzigd. Wilt u de wijzigingen opslaan?"
 
 msgid "Save changes"
 msgstr "Veranderingen opslaan"
 
 msgid "Your changes will be lost if you don't save them."
-msgstr "Uw veranderingen zullen verloren gaan als u ze niet opslaat."
+msgstr "De veranderingen zullen verloren gaan als u ze niet opslaat."
 
 msgid "Save"
 msgstr "Opslaan"
@@ -454,9 +556,6 @@ msgstr "HTML-bestanden"
 msgid "Open catalog template"
 msgstr "Catalogus-sjabloon openen"
 
-msgid "POT Translation Templates"
-msgstr "POT-vertaalsjablonen"
-
 msgid "Updating catalog"
 msgstr "Catalogus bijwerken"
 
@@ -475,7 +574,7 @@ msgstr ""
 "de catalogus."
 
 msgid "Entries in the catalog are probably incorrect."
-msgstr "Vermeldingen in de catalogus zijn waarschijnlijk foutief."
+msgstr "Vermeldingen in de catalogus zijn waarschijnlijk onjuist."
 
 msgid "Updating the catalog failed. Click on 'Details >>' for details."
 msgstr "Bijwerken van catalogus mislukt. Klik op 'Details >>' voor details."
@@ -487,32 +586,32 @@ msgstr[0] "%d probleem gevonden met de vertaling."
 msgstr[1] "%d problemen gevonden met de vertaling."
 
 msgid "Validation results"
-msgstr "Validatieresultaten"
+msgstr "Valideringsresultaten"
 
 msgid ""
 "Entries with errors were marked in red in the list. Details of the error "
 "will be shown when you select such an entry."
 msgstr ""
-"Vermeldingen met fouten werden in het rood gemarkeerd in de lijst. Details "
-"over de fout zullen weergegeven worden wanneer u een van deze vermeldingen "
+"Vermeldingen met fouten zijn rood gemarkeerd in de lijst. Details over de "
+"fout zullen weergegeven worden wanneer u een van deze vermeldingen "
 "selecteert."
 
 msgid "The file was saved safely."
-msgstr "Het bestand werd veilig opgeslagen."
+msgstr "Het bestand is veilig opgeslagen."
 
 msgid ""
 "The file was saved safely and compiled into the MO format, but it will "
 "probably not work correctly."
 msgstr ""
-"Het bestand werd veilig opgeslagen en gecompileerd in het .mo-formaat, maar "
-"het zal waarschijnlijk niet correct werken."
+"Het bestand is veilig opgeslagen en gecompileerd naar het mo-formaat, maar "
+"het zal waarschijnlijk niet goed werken."
 
 msgid ""
 "The file was saved safely, but it cannot be compiled into the MO format and "
 "used."
 msgstr ""
-"Het bestand werd veilig opgeslagen, maar het kan niet gecompileerd worden in "
-"het .mo-formaat en gebruikt worden."
+"Het bestand is veilig opgeslagen maar het kan niet gecompileerd worden naar "
+"het mo-formaat, en dus niet gebruikt worden."
 
 msgid ""
 "The file was compiled into the MO format, but it will probably not work "
@@ -524,7 +623,7 @@ msgstr ""
 msgid "The file cannot be compiled into the MO format and used."
 msgstr ""
 "Het bestand kan niet gecompileerd worden naar het MO-formaat en dus niet "
-"gebruikt worden."
+"gebruikt."
 
 msgid "No problems with the translation found."
 msgstr "Geen problemen met de vertaling gevonden."
@@ -534,27 +633,35 @@ msgid "The translation is ready for use, but %d entry is not translated yet."
 msgid_plural ""
 "The translation is ready for use, but %d entries are not translated yet."
 msgstr[0] ""
-"De vertaling is klaar voor gebruik, maar %d entry is nog niet vertaald."
+"De vertaling is klaar voor gebruik, maar vermelding %d is nog niet vertaald."
 msgstr[1] ""
-"De vertaling is klaar voor gebruik, maar %d entry's zijn nog niet vertaald."
+"De vertaling is klaar voor gebruik, maar vermeldingen %d zijn nog niet "
+"vertaald."
 
 msgid "The translation is ready for use."
 msgstr "De vertaling is klaar voor gebruik."
 
-msgid "No references to this string found."
-msgstr "Geen verwijzingen naar deze string gevonden."
-
-msgid "Please choose the reference you want to show:"
-msgstr "Kies de verwijzing die u wenst te zien:"
-
-msgid "References"
-msgstr "Verwijzingen"
-
 msgid "Context:"
 msgstr "Context:"
 
+#, c-format
+msgid "Poedit automatically fixed invalid content in the file “%s”."
+msgstr ""
+"Poedit heeft automatisch ongeldige content gerepareerd in het bestand '%s'."
+
+msgid ""
+"The file contained duplicate items, which is not allowed in PO files and "
+"would prevent the file from being used. Poedit fixed the issue, but you "
+"should review translations of any items marked as fuzzy and correct them if "
+"necessary."
+msgstr ""
+"Het bestand bevatte dubbele items; dat is niet toegestaan in PO-bestanden, "
+"omdat het zou voorkomen dat het bestand gebruikt wordt. Poedit heeft de fout "
+"hersteld, maar je moet vertalingen van alle items die als onduidelijk "
+"gemarkeerd zijn, nakijken en ze zo nodig corrigeren."
+
 msgid "Language of the translation isn't set."
-msgstr "Taal van de vertaling is niet ingesteld."
+msgstr "De taal is niet ingesteld."
 
 msgid "Set Language"
 msgstr "Taal instellen"
@@ -562,32 +669,50 @@ msgstr "Taal instellen"
 msgid "Set language"
 msgstr "Taal instellen"
 
+#. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)."
+msgid ""
+"Suggestions are not available if the translation language is not set "
+"correctly. Other features, such as plural forms, may be affected as well."
+msgstr ""
+"Suggesties zijn niet beschikbaar als de taal van de vertaling niet juist is "
+"ingesteld. Andere functies, zoals meervoudsvormen, kunnen ook worden "
+"beïnvloed."
+
+msgid "Language of the translation is the same as source language."
+msgstr "Taal van de vertaling is hetzelfde als de brontaal."
+
+msgid "Fix Language"
+msgstr "Taal repareren"
+
+msgid "Fix language"
+msgstr "Taal repareren"
+
 msgid ""
 "This catalog has entries with plural forms, but doesn't have Plural-Forms "
 "header configured."
 msgstr ""
 "Deze catalogus bevat vermeldingen met meervoudsvormen, maar er is geen "
-"meervoudsvorm-header voor ingesteld."
+"meervoudsvorm-koptekst voor ingesteld."
 
 msgid ""
 "Entries in this catalog have different plural forms count from what "
 "catalog's Plural-Forms header says"
 msgstr ""
-"Vermeldingen in deze catalogus hebben een andere meervoudsvormtelling dan "
-"wat er staat in de meervoudsvormtelling in de koptekst van de catalogus"
+"Vermeldingen in deze catalogus hebben een andere meervoudsvorm dan wat er "
+"staat in de meervoudsvorm-koptekst van de catalogus"
 
 msgid "Required header Plural-Forms is missing."
-msgstr "Vereiste header Plural-Forms ontbreekt."
+msgstr "Vereiste meervoudsvorm-header ontbreekt."
 
 #, c-format
 msgid "Syntax error in Plural-Forms header (\"%s\")."
-msgstr "Syntaxfout in meervoudsvorm-header ('%s')."
+msgstr "Syntaxfout in meervoudsvorm-koptekst ('%s')."
 
 msgid "Fix the Header"
 msgstr "De hoofding herstellen"
 
 msgid "Fix the header"
-msgstr "Herstel de koptekst"
+msgstr "De koptekst repareren"
 
 #. TRANSLATORS: %s is language name in its basic form (as you
 #. would see e.g. in a list of supported languages). You may need
@@ -598,6 +723,7 @@ msgstr ""
 "De meervoudsvorm-expressie gebruikt door de catalogus is ongebruikelijk voor "
 "%s."
 
+#. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the catalog is unusual for %s.")"
 msgid "Review"
 msgstr "Nakijken"
 
@@ -619,6 +745,12 @@ msgid_plural "%d errors"
 msgstr[0] "%d fout"
 msgstr[1] "%d fouten"
 
+#, c-format
+msgid "%d entry"
+msgid_plural "%d entries"
+msgstr[0] "%d woord"
+msgstr[1] "%d woorden"
+
 msgid " (unsaved)"
 msgstr "(niet-opgeslagen)"
 
@@ -626,14 +758,14 @@ msgid " (modified)"
 msgstr " (veranderd)"
 
 msgid "Go"
-msgstr "Starten"
+msgstr "Navigeren"
 
 #, c-format
 msgid "Failed to update translation memory: %s"
 msgstr "Bijwerken van vertaalgeheugen mislukt: %s"
 
 msgid "Purge deleted translations"
-msgstr "Gewiste vertalingen verwijderen"
+msgstr "&Gewiste vertalingen definitief verwijderen"
 
 msgid "Do you want to remove all translations that are no longer used?"
 msgstr "Wilt u alle vertalingen verwijderen die niet langer worden gebruikt?"
@@ -643,15 +775,15 @@ msgid ""
 "permanently removed. You will have to translate them again if they are added "
 "back in the future."
 msgstr ""
-"Als u doorgaat met verwijderen, dan zullen alle vertalingen die gemarkeerd "
-"staan als 'gewist', blijvend worden verwijderd. U zult ze dan opnieuw moeten "
+"Als u doorgaat met verwijderen zullen alle vertalingen die gemarkeerd staan "
+"als 'gewist', blijvend worden verwijderd. U zult ze dan opnieuw moeten "
 "vertalen als u ze in de toekomst weer toevoegt."
 
 msgid "Keep"
-msgstr "Bewaren"
+msgstr "Behouden"
 
 msgid "Purge"
-msgstr "Verwijderen"
+msgstr "Definitief verwijderen"
 
 msgid "Fill missing translations from TM"
 msgstr "Ontbrekende vertalingen invullen vanuit TM"
@@ -674,9 +806,9 @@ msgid ""
 "Only enable if you trust the quality of your TM. By default, all matches "
 "from the TM are marked as fuzzy and should be reviewed."
 msgstr ""
-"Zet dit alleen aan als u de kwaliteit van de TM vertrouwt. Standaard worden "
-"alle overeenkomsten van de TM als onduidelijk gemarkeerd, en zullen "
-"nagekeken moeten worden."
+"Zet dit alleen aan als u de kwaliteit van TM vertrouwt. Standaard worden "
+"alle overeenkomsten van TM als onduidelijk gemarkeerd en ze zullen nagekeken "
+"moeten worden."
 
 msgid "Fill"
 msgstr "Invullen"
@@ -684,33 +816,34 @@ msgstr "Invullen"
 #, c-format
 msgid "%d entry was filled from the translation memory."
 msgid_plural "%d entries were filled from the translation memory."
-msgstr[0] "Er werd %d entry opgevuld vanuit het vertaalgeheugen."
-msgstr[1] "Er werden %d entry's opgevuld vanuit het vertaalgeheugen."
+msgstr[0] "Er werd %d vermelding ingevuld vanuit het vertaalgeheugen."
+msgstr[1] "Er werden %d vermeldingen ingevuld vanuit het vertaalgeheugen."
 
 msgid ""
 "The translations were marked as fuzzy, because they may be inaccurate. You "
 "should review them for correctness."
 msgstr ""
-"De vertalingen werden gemarkeerd als fuzzy, omdat ze misschien niet accuraat "
-"zijn. U kijkt ze best na op juistheid."
+"De vertalingen werden gemarkeerd als onduidelijk, omdat ze misschien niet "
+"accuraat zijn. U dient ze na te kijken op juistheid."
 
 msgid "No entries could be filled from the translation memory."
-msgstr "Er konden geen entry's opgevuld worden vanuit het vertaalgeheugen."
+msgstr ""
+"Er konden geen vermeldingen ingevuld worden vanuit het vertaalgeheugen."
 
 msgid ""
 "The TM doesn’t contain any strings similar to the content of this file. It "
 "is only effective for semi-automatic translations after Poedit learns enough "
 "from files that you translated manually."
 msgstr ""
-"Het vertaalgeheugen bevat geen strings die gelijkaardig zijn aan de inhoud "
-"van dit bestand. Het is alleen effectief voor semi-automatische vertalingen "
-"nadat Poedit genoeg leert van bestanden die u manueel vertaald heeft."
+"Het vertaalgeheugen bevat geen strings die gelijk zijn aan de inhoud van dit "
+"bestand. Het is alleen effectief voor semi-automatische vertalingen nadat "
+"Poedit genoeg geleerd heeft van bestanden die u handmatig vertaald heeft."
 
 msgid "Translating"
-msgstr "Vertalen"
+msgstr "Aan het vertalen"
 
 msgid "Filling missing translations from TM..."
-msgstr "Ontbrekende vertalingen opvullen vanuit TM..."
+msgstr "Ontbrekende vertalingen invullen vanuit TM..."
 
 #, c-format
 msgid "Translated %u string"
@@ -744,38 +877,44 @@ msgstr "Alles"
 
 #, c-format
 msgid "Form %i"
-msgstr "Vorm %i"
+msgstr "Formulier %i"
+
+msgid "Singular"
+msgstr "Enkelvoud"
 
 msgid "Zero"
 msgstr "Nul"
 
 msgid "One"
-msgstr "Een"
+msgstr "Eén"
 
 msgid "Two"
 msgstr "Twee"
 
+msgid "Plural"
+msgstr "Meervoud"
+
 msgid "Other"
-msgstr "Andere"
+msgstr "Meer"
 
 msgid "&Bookmarks"
 msgstr "&Bladwijzers"
 
 #, c-format
 msgid "Set bookmark %i"
-msgstr "Bookmark %i instellen"
+msgstr "Bladwijzer %i instellen"
 
 #, c-format
 msgid "Go to bookmark %i"
-msgstr "Naar bookmark %i gaan"
+msgstr "Naar bladwijzer %i gaan"
 
 #, c-format
 msgid "Set Bookmark %i"
-msgstr "Bookmark %i instellen"
+msgstr "Bladwijzer %i instellen"
 
 #, c-format
 msgid "Go to Bookmark %i"
-msgstr "Ga naar bookmark %i"
+msgstr "Naar bladwijzer %i gaan"
 
 msgid "Hide Sidebar"
 msgstr "Zijbalk verbergen"
@@ -783,6 +922,12 @@ msgstr "Zijbalk verbergen"
 msgid "Show Sidebar"
 msgstr "Zijbalk tonen"
 
+msgid "Hide Status Bar"
+msgstr "Statusbalk verbergen"
+
+msgid "Show Status Bar"
+msgstr "Statusbalk weergeven"
+
 msgid "Source text"
 msgstr "Brontekst"
 
@@ -792,6 +937,10 @@ msgstr "Vertaling"
 msgid "ID"
 msgstr "ID"
 
+#, c-format
+msgid "Source text — %s"
+msgstr "Brontekst — %s"
+
 msgid "unknown language"
 msgstr "onbekende taal"
 
@@ -802,73 +951,89 @@ msgstr "Vertaling — %s"
 msgid "Error:"
 msgstr "Fout:"
 
-msgid "Project info"
-msgstr "Projectinformatie"
+msgid "Source file"
+msgstr "Bronbestand"
 
-msgid "Project name and version:"
-msgstr "Projectnaam en -versie:"
+msgid "Source file occurrence:"
+msgstr "Vóórkomen van bronbestand:"
 
-msgid "Language:"
-msgstr "Taal:"
+msgid "Open in Editor"
+msgstr "Openen in editor"
 
-msgid "Team:"
-msgstr "Team:"
+msgid "Open in editor"
+msgstr "Openen in editor"
 
-msgid "Team's email address:"
-msgstr "E-mailadres van team:"
+msgid "No references for the selected item."
+msgstr "Geen verwijzingen voor het geselecteerde item."
 
-msgid "Charset:"
-msgstr "Tekenset:"
+#, c-format
+msgid "Error opening file %s!"
+msgstr "Fout bij het openen van bestand %s."
 
-msgid "Source"
-msgstr "Bron"
+msgid "Find"
+msgstr "Zoeken"
 
-msgid "Notes"
-msgstr "Aantekeningen"
+msgid "Replace"
+msgstr "Vervangen"
 
-msgid "Automatic translation"
-msgstr "Automatische vertaling"
+#. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.)
+msgid "Options"
+msgstr "Opties"
 
-msgid "Fuzzy translation"
-msgstr "Fuzzy vertaling"
+msgid "Ignore case"
+msgstr "Hoofd-/kleine letters negeren"
 
-msgid "Notes for translators:"
-msgstr "Opmerkingen voor vertalers:"
+msgid "Wrap around"
+msgstr "Tekstomloop"
 
-msgid "Comment:"
-msgstr "Opmerking:"
+msgid "Whole words only"
+msgstr "Alleen hele woorden"
 
-msgid "Source file"
-msgstr "Bronbestand"
+msgid "Find in source texts"
+msgstr "In bronteksten zoeken"
 
-msgid "Source file occurrence:"
-msgstr "Vóórkomen van bronbestand:"
+msgid "Find in translations"
+msgstr "In vertalingen zoeken"
 
-msgid "Open in Editor"
-msgstr "Openen in editor"
+msgid "Find in comments"
+msgstr "In opmerkingen zoeken"
 
-msgid "Open in editor"
-msgstr "Openen in editor"
+msgid "Close"
+msgstr "Sluiten"
 
-#, c-format
-msgid "Error opening file %s!"
-msgstr "Fout bij openen van bestand %s."
+msgid "Replace All"
+msgstr "Alles vervangen"
+
+msgid "Replace all"
+msgstr "Alles vervangen"
+
+msgid "< &Previous"
+msgstr "< &Vorige"
+
+msgid "&Next >"
+msgstr "&Volgende >"
+
+msgid "String to find"
+msgstr "Te zoeken term"
+
+msgid "Replacement string"
+msgstr "Vervangende term"
 
 #, c-format
 msgid "Cannot execute program: %s"
-msgstr "Kan programma niet uitvoeren: %s"
+msgstr "Kan programma: %s niet uitvoeren"
 
 msgid "Language Code or Name (e.g. en_GB)"
-msgstr "Taalcode of naam (bijvoorbeeld en_GB)"
+msgstr "Taalcode of -naam (bijv. nl_NL)"
 
 msgid "Translation Language"
-msgstr "Taal"
+msgstr "Vertalingstaal"
 
 msgid "Language of the translation:"
-msgstr "Taal van de vertaling:"
+msgstr "Taal:"
 
 msgid "Poedit - Catalogs manager"
-msgstr "Poedit - Catalogusbeheerder"
+msgstr "Poedit-catalogusbeheerder"
 
 msgid "Catalog"
 msgstr "Catalogus"
@@ -880,16 +1045,16 @@ msgid "Untrans"
 msgstr "Onvertaald "
 
 msgid "Fuzzy"
-msgstr "Fuzzy"
+msgstr "Onduidelijk"
 
 msgid "Bad Tokens"
 msgstr "Ongeldige symbolen"
 
 msgid "Last modified"
-msgstr "Laatst veranderd"
+msgstr "Laatst gewijzigd"
 
 msgid "Select directory"
-msgstr "Kies map"
+msgstr "Map kiezen"
 
 msgid "Directories:"
 msgstr "Mappen:"
@@ -923,14 +1088,14 @@ msgid "Email:"
 msgstr "E-mailadres:"
 
 msgid "your_email at example.com"
-msgstr "uw_email at voorbeeld.nl"
+msgstr "uw_e-mail at example.com"
 
 msgid ""
 "Your name and email address are only used to set the Last-Translator header "
 "of GNU gettext files."
 msgstr ""
-"Uw naam en e-mailadres worden alleen gebruikt om de hoofding 'Laatste-"
-"vertaler' van de GNU-gettext-bestanden in te stellen."
+"Uw naam en e-mailadres worden alleen gebruikt om de header 'Laatste-"
+"Vertaler' van de GNU-gettext-bestanden in te stellen."
 
 msgid "Editing"
 msgstr "Bewerken"
@@ -952,21 +1117,22 @@ msgid ""
 "arrows for keyboard navigation but you can also type text immediately, "
 "without having to press Tab to change focus."
 msgstr ""
-"Laat nooit de lijst met strings de focus overnemen. Als deze optie aanstaat, "
-"moet u Ctrl-pijltoetsen gebruiken voor de toetsenbord-navigatie, maar u kunt "
-"ook meteen tekst typen, zonder met Tab de focus te hoeven veranderen."
+"Nooit de lijst met strings als actief venster instellen. Als deze optie "
+"aanstaat, moet u Ctrl-pijltjestoetsen gebruiken voor de toetsenbord-"
+"navigatie, maar u kunt ook meteen tekst typen, zonder met de tabtoets het "
+"actieve venster te hoeven veranderen."
 
 msgid "Appearance"
 msgstr "Weergave"
 
 msgid "Use custom list font:"
-msgstr "Aangepaste lettertypelijst gebruiken:"
+msgstr "Aangepast lettertype voor lijst gebruiken:"
 
 msgid "Use custom text fields font:"
-msgstr "Aangepaste tekstveldenlettertype gebruiken:"
+msgstr "Aangepast lettertype voor tekstvelden gebruiken:"
 
 msgid "Change UI language"
-msgstr "Interface-taal aanpassen"
+msgstr "Interface-taal veranderen"
 
 #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions
 msgid "(requires Windows 8 or newer)"
@@ -979,7 +1145,7 @@ msgid "Use translation memory"
 msgstr "Vertaalgeheugen gebruiken"
 
 msgid "Learn From Files..."
-msgstr "Leren van bestanden..."
+msgstr "Uit bestanden halen..."
 
 msgid "Learn from files..."
 msgstr "Leer uit bestanden..."
@@ -997,11 +1163,12 @@ msgid ""
 "near-empty, it will not be very effective. The more translations\n"
 "you edit and the larger the TM grows, the better it gets."
 msgstr ""
-"Indien ingeschakeld, zal Poedit proberen om nieuwe entry's in te vullen door "
-"uw vorige vertalingen te gebruiken die opgeslagen zijn in het "
-"vertaalgeheugen. Als het vertaalgeheugen bijna leeg is, zal het niet erg "
-"effectief zijn. Hoe meer vertalingen u bewerkt en hoe meer het "
-"vertaalgeheugen groeit, hoe beter het wordt."
+"Indien ingeschakeld, zal Poedit proberen om nieuwe termen in te vullen door "
+"gebruik te maken van uw vorige \n"
+"vertalingen, die opgeslagen zijn in het vertaalgeheugen. Als het "
+"vertaalgeheugen \n"
+" bijna leeg is, zal dat niet erg effectief zijn. Hoe meer vertalingen \n"
+"u bewerkt des te meer het vertaalgeheugen groeit, dus hoe beter het wordt."
 
 msgid "Stored translations:"
 msgstr "Opgeslagen vertalingen:"
@@ -1010,7 +1177,7 @@ msgid "Database size on disk:"
 msgstr "Grootte database op schijf:"
 
 msgid "Select translation files to import"
-msgstr "Selecteer te importeren taalbestanden"
+msgstr "Selecteer de te importeren taalbestanden"
 
 msgid "Translation Memory"
 msgstr "Vertaalgeheugen"
@@ -1056,9 +1223,19 @@ msgstr "Nieuw"
 msgid "Edit"
 msgstr "Bewerken"
 
+msgid "Delete extractor"
+msgstr "Uitpakker verwijderen"
+
+#, c-format
+msgid "Are you sure you want to delete the “%s” extractor?"
+msgstr "Weet je zeker dat je uitpakker %s wilt verwijderen?"
+
 msgid "Extractors"
 msgstr "Uitpakkers"
 
+msgid "Accounts"
+msgstr "Accounts"
+
 msgid "Automatically check for updates"
 msgstr "Automatisch op updates controleren"
 
@@ -1102,8 +1279,41 @@ msgstr "De formattering van de bestaande bestanden behouden"
 msgid "Advanced"
 msgstr "Geavanceerd"
 
-msgid "Additional keywords"
-msgstr "Aanvullende sleutelwoorden"
+msgid ""
+"<big>Drag and Drop Folders Here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+"<big>Sleep mappen hierheen</big>\n"
+"\n"
+"of gebruik de knop +"
+
+msgid ""
+"<big>Drag and drop folders here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+"<big>Sleep mappen hierheen</big>\n"
+"\n"
+"of gebruik de knop +"
+
+msgid "Add Folders..."
+msgstr "Mappen toevoegen..."
+
+msgid "Add folders..."
+msgstr "Mappen toevoegen..."
+
+msgid "Add Files..."
+msgstr "Bestanden toevoegen..."
+
+msgid "Add files..."
+msgstr "Bestanden toevoegen..."
+
+msgid "Add Wildcard..."
+msgstr "Wildcard toevoegen..."
+
+msgid "Add wildcard..."
+msgstr "Wildcard toevoegen..."
 
 msgid "Paths"
 msgstr "Paden"
@@ -1111,11 +1321,14 @@ msgstr "Paden"
 msgid "Excluded paths"
 msgstr "Uitgesloten paden"
 
+msgid "Additional keywords"
+msgstr "Aanvullende zoekwoorden"
+
 msgid "Name of the project the translation is for"
 msgstr "Naam van het project waarvoor de vertaling is."
 
 msgid "e.g. nplurals=2; plural=(n > 1);"
-msgstr "bijvoorbeeld nplurals=2; plural=(n > 1);"
+msgstr "bijv. nplurals=2; plural=(n != 1);"
 
 msgid "UTF-8 (recommended)"
 msgstr "UTF-8 (aanbevolen)"
@@ -1125,8 +1338,11 @@ msgstr ""
 "Gelieve het bestand eerst op te slaan. Deze sectie kan tot dan niet bewerkt "
 "worden."
 
+msgid "Comment:"
+msgstr "Opmerking:"
+
 msgid "OK"
-msgstr "Ok"
+msgstr "OK"
 
 msgid "C&lear"
 msgstr "&Wissen"
@@ -1134,42 +1350,6 @@ msgstr "&Wissen"
 msgid "Clear the comment"
 msgstr "Opmerking wissen"
 
-msgid "Find..."
-msgstr "Zoeken..."
-
-msgid "String to find:"
-msgstr "Te zoeken string:"
-
-msgid "Case sensitive"
-msgstr "Hoofdlettergevoelig"
-
-msgid "Start from the first item"
-msgstr "Start vanaf het eerste item"
-
-msgid "Whole words only"
-msgstr "Alleen hele woorden"
-
-msgid "Find in original strings"
-msgstr "Zoek in originele strings"
-
-msgid "Find in translations"
-msgstr "Zoek in vertalingen"
-
-msgid "Find in comments"
-msgstr "Zoek in commentaren"
-
-msgid "Find in automatic comments"
-msgstr "Zoek in automatische commentaren"
-
-msgid "Close"
-msgstr "Sluiten"
-
-msgid "< &Previous"
-msgstr "< &Vorige"
-
-msgid "&Next >"
-msgstr "&Volgende >"
-
 msgid "Create new translations project"
 msgstr "Nieuw vertaalproject maken"
 
@@ -1177,16 +1357,16 @@ msgid "Edit the project"
 msgstr "Het project bewerken"
 
 msgid "Delete the project"
-msgstr "Project verwijderen"
+msgstr "Het project verwijderen"
 
 msgid "Update all"
 msgstr "Alles bijwerken"
 
 msgid "Update all catalogs in the project"
-msgstr "Alle catalogi in project bijwerken"
+msgstr "Alle catalogi in het project bijwerken"
 
 msgid "Edit project"
-msgstr "Project bewerken"
+msgstr "Het project bewerken"
 
 msgid "Project name:"
 msgstr "Projectnaam:"
@@ -1204,7 +1384,7 @@ msgid "&Close"
 msgstr "&Sluiten"
 
 msgid "E&xit"
-msgstr "Af&sluiten"
+msgstr "&Afsluiten"
 
 msgid "Quit"
 msgstr "Afsluiten"
@@ -1224,6 +1404,12 @@ msgstr "&Openen..."
 msgid "Open Recent"
 msgstr "Recent bestand openen"
 
+msgid "Open from Crowdin..."
+msgstr "Openen vanuit Crowdin..."
+
+msgid "Open From Crowdin..."
+msgstr "Openen vanuit Crowdin..."
+
 msgid "&Save"
 msgstr "Op&slaan"
 
@@ -1249,10 +1435,10 @@ msgid "Catalogs &Manager"
 msgstr "Catalogus&beheerder"
 
 msgid "Translation is &fuzzy"
-msgstr "Vertaling is &fuzzy"
+msgstr "Vertaling is &onduidelijk"
 
 msgid "Translation Is &Fuzzy"
-msgstr "Vertaling is &fuzzy"
+msgstr "Vertaling is &onduidelijk"
 
 msgid "Edit &comment"
 msgstr "&Opmerking bewerken"
@@ -1272,14 +1458,17 @@ msgstr "&Verwijzingen weergeven"
 msgid "&Find..."
 msgstr "&Zoeken..."
 
+msgid "Replace..."
+msgstr "Vervangen..."
+
 msgid "Find next"
 msgstr "Volgende zoeken"
 
 msgid "Find previous"
 msgstr "Vorige zoeken"
 
-msgid "Find"
-msgstr "Zoeken"
+msgid "Find and Replace..."
+msgstr "Zoeken en vervangen..."
 
 msgid "Find Next"
 msgstr "Volgende zoeken"
@@ -1291,10 +1480,10 @@ msgid "&Preferences"
 msgstr "&Voorkeuren"
 
 msgid "Display entry &IDs"
-msgstr "Entry-&ID's weergeven"
+msgstr "Vermeldings-&ID's weergeven"
 
 msgid "Display Entry &IDs"
-msgstr "Entry-&ID's weergeven"
+msgstr "Vermeldings-&ID's weergeven"
 
 msgid "Sort by &file order"
 msgstr "Sorteren op bestands&volgorde"
@@ -1320,6 +1509,12 @@ msgstr "&Groeperen naar context"
 msgid "&Group By Context"
 msgstr "&Groeperen naar context"
 
+msgid "Entries with errors first"
+msgstr "Invoer met fouten eerst"
+
+msgid "Entries with Errors First"
+msgstr "Invoer met fouten eerst"
+
 msgid "&Untranslated entries first"
 msgstr "&Onvertaalde vermeldingen eerst"
 
@@ -1329,6 +1524,9 @@ msgstr "&Onvertaalde vermeldingen eerst"
 msgid "Show sidebar"
 msgstr "Zijbalk tonen"
 
+msgid "Show status bar"
+msgstr "Statusbalk tonen"
+
 msgid "C&atalog"
 msgstr "C&atalogus"
 
@@ -1344,6 +1542,9 @@ msgstr "Bijwerken vanuit &POT-bestand..."
 msgid "Update from &POT File..."
 msgstr "Bijwerken vanuit &POT-bestand..."
 
+msgid "Sync with Crowdin"
+msgstr "Synchroniseren met Crowdin"
+
 msgid "Fill missing translations from &TM..."
 msgstr "Ontbrekende vertalingen aanvullen vanuit de &TM..."
 
@@ -1363,7 +1564,7 @@ msgid "&Validate Translations"
 msgstr "Vertalingen &valideren"
 
 msgid "&Properties..."
-msgstr "&Voorkeuren..."
+msgstr "&Eigenschappen..."
 
 msgid "&Done and next"
 msgstr "&Klaar en volgende"
@@ -1402,10 +1603,10 @@ msgid "&Online Help"
 msgstr "&Hulp op het internet"
 
 msgid "&GNU gettext manual"
-msgstr "&GNU gettext handleiding"
+msgstr "&GNU-gettext-handleiding"
 
 msgid "&GNU gettext Manual"
-msgstr "&GNU gettext handleiding"
+msgstr "&GNU-gettext-handleiding"
 
 msgid "&About Poedit"
 msgstr "&Over Poedit"
@@ -1437,14 +1638,14 @@ msgstr ""
 "%C naar de karakterset-vlag (zie hieronder)."
 
 msgid "An item in keywords list:"
-msgstr "Een item in de lijst van sleutelwoorden:"
+msgstr "Een item in de lijst met trefwoorden:"
 
 msgid ""
 "This will be attached to the command line once\n"
 "for each keyword. %k expands to the keyword."
 msgstr ""
-"Dit wordt voor elk sleutelwoord aan de opdrachtregel\n"
-"toegevoegd. %k wordt vervangen door het sleutelwoord."
+"Dit wordt voor elk trefwoord aan de opdrachtregel \n"
+" toegevoegd. %k wordt vervangen door het trefwoord."
 
 msgid "An item in input files list:"
 msgstr "Een item in de lijst van invoerbestanden:"
@@ -1454,8 +1655,8 @@ msgid ""
 "This will be attached to the command line once\n"
 "for each input file. %f expands to the filename."
 msgstr ""
-"Dit wordt voor elk invoerbestand aan de opdrachtregel\n"
-"toegevoegd. %f wordt vervangen door de bestandnaam."
+"Dit wordt voor elk invoerbestand één keer \n"
+" aan de opdrachtregel toegevoegd. %f wordt vervangen door de bestandsnaam."
 
 msgid "Source code charset:"
 msgstr "Broncode-tekenset:"
@@ -1465,17 +1666,20 @@ msgid ""
 "This will be attached to the command line\n"
 "only if source codecharset was given. %c expands to charset value."
 msgstr ""
-"Dit wordt aan de opdrachtregel toegevoegd als alleen de bron-\n"
+"Dit wordt alleen aan de opdrachtregel toegevoegd als de bron-\n"
 "tekenset was opgegeven. %c wordt vervangen door de tekensetwaarde."
 
 msgid "Catalog properties"
-msgstr "Eigenschappen van catalogus"
+msgstr "Cataloguseigenschappen"
+
+msgid "Project name and version:"
+msgstr "Projectnaam en -versie:"
 
 msgid "Plural Forms:"
 msgstr "Meervoudsvormen:"
 
 msgid "Use default rules for this language"
-msgstr "Standaard regels voor deze taal gebruiken"
+msgstr "Standaardregels voor deze taal gebruiken"
 
 msgid "Use custom expression"
 msgstr "Aangepaste expressie gebruiken"
@@ -1483,30 +1687,39 @@ msgstr "Aangepaste expressie gebruiken"
 msgid "Learn about plural forms"
 msgstr "Meer informatie over meervoudsvormen"
 
+msgid "Charset:"
+msgstr "Tekenset:"
+
+msgid "Team:"
+msgstr "Team:"
+
+msgid "Team's email address:"
+msgstr "E-mailadres van het team:"
+
 msgid "Translation properties"
 msgstr "Eigenschappen van vertaling"
 
+msgid "Sources paths"
+msgstr "Bronpaden"
+
 msgid "Extract text from source files in the following directories:"
 msgstr "Haal tekst uit de bronbestanden in de volgende mappen:"
 
 msgid "Base path:"
 msgstr "Basispad:"
 
-msgid "Sources paths"
-msgstr "Bronpaden"
+msgid "Sources keywords"
+msgstr "Trefwoorden van bronnen"
 
 msgid ""
 "Use these keywords (function names) to recognize translatable strings\n"
 "in source files:"
 msgstr ""
-"Gebruik deze sleutelwoorden (functienamen) om vertaalbare strings in\n"
+"Gebruik deze trefwoorden (functienamen) om vertaalbare strings in\n"
 "bronbestanden te herkennen:"
 
 msgid "Learn about gettext keywords"
-msgstr "Meer informatie over gettext-sleutelwoorden"
-
-msgid "Sources keywords"
-msgstr "Sleutelwoorden van bronnen"
+msgstr "Meer informatie over gettext-trefwoorden"
 
 msgid "Update summary"
 msgstr "Samenvatting van bijwerken"
@@ -1526,7 +1739,7 @@ msgid ""
 "These strings are no longer in the sources.\n"
 "Poedit will remove them from the catalog now."
 msgstr ""
-"Deze strings bestaan niet langer in de broncode.\n"
+"Deze strings staan niet meer in de broncode.\n"
 "Poedit zal ze nu uit de catalogus verwijderen."
 
 msgid "Obsolete strings"
@@ -1551,13 +1764,13 @@ msgid "Update"
 msgstr "Bijwerken"
 
 msgid "Update catalog - synchronize it with sources"
-msgstr "Bijwerken catalogus - synchroniseer hem met de bronnen"
+msgstr "Catalogus bijwerken - synchroniseren met de bronnen"
 
 msgid "Toggled if selected string has fuzzy translation"
-msgstr "Ingedrukt als de geselecteerde tekst een fuzzy vertaling heeft"
+msgstr "Ingedrukt als de geselecteerde tekst een onduidelijke vertaling heeft"
 
-msgid "Show or hide the sidebar."
-msgstr "De zijbalk tonen of verbergen."
+msgid "Show or hide the sidebar"
+msgstr "De zijbalk tonen of verbergen"
 
 #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer.
 msgid "Previous source text:"
@@ -1570,6 +1783,9 @@ msgstr ""
 "De oude brontekst (voordat hij veranderd werd tijdens een update) waar de "
 "onnauwkeurige vertaling naar verwijst."
 
+msgid "Notes for translators:"
+msgstr "Opmerkingen voor vertalers:"
+
 msgid "Add comment"
 msgstr "Commentaar toevoegen"
 
@@ -1632,10 +1848,10 @@ msgid ""
 "%s\n"
 "Please email help at poedit.net and we’ll get it fixed."
 msgstr ""
-"Uw vertaalgeheugendata kon niet gemigreerd worden. De fout was:\n"
+"Uw vertaalgeheugendata konden niet gemigreerd worden. De fout was:\n"
 "\n"
 "%s\n"
-"Gelieve te mailen naar help at poedit.net en we zullen het oplossen."
+"Gelieve te e-mailen naar help at poedit.net en we zullen het oplossen."
 
 msgid "Cannot create temporary directory."
 msgstr "Kan geen tijdelijke map maken."
@@ -1649,9 +1865,6 @@ msgstr "Een vertaling bewerken"
 msgid "Open an existing PO file and edit the translation."
 msgstr "Een bestaand PO-bestand openen en de vertaling bewerken."
 
-msgid "Create new translation"
-msgstr "Nieuwe vertaling maken"
-
 msgid ""
 "Take an existing PO file or POT template and create a new translation from "
 "it."
@@ -1659,6 +1872,18 @@ msgstr ""
 "Een bestaand PO-bestand of POT-sjabloon nemen en er een nieuwe vertaling van "
 "maken."
 
+msgid "Collaborate on a translation with Crowdin"
+msgstr "Samenwerken aan een vertaling met Crowdin"
+
+msgid ""
+"Download a file from Crowdin project, translate and sync your changes back."
+msgstr ""
+"Download een bestand van een Crowdin-project, vertaal en synchroniseer je "
+"wijzigingen terug."
+
+msgid "What is Crowdin?"
+msgstr "Wat is Crowdin?"
+
 msgid "There are no translations. That’s unusual."
 msgstr "Er zijn geen vertalingen. Dat is ongebruikelijk."
 
@@ -1669,31 +1894,38 @@ msgid ""
 "Translators typically use PO template files (POTs) prepared for them by the "
 "developer."
 msgstr ""
-"Vertaalbare entries worden niet manueel in het Gettext-systeem toegevoegd, "
-"maar automatisch geëxtraheerd vanuit de broncode. Op die manier blijven ze "
-"up-to-date en accuraat. Vertalers gebruiken meestal PO-sjabloonbestanden "
-"(POT's) die de ontwikkelaar voor hen maakte."
+"Vertaalbare vermeldingen worden niet handmatig in het Gettext-systeem "
+"toegevoegd, maar automatisch geëxtraheerd \n"
+"vanuit de broncode. Op deze manier blijven ze up-to-date en accuraat. \n"
+"Vertalers gebruiken meestal PO-sjabloonbestanden (POT's) die de ontwikkelaar "
+"voor hen gemaakt heeft."
 
 msgid "(Learn more about GNU gettext)"
-msgstr "(Meer te weten komen over GNU gettext)"
+msgstr "(Meer te weten komen over GNU-gettext)"
 
 msgid "The simplest way to fill this catalog is to update it from a POT:"
 msgstr ""
-"De meest eenvoudige manier om deze catalogus op te vullen is door hem bij te "
+"De eenvoudigste manier om deze catalogus aan te vullen is door hem bij te "
 "werken vanuit een POT:"
 
 msgid "Update from POT"
 msgstr "Bijwerken vanuit POT"
 
 msgid "Take translatable strings from an existing POT template."
-msgstr "Vertaalbare strings uit een bestaand POT-sjabloon nemen."
+msgstr "Vertaalbare strings uit een bestaand POT-sjabloon halen."
 
 msgid ""
 "You can also extract translatable strings directly from the source code:"
 msgstr "U kunt vertaalbare strings ook direct uit de broncode ophalen:"
 
 msgid "Extract from sources"
-msgstr "Extraheren uit bronnen"
+msgstr "Extraheren uit broncode"
 
 msgid "Configure source code extraction in Properties."
 msgstr "Configureer broncode-extractie in Eigenschappen."
+
+msgid "Sync"
+msgstr "Synchroniseren"
+
+msgid "Synchronize the translation with Crowdin"
+msgstr "Synchroniseer de vertaling met Crowdin"
diff --git a/locales/nn.mo b/locales/nn.mo
index 9be639a..3d886f4 100644
Binary files a/locales/nn.mo and b/locales/nn.mo differ
diff --git a/locales/nn.po b/locales/nn.po
index c71d421..0d81bec 100644
--- a/locales/nn.po
+++ b/locales/nn.po
@@ -2,8 +2,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: poedit\n"
 "Report-Msgid-Bugs-To: help at poedit.net\n"
-"POT-Creation-Date: 2015-01-10 16:00+0100\n"
-"PO-Revision-Date: 2015-03-10 12:33-0400\n"
+"POT-Creation-Date: 2015-05-27 11:31+0200\n"
+"PO-Revision-Date: 2015-05-27 05:17-0400\n"
 "Last-Translator: vslavik <vaclav at slavik.io>\n"
 "Language-Team: Norwegian Nynorsk\n"
 "Language: nn_NO\n"
@@ -86,6 +86,15 @@ msgstr ""
 msgid "Error saving catalog"
 msgstr "Klarte ikkje lagra katalogen"
 
+msgid "PO Translation Files"
+msgstr ""
+
+msgid "POT Translation Templates"
+msgstr ""
+
+msgid "All Translation Files"
+msgstr ""
+
 msgid "Merging differences..."
 msgstr "Slår saman endringar …"
 
@@ -105,6 +114,83 @@ msgstr "Språkval"
 msgid "You must restart Poedit for this change to take effect."
 msgstr "Du må starta Poedit på nytt for at endringane skal tre i kraft."
 
+msgid "Downloading translations is disabled in this project."
+msgstr ""
+
+msgid "Not authorized, please sign in again."
+msgstr ""
+
+msgid "Sign in to Crowdin"
+msgstr ""
+
+msgid ""
+"Crowdin is an online localization management platform and collaborative "
+"translation tool. Poedit can seamlessly sync PO files managed at Crowdin."
+msgstr ""
+
+msgid "Sign In"
+msgstr ""
+
+msgid "Sign in"
+msgstr ""
+
+msgid "Sign Out"
+msgstr ""
+
+msgid "Sign out"
+msgstr ""
+
+msgid "Waiting for authentication…"
+msgstr ""
+
+msgid "Updating user information…"
+msgstr ""
+
+msgid "Signed in as:"
+msgstr ""
+
+msgid "Learn More About Crowdin"
+msgstr ""
+
+msgid "Learn more about Crowdin"
+msgstr ""
+
+msgid "Open Crowdin translation"
+msgstr ""
+
+msgid "Project:"
+msgstr ""
+
+msgid "Language:"
+msgstr "Språk:"
+
+msgid "File:"
+msgstr ""
+
+msgid "No translation projects listed in your Crowdin account."
+msgstr ""
+
+msgid "This project has no files that can be translated in Poedit."
+msgstr ""
+
+msgid "This file can only be edited in Crowdin’s web interface."
+msgstr ""
+
+msgid "Downloading latest translations…"
+msgstr ""
+
+msgid "Syncing with Crowdin"
+msgstr ""
+
+msgid "Syncing with Crowdin failed."
+msgstr ""
+
+msgid "Crowdin error"
+msgstr ""
+
+msgid "Uploading translations…"
+msgstr ""
+
 msgid "&Copy"
 msgstr ""
 
@@ -149,6 +235,12 @@ msgstr ""
 msgid "don't delete temporary files (for debugging)"
 msgstr ""
 
+msgid "handle a poedit:// URI"
+msgstr ""
+
+msgid "Failed to communicate with Poedit process."
+msgstr ""
+
 #, c-format
 msgid "Unhandled exception occurred: %s"
 msgstr ""
@@ -159,12 +251,6 @@ msgstr ""
 msgid "Open catalog"
 msgstr "Opna katalog"
 
-msgid "All Files"
-msgstr ""
-
-msgid "PO Translation Files"
-msgstr ""
-
 #, c-format
 msgid "File '%s' doesn't exist."
 msgstr "Fila «%s» finst ikkje."
@@ -392,6 +478,17 @@ msgstr "Fleirtal:"
 msgid "Translation:"
 msgstr ""
 
+msgid ""
+"POT files are only templates and don’t contain any translations themselves.\n"
+"To make a translation, create a new PO file based on the template."
+msgstr ""
+
+msgid "Create New Translation"
+msgstr ""
+
+msgid "Create new translation"
+msgstr ""
+
 #. TRANSLATORS: %s is language name in its basic form (as you
 #. would see e.g. in a list of supported languages). You may need
 #. to rephrase it, e.g. to an equivalent of "for language %s".
@@ -439,9 +536,6 @@ msgstr ""
 msgid "Open catalog template"
 msgstr "Opna katalogmal"
 
-msgid "POT Translation Templates"
-msgstr ""
-
 msgid "Updating catalog"
 msgstr ""
 
@@ -510,16 +604,18 @@ msgstr[1] ""
 msgid "The translation is ready for use."
 msgstr ""
 
-msgid "No references to this string found."
-msgstr "Fann ingen referanse til teksten."
-
-msgid "Please choose the reference you want to show:"
-msgstr "Vel referansen du vil visa:"
+msgid "Context:"
+msgstr ""
 
-msgid "References"
-msgstr "Referansar"
+#, c-format
+msgid "Poedit automatically fixed invalid content in the file “%s”."
+msgstr ""
 
-msgid "Context:"
+msgid ""
+"The file contained duplicate items, which is not allowed in PO files and "
+"would prevent the file from being used. Poedit fixed the issue, but you "
+"should review translations of any items marked as fuzzy and correct them if "
+"necessary."
 msgstr ""
 
 msgid "Language of the translation isn't set."
@@ -531,6 +627,21 @@ msgstr ""
 msgid "Set language"
 msgstr ""
 
+#. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)."
+msgid ""
+"Suggestions are not available if the translation language is not set "
+"correctly. Other features, such as plural forms, may be affected as well."
+msgstr ""
+
+msgid "Language of the translation is the same as source language."
+msgstr ""
+
+msgid "Fix Language"
+msgstr ""
+
+msgid "Fix language"
+msgstr ""
+
 msgid ""
 "This catalog has entries with plural forms, but doesn't have Plural-Forms "
 "header configured."
@@ -561,6 +672,7 @@ msgstr ""
 msgid "Plural forms expression used by the catalog is unusual for %s."
 msgstr ""
 
+#. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the catalog is unusual for %s.")"
 msgid "Review"
 msgstr ""
 
@@ -582,6 +694,12 @@ msgid_plural "%d errors"
 msgstr[0] ""
 msgstr[1] ""
 
+#, c-format
+msgid "%d entry"
+msgid_plural "%d entries"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid " (unsaved)"
 msgstr ""
 
@@ -695,6 +813,9 @@ msgstr ""
 msgid "Form %i"
 msgstr "Form %i"
 
+msgid "Singular"
+msgstr ""
+
 msgid "Zero"
 msgstr ""
 
@@ -704,6 +825,9 @@ msgstr ""
 msgid "Two"
 msgstr ""
 
+msgid "Plural"
+msgstr ""
+
 msgid "Other"
 msgstr ""
 
@@ -732,6 +856,12 @@ msgstr ""
 msgid "Show Sidebar"
 msgstr ""
 
+msgid "Hide Status Bar"
+msgstr ""
+
+msgid "Show Status Bar"
+msgstr ""
+
 msgid "Source text"
 msgstr ""
 
@@ -741,6 +871,10 @@ msgstr "Omsetjing"
 msgid "ID"
 msgstr ""
 
+#, c-format
+msgid "Source text — %s"
+msgstr ""
+
 msgid "unknown language"
 msgstr ""
 
@@ -751,57 +885,73 @@ msgstr ""
 msgid "Error:"
 msgstr ""
 
-msgid "Project info"
-msgstr "Prosjektinfo"
+msgid "Source file"
+msgstr "Kjeldefil"
 
-msgid "Project name and version:"
-msgstr "Prosjektnamn og -versjon:"
+msgid "Source file occurrence:"
+msgstr ""
 
-msgid "Language:"
-msgstr "Språk:"
+msgid "Open in Editor"
+msgstr ""
 
-msgid "Team:"
-msgstr "Omsetjargruppe:"
+msgid "Open in editor"
+msgstr ""
 
-msgid "Team's email address:"
-msgstr "E-post til omsetjargruppa:"
+msgid "No references for the selected item."
+msgstr ""
 
-msgid "Charset:"
-msgstr "Teiknkoding:"
+#, c-format
+msgid "Error opening file %s!"
+msgstr "Klarte ikkje opna fila «%s»."
 
-msgid "Source"
+msgid "Find"
 msgstr ""
 
-msgid "Notes"
-msgstr "Merknader"
+msgid "Replace"
+msgstr ""
 
-msgid "Automatic translation"
-msgstr "Automatisk omsetjing"
+#. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.)
+msgid "Options"
+msgstr ""
 
-msgid "Fuzzy translation"
-msgstr "Uklar omsetjing"
+msgid "Ignore case"
+msgstr ""
 
-msgid "Notes for translators:"
+msgid "Wrap around"
 msgstr ""
 
-msgid "Comment:"
-msgstr "Merknad:"
+msgid "Whole words only"
+msgstr "Berre heile ord"
 
-msgid "Source file"
-msgstr "Kjeldefil"
+msgid "Find in source texts"
+msgstr ""
 
-msgid "Source file occurrence:"
+msgid "Find in translations"
 msgstr ""
 
-msgid "Open in Editor"
+msgid "Find in comments"
+msgstr "Søk i omsetjingsmerknader"
+
+msgid "Close"
 msgstr ""
 
-msgid "Open in editor"
+msgid "Replace All"
 msgstr ""
 
-#, c-format
-msgid "Error opening file %s!"
-msgstr "Klarte ikkje opna fila «%s»."
+msgid "Replace all"
+msgstr ""
+
+msgid "< &Previous"
+msgstr ""
+
+msgid "&Next >"
+msgstr ""
+
+msgid "String to find"
+msgstr ""
+
+msgid "Replacement string"
+msgstr ""
 
 #, c-format
 msgid "Cannot execute program: %s"
@@ -994,9 +1144,19 @@ msgstr "Ny"
 msgid "Edit"
 msgstr "&Rediger"
 
+msgid "Delete extractor"
+msgstr ""
+
+#, c-format
+msgid "Are you sure you want to delete the “%s” extractor?"
+msgstr ""
+
 msgid "Extractors"
 msgstr ""
 
+msgid "Accounts"
+msgstr ""
+
 msgid "Automatically check for updates"
 msgstr ""
 
@@ -1035,7 +1195,34 @@ msgstr ""
 msgid "Advanced"
 msgstr ""
 
-msgid "Additional keywords"
+msgid ""
+"<big>Drag and Drop Folders Here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+
+msgid ""
+"<big>Drag and drop folders here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+
+msgid "Add Folders..."
+msgstr ""
+
+msgid "Add folders..."
+msgstr ""
+
+msgid "Add Files..."
+msgstr ""
+
+msgid "Add files..."
+msgstr ""
+
+msgid "Add Wildcard..."
+msgstr ""
+
+msgid "Add wildcard..."
 msgstr ""
 
 msgid "Paths"
@@ -1044,6 +1231,9 @@ msgstr "Adresser"
 msgid "Excluded paths"
 msgstr ""
 
+msgid "Additional keywords"
+msgstr ""
+
 msgid "Name of the project the translation is for"
 msgstr ""
 
@@ -1056,6 +1246,9 @@ msgstr ""
 msgid "Please save the file first. This section cannot be edited until then."
 msgstr ""
 
+msgid "Comment:"
+msgstr "Merknad:"
+
 msgid "OK"
 msgstr "OK"
 
@@ -1065,42 +1258,6 @@ msgstr ""
 msgid "Clear the comment"
 msgstr "Fjern merknaden"
 
-msgid "Find..."
-msgstr "Søk etter …"
-
-msgid "String to find:"
-msgstr "Søk etter:"
-
-msgid "Case sensitive"
-msgstr "Skil mellom store og små bokstavar"
-
-msgid "Start from the first item"
-msgstr "Start frå den første meldinga"
-
-msgid "Whole words only"
-msgstr "Berre heile ord"
-
-msgid "Find in original strings"
-msgstr "Søk i originaltekstar"
-
-msgid "Find in translations"
-msgstr ""
-
-msgid "Find in comments"
-msgstr "Søk i omsetjingsmerknader"
-
-msgid "Find in automatic comments"
-msgstr "Søk i utviklarmerknader"
-
-msgid "Close"
-msgstr ""
-
-msgid "< &Previous"
-msgstr ""
-
-msgid "&Next >"
-msgstr ""
-
 msgid "Create new translations project"
 msgstr "Lag nytt omsetjingprosjekt"
 
@@ -1155,6 +1312,12 @@ msgstr "&Opna …"
 msgid "Open Recent"
 msgstr ""
 
+msgid "Open from Crowdin..."
+msgstr ""
+
+msgid "Open From Crowdin..."
+msgstr ""
+
 msgid "&Save"
 msgstr "La&gra"
 
@@ -1203,13 +1366,16 @@ msgstr ""
 msgid "&Find..."
 msgstr "Søk &etter …"
 
+msgid "Replace..."
+msgstr ""
+
 msgid "Find next"
 msgstr ""
 
 msgid "Find previous"
 msgstr ""
 
-msgid "Find"
+msgid "Find and Replace..."
 msgstr ""
 
 msgid "Find Next"
@@ -1251,6 +1417,12 @@ msgstr ""
 msgid "&Group By Context"
 msgstr ""
 
+msgid "Entries with errors first"
+msgstr ""
+
+msgid "Entries with Errors First"
+msgstr ""
+
 msgid "&Untranslated entries first"
 msgstr ""
 
@@ -1260,6 +1432,9 @@ msgstr ""
 msgid "Show sidebar"
 msgstr ""
 
+msgid "Show status bar"
+msgstr ""
+
 msgid "C&atalog"
 msgstr "&Katalog"
 
@@ -1275,6 +1450,9 @@ msgstr "Oppdater frå &POT-fil …"
 msgid "Update from &POT File..."
 msgstr ""
 
+msgid "Sync with Crowdin"
+msgstr ""
+
 msgid "Fill missing translations from &TM..."
 msgstr ""
 
@@ -1400,6 +1578,9 @@ msgstr ""
 msgid "Catalog properties"
 msgstr ""
 
+msgid "Project name and version:"
+msgstr "Prosjektnamn og -versjon:"
+
 msgid "Plural Forms:"
 msgstr "Fleirtalsformer:"
 
@@ -1412,16 +1593,28 @@ msgstr ""
 msgid "Learn about plural forms"
 msgstr ""
 
+msgid "Charset:"
+msgstr "Teiknkoding:"
+
+msgid "Team:"
+msgstr "Omsetjargruppe:"
+
+msgid "Team's email address:"
+msgstr "E-post til omsetjargruppa:"
+
 msgid "Translation properties"
 msgstr ""
 
+msgid "Sources paths"
+msgstr ""
+
 msgid "Extract text from source files in the following directories:"
 msgstr ""
 
 msgid "Base path:"
 msgstr "Grunnstig:"
 
-msgid "Sources paths"
+msgid "Sources keywords"
 msgstr ""
 
 msgid ""
@@ -1432,9 +1625,6 @@ msgstr ""
 msgid "Learn about gettext keywords"
 msgstr ""
 
-msgid "Sources keywords"
-msgstr ""
-
 msgid "Update summary"
 msgstr "Samandrag av oppdateringa"
 
@@ -1482,7 +1672,7 @@ msgstr "Oppdater katalog – synkroniser han med kjeldene"
 msgid "Toggled if selected string has fuzzy translation"
 msgstr "Brukt ved uklar omsetjing"
 
-msgid "Show or hide the sidebar."
+msgid "Show or hide the sidebar"
 msgstr ""
 
 #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer.
@@ -1494,6 +1684,9 @@ msgid ""
 "translation corresponds to."
 msgstr ""
 
+msgid "Notes for translators:"
+msgstr ""
+
 msgid "Add comment"
 msgstr ""
 
@@ -1566,14 +1759,21 @@ msgstr ""
 msgid "Open an existing PO file and edit the translation."
 msgstr ""
 
-msgid "Create new translation"
-msgstr ""
-
 msgid ""
 "Take an existing PO file or POT template and create a new translation from "
 "it."
 msgstr ""
 
+msgid "Collaborate on a translation with Crowdin"
+msgstr ""
+
+msgid ""
+"Download a file from Crowdin project, translate and sync your changes back."
+msgstr ""
+
+msgid "What is Crowdin?"
+msgstr ""
+
 msgid "There are no translations. That’s unusual."
 msgstr ""
 
@@ -1606,3 +1806,9 @@ msgstr ""
 
 msgid "Configure source code extraction in Properties."
 msgstr ""
+
+msgid "Sync"
+msgstr ""
+
+msgid "Synchronize the translation with Crowdin"
+msgstr ""
diff --git a/locales/pa.mo b/locales/pa.mo
index 99338f3..4ec6ff3 100644
Binary files a/locales/pa.mo and b/locales/pa.mo differ
diff --git a/locales/pa.po b/locales/pa.po
index fe3e976..aa68a5a 100644
--- a/locales/pa.po
+++ b/locales/pa.po
@@ -2,8 +2,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: poedit\n"
 "Report-Msgid-Bugs-To: help at poedit.net\n"
-"POT-Creation-Date: 2015-01-10 16:00+0100\n"
-"PO-Revision-Date: 2015-03-10 12:33-0400\n"
+"POT-Creation-Date: 2015-05-27 11:31+0200\n"
+"PO-Revision-Date: 2015-05-27 05:17-0400\n"
 "Last-Translator: vslavik <vaclav at slavik.io>\n"
 "Language-Team: Punjabi\n"
 "Language: pa_IN\n"
@@ -82,6 +82,15 @@ msgstr ""
 msgid "Error saving catalog"
 msgstr "ਕੈਟਾਲਾਗ ਸੰਭਾਲਣ ਦੌਰਾਨ ਗਲਤੀ"
 
+msgid "PO Translation Files"
+msgstr "PO ਅਨੁਵਾਦ ਫਾਈਲਾਂ"
+
+msgid "POT Translation Templates"
+msgstr ""
+
+msgid "All Translation Files"
+msgstr ""
+
 msgid "Merging differences..."
 msgstr "ਅੰਤਰ ਵਿਲੀਨ ਕੀਤਾ ਜਾ ਰਹੇ ਹਨ..."
 
@@ -101,6 +110,83 @@ msgstr "ਭਾਸ਼ਾ ਚੋਣ"
 msgid "You must restart Poedit for this change to take effect."
 msgstr "ਤੁਹਾਨੂੰ ਤਬਦੀਲੀਆਂ ਲਾਗੂ ਕਰਨ ਲਈ ਪੋਆਡਿਟ ਮੁੜ ਚਾਲੂ ਕਰਨਾ ਪਵੇਗਾ।"
 
+msgid "Downloading translations is disabled in this project."
+msgstr ""
+
+msgid "Not authorized, please sign in again."
+msgstr ""
+
+msgid "Sign in to Crowdin"
+msgstr ""
+
+msgid ""
+"Crowdin is an online localization management platform and collaborative "
+"translation tool. Poedit can seamlessly sync PO files managed at Crowdin."
+msgstr ""
+
+msgid "Sign In"
+msgstr ""
+
+msgid "Sign in"
+msgstr ""
+
+msgid "Sign Out"
+msgstr ""
+
+msgid "Sign out"
+msgstr ""
+
+msgid "Waiting for authentication…"
+msgstr ""
+
+msgid "Updating user information…"
+msgstr ""
+
+msgid "Signed in as:"
+msgstr ""
+
+msgid "Learn More About Crowdin"
+msgstr ""
+
+msgid "Learn more about Crowdin"
+msgstr ""
+
+msgid "Open Crowdin translation"
+msgstr ""
+
+msgid "Project:"
+msgstr ""
+
+msgid "Language:"
+msgstr "ਭਾਸ਼ਾ:"
+
+msgid "File:"
+msgstr ""
+
+msgid "No translation projects listed in your Crowdin account."
+msgstr ""
+
+msgid "This project has no files that can be translated in Poedit."
+msgstr ""
+
+msgid "This file can only be edited in Crowdin’s web interface."
+msgstr ""
+
+msgid "Downloading latest translations…"
+msgstr ""
+
+msgid "Syncing with Crowdin"
+msgstr ""
+
+msgid "Syncing with Crowdin failed."
+msgstr ""
+
+msgid "Crowdin error"
+msgstr ""
+
+msgid "Uploading translations…"
+msgstr ""
+
 msgid "&Copy"
 msgstr "ਕਾਪੀ ਕਰੋ(&C)"
 
@@ -145,6 +231,12 @@ msgstr ""
 msgid "don't delete temporary files (for debugging)"
 msgstr ""
 
+msgid "handle a poedit:// URI"
+msgstr ""
+
+msgid "Failed to communicate with Poedit process."
+msgstr ""
+
 #, c-format
 msgid "Unhandled exception occurred: %s"
 msgstr ""
@@ -155,12 +247,6 @@ msgstr ""
 msgid "Open catalog"
 msgstr "ਕੈਟਾਲਾਗ ਖੋਲ੍ਹੋ"
 
-msgid "All Files"
-msgstr "ਸਭ ਫਾਈਲਾਂ"
-
-msgid "PO Translation Files"
-msgstr "PO ਅਨੁਵਾਦ ਫਾਈਲਾਂ"
-
 #, c-format
 msgid "File '%s' doesn't exist."
 msgstr "ਫਾਇਲ '%s' ਮੌਜੂਦ ਨਹੀਂ ਹੈ।"
@@ -280,7 +366,7 @@ msgid "Bring All to Front"
 msgstr "ਸਭ ਤੋਂ ਅੱਗੇ ਲਿਆਓ"
 
 msgid "PO Translation"
-msgstr ""
+msgstr "PO ਅਨੁਵਾਦ"
 
 msgid "The file cannot be opened."
 msgstr "ਫਾਈਲ ਨੂੰ ਖੋਲ੍ਹਿਆ ਨਹੀਂ ਜਾ ਸਕਦਾ ਹੈ।"
@@ -325,7 +411,7 @@ msgstr "ਸਭ ਚੁਣੋ"
 #. TRANSLATORS: Keyboard shortcut for display in Windows menus
 #. TRANSLATORS: This is the key shortcut used in menus on Windows, some languages call them differently
 msgid "Ctrl+"
-msgstr ""
+msgstr "Ctrl+"
 
 #. TRANSLATORS: Keyboard shortcut for display in Windows menus
 #. TRANSLATORS: This is the key shortcut used in menus on Windows, some languages call them differently
@@ -334,31 +420,31 @@ msgstr ""
 
 #. TRANSLATORS: Keyboard shortcut for display in Windows menus
 msgid "Shift+"
-msgstr ""
+msgstr "Shift+"
 
 #. TRANSLATORS: Keyboard shortcut for display in Windows menus
 msgid "Enter"
-msgstr ""
+msgstr "Enter"
 
 #. TRANSLATORS: Keyboard shortcut for display in Windows menus
 msgid "Up"
-msgstr ""
+msgstr "Up"
 
 #. TRANSLATORS: Keyboard shortcut for display in Windows menus
 msgid "Down"
-msgstr ""
+msgstr "Down"
 
 #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+"
 msgid "ctrl"
-msgstr ""
+msgstr "ctrl"
 
 #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+"
 msgid "alt"
-msgstr ""
+msgstr "alt"
 
 #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+"
 msgid "shift"
-msgstr ""
+msgstr "shift"
 
 msgid "You can't drop more than one file on Poedit window."
 msgstr "ਤੁਸੀ ਪੋਆਡਿਟ ਵਿੰਡੋ ਵਿਚ ਇਕ ਤੋਂ ਵੱਧ ਫਾਇਲ ਸੁੱਟ ਨਹੀ ਸਕਦੇ ਹੋ।"
@@ -388,6 +474,17 @@ msgstr "ਬਹੁ-ਵਚਨ:"
 msgid "Translation:"
 msgstr "ਅਨੁਵਾਦ:"
 
+msgid ""
+"POT files are only templates and don’t contain any translations themselves.\n"
+"To make a translation, create a new PO file based on the template."
+msgstr ""
+
+msgid "Create New Translation"
+msgstr ""
+
+msgid "Create new translation"
+msgstr "ਨਵਾਂ ਅਨੁਵਾਦ ਬਣਾਓ"
+
 #. TRANSLATORS: %s is language name in its basic form (as you
 #. would see e.g. in a list of supported languages). You may need
 #. to rephrase it, e.g. to an equivalent of "for language %s".
@@ -435,9 +532,6 @@ msgstr "HTML ਫਾਈਲਾਂ"
 msgid "Open catalog template"
 msgstr "ਕੈਟਾਲਾਗ ਟੈਪਲੇਟ ਖੋਲ੍ਹੋ"
 
-msgid "POT Translation Templates"
-msgstr ""
-
 msgid "Updating catalog"
 msgstr "ਕੈਟਾਲਾਗ ਅੱਪਡੇਟ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ"
 
@@ -506,16 +600,18 @@ msgstr[1] ""
 msgid "The translation is ready for use."
 msgstr ""
 
-msgid "No references to this string found."
-msgstr "ਇਸ ਸਤਰ ਲਈ ਕੋਈ ਹਵਾਲਾ ਨਹੀਂ ਹੈ।"
-
-msgid "Please choose the reference you want to show:"
-msgstr "ਜੋ ਹਵਾਲਾ ਤੁਸੀਂ ਵੇਖਣਾ ਚਾਹੁੰਦੇ ਹੋ, ਉਹ ਚੁਣੋ:"
+msgid "Context:"
+msgstr ""
 
-msgid "References"
-msgstr "ਹਵਾਲਾ"
+#, c-format
+msgid "Poedit automatically fixed invalid content in the file “%s”."
+msgstr ""
 
-msgid "Context:"
+msgid ""
+"The file contained duplicate items, which is not allowed in PO files and "
+"would prevent the file from being used. Poedit fixed the issue, but you "
+"should review translations of any items marked as fuzzy and correct them if "
+"necessary."
 msgstr ""
 
 msgid "Language of the translation isn't set."
@@ -527,6 +623,21 @@ msgstr "ਭਾਸ਼ਾ ਦਿਓ"
 msgid "Set language"
 msgstr "ਭਾਸ਼ਾ ਦਿਓ"
 
+#. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)."
+msgid ""
+"Suggestions are not available if the translation language is not set "
+"correctly. Other features, such as plural forms, may be affected as well."
+msgstr ""
+
+msgid "Language of the translation is the same as source language."
+msgstr ""
+
+msgid "Fix Language"
+msgstr ""
+
+msgid "Fix language"
+msgstr ""
+
 msgid ""
 "This catalog has entries with plural forms, but doesn't have Plural-Forms "
 "header configured."
@@ -557,6 +668,7 @@ msgstr ""
 msgid "Plural forms expression used by the catalog is unusual for %s."
 msgstr ""
 
+#. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the catalog is unusual for %s.")"
 msgid "Review"
 msgstr "ਪੜਤਾਲ"
 
@@ -578,6 +690,12 @@ msgid_plural "%d errors"
 msgstr[0] "%d ਗਲਤੀ"
 msgstr[1] "%d ਗਲਤੀਆਂ"
 
+#, c-format
+msgid "%d entry"
+msgid_plural "%d entries"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid " (unsaved)"
 msgstr " (ਨਾ-ਸੰਭਾਲਿਆ)"
 
@@ -691,6 +809,9 @@ msgstr "ਹਰ ਚੀਜ਼"
 msgid "Form %i"
 msgstr "ਫਾਰਮ %i"
 
+msgid "Singular"
+msgstr ""
+
 msgid "Zero"
 msgstr "ਸਿਫ਼ਰ"
 
@@ -700,6 +821,9 @@ msgstr "ਇੱਕ"
 msgid "Two"
 msgstr "ਦੋ"
 
+msgid "Plural"
+msgstr ""
+
 msgid "Other"
 msgstr "ਹੋਰ"
 
@@ -728,6 +852,12 @@ msgstr "ਬਾਹੀ ਓਹਲੇ ਕਰੋ"
 msgid "Show Sidebar"
 msgstr "ਬਾਹੀ ਵੇਖਾਓ"
 
+msgid "Hide Status Bar"
+msgstr ""
+
+msgid "Show Status Bar"
+msgstr ""
+
 msgid "Source text"
 msgstr "ਸਰੋਤ ਪਾਠ"
 
@@ -737,6 +867,10 @@ msgstr "ਅਨੁਵਾਦ"
 msgid "ID"
 msgstr "ਆਈਡੀ"
 
+#, c-format
+msgid "Source text — %s"
+msgstr ""
+
 msgid "unknown language"
 msgstr "ਅਣਜਾਣ ਭਾਸ਼ਾ"
 
@@ -747,57 +881,73 @@ msgstr "ਅਨੁਵਾਦ — %s"
 msgid "Error:"
 msgstr "ਗਲਤੀ:"
 
-msgid "Project info"
-msgstr "ਪ੍ਰੋਜੈਕਟ ਜਾਣਕਾਰੀ"
+msgid "Source file"
+msgstr "ਸਰੋਤ ਫਾਇਲ"
 
-msgid "Project name and version:"
-msgstr "ਪ੍ਰੋਜੈਕਟ ਨਾਂ ਅਤੇ ਵਰਜਨ :"
+msgid "Source file occurrence:"
+msgstr "ਸਰੋਤ ਫ਼ਾਈਲ ਮੌਜੂਦਗੀ:"
 
-msgid "Language:"
-msgstr "ਭਾਸ਼ਾ:"
+msgid "Open in Editor"
+msgstr "ਐਡੀਟਰ ਵਿੱਚ ਖੋਲ੍ਹੋ"
 
-msgid "Team:"
-msgstr "ਟੀਮ: "
+msgid "Open in editor"
+msgstr "ਐਡੀਟਰ ਵਿੱਚ ਖੋਲ੍ਹੋ"
 
-msgid "Team's email address:"
-msgstr "ਟੀਮ ਦਾ ਈ-ਮੇਲ ਐਡਰੈੱਸ:"
+msgid "No references for the selected item."
+msgstr ""
 
-msgid "Charset:"
-msgstr "ਅੱਖਰ-ਸੈਟ :"
+#, c-format
+msgid "Error opening file %s!"
+msgstr "ਫਾਇਲ %s ਖੋਲ੍ਹਣ ਦੌਰਾਨ ਗਲਤੀ!"
 
-msgid "Source"
-msgstr "ਸਰੋਤ"
+msgid "Find"
+msgstr "ਲੱਭੋ"
 
-msgid "Notes"
-msgstr "ਨੋਟਿਸ"
+msgid "Replace"
+msgstr ""
 
-msgid "Automatic translation"
-msgstr "ਆਟੋਮੈਟਿਕ ਅਨੁਵਾਦ"
+#. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.)
+msgid "Options"
+msgstr ""
 
-msgid "Fuzzy translation"
-msgstr "ਅਸਪਸ਼ਟ ਅਨੁਵਾਦ"
+msgid "Ignore case"
+msgstr ""
 
-msgid "Notes for translators:"
-msgstr "ਅਨੁਵਾਦਕਾਂ ਲਈ ਸੂਚਨਾ:"
+msgid "Wrap around"
+msgstr ""
 
-msgid "Comment:"
-msgstr "ਟਿੱਪਣੀ:"
+msgid "Whole words only"
+msgstr "ਪੂਰੇ ਸ਼ਬਦ ਹੀ"
 
-msgid "Source file"
-msgstr "ਸਰੋਤ ਫਾਇਲ"
+msgid "Find in source texts"
+msgstr ""
 
-msgid "Source file occurrence:"
-msgstr "ਸਰੋਤ ਫ਼ਾਈਲ ਮੌਜੂਦਗੀ:"
+msgid "Find in translations"
+msgstr "ਅਨੁਵਾਦ ਵਿੱਚ ਲੱਭੋ"
 
-msgid "Open in Editor"
-msgstr "ਐਡੀਟਰ ਵਿੱਚ ਖੋਲ੍ਹੋ"
+msgid "Find in comments"
+msgstr "ਟਿੱਪਣੀ ਵਿੱਚ ਖੋਜ"
 
-msgid "Open in editor"
-msgstr "ਐਡੀਟਰ ਵਿੱਚ ਖੋਲ੍ਹੋ"
+msgid "Close"
+msgstr "ਬੰਦ ਕਰੋ"
 
-#, c-format
-msgid "Error opening file %s!"
-msgstr "ਫਾਇਲ %s ਖੋਲ੍ਹਣ ਦੌਰਾਨ ਗਲਤੀ!"
+msgid "Replace All"
+msgstr ""
+
+msgid "Replace all"
+msgstr ""
+
+msgid "< &Previous"
+msgstr "< ਪਿੱਛੇ(&P)"
+
+msgid "&Next >"
+msgstr "ਅੱਗੇ(&N) >"
+
+msgid "String to find"
+msgstr ""
+
+msgid "Replacement string"
+msgstr ""
 
 #, c-format
 msgid "Cannot execute program: %s"
@@ -989,9 +1139,19 @@ msgstr "ਨਵਾਂ"
 msgid "Edit"
 msgstr "ਸੋਧ"
 
+msgid "Delete extractor"
+msgstr ""
+
+#, c-format
+msgid "Are you sure you want to delete the “%s” extractor?"
+msgstr ""
+
 msgid "Extractors"
 msgstr ""
 
+msgid "Accounts"
+msgstr ""
+
 msgid "Automatically check for updates"
 msgstr "ਆਟੋਮੈਟਿਕ ਅੱਪਡੇਟ ਲਈ ਜਾਂਚ ਕਰੋ"
 
@@ -1030,8 +1190,35 @@ msgstr ""
 msgid "Advanced"
 msgstr "ਤਕਨੀਕੀ"
 
-msgid "Additional keywords"
-msgstr "ਵਾਧੂ ਕੀਵਰਡ"
+msgid ""
+"<big>Drag and Drop Folders Here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+
+msgid ""
+"<big>Drag and drop folders here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+
+msgid "Add Folders..."
+msgstr ""
+
+msgid "Add folders..."
+msgstr ""
+
+msgid "Add Files..."
+msgstr ""
+
+msgid "Add files..."
+msgstr ""
+
+msgid "Add Wildcard..."
+msgstr ""
+
+msgid "Add wildcard..."
+msgstr ""
 
 msgid "Paths"
 msgstr "ਮਾਰਗ"
@@ -1039,6 +1226,9 @@ msgstr "ਮਾਰਗ"
 msgid "Excluded paths"
 msgstr ""
 
+msgid "Additional keywords"
+msgstr "ਵਾਧੂ ਕੀਵਰਡ"
+
 msgid "Name of the project the translation is for"
 msgstr "ਅਨੁਵਾਦ ਦੇ ਪ੍ਰੋਜੈਕਟ ਦਾ ਨਾਂ"
 
@@ -1051,6 +1241,9 @@ msgstr "UTF-8 (ਸਿਫਾਰਸ਼ੀ)"
 msgid "Please save the file first. This section cannot be edited until then."
 msgstr ""
 
+msgid "Comment:"
+msgstr "ਟਿੱਪਣੀ:"
+
 msgid "OK"
 msgstr "ਠੀਕ ਹੈ"
 
@@ -1060,42 +1253,6 @@ msgstr "ਸਾਫ਼ ਕਰੋ(&l)"
 msgid "Clear the comment"
 msgstr "ਟਿੱਪਣੀ ਸਾਫ਼ ਕਰੋ"
 
-msgid "Find..."
-msgstr "ਖੋਜ...."
-
-msgid "String to find:"
-msgstr "ਲੱਭਣ ਲਈ ਸਤਰ:"
-
-msgid "Case sensitive"
-msgstr "ਅੱਖਰ ਆਕਾਰ ਨਿਰਭਰ"
-
-msgid "Start from the first item"
-msgstr "ਪਹਿਲੀ ਇਕਾਈ ਤੋਂ ਚਾਲੂ ਕਰੋ"
-
-msgid "Whole words only"
-msgstr "ਪੂਰੇ ਸ਼ਬਦ ਹੀ"
-
-msgid "Find in original strings"
-msgstr "ਅਸਲੀ ਲਾਈਨਾਂ ਵਿਚ ਲੱਭੋ"
-
-msgid "Find in translations"
-msgstr "ਅਨੁਵਾਦ ਵਿੱਚ ਲੱਭੋ"
-
-msgid "Find in comments"
-msgstr "ਟਿੱਪਣੀ ਵਿੱਚ ਖੋਜ"
-
-msgid "Find in automatic comments"
-msgstr "ਆਟੋਮੈਟਿਕ ਟਿੱਪਣੀ ਵਿੱਚ ਲੱਭੋ"
-
-msgid "Close"
-msgstr "ਬੰਦ ਕਰੋ"
-
-msgid "< &Previous"
-msgstr "< ਪਿੱਛੇ(&P)"
-
-msgid "&Next >"
-msgstr "ਅੱਗੇ(&N) >"
-
 msgid "Create new translations project"
 msgstr "ਨਵਾਂ ਭਾਸ਼ਾ ਅਨੁਵਾਦ ਪ੍ਰੋਜੈਕਟ ਬਣਾਓ"
 
@@ -1150,6 +1307,12 @@ msgstr "ਖੋਲ੍ਹੋ(&O)..."
 msgid "Open Recent"
 msgstr "ਤਾਜ਼ਾ ਖੋਲ੍ਹੇ"
 
+msgid "Open from Crowdin..."
+msgstr ""
+
+msgid "Open From Crowdin..."
+msgstr ""
+
 msgid "&Save"
 msgstr "ਸੰਭਾਲੋ(&S)"
 
@@ -1198,14 +1361,17 @@ msgstr "ਹਵਾਲs ਵੇਖੋ(&S)"
 msgid "&Find..."
 msgstr "ਖੋਜ(&F)..."
 
+msgid "Replace..."
+msgstr ""
+
 msgid "Find next"
 msgstr "ਅੱਗੇ ਲੱਭੋ"
 
 msgid "Find previous"
 msgstr "ਪਿੱਛੇ ਲੱਭੋ"
 
-msgid "Find"
-msgstr "ਲੱਭੋ"
+msgid "Find and Replace..."
+msgstr ""
 
 msgid "Find Next"
 msgstr "ਅੱਗੇ ਲੱਭੋ"
@@ -1246,6 +1412,12 @@ msgstr ""
 msgid "&Group By Context"
 msgstr ""
 
+msgid "Entries with errors first"
+msgstr ""
+
+msgid "Entries with Errors First"
+msgstr ""
+
 msgid "&Untranslated entries first"
 msgstr "ਗ਼ੈਰ-ਅਨੁਵਾਦ ਐਂਟਰੀਆਂ ਪਹਿਲਾਂ(&U)"
 
@@ -1255,6 +1427,9 @@ msgstr "ਗ਼ੈਰ-ਅਨੁਵਾਦ ਐਂਟਰੀਆਂ ਪਹਿਲਾਂ
 msgid "Show sidebar"
 msgstr "ਬਾਹੀ ਵੇਖਾਓ"
 
+msgid "Show status bar"
+msgstr ""
+
 msgid "C&atalog"
 msgstr "ਕੈਟਾਲਾਗ(&a)"
 
@@ -1270,6 +1445,9 @@ msgstr "&POT ਫਾਇਲ ਤੋਂ ਅੱਪਡੇਟ..."
 msgid "Update from &POT File..."
 msgstr "&POT ਫਾਇਲ ਤੋਂ ਅੱਪਡੇਟ ਕਰੋ..."
 
+msgid "Sync with Crowdin"
+msgstr ""
+
 msgid "Fill missing translations from &TM..."
 msgstr "...ਗ਼ੈਰ-ਮੌਜੂਦ ਅਨੁਵਾਦ ਨੂੰ &TM ਰਾਹੀਂ ਭਰੋ"
 
@@ -1393,6 +1571,9 @@ msgstr ""
 msgid "Catalog properties"
 msgstr "ਕੈਟਾਲਾਗ ਵਿਸ਼ੇਸ਼ਤਾ"
 
+msgid "Project name and version:"
+msgstr "ਪ੍ਰੋਜੈਕਟ ਨਾਂ ਅਤੇ ਵਰਜਨ :"
+
 msgid "Plural Forms:"
 msgstr "ਬਹੁ-ਵਚਨ ਫਾਰਮ:"
 
@@ -1405,17 +1586,29 @@ msgstr ""
 msgid "Learn about plural forms"
 msgstr ""
 
+msgid "Charset:"
+msgstr "ਅੱਖਰ-ਸੈਟ :"
+
+msgid "Team:"
+msgstr "ਟੀਮ: "
+
+msgid "Team's email address:"
+msgstr "ਟੀਮ ਦਾ ਈ-ਮੇਲ ਐਡਰੈੱਸ:"
+
 msgid "Translation properties"
 msgstr "ਅਨੁਵਾਦ ਵਿਸ਼ੇਸ਼ਤਾ"
 
+msgid "Sources paths"
+msgstr ""
+
 msgid "Extract text from source files in the following directories:"
 msgstr ""
 
 msgid "Base path:"
 msgstr "ਮੁੱਖ ਮਾਰਗ:"
 
-msgid "Sources paths"
-msgstr ""
+msgid "Sources keywords"
+msgstr "ਸਰੋਤ ਕੀਵਰਡ"
 
 msgid ""
 "Use these keywords (function names) to recognize translatable strings\n"
@@ -1425,9 +1618,6 @@ msgstr ""
 msgid "Learn about gettext keywords"
 msgstr "gettext ਕੀਵਰਡ ਬਾਰੇ ਜਾਣੋ"
 
-msgid "Sources keywords"
-msgstr "ਸਰੋਤ ਕੀਵਰਡ"
-
 msgid "Update summary"
 msgstr "ਅੱਪਡੇਟ ਸੰਖੇਪ"
 
@@ -1475,7 +1665,7 @@ msgstr "ਕੈਟਾਲਾਗ ਅੱਪਡੇਟ- ਇਸ ਨੂੰ ਸੋਰਤ
 msgid "Toggled if selected string has fuzzy translation"
 msgstr "ਜੇਕਰ ਚੁਣੀ ਸਤਰ ਅਸਪਸ਼ਟ ਅਨੁਵਾਦ ਹੈ ਤਾਂ ਸਥਿਤੀ ਤਬਦੀਲ ਕਰੋ"
 
-msgid "Show or hide the sidebar."
+msgid "Show or hide the sidebar"
 msgstr ""
 
 #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer.
@@ -1487,6 +1677,9 @@ msgid ""
 "translation corresponds to."
 msgstr ""
 
+msgid "Notes for translators:"
+msgstr "ਅਨੁਵਾਦਕਾਂ ਲਈ ਸੂਚਨਾ:"
+
 msgid "Add comment"
 msgstr "ਟਿੱਪਣੀ ਜੋੜੋ"
 
@@ -1559,14 +1752,21 @@ msgstr "ਅਨੁਵਾਦ ਸੋਧੋ"
 msgid "Open an existing PO file and edit the translation."
 msgstr "ਮੌਜੂਦਾ PO ਫ਼ਾਈਲ ਖੋਲ੍ਹੋ ਅਤੇ ਅਨੁਵਾਦ ਨੂੰ ਸੋਧੋ।"
 
-msgid "Create new translation"
-msgstr "ਨਵਾਂ ਅਨੁਵਾਦ ਬਣਾਓ"
-
 msgid ""
 "Take an existing PO file or POT template and create a new translation from "
 "it."
 msgstr "ਮੌਜੂਦਾ PO ਫ਼ਾਈਲ ਜਾਂ POT ਨਮੂਨਾ ਲਵੋ ਅਤੇ ਉਸ ਤੋਂ ਨਵਾਂ ਅਨੁਵਾਦ ਬਣਾਉ।"
 
+msgid "Collaborate on a translation with Crowdin"
+msgstr ""
+
+msgid ""
+"Download a file from Crowdin project, translate and sync your changes back."
+msgstr ""
+
+msgid "What is Crowdin?"
+msgstr ""
+
 msgid "There are no translations. That’s unusual."
 msgstr ""
 
@@ -1599,3 +1799,9 @@ msgstr ""
 
 msgid "Configure source code extraction in Properties."
 msgstr ""
+
+msgid "Sync"
+msgstr ""
+
+msgid "Synchronize the translation with Crowdin"
+msgstr ""
diff --git a/locales/pl.mo b/locales/pl.mo
index abefd51..a898250 100644
Binary files a/locales/pl.mo and b/locales/pl.mo differ
diff --git a/locales/pl.po b/locales/pl.po
index a89a874..4e73443 100644
--- a/locales/pl.po
+++ b/locales/pl.po
@@ -2,8 +2,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: poedit\n"
 "Report-Msgid-Bugs-To: help at poedit.net\n"
-"POT-Creation-Date: 2015-01-10 16:00+0100\n"
-"PO-Revision-Date: 2015-03-10 12:33-0400\n"
+"POT-Creation-Date: 2015-05-27 11:31+0200\n"
+"PO-Revision-Date: 2015-05-27 05:17-0400\n"
 "Last-Translator: vslavik <vaclav at slavik.io>\n"
 "Language-Team: Polish\n"
 "Language: pl_PL\n"
@@ -92,6 +92,15 @@ msgstr ""
 msgid "Error saving catalog"
 msgstr "Błąd zapisywania pakietu"
 
+msgid "PO Translation Files"
+msgstr "Pliki tłumaczeń PO"
+
+msgid "POT Translation Templates"
+msgstr "Pliki szablonów tłumaczeń POT"
+
+msgid "All Translation Files"
+msgstr ""
+
 msgid "Merging differences..."
 msgstr "Łączenie różnic…"
 
@@ -111,6 +120,83 @@ msgstr "Wybór języka"
 msgid "You must restart Poedit for this change to take effect."
 msgstr "Aby zmiany zostały zastosowane, należy ponownie uruchomić Poedit."
 
+msgid "Downloading translations is disabled in this project."
+msgstr "Pobieranie tłumaczeń jest wyłączone w tym projekcie."
+
+msgid "Not authorized, please sign in again."
+msgstr ""
+
+msgid "Sign in to Crowdin"
+msgstr ""
+
+msgid ""
+"Crowdin is an online localization management platform and collaborative "
+"translation tool. Poedit can seamlessly sync PO files managed at Crowdin."
+msgstr ""
+
+msgid "Sign In"
+msgstr ""
+
+msgid "Sign in"
+msgstr ""
+
+msgid "Sign Out"
+msgstr ""
+
+msgid "Sign out"
+msgstr ""
+
+msgid "Waiting for authentication…"
+msgstr ""
+
+msgid "Updating user information…"
+msgstr ""
+
+msgid "Signed in as:"
+msgstr "Zalogowany jako:"
+
+msgid "Learn More About Crowdin"
+msgstr "Więcej informacji o platformie Crowdin"
+
+msgid "Learn more about Crowdin"
+msgstr ""
+
+msgid "Open Crowdin translation"
+msgstr ""
+
+msgid "Project:"
+msgstr "Projekt:"
+
+msgid "Language:"
+msgstr "Język:"
+
+msgid "File:"
+msgstr "Plik:"
+
+msgid "No translation projects listed in your Crowdin account."
+msgstr ""
+
+msgid "This project has no files that can be translated in Poedit."
+msgstr ""
+
+msgid "This file can only be edited in Crowdin’s web interface."
+msgstr ""
+
+msgid "Downloading latest translations…"
+msgstr ""
+
+msgid "Syncing with Crowdin"
+msgstr ""
+
+msgid "Syncing with Crowdin failed."
+msgstr ""
+
+msgid "Crowdin error"
+msgstr ""
+
+msgid "Uploading translations…"
+msgstr ""
+
 msgid "&Copy"
 msgstr "&Kopiuj"
 
@@ -157,6 +243,12 @@ msgstr ""
 msgid "don't delete temporary files (for debugging)"
 msgstr "Nie usuwaj plików tymczasowych (dla debugowania)"
 
+msgid "handle a poedit:// URI"
+msgstr ""
+
+msgid "Failed to communicate with Poedit process."
+msgstr ""
+
 #, c-format
 msgid "Unhandled exception occurred: %s"
 msgstr "Wystąpił nieobsługiwany wyjątek: %s"
@@ -167,12 +259,6 @@ msgstr "Wystąpił nieobsługiwany wyjątek."
 msgid "Open catalog"
 msgstr "Otwórz pakiet"
 
-msgid "All Files"
-msgstr "Wszystkie pliki"
-
-msgid "PO Translation Files"
-msgstr "Pliki tłumaczeń PO"
-
 #, c-format
 msgid "File '%s' doesn't exist."
 msgstr "Plik „%s” nie istnieje!"
@@ -400,6 +486,17 @@ msgstr "Liczba mnoga:"
 msgid "Translation:"
 msgstr "Tłumaczenie"
 
+msgid ""
+"POT files are only templates and don’t contain any translations themselves.\n"
+"To make a translation, create a new PO file based on the template."
+msgstr ""
+
+msgid "Create New Translation"
+msgstr ""
+
+msgid "Create new translation"
+msgstr "Utwórz nowe tłumaczenie"
+
 #. TRANSLATORS: %s is language name in its basic form (as you
 #. would see e.g. in a list of supported languages). You may need
 #. to rephrase it, e.g. to an equivalent of "for language %s".
@@ -449,9 +546,6 @@ msgstr "Pliki HTML"
 msgid "Open catalog template"
 msgstr "Otwórz szablon pakietu"
 
-msgid "POT Translation Templates"
-msgstr "Pliki szablonów tłumaczeń POT"
-
 msgid "Updating catalog"
 msgstr "Aktualizowanie pakietu…"
 
@@ -540,18 +634,20 @@ msgstr[2] ""
 msgid "The translation is ready for use."
 msgstr "Tłumaczenie jest gotowe do użycia."
 
-msgid "No references to this string found."
-msgstr "Nie znaleziono odwołania do tego tekstu."
-
-msgid "Please choose the reference you want to show:"
-msgstr "Wybierz odwołanie, które chcesz wyświetlić:"
-
-msgid "References"
-msgstr "Odwołania"
-
 msgid "Context:"
 msgstr "Kontekst:"
 
+#, c-format
+msgid "Poedit automatically fixed invalid content in the file “%s”."
+msgstr ""
+
+msgid ""
+"The file contained duplicate items, which is not allowed in PO files and "
+"would prevent the file from being used. Poedit fixed the issue, but you "
+"should review translations of any items marked as fuzzy and correct them if "
+"necessary."
+msgstr ""
+
 msgid "Language of the translation isn't set."
 msgstr "Nie określono języka tłumaczenia."
 
@@ -561,6 +657,21 @@ msgstr "Wybierz język"
 msgid "Set language"
 msgstr "Wybierz język"
 
+#. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)."
+msgid ""
+"Suggestions are not available if the translation language is not set "
+"correctly. Other features, such as plural forms, may be affected as well."
+msgstr ""
+
+msgid "Language of the translation is the same as source language."
+msgstr ""
+
+msgid "Fix Language"
+msgstr ""
+
+msgid "Fix language"
+msgstr ""
+
 msgid ""
 "This catalog has entries with plural forms, but doesn't have Plural-Forms "
 "header configured."
@@ -595,6 +706,7 @@ msgstr "Napraw nagłówek"
 msgid "Plural forms expression used by the catalog is unusual for %s."
 msgstr "W języku %s formy liczby mnogiej zawarte w pakiecie nie są używane."
 
+#. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the catalog is unusual for %s.")"
 msgid "Review"
 msgstr "Do sprawdzenia"
 
@@ -617,6 +729,13 @@ msgstr[0] "%d błąd"
 msgstr[1] "%d błędy"
 msgstr[2] "%d błędów"
 
+#, c-format
+msgid "%d entry"
+msgid_plural "%d entries"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+
 msgid " (unsaved)"
 msgstr " (niezapisany)"
 
@@ -744,6 +863,9 @@ msgstr "Wszystko"
 msgid "Form %i"
 msgstr "Forma %i"
 
+msgid "Singular"
+msgstr "Liczba pojedyncza"
+
 msgid "Zero"
 msgstr "Zero"
 
@@ -753,6 +875,9 @@ msgstr "Jeden"
 msgid "Two"
 msgstr "Dwa"
 
+msgid "Plural"
+msgstr "Liczba mnoga"
+
 msgid "Other"
 msgstr "Inne"
 
@@ -781,6 +906,12 @@ msgstr "Ukryj pasek boczny"
 msgid "Show Sidebar"
 msgstr "Pokaż pasek boczny"
 
+msgid "Hide Status Bar"
+msgstr ""
+
+msgid "Show Status Bar"
+msgstr ""
+
 msgid "Source text"
 msgstr "Tekst źródłowy"
 
@@ -790,6 +921,10 @@ msgstr "Tłumaczenie"
 msgid "ID"
 msgstr "ID"
 
+#, c-format
+msgid "Source text — %s"
+msgstr ""
+
 msgid "unknown language"
 msgstr "Nieznany język"
 
@@ -800,57 +935,73 @@ msgstr "Tłumaczenie – %s"
 msgid "Error:"
 msgstr "Błąd:"
 
-msgid "Project info"
-msgstr "Informacje o projekcie"
+msgid "Source file"
+msgstr "Plik źródłowy"
 
-msgid "Project name and version:"
-msgstr "Nazwa pakietu i wersja:"
+msgid "Source file occurrence:"
+msgstr "Występowanie pliku źródłowego:"
 
-msgid "Language:"
-msgstr "Język:"
+msgid "Open in Editor"
+msgstr "Otwórz w edytorze"
 
-msgid "Team:"
-msgstr "Zespół:"
+msgid "Open in editor"
+msgstr "Otwórz w edytorze"
 
-msgid "Team's email address:"
-msgstr "Adres e-mail zespołu:"
+msgid "No references for the selected item."
+msgstr ""
 
-msgid "Charset:"
-msgstr "Kodowanie:"
+#, c-format
+msgid "Error opening file %s!"
+msgstr "Błąd podczas otwierania pliku %s!"
 
-msgid "Source"
-msgstr "Źródło"
+msgid "Find"
+msgstr "Znajdź"
 
-msgid "Notes"
-msgstr "Notatki"
+msgid "Replace"
+msgstr ""
 
-msgid "Automatic translation"
-msgstr "Automatyczne tłumaczenie"
+#. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.)
+msgid "Options"
+msgstr ""
 
-msgid "Fuzzy translation"
-msgstr "Tłumaczenie niepewne"
+msgid "Ignore case"
+msgstr ""
 
-msgid "Notes for translators:"
-msgstr "Informacje dla tłumaczy"
+msgid "Wrap around"
+msgstr ""
 
-msgid "Comment:"
-msgstr "Komentarz"
+msgid "Whole words only"
+msgstr "Tylko całe wyrazy"
 
-msgid "Source file"
-msgstr "Plik źródłowy"
+msgid "Find in source texts"
+msgstr ""
 
-msgid "Source file occurrence:"
-msgstr "Występowanie pliku źródłowego:"
+msgid "Find in translations"
+msgstr "Szukaj w tłumaczeniach"
 
-msgid "Open in Editor"
-msgstr "Otwórz w edytorze"
+msgid "Find in comments"
+msgstr "Szukaj w komentarzach"
 
-msgid "Open in editor"
-msgstr "Otwórz w edytorze"
+msgid "Close"
+msgstr "Za&mknij"
 
-#, c-format
-msgid "Error opening file %s!"
-msgstr "Błąd podczas otwierania pliku %s!"
+msgid "Replace All"
+msgstr ""
+
+msgid "Replace all"
+msgstr ""
+
+msgid "< &Previous"
+msgstr "« &Poprzednie"
+
+msgid "&Next >"
+msgstr "&Następne »"
+
+msgid "String to find"
+msgstr ""
+
+msgid "Replacement string"
+msgstr ""
 
 #, c-format
 msgid "Cannot execute program: %s"
@@ -1056,9 +1207,19 @@ msgstr "Nowy"
 msgid "Edit"
 msgstr "Edytuj"
 
+msgid "Delete extractor"
+msgstr ""
+
+#, c-format
+msgid "Are you sure you want to delete the “%s” extractor?"
+msgstr ""
+
 msgid "Extractors"
 msgstr "Wyodrębnianie"
 
+msgid "Accounts"
+msgstr "Konta"
+
 msgid "Automatically check for updates"
 msgstr "Automatycznie sprawdzaj uaktualnienia"
 
@@ -1101,8 +1262,35 @@ msgstr "Zachowaj formatowanie istniejących plików"
 msgid "Advanced"
 msgstr "Zaawansowane"
 
-msgid "Additional keywords"
-msgstr "Dodatkowe słowa kluczowe"
+msgid ""
+"<big>Drag and Drop Folders Here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+
+msgid ""
+"<big>Drag and drop folders here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+
+msgid "Add Folders..."
+msgstr ""
+
+msgid "Add folders..."
+msgstr ""
+
+msgid "Add Files..."
+msgstr ""
+
+msgid "Add files..."
+msgstr ""
+
+msgid "Add Wildcard..."
+msgstr ""
+
+msgid "Add wildcard..."
+msgstr ""
 
 msgid "Paths"
 msgstr "Ścieżki"
@@ -1110,6 +1298,9 @@ msgstr "Ścieżki"
 msgid "Excluded paths"
 msgstr "Ścieżki wykluczone"
 
+msgid "Additional keywords"
+msgstr "Dodatkowe słowa kluczowe"
+
 msgid "Name of the project the translation is for"
 msgstr "Nazwa projektu tłumaczenia jest dla"
 
@@ -1123,6 +1314,9 @@ msgid "Please save the file first. This section cannot be edited until then."
 msgstr ""
 "Zapisz najpierw plik. Przed zapisaniem pliku nie można edytować tej sekcji."
 
+msgid "Comment:"
+msgstr "Komentarz"
+
 msgid "OK"
 msgstr "OK"
 
@@ -1132,42 +1326,6 @@ msgstr "&Wyczyść"
 msgid "Clear the comment"
 msgstr "Wyczyść komentarz"
 
-msgid "Find..."
-msgstr "Szukaj…"
-
-msgid "String to find:"
-msgstr "Szukany tekst:"
-
-msgid "Case sensitive"
-msgstr "Uwzględnij wielkość znaków"
-
-msgid "Start from the first item"
-msgstr "Rozpocznij od pierwszego elementu"
-
-msgid "Whole words only"
-msgstr "Tylko całe wyrazy"
-
-msgid "Find in original strings"
-msgstr "Szukaj w tekście oryginału"
-
-msgid "Find in translations"
-msgstr "Szukaj w tłumaczeniach"
-
-msgid "Find in comments"
-msgstr "Szukaj w komentarzach"
-
-msgid "Find in automatic comments"
-msgstr "Szukaj w automatycznych komentarzach"
-
-msgid "Close"
-msgstr "Za&mknij"
-
-msgid "< &Previous"
-msgstr "« &Poprzednie"
-
-msgid "&Next >"
-msgstr "&Następne »"
-
 msgid "Create new translations project"
 msgstr "Utwórz nowy projekt tłumaczeń"
 
@@ -1220,7 +1378,13 @@ msgid "&Open..."
 msgstr "&Otwórz…"
 
 msgid "Open Recent"
-msgstr "Otwórz najnowsze"
+msgstr "Ostatnio otwierane"
+
+msgid "Open from Crowdin..."
+msgstr ""
+
+msgid "Open From Crowdin..."
+msgstr ""
 
 msgid "&Save"
 msgstr "&Zapisz"
@@ -1270,14 +1434,17 @@ msgstr "&Wyświetl odwołania"
 msgid "&Find..."
 msgstr "&Znajdź…"
 
+msgid "Replace..."
+msgstr ""
+
 msgid "Find next"
 msgstr "Znajdź następne"
 
 msgid "Find previous"
 msgstr "Znajdź poprzednie"
 
-msgid "Find"
-msgstr "Znajdź"
+msgid "Find and Replace..."
+msgstr ""
 
 msgid "Find Next"
 msgstr "Znajdź następne"
@@ -1318,6 +1485,12 @@ msgstr "&Grupuj wg kontekstu"
 msgid "&Group By Context"
 msgstr "&Grupuj wg kontekstu"
 
+msgid "Entries with errors first"
+msgstr ""
+
+msgid "Entries with Errors First"
+msgstr ""
+
 msgid "&Untranslated entries first"
 msgstr "&Nieprzetłumaczone na górze"
 
@@ -1327,6 +1500,9 @@ msgstr "&Nieprzetłumaczone na górze"
 msgid "Show sidebar"
 msgstr "Pokaż pasek boczny"
 
+msgid "Show status bar"
+msgstr ""
+
 msgid "C&atalog"
 msgstr "&Projekt"
 
@@ -1342,6 +1518,9 @@ msgstr "Akt&ualizuj z pliku .pot…"
 msgid "Update from &POT File..."
 msgstr "Akt&ualizuj z pliku .pot…"
 
+msgid "Sync with Crowdin"
+msgstr ""
+
 msgid "Fill missing translations from &TM..."
 msgstr "Uzupełnij brakujące tłumaczenia z pamięci &tłumaczeniowej..."
 
@@ -1470,6 +1649,9 @@ msgstr ""
 msgid "Catalog properties"
 msgstr "Właściwości pakietu"
 
+msgid "Project name and version:"
+msgstr "Nazwa pakietu i wersja:"
+
 msgid "Plural Forms:"
 msgstr "Formy liczby mnogiej:"
 
@@ -1482,17 +1664,29 @@ msgstr "Użyj własnych wyrażeń"
 msgid "Learn about plural forms"
 msgstr "Informacje o formach liczby mnogiej"
 
+msgid "Charset:"
+msgstr "Kodowanie:"
+
+msgid "Team:"
+msgstr "Zespół:"
+
+msgid "Team's email address:"
+msgstr "Adres e-mail zespołu:"
+
 msgid "Translation properties"
 msgstr "Właściwości tłumaczenia"
 
+msgid "Sources paths"
+msgstr "Ścieżki źródeł"
+
 msgid "Extract text from source files in the following directories:"
 msgstr "Wyodrębniaj tekst z plików źródłowych do następujących katalogów:"
 
 msgid "Base path:"
 msgstr "Ścieżka podstawowa:"
 
-msgid "Sources paths"
-msgstr "Ścieżki źródeł"
+msgid "Sources keywords"
+msgstr "Źródła słów kluczowych"
 
 msgid ""
 "Use these keywords (function names) to recognize translatable strings\n"
@@ -1504,9 +1698,6 @@ msgstr ""
 msgid "Learn about gettext keywords"
 msgstr "Informacje o słowach kluczowych gettextu"
 
-msgid "Sources keywords"
-msgstr "Źródła słów kluczowych"
-
 msgid "Update summary"
 msgstr "Podsumowanie aktualizacji"
 
@@ -1554,8 +1745,8 @@ msgstr "Aktualizuj pakiet – zsynchronizuj go ze źródłami"
 msgid "Toggled if selected string has fuzzy translation"
 msgstr "Zaznacz/odznacz jako niepewne"
 
-msgid "Show or hide the sidebar."
-msgstr "Wyświetla lub ukrywa pasek boczny."
+msgid "Show or hide the sidebar"
+msgstr "Wyświetla lub ukrywa pasek boczny"
 
 #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer.
 msgid "Previous source text:"
@@ -1568,6 +1759,9 @@ msgstr ""
 "Poprzedni tekst źródłowy (zanim został zmieniony podczas aktualizacji) "
 "któremu odpowiada to niepewne tłumaczenie."
 
+msgid "Notes for translators:"
+msgstr "Informacje dla tłumaczy"
+
 msgid "Add comment"
 msgstr "Dodaj komentarz"
 
@@ -1649,9 +1843,6 @@ msgstr "Edytuj tłumaczenie"
 msgid "Open an existing PO file and edit the translation."
 msgstr "Otwórz istniejący plik .po i edytuj tłumaczenie."
 
-msgid "Create new translation"
-msgstr "Utwórz nowe tłumaczenie"
-
 msgid ""
 "Take an existing PO file or POT template and create a new translation from "
 "it."
@@ -1659,6 +1850,16 @@ msgstr ""
 "Użyj istniejącego pliku .po lub szablonu .pot i utwórz z niego nowe "
 "tłumaczenie."
 
+msgid "Collaborate on a translation with Crowdin"
+msgstr ""
+
+msgid ""
+"Download a file from Crowdin project, translate and sync your changes back."
+msgstr ""
+
+msgid "What is Crowdin?"
+msgstr ""
+
 msgid "There are no translations. That’s unusual."
 msgstr "Nie ma tłumaczeń. To się rzadko zdarza."
 
@@ -1700,3 +1901,9 @@ msgstr "Wyodrębnij ze źródeł"
 
 msgid "Configure source code extraction in Properties."
 msgstr "Konfiguruj kod źródłowy wyodrębniania we właściwościach."
+
+msgid "Sync"
+msgstr ""
+
+msgid "Synchronize the translation with Crowdin"
+msgstr ""
diff --git a/locales/poedit.pot b/locales/poedit.pot
index affcd75..22169e2 100644
--- a/locales/poedit.pot
+++ b/locales/poedit.pot
@@ -6,9 +6,9 @@
 #, fuzzy
 msgid ""
 msgstr ""
-"Project-Id-Version: Poedit 1.6\n"
+"Project-Id-Version: Poedit 1.8\n"
 "Report-Msgid-Bugs-To: help at poedit.net\n"
-"POT-Creation-Date: 2015-01-10 16:00+0100\n"
+"POT-Creation-Date: 2015-05-27 11:31+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
 "Language-Team: LANGUAGE <LL at li.org>\n"
@@ -82,6 +82,15 @@ msgstr ""
 msgid "Error saving catalog"
 msgstr ""
 
+msgid "PO Translation Files"
+msgstr ""
+
+msgid "POT Translation Templates"
+msgstr ""
+
+msgid "All Translation Files"
+msgstr ""
+
 msgid "Merging differences..."
 msgstr ""
 
@@ -101,6 +110,83 @@ msgstr ""
 msgid "You must restart Poedit for this change to take effect."
 msgstr ""
 
+msgid "Downloading translations is disabled in this project."
+msgstr ""
+
+msgid "Not authorized, please sign in again."
+msgstr ""
+
+msgid "Sign in to Crowdin"
+msgstr ""
+
+msgid ""
+"Crowdin is an online localization management platform and collaborative "
+"translation tool. Poedit can seamlessly sync PO files managed at Crowdin."
+msgstr ""
+
+msgid "Sign In"
+msgstr ""
+
+msgid "Sign in"
+msgstr ""
+
+msgid "Sign Out"
+msgstr ""
+
+msgid "Sign out"
+msgstr ""
+
+msgid "Waiting for authentication…"
+msgstr ""
+
+msgid "Updating user information…"
+msgstr ""
+
+msgid "Signed in as:"
+msgstr ""
+
+msgid "Learn More About Crowdin"
+msgstr ""
+
+msgid "Learn more about Crowdin"
+msgstr ""
+
+msgid "Open Crowdin translation"
+msgstr ""
+
+msgid "Project:"
+msgstr ""
+
+msgid "Language:"
+msgstr ""
+
+msgid "File:"
+msgstr ""
+
+msgid "No translation projects listed in your Crowdin account."
+msgstr ""
+
+msgid "This project has no files that can be translated in Poedit."
+msgstr ""
+
+msgid "This file can only be edited in Crowdin’s web interface."
+msgstr ""
+
+msgid "Downloading latest translations…"
+msgstr ""
+
+msgid "Syncing with Crowdin"
+msgstr ""
+
+msgid "Syncing with Crowdin failed."
+msgstr ""
+
+msgid "Crowdin error"
+msgstr ""
+
+msgid "Uploading translations…"
+msgstr ""
+
 msgid "&Copy"
 msgstr ""
 
@@ -145,20 +231,20 @@ msgstr ""
 msgid "don't delete temporary files (for debugging)"
 msgstr ""
 
-#, c-format
-msgid "Unhandled exception occurred: %s"
+msgid "handle a poedit:// URI"
 msgstr ""
 
-msgid "Unhandled exception occurred."
+msgid "Failed to communicate with Poedit process."
 msgstr ""
 
-msgid "Open catalog"
+#, c-format
+msgid "Unhandled exception occurred: %s"
 msgstr ""
 
-msgid "All Files"
+msgid "Unhandled exception occurred."
 msgstr ""
 
-msgid "PO Translation Files"
+msgid "Open catalog"
 msgstr ""
 
 #, c-format
@@ -388,6 +474,17 @@ msgstr ""
 msgid "Translation:"
 msgstr ""
 
+msgid ""
+"POT files are only templates and don’t contain any translations themselves.\n"
+"To make a translation, create a new PO file based on the template."
+msgstr ""
+
+msgid "Create New Translation"
+msgstr ""
+
+msgid "Create new translation"
+msgstr ""
+
 #. TRANSLATORS: %s is language name in its basic form (as you
 #. would see e.g. in a list of supported languages). You may need
 #. to rephrase it, e.g. to an equivalent of "for language %s".
@@ -435,9 +532,6 @@ msgstr ""
 msgid "Open catalog template"
 msgstr ""
 
-msgid "POT Translation Templates"
-msgstr ""
-
 msgid "Updating catalog"
 msgstr ""
 
@@ -506,16 +600,18 @@ msgstr[1] ""
 msgid "The translation is ready for use."
 msgstr ""
 
-msgid "No references to this string found."
-msgstr ""
-
-msgid "Please choose the reference you want to show:"
+msgid "Context:"
 msgstr ""
 
-msgid "References"
+#, c-format
+msgid "Poedit automatically fixed invalid content in the file “%s”."
 msgstr ""
 
-msgid "Context:"
+msgid ""
+"The file contained duplicate items, which is not allowed in PO files and "
+"would prevent the file from being used. Poedit fixed the issue, but you "
+"should review translations of any items marked as fuzzy and correct them if "
+"necessary."
 msgstr ""
 
 msgid "Language of the translation isn't set."
@@ -527,6 +623,21 @@ msgstr ""
 msgid "Set language"
 msgstr ""
 
+#. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)."
+msgid ""
+"Suggestions are not available if the translation language is not set "
+"correctly. Other features, such as plural forms, may be affected as well."
+msgstr ""
+
+msgid "Language of the translation is the same as source language."
+msgstr ""
+
+msgid "Fix Language"
+msgstr ""
+
+msgid "Fix language"
+msgstr ""
+
 msgid ""
 "This catalog has entries with plural forms, but doesn't have Plural-Forms "
 "header configured."
@@ -557,6 +668,7 @@ msgstr ""
 msgid "Plural forms expression used by the catalog is unusual for %s."
 msgstr ""
 
+#. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the catalog is unusual for %s.")"
 msgid "Review"
 msgstr ""
 
@@ -578,6 +690,12 @@ msgid_plural "%d errors"
 msgstr[0] ""
 msgstr[1] ""
 
+#, c-format
+msgid "%d entry"
+msgid_plural "%d entries"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid " (unsaved)"
 msgstr ""
 
@@ -691,6 +809,9 @@ msgstr ""
 msgid "Form %i"
 msgstr ""
 
+msgid "Singular"
+msgstr ""
+
 msgid "Zero"
 msgstr ""
 
@@ -700,6 +821,9 @@ msgstr ""
 msgid "Two"
 msgstr ""
 
+msgid "Plural"
+msgstr ""
+
 msgid "Other"
 msgstr ""
 
@@ -728,6 +852,12 @@ msgstr ""
 msgid "Show Sidebar"
 msgstr ""
 
+msgid "Hide Status Bar"
+msgstr ""
+
+msgid "Show Status Bar"
+msgstr ""
+
 msgid "Source text"
 msgstr ""
 
@@ -737,6 +867,10 @@ msgstr ""
 msgid "ID"
 msgstr ""
 
+#, c-format
+msgid "Source text — %s"
+msgstr ""
+
 msgid "unknown language"
 msgstr ""
 
@@ -747,56 +881,72 @@ msgstr ""
 msgid "Error:"
 msgstr ""
 
-msgid "Project info"
+msgid "Source file"
 msgstr ""
 
-msgid "Project name and version:"
+msgid "Source file occurrence:"
 msgstr ""
 
-msgid "Language:"
+msgid "Open in Editor"
 msgstr ""
 
-msgid "Team:"
+msgid "Open in editor"
 msgstr ""
 
-msgid "Team's email address:"
+msgid "No references for the selected item."
 msgstr ""
 
-msgid "Charset:"
+#, c-format
+msgid "Error opening file %s!"
 msgstr ""
 
-msgid "Source"
+msgid "Find"
 msgstr ""
 
-msgid "Notes"
+msgid "Replace"
 msgstr ""
 
-msgid "Automatic translation"
+#. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.)
+msgid "Options"
 msgstr ""
 
-msgid "Fuzzy translation"
+msgid "Ignore case"
 msgstr ""
 
-msgid "Notes for translators:"
+msgid "Wrap around"
 msgstr ""
 
-msgid "Comment:"
+msgid "Whole words only"
 msgstr ""
 
-msgid "Source file"
+msgid "Find in source texts"
 msgstr ""
 
-msgid "Source file occurrence:"
+msgid "Find in translations"
 msgstr ""
 
-msgid "Open in Editor"
+msgid "Find in comments"
 msgstr ""
 
-msgid "Open in editor"
+msgid "Close"
 msgstr ""
 
-#, c-format
-msgid "Error opening file %s!"
+msgid "Replace All"
+msgstr ""
+
+msgid "Replace all"
+msgstr ""
+
+msgid "< &Previous"
+msgstr ""
+
+msgid "&Next >"
+msgstr ""
+
+msgid "String to find"
+msgstr ""
+
+msgid "Replacement string"
 msgstr ""
 
 #, c-format
@@ -985,9 +1135,19 @@ msgstr ""
 msgid "Edit"
 msgstr ""
 
+msgid "Delete extractor"
+msgstr ""
+
+#, c-format
+msgid "Are you sure you want to delete the “%s” extractor?"
+msgstr ""
+
 msgid "Extractors"
 msgstr ""
 
+msgid "Accounts"
+msgstr ""
+
 msgid "Automatically check for updates"
 msgstr ""
 
@@ -1026,70 +1186,67 @@ msgstr ""
 msgid "Advanced"
 msgstr ""
 
-msgid "Additional keywords"
-msgstr ""
-
-msgid "Paths"
-msgstr ""
-
-msgid "Excluded paths"
-msgstr ""
-
-msgid "Name of the project the translation is for"
+msgid ""
+"<big>Drag and Drop Folders Here</big>\n"
+"\n"
+"or use the + button"
 msgstr ""
 
-msgid "e.g. nplurals=2; plural=(n > 1);"
+msgid ""
+"<big>Drag and drop folders here</big>\n"
+"\n"
+"or use the + button"
 msgstr ""
 
-msgid "UTF-8 (recommended)"
+msgid "Add Folders..."
 msgstr ""
 
-msgid "Please save the file first. This section cannot be edited until then."
+msgid "Add folders..."
 msgstr ""
 
-msgid "OK"
+msgid "Add Files..."
 msgstr ""
 
-msgid "C&lear"
+msgid "Add files..."
 msgstr ""
 
-msgid "Clear the comment"
+msgid "Add Wildcard..."
 msgstr ""
 
-msgid "Find..."
+msgid "Add wildcard..."
 msgstr ""
 
-msgid "String to find:"
+msgid "Paths"
 msgstr ""
 
-msgid "Case sensitive"
+msgid "Excluded paths"
 msgstr ""
 
-msgid "Start from the first item"
+msgid "Additional keywords"
 msgstr ""
 
-msgid "Whole words only"
+msgid "Name of the project the translation is for"
 msgstr ""
 
-msgid "Find in original strings"
+msgid "e.g. nplurals=2; plural=(n > 1);"
 msgstr ""
 
-msgid "Find in translations"
+msgid "UTF-8 (recommended)"
 msgstr ""
 
-msgid "Find in comments"
+msgid "Please save the file first. This section cannot be edited until then."
 msgstr ""
 
-msgid "Find in automatic comments"
+msgid "Comment:"
 msgstr ""
 
-msgid "Close"
+msgid "OK"
 msgstr ""
 
-msgid "< &Previous"
+msgid "C&lear"
 msgstr ""
 
-msgid "&Next >"
+msgid "Clear the comment"
 msgstr ""
 
 msgid "Create new translations project"
@@ -1146,6 +1303,12 @@ msgstr ""
 msgid "Open Recent"
 msgstr ""
 
+msgid "Open from Crowdin..."
+msgstr ""
+
+msgid "Open From Crowdin..."
+msgstr ""
+
 msgid "&Save"
 msgstr ""
 
@@ -1194,13 +1357,16 @@ msgstr ""
 msgid "&Find..."
 msgstr ""
 
+msgid "Replace..."
+msgstr ""
+
 msgid "Find next"
 msgstr ""
 
 msgid "Find previous"
 msgstr ""
 
-msgid "Find"
+msgid "Find and Replace..."
 msgstr ""
 
 msgid "Find Next"
@@ -1242,6 +1408,12 @@ msgstr ""
 msgid "&Group By Context"
 msgstr ""
 
+msgid "Entries with errors first"
+msgstr ""
+
+msgid "Entries with Errors First"
+msgstr ""
+
 msgid "&Untranslated entries first"
 msgstr ""
 
@@ -1251,6 +1423,9 @@ msgstr ""
 msgid "Show sidebar"
 msgstr ""
 
+msgid "Show status bar"
+msgstr ""
+
 msgid "C&atalog"
 msgstr ""
 
@@ -1266,6 +1441,9 @@ msgstr ""
 msgid "Update from &POT File..."
 msgstr ""
 
+msgid "Sync with Crowdin"
+msgstr ""
+
 msgid "Fill missing translations from &TM..."
 msgstr ""
 
@@ -1383,6 +1561,9 @@ msgstr ""
 msgid "Catalog properties"
 msgstr ""
 
+msgid "Project name and version:"
+msgstr ""
+
 msgid "Plural Forms:"
 msgstr ""
 
@@ -1395,16 +1576,28 @@ msgstr ""
 msgid "Learn about plural forms"
 msgstr ""
 
+msgid "Charset:"
+msgstr ""
+
+msgid "Team:"
+msgstr ""
+
+msgid "Team's email address:"
+msgstr ""
+
 msgid "Translation properties"
 msgstr ""
 
+msgid "Sources paths"
+msgstr ""
+
 msgid "Extract text from source files in the following directories:"
 msgstr ""
 
 msgid "Base path:"
 msgstr ""
 
-msgid "Sources paths"
+msgid "Sources keywords"
 msgstr ""
 
 msgid ""
@@ -1415,9 +1608,6 @@ msgstr ""
 msgid "Learn about gettext keywords"
 msgstr ""
 
-msgid "Sources keywords"
-msgstr ""
-
 msgid "Update summary"
 msgstr ""
 
@@ -1461,7 +1651,7 @@ msgstr ""
 msgid "Toggled if selected string has fuzzy translation"
 msgstr ""
 
-msgid "Show or hide the sidebar."
+msgid "Show or hide the sidebar"
 msgstr ""
 
 #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer.
@@ -1473,6 +1663,9 @@ msgid ""
 "translation corresponds to."
 msgstr ""
 
+msgid "Notes for translators:"
+msgstr ""
+
 msgid "Add comment"
 msgstr ""
 
@@ -1545,14 +1738,21 @@ msgstr ""
 msgid "Open an existing PO file and edit the translation."
 msgstr ""
 
-msgid "Create new translation"
-msgstr ""
-
 msgid ""
 "Take an existing PO file or POT template and create a new translation from "
 "it."
 msgstr ""
 
+msgid "Collaborate on a translation with Crowdin"
+msgstr ""
+
+msgid ""
+"Download a file from Crowdin project, translate and sync your changes back."
+msgstr ""
+
+msgid "What is Crowdin?"
+msgstr ""
+
 msgid "There are no translations. That’s unusual."
 msgstr ""
 
@@ -1585,3 +1785,9 @@ msgstr ""
 
 msgid "Configure source code extraction in Properties."
 msgstr ""
+
+msgid "Sync"
+msgstr ""
+
+msgid "Synchronize the translation with Crowdin"
+msgstr ""
diff --git a/locales/pt_BR.mo b/locales/pt_BR.mo
index 1b5eb56..3a02c52 100644
Binary files a/locales/pt_BR.mo and b/locales/pt_BR.mo differ
diff --git a/locales/pt_BR.po b/locales/pt_BR.po
index cb75189..5103cab 100644
--- a/locales/pt_BR.po
+++ b/locales/pt_BR.po
@@ -2,8 +2,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: poedit\n"
 "Report-Msgid-Bugs-To: help at poedit.net\n"
-"POT-Creation-Date: 2015-01-10 16:00+0100\n"
-"PO-Revision-Date: 2015-03-10 12:33-0400\n"
+"POT-Creation-Date: 2015-05-27 11:31+0200\n"
+"PO-Revision-Date: 2015-05-27 05:17-0400\n"
 "Last-Translator: vslavik <vaclav at slavik.io>\n"
 "Language-Team: Portuguese, Brazilian\n"
 "Language: pt_BR\n"
@@ -37,7 +37,7 @@ msgstr "Linha %d do arquivo '%s' está corrompida (dados %s inválidos)."
 
 #, c-format
 msgid "Malformed header: '%s'"
-msgstr "Cabeçalho mal-formado: '%s'"
+msgstr "Cabeçalho malformado: '%s'"
 
 msgid ""
 "Broken catalog file: singular form msgstr used together with msgid_plural"
@@ -54,28 +54,28 @@ msgid ""
 "There were errors when loading the catalog. Some data may be missing or "
 "corrupted as the result."
 msgstr ""
-"Erros ao carregar o catálogo. Alguns dados podem estar danificados ou "
-"inválidos."
+"Erros ao carregar o catálogo. Alguns dados podem estar ausentes ou inválidos."
 
 #, c-format
 msgid "Couldn't load file %s, it is probably corrupted."
-msgstr "Erro carregando arquivo '%s, provavelmente corrompido."
+msgstr "Erro carregando o arquivo '%s, provavelmente ele está corrompido."
 
 #, c-format
 msgid ""
 "File '%s' is read-only and cannot be saved.\n"
 "Please save it under different name."
 msgstr ""
-"O arquivo '%s' é somente leitura e não pode ser salvo.\n"
-"Salve-o com outro nome."
+"O ficheiro %s é de leitura e não pode ser guardado.\n"
+"Por favor utilize um nome diferente."
 
 #, c-format
 msgid "Couldn't save file %s."
-msgstr "Não foi possível salvar arquivo %s."
+msgstr "Não foi possível guardar o ficheiro %s."
 
 msgid ""
 "There was a problem formatting the file nicely (but it was saved all right)."
-msgstr "Houve um problema ao formatar o arquivo (mas foi salvo corretamente)."
+msgstr ""
+"Houve um problema ao formatar o arquivo (mas ele foi salvo corretamente)."
 
 #, c-format
 msgid ""
@@ -84,22 +84,32 @@ msgid ""
 "\n"
 "It was saved in UTF-8 instead and the setting was modified accordingly."
 msgstr ""
-"O catálogo não pôde ser salvo na tabela de caracteres '%s' como\n"
-"especificado na configuração do catálogo. Ele foi salvo em UTF-8\n"
-"e a configuração foi devidamente alterada."
+"O catálogo não pode ser guardado no formato '%s', conforme especificado nas "
+"definições.\n"
+"\n"
+"Foi guardado no formato UTF-8 e as definições alteradas em concordância."
 
 msgid "Error saving catalog"
-msgstr "Erro ao salvar o catálogo"
+msgstr "Erro ao gravar o catálogo"
+
+msgid "PO Translation Files"
+msgstr "Arquivos de Tradução PO"
+
+msgid "POT Translation Templates"
+msgstr "Modelos de Tradução POT"
+
+msgid "All Translation Files"
+msgstr "Todos os ficheiros de tradução"
 
 msgid "Merging differences..."
-msgstr "Combinando diferenças em arquivos..."
+msgstr "A incorporar diferenças..."
 
 #, c-format
 msgid "'%s' is not a valid POT file."
-msgstr "'%s' não é um arquivo POT válido."
+msgstr "'%s' não é um ficheiro POT válido."
 
 msgid "(Use default language)"
-msgstr "(Usar idioma padrão)"
+msgstr "(Utilizar idioma do sistema)"
 
 msgid "Select your preferred language"
 msgstr "Selecione o idioma preferido"
@@ -108,37 +118,117 @@ msgid "Language selection"
 msgstr "Seleção de idioma"
 
 msgid "You must restart Poedit for this change to take effect."
-msgstr "Você deve reiniciar o Poedit para validar as alterações."
+msgstr "Tem que reiniciar o Poedit para aplicar a alteração."
+
+msgid "Downloading translations is disabled in this project."
+msgstr "A descarga de traduções está desativada para este projeto."
+
+msgid "Not authorized, please sign in again."
+msgstr "Não autorizado. Inicie novamente a sessão."
+
+msgid "Sign in to Crowdin"
+msgstr "Iniciar sessão no Crowdin"
+
+msgid ""
+"Crowdin is an online localization management platform and collaborative "
+"translation tool. Poedit can seamlessly sync PO files managed at Crowdin."
+msgstr ""
+"O serviço Crowdin é uma plataforma de gestão de traduções e uma ferramenta "
+"de colaboração. O Poedit pode sincronizar os ficheiros PO existentes nos "
+"projetos Crowdin."
+
+msgid "Sign In"
+msgstr "Iniciar sessão"
+
+msgid "Sign in"
+msgstr "Iniciar sessão"
+
+msgid "Sign Out"
+msgstr "Terminar sessão"
+
+msgid "Sign out"
+msgstr "Terminar sessão"
+
+msgid "Waiting for authentication…"
+msgstr "Aguardando autenticação..."
+
+msgid "Updating user information…"
+msgstr "Atualizando informações do utilizador..."
+
+msgid "Signed in as:"
+msgstr "Sessão iniciada como:"
+
+msgid "Learn More About Crowdin"
+msgstr "Saber mais sobre o Crowdin"
+
+msgid "Learn more about Crowdin"
+msgstr "Saber mais sobre o Crowdin"
+
+msgid "Open Crowdin translation"
+msgstr "Abrir tradução Crowdin"
+
+msgid "Project:"
+msgstr "Projeto:"
+
+msgid "Language:"
+msgstr "Idioma:"
+
+msgid "File:"
+msgstr "Ficheiro:"
+
+msgid "No translation projects listed in your Crowdin account."
+msgstr "Não existem projetos de tradução associados à sua conta Crowdin."
+
+msgid "This project has no files that can be translated in Poedit."
+msgstr "Este projeto não tem ficheiros que possam ser traduzidos com o Poedit."
+
+msgid "This file can only be edited in Crowdin’s web interface."
+msgstr "Este ficheiro apenas pode ser editado na interface web do Crowdin."
+
+msgid "Downloading latest translations…"
+msgstr "A descarregar traduções mais recentes..."
+
+msgid "Syncing with Crowdin"
+msgstr "Sincronizar com o Crowdin"
+
+msgid "Syncing with Crowdin failed."
+msgstr "Falha ao sincronizar com o Crowdin."
+
+msgid "Crowdin error"
+msgstr "Erro Crowdin"
+
+msgid "Uploading translations…"
+msgstr "A carregar traduções..."
 
 msgid "&Copy"
 msgstr "&Copiar"
 
 msgid "Learn more"
-msgstr "Saiba mais"
+msgstr "Saber mais"
 
 msgid "Learn More"
 msgstr "Saiba Mais"
 
 #, c-format
 msgid "Failed command: %s"
-msgstr "Falha ao executar o comando: %s"
+msgstr "Falha do comando: %s"
 
 msgid "Failed to merge gettext catalogs."
-msgstr "Falha ao combinar catálogos do gettext."
+msgstr "Erro ao unir os catálogos."
 
 msgid "Scanning files..."
-msgstr "Pesquisando arquivos..."
+msgstr "A analisar ficheiros..."
 
 #. TRANSLATORS: '%s' is replaced with the kind of the files (e.g. C++, PHP, ...)
 #, c-format
 msgid "Parsing %s files..."
-msgstr "Interpretando %s arquivos..."
+msgstr "A analisar ficheiros %s..."
 
 msgid "Failed to load extracted catalog."
-msgstr "Falha ao carregar o catálogo extraído."
+msgstr "Erro ao carregar o catálogo extraído."
 
 msgid "&Help"
-msgstr "A&juda"
+msgstr "Aj&uda"
 
 msgid "MO files can’t be directly edited in Poedit."
 msgstr "Arquivos MO não podem ser editados diretamente no Poedit."
@@ -154,27 +244,27 @@ msgstr ""
 "o arquivo MO será atualizado também."
 
 msgid "don't delete temporary files (for debugging)"
-msgstr "não apagar arquivos temporários (para depuração)"
+msgstr "não eliminar ficheiros temporários (depuração)"
+
+msgid "handle a poedit:// URI"
+msgstr "gerir um URI poedit://"
+
+msgid "Failed to communicate with Poedit process."
+msgstr "Falha ao comunicar com o processo do Poedit."
 
 #, c-format
 msgid "Unhandled exception occurred: %s"
-msgstr "Ocorreu uma exceção não manipulada: %s"
+msgstr "Ocorreu uma exceção não tratada: %s"
 
 msgid "Unhandled exception occurred."
-msgstr "Ocorreu uma exceção não manipulada."
+msgstr "Ocorreu uma exceção."
 
 msgid "Open catalog"
 msgstr "Abrir catálogo"
 
-msgid "All Files"
-msgstr "Todos os Arquivos"
-
-msgid "PO Translation Files"
-msgstr "Arquivos de Tradução PO"
-
 #, c-format
 msgid "File '%s' doesn't exist."
-msgstr "Arquivo '%s' não existe."
+msgstr "O ficheiro %s não existe."
 
 #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name
 #. ("Poedit" here, but please use "%s")
@@ -192,10 +282,10 @@ msgid "Poedit is an easy to use translations editor."
 msgstr "O Poedit é um editor de traduções fácil de usar."
 
 msgid "Catalogs Manager"
-msgstr "Gerenciador de Catálogos"
+msgstr "Gestor de catálogos"
 
 msgid "Check for Updates..."
-msgstr "Verificar Atualizações..."
+msgstr "Procurar atualizações..."
 
 msgid "&Edit"
 msgstr "&Editar"
@@ -207,70 +297,70 @@ msgid "Redo"
 msgstr "Refazer"
 
 msgid "Paste and Match Style"
-msgstr "Colar e Corresponder Estilo"
+msgstr "Colar com a formatação do documento"
 
 msgid "Delete"
-msgstr "Excluir"
+msgstr "Eliminar"
 
 msgid "Spelling and Grammar"
-msgstr "Ortografia e Gramática"
+msgstr "Ortografia e gramática"
 
 msgid "Show Spelling and Grammar"
-msgstr "Exibir Ortografia e Gramática"
+msgstr "Mostrar ortografia e gramática"
 
 msgid "Check Document Now"
-msgstr "Verificar Documento Agora"
+msgstr "Analisar documento agora"
 
 msgid "Check Spelling While Typing"
-msgstr "Verificar Ortografia ao Digitar"
+msgstr "Verificar ortografia ao escrever"
 
 msgid "Check Grammar With Spelling"
-msgstr "Verificar Gramática com Ortografia"
+msgstr "Verificar gramática com ortografia"
 
 msgid "Correct Spelling Automatically"
-msgstr "Corrigir Ortografia Automaticamente"
+msgstr "Corrigir ortografia automaticamente"
 
 msgid "Substitutions"
 msgstr "Substituições"
 
 msgid "Show Substitutions"
-msgstr "Exibir Substituições"
+msgstr "Mostrar substituições"
 
 msgid "Smart Copy/Paste"
-msgstr "Copiar/Colar Inteligente"
+msgstr "Colar/Colar inteligente"
 
 msgid "Smart Quotes"
-msgstr "Aspas Inteligentes"
+msgstr "Aspas inteligentes"
 
 msgid "Smart Dashes"
-msgstr "Hífens Inteligentes"
+msgstr "Traços inteligentes"
 
 msgid "Smart Links"
-msgstr "Links Inteligentes"
+msgstr "Ligações inteligentes"
 
 msgid "Text Replacement"
-msgstr "Substituição de Texto"
+msgstr "Substituição de texto"
 
 msgid "Transformations"
 msgstr "Transformações"
 
 msgid "Make Upper Case"
-msgstr "FAZER MAIÚSCULAS"
+msgstr "Converter em maiúsculas"
 
 msgid "Make Lower Case"
-msgstr "fazer minúsculas"
+msgstr "Converter em minúsculas"
 
 msgid "Capitalize"
-msgstr "MAIÚSCULAS"
+msgstr "Capitalizar"
 
 msgid "Speech"
 msgstr "Fala"
 
 msgid "Start Speaking"
-msgstr "Começar a Falar"
+msgstr "Iniciar fala"
 
 msgid "Stop Speaking"
-msgstr "Parar de Falar"
+msgstr "Parar fala"
 
 msgid "&View"
 msgstr "E&xibir"
@@ -285,37 +375,36 @@ msgid "Minimize"
 msgstr "Minimizar"
 
 msgid "Zoom"
-msgstr "Zoom"
+msgstr "Ampliação"
 
 msgid "Bring All to Front"
-msgstr "Trazer todas para frente"
+msgstr "Trazer para primeiro plano"
 
 msgid "PO Translation"
 msgstr "Tradução PO"
 
 msgid "The file cannot be opened."
-msgstr "O arquivo não pôde ser aberto."
+msgstr "O ficheiro não foi aberto."
 
 msgid "Invalid file"
-msgstr "Arquivo inválido"
+msgstr "Ficheiro inválido"
 
 msgid ""
 "The file may be either corrupted or in a format not recognized by Poedit."
 msgstr ""
-"O arquivo pode estar corrompido ou está em um formato não reconhecido pelo "
-"Poedit."
+"O ficheiro pode estar danificado ou num formato não reconhecido pelo Poedit."
 
 msgid "&Undo"
-msgstr "&Desfazer"
+msgstr "An&ular"
 
 msgid "&Redo"
 msgstr "&Refazer"
 
 msgid "Cu&t"
-msgstr "Recor&tar"
+msgstr "Cor&tar"
 
 msgid "Cut"
-msgstr "Recortar"
+msgstr "Cortar"
 
 msgid "Copy"
 msgstr "Copiar"
@@ -327,13 +416,13 @@ msgid "Paste"
 msgstr "Colar"
 
 msgid "&Delete"
-msgstr "&Excluir"
+msgstr "&Eliminar"
 
 msgid "Select &All"
-msgstr "Selecionar &Todas"
+msgstr "Selecion&ar tudo"
 
 msgid "Select All"
-msgstr "Selecionar Todas"
+msgstr "Selecionar tudo"
 
 #. TRANSLATORS: Keyboard shortcut for display in Windows menus
 #. TRANSLATORS: This is the key shortcut used in menus on Windows, some languages call them differently
@@ -374,17 +463,17 @@ msgid "shift"
 msgstr "shift"
 
 msgid "You can't drop more than one file on Poedit window."
-msgstr "Você não pode arrastar mais de um arquivo na janela do Poedit."
+msgstr "Não pode largar mais do que um ficheiro na janela do Poedit."
 
 #, c-format
 msgid "File '%s' is not a message catalog."
-msgstr "Arquivo '%s' não é um catálogo de mensagens."
+msgstr "O ficheiro %s não é um catálogo."
 
 msgid "Poedit"
 msgstr "Poedit"
 
 msgid "&File"
-msgstr "&Arquivo"
+msgstr "&Ficheiro"
 
 msgid "&Go"
 msgstr "&Ir"
@@ -396,11 +485,24 @@ msgid "Singular:"
 msgstr "Singular:"
 
 msgid "Plural:"
-msgstr "Plural:"
+msgstr "Plurais:"
 
 msgid "Translation:"
 msgstr "Tradução:"
 
+msgid ""
+"POT files are only templates and don’t contain any translations themselves.\n"
+"To make a translation, create a new PO file based on the template."
+msgstr ""
+"Os ficheiros POT são apenas modelos e não possuem quaisquer traduções.\n"
+"Para efetuar uma tradução, crie um novo ficheiro PO baseado no modelo."
+
+msgid "Create New Translation"
+msgstr "Criar nova tradução"
+
+msgid "Create new translation"
+msgstr "Criar nova tradução"
+
 #. TRANSLATORS: %s is language name in its basic form (as you
 #. would see e.g. in a list of supported languages). You may need
 #. to rephrase it, e.g. to an equivalent of "for language %s".
@@ -415,25 +517,25 @@ msgid "Install"
 msgstr "Instalar"
 
 msgid "Catalog modified. Do you want to save changes?"
-msgstr "O catálogo foi modificado. Deseja salvar as alterações?"
+msgstr "O catálogo foi modificado. Guardar alterações?"
 
 msgid "Save changes"
-msgstr "Salvar alterações"
+msgstr "Guardar alterações"
 
 msgid "Your changes will be lost if you don't save them."
-msgstr "Suas alterações serão perdidas se você não salvá-las."
+msgstr "Se não guardar as alterações, estas serão perdidas."
 
 msgid "Save"
-msgstr "Salvar"
+msgstr "Guardar"
 
 msgid "Don't save"
-msgstr "Não salvar"
+msgstr "Não guardar"
 
 msgid "Don't Save"
-msgstr "Não Salvar"
+msgstr "Não guardar"
 
 msgid "Save as..."
-msgstr "Salvar como..."
+msgstr "Guardar como..."
 
 msgid "Compile to..."
 msgstr "Compilar para..."
@@ -450,11 +552,8 @@ msgstr "Arquivos HTML"
 msgid "Open catalog template"
 msgstr "Abrir modelo de catálogo"
 
-msgid "POT Translation Templates"
-msgstr "Modelos de Tradução POT"
-
 msgid "Updating catalog"
-msgstr "Atualizando catálogo"
+msgstr "A atualizar catálogo..."
 
 msgid "Source code not available."
 msgstr "Código-fonte não disponível."
@@ -470,16 +569,18 @@ msgstr ""
 "foi encontrado no local especificado nas propriedades do catálogo."
 
 msgid "Entries in the catalog are probably incorrect."
-msgstr "Entradas do catálogo provavelmente estão incorretas."
+msgstr "É possível que as entradas do catálogo estejam incorretas."
 
 msgid "Updating the catalog failed. Click on 'Details >>' for details."
-msgstr "Erro ao atualizar catálogo. Clique em 'Detalhes>>' para detalhes."
+msgstr ""
+"Ocorreu um erro ao atualizar o catálogo. Clique em 'Detalhes >>' para saber "
+"mais."
 
 #, c-format
 msgid "%d issue with the translation found."
 msgid_plural "%d issues with the translation found."
-msgstr[0] "%d problema encontrado na tradução."
-msgstr[1] "%d problemas encontrados na tradução."
+msgstr[0] "Foi encontrado %d erro na tradução."
+msgstr[1] "Foram encontrados %d erros na tradução."
 
 msgid "Validation results"
 msgstr "Resultados da validação"
@@ -488,25 +589,23 @@ msgid ""
 "Entries with errors were marked in red in the list. Details of the error "
 "will be shown when you select such an entry."
 msgstr ""
-"As entradas com erros foram marcadas em vermelho na lista. Detalhes do erro "
-"serão exibidos quando você selecionar essa entrada."
+"As entradas com erros estão marcadas a vermelho. Os detalhes do erro serão "
+"mostrados ao selecionar a entrada correspondente."
 
 msgid "The file was saved safely."
-msgstr "O arquivo foi salvo com segurança."
+msgstr "O ficheiro foi guardado com sucesso."
 
 msgid ""
 "The file was saved safely and compiled into the MO format, but it will "
 "probably not work correctly."
 msgstr ""
-"O arquivo foi salvo com segurança e compilado no formato MO, mas "
-"provavelmente não irá funcionar corretamente."
+"O ficheiro foi guardado com sucesso e o ficheiro MO foi compilado. No "
+"entanto, é possível que não funcione corretamente."
 
 msgid ""
 "The file was saved safely, but it cannot be compiled into the MO format and "
 "used."
-msgstr ""
-"O arquivo foi salvo com segurança, mas não pode ser compilado no formato MO "
-"e utilizado."
+msgstr "O ficheiro foi guardado mas o ficheiro MO não foi criado."
 
 msgid ""
 "The file was compiled into the MO format, but it will probably not work "
@@ -519,34 +618,40 @@ msgid "The file cannot be compiled into the MO format and used."
 msgstr "O arquivo não pode ser compilado para o formato MO e usado."
 
 msgid "No problems with the translation found."
-msgstr "Não foram encontrados problemas na tradução."
+msgstr "Não foram encontrados erros na tradução."
 
 #, c-format
 msgid "The translation is ready for use, but %d entry is not translated yet."
 msgid_plural ""
 "The translation is ready for use, but %d entries are not translated yet."
 msgstr[0] ""
-"Tradução pronta para ser usada, mas %d entrada ainda não foi traduzida."
+"A tradução pode ser utilizada mas %d entrada ainda não está traduzida."
 msgstr[1] ""
-"Tradução pronta para ser usada, mas %d entradas ainda não foram traduzidas."
+"A tradução pode ser utilizada mas %d entradas ainda não estão traduzidas."
 
 msgid "The translation is ready for use."
-msgstr "Tradução pronta para ser usada."
-
-msgid "No references to this string found."
-msgstr "Não foram encontradas referências a essa linha."
-
-msgid "Please choose the reference you want to show:"
-msgstr "Por favor, escolha a referência que você quer mostrar:"
-
-msgid "References"
-msgstr "Referências"
+msgstr "A tradução está pronta a utilizar."
 
 msgid "Context:"
 msgstr "Contexto:"
 
+#, c-format
+msgid "Poedit automatically fixed invalid content in the file “%s”."
+msgstr "PoEdit corrigiu automaticamente o conteúdo inválido no arquivo \"%s\"."
+
+msgid ""
+"The file contained duplicate items, which is not allowed in PO files and "
+"would prevent the file from being used. Poedit fixed the issue, but you "
+"should review translations of any items marked as fuzzy and correct them if "
+"necessary."
+msgstr ""
+"O arquivo continha itens duplicados, o que não é permitido em arquivos PO e "
+"isso impediria o arquivo de ser usado. O PoEdit corrigiu o problema, mas "
+"você deve revisar as traduções de todos os itens marcados como difusos e "
+"corrigi-los se necessário."
+
 msgid "Language of the translation isn't set."
-msgstr "Idioma da tradução não foi definido."
+msgstr "O idioma da tradução não está definido."
 
 msgid "Set Language"
 msgstr "Definir Idioma"
@@ -554,22 +659,40 @@ msgstr "Definir Idioma"
 msgid "Set language"
 msgstr "Definir idioma"
 
+#. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)."
+msgid ""
+"Suggestions are not available if the translation language is not set "
+"correctly. Other features, such as plural forms, may be affected as well."
+msgstr ""
+"As sugestões de tradução não estarão disponíveis se o idioma do projeto não "
+"estiver definido corretamente. Outras funcionalidades, como as formas "
+"plurais, também poderão ser afetadas."
+
+msgid "Language of the translation is the same as source language."
+msgstr "O idioma da tradução coincide com o idioma do texto fonte."
+
+msgid "Fix Language"
+msgstr "Corrigir idioma"
+
+msgid "Fix language"
+msgstr "Corrigir idioma"
+
 msgid ""
 "This catalog has entries with plural forms, but doesn't have Plural-Forms "
 "header configured."
 msgstr ""
-"Este catálogo possui entradas com formas no plural, mas não possui o "
-"cabeçalho Plural-Forms configurado."
+"Este catálogo tem entradas com fomas plurais mas não tem o cabeçalho Plural-"
+"Forms definido."
 
 msgid ""
 "Entries in this catalog have different plural forms count from what "
 "catalog's Plural-Forms header says"
 msgstr ""
-"As entradas nesta catálogo possuem formas diferentes no plural do que o "
-"cabeçalho do catálogo Plural-Forms informa"
+"As entradas deste catálogo possuem formas plurais que diferem daquelas que "
+"estão definidas no cabeçalho Plural-Forms."
 
 msgid "Required header Plural-Forms is missing."
-msgstr "Cabeçalho Plural-Forms necessário está em falta."
+msgstr "O cabeçalho Plural-Forms não existe."
 
 #, c-format
 msgid "Syntax error in Plural-Forms header (\"%s\")."
@@ -586,14 +709,17 @@ msgstr "Corrigir cabeçalho"
 #. to rephrase it, e.g. to an equivalent of "for language %s".
 #, c-format
 msgid "Plural forms expression used by the catalog is unusual for %s."
-msgstr "Expressão no plural usada pelo catálogo é incomum para %s."
+msgstr ""
+"A expressão de formas plurais utilizadas neste catálogo não são as que devem "
+"ser utilizadas pelo idioma %s."
 
+#. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the catalog is unusual for %s.")"
 msgid "Review"
-msgstr "Revisar"
+msgstr "Rever"
 
 #, c-format
 msgid "Error loading message catalog file '%s'."
-msgstr "Erro carregando arquivo de catálogo de mensagens '%s'."
+msgstr "Erro ao carregar o ficheiro %s."
 
 #, c-format
 msgid "Translated: %d of %d (%d %%)"
@@ -609,8 +735,14 @@ msgid_plural "%d errors"
 msgstr[0] "%d erro"
 msgstr[1] "%d erros"
 
+#, c-format
+msgid "%d entry"
+msgid_plural "%d entries"
+msgstr[0] "%d entrada"
+msgstr[1] "%d entradas"
+
 msgid " (unsaved)"
-msgstr " (não salvo)"
+msgstr " (não guardado)"
 
 msgid " (modified)"
 msgstr " (modificado)"
@@ -620,28 +752,28 @@ msgstr "Ir"
 
 #, c-format
 msgid "Failed to update translation memory: %s"
-msgstr "Falha ao atualizar memória de traduções: %s"
+msgstr "Falha ao atualizar a memória de traduções: %s"
 
 msgid "Purge deleted translations"
-msgstr "Remover traduções inexistentes"
+msgstr "Remover traduções eliminadas"
 
 msgid "Do you want to remove all translations that are no longer used?"
-msgstr "Deseja remover todas as traduções não usadas?"
+msgstr "Pretende remover todas as traduções que já não são utilizadas?"
 
 msgid ""
 "If you continue with purging, all translations marked as deleted will be "
 "permanently removed. You will have to translate them again if they are added "
 "back in the future."
 msgstr ""
-"Se você continuar com a limpeza, todas as traduções marcados para excluir "
-"serão removidos permanentemente. Você terá que traduzi-los novamente caso "
-"eles sejam adicionados de volta no futuro."
+"Se continuar, todas as traduções marcadas como eliminadas serão removidas "
+"permanentemente. Se as entradas forem respostas, terá que as traduzir "
+"novamente."
 
 msgid "Keep"
 msgstr "Manter"
 
 msgid "Purge"
-msgstr "Limpar"
+msgstr "Remover"
 
 msgid "Fill missing translations from TM"
 msgstr "Preencher traduções ausentes da MT"
@@ -672,33 +804,34 @@ msgstr "Preencher"
 #, c-format
 msgid "%d entry was filled from the translation memory."
 msgid_plural "%d entries were filled from the translation memory."
-msgstr[0] "%d entrada foi preenchida pela memória de tradução."
-msgstr[1] "%d entradas foram preenchidas pela memória de tradução."
+msgstr[0] "%d item preenchido com a memória de traduções."
+msgstr[1] "%d itens preenchidos com a memória de traduções."
 
 msgid ""
 "The translations were marked as fuzzy, because they may be inaccurate. You "
 "should review them for correctness."
 msgstr ""
-"As traduções foram marcadas como incertas, pois podem ser imprecisas. Você "
-"deve revisá-las quanto à sua exatidão."
+"As traduções foram assinaladas como imprecisas. Deve rever as traduções e "
+"efetuar as correções necessárias."
 
 msgid "No entries could be filled from the translation memory."
-msgstr "Nenhuma entrada pôde ser preenchida pela memória de tradução."
+msgstr ""
+"Não existem itens que possam ser preenchidos com a memória de traduções."
 
 msgid ""
 "The TM doesn’t contain any strings similar to the content of this file. It "
 "is only effective for semi-automatic translations after Poedit learns enough "
 "from files that you translated manually."
 msgstr ""
-"A MT não contém nenhuma sentença similar ao conteúdo deste arquivo. Ela só é "
-"efetiva para traduções semi-automáticas após o Poedit aprender o bastante a "
-"partir de arquivos traduzidos manualmente."
+"A memória de traduções não contém quaisquer entradas similares às deste "
+"ficheiro. Só será útil para traduções semi-automáticas e após o Poedit "
+"aprender os dados dos ficheiros que traduziu manualmente."
 
 msgid "Translating"
 msgstr "Traduzindo"
 
 msgid "Filling missing translations from TM..."
-msgstr "Preenchendo traduções inexistentes a partir da MT..."
+msgstr "Preencher traduções em falta com a MT..."
 
 #, c-format
 msgid "Translated %u string"
@@ -707,22 +840,22 @@ msgstr[0] "%u string traduzida"
 msgstr[1] "%u strings traduzidas"
 
 msgid "Copy from source text"
-msgstr "Copiar do texto fonte"
+msgstr "Copiar entrada original"
 
 msgid "Copy from Source Text"
-msgstr "Copiar do Texto Fonte"
+msgstr "Copiar entrada original"
 
 msgid "Clear translation"
-msgstr "Limpar tradução"
+msgstr "Apagar tradução"
 
 msgid "Clear Translation"
-msgstr "Limpar Tradução"
+msgstr "Apagar tradução"
 
 msgid "Edit comment"
 msgstr "Editar comentário"
 
 msgid "Edit Comment"
-msgstr "Editar Comentário"
+msgstr "Editar comentário"
 
 msgid "References:"
 msgstr "Referências:"
@@ -734,17 +867,23 @@ msgstr "Tudo"
 msgid "Form %i"
 msgstr "Forma %i"
 
+msgid "Singular"
+msgstr "Singular"
+
 msgid "Zero"
 msgstr "Zero"
 
 msgid "One"
-msgstr "Um"
+msgstr "Uma"
 
 msgid "Two"
-msgstr "Dois"
+msgstr "Duas"
+
+msgid "Plural"
+msgstr "Plurais"
 
 msgid "Other"
-msgstr "Outro"
+msgstr "Outra"
 
 msgid "&Bookmarks"
 msgstr "&Marcadores"
@@ -771,6 +910,12 @@ msgstr "Ocultar barra lateral"
 msgid "Show Sidebar"
 msgstr "Exibir barra lateral"
 
+msgid "Hide Status Bar"
+msgstr "Ocultar Barra de Status"
+
+msgid "Show Status Bar"
+msgstr "Mostrar Barra de Status"
+
 msgid "Source text"
 msgstr "Texto fonte"
 
@@ -780,6 +925,10 @@ msgstr "Tradução"
 msgid "ID"
 msgstr "ID"
 
+#, c-format
+msgid "Source text — %s"
+msgstr "Texto fonte - %s"
+
 msgid "unknown language"
 msgstr "idioma desconhecido"
 
@@ -790,73 +939,89 @@ msgstr "Tradução — %s"
 msgid "Error:"
 msgstr "Erro:"
 
-msgid "Project info"
-msgstr "Informações do Projeto"
+msgid "Source file"
+msgstr "Ficheiro fonte"
 
-msgid "Project name and version:"
-msgstr "Nome do projeto e versão:"
+msgid "Source file occurrence:"
+msgstr "Ocorrência no ficheiro fonte:"
 
-msgid "Language:"
-msgstr "Idioma:"
+msgid "Open in Editor"
+msgstr "Abrir no editor"
 
-msgid "Team:"
-msgstr "Time de tradutores:"
+msgid "Open in editor"
+msgstr "Abrir no editor"
 
-msgid "Team's email address:"
-msgstr "Endereço de email do time de tradutores:"
+msgid "No references for the selected item."
+msgstr "Não existem referências para o item selecionado."
 
-msgid "Charset:"
-msgstr "Tabela de caracteres:"
+#, c-format
+msgid "Error opening file %s!"
+msgstr "Erro ao abrir o ficheiro %s!"
 
-msgid "Source"
-msgstr "Fonte"
+msgid "Find"
+msgstr "Localizar"
 
-msgid "Notes"
-msgstr "Notas"
+msgid "Replace"
+msgstr "Substituir"
 
-msgid "Automatic translation"
-msgstr "Tradução automática"
+#. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.)
+msgid "Options"
+msgstr "Opções"
 
-msgid "Fuzzy translation"
-msgstr "Tradução incerta"
+msgid "Ignore case"
+msgstr "Ignorar maiúsculas/minúsculas"
 
-msgid "Notes for translators:"
-msgstr "Notas para tradutores:"
+msgid "Wrap around"
+msgstr "Moldar texto"
 
-msgid "Comment:"
-msgstr "Comentário"
+msgid "Whole words only"
+msgstr "Só palavras inteiras"
 
-msgid "Source file"
-msgstr "Arquivo fonte"
+msgid "Find in source texts"
+msgstr "Localizar nos textos fonte"
 
-msgid "Source file occurrence:"
-msgstr "Ocorrência do arquivo fonte:"
+msgid "Find in translations"
+msgstr "Localizar na tradução"
 
-msgid "Open in Editor"
-msgstr "Abrir no editor"
+msgid "Find in comments"
+msgstr "Localizar nos comentários"
 
-msgid "Open in editor"
-msgstr "Abrir no editor"
+msgid "Close"
+msgstr "Fechar"
 
-#, c-format
-msgid "Error opening file %s!"
-msgstr "Erro ao abrir arquivo %s!"
+msgid "Replace All"
+msgstr "Substituir tudo"
+
+msgid "Replace all"
+msgstr "Substituir tudo"
+
+msgid "< &Previous"
+msgstr "< An&terior"
+
+msgid "&Next >"
+msgstr "Segui&nte >"
+
+msgid "String to find"
+msgstr "Texto a procurar"
+
+msgid "Replacement string"
+msgstr "Texto de substituição"
 
 #, c-format
 msgid "Cannot execute program: %s"
-msgstr "Não foi possível executar programa: %s"
+msgstr "Não foi possível executar o programa: %s"
 
 msgid "Language Code or Name (e.g. en_GB)"
-msgstr "Código ou Nome do Idioma (ex.: pt_BR)"
+msgstr "Código ou nome do idioma (ex: pt)"
 
 msgid "Translation Language"
-msgstr "Idioma da Tradução"
+msgstr "Idioma da tradução"
 
 msgid "Language of the translation:"
 msgstr "Idioma da tradução:"
 
 msgid "Poedit - Catalogs manager"
-msgstr "Poedit - Gerenciador de catálogos"
+msgstr "Poedit - Gestor de catálogos"
 
 msgid "Catalog"
 msgstr "Catálogo"
@@ -865,28 +1030,28 @@ msgid "Total"
 msgstr "Total"
 
 msgid "Untrans"
-msgstr "Sem Tradução"
+msgstr "Por traduzir"
 
 msgid "Fuzzy"
-msgstr "Incerto"
+msgstr "Imprecisas"
 
 msgid "Bad Tokens"
-msgstr "Incorretas"
+msgstr "Símbolos inválidos"
 
 msgid "Last modified"
 msgstr "Última modificação"
 
 msgid "Select directory"
-msgstr "Selecionar pasta"
+msgstr "Escolha o diretório"
 
 msgid "Directories:"
-msgstr "Pastas:"
+msgstr "Diretórios:"
 
 msgid "<unnamed>"
 msgstr "<sem nome>"
 
 msgid "Do you want to delete the project?"
-msgstr "Deseja realmente excluir esse projeto?"
+msgstr "Pretende eliminar o projeto?"
 
 msgid "Confirmation"
 msgstr "Confirmação"
@@ -895,8 +1060,8 @@ msgid ""
 "Do you really want to do mass update of\n"
 "all catalogs in this project?"
 msgstr ""
-"Deseja realmente realizar uma atualização em\n"
-"massa de todos os catálogos desse projeto?"
+"Tem a certeza que quer mesmo atualizar\n"
+"todos os catálogos deste projeto?"
 
 msgid "Information about the translator"
 msgstr "Informações sobre o tradutor"
@@ -927,22 +1092,23 @@ msgid "Automatically compile MO file when saving"
 msgstr "Compilar atuomaticamente o arquivo MO ao salvar"
 
 msgid "Show summary after catalog update"
-msgstr "Exibir relatório após atualização do catálogo"
+msgstr "Mostar resumo após atualizar o catálogo"
 
 msgid "Check spelling"
-msgstr "Verificar ortografia"
+msgstr "Verificação ortográfica"
 
 msgid "Always change focus to text input field"
-msgstr "Mudar o foco para o campo de entrada de texto"
+msgstr "Focar sempre o campo da entrada de texto"
 
 msgid ""
 "Never let the list of strings take focus. If enabled, you must use Ctrl-"
 "arrows for keyboard navigation but you can also type text immediately, "
 "without having to press Tab to change focus."
 msgstr ""
-"Não permitir foco na lista de linhas em tradução. Se habilitado, use Ctrl-"
-"setas para navegar pelo teclado, digitando o texto sem pressionar Tab para "
-"mudar o foco."
+"Nunca deixar que a lista de entradas obtenha o foco. Se ativa, tem que usar "
+"Control+Teclas do cursor para mudar de linhas com o teclado mas também pode "
+"escrever o texto imediatamente, sem ter que premir a tecla Tab para mudar de "
+"campo."
 
 msgid "Appearance"
 msgstr "Aparência"
@@ -954,7 +1120,7 @@ msgid "Use custom text fields font:"
 msgstr "Fonte personalizada dos campos de texto:"
 
 msgid "Change UI language"
-msgstr "Selecionar idioma do Poedit"
+msgstr "Mudar idioma da aplicação"
 
 #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions
 msgid "(requires Windows 8 or newer)"
@@ -964,10 +1130,10 @@ msgid "General"
 msgstr "Geral"
 
 msgid "Use translation memory"
-msgstr "Usar memória de traduções"
+msgstr "Utilizar memória de traduções"
 
 msgid "Learn From Files..."
-msgstr "Aprender dos Arquivos..."
+msgstr "Saber mais sobre ficheiros..."
 
 msgid "Learn from files..."
 msgstr "Aprender dos arquivos..."
@@ -977,7 +1143,7 @@ msgid "Reset"
 msgstr "Redefinir"
 
 msgid "Consult TM when updating from sources"
-msgstr "Consultar MT ao atualizar das fontes"
+msgstr "Consultar memória de traduções ao atualizar das fontes"
 
 msgid ""
 "If enabled, Poedit will try to fill in new entries using your previous\n"
@@ -985,25 +1151,25 @@ msgid ""
 "near-empty, it will not be very effective. The more translations\n"
 "you edit and the larger the TM grows, the better it gets."
 msgstr ""
-"Se ativado, o Poedit irá tentar preencher as novas entradas usando\n"
-"as traduções anteriores armazenadas na memória de tradução.\n"
-" Se a MT estiver quase vazia, ela não será muito útil. Quanto mais\n"
-"traduções você editar, maior e melhor a MT irá ficar."
+"Se ativa, o Poedit tentará preencher as novas entradas utilizando as\n"
+"traduções armazenadas na memória de traduções. Se a memória\n"
+"estiver praticamente vazia, o processo não será eficiente. Quantas mais\n"
+"traduções editar e quanto maior for a memória, melhor correrá o processo."
 
 msgid "Stored translations:"
-msgstr "Traduções armazenadas:"
+msgstr "Traduções guardadas:"
 
 msgid "Database size on disk:"
-msgstr "Tamanho do banco de dados:"
+msgstr "Tamanho da base de dados no disco:"
 
 msgid "Select translation files to import"
-msgstr "Selecione os arquivos de tradução para importar"
+msgstr "Selecione os ficheiros de tradução a importar"
 
 msgid "Translation Memory"
-msgstr "Memória de Traduções"
+msgstr "Memória de traduções"
 
 msgid "Importing translations..."
-msgstr "Importando traduções..."
+msgstr "Importação de traduções..."
 
 msgid "Finalizing..."
 msgstr "Finalizando..."
@@ -1043,14 +1209,24 @@ msgstr "Novo"
 msgid "Edit"
 msgstr "Editar"
 
+msgid "Delete extractor"
+msgstr "Eliminar extrator"
+
+#, c-format
+msgid "Are you sure you want to delete the “%s” extractor?"
+msgstr "Tem a certeza de que deseja eliminar o extrator \"%s\"?"
+
 msgid "Extractors"
 msgstr "Extratores"
 
+msgid "Accounts"
+msgstr "Contas"
+
 msgid "Automatically check for updates"
 msgstr "Verificar atualizações automaticamente"
 
 msgid "Include beta versions"
-msgstr "Incluir versões Beta"
+msgstr "Incluir versões beta"
 
 msgid ""
 "Beta versions contain the latest new features and improvements, but may be a "
@@ -1088,8 +1264,41 @@ msgstr "Preservar a formatação de arquivos existentes"
 msgid "Advanced"
 msgstr "Avançado"
 
-msgid "Additional keywords"
-msgstr "Palavras-chave adicionais"
+msgid ""
+"<big>Drag and Drop Folders Here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+"<big>Arraste e solte pastas aqui</big> \n"
+"\n"
+"ou use o botão +"
+
+msgid ""
+"<big>Drag and drop folders here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+"<big>Arraste e solte pastas aqui</big> \n"
+"\n"
+"ou use o botão +"
+
+msgid "Add Folders..."
+msgstr "Adicionar Pastas..."
+
+msgid "Add folders..."
+msgstr "Adicionar pastas..."
+
+msgid "Add Files..."
+msgstr "Adicionar Arquivos..."
+
+msgid "Add files..."
+msgstr "Adicionar arquivos..."
+
+msgid "Add Wildcard..."
+msgstr "Adicionar Caractere Especial..."
+
+msgid "Add wildcard..."
+msgstr "Adicionar caractere especial..."
 
 msgid "Paths"
 msgstr "Caminhos"
@@ -1097,8 +1306,11 @@ msgstr "Caminhos"
 msgid "Excluded paths"
 msgstr "Caminhos excluídos"
 
+msgid "Additional keywords"
+msgstr "Palavras-chave adicionais"
+
 msgid "Name of the project the translation is for"
-msgstr "Nome do projeto para o qual é a tradução"
+msgstr "Nome do projeto de tradução"
 
 msgid "e.g. nplurals=2; plural=(n > 1);"
 msgstr "ex.: nplurals=2; plural=(n > 1);"
@@ -1107,61 +1319,29 @@ msgid "UTF-8 (recommended)"
 msgstr "UTF-8 (recomendado)"
 
 msgid "Please save the file first. This section cannot be edited until then."
-msgstr "Salve o arquivo primeiro. Esta seção não pode ser editada até lá."
+msgstr ""
+"Por favor guarde o ficheiro. Esta secção não pode ser editada até que o faça."
+
+msgid "Comment:"
+msgstr "Comentário:"
 
 msgid "OK"
-msgstr "OK"
+msgstr "Aceitar"
 
 msgid "C&lear"
-msgstr "&Limpar"
+msgstr "&Apagar"
 
 msgid "Clear the comment"
-msgstr "Limpar o comentário"
-
-msgid "Find..."
-msgstr "Localizar..."
-
-msgid "String to find:"
-msgstr "Procurar por:"
-
-msgid "Case sensitive"
-msgstr "Diferenciar maiúsculas e minúsculas"
-
-msgid "Start from the first item"
-msgstr "Localizar desde o início"
-
-msgid "Whole words only"
-msgstr "Somente palavras inteiras"
-
-msgid "Find in original strings"
-msgstr "Pesquisar linhas não-traduzidas"
-
-msgid "Find in translations"
-msgstr "Localizar nas traduções"
-
-msgid "Find in comments"
-msgstr "Pesquisar comentários"
-
-msgid "Find in automatic comments"
-msgstr "Pesquisar em comentários automáticos"
-
-msgid "Close"
-msgstr "Fechar"
-
-msgid "< &Previous"
-msgstr "< &Anterior"
-
-msgid "&Next >"
-msgstr "&Próximo >"
+msgstr "Apagar comentário"
 
 msgid "Create new translations project"
-msgstr "Criar novo projeto de tradução"
+msgstr "Criar novo projeto de traduções"
 
 msgid "Edit the project"
-msgstr "Editar o projeto"
+msgstr "Editar projeto"
 
 msgid "Delete the project"
-msgstr "Excluir o projeto"
+msgstr "Eliminar projeto"
 
 msgid "Update all"
 msgstr "Atualizar tudo"
@@ -1176,31 +1356,31 @@ msgid "Project name:"
 msgstr "Nome do projeto:"
 
 msgid "Browse"
-msgstr "Procurar"
+msgstr "Explorar"
 
 msgid "Add directory to the list"
-msgstr "Adicionar pasta à lista"
+msgstr "Adicionar diretório à lista"
 
 msgid "&Preferences..."
 msgstr "&Preferências..."
 
 msgid "&Close"
-msgstr "&Fechar"
+msgstr "Fe&char"
 
 msgid "E&xit"
 msgstr "&Sair"
 
 msgid "Quit"
-msgstr "Fechar"
+msgstr "Sair"
 
 msgid "&New..."
 msgstr "&Novo..."
 
 msgid "New from &POT/PO file..."
-msgstr "Atualizar pelo arquivo &POT/PO..."
+msgstr "Novo de ficheiro &POT/PO..."
 
 msgid "New From &POT/PO File..."
-msgstr "Atualizar pelo Arquivo &POT/PO..."
+msgstr "Novo de ficheiro &POT/PO..."
 
 msgid "&Open..."
 msgstr "&Abrir..."
@@ -1208,95 +1388,104 @@ msgstr "&Abrir..."
 msgid "Open Recent"
 msgstr "Abrir recentes"
 
+msgid "Open from Crowdin..."
+msgstr "Abrir do Crowdin..."
+
+msgid "Open From Crowdin..."
+msgstr "Abrir do Crowdin..."
+
 msgid "&Save"
-msgstr "&Salvar"
+msgstr "&Guardar"
 
 msgid "Save &as..."
-msgstr "Salvar &como..."
+msgstr "Guar&dar como..."
 
 msgid "Save &As..."
-msgstr "Salvar &Como..."
+msgstr "Guar&dar como..."
 
 msgid "Compile to MO..."
 msgstr "Compilar para MO..."
 
 msgid "E&xport as HTML..."
-msgstr "E&xportar como HTML..."
+msgstr "E&xportar como HTML"
 
 msgid "Check for updates..."
-msgstr "Verificar atualizações..."
+msgstr "Procurar atualizações..."
 
 msgid "Catalogs &manager"
-msgstr "&Gerenciador de catálogos"
+msgstr "Gest&or de catálogos"
 
 msgid "Catalogs &Manager"
-msgstr "&Gerenciador de Catálogos"
+msgstr "Gest&or de catálogos"
 
 msgid "Translation is &fuzzy"
-msgstr "Tradução &incerta"
+msgstr "A &tradução é imprecisa"
 
 msgid "Translation Is &Fuzzy"
-msgstr "Tradução &Incerta"
+msgstr "A tradução é i&mprecisa"
 
 msgid "Edit &comment"
-msgstr "&Editar comentário"
+msgstr "Editar &comentário"
 
 msgid "Edit &Comment"
-msgstr "&Editar Comentário"
+msgstr "Editar &comentário"
 
 msgid "Suggestions"
 msgstr "Sugestões"
 
 msgid "&Show references"
-msgstr "&Mostrar referências"
+msgstr "Mo&strar referências"
 
 msgid "&Show References"
-msgstr "&Mostrar Referências"
+msgstr "Mo&strar referências"
 
 msgid "&Find..."
 msgstr "&Localizar..."
 
+msgid "Replace..."
+msgstr "Substituir..."
+
 msgid "Find next"
-msgstr "Localizar próximo"
+msgstr "Localizar seguinte"
 
 msgid "Find previous"
 msgstr "Localizar anterior"
 
-msgid "Find"
-msgstr "Localizar"
+msgid "Find and Replace..."
+msgstr "Localizar e substituir..."
 
 msgid "Find Next"
-msgstr "Localizar Próximo"
+msgstr "Localizar seguinte"
 
 msgid "Find Previous"
-msgstr "Localizar Anterior"
+msgstr "Localizar anterior"
 
 msgid "&Preferences"
 msgstr "&Preferências"
 
 msgid "Display entry &IDs"
-msgstr "Exibir &ID da entrada"
+msgstr "Mostrar &ID das entradas"
 
 msgid "Display Entry &IDs"
-msgstr "Exibir &ID da Entrada"
+msgstr "Mostrar &ID das entradas"
 
 msgid "Sort by &file order"
-msgstr "Classificar por ordem de &arquivos"
+msgstr "Ordenar pela ordem do &ficheiro"
 
 msgid "Sort by &File Order"
-msgstr "Classificar por Ordem de &Arquivos"
+msgstr "Ordenar pela ordem do &ficheiro"
 
 msgid "Sort by &source"
-msgstr "Classificar por &fonte"
+msgstr "&Ordenar por fonte"
 
 msgid "Sort by &Source"
-msgstr "Classificar por &Fonte"
+msgstr "&Ordenar por fonte"
 
 msgid "Sort by &translation"
-msgstr "Classificar por &tradução"
+msgstr "Ordenar por &tradução"
 
 msgid "Sort by &Translation"
-msgstr "Classificar por &Tradução"
+msgstr "Ordenar por &tradução"
 
 msgid "&Group by context"
 msgstr "&Grupo pelo contexto"
@@ -1304,17 +1493,26 @@ msgstr "&Grupo pelo contexto"
 msgid "&Group By Context"
 msgstr "&Grupo Pelo Contexto"
 
+msgid "Entries with errors first"
+msgstr "Entradas com erros primeiro"
+
+msgid "Entries with Errors First"
+msgstr "Entradas com erros primeiro"
+
 msgid "&Untranslated entries first"
-msgstr "Entradas &não traduzidas primeiro"
+msgstr "Não trad&uzidas primeiro"
 
 msgid "&Untranslated Entries First"
-msgstr "Entradas &Não Traduzidas Primeiro"
+msgstr "Não trad&uzidas primeiro"
 
 msgid "Show sidebar"
 msgstr "Exibir barra lateral"
 
+msgid "Show status bar"
+msgstr "Mostrar barra de status"
+
 msgid "C&atalog"
-msgstr "Ca&tálogo"
+msgstr "C&atálogo"
 
 msgid "&Update from sources"
 msgstr "&Atualizar do código fonte"
@@ -1323,10 +1521,13 @@ msgid "&Update from Sources"
 msgstr "&Atualizar do Código Fonte"
 
 msgid "Update from &POT file..."
-msgstr "Atualizar pelo arquivo &POT..."
+msgstr "Atualizar com base em ficheiro &POT..."
 
 msgid "Update from &POT File..."
-msgstr "Atualizar pelo Arquivo &POT..."
+msgstr "Atualizar com base em ficheiro &POT..."
+
+msgid "Sync with Crowdin"
+msgstr "Sincronizar com o Crowdin"
 
 msgid "Fill missing translations from &TM..."
 msgstr "Preencher traduções ausentes da M&T..."
@@ -1335,25 +1536,25 @@ msgid "Fill Missing Translations from &TM..."
 msgstr "Preencher traduções ausentes da M&T..."
 
 msgid "&Purge deleted translations"
-msgstr "&Apagar traduções removidas"
+msgstr "&Remover traduções eliminadas"
 
 msgid "&Purge Deleted Translations"
-msgstr "&Apagar Traduções Removidas"
+msgstr "&Remover traduções eliminadas"
 
 msgid "&Validate translations"
 msgstr "&Validar traduções"
 
 msgid "&Validate Translations"
-msgstr "&Validar Traduções"
+msgstr "&Validar traduções"
 
 msgid "&Properties..."
 msgstr "&Propriedades..."
 
 msgid "&Done and next"
-msgstr "&Feito e próximo"
+msgstr "&Pronta e avançar"
 
 msgid "&Done and Next"
-msgstr "&Feito e Próximo"
+msgstr "&Pronta e avançar"
 
 msgid "&Previous translation"
 msgstr "&Tradução anterior"
@@ -1368,22 +1569,22 @@ msgid "&Next Translation"
 msgstr "Tradução &Seguinte"
 
 msgid "P&revious unfinished"
-msgstr "Incompleto ante&rior"
+msgstr "An&terior não terminada"
 
 msgid "P&revious Unfinished"
-msgstr "Incompleto Ante&rior"
+msgstr "An&terior não terminada"
 
 msgid "Ne&xt unfinished"
-msgstr "Pró&ximo incompleto"
+msgstr "Seguinte &não terminada"
 
 msgid "Ne&xt Unfinished"
-msgstr "Pró&ximo Incompleto"
+msgstr "Seguinte &não terminada"
 
 msgid "&Online help"
-msgstr "Ajuda &online"
+msgstr "Ajuda na &web"
 
 msgid "&Online Help"
-msgstr "Ajuda &Online"
+msgstr "Ajuda na &web"
 
 msgid "&GNU gettext manual"
 msgstr "Manual &GNU gettext"
@@ -1401,10 +1602,10 @@ msgid "Extractor setup"
 msgstr "Instalador do extrator"
 
 msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):"
-msgstr "Lista das extensões separadas por ponto e vírgula (ex: *.cpp;*.h):"
+msgstr "Lista de extensões separadas por ponto e vírgula (ex. *.cpp;*.h):"
 
 msgid "Invocation:"
-msgstr "Comandos:"
+msgstr "Invocação:"
 
 msgid "Command to extract translations:"
 msgstr "Comando para extrair as traduções:"
@@ -1421,100 +1622,109 @@ msgstr ""
 "%C para o sinalizador de conjunto de caracteres (veja abaixo)."
 
 msgid "An item in keywords list:"
-msgstr "Um item da lista de palavras-chave:"
+msgstr "Um item na lista de palavras-chave:"
 
 msgid ""
 "This will be attached to the command line once\n"
 "for each keyword. %k expands to the keyword."
 msgstr ""
-"Esse trecho será anexado à linha de comando uma \n"
-"vez para cada palavra-chave. %k será expandido\n"
-"para a palavra-chave."
+"Isto será anexado à linha de comandos uma vez para cada\n"
+"palavra-chave. %k será substituído pela palavra-chave."
 
 msgid "An item in input files list:"
-msgstr "Um item da lista de arquivos de entrada:"
+msgstr "Um item na lista de ficheiros de entrada:"
 
 #, c-format
 msgid ""
 "This will be attached to the command line once\n"
 "for each input file. %f expands to the filename."
 msgstr ""
-"Esse trecho será anexado à linha de comando uma \n"
-"vez para cada arquivo de entrada. %f será expandido\n"
-"para o nome do arquivo."
+"Isto será anexado à linha de comandos uma vez para cada\n"
+"ficheiro de entrada. %f será substituído pelo nome do ficheiro."
 
 msgid "Source code charset:"
-msgstr "Conjunto de caracteres do código fonte:"
+msgstr "Codificação do código fonte:"
 
 #, c-format
 msgid ""
 "This will be attached to the command line\n"
 "only if source codecharset was given. %c expands to charset value."
 msgstr ""
-"Esse trecho será anexado à linha de comando apenas \n"
-"se o conjunto de caracteres do código for fornecido.\n"
-"%c expande a marca de conjunto de caracteres."
+"Isto será anexado à linha de comandos se a codificação\n"
+"do código fonte tiver sido fornecida. %c será substituído pela codificação."
 
 msgid "Catalog properties"
 msgstr "Propriedades do catálogo"
 
+msgid "Project name and version:"
+msgstr "Nome e versão do projeto:"
+
 msgid "Plural Forms:"
-msgstr "Formas no plural:"
+msgstr "Formas plurais:"
 
 msgid "Use default rules for this language"
-msgstr "Usar regras padrão para este idioma"
+msgstr "Utilizar regras pré-definidas para este idioma"
 
 msgid "Use custom expression"
-msgstr "Usar expressão personalizada..."
+msgstr "Utilizar expressão personalizada"
 
 msgid "Learn about plural forms"
-msgstr "Saiba mais sobre formas no plural"
+msgstr "Saber mais sobre formas plurais"
+
+msgid "Charset:"
+msgstr "Codificação:"
+
+msgid "Team:"
+msgstr "Equipa:"
+
+msgid "Team's email address:"
+msgstr "Endereço eletrónico da equipa:"
 
 msgid "Translation properties"
 msgstr "Propriedades da tradução"
 
+msgid "Sources paths"
+msgstr "Caminho das fontes"
+
 msgid "Extract text from source files in the following directories:"
-msgstr "Extrair texto dos arquivos de entrada nas seguintes pastas:"
+msgstr "Extrair texto dos ficheiros fonte nestes diretórios:"
 
 msgid "Base path:"
 msgstr "Caminho base:"
 
-msgid "Sources paths"
-msgstr "Caminhos das fontes"
+msgid "Sources keywords"
+msgstr "Palavras-chave das fontes"
 
 msgid ""
 "Use these keywords (function names) to recognize translatable strings\n"
 "in source files:"
 msgstr ""
-"Utilize estas palavras-chave (nomes de funções) para reconhecer linhas\n"
-"traduzíveis nos arquivos fonte:"
+"Utilizar estas palavras-chave (nomes de funções) para reconhecer as "
+"entradas\n"
+"passíveis de tradução nos ficheiros fonte:"
 
 msgid "Learn about gettext keywords"
-msgstr "Saiba mais sobre palavras-chave gettext"
-
-msgid "Sources keywords"
-msgstr "Palavras-chave do código fonte"
+msgstr "Saber mais sobre palavras-chaves gettext"
 
 msgid "Update summary"
-msgstr "Atualizar relatório"
+msgstr "Resumo da atualização"
 
 msgid ""
 "These strings were found in the sources but were not in the catalog.\n"
 "Poedit will add them to the catalog now."
 msgstr ""
-"As seguintes linhas foram encontradas no código fonte mas não existem no "
-"catálogo.\n"
-"O Poedit irá agora adicioná-las ao catálogo."
+"Estas entradas foram encontradas no código fonte mas não estão\n"
+"no catálogo. Serão adicionadas ao catálogo."
 
 msgid "New strings"
-msgstr "Linhas novas"
+msgstr "Novas entradas"
 
 msgid ""
 "These strings are no longer in the sources.\n"
 "Poedit will remove them from the catalog now."
 msgstr ""
-"As seguintes linhas não fazem mais parte do código fonte.\n"
-"O Poedit irá removê-las do catálogo agora."
+"Estas entradas já não estão no código fonte\n"
+"e serão removidas do catálogo."
 
 msgid "Obsolete strings"
 msgstr "Linhas obsoletas"
@@ -1526,25 +1736,25 @@ msgid "Open"
 msgstr "Abrir"
 
 msgid "Save catalog"
-msgstr "Salvar catálogo"
+msgstr "Guardar catálogo"
 
 msgid "Validate"
 msgstr "Validar"
 
 msgid "Check for errors in the translation"
-msgstr "Verificar erros na tradução"
+msgstr "Procurar erros na tradução"
 
 msgid "Update"
 msgstr "Atualizar"
 
 msgid "Update catalog - synchronize it with sources"
-msgstr "Atualizar catálogo - sincronizar com as fontes"
+msgstr "Atualizar catálogo e sincronizar com o código fonte"
 
 msgid "Toggled if selected string has fuzzy translation"
-msgstr "Marcar/desmarcar linha selecionada como tradução incerta"
+msgstr "Ativada se a linha selecionada tiver uma tradução imprecisa"
 
-msgid "Show or hide the sidebar."
-msgstr "Exibir ou ocultar a barra lateral."
+msgid "Show or hide the sidebar"
+msgstr "Mostrar ou ocultar a barra lateral"
 
 #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer.
 msgid "Previous source text:"
@@ -1557,6 +1767,9 @@ msgstr ""
 "Texto de origem antigo (antes da alteração durante uma atualização) a qual a "
 "tradução aproximada se refere."
 
+msgid "Notes for translators:"
+msgstr "Notas para tradutores:"
+
 msgid "Add comment"
 msgstr "Adicionar comentário"
 
@@ -1564,7 +1777,7 @@ msgid "Add Comment"
 msgstr "Adicionar Comentário"
 
 msgid "Translation suggestions:"
-msgstr "Sugestões de tradução: "
+msgstr "Sugestões de tradução:"
 
 #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows).
 msgid "No matches found"
@@ -1583,35 +1796,34 @@ msgstr "(Novo: %i, obsoleto: %i)"
 
 #, c-format
 msgid "Importing translations: %d"
-msgstr "Importando traduções: %d"
+msgstr "Importação de traduções: %d"
 
 msgid "Poedit Update"
 msgstr "Atualização do Poedit"
 
 msgid "Preparing migration..."
-msgstr "Preparando migração..."
+msgstr "A preparar migração..."
 
 #, c-format
 msgid "Migration exit status: %d"
-msgstr "Status da saída de migração: %d"
+msgstr "Estado de migração: %d"
 
 msgid "Poedit needs to convert your translation memory to a new format."
 msgstr ""
-"O Poedit precisa converter sua memória de traduções para um novo formato."
+"O Poedit precisa de converter a memória de traduções para um novo formato."
 
 msgid ""
 "This must be done before Poedit can start. It may take a few minutes if you "
 "have lots of translations stored, but should normally be much faster."
 msgstr ""
-"Isto deve ser feito antes de iniciar o Poedit. Pode demorar alguns minutos "
-"se você possui muitas traduções armazenadas, mas geralmente deve ser mais "
-"rápido."
+"Isto deve ser feito antes de iniciar o Poedit. Pode levar alguns minutos, "
+"caso existam muitas traduções guardadas, mas também pode ser mais rápido."
 
 msgid "Proceed"
-msgstr "Prosseguir"
+msgstr "Continuar"
 
 msgid "Translation memory migration failed."
-msgstr "Falha na migração da memória de traduções."
+msgstr "Falha ao migrar a memória de traduções."
 
 #, c-format
 msgid ""
@@ -1620,34 +1832,44 @@ msgid ""
 "%s\n"
 "Please email help at poedit.net and we’ll get it fixed."
 msgstr ""
-"Os dados da memória de tradução não puderam ser migrados. O erro foi:\n"
+"Os dados da memória de traduções não foram migrados. O erro foi:\n"
 "\n"
 "%s\n"
-"Envie um e-mail para help at poedit.net que iremos ajudar a corrigir."
+"Envie uma mensagem para help at poedit.net e descreva-nos o erro."
 
 msgid "Cannot create temporary directory."
-msgstr "Não foi possível criar pasta temporária."
+msgstr "Não foi possível criar o diretório temporário."
 
 msgid "Welcome to Poedit"
 msgstr "Bem-vindo ao Poedit"
 
 msgid "Edit a translation"
-msgstr "Editar uma tradução"
+msgstr "Editar tradução"
 
 msgid "Open an existing PO file and edit the translation."
-msgstr "Abrir arquivo PO existente e editar tradução."
-
-msgid "Create new translation"
-msgstr "Criar nova tradução"
+msgstr "Abrir um ficheiro PO e editar a tradução."
 
 msgid ""
 "Take an existing PO file or POT template and create a new translation from "
 "it."
 msgstr ""
-"Criar uma nova tradução a partir de um arquivo PO existente ou modelo POT."
+"Criar uma nova tradução e obter as linhas a traduzir a partir de um ficheiro "
+"PO ou POT."
+
+msgid "Collaborate on a translation with Crowdin"
+msgstr "Participar num projeto de tradução do Crowdin"
+
+msgid ""
+"Download a file from Crowdin project, translate and sync your changes back."
+msgstr ""
+"Descarregue um ficheiro do Crowdin, traduza-o e sincronize as suas "
+"alterações."
+
+msgid "What is Crowdin?"
+msgstr "O que é o Crowdin?"
 
 msgid "There are no translations. That’s unusual."
-msgstr "Não há traduções. Isso é incomum."
+msgstr "Não existem traduções. Isto é estranho."
 
 msgid ""
 "Translatable entries aren't added manually in the Gettext system, but are "
@@ -1656,34 +1878,38 @@ msgid ""
 "Translators typically use PO template files (POTs) prepared for them by the "
 "developer."
 msgstr ""
-"Entradas traduzíveis não são adicionadas manualmente no sistema Gettext, mas "
-"são automaticamente\n"
-"extraídas a partir do código fonte. Desta maneira, elas se mantem "
-"atualizadas e precidas.\n"
-"Tradudores geralmente usam arquivos de modelo PO (POT) fornecidos pelo "
-"desenvolvedor."
+"As entradas que podem ser traduzidas não são adicionadas manualmente mas "
+"sim\n"
+"extraidas do código fonte automaticamente. Desta forma, estão sempre "
+"atualizadas.\n"
+"Normalmente, os tradutores utilizam os ficheiros POT disponibilizados pelos "
+"programadores."
 
 msgid "(Learn more about GNU gettext)"
-msgstr "(Aprenda mais sobre o GNU gettext)"
+msgstr "(Saber mais sobre o GNU gettext)"
 
 msgid "The simplest way to fill this catalog is to update it from a POT:"
 msgstr ""
-"A maneira mais fácil de preencher este catálogo é atualizá-lo a partir de um "
-"arquivo POT:"
+"O método mais fácil para preencher este catálogo é utilizar um ficheiro POT:"
 
 msgid "Update from POT"
-msgstr "Atualizar pelo arquivo POT"
+msgstr "Atualizar com base em ficheiro POT..."
 
 msgid "Take translatable strings from an existing POT template."
-msgstr "Importar strings traduzíveis de um modelo POT existente."
+msgstr "Obter linhas a traduzir a partir de um modelo POT."
 
 msgid ""
 "You can also extract translatable strings directly from the source code:"
-msgstr ""
-"Você também pode extrair strings traduzíveis diretamente do código fonte:"
+msgstr "Também pode extrair as linhas a traduzir diretamente do código fonte:"
 
 msgid "Extract from sources"
 msgstr "Extrair das fontes"
 
 msgid "Configure source code extraction in Properties."
-msgstr "Configurar extração do código fonte em Propriedades."
+msgstr "Configure a extração do código fonte nas propriedades."
+
+msgid "Sync"
+msgstr "Sincronização"
+
+msgid "Synchronize the translation with Crowdin"
+msgstr "Sincronizar tradução com o Crowdin"
diff --git a/locales/pt_PT.mo b/locales/pt_PT.mo
index 532fc6d..b099431 100644
Binary files a/locales/pt_PT.mo and b/locales/pt_PT.mo differ
diff --git a/locales/pt_PT.po b/locales/pt_PT.po
index d77be6a..556e202 100644
--- a/locales/pt_PT.po
+++ b/locales/pt_PT.po
@@ -2,8 +2,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: poedit\n"
 "Report-Msgid-Bugs-To: help at poedit.net\n"
-"POT-Creation-Date: 2015-01-10 16:00+0100\n"
-"PO-Revision-Date: 2015-03-10 12:33-0400\n"
+"POT-Creation-Date: 2015-05-27 11:31+0200\n"
+"PO-Revision-Date: 2015-05-27 05:17-0400\n"
 "Last-Translator: vslavik <vaclav at slavik.io>\n"
 "Language-Team: Portuguese\n"
 "Language: pt_PT\n"
@@ -20,10 +20,10 @@ msgid "Hide this notification message"
 msgstr "Ocultar esta notificação"
 
 msgid "Don't Show Again"
-msgstr "Não mostrar novamente"
+msgstr "Não voltar a mostrar"
 
 msgid "Don't show again"
-msgstr "Não mostrar novamente"
+msgstr "Não voltar a mostrar"
 
 #, c-format
 msgid "%i line of file '%s' was not loaded correctly."
@@ -64,16 +64,16 @@ msgid ""
 "File '%s' is read-only and cannot be saved.\n"
 "Please save it under different name."
 msgstr ""
-"O ficheiro %s é de leitura e não pode ser gravado.\n"
+"O ficheiro %s é de leitura e não pode ser guardado.\n"
 "Por favor utilize um nome diferente."
 
 #, c-format
 msgid "Couldn't save file %s."
-msgstr "O ficheiro %s não foi gravado."
+msgstr "Não foi possível guardar o ficheiro %s."
 
 msgid ""
 "There was a problem formatting the file nicely (but it was saved all right)."
-msgstr "Ocorreu um erro ao formatar o ficheiro (no entanto, foi gravado)."
+msgstr "Ocorreu um erro ao formatar o ficheiro (no entanto, foi guardado)."
 
 #, c-format
 msgid ""
@@ -82,14 +82,23 @@ msgid ""
 "\n"
 "It was saved in UTF-8 instead and the setting was modified accordingly."
 msgstr ""
-"O catálogo não pode ser gravado no formato '%s', conforme especificado nas "
+"O catálogo não pode ser guardado no formato '%s', conforme especificado nas "
 "definições.\n"
 "\n"
-"Foi gravado no formato UTF-8 e as definições alteradas em concordância."
+"Foi guardado no formato UTF-8 e as definições alteradas em concordância."
 
 msgid "Error saving catalog"
 msgstr "Erro ao gravar o catálogo"
 
+msgid "PO Translation Files"
+msgstr "Ficheiro de tradução PO"
+
+msgid "POT Translation Templates"
+msgstr "Modelos de tradução POT"
+
+msgid "All Translation Files"
+msgstr "Todos os ficheiros de tradução"
+
 msgid "Merging differences..."
 msgstr "A incorporar diferenças..."
 
@@ -109,6 +118,86 @@ msgstr "Seleção de idioma"
 msgid "You must restart Poedit for this change to take effect."
 msgstr "Tem que reiniciar o Poedit para aplicar a alteração."
 
+msgid "Downloading translations is disabled in this project."
+msgstr "A descarga de traduções está desativada para este projeto."
+
+msgid "Not authorized, please sign in again."
+msgstr "Não autorizado. Inicie novamente a sessão."
+
+msgid "Sign in to Crowdin"
+msgstr "Iniciar sessão no Crowdin"
+
+msgid ""
+"Crowdin is an online localization management platform and collaborative "
+"translation tool. Poedit can seamlessly sync PO files managed at Crowdin."
+msgstr ""
+"O serviço Crowdin é uma plataforma de gestão de traduções e uma ferramenta "
+"de colaboração. O Poedit pode sincronizar os ficheiros PO existentes nos "
+"projetos Crowdin."
+
+msgid "Sign In"
+msgstr "Iniciar sessão"
+
+msgid "Sign in"
+msgstr "Iniciar sessão"
+
+msgid "Sign Out"
+msgstr "Terminar sessão"
+
+msgid "Sign out"
+msgstr "Terminar sessão"
+
+msgid "Waiting for authentication…"
+msgstr "Aguardando autenticação..."
+
+msgid "Updating user information…"
+msgstr "Atualizando informações do utilizador..."
+
+msgid "Signed in as:"
+msgstr "Sessão iniciada como:"
+
+msgid "Learn More About Crowdin"
+msgstr "Saber mais sobre o Crowdin"
+
+msgid "Learn more about Crowdin"
+msgstr "Saber mais sobre o Crowdin"
+
+msgid "Open Crowdin translation"
+msgstr "Abrir tradução Crowdin"
+
+msgid "Project:"
+msgstr "Projeto:"
+
+msgid "Language:"
+msgstr "Idioma:"
+
+msgid "File:"
+msgstr "Ficheiro:"
+
+msgid "No translation projects listed in your Crowdin account."
+msgstr "Não existem projetos de tradução associados à sua conta Crowdin."
+
+msgid "This project has no files that can be translated in Poedit."
+msgstr "Este projeto não tem ficheiros que possam ser traduzidos com o Poedit."
+
+msgid "This file can only be edited in Crowdin’s web interface."
+msgstr "Este ficheiro apenas pode ser editado na interface web do Crowdin."
+
+msgid "Downloading latest translations…"
+msgstr "A descarregar traduções mais recentes..."
+
+msgid "Syncing with Crowdin"
+msgstr "Sincronizar com o Crowdin"
+
+msgid "Syncing with Crowdin failed."
+msgstr "Falha ao sincronizar com o Crowdin."
+
+msgid "Crowdin error"
+msgstr "Erro Crowdin"
+
+msgid "Uploading translations…"
+msgstr "A carregar traduções..."
+
 msgid "&Copy"
 msgstr "&Copiar"
 
@@ -149,12 +238,18 @@ msgid ""
 "Please open and edit the corresponding PO file instead. When you save it, "
 "the MO file will be updated as well."
 msgstr ""
-"Por favor abra e edite o ficheiro PO correspondente. Quando gravar o "
+"Por favor abra e edite o ficheiro PO correspondente. Quando guardar o "
 "ficheiro PO, o ficheiro MO também será atualizado."
 
 msgid "don't delete temporary files (for debugging)"
 msgstr "não eliminar ficheiros temporários (depuração)"
 
+msgid "handle a poedit:// URI"
+msgstr "gerir um URI poedit://"
+
+msgid "Failed to communicate with Poedit process."
+msgstr "Falha ao comunicar com o processo do Poedit."
+
 #, c-format
 msgid "Unhandled exception occurred: %s"
 msgstr "Ocorreu uma exceção não tratada: %s"
@@ -165,12 +260,6 @@ msgstr "Ocorreu uma exceção."
 msgid "Open catalog"
 msgstr "Abrir catálogo"
 
-msgid "All Files"
-msgstr "Todos os ficheiros"
-
-msgid "PO Translation Files"
-msgstr "Ficheiro de tradução PO"
-
 #, c-format
 msgid "File '%s' doesn't exist."
 msgstr "O ficheiro %s não existe."
@@ -179,7 +268,7 @@ msgstr "O ficheiro %s não existe."
 #. ("Poedit" here, but please use "%s")
 #, c-format
 msgid "About %s"
-msgstr "Sobre o %s"
+msgstr "Acerca do %s"
 
 #. TRANSLATORS: This is version information in about dialog, "%s" will be
 #. version number when used
@@ -200,7 +289,7 @@ msgid "&Edit"
 msgstr "&Editar"
 
 msgid "Undo"
-msgstr "Anular"
+msgstr "Desfazer"
 
 msgid "Redo"
 msgstr "Refazer"
@@ -399,6 +488,19 @@ msgstr "Plurais:"
 msgid "Translation:"
 msgstr "Tradução:"
 
+msgid ""
+"POT files are only templates and don’t contain any translations themselves.\n"
+"To make a translation, create a new PO file based on the template."
+msgstr ""
+"Os ficheiros POT são apenas modelos e não possuem quaisquer traduções.\n"
+"Para efetuar uma tradução, crie um novo ficheiro PO baseado no modelo."
+
+msgid "Create New Translation"
+msgstr "Criar nova tradução"
+
+msgid "Create new translation"
+msgstr "Criar nova tradução"
+
 #. TRANSLATORS: %s is language name in its basic form (as you
 #. would see e.g. in a list of supported languages). You may need
 #. to rephrase it, e.g. to an equivalent of "for language %s".
@@ -413,25 +515,25 @@ msgid "Install"
 msgstr "Instalar"
 
 msgid "Catalog modified. Do you want to save changes?"
-msgstr "O catálogo foi modificado. Gravar alterações?"
+msgstr "O catálogo foi modificado. Guardar alterações?"
 
 msgid "Save changes"
-msgstr "Gravar alterações"
+msgstr "Guardar alterações"
 
 msgid "Your changes will be lost if you don't save them."
-msgstr "Se não gravar, as alterações serão perdidas."
+msgstr "Se não guardar as alterações, estas serão perdidas."
 
 msgid "Save"
-msgstr "Gravar"
+msgstr "Guardar"
 
 msgid "Don't save"
-msgstr "Não gravar"
+msgstr "Não guardar"
 
 msgid "Don't Save"
-msgstr "Não gravar"
+msgstr "Não guardar"
 
 msgid "Save as..."
-msgstr "Gravar como..."
+msgstr "Guardar como..."
 
 msgid "Compile to..."
 msgstr "Compilar para..."
@@ -448,9 +550,6 @@ msgstr "Ficheiros HTML"
 msgid "Open catalog template"
 msgstr "Abrir modelo de catálogo"
 
-msgid "POT Translation Templates"
-msgstr "Modelos de tradução POT"
-
 msgid "Updating catalog"
 msgstr "A atualizar catálogo..."
 
@@ -492,19 +591,19 @@ msgstr ""
 "mostrados ao selecionar a entrada correspondente."
 
 msgid "The file was saved safely."
-msgstr "O ficheiro foi gravado com sucesso."
+msgstr "O ficheiro foi guardado com sucesso."
 
 msgid ""
 "The file was saved safely and compiled into the MO format, but it will "
 "probably not work correctly."
 msgstr ""
-"O ficheiro foi gravado com sucesso e o ficheiro MO foi compilado. No "
+"O ficheiro foi guardado com sucesso e o ficheiro MO foi compilado. No "
 "entanto, é possível que não funcione corretamente."
 
 msgid ""
 "The file was saved safely, but it cannot be compiled into the MO format and "
 "used."
-msgstr "O ficheiro foi gravado mas o ficheiro MO não foi criado."
+msgstr "O ficheiro foi guardado mas o ficheiro MO não foi criado."
 
 msgid ""
 "The file was compiled into the MO format, but it will probably not work "
@@ -531,18 +630,25 @@ msgstr[1] ""
 msgid "The translation is ready for use."
 msgstr "A tradução está pronta a utilizar."
 
-msgid "No references to this string found."
-msgstr "Não foi encontrada uma referência a esta entrada."
-
-msgid "Please choose the reference you want to show:"
-msgstr "Por favor escolha a referência que quer mostrar:"
-
-msgid "References"
-msgstr "Referências"
-
 msgid "Context:"
 msgstr "Contexto:"
 
+#, c-format
+msgid "Poedit automatically fixed invalid content in the file “%s”."
+msgstr ""
+"O Poedit corrigiu automaticamente o conteúdo inválido do ficheiro \"%s\"."
+
+msgid ""
+"The file contained duplicate items, which is not allowed in PO files and "
+"would prevent the file from being used. Poedit fixed the issue, but you "
+"should review translations of any items marked as fuzzy and correct them if "
+"necessary."
+msgstr ""
+"O ficheiro continha itens duplicados, o que não é permitido em ficheiros PO, "
+"e que impedia a sua utilização. O Poedit corrigiu os erros, mas você deve "
+"rever as traduções dos diversos itens marcados como imprecisos e, se "
+"necessário, corrigi-los."
+
 msgid "Language of the translation isn't set."
 msgstr "O idioma da tradução não está definido."
 
@@ -552,6 +658,24 @@ msgstr "Definir idioma"
 msgid "Set language"
 msgstr "Definir idioma"
 
+#. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)."
+msgid ""
+"Suggestions are not available if the translation language is not set "
+"correctly. Other features, such as plural forms, may be affected as well."
+msgstr ""
+"As sugestões de tradução não estarão disponíveis se o idioma do projeto não "
+"estiver definido corretamente. Outras funcionalidades, como as formas "
+"plurais, também poderão ser afetadas."
+
+msgid "Language of the translation is the same as source language."
+msgstr "O idioma da tradução coincide com o idioma do texto fonte."
+
+msgid "Fix Language"
+msgstr "Corrigir idioma"
+
+msgid "Fix language"
+msgstr "Corrigir idioma"
+
 msgid ""
 "This catalog has entries with plural forms, but doesn't have Plural-Forms "
 "header configured."
@@ -588,6 +712,7 @@ msgstr ""
 "A expressão de formas plurais utilizadas neste catálogo não são as que devem "
 "ser utilizadas pelo idioma %s."
 
+#. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the catalog is unusual for %s.")"
 msgid "Review"
 msgstr "Rever"
 
@@ -609,8 +734,14 @@ msgid_plural "%d errors"
 msgstr[0] "%d erro"
 msgstr[1] "%d erros"
 
+#, c-format
+msgid "%d entry"
+msgid_plural "%d entries"
+msgstr[0] "%d entrada"
+msgstr[1] "%d entradas"
+
 msgid " (unsaved)"
-msgstr " (não gravado)"
+msgstr " (não guardado)"
 
 msgid " (modified)"
 msgstr " (modificado)"
@@ -737,6 +868,9 @@ msgstr "Tudo"
 msgid "Form %i"
 msgstr "Forma %i"
 
+msgid "Singular"
+msgstr "Singular"
+
 msgid "Zero"
 msgstr "Zero"
 
@@ -746,6 +880,9 @@ msgstr "Uma"
 msgid "Two"
 msgstr "Duas"
 
+msgid "Plural"
+msgstr "Plurais"
+
 msgid "Other"
 msgstr "Outra"
 
@@ -774,6 +911,12 @@ msgstr "Ocultar barra lateral"
 msgid "Show Sidebar"
 msgstr "Mostrar barra lateral"
 
+msgid "Hide Status Bar"
+msgstr "Ocultar barra de estado"
+
+msgid "Show Status Bar"
+msgstr "Mostrar barra de estado"
+
 msgid "Source text"
 msgstr "Texto fonte"
 
@@ -783,6 +926,10 @@ msgstr "Tradução"
 msgid "ID"
 msgstr "ID"
 
+#, c-format
+msgid "Source text — %s"
+msgstr "Texto fonte - %s"
+
 msgid "unknown language"
 msgstr "idioma desconhecido"
 
@@ -793,57 +940,73 @@ msgstr "Tradução — %s"
 msgid "Error:"
 msgstr "Erro:"
 
-msgid "Project info"
-msgstr "Dados do projeto"
+msgid "Source file"
+msgstr "Ficheiro fonte"
 
-msgid "Project name and version:"
-msgstr "Nome e versão do projeto:"
+msgid "Source file occurrence:"
+msgstr "Ocorrência no ficheiro fonte:"
 
-msgid "Language:"
-msgstr "Linguagem:"
+msgid "Open in Editor"
+msgstr "Abrir no editor"
 
-msgid "Team:"
-msgstr "Equipa:"
+msgid "Open in editor"
+msgstr "Abrir no editor"
 
-msgid "Team's email address:"
-msgstr "Endereço eletrónico da equipa:"
+msgid "No references for the selected item."
+msgstr "Não existem referências para o item selecionado."
 
-msgid "Charset:"
-msgstr "Codificação:"
+#, c-format
+msgid "Error opening file %s!"
+msgstr "Erro ao abrir o ficheiro %s!"
 
-msgid "Source"
-msgstr "Fonte"
+msgid "Find"
+msgstr "Localizar"
 
-msgid "Notes"
-msgstr "Notas"
+msgid "Replace"
+msgstr "Substituir"
 
-msgid "Automatic translation"
-msgstr "Tradução automática"
+#. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.)
+msgid "Options"
+msgstr "Opções"
 
-msgid "Fuzzy translation"
-msgstr "Tradução imprecisa"
+msgid "Ignore case"
+msgstr "Ignorar maiúsculas/minúsculas"
 
-msgid "Notes for translators:"
-msgstr "Notas para tradutores:"
+msgid "Wrap around"
+msgstr "Moldar texto"
 
-msgid "Comment:"
-msgstr "Comentário:"
+msgid "Whole words only"
+msgstr "Só palavras inteiras"
 
-msgid "Source file"
-msgstr "Ficheiro fonte"
+msgid "Find in source texts"
+msgstr "Localizar nos textos fonte"
 
-msgid "Source file occurrence:"
-msgstr "Ocorrência no ficheiro fonte:"
+msgid "Find in translations"
+msgstr "Localizar na tradução"
 
-msgid "Open in Editor"
-msgstr "Abrir no editor"
+msgid "Find in comments"
+msgstr "Localizar nos comentários"
 
-msgid "Open in editor"
-msgstr "Abrir no editor"
+msgid "Close"
+msgstr "Fechar"
 
-#, c-format
-msgid "Error opening file %s!"
-msgstr "Erro ao abrir o ficheiro %s!"
+msgid "Replace All"
+msgstr "Substituir tudo"
+
+msgid "Replace all"
+msgstr "Substituir tudo"
+
+msgid "< &Previous"
+msgstr "< An&terior"
+
+msgid "&Next >"
+msgstr "Segui&nte >"
+
+msgid "String to find"
+msgstr "Texto a procurar"
+
+msgid "Replacement string"
+msgstr "Texto de substituição"
 
 #, c-format
 msgid "Cannot execute program: %s"
@@ -911,7 +1074,7 @@ msgid "Your Name"
 msgstr "O seu nome"
 
 msgid "Email:"
-msgstr "Email:"
+msgstr "E-mail:"
 
 msgid "your_email at example.com"
 msgstr "o_seu_email at exemplo.com"
@@ -927,7 +1090,7 @@ msgid "Editing"
 msgstr "Edição"
 
 msgid "Automatically compile MO file when saving"
-msgstr "Compilar ficheiro MO ao gravar"
+msgstr "Compilar ficheiro MO ao guardar"
 
 msgid "Show summary after catalog update"
 msgstr "Mostar resumo após atualizar o catálogo"
@@ -978,7 +1141,7 @@ msgstr "Aprender dos ficheiros..."
 
 #. TRANSLATORS: This is a button that deletes everything in the translation memory (i.e. clears/resets it).
 msgid "Reset"
-msgstr "Reiniciar"
+msgstr "Repor"
 
 msgid "Consult TM when updating from sources"
 msgstr "Consultar memória de traduções ao atualizar das fontes"
@@ -1010,7 +1173,7 @@ msgid "Importing translations..."
 msgstr "Importação de traduções..."
 
 msgid "Finalizing..."
-msgstr "Finalização..."
+msgstr "Finalizando..."
 
 msgid "Reset translation memory"
 msgstr "Reiniciar memória de traduções"
@@ -1048,9 +1211,19 @@ msgstr "Novo"
 msgid "Edit"
 msgstr "Editar"
 
+msgid "Delete extractor"
+msgstr "Eliminar extrator"
+
+#, c-format
+msgid "Are you sure you want to delete the “%s” extractor?"
+msgstr "Tem a certeza de que deseja eliminar o extrator \"%s\"?"
+
 msgid "Extractors"
 msgstr "Extratores"
 
+msgid "Accounts"
+msgstr "Contas"
+
 msgid "Automatically check for updates"
 msgstr "Procurar atualizações automaticamente"
 
@@ -1093,8 +1266,41 @@ msgstr "Manter formatação dos ficheiros existentes"
 msgid "Advanced"
 msgstr "Avançado"
 
-msgid "Additional keywords"
-msgstr "Palavras-chave extra"
+msgid ""
+"<big>Drag and Drop Folders Here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+"<big>Arraste e largue aqui os ficheiros</big>\n"
+"\n"
+"\\ou utilize o botão +"
+
+msgid ""
+"<big>Drag and drop folders here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+"<big>Arraste e largue aqui as pastas</big>\n"
+"\n"
+"\\ou utilize o botão +"
+
+msgid "Add Folders..."
+msgstr "Adicionar pastas..."
+
+msgid "Add folders..."
+msgstr "Adicionar pastas..."
+
+msgid "Add Files..."
+msgstr "Adicionar ficheiros..."
+
+msgid "Add files..."
+msgstr "Adicionar ficheiros..."
+
+msgid "Add Wildcard..."
+msgstr "Adicionar \"wildcard\"..."
+
+msgid "Add wildcard..."
+msgstr "Adicionar \"wildcard\"..."
 
 msgid "Paths"
 msgstr "Caminhos"
@@ -1102,6 +1308,9 @@ msgstr "Caminhos"
 msgid "Excluded paths"
 msgstr "Caminhos excluídos"
 
+msgid "Additional keywords"
+msgstr "Palavras-chave adicionais"
+
 msgid "Name of the project the translation is for"
 msgstr "Nome do projeto de tradução"
 
@@ -1112,7 +1321,11 @@ msgid "UTF-8 (recommended)"
 msgstr "UTF-8 (recomendado)"
 
 msgid "Please save the file first. This section cannot be edited until then."
-msgstr "Grave o ficheiro. Esta secção não pode ser editada até que o faça."
+msgstr ""
+"Por favor guarde o ficheiro. Esta secção não pode ser editada até que o faça."
+
+msgid "Comment:"
+msgstr "Comentário:"
 
 msgid "OK"
 msgstr "Aceitar"
@@ -1123,42 +1336,6 @@ msgstr "&Apagar"
 msgid "Clear the comment"
 msgstr "Apagar comentário"
 
-msgid "Find..."
-msgstr "Localizar..."
-
-msgid "String to find:"
-msgstr "Texto a procurar:"
-
-msgid "Case sensitive"
-msgstr "Diferenciar maiúsculas de minúsculas"
-
-msgid "Start from the first item"
-msgstr "Iniciar  desde a primeira entrada"
-
-msgid "Whole words only"
-msgstr "Só palavras inteiras"
-
-msgid "Find in original strings"
-msgstr "Localizar nas entradas originais"
-
-msgid "Find in translations"
-msgstr "Localizar na tradução"
-
-msgid "Find in comments"
-msgstr "Localizar nos comentários"
-
-msgid "Find in automatic comments"
-msgstr "Localizar nos comentários automáticos"
-
-msgid "Close"
-msgstr "Fechar"
-
-msgid "< &Previous"
-msgstr "< An&terior"
-
-msgid "&Next >"
-msgstr "Segui&nte >"
-
 msgid "Create new translations project"
 msgstr "Criar novo projeto de traduções"
 
@@ -1213,14 +1390,20 @@ msgstr "&Abrir..."
 msgid "Open Recent"
 msgstr "Abrir recentes"
 
+msgid "Open from Crowdin..."
+msgstr "Abrir do Crowdin..."
+
+msgid "Open From Crowdin..."
+msgstr "Abrir do Crowdin..."
+
 msgid "&Save"
-msgstr "&Gravar"
+msgstr "&Guardar"
 
 msgid "Save &as..."
-msgstr "Gra&var como..."
+msgstr "Guar&dar como..."
 
 msgid "Save &As..."
-msgstr "Gra&var como..."
+msgstr "Guar&dar como..."
 
 msgid "Compile to MO..."
 msgstr "Compilar para MO..."
@@ -1261,14 +1444,17 @@ msgstr "Mo&strar referências"
 msgid "&Find..."
 msgstr "&Localizar..."
 
+msgid "Replace..."
+msgstr "Substituir..."
+
 msgid "Find next"
 msgstr "Localizar seguinte"
 
 msgid "Find previous"
 msgstr "Localizar anterior"
 
-msgid "Find"
-msgstr "Localizar"
+msgid "Find and Replace..."
+msgstr "Localizar e substituir..."
 
 msgid "Find Next"
 msgstr "Localizar seguinte"
@@ -1309,6 +1495,12 @@ msgstr "A&grupar por contexto"
 msgid "&Group By Context"
 msgstr "A&grupar por contexto"
 
+msgid "Entries with errors first"
+msgstr "Entradas com erros primeiro"
+
+msgid "Entries with Errors First"
+msgstr "Entradas com erros primeiro"
+
 msgid "&Untranslated entries first"
 msgstr "Não trad&uzidas primeiro"
 
@@ -1318,6 +1510,9 @@ msgstr "Não trad&uzidas primeiro"
 msgid "Show sidebar"
 msgstr "Mostrar barra lateral"
 
+msgid "Show status bar"
+msgstr "Mostrar barra de estado"
+
 msgid "C&atalog"
 msgstr "C&atálogo"
 
@@ -1333,6 +1528,9 @@ msgstr "Atualizar com base em ficheiro &POT..."
 msgid "Update from &POT File..."
 msgstr "Atualizar com base em ficheiro &POT..."
 
+msgid "Sync with Crowdin"
+msgstr "Sincronizar com o Crowdin"
+
 msgid "Fill missing translations from &TM..."
 msgstr "Preencher traduções a partir da M&T..."
 
@@ -1460,6 +1658,9 @@ msgstr ""
 msgid "Catalog properties"
 msgstr "Propriedades do catálogo"
 
+msgid "Project name and version:"
+msgstr "Nome e versão do projeto:"
+
 msgid "Plural Forms:"
 msgstr "Formas plurais:"
 
@@ -1472,17 +1673,29 @@ msgstr "Utilizar expressão personalizada"
 msgid "Learn about plural forms"
 msgstr "Saber mais sobre formas plurais"
 
+msgid "Charset:"
+msgstr "Codificação:"
+
+msgid "Team:"
+msgstr "Equipa:"
+
+msgid "Team's email address:"
+msgstr "Endereço eletrónico da equipa:"
+
 msgid "Translation properties"
 msgstr "Propriedades da tradução"
 
+msgid "Sources paths"
+msgstr "Caminho das fontes"
+
 msgid "Extract text from source files in the following directories:"
 msgstr "Extrair texto dos ficheiros fonte nestes diretórios:"
 
 msgid "Base path:"
 msgstr "Caminho base:"
 
-msgid "Sources paths"
-msgstr "Caminho das fontes"
+msgid "Sources keywords"
+msgstr "Palavras-chave das fontes"
 
 msgid ""
 "Use these keywords (function names) to recognize translatable strings\n"
@@ -1495,9 +1708,6 @@ msgstr ""
 msgid "Learn about gettext keywords"
 msgstr "Saber mais sobre palavras-chaves gettext"
 
-msgid "Sources keywords"
-msgstr "Palavras-chave das fontes"
-
 msgid "Update summary"
 msgstr "Resumo da atualização"
 
@@ -1528,7 +1738,7 @@ msgid "Open"
 msgstr "Abrir"
 
 msgid "Save catalog"
-msgstr "Gravar catálogo"
+msgstr "Guardar catálogo"
 
 msgid "Validate"
 msgstr "Validar"
@@ -1545,8 +1755,8 @@ msgstr "Atualizar catálogo e sincronizar com o código fonte"
 msgid "Toggled if selected string has fuzzy translation"
 msgstr "Ativada se a linha selecionada tiver uma tradução imprecisa"
 
-msgid "Show or hide the sidebar."
-msgstr "Mostrar ou ocultar a barra lateral."
+msgid "Show or hide the sidebar"
+msgstr "Mostrar ou ocultar a barra lateral"
 
 #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer.
 msgid "Previous source text:"
@@ -1559,6 +1769,9 @@ msgstr ""
 "O texto fonte antigo (antes da alteração durante a atualização) a que a "
 "tradução imprecisa se refere."
 
+msgid "Notes for translators:"
+msgstr "Notas para tradutores:"
+
 msgid "Add comment"
 msgstr "Adicionar comentário"
 
@@ -1588,7 +1801,7 @@ msgid "Importing translations: %d"
 msgstr "Importação de traduções: %d"
 
 msgid "Poedit Update"
-msgstr "Atualização Poedit"
+msgstr "Atualização do Poedit"
 
 msgid "Preparing migration..."
 msgstr "A preparar migração..."
@@ -1638,9 +1851,6 @@ msgstr "Editar tradução"
 msgid "Open an existing PO file and edit the translation."
 msgstr "Abrir um ficheiro PO e editar a tradução."
 
-msgid "Create new translation"
-msgstr "Criar nova tradução"
-
 msgid ""
 "Take an existing PO file or POT template and create a new translation from "
 "it."
@@ -1648,6 +1858,18 @@ msgstr ""
 "Criar uma nova tradução e obter as linhas a traduzir a partir de um ficheiro "
 "PO ou POT."
 
+msgid "Collaborate on a translation with Crowdin"
+msgstr "Participar num projeto de tradução do Crowdin"
+
+msgid ""
+"Download a file from Crowdin project, translate and sync your changes back."
+msgstr ""
+"Descarregue um ficheiro do Crowdin, traduza-o e sincronize as suas "
+"alterações."
+
+msgid "What is Crowdin?"
+msgstr "O que é o Crowdin?"
+
 msgid "There are no translations. That’s unusual."
 msgstr "Não existem traduções. Isto é estranho."
 
@@ -1687,3 +1909,9 @@ msgstr "Extrair das fontes"
 
 msgid "Configure source code extraction in Properties."
 msgstr "Configure a extração do código fonte nas propriedades."
+
+msgid "Sync"
+msgstr "Sincronização"
+
+msgid "Synchronize the translation with Crowdin"
+msgstr "Sincronizar tradução com o Crowdin"
diff --git a/locales/ro.mo b/locales/ro.mo
index 000cbbd..3afaaf7 100644
Binary files a/locales/ro.mo and b/locales/ro.mo differ
diff --git a/locales/ro.po b/locales/ro.po
index c0938fd..96884c6 100644
--- a/locales/ro.po
+++ b/locales/ro.po
@@ -2,8 +2,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: poedit\n"
 "Report-Msgid-Bugs-To: help at poedit.net\n"
-"POT-Creation-Date: 2015-01-10 16:00+0100\n"
-"PO-Revision-Date: 2015-03-10 12:34-0400\n"
+"POT-Creation-Date: 2015-05-27 11:31+0200\n"
+"PO-Revision-Date: 2015-05-27 05:17-0400\n"
 "Last-Translator: vslavik <vaclav at slavik.io>\n"
 "Language-Team: Romanian\n"
 "Language: ro_RO\n"
@@ -95,6 +95,15 @@ msgstr ""
 msgid "Error saving catalog"
 msgstr "Eroare la salvarea catalogului"
 
+msgid "PO Translation Files"
+msgstr "Dosar de traducere PO"
+
+msgid "POT Translation Templates"
+msgstr "Şabloane de traducere"
+
+msgid "All Translation Files"
+msgstr ""
+
 msgid "Merging differences..."
 msgstr "Unesc diferențele..."
 
@@ -114,6 +123,85 @@ msgstr "Selectare limbă"
 msgid "You must restart Poedit for this change to take effect."
 msgstr "Trebuie să reporniți Poedit pentru ca această schimbare să aibă efect."
 
+msgid "Downloading translations is disabled in this project."
+msgstr "Descărcare traduceri este dezactivată în acest proiect."
+
+msgid "Not authorized, please sign in again."
+msgstr "Neautorizat, vă rugăm să faceţi \"sign in\" din nou."
+
+msgid "Sign in to Crowdin"
+msgstr "Conectaţi-vă la Crowdin"
+
+msgid ""
+"Crowdin is an online localization management platform and collaborative "
+"translation tool. Poedit can seamlessly sync PO files managed at Crowdin."
+msgstr ""
+"Crowdin este o platforma de management online şi instrument de traducere. "
+"Poedit perfect se sincronizează cu fişiere PO  la Crowdin."
+
+msgid "Sign In"
+msgstr "Autentificare"
+
+msgid "Sign in"
+msgstr "Autentificare"
+
+msgid "Sign Out"
+msgstr "Deconectare"
+
+msgid "Sign out"
+msgstr "Deconectare"
+
+msgid "Waiting for authentication…"
+msgstr "Aşteptati pentru autentificare..."
+
+msgid "Updating user information…"
+msgstr "Actualizarea informaţiilor de utilizator..."
+
+msgid "Signed in as:"
+msgstr "Autentificat ca:"
+
+msgid "Learn More About Crowdin"
+msgstr "Aflaţi mai multe despre Crowdin"
+
+msgid "Learn more about Crowdin"
+msgstr "Aflaţi mai multe despre Crowdin"
+
+msgid "Open Crowdin translation"
+msgstr "Deschide traducere Crowdin"
+
+msgid "Project:"
+msgstr "Proiect: :"
+
+msgid "Language:"
+msgstr "Limba:"
+
+msgid "File:"
+msgstr "Fişier:"
+
+msgid "No translation projects listed in your Crowdin account."
+msgstr "Nu sunt proiecte de traducere în contul tau Crowdin."
+
+msgid "This project has no files that can be translated in Poedit."
+msgstr "Acest proiect nu are dosare care pot fi traduse în Poedit."
+
+msgid "This file can only be edited in Crowdin’s web interface."
+msgstr ""
+
+msgid "Downloading latest translations…"
+msgstr "Descărcare ultimele traduceri..."
+
+msgid "Syncing with Crowdin"
+msgstr "Sincronizarea cu Crowdin"
+
+msgid "Syncing with Crowdin failed."
+msgstr "Sincronizarea cu Crowdin nu a reușit."
+
+msgid "Crowdin error"
+msgstr "Crowdin eroare"
+
+msgid "Uploading translations…"
+msgstr "Încărcarea traduceri..."
+
 msgid "&Copy"
 msgstr "& Copie"
 
@@ -160,6 +248,12 @@ msgstr ""
 msgid "don't delete temporary files (for debugging)"
 msgstr "nu șterge fișierele temporare (pentru depanare)"
 
+msgid "handle a poedit:// URI"
+msgstr ""
+
+msgid "Failed to communicate with Poedit process."
+msgstr ""
+
 #, c-format
 msgid "Unhandled exception occurred: %s"
 msgstr "Excepție netratată s-a produs: %s"
@@ -170,12 +264,6 @@ msgstr "Sa produs o excepție netratată."
 msgid "Open catalog"
 msgstr "Deschide catalog"
 
-msgid "All Files"
-msgstr "Toate fişierele"
-
-msgid "PO Translation Files"
-msgstr "Dosar de traducere PO"
-
 #, c-format
 msgid "File '%s' doesn't exist."
 msgstr "Fișierul '%s' nu există."
@@ -404,6 +492,17 @@ msgstr "Plural:"
 msgid "Translation:"
 msgstr "Traducere:"
 
+msgid ""
+"POT files are only templates and don’t contain any translations themselves.\n"
+"To make a translation, create a new PO file based on the template."
+msgstr ""
+
+msgid "Create New Translation"
+msgstr ""
+
+msgid "Create new translation"
+msgstr ""
+
 #. TRANSLATORS: %s is language name in its basic form (as you
 #. would see e.g. in a list of supported languages). You may need
 #. to rephrase it, e.g. to an equivalent of "for language %s".
@@ -453,9 +552,6 @@ msgstr "Fişierele HTML"
 msgid "Open catalog template"
 msgstr "Deschide model catalog"
 
-msgid "POT Translation Templates"
-msgstr "Şabloane de traducere"
-
 msgid "Updating catalog"
 msgstr "Actualizare catalog"
 
@@ -537,25 +633,45 @@ msgstr[2] ""
 msgid "The translation is ready for use."
 msgstr "Traducerea este gata de folosit."
 
-msgid "No references to this string found."
-msgstr "Nu a fost găsite referințe la acest șir."
-
-msgid "Please choose the reference you want to show:"
-msgstr "Alegeți referința care doriți să fie afișată:"
-
-msgid "References"
-msgstr "Referințe"
-
 msgid "Context:"
 msgstr "Context:"
 
-msgid "Language of the translation isn't set."
+#, c-format
+msgid "Poedit automatically fixed invalid content in the file “%s”."
 msgstr ""
 
-msgid "Set Language"
+msgid ""
+"The file contained duplicate items, which is not allowed in PO files and "
+"would prevent the file from being used. Poedit fixed the issue, but you "
+"should review translations of any items marked as fuzzy and correct them if "
+"necessary."
 msgstr ""
 
+msgid "Language of the translation isn't set."
+msgstr "Limba de traducere nu este setată."
+
+msgid "Set Language"
+msgstr "Setare limbă"
+
 msgid "Set language"
+msgstr "Setare limbă"
+
+#. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)."
+msgid ""
+"Suggestions are not available if the translation language is not set "
+"correctly. Other features, such as plural forms, may be affected as well."
+msgstr ""
+"Sugestiile nu sunt disponibile în cazul în care limba de traducere nu este "
+"setata corect. Alte caracteristici, cum ar fi forme de plural, pot fi "
+"afectate."
+
+msgid "Language of the translation is the same as source language."
+msgstr ""
+
+msgid "Fix Language"
+msgstr ""
+
+msgid "Fix language"
 msgstr ""
 
 msgid ""
@@ -592,6 +708,7 @@ msgstr "Repară antetul"
 msgid "Plural forms expression used by the catalog is unusual for %s."
 msgstr ""
 
+#. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the catalog is unusual for %s.")"
 msgid "Review"
 msgstr ""
 
@@ -614,6 +731,13 @@ msgstr[0] ""
 msgstr[1] ""
 msgstr[2] ""
 
+#, c-format
+msgid "%d entry"
+msgid_plural "%d entries"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+
 msgid " (unsaved)"
 msgstr ""
 
@@ -732,6 +856,9 @@ msgstr ""
 msgid "Form %i"
 msgstr "Forma %i"
 
+msgid "Singular"
+msgstr ""
+
 msgid "Zero"
 msgstr ""
 
@@ -741,6 +868,9 @@ msgstr ""
 msgid "Two"
 msgstr ""
 
+msgid "Plural"
+msgstr ""
+
 msgid "Other"
 msgstr ""
 
@@ -769,6 +899,12 @@ msgstr ""
 msgid "Show Sidebar"
 msgstr ""
 
+msgid "Hide Status Bar"
+msgstr ""
+
+msgid "Show Status Bar"
+msgstr ""
+
 msgid "Source text"
 msgstr "Text sursă"
 
@@ -778,6 +914,10 @@ msgstr "raducere"
 msgid "ID"
 msgstr ""
 
+#, c-format
+msgid "Source text — %s"
+msgstr ""
+
 msgid "unknown language"
 msgstr ""
 
@@ -788,57 +928,73 @@ msgstr ""
 msgid "Error:"
 msgstr "Eroare:"
 
-msgid "Project info"
-msgstr "Informații despre proiect"
+msgid "Source file"
+msgstr "Fișier sursă"
 
-msgid "Project name and version:"
-msgstr "Nume și versiune proiect:"
+msgid "Source file occurrence:"
+msgstr "Apariția fișierului sursă:"
 
-msgid "Language:"
-msgstr "Limba:"
+msgid "Open in Editor"
+msgstr ""
 
-msgid "Team:"
-msgstr "Echipa:"
+msgid "Open in editor"
+msgstr ""
 
-msgid "Team's email address:"
-msgstr "Adresa de E-mail a echipei:"
+msgid "No references for the selected item."
+msgstr ""
 
-msgid "Charset:"
-msgstr "Set de caractere:"
+#, c-format
+msgid "Error opening file %s!"
+msgstr "Eroare la deschiderea fișierului %s!"
 
-msgid "Source"
-msgstr "Sursă"
+msgid "Find"
+msgstr ""
 
-msgid "Notes"
-msgstr "Note"
+msgid "Replace"
+msgstr ""
 
-msgid "Automatic translation"
-msgstr "Traducere automată"
+#. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.)
+msgid "Options"
+msgstr ""
 
-msgid "Fuzzy translation"
-msgstr "Traducere aproximativă"
+msgid "Ignore case"
+msgstr ""
 
-msgid "Notes for translators:"
-msgstr "Note pentru traducători:"
+msgid "Wrap around"
+msgstr ""
 
-msgid "Comment:"
-msgstr "Comentariu:"
+msgid "Whole words only"
+msgstr "Doar cuvinte întregi"
 
-msgid "Source file"
-msgstr "Fișier sursă"
+msgid "Find in source texts"
+msgstr ""
 
-msgid "Source file occurrence:"
-msgstr "Apariția fișierului sursă:"
+msgid "Find in translations"
+msgstr ""
 
-msgid "Open in Editor"
+msgid "Find in comments"
+msgstr "Găsește în comentarii"
+
+msgid "Close"
+msgstr "Închide"
+
+msgid "Replace All"
 msgstr ""
 
-msgid "Open in editor"
+msgid "Replace all"
 msgstr ""
 
-#, c-format
-msgid "Error opening file %s!"
-msgstr "Eroare la deschiderea fișierului %s!"
+msgid "< &Previous"
+msgstr ""
+
+msgid "&Next >"
+msgstr ""
+
+msgid "String to find"
+msgstr ""
+
+msgid "Replacement string"
+msgstr ""
 
 #, c-format
 msgid "Cannot execute program: %s"
@@ -1032,9 +1188,19 @@ msgstr "Nou"
 msgid "Edit"
 msgstr "Editare"
 
+msgid "Delete extractor"
+msgstr ""
+
+#, c-format
+msgid "Are you sure you want to delete the “%s” extractor?"
+msgstr ""
+
 msgid "Extractors"
 msgstr ""
 
+msgid "Accounts"
+msgstr ""
+
 msgid "Automatically check for updates"
 msgstr ""
 
@@ -1073,7 +1239,34 @@ msgstr ""
 msgid "Advanced"
 msgstr ""
 
-msgid "Additional keywords"
+msgid ""
+"<big>Drag and Drop Folders Here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+
+msgid ""
+"<big>Drag and drop folders here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+
+msgid "Add Folders..."
+msgstr ""
+
+msgid "Add folders..."
+msgstr ""
+
+msgid "Add Files..."
+msgstr ""
+
+msgid "Add files..."
+msgstr ""
+
+msgid "Add Wildcard..."
+msgstr ""
+
+msgid "Add wildcard..."
 msgstr ""
 
 msgid "Paths"
@@ -1082,6 +1275,9 @@ msgstr "Căi"
 msgid "Excluded paths"
 msgstr ""
 
+msgid "Additional keywords"
+msgstr ""
+
 msgid "Name of the project the translation is for"
 msgstr ""
 
@@ -1094,6 +1290,9 @@ msgstr "UTF-8 (recomandat)"
 msgid "Please save the file first. This section cannot be edited until then."
 msgstr ""
 
+msgid "Comment:"
+msgstr "Comentariu:"
+
 msgid "OK"
 msgstr "OK"
 
@@ -1103,42 +1302,6 @@ msgstr "Curăță"
 msgid "Clear the comment"
 msgstr "Curăță comentariul"
 
-msgid "Find..."
-msgstr "Găsește..."
-
-msgid "String to find:"
-msgstr "Șir de găsit:"
-
-msgid "Case sensitive"
-msgstr "Sensibil la majuscule"
-
-msgid "Start from the first item"
-msgstr "Începe de la primul element"
-
-msgid "Whole words only"
-msgstr "Doar cuvinte întregi"
-
-msgid "Find in original strings"
-msgstr "Găsește în șirurile originale"
-
-msgid "Find in translations"
-msgstr ""
-
-msgid "Find in comments"
-msgstr "Găsește în comentarii"
-
-msgid "Find in automatic comments"
-msgstr "Găsește în comentariile automate"
-
-msgid "Close"
-msgstr "Închide"
-
-msgid "< &Previous"
-msgstr ""
-
-msgid "&Next >"
-msgstr ""
-
 msgid "Create new translations project"
 msgstr "Creează un nou proiect de traduceri"
 
@@ -1193,6 +1356,12 @@ msgstr "&Deschide..."
 msgid "Open Recent"
 msgstr ""
 
+msgid "Open from Crowdin..."
+msgstr ""
+
+msgid "Open From Crowdin..."
+msgstr ""
+
 msgid "&Save"
 msgstr "&Salvează"
 
@@ -1241,13 +1410,16 @@ msgstr "&Arată referințe"
 msgid "&Find..."
 msgstr "&Găsește..."
 
+msgid "Replace..."
+msgstr ""
+
 msgid "Find next"
 msgstr ""
 
 msgid "Find previous"
 msgstr ""
 
-msgid "Find"
+msgid "Find and Replace..."
 msgstr ""
 
 msgid "Find Next"
@@ -1289,6 +1461,12 @@ msgstr ""
 msgid "&Group By Context"
 msgstr ""
 
+msgid "Entries with errors first"
+msgstr ""
+
+msgid "Entries with Errors First"
+msgstr ""
+
 msgid "&Untranslated entries first"
 msgstr "&Întâi intrările netraduse"
 
@@ -1298,6 +1476,9 @@ msgstr "&Întâi intrările netraduse"
 msgid "Show sidebar"
 msgstr ""
 
+msgid "Show status bar"
+msgstr ""
+
 msgid "C&atalog"
 msgstr "C&atalog"
 
@@ -1313,6 +1494,9 @@ msgstr "Actualizează din fișier &POT..."
 msgid "Update from &POT File..."
 msgstr "Actualizează din fișier &POT..."
 
+msgid "Sync with Crowdin"
+msgstr ""
+
 msgid "Fill missing translations from &TM..."
 msgstr ""
 
@@ -1437,6 +1621,9 @@ msgstr ""
 msgid "Catalog properties"
 msgstr "Propietăți catalog"
 
+msgid "Project name and version:"
+msgstr "Nume și versiune proiect:"
+
 msgid "Plural Forms:"
 msgstr "Forme plural:"
 
@@ -1449,17 +1636,29 @@ msgstr ""
 msgid "Learn about plural forms"
 msgstr "Învățați despre formele de plural"
 
+msgid "Charset:"
+msgstr "Set de caractere:"
+
+msgid "Team:"
+msgstr "Echipa:"
+
+msgid "Team's email address:"
+msgstr "Adresa de E-mail a echipei:"
+
 msgid "Translation properties"
 msgstr ""
 
+msgid "Sources paths"
+msgstr "Căile surselor"
+
 msgid "Extract text from source files in the following directories:"
 msgstr "Extrage textul din fișierele sursă în următoarele directoare:"
 
 msgid "Base path:"
 msgstr "Cale de bază:"
 
-msgid "Sources paths"
-msgstr "Căile surselor"
+msgid "Sources keywords"
+msgstr "Surse cuvinte-cheie"
 
 msgid ""
 "Use these keywords (function names) to recognize translatable strings\n"
@@ -1472,9 +1671,6 @@ msgstr ""
 msgid "Learn about gettext keywords"
 msgstr ""
 
-msgid "Sources keywords"
-msgstr "Surse cuvinte-cheie"
-
 msgid "Update summary"
 msgstr "Actualizare rezumat"
 
@@ -1522,7 +1718,7 @@ msgstr "Actualizare catalog - sincronizează-l cu sursele"
 msgid "Toggled if selected string has fuzzy translation"
 msgstr "Comută starea traducerii șirului selectat între aproximativă și exactă"
 
-msgid "Show or hide the sidebar."
+msgid "Show or hide the sidebar"
 msgstr ""
 
 #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer.
@@ -1534,6 +1730,9 @@ msgid ""
 "translation corresponds to."
 msgstr ""
 
+msgid "Notes for translators:"
+msgstr "Note pentru traducători:"
+
 msgid "Add comment"
 msgstr ""
 
@@ -1606,14 +1805,21 @@ msgstr ""
 msgid "Open an existing PO file and edit the translation."
 msgstr ""
 
-msgid "Create new translation"
-msgstr ""
-
 msgid ""
 "Take an existing PO file or POT template and create a new translation from "
 "it."
 msgstr ""
 
+msgid "Collaborate on a translation with Crowdin"
+msgstr ""
+
+msgid ""
+"Download a file from Crowdin project, translate and sync your changes back."
+msgstr ""
+
+msgid "What is Crowdin?"
+msgstr ""
+
 msgid "There are no translations. That’s unusual."
 msgstr ""
 
@@ -1646,3 +1852,9 @@ msgstr ""
 
 msgid "Configure source code extraction in Properties."
 msgstr ""
+
+msgid "Sync"
+msgstr ""
+
+msgid "Synchronize the translation with Crowdin"
+msgstr ""
diff --git a/locales/ru.mo b/locales/ru.mo
index 6a31aec..74eee00 100644
Binary files a/locales/ru.mo and b/locales/ru.mo differ
diff --git a/locales/ru.po b/locales/ru.po
index 792a96a..378d7fe 100644
--- a/locales/ru.po
+++ b/locales/ru.po
@@ -2,8 +2,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: poedit\n"
 "Report-Msgid-Bugs-To: help at poedit.net\n"
-"POT-Creation-Date: 2015-01-10 16:00+0100\n"
-"PO-Revision-Date: 2015-03-10 12:34-0400\n"
+"POT-Creation-Date: 2015-05-27 11:31+0200\n"
+"PO-Revision-Date: 2015-05-27 05:17-0400\n"
 "Last-Translator: vslavik <vaclav at slavik.io>\n"
 "Language-Team: Russian\n"
 "Language: ru_RU\n"
@@ -96,6 +96,15 @@ msgstr ""
 msgid "Error saving catalog"
 msgstr "Не удалось открыть каталог"
 
+msgid "PO Translation Files"
+msgstr "Файлы перевода PO"
+
+msgid "POT Translation Templates"
+msgstr "Шаблоны перевода POT"
+
+msgid "All Translation Files"
+msgstr "Все файлы переводов"
+
 msgid "Merging differences..."
 msgstr "Объединение различий..."
 
@@ -115,6 +124,87 @@ msgstr "Выбор языка"
 msgid "You must restart Poedit for this change to take effect."
 msgstr "Чтобы это изменение вступило в силу, необходимо перезапустить Poedit."
 
+msgid "Downloading translations is disabled in this project."
+msgstr "Загрузка переводов отключена в этом проекте."
+
+msgid "Not authorized, please sign in again."
+msgstr "Не авторизовано, пожалуйста войдите снова."
+
+msgid "Sign in to Crowdin"
+msgstr "Войти в Crowdin"
+
+msgid ""
+"Crowdin is an online localization management platform and collaborative "
+"translation tool. Poedit can seamlessly sync PO files managed at Crowdin."
+msgstr ""
+"Crowdin - это онлайн инструмент для совместной локализации и перевода. "
+"Poedit может автоматически синхронизировать PO файлы с Crowdin."
+
+msgid "Sign In"
+msgstr "Войти в систему"
+
+msgid "Sign in"
+msgstr "Войти"
+
+msgid "Sign Out"
+msgstr "Выйти"
+
+msgid "Sign out"
+msgstr "Выйти"
+
+msgid "Waiting for authentication…"
+msgstr "Ожидание авторизации…"
+
+msgid "Updating user information…"
+msgstr "Обновление информации о пользователе…"
+
+msgid "Signed in as:"
+msgstr "Вы вошли как:"
+
+msgid "Learn More About Crowdin"
+msgstr "Узнать больше о Crowdin"
+
+msgid "Learn more about Crowdin"
+msgstr "Узнать больше о Crowdin"
+
+msgid "Open Crowdin translation"
+msgstr "Открыть перевод Crowdin"
+
+msgid "Project:"
+msgstr "Проект:"
+
+msgid "Language:"
+msgstr "Язык:"
+
+msgid "File:"
+msgstr "Файл:"
+
+msgid "No translation projects listed in your Crowdin account."
+msgstr "В вашем аккаунте Crowdin нет проектов для перевода."
+
+msgid "This project has no files that can be translated in Poedit."
+msgstr ""
+"Этот проект не содержит файлов, которые могут быть переведены с помощью "
+"Poedit."
+
+msgid "This file can only be edited in Crowdin’s web interface."
+msgstr "Этот файл можно редактировать только в веб-интерфейсе Crowdin."
+
+msgid "Downloading latest translations…"
+msgstr "Загрузка новейших переводов…"
+
+msgid "Syncing with Crowdin"
+msgstr "Синхронизация с Crowdin"
+
+msgid "Syncing with Crowdin failed."
+msgstr "Синхронизация с Crowdin не удалась."
+
+msgid "Crowdin error"
+msgstr "Ошибка Crowdin"
+
+msgid "Uploading translations…"
+msgstr "Выгрузка переводов…"
+
 msgid "&Copy"
 msgstr "&Копировать"
 
@@ -161,6 +251,12 @@ msgstr ""
 msgid "don't delete temporary files (for debugging)"
 msgstr "не удалять временные файлы (для отладки)"
 
+msgid "handle a poedit:// URI"
+msgstr "обработать poedit:// адрес"
+
+msgid "Failed to communicate with Poedit process."
+msgstr "Не удалось подключиться к процессу Poedit."
+
 #, c-format
 msgid "Unhandled exception occurred: %s"
 msgstr "Произошло непредвиденное исключение: %s"
@@ -171,12 +267,6 @@ msgstr "Произошло непредвиденное исключение."
 msgid "Open catalog"
 msgstr "Открыть каталог"
 
-msgid "All Files"
-msgstr "Все файлы"
-
-msgid "PO Translation Files"
-msgstr "Файлы перевода PO"
-
 #, c-format
 msgid "File '%s' doesn't exist."
 msgstr "Файл «%s» не существует."
@@ -405,6 +495,19 @@ msgstr "Множественное:"
 msgid "Translation:"
 msgstr "Перевод:"
 
+msgid ""
+"POT files are only templates and don’t contain any translations themselves.\n"
+"To make a translation, create a new PO file based on the template."
+msgstr ""
+"Файлы POT являются шаблонами и не содержат в себе никаких переводов.\n"
+"Чтобы сделать перевод создайте файл PO из шаблона."
+
+msgid "Create New Translation"
+msgstr "Создать новый перевод"
+
+msgid "Create new translation"
+msgstr "Создать новый перевод"
+
 #. TRANSLATORS: %s is language name in its basic form (as you
 #. would see e.g. in a list of supported languages). You may need
 #. to rephrase it, e.g. to an equivalent of "for language %s".
@@ -453,9 +556,6 @@ msgstr "HTML-файлы"
 msgid "Open catalog template"
 msgstr "Открыть шаблон каталога"
 
-msgid "POT Translation Templates"
-msgstr "Шаблоны перевода POT"
-
 msgid "Updating catalog"
 msgstr "Обновление каталога"
 
@@ -484,8 +584,8 @@ msgstr ""
 msgid "%d issue with the translation found."
 msgid_plural "%d issues with the translation found."
 msgstr[0] "В переводе найдена %d проблема."
-msgstr[1] "В переводы найдены %d проблемы."
-msgstr[2] "В переводы найдены %d проблемы."
+msgstr[1] "В переводе найдены %d проблемы."
+msgstr[2] "В переводе найдено %d проблем."
 
 msgid "Validation results"
 msgstr "Результаты проверки"
@@ -540,18 +640,24 @@ msgstr[2] "Перевод готов к использованию, но %d за
 msgid "The translation is ready for use."
 msgstr "Перевод готов к использованию."
 
-msgid "No references to this string found."
-msgstr "Не найдены связи для этой строки."
-
-msgid "Please choose the reference you want to show:"
-msgstr "Выберите связь для отображения:"
-
-msgid "References"
-msgstr "Связи"
-
 msgid "Context:"
 msgstr "Контекст:"
 
+#, c-format
+msgid "Poedit automatically fixed invalid content in the file “%s”."
+msgstr "Poedit автоматически исправил неверное содержимое в файле «%s»."
+
+msgid ""
+"The file contained duplicate items, which is not allowed in PO files and "
+"would prevent the file from being used. Poedit fixed the issue, but you "
+"should review translations of any items marked as fuzzy and correct them if "
+"necessary."
+msgstr ""
+"Этот файл содержал в себе повторяющиеся элементы, которые не разрешаются в "
+"PO-файлах и предотвращают файл от использования. Poedit исправил их, но "
+"следует просмотреть переводы всех элементов, помеченные как неточные и "
+"исправить их при необходимости."
+
 msgid "Language of the translation isn't set."
 msgstr "Язык перевода ещё не указан."
 
@@ -561,6 +667,23 @@ msgstr "Выбрать язык"
 msgid "Set language"
 msgstr "Задать язык"
 
+#. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)."
+msgid ""
+"Suggestions are not available if the translation language is not set "
+"correctly. Other features, such as plural forms, may be affected as well."
+msgstr ""
+"Предложения не доступны, если язык перевода не установлен. Другие функции, "
+"такие как формы множественного числа, также могут быть затронуты."
+
+msgid "Language of the translation is the same as source language."
+msgstr "Язык перевода совпадает с исходным языком."
+
+msgid "Fix Language"
+msgstr "Исправить язык"
+
+msgid "Fix language"
+msgstr "Исправить язык"
+
 msgid ""
 "This catalog has entries with plural forms, but doesn't have Plural-Forms "
 "header configured."
@@ -597,6 +720,7 @@ msgstr ""
 "Выражение формы множественного числа, используемое в каталоге, является "
 "необычным для %s."
 
+#. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the catalog is unusual for %s.")"
 msgid "Review"
 msgstr "Проверить"
 
@@ -619,6 +743,13 @@ msgstr[0] "%d ошибка"
 msgstr[1] "%d ошибок"
 msgstr[2] "%d ошибок"
 
+#, c-format
+msgid "%d entry"
+msgid_plural "%d entries"
+msgstr[0] "%d запись"
+msgstr[1] "%d записи"
+msgstr[2] "%d записей"
+
 msgid " (unsaved)"
 msgstr " (не сохранён)"
 
@@ -745,6 +876,9 @@ msgstr "Всё"
 msgid "Form %i"
 msgstr "Форма %i"
 
+msgid "Singular"
+msgstr "Единственное"
+
 msgid "Zero"
 msgstr "Ноль"
 
@@ -754,6 +888,9 @@ msgstr "Один"
 msgid "Two"
 msgstr "Два"
 
+msgid "Plural"
+msgstr "Множественное"
+
 msgid "Other"
 msgstr "Другое"
 
@@ -782,6 +919,12 @@ msgstr "Скрыть боковую панель"
 msgid "Show Sidebar"
 msgstr "Показать боковую панель"
 
+msgid "Hide Status Bar"
+msgstr "Скрыть строку состояния"
+
+msgid "Show Status Bar"
+msgstr "Показать строку состояния"
+
 msgid "Source text"
 msgstr "Исходный текст"
 
@@ -791,6 +934,10 @@ msgstr "Перевод"
 msgid "ID"
 msgstr "Код"
 
+#, c-format
+msgid "Source text — %s"
+msgstr "Исходный текст — %s"
+
 msgid "unknown language"
 msgstr "неизвестный язык"
 
@@ -801,57 +948,73 @@ msgstr "Перевод — %s"
 msgid "Error:"
 msgstr "Ошибка:"
 
-msgid "Project info"
-msgstr "Сведения о проекте"
+msgid "Source file"
+msgstr "Исходный файл"
 
-msgid "Project name and version:"
-msgstr "Название и версия проекта:"
+msgid "Source file occurrence:"
+msgstr "Вхождение исходного файла:"
 
-msgid "Language:"
-msgstr "Язык:"
+msgid "Open in Editor"
+msgstr "Открыть в редакторе"
 
-msgid "Team:"
-msgstr "Команда:"
+msgid "Open in editor"
+msgstr "Открыть в редакторе"
 
-msgid "Team's email address:"
-msgstr "Адрес эл. почты команды:"
+msgid "No references for the selected item."
+msgstr "Нет упоминаний для выбранного элемента."
 
-msgid "Charset:"
-msgstr "Кодировка:"
+#, c-format
+msgid "Error opening file %s!"
+msgstr "Не удалось открыть файл %s"
 
-msgid "Source"
-msgstr "Исходный текст"
+msgid "Find"
+msgstr "Искать"
 
-msgid "Notes"
-msgstr "Примечания"
+msgid "Replace"
+msgstr "Заменить"
 
-msgid "Automatic translation"
-msgstr "Автоматический перевод"
+#. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.)
+msgid "Options"
+msgstr "Параметры"
 
-msgid "Fuzzy translation"
-msgstr "Неточный перевод"
+msgid "Ignore case"
+msgstr "Игнорировать регистр"
 
-msgid "Notes for translators:"
-msgstr "Примечания для переводчиков:"
+msgid "Wrap around"
+msgstr "Искать по кругу"
 
-msgid "Comment:"
-msgstr "Комментарий:"
+msgid "Whole words only"
+msgstr "Только полные слова"
 
-msgid "Source file"
-msgstr "Исходный файл"
+msgid "Find in source texts"
+msgstr "Найти в исходных текстах"
 
-msgid "Source file occurrence:"
-msgstr "Вхождение исходного файла:"
+msgid "Find in translations"
+msgstr "Искать в переводах"
 
-msgid "Open in Editor"
-msgstr "Открыть в редакторе"
+msgid "Find in comments"
+msgstr "Искать в комментариях"
 
-msgid "Open in editor"
-msgstr "Открыть в редакторе"
+msgid "Close"
+msgstr "Закрыть"
 
-#, c-format
-msgid "Error opening file %s!"
-msgstr "Не удалось открыть файл %s"
+msgid "Replace All"
+msgstr "Заменить все"
+
+msgid "Replace all"
+msgstr "Заменить все"
+
+msgid "< &Previous"
+msgstr "< &Предыдущий"
+
+msgid "&Next >"
+msgstr "&Далее >"
+
+msgid "String to find"
+msgstr "Искомая строка"
+
+msgid "Replacement string"
+msgstr "Замена"
 
 #, c-format
 msgid "Cannot execute program: %s"
@@ -1038,7 +1201,7 @@ msgstr "Отмена"
 #. Long text looks weird there, too short (like TM) too, but less so. "General" is about ideal
 #. length there.
 msgid "TM"
-msgstr "Память переводов"
+msgstr "ПП"
 
 msgid ""
 "Source code extractors are used to find translatable strings in the source "
@@ -1053,9 +1216,19 @@ msgstr "Новый"
 msgid "Edit"
 msgstr "Править"
 
+msgid "Delete extractor"
+msgstr "Удалить экстрактор"
+
+#, c-format
+msgid "Are you sure you want to delete the “%s” extractor?"
+msgstr "Вы уверены, что хотите удалить экстрактор \"%s\"?"
+
 msgid "Extractors"
 msgstr "Экстракторы"
 
+msgid "Accounts"
+msgstr "Учетные записи"
+
 msgid "Automatically check for updates"
 msgstr "Автоматически проверять наличие обновлений"
 
@@ -1099,8 +1272,41 @@ msgstr "Использовать форматирование существую
 msgid "Advanced"
 msgstr "Расширенные параметры"
 
-msgid "Additional keywords"
-msgstr "Дополнительные ключевые слова"
+msgid ""
+"<big>Drag and Drop Folders Here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+"<big>Перетащите папки сюда</big>\n"
+"\n"
+"или используйте кнопку +"
+
+msgid ""
+"<big>Drag and drop folders here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+"<big>Перетащите папки сюда</big>\n"
+"\n"
+"или используйте кнопку +"
+
+msgid "Add Folders..."
+msgstr "Добавить папки..."
+
+msgid "Add folders..."
+msgstr "Добавить папки..."
+
+msgid "Add Files..."
+msgstr "Добавить файлы..."
+
+msgid "Add files..."
+msgstr "Добавить файлы..."
+
+msgid "Add Wildcard..."
+msgstr "Добавить по шаблону..."
+
+msgid "Add wildcard..."
+msgstr "Добавить по шаблону..."
 
 msgid "Paths"
 msgstr "Папки"
@@ -1108,6 +1314,9 @@ msgstr "Папки"
 msgid "Excluded paths"
 msgstr "Исключенные пути"
 
+msgid "Additional keywords"
+msgstr "Дополнительные ключевые слова"
+
 msgid "Name of the project the translation is for"
 msgstr "Название проекта перевода для"
 
@@ -1120,6 +1329,9 @@ msgstr "UTF-8 (рекомендуется)"
 msgid "Please save the file first. This section cannot be edited until then."
 msgstr "Сначала нужно сохранить файл. До этого данный раздел нельзя изменить."
 
+msgid "Comment:"
+msgstr "Комментарий:"
+
 msgid "OK"
 msgstr "ОК"
 
@@ -1129,42 +1341,6 @@ msgstr "О&чистить"
 msgid "Clear the comment"
 msgstr "Удалить комментарий"
 
-msgid "Find..."
-msgstr "Поиск..."
-
-msgid "String to find:"
-msgstr "Искомая строка:"
-
-msgid "Case sensitive"
-msgstr "С учётом регистра"
-
-msgid "Start from the first item"
-msgstr "Начать с первого пункта"
-
-msgid "Whole words only"
-msgstr "Только полные слова"
-
-msgid "Find in original strings"
-msgstr "Искать в исходных строках"
-
-msgid "Find in translations"
-msgstr "Искать в переводах"
-
-msgid "Find in comments"
-msgstr "Искать в комментариях"
-
-msgid "Find in automatic comments"
-msgstr "Искать в автоматических комментариях"
-
-msgid "Close"
-msgstr "Закрыть"
-
-msgid "< &Previous"
-msgstr "< &Предыдущий"
-
-msgid "&Next >"
-msgstr "&Далее >"
-
 msgid "Create new translations project"
 msgstr "Создать новый проект переводов"
 
@@ -1219,6 +1395,12 @@ msgstr "&Открыть..."
 msgid "Open Recent"
 msgstr "Открыть последние файлы"
 
+msgid "Open from Crowdin..."
+msgstr "Открыть из Crowdin..."
+
+msgid "Open From Crowdin..."
+msgstr "Открыть из Crowdin..."
+
 msgid "&Save"
 msgstr "&Сохранить"
 
@@ -1267,14 +1449,17 @@ msgstr "&Показать связи"
 msgid "&Find..."
 msgstr "&Найти..."
 
+msgid "Replace..."
+msgstr "Заменить..."
+
 msgid "Find next"
 msgstr "Далее"
 
 msgid "Find previous"
 msgstr "Назад"
 
-msgid "Find"
-msgstr "Искать"
+msgid "Find and Replace..."
+msgstr "Найти и заменить..."
 
 msgid "Find Next"
 msgstr "Далее"
@@ -1315,6 +1500,12 @@ msgstr "&Группировать по контексту"
 msgid "&Group By Context"
 msgstr "&Группировать по контексту"
 
+msgid "Entries with errors first"
+msgstr "Сперва отображать записи с ошибками"
+
+msgid "Entries with Errors First"
+msgstr "Сперва отображать записи с Ошибками"
+
 msgid "&Untranslated entries first"
 msgstr "Сначала &непереведённые записи"
 
@@ -1324,6 +1515,9 @@ msgstr "Сначала &непереведённые записи"
 msgid "Show sidebar"
 msgstr "Показать боковую панель"
 
+msgid "Show status bar"
+msgstr "Показать строку состояния"
+
 msgid "C&atalog"
 msgstr "&Каталог"
 
@@ -1339,6 +1533,9 @@ msgstr "Обновить из &POT-файла..."
 msgid "Update from &POT File..."
 msgstr "Обновить из &POT-файла..."
 
+msgid "Sync with Crowdin"
+msgstr "Синхронизировать с Crowdin"
+
 msgid "Fill missing translations from &TM..."
 msgstr "Заполнить перевод из памяти переводов..."
 
@@ -1467,6 +1664,9 @@ msgstr ""
 msgid "Catalog properties"
 msgstr "Свойства каталога"
 
+msgid "Project name and version:"
+msgstr "Название и версия проекта:"
+
 msgid "Plural Forms:"
 msgstr "Формы множественного числа:"
 
@@ -1479,17 +1679,29 @@ msgstr "Пользовательское выражение"
 msgid "Learn about plural forms"
 msgstr "Узнать о формах множественного числа"
 
+msgid "Charset:"
+msgstr "Кодировка:"
+
+msgid "Team:"
+msgstr "Команда:"
+
+msgid "Team's email address:"
+msgstr "Адрес эл. почты команды:"
+
 msgid "Translation properties"
 msgstr "Свойства перевода"
 
+msgid "Sources paths"
+msgstr "Папки с исходными файлами"
+
 msgid "Extract text from source files in the following directories:"
 msgstr "Извлекать текст из исходных файлов в следующих папках:"
 
 msgid "Base path:"
 msgstr "Базовый путь:"
 
-msgid "Sources paths"
-msgstr "Папки с исходными файлами"
+msgid "Sources keywords"
+msgstr "Ключевые слова исходных файлов"
 
 msgid ""
 "Use these keywords (function names) to recognize translatable strings\n"
@@ -1501,9 +1713,6 @@ msgstr ""
 msgid "Learn about gettext keywords"
 msgstr "Узнать больше о ключевых словах gettext"
 
-msgid "Sources keywords"
-msgstr "Ключевые слова исходных файлов"
-
 msgid "Update summary"
 msgstr "Сводка об обновлении"
 
@@ -1551,8 +1760,8 @@ msgstr "Обновить каталог — синхронизировать е
 msgid "Toggled if selected string has fuzzy translation"
 msgstr "Включено, если выбранная строка содержит неточный перевод"
 
-msgid "Show or hide the sidebar."
-msgstr "Показать или скрыть боковую панель."
+msgid "Show or hide the sidebar"
+msgstr "Показать или скрыть боковую панель"
 
 #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer.
 msgid "Previous source text:"
@@ -1565,6 +1774,9 @@ msgstr ""
 "Старый исходный текст (до обновления), которому соответствует нечеткий "
 "перевод."
 
+msgid "Notes for translators:"
+msgstr "Примечания для переводчиков:"
+
 msgid "Add comment"
 msgstr "Добавить комментарий"
 
@@ -1645,14 +1857,22 @@ msgstr "Редактирование перевода"
 msgid "Open an existing PO file and edit the translation."
 msgstr "Открыть существующий PO-файл и редактировать перевод."
 
-msgid "Create new translation"
-msgstr "Создать новый перевод"
-
 msgid ""
 "Take an existing PO file or POT template and create a new translation from "
 "it."
 msgstr "Создание перевода на основе существующего PO-файла или POT-шаблона."
 
+msgid "Collaborate on a translation with Crowdin"
+msgstr "Помочь переводу на Crowdin"
+
+msgid ""
+"Download a file from Crowdin project, translate and sync your changes back."
+msgstr ""
+"Скачать файл из Crowdin проекта, перевести его и выгрузить изменения обратно."
+
+msgid "What is Crowdin?"
+msgstr "Что такое Crowdin?"
+
 msgid "There are no translations. That’s unusual."
 msgstr "Перевод отсутствует. Это странно."
 
@@ -1691,3 +1911,9 @@ msgstr "Извлечь из исходного кода"
 
 msgid "Configure source code extraction in Properties."
 msgstr "Настройте извлечение исходного кода в разделе «Свойства»."
+
+msgid "Sync"
+msgstr "Синхронизация"
+
+msgid "Synchronize the translation with Crowdin"
+msgstr "Синхронизировать перевод с Crowdin"
diff --git a/locales/sk.mo b/locales/sk.mo
index e684501..24b4b11 100644
Binary files a/locales/sk.mo and b/locales/sk.mo differ
diff --git a/locales/sk.po b/locales/sk.po
index 19c5441..89ac94c 100644
--- a/locales/sk.po
+++ b/locales/sk.po
@@ -2,8 +2,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: poedit\n"
 "Report-Msgid-Bugs-To: help at poedit.net\n"
-"POT-Creation-Date: 2015-01-10 16:00+0100\n"
-"PO-Revision-Date: 2015-03-10 12:34-0400\n"
+"POT-Creation-Date: 2015-05-27 11:31+0200\n"
+"PO-Revision-Date: 2015-05-27 05:17-0400\n"
 "Last-Translator: vslavik <vaclav at slavik.io>\n"
 "Language-Team: Slovak\n"
 "Language: sk_SK\n"
@@ -23,7 +23,7 @@ msgid "Don't Show Again"
 msgstr "Nabudúce nezobrazovať"
 
 msgid "Don't show again"
-msgstr "Nezobrazovať znovu"
+msgstr "Nabudúce nezobrazovať"
 
 #, c-format
 msgid "%i line of file '%s' was not loaded correctly."
@@ -93,6 +93,15 @@ msgstr ""
 msgid "Error saving catalog"
 msgstr "Chyba pri ukladaní katalógu"
 
+msgid "PO Translation Files"
+msgstr "PO súbory prekladu"
+
+msgid "POT Translation Templates"
+msgstr "Šablóny prekladania POT"
+
+msgid "All Translation Files"
+msgstr "Všetky prekladané súbory"
+
 msgid "Merging differences..."
 msgstr "Zlučovanie rozdielov..."
 
@@ -112,6 +121,89 @@ msgstr "Výber jazyka"
 msgid "You must restart Poedit for this change to take effect."
 msgstr "Musíte reštartovať program Poedit, aby sa prejavili zmeny."
 
+msgid "Downloading translations is disabled in this project."
+msgstr "Sťahovanie prekladu nie je možné pre tento projekt."
+
+msgid "Not authorized, please sign in again."
+msgstr "Chyba pri autorizácii, skúste sa znovu prihlásiť."
+
+msgid "Sign in to Crowdin"
+msgstr "Prihlásenie do služby Crowdin"
+
+msgid ""
+"Crowdin is an online localization management platform and collaborative "
+"translation tool. Poedit can seamlessly sync PO files managed at Crowdin."
+msgstr ""
+"Crowdin je služba pre správu online prekladov a nástroj pre spoluprácu pri "
+"nich. Program Poedit môže jednoducho synchronizovať .PO súbory spravované v "
+"službe Crowdin."
+
+msgid "Sign In"
+msgstr "Prihlásiť"
+
+msgid "Sign in"
+msgstr "Prihlásiť sa"
+
+msgid "Sign Out"
+msgstr "Odhlásiť sa"
+
+msgid "Sign out"
+msgstr "Odhlásiť sa"
+
+msgid "Waiting for authentication…"
+msgstr "Prebieha overovanie vášho účtu…"
+
+msgid "Updating user information…"
+msgstr "Aktualizujú sa informácie o používateľovi…"
+
+msgid "Signed in as:"
+msgstr "Ste prihlásený ako:"
+
+msgid "Learn More About Crowdin"
+msgstr "Viac informácií o službe Crowdin"
+
+msgid "Learn more about Crowdin"
+msgstr "Viac informácií o službe Crowdin"
+
+msgid "Open Crowdin translation"
+msgstr "Otvoriť Crowdin preklad"
+
+msgid "Project:"
+msgstr "Projekt:"
+
+msgid "Language:"
+msgstr "Jazyk prekladu:"
+
+msgid "File:"
+msgstr "Súbor:"
+
+msgid "No translation projects listed in your Crowdin account."
+msgstr "Neboli nájdené žiadne prekladateľské projekty vo vašom Crowdin účte."
+
+msgid "This project has no files that can be translated in Poedit."
+msgstr ""
+"Tento projekt neobsahuje žiadne súbory, ktoré môžu byť preložené programom "
+"Poedit."
+
+msgid "This file can only be edited in Crowdin’s web interface."
+msgstr ""
+"Tento súbor môže byť upravovaný iba vo webovom rozhraní služby Crowdin."
+
+msgid "Downloading latest translations…"
+msgstr "Sťahovanie najnovších prekladov…"
+
+msgid "Syncing with Crowdin"
+msgstr "Synchronizácia so službou Crowdin"
+
+msgid "Syncing with Crowdin failed."
+msgstr "Synchronizácia so službou Crowdin zlyhala."
+
+msgid "Crowdin error"
+msgstr "Chyba - Crowdin"
+
+msgid "Uploading translations…"
+msgstr "Aktualizácia prekladov…"
+
 msgid "&Copy"
 msgstr "&Kopírovať"
 
@@ -158,6 +250,12 @@ msgstr ""
 msgid "don't delete temporary files (for debugging)"
 msgstr "nemazať dočasné súbory (pre ladiace účely)"
 
+msgid "handle a poedit:// URI"
+msgstr "handle a poedit:// URI"
+
+msgid "Failed to communicate with Poedit process."
+msgstr "Nie je možné komunikovať s presom programu Poedit."
+
 #, c-format
 msgid "Unhandled exception occurred: %s"
 msgstr "Došlo k neočakávanej chybe: %s"
@@ -168,12 +266,6 @@ msgstr "Došlo k neočakávanej chybe."
 msgid "Open catalog"
 msgstr "Otvoriť katalóg"
 
-msgid "All Files"
-msgstr "Všetky súbory"
-
-msgid "PO Translation Files"
-msgstr "PO súbory prekladu"
-
 #, c-format
 msgid "File '%s' doesn't exist."
 msgstr "Súbor „%s“ neexistuje."
@@ -402,6 +494,19 @@ msgstr "Množné číslo:"
 msgid "Translation:"
 msgstr "Preklad:"
 
+msgid ""
+"POT files are only templates and don’t contain any translations themselves.\n"
+"To make a translation, create a new PO file based on the template."
+msgstr ""
+"Súbory POT sú iba šablóny a samé neobsahujú žiadne preklady.\n"
+"Ak chcete vytvoriť nový preklad, vytvorte nový PO súbor na základe šablóny."
+
+msgid "Create New Translation"
+msgstr "Vytvoriť nový preklad"
+
+msgid "Create new translation"
+msgstr "Vytvoriť nový preklad"
+
 #. TRANSLATORS: %s is language name in its basic form (as you
 #. would see e.g. in a list of supported languages). You may need
 #. to rephrase it, e.g. to an equivalent of "for language %s".
@@ -451,9 +556,6 @@ msgstr "HTML súbory"
 msgid "Open catalog template"
 msgstr "Otvoriť katalóg návrhov"
 
-msgid "POT Translation Templates"
-msgstr "Šablóny prekladania POT"
-
 msgid "Updating catalog"
 msgstr "Aktualizuje sa katalóg"
 
@@ -538,18 +640,23 @@ msgstr[2] ""
 msgid "The translation is ready for use."
 msgstr "Preklad je pripravený na používanie."
 
-msgid "No references to this string found."
-msgstr "Žiadne odkazy k reťazcu neboli nájdené."
-
-msgid "Please choose the reference you want to show:"
-msgstr "Vyberte si odkaz ktorý chcete zobraziť:"
-
-msgid "References"
-msgstr "Odkazy"
-
 msgid "Context:"
 msgstr "Kontext:"
 
+#, c-format
+msgid "Poedit automatically fixed invalid content in the file “%s”."
+msgstr "Program Poedit automaticky opraví neplatný obsah v súbore \"%s\"."
+
+msgid ""
+"The file contained duplicate items, which is not allowed in PO files and "
+"would prevent the file from being used. Poedit fixed the issue, but you "
+"should review translations of any items marked as fuzzy and correct them if "
+"necessary."
+msgstr ""
+"Súbor obsahoval duplicitné položky, čo nie je v PO súboroch povolené a a "
+"zabránilo by to ich použitiu. Poedit tento problém opravil, ale mali by ste "
+"skontrolovať všetky preklady označené ako nepresné a prípadne ich opraviť."
+
 msgid "Language of the translation isn't set."
 msgstr "Jazyk prekladu nie je nastavený."
 
@@ -559,6 +666,23 @@ msgstr "Nastaviť jazyk"
 msgid "Set language"
 msgstr "Vybrať jazyk"
 
+#. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)."
+msgid ""
+"Suggestions are not available if the translation language is not set "
+"correctly. Other features, such as plural forms, may be affected as well."
+msgstr ""
+"Návrhy nie sú dostupné ak jazyk prekladu nie je nastavený správne. Ostatné "
+"funkcie, ako množné číslo, tým môžu byť ovplyvnené."
+
+msgid "Language of the translation is the same as source language."
+msgstr "Jazyk prekladu je taký istý ako zdrojový jazyk."
+
+msgid "Fix Language"
+msgstr "Zmeniť jazyk"
+
+msgid "Fix language"
+msgstr "Zmeniť jazyk"
+
 msgid ""
 "This catalog has entries with plural forms, but doesn't have Plural-Forms "
 "header configured."
@@ -594,6 +718,7 @@ msgid "Plural forms expression used by the catalog is unusual for %s."
 msgstr ""
 "Katalógom použité vyjadrenie množného čísla je nezvyčajné pre jazyk %s."
 
+#. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the catalog is unusual for %s.")"
 msgid "Review"
 msgstr "Náhľad"
 
@@ -616,6 +741,13 @@ msgstr[0] "%d chyba"
 msgstr[1] "%d chyby"
 msgstr[2] "%d chýb"
 
+#, c-format
+msgid "%d entry"
+msgid_plural "%d entries"
+msgstr[0] "%d položka"
+msgstr[1] "%d položky"
+msgstr[2] "%d položiek"
+
 msgid " (unsaved)"
 msgstr " (neuložené)"
 
@@ -743,6 +875,9 @@ msgstr "Všetko"
 msgid "Form %i"
 msgstr "Tvar %i"
 
+msgid "Singular"
+msgstr "Jednotné číslo"
+
 msgid "Zero"
 msgstr "Nula"
 
@@ -752,6 +887,9 @@ msgstr "Jeden"
 msgid "Two"
 msgstr "Dva"
 
+msgid "Plural"
+msgstr "Množné číslo"
+
 msgid "Other"
 msgstr "Ostatné"
 
@@ -780,6 +918,12 @@ msgstr "Skryť bočný panel"
 msgid "Show Sidebar"
 msgstr "Zobraziť bočný panel"
 
+msgid "Hide Status Bar"
+msgstr "Skryť stavový riadok"
+
+msgid "Show Status Bar"
+msgstr "Zobraziť stavový riadok"
+
 msgid "Source text"
 msgstr "Zdrojový text"
 
@@ -789,6 +933,10 @@ msgstr "Preklad"
 msgid "ID"
 msgstr "ID"
 
+#, c-format
+msgid "Source text — %s"
+msgstr "Zdrojový text – %s"
+
 msgid "unknown language"
 msgstr "neznámy jazyk"
 
@@ -799,57 +947,73 @@ msgstr "Preklad - %s"
 msgid "Error:"
 msgstr "Chyba:"
 
-msgid "Project info"
-msgstr "Informácie o projekte"
+msgid "Source file"
+msgstr "Zdrojový súbor"
 
-msgid "Project name and version:"
-msgstr "Názov projektu a verzia:"
+msgid "Source file occurrence:"
+msgstr "Výskyt v zdrojovom súbore:"
 
-msgid "Language:"
-msgstr "Jazyk prekladu:"
+msgid "Open in Editor"
+msgstr "Otvoriť v editore"
 
-msgid "Team:"
-msgstr "Názov tímu:"
+msgid "Open in editor"
+msgstr "Otvoriť v editore"
 
-msgid "Team's email address:"
-msgstr "Emailová adresa tímu:"
+msgid "No references for the selected item."
+msgstr "Žiadne odporúčanie pre vybanú položku."
 
-msgid "Charset:"
-msgstr "Znaková sada:"
+#, c-format
+msgid "Error opening file %s!"
+msgstr "Chyba pri otváraní súboru „%s\""
 
-msgid "Source"
-msgstr "Zdroj"
+msgid "Find"
+msgstr "Hľadať"
 
-msgid "Notes"
-msgstr "Poznámky"
+msgid "Replace"
+msgstr "Nahradiť"
 
-msgid "Automatic translation"
-msgstr "Automatický preklad"
+#. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.)
+msgid "Options"
+msgstr "Možnosti"
 
-msgid "Fuzzy translation"
-msgstr "Nepresný preklad"
+msgid "Ignore case"
+msgstr "Ignorovať veľkosť písmen"
 
-msgid "Notes for translators:"
-msgstr "Poznámky pre prekladateľov:"
+msgid "Wrap around"
+msgstr "Vyhľadávať dookola"
 
-msgid "Comment:"
-msgstr "Komentár:"
+msgid "Whole words only"
+msgstr "Iba celé slová"
 
-msgid "Source file"
-msgstr "Zdrojový súbor"
+msgid "Find in source texts"
+msgstr "Hľadať v zdrojových textoch"
 
-msgid "Source file occurrence:"
-msgstr "Výskyt v zdrojovom súbore:"
+msgid "Find in translations"
+msgstr "Hľadať v prekladoch"
 
-msgid "Open in Editor"
-msgstr "Otvoriť v editore"
+msgid "Find in comments"
+msgstr "Vyhľadať v komentároch"
 
-msgid "Open in editor"
-msgstr "Otvoriť v editore"
+msgid "Close"
+msgstr "Zatvoriť"
 
-#, c-format
-msgid "Error opening file %s!"
-msgstr "Chyba pri otváraní súboru „%s\""
+msgid "Replace All"
+msgstr "Nahradiť všetko"
+
+msgid "Replace all"
+msgstr "Nahradiť všetko"
+
+msgid "< &Previous"
+msgstr "< &Predchádzajúci"
+
+msgid "&Next >"
+msgstr "&Nasledujúci >"
+
+msgid "String to find"
+msgstr "Vyhľadávaný reťazec"
+
+msgid "Replacement string"
+msgstr "Nahradené reťazcom"
 
 #, c-format
 msgid "Cannot execute program: %s"
@@ -973,7 +1137,7 @@ msgid "General"
 msgstr "Základné"
 
 msgid "Use translation memory"
-msgstr "Použiť pamäť prekladov"
+msgstr "Použiť pamäť prekladov (PP)"
 
 msgid "Learn From Files..."
 msgstr "Získať informácie zo súborov..."
@@ -1053,9 +1217,19 @@ msgstr "Nový"
 msgid "Edit"
 msgstr "Upraviť"
 
+msgid "Delete extractor"
+msgstr "Odstrániť extractor"
+
+#, c-format
+msgid "Are you sure you want to delete the “%s” extractor?"
+msgstr "Ste si istý, že chcete vymazať extraktor „%s\"?"
+
 msgid "Extractors"
 msgstr "Extraktory"
 
+msgid "Accounts"
+msgstr "Účty"
+
 msgid "Automatically check for updates"
 msgstr "Automaticky kontrolovať aktualizácie"
 
@@ -1098,8 +1272,41 @@ msgstr "Zachovať existujúce formátovanie súborov"
 msgid "Advanced"
 msgstr "Rozšírené"
 
-msgid "Additional keywords"
-msgstr "Doplnkové kľúčové slová"
+msgid ""
+"<big>Drag and Drop Folders Here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+"<big>Ťahajte a pustite priečinky tu</big>\n"
+"\n"
+"alebo použite + tlačidlo"
+
+msgid ""
+"<big>Drag and drop folders here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+"<big>Ťahajte a pustite priečinky tu</big>\n"
+"\n"
+"alebo použite + tlačidlo"
+
+msgid "Add Folders..."
+msgstr "Pridať priečinky..."
+
+msgid "Add folders..."
+msgstr "Pridať priečinky..."
+
+msgid "Add Files..."
+msgstr "Pridať súbory..."
+
+msgid "Add files..."
+msgstr "Pridať súbory..."
+
+msgid "Add Wildcard..."
+msgstr "Pridať zástupný reťazec..."
+
+msgid "Add wildcard..."
+msgstr "Pridať zástupný reťazec..."
 
 msgid "Paths"
 msgstr "Cesty"
@@ -1107,6 +1314,9 @@ msgstr "Cesty"
 msgid "Excluded paths"
 msgstr "Vylúčené cesty"
 
+msgid "Additional keywords"
+msgstr "Doplnkové kľúčové slová"
+
 msgid "Name of the project the translation is for"
 msgstr "Názov projektu prekladu je pre"
 
@@ -1119,6 +1329,9 @@ msgstr "UTF-8 (odporúčané)"
 msgid "Please save the file first. This section cannot be edited until then."
 msgstr "Najprv uložte súbor. Táto sekcia nemôže byť bez uloženia upravovaná."
 
+msgid "Comment:"
+msgstr "Komentár:"
+
 msgid "OK"
 msgstr "OK"
 
@@ -1128,42 +1341,6 @@ msgstr "V&yčistiť"
 msgid "Clear the comment"
 msgstr "Vymazať komentár"
 
-msgid "Find..."
-msgstr "Hľadať..."
-
-msgid "String to find:"
-msgstr "Vyhľadať text:"
-
-msgid "Case sensitive"
-msgstr "Rozlišovať veľkosť písma"
-
-msgid "Start from the first item"
-msgstr "Začať od prvej položky"
-
-msgid "Whole words only"
-msgstr "Iba celé slová"
-
-msgid "Find in original strings"
-msgstr "Hľadať v pôvodných reťazcoch"
-
-msgid "Find in translations"
-msgstr "Hľadať v prekladoch"
-
-msgid "Find in comments"
-msgstr "Vyhľadať v komentároch"
-
-msgid "Find in automatic comments"
-msgstr "Vyhľadať v automatických komentároch"
-
-msgid "Close"
-msgstr "Zatvoriť"
-
-msgid "< &Previous"
-msgstr "< &Predchádzajúci"
-
-msgid "&Next >"
-msgstr "&Nasledujúci >"
-
 msgid "Create new translations project"
 msgstr "Vytvoriť nový projekt prekladu"
 
@@ -1218,6 +1395,12 @@ msgstr "&Otvoriť..."
 msgid "Open Recent"
 msgstr "Otvoriť posledné"
 
+msgid "Open from Crowdin..."
+msgstr "Otvoriť zo služby Crowdin..."
+
+msgid "Open From Crowdin..."
+msgstr "Otvoriť zo služby Crowdin..."
+
 msgid "&Save"
 msgstr "&Uložiť"
 
@@ -1266,14 +1449,17 @@ msgstr "&Zobraziť odkazy"
 msgid "&Find..."
 msgstr "&Hľadať..."
 
+msgid "Replace..."
+msgstr "Nahradiť..."
+
 msgid "Find next"
 msgstr "Nájsť nasledujúci"
 
 msgid "Find previous"
 msgstr "Hľadať predchádzajúci"
 
-msgid "Find"
-msgstr "Hľadať"
+msgid "Find and Replace..."
+msgstr "Nájsť a nahradiť..."
 
 msgid "Find Next"
 msgstr "Hľadať nasledujúci"
@@ -1314,6 +1500,12 @@ msgstr "&Zoskupiť podľa súvislostí"
 msgid "&Group By Context"
 msgstr "&Zoskupiť podľa súvislostí"
 
+msgid "Entries with errors first"
+msgstr "Položky s chybami ako prvé"
+
+msgid "Entries with Errors First"
+msgstr "Položky s chybami ako prvé"
+
 msgid "&Untranslated entries first"
 msgstr "&Najskôr nepreložené záznamy"
 
@@ -1323,6 +1515,9 @@ msgstr "&Najskôr nepreložené záznamy"
 msgid "Show sidebar"
 msgstr "Zobraziť bočný panel"
 
+msgid "Show status bar"
+msgstr "Zobraziť stavový riadok"
+
 msgid "C&atalog"
 msgstr "&Katalóg"
 
@@ -1338,6 +1533,9 @@ msgstr "Aktualizovať z &POT šablóny..."
 msgid "Update from &POT File..."
 msgstr "Aktualizovať z &POT šablóny..."
 
+msgid "Sync with Crowdin"
+msgstr "Synchronizácia so službou Crowdin"
+
 msgid "Fill missing translations from &TM..."
 msgstr "Doplniť chýbajúce preklady z &PP..."
 
@@ -1466,6 +1664,9 @@ msgstr ""
 msgid "Catalog properties"
 msgstr "Vlastnosti katalógu"
 
+msgid "Project name and version:"
+msgstr "Názov projektu a verzia:"
+
 msgid "Plural Forms:"
 msgstr "Tvary množného čísla:"
 
@@ -1478,17 +1679,29 @@ msgstr "Použiť vlastný výraz"
 msgid "Learn about plural forms"
 msgstr "Zistiť informácie o formách množného čísla"
 
+msgid "Charset:"
+msgstr "Znaková sada:"
+
+msgid "Team:"
+msgstr "Názov tímu:"
+
+msgid "Team's email address:"
+msgstr "Emailová adresa tímu:"
+
 msgid "Translation properties"
 msgstr "Vlastnosti prekladov"
 
+msgid "Sources paths"
+msgstr "Cesty k zdrojom"
+
 msgid "Extract text from source files in the following directories:"
 msgstr "Aktualizovať text zo zdrojových súborov v nasledovných adresároch:"
 
 msgid "Base path:"
 msgstr "Základná cesta:"
 
-msgid "Sources paths"
-msgstr "Cesty k zdrojom"
+msgid "Sources keywords"
+msgstr "Zdrojové kľúčové slová"
 
 msgid ""
 "Use these keywords (function names) to recognize translatable strings\n"
@@ -1500,9 +1713,6 @@ msgstr ""
 msgid "Learn about gettext keywords"
 msgstr "Zistiť informácie o gettext kľúčových slovách"
 
-msgid "Sources keywords"
-msgstr "Zdrojové kľúčové slová"
-
 msgid "Update summary"
 msgstr "Súhrn aktualizácie"
 
@@ -1550,8 +1760,8 @@ msgstr "Aktualizovať katalóg - synchronizácia so zdrojom"
 msgid "Toggled if selected string has fuzzy translation"
 msgstr "Použite, ak je vybraný reťazec preložený nepresne"
 
-msgid "Show or hide the sidebar."
-msgstr "Zobraziť alebo skryť bočný panel."
+msgid "Show or hide the sidebar"
+msgstr "Zobraziť alebo skryť bočný panel"
 
 #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer.
 msgid "Previous source text:"
@@ -1564,6 +1774,9 @@ msgstr ""
 "Starý zdrojový text (pred zmenou počas aktualizácie), bude označený ako "
 "nepresný."
 
+msgid "Notes for translators:"
+msgstr "Poznámky pre prekladateľov:"
+
 msgid "Add comment"
 msgstr "Pridať komentár"
 
@@ -1643,14 +1856,22 @@ msgstr "Upraviť preklad"
 msgid "Open an existing PO file and edit the translation."
 msgstr "Otvoriť existujúci PO súbor a upraviť preklad."
 
-msgid "Create new translation"
-msgstr "Vytvoriť nový preklad"
-
 msgid ""
 "Take an existing PO file or POT template and create a new translation from "
 "it."
 msgstr "Použiť existujúci PO súbor alebo POT šablónu a vytvoriť nový preklad."
 
+msgid "Collaborate on a translation with Crowdin"
+msgstr "Spolupracovať na preklade so službou Crowdin"
+
+msgid ""
+"Download a file from Crowdin project, translate and sync your changes back."
+msgstr ""
+"Stiahnuť súbor zo služby Crowdin, preložiť a synchronizovať späť so zmenami."
+
+msgid "What is Crowdin?"
+msgstr "Čo je Crowdin?"
+
 msgid "There are no translations. That’s unusual."
 msgstr "Nie sú zobrazené žiadne preklady. Toto je nezvyčajné."
 
@@ -1690,3 +1911,9 @@ msgstr "Aktualizovať zo zdrojov"
 
 msgid "Configure source code extraction in Properties."
 msgstr "Nastaviť pôvod zdrojového kódu v Nastaveniach."
+
+msgid "Sync"
+msgstr "Synchronizácia"
+
+msgid "Synchronize the translation with Crowdin"
+msgstr "Synchronizácia prekladu so službou Crowdin"
diff --git a/locales/sl.mo b/locales/sl.mo
index 32d950d..bb2dabf 100644
Binary files a/locales/sl.mo and b/locales/sl.mo differ
diff --git a/locales/sl.po b/locales/sl.po
index aaeb1e1..98b5d03 100644
--- a/locales/sl.po
+++ b/locales/sl.po
@@ -2,8 +2,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: poedit\n"
 "Report-Msgid-Bugs-To: help at poedit.net\n"
-"POT-Creation-Date: 2015-01-10 16:00+0100\n"
-"PO-Revision-Date: 2015-03-10 12:34-0400\n"
+"POT-Creation-Date: 2015-05-27 11:31+0200\n"
+"PO-Revision-Date: 2015-05-27 05:17-0400\n"
 "Last-Translator: vslavik <vaclav at slavik.io>\n"
 "Language-Team: Slovenian\n"
 "Language: sl_SI\n"
@@ -93,6 +93,15 @@ msgstr ""
 msgid "Error saving catalog"
 msgstr "Napaka med shranjevanjem kataloga"
 
+msgid "PO Translation Files"
+msgstr ""
+
+msgid "POT Translation Templates"
+msgstr ""
+
+msgid "All Translation Files"
+msgstr ""
+
 msgid "Merging differences..."
 msgstr "Združevanje razlik ..."
 
@@ -112,6 +121,83 @@ msgstr "Izbor jezika"
 msgid "You must restart Poedit for this change to take effect."
 msgstr "Program Poedit je treba ponovno zagnati, da spremembe začnejo veljati."
 
+msgid "Downloading translations is disabled in this project."
+msgstr ""
+
+msgid "Not authorized, please sign in again."
+msgstr ""
+
+msgid "Sign in to Crowdin"
+msgstr ""
+
+msgid ""
+"Crowdin is an online localization management platform and collaborative "
+"translation tool. Poedit can seamlessly sync PO files managed at Crowdin."
+msgstr ""
+
+msgid "Sign In"
+msgstr ""
+
+msgid "Sign in"
+msgstr ""
+
+msgid "Sign Out"
+msgstr ""
+
+msgid "Sign out"
+msgstr ""
+
+msgid "Waiting for authentication…"
+msgstr ""
+
+msgid "Updating user information…"
+msgstr ""
+
+msgid "Signed in as:"
+msgstr ""
+
+msgid "Learn More About Crowdin"
+msgstr ""
+
+msgid "Learn more about Crowdin"
+msgstr ""
+
+msgid "Open Crowdin translation"
+msgstr ""
+
+msgid "Project:"
+msgstr ""
+
+msgid "Language:"
+msgstr "Jezik:"
+
+msgid "File:"
+msgstr ""
+
+msgid "No translation projects listed in your Crowdin account."
+msgstr ""
+
+msgid "This project has no files that can be translated in Poedit."
+msgstr ""
+
+msgid "This file can only be edited in Crowdin’s web interface."
+msgstr ""
+
+msgid "Downloading latest translations…"
+msgstr ""
+
+msgid "Syncing with Crowdin"
+msgstr ""
+
+msgid "Syncing with Crowdin failed."
+msgstr ""
+
+msgid "Crowdin error"
+msgstr ""
+
+msgid "Uploading translations…"
+msgstr ""
+
 msgid "&Copy"
 msgstr ""
 
@@ -156,6 +242,12 @@ msgstr ""
 msgid "don't delete temporary files (for debugging)"
 msgstr "ne izbriši začasnih datotek (za razhroščevanje)"
 
+msgid "handle a poedit:// URI"
+msgstr ""
+
+msgid "Failed to communicate with Poedit process."
+msgstr ""
+
 #, c-format
 msgid "Unhandled exception occurred: %s"
 msgstr ""
@@ -166,12 +258,6 @@ msgstr ""
 msgid "Open catalog"
 msgstr "Odpri katalog"
 
-msgid "All Files"
-msgstr ""
-
-msgid "PO Translation Files"
-msgstr ""
-
 #, c-format
 msgid "File '%s' doesn't exist."
 msgstr "Datoteka '%s' ne obstaja."
@@ -399,6 +485,17 @@ msgstr "Množina:"
 msgid "Translation:"
 msgstr "Prevod:"
 
+msgid ""
+"POT files are only templates and don’t contain any translations themselves.\n"
+"To make a translation, create a new PO file based on the template."
+msgstr ""
+
+msgid "Create New Translation"
+msgstr ""
+
+msgid "Create new translation"
+msgstr ""
+
 #. TRANSLATORS: %s is language name in its basic form (as you
 #. would see e.g. in a list of supported languages). You may need
 #. to rephrase it, e.g. to an equivalent of "for language %s".
@@ -446,9 +543,6 @@ msgstr ""
 msgid "Open catalog template"
 msgstr "Odpri predlogo kataloga"
 
-msgid "POT Translation Templates"
-msgstr ""
-
 msgid "Updating catalog"
 msgstr "Posodabljanje kataloga"
 
@@ -526,18 +620,20 @@ msgstr[3] ""
 msgid "The translation is ready for use."
 msgstr "Prevod je pripravljen za uporabo."
 
-msgid "No references to this string found."
-msgstr "Ni sklicev na izbrani niz."
-
-msgid "Please choose the reference you want to show:"
-msgstr "Izberite sklic, ki ga želite prikazati:"
-
-msgid "References"
-msgstr "Sklici"
-
 msgid "Context:"
 msgstr "Vsebina:"
 
+#, c-format
+msgid "Poedit automatically fixed invalid content in the file “%s”."
+msgstr ""
+
+msgid ""
+"The file contained duplicate items, which is not allowed in PO files and "
+"would prevent the file from being used. Poedit fixed the issue, but you "
+"should review translations of any items marked as fuzzy and correct them if "
+"necessary."
+msgstr ""
+
 msgid "Language of the translation isn't set."
 msgstr ""
 
@@ -547,6 +643,21 @@ msgstr ""
 msgid "Set language"
 msgstr ""
 
+#. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)."
+msgid ""
+"Suggestions are not available if the translation language is not set "
+"correctly. Other features, such as plural forms, may be affected as well."
+msgstr ""
+
+msgid "Language of the translation is the same as source language."
+msgstr ""
+
+msgid "Fix Language"
+msgstr ""
+
+msgid "Fix language"
+msgstr ""
+
 msgid ""
 "This catalog has entries with plural forms, but doesn't have Plural-Forms "
 "header configured."
@@ -581,6 +692,7 @@ msgstr "Popravi glavo"
 msgid "Plural forms expression used by the catalog is unusual for %s."
 msgstr ""
 
+#. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the catalog is unusual for %s.")"
 msgid "Review"
 msgstr ""
 
@@ -604,6 +716,14 @@ msgstr[1] ""
 msgstr[2] ""
 msgstr[3] ""
 
+#, c-format
+msgid "%d entry"
+msgid_plural "%d entries"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+msgstr[3] ""
+
 msgid " (unsaved)"
 msgstr ""
 
@@ -724,6 +844,9 @@ msgstr ""
 msgid "Form %i"
 msgstr "Oblika %i"
 
+msgid "Singular"
+msgstr ""
+
 msgid "Zero"
 msgstr ""
 
@@ -733,6 +856,9 @@ msgstr ""
 msgid "Two"
 msgstr ""
 
+msgid "Plural"
+msgstr ""
+
 msgid "Other"
 msgstr ""
 
@@ -761,6 +887,12 @@ msgstr ""
 msgid "Show Sidebar"
 msgstr ""
 
+msgid "Hide Status Bar"
+msgstr ""
+
+msgid "Show Status Bar"
+msgstr ""
+
 msgid "Source text"
 msgstr "Izvorno besedilo"
 
@@ -770,6 +902,10 @@ msgstr "Prevod"
 msgid "ID"
 msgstr ""
 
+#, c-format
+msgid "Source text — %s"
+msgstr ""
+
 msgid "unknown language"
 msgstr ""
 
@@ -780,57 +916,73 @@ msgstr ""
 msgid "Error:"
 msgstr "Napaka:"
 
-msgid "Project info"
-msgstr "Podatki o projektu"
+msgid "Source file"
+msgstr "Izvorna datoteka"
 
-msgid "Project name and version:"
-msgstr "Ime in različica projekta:"
+msgid "Source file occurrence:"
+msgstr "Pojavitev izvorne datoteke:"
 
-msgid "Language:"
-msgstr "Jezik:"
+msgid "Open in Editor"
+msgstr ""
 
-msgid "Team:"
-msgstr "Skupina:"
+msgid "Open in editor"
+msgstr ""
 
-msgid "Team's email address:"
-msgstr "Elektronski naslov skupine:"
+msgid "No references for the selected item."
+msgstr ""
 
-msgid "Charset:"
-msgstr "Kodni nabor:"
+#, c-format
+msgid "Error opening file %s!"
+msgstr "Napaka med odpiranjem datoteke %s!"
 
-msgid "Source"
-msgstr "Vir"
+msgid "Find"
+msgstr ""
 
-msgid "Notes"
-msgstr "Opombe"
+msgid "Replace"
+msgstr ""
 
-msgid "Automatic translation"
-msgstr "Samodejno prevajanje"
+#. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.)
+msgid "Options"
+msgstr ""
 
-msgid "Fuzzy translation"
-msgstr "Ohlapen prevod"
+msgid "Ignore case"
+msgstr ""
 
-msgid "Notes for translators:"
-msgstr "Opomba prevajalcem:"
+msgid "Wrap around"
+msgstr ""
 
-msgid "Comment:"
-msgstr "Opomba:"
+msgid "Whole words only"
+msgstr "Le cele besede"
 
-msgid "Source file"
-msgstr "Izvorna datoteka"
+msgid "Find in source texts"
+msgstr ""
 
-msgid "Source file occurrence:"
-msgstr "Pojavitev izvorne datoteke:"
+msgid "Find in translations"
+msgstr ""
 
-msgid "Open in Editor"
+msgid "Find in comments"
+msgstr "Najdi v opombah"
+
+msgid "Close"
+msgstr "Zapri"
+
+msgid "Replace All"
 msgstr ""
 
-msgid "Open in editor"
+msgid "Replace all"
 msgstr ""
 
-#, c-format
-msgid "Error opening file %s!"
-msgstr "Napaka med odpiranjem datoteke %s!"
+msgid "< &Previous"
+msgstr ""
+
+msgid "&Next >"
+msgstr ""
+
+msgid "String to find"
+msgstr ""
+
+msgid "Replacement string"
+msgstr ""
 
 #, c-format
 msgid "Cannot execute program: %s"
@@ -1023,9 +1175,19 @@ msgstr "Novo"
 msgid "Edit"
 msgstr "Uredi"
 
+msgid "Delete extractor"
+msgstr ""
+
+#, c-format
+msgid "Are you sure you want to delete the “%s” extractor?"
+msgstr ""
+
 msgid "Extractors"
 msgstr ""
 
+msgid "Accounts"
+msgstr ""
+
 msgid "Automatically check for updates"
 msgstr ""
 
@@ -1064,7 +1226,34 @@ msgstr ""
 msgid "Advanced"
 msgstr ""
 
-msgid "Additional keywords"
+msgid ""
+"<big>Drag and Drop Folders Here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+
+msgid ""
+"<big>Drag and drop folders here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+
+msgid "Add Folders..."
+msgstr ""
+
+msgid "Add folders..."
+msgstr ""
+
+msgid "Add Files..."
+msgstr ""
+
+msgid "Add files..."
+msgstr ""
+
+msgid "Add Wildcard..."
+msgstr ""
+
+msgid "Add wildcard..."
 msgstr ""
 
 msgid "Paths"
@@ -1073,6 +1262,9 @@ msgstr "Poti"
 msgid "Excluded paths"
 msgstr ""
 
+msgid "Additional keywords"
+msgstr ""
+
 msgid "Name of the project the translation is for"
 msgstr ""
 
@@ -1085,6 +1277,9 @@ msgstr "UTF-8 (priporočeno)"
 msgid "Please save the file first. This section cannot be edited until then."
 msgstr ""
 
+msgid "Comment:"
+msgstr "Opomba:"
+
 msgid "OK"
 msgstr "V redu"
 
@@ -1094,42 +1289,6 @@ msgstr "Po&čisti"
 msgid "Clear the comment"
 msgstr "Počisti opombe"
 
-msgid "Find..."
-msgstr "Najdi ..."
-
-msgid "String to find:"
-msgstr "Iskalni niz:"
-
-msgid "Case sensitive"
-msgstr "Razlikovanje velikosti črk"
-
-msgid "Start from the first item"
-msgstr "Začni s prvo vrstico"
-
-msgid "Whole words only"
-msgstr "Le cele besede"
-
-msgid "Find in original strings"
-msgstr "Najdi v izvornih nizih"
-
-msgid "Find in translations"
-msgstr ""
-
-msgid "Find in comments"
-msgstr "Najdi v opombah"
-
-msgid "Find in automatic comments"
-msgstr "Najdi v samodejnih opombah"
-
-msgid "Close"
-msgstr "Zapri"
-
-msgid "< &Previous"
-msgstr ""
-
-msgid "&Next >"
-msgstr ""
-
 msgid "Create new translations project"
 msgstr "Ustvari nov projekt prevajanja"
 
@@ -1184,6 +1343,12 @@ msgstr "&Odpri ..."
 msgid "Open Recent"
 msgstr ""
 
+msgid "Open from Crowdin..."
+msgstr ""
+
+msgid "Open From Crowdin..."
+msgstr ""
+
 msgid "&Save"
 msgstr "&Shrani"
 
@@ -1232,13 +1397,16 @@ msgstr "&Pokaži sklice"
 msgid "&Find..."
 msgstr "&Najdi ..."
 
+msgid "Replace..."
+msgstr ""
+
 msgid "Find next"
 msgstr ""
 
 msgid "Find previous"
 msgstr ""
 
-msgid "Find"
+msgid "Find and Replace..."
 msgstr ""
 
 msgid "Find Next"
@@ -1280,6 +1448,12 @@ msgstr ""
 msgid "&Group By Context"
 msgstr ""
 
+msgid "Entries with errors first"
+msgstr ""
+
+msgid "Entries with Errors First"
+msgstr ""
+
 msgid "&Untranslated entries first"
 msgstr "&Najprej razvrsti neprevedeno"
 
@@ -1289,6 +1463,9 @@ msgstr "&Najprej razvrsti neprevedeno"
 msgid "Show sidebar"
 msgstr ""
 
+msgid "Show status bar"
+msgstr ""
+
 msgid "C&atalog"
 msgstr "K&atalog"
 
@@ -1304,6 +1481,9 @@ msgstr "Posodobi s &POT datoteko ..."
 msgid "Update from &POT File..."
 msgstr "Posodobi s &POT datoteko ..."
 
+msgid "Sync with Crowdin"
+msgstr ""
+
 msgid "Fill missing translations from &TM..."
 msgstr ""
 
@@ -1427,6 +1607,9 @@ msgstr ""
 msgid "Catalog properties"
 msgstr "Lastnosti kataloga"
 
+msgid "Project name and version:"
+msgstr "Ime in različica projekta:"
+
 msgid "Plural Forms:"
 msgstr "Množinske oblike:"
 
@@ -1439,17 +1622,29 @@ msgstr ""
 msgid "Learn about plural forms"
 msgstr "Podrobnosti o množinskih oblikah"
 
+msgid "Charset:"
+msgstr "Kodni nabor:"
+
+msgid "Team:"
+msgstr "Skupina:"
+
+msgid "Team's email address:"
+msgstr "Elektronski naslov skupine:"
+
 msgid "Translation properties"
 msgstr ""
 
+msgid "Sources paths"
+msgstr "Poti vira"
+
 msgid "Extract text from source files in the following directories:"
 msgstr "Izloči besedilo iz izvornih datotek v navedenih mapah:"
 
 msgid "Base path:"
 msgstr "Osnovna pot:"
 
-msgid "Sources paths"
-msgstr "Poti vira"
+msgid "Sources keywords"
+msgstr "Ključne besede vira"
 
 msgid ""
 "Use these keywords (function names) to recognize translatable strings\n"
@@ -1461,9 +1656,6 @@ msgstr ""
 msgid "Learn about gettext keywords"
 msgstr ""
 
-msgid "Sources keywords"
-msgstr "Ključne besede vira"
-
 msgid "Update summary"
 msgstr "Posodobi povzetek"
 
@@ -1511,7 +1703,7 @@ msgstr "Posodobi katalog - uskladi z izvorno kodo"
 msgid "Toggled if selected string has fuzzy translation"
 msgstr "Preklop ohlapno prevedenega niza"
 
-msgid "Show or hide the sidebar."
+msgid "Show or hide the sidebar"
 msgstr ""
 
 #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer.
@@ -1523,6 +1715,9 @@ msgid ""
 "translation corresponds to."
 msgstr ""
 
+msgid "Notes for translators:"
+msgstr "Opomba prevajalcem:"
+
 msgid "Add comment"
 msgstr ""
 
@@ -1595,14 +1790,21 @@ msgstr ""
 msgid "Open an existing PO file and edit the translation."
 msgstr ""
 
-msgid "Create new translation"
-msgstr ""
-
 msgid ""
 "Take an existing PO file or POT template and create a new translation from "
 "it."
 msgstr ""
 
+msgid "Collaborate on a translation with Crowdin"
+msgstr ""
+
+msgid ""
+"Download a file from Crowdin project, translate and sync your changes back."
+msgstr ""
+
+msgid "What is Crowdin?"
+msgstr ""
+
 msgid "There are no translations. That’s unusual."
 msgstr ""
 
@@ -1635,3 +1837,9 @@ msgstr ""
 
 msgid "Configure source code extraction in Properties."
 msgstr ""
+
+msgid "Sync"
+msgstr ""
+
+msgid "Synchronize the translation with Crowdin"
+msgstr ""
diff --git a/locales/sq.mo b/locales/sq.mo
index 2067384..85f0193 100644
Binary files a/locales/sq.mo and b/locales/sq.mo differ
diff --git a/locales/sq.po b/locales/sq.po
index 9f2cce0..44e8adf 100644
--- a/locales/sq.po
+++ b/locales/sq.po
@@ -2,8 +2,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: poedit\n"
 "Report-Msgid-Bugs-To: help at poedit.net\n"
-"POT-Creation-Date: 2015-01-10 16:00+0100\n"
-"PO-Revision-Date: 2015-03-10 12:33-0400\n"
+"POT-Creation-Date: 2015-05-27 11:31+0200\n"
+"PO-Revision-Date: 2015-05-27 05:17-0400\n"
 "Last-Translator: vslavik <vaclav at slavik.io>\n"
 "Language-Team: Albanian\n"
 "Language: sq_AL\n"
@@ -17,64 +17,67 @@ msgstr ""
 "X-Crowdin-File: /locales/poedit.pot\n"
 
 msgid "Hide this notification message"
-msgstr "Fshih këtë mesazh njoftimi"
+msgstr "Fshihe këtë mesazh njoftimi"
 
 msgid "Don't Show Again"
-msgstr "Mos e shfaq përsëri"
+msgstr "Mos e Shfaq Sërish"
 
 msgid "Don't show again"
-msgstr "Mos e shfaq përsëri"
+msgstr "Mos e shfaq sërish"
 
 #, c-format
 msgid "%i line of file '%s' was not loaded correctly."
 msgid_plural "%i lines of file '%s' were not loaded correctly."
-msgstr[0] "%i linja e filit »%s« nuk është ngarkuar korrekt."
-msgstr[1] "%i Zeilen der Datei »%s« wurden nicht korrekt geladen."
+msgstr[0] "%i rresht i kartelës '%s' s’u ngarkua saktë."
+msgstr[1] "%i rreshta të kartelës '%s' s’u ngarkuan saktë."
 
 #, c-format
 msgid "Line %d of file '%s' is corrupted (not valid %s data)."
-msgstr "Linja %d e filit '%s' është e korruptuar (jo të dhëna %s të vlefshme)."
+msgstr ""
+"Rreshti %d i kartelës '%s' është i dëmtuar (pa të dhëna %s të vlefshme)."
 
 #, c-format
 msgid "Malformed header: '%s'"
-msgstr "Kokë e keqformuar: '%s'"
+msgstr "Titull i keqformuar: '%s'"
 
 msgid ""
 "Broken catalog file: singular form msgstr used together with msgid_plural"
 msgstr ""
-"Fil katalogu i dëmtuar: forma njëjës msgstr e përdorur së bashku me "
+"Kartelë katalogu e dëmtuar: vargje mesazhesh në njëjës përdorur bashkë me "
 "msgid_plural"
 
 msgid "Broken catalog file: plural form msgstr used without msgid_plural"
-msgstr "Fil katalogu i dëmtuar: forma shumës msgstr e përdorur pa msgid_plural"
+msgstr ""
+"Kartelë katalogu e dëmtuar: vargje mesazhesh në shumës përdorur pa "
+"msgid_plural"
 
 msgid ""
 "There were errors when loading the catalog. Some data may be missing or "
 "corrupted as the result."
 msgstr ""
 "Pati gabime gjatë ngarkimit të katalogut. Për pasojë, disa nga të dhënat "
-"mund të kenë humbur ose janë korruptuar."
+"mund të kenë humbur ose të jenë dëmtuar."
 
 #, c-format
 msgid "Couldn't load file %s, it is probably corrupted."
-msgstr "Fili %s nuk mund të ngarkohej, ka mundësi të jetë i korruptuar."
+msgstr "Kartela %s nuk u ngarkua dot, ka gjasa të jetë e dëmtuar."
 
 #, c-format
 msgid ""
 "File '%s' is read-only and cannot be saved.\n"
 "Please save it under different name."
 msgstr ""
-"Fili '%s' është vetëm-lexo dhe nuk mund të ruhet.\n"
-"Ju lutem, ruajeni atë nën një emër tjetër."
+"Kartela '%s' është vetëm e lexueshme dhe s’mund të ruhet.\n"
+"Ju lutemi, ruajeni nën një emër tjetër."
 
 #, c-format
 msgid "Couldn't save file %s."
-msgstr "Nuk mund të ruajë filin %s."
+msgstr "Nuk u ruajt dot kartela %s."
 
 msgid ""
 "There was a problem formatting the file nicely (but it was saved all right)."
 msgstr ""
-"Pati një problem me formatimin si duhet të filit (por u ruajt në rregull)."
+"Pati një problem me formatimin si duhet të kartelës (por u ruajt në rregull)."
 
 #, c-format
 msgid ""
@@ -83,105 +86,193 @@ msgid ""
 "\n"
 "It was saved in UTF-8 instead and the setting was modified accordingly."
 msgstr ""
-"Katalogu nuk mund të ruhej në setin e karaktereve '%s' të specifikuar në "
-"rregullimet e katalogut.\n"
+"Katalogu nuk u ruajt dot nën shkronjat '%s' e treguara në rregullime "
+"katalogu.\n"
 "\n"
-"Në vend të saj, u ruajt në UTF-8 dhe rregullimi u modifikua në përputhje me "
-"të."
+"U ruajt nën UTF-8 dhe rregullimi u ndryshua për përputhje."
 
 msgid "Error saving catalog"
-msgstr "Gabim gjatë ruajtjes së katalogut"
+msgstr "Gabim në ruajtje katalogu"
+
+msgid "PO Translation Files"
+msgstr "Kartela Përkthimi PO"
+
+msgid "POT Translation Templates"
+msgstr "Gjedhe Përkthimi POT"
+
+msgid "All Translation Files"
+msgstr "Të gjithë filet e përkthimit"
 
 msgid "Merging differences..."
-msgstr "Bashkon dallimet..."
+msgstr "Po përziehen dallimet..."
 
 #, c-format
 msgid "'%s' is not a valid POT file."
-msgstr "'%s' nuk është një fil i vlefshëm POT."
+msgstr "'%s' nuk është një kartelë POT e vlefshme."
 
 msgid "(Use default language)"
-msgstr "(Përdor gjuhën standarde)"
+msgstr "(Përdor gjuhë parazgjedhje)"
 
 msgid "Select your preferred language"
-msgstr "Zgjedh gjuhën tuaj të preferuar"
+msgstr "Përzgjidhni gjuhën tuaj të parapëlqyer"
 
 msgid "Language selection"
-msgstr "Zgjedh gjuhën"
+msgstr "Përzgjedhje gjuhe"
 
 msgid "You must restart Poedit for this change to take effect."
-msgstr "Duhet të ri-filloni Poedit, që këto ndryshime të hyjnë në fuqi."
+msgstr "Duhet të rinisni Poedit, që të hyjnë në fuqi ndryshimet."
+
+msgid "Downloading translations is disabled in this project."
+msgstr "Shkarkimi i përkthimeve është i çaktivizuar për këtë projekt."
+
+msgid "Not authorized, please sign in again."
+msgstr "Jo i autorizuar, ju lutemi, bëni hyrjen sërish."
+
+msgid "Sign in to Crowdin"
+msgstr "Hyni në Crowdin"
+
+msgid ""
+"Crowdin is an online localization management platform and collaborative "
+"translation tool. Poedit can seamlessly sync PO files managed at Crowdin."
+msgstr ""
+"Crowdin është një platformë administrimi përkthimesh në internet dhe mjet "
+"përkthimi në bashkëpunim. Poedit-i mund të njëkohësojë pa të metë kartela PO "
+"të administruara në Crowdin."
+
+msgid "Sign In"
+msgstr "Hyni"
+
+msgid "Sign in"
+msgstr "Hyni"
+
+msgid "Sign Out"
+msgstr "Dilni"
+
+msgid "Sign out"
+msgstr "Dilni"
+
+msgid "Waiting for authentication…"
+msgstr "Po pritet për mirëfilltësim…"
+
+msgid "Updating user information…"
+msgstr "Po përditësohen të dhëna mbi përdoruesin…"
+
+msgid "Signed in as:"
+msgstr "I futur si:"
+
+msgid "Learn More About Crowdin"
+msgstr "Mësoni Më Tepër Mbi Crowdin-in"
+
+msgid "Learn more about Crowdin"
+msgstr "Mësoni më tepër mbi Crowdin-in"
+
+msgid "Open Crowdin translation"
+msgstr "Hap përkthimin në Crowdin"
+
+msgid "Project:"
+msgstr "Projekt:"
+
+msgid "Language:"
+msgstr "Gjuhë:"
+
+msgid "File:"
+msgstr "Kartelë:"
+
+msgid "No translation projects listed in your Crowdin account."
+msgstr "Pa projekte përkthimi në llogarinë tuaj Crowdin."
+
+msgid "This project has no files that can be translated in Poedit."
+msgstr "Ky projekt nuk ka kartela që mund të përkthehen nën Poedit."
+
+msgid "This file can only be edited in Crowdin’s web interface."
+msgstr "Ky fil mund të korrigjohet në ndërfaqen ueb të Crowdin."
+
+msgid "Downloading latest translations…"
+msgstr "Po shkarkohen përkthimet më të reja…"
+
+msgid "Syncing with Crowdin"
+msgstr "Po bëhet njëkohësimi me Crowdin-in"
+
+msgid "Syncing with Crowdin failed."
+msgstr "Njëkohësimi me Crowdin-in dështoi."
+
+msgid "Crowdin error"
+msgstr "Gabim Crowdin-i"
+
+msgid "Uploading translations…"
+msgstr "Po ngarkohen përkthime…"
 
 msgid "&Copy"
-msgstr "&Kopjo"
+msgstr "&Kopjoje"
 
 msgid "Learn more"
-msgstr "Mëso më tepër"
+msgstr "Mësoni më tepër"
 
 msgid "Learn More"
-msgstr "Mëso më shumë"
+msgstr "Mësoni Më Tepër"
 
 #, c-format
 msgid "Failed command: %s"
-msgstr "Komanda dështoi: %s"
+msgstr "Urdhri që dështoi: %s"
 
 msgid "Failed to merge gettext catalogs."
-msgstr "Dështoi në bashkimin e katalogëve gettext."
+msgstr "Dështoi në përzierjen e katalogëve gettext."
 
 msgid "Scanning files..."
-msgstr "Skanon filet..."
+msgstr "Po skanohen kartelat..."
 
 #. TRANSLATORS: '%s' is replaced with the kind of the files (e.g. C++, PHP, ...)
 #, c-format
 msgid "Parsing %s files..."
-msgstr "Analizon %s filet.."
+msgstr "Po përtypen kartela %s..."
 
 msgid "Failed to load extracted catalog."
-msgstr "Dështoi në ngarkimin e katalogut të nxjerrë."
+msgstr "Dështoi në ngarkimin e katalogut të përftuar."
 
 msgid "&Help"
 msgstr "&Ndihmë"
 
 msgid "MO files can’t be directly edited in Poedit."
-msgstr "Filet MO nuk mund të korrigjohen direkt në Poedit."
+msgstr "Kartelat MO s’mund të përpunohen drejt e në Poedit."
 
 msgid "Error opening file"
-msgstr "Gabim në hapjen e filit"
+msgstr "Gabim gjatë hapjes së kartelës"
 
 msgid ""
 "Please open and edit the corresponding PO file instead. When you save it, "
 "the MO file will be updated as well."
 msgstr ""
-"Ju lutem, hap dhe korrigjo filin korrespondues PO, në vend të tij. Kur ta "
-"ruani atë, fili MO do të aktualizohet gjithashtu."
+"Ju lutemi, në vend të kësaj, hapni dhe përpunoni kartelën përgjegjëse PO. "
+"Kur e ruani, do të përditësohet edhe kartela MO."
 
 msgid "don't delete temporary files (for debugging)"
-msgstr "mos i fshij filet e përkohshme (për përmirësimin e gabimit)"
+msgstr "mos fshi kartela të përkohshme (për diagnostikim)"
+
+msgid "handle a poedit:// URI"
+msgstr "trajto një URI a poedit://"
+
+msgid "Failed to communicate with Poedit process."
+msgstr ""
 
 #, c-format
 msgid "Unhandled exception occurred: %s"
-msgstr "Ka ndodhur një përjashtim i patrajtuar: %s"
+msgstr "Ndodhi një përjashtim i patrajtuar: %s"
 
 msgid "Unhandled exception occurred."
-msgstr "Ka ndodhur një përjashtim i patrajtuar."
+msgstr "Ndodhi një përjashtim i patrajtuar."
 
 msgid "Open catalog"
 msgstr "Hap katalog"
 
-msgid "All Files"
-msgstr "Të gjithë filet"
-
-msgid "PO Translation Files"
-msgstr "Përkthimi i fileve PO"
-
 #, c-format
 msgid "File '%s' doesn't exist."
-msgstr "Fili '%s' nuk ekziston."
+msgstr "Kartela '%s' s’ekziston."
 
 #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name
 #. ("Poedit" here, but please use "%s")
 #, c-format
 msgid "About %s"
-msgstr "Rreth %s"
+msgstr "Mbi %s-in"
 
 #. TRANSLATORS: This is version information in about dialog, "%s" will be
 #. version number when used
@@ -190,150 +281,150 @@ msgid "Version %s"
 msgstr "Versioni %s"
 
 msgid "Poedit is an easy to use translations editor."
-msgstr "Poedit është një editor përkthimesh i lehtë për t'u përdorur."
+msgstr "Poedit është një përpunues përkthimesh i lehtë për t’u përdorur."
 
 msgid "Catalogs Manager"
-msgstr "Menaxher katalogësh"
+msgstr "Përgjegjës Katalogësh"
 
 msgid "Check for Updates..."
-msgstr "Kontrollo për aktualizime..."
+msgstr "Kontrollo për Përditësime..."
 
 msgid "&Edit"
-msgstr "&Korrigjo"
+msgstr "&Përpunoni"
 
 msgid "Undo"
-msgstr "Mosbëj"
+msgstr "Zhbëje"
 
 msgid "Redo"
-msgstr "Ribëj"
+msgstr "Ribëje"
 
 msgid "Paste and Match Style"
-msgstr "Ngjit dhe përko stilin"
+msgstr "Ngjite dhe Përputhi Stilin"
 
 msgid "Delete"
-msgstr "Fshij"
+msgstr "Fshije"
 
 msgid "Spelling and Grammar"
 msgstr "Drejtshkrim dhe Gramatikë"
 
 msgid "Show Spelling and Grammar"
-msgstr "Shfaq Drejtshkrimin dhe Gramatikën"
+msgstr "Shfaq Drejtshkrim dhe Gramatikë"
 
 msgid "Check Document Now"
-msgstr "Kontrollo dokumentin tani"
+msgstr "Kontrollojeni Dokumentin Tani"
 
 msgid "Check Spelling While Typing"
-msgstr "Kontrollo Drejtshkrimin ndërsa shkruan"
+msgstr "Kontrolloji Drejtshkrimin Teksa Shtypet"
 
 msgid "Check Grammar With Spelling"
-msgstr "Kontrollo Gramatikën me Drejtshkrimin"
+msgstr "Kontrollojini Gramatikën Me Drejtshkrimin"
 
 msgid "Correct Spelling Automatically"
-msgstr "Korrekto automatikisht Drejtshkrimin"
+msgstr "Ndreqe Vetvetiu Drejtshkrimin"
 
 msgid "Substitutions"
 msgstr "Zëvendësime"
 
 msgid "Show Substitutions"
-msgstr "Shfaq zëvendësimet"
+msgstr "Shfaq Zëvendësimet"
 
 msgid "Smart Copy/Paste"
-msgstr "Kopjim/Ngjitje e zgjuar"
+msgstr "Kopjim/Ngjite e Mençur"
 
 msgid "Smart Quotes"
-msgstr "Citime të zgjuara"
+msgstr "Thonjëza të Mençura"
 
 msgid "Smart Dashes"
-msgstr "Vija të zgjuara"
+msgstr "Vija të Mençura"
 
 msgid "Smart Links"
-msgstr "Lidhje të zgjuara"
+msgstr "Lidhje të Mençura"
 
 msgid "Text Replacement"
-msgstr "Zëvendësim teksti"
+msgstr "Zëvendësim Teksti"
 
 msgid "Transformations"
-msgstr "Transformimet"
+msgstr "Shndërrime"
 
 msgid "Make Upper Case"
-msgstr "Bëje me shkronja të mëdha"
+msgstr "Kaloje në shkronja të mëdha"
 
 msgid "Make Lower Case"
-msgstr "Bëje me shkronja të vogla"
+msgstr "Kaloje në shkronja të vogla"
 
 msgid "Capitalize"
-msgstr "Kapitale"
+msgstr "Me shkronjë të madhe"
 
 msgid "Speech"
-msgstr "Fjalim"
+msgstr "E folur"
 
 msgid "Start Speaking"
-msgstr "Fillo të flasësh"
+msgstr "Filloni të Folurën"
 
 msgid "Stop Speaking"
-msgstr "Ndal të folurën"
+msgstr "Ndalni të Folurën"
 
 msgid "&View"
-msgstr "&Pamje"
+msgstr "&Parje"
 
 msgid "Enter Full Screen"
-msgstr "Fut ekranin e plotë"
+msgstr "Kaloni Në Gjendjen Krejt Ekrani"
 
 msgid "Window"
 msgstr "Dritare"
 
 msgid "Minimize"
-msgstr "Minimizo"
+msgstr "Minimizoje"
 
 msgid "Zoom"
-msgstr "Përmaso"
+msgstr "Zoom"
 
 msgid "Bring All to Front"
-msgstr "Silli të gjitha përpara"
+msgstr "Silli Krejt Përpara"
 
 msgid "PO Translation"
 msgstr "Përkthimi në trajtë PO"
 
 msgid "The file cannot be opened."
-msgstr "Fili nuk mund të hapet."
+msgstr "Kartela s’hapet dot."
 
 msgid "Invalid file"
-msgstr "Fil i pavlefshëm"
+msgstr "Kartelë e pavlefshme"
 
 msgid ""
 "The file may be either corrupted or in a format not recognized by Poedit."
 msgstr ""
-"Fili mund të jetë i korruptuar, ose në një format të panjohur nga Poedit."
+"Kartela mund të jetë ose e dëmtuar, ose në një format të panjohur nga Poedit."
 
 msgid "&Undo"
-msgstr "&Mosbëj"
+msgstr "&Zhbëje"
 
 msgid "&Redo"
-msgstr "&Ribëj"
+msgstr "&Ribëje"
 
 msgid "Cu&t"
-msgstr "P&rej"
+msgstr "&Prije"
 
 msgid "Cut"
-msgstr "Prej"
+msgstr "Prijeni"
 
 msgid "Copy"
-msgstr "Kopjo"
+msgstr "Kopjojeni"
 
 msgid "&Paste"
-msgstr "&Ngjit"
+msgstr "&Ngjite"
 
 msgid "Paste"
-msgstr "Ngjit"
+msgstr "Ngjitni"
 
 msgid "&Delete"
-msgstr "&Fshij"
+msgstr "&Fshije"
 
 msgid "Select &All"
-msgstr "Zgjedh &të gjitha"
+msgstr "Përzgjidhe &Krejt"
 
 msgid "Select All"
-msgstr "Zgjedh All"
+msgstr "Përzgjidheni Krejt"
 
 #. TRANSLATORS: Keyboard shortcut for display in Windows menus
 #. TRANSLATORS: This is the key shortcut used in menus on Windows, some languages call them differently
@@ -355,7 +446,7 @@ msgstr "ENTER"
 
 #. TRANSLATORS: Keyboard shortcut for display in Windows menus
 msgid "Up"
-msgstr "Lart"
+msgstr "Up"
 
 #. TRANSLATORS: Keyboard shortcut for display in Windows menus
 msgid "Down"
@@ -363,34 +454,34 @@ msgstr "Poshtë"
 
 #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+"
 msgid "ctrl"
-msgstr "Ctrl"
+msgstr "ctrl"
 
 #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+"
 msgid "alt"
-msgstr "Alt"
+msgstr "alt"
 
 #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+"
 msgid "shift"
-msgstr "Shift"
+msgstr "shift"
 
 msgid "You can't drop more than one file on Poedit window."
-msgstr "Nuk mund të lëshoni më tepër se një fil në dritaren Poedit."
+msgstr "S’mund të jepni më tepër se një kartelë te dritarja Poedit."
 
 #, c-format
 msgid "File '%s' is not a message catalog."
-msgstr "Fili '%s' nuk është një katalog mesazhesh."
+msgstr "Kartela '%s' s’është katalog mesazhesh."
 
 msgid "Poedit"
 msgstr "Poedit"
 
 msgid "&File"
-msgstr "&Filet"
+msgstr "&Kartelë"
 
 msgid "&Go"
 msgstr "&Shko"
 
 msgid "Source text:"
-msgstr "Teksti i burimit:"
+msgstr "Teksti burim:"
 
 msgid "Singular:"
 msgstr "Njëjës:"
@@ -399,7 +490,20 @@ msgid "Plural:"
 msgstr "Shumës:"
 
 msgid "Translation:"
-msgstr "Përkthimi:"
+msgstr "Përkthim:"
+
+msgid ""
+"POT files are only templates and don’t contain any translations themselves.\n"
+"To make a translation, create a new PO file based on the template."
+msgstr ""
+"Filet POT janë vetëm shabllone dhe nuk përmbajnë ndonjë përkthim të tyre. \n"
+" Për të bërë një përkthim, krijo një fil të ri PO, të bazuar mbi shabllonin."
+
+msgid "Create New Translation"
+msgstr "Krijo përkthim të ri"
+
+msgid "Create new translation"
+msgstr "Krijoni përkthim të ri"
 
 #. TRANSLATORS: %s is language name in its basic form (as you
 #. would see e.g. in a list of supported languages). You may need
@@ -408,176 +512,194 @@ msgstr "Përkthimi:"
 msgid ""
 "Spellchecking is disabled, because the dictionary for %s isn’t installed."
 msgstr ""
-"Kontrolli i drejtshkrimit është pasivizuar, sepse fjalori për %s nuk është "
-"instaluar."
+"Kontrolli i drejtshkrimit është i çaktivizuar, ngaqë fjalori për %s s’është "
+"i instaluar."
 
 msgid "Install"
-msgstr "Instalo"
+msgstr "Instaloje"
 
 msgid "Catalog modified. Do you want to save changes?"
-msgstr "Katalogu u ndryshua. Doni të ruani ndryshimet?"
+msgstr "Katalogu u ndryshua. Doni të ruhen ndryshimet?"
 
 msgid "Save changes"
-msgstr "Ruaj ndryshimet"
+msgstr "Ruaji ndryshimet"
 
 msgid "Your changes will be lost if you don't save them."
-msgstr "Ndryshimet tuaja do të humbasin, nëse nuk i ruani ato."
+msgstr "Ndryshimet tuaja do të humbasin, nëse s’i ruani."
 
 msgid "Save"
-msgstr "Ruaj"
+msgstr "Ruaje"
 
 msgid "Don't save"
 msgstr "Mos e ruaj"
 
 msgid "Don't Save"
-msgstr "Mos ruaj"
+msgstr "Mos e Ruaj"
 
 msgid "Save as..."
-msgstr "Ruaj si..."
+msgstr "Ruajeni si..."
 
 msgid "Compile to..."
-msgstr "Kompilo tek..."
+msgstr "Përpiloje te..."
 
 msgid "Compiled Translation Files"
-msgstr "Filet e kompiluara të përkthimit"
+msgstr "Kartela Përkthimi të Përpiluara"
 
 msgid "Export as..."
-msgstr "Eksporto si..."
+msgstr "Eksportojeni si..."
 
 msgid "HTML Files"
-msgstr "Filet HTML"
+msgstr "Kartela HTML"
 
 msgid "Open catalog template"
-msgstr "Hap model katalogu"
-
-msgid "POT Translation Templates"
-msgstr "Shabllonet e përkthimit POT"
+msgstr "Hap gjedhe katalogu"
 
 msgid "Updating catalog"
-msgstr "Aktualizon katalogun"
+msgstr "Po përditësohet katalogu"
 
 msgid "Source code not available."
-msgstr "Kodi i burimit nuk është i vlefshëm."
+msgstr "Pa kod burim të gatshëm."
 
 msgid "Updating failed"
-msgstr "Aktualizimi dështoi"
+msgstr "Përditësimi dështoi"
 
 msgid ""
 "Translations couldn’t be updated from the source code, because no code was "
 "found in the location specified in the catalog’s Properties."
 msgstr ""
-"Përkthimet nuk mund të aktualizohen nga kodi i burimit, sepse nuk gjendet "
-"asnjë kod në lokalizimin e specifikuar në Vetitë e katalogut."
+"S’u përditësuan dot përkthimet që prej kodit burim, ngaqë s’u gjet kod në "
+"vendin e treguar te Vetitë e katalogut."
 
 msgid "Entries in the catalog are probably incorrect."
-msgstr "Hyrjet në katalog mund të jenë jokorrekte."
+msgstr "Ndoshta ka zëra të pasaktë në katalog."
 
 msgid "Updating the catalog failed. Click on 'Details >>' for details."
-msgstr "Aktualizimi i katalogut dështoi. Kliko 'Detajet >>' për më tepër."
+msgstr "Përditësimi i katalogut dështoi. Për hollësi, klikoni te 'Hollësi >>'."
 
 #, c-format
 msgid "%d issue with the translation found."
 msgid_plural "%d issues with the translation found."
-msgstr[0] "%d problem me përkthimin u gjet."
-msgstr[1] "%d probleme me përkthimin u gjetën."
+msgstr[0] "U gjet %d problem te përkthimi."
+msgstr[1] "U gjetën %d probleme te përkthimi."
 
 msgid "Validation results"
-msgstr "Rezultatet e vlerësimit"
+msgstr "Përfundime vleftësimi"
 
 msgid ""
 "Entries with errors were marked in red in the list. Details of the error "
 "will be shown when you select such an entry."
 msgstr ""
-"Hyrjet me gabime janë shënuar me të kuqe në listë. Detajet e gabimit do të "
-"shfaqen, kur të keni zgjedhur një hyrje të tillë."
+"Zërat me gabime janë shënuar me të kuqe te lista. Hollësitë e gabimit do të "
+"shfaqen pasi të keni përzgjedhur një zë të tillë."
 
 msgid "The file was saved safely."
-msgstr "Fili u ruajt me siguri."
+msgstr "Kartela u ruajt me siguri."
 
 msgid ""
 "The file was saved safely and compiled into the MO format, but it will "
 "probably not work correctly."
 msgstr ""
-"Fili u ruajt me siguri dhe u përpilua në formatin MO, por mund të mos punojë "
-"saktë."
+"Kartela u ruajt me siguri dhe u përpilua nën formatin MO, por sipas gjasash "
+"s’do të funksionojë saktësisht."
 
 msgid ""
 "The file was saved safely, but it cannot be compiled into the MO format and "
 "used."
 msgstr ""
-"Fili u ruajt me siguri, por nuk mynd të përpilohet në formatin MO dhe të "
+"Kartela u ruajt pa problem, por s’përpilohet dot në formatin MO dhe të "
 "përdoret."
 
 msgid ""
 "The file was compiled into the MO format, but it will probably not work "
 "correctly."
-msgstr "Fili u kompilua në formatin MO, por mund të mos punojë si duhet."
+msgstr ""
+"Kartela u përpilua nën formatin MO, por sipas gjasash s’do të funksionojë "
+"saktësisht."
 
 msgid "The file cannot be compiled into the MO format and used."
-msgstr "Fili nuk mund të kompilohet në formatin MO dhe të përdoret."
+msgstr "Kartela s’përpilohet dot në formatin MO dhe të përdoret."
 
 msgid "No problems with the translation found."
-msgstr "Nuk gjenden probleme me përkthimin."
+msgstr "S’u gjetën probleme me përkthimin."
 
 #, c-format
 msgid "The translation is ready for use, but %d entry is not translated yet."
 msgid_plural ""
 "The translation is ready for use, but %d entries are not translated yet."
 msgstr[0] ""
-"Përkthimi është gati për përdorim, por hyrja %d nuk është përkthyer akoma."
+"Përkthimi është gati për përdorim, por %d zë është ende i papërkthyer."
 msgstr[1] ""
-"Përkthimi është gati për përdorim, por hyrjet %d nuk janë përkthyer akoma."
+"Përkthimi është gati për përdorim, por %d zëra janë ende të papërkthyer."
 
 msgid "The translation is ready for use."
 msgstr "Përkthimi është gati për përdorim."
 
-msgid "No references to this string found."
-msgstr "Nuk gjenden referenca në këtë varg."
-
-msgid "Please choose the reference you want to show:"
-msgstr "Ju lutem, zgjedh referencën që doni të shfaqni:"
+msgid "Context:"
+msgstr "Kontekst:"
 
-msgid "References"
-msgstr "Referenca"
+#, c-format
+msgid "Poedit automatically fixed invalid content in the file “%s”."
+msgstr ""
 
-msgid "Context:"
-msgstr "Konteksti:"
+msgid ""
+"The file contained duplicate items, which is not allowed in PO files and "
+"would prevent the file from being used. Poedit fixed the issue, but you "
+"should review translations of any items marked as fuzzy and correct them if "
+"necessary."
+msgstr ""
 
 msgid "Language of the translation isn't set."
-msgstr "Nuk është vendosur gjuha e përkthimit."
+msgstr "S’është caktuar gjuha e përkthimit."
 
 msgid "Set Language"
-msgstr "Vendos gjuhën"
+msgstr "Caktoni Gjuhën"
 
 msgid "Set language"
-msgstr "Vendos gjuhën"
+msgstr "Caktoni gjuhën"
+
+#. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)."
+msgid ""
+"Suggestions are not available if the translation language is not set "
+"correctly. Other features, such as plural forms, may be affected as well."
+msgstr ""
+"Nuk jepen këshillime, nës rast se gjuha e përkthimi nuk është caktuar saktë. "
+"Kjo mund të prekë edhe veçori të tjera, format e shumësit, për shembull."
+
+msgid "Language of the translation is the same as source language."
+msgstr "Gjuha e përkthimit është e njëjtë me gjuhën burim."
+
+msgid "Fix Language"
+msgstr "Ndreqeni Gjuhën"
+
+msgid "Fix language"
+msgstr "Ndreqeni gjuhën"
 
 msgid ""
 "This catalog has entries with plural forms, but doesn't have Plural-Forms "
 "header configured."
 msgstr ""
-"Ky katalog ka hyrje me forma shumës, por nuk ka kokë Plural-Forms të "
-"konfiguruar."
+"Ky katalog ka zëra me forma shumësi, por s’ka fushë Plural-Forms të "
+"formësuar."
 
 msgid ""
 "Entries in this catalog have different plural forms count from what "
 "catalog's Plural-Forms header says"
 msgstr ""
-"Hyrjet në këtë katalog kanë numra të formave shumës të ndryshme, nga ajo që "
-"tregohet në kokën Forma-Shumës të katalogut"
+"Zërat në këtë katalog kanë forma shumësi të ndryshme nga çka tregohet te "
+"fusha Plural-Forms e katalogut"
 
 msgid "Required header Plural-Forms is missing."
-msgstr "Kërkohet koka Plural-Forms (forma-shumës) që mungon."
+msgstr "I mungon krye e domosdoshme Plural-Forms."
 
 #, c-format
 msgid "Syntax error in Plural-Forms header (\"%s\")."
-msgstr "Gabim sintakse në kokën Plural-Forms (\"%s\")."
+msgstr "Gabim sintakse te kryet Plural-Forms (\"%s\")."
 
 msgid "Fix the Header"
-msgstr "Fikso kokën"
+msgstr "Ndreqni Kryet"
 
 msgid "Fix the header"
-msgstr "Fikso kokën"
+msgstr "Ndreqni kryet"
 
 #. TRANSLATORS: %s is language name in its basic form (as you
 #. would see e.g. in a list of supported languages). You may need
@@ -585,31 +707,38 @@ msgstr "Fikso kokën"
 #, c-format
 msgid "Plural forms expression used by the catalog is unusual for %s."
 msgstr ""
-"Shprehja për format shumës që përdoren nga katalogu është e pazakontë për %s."
+"Shprehja për forma shumësi e përdorur nga katalogu është e pazakontë për %s."
 
+#. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the catalog is unusual for %s.")"
 msgid "Review"
-msgstr "Rishiko"
+msgstr "Shqyrtoni"
 
 #, c-format
 msgid "Error loading message catalog file '%s'."
-msgstr "Gabim në ngarkimin e filit të katalogut të mesazhit '%s'."
+msgstr "Gabim në ngarkimin e kartelës katalog mesazhesh '%s'."
 
 #, c-format
 msgid "Translated: %d of %d (%d %%)"
-msgstr "Përkthyer: %d nga %d (%d %%)"
+msgstr "Të përkthyera: %d nga %d (%d %%)"
 
 #, c-format
 msgid "Remaining: %d"
-msgstr "Mbesin: %d"
+msgstr "Të mbetura: %d"
 
 #, c-format
 msgid "%d error"
 msgid_plural "%d errors"
-msgstr[0] "%d Fehler"
-msgstr[1] "%d Fehler"
+msgstr[0] "%d gabim"
+msgstr[1] "%d gabime"
+
+#, c-format
+msgid "%d entry"
+msgid_plural "%d entries"
+msgstr[0] "%d hyrje"
+msgstr[1] "%d hyrje"
 
 msgid " (unsaved)"
-msgstr " (paruajtur)"
+msgstr " (i paruajtur)"
 
 msgid " (modified)"
 msgstr " (ndryshuar)"
@@ -619,109 +748,111 @@ msgstr "Shko"
 
 #, c-format
 msgid "Failed to update translation memory: %s"
-msgstr "Dështoi në aktualizimin e kujtesës së përkthimit: %s"
+msgstr "Dështoi në përditësimin e kujtesës së përkthimeve: %s"
 
 msgid "Purge deleted translations"
-msgstr "Spastro përkthimet e fshira"
+msgstr "Pastroji përkthimet e fshira"
 
 msgid "Do you want to remove all translations that are no longer used?"
-msgstr "Doni të largoni të gjithë përkthimet, që nuk përdoren më?"
+msgstr "Doni të hiqen krejt përkthimet që s’përdoren më?"
 
 msgid ""
 "If you continue with purging, all translations marked as deleted will be "
 "permanently removed. You will have to translate them again if they are added "
 "back in the future."
 msgstr ""
-"Nëse vazhdoni me spastrimin, të gjitha përkthimet e shënjuara si të fshira, "
-"do të largohen përfundimisht. Do ju duhet t'i përktheni ato përsëri, nëse "
-"shtohen në të ardhmen."
+"Nëse vazhdoni me spastrimin, krejt përkthimet e shënuara si të fshira do të "
+"hiqen përgjithmonë. Do t’ju duhet t’i përktheni sërish, nëse shtohen sërish "
+"në të ardhmen."
 
 msgid "Keep"
 msgstr "Mbaje"
 
 msgid "Purge"
-msgstr "Spastro"
+msgstr "Spastroji"
 
 msgid "Fill missing translations from TM"
-msgstr "Plotëso përkthimet që mungojnë nga TM"
+msgstr "Përkthimet që mungojnë plotësoji prej TM-je"
 
 msgid "Only fill in exact matches"
-msgstr "Plotëso vetëm përkimet e sakta"
+msgstr "Plotëso vetëm përputhjet e përpikta"
 
 msgid ""
 "By default, inaccurate results are filled in as well and marked as fuzzy. "
 "Check this option to only include accurate matches."
 msgstr ""
-"Si standard, rezultatet e pasakta plotësohen gjithashtu dhe shënohen si të "
-"paqarta. Kontrollo këtë opsion për të përfshirë vetëm përkime të sakta."
+"Si parazgjedhje, plotësohen edhe përfundimet e pasakta dhe shënohen si të "
+"turbullta. I vini shenjë kësaj mundësie që të përfshihen vetëm përputhjet e "
+"përshtatshme."
 
 msgid "Don’t mark exact matches as fuzzy"
-msgstr "Mos i shënjo përkimet e sakta si të paqarta"
+msgstr "Përputhjet e sakta mos i shëno si të turbullta"
 
 msgid ""
 "Only enable if you trust the quality of your TM. By default, all matches "
 "from the TM are marked as fuzzy and should be reviewed."
 msgstr ""
-"Aftëso vetëm nëse besoni cilësinë e TM suaj. Si standard, të gjitha përkimet "
-"nga TM shënjohen si të paqarta dhe duhet të rishikohen."
+"Aktivizojeni vetëm nëse besoni në cilësinë e TM-së suaj. Si parazgjedhje, "
+"krejt përputhjet prej TM-së shënohen si të turbullta dhe do të duheshin "
+"marrë në shqyrtim."
 
 msgid "Fill"
-msgstr "Mbush"
+msgstr "Plotësoje"
 
 #, c-format
 msgid "%d entry was filled from the translation memory."
 msgid_plural "%d entries were filled from the translation memory."
-msgstr[0] "%d hyrje u plotësua nga kujtesa e përkthimeve."
-msgstr[1] "%d hyrje u plotësuan nga kujtesa e përkthimeve."
+msgstr[0] "%d zë u plotësua nga kujtesa e përkthimeve."
+msgstr[1] "%d zëra u plotësuan nga kujtesa e përkthimeve."
 
 msgid ""
 "The translations were marked as fuzzy, because they may be inaccurate. You "
 "should review them for correctness."
 msgstr ""
-"Përkthimet janë shënuar si të paqartë, ngaqë mund të jenë të pasaktë. Duhet "
-"t'i rishikoni ato për saktësi."
+"Përkthimet janë shënuar si të turbullt, ngaqë mund të jenë të pasaktë. Do të "
+"duhej t’u kontrollonit saktësinë."
 
 msgid "No entries could be filled from the translation memory."
-msgstr "Nuk u mbushën hyrje nga kujtesa e përkthimit."
+msgstr "S’u plotësuan dot zëra prej kujtesës së përkthimit."
 
 msgid ""
 "The TM doesn’t contain any strings similar to the content of this file. It "
 "is only effective for semi-automatic translations after Poedit learns enough "
 "from files that you translated manually."
 msgstr ""
-"TM nuk përmban ndonjë varg të ngjashëm me përmbajtjen e këtij fili. Është "
-"efektive vetëm për përkthime gjysëm-automatike, pasi Poedit mëson mjaft nga "
-"filet që ju përktheni manualisht."
+"TM-ja s’përmban ndonjë varg të ngjashëm me lëndën e kësaj kartele. Ka efekt "
+"vetëm për përkthime gjysmë të vetvetishme, pasi Poedit grumbullon "
+"mjaftueshëm lëndë prej kartelave që përktheni dorazi."
 
 msgid "Translating"
-msgstr "Po përkthen"
+msgstr "Kur përkthehet"
 
 msgid "Filling missing translations from TM..."
-msgstr "Po mbush përkthimet që mungojnë nga TM..."
+msgstr "Përkthimet që mungojnë po plotësohen prej TM-je..."
 
 #, c-format
 msgid "Translated %u string"
 msgid_plural "Translated %u strings"
-msgstr[0] "Përkthyer %u varg"
-msgstr[1] "Përkthyer %u vargje"
+msgstr[0] "U përkthye %u varg"
+msgstr[1] "U përkthyen %u vargje"
 
 msgid "Copy from source text"
-msgstr "Kopjo nga teksti i burimit"
+msgstr "Kopjoje prej teksti burim"
 
 msgid "Copy from Source Text"
-msgstr "Kopjo nga teksti i burimit"
+msgstr "Kopjoje prej Teksti Burim"
 
 msgid "Clear translation"
-msgstr "Pastro përkthimin"
+msgstr "Pastroje përkthimin"
 
 msgid "Clear Translation"
-msgstr "Pastro përkthimin"
+msgstr "Pastroje Përkthimin"
 
 msgid "Edit comment"
-msgstr "Korrigjo komentin"
+msgstr "Përpunoni koment"
 
 msgid "Edit Comment"
-msgstr "Korrigjo komentin"
+msgstr "Përpunoni Komentin"
 
 msgid "References:"
 msgstr "Referenca:"
@@ -731,7 +862,10 @@ msgstr "Gjithçka"
 
 #, c-format
 msgid "Form %i"
-msgstr "Formulari %i"
+msgstr "Formular %i"
+
+msgid "Singular"
+msgstr "Njëjës"
 
 msgid "Zero"
 msgstr "Zero"
@@ -742,144 +876,173 @@ msgstr "Një"
 msgid "Two"
 msgstr "Dy"
 
+msgid "Plural"
+msgstr "Shumës"
+
 msgid "Other"
 msgstr "Tjetër"
 
 msgid "&Bookmarks"
-msgstr "&Faqeruajtës"
+msgstr "&Faqerojtës"
 
 #, c-format
 msgid "Set bookmark %i"
-msgstr "Vendos faqerojtësin %i"
+msgstr "Caktoni faqerojtës %i"
 
 #, c-format
 msgid "Go to bookmark %i"
-msgstr "Shko tek faqerojtësi %i"
+msgstr "Shkoni te faqerojtësi %i"
 
 #, c-format
 msgid "Set Bookmark %i"
-msgstr "Vendos faqerojtësin %i"
+msgstr "Caktoni Faqerojtës %i"
 
 #, c-format
 msgid "Go to Bookmark %i"
-msgstr "Shko tek faqerojtësi %i"
+msgstr "Shkoni te Faqerojtësi %i"
 
 msgid "Hide Sidebar"
-msgstr "Fshe anësoren"
+msgstr "Fshihe Anështyllën"
 
 msgid "Show Sidebar"
-msgstr "Shfaq anësoren"
+msgstr "Shfaqe Anështyllën"
+
+msgid "Hide Status Bar"
+msgstr ""
+
+msgid "Show Status Bar"
+msgstr ""
 
 msgid "Source text"
-msgstr "Teksti i burimit"
+msgstr "Teksti burim"
 
 msgid "Translation"
-msgstr "Përkthimi"
+msgstr "Përkthim"
 
 msgid "ID"
 msgstr "ID"
 
+#, c-format
+msgid "Source text — %s"
+msgstr "Teksti burim — %s"
+
 msgid "unknown language"
 msgstr "gjuhë e panjohur"
 
 #, c-format
 msgid "Translation — %s"
-msgstr "Përkthimi — %s"
+msgstr "Përkthim — %s"
 
 msgid "Error:"
 msgstr "Gabim:"
 
-msgid "Project info"
-msgstr "Info projekti"
+msgid "Source file"
+msgstr "Kartelë burim"
 
-msgid "Project name and version:"
-msgstr "Emri dhe versioni i projektit:"
+msgid "Source file occurrence:"
+msgstr "Hasje në kartelë burim:"
 
-msgid "Language:"
-msgstr "Gjuha:"
+msgid "Open in Editor"
+msgstr "Hape në Përpunues"
 
-msgid "Team:"
-msgstr "Ekipi:"
+msgid "Open in editor"
+msgstr "Hape në përpunues"
 
-msgid "Team's email address:"
-msgstr "Adresa email e ekipit:"
+msgid "No references for the selected item."
+msgstr "Pa referenca për objektin e përzgjedhur."
 
-msgid "Charset:"
-msgstr "Seti i karaktereve:"
+#, c-format
+msgid "Error opening file %s!"
+msgstr "Gabim gjatë hapjes së kartelës %s!"
 
-msgid "Source"
-msgstr "Burimi"
+msgid "Find"
+msgstr "Gjeni"
 
-msgid "Notes"
-msgstr "Shënime"
+msgid "Replace"
+msgstr "Zëvendësoje"
 
-msgid "Automatic translation"
-msgstr "Përkthim automatik"
+#. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.)
+msgid "Options"
+msgstr "Mundësi"
 
-msgid "Fuzzy translation"
-msgstr "Përkthim i paqartë"
+msgid "Ignore case"
+msgstr "Shpërfille shkrimin me të madhe ose me të vogël"
 
-msgid "Notes for translators:"
-msgstr "Shënime për përkthyesit:"
+msgid "Wrap around"
+msgstr "Mbështille"
 
-msgid "Comment:"
-msgstr "Komenti:"
+msgid "Whole words only"
+msgstr "Vetëm fjalë të plota"
 
-msgid "Source file"
-msgstr "Fili i burimit"
+msgid "Find in source texts"
+msgstr "Gjej tekste burim"
 
-msgid "Source file occurrence:"
-msgstr "Shfaqje e filit të burimit:"
+msgid "Find in translations"
+msgstr "Gjej në përkthime"
 
-msgid "Open in Editor"
-msgstr "Hap në Editor"
+msgid "Find in comments"
+msgstr "Gjej te komentet"
 
-msgid "Open in editor"
-msgstr "Hap në editor"
+msgid "Close"
+msgstr "Mbylle"
 
-#, c-format
-msgid "Error opening file %s!"
-msgstr "Gabim gjatë hapjes së filit %s!"
+msgid "Replace All"
+msgstr "Zëvendësoji Krejt"
+
+msgid "Replace all"
+msgstr "Zëvendësoji krejt"
+
+msgid "< &Previous"
+msgstr "< I &mëparshmi"
+
+msgid "&Next >"
+msgstr "&Pasuesi >"
+
+msgid "String to find"
+msgstr "Varg për t’u gjetur"
+
+msgid "Replacement string"
+msgstr "Varg zëvendësimi"
 
 #, c-format
 msgid "Cannot execute program: %s"
-msgstr "Nuk fillon dot programi: %s"
+msgstr "S’përmbushet dot programi: %s"
 
 msgid "Language Code or Name (e.g. en_GB)"
-msgstr "Kodi ose emri i gjuhës (psh. sq_AL)"
+msgstr "Kod ose Emër Gjuhe (p.sh. sq)"
 
 msgid "Translation Language"
-msgstr "Gjuha e përkthimit"
+msgstr "Gjuhë përkthimi"
 
 msgid "Language of the translation:"
 msgstr "Gjuha e përkthimit:"
 
 msgid "Poedit - Catalogs manager"
-msgstr "Poedit - menaxheri i katalogëve"
+msgstr "Poedit - Përgjegjës katalogësh"
 
 msgid "Catalog"
-msgstr "Katalogu"
+msgstr "Katalog"
 
 msgid "Total"
-msgstr "Gjithsejt"
+msgstr "Gjithsej"
 
 msgid "Untrans"
-msgstr "Mos-përkthe"
+msgstr "Papërkth"
 
 msgid "Fuzzy"
-msgstr "Paqartë"
+msgstr "I turbullt"
 
 msgid "Bad Tokens"
-msgstr "Shenja të këqia"
+msgstr "Objekte të Gabuar"
 
 msgid "Last modified"
-msgstr "Ndryshuar së fundi"
+msgstr "Ndryshuar së fundmi"
 
 msgid "Select directory"
-msgstr "Zgjedh drejtori"
+msgstr "Përzgjidhni drejtori"
 
 msgid "Directories:"
-msgstr "Drejtoritë:"
+msgstr "Drejtori:"
 
 msgid "<unnamed>"
 msgstr "<pa emër>"
@@ -888,96 +1051,96 @@ msgid "Do you want to delete the project?"
 msgstr "Doni të fshini projektin?"
 
 msgid "Confirmation"
-msgstr "Konfirmim"
+msgstr "Ripohim"
 
 msgid ""
 "Do you really want to do mass update of\n"
 "all catalogs in this project?"
 msgstr ""
-"Vërtet doni të bëni aktualizim masiv të\n"
-"të gjithë katalogëve në këtë projekt?"
+"Vërtet doni të bëni përditësim masiv të\n"
+"krejt katalogëve në këtë projekt?"
 
 msgid "Information about the translator"
-msgstr "Informacion rreth përkthyesit"
+msgstr "Të dhëna rreth përkthyesit"
 
 msgid "Name:"
-msgstr "Emri:"
+msgstr "Emër:"
 
 msgid "Your Name"
-msgstr "Emri juaj"
+msgstr "Emri Juaj"
 
 msgid "Email:"
 msgstr "Email:"
 
 msgid "your_email at example.com"
-msgstr "emaili_juaj at shembull.com"
+msgstr "email_i_juaj at shembull.com"
 
 msgid ""
 "Your name and email address are only used to set the Last-Translator header "
 "of GNU gettext files."
 msgstr ""
-"Emri juaj dhe adresa email janë përdorur vetëm për të vendosur kokën "
-"Përkthyesi-Fundit në filet GNU gettext."
+"Emri dhe email-i juaj përdoren vetëm për të plotësuar fushën Last-Translator "
+"të kartelave GNU gettext."
 
 msgid "Editing"
-msgstr "Korrigjon"
+msgstr "Përpunoni"
 
 msgid "Automatically compile MO file when saving"
-msgstr "Kompilo automatikisht filin MO gjatë ruajtjes"
+msgstr "Gjatë daljes, përpilo vetvetiu kartelën MO"
 
 msgid "Show summary after catalog update"
-msgstr "Shfaq përmbledhjen pas aktualizimit të katalogut"
+msgstr "Pas përditësimesh katalogu, shfaq përmbledhjen"
 
 msgid "Check spelling"
-msgstr "Kontrollo drejtshkrimin"
+msgstr "Kontrolloji drejtshkrimin"
 
 msgid "Always change focus to text input field"
-msgstr "Ndrysho gjithmonë fokusin për fushën e futjes së tekstit"
+msgstr "Ndryshoje përherë fokusin për te fushë futjeje teksti"
 
 msgid ""
 "Never let the list of strings take focus. If enabled, you must use Ctrl-"
 "arrows for keyboard navigation but you can also type text immediately, "
 "without having to press Tab to change focus."
 msgstr ""
-"Mos e lër kurrë listën e vargjeve të marrë fokusin. Nëse është aktiv, duhet "
-"të përdorni Ctrl-shigjeta për navigim me tastierë, por gjithashtu mund të "
-"shtypni tekst menjëherë, pa qenë nevoja të shtypni Tab për të ndryshuar "
+"Mos e lër kurrë listën e vargjeve të kontrollojë fokusin. Nëse është aktiv, "
+"duhet të përdorni Ctrl-shigjeta për lëvizje me tastierë, por gjithashtu mund "
+"të shtypni tekst përnjëherë, pa qenë nevoja të shtypni Tab për të ndryshuar "
 "fokusin."
 
 msgid "Appearance"
-msgstr "Dukshmëria"
+msgstr "Dukje"
 
 msgid "Use custom list font:"
-msgstr "Përdor shkrimin e listave të përshtatura:"
+msgstr "Përdor shkronja të personalizuara liste:"
 
 msgid "Use custom text fields font:"
-msgstr "Përdor shkrimin e fushave të përshtatura të tekstit:"
+msgstr "Përdor shkronjat e personalizuara për fusha tekstesh:"
 
 msgid "Change UI language"
-msgstr "Ndrysho gjuhën UI"
+msgstr "Ndryshoni gjuhën për UI-në"
 
 #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions
 msgid "(requires Windows 8 or newer)"
-msgstr "(kërkon Windows 8 ose më të ri)"
+msgstr "(lyp Windows 8 ose më të ri)"
 
 msgid "General"
-msgstr "E përgjithshme"
+msgstr "Të përgjithshme"
 
 msgid "Use translation memory"
-msgstr "Përdor kujtesën e përkthimeve"
+msgstr "Përdor kujtesë përkthimesh"
 
 msgid "Learn From Files..."
-msgstr "Mëso nga filet..."
+msgstr "Mëso Prej Kartelave..."
 
 msgid "Learn from files..."
-msgstr "Mëso nga filet..."
+msgstr "Mëso prej kartelave..."
 
 #. TRANSLATORS: This is a button that deletes everything in the translation memory (i.e. clears/resets it).
 msgid "Reset"
-msgstr "Rivendos"
+msgstr "Zeroje"
 
 msgid "Consult TM when updating from sources"
-msgstr "Këshillo TM, kur aktualizon nga burimet"
+msgstr "Këshillohu me TM-në, kur përditëson nga burime"
 
 msgid ""
 "If enabled, Poedit will try to fill in new entries using your previous\n"
@@ -985,45 +1148,45 @@ msgid ""
 "near-empty, it will not be very effective. The more translations\n"
 "you edit and the larger the TM grows, the better it gets."
 msgstr ""
-"Nëse aftësohet, Poedit do të provojë të plotësojë hyrjet e reja me anë të\n"
-"përkthimeve të mëparshme, të depozituara në kujtesën e përkthimeve.\n"
-"Nëse TM (kujtesa e përkthimit) është e zbrazët, kjo nuk do të ketë ndonjë\n"
-"efekt. Sa më shumë përkthime të korrigjoni, aq më shumë do të rritet TM\n"
-"dhe aq më e mirë do të bëhet."
+"Në u aktivizoftë, Poedit do të provojë t’i plotësojë zërat e rinj duke\n"
+"përdorur përkthimet tuaja të mëparshme të depozituara te kujtesa e\n"
+"përkthimeve. Nëse TM-ja është thuajse e zbrazët, kjo s’do të ketë\n"
+"vlerë kushedi. Sa më shumë përkthime përpunoni, aq më shumë\n"
+"rritet TM-ja, dhe aq më e mirë bëhet."
 
 msgid "Stored translations:"
 msgstr "Përkthime të depozituara:"
 
 msgid "Database size on disk:"
-msgstr "Madhësia e databazës në disk:"
+msgstr "Madhësi baze të dhënash në disk:"
 
 msgid "Select translation files to import"
-msgstr "Zgjedh filet e përkthimit për import"
+msgstr "Përzgjidhni kartela përkthimi për importim"
 
 msgid "Translation Memory"
-msgstr "Kujtesa e përkthimit"
+msgstr "Kujtesë Përkthimesh"
 
 msgid "Importing translations..."
 msgstr "Po importohen përkthimet..."
 
 msgid "Finalizing..."
-msgstr "Po përfundon..."
+msgstr "Po përfundohet..."
 
 msgid "Reset translation memory"
-msgstr "Rivendos kujtesën e përkthimit"
+msgstr "Të zerohet kujtesa e përkthimeve"
 
 msgid "Are you sure you want to reset the translation memory?"
-msgstr "A jeni i sigurt se doni të rivendosni kujtesën e përkthimit?"
+msgstr "Jeni i sigurt se doni të zerohet kujtesa e përkthimeve?"
 
 msgid ""
 "Resetting the translation memory will irrevocably delete all stored "
 "translations from it. You can’t undo this operation."
 msgstr ""
-"Rivendosja e kujtesës së përkthimit do të fshijë në mënyrë të pakthyeshme të "
-"gjitha përkthimet e ruajtura në të. Ky veprim nuk mund të rikthehet."
+"Zerimi i kujtesës së përkthimit do të fshijë pa prapakthim prej saj krejt "
+"përkthimet e depozituara në të. Këtë veprim s’mund ta zhbëni."
 
 msgid "Cancel"
-msgstr "Anulo"
+msgstr "Anuloje"
 
 #. TRANSLATORS: This is abbreviation of "Translation Memory" used in Preferences on OS X.
 #. Long text looks weird there, too short (like TM) too, but less so. "General" is about ideal
@@ -1035,383 +1198,410 @@ msgid ""
 "Source code extractors are used to find translatable strings in the source "
 "code files and extract them so that they can be translated."
 msgstr ""
-"Depaketuesit e kodit të burimit janë përdorur për të gjetur vargjet e "
-"përkthyeshme në kodin e burimit dhe depaketimin e tyre, në mënyrë që të mund "
-"përkthehen."
+"Përftuesit prej kodi burim përdoren për të gjetur vargje të përkthyeshme në "
+"kartela kodi burim dhe për t’i përftuar ato që të mund të përkthehen."
 
 msgid "New"
 msgstr "I ri"
 
 msgid "Edit"
-msgstr "Korrigjo"
+msgstr "Përpunoni"
+
+msgid "Delete extractor"
+msgstr "Fshije përftuesin"
+
+#, c-format
+msgid "Are you sure you want to delete the “%s” extractor?"
+msgstr "Jeni i sigurt se doni të fshihet përftuesi “%s”?"
 
 msgid "Extractors"
-msgstr "Depaketuesit"
+msgstr "Përftues"
+
+msgid "Accounts"
+msgstr "Llogari"
 
 msgid "Automatically check for updates"
-msgstr "Kontrollo automatikisht për aktualizime"
+msgstr "Kontrollo vetvetiu për përditësime"
 
 msgid "Include beta versions"
-msgstr "Përfshij versionet beta"
+msgstr "Përfshi versione beta"
 
 msgid ""
 "Beta versions contain the latest new features and improvements, but may be a "
 "bit less stable."
 msgstr ""
-"Versionet Beta përmbajnë tiparet dhe përmirësimet më të fundit, por mund të "
-"jenë disi jo stabile."
+"Versionet beta përmbajnë veçoritë dhe përmirësimet më të reja, por mund të "
+"jenë më pak të qëndrueshme."
 
 msgid "Updates"
-msgstr "Aktualizime"
+msgstr "Përditësime"
 
 msgid ""
 "These settings affect internal formatting of PO files. Adjust them if you "
 "have specific requirements e.g. because of version control."
 msgstr ""
-"Këto rregullime ndikojnë formatimin e brendshëm të fileve PO. Rregulloj ato "
-"nëse keni kërkesa specifike dmth. për arsye të kontrollit të versionit."
+"Këto rregullime prekin formatim të brendshëm të kartelave PO. Prekini nëse "
+"keni domosdoshmëri specifike, p.sh. për shkak sistemi kontrolli versionesh."
 
 msgid "Line endings:"
-msgstr "Përfundimet e linjave:"
+msgstr "Fundesh rreshtash:"
 
 msgid "Unix (recommended)"
-msgstr "Unix (rekomandohet)"
+msgstr "Unix (e këshillueshme)"
 
 msgid "Windows"
 msgstr "Windows"
 
 #. TRANSLATORS: Followed by text control for entering number; wraps text at given width
 msgid "Wrap at:"
-msgstr "Mbërthe në:"
+msgstr "Mbështille në gjatësinë:"
 
 msgid "Preserve formatting of existing files"
-msgstr "Ruaj formatimin e fileve ekzistues"
+msgstr "Ruaje formatimin e kartelave ekzistuese"
 
 msgid "Advanced"
-msgstr "Avancuar"
+msgstr "Të mëtejshme"
 
-msgid "Additional keywords"
-msgstr "Fjalë kyçe shtesë"
+msgid ""
+"<big>Drag and Drop Folders Here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+
+msgid ""
+"<big>Drag and drop folders here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+
+msgid "Add Folders..."
+msgstr ""
+
+msgid "Add folders..."
+msgstr ""
+
+msgid "Add Files..."
+msgstr ""
+
+msgid "Add files..."
+msgstr ""
+
+msgid "Add Wildcard..."
+msgstr ""
+
+msgid "Add wildcard..."
+msgstr ""
 
 msgid "Paths"
-msgstr "Rrugët"
+msgstr "Shtigje"
 
 msgid "Excluded paths"
-msgstr "Rrugët e përjashtuara"
+msgstr "Shtigje të përjashtuar"
+
+msgid "Additional keywords"
+msgstr "Fjalëkyçe shtesë"
 
 msgid "Name of the project the translation is for"
 msgstr "Emri i projektit për të cilin bëhet përkthimi"
 
 msgid "e.g. nplurals=2; plural=(n > 1);"
-msgstr "psh. nplurals=2; plural=(n > 1);"
+msgstr "p.sh. nplurals=2; plural=(n > 1);"
 
 msgid "UTF-8 (recommended)"
-msgstr "UTF-8 (rekomandohet)"
+msgstr "UTF-8 (e këshillueshme)"
 
 msgid "Please save the file first. This section cannot be edited until then."
 msgstr ""
-"Ju lutem, ruaj filet si fillim. Ky seksion nuk mund të korrigjohet deri "
-"atëherë."
+"Ju lutemi, së pari ruajeni kartelën. Kjo pjesë s’mund të përpunohet para "
+"kësaj."
+
+msgid "Comment:"
+msgstr "Koment:"
 
 msgid "OK"
 msgstr "OK"
 
 msgid "C&lear"
-msgstr "Pa&stro"
+msgstr "&Pastroje"
 
 msgid "Clear the comment"
-msgstr "Pastro komentin"
-
-msgid "Find..."
-msgstr "Gjej..."
-
-msgid "String to find:"
-msgstr "Vargu që kërkohet:"
-
-msgid "Case sensitive"
-msgstr "Kasë sensitive"
-
-msgid "Start from the first item"
-msgstr "Fillo nga njësia e parë"
-
-msgid "Whole words only"
-msgstr "Vetëm fjalë të plota"
-
-msgid "Find in original strings"
-msgstr "Gjej në vargjet origjinale"
-
-msgid "Find in translations"
-msgstr "Gjej në përkthime"
-
-msgid "Find in comments"
-msgstr "Gjej në komente"
-
-msgid "Find in automatic comments"
-msgstr "Gjej në komentet automatike"
-
-msgid "Close"
-msgstr "Mbyll"
-
-msgid "< &Previous"
-msgstr "< &Prapa"
-
-msgid "&Next >"
-msgstr "&Tjetër >"
+msgstr "Pastroje komentin"
 
 msgid "Create new translations project"
-msgstr "Krijo projekt të ri përkthimi"
+msgstr "Krijoni projekt të ri përkthimi"
 
 msgid "Edit the project"
-msgstr "Korrigjo projektin"
+msgstr "Përpunoni projektin"
 
 msgid "Delete the project"
-msgstr "Fshij projektin"
+msgstr "Fshije projektin"
 
 msgid "Update all"
-msgstr "Aktualizo të gjithë"
+msgstr "Përditësoji të tëra"
 
 msgid "Update all catalogs in the project"
-msgstr "Aktualizo të gjithë katalogët në projekt"
+msgstr "Përditëso tërë katalogët në projekt"
 
 msgid "Edit project"
-msgstr "Korrigjo projektin"
+msgstr "Përpunoni projekt"
 
 msgid "Project name:"
-msgstr "Emri i projektit:"
+msgstr "Emër projekti:"
 
 msgid "Browse"
-msgstr "Shfleto"
+msgstr "Shfletoni"
 
 msgid "Add directory to the list"
-msgstr "Shto dosje tek lista"
+msgstr "Shtoni drejtori te lista"
 
 msgid "&Preferences..."
-msgstr "&Preferencat..."
+msgstr "&Parapëlqime..."
 
 msgid "&Close"
-msgstr "&Mbyll"
+msgstr "&Mbylle"
 
 msgid "E&xit"
-msgstr "&Dalje"
+msgstr "&Dil"
 
 msgid "Quit"
-msgstr "Dalje"
+msgstr "Dilni"
 
 msgid "&New..."
 msgstr "I &ri..."
 
 msgid "New from &POT/PO file..."
-msgstr "I ri nga fili &POT/PO..."
+msgstr "I ri prej kartele &POT/PO..."
 
 msgid "New From &POT/PO File..."
-msgstr "I ri nga fili &POT/PO..."
+msgstr "I Ri Prej Kartele &POT/PO..."
 
 msgid "&Open..."
-msgstr "&Hap..."
+msgstr "&Hapni..."
 
 msgid "Open Recent"
-msgstr "Hap të fundit"
+msgstr "Hap Më të Fundit"
+
+msgid "Open from Crowdin..."
+msgstr "Hapeni prej Crowdin-i..."
+
+msgid "Open From Crowdin..."
+msgstr "Hapeni Prej Crowdin-i..."
 
 msgid "&Save"
-msgstr "&Ruaj"
+msgstr "&Ruaje"
 
 msgid "Save &as..."
-msgstr "Ruaj &si..."
+msgstr "Ruajeni &si..."
 
 msgid "Save &As..."
-msgstr "Ruaj &si..."
+msgstr "Ruajeni &Si..."
 
 msgid "Compile to MO..."
-msgstr "Kompilo tek MO..."
+msgstr "Përpiloje si MO..."
 
 msgid "E&xport as HTML..."
-msgstr "&Eksporto si HTML..."
+msgstr "&Eksportojeni si HTML..."
 
 msgid "Check for updates..."
-msgstr "Kontrollo për aktualizime..."
+msgstr "Kontrollo për përditësime..."
 
 msgid "Catalogs &manager"
-msgstr "&Menaxher katalogësh"
+msgstr "&Përgjegjës katalogësh"
 
 msgid "Catalogs &Manager"
-msgstr "&Menaxher katalogësh"
+msgstr "&Përgjegjës Katalogësh"
 
 msgid "Translation is &fuzzy"
-msgstr "Përkthimi është i &paqartë"
+msgstr "Përkthimi është i &turbullt"
 
 msgid "Translation Is &Fuzzy"
-msgstr "Përkthimi është i &paqartë"
+msgstr "Përkthimi Është i &Turbullt"
 
 msgid "Edit &comment"
-msgstr "Korrigjo &komentin"
+msgstr "Përpunoni &koment"
 
 msgid "Edit &Comment"
-msgstr "Korrigjo &komentin"
+msgstr "Përpunoni &Komentin"
 
 msgid "Suggestions"
-msgstr "Sugjerime"
+msgstr "Këshillime"
 
 msgid "&Show references"
-msgstr "&Shfaq referencat"
+msgstr "&Shfaq referenca"
 
 msgid "&Show References"
-msgstr "&Shfaq referencat"
+msgstr "&Shfaq Referenca"
 
 msgid "&Find..."
-msgstr "&Gjej..."
+msgstr "&Gjeni..."
+
+msgid "Replace..."
+msgstr "Zëvendësoni..."
 
 msgid "Find next"
-msgstr "Gjej tjetrin"
+msgstr "Gjej pasuesin"
 
 msgid "Find previous"
-msgstr "Gjej përpara"
+msgstr "Gjej të mëparshmin"
 
-msgid "Find"
-msgstr "Gjej"
+msgid "Find and Replace..."
+msgstr "Gjeni dhe Zëvendësoni..."
 
 msgid "Find Next"
-msgstr "Gjej tjetrin"
+msgstr "Gjej Pasuesin"
 
 msgid "Find Previous"
-msgstr "Gjej përpara"
+msgstr "Gjej të Mëparshmin"
 
 msgid "&Preferences"
-msgstr "&Preferencat"
+msgstr "&Parapëlqime"
 
 msgid "Display entry &IDs"
-msgstr "Shfaq &ID të hyrjeve"
+msgstr "Shfaq &ID zërash"
 
 msgid "Display Entry &IDs"
-msgstr "Shfaq &ID të hyrjeve"
+msgstr "Shfaq &ID Zërash"
 
 msgid "Sort by &file order"
-msgstr "Rendit sipas &fileve"
+msgstr "Renditi sipas rendi &kartelash"
 
 msgid "Sort by &File Order"
-msgstr "Rendit sipas &fileve"
+msgstr "Renditi sipas Rendi &Kartelash"
 
 msgid "Sort by &source"
-msgstr "Rendit sipas &burimit"
+msgstr "Renditi sipas &burimesh"
 
 msgid "Sort by &Source"
-msgstr "Rendit sipas &burimit"
+msgstr "Renditi sipas &Burimesh"
 
 msgid "Sort by &translation"
-msgstr "Rendit sipas &përkthimit"
+msgstr "Renditi sipas &përkthimesh"
 
 msgid "Sort by &Translation"
-msgstr "Rendit sipas &përkthimit"
+msgstr "Renditi sipas &Përkthimesh"
 
 msgid "&Group by context"
-msgstr "&Grupo sipas përmbajtjes"
+msgstr "&Grupoji sipas kontekstit"
 
 msgid "&Group By Context"
-msgstr "&Grupo sipas përmbajtjes"
+msgstr "&Grupoji Sipas Kontekstit"
+
+msgid "Entries with errors first"
+msgstr "Së pari zërat me  gabime"
+
+msgid "Entries with Errors First"
+msgstr "Së Pari Zërat me Gabime"
 
 msgid "&Untranslated entries first"
-msgstr "&Hyrjet e papërkthyera në fillim"
+msgstr "Së pari zërat e &papërkthyer"
 
 msgid "&Untranslated Entries First"
-msgstr "&Hyrjet e papërkthyera në fillim"
+msgstr "Së Pari Zërat e &Papërkthyer"
 
 msgid "Show sidebar"
-msgstr "Shfaq anësoren"
+msgstr "Shfaq anështyllë"
+
+msgid "Show status bar"
+msgstr ""
 
 msgid "C&atalog"
-msgstr "&Katalogu"
+msgstr "&Katalog"
 
 msgid "&Update from sources"
-msgstr "&Aktualizo nga burimet"
+msgstr "&Përditëso prej burimesh"
 
 msgid "&Update from Sources"
-msgstr "&Aktualizo nga burimet"
+msgstr "&Përditësoji prej Burimesh"
 
 msgid "Update from &POT file..."
-msgstr "Aktualizo nga fili &POT..."
+msgstr "Përditësojeni prej kartele &POT..."
 
 msgid "Update from &POT File..."
-msgstr "Aktualizo nga fili &POT..."
+msgstr "Përditësojeni prej Kartele &POT..."
+
+msgid "Sync with Crowdin"
+msgstr "Njëkohësoje me Crowdin-in"
 
 msgid "Fill missing translations from &TM..."
-msgstr "Plotëso përkthimet që mungojnë nga &TM..."
+msgstr "Përkthimet që mungojnë plotësoji prej &TM-je..."
 
 msgid "Fill Missing Translations from &TM..."
-msgstr "Plotëso përkthimet që mungojnë nga &TM..."
+msgstr "Përkthimet Që Mungojnë Plotësoji prej &TM-je..."
 
 msgid "&Purge deleted translations"
-msgstr "&Zbraz përkthimet e fshira"
+msgstr "&Pastroji përkthimet e fshira"
 
 msgid "&Purge Deleted Translations"
-msgstr "&Zbraz përkthimet e fshira"
+msgstr "&Spastroji Përkthimet e Fshira"
 
 msgid "&Validate translations"
-msgstr "&Vlerëso përkthimet"
+msgstr "&Vleftësoni përkthime"
 
 msgid "&Validate Translations"
-msgstr "&Vlerëso përkthimet"
+msgstr "&Vleftësoni Përkthime"
 
 msgid "&Properties..."
-msgstr "&Vetitë..."
+msgstr "&Veti..."
 
 msgid "&Done and next"
-msgstr "&U krye dhe tjetri"
+msgstr "&U bë, tjetri"
 
 msgid "&Done and Next"
-msgstr "&U krye dhe tjetri"
+msgstr "&U bë, Tjetri"
 
 msgid "&Previous translation"
-msgstr "&Përkthimi më përpara"
+msgstr "Përkthimi i &mëparshëm"
 
 msgid "&Previous Translation"
-msgstr "&Përkthimi më përpara"
+msgstr "Përkthimi i &Mëparshëm"
 
 msgid "&Next translation"
-msgstr "&Përkthimi tjetër"
+msgstr "Përkthimi &pasues"
 
 msgid "&Next Translation"
-msgstr "&Përkthimi tjetër"
+msgstr "Përkthimi &Pasues"
 
 msgid "P&revious unfinished"
-msgstr "&Prapa i papërfunduar"
+msgstr "I më&parshmi i pambaruar"
 
 msgid "P&revious Unfinished"
-msgstr "&Prapa i papërfunduar"
+msgstr "I më&parshmi i Pambaruar"
 
 msgid "Ne&xt unfinished"
-msgstr "&Tjetër i papërfunduar"
+msgstr "I pambaruari pas&ues"
 
 msgid "Ne&xt Unfinished"
-msgstr "&Tjetër i papërfunduar"
+msgstr "I pambaruari Pas&ues"
 
 msgid "&Online help"
-msgstr "&Ndihmë nëlinjë"
+msgstr "Ndihmë në &internet"
 
 msgid "&Online Help"
-msgstr "&Ndihmë nëlinjë"
+msgstr "Ndihmë Në &Internet"
 
 msgid "&GNU gettext manual"
-msgstr "Manuali &GNU gettext"
+msgstr "Doracaku &GNU gettext"
 
 msgid "&GNU gettext Manual"
-msgstr "Manuali &GNU gettext"
+msgstr "Doracaku &GNU gettext"
 
 msgid "&About Poedit"
-msgstr "&Rreth Poedit"
+msgstr "&Mbi Poedit-in"
 
 msgid "&About"
-msgstr "&Rreth"
+msgstr "&Mbi"
 
 msgid "Extractor setup"
-msgstr "Rregullimi i depaketuesit"
+msgstr "Rregullim i përftuesit"
 
 msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):"
-msgstr "Listë e zgjatimeve, e ndarë me pikëpresje (psh. *.cpp;*.h):"
+msgstr "Listë e zgjatimeve të ndarë me pikëpresje (p.sh. *.cpp;*.h):"
 
 msgid "Invocation:"
 msgstr "Thirrje:"
 
 msgid "Command to extract translations:"
-msgstr "Komanda për depaketimin e përkthimeve:"
+msgstr "Urdhër për përftim përkthimesh:"
 
 msgid ""
 "This is the command used to launch the extractor.\n"
@@ -1419,94 +1609,105 @@ msgid ""
 "of keywords, %F to list of input files,\n"
 "%C to charset flag (see below)."
 msgstr ""
-"Kjo është komanda që përdoret për të nisur depaketuesin.\n"
-"%o zgjeron tek emri i filit të rezultatit, %K në listën\n"
-"e fjalëve kyçe, %F në listën e fileve të futura,\n"
-"%C në flamurin e setit të karaktereve (shiko më poshtë)."
+"Ky urdhër përdorej për të nisur përtypësin.\n"
+"%o bëhet emri i kartelës përfundim, %K lista\n"
+"e fjalëkyçeve, %F lista e kartelave hyrëse,\n"
+"%C simboli i shkronjave (shihni më poshtë)."
 
 msgid "An item in keywords list:"
-msgstr "Një njësi në listën e fjalëve kyçe:"
+msgstr "Një përbërës në listë fjalëkyçesh:"
 
 msgid ""
 "This will be attached to the command line once\n"
 "for each keyword. %k expands to the keyword."
 msgstr ""
-"Kjo do të bashkëngjitet tek linja e komandës një herë\n"
-"për secilën fjalë kyçe. %k zgjerohet tek fjala kyçe."
+"Kjo do të shtohet te urdhër rreshti njëherë\n"
+"për çdo fjalëkyç. %k bëhet vlerë për fjalëkyç."
 
 msgid "An item in input files list:"
-msgstr "Një njësi në listën e futjes së fileve:"
+msgstr "Një përbërës në një listë futje kartelash:"
 
 #, c-format
 msgid ""
 "This will be attached to the command line once\n"
 "for each input file. %f expands to the filename."
 msgstr ""
-"Kjo do të bashkëngjitet tek linja e komandës një herë\n"
-"për secilin fil të futur. %f zgjerohet tek emri i filit."
+"Kjo do të shtohet te urdhër rreshti njëherë\n"
+"për çdo kartelë hyrje. %f bëhet emër kartele."
 
 msgid "Source code charset:"
-msgstr "Seti i karaktereve të kodit të burimit:"
+msgstr "Shkronja kodi burim:"
 
 #, c-format
 msgid ""
 "This will be attached to the command line\n"
 "only if source codecharset was given. %c expands to charset value."
 msgstr ""
-"Kjo do të bashkëngjitet tek linja e komandës\n"
-"vetëm nëse burimi i setit të kodit të karaktereve është dhënë.\n"
-" %c zgjerohet në vlerën e setit të karaktereve."
+"Kjo do të shtohet te urdhër rreshti\n"
+"vetëm nëse është dhënë kod shkronjash burimi. %c bëhet vlerë për shkronjat."
 
 msgid "Catalog properties"
-msgstr "Vetitë e katalogut"
+msgstr "Veti katalogu"
+
+msgid "Project name and version:"
+msgstr "Emër dhe version projekti:"
 
 msgid "Plural Forms:"
-msgstr "Format shumës:"
+msgstr "Forma Shumësi:"
 
 msgid "Use default rules for this language"
-msgstr "Përdor rregullat standarde për këtë gjuhë"
+msgstr "Për këtë gjuhë përdor rregullat parazgjedhje"
 
 msgid "Use custom expression"
-msgstr "Përdor shprehje të përshtatura"
+msgstr "Përdor shprehje të personalizuar"
 
 msgid "Learn about plural forms"
-msgstr "Mëso më tepër rreth formave shumës"
+msgstr "Mësoni më tepër rreth formash shumësi"
+
+msgid "Charset:"
+msgstr "Shkronja:"
+
+msgid "Team:"
+msgstr "Ekipi:"
+
+msgid "Team's email address:"
+msgstr "Adresë email e ekipit:"
 
 msgid "Translation properties"
-msgstr "Vetitë e përkthimit"
+msgstr "Veti përkthimesh"
+
+msgid "Sources paths"
+msgstr "Shtigje burimesh"
 
 msgid "Extract text from source files in the following directories:"
-msgstr "Nxjerr tekstin nga filet e burimit, në dosjet që vijojnë:"
+msgstr "Përfto tekst prej kartelash burim nga drejtoritë vijuese:"
 
 msgid "Base path:"
-msgstr "Rruga bazë:"
+msgstr "Shteg bazë:"
 
-msgid "Sources paths"
-msgstr "Rrugët e burimeve"
+msgid "Sources keywords"
+msgstr "Fjalëkyçe burimesh"
 
 msgid ""
 "Use these keywords (function names) to recognize translatable strings\n"
 "in source files:"
 msgstr ""
-"Përdor fjalët kyçe (emra funksionesh), për të dalluar vargjet e "
-"përkthyeshme\n"
-"në filet e burimt:"
+"Përdorini këta fjalëkyçe (emra funksionesh) për të dalluar vargje të "
+"përkthyeshëm\n"
+"te kartelat burim:"
 
 msgid "Learn about gettext keywords"
-msgstr "Mëso rreth fjalëve kyçe gettext"
-
-msgid "Sources keywords"
-msgstr "Fjalët kyçe të burimeve"
+msgstr "Mësoni rreth fjalëkyçeve gettext"
 
 msgid "Update summary"
-msgstr "Aktualizo përmbledhjen"
+msgstr "Përditëso përmbledhjen"
 
 msgid ""
 "These strings were found in the sources but were not in the catalog.\n"
 "Poedit will add them to the catalog now."
 msgstr ""
-"Këto vargje u gjetën në burime, por nuk janë në katalog.\n"
-"Poedit do t'i shtojë ato te katalogu tani."
+"Këto vargje u gjetën në burime por s’qenë te katalogu.\n"
+"Poedit do t’i shtojë te katalogu tani."
 
 msgid "New strings"
 msgstr "Vargje të rinj"
@@ -1515,106 +1716,109 @@ msgid ""
 "These strings are no longer in the sources.\n"
 "Poedit will remove them from the catalog now."
 msgstr ""
-"Këto vargje nuk janë më në burime.\n"
-"Poedit do t'i largojë ato nga katalogu tani."
+"Këto vargje s’janë më në burime.\n"
+"Poedit do t’i heqë prej katalogut tani."
 
 msgid "Obsolete strings"
-msgstr "Vargje të vjetëruar"
+msgstr "Vargje të vjetruar"
 
 msgid "(0 new, 0 obsolete)"
-msgstr "(0 të rinj, 0 të vjetëruar)"
+msgstr "(0 të rinj, 0 të vjetruar)"
 
 msgid "Open"
-msgstr "Hap"
+msgstr "Hape"
 
 msgid "Save catalog"
-msgstr "Ruaj katalogun"
+msgstr "Ruaje katalogun"
 
 msgid "Validate"
-msgstr "Vlerëso"
+msgstr "Vleftësoje"
 
 msgid "Check for errors in the translation"
-msgstr "Kontrollo për gabime në përkthim"
+msgstr "Kontrolloni për gabime te përkthimi"
 
 msgid "Update"
-msgstr "Aktualizo"
+msgstr "Përditësoje"
 
 msgid "Update catalog - synchronize it with sources"
-msgstr "Aktualizo katalogun - sinkronizoje atë me burimet"
+msgstr "Përditëso katalogun - njëkohësoje me burimet"
 
 msgid "Toggled if selected string has fuzzy translation"
-msgstr "Shkëmbehet nëse vargu i zgjedhur ka përkthim të paqartë"
+msgstr "I shtypur nëse vargu i përzgjedhur ka përkthim të turbullt"
 
-msgid "Show or hide the sidebar."
-msgstr "Shfaq ose fsheh anësoren."
+msgid "Show or hide the sidebar"
+msgstr "Shfaqni ose fshihni anështyllën"
 
 #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer.
 msgid "Previous source text:"
-msgstr "Teksti i burimit të mëparshëm:"
+msgstr "Teksti burim i dikurshëm:"
 
 msgid ""
 "The old source text (before it changed during an update) that the fuzzy "
 "translation corresponds to."
 msgstr ""
-"Teksti i vjetër i burimit (para se të ndryshonte nga një aktualizim) të "
-"cilit i korresspondon përkthimi i paqartë."
+"Teksti burim i vjetër (përpara se të ndryshohej gjatë përditësimit) të cilit "
+"i përshoqërohet përkthimi i turbullt."
+
+msgid "Notes for translators:"
+msgstr "Shënime për përkthyesit&:"
 
 msgid "Add comment"
-msgstr "Shto koment"
+msgstr "Shtoje koment"
 
 msgid "Add Comment"
-msgstr "Shto koment"
+msgstr "Shtoni Koment"
 
 msgid "Translation suggestions:"
-msgstr "Sugjerime përkthimi:"
+msgstr "Këshillime përkthimi:"
 
 #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows).
 msgid "No matches found"
-msgstr "Nuk gjenden përkime"
+msgstr "S’u gjetën përputhje"
 
 #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (OS X, Linux).
 msgid "No Matches Found"
-msgstr "Nuk gjenden përkime"
+msgstr "S’u Gjetën Përputhje"
 
 msgid "This string was found in Poedit’s translation memory."
-msgstr "Ky varg u gjet në kujtesën e përkthimit të Poedit."
+msgstr "Ky varg u gjet në kujtesën a e përkthimeve të Poedit-it."
 
 #, c-format
 msgid "(New: %i, obsolete: %i)"
-msgstr "(I ri: %i, i vjetruar: %i)"
+msgstr "(Të rinj: %i, të vjetruar: %i)"
 
 #, c-format
 msgid "Importing translations: %d"
 msgstr "Po importohen përkthimet: %d"
 
 msgid "Poedit Update"
-msgstr "Aktualizim Poedit"
+msgstr "Përditësim Poedit-i"
 
 msgid "Preparing migration..."
-msgstr "Po përgatit migrimin..."
+msgstr "Po përgatitet migrimi..."
 
 #, c-format
 msgid "Migration exit status: %d"
-msgstr "Status dalje nga migrimi: %d"
+msgstr "Gjendje daljeje nga migrimi: %d"
 
 msgid "Poedit needs to convert your translation memory to a new format."
 msgstr ""
-"Poedit ka nevojë të konvertojë kujtesën e përkthimeve tuaja në një format të "
+"Poedit ka nevojë të shndërrojë kujtesën e përkthimeve tuaja në një format të "
 "ri."
 
 msgid ""
 "This must be done before Poedit can start. It may take a few minutes if you "
 "have lots of translations stored, but should normally be much faster."
 msgstr ""
-"Kjo duhet të bëhet para se të fillojë Poedit. Mund të marrë disa minuta, "
-"nëse keni shumë përkthime të ruajtura, por normalisht duhet të jetë më e "
-"shpejtë."
+"Kjo duhet bërë përpara se të niset Poedit-i. Mund të hajë ca minuta, nëse "
+"keni shumë përkthime të depozituara, por normalisht do të duhej të kryhej "
+"shumë më shpejt."
 
 msgid "Proceed"
-msgstr "Proçedo"
+msgstr "Bëje"
 
 msgid "Translation memory migration failed."
-msgstr "Migrimi i kujtesës së përkthimit dështoi."
+msgstr "Migrimi i kujtesës së përkthimeve dështoi."
 
 #, c-format
 msgid ""
@@ -1623,35 +1827,44 @@ msgid ""
 "%s\n"
 "Please email help at poedit.net and we’ll get it fixed."
 msgstr ""
-"Të dhënat e kujtesës suaj të përkthimit nuk mund të migronin. Gabimi ishte:\n"
+"Të dhënat e kujtesës suaj të përkthimit s’u migruan dot. Gabimi qe:\n"
 "\n"
 "%s\n"
-"Ju lutem, dërgo një email për help at poedit.net dhe do ta ndreqim atë."
+"Ju lutemi, dërgoni një email te help at poedit.net dhe do ta ndreqim."
 
 msgid "Cannot create temporary directory."
-msgstr "Nuk mund të krijohet drejtoria e përkohëshme."
+msgstr "S’krijohet dot drejtoria e përkohshme."
 
 msgid "Welcome to Poedit"
-msgstr "Mirësevjen në Poedit"
+msgstr "Mirë se vini te Poedit"
 
 msgid "Edit a translation"
-msgstr "Korrigjo një përkthim"
+msgstr "Përpunoni një përkthim"
 
 msgid "Open an existing PO file and edit the translation."
-msgstr "Hap një fil ekzistues PO dhe korrigjo përkthimin."
-
-msgid "Create new translation"
-msgstr "Krijo një përkthim të ri"
+msgstr "Hapni një kartel PO ekzistuese dhe përpunoni përkthimin."
 
 msgid ""
 "Take an existing PO file or POT template and create a new translation from "
 "it."
 msgstr ""
-"Merr një fil ekzistues PO ose një shabllon POT dhe krijo prej tij një "
+"Merrni një kartelë ekzistuese PO ose një gjedhe POT dhe krijoni prej saj një "
 "përkthim të ri."
 
+msgid "Collaborate on a translation with Crowdin"
+msgstr "Bashkëpunoni për një përkthim te Crowdin-i"
+
+msgid ""
+"Download a file from Crowdin project, translate and sync your changes back."
+msgstr ""
+"Shkarkoni një kartelë prej një projekti në Crowdin, përkthejeni dhe "
+"parashtroni ndryshimet tuaja."
+
+msgid "What is Crowdin?"
+msgstr "Ç’është Crowdin-i?"
+
 msgid "There are no translations. That’s unusual."
-msgstr "Nuk ka përkthime. Kjo është e pazakontë."
+msgstr "S’ka përkthime. Kjo është e pazakontë."
 
 msgid ""
 "Translatable entries aren't added manually in the Gettext system, but are "
@@ -1660,33 +1873,38 @@ msgid ""
 "Translators typically use PO template files (POTs) prepared for them by the "
 "developer."
 msgstr ""
-"Hyrjet e përkthyeshme nuk shtohen manualisht në sistemin Gettext, ato "
-"nxirren automatikisht\n"
-"nga kodi i burimit. Në këtë mënyrë, ato qëndrojnë të aktualizuara dhe të "
-"sakta.\n"
-"Përkthyesit normalisht përdorin filet PO, ose të modelit (POT), të "
-"përgatitura nga programuesi."
+"Zërat e përkthyeshëm s’shtohen dorazi në sistemin Gettext, ata përftohen "
+"vetvetiu prej\n"
+"kodit burim. Kështu sigurohet qenia e tyre të përditësuar dhe të përpiktë.\n"
+"Përkthyesit normalisht përdorin kartela gjedhe PO (POT) të përgatitura për "
+"ta nga programuesi."
 
 msgid "(Learn more about GNU gettext)"
-msgstr "(Mëso më tepër rreth GNU gettext)"
+msgstr "(Mësoni më tepër mbi GNU gettext-in)"
 
 msgid "The simplest way to fill this catalog is to update it from a POT:"
 msgstr ""
-"Rruga më e lehtë për të plotësuar këtë katalog është aktualizimi i tij nga "
-"një POT:"
+"Rruga më e lehtë për të plotësuar këtë katalog është përditësimi i tij prej "
+"një POT-i:"
 
 msgid "Update from POT"
-msgstr "Aktualizo nga POT"
+msgstr "Përditësojeni prej POT-i"
 
 msgid "Take translatable strings from an existing POT template."
-msgstr "Merr vargjet e përkthyeshme nga një shabllon POT ekzistues."
+msgstr "Merri vargjet e përkthyeshme prej një gjedheje POT ekzistuese."
 
 msgid ""
 "You can also extract translatable strings directly from the source code:"
-msgstr "Mund të nxjerrni vargje përkthimi edhe direkt nga kodi i burimit:"
+msgstr "Mund të përftoni vargje përkthimi edhe drejt e nga kodi burim:"
 
 msgid "Extract from sources"
-msgstr "Depaketo nga burimet"
+msgstr "Përftoji prej burimesh"
 
 msgid "Configure source code extraction in Properties."
-msgstr "Konfiguro kodin e burimit tek Vetitë."
+msgstr "Formësoni përftim kodi burim te Vetitë."
+
+msgid "Sync"
+msgstr "Njëkohësoje"
+
+msgid "Synchronize the translation with Crowdin"
+msgstr "Njëkohësojeni përkthimin me atë në Crowdin"
diff --git a/locales/sr.mo b/locales/sr.mo
index f8d7ab0..98268e1 100644
Binary files a/locales/sr.mo and b/locales/sr.mo differ
diff --git a/locales/sr.po b/locales/sr.po
index 1243e56..22f8f92 100644
--- a/locales/sr.po
+++ b/locales/sr.po
@@ -2,8 +2,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: poedit\n"
 "Report-Msgid-Bugs-To: help at poedit.net\n"
-"POT-Creation-Date: 2015-01-10 16:00+0100\n"
-"PO-Revision-Date: 2015-03-10 12:34-0400\n"
+"POT-Creation-Date: 2015-05-27 11:31+0200\n"
+"PO-Revision-Date: 2015-05-27 05:17-0400\n"
 "Last-Translator: vslavik <vaclav at slavik.io>\n"
 "Language-Team: Serbian (Cyrillic)\n"
 "Language: sr_SP\n"
@@ -18,7 +18,7 @@ msgstr ""
 "X-Crowdin-File: /locales/poedit.pot\n"
 
 msgid "Hide this notification message"
-msgstr "Сакриј ову поруку са обавештењем"
+msgstr "Сакриј ово обавештење"
 
 msgid "Don't Show Again"
 msgstr "Не приказуј поново"
@@ -29,14 +29,14 @@ msgstr "Не приказуј поново"
 #, c-format
 msgid "%i line of file '%s' was not loaded correctly."
 msgid_plural "%i lines of file '%s' were not loaded correctly."
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
+msgstr[0] "%i ред датотеке „%s“ није исправно учитан."
+msgstr[1] "%i реда датотеке „%s“ нису исправно учитана."
+msgstr[2] "%i редова датотеке „%s“ није исправно учитано."
+msgstr[3] "%i редова датотеке „%s“ није исправно учитано."
 
 #, c-format
 msgid "Line %d of file '%s' is corrupted (not valid %s data)."
-msgstr "Ред %d датотеке „%s“ је оштећен (неисправни подаци %s)."
+msgstr "Ред %d датотеке „%s“ је оштећен (неисправни %s подаци)."
 
 #, c-format
 msgid "Malformed header: '%s'"
@@ -69,7 +69,7 @@ msgid ""
 "File '%s' is read-only and cannot be saved.\n"
 "Please save it under different name."
 msgstr ""
-"Датотека „%s“ је само за читање и не може бити сачувана.\n"
+"Датотека „%s“ је доступна само за читање и не може бити сачувана.\n"
 "Сачувајте је под другим именом."
 
 #, c-format
@@ -94,6 +94,15 @@ msgstr ""
 msgid "Error saving catalog"
 msgstr "Грешка при чувању каталога"
 
+msgid "PO Translation Files"
+msgstr "PO датотеке превода"
+
+msgid "POT Translation Templates"
+msgstr "POT шаблони превода"
+
+msgid "All Translation Files"
+msgstr "Све датотеке превода"
+
 msgid "Merging differences..."
 msgstr "Обједињујем разлике…"
 
@@ -113,6 +122,85 @@ msgstr "Избор језика"
 msgid "You must restart Poedit for this change to take effect."
 msgstr "Морате да поново покренете Poedit како би ова измена ступила на снагу."
 
+msgid "Downloading translations is disabled in this project."
+msgstr "Преузимање превода је онемогућено у овом пројекту."
+
+msgid "Not authorized, please sign in again."
+msgstr "Немате овлашћења. Поново се пријавите."
+
+msgid "Sign in to Crowdin"
+msgstr "Пријава на Crowdin"
+
+msgid ""
+"Crowdin is an online localization management platform and collaborative "
+"translation tool. Poedit can seamlessly sync PO files managed at Crowdin."
+msgstr ""
+"Crowdin је интернет платформа за заједничку локализацију и превод. Poedit "
+"може аутоматски да синхронизује PO датотеке са Crowdin-ом."
+
+msgid "Sign In"
+msgstr "Пријави ме"
+
+msgid "Sign in"
+msgstr "Пријави ме"
+
+msgid "Sign Out"
+msgstr "Одјави ме"
+
+msgid "Sign out"
+msgstr "Одјави ме"
+
+msgid "Waiting for authentication…"
+msgstr "Проверавам идентитет…"
+
+msgid "Updating user information…"
+msgstr "Ажурирам информације о кориснику…"
+
+msgid "Signed in as:"
+msgstr "Пријављени сте као:"
+
+msgid "Learn More About Crowdin"
+msgstr "Више о Crowdin-у"
+
+msgid "Learn more about Crowdin"
+msgstr "Више о Crowdin-у"
+
+msgid "Open Crowdin translation"
+msgstr "Отвори превод са Crowdin-а"
+
+msgid "Project:"
+msgstr "Пројекат:"
+
+msgid "Language:"
+msgstr "Језик:"
+
+msgid "File:"
+msgstr "Датотека:"
+
+msgid "No translation projects listed in your Crowdin account."
+msgstr "У вашем налогу на Crowdin-у нема пројеката."
+
+msgid "This project has no files that can be translated in Poedit."
+msgstr "Овај пројекат не садржи датотеке које је могуће преводити у Poedit-у."
+
+msgid "This file can only be edited in Crowdin’s web interface."
+msgstr "Ова датотека може да се уређује само на Crowdin-у."
+
+msgid "Downloading latest translations…"
+msgstr "Преузимам најновије преводе…"
+
+msgid "Syncing with Crowdin"
+msgstr "Синхронизација са Crowdin-ом"
+
+msgid "Syncing with Crowdin failed."
+msgstr "Синхронизација са Crowdin-ом није успела."
+
+msgid "Crowdin error"
+msgstr "Грешка Crowdin-а"
+
+msgid "Uploading translations…"
+msgstr "Отпремам преводе…"
+
 msgid "&Copy"
 msgstr "&Копирај"
 
@@ -135,7 +223,7 @@ msgstr "Скенирање датотека"
 #. TRANSLATORS: '%s' is replaced with the kind of the files (e.g. C++, PHP, ...)
 #, c-format
 msgid "Parsing %s files..."
-msgstr "Рашчлањујем %s датотека…"
+msgstr "Рашчлањујем %s датотеке…"
 
 msgid "Failed to load extracted catalog."
 msgstr "Не могу да учитам издвојени каталог."
@@ -159,6 +247,12 @@ msgstr ""
 msgid "don't delete temporary files (for debugging)"
 msgstr "не бриши привремене датотеке (ради отклањања грешака)"
 
+msgid "handle a poedit:// URI"
+msgstr "обради адресу poedit://"
+
+msgid "Failed to communicate with Poedit process."
+msgstr ""
+
 #, c-format
 msgid "Unhandled exception occurred: %s"
 msgstr "Дошло је до изузетка: %s"
@@ -169,12 +263,6 @@ msgstr "Дошло је до изузетка."
 msgid "Open catalog"
 msgstr "Отварање каталога"
 
-msgid "All Files"
-msgstr "Све датотеке"
-
-msgid "PO Translation Files"
-msgstr "PO датотеке превода"
-
 #, c-format
 msgid "File '%s' doesn't exist."
 msgstr "Датотека „%s“ не постоји."
@@ -198,28 +286,28 @@ msgid "Catalogs Manager"
 msgstr "Управљач каталозима"
 
 msgid "Check for Updates..."
-msgstr "&Провери има ли ажурирања…"
+msgstr "&Потражи ажурирања…"
 
 msgid "&Edit"
 msgstr "&Уређивање"
 
 msgid "Undo"
-msgstr "&Откажи"
+msgstr "Опозови"
 
 msgid "Redo"
 msgstr "Понови"
 
 msgid "Paste and Match Style"
-msgstr "Налепи и испоштуј стил"
+msgstr "Налепи у текућем стилу"
 
 msgid "Delete"
 msgstr "&Обриши"
 
 msgid "Spelling and Grammar"
-msgstr "Правопис и граматика"
+msgstr "Провера правописа"
 
 msgid "Show Spelling and Grammar"
-msgstr "Прикажи &правопис и граматика"
+msgstr "Прикажи &правописне грешке"
 
 msgid "Check Document Now"
 msgstr "Провери документ"
@@ -240,7 +328,7 @@ msgid "Show Substitutions"
 msgstr "Прикажи &замене"
 
 msgid "Smart Copy/Paste"
-msgstr "Паметно копирање/лепљење"
+msgstr "Паметно копирање/налепљивање"
 
 msgid "Smart Quotes"
 msgstr "Паметни наводници"
@@ -294,7 +382,7 @@ msgid "Bring All to Front"
 msgstr "Пребаци све напред"
 
 msgid "PO Translation"
-msgstr ""
+msgstr "PO превод"
 
 msgid "The file cannot be opened."
 msgstr "Не могу да отворим датотеку."
@@ -339,40 +427,40 @@ msgstr "Изабери све"
 #. TRANSLATORS: Keyboard shortcut for display in Windows menus
 #. TRANSLATORS: This is the key shortcut used in menus on Windows, some languages call them differently
 msgid "Ctrl+"
-msgstr ""
+msgstr "Ctrl+"
 
 #. TRANSLATORS: Keyboard shortcut for display in Windows menus
 #. TRANSLATORS: This is the key shortcut used in menus on Windows, some languages call them differently
 msgid "Alt+"
-msgstr ""
+msgstr "Alt+"
 
 #. TRANSLATORS: Keyboard shortcut for display in Windows menus
 msgid "Shift+"
-msgstr ""
+msgstr "Shift+"
 
 #. TRANSLATORS: Keyboard shortcut for display in Windows menus
 msgid "Enter"
-msgstr ""
+msgstr "Enter"
 
 #. TRANSLATORS: Keyboard shortcut for display in Windows menus
 msgid "Up"
-msgstr ""
+msgstr "Up"
 
 #. TRANSLATORS: Keyboard shortcut for display in Windows menus
 msgid "Down"
-msgstr ""
+msgstr "Down"
 
 #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+"
 msgid "ctrl"
-msgstr ""
+msgstr "ctrl"
 
 #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+"
 msgid "alt"
-msgstr ""
+msgstr "alt"
 
 #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+"
 msgid "shift"
-msgstr ""
+msgstr "shift"
 
 msgid "You can't drop more than one file on Poedit window."
 msgstr "Не можете да превучете више од једне датотеке на прозор Poedit-а."
@@ -402,6 +490,19 @@ msgstr "Множина:"
 msgid "Translation:"
 msgstr "Превод:"
 
+msgid ""
+"POT files are only templates and don’t contain any translations themselves.\n"
+"To make a translation, create a new PO file based on the template."
+msgstr ""
+"POT датотеке су само шаблони и они не садрже преводе.\n"
+"Да бисте направили превод, креирајте нову PO датотеку засновану на шаблону."
+
+msgid "Create New Translation"
+msgstr "Креирај нови превод"
+
+msgid "Create new translation"
+msgstr "Креирај нови превод"
+
 #. TRANSLATORS: %s is language name in its basic form (as you
 #. would see e.g. in a list of supported languages). You may need
 #. to rephrase it, e.g. to an equivalent of "for language %s".
@@ -409,9 +510,10 @@ msgstr "Превод:"
 msgid ""
 "Spellchecking is disabled, because the dictionary for %s isn’t installed."
 msgstr ""
+"Провера правописа је онемогућена јер није инсталиран речник за %s језик."
 
 msgid "Install"
-msgstr ""
+msgstr "Инсталирај"
 
 msgid "Catalog modified. Do you want to save changes?"
 msgstr "Каталог је измењен. Сачувати измене?"
@@ -449,22 +551,21 @@ msgstr "HTML датотеке"
 msgid "Open catalog template"
 msgstr "Отварање шаблона каталога"
 
-msgid "POT Translation Templates"
-msgstr "POT шаблони превода"
-
 msgid "Updating catalog"
 msgstr "Ажурирање каталога"
 
 msgid "Source code not available."
-msgstr ""
+msgstr "Изворни кôд није доступан."
 
 msgid "Updating failed"
-msgstr ""
+msgstr "Ажурирање није успело"
 
 msgid ""
 "Translations couldn’t be updated from the source code, because no code was "
 "found in the location specified in the catalog’s Properties."
 msgstr ""
+"Преводи не могу бити ажурирани из изворног кода јер он није пронађен на "
+"локацији која је наведена у својствима каталога."
 
 msgid "Entries in the catalog are probably incorrect."
 msgstr "Ставке у каталогу су вероватно неисправне."
@@ -530,27 +631,49 @@ msgstr[3] "Превод је спреман за коришћење, али %d 
 msgid "The translation is ready for use."
 msgstr "Превод је спреман за коришћење."
 
-msgid "No references to this string found."
-msgstr "Нема референци за ову поруку."
-
-msgid "Please choose the reference you want to show:"
-msgstr "Изаберите референцу коју желите да прикажете:"
-
-msgid "References"
-msgstr "Референце"
-
 msgid "Context:"
 msgstr "Контекст:"
 
+#, c-format
+msgid "Poedit automatically fixed invalid content in the file “%s”."
+msgstr "Poedit је аутоматски поправио неисправан садржај у датотеци „%s“."
+
+msgid ""
+"The file contained duplicate items, which is not allowed in PO files and "
+"would prevent the file from being used. Poedit fixed the issue, but you "
+"should review translations of any items marked as fuzzy and correct them if "
+"necessary."
+msgstr ""
+"Датотека је садржала дупликате а они нису дозвољени. Poedit је решио "
+"проблем, али вам препоручујемо да проверите преводе свих елемената који су "
+"означени као приближни и исправите их, ако је потребно."
+
 msgid "Language of the translation isn't set."
 msgstr "Нисте поставили језик превода."
 
 msgid "Set Language"
-msgstr ""
+msgstr "Постави језик"
 
 msgid "Set language"
 msgstr "Постави језик"
 
+#. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)."
+msgid ""
+"Suggestions are not available if the translation language is not set "
+"correctly. Other features, such as plural forms, may be affected as well."
+msgstr ""
+"Предлози нису доступни ако језик превода није исправно подешен. Друге "
+"функције такође могу бити недоступне, попут облика за множину."
+
+msgid "Language of the translation is the same as source language."
+msgstr "Језик превода се поклапа с изворним језиком."
+
+msgid "Fix Language"
+msgstr "Исправи језик"
+
+msgid "Fix language"
+msgstr "Исправи језик"
+
 msgid ""
 "This catalog has entries with plural forms, but doesn't have Plural-Forms "
 "header configured."
@@ -576,17 +699,18 @@ msgid "Fix the Header"
 msgstr "Исправи заглавље"
 
 msgid "Fix the header"
-msgstr "Поправи заглавље"
+msgstr "Исправи заглавље"
 
 #. TRANSLATORS: %s is language name in its basic form (as you
 #. would see e.g. in a list of supported languages). You may need
 #. to rephrase it, e.g. to an equivalent of "for language %s".
 #, c-format
 msgid "Plural forms expression used by the catalog is unusual for %s."
-msgstr "Израз за облике множине у каталогу је неуобичајен за језик „%s“."
+msgstr "Израз за облике множине у каталогу је необичан за %s."
 
+#. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the catalog is unusual for %s.")"
 msgid "Review"
-msgstr "Рецензија"
+msgstr "Провери"
 
 #, c-format
 msgid "Error loading message catalog file '%s'."
@@ -608,6 +732,14 @@ msgstr[1] "%d грешке"
 msgstr[2] "%d грешака"
 msgstr[3] "%d грешака"
 
+#, c-format
+msgid "%d entry"
+msgid_plural "%d entries"
+msgstr[0] "%d ставка"
+msgstr[1] "%d ставке"
+msgstr[2] "%d ставки"
+msgstr[3] "%d ставки"
+
 msgid " (unsaved)"
 msgstr " (није сачувано)"
 
@@ -642,34 +774,39 @@ msgid "Purge"
 msgstr "&Очисти"
 
 msgid "Fill missing translations from TM"
-msgstr ""
+msgstr "Копирање из преводилачке меморије"
 
 msgid "Only fill in exact matches"
-msgstr ""
+msgstr "Копирај само тачна подударања"
 
 msgid ""
 "By default, inaccurate results are filled in as well and marked as fuzzy. "
 "Check this option to only include accurate matches."
 msgstr ""
+"По подразумеваном, слични резултати ће такође бити копирани и означени као "
+"приближни. Означите ову опцију ако желите да копирате само тачна подударања."
 
 msgid "Don’t mark exact matches as fuzzy"
-msgstr ""
+msgstr "Не означавај тачна подударања као приближна"
 
 msgid ""
 "Only enable if you trust the quality of your TM. By default, all matches "
 "from the TM are marked as fuzzy and should be reviewed."
 msgstr ""
+"Омогућите само ако имате поверења у квалитет преводилачке меморије. По "
+"подразумеваном, сви резултати из меморије су означени као приближни и "
+"требало би их прегледати."
 
 msgid "Fill"
-msgstr ""
+msgstr "Копирај"
 
 #, c-format
 msgid "%d entry was filled from the translation memory."
 msgid_plural "%d entries were filled from the translation memory."
-msgstr[0] "%d ставка је попуњена из преводилачке меморије."
-msgstr[1] "%d ставке су попуњене из преводилачке меморије."
-msgstr[2] "%d ставки је попуњено из преводилачке меморије."
-msgstr[3] "%d ставки је попуњено из преводилачке меморије."
+msgstr[0] "%d ставка је копирана из преводилачке меморије."
+msgstr[1] "%d ставке су копиране из преводилачке меморије."
+msgstr[2] "%d ставки је копирано из преводилачке меморије."
+msgstr[3] "%d ставки је копирано из преводилачке меморије."
 
 msgid ""
 "The translations were marked as fuzzy, because they may be inaccurate. You "
@@ -679,14 +816,14 @@ msgstr ""
 "тачност."
 
 msgid "No entries could be filled from the translation memory."
-msgstr "Уноси не могу бити попуњени из преводилачке меморије."
+msgstr "Уноси не могу бити копирани из преводилачке меморије."
 
 msgid ""
 "The TM doesn’t contain any strings similar to the content of this file. It "
 "is only effective for semi-automatic translations after Poedit learns enough "
 "from files that you translated manually."
 msgstr ""
-"Преводилачка меморија не садржи поруке које су сличне онима у тренутној "
+"Преводилачка меморија не садржи ниске које су сличне онима у тренутној "
 "датотеци. Ова опција је корисна за полуаутоматске преводе тек кад Poedit "
 "научи довољно из датотека које сте ручно превели."
 
@@ -694,7 +831,7 @@ msgid "Translating"
 msgstr "Преводим"
 
 msgid "Filling missing translations from TM..."
-msgstr "Попуњавање превода који недостају помоћу меморије"
+msgstr "Копирам преводе који недостају из меморије…"
 
 #, c-format
 msgid "Translated %u string"
@@ -732,6 +869,9 @@ msgstr "Све"
 msgid "Form %i"
 msgstr "Облик %i"
 
+msgid "Singular"
+msgstr "Једнина"
+
 msgid "Zero"
 msgstr "Нула"
 
@@ -741,6 +881,9 @@ msgstr "Један"
 msgid "Two"
 msgstr "Два"
 
+msgid "Plural"
+msgstr "Множина"
+
 msgid "Other"
 msgstr "Друго"
 
@@ -769,6 +912,12 @@ msgstr "Сакриј бочну траку"
 msgid "Show Sidebar"
 msgstr "Прикажи бочну траку"
 
+msgid "Hide Status Bar"
+msgstr "Сакриј статусну траку"
+
+msgid "Show Status Bar"
+msgstr "Прикажи статусну траку"
+
 msgid "Source text"
 msgstr "Изворни текст"
 
@@ -778,6 +927,10 @@ msgstr "Превод"
 msgid "ID"
 msgstr "ID"
 
+#, c-format
+msgid "Source text — %s"
+msgstr "Изворни текст – %s"
+
 msgid "unknown language"
 msgstr "непознат језик"
 
@@ -788,57 +941,73 @@ msgstr "Превод – %s"
 msgid "Error:"
 msgstr "Грешка:"
 
-msgid "Project info"
-msgstr "Подаци о пројекту"
+msgid "Source file"
+msgstr "Изворна датотека"
 
-msgid "Project name and version:"
-msgstr "Име пројекта и верзија:"
+msgid "Source file occurrence:"
+msgstr "Појављивање изворне датотеке:"
 
-msgid "Language:"
-msgstr "Језик:"
+msgid "Open in Editor"
+msgstr "Отвори у уређивачу"
 
-msgid "Team:"
-msgstr "Тим:"
+msgid "Open in editor"
+msgstr "Отвори у уређивачу"
 
-msgid "Team's email address:"
-msgstr "Е-адреса тима:"
+msgid "No references for the selected item."
+msgstr "За изабрану ставку нема референци."
 
-msgid "Charset:"
-msgstr "Кодирање:"
+#, c-format
+msgid "Error opening file %s!"
+msgstr "Грешка при отварању датотеке „%s“."
 
-msgid "Source"
-msgstr "Извор"
+msgid "Find"
+msgstr "П&ронађи"
 
-msgid "Notes"
-msgstr "Напомене"
+msgid "Replace"
+msgstr "Замени"
 
-msgid "Automatic translation"
-msgstr "Аутоматски превод"
+#. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.)
+msgid "Options"
+msgstr "Опције"
 
-msgid "Fuzzy translation"
-msgstr "Приближан превод"
+msgid "Ignore case"
+msgstr "Занемари величину слова"
 
-msgid "Notes for translators:"
-msgstr "Напомене за преводиоце:"
+msgid "Wrap around"
+msgstr "Кружна претрага"
 
-msgid "Comment:"
-msgstr "Коментар:"
+msgid "Whole words only"
+msgstr "&Само целе речи"
 
-msgid "Source file"
-msgstr "Изворна датотека"
+msgid "Find in source texts"
+msgstr "Пронађи у изворним текстовима"
 
-msgid "Source file occurrence:"
-msgstr "Појављивање изворне датотеке:"
+msgid "Find in translations"
+msgstr "&Преводи"
 
-msgid "Open in Editor"
-msgstr "Отвори у уређивачу"
+msgid "Find in comments"
+msgstr "&Коментари"
 
-msgid "Open in editor"
-msgstr "Отвори у уређивачу"
+msgid "Close"
+msgstr "&Затвори"
 
-#, c-format
-msgid "Error opening file %s!"
-msgstr "Грешка при отварању датотеке „%s“."
+msgid "Replace All"
+msgstr "Замени све"
+
+msgid "Replace all"
+msgstr "Замени све"
+
+msgid "< &Previous"
+msgstr "< П&ретходно"
+
+msgid "&Next >"
+msgstr "&Следеће >"
+
+msgid "String to find"
+msgstr "Жељени упит"
+
+msgid "Replacement string"
+msgstr "Замена"
 
 #, c-format
 msgid "Cannot execute program: %s"
@@ -915,7 +1084,7 @@ msgid ""
 "Your name and email address are only used to set the Last-Translator header "
 "of GNU gettext files."
 msgstr ""
-"Ваши име и е-адреса користе се да назначе последњег преводиоца у заглављу "
+"Ваше име и е-адреса се користе да назначе последњег преводиоца у заглављу "
 "GNU gettext датотека."
 
 msgid "Editing"
@@ -968,7 +1137,7 @@ msgid "Learn From Files..."
 msgstr "&Научи из датотека…"
 
 msgid "Learn from files..."
-msgstr "Изучи датотеке…"
+msgstr "&Научи из датотека…"
 
 #. TRANSLATORS: This is a button that deletes everything in the translation memory (i.e. clears/resets it).
 msgid "Reset"
@@ -1016,6 +1185,8 @@ msgid ""
 "Resetting the translation memory will irrevocably delete all stored "
 "translations from it. You can’t undo this operation."
 msgstr ""
+"Ако поништите преводилачку меморију, обрисаћете све преводе у њој. Ова радња "
+"је неповратна."
 
 msgid "Cancel"
 msgstr "&Откажи"
@@ -1039,9 +1210,19 @@ msgstr "&Ново"
 msgid "Edit"
 msgstr "&Уреди"
 
+msgid "Delete extractor"
+msgstr "Обриши издвајач"
+
+#, c-format
+msgid "Are you sure you want to delete the “%s” extractor?"
+msgstr "Заиста желите да обришете издвајач „%s“?"
+
 msgid "Extractors"
 msgstr "Издвајачи"
 
+msgid "Accounts"
+msgstr "Налози"
+
 msgid "Automatically check for updates"
 msgstr "Аутоматски проверавај има ли ажурирања"
 
@@ -1062,6 +1243,8 @@ msgid ""
 "These settings affect internal formatting of PO files. Adjust them if you "
 "have specific requirements e.g. because of version control."
 msgstr ""
+"Ове поставке утичу на унутрашње обликовање PO датотека. Прилагодите их "
+"својим потребама, нпр. ако користите систем за контролу верзија."
 
 msgid "Line endings:"
 msgstr "Завршеци редова:"
@@ -1074,16 +1257,49 @@ msgstr "Windows"
 
 #. TRANSLATORS: Followed by text control for entering number; wraps text at given width
 msgid "Wrap at:"
-msgstr ""
+msgstr "Прелом:"
 
 msgid "Preserve formatting of existing files"
-msgstr ""
+msgstr "Очувај обликовање постојећих датотека"
 
 msgid "Advanced"
+msgstr "Напредно"
+
+msgid ""
+"<big>Drag and Drop Folders Here</big>\n"
+"\n"
+"or use the + button"
 msgstr ""
+"<big>Овде превуците фасцикле</big>\n"
+"\n"
+"или кликните на дугме „+“"
 
-msgid "Additional keywords"
-msgstr "Додатне кључне речи"
+msgid ""
+"<big>Drag and drop folders here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+"<big>Овде превуците фасцикле</big>\n"
+"\n"
+"или кликните на дугме „+“"
+
+msgid "Add Folders..."
+msgstr "Додај фасцикле…"
+
+msgid "Add folders..."
+msgstr "Додај фасцикле…"
+
+msgid "Add Files..."
+msgstr "Додај датотеке…"
+
+msgid "Add files..."
+msgstr "Додај датотеке…"
+
+msgid "Add Wildcard..."
+msgstr "Додај заменски знак…"
+
+msgid "Add wildcard..."
+msgstr "Додај заменски знак…"
 
 msgid "Paths"
 msgstr "Путање"
@@ -1091,8 +1307,11 @@ msgstr "Путање"
 msgid "Excluded paths"
 msgstr "Изузете путање"
 
+msgid "Additional keywords"
+msgstr "Додатне кључне речи"
+
 msgid "Name of the project the translation is for"
-msgstr "Име пројекта на који се односи превод."
+msgstr "Име пројекта који се преводи."
 
 msgid "e.g. nplurals=2; plural=(n > 1);"
 msgstr "нпр. nplurals=2; plural=(n > 1);"
@@ -1104,6 +1323,9 @@ msgid "Please save the file first. This section cannot be edited until then."
 msgstr ""
 "Прво сачувајте датотеку. Овај одељак не може да се уређује док то не урадите."
 
+msgid "Comment:"
+msgstr "Коментар:"
+
 msgid "OK"
 msgstr "&У реду"
 
@@ -1113,42 +1335,6 @@ msgstr "О&чисти"
 msgid "Clear the comment"
 msgstr "Очистите коментар."
 
-msgid "Find..."
-msgstr "Проналажење"
-
-msgid "String to find:"
-msgstr "Жељени упит:"
-
-msgid "Case sensitive"
-msgstr "&Разликуј мала и велика слова"
-
-msgid "Start from the first item"
-msgstr "По&чни од прве ставке"
-
-msgid "Whole words only"
-msgstr "&Само целе речи"
-
-msgid "Find in original strings"
-msgstr "&Изворне поруке"
-
-msgid "Find in translations"
-msgstr "&Преводи"
-
-msgid "Find in comments"
-msgstr "&Коментари"
-
-msgid "Find in automatic comments"
-msgstr "&Аутоматски коментари"
-
-msgid "Close"
-msgstr "&Затвори"
-
-msgid "< &Previous"
-msgstr "< П&ретходно"
-
-msgid "&Next >"
-msgstr "&Следеће >"
-
 msgid "Create new translations project"
 msgstr "Креирајте нови пројекат за превођење."
 
@@ -1203,6 +1389,12 @@ msgstr "&Отвори…"
 msgid "Open Recent"
 msgstr "Отварање недавне датотеке"
 
+msgid "Open from Crowdin..."
+msgstr "Отвори из Crowdin-а…"
+
+msgid "Open From Crowdin..."
+msgstr "Отвори из Crowdin-а…"
+
 msgid "&Save"
 msgstr "&Сачувај"
 
@@ -1219,7 +1411,7 @@ msgid "E&xport as HTML..."
 msgstr "Извези као &HTML…"
 
 msgid "Check for updates..."
-msgstr "&Провери има ли ажурирања…"
+msgstr "&Потражи ажурирања…"
 
 msgid "Catalogs &manager"
 msgstr "&Управљач каталозима"
@@ -1251,14 +1443,17 @@ msgstr "Прикажи &референце"
 msgid "&Find..."
 msgstr "&Пронађи…"
 
+msgid "Replace..."
+msgstr "Замени…"
+
 msgid "Find next"
 msgstr "Пронађи &следеће"
 
 msgid "Find previous"
 msgstr "Пронађи пр&етходно"
 
-msgid "Find"
-msgstr "П&ронађи"
+msgid "Find and Replace..."
+msgstr "Пронађи и замени…"
 
 msgid "Find Next"
 msgstr "Пронађи &следеће"
@@ -1299,6 +1494,12 @@ msgstr "&Групиши по контексту"
 msgid "&Group By Context"
 msgstr "&Групиши по контексту"
 
+msgid "Entries with errors first"
+msgstr "Прво ставке са грешкама"
+
+msgid "Entries with Errors First"
+msgstr "Прво ставке са грешкама"
+
 msgid "&Untranslated entries first"
 msgstr "Прво н&епреведене ставке"
 
@@ -1308,6 +1509,9 @@ msgstr "Прво н&епреведене ставке"
 msgid "Show sidebar"
 msgstr "Прикажи бочну траку"
 
+msgid "Show status bar"
+msgstr "Прикажи статусну траку"
+
 msgid "C&atalog"
 msgstr "&Каталог"
 
@@ -1323,11 +1527,14 @@ msgstr "Ажурирај помоћу &POT датотеке…"
 msgid "Update from &POT File..."
 msgstr "Ажурирај помоћу &POT датотеке…"
 
+msgid "Sync with Crowdin"
+msgstr "Синхронизуј са Crowdin-ом"
+
 msgid "Fill missing translations from &TM..."
-msgstr ""
+msgstr "Копирај из &преводилачке меморије…"
 
 msgid "Fill Missing Translations from &TM..."
-msgstr ""
+msgstr "Копирај из &преводилачке меморије…"
 
 msgid "&Purge deleted translations"
 msgstr "&Очисти обрисане преводе"
@@ -1402,7 +1609,7 @@ msgid "Invocation:"
 msgstr "Позивање"
 
 msgid "Command to extract translations:"
-msgstr "Команда за издвајање превода:"
+msgstr "Команда за издвајање изворног текста:"
 
 msgid ""
 "This is the command used to launch the extractor.\n"
@@ -1410,10 +1617,10 @@ msgid ""
 "of keywords, %F to list of input files,\n"
 "%C to charset flag (see below)."
 msgstr ""
-"Ова команда користи се за покретање издвајача.\n"
-"%o се проширује на име излазне датотеке, %K на списак\n"
-"кључних речи, %F на списак улазних датотека,\n"
-"%C на ознаку кодирања (погледајте испод)."
+"Ова команда се користи за покретање издвајача.\n"
+"%o означава име излазне датотеке, %K списак\n"
+"кључних речи, %F списак улазних датотека,\n"
+"%C ознаку кодирања (погледајте испод)."
 
 msgid "An item in keywords list:"
 msgstr "Ставка у списку кључних речи:"
@@ -1422,7 +1629,7 @@ msgid ""
 "This will be attached to the command line once\n"
 "for each keyword. %k expands to the keyword."
 msgstr ""
-"Ово ће бити прикључено на командну линију једном\n"
+"Ово ће бити прикачено на командну линију по једном\n"
 "за сваку кључну реч. Ознака %k представља кључну реч."
 
 msgid "An item in input files list:"
@@ -1433,7 +1640,7 @@ msgid ""
 "This will be attached to the command line once\n"
 "for each input file. %f expands to the filename."
 msgstr ""
-"Ово ће бити прикључено на командну линију једном\n"
+"Ово ће бити прикачено на командну линију по једном\n"
 "за сваку улазну датотеку. Ознака %f представља име датотеке."
 
 msgid "Source code charset:"
@@ -1444,12 +1651,15 @@ msgid ""
 "This will be attached to the command line\n"
 "only if source codecharset was given. %c expands to charset value."
 msgstr ""
-"Ово ће бити прикључено на командну линију само ако је наведено\n"
+"Ово ће бити прикачено на командну линију само ако је наведено\n"
 "кодирање извора. Ознака %c представља вредност скупа знакова."
 
 msgid "Catalog properties"
 msgstr "Својства каталога"
 
+msgid "Project name and version:"
+msgstr "Име пројекта и верзија:"
+
 msgid "Plural Forms:"
 msgstr "Облици за множину:"
 
@@ -1462,31 +1672,40 @@ msgstr "Прилагођени &израз:"
 msgid "Learn about plural forms"
 msgstr "Више о облицима за множину"
 
+msgid "Charset:"
+msgstr "Кодирање:"
+
+msgid "Team:"
+msgstr "Тим:"
+
+msgid "Team's email address:"
+msgstr "Е-адреса тима:"
+
 msgid "Translation properties"
 msgstr "Својства превода"
 
+msgid "Sources paths"
+msgstr "Путање извора"
+
 msgid "Extract text from source files in the following directories:"
 msgstr "Издвојте текст из изворних датотека у следеће фасцикле."
 
 msgid "Base path:"
 msgstr "Основна путања:"
 
-msgid "Sources paths"
-msgstr "Путање извора"
+msgid "Sources keywords"
+msgstr "Кључне речи извора"
 
 msgid ""
 "Use these keywords (function names) to recognize translatable strings\n"
 "in source files:"
 msgstr ""
 "Користите ове кључне речи (имена функција) за препознавање\n"
-"преводивих порука у изворним датотекама."
+"преводивих ниски у изворним датотекама."
 
 msgid "Learn about gettext keywords"
 msgstr "Више о кључним речима gettext-а"
 
-msgid "Sources keywords"
-msgstr "Кључне речи извора"
-
 msgid "Update summary"
 msgstr "Резиме ажурирања"
 
@@ -1494,21 +1713,21 @@ msgid ""
 "These strings were found in the sources but were not in the catalog.\n"
 "Poedit will add them to the catalog now."
 msgstr ""
-"Ове поруке су пронађене у изворној датотеци,\n"
+"Ове ниске су пронађене у изворној датотеци,\n"
 "али их нема у каталогу. Сада ће бити додате."
 
 msgid "New strings"
-msgstr "Нове поруке"
+msgstr "Нове ниске"
 
 msgid ""
 "These strings are no longer in the sources.\n"
 "Poedit will remove them from the catalog now."
 msgstr ""
-"Ове поруке више нису у изворној датотеци.\n"
+"Ове ниске више нису у изворној датотеци.\n"
 "Оне ће бити уклоњене из каталога."
 
 msgid "Obsolete strings"
-msgstr "Застареле поруке"
+msgstr "Застареле ниске"
 
 msgid "(0 new, 0 obsolete)"
 msgstr "(0 нових, 0 застарелих)"
@@ -1534,7 +1753,7 @@ msgstr "Ажурирајте каталог и ускладите га са из
 msgid "Toggled if selected string has fuzzy translation"
 msgstr "Поставите ознаку приближног превода или је уклоните."
 
-msgid "Show or hide the sidebar."
+msgid "Show or hide the sidebar"
 msgstr "Прикажите или сакријте бочну траку."
 
 #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer.
@@ -1544,7 +1763,10 @@ msgstr "Претходна верзија изворног текста:"
 msgid ""
 "The old source text (before it changed during an update) that the fuzzy "
 "translation corresponds to."
-msgstr ""
+msgstr "Стари изворни текст (до ажурирања) на који се односи приближан превод."
+
+msgid "Notes for translators:"
+msgstr "Напомене за преводиоце:"
 
 msgid "Add comment"
 msgstr "Додај коментар"
@@ -1564,7 +1786,7 @@ msgid "No Matches Found"
 msgstr "Нема резултата"
 
 msgid "This string was found in Poedit’s translation memory."
-msgstr "Ова порука је пронађена у преводилачкој меморији Poedit-а."
+msgstr "Ова ниска је пронађена у преводилачкој меморији Poedit-а."
 
 #, c-format
 msgid "(New: %i, obsolete: %i)"
@@ -1582,7 +1804,7 @@ msgstr "Припремам премештање…"
 
 #, c-format
 msgid "Migration exit status: %d"
-msgstr "Излазни статус премештања: %d"
+msgstr "Статус завршног премештања: %d"
 
 msgid "Poedit needs to convert your translation memory to a new format."
 msgstr "Poedit треба да конвертује вашу преводилачку меморију у нови формат."
@@ -1591,8 +1813,8 @@ msgid ""
 "This must be done before Poedit can start. It may take a few minutes if you "
 "have lots of translations stored, but should normally be much faster."
 msgstr ""
-"Ово мора бити урађено пре покретања програма. Може потрајати и неколико "
-"минута ако имате сачувано доста превода, али је најчешће доста брже."
+"Ово мора бити урађено пре покретања програма. Радња може потрајати и "
+"неколико минута ако сте сачували много превода, али је обично доста брже."
 
 msgid "Proceed"
 msgstr "Настави"
@@ -1624,16 +1846,25 @@ msgstr "Уреди превод"
 msgid "Open an existing PO file and edit the translation."
 msgstr "Отворите постојећу PO датотеку и уредите превод."
 
-msgid "Create new translation"
-msgstr "Креирај нови превод"
-
 msgid ""
 "Take an existing PO file or POT template and create a new translation from "
 "it."
 msgstr "Креирајте нови превод из постојеће PO или POT датотеке."
 
+msgid "Collaborate on a translation with Crowdin"
+msgstr "Сарађујте у превођењу на Crowdin-у"
+
+msgid ""
+"Download a file from Crowdin project, translate and sync your changes back."
+msgstr ""
+"Преузмите датотеку са пројекта Crowdin, преведите је и синхронизујте своје "
+"измене."
+
+msgid "What is Crowdin?"
+msgstr "Шта је Crowdin?"
+
 msgid "There are no translations. That’s unusual."
-msgstr "Нема превода. То је неуобичајено."
+msgstr "Нема превода. То је необично."
 
 msgid ""
 "Translatable entries aren't added manually in the Gettext system, but are "
@@ -1642,10 +1873,10 @@ msgid ""
 "Translators typically use PO template files (POTs) prepared for them by the "
 "developer."
 msgstr ""
-"Преводљиве ставке се не додају ручно у „Gettext“ систем, већ се аутоматски "
+"Преводиве ставке се не додају ручно у gettext систем, већ се аутоматски "
 "издвајају\n"
-"из изворног кода. На овај начин оне остају ажурне и тачне.\n"
-"Преводиоци углавном користе „PO“ шаблонске датотеке (POT) које припремају "
+"из изворног кода. На овај начин остају ажурне и тачне.\n"
+"Преводиоци углавном користе PO датотеке шаблона (POT) које припремају "
 "програмери."
 
 msgid "(Learn more about GNU gettext)"
@@ -1660,14 +1891,20 @@ msgid "Update from POT"
 msgstr "Ажурирај помоћу POT датотеке"
 
 msgid "Take translatable strings from an existing POT template."
-msgstr "Копирајте поруке за превођење из постојећег POT шаблона."
+msgstr "Копирајте преводиве ниске из постојећег POT шаблона."
 
 msgid ""
 "You can also extract translatable strings directly from the source code:"
-msgstr "Поруке за превођење такође можете директно издвојити из изворног кода:"
+msgstr "Преводиве ниске можете издвојити и директно из изворног кода:"
 
 msgid "Extract from sources"
-msgstr "Издвоји из извора"
+msgstr "Издвој из извора"
 
 msgid "Configure source code extraction in Properties."
-msgstr "Подесите издвајање изворног кода у „Својствима“."
+msgstr "Подесите издвајање из изворног кода у „Својствима“."
+
+msgid "Sync"
+msgstr "Синхронизација"
+
+msgid "Synchronize the translation with Crowdin"
+msgstr "Синхронизујте превод са Crowdin-ом"
diff --git a/locales/sv.mo b/locales/sv.mo
index ae85d3f..53c67b1 100644
Binary files a/locales/sv.mo and b/locales/sv.mo differ
diff --git a/locales/sv.po b/locales/sv.po
index 1745318..27afb5a 100644
--- a/locales/sv.po
+++ b/locales/sv.po
@@ -2,8 +2,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: poedit\n"
 "Report-Msgid-Bugs-To: help at poedit.net\n"
-"POT-Creation-Date: 2015-01-10 16:00+0100\n"
-"PO-Revision-Date: 2015-03-10 12:42-0400\n"
+"POT-Creation-Date: 2015-05-27 11:31+0200\n"
+"PO-Revision-Date: 2015-05-27 05:17-0400\n"
 "Last-Translator: vslavik <vaclav at slavik.io>\n"
 "Language-Team: Swedish\n"
 "Language: sv_SE\n"
@@ -90,6 +90,15 @@ msgstr ""
 msgid "Error saving catalog"
 msgstr "Fel vid sparande av katalog"
 
+msgid "PO Translation Files"
+msgstr "PO-översättningsfiler"
+
+msgid "POT Translation Templates"
+msgstr "POT-översättningsmallar"
+
+msgid "All Translation Files"
+msgstr "Alla översättningsfiler"
+
 msgid "Merging differences..."
 msgstr "Sammanfogar skillnader..."
 
@@ -109,6 +118,86 @@ msgstr "Språkval"
 msgid "You must restart Poedit for this change to take effect."
 msgstr "Du måste starta om Poedit för att denna ändring ska träda i kraft."
 
+msgid "Downloading translations is disabled in this project."
+msgstr "Nedladdning av översättningar är inaktiverade i detta projekt."
+
+msgid "Not authorized, please sign in again."
+msgstr "Inte behörig, vänligen logga in igen."
+
+msgid "Sign in to Crowdin"
+msgstr "Logga in till Crowdin"
+
+msgid ""
+"Crowdin is an online localization management platform and collaborative "
+"translation tool. Poedit can seamlessly sync PO files managed at Crowdin."
+msgstr ""
+"Crowdin är en online plattform för att hantera översättningar och ett "
+"verktyg för att samarbeta med översättningar. Poedit kan smidigt "
+"synkronisera PO-filer som hanteras på Crowdin."
+
+msgid "Sign In"
+msgstr "Logga in"
+
+msgid "Sign in"
+msgstr "Logga in"
+
+msgid "Sign Out"
+msgstr "Logga ut"
+
+msgid "Sign out"
+msgstr "Logga ut"
+
+msgid "Waiting for authentication…"
+msgstr "Väntar på verifiering…"
+
+msgid "Updating user information…"
+msgstr "Uppdaterar användarinformation…"
+
+msgid "Signed in as:"
+msgstr "Inloggad som:"
+
+msgid "Learn More About Crowdin"
+msgstr "Lär dig mer om Crowdin"
+
+msgid "Learn more about Crowdin"
+msgstr "Lär dig mer om Crowdin"
+
+msgid "Open Crowdin translation"
+msgstr "Öppna Crowdin-översättning"
+
+msgid "Project:"
+msgstr "Projekt:"
+
+msgid "Language:"
+msgstr "Språk:"
+
+msgid "File:"
+msgstr "Fil:"
+
+msgid "No translation projects listed in your Crowdin account."
+msgstr "Inga översättningsprojekt finns på ditt Crowdin-konto."
+
+msgid "This project has no files that can be translated in Poedit."
+msgstr "Detta projekt har inga filer som kan översättas i Poedit."
+
+msgid "This file can only be edited in Crowdin’s web interface."
+msgstr "Denna fil kan endast redigeras i Crowdin:s webbgränssnitt."
+
+msgid "Downloading latest translations…"
+msgstr "Hämtar senaste översättning…"
+
+msgid "Syncing with Crowdin"
+msgstr "Synkroniserar med Crowdin"
+
+msgid "Syncing with Crowdin failed."
+msgstr "Synkroniserar med Crowdin misslyckades."
+
+msgid "Crowdin error"
+msgstr "Crowdin-fel"
+
+msgid "Uploading translations…"
+msgstr "Laddar upp översättning…"
+
 msgid "&Copy"
 msgstr "&Kopiera"
 
@@ -155,6 +244,12 @@ msgstr ""
 msgid "don't delete temporary files (for debugging)"
 msgstr "ta inte bort temporära filer (för felsökning)"
 
+msgid "handle a poedit:// URI"
+msgstr "hantera en poedit:// URI"
+
+msgid "Failed to communicate with Poedit process."
+msgstr "Misslyckades att kommunicera med Poedit-processen."
+
 #, c-format
 msgid "Unhandled exception occurred: %s"
 msgstr "Ohanterat undantag inträffade: %s"
@@ -165,12 +260,6 @@ msgstr "Ohanterat undantag inträffade."
 msgid "Open catalog"
 msgstr "Öppna katalog"
 
-msgid "All Files"
-msgstr "Alla filer"
-
-msgid "PO Translation Files"
-msgstr "PO-översättningsfiler"
-
 #, c-format
 msgid "File '%s' doesn't exist."
 msgstr "Fil '%s' finns inte."
@@ -399,6 +488,19 @@ msgstr "Plural:"
 msgid "Translation:"
 msgstr "Översättning:"
 
+msgid ""
+"POT files are only templates and don’t contain any translations themselves.\n"
+"To make a translation, create a new PO file based on the template."
+msgstr ""
+"POT-filer är endast mallar och innehåller inte själv några översättningar.\n"
+"För att göra en översättning, skapa en ny PO-fil baserad på mallen."
+
+msgid "Create New Translation"
+msgstr "Skapa ny översättning"
+
+msgid "Create new translation"
+msgstr "Skapa ny översättning"
+
 #. TRANSLATORS: %s is language name in its basic form (as you
 #. would see e.g. in a list of supported languages). You may need
 #. to rephrase it, e.g. to an equivalent of "for language %s".
@@ -448,9 +550,6 @@ msgstr "HTML-filer"
 msgid "Open catalog template"
 msgstr "Öppna mall för katalog"
 
-msgid "POT Translation Templates"
-msgstr "POT-översättningsmallar"
-
 msgid "Updating catalog"
 msgstr "Uppdaterar katalog"
 
@@ -532,18 +631,24 @@ msgstr[1] ""
 msgid "The translation is ready for use."
 msgstr "Översättningen är klar för användning."
 
-msgid "No references to this string found."
-msgstr "Inga hänvisningar till denna sträng hittades."
-
-msgid "Please choose the reference you want to show:"
-msgstr "Välj hänvisningar som du vill visa:"
-
-msgid "References"
-msgstr "Hänvisningar"
-
 msgid "Context:"
 msgstr "Innehåll:"
 
+#, c-format
+msgid "Poedit automatically fixed invalid content in the file “%s”."
+msgstr "Poedit fixade automatiskt ogiltigt innehåll i filen \"%s\"."
+
+msgid ""
+"The file contained duplicate items, which is not allowed in PO files and "
+"would prevent the file from being used. Poedit fixed the issue, but you "
+"should review translations of any items marked as fuzzy and correct them if "
+"necessary."
+msgstr ""
+"Filen innehöll dubbletter, vilket inte är tillåtet i PO-filer och skulle "
+"förhindra filen från att användas. Poedit fixade problemet, men du bör se "
+"över översättningar som har objekt markerade som luddiga och korrigera dem "
+"om det behövs."
+
 msgid "Language of the translation isn't set."
 msgstr "Språket i översättningen har inte angetts."
 
@@ -553,6 +658,23 @@ msgstr "Ange språk"
 msgid "Set language"
 msgstr "Ange språk"
 
+#. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)."
+msgid ""
+"Suggestions are not available if the translation language is not set "
+"correctly. Other features, such as plural forms, may be affected as well."
+msgstr ""
+"Förslag är inte tillgängliga om översättningsspråket inte är inställt på "
+"rätt sätt. Andra funktioner, såsom pluralformer, kan påverkas också."
+
+msgid "Language of the translation is the same as source language."
+msgstr "Språket i översättningen är samma som källspråket."
+
+msgid "Fix Language"
+msgstr "Fixa språk"
+
+msgid "Fix language"
+msgstr "Fixa språk"
+
 msgid ""
 "This catalog has entries with plural forms, but doesn't have Plural-Forms "
 "header configured."
@@ -587,6 +709,7 @@ msgstr "Fixa header"
 msgid "Plural forms expression used by the catalog is unusual for %s."
 msgstr "Pluralformsuttryck som används av katalogen är ovanligt för %s."
 
+#. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the catalog is unusual for %s.")"
 msgid "Review"
 msgstr "Granska"
 
@@ -608,6 +731,12 @@ msgid_plural "%d errors"
 msgstr[0] "%d fel"
 msgstr[1] "%d fel"
 
+#, c-format
+msgid "%d entry"
+msgid_plural "%d entries"
+msgstr[0] "%d post"
+msgstr[1] "%d poster"
+
 msgid " (unsaved)"
 msgstr " (ej sparad)"
 
@@ -734,6 +863,9 @@ msgstr "Allt"
 msgid "Form %i"
 msgstr "Form %i"
 
+msgid "Singular"
+msgstr "Singular"
+
 msgid "Zero"
 msgstr "Noll"
 
@@ -743,6 +875,9 @@ msgstr "Ett"
 msgid "Two"
 msgstr "Två"
 
+msgid "Plural"
+msgstr "Plural"
+
 msgid "Other"
 msgstr "Övrigt"
 
@@ -771,6 +906,12 @@ msgstr "Dölj sidofält"
 msgid "Show Sidebar"
 msgstr "Visa sidofält"
 
+msgid "Hide Status Bar"
+msgstr "Dölj statusfältet"
+
+msgid "Show Status Bar"
+msgstr "Visa statusfältet"
+
 msgid "Source text"
 msgstr "Källtext"
 
@@ -780,6 +921,10 @@ msgstr "Översättning"
 msgid "ID"
 msgstr "ID"
 
+#, c-format
+msgid "Source text — %s"
+msgstr "Källtext — %s"
+
 msgid "unknown language"
 msgstr "okänt språk"
 
@@ -790,57 +935,73 @@ msgstr "Översättning — %s"
 msgid "Error:"
 msgstr "Fel:"
 
-msgid "Project info"
-msgstr "Projekt info"
+msgid "Source file"
+msgstr "Källfil"
 
-msgid "Project name and version:"
-msgstr "Projektnamn och version:"
+msgid "Source file occurrence:"
+msgstr "Förekomster källfil:"
 
-msgid "Language:"
-msgstr "Språk:"
+msgid "Open in Editor"
+msgstr "Öppna i editor"
 
-msgid "Team:"
-msgstr "Grupp:"
+msgid "Open in editor"
+msgstr "Öppna i editor"
 
-msgid "Team's email address:"
-msgstr "Gruppens e-postadress:"
+msgid "No references for the selected item."
+msgstr "Inga referenser för det markerade objektet."
 
-msgid "Charset:"
-msgstr "Teckenuppsättning:"
+#, c-format
+msgid "Error opening file %s!"
+msgstr "Fel vid öppning av fil %s!"
 
-msgid "Source"
-msgstr "Källa"
+msgid "Find"
+msgstr "Hitta"
 
-msgid "Notes"
-msgstr "Anteckningar"
+msgid "Replace"
+msgstr "Ersätt"
 
-msgid "Automatic translation"
-msgstr "Automatisk översättning"
+#. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.)
+msgid "Options"
+msgstr "Alternativ"
 
-msgid "Fuzzy translation"
-msgstr "Luddig översättning"
+msgid "Ignore case"
+msgstr "Ignorera gemen/versal"
 
-msgid "Notes for translators:"
-msgstr "Anteckningar för översättare:"
+msgid "Wrap around"
+msgstr "Loopa"
 
-msgid "Comment:"
-msgstr "Kommentar:"
+msgid "Whole words only"
+msgstr "Endast hela ord"
 
-msgid "Source file"
-msgstr "Källfil"
+msgid "Find in source texts"
+msgstr "Hitta i källtexter"
 
-msgid "Source file occurrence:"
-msgstr "Förekomster källfil:"
+msgid "Find in translations"
+msgstr "Sök i översättningar"
 
-msgid "Open in Editor"
-msgstr "Öppna i editor"
+msgid "Find in comments"
+msgstr "Sök i kommentarer"
 
-msgid "Open in editor"
-msgstr "Öppna i editor"
+msgid "Close"
+msgstr "Stäng"
 
-#, c-format
-msgid "Error opening file %s!"
-msgstr "Fel vid öppning av fil %s!"
+msgid "Replace All"
+msgstr "Ersätt alla"
+
+msgid "Replace all"
+msgstr "Ersätt alla"
+
+msgid "< &Previous"
+msgstr "<Föregående"
+
+msgid "&Next >"
+msgstr "&Nästa >"
+
+msgid "String to find"
+msgstr "Sträng att hitta"
+
+msgid "Replacement string"
+msgstr "Ersättningssträng"
 
 #, c-format
 msgid "Cannot execute program: %s"
@@ -1045,9 +1206,19 @@ msgstr "Ny"
 msgid "Edit"
 msgstr "Redigera"
 
+msgid "Delete extractor"
+msgstr "Ta bort extraherare"
+
+#, c-format
+msgid "Are you sure you want to delete the “%s” extractor?"
+msgstr "Är du säker på att du vill ta bort extraherare \"%s\"?"
+
 msgid "Extractors"
 msgstr "Extraherare"
 
+msgid "Accounts"
+msgstr "Konton"
+
 msgid "Automatically check for updates"
 msgstr "Sök efter uppdateringar automatiskt"
 
@@ -1090,8 +1261,41 @@ msgstr "Bevara formateringen av befintliga filer"
 msgid "Advanced"
 msgstr "Advancerat"
 
-msgid "Additional keywords"
-msgstr "Ytterligare sökord"
+msgid ""
+"<big>Drag and Drop Folders Here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+"<big>Dra och Släpp Mappar Här</big>\n"
+"\n"
+"eller använd +-knappen"
+
+msgid ""
+"<big>Drag and drop folders here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+"<big>Dra och släpp mappar här</big>\n"
+"\n"
+"eller använd +-knappen"
+
+msgid "Add Folders..."
+msgstr "Lägg till mappar..."
+
+msgid "Add folders..."
+msgstr "Lägg till mappar..."
+
+msgid "Add Files..."
+msgstr "Lägg till filer..."
+
+msgid "Add files..."
+msgstr "Lägg till filer..."
+
+msgid "Add Wildcard..."
+msgstr "Lägg till Jokertecken..."
+
+msgid "Add wildcard..."
+msgstr "Lägg till jokertecken..."
 
 msgid "Paths"
 msgstr "Sökväg"
@@ -1099,6 +1303,9 @@ msgstr "Sökväg"
 msgid "Excluded paths"
 msgstr "Undantagna sökvägar"
 
+msgid "Additional keywords"
+msgstr "Ytterligare sökord"
+
 msgid "Name of the project the translation is for"
 msgstr "Namnet på projektet översättningen är för"
 
@@ -1112,6 +1319,9 @@ msgid "Please save the file first. This section cannot be edited until then."
 msgstr ""
 "Vänligen spara filen först. Det här avsnittet kan inte redigeras tills dess."
 
+msgid "Comment:"
+msgstr "Kommentar:"
+
 msgid "OK"
 msgstr "OK"
 
@@ -1121,42 +1331,6 @@ msgstr "&Rensa"
 msgid "Clear the comment"
 msgstr "Rensa kommentaren"
 
-msgid "Find..."
-msgstr "Sök..."
-
-msgid "String to find:"
-msgstr "Sträng att hitta:"
-
-msgid "Case sensitive"
-msgstr "Skiftlägeskänslig"
-
-msgid "Start from the first item"
-msgstr "Utgå från det första objektet"
-
-msgid "Whole words only"
-msgstr "Endast hela ord"
-
-msgid "Find in original strings"
-msgstr "Sök i originalsträngar"
-
-msgid "Find in translations"
-msgstr "Sök i översättningar"
-
-msgid "Find in comments"
-msgstr "Sök i kommentarer"
-
-msgid "Find in automatic comments"
-msgstr "Sök i automatiska kommentarer"
-
-msgid "Close"
-msgstr "Stäng"
-
-msgid "< &Previous"
-msgstr "<Föregående"
-
-msgid "&Next >"
-msgstr "&Nästa >"
-
 msgid "Create new translations project"
 msgstr "Skapa ett nytt översättningsprojekt"
 
@@ -1211,6 +1385,12 @@ msgstr "&Öppna..."
 msgid "Open Recent"
 msgstr "Öppna senaste"
 
+msgid "Open from Crowdin..."
+msgstr "Öppna från Crowdin..."
+
+msgid "Open From Crowdin..."
+msgstr "Öppna från Crowdin..."
+
 msgid "&Save"
 msgstr "&Spara"
 
@@ -1259,14 +1439,17 @@ msgstr "&Visa Källor"
 msgid "&Find..."
 msgstr "&Sök..."
 
+msgid "Replace..."
+msgstr "Ersätt..."
+
 msgid "Find next"
 msgstr "Sök nästa"
 
 msgid "Find previous"
 msgstr "Sök föregående"
 
-msgid "Find"
-msgstr "Hitta"
+msgid "Find and Replace..."
+msgstr "Sök och ersätt..."
 
 msgid "Find Next"
 msgstr "Sök nästa"
@@ -1307,6 +1490,12 @@ msgstr "&Gruppera efter innehåll"
 msgid "&Group By Context"
 msgstr "&Gruppera efter innehåll"
 
+msgid "Entries with errors first"
+msgstr "Poster med fel först"
+
+msgid "Entries with Errors First"
+msgstr "Poster med fel först"
+
 msgid "&Untranslated entries first"
 msgstr "&Oöversatta poster först"
 
@@ -1316,6 +1505,9 @@ msgstr "&Oöversatta Poster Först"
 msgid "Show sidebar"
 msgstr "Visa sidofält"
 
+msgid "Show status bar"
+msgstr "Visa statusfältet"
+
 msgid "C&atalog"
 msgstr "&Katalog"
 
@@ -1331,6 +1523,9 @@ msgstr "Uppdatera från &POT-fil..."
 msgid "Update from &POT File..."
 msgstr "Uppdatera från &POT-Fil..."
 
+msgid "Sync with Crowdin"
+msgstr "Synkronisera med Crowdin"
+
 msgid "Fill missing translations from &TM..."
 msgstr "Fyll saknade översättningar från ö&versättningsminnet..."
 
@@ -1459,6 +1654,9 @@ msgstr ""
 msgid "Catalog properties"
 msgstr "Katalogegenskaper"
 
+msgid "Project name and version:"
+msgstr "Projektnamn och version:"
+
 msgid "Plural Forms:"
 msgstr "Flertalsformer:"
 
@@ -1471,17 +1669,29 @@ msgstr "Använd anpassat uttryck"
 msgid "Learn about plural forms"
 msgstr "Lär dig mer om flertalsformer"
 
+msgid "Charset:"
+msgstr "Teckenuppsättning:"
+
+msgid "Team:"
+msgstr "Grupp:"
+
+msgid "Team's email address:"
+msgstr "Gruppens e-postadress:"
+
 msgid "Translation properties"
 msgstr "Översättningsegenskaper"
 
+msgid "Sources paths"
+msgstr "Källor sökvägar"
+
 msgid "Extract text from source files in the following directories:"
 msgstr "Extrahera text från källfilen i följande kataloger:"
 
 msgid "Base path:"
 msgstr "Rotsökväg:"
 
-msgid "Sources paths"
-msgstr "Källor sökvägar"
+msgid "Sources keywords"
+msgstr "Källor sökord"
 
 msgid ""
 "Use these keywords (function names) to recognize translatable strings\n"
@@ -1494,9 +1704,6 @@ msgstr ""
 msgid "Learn about gettext keywords"
 msgstr "Lär dig mer om gettext sökord"
 
-msgid "Sources keywords"
-msgstr "Källor sökord"
-
 msgid "Update summary"
 msgstr "Uppdatera sammanfattning"
 
@@ -1544,8 +1751,8 @@ msgstr "Uppdatera katalog - synkronisera den med källor"
 msgid "Toggled if selected string has fuzzy translation"
 msgstr "Växlas om vald sträng har luddig översättning"
 
-msgid "Show or hide the sidebar."
-msgstr "Visa eller dölj sidofält."
+msgid "Show or hide the sidebar"
+msgstr "Visa eller dölj sidofält"
 
 #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer.
 msgid "Previous source text:"
@@ -1558,6 +1765,9 @@ msgstr ""
 "Den gamla källtexten (innan den ändrades under en uppdatering) som den "
 "luddiga översättningen motsvarar."
 
+msgid "Notes for translators:"
+msgstr "Anteckningar för översättare:"
+
 msgid "Add comment"
 msgstr "Lägg till kommentar"
 
@@ -1638,15 +1848,23 @@ msgstr "Redigera en översättning"
 msgid "Open an existing PO file and edit the translation."
 msgstr "Öppna en befintlig PO-fil och redigera översättningen."
 
-msgid "Create new translation"
-msgstr "Skapa ny översättning"
-
 msgid ""
 "Take an existing PO file or POT template and create a new translation from "
 "it."
 msgstr ""
 "Ta en befintlig PO-fil eller POT-mall och skapa en ny översättning från den."
 
+msgid "Collaborate on a translation with Crowdin"
+msgstr "Samarbeta på en översättning med Crowdin"
+
+msgid ""
+"Download a file from Crowdin project, translate and sync your changes back."
+msgstr ""
+"Hämta en fil från ett Crowdin-projekt, översätt och synkronisera ändringarna."
+
+msgid "What is Crowdin?"
+msgstr "Vad är Crowdin?"
+
 msgid "There are no translations. That’s unusual."
 msgstr "Det finns inga översättningar. Det är ovanligt."
 
@@ -1686,3 +1904,9 @@ msgstr "Extrahera från källor"
 
 msgid "Configure source code extraction in Properties."
 msgstr "Konfigurera källkodsextrahering i egenskaper."
+
+msgid "Sync"
+msgstr "Synkronisera"
+
+msgid "Synchronize the translation with Crowdin"
+msgstr "Synkronisera översättningen med Crowdin"
diff --git a/locales/ta.mo b/locales/ta.mo
index 632ef5a..d497ab2 100644
Binary files a/locales/ta.mo and b/locales/ta.mo differ
diff --git a/locales/ta.po b/locales/ta.po
index 8a1af3e..6d97e0f 100644
--- a/locales/ta.po
+++ b/locales/ta.po
@@ -2,8 +2,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: poedit\n"
 "Report-Msgid-Bugs-To: help at poedit.net\n"
-"POT-Creation-Date: 2015-01-10 16:00+0100\n"
-"PO-Revision-Date: 2015-03-10 12:34-0400\n"
+"POT-Creation-Date: 2015-05-27 11:31+0200\n"
+"PO-Revision-Date: 2015-05-27 05:17-0400\n"
 "Last-Translator: vslavik <vaclav at slavik.io>\n"
 "Language-Team: Tamil\n"
 "Language: ta_IN\n"
@@ -87,6 +87,15 @@ msgstr ""
 msgid "Error saving catalog"
 msgstr "காடல்லகினை  காப்பதில் சிக்கல்"
 
+msgid "PO Translation Files"
+msgstr ""
+
+msgid "POT Translation Templates"
+msgstr ""
+
+msgid "All Translation Files"
+msgstr ""
+
 msgid "Merging differences..."
 msgstr "வேறுபாடுகள் ஒன்றிணைக்கப் படுகின்றன..."
 
@@ -106,6 +115,83 @@ msgstr "மொழித் தேர்வு:"
 msgid "You must restart Poedit for this change to take effect."
 msgstr "இம்மாற்றம் செயற்படுத்தப் பட பி.ஓ.எடிட்டினைத் தாங்கள் மீண்டும் துவங்க வேண்டும்."
 
+msgid "Downloading translations is disabled in this project."
+msgstr ""
+
+msgid "Not authorized, please sign in again."
+msgstr ""
+
+msgid "Sign in to Crowdin"
+msgstr ""
+
+msgid ""
+"Crowdin is an online localization management platform and collaborative "
+"translation tool. Poedit can seamlessly sync PO files managed at Crowdin."
+msgstr ""
+
+msgid "Sign In"
+msgstr ""
+
+msgid "Sign in"
+msgstr ""
+
+msgid "Sign Out"
+msgstr ""
+
+msgid "Sign out"
+msgstr ""
+
+msgid "Waiting for authentication…"
+msgstr ""
+
+msgid "Updating user information…"
+msgstr ""
+
+msgid "Signed in as:"
+msgstr ""
+
+msgid "Learn More About Crowdin"
+msgstr ""
+
+msgid "Learn more about Crowdin"
+msgstr ""
+
+msgid "Open Crowdin translation"
+msgstr ""
+
+msgid "Project:"
+msgstr ""
+
+msgid "Language:"
+msgstr "மொழி:"
+
+msgid "File:"
+msgstr ""
+
+msgid "No translation projects listed in your Crowdin account."
+msgstr ""
+
+msgid "This project has no files that can be translated in Poedit."
+msgstr ""
+
+msgid "This file can only be edited in Crowdin’s web interface."
+msgstr ""
+
+msgid "Downloading latest translations…"
+msgstr ""
+
+msgid "Syncing with Crowdin"
+msgstr ""
+
+msgid "Syncing with Crowdin failed."
+msgstr ""
+
+msgid "Crowdin error"
+msgstr ""
+
+msgid "Uploading translations…"
+msgstr ""
+
 msgid "&Copy"
 msgstr ""
 
@@ -150,6 +236,12 @@ msgstr ""
 msgid "don't delete temporary files (for debugging)"
 msgstr ""
 
+msgid "handle a poedit:// URI"
+msgstr ""
+
+msgid "Failed to communicate with Poedit process."
+msgstr ""
+
 #, c-format
 msgid "Unhandled exception occurred: %s"
 msgstr ""
@@ -160,12 +252,6 @@ msgstr ""
 msgid "Open catalog"
 msgstr "காடலாகினைத் திறக்கவும்"
 
-msgid "All Files"
-msgstr ""
-
-msgid "PO Translation Files"
-msgstr ""
-
 #, c-format
 msgid "File '%s' doesn't exist."
 msgstr "'%s' எனும் கோப்பு இல்லை."
@@ -393,6 +479,17 @@ msgstr "பன்மை:"
 msgid "Translation:"
 msgstr ""
 
+msgid ""
+"POT files are only templates and don’t contain any translations themselves.\n"
+"To make a translation, create a new PO file based on the template."
+msgstr ""
+
+msgid "Create New Translation"
+msgstr ""
+
+msgid "Create new translation"
+msgstr ""
+
 #. TRANSLATORS: %s is language name in its basic form (as you
 #. would see e.g. in a list of supported languages). You may need
 #. to rephrase it, e.g. to an equivalent of "for language %s".
@@ -440,9 +537,6 @@ msgstr ""
 msgid "Open catalog template"
 msgstr "காடலாக் வார்ப்பினைத் திறக்க"
 
-msgid "POT Translation Templates"
-msgstr ""
-
 msgid "Updating catalog"
 msgstr ""
 
@@ -511,16 +605,18 @@ msgstr[1] ""
 msgid "The translation is ready for use."
 msgstr ""
 
-msgid "No references to this string found."
-msgstr "இச்சரத்திற்கு சுட்டிகள் எதுவும் கிடைக்கவில்லை."
-
-msgid "Please choose the reference you want to show:"
-msgstr "காட்ட விரும்பும் சுட்டியினை தேர்வு செய்க:"
+msgid "Context:"
+msgstr ""
 
-msgid "References"
-msgstr "சுட்டிகள்"
+#, c-format
+msgid "Poedit automatically fixed invalid content in the file “%s”."
+msgstr ""
 
-msgid "Context:"
+msgid ""
+"The file contained duplicate items, which is not allowed in PO files and "
+"would prevent the file from being used. Poedit fixed the issue, but you "
+"should review translations of any items marked as fuzzy and correct them if "
+"necessary."
 msgstr ""
 
 msgid "Language of the translation isn't set."
@@ -532,6 +628,21 @@ msgstr ""
 msgid "Set language"
 msgstr ""
 
+#. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)."
+msgid ""
+"Suggestions are not available if the translation language is not set "
+"correctly. Other features, such as plural forms, may be affected as well."
+msgstr ""
+
+msgid "Language of the translation is the same as source language."
+msgstr ""
+
+msgid "Fix Language"
+msgstr ""
+
+msgid "Fix language"
+msgstr ""
+
 msgid ""
 "This catalog has entries with plural forms, but doesn't have Plural-Forms "
 "header configured."
@@ -562,6 +673,7 @@ msgstr ""
 msgid "Plural forms expression used by the catalog is unusual for %s."
 msgstr ""
 
+#. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the catalog is unusual for %s.")"
 msgid "Review"
 msgstr ""
 
@@ -583,6 +695,12 @@ msgid_plural "%d errors"
 msgstr[0] ""
 msgstr[1] ""
 
+#, c-format
+msgid "%d entry"
+msgid_plural "%d entries"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid " (unsaved)"
 msgstr ""
 
@@ -696,6 +814,9 @@ msgstr ""
 msgid "Form %i"
 msgstr "படிவம் %i"
 
+msgid "Singular"
+msgstr ""
+
 msgid "Zero"
 msgstr ""
 
@@ -705,6 +826,9 @@ msgstr ""
 msgid "Two"
 msgstr ""
 
+msgid "Plural"
+msgstr ""
+
 msgid "Other"
 msgstr ""
 
@@ -733,6 +857,12 @@ msgstr ""
 msgid "Show Sidebar"
 msgstr ""
 
+msgid "Hide Status Bar"
+msgstr ""
+
+msgid "Show Status Bar"
+msgstr ""
+
 msgid "Source text"
 msgstr ""
 
@@ -742,6 +872,10 @@ msgstr "மொழிபெயர்ப்பு"
 msgid "ID"
 msgstr ""
 
+#, c-format
+msgid "Source text — %s"
+msgstr ""
+
 msgid "unknown language"
 msgstr ""
 
@@ -752,57 +886,73 @@ msgstr ""
 msgid "Error:"
 msgstr ""
 
-msgid "Project info"
-msgstr "திட்ட விவரம்"
+msgid "Source file"
+msgstr "மூலக் கோப்பு"
 
-msgid "Project name and version:"
-msgstr "திட்டத்தின் பெயர் மற்றும் வெளியீட்டு எண்:"
+msgid "Source file occurrence:"
+msgstr ""
 
-msgid "Language:"
-msgstr "மொழி:"
+msgid "Open in Editor"
+msgstr ""
 
-msgid "Team:"
-msgstr "குழுமம்:"
+msgid "Open in editor"
+msgstr ""
 
-msgid "Team's email address:"
-msgstr "குழுமத்தின் மின்னஞ்சல் முகவரி:"
+msgid "No references for the selected item."
+msgstr ""
 
-msgid "Charset:"
-msgstr "எழுத்து வகை:"
+#, c-format
+msgid "Error opening file %s!"
+msgstr "%s கோப்பினைத் திறப்பதில் சிக்கல்!"
 
-msgid "Source"
+msgid "Find"
 msgstr ""
 
-msgid "Notes"
-msgstr "துப்புகள்"
+msgid "Replace"
+msgstr ""
 
-msgid "Automatic translation"
-msgstr "சுயமான மொழிபெயர்ப்பு"
+#. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.)
+msgid "Options"
+msgstr ""
 
-msgid "Fuzzy translation"
-msgstr "அரைகுறை  மொழிபெயர்ப்பு"
+msgid "Ignore case"
+msgstr ""
 
-msgid "Notes for translators:"
+msgid "Wrap around"
 msgstr ""
 
-msgid "Comment:"
-msgstr "குறிப்புகள்:"
+msgid "Whole words only"
+msgstr "முழுமையானச் சொற்கள் மாத்திரம்"
 
-msgid "Source file"
-msgstr "மூலக் கோப்பு"
+msgid "Find in source texts"
+msgstr ""
 
-msgid "Source file occurrence:"
+msgid "Find in translations"
+msgstr "மொழிபெயர்ப்புகளில் தேடுக"
+
+msgid "Find in comments"
+msgstr "குறிப்புகளில் தேடுக"
+
+msgid "Close"
 msgstr ""
 
-msgid "Open in Editor"
+msgid "Replace All"
 msgstr ""
 
-msgid "Open in editor"
+msgid "Replace all"
 msgstr ""
 
-#, c-format
-msgid "Error opening file %s!"
-msgstr "%s கோப்பினைத் திறப்பதில் சிக்கல்!"
+msgid "< &Previous"
+msgstr ""
+
+msgid "&Next >"
+msgstr ""
+
+msgid "String to find"
+msgstr ""
+
+msgid "Replacement string"
+msgstr ""
 
 #, c-format
 msgid "Cannot execute program: %s"
@@ -994,9 +1144,19 @@ msgstr "புதியவை "
 msgid "Edit"
 msgstr "தொகுக்க"
 
+msgid "Delete extractor"
+msgstr ""
+
+#, c-format
+msgid "Are you sure you want to delete the “%s” extractor?"
+msgstr ""
+
 msgid "Extractors"
 msgstr ""
 
+msgid "Accounts"
+msgstr ""
+
 msgid "Automatically check for updates"
 msgstr ""
 
@@ -1035,7 +1195,34 @@ msgstr ""
 msgid "Advanced"
 msgstr ""
 
-msgid "Additional keywords"
+msgid ""
+"<big>Drag and Drop Folders Here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+
+msgid ""
+"<big>Drag and drop folders here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+
+msgid "Add Folders..."
+msgstr ""
+
+msgid "Add folders..."
+msgstr ""
+
+msgid "Add Files..."
+msgstr ""
+
+msgid "Add files..."
+msgstr ""
+
+msgid "Add Wildcard..."
+msgstr ""
+
+msgid "Add wildcard..."
 msgstr ""
 
 msgid "Paths"
@@ -1044,6 +1231,9 @@ msgstr "பாதைகள்"
 msgid "Excluded paths"
 msgstr ""
 
+msgid "Additional keywords"
+msgstr ""
+
 msgid "Name of the project the translation is for"
 msgstr ""
 
@@ -1056,6 +1246,9 @@ msgstr ""
 msgid "Please save the file first. This section cannot be edited until then."
 msgstr ""
 
+msgid "Comment:"
+msgstr "குறிப்புகள்:"
+
 msgid "OK"
 msgstr "ஆம்"
 
@@ -1065,42 +1258,6 @@ msgstr ""
 msgid "Clear the comment"
 msgstr "குறிப்பினைத் துடைக்க"
 
-msgid "Find..."
-msgstr "தேடுக..."
-
-msgid "String to find:"
-msgstr "தேடப் பட வேண்டிய சரம்: "
-
-msgid "Case sensitive"
-msgstr "எழுத்தின் தன்மைச் சார்ந்தது"
-
-msgid "Start from the first item"
-msgstr "முதற் பொருளிலிருந்து துவக்குக"
-
-msgid "Whole words only"
-msgstr "முழுமையானச் சொற்கள் மாத்திரம்"
-
-msgid "Find in original strings"
-msgstr "மூலச் சரங்களில் தேடுக..."
-
-msgid "Find in translations"
-msgstr "மொழிபெயர்ப்புகளில் தேடுக"
-
-msgid "Find in comments"
-msgstr "குறிப்புகளில் தேடுக"
-
-msgid "Find in automatic comments"
-msgstr "சுய குறிப்புகளில் தேடுக"
-
-msgid "Close"
-msgstr ""
-
-msgid "< &Previous"
-msgstr ""
-
-msgid "&Next >"
-msgstr ""
-
 msgid "Create new translations project"
 msgstr "புதிய மொழிபெயர்ப்புத் திட்டங்களை  உருவாக்குக"
 
@@ -1155,6 +1312,12 @@ msgstr "&திறக்க..."
 msgid "Open Recent"
 msgstr ""
 
+msgid "Open from Crowdin..."
+msgstr ""
+
+msgid "Open From Crowdin..."
+msgstr ""
+
 msgid "&Save"
 msgstr "&காக்க"
 
@@ -1203,13 +1366,16 @@ msgstr ""
 msgid "&Find..."
 msgstr "தேடுக..."
 
+msgid "Replace..."
+msgstr ""
+
 msgid "Find next"
 msgstr ""
 
 msgid "Find previous"
 msgstr ""
 
-msgid "Find"
+msgid "Find and Replace..."
 msgstr ""
 
 msgid "Find Next"
@@ -1251,6 +1417,12 @@ msgstr ""
 msgid "&Group By Context"
 msgstr ""
 
+msgid "Entries with errors first"
+msgstr ""
+
+msgid "Entries with Errors First"
+msgstr ""
+
 msgid "&Untranslated entries first"
 msgstr ""
 
@@ -1260,6 +1432,9 @@ msgstr ""
 msgid "Show sidebar"
 msgstr ""
 
+msgid "Show status bar"
+msgstr ""
+
 msgid "C&atalog"
 msgstr "&காடலாக்"
 
@@ -1275,6 +1450,9 @@ msgstr "&POT கோப்பிலிருந்து புதுப்பி
 msgid "Update from &POT File..."
 msgstr ""
 
+msgid "Sync with Crowdin"
+msgstr ""
+
 msgid "Fill missing translations from &TM..."
 msgstr ""
 
@@ -1401,6 +1579,9 @@ msgstr ""
 msgid "Catalog properties"
 msgstr ""
 
+msgid "Project name and version:"
+msgstr "திட்டத்தின் பெயர் மற்றும் வெளியீட்டு எண்:"
+
 msgid "Plural Forms:"
 msgstr "பன்மை  வடிவங்கள்:"
 
@@ -1413,16 +1594,28 @@ msgstr ""
 msgid "Learn about plural forms"
 msgstr ""
 
+msgid "Charset:"
+msgstr "எழுத்து வகை:"
+
+msgid "Team:"
+msgstr "குழுமம்:"
+
+msgid "Team's email address:"
+msgstr "குழுமத்தின் மின்னஞ்சல் முகவரி:"
+
 msgid "Translation properties"
 msgstr ""
 
+msgid "Sources paths"
+msgstr ""
+
 msgid "Extract text from source files in the following directories:"
 msgstr ""
 
 msgid "Base path:"
 msgstr "பிரதானப் பாதை:"
 
-msgid "Sources paths"
+msgid "Sources keywords"
 msgstr ""
 
 msgid ""
@@ -1433,9 +1626,6 @@ msgstr ""
 msgid "Learn about gettext keywords"
 msgstr ""
 
-msgid "Sources keywords"
-msgstr ""
-
 msgid "Update summary"
 msgstr "தொகுப்புரையினை புதுப்பிக்கவும்"
 
@@ -1483,7 +1673,7 @@ msgstr "காடலாகினைப் புதுப்பிக்க - 
 msgid "Toggled if selected string has fuzzy translation"
 msgstr "அரைகுறை  மொழிபெயர்ப்பு இருக்குமாயின் மாற்றப்படும்"
 
-msgid "Show or hide the sidebar."
+msgid "Show or hide the sidebar"
 msgstr ""
 
 #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer.
@@ -1495,6 +1685,9 @@ msgid ""
 "translation corresponds to."
 msgstr ""
 
+msgid "Notes for translators:"
+msgstr ""
+
 msgid "Add comment"
 msgstr ""
 
@@ -1567,14 +1760,21 @@ msgstr ""
 msgid "Open an existing PO file and edit the translation."
 msgstr ""
 
-msgid "Create new translation"
-msgstr ""
-
 msgid ""
 "Take an existing PO file or POT template and create a new translation from "
 "it."
 msgstr ""
 
+msgid "Collaborate on a translation with Crowdin"
+msgstr ""
+
+msgid ""
+"Download a file from Crowdin project, translate and sync your changes back."
+msgstr ""
+
+msgid "What is Crowdin?"
+msgstr ""
+
 msgid "There are no translations. That’s unusual."
 msgstr ""
 
@@ -1607,3 +1807,9 @@ msgstr ""
 
 msgid "Configure source code extraction in Properties."
 msgstr ""
+
+msgid "Sync"
+msgstr ""
+
+msgid "Synchronize the translation with Crowdin"
+msgstr ""
diff --git a/locales/tg.mo b/locales/tg.mo
index b09741b..92a336a 100644
Binary files a/locales/tg.mo and b/locales/tg.mo differ
diff --git a/locales/tg.po b/locales/tg.po
index ac625ff..ade6e4e 100644
--- a/locales/tg.po
+++ b/locales/tg.po
@@ -2,8 +2,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: poedit\n"
 "Report-Msgid-Bugs-To: help at poedit.net\n"
-"POT-Creation-Date: 2015-01-10 16:00+0100\n"
-"PO-Revision-Date: 2015-03-10 12:34-0400\n"
+"POT-Creation-Date: 2015-05-27 11:31+0200\n"
+"PO-Revision-Date: 2015-05-27 05:18-0400\n"
 "Last-Translator: vslavik <vaclav at slavik.io>\n"
 "Language-Team: Tajik\n"
 "Language: tg_TJ\n"
@@ -37,7 +37,7 @@ msgstr "Хати %d дар файли '%s' вайрон аст (санаи %s б
 
 #, c-format
 msgid "Malformed header: '%s'"
-msgstr "Сарлавҳаи хатогӣ: '%s'"
+msgstr "Сарлавҳаи хато: '%s'"
 
 msgid ""
 "Broken catalog file: singular form msgstr used together with msgid_plural"
@@ -54,7 +54,7 @@ msgid ""
 "There were errors when loading the catalog. Some data may be missing or "
 "corrupted as the result."
 msgstr ""
-"Ҳангоми боркунии каталог хатогӣ пайдо шуд. Эҳтимол баъзе маълумотҳо гум "
+"Ҳангоми боркунии каталог хато пайдо шуд. Эҳтимол баъзе маълумотҳо гум "
 "шудаанд ё ҳамчун натиҷа вайрон шудаанд."
 
 #, c-format
@@ -95,6 +95,15 @@ msgstr ""
 msgid "Error saving catalog"
 msgstr "Захиракунии файл қатъ карда шуд"
 
+msgid "PO Translation Files"
+msgstr "Файлҳои тарҷумавии PO"
+
+msgid "POT Translation Templates"
+msgstr "Қолибҳои тарҷумавии POT"
+
+msgid "All Translation Files"
+msgstr "Ҳамаи файлҳои тарҷума"
+
 msgid "Merging differences..."
 msgstr "Муттаҳидшавии фарқиятҳо..."
 
@@ -112,13 +121,97 @@ msgid "Language selection"
 msgstr "Интихоби забон"
 
 msgid "You must restart Poedit for this change to take effect."
-msgstr "Барои татбиқ кардани тағйирот Шумо бояд барномаро аз нав оғоз кунед."
+msgstr "Барои татбиқ кардани тағйирот, шумо бояд барномаро аз нав оғоз кунед."
 
-msgid "&Copy"
+msgid "Downloading translations is disabled in this project."
+msgstr "Боргирии тарҷумаҳо барои ин лоиҳа ғайрифаъол шуд."
+
+msgid "Not authorized, please sign in again."
+msgstr "Ворид нашуд, лутфан аз нав ворид шавед."
+
+msgid "Sign in to Crowdin"
+msgstr "Ворид шудан ба Crowdin"
+
+msgid ""
+"Crowdin is an online localization management platform and collaborative "
+"translation tool. Poedit can seamlessly sync PO files managed at Crowdin."
 msgstr ""
+"Crowdin абзори тарҷумаҳои онлайни муштрак ва платформаи идоракунии "
+"маҳаллисозӣ мебошад. Poedit метавонад файлҳои PO-и идорашавандаро бо Crowdin "
+"ҳамвор ҳамоҳанг кунад."
+
+msgid "Sign In"
+msgstr "Ворид шудан"
+
+msgid "Sign in"
+msgstr "Ворид шудан"
+
+msgid "Sign Out"
+msgstr "Баромадан"
+
+msgid "Sign out"
+msgstr "Баромадан"
+
+msgid "Waiting for authentication…"
+msgstr "Дар ҳоли интизори санҷиши ҳаққоният…"
+
+msgid "Updating user information…"
+msgstr "Дар ҳоли навсозии маълумоти корбар…"
+
+msgid "Signed in as:"
+msgstr "Ворид шуд ҳамчун:"
+
+msgid "Learn More About Crowdin"
+msgstr "Маълумоти бештар дар бораи Crowdin"
+
+msgid "Learn more about Crowdin"
+msgstr "Маълумоти бештар дар бораи Crowdin"
+
+msgid "Open Crowdin translation"
+msgstr "Кушодани тарҷума дар Crowdin"
+
+msgid "Project:"
+msgstr "Лоиҳа:"
+
+msgid "Language:"
+msgstr "Забон:"
+
+msgid "File:"
+msgstr "Файл:"
+
+msgid "No translation projects listed in your Crowdin account."
+msgstr ""
+"Дар ҳисоби Crowdin-и шумо ягон лоиҳаи тарҷума дар рӯйхат вуҷуд надорад."
+
+msgid "This project has no files that can be translated in Poedit."
+msgstr ""
+"Ин лоиҳа ягон файле, ки матавонад дар Poedit тарҷума карда шавад, вуҷуд "
+"надорад."
+
+msgid "This file can only be edited in Crowdin’s web interface."
+msgstr ""
+"Ин файл метавонад танҳо дар интерфейси веби Crowdin таҳрир карда шавад."
+
+msgid "Downloading latest translations…"
+msgstr "Дар ҳоли боргирии тарҷумаҳои навтарин…"
+
+msgid "Syncing with Crowdin"
+msgstr "Ҳамоҳангсозӣ бо Crowdin"
+
+msgid "Syncing with Crowdin failed."
+msgstr "Ҳамоҳангсозӣ бо Crowdin иҷро нашуд."
+
+msgid "Crowdin error"
+msgstr "Хатои Crowdin"
+
+msgid "Uploading translations…"
+msgstr "Дар ҳоли боркунии тарҷумаҳо…"
+
+msgid "&Copy"
+msgstr "&Нусха бардоштан"
 
 msgid "Learn more"
-msgstr "Маълумоти муфассал"
+msgstr "Маълумоти бештар"
 
 msgid "Learn More"
 msgstr "Маълумоти бештар"
@@ -142,38 +235,40 @@ msgid "Failed to load extracted catalog."
 msgstr "Боркунии файлҳои баровардашуда баргузор нагашт."
 
 msgid "&Help"
-msgstr "&Кӯмак"
+msgstr "&Кумак"
 
 msgid "MO files can’t be directly edited in Poedit."
-msgstr ""
+msgstr "Файлҳои MO метавонанд дар Poedit бевосита таҳрир карда шаванд."
 
 msgid "Error opening file"
-msgstr ""
+msgstr "Хатои кушодани файл"
 
 msgid ""
 "Please open and edit the corresponding PO file instead. When you save it, "
 "the MO file will be updated as well."
 msgstr ""
+"Лутфан, ба ҷояш ягон файли PO-и мувофиқро кушоед ва таҳрир кунед. Вақте ки "
+"шумо онро захира мекунед, файли MO низ навсозӣ карда мешавад."
 
 msgid "don't delete temporary files (for debugging)"
 msgstr "файлҳои муваққатиро (барои ислоҳкунии хатоҳо) нест накунед"
 
+msgid "handle a poedit:// URI"
+msgstr "коркарди poedit:// URI"
+
+msgid "Failed to communicate with Poedit process."
+msgstr "Алоқа бо раванди Poedit қатъ шуд."
+
 #, c-format
 msgid "Unhandled exception occurred: %s"
-msgstr ""
+msgstr "Истиснои иҷронашуда ба амал омад: %s"
 
 msgid "Unhandled exception occurred."
-msgstr ""
+msgstr "Истиснои иҷронашуда ба амал омад."
 
 msgid "Open catalog"
 msgstr "Кушодани файл"
 
-msgid "All Files"
-msgstr ""
-
-msgid "PO Translation Files"
-msgstr ""
-
 #, c-format
 msgid "File '%s' doesn't exist."
 msgstr "Файли '%s' мавҷуд нест."
@@ -203,7 +298,7 @@ msgid "&Edit"
 msgstr "&Таҳрир"
 
 msgid "Undo"
-msgstr "Инкоркунӣ"
+msgstr "Ботил сохтан"
 
 msgid "Redo"
 msgstr "Дубора анҷом додан"
@@ -266,34 +361,34 @@ msgid "Capitalize"
 msgstr "Ҳарфҳои калон"
 
 msgid "Speech"
-msgstr "Талаффуз"
+msgstr "Нутқ"
 
 msgid "Start Speaking"
-msgstr "Оғози талаффуз"
+msgstr "Оғоз кардани нутқ"
 
 msgid "Stop Speaking"
-msgstr "Манъи талаффуз"
+msgstr "Манъ кардани нутқ"
 
 msgid "&View"
 msgstr "&Намоиш"
 
 msgid "Enter Full Screen"
-msgstr ""
+msgstr "Кушодан дар экрани пурра"
 
 msgid "Window"
-msgstr ""
+msgstr "Равзана"
 
 msgid "Minimize"
-msgstr ""
+msgstr "Ҳадди ақал сохтан"
 
 msgid "Zoom"
-msgstr ""
+msgstr "Интихоби андоза"
 
 msgid "Bring All to Front"
-msgstr ""
+msgstr "Ҳамаро ба пеш гузоред"
 
 msgid "PO Translation"
-msgstr ""
+msgstr "Тарҷумаи PO"
 
 msgid "The file cannot be opened."
 msgstr "Файл кушода намешавад."
@@ -308,72 +403,72 @@ msgstr ""
 "дастгирӣ намешавад."
 
 msgid "&Undo"
-msgstr ""
+msgstr "&Ботил сохтан"
 
 msgid "&Redo"
-msgstr ""
+msgstr "&Дубора анҷом додан"
 
 msgid "Cu&t"
-msgstr ""
+msgstr "&Буридан"
 
 msgid "Cut"
-msgstr ""
+msgstr "Буридан"
 
 msgid "Copy"
-msgstr ""
+msgstr "Нусха бардоштан"
 
 msgid "&Paste"
-msgstr ""
+msgstr "&Гузоштан"
 
 msgid "Paste"
-msgstr ""
+msgstr "Гузоштан"
 
 msgid "&Delete"
-msgstr ""
+msgstr "&Нест кардан"
 
 msgid "Select &All"
-msgstr ""
+msgstr "&Ҳамаро интихоб кардан"
 
 msgid "Select All"
-msgstr ""
+msgstr "Ҳамаро интихоб кардан"
 
 #. TRANSLATORS: Keyboard shortcut for display in Windows menus
 #. TRANSLATORS: This is the key shortcut used in menus on Windows, some languages call them differently
 msgid "Ctrl+"
-msgstr ""
+msgstr "Ctrl+"
 
 #. TRANSLATORS: Keyboard shortcut for display in Windows menus
 #. TRANSLATORS: This is the key shortcut used in menus on Windows, some languages call them differently
 msgid "Alt+"
-msgstr ""
+msgstr "Alt+"
 
 #. TRANSLATORS: Keyboard shortcut for display in Windows menus
 msgid "Shift+"
-msgstr ""
+msgstr "Shift+"
 
 #. TRANSLATORS: Keyboard shortcut for display in Windows menus
 msgid "Enter"
-msgstr ""
+msgstr "Enter"
 
 #. TRANSLATORS: Keyboard shortcut for display in Windows menus
 msgid "Up"
-msgstr ""
+msgstr "Боло"
 
 #. TRANSLATORS: Keyboard shortcut for display in Windows menus
 msgid "Down"
-msgstr ""
+msgstr "Поён"
 
 #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+"
 msgid "ctrl"
-msgstr ""
+msgstr "ctrl"
 
 #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+"
 msgid "alt"
-msgstr ""
+msgstr "alt"
 
 #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+"
 msgid "shift"
-msgstr ""
+msgstr "shift"
 
 msgid "You can't drop more than one file on Poedit window."
 msgstr "Шумо наметавонед зиёда аз як файл дар барномаи Poedit кушоед."
@@ -403,16 +498,30 @@ msgstr "Шакли ҷамъ:"
 msgid "Translation:"
 msgstr "Тарҷума:"
 
+msgid ""
+"POT files are only templates and don’t contain any translations themselves.\n"
+"To make a translation, create a new PO file based on the template."
+msgstr ""
+"Файлҳои POT танҳо ҳамчун қолибҳо истифода мешаванд ва худаш тарҷумаҳоро дар "
+"бар намегиранд.\n"
+"Барои тарҷума кардан, файли PO-и наверо дар асоси қолиб эҷод кунед."
+
+msgid "Create New Translation"
+msgstr "Эҷоди тарҷумаи нав"
+
+msgid "Create new translation"
+msgstr "Аз нав тарҷума кардан"
+
 #. TRANSLATORS: %s is language name in its basic form (as you
 #. would see e.g. in a list of supported languages). You may need
 #. to rephrase it, e.g. to an equivalent of "for language %s".
 #, c-format
 msgid ""
 "Spellchecking is disabled, because the dictionary for %s isn’t installed."
-msgstr ""
+msgstr "Тафтиши имло ғайрифаъол аст, зеро ки луғат барои %s насб нашудааст."
 
 msgid "Install"
-msgstr ""
+msgstr "Насб кардан"
 
 msgid "Catalog modified. Do you want to save changes?"
 msgstr "Файли тарҷума тағйир ёфт. Оё шумо мехоҳед, ки тағйиротро захира кунед?"
@@ -436,36 +545,35 @@ msgid "Save as..."
 msgstr "Захира кардан ҳамчун..."
 
 msgid "Compile to..."
-msgstr ""
+msgstr "Табдил додан ба..."
 
 msgid "Compiled Translation Files"
-msgstr ""
+msgstr "Файлҳои тарҷумавии таҳияшуда"
 
 msgid "Export as..."
 msgstr "Барориш ҳамчун..."
 
 msgid "HTML Files"
-msgstr ""
+msgstr "Файлҳои HTML"
 
 msgid "Open catalog template"
 msgstr "Кушодани қолиби файл"
 
-msgid "POT Translation Templates"
-msgstr ""
-
 msgid "Updating catalog"
 msgstr "Навсозии каталог"
 
 msgid "Source code not available."
-msgstr ""
+msgstr "Рамзи барнома дастнорас аст."
 
 msgid "Updating failed"
-msgstr ""
+msgstr "Навсозӣ иҷро нашуд"
 
 msgid ""
 "Translations couldn’t be updated from the source code, because no code was "
 "found in the location specified in the catalog’s Properties."
 msgstr ""
+"Тарҷумаҳо аз рамзи манбаъ навсозӣ карда намешаванд, зеро ки ягон рамз дар "
+"макони муайяншуда дар хусусиятҳои файл ёфт нашуд."
 
 msgid "Entries in the catalog are probably incorrect."
 msgstr "Вурудҳои файл эҳтимол нодуруст ҳастанд."
@@ -488,8 +596,8 @@ msgid ""
 "Entries with errors were marked in red in the list. Details of the error "
 "will be shown when you select such an entry."
 msgstr ""
-"Тарҷумаҳои хатогӣ бо ранги сурх дар рӯйхат қайд карда шудаанд. Тафсилоти "
-"хатоҳо бо интихоби сатри тарҷумаи хатогӣ намоиш дода мешаванд."
+"Тарҷумаҳои хато бо ранги сурх дар рӯйхат қайд карда шудаанд. Тафсилоти "
+"хатоҳо бо интихоби сатри тарҷумаи хато намоиш дода мешаванд."
 
 msgid "The file was saved safely."
 msgstr "Файл бо муваффақият захира шудааст."
@@ -512,12 +620,13 @@ msgid ""
 "The file was compiled into the MO format, but it will probably not work "
 "correctly."
 msgstr ""
+"Ин файл ба формати MO табдил шудааст, вале метавонад дуруст кор накунад."
 
 msgid "The file cannot be compiled into the MO format and used."
-msgstr ""
+msgstr "Файл ба формати MO табдил дода намешавад ва истифода намешавад."
 
 msgid "No problems with the translation found."
-msgstr "Ягон хатогӣ дар тарҷума ёфт нашудааст."
+msgstr "Ягон хато дар тарҷума ёфт нашудааст."
 
 #, c-format
 msgid "The translation is ready for use, but %d entry is not translated yet."
@@ -531,39 +640,62 @@ msgstr[1] ""
 msgid "The translation is ready for use."
 msgstr "Тарҷума барои истифода тайёр аст."
 
-msgid "No references to this string found."
-msgstr "Ягон истинод барои сатри ҷорӣ ёфт нашуд."
-
-msgid "Please choose the reference you want to show:"
-msgstr "Маълумоте, ки мехоҳед намоиш диҳед интихоб кунед:"
-
-msgid "References"
-msgstr "Ҳаволаҳо"
-
 msgid "Context:"
 msgstr "Контекст:"
 
+#, c-format
+msgid "Poedit automatically fixed invalid content in the file “%s”."
+msgstr "Poedit муҳтавои беэътиборро дар файли “%s” ислоҳ кард."
+
+msgid ""
+"The file contained duplicate items, which is not allowed in PO files and "
+"would prevent the file from being used. Poedit fixed the issue, but you "
+"should review translations of any items marked as fuzzy and correct them if "
+"necessary."
+msgstr ""
+"Файл объектҳои такрориеро дар бар гирифт, ки дар файлҳои PO нораво мебошанд "
+"ва файлро аз истифода қатъ мекунад. Poedit мушкилиро ҳал кард, вале шумо "
+"бояд тарҷумаҳоро бо ишораҳои душворфаҳм аз назар гузаронед ва агар лозим "
+"бошад, онҳоро ислоҳ кунед."
+
 msgid "Language of the translation isn't set."
 msgstr "Забони тарҷума интихоб нашудааст."
 
 msgid "Set Language"
-msgstr ""
+msgstr "Танзими забон"
 
 msgid "Set language"
 msgstr "Интихоби забон"
 
+#. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)."
+msgid ""
+"Suggestions are not available if the translation language is not set "
+"correctly. Other features, such as plural forms, may be affected as well."
+msgstr ""
+"Агар забони тарҷумаҳо нодуруст танзим карда бошад, пешниҳодҳо дастнорас "
+"мешаванд. Хусусиятҳои дигар, монанди шакли ҷамъ, метавонанд таъсир расонанд."
+
+msgid "Language of the translation is the same as source language."
+msgstr "Забони тарҷума ва забони манбаъ баробаранд."
+
+msgid "Fix Language"
+msgstr "Ислоҳ кадани забон"
+
+msgid "Fix language"
+msgstr "Ислоҳ кадани забон"
+
 msgid ""
 "This catalog has entries with plural forms, but doesn't have Plural-Forms "
 "header configured."
 msgstr ""
-"Файли зерин воридотҳоро дар шакли ҷамъ дорад, аммо Сарлавҳаи шакли ҷамъ "
-"сохта надорад."
+"Файли зерин барои шакли ҷамъ танзим карда шудааст, аммо шакли ҷамъ дар "
+"сарлавҳа танзим карда нашудааст."
 
 msgid ""
 "Entries in this catalog have different plural forms count from what "
 "catalog's Plural-Forms header says"
 msgstr ""
-"Вурудҳои файли тарҷумаи зерин шаклҳои ҷамъи гуногунро дар бар мегирад ва "
+"Вурудҳои файли тарҷумаи зерин шаклҳои ҷамъи гуногунро дар бар мегиранд ва "
 "сарлавҳаи шаклҳои ҷамъ маълумоти мазкур намоиш медиҳад:"
 
 msgid "Required header Plural-Forms is missing."
@@ -571,10 +703,10 @@ msgstr "Сарлавҳаи шакли ҷамъ лозим аст."
 
 #, c-format
 msgid "Syntax error in Plural-Forms header (\"%s\")."
-msgstr "Хатогии синтаксисӣ дар шакли ҷамъи сарлавҳа (\"%s\")."
+msgstr "Хатои синтаксисӣ дар шакли ҷамъи сарлавҳа (\"%s\")."
 
 msgid "Fix the Header"
-msgstr ""
+msgstr "Сарварақро ислоҳ кунед"
 
 msgid "Fix the header"
 msgstr "Сарварақро ислоҳ кунед"
@@ -586,26 +718,33 @@ msgstr "Сарварақро ислоҳ кунед"
 msgid "Plural forms expression used by the catalog is unusual for %s."
 msgstr "Шакли ҷамъ барои ибораи истифодашуда бо файл барои %s ғайриоддӣ аст."
 
+#. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the catalog is unusual for %s.")"
 msgid "Review"
 msgstr "Тафтиш"
 
 #, c-format
 msgid "Error loading message catalog file '%s'."
-msgstr "Ҳангоми боркунии сатрҳои файли '%s' хатогӣ пайдо шуд."
+msgstr "Ҳангоми боркунии сатрҳои файли '%s' хато пайдо шуд."
 
 #, c-format
 msgid "Translated: %d of %d (%d %%)"
-msgstr ""
+msgstr "%d аз %d (%d %%) тарҷума шуд"
 
 #, c-format
 msgid "Remaining: %d"
-msgstr ""
+msgstr "Дар ҳоли ивази номи: %d"
 
 #, c-format
 msgid "%d error"
 msgid_plural "%d errors"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "%d хато"
+msgstr[1] "%d хато"
+
+#, c-format
+msgid "%d entry"
+msgid_plural "%d entries"
+msgstr[0] "%d вуруд"
+msgstr[1] "%d вуруд"
 
 msgid " (unsaved)"
 msgstr " (захиранашуда)"
@@ -614,7 +753,7 @@ msgid " (modified)"
 msgstr " (тағйирёфта)"
 
 msgid "Go"
-msgstr ""
+msgstr "Гузариш"
 
 #, c-format
 msgid "Failed to update translation memory: %s"
@@ -644,26 +783,32 @@ msgid "Purge"
 msgstr "Поксозӣ"
 
 msgid "Fill missing translations from TM"
-msgstr ""
+msgstr "Ворид кардани тарҷумаҳои намерасидагӣ аз TM"
 
 msgid "Only fill in exact matches"
-msgstr ""
+msgstr "Ворид кардани танҳо мутобиқати аниқ"
 
 msgid ""
 "By default, inaccurate results are filled in as well and marked as fuzzy. "
 "Check this option to only include accurate matches."
 msgstr ""
+"Ба сурати пешфарз, натиҷаҳои нодуруст ворид карда мешаванд ва ҳамчун "
+"душворфаҳм ишора мешаванд. Барои ворид кардани танҳо мутобиқати дуруст, ин "
+"имконро интихоб кунед."
 
 msgid "Don’t mark exact matches as fuzzy"
-msgstr ""
+msgstr "Қайд накардани мутобиқати аниқ ҳамчун душворфаҳм"
 
 msgid ""
 "Only enable if you trust the quality of your TM. By default, all matches "
 "from the TM are marked as fuzzy and should be reviewed."
 msgstr ""
+"Фаъол кунед, танҳо агар ба ТМ-и худ эътимод дошта бошед. Ба сутари пешфарз, "
+"ҳамаи мутобиқатҳо аз ТМ ҳамчун душворфаҳм ишора мешаванд ва бояд аз назар "
+"гузаронида шаванд."
 
 msgid "Fill"
-msgstr ""
+msgstr "Ворид кардан"
 
 #, c-format
 msgid "%d entry was filled from the translation memory."
@@ -699,8 +844,8 @@ msgstr "Воридкунии тарҷумаҳои намерасидагӣ аз
 #, c-format
 msgid "Translated %u string"
 msgid_plural "Translated %u strings"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "%u сатр тарҷума шуд"
+msgstr[1] "%u сатр тарҷума шуд"
 
 msgid "Copy from source text"
 msgstr "Нусха бардоштан аз матни сатри аслӣ"
@@ -721,7 +866,7 @@ msgid "Edit Comment"
 msgstr "Таҳрир кардани шарҳ"
 
 msgid "References:"
-msgstr "Ҳаволаҳо:"
+msgstr "Маълумотнома:"
 
 msgid "Everything"
 msgstr "Ҳама"
@@ -730,6 +875,9 @@ msgstr "Ҳама"
 msgid "Form %i"
 msgstr "Шакли %i"
 
+msgid "Singular"
+msgstr "Шумораи танҳо"
+
 msgid "Zero"
 msgstr "Сифр"
 
@@ -739,6 +887,9 @@ msgstr "Як"
 msgid "Two"
 msgstr "Ду"
 
+msgid "Plural"
+msgstr "Шумораи ҷамъ"
+
 msgid "Other"
 msgstr "Дигар"
 
@@ -747,25 +898,31 @@ msgstr "&Хатбаракҳо"
 
 #, c-format
 msgid "Set bookmark %i"
-msgstr ""
+msgstr "Танзими хатбараки %i"
 
 #, c-format
 msgid "Go to bookmark %i"
-msgstr ""
+msgstr "Гузариш ба хатбараки %i"
 
 #, c-format
 msgid "Set Bookmark %i"
-msgstr ""
+msgstr "Танзими хатбараки %i"
 
 #, c-format
 msgid "Go to Bookmark %i"
-msgstr ""
+msgstr "Гузариш ба хатбараки %i"
 
 msgid "Hide Sidebar"
-msgstr ""
+msgstr "Пинҳон кардани навори ҷонибӣ"
 
 msgid "Show Sidebar"
-msgstr ""
+msgstr "Намоиш додани навори ҷонибӣ"
+
+msgid "Hide Status Bar"
+msgstr "Пинҳон кардани навори вазъият"
+
+msgid "Show Status Bar"
+msgstr "Намоиш додани навори вазъият"
 
 msgid "Source text"
 msgstr "Матни сатри аслӣ"
@@ -776,6 +933,10 @@ msgstr "Тарҷума"
 msgid "ID"
 msgstr "Рақам"
 
+#, c-format
+msgid "Source text — %s"
+msgstr "Матни манбаъ — %s"
+
 msgid "unknown language"
 msgstr "забони номаълум"
 
@@ -786,57 +947,73 @@ msgstr "Тарҷума — %s"
 msgid "Error:"
 msgstr "Хато:"
 
-msgid "Project info"
-msgstr "Маълумоти лоиҳа"
+msgid "Source file"
+msgstr "Файли аслӣ"
 
-msgid "Project name and version:"
-msgstr "Номи лоиҳа ва версия:"
+msgid "Source file occurrence:"
+msgstr "Рӯйдодҳои файли аслӣ:"
 
-msgid "Language:"
-msgstr "Забон:"
+msgid "Open in Editor"
+msgstr "Кушодан дар муҳаррир"
 
-msgid "Team:"
-msgstr "Гурӯҳ:"
+msgid "Open in editor"
+msgstr "Кушодан дар муҳаррир"
 
-msgid "Team's email address:"
-msgstr "Почтаи электронии гурӯҳи корӣ:"
+msgid "No references for the selected item."
+msgstr "Ягон иқтибос барои объекти интихобшуда нест."
 
-msgid "Charset:"
-msgstr "Рамзгузорӣ:"
+#, c-format
+msgid "Error opening file %s!"
+msgstr "Хато ҳангоми кушодани файли %s!"
 
-msgid "Source"
-msgstr "Сатри аслӣ"
+msgid "Find"
+msgstr "Ҷустуҷӯ"
 
-msgid "Notes"
-msgstr "Эзоҳ"
+msgid "Replace"
+msgstr "Ҷойгузин кардан"
 
-msgid "Automatic translation"
-msgstr "Тарҷумаи худкор"
+#. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.)
+msgid "Options"
+msgstr "Имконот"
 
-msgid "Fuzzy translation"
-msgstr "Тарҷумаи душворфаҳм"
+msgid "Ignore case"
+msgstr "Рад кардани ҳарфҳои хурду калон"
 
-msgid "Notes for translators:"
-msgstr "Қайдҳои тарҷумон:"
+msgid "Wrap around"
+msgstr "Ҷустуҷӯи даврӣ"
 
-msgid "Comment:"
-msgstr "Шарҳ:"
+msgid "Whole words only"
+msgstr "Танҳо калимаҳои пурра"
 
-msgid "Source file"
-msgstr "Файли аслӣ"
+msgid "Find in source texts"
+msgstr "Ёфтан дар матнҳои манбаъ"
 
-msgid "Source file occurrence:"
-msgstr "Рӯйдодҳои файли аслӣ:"
+msgid "Find in translations"
+msgstr "Ҷустуҷӯ дар тарҷумаҳо"
 
-msgid "Open in Editor"
-msgstr ""
+msgid "Find in comments"
+msgstr "Ҷустуҷӯ дар шарҳҳо"
 
-msgid "Open in editor"
-msgstr ""
+msgid "Close"
+msgstr "Пӯшидан"
 
-#, c-format
-msgid "Error opening file %s!"
-msgstr "Хатогӣ ҳангоми кушодани файли %s!"
+msgid "Replace All"
+msgstr "Ҳамаро ҷойгузин кардан"
+
+msgid "Replace all"
+msgstr "Ҳамаро ҷойгузин кардан"
+
+msgid "< &Previous"
+msgstr "< &Қаблӣ"
+
+msgid "&Next >"
+msgstr "&Навбатӣ >"
+
+msgid "String to find"
+msgstr "Сатр барои ёфтан"
+
+msgid "Replacement string"
+msgstr "Сатри ҷойгузорӣ"
 
 #, c-format
 msgid "Cannot execute program: %s"
@@ -895,30 +1072,32 @@ msgstr ""
 "навсозӣ кунед?"
 
 msgid "Information about the translator"
-msgstr ""
+msgstr "Маълумот дар бораи тарҷумон"
 
 msgid "Name:"
-msgstr ""
+msgstr "Ном:"
 
 msgid "Your Name"
-msgstr ""
+msgstr "Номи шумо"
 
 msgid "Email:"
-msgstr ""
+msgstr "Почтаи электронӣ:"
 
 msgid "your_email at example.com"
-msgstr ""
+msgstr "your_email at example.com"
 
 msgid ""
 "Your name and email address are only used to set the Last-Translator header "
 "of GNU gettext files."
 msgstr ""
+"Ном ва почтаи электронии шумо танҳо барои намоиш додани тарҷумони охирин дар "
+"сарлавҳаҳои файлҳои GNU gettext истифода мешаванд."
 
 msgid "Editing"
-msgstr ""
+msgstr "Таҳриркунӣ"
 
 msgid "Automatically compile MO file when saving"
-msgstr ""
+msgstr "Омодасозии файли MO ба таври худкор ҳангоми захиракунӣ"
 
 msgid "Show summary after catalog update"
 msgstr "Намоиш додани хулоса баъд аз навсозии файл"
@@ -940,23 +1119,23 @@ msgstr ""
 "кардани Tab барои тағйироти маркази диққат доред."
 
 msgid "Appearance"
-msgstr ""
+msgstr "Намуди зоҳирӣ"
 
 msgid "Use custom list font:"
-msgstr ""
+msgstr "Истифодаи шрифти фармоишӣ:"
 
 msgid "Use custom text fields font:"
-msgstr ""
+msgstr "Истифодаи шрифти фармоишӣ барои майдонҳои вуруди матн:"
 
 msgid "Change UI language"
 msgstr "Иваз кардани забони интерфейс"
 
 #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions
 msgid "(requires Windows 8 or newer)"
-msgstr ""
+msgstr "(Windows 8 ё версияи навтарро талаб мекунад)"
 
 msgid "General"
-msgstr ""
+msgstr "Умумӣ"
 
 msgid "Use translation memory"
 msgstr "Истифодаи ҳофизаи тарҷумаҳо"
@@ -965,11 +1144,11 @@ msgid "Learn From Files..."
 msgstr "Илова кардан аз файлҳо..."
 
 msgid "Learn from files..."
-msgstr ""
+msgstr "Ёфтан аз файлҳо..."
 
 #. TRANSLATORS: This is a button that deletes everything in the translation memory (i.e. clears/resets it).
 msgid "Reset"
-msgstr ""
+msgstr "Танзими дубора"
 
 msgid "Consult TM when updating from sources"
 msgstr "Пеш аз навсозӣ кардан аз манбаҳо, ҳофизаи тарҷумаҳоро (TM) санҷед"
@@ -1005,15 +1184,17 @@ msgid "Finalizing..."
 msgstr "Омодасозӣ..."
 
 msgid "Reset translation memory"
-msgstr ""
+msgstr "Дубора танзим кардани ҳофизаи тарҷумаҳо"
 
 msgid "Are you sure you want to reset the translation memory?"
-msgstr ""
+msgstr "Шумо мутмаин ҳастед, ки мехоҳед ҳофизаи тарҷумаро дубора танзим кунед?"
 
 msgid ""
 "Resetting the translation memory will irrevocably delete all stored "
 "translations from it. You can’t undo this operation."
 msgstr ""
+"Поксозии тарҷумаҳо аз ҳофизаи тарҷумаҳо ҳамаи тарҷумаҳоро бебозгашт нест "
+"мекунад. Ин амал ботил сохта намешавад."
 
 msgid "Cancel"
 msgstr "Бекор кардан"
@@ -1022,12 +1203,14 @@ msgstr "Бекор кардан"
 #. Long text looks weird there, too short (like TM) too, but less so. "General" is about ideal
 #. length there.
 msgid "TM"
-msgstr ""
+msgstr "TM"
 
 msgid ""
 "Source code extractors are used to find translatable strings in the source "
 "code files and extract them so that they can be translated."
 msgstr ""
+"Василаи барориши манбаи рамз барои ёфтани сатрҳои тарҷумашаванда ва "
+"баровардани онҳо барои тарҷума истифода мешавад."
 
 msgid "New"
 msgstr "Нав"
@@ -1035,11 +1218,21 @@ msgstr "Нав"
 msgid "Edit"
 msgstr "Таҳрир"
 
+msgid "Delete extractor"
+msgstr "Нест кардани василаи барориш"
+
+#, c-format
+msgid "Are you sure you want to delete the “%s” extractor?"
+msgstr "Шумо мутмаин ҳастед, ки мехоҳед василаи барориши “%s”-ро нест кунед?"
+
 msgid "Extractors"
-msgstr ""
+msgstr "Василаи барориш"
+
+msgid "Accounts"
+msgstr "Ҳисобҳо"
 
 msgid "Automatically check for updates"
-msgstr ""
+msgstr "Санҷиши худкори навсозиҳо"
 
 msgid "Include beta versions"
 msgstr "Иловаи версияҳои бета"
@@ -1048,17 +1241,22 @@ msgid ""
 "Beta versions contain the latest new features and improvements, but may be a "
 "bit less stable."
 msgstr ""
+"Версияҳои бета хусусиятҳои нав ва такмилҳоро дар бар мегиранд, вале "
+"метавонанд каме ноустувор бошанд."
 
 msgid "Updates"
-msgstr ""
+msgstr "Навсозиҳо"
 
 msgid ""
 "These settings affect internal formatting of PO files. Adjust them if you "
 "have specific requirements e.g. because of version control."
 msgstr ""
+"Танзимоти мазкур ба форматгузории дохирии файлҳои PO таъсир мерасонад. Агар "
+"шумо талаботи махсус дошта бошед, масалан ба сабаби идоракунии версия, "
+"онҳоро мос кунед."
 
 msgid "Line endings:"
-msgstr ""
+msgstr "Анҷоми сатрҳо:"
 
 msgid "Unix (recommended)"
 msgstr "Unix (тавсия мешавад)"
@@ -1068,22 +1266,58 @@ msgstr "Windows"
 
 #. TRANSLATORS: Followed by text control for entering number; wraps text at given width
 msgid "Wrap at:"
-msgstr ""
+msgstr "Гузарондан:"
 
 msgid "Preserve formatting of existing files"
-msgstr ""
+msgstr "Истифодаи қолаббандӣ аз файлҳои мавҷудбуда"
 
 msgid "Advanced"
+msgstr "Иловагӣ"
+
+msgid ""
+"<big>Drag and Drop Folders Here</big>\n"
+"\n"
+"or use the + button"
 msgstr ""
+"<big>Ҷузвдонҳоро ба ин ҷо кашида гузоред</big>\n"
+"\n"
+"ё тугмаи \"+\" -ро зер кунед"
 
-msgid "Additional keywords"
-msgstr "Калидвожаҳои иловагӣ"
+msgid ""
+"<big>Drag and drop folders here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+"<big>Ҷузвдонҳоро ба ин ҷо кашида гузоред</big>\n"
+"\n"
+"ё тугмаи \"+\" -ро зер кунед"
+
+msgid "Add Folders..."
+msgstr "Илова кардани ҷузвдонҳо..."
+
+msgid "Add folders..."
+msgstr "Илова кардани ҷузвдонҳо..."
+
+msgid "Add Files..."
+msgstr "Илова кардани файлҳо..."
+
+msgid "Add files..."
+msgstr "Илова кардани файлҳо..."
+
+msgid "Add Wildcard..."
+msgstr "Илова кардани рамзи махсус..."
+
+msgid "Add wildcard..."
+msgstr "Илова кардани рамзи махсус..."
 
 msgid "Paths"
 msgstr "Масирҳо"
 
 msgid "Excluded paths"
-msgstr ""
+msgstr "Масирҳои истисношуда"
+
+msgid "Additional keywords"
+msgstr "Калидвожаҳои иловагӣ"
 
 msgid "Name of the project the translation is for"
 msgstr "Номи лоиҳаи тарҷума барои"
@@ -1099,6 +1333,9 @@ msgstr ""
 "Лутфан, аввал файлро захира кунед. То он гоҳ ин қисмат таҳрир карда "
 "намешавад."
 
+msgid "Comment:"
+msgstr "Шарҳ:"
+
 msgid "OK"
 msgstr "Хуб"
 
@@ -1108,42 +1345,6 @@ msgstr "&Тоза кардан"
 msgid "Clear the comment"
 msgstr "Тоза кардани шарҳ"
 
-msgid "Find..."
-msgstr "Ҷустуҷӯ..."
-
-msgid "String to find:"
-msgstr "Ҷустуҷӯи сатр:"
-
-msgid "Case sensitive"
-msgstr "Ҳарфи хурду калон"
-
-msgid "Start from the first item"
-msgstr "Аз банди аввлин сар кунед"
-
-msgid "Whole words only"
-msgstr "Танҳо калимаҳои пурра"
-
-msgid "Find in original strings"
-msgstr "Ҷустуҷӯ дар сатрҳои аслӣ"
-
-msgid "Find in translations"
-msgstr "Ҷустуҷӯ дар тарҷумаҳо"
-
-msgid "Find in comments"
-msgstr "Ҷустуҷӯ дар шарҳҳо"
-
-msgid "Find in automatic comments"
-msgstr "Ҷустуҷӯ дар шарҳҳои худкор"
-
-msgid "Close"
-msgstr "Пӯшидан"
-
-msgid "< &Previous"
-msgstr "< &Қаблӣ"
-
-msgid "&Next >"
-msgstr "&Навбатӣ >"
-
 msgid "Create new translations project"
 msgstr "Эҷод кардани лоиҳаи тарҷумаи нав"
 
@@ -1196,7 +1397,13 @@ msgid "&Open..."
 msgstr "&Кушодан..."
 
 msgid "Open Recent"
-msgstr ""
+msgstr "Кушодани файлҳои охирин"
+
+msgid "Open from Crowdin..."
+msgstr "Кушодан аз Crowdin..."
+
+msgid "Open From Crowdin..."
+msgstr "Кушодан аз Crowdin..."
 
 msgid "&Save"
 msgstr "&Захира кардан"
@@ -1208,7 +1415,7 @@ msgid "Save &As..."
 msgstr "&Захира кардан ҳамчун..."
 
 msgid "Compile to MO..."
-msgstr ""
+msgstr "Таҳия кардани файли MO..."
 
 msgid "E&xport as HTML..."
 msgstr "&Захира кардан ҳамчун HTML..."
@@ -1235,7 +1442,7 @@ msgid "Edit &Comment"
 msgstr "&Таҳрир кардани шарҳ"
 
 msgid "Suggestions"
-msgstr ""
+msgstr "Пешниҳодҳо"
 
 msgid "&Show references"
 msgstr "&Намоиши бартариҳо"
@@ -1246,14 +1453,17 @@ msgstr "&Намоиши бартариҳо"
 msgid "&Find..."
 msgstr "&Ҷустуҷӯ..."
 
+msgid "Replace..."
+msgstr "Ҷойгузин кардан..."
+
 msgid "Find next"
 msgstr "Ҷустуҷӯи навбатӣ"
 
 msgid "Find previous"
 msgstr "Ҷустуҷӯи қаблӣ"
 
-msgid "Find"
-msgstr "Ҷустуҷӯ"
+msgid "Find and Replace..."
+msgstr "Ёфтан ва ҷойгузин кардан..."
 
 msgid "Find Next"
 msgstr "Ҷустуҷӯи навбатӣ"
@@ -1289,10 +1499,16 @@ msgid "Sort by &Translation"
 msgstr "Аз рӯи &тарҷумаҳо"
 
 msgid "&Group by context"
-msgstr ""
+msgstr "&Гурӯҳбандӣ аз рӯи қарина"
 
 msgid "&Group By Context"
-msgstr ""
+msgstr "&Гурӯҳбандӣ аз рӯи қарина"
+
+msgid "Entries with errors first"
+msgstr "Пеш аз ҳама сабтҳоро бо хатоҳо намоиш диҳед"
+
+msgid "Entries with Errors First"
+msgstr "Пеш аз ҳама сабтҳоро бо хатоҳо намоиш диҳед"
 
 msgid "&Untranslated entries first"
 msgstr "&Аввал сатрҳои тарҷуманашуда"
@@ -1301,7 +1517,10 @@ msgid "&Untranslated Entries First"
 msgstr "&Аввал сатрҳои тарҷуманашуда"
 
 msgid "Show sidebar"
-msgstr ""
+msgstr "Намоиш додани навори ҷонибӣ"
+
+msgid "Show status bar"
+msgstr "Намоиш додани навори вазъият"
 
 msgid "C&atalog"
 msgstr "&Файли тарҷума"
@@ -1318,11 +1537,14 @@ msgstr "Навсозӣ кардан аз файли &POT..."
 msgid "Update from &POT File..."
 msgstr "Навсозӣ кардан аз файли &POT..."
 
+msgid "Sync with Crowdin"
+msgstr "Ҳамоҳанг кардан бо Crowdin"
+
 msgid "Fill missing translations from &TM..."
-msgstr ""
+msgstr "Ворид кардани тарҷумаҳои намерасидагӣ аз &TM..."
 
 msgid "Fill Missing Translations from &TM..."
-msgstr ""
+msgstr "Ворид кардани тарҷумаҳои намерасидагӣ аз &TM..."
 
 msgid "&Purge deleted translations"
 msgstr "&Пок кардани тарҷумаҳои нестшуда"
@@ -1346,16 +1568,16 @@ msgid "&Done and Next"
 msgstr "&Татбиқ кардан ва ба сатри дигар гузарондан"
 
 msgid "&Previous translation"
-msgstr ""
+msgstr "&Тарҷумаи қаблӣ"
 
 msgid "&Previous Translation"
-msgstr ""
+msgstr "&Тарҷумаи қаблӣ"
 
 msgid "&Next translation"
-msgstr ""
+msgstr "&Тарҷумаи навбатӣ"
 
 msgid "&Next Translation"
-msgstr ""
+msgstr "&Тарҷумаи навбатӣ"
 
 msgid "P&revious unfinished"
 msgstr "&Тарҷуманашудаи пешина"
@@ -1376,10 +1598,10 @@ msgid "&Online Help"
 msgstr "&Кумаки онлайн"
 
 msgid "&GNU gettext manual"
-msgstr "&Кӯмаки GNU gettext"
+msgstr "&Кумаки GNU gettext"
 
 msgid "&GNU gettext Manual"
-msgstr "&Кӯмаки GNU gettext"
+msgstr "&Кумаки GNU gettext"
 
 msgid "&About Poedit"
 msgstr "&Дар бораи Poedit"
@@ -1388,7 +1610,7 @@ msgid "&About"
 msgstr "&Дар бораи PoEdit"
 
 msgid "Extractor setup"
-msgstr ""
+msgstr "Танзими василаи барориш"
 
 msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):"
 msgstr ""
@@ -1399,7 +1621,7 @@ msgid "Invocation:"
 msgstr "Дархост:"
 
 msgid "Command to extract translations:"
-msgstr ""
+msgstr "Фармон барои баровардани тарҷумаҳо:"
 
 msgid ""
 "This is the command used to launch the extractor.\n"
@@ -1407,6 +1629,10 @@ msgid ""
 "of keywords, %F to list of input files,\n"
 "%C to charset flag (see below)."
 msgstr ""
+"Ин фармон барои оғози василаи барориш истифода мешавад.\n"
+"%o бо номи файли барориш, %K бо рӯйхати калимаҳои\n"
+"калидӣ, %F бо рӯйхати файлҳои вуруд,\n"
+"%C бо байрақи маҷмӯаи ҳарфҳо (поёнтар бинед) васеъ карда мешавад."
 
 msgid "An item in keywords list:"
 msgstr "Илова кардани объект ба рӯйхати калидвожаҳо:"
@@ -1446,6 +1672,9 @@ msgstr ""
 msgid "Catalog properties"
 msgstr "Хусусиятҳои файли тарҷума"
 
+msgid "Project name and version:"
+msgstr "Номи лоиҳа ва версия:"
+
 msgid "Plural Forms:"
 msgstr "Шаклҳои ҷамъ:"
 
@@ -1458,17 +1687,29 @@ msgstr "Истифодаи ибораҳои шахсӣ"
 msgid "Learn about plural forms"
 msgstr "Маълумоти бештар дар бораи шаклҳои ҷамъ"
 
+msgid "Charset:"
+msgstr "Рамзгузорӣ:"
+
+msgid "Team:"
+msgstr "Гурӯҳ:"
+
+msgid "Team's email address:"
+msgstr "Почтаи электронии гурӯҳи корӣ:"
+
 msgid "Translation properties"
 msgstr "Хусусиятҳои тарҷума"
 
+msgid "Sources paths"
+msgstr "Масирҳои сатрҳои аслӣ"
+
 msgid "Extract text from source files in the following directories:"
 msgstr "Баровардани матн аз файлҳои манбаъ дар ҷузвдонҳои зерин:"
 
 msgid "Base path:"
 msgstr "Масири асосӣ:"
 
-msgid "Sources paths"
-msgstr "Масирҳои сатрҳои аслӣ"
+msgid "Sources keywords"
+msgstr "Луғати сатрҳои аслӣ"
 
 msgid ""
 "Use these keywords (function names) to recognize translatable strings\n"
@@ -1480,9 +1721,6 @@ msgstr ""
 msgid "Learn about gettext keywords"
 msgstr "Маълумоти бештар дар бораи калидвожаҳои gettext"
 
-msgid "Sources keywords"
-msgstr "Луғати сатрҳои аслӣ"
-
 msgid "Update summary"
 msgstr "Хулосаи навсозӣ"
 
@@ -1531,41 +1769,46 @@ msgstr "Файлро навсозӣ кунед - бо файли аслӣ ҳам
 msgid "Toggled if selected string has fuzzy translation"
 msgstr "Ин нишона чӯкида меистад, агар тарҷумаи ҷориӣ душворфаҳм аст"
 
-msgid "Show or hide the sidebar."
-msgstr ""
+msgid "Show or hide the sidebar"
+msgstr "Намоиш додан ё пинҳон кардани навори ҷонибӣ"
 
 #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer.
 msgid "Previous source text:"
-msgstr ""
+msgstr "Матни манбаи қаблӣ:"
 
 msgid ""
 "The old source text (before it changed during an update) that the fuzzy "
 "translation corresponds to."
 msgstr ""
+"Матни манбаи куҳна (пеш аз тағйир ҳангоми навсозӣ), ки ба тарҷумаҳои "
+"душворфаҳм тааллуқ дорад."
+
+msgid "Notes for translators:"
+msgstr "Қайдҳои тарҷумон:"
 
 msgid "Add comment"
-msgstr ""
+msgstr "Илова кардани шарҳ"
 
 msgid "Add Comment"
-msgstr ""
+msgstr "Илова кардани шарҳ"
 
 msgid "Translation suggestions:"
 msgstr "Пешниҳодҳои тарҷума:"
 
 #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows).
 msgid "No matches found"
-msgstr ""
+msgstr "Ягон мутобиқат ёфт нашуд"
 
 #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (OS X, Linux).
 msgid "No Matches Found"
-msgstr ""
+msgstr "Ягон мутобиқат ёфт нашуд"
 
 msgid "This string was found in Poedit’s translation memory."
-msgstr ""
+msgstr "Ин тарҷума аз ҳофизаи тарҷумаҳои Poedit ворид карда шуд."
 
 #, c-format
 msgid "(New: %i, obsolete: %i)"
-msgstr ""
+msgstr "(Нав: %i, куҳна: %i)"
 
 #, c-format
 msgid "Importing translations: %d"
@@ -1605,7 +1848,7 @@ msgid ""
 "%s\n"
 "Please email help at poedit.net and we’ll get it fixed."
 msgstr ""
-"Иттилооти ҳофизаи тарҷумаҳо интиқол дода нашуд. Хатогӣ ба вуҷуд омад:\n"
+"Иттилооти ҳофизаи тарҷумаҳо интиқол дода нашуд. Хато ба вуҷуд омад:\n"
 "\n"
 "%s\n"
 "Лутфан, ба суроғаи help at poedit.net хабар рсонед ва мо он хаторо ҳал мекунем."
@@ -1622,9 +1865,6 @@ msgstr "Таҳрир кардани тарҷума"
 msgid "Open an existing PO file and edit the translation."
 msgstr "Файли PO-и мавҷудбударо кушоед ва тарҷумаро таҳрир намоед."
 
-msgid "Create new translation"
-msgstr "Аз нав тарҷума кардан"
-
 msgid ""
 "Take an existing PO file or POT template and create a new translation from "
 "it."
@@ -1632,6 +1872,17 @@ msgstr ""
 "Файли PO ё қолиби POT-и мавҷудбударо истифода баред ва тарҷумаи навро дар "
 "асоси он таҳия кунед."
 
+msgid "Collaborate on a translation with Crowdin"
+msgstr "Якҷоя тарҷума кардан дар Crowdin"
+
+msgid ""
+"Download a file from Crowdin project, translate and sync your changes back."
+msgstr ""
+"Файлеро аз лоиҳаи Crowdin боргирӣ кунед, тарҷума намоед ва ҳамоҳанг созед."
+
+msgid "What is Crowdin?"
+msgstr "Crowdin чист?"
+
 msgid "There are no translations. That’s unusual."
 msgstr "Ягон тарҷума вуҷуд надорад. Ин ғайриоддӣ аст."
 
@@ -1672,3 +1923,9 @@ msgstr "Баровардан аз манбаҳо"
 
 msgid "Configure source code extraction in Properties."
 msgstr "Баровардани рамзи манбаро дар Танзимот танзим кунед."
+
+msgid "Sync"
+msgstr "Ҳамоҳангсозӣ"
+
+msgid "Synchronize the translation with Crowdin"
+msgstr "Ҳамоҳангсозии тарҷума бо Crowdin"
diff --git a/locales/th.mo b/locales/th.mo
index 8a75755..1fa5e86 100644
Binary files a/locales/th.mo and b/locales/th.mo differ
diff --git a/locales/th.po b/locales/th.po
index 251a09a..2fa990b 100644
--- a/locales/th.po
+++ b/locales/th.po
@@ -2,8 +2,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: poedit\n"
 "Report-Msgid-Bugs-To: help at poedit.net\n"
-"POT-Creation-Date: 2015-01-10 16:00+0100\n"
-"PO-Revision-Date: 2015-03-10 12:34-0400\n"
+"POT-Creation-Date: 2015-05-27 11:31+0200\n"
+"PO-Revision-Date: 2015-05-27 05:17-0400\n"
 "Last-Translator: vslavik <vaclav at slavik.io>\n"
 "Language-Team: Thai\n"
 "Language: th_TH\n"
@@ -81,6 +81,15 @@ msgstr ""
 msgid "Error saving catalog"
 msgstr "ข้อผิดผลาดในการบันทึกรายการ"
 
+msgid "PO Translation Files"
+msgstr "ไฟล์แปลภาษา PO"
+
+msgid "POT Translation Templates"
+msgstr ""
+
+msgid "All Translation Files"
+msgstr ""
+
 msgid "Merging differences..."
 msgstr "กำลังเมชรความแตกต่าง..."
 
@@ -100,6 +109,83 @@ msgstr "การเลือกภาษา"
 msgid "You must restart Poedit for this change to take effect."
 msgstr "คุณต้องเริ่มต้น Poedit ใหม่เพื่อให้การเปลี่ยนแปลงมีผล"
 
+msgid "Downloading translations is disabled in this project."
+msgstr ""
+
+msgid "Not authorized, please sign in again."
+msgstr ""
+
+msgid "Sign in to Crowdin"
+msgstr ""
+
+msgid ""
+"Crowdin is an online localization management platform and collaborative "
+"translation tool. Poedit can seamlessly sync PO files managed at Crowdin."
+msgstr ""
+
+msgid "Sign In"
+msgstr ""
+
+msgid "Sign in"
+msgstr ""
+
+msgid "Sign Out"
+msgstr ""
+
+msgid "Sign out"
+msgstr ""
+
+msgid "Waiting for authentication…"
+msgstr ""
+
+msgid "Updating user information…"
+msgstr ""
+
+msgid "Signed in as:"
+msgstr ""
+
+msgid "Learn More About Crowdin"
+msgstr ""
+
+msgid "Learn more about Crowdin"
+msgstr ""
+
+msgid "Open Crowdin translation"
+msgstr ""
+
+msgid "Project:"
+msgstr ""
+
+msgid "Language:"
+msgstr "ภาษา:"
+
+msgid "File:"
+msgstr ""
+
+msgid "No translation projects listed in your Crowdin account."
+msgstr ""
+
+msgid "This project has no files that can be translated in Poedit."
+msgstr ""
+
+msgid "This file can only be edited in Crowdin’s web interface."
+msgstr ""
+
+msgid "Downloading latest translations…"
+msgstr ""
+
+msgid "Syncing with Crowdin"
+msgstr ""
+
+msgid "Syncing with Crowdin failed."
+msgstr ""
+
+msgid "Crowdin error"
+msgstr ""
+
+msgid "Uploading translations…"
+msgstr ""
+
 msgid "&Copy"
 msgstr "&คัดลอก"
 
@@ -117,7 +203,7 @@ msgid "Failed to merge gettext catalogs."
 msgstr "ล้มเหลวที่จะรวมรายการ gettext"
 
 msgid "Scanning files..."
-msgstr "กำลังสแกนแฟ้ม: "
+msgstr "กำลังสแกนไฟล์..."
 
 #. TRANSLATORS: '%s' is replaced with the kind of the files (e.g. C++, PHP, ...)
 #, c-format
@@ -128,7 +214,7 @@ msgid "Failed to load extracted catalog."
 msgstr "ล้มเหลวในการโหลดรายการที่ขยาย"
 
 msgid "&Help"
-msgstr "วิธี&ใช้"
+msgstr "&ช่วยเหลือ"
 
 msgid "MO files can’t be directly edited in Poedit."
 msgstr ""
@@ -144,6 +230,12 @@ msgstr ""
 msgid "don't delete temporary files (for debugging)"
 msgstr ""
 
+msgid "handle a poedit:// URI"
+msgstr ""
+
+msgid "Failed to communicate with Poedit process."
+msgstr ""
+
 #, c-format
 msgid "Unhandled exception occurred: %s"
 msgstr ""
@@ -152,13 +244,7 @@ msgid "Unhandled exception occurred."
 msgstr ""
 
 msgid "Open catalog"
-msgstr "เปิดรายการ"
-
-msgid "All Files"
-msgstr "ทุกไฟล์"
-
-msgid "PO Translation Files"
-msgstr "ไฟล์แปลภาษา PO"
+msgstr "เปิดแค็ตตาล็อก"
 
 #, c-format
 msgid "File '%s' doesn't exist."
@@ -186,7 +272,7 @@ msgid "Check for Updates..."
 msgstr "ตรวจหาการอัพเดท..."
 
 msgid "&Edit"
-msgstr "แก้ไ&ข"
+msgstr "&แก้ไข"
 
 msgid "Undo"
 msgstr "เลิกทำ"
@@ -370,7 +456,7 @@ msgid "Poedit"
 msgstr "Poedit"
 
 msgid "&File"
-msgstr "แฟ้&ม"
+msgstr "&ไฟล์"
 
 msgid "&Go"
 msgstr ""
@@ -387,6 +473,17 @@ msgstr "พหูพจน์:"
 msgid "Translation:"
 msgstr "การแปล:"
 
+msgid ""
+"POT files are only templates and don’t contain any translations themselves.\n"
+"To make a translation, create a new PO file based on the template."
+msgstr ""
+
+msgid "Create New Translation"
+msgstr ""
+
+msgid "Create new translation"
+msgstr ""
+
 #. TRANSLATORS: %s is language name in its basic form (as you
 #. would see e.g. in a list of supported languages). You may need
 #. to rephrase it, e.g. to an equivalent of "for language %s".
@@ -434,9 +531,6 @@ msgstr ""
 msgid "Open catalog template"
 msgstr "เปิดรายการแม่แบบ"
 
-msgid "POT Translation Templates"
-msgstr ""
-
 msgid "Updating catalog"
 msgstr ""
 
@@ -503,16 +597,18 @@ msgstr[0] ""
 msgid "The translation is ready for use."
 msgstr ""
 
-msgid "No references to this string found."
-msgstr "ไม่พบการอ้างอิงบนข้อมูลนี้"
-
-msgid "Please choose the reference you want to show:"
-msgstr "กรุณาเลือกการอ้างอิงที่คุณต้องการแสดง:"
+msgid "Context:"
+msgstr ""
 
-msgid "References"
-msgstr "การอ้างอิง"
+#, c-format
+msgid "Poedit automatically fixed invalid content in the file “%s”."
+msgstr ""
 
-msgid "Context:"
+msgid ""
+"The file contained duplicate items, which is not allowed in PO files and "
+"would prevent the file from being used. Poedit fixed the issue, but you "
+"should review translations of any items marked as fuzzy and correct them if "
+"necessary."
 msgstr ""
 
 msgid "Language of the translation isn't set."
@@ -524,6 +620,21 @@ msgstr ""
 msgid "Set language"
 msgstr "กำหนดภาษา"
 
+#. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)."
+msgid ""
+"Suggestions are not available if the translation language is not set "
+"correctly. Other features, such as plural forms, may be affected as well."
+msgstr ""
+
+msgid "Language of the translation is the same as source language."
+msgstr ""
+
+msgid "Fix Language"
+msgstr ""
+
+msgid "Fix language"
+msgstr ""
+
 msgid ""
 "This catalog has entries with plural forms, but doesn't have Plural-Forms "
 "header configured."
@@ -554,6 +665,7 @@ msgstr ""
 msgid "Plural forms expression used by the catalog is unusual for %s."
 msgstr ""
 
+#. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the catalog is unusual for %s.")"
 msgid "Review"
 msgstr ""
 
@@ -574,6 +686,11 @@ msgid "%d error"
 msgid_plural "%d errors"
 msgstr[0] ""
 
+#, c-format
+msgid "%d entry"
+msgid_plural "%d entries"
+msgstr[0] ""
+
 msgid " (unsaved)"
 msgstr ""
 
@@ -683,7 +800,10 @@ msgstr ""
 
 #, c-format
 msgid "Form %i"
-msgstr "จาก %i"
+msgstr "ฟอร์ม %i"
+
+msgid "Singular"
+msgstr ""
 
 msgid "Zero"
 msgstr "ศูนย์"
@@ -694,6 +814,9 @@ msgstr ""
 msgid "Two"
 msgstr "สอง"
 
+msgid "Plural"
+msgstr ""
+
 msgid "Other"
 msgstr ""
 
@@ -722,6 +845,12 @@ msgstr ""
 msgid "Show Sidebar"
 msgstr ""
 
+msgid "Hide Status Bar"
+msgstr ""
+
+msgid "Show Status Bar"
+msgstr ""
+
 msgid "Source text"
 msgstr ""
 
@@ -731,6 +860,10 @@ msgstr "การแปล"
 msgid "ID"
 msgstr ""
 
+#, c-format
+msgid "Source text — %s"
+msgstr ""
+
 msgid "unknown language"
 msgstr "ภาษาที่ไม่รู้จัก"
 
@@ -741,57 +874,73 @@ msgstr "การแปล — %s"
 msgid "Error:"
 msgstr ""
 
-msgid "Project info"
-msgstr "ข้อมูลโครงการ"
+msgid "Source file"
+msgstr "แฟ้มดั้งเดิม"
 
-msgid "Project name and version:"
-msgstr "ชื่อและรุ่นของโครงการ:"
+msgid "Source file occurrence:"
+msgstr ""
 
-msgid "Language:"
-msgstr "ภาษา:"
+msgid "Open in Editor"
+msgstr ""
 
-msgid "Team:"
-msgstr "ทีมงาน:"
+msgid "Open in editor"
+msgstr ""
 
-msgid "Team's email address:"
-msgstr "ที่อยู่อีเมลของทีมงาน:"
+msgid "No references for the selected item."
+msgstr ""
 
-msgid "Charset:"
-msgstr "รูปแบบอักขระ:"
+#, c-format
+msgid "Error opening file %s!"
+msgstr "ข้อผิดลากในการเปิดแฟ้ม %s!"
 
-msgid "Source"
+msgid "Find"
 msgstr ""
 
-msgid "Notes"
-msgstr "บันทึก"
+msgid "Replace"
+msgstr ""
 
-msgid "Automatic translation"
-msgstr "การแปลอัตโนมัติ"
+#. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.)
+msgid "Options"
+msgstr ""
 
-msgid "Fuzzy translation"
-msgstr "คำแปลที่ไม่ชัดเจน"
+msgid "Ignore case"
+msgstr ""
 
-msgid "Notes for translators:"
+msgid "Wrap around"
 msgstr ""
 
-msgid "Comment:"
-msgstr "คำแนะนำ:"
+msgid "Whole words only"
+msgstr "ศัพท์อย่างเต็มเท่านั้น"
 
-msgid "Source file"
-msgstr "แฟ้มดั้งเดิม"
+msgid "Find in source texts"
+msgstr ""
 
-msgid "Source file occurrence:"
+msgid "Find in translations"
+msgstr "ค้นหาในการแปล"
+
+msgid "Find in comments"
+msgstr "ค้นหาในความคิดเห็น"
+
+msgid "Close"
 msgstr ""
 
-msgid "Open in Editor"
+msgid "Replace All"
 msgstr ""
 
-msgid "Open in editor"
+msgid "Replace all"
 msgstr ""
 
-#, c-format
-msgid "Error opening file %s!"
-msgstr "ข้อผิดลากในการเปิดแฟ้ม %s!"
+msgid "< &Previous"
+msgstr ""
+
+msgid "&Next >"
+msgstr "&ถัดไป >"
+
+msgid "String to find"
+msgstr ""
+
+msgid "Replacement string"
+msgstr ""
 
 #, c-format
 msgid "Cannot execute program: %s"
@@ -819,7 +968,7 @@ msgid "Untrans"
 msgstr "ไม่ได้แปล"
 
 msgid "Fuzzy"
-msgstr "ไม่ชัดเจน"
+msgstr "Fuzzy"
 
 msgid "Bad Tokens"
 msgstr "สัญลักษณ์เสียหาย"
@@ -828,7 +977,7 @@ msgid "Last modified"
 msgstr "ปรับเปลี่ยนล่าสุด"
 
 msgid "Select directory"
-msgstr "เลือกตำแหน่ง"
+msgstr "เลือกไดเรกทอรี"
 
 msgid "Directories:"
 msgstr "ที่ตั้ง:"
@@ -983,9 +1132,19 @@ msgstr "สร้างใหม่"
 msgid "Edit"
 msgstr "แก้ไข"
 
+msgid "Delete extractor"
+msgstr ""
+
+#, c-format
+msgid "Are you sure you want to delete the “%s” extractor?"
+msgstr ""
+
 msgid "Extractors"
 msgstr ""
 
+msgid "Accounts"
+msgstr ""
+
 msgid "Automatically check for updates"
 msgstr ""
 
@@ -1024,7 +1183,34 @@ msgstr ""
 msgid "Advanced"
 msgstr ""
 
-msgid "Additional keywords"
+msgid ""
+"<big>Drag and Drop Folders Here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+
+msgid ""
+"<big>Drag and drop folders here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+
+msgid "Add Folders..."
+msgstr ""
+
+msgid "Add folders..."
+msgstr ""
+
+msgid "Add Files..."
+msgstr ""
+
+msgid "Add files..."
+msgstr ""
+
+msgid "Add Wildcard..."
+msgstr ""
+
+msgid "Add wildcard..."
 msgstr ""
 
 msgid "Paths"
@@ -1033,6 +1219,9 @@ msgstr "เส้นทาง"
 msgid "Excluded paths"
 msgstr ""
 
+msgid "Additional keywords"
+msgstr ""
+
 msgid "Name of the project the translation is for"
 msgstr ""
 
@@ -1045,6 +1234,9 @@ msgstr "UTF-8 (แนะนำ)"
 msgid "Please save the file first. This section cannot be edited until then."
 msgstr ""
 
+msgid "Comment:"
+msgstr "คำแนะนำ:"
+
 msgid "OK"
 msgstr "ตกลง"
 
@@ -1054,42 +1246,6 @@ msgstr ""
 msgid "Clear the comment"
 msgstr "ลบคำแนะนำ"
 
-msgid "Find..."
-msgstr "ค้นหา..."
-
-msgid "String to find:"
-msgstr "ข้อมูลที่จะค้นหา:"
-
-msgid "Case sensitive"
-msgstr "เจาะจงตัวพิมพ์เล็กใหญ่"
-
-msgid "Start from the first item"
-msgstr "เริ่มต้นจากรายการแรก"
-
-msgid "Whole words only"
-msgstr "ศัพท์อย่างเต็มเท่านั้น"
-
-msgid "Find in original strings"
-msgstr "ค้นหาในข้อความดั้งเดิม"
-
-msgid "Find in translations"
-msgstr "ค้นหาในการแปล"
-
-msgid "Find in comments"
-msgstr "ค้นหาคำแนะนำ"
-
-msgid "Find in automatic comments"
-msgstr "ค้นหาคำแนะนำอัตโนมัติ"
-
-msgid "Close"
-msgstr ""
-
-msgid "< &Previous"
-msgstr ""
-
-msgid "&Next >"
-msgstr "&ถัดไป >"
-
 msgid "Create new translations project"
 msgstr "สร้างโครงการแปลใหม่"
 
@@ -1100,7 +1256,7 @@ msgid "Delete the project"
 msgstr "ลบโครงการ"
 
 msgid "Update all"
-msgstr "ปรับปรุงทั้งหมด"
+msgstr "อัพเดททั้งหมด"
 
 msgid "Update all catalogs in the project"
 msgstr "ปรับปรุงรายการทั้งหมดในโครงการ"
@@ -1118,10 +1274,10 @@ msgid "Add directory to the list"
 msgstr "เพิ่มตำแหน่งไปยังรายการ"
 
 msgid "&Preferences..."
-msgstr "ตั&วเลือก..."
+msgstr "&ตั้งค่า..."
 
 msgid "&Close"
-msgstr "ปิ&ด"
+msgstr "&ปิด"
 
 msgid "E&xit"
 msgstr ""
@@ -1139,16 +1295,22 @@ msgid "New From &POT/PO File..."
 msgstr ""
 
 msgid "&Open..."
-msgstr "เปิ&ด..."
+msgstr "&เปิด..."
 
 msgid "Open Recent"
 msgstr ""
 
+msgid "Open from Crowdin..."
+msgstr ""
+
+msgid "Open From Crowdin..."
+msgstr ""
+
 msgid "&Save"
-msgstr "บั&นทึก"
+msgstr "&บันทึก"
 
 msgid "Save &as..."
-msgstr "บันทึกเป็&น..."
+msgstr "บันทึกเป็น..."
 
 msgid "Save &As..."
 msgstr "บันทึก&เป็น..."
@@ -1163,7 +1325,7 @@ msgid "Check for updates..."
 msgstr ""
 
 msgid "Catalogs &manager"
-msgstr "ตัวจัด&การรายการ"
+msgstr "ตัวจัดการ&แค็ตตาล็อก"
 
 msgid "Catalogs &Manager"
 msgstr "ตัวจัดการ&แค็ตตาล็อก"
@@ -1190,7 +1352,10 @@ msgid "&Show References"
 msgstr ""
 
 msgid "&Find..."
-msgstr "ค้&นหา"
+msgstr "&ค้นหา..."
+
+msgid "Replace..."
+msgstr ""
 
 msgid "Find next"
 msgstr ""
@@ -1198,7 +1363,7 @@ msgstr ""
 msgid "Find previous"
 msgstr ""
 
-msgid "Find"
+msgid "Find and Replace..."
 msgstr ""
 
 msgid "Find Next"
@@ -1208,7 +1373,7 @@ msgid "Find Previous"
 msgstr ""
 
 msgid "&Preferences"
-msgstr "ตัวเลื&อก"
+msgstr "&ตั้งค่า"
 
 msgid "Display entry &IDs"
 msgstr ""
@@ -1240,6 +1405,12 @@ msgstr ""
 msgid "&Group By Context"
 msgstr ""
 
+msgid "Entries with errors first"
+msgstr ""
+
+msgid "Entries with Errors First"
+msgstr ""
+
 msgid "&Untranslated entries first"
 msgstr ""
 
@@ -1249,6 +1420,9 @@ msgstr ""
 msgid "Show sidebar"
 msgstr ""
 
+msgid "Show status bar"
+msgstr ""
+
 msgid "C&atalog"
 msgstr "รา&ยการ"
 
@@ -1264,6 +1438,9 @@ msgstr "ปรับปรุ&งจากแฟ้ม POT"
 msgid "Update from &POT File..."
 msgstr ""
 
+msgid "Sync with Crowdin"
+msgstr ""
+
 msgid "Fill missing translations from &TM..."
 msgstr ""
 
@@ -1387,6 +1564,9 @@ msgstr ""
 msgid "Catalog properties"
 msgstr ""
 
+msgid "Project name and version:"
+msgstr "ชื่อและรุ่นของโครงการ:"
+
 msgid "Plural Forms:"
 msgstr "แบบพหูพจน์:"
 
@@ -1399,16 +1579,28 @@ msgstr ""
 msgid "Learn about plural forms"
 msgstr ""
 
+msgid "Charset:"
+msgstr "รูปแบบอักขระ:"
+
+msgid "Team:"
+msgstr "ทีม:"
+
+msgid "Team's email address:"
+msgstr "ที่อยู่อีเมลของทีมงาน:"
+
 msgid "Translation properties"
 msgstr ""
 
+msgid "Sources paths"
+msgstr ""
+
 msgid "Extract text from source files in the following directories:"
 msgstr ""
 
 msgid "Base path:"
 msgstr "ส่วนฐาน:"
 
-msgid "Sources paths"
+msgid "Sources keywords"
 msgstr ""
 
 msgid ""
@@ -1419,9 +1611,6 @@ msgstr ""
 msgid "Learn about gettext keywords"
 msgstr ""
 
-msgid "Sources keywords"
-msgstr ""
-
 msgid "Update summary"
 msgstr "ปรับปรุงผลลัพธ์"
 
@@ -1433,7 +1622,7 @@ msgstr ""
 "Poedit จะเพิ่มแฟ้มไปยังรายการเดี๋ยวนี้"
 
 msgid "New strings"
-msgstr "ข้อมูลใหม่"
+msgstr "สตริงใหม่"
 
 msgid ""
 "These strings are no longer in the sources.\n"
@@ -1452,7 +1641,7 @@ msgid "Open"
 msgstr "เปิด"
 
 msgid "Save catalog"
-msgstr "บันทึกรายการ"
+msgstr "บันทึกแค็ตตาล็อก"
 
 msgid "Validate"
 msgstr "ตรวจสอบ"
@@ -1461,7 +1650,7 @@ msgid "Check for errors in the translation"
 msgstr ""
 
 msgid "Update"
-msgstr "ปรับปรุง"
+msgstr "อัพเดท"
 
 msgid "Update catalog - synchronize it with sources"
 msgstr "ปรับปรุงรายการ - เชื่อมต่อกับแฟ้มดั้งเดิม"
@@ -1469,7 +1658,7 @@ msgstr "ปรับปรุงรายการ - เชื่อมต่อ
 msgid "Toggled if selected string has fuzzy translation"
 msgstr "เลือกถ้าข้อมูลที่เลือกเป็นการแปลที่ไมชัดเจน"
 
-msgid "Show or hide the sidebar."
+msgid "Show or hide the sidebar"
 msgstr ""
 
 #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer.
@@ -1481,6 +1670,9 @@ msgid ""
 "translation corresponds to."
 msgstr ""
 
+msgid "Notes for translators:"
+msgstr ""
+
 msgid "Add comment"
 msgstr ""
 
@@ -1553,14 +1745,21 @@ msgstr ""
 msgid "Open an existing PO file and edit the translation."
 msgstr ""
 
-msgid "Create new translation"
-msgstr ""
-
 msgid ""
 "Take an existing PO file or POT template and create a new translation from "
 "it."
 msgstr ""
 
+msgid "Collaborate on a translation with Crowdin"
+msgstr ""
+
+msgid ""
+"Download a file from Crowdin project, translate and sync your changes back."
+msgstr ""
+
+msgid "What is Crowdin?"
+msgstr ""
+
 msgid "There are no translations. That’s unusual."
 msgstr ""
 
@@ -1593,3 +1792,9 @@ msgstr "แตกไฟล์จากแหล่งข้อมูล"
 
 msgid "Configure source code extraction in Properties."
 msgstr "กำหนดค่าการแตกไฟล์โค้ดต้นฉบับในคุณสมบัติ"
+
+msgid "Sync"
+msgstr ""
+
+msgid "Synchronize the translation with Crowdin"
+msgstr ""
diff --git a/locales/tr.mo b/locales/tr.mo
index a0335b1..c4fbd47 100644
Binary files a/locales/tr.mo and b/locales/tr.mo differ
diff --git a/locales/tr.po b/locales/tr.po
index 0a712ac..04f9663 100644
--- a/locales/tr.po
+++ b/locales/tr.po
@@ -2,8 +2,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: poedit\n"
 "Report-Msgid-Bugs-To: help at poedit.net\n"
-"POT-Creation-Date: 2015-01-10 16:00+0100\n"
-"PO-Revision-Date: 2015-03-10 12:34-0400\n"
+"POT-Creation-Date: 2015-05-27 11:31+0200\n"
+"PO-Revision-Date: 2015-05-27 05:17-0400\n"
 "Last-Translator: vslavik <vaclav at slavik.io>\n"
 "Language-Team: Turkish\n"
 "Language: tr_TR\n"
@@ -93,6 +93,15 @@ msgstr ""
 msgid "Error saving catalog"
 msgstr "Katalog kaydedilirken hata"
 
+msgid "PO Translation Files"
+msgstr "PO Çeviri Dosyaları"
+
+msgid "POT Translation Templates"
+msgstr "POT Çeviri Şablonları"
+
+msgid "All Translation Files"
+msgstr "Tüm Çeviri Dosyaları"
+
 msgid "Merging differences..."
 msgstr "Farklılıklar birleştiriliyor..."
 
@@ -113,6 +122,86 @@ msgid "You must restart Poedit for this change to take effect."
 msgstr ""
 "Bu değişikliğin etkili olması için Poedit'i yeniden başlatmak zorundasınız."
 
+msgid "Downloading translations is disabled in this project."
+msgstr "Bu projede çevirileri indirmek etkisizleştirildi."
+
+msgid "Not authorized, please sign in again."
+msgstr "Yetkiniz yok, lütfen tekrar giriş yapın."
+
+msgid "Sign in to Crowdin"
+msgstr "Crowdin'e giriş yapın"
+
+msgid ""
+"Crowdin is an online localization management platform and collaborative "
+"translation tool. Poedit can seamlessly sync PO files managed at Crowdin."
+msgstr ""
+"Crowdin bir çevrimiçi yerelleştirme yönetimi platformu ve işbirliğine dayalı "
+"bir çeviri aracıdır. Poedit sorunsuz olarak Crowdin'de yönetilen PO "
+"dosyalarını eşitleyebilir."
+
+msgid "Sign In"
+msgstr "Giriş Yap"
+
+msgid "Sign in"
+msgstr "Giriş yap"
+
+msgid "Sign Out"
+msgstr "Çıkış Yap"
+
+msgid "Sign out"
+msgstr "Çıkış yap"
+
+msgid "Waiting for authentication…"
+msgstr "Kimlik doğrulaması için bekleniyor…"
+
+msgid "Updating user information…"
+msgstr "Kullanıcı bilgileri güncelleniyor…"
+
+msgid "Signed in as:"
+msgstr "Giriş yapan:"
+
+msgid "Learn More About Crowdin"
+msgstr "Crowdin Hakkında Bilgi Edinin"
+
+msgid "Learn more about Crowdin"
+msgstr "Crowdin hakkında bilgi edinin"
+
+msgid "Open Crowdin translation"
+msgstr "Crowdin çevirisini aç"
+
+msgid "Project:"
+msgstr "Proje:"
+
+msgid "Language:"
+msgstr "Dil:"
+
+msgid "File:"
+msgstr "Dosya:"
+
+msgid "No translation projects listed in your Crowdin account."
+msgstr "Crowdin hesabınızda listelenen hiç çeviri projesi yok."
+
+msgid "This project has no files that can be translated in Poedit."
+msgstr "Bu proje, Poedit içinde çevrilebilir hiç bir dosyaya sahip değil."
+
+msgid "This file can only be edited in Crowdin’s web interface."
+msgstr "Bu dosya sadece Crowdin'in web arayüzünde düzenlenebilir."
+
+msgid "Downloading latest translations…"
+msgstr "En son çeviriler indiriliyor…"
+
+msgid "Syncing with Crowdin"
+msgstr "Crowdin ile eşitleniyor"
+
+msgid "Syncing with Crowdin failed."
+msgstr "Crowdin ile eşitleme başarısız oldu."
+
+msgid "Crowdin error"
+msgstr "Crowdin hatası"
+
+msgid "Uploading translations…"
+msgstr "Çeviriler gönderiliyor…"
+
 msgid "&Copy"
 msgstr "K&opyala"
 
@@ -159,6 +248,12 @@ msgstr ""
 msgid "don't delete temporary files (for debugging)"
 msgstr "geçici dosyaları silme (hata ayıklama için)"
 
+msgid "handle a poedit:// URI"
+msgstr "Bir poedit:// URI'si kullan"
+
+msgid "Failed to communicate with Poedit process."
+msgstr "Poedit işlemi ile iletişim kurma başarısız."
+
 #, c-format
 msgid "Unhandled exception occurred: %s"
 msgstr "Beklenmeyen bir hata oluştu: %s"
@@ -169,12 +264,6 @@ msgstr "Beklenmeyen bir hata oluştu."
 msgid "Open catalog"
 msgstr "Kataloğu aç"
 
-msgid "All Files"
-msgstr "Tüm Dosyalar"
-
-msgid "PO Translation Files"
-msgstr "PO Çeviri Dosyaları"
-
 #, c-format
 msgid "File '%s' doesn't exist."
 msgstr "'%s' dosyası yok."
@@ -201,7 +290,7 @@ msgid "Check for Updates..."
 msgstr "Güncellemeleri Kontrol Et..."
 
 msgid "&Edit"
-msgstr "Düz&enleyin"
+msgstr "Düz&en"
 
 msgid "Undo"
 msgstr "Geri al"
@@ -402,6 +491,20 @@ msgstr "Çoğul:"
 msgid "Translation:"
 msgstr "Çeviri:"
 
+msgid ""
+"POT files are only templates and don’t contain any translations themselves.\n"
+"To make a translation, create a new PO file based on the template."
+msgstr ""
+"POT dosyaları sadece şablonlardır ve kendiliğinden herhangi bir çeviri "
+"içermezler.\n"
+"Bir çeviri yapmak için şablonu temel alan yeni bir PO dosyası oluşturun."
+
+msgid "Create New Translation"
+msgstr "Yeni Çeviri Oluştur"
+
+msgid "Create new translation"
+msgstr "Yeni çeviri oluştur"
+
 #. TRANSLATORS: %s is language name in its basic form (as you
 #. would see e.g. in a list of supported languages). You may need
 #. to rephrase it, e.g. to an equivalent of "for language %s".
@@ -449,9 +552,6 @@ msgstr "HTML Dosyaları"
 msgid "Open catalog template"
 msgstr "Katalog şablonu aç"
 
-msgid "POT Translation Templates"
-msgstr "POT Çeviri Şablonları"
-
 msgid "Updating catalog"
 msgstr "Katalog güncelleniyor"
 
@@ -531,18 +631,24 @@ msgstr[1] "Çeviri kullanıma hazır, ancak henüz %d giriş çevrilmemiş."
 msgid "The translation is ready for use."
 msgstr "Çeviri kullanıma hazır."
 
-msgid "No references to this string found."
-msgstr "Bu dizge için kaynaklar bulunamadı."
-
-msgid "Please choose the reference you want to show:"
-msgstr "Lütfen görüntülenmesini istediğiniz kaynağı seçin:"
-
-msgid "References"
-msgstr "Kaynaklar"
-
 msgid "Context:"
 msgstr "Bağlam:"
 
+#, c-format
+msgid "Poedit automatically fixed invalid content in the file “%s”."
+msgstr "Poedit, “%s” dosyasındaki geçersiz içeriği otomatik olarak düzeltti."
+
+msgid ""
+"The file contained duplicate items, which is not allowed in PO files and "
+"would prevent the file from being used. Poedit fixed the issue, but you "
+"should review translations of any items marked as fuzzy and correct them if "
+"necessary."
+msgstr ""
+"Dosya, PO dosyalarında izin verilmeyen ve dosyanın kullanılmasını engelleyen "
+"kopya öğeleri içermekte. Poedit sorunu düzeltti, ancak belirsiz olarak "
+"işaretlenen her bir öğenin çevirisini gözden geçirmeli ve gerekirse "
+"düzeltmelisiniz."
+
 msgid "Language of the translation isn't set."
 msgstr "Çeviri dili ayarlanmamış."
 
@@ -552,6 +658,23 @@ msgstr "Dili ayarla"
 msgid "Set language"
 msgstr "Dili ayarla"
 
+#. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)."
+msgid ""
+"Suggestions are not available if the translation language is not set "
+"correctly. Other features, such as plural forms, may be affected as well."
+msgstr ""
+"Çeviri dili doğru olarak ayarlanmazsa, öneriler kullanılabilir olmaz. Çoğul "
+"biçimler gibi, diğer özellikler de etkilenebilir."
+
+msgid "Language of the translation is the same as source language."
+msgstr "Çeviri dili kaynak dil ile aynı."
+
+msgid "Fix Language"
+msgstr "Dili Düzelt"
+
+msgid "Fix language"
+msgstr "Dili düzelt"
+
 msgid ""
 "This catalog has entries with plural forms, but doesn't have Plural-Forms "
 "header configured."
@@ -586,6 +709,7 @@ msgstr "Başlığı düzelt"
 msgid "Plural forms expression used by the catalog is unusual for %s."
 msgstr "Katalog tarafından %s için kullanılan çoğul biçim ifadesi alışılmadık."
 
+#. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the catalog is unusual for %s.")"
 msgid "Review"
 msgstr "Gözden Geçir"
 
@@ -607,6 +731,12 @@ msgid_plural "%d errors"
 msgstr[0] "%d hata"
 msgstr[1] "%d hata"
 
+#, c-format
+msgid "%d entry"
+msgid_plural "%d entries"
+msgstr[0] "%d giriş"
+msgstr[1] "%d giriş"
+
 msgid " (unsaved)"
 msgstr " (kaydedilmedi)"
 
@@ -735,6 +865,9 @@ msgstr "Herşey"
 msgid "Form %i"
 msgstr "Biçim %i"
 
+msgid "Singular"
+msgstr "Tekil"
+
 msgid "Zero"
 msgstr "Sıfır"
 
@@ -744,6 +877,9 @@ msgstr "Bir"
 msgid "Two"
 msgstr "İki"
 
+msgid "Plural"
+msgstr "Çoğul"
+
 msgid "Other"
 msgstr "Diğer"
 
@@ -772,6 +908,12 @@ msgstr "Kenar çubuğunu gizle"
 msgid "Show Sidebar"
 msgstr "Kenar çubuğunu göster"
 
+msgid "Hide Status Bar"
+msgstr "Durum Çubuğunu Gizle"
+
+msgid "Show Status Bar"
+msgstr "Durum Çubuğunu Göster"
+
 msgid "Source text"
 msgstr "Kaynak metin"
 
@@ -779,7 +921,11 @@ msgid "Translation"
 msgstr "Çeviri"
 
 msgid "ID"
-msgstr "KİMLİK"
+msgstr "Kod"
+
+#, c-format
+msgid "Source text — %s"
+msgstr "Kaynak metin — %s"
 
 msgid "unknown language"
 msgstr "bilinmeyen dil"
@@ -791,57 +937,73 @@ msgstr "Çeviri — %s"
 msgid "Error:"
 msgstr "Hata:"
 
-msgid "Project info"
-msgstr "Proje bilgisi"
+msgid "Source file"
+msgstr "Kaynak dosyası"
 
-msgid "Project name and version:"
-msgstr "Proje adı ve sürümü:"
+msgid "Source file occurrence:"
+msgstr "Kaynak dosya oluşumu:"
 
-msgid "Language:"
-msgstr "Dil:"
+msgid "Open in Editor"
+msgstr "Düzenleyicide Aç"
 
-msgid "Team:"
-msgstr "Ekip:"
+msgid "Open in editor"
+msgstr "Düzenleyicide aç"
 
-msgid "Team's email address:"
-msgstr "Ekibin e-posta adresi:"
+msgid "No references for the selected item."
+msgstr "Seçilen öğe için hiç kaynak yok."
 
-msgid "Charset:"
-msgstr "Karakter kümesi:"
+#, c-format
+msgid "Error opening file %s!"
+msgstr "%s dosyası açılırken hata!"
 
-msgid "Source"
-msgstr "Kaynak"
+msgid "Find"
+msgstr "Bul"
 
-msgid "Notes"
-msgstr "Notlar"
+msgid "Replace"
+msgstr "Değiştir"
 
-msgid "Automatic translation"
-msgstr "Otomatik çeviri"
+#. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.)
+msgid "Options"
+msgstr "Seçenekler"
 
-msgid "Fuzzy translation"
-msgstr "Belirsiz çeviri"
+msgid "Ignore case"
+msgstr "Büyük küçük harfi yoksay"
 
-msgid "Notes for translators:"
-msgstr "Çevirmenler için notlar:"
+msgid "Wrap around"
+msgstr "Çevresinde kaydır"
 
-msgid "Comment:"
-msgstr "Açıklama:"
+msgid "Whole words only"
+msgstr "Sadece bütün kelime"
 
-msgid "Source file"
-msgstr "Kaynak dosyası"
+msgid "Find in source texts"
+msgstr "Kaynak metinlerde bul"
 
-msgid "Source file occurrence:"
-msgstr "Kaynak dosya oluşumu:"
+msgid "Find in translations"
+msgstr "Çevirilerde bul"
 
-msgid "Open in Editor"
-msgstr "Düzenleyicide Aç"
+msgid "Find in comments"
+msgstr "Açıklamalarda bul"
 
-msgid "Open in editor"
-msgstr "Düzenleyicide aç"
+msgid "Close"
+msgstr "Kapat"
 
-#, c-format
-msgid "Error opening file %s!"
-msgstr "%s dosyası açılırken hata!"
+msgid "Replace All"
+msgstr "Tümünü Değiştir"
+
+msgid "Replace all"
+msgstr "Tümünü değiştir"
+
+msgid "< &Previous"
+msgstr "< Ön&ceki"
+
+msgid "&Next >"
+msgstr "So&nraki >"
+
+msgid "String to find"
+msgstr "Bulunacak dizge"
+
+msgid "Replacement string"
+msgstr "Değiştirme dizgesi"
 
 #, c-format
 msgid "Cannot execute program: %s"
@@ -969,7 +1131,7 @@ msgid "Use translation memory"
 msgstr "Çeviri belleğini kullan"
 
 msgid "Learn From Files..."
-msgstr "Dosyalardan Öğrenilsin..."
+msgstr "Dosyalardan Öğren..."
 
 msgid "Learn from files..."
 msgstr "Dosyalardan öğren..."
@@ -1045,9 +1207,19 @@ msgstr "Yeni"
 msgid "Edit"
 msgstr "Düzenle"
 
+msgid "Delete extractor"
+msgstr "Çıkartıcıyı sil"
+
+#, c-format
+msgid "Are you sure you want to delete the “%s” extractor?"
+msgstr "\"%s\" çıkartıcısını silmek istediğinize emin misiniz?"
+
 msgid "Extractors"
 msgstr "Çıkarıcılar"
 
+msgid "Accounts"
+msgstr "Hesaplar"
+
 msgid "Automatically check for updates"
 msgstr "Güncellemeleri otomatik olarak kontrol et"
 
@@ -1082,7 +1254,7 @@ msgstr "Windows"
 
 #. TRANSLATORS: Followed by text control for entering number; wraps text at given width
 msgid "Wrap at:"
-msgstr "Kaydırma yönü:"
+msgstr "Kaydırma yeri:"
 
 msgid "Preserve formatting of existing files"
 msgstr "Varolan dosyaların biçimini koru"
@@ -1090,8 +1262,41 @@ msgstr "Varolan dosyaların biçimini koru"
 msgid "Advanced"
 msgstr "Gelişmiş"
 
-msgid "Additional keywords"
-msgstr "Ek anahtar kelimeler"
+msgid ""
+"<big>Drag and Drop Folders Here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+"<big>Klasörleri Buraya Sürükleyin ve Bırakın</big>\n"
+"\n"
+"ya da + düğmesini kullanın"
+
+msgid ""
+"<big>Drag and drop folders here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+"<big>Klasörleri buraya sürükleyin ve bırakın</big>\n"
+"\n"
+"ya da + düğmesini kullanın"
+
+msgid "Add Folders..."
+msgstr "Klasörleri Ekle..."
+
+msgid "Add folders..."
+msgstr "Klasörleri ekle..."
+
+msgid "Add Files..."
+msgstr "Dosyaları Ekle..."
+
+msgid "Add files..."
+msgstr "Dosyaları ekle..."
+
+msgid "Add Wildcard..."
+msgstr "Joker Karakter Ekle..."
+
+msgid "Add wildcard..."
+msgstr "Joker karakter ekle..."
 
 msgid "Paths"
 msgstr "Yollar"
@@ -1099,6 +1304,9 @@ msgstr "Yollar"
 msgid "Excluded paths"
 msgstr "Katılmayacak yollar"
 
+msgid "Additional keywords"
+msgstr "Ek anahtar kelimeler"
+
 msgid "Name of the project the translation is for"
 msgstr "Çevirisi yapılan projenin adı:"
 
@@ -1111,6 +1319,9 @@ msgstr "UTF-8 (önerilir)"
 msgid "Please save the file first. This section cannot be edited until then."
 msgstr "Lütfen önce dosyayı kaydedin. O zamana kadar bu bölüm düzenlenemez."
 
+msgid "Comment:"
+msgstr "Açıklama:"
+
 msgid "OK"
 msgstr "TAMAM"
 
@@ -1120,42 +1331,6 @@ msgstr "&Temizle"
 msgid "Clear the comment"
 msgstr "Açıklamayı temizle"
 
-msgid "Find..."
-msgstr "Bul..."
-
-msgid "String to find:"
-msgstr "Bulunacak dizge:"
-
-msgid "Case sensitive"
-msgstr "BÜYÜK/küçük harfe duyarlı"
-
-msgid "Start from the first item"
-msgstr "İlk öğeden başlat"
-
-msgid "Whole words only"
-msgstr "Sadece bütün kelime"
-
-msgid "Find in original strings"
-msgstr "Özgün dizgelerde bul"
-
-msgid "Find in translations"
-msgstr "Çevirilerde bul"
-
-msgid "Find in comments"
-msgstr "Açıklamalarda bul"
-
-msgid "Find in automatic comments"
-msgstr "Otomatik açıklamalarda bul"
-
-msgid "Close"
-msgstr "Kapat"
-
-msgid "< &Previous"
-msgstr "< Ön&ceki"
-
-msgid "&Next >"
-msgstr "So&nraki >"
-
 msgid "Create new translations project"
 msgstr "Yeni çeviri projesi oluştur"
 
@@ -1210,6 +1385,12 @@ msgstr "&Aç..."
 msgid "Open Recent"
 msgstr "Son Kullanılanları Açın"
 
+msgid "Open from Crowdin..."
+msgstr "Crowdin'den aç..."
+
+msgid "Open From Crowdin..."
+msgstr "Crowdin'den Aç..."
+
 msgid "&Save"
 msgstr "Kay&det"
 
@@ -1223,10 +1404,10 @@ msgid "Compile to MO..."
 msgstr "MO olarak derle..."
 
 msgid "E&xport as HTML..."
-msgstr "HTML olarak &verin..."
+msgstr "HTML olarak &dışa aktar..."
 
 msgid "Check for updates..."
-msgstr "Güncellemeleri denetleyin..."
+msgstr "Güncellemeleri kontrol et..."
 
 msgid "Catalogs &manager"
 msgstr "&Katalog yöneticisi"
@@ -1258,14 +1439,17 @@ msgstr "Referansları Gö&ster"
 msgid "&Find..."
 msgstr "B&ul..."
 
+msgid "Replace..."
+msgstr "Değiştir..."
+
 msgid "Find next"
 msgstr "Sonrakini bul"
 
 msgid "Find previous"
 msgstr "Öncekini bul"
 
-msgid "Find"
-msgstr "Bul"
+msgid "Find and Replace..."
+msgstr "Bul ve Değiştir..."
 
 msgid "Find Next"
 msgstr "Sonrakini Bul"
@@ -1277,10 +1461,10 @@ msgid "&Preferences"
 msgstr "&Tercihler"
 
 msgid "Display entry &IDs"
-msgstr "Giriş &kimliklerini görüntüle"
+msgstr "&Kayıt kodlarını görüntüle"
 
 msgid "Display Entry &IDs"
-msgstr "Giriş &Kimliklerini Görüntüle"
+msgstr "&Kayıt Kodlarını Görüntüle"
 
 msgid "Sort by &file order"
 msgstr "&Dosya düzenine göre sırala"
@@ -1306,6 +1490,12 @@ msgstr "Bağlama göre &grupla"
 msgid "&Group By Context"
 msgstr "Bağlama Göre &Grupla"
 
+msgid "Entries with errors first"
+msgstr "Önce hataları olan girişler"
+
+msgid "Entries with Errors First"
+msgstr "Önce Hataları olan Girişler"
+
 msgid "&Untranslated entries first"
 msgstr "Ç&evrilmemiş dizgeler en üstte görüntülensin"
 
@@ -1315,6 +1505,9 @@ msgstr "Ç&evrilmemiş Dizgeler En Üstte Görüntülensin"
 msgid "Show sidebar"
 msgstr "Kenar çubuğunu göster"
 
+msgid "Show status bar"
+msgstr "Durum çubuğunu göster"
+
 msgid "C&atalog"
 msgstr "&Katalog"
 
@@ -1330,6 +1523,9 @@ msgstr "&POT dosyasından güncelle..."
 msgid "Update from &POT File..."
 msgstr "&POT Dosyasından Güncelle..."
 
+msgid "Sync with Crowdin"
+msgstr "Crowdin ile eşitle"
+
 msgid "Fill missing translations from &TM..."
 msgstr "Eksik çevirileri çeviri belleğinden &doldur..."
 
@@ -1458,6 +1654,9 @@ msgstr ""
 msgid "Catalog properties"
 msgstr "Katalog özellikleri"
 
+msgid "Project name and version:"
+msgstr "Proje adı ve sürümü:"
+
 msgid "Plural Forms:"
 msgstr "Çoğul Biçimler:"
 
@@ -1470,17 +1669,29 @@ msgstr "Özel ifade kullan"
 msgid "Learn about plural forms"
 msgstr "Çoğul biçimler hakkında bilgi edinin"
 
+msgid "Charset:"
+msgstr "Karakter kümesi:"
+
+msgid "Team:"
+msgstr "Ekip:"
+
+msgid "Team's email address:"
+msgstr "Ekibin e-posta adresi:"
+
 msgid "Translation properties"
 msgstr "Çeviri özellikleri"
 
+msgid "Sources paths"
+msgstr "Kaynak yolları"
+
 msgid "Extract text from source files in the following directories:"
 msgstr "Kaynak dosyalardan metinleri şurada belirtilen dizinlere çıkart:"
 
 msgid "Base path:"
 msgstr "Temel yol:"
 
-msgid "Sources paths"
-msgstr "Kaynak yolları"
+msgid "Sources keywords"
+msgstr "Kaynak anahtar kelimeleri"
 
 msgid ""
 "Use these keywords (function names) to recognize translatable strings\n"
@@ -1492,9 +1703,6 @@ msgstr ""
 msgid "Learn about gettext keywords"
 msgstr "Gettext anahtar kelimeleri hakkında bilgi edinin"
 
-msgid "Sources keywords"
-msgstr "Kaynak anahtar kelimeleri"
-
 msgid "Update summary"
 msgstr "Güncelleme özeti"
 
@@ -1542,8 +1750,8 @@ msgstr "Kataloğu güncelleyin - kaynak dosyalarla eşitleyin"
 msgid "Toggled if selected string has fuzzy translation"
 msgstr "Seçilen satır eğer belirsiz çeviri ise değiştirilir"
 
-msgid "Show or hide the sidebar."
-msgstr "Kenar çubuğunu göster veya gizle."
+msgid "Show or hide the sidebar"
+msgstr "Kenar çubuğunu göster veya gizle"
 
 #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer.
 msgid "Previous source text:"
@@ -1556,6 +1764,9 @@ msgstr ""
 "Belirsiz çevirinin karşılık geldiği eski kaynak metin (bir güncelleme "
 "sırasında değiştirilmeden önceki hali)."
 
+msgid "Notes for translators:"
+msgstr "Çevirmenler için notlar:"
+
 msgid "Add comment"
 msgstr "Yorum ekle"
 
@@ -1635,9 +1846,6 @@ msgstr "Çeviriyi düzenle"
 msgid "Open an existing PO file and edit the translation."
 msgstr "Varolan bir PO dosyasını açın ve çeviriyi düzenleyin."
 
-msgid "Create new translation"
-msgstr "Yeni çeviri oluştur"
-
 msgid ""
 "Take an existing PO file or POT template and create a new translation from "
 "it."
@@ -1645,6 +1853,18 @@ msgstr ""
 "Varolan bir PO dosyası ya da POT şablonu alın ve bundan yeni bir çeviri "
 "oluşturun."
 
+msgid "Collaborate on a translation with Crowdin"
+msgstr "Crowdin ile bir çeviri üzerinde ortak çalış"
+
+msgid ""
+"Download a file from Crowdin project, translate and sync your changes back."
+msgstr ""
+"Crowdin projesinden bir dosya indirin, çevirin ve tekrar değişikliklerinizi "
+"eşitleyin."
+
+msgid "What is Crowdin?"
+msgstr "Crowdin nedir?"
+
 msgid "There are no translations. That’s unusual."
 msgstr "Çeviriler yok. Bu olağandışı bir durum."
 
@@ -1682,3 +1902,9 @@ msgstr "Kaynaklardan aktar"
 
 msgid "Configure source code extraction in Properties."
 msgstr "Özellikler'de kaynak kod çıkartmayı yapılandırın."
+
+msgid "Sync"
+msgstr "Eşitle"
+
+msgid "Synchronize the translation with Crowdin"
+msgstr "Çeviriyi Crowdin ile eşitle"
diff --git a/locales/tt.mo b/locales/tt.mo
index a0a0533..a34e4ca 100644
Binary files a/locales/tt.mo and b/locales/tt.mo differ
diff --git a/locales/tt.po b/locales/tt.po
index 854a6f9..cd0ec9e 100644
--- a/locales/tt.po
+++ b/locales/tt.po
@@ -2,8 +2,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: poedit\n"
 "Report-Msgid-Bugs-To: help at poedit.net\n"
-"POT-Creation-Date: 2015-01-10 16:00+0100\n"
-"PO-Revision-Date: 2015-03-10 12:34-0400\n"
+"POT-Creation-Date: 2015-05-27 11:31+0200\n"
+"PO-Revision-Date: 2015-05-27 05:18-0400\n"
 "Last-Translator: vslavik <vaclav at slavik.io>\n"
 "Language-Team: Tatar\n"
 "Language: tt_RU\n"
@@ -87,6 +87,15 @@ msgstr ""
 msgid "Error saving catalog"
 msgstr "Birem saqlağanda xata çıqtı"
 
+msgid "PO Translation Files"
+msgstr ""
+
+msgid "POT Translation Templates"
+msgstr ""
+
+msgid "All Translation Files"
+msgstr ""
+
 msgid "Merging differences..."
 msgstr "Ayırmalar östäw..."
 
@@ -106,6 +115,83 @@ msgstr "Tel saylaw"
 msgid "You must restart Poedit for this change to take effect."
 msgstr "Poedit yañadan ciberelgäç genä, bu üzgärtülär köçkä kerer."
 
+msgid "Downloading translations is disabled in this project."
+msgstr ""
+
+msgid "Not authorized, please sign in again."
+msgstr ""
+
+msgid "Sign in to Crowdin"
+msgstr ""
+
+msgid ""
+"Crowdin is an online localization management platform and collaborative "
+"translation tool. Poedit can seamlessly sync PO files managed at Crowdin."
+msgstr ""
+
+msgid "Sign In"
+msgstr ""
+
+msgid "Sign in"
+msgstr ""
+
+msgid "Sign Out"
+msgstr ""
+
+msgid "Sign out"
+msgstr ""
+
+msgid "Waiting for authentication…"
+msgstr ""
+
+msgid "Updating user information…"
+msgstr ""
+
+msgid "Signed in as:"
+msgstr ""
+
+msgid "Learn More About Crowdin"
+msgstr ""
+
+msgid "Learn more about Crowdin"
+msgstr ""
+
+msgid "Open Crowdin translation"
+msgstr ""
+
+msgid "Project:"
+msgstr ""
+
+msgid "Language:"
+msgstr "Tel:"
+
+msgid "File:"
+msgstr ""
+
+msgid "No translation projects listed in your Crowdin account."
+msgstr ""
+
+msgid "This project has no files that can be translated in Poedit."
+msgstr ""
+
+msgid "This file can only be edited in Crowdin’s web interface."
+msgstr ""
+
+msgid "Downloading latest translations…"
+msgstr ""
+
+msgid "Syncing with Crowdin"
+msgstr ""
+
+msgid "Syncing with Crowdin failed."
+msgstr ""
+
+msgid "Crowdin error"
+msgstr ""
+
+msgid "Uploading translations…"
+msgstr ""
+
 msgid "&Copy"
 msgstr ""
 
@@ -150,6 +236,12 @@ msgstr ""
 msgid "don't delete temporary files (for debugging)"
 msgstr ""
 
+msgid "handle a poedit:// URI"
+msgstr ""
+
+msgid "Failed to communicate with Poedit process."
+msgstr ""
+
 #, c-format
 msgid "Unhandled exception occurred: %s"
 msgstr ""
@@ -160,12 +252,6 @@ msgstr ""
 msgid "Open catalog"
 msgstr "Tuplama açu..."
 
-msgid "All Files"
-msgstr ""
-
-msgid "PO Translation Files"
-msgstr ""
-
 #, c-format
 msgid "File '%s' doesn't exist."
 msgstr "'%s' bireme barlıqta yuq."
@@ -393,6 +479,17 @@ msgstr "Törle:"
 msgid "Translation:"
 msgstr ""
 
+msgid ""
+"POT files are only templates and don’t contain any translations themselves.\n"
+"To make a translation, create a new PO file based on the template."
+msgstr ""
+
+msgid "Create New Translation"
+msgstr ""
+
+msgid "Create new translation"
+msgstr ""
+
 #. TRANSLATORS: %s is language name in its basic form (as you
 #. would see e.g. in a list of supported languages). You may need
 #. to rephrase it, e.g. to an equivalent of "for language %s".
@@ -440,9 +537,6 @@ msgstr ""
 msgid "Open catalog template"
 msgstr "Tuplama ürçetmäsen açu"
 
-msgid "POT Translation Templates"
-msgstr ""
-
 msgid "Updating catalog"
 msgstr ""
 
@@ -509,16 +603,18 @@ msgstr[0] ""
 msgid "The translation is ready for use."
 msgstr ""
 
-msgid "No references to this string found."
-msgstr "Bu kerem qullanu oçraqları tabılmadı."
-
-msgid "Please choose the reference you want to show:"
-msgstr "Qarísı kilgäne qullanu oçrağın sayla zínhar:"
+msgid "Context:"
+msgstr ""
 
-msgid "References"
-msgstr "Qullanılular"
+#, c-format
+msgid "Poedit automatically fixed invalid content in the file “%s”."
+msgstr ""
 
-msgid "Context:"
+msgid ""
+"The file contained duplicate items, which is not allowed in PO files and "
+"would prevent the file from being used. Poedit fixed the issue, but you "
+"should review translations of any items marked as fuzzy and correct them if "
+"necessary."
 msgstr ""
 
 msgid "Language of the translation isn't set."
@@ -530,6 +626,21 @@ msgstr ""
 msgid "Set language"
 msgstr ""
 
+#. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)."
+msgid ""
+"Suggestions are not available if the translation language is not set "
+"correctly. Other features, such as plural forms, may be affected as well."
+msgstr ""
+
+msgid "Language of the translation is the same as source language."
+msgstr ""
+
+msgid "Fix Language"
+msgstr ""
+
+msgid "Fix language"
+msgstr ""
+
 msgid ""
 "This catalog has entries with plural forms, but doesn't have Plural-Forms "
 "header configured."
@@ -560,6 +671,7 @@ msgstr ""
 msgid "Plural forms expression used by the catalog is unusual for %s."
 msgstr ""
 
+#. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the catalog is unusual for %s.")"
 msgid "Review"
 msgstr ""
 
@@ -580,6 +692,11 @@ msgid "%d error"
 msgid_plural "%d errors"
 msgstr[0] ""
 
+#, c-format
+msgid "%d entry"
+msgid_plural "%d entries"
+msgstr[0] ""
+
 msgid " (unsaved)"
 msgstr ""
 
@@ -691,6 +808,9 @@ msgstr ""
 msgid "Form %i"
 msgstr ""
 
+msgid "Singular"
+msgstr ""
+
 msgid "Zero"
 msgstr ""
 
@@ -700,6 +820,9 @@ msgstr ""
 msgid "Two"
 msgstr ""
 
+msgid "Plural"
+msgstr ""
+
 msgid "Other"
 msgstr ""
 
@@ -728,6 +851,12 @@ msgstr ""
 msgid "Show Sidebar"
 msgstr ""
 
+msgid "Hide Status Bar"
+msgstr ""
+
+msgid "Show Status Bar"
+msgstr ""
+
 msgid "Source text"
 msgstr ""
 
@@ -737,6 +866,10 @@ msgstr "Tärcemä"
 msgid "ID"
 msgstr ""
 
+#, c-format
+msgid "Source text — %s"
+msgstr ""
+
 msgid "unknown language"
 msgstr ""
 
@@ -747,57 +880,73 @@ msgstr ""
 msgid "Error:"
 msgstr ""
 
-msgid "Project info"
-msgstr "Projekt turında"
+msgid "Source file"
+msgstr "Çığanaq bireme"
 
-msgid "Project name and version:"
-msgstr "Projektnıñ adı-söreme:"
+msgid "Source file occurrence:"
+msgstr ""
 
-msgid "Language:"
-msgstr "Tel:"
+msgid "Open in Editor"
+msgstr ""
 
-msgid "Team:"
-msgstr "Törkem:"
+msgid "Open in editor"
+msgstr ""
 
-msgid "Team's email address:"
-msgstr "Törkemneñ email-adresı"
+msgid "No references for the selected item."
+msgstr ""
 
-msgid "Charset:"
-msgstr "Bilgelämä:"
+#, c-format
+msgid "Error opening file %s!"
+msgstr "%s biremen açqanda qata!"
 
-msgid "Source"
+msgid "Find"
 msgstr ""
 
-msgid "Notes"
-msgstr "Xäbärlär"
+msgid "Replace"
+msgstr ""
 
-msgid "Automatic translation"
-msgstr "Aqıllı tärcemä"
+#. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.)
+msgid "Options"
+msgstr ""
 
-msgid "Fuzzy translation"
-msgstr "Aqıllı tärcemä"
+msgid "Ignore case"
+msgstr ""
 
-msgid "Notes for translators:"
+msgid "Wrap around"
 msgstr ""
 
-msgid "Comment:"
-msgstr "Añlatma:"
+msgid "Whole words only"
+msgstr "Tulı süzlär genä"
 
-msgid "Source file"
-msgstr "Çığanaq bireme"
+msgid "Find in source texts"
+msgstr ""
 
-msgid "Source file occurrence:"
+msgid "Find in translations"
+msgstr "Tärcemälär arasında"
+
+msgid "Find in comments"
+msgstr "Añlatmada ezlise"
+
+msgid "Close"
 msgstr ""
 
-msgid "Open in Editor"
+msgid "Replace All"
 msgstr ""
 
-msgid "Open in editor"
+msgid "Replace all"
 msgstr ""
 
-#, c-format
-msgid "Error opening file %s!"
-msgstr "%s biremen açqanda qata!"
+msgid "< &Previous"
+msgstr ""
+
+msgid "&Next >"
+msgstr ""
+
+msgid "String to find"
+msgstr ""
+
+msgid "Replacement string"
+msgstr ""
 
 #, c-format
 msgid "Cannot execute program: %s"
@@ -989,9 +1138,19 @@ msgstr "Yaña"
 msgid "Edit"
 msgstr "Üzgärtü..."
 
+msgid "Delete extractor"
+msgstr ""
+
+#, c-format
+msgid "Are you sure you want to delete the “%s” extractor?"
+msgstr ""
+
 msgid "Extractors"
 msgstr ""
 
+msgid "Accounts"
+msgstr ""
+
 msgid "Automatically check for updates"
 msgstr ""
 
@@ -1030,7 +1189,34 @@ msgstr ""
 msgid "Advanced"
 msgstr ""
 
-msgid "Additional keywords"
+msgid ""
+"<big>Drag and Drop Folders Here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+
+msgid ""
+"<big>Drag and drop folders here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+
+msgid "Add Folders..."
+msgstr ""
+
+msgid "Add folders..."
+msgstr ""
+
+msgid "Add Files..."
+msgstr ""
+
+msgid "Add files..."
+msgstr ""
+
+msgid "Add Wildcard..."
+msgstr ""
+
+msgid "Add wildcard..."
 msgstr ""
 
 msgid "Paths"
@@ -1039,6 +1225,9 @@ msgstr "Yullar"
 msgid "Excluded paths"
 msgstr ""
 
+msgid "Additional keywords"
+msgstr ""
+
 msgid "Name of the project the translation is for"
 msgstr ""
 
@@ -1051,6 +1240,9 @@ msgstr ""
 msgid "Please save the file first. This section cannot be edited until then."
 msgstr ""
 
+msgid "Comment:"
+msgstr "Añlatma:"
+
 msgid "OK"
 msgstr "OK"
 
@@ -1060,42 +1252,6 @@ msgstr ""
 msgid "Clear the comment"
 msgstr "Beter bu añlatmanı"
 
-msgid "Find..."
-msgstr "Ezläw..."
-
-msgid "String to find:"
-msgstr "Ni ezlise:"
-
-msgid "Case sensitive"
-msgstr "Bieklegen ayırıp"
-
-msgid "Start from the first item"
-msgstr "Berençedän başlap"
-
-msgid "Whole words only"
-msgstr "Tulı süzlär genä"
-
-msgid "Find in original strings"
-msgstr "Çığanaq süzlärendä ezlise"
-
-msgid "Find in translations"
-msgstr "Tärcemälär arasında"
-
-msgid "Find in comments"
-msgstr "Añlatmada ezlise"
-
-msgid "Find in automatic comments"
-msgstr "Program östägän añlatmada ezlise"
-
-msgid "Close"
-msgstr ""
-
-msgid "< &Previous"
-msgstr ""
-
-msgid "&Next >"
-msgstr ""
-
 msgid "Create new translations project"
 msgstr "Yaña tärcemä projektın yasa"
 
@@ -1150,6 +1306,12 @@ msgstr ""
 msgid "Open Recent"
 msgstr ""
 
+msgid "Open from Crowdin..."
+msgstr ""
+
+msgid "Open From Crowdin..."
+msgstr ""
+
 msgid "&Save"
 msgstr "&Saqla"
 
@@ -1198,13 +1360,16 @@ msgstr ""
 msgid "&Find..."
 msgstr "&Ezläw..."
 
+msgid "Replace..."
+msgstr ""
+
 msgid "Find next"
 msgstr ""
 
 msgid "Find previous"
 msgstr ""
 
-msgid "Find"
+msgid "Find and Replace..."
 msgstr ""
 
 msgid "Find Next"
@@ -1246,6 +1411,12 @@ msgstr ""
 msgid "&Group By Context"
 msgstr ""
 
+msgid "Entries with errors first"
+msgstr ""
+
+msgid "Entries with Errors First"
+msgstr ""
+
 msgid "&Untranslated entries first"
 msgstr ""
 
@@ -1255,6 +1426,9 @@ msgstr ""
 msgid "Show sidebar"
 msgstr ""
 
+msgid "Show status bar"
+msgstr ""
+
 msgid "C&atalog"
 msgstr "&Tuplama"
 
@@ -1270,6 +1444,9 @@ msgstr "&POT biremennän yañartu..."
 msgid "Update from &POT File..."
 msgstr ""
 
+msgid "Sync with Crowdin"
+msgstr ""
+
 msgid "Fill missing translations from &TM..."
 msgstr ""
 
@@ -1393,6 +1570,9 @@ msgstr ""
 msgid "Catalog properties"
 msgstr ""
 
+msgid "Project name and version:"
+msgstr "Projektnıñ adı-söreme:"
+
 msgid "Plural Forms:"
 msgstr "Bar Törläre:"
 
@@ -1405,16 +1585,28 @@ msgstr ""
 msgid "Learn about plural forms"
 msgstr ""
 
+msgid "Charset:"
+msgstr "Bilgelämä:"
+
+msgid "Team:"
+msgstr "Törkem:"
+
+msgid "Team's email address:"
+msgstr "Törkemneñ email-adresı"
+
 msgid "Translation properties"
 msgstr ""
 
+msgid "Sources paths"
+msgstr ""
+
 msgid "Extract text from source files in the following directories:"
 msgstr ""
 
 msgid "Base path:"
 msgstr "Töp yul:"
 
-msgid "Sources paths"
+msgid "Sources keywords"
 msgstr ""
 
 msgid ""
@@ -1425,9 +1617,6 @@ msgstr ""
 msgid "Learn about gettext keywords"
 msgstr ""
 
-msgid "Sources keywords"
-msgstr ""
-
 msgid "Update summary"
 msgstr "Yomğağın yañart"
 
@@ -1475,7 +1664,7 @@ msgstr "Tuplamanı çığanaqlardan yañartu..."
 msgid "Toggled if selected string has fuzzy translation"
 msgstr "Saylanğan kerem tärcemäseneñ \"aqıllı\" bilgese"
 
-msgid "Show or hide the sidebar."
+msgid "Show or hide the sidebar"
 msgstr ""
 
 #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer.
@@ -1487,6 +1676,9 @@ msgid ""
 "translation corresponds to."
 msgstr ""
 
+msgid "Notes for translators:"
+msgstr ""
+
 msgid "Add comment"
 msgstr ""
 
@@ -1559,14 +1751,21 @@ msgstr ""
 msgid "Open an existing PO file and edit the translation."
 msgstr ""
 
-msgid "Create new translation"
-msgstr ""
-
 msgid ""
 "Take an existing PO file or POT template and create a new translation from "
 "it."
 msgstr ""
 
+msgid "Collaborate on a translation with Crowdin"
+msgstr ""
+
+msgid ""
+"Download a file from Crowdin project, translate and sync your changes back."
+msgstr ""
+
+msgid "What is Crowdin?"
+msgstr ""
+
 msgid "There are no translations. That’s unusual."
 msgstr ""
 
@@ -1599,3 +1798,9 @@ msgstr ""
 
 msgid "Configure source code extraction in Properties."
 msgstr ""
+
+msgid "Sync"
+msgstr ""
+
+msgid "Synchronize the translation with Crowdin"
+msgstr ""
diff --git a/locales/ug.mo b/locales/ug.mo
index a9e6f34..bf5ddd9 100644
Binary files a/locales/ug.mo and b/locales/ug.mo differ
diff --git a/locales/ug.po b/locales/ug.po
index ab8ee2e..2e2202b 100644
--- a/locales/ug.po
+++ b/locales/ug.po
@@ -2,8 +2,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: poedit\n"
 "Report-Msgid-Bugs-To: help at poedit.net\n"
-"POT-Creation-Date: 2015-01-10 16:00+0100\n"
-"PO-Revision-Date: 2015-03-10 12:34-0400\n"
+"POT-Creation-Date: 2015-05-27 11:31+0200\n"
+"PO-Revision-Date: 2015-05-27 05:18-0400\n"
 "Last-Translator: vslavik <vaclav at slavik.io>\n"
 "Language-Team: Uyghur\n"
 "Language: ug_CN\n"
@@ -87,6 +87,15 @@ msgstr ""
 msgid "Error saving catalog"
 msgstr "كاتالوگ ساقلاش خاتالىقى"
 
+msgid "PO Translation Files"
+msgstr ""
+
+msgid "POT Translation Templates"
+msgstr ""
+
+msgid "All Translation Files"
+msgstr ""
+
 msgid "Merging differences..."
 msgstr "پەرقنى بىرلەشتۈرۈۋاتىدۇ…"
 
@@ -106,6 +115,83 @@ msgstr "تىل تاللاش"
 msgid "You must restart Poedit for this change to take effect."
 msgstr "بۇ ئۆزگەرتىش كۈچكە ئىگە بولۇشى ئۈچۈن Poedit نى چوقۇم قايتا قوزغىتىڭ."
 
+msgid "Downloading translations is disabled in this project."
+msgstr ""
+
+msgid "Not authorized, please sign in again."
+msgstr ""
+
+msgid "Sign in to Crowdin"
+msgstr ""
+
+msgid ""
+"Crowdin is an online localization management platform and collaborative "
+"translation tool. Poedit can seamlessly sync PO files managed at Crowdin."
+msgstr ""
+
+msgid "Sign In"
+msgstr ""
+
+msgid "Sign in"
+msgstr ""
+
+msgid "Sign Out"
+msgstr ""
+
+msgid "Sign out"
+msgstr ""
+
+msgid "Waiting for authentication…"
+msgstr ""
+
+msgid "Updating user information…"
+msgstr ""
+
+msgid "Signed in as:"
+msgstr ""
+
+msgid "Learn More About Crowdin"
+msgstr ""
+
+msgid "Learn more about Crowdin"
+msgstr ""
+
+msgid "Open Crowdin translation"
+msgstr ""
+
+msgid "Project:"
+msgstr ""
+
+msgid "Language:"
+msgstr "تىل:"
+
+msgid "File:"
+msgstr ""
+
+msgid "No translation projects listed in your Crowdin account."
+msgstr ""
+
+msgid "This project has no files that can be translated in Poedit."
+msgstr ""
+
+msgid "This file can only be edited in Crowdin’s web interface."
+msgstr ""
+
+msgid "Downloading latest translations…"
+msgstr ""
+
+msgid "Syncing with Crowdin"
+msgstr ""
+
+msgid "Syncing with Crowdin failed."
+msgstr ""
+
+msgid "Crowdin error"
+msgstr ""
+
+msgid "Uploading translations…"
+msgstr ""
+
 msgid "&Copy"
 msgstr ""
 
@@ -150,6 +236,12 @@ msgstr ""
 msgid "don't delete temporary files (for debugging)"
 msgstr "ۋاقىتلىق ھۆججەتلەرنى ئۆچۈرمە (سازلاش ئۈچۈن)"
 
+msgid "handle a poedit:// URI"
+msgstr ""
+
+msgid "Failed to communicate with Poedit process."
+msgstr ""
+
 #, c-format
 msgid "Unhandled exception occurred: %s"
 msgstr ""
@@ -160,12 +252,6 @@ msgstr ""
 msgid "Open catalog"
 msgstr "كاتالوگ ئاچ"
 
-msgid "All Files"
-msgstr ""
-
-msgid "PO Translation Files"
-msgstr ""
-
 #, c-format
 msgid "File '%s' doesn't exist."
 msgstr "'%s' ھۆججەت مەۋجۇد ئەمەس."
@@ -393,6 +479,17 @@ msgstr "كۆپلۈك:"
 msgid "Translation:"
 msgstr "تەرجىمە:"
 
+msgid ""
+"POT files are only templates and don’t contain any translations themselves.\n"
+"To make a translation, create a new PO file based on the template."
+msgstr ""
+
+msgid "Create New Translation"
+msgstr ""
+
+msgid "Create new translation"
+msgstr ""
+
 #. TRANSLATORS: %s is language name in its basic form (as you
 #. would see e.g. in a list of supported languages). You may need
 #. to rephrase it, e.g. to an equivalent of "for language %s".
@@ -440,9 +537,6 @@ msgstr ""
 msgid "Open catalog template"
 msgstr "كاتالوگ قېلىپىنى ئاچ"
 
-msgid "POT Translation Templates"
-msgstr ""
-
 msgid "Updating catalog"
 msgstr ""
 
@@ -511,16 +605,18 @@ msgstr[0] ""
 msgid "The translation is ready for use."
 msgstr ""
 
-msgid "No references to this string found."
-msgstr "بۇ ھەرپ تىزمىسىنىڭ پايدىلانمىسى تېپىلمىدى"
-
-msgid "Please choose the reference you want to show:"
-msgstr "سىز كۆرسەتمەكچى بولغان پايدىلانمىنى تاللاڭ:"
+msgid "Context:"
+msgstr ""
 
-msgid "References"
-msgstr "نەقىل"
+#, c-format
+msgid "Poedit automatically fixed invalid content in the file “%s”."
+msgstr ""
 
-msgid "Context:"
+msgid ""
+"The file contained duplicate items, which is not allowed in PO files and "
+"would prevent the file from being used. Poedit fixed the issue, but you "
+"should review translations of any items marked as fuzzy and correct them if "
+"necessary."
 msgstr ""
 
 msgid "Language of the translation isn't set."
@@ -532,6 +628,21 @@ msgstr ""
 msgid "Set language"
 msgstr ""
 
+#. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)."
+msgid ""
+"Suggestions are not available if the translation language is not set "
+"correctly. Other features, such as plural forms, may be affected as well."
+msgstr ""
+
+msgid "Language of the translation is the same as source language."
+msgstr ""
+
+msgid "Fix Language"
+msgstr ""
+
+msgid "Fix language"
+msgstr ""
+
 msgid ""
 "This catalog has entries with plural forms, but doesn't have Plural-Forms "
 "header configured."
@@ -566,6 +677,7 @@ msgstr "باشنى ئوڭشا"
 msgid "Plural forms expression used by the catalog is unusual for %s."
 msgstr ""
 
+#. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the catalog is unusual for %s.")"
 msgid "Review"
 msgstr ""
 
@@ -586,6 +698,11 @@ msgid "%d error"
 msgid_plural "%d errors"
 msgstr[0] ""
 
+#, c-format
+msgid "%d entry"
+msgid_plural "%d entries"
+msgstr[0] ""
+
 msgid " (unsaved)"
 msgstr ""
 
@@ -700,6 +817,9 @@ msgstr ""
 msgid "Form %i"
 msgstr "شەكىل %i"
 
+msgid "Singular"
+msgstr ""
+
 msgid "Zero"
 msgstr ""
 
@@ -709,6 +829,9 @@ msgstr ""
 msgid "Two"
 msgstr ""
 
+msgid "Plural"
+msgstr ""
+
 msgid "Other"
 msgstr ""
 
@@ -737,6 +860,12 @@ msgstr ""
 msgid "Show Sidebar"
 msgstr ""
 
+msgid "Hide Status Bar"
+msgstr ""
+
+msgid "Show Status Bar"
+msgstr ""
+
 msgid "Source text"
 msgstr "مەنبە تېكست"
 
@@ -746,6 +875,10 @@ msgstr "تەرجىمىسى"
 msgid "ID"
 msgstr ""
 
+#, c-format
+msgid "Source text — %s"
+msgstr ""
+
 msgid "unknown language"
 msgstr ""
 
@@ -756,57 +889,73 @@ msgstr ""
 msgid "Error:"
 msgstr ""
 
-msgid "Project info"
-msgstr "قۇرۇلۇش ئۇچۇرى"
+msgid "Source file"
+msgstr "مەنبە ھۆججەت"
 
-msgid "Project name and version:"
-msgstr "قۇرۇلۇش ئاتى ۋە نەشرى:"
+msgid "Source file occurrence:"
+msgstr "مەنبە ھۆججەت ھادىسە:"
 
-msgid "Language:"
-msgstr "تىل:"
+msgid "Open in Editor"
+msgstr ""
 
-msgid "Team:"
-msgstr "قوشۇن:"
+msgid "Open in editor"
+msgstr ""
 
-msgid "Team's email address:"
-msgstr "قوشۇن ئېلخەت ئادرېسى:"
+msgid "No references for the selected item."
+msgstr ""
 
-msgid "Charset:"
-msgstr "كودلاش:"
+#, c-format
+msgid "Error opening file %s!"
+msgstr "%s ھۆججەت ئېچىش خاتالىقى!"
 
-msgid "Source"
-msgstr "مەنبە"
+msgid "Find"
+msgstr ""
 
-msgid "Notes"
-msgstr "ئىزاھاتلار"
+msgid "Replace"
+msgstr ""
 
-msgid "Automatic translation"
-msgstr "ئۆزلۈكىدىن تەرجىمە"
+#. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.)
+msgid "Options"
+msgstr ""
 
-msgid "Fuzzy translation"
-msgstr "مۈجمەل تەرجىمە"
+msgid "Ignore case"
+msgstr ""
 
-msgid "Notes for translators:"
+msgid "Wrap around"
 msgstr ""
 
-msgid "Comment:"
-msgstr "ئىزاھات:"
+msgid "Whole words only"
+msgstr "بارلىق سۆزلەرلا"
 
-msgid "Source file"
-msgstr "مەنبە ھۆججەت"
+msgid "Find in source texts"
+msgstr ""
 
-msgid "Source file occurrence:"
-msgstr "مەنبە ھۆججەت ھادىسە:"
+msgid "Find in translations"
+msgstr "تەرجىمىدىن ئىزدە"
 
-msgid "Open in Editor"
+msgid "Find in comments"
+msgstr "ئىزاھاتتىن ئىزدە"
+
+msgid "Close"
+msgstr "ياپ"
+
+msgid "Replace All"
 msgstr ""
 
-msgid "Open in editor"
+msgid "Replace all"
 msgstr ""
 
-#, c-format
-msgid "Error opening file %s!"
-msgstr "%s ھۆججەت ئېچىش خاتالىقى!"
+msgid "< &Previous"
+msgstr ""
+
+msgid "&Next >"
+msgstr ""
+
+msgid "String to find"
+msgstr ""
+
+msgid "Replacement string"
+msgstr ""
 
 #, c-format
 msgid "Cannot execute program: %s"
@@ -998,9 +1147,19 @@ msgstr "يېڭى"
 msgid "Edit"
 msgstr "تەھرىر"
 
+msgid "Delete extractor"
+msgstr ""
+
+#, c-format
+msgid "Are you sure you want to delete the “%s” extractor?"
+msgstr ""
+
 msgid "Extractors"
 msgstr ""
 
+msgid "Accounts"
+msgstr ""
+
 msgid "Automatically check for updates"
 msgstr ""
 
@@ -1039,7 +1198,34 @@ msgstr ""
 msgid "Advanced"
 msgstr ""
 
-msgid "Additional keywords"
+msgid ""
+"<big>Drag and Drop Folders Here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+
+msgid ""
+"<big>Drag and drop folders here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+
+msgid "Add Folders..."
+msgstr ""
+
+msgid "Add folders..."
+msgstr ""
+
+msgid "Add Files..."
+msgstr ""
+
+msgid "Add files..."
+msgstr ""
+
+msgid "Add Wildcard..."
+msgstr ""
+
+msgid "Add wildcard..."
 msgstr ""
 
 msgid "Paths"
@@ -1048,6 +1234,9 @@ msgstr "يول"
 msgid "Excluded paths"
 msgstr ""
 
+msgid "Additional keywords"
+msgstr ""
+
 msgid "Name of the project the translation is for"
 msgstr ""
 
@@ -1060,6 +1249,9 @@ msgstr "UTF-8 (تەۋسىيە)"
 msgid "Please save the file first. This section cannot be edited until then."
 msgstr ""
 
+msgid "Comment:"
+msgstr "ئىزاھات:"
+
 msgid "OK"
 msgstr "جەزملە"
 
@@ -1069,42 +1261,6 @@ msgstr ""
 msgid "Clear the comment"
 msgstr "ئىزاھاتنى تازىلا"
 
-msgid "Find..."
-msgstr "ئىزدە…"
-
-msgid "String to find:"
-msgstr "ھەرپ تىزمىسى ئىزدە:"
-
-msgid "Case sensitive"
-msgstr "چوڭ كىچىك يېزىلىشنى پەرقلەندۈر"
-
-msgid "Start from the first item"
-msgstr "بىرىنچى تۈردىن باشلا"
-
-msgid "Whole words only"
-msgstr "بارلىق سۆزلەرلا"
-
-msgid "Find in original strings"
-msgstr "ئەسلى تېكستتىن ئىزدە"
-
-msgid "Find in translations"
-msgstr "تەرجىمىدىن ئىزدە"
-
-msgid "Find in comments"
-msgstr "ئىزاھاتتىن ئىزدە"
-
-msgid "Find in automatic comments"
-msgstr "ئاپتوماتىك ئىزاھاتتىن ئىزدە"
-
-msgid "Close"
-msgstr "ياپ"
-
-msgid "< &Previous"
-msgstr ""
-
-msgid "&Next >"
-msgstr ""
-
 msgid "Create new translations project"
 msgstr "يېڭى تەرجىمە قۇرۇلۇشى قۇر"
 
@@ -1159,6 +1315,12 @@ msgstr "ئاچ(&O)…"
 msgid "Open Recent"
 msgstr ""
 
+msgid "Open from Crowdin..."
+msgstr ""
+
+msgid "Open From Crowdin..."
+msgstr ""
+
 msgid "&Save"
 msgstr "ساقلا(&S)"
 
@@ -1207,13 +1369,16 @@ msgstr "نەقىل ﻛﯚﺭﺳﻪﺕ(&S)"
 msgid "&Find..."
 msgstr "ئىزدە(&F)…"
 
+msgid "Replace..."
+msgstr ""
+
 msgid "Find next"
 msgstr ""
 
 msgid "Find previous"
 msgstr ""
 
-msgid "Find"
+msgid "Find and Replace..."
 msgstr ""
 
 msgid "Find Next"
@@ -1255,6 +1420,12 @@ msgstr ""
 msgid "&Group By Context"
 msgstr ""
 
+msgid "Entries with errors first"
+msgstr ""
+
+msgid "Entries with Errors First"
+msgstr ""
+
 msgid "&Untranslated entries first"
 msgstr "تەرجىمە قىلىنمىغان بىرىنچى تۈر(&U)"
 
@@ -1264,6 +1435,9 @@ msgstr "تەرجىمە قىلىنمىغان بىرىنچى تۈر(&U)"
 msgid "Show sidebar"
 msgstr ""
 
+msgid "Show status bar"
+msgstr ""
+
 msgid "C&atalog"
 msgstr "كاتالوگ(&A)"
 
@@ -1279,6 +1453,9 @@ msgstr "&POT ھۆججەتتىن يېڭىلا…"
 msgid "Update from &POT File..."
 msgstr "&POT ھۆججەتتىن يېڭىلا…"
 
+msgid "Sync with Crowdin"
+msgstr ""
+
 msgid "Fill missing translations from &TM..."
 msgstr ""
 
@@ -1402,6 +1579,9 @@ msgstr ""
 msgid "Catalog properties"
 msgstr "كاتالوگ خاسلىقى"
 
+msgid "Project name and version:"
+msgstr "قۇرۇلۇش ئاتى ۋە نەشرى:"
+
 msgid "Plural Forms:"
 msgstr "كۆپلۈك شەكلى:"
 
@@ -1414,17 +1594,29 @@ msgstr ""
 msgid "Learn about plural forms"
 msgstr ""
 
+msgid "Charset:"
+msgstr "كودلاش:"
+
+msgid "Team:"
+msgstr "قوشۇن:"
+
+msgid "Team's email address:"
+msgstr "قوشۇن ئېلخەت ئادرېسى:"
+
 msgid "Translation properties"
 msgstr "تەرجىمە خاسلىقى"
 
+msgid "Sources paths"
+msgstr "مەنبە يول"
+
 msgid "Extract text from source files in the following directories:"
 msgstr "تېكىستنى مەنبە ھۆججەتتىن تۆۋەندىكى مۇندەرىجىگە چىقار:"
 
 msgid "Base path:"
 msgstr "ئاساسىي يول:"
 
-msgid "Sources paths"
-msgstr "مەنبە يول"
+msgid "Sources keywords"
+msgstr "مەنبە ئاچقۇچلۇق سۆز"
 
 msgid ""
 "Use these keywords (function names) to recognize translatable strings\n"
@@ -1436,9 +1628,6 @@ msgstr ""
 msgid "Learn about gettext keywords"
 msgstr ""
 
-msgid "Sources keywords"
-msgstr "مەنبە ئاچقۇچلۇق سۆز"
-
 msgid "Update summary"
 msgstr "قىسقىچە مەزمۇننى يېڭىلا"
 
@@ -1486,7 +1675,7 @@ msgstr "كاتالوگ يېڭىلاش - ئەسلى ھۆججەت بويىچە ق
 msgid "Toggled if selected string has fuzzy translation"
 msgstr "تاللىغان ھەرپ تىزمىسىنىڭ مۈجمەل تەرجىمىسى بولسا ئالماشتۇرىدۇ"
 
-msgid "Show or hide the sidebar."
+msgid "Show or hide the sidebar"
 msgstr ""
 
 #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer.
@@ -1498,6 +1687,9 @@ msgid ""
 "translation corresponds to."
 msgstr ""
 
+msgid "Notes for translators:"
+msgstr ""
+
 msgid "Add comment"
 msgstr ""
 
@@ -1570,14 +1762,21 @@ msgstr ""
 msgid "Open an existing PO file and edit the translation."
 msgstr ""
 
-msgid "Create new translation"
-msgstr ""
-
 msgid ""
 "Take an existing PO file or POT template and create a new translation from "
 "it."
 msgstr ""
 
+msgid "Collaborate on a translation with Crowdin"
+msgstr ""
+
+msgid ""
+"Download a file from Crowdin project, translate and sync your changes back."
+msgstr ""
+
+msgid "What is Crowdin?"
+msgstr ""
+
 msgid "There are no translations. That’s unusual."
 msgstr ""
 
@@ -1610,3 +1809,9 @@ msgstr ""
 
 msgid "Configure source code extraction in Properties."
 msgstr ""
+
+msgid "Sync"
+msgstr ""
+
+msgid "Synchronize the translation with Crowdin"
+msgstr ""
diff --git a/locales/uk.mo b/locales/uk.mo
index 198a56f..d564aa7 100644
Binary files a/locales/uk.mo and b/locales/uk.mo differ
diff --git a/locales/uk.po b/locales/uk.po
index 3ddb334..a4ef54c 100644
--- a/locales/uk.po
+++ b/locales/uk.po
@@ -2,8 +2,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: poedit\n"
 "Report-Msgid-Bugs-To: help at poedit.net\n"
-"POT-Creation-Date: 2015-01-10 16:00+0100\n"
-"PO-Revision-Date: 2015-03-10 12:34-0400\n"
+"POT-Creation-Date: 2015-05-27 11:31+0200\n"
+"PO-Revision-Date: 2015-05-27 05:17-0400\n"
 "Last-Translator: vslavik <vaclav at slavik.io>\n"
 "Language-Team: Ukrainian\n"
 "Language: uk_UA\n"
@@ -96,6 +96,15 @@ msgstr ""
 msgid "Error saving catalog"
 msgstr "Помилка збереження каталогу"
 
+msgid "PO Translation Files"
+msgstr "Файли перекладу PO"
+
+msgid "POT Translation Templates"
+msgstr "Шаблони перекладу POT"
+
+msgid "All Translation Files"
+msgstr "Всі файли перекладу"
+
 msgid "Merging differences..."
 msgstr "Злиття відмінностей..."
 
@@ -115,6 +124,86 @@ msgstr "Вибір мови"
 msgid "You must restart Poedit for this change to take effect."
 msgstr "Зміни набудуть чинності після перезапуску Poedit."
 
+msgid "Downloading translations is disabled in this project."
+msgstr "Завантаження перекладів відключена в цьому проекті."
+
+msgid "Not authorized, please sign in again."
+msgstr "Не авторизовані, повторіть вхід до будь ласка."
+
+msgid "Sign in to Crowdin"
+msgstr "Увійти до Crowdin"
+
+msgid ""
+"Crowdin is an online localization management platform and collaborative "
+"translation tool. Poedit can seamlessly sync PO files managed at Crowdin."
+msgstr ""
+"Crowdin це онлайн платформа управління локалізаціями та інструмент для "
+"спільного перекладу. Poedit можна легко синхронізувати файли PO керованих в "
+"Crowdin."
+
+msgid "Sign In"
+msgstr "Увійти"
+
+msgid "Sign in"
+msgstr "Увійти"
+
+msgid "Sign Out"
+msgstr "Вийти"
+
+msgid "Sign out"
+msgstr "Вийти"
+
+msgid "Waiting for authentication…"
+msgstr "Очікування автентифікації…"
+
+msgid "Updating user information…"
+msgstr "Оновлення відомостей про користувача…"
+
+msgid "Signed in as:"
+msgstr "Увійшли як:"
+
+msgid "Learn More About Crowdin"
+msgstr "Дізнатися більше про Crowdin"
+
+msgid "Learn more about Crowdin"
+msgstr "Дізнатися більше про Crowdin"
+
+msgid "Open Crowdin translation"
+msgstr "Відкрити переклад Crowdin"
+
+msgid "Project:"
+msgstr "Проект:"
+
+msgid "Language:"
+msgstr "Мова:"
+
+msgid "File:"
+msgstr "Файл:"
+
+msgid "No translation projects listed in your Crowdin account."
+msgstr "Немає перекладацьких проектів у вашому обліковому записі Crowdin."
+
+msgid "This project has no files that can be translated in Poedit."
+msgstr "Цей проект не немає файлів, які можуть бути переведені в Poedit."
+
+msgid "This file can only be edited in Crowdin’s web interface."
+msgstr "Цей файл можна редагувати тільки за допомогою веб-інтерфейсу Crowdin."
+
+msgid "Downloading latest translations…"
+msgstr "Завантажити найновіший переклад…"
+
+msgid "Syncing with Crowdin"
+msgstr "Синхронізація з Crowdin"
+
+msgid "Syncing with Crowdin failed."
+msgstr "Не вдалось синхронізувати з Crowdin."
+
+msgid "Crowdin error"
+msgstr "Помилка Crowdin"
+
+msgid "Uploading translations…"
+msgstr "Відправка перекладу…"
+
 msgid "&Copy"
 msgstr "&Копіювати"
 
@@ -161,6 +250,12 @@ msgstr ""
 msgid "don't delete temporary files (for debugging)"
 msgstr "не стирати тимчасові файли (для зневадження)"
 
+msgid "handle a poedit:// URI"
+msgstr "handle a poedit:// URI"
+
+msgid "Failed to communicate with Poedit process."
+msgstr "Помилка зв’язку з процесом Poedit."
+
 #, c-format
 msgid "Unhandled exception occurred: %s"
 msgstr "Сталося непередбачене виключення: %s"
@@ -171,12 +266,6 @@ msgstr "Сталося непередбачене виключення."
 msgid "Open catalog"
 msgstr "Відкрити каталог"
 
-msgid "All Files"
-msgstr "Усі файли"
-
-msgid "PO Translation Files"
-msgstr "Файли перекладу PO"
-
 #, c-format
 msgid "File '%s' doesn't exist."
 msgstr "Файл '%s' не існує."
@@ -227,7 +316,7 @@ msgid "Check Document Now"
 msgstr "Перевірити документ зараз"
 
 msgid "Check Spelling While Typing"
-msgstr "Перевіряти правопис під час введення"
+msgstr "Перевіряти орфографію під час введення"
 
 msgid "Check Grammar With Spelling"
 msgstr "Перевірити граматику і правопис"
@@ -367,15 +456,15 @@ msgstr "Down"
 
 #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+"
 msgid "ctrl"
-msgstr "Ctrl"
+msgstr "ctrl"
 
 #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+"
 msgid "alt"
-msgstr "Alt"
+msgstr "alt"
 
 #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+"
 msgid "shift"
-msgstr "Shift"
+msgstr "shift"
 
 msgid "You can't drop more than one file on Poedit window."
 msgstr "Не можна перетягувати на вікно Poedit більш аніж один файл."
@@ -405,6 +494,19 @@ msgstr "Множина:"
 msgid "Translation:"
 msgstr "Переклад:"
 
+msgid ""
+"POT files are only templates and don’t contain any translations themselves.\n"
+"To make a translation, create a new PO file based on the template."
+msgstr ""
+"POT файли - лише шаблони і самі не містять будь-яких перекладів.\n"
+" Щоб зробити переклад, створіть новий файл PO, заснованому на цьому шаблоні."
+
+msgid "Create New Translation"
+msgstr "Створити новий переклад"
+
+msgid "Create new translation"
+msgstr "Створити новий переклад"
+
 #. TRANSLATORS: %s is language name in its basic form (as you
 #. would see e.g. in a list of supported languages). You may need
 #. to rephrase it, e.g. to an equivalent of "for language %s".
@@ -453,9 +555,6 @@ msgstr "HTML файли"
 msgid "Open catalog template"
 msgstr "Відкрити шаблон каталогу"
 
-msgid "POT Translation Templates"
-msgstr "Шаблони перекладу POT"
-
 msgid "Updating catalog"
 msgstr "Поновлюю каталог..."
 
@@ -537,18 +636,24 @@ msgstr[2] "Переклад готовий до використання, але
 msgid "The translation is ready for use."
 msgstr "Переклад готовий до використання."
 
-msgid "No references to this string found."
-msgstr "Посилань на цей рядок не знайдено."
-
-msgid "Please choose the reference you want to show:"
-msgstr "Виберіть посилання, яке Ви хочете переглянути:"
-
-msgid "References"
-msgstr "Посилання"
-
 msgid "Context:"
 msgstr "Контекст:"
 
+#, c-format
+msgid "Poedit automatically fixed invalid content in the file “%s”."
+msgstr "Poedit автоматично виправив хибний вміст у файлі „%s“."
+
+msgid ""
+"The file contained duplicate items, which is not allowed in PO files and "
+"would prevent the file from being used. Poedit fixed the issue, but you "
+"should review translations of any items marked as fuzzy and correct them if "
+"necessary."
+msgstr ""
+"Файл містив дубльовані елементи, що не дозволяються у PO-файлах і "
+"унеможливлює використання файла. Poedit виправив цю помилку, проте Ви "
+"повинні переглянути переклади, позначені як „неточні“, та за потреби їх "
+"виправити."
+
 msgid "Language of the translation isn't set."
 msgstr "Мова перекладу не вказана."
 
@@ -558,6 +663,23 @@ msgstr "Вибрати мову"
 msgid "Set language"
 msgstr "Вибрати мову"
 
+#. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)."
+msgid ""
+"Suggestions are not available if the translation language is not set "
+"correctly. Other features, such as plural forms, may be affected as well."
+msgstr ""
+"Пропозиції будуть недоступними, якщо неправильно вказано мову перекладу. "
+"Інші функції, такі як форми множини, також можуть бути порушені."
+
+msgid "Language of the translation is the same as source language."
+msgstr "Мова перекладу така сама, як і вихідна мова."
+
+msgid "Fix Language"
+msgstr "Встановити мову"
+
+msgid "Fix language"
+msgstr "Встановити мову"
+
 msgid ""
 "This catalog has entries with plural forms, but doesn't have Plural-Forms "
 "header configured."
@@ -592,6 +714,7 @@ msgstr "Виправити заголовок"
 msgid "Plural forms expression used by the catalog is unusual for %s."
 msgstr "Вираз форми множини, вжитий у каталозі, незвичний для %s."
 
+#. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the catalog is unusual for %s.")"
 msgid "Review"
 msgstr "Огляд"
 
@@ -614,6 +737,13 @@ msgstr[0] "%d помилка"
 msgstr[1] "%d помилки"
 msgstr[2] "%d помилок"
 
+#, c-format
+msgid "%d entry"
+msgid_plural "%d entries"
+msgstr[0] "%d елемент"
+msgstr[1] "%d елементи"
+msgstr[2] "%d елементів"
+
 msgid " (unsaved)"
 msgstr " (не збережено)"
 
@@ -739,6 +869,9 @@ msgstr "Усе"
 msgid "Form %i"
 msgstr "Форма %i"
 
+msgid "Singular"
+msgstr "Однина"
+
 msgid "Zero"
 msgstr "Нуль"
 
@@ -748,6 +881,9 @@ msgstr "Один"
 msgid "Two"
 msgstr "Два"
 
+msgid "Plural"
+msgstr "Множина"
+
 msgid "Other"
 msgstr "Інше"
 
@@ -776,6 +912,12 @@ msgstr "Приховати бічну панель"
 msgid "Show Sidebar"
 msgstr "Показати бічну панель"
 
+msgid "Hide Status Bar"
+msgstr "Приховати панель стану"
+
+msgid "Show Status Bar"
+msgstr "Показати панель стану"
+
 msgid "Source text"
 msgstr "Оригінал"
 
@@ -785,6 +927,10 @@ msgstr "Переклад"
 msgid "ID"
 msgstr "Ідентифікатор"
 
+#, c-format
+msgid "Source text — %s"
+msgstr "Вихідний текст — %s"
+
 msgid "unknown language"
 msgstr "невідома мова"
 
@@ -795,57 +941,73 @@ msgstr "Переклад — %s"
 msgid "Error:"
 msgstr "Збій:"
 
-msgid "Project info"
-msgstr "Інформація про проект"
+msgid "Source file"
+msgstr "Джерельний файл"
 
-msgid "Project name and version:"
-msgstr "Назва та версія проекту:"
+msgid "Source file occurrence:"
+msgstr "Розташування джерельного файлу:"
 
-msgid "Language:"
-msgstr "Мова:"
+msgid "Open in Editor"
+msgstr "Відкрити в редакторі"
 
-msgid "Team:"
-msgstr "Команда:"
+msgid "Open in editor"
+msgstr "Відкрити в редакторі"
 
-msgid "Team's email address:"
-msgstr "Електронна пошта команди:"
+msgid "No references for the selected item."
+msgstr "Немає посилання для вибраного елемента."
 
-msgid "Charset:"
-msgstr "Кодування каталогу:"
+#, c-format
+msgid "Error opening file %s!"
+msgstr "Помилка при відкритті файлу '%s'!"
 
-msgid "Source"
-msgstr "Джерело"
+msgid "Find"
+msgstr "Знайти"
 
-msgid "Notes"
-msgstr "Нотатки"
+msgid "Replace"
+msgstr "Замінити"
 
-msgid "Automatic translation"
-msgstr "Автоматичний переклад"
+#. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.)
+msgid "Options"
+msgstr "Опції"
 
-msgid "Fuzzy translation"
-msgstr "Неточний переклад"
+msgid "Ignore case"
+msgstr "Ігнорувати регістр"
 
-msgid "Notes for translators:"
-msgstr "Примітка для перекладачів:"
+msgid "Wrap around"
+msgstr "По колу"
 
-msgid "Comment:"
-msgstr "Коментар:"
+msgid "Whole words only"
+msgstr "Лише повні слова"
 
-msgid "Source file"
-msgstr "Джерельний файл"
+msgid "Find in source texts"
+msgstr "Шукати у вихідних текстах"
 
-msgid "Source file occurrence:"
-msgstr "Розташування джерельного файлу:"
+msgid "Find in translations"
+msgstr "Пошук у перекладах"
 
-msgid "Open in Editor"
-msgstr "Відкрити в редакторі"
+msgid "Find in comments"
+msgstr "Шукати в коментарях"
 
-msgid "Open in editor"
-msgstr "Відкрити в редакторі"
+msgid "Close"
+msgstr "Закрити"
 
-#, c-format
-msgid "Error opening file %s!"
-msgstr "Помилка при відкритті файлу '%s'!"
+msgid "Replace All"
+msgstr "Замінити всі"
+
+msgid "Replace all"
+msgstr "Замінити всі"
+
+msgid "< &Previous"
+msgstr "< &Попереднє"
+
+msgid "&Next >"
+msgstr "&Наступне >"
+
+msgid "String to find"
+msgstr "Рядок пошуку"
+
+msgid "Replacement string"
+msgstr "Рядок заміни"
 
 #, c-format
 msgid "Cannot execute program: %s"
@@ -945,9 +1107,9 @@ msgid ""
 "arrows for keyboard navigation but you can also type text immediately, "
 "without having to press Tab to change focus."
 msgstr ""
-"Ніколи не давати фокус списку рядків. Якщо активовано, можна використовувати "
-"Ctrl+стрілки для навігації за допомогою клавіатури, але ввід тексту можна "
-"починати одразу не натискаючи Tab для зміни фокусу."
+"Ніколи не дозволяйте списку рядків отримати фокус. Якщо активовано, можна "
+"використовувати Ctrl+стрілки для навігації за допомогою клавіатури, але ввід "
+"тексту можна починати одразу не натискаючи Tab для зміни фокусу."
 
 msgid "Appearance"
 msgstr "Зовнішній вигляд"
@@ -1049,9 +1211,19 @@ msgstr "Новий"
 msgid "Edit"
 msgstr "Редагувати"
 
+msgid "Delete extractor"
+msgstr "Видалити екстрактор"
+
+#, c-format
+msgid "Are you sure you want to delete the “%s” extractor?"
+msgstr "Ви впевнені, що бажаєте видалити екстрактор \"%s\"?"
+
 msgid "Extractors"
 msgstr "Екстрактори"
 
+msgid "Accounts"
+msgstr "Облікові записи"
+
 msgid "Automatically check for updates"
 msgstr "Автоматично перевіряти оновлення"
 
@@ -1095,8 +1267,41 @@ msgstr "Зберігати форматування існуючих файлі
 msgid "Advanced"
 msgstr "Розширені параметри"
 
-msgid "Additional keywords"
-msgstr "Додаткові ключові слова"
+msgid ""
+"<big>Drag and Drop Folders Here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+"<big>Перетягніть теки сюди</big>\n"
+"\n"
+"або використайте кнопку „+“"
+
+msgid ""
+"<big>Drag and drop folders here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+"<big>Перетягніть теки сюди</big>\n"
+"\n"
+"або використайте кнопку „+“"
+
+msgid "Add Folders..."
+msgstr "Додати теки..."
+
+msgid "Add folders..."
+msgstr "Додати теки..."
+
+msgid "Add Files..."
+msgstr "Додати файли..."
+
+msgid "Add files..."
+msgstr "Додати файли..."
+
+msgid "Add Wildcard..."
+msgstr "Додати шаблон..."
+
+msgid "Add wildcard..."
+msgstr "Додати шаблон..."
 
 msgid "Paths"
 msgstr "Шляхи"
@@ -1104,6 +1309,9 @@ msgstr "Шляхи"
 msgid "Excluded paths"
 msgstr "Виключені шляхи"
 
+msgid "Additional keywords"
+msgstr "Додаткові ключові слова"
+
 msgid "Name of the project the translation is for"
 msgstr "Назва проекту, для якого призначений переклад"
 
@@ -1117,6 +1325,9 @@ msgid "Please save the file first. This section cannot be edited until then."
 msgstr ""
 "Будь ласка, спершу збережіть файл. Цей розділ не можна редагувати до тих пір."
 
+msgid "Comment:"
+msgstr "Коментар:"
+
 msgid "OK"
 msgstr "Гаразд"
 
@@ -1126,42 +1337,6 @@ msgstr "&Стерти"
 msgid "Clear the comment"
 msgstr "Очистити коментар"
 
-msgid "Find..."
-msgstr "Пошук..."
-
-msgid "String to find:"
-msgstr "Знайти рядок:"
-
-msgid "Case sensitive"
-msgstr "Враховувати регістр"
-
-msgid "Start from the first item"
-msgstr "Почати з першого елементу"
-
-msgid "Whole words only"
-msgstr "Лише повні слова"
-
-msgid "Find in original strings"
-msgstr "Пошук у початкових рядках"
-
-msgid "Find in translations"
-msgstr "Пошук у перекладах"
-
-msgid "Find in comments"
-msgstr "Шукати в коментарях"
-
-msgid "Find in automatic comments"
-msgstr "Шукати в автоматичних коментарях"
-
-msgid "Close"
-msgstr "Закрити"
-
-msgid "< &Previous"
-msgstr "< &Попереднє"
-
-msgid "&Next >"
-msgstr "&Наступне >"
-
 msgid "Create new translations project"
 msgstr "Створити новий проект перекладів"
 
@@ -1216,6 +1391,12 @@ msgstr "&Відкрити..."
 msgid "Open Recent"
 msgstr "Відкрити нещодавні"
 
+msgid "Open from Crowdin..."
+msgstr "Відкрити на Crowdin..."
+
+msgid "Open From Crowdin..."
+msgstr "Відкрити на Crowdin..."
+
 msgid "&Save"
 msgstr "&Зберегти"
 
@@ -1264,14 +1445,17 @@ msgstr "&Показувати посилання"
 msgid "&Find..."
 msgstr "&Знайти..."
 
+msgid "Replace..."
+msgstr "Замінити..."
+
 msgid "Find next"
 msgstr "Знайти наступне"
 
 msgid "Find previous"
 msgstr "Знайти попереднє"
 
-msgid "Find"
-msgstr "Знайти"
+msgid "Find and Replace..."
+msgstr "Знайти і замінити..."
 
 msgid "Find Next"
 msgstr "Знайти наступне"
@@ -1312,6 +1496,12 @@ msgstr "&Групувати по контексту"
 msgid "&Group By Context"
 msgstr "&Групувати по контексту"
 
+msgid "Entries with errors first"
+msgstr "Записи з помилками - згори"
+
+msgid "Entries with Errors First"
+msgstr "Записи з помилками - згори"
+
 msgid "&Untranslated entries first"
 msgstr "&Неперекладене — згори"
 
@@ -1321,6 +1511,9 @@ msgstr "Неперекладене — &згори"
 msgid "Show sidebar"
 msgstr "Показати бічну панель"
 
+msgid "Show status bar"
+msgstr "Показати панель стану"
+
 msgid "C&atalog"
 msgstr "&Каталог"
 
@@ -1336,6 +1529,9 @@ msgstr "Поновити з POT-файлу..."
 msgid "Update from &POT File..."
 msgstr "Поновити з POT-&файлу..."
 
+msgid "Sync with Crowdin"
+msgstr "Синхронізація з Crowdin"
+
 msgid "Fill missing translations from &TM..."
 msgstr "Заповнити відсутні переклади з пам'яті перекладів..."
 
@@ -1463,6 +1659,9 @@ msgstr ""
 msgid "Catalog properties"
 msgstr "Властивості каталогу"
 
+msgid "Project name and version:"
+msgstr "Назва та версія проекту:"
+
 msgid "Plural Forms:"
 msgstr "Форми множини:"
 
@@ -1475,17 +1674,29 @@ msgstr "Використовувати користувальницький ви
 msgid "Learn about plural forms"
 msgstr "Дізнатися більше про форми множини"
 
+msgid "Charset:"
+msgstr "Кодування каталогу:"
+
+msgid "Team:"
+msgstr "Команда:"
+
+msgid "Team's email address:"
+msgstr "Електронна пошта команди:"
+
 msgid "Translation properties"
 msgstr "Властивості перекладу"
 
+msgid "Sources paths"
+msgstr "Шлях до джерела"
+
 msgid "Extract text from source files in the following directories:"
 msgstr "Шукати джерельний текст у наступних теках:"
 
 msgid "Base path:"
 msgstr "Базовий шлях:"
 
-msgid "Sources paths"
-msgstr "Шлях до джерела"
+msgid "Sources keywords"
+msgstr "Ключові слова"
 
 msgid ""
 "Use these keywords (function names) to recognize translatable strings\n"
@@ -1498,9 +1709,6 @@ msgstr ""
 msgid "Learn about gettext keywords"
 msgstr "Дізнатися більше про ключові слова gettext"
 
-msgid "Sources keywords"
-msgstr "Ключові слова"
-
 msgid "Update summary"
 msgstr "Підсумок про поновлення"
 
@@ -1548,7 +1756,7 @@ msgstr "Поновлення каталогу — синхронізація з
 msgid "Toggled if selected string has fuzzy translation"
 msgstr "Натиснуто, якщо рядок містить неточний переклад"
 
-msgid "Show or hide the sidebar."
+msgid "Show or hide the sidebar"
 msgstr "Показати або сховати бічну панель"
 
 #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer.
@@ -1561,6 +1769,9 @@ msgid ""
 msgstr ""
 "Старий вихідний текст (до оновлення), якому відповідає нечіткий переклад."
 
+msgid "Notes for translators:"
+msgstr "Примітка для перекладачів:"
+
 msgid "Add comment"
 msgstr "Додати коментар"
 
@@ -1640,14 +1851,22 @@ msgstr "Редагувати переклад"
 msgid "Open an existing PO file and edit the translation."
 msgstr "Відкрити наявний PO-файл та редагувати переклад."
 
-msgid "Create new translation"
-msgstr "Створити новий переклад"
-
 msgid ""
 "Take an existing PO file or POT template and create a new translation from "
 "it."
 msgstr "Створення перекладу на основі існуючого PO-файлу або POT-шаблону."
 
+msgid "Collaborate on a translation with Crowdin"
+msgstr "Спільна робота над перекладом з Crowdin"
+
+msgid ""
+"Download a file from Crowdin project, translate and sync your changes back."
+msgstr ""
+"Завантажити файл з проекту Crowdin, перекласти та синхронізувати зміни назад."
+
+msgid "What is Crowdin?"
+msgstr "Що таке Crowdin?"
+
 msgid "There are no translations. That’s unusual."
 msgstr "Дивно, але переклад відсутній."
 
@@ -1686,3 +1905,9 @@ msgstr "Видобути з джерел"
 
 msgid "Configure source code extraction in Properties."
 msgstr "Налаштувати видобуток вихідного коду у Властивостях."
+
+msgid "Sync"
+msgstr "Синхронізувати"
+
+msgid "Synchronize the translation with Crowdin"
+msgstr "Синхронізувати переклад з Crowdin"
diff --git a/locales/ur.mo b/locales/ur.mo
index 16e772f..43483bf 100644
Binary files a/locales/ur.mo and b/locales/ur.mo differ
diff --git a/locales/ur.po b/locales/ur.po
index e8003e9..be84861 100644
--- a/locales/ur.po
+++ b/locales/ur.po
@@ -2,8 +2,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: poedit\n"
 "Report-Msgid-Bugs-To: help at poedit.net\n"
-"POT-Creation-Date: 2015-01-10 16:00+0100\n"
-"PO-Revision-Date: 2015-03-10 12:34-0400\n"
+"POT-Creation-Date: 2015-05-27 11:31+0200\n"
+"PO-Revision-Date: 2015-05-27 05:17-0400\n"
 "Last-Translator: vslavik <vaclav at slavik.io>\n"
 "Language-Team: Urdu (Pakistan)\n"
 "Language: ur_PK\n"
@@ -84,6 +84,15 @@ msgstr ""
 msgid "Error saving catalog"
 msgstr "فرد محفوظ کرنے میں غلطی"
 
+msgid "PO Translation Files"
+msgstr ""
+
+msgid "POT Translation Templates"
+msgstr ""
+
+msgid "All Translation Files"
+msgstr ""
+
 msgid "Merging differences..."
 msgstr "انجذاب کے فرق۔۔۔"
 
@@ -103,6 +112,83 @@ msgstr "انتخابِ زبان"
 msgid "You must restart Poedit for this change to take effect."
 msgstr "اس تبدیلی کو اطلاق پذیر بنانے کے لیے آپ کو پو ایڈٹ دوبارہ چلانا ہوگا۔"
 
+msgid "Downloading translations is disabled in this project."
+msgstr ""
+
+msgid "Not authorized, please sign in again."
+msgstr ""
+
+msgid "Sign in to Crowdin"
+msgstr ""
+
+msgid ""
+"Crowdin is an online localization management platform and collaborative "
+"translation tool. Poedit can seamlessly sync PO files managed at Crowdin."
+msgstr ""
+
+msgid "Sign In"
+msgstr ""
+
+msgid "Sign in"
+msgstr ""
+
+msgid "Sign Out"
+msgstr ""
+
+msgid "Sign out"
+msgstr ""
+
+msgid "Waiting for authentication…"
+msgstr ""
+
+msgid "Updating user information…"
+msgstr ""
+
+msgid "Signed in as:"
+msgstr ""
+
+msgid "Learn More About Crowdin"
+msgstr ""
+
+msgid "Learn more about Crowdin"
+msgstr ""
+
+msgid "Open Crowdin translation"
+msgstr ""
+
+msgid "Project:"
+msgstr ""
+
+msgid "Language:"
+msgstr "زبان:"
+
+msgid "File:"
+msgstr ""
+
+msgid "No translation projects listed in your Crowdin account."
+msgstr ""
+
+msgid "This project has no files that can be translated in Poedit."
+msgstr ""
+
+msgid "This file can only be edited in Crowdin’s web interface."
+msgstr ""
+
+msgid "Downloading latest translations…"
+msgstr ""
+
+msgid "Syncing with Crowdin"
+msgstr ""
+
+msgid "Syncing with Crowdin failed."
+msgstr ""
+
+msgid "Crowdin error"
+msgstr ""
+
+msgid "Uploading translations…"
+msgstr ""
+
 msgid "&Copy"
 msgstr ""
 
@@ -147,6 +233,12 @@ msgstr ""
 msgid "don't delete temporary files (for debugging)"
 msgstr ""
 
+msgid "handle a poedit:// URI"
+msgstr ""
+
+msgid "Failed to communicate with Poedit process."
+msgstr ""
+
 #, c-format
 msgid "Unhandled exception occurred: %s"
 msgstr ""
@@ -157,12 +249,6 @@ msgstr ""
 msgid "Open catalog"
 msgstr "فرد کھولیں"
 
-msgid "All Files"
-msgstr "تمام فائلیں"
-
-msgid "PO Translation Files"
-msgstr ""
-
 #, c-format
 msgid "File '%s' doesn't exist."
 msgstr "'%s' فائل وجود نہیں رکھتی"
@@ -390,6 +476,17 @@ msgstr "جمع:"
 msgid "Translation:"
 msgstr ""
 
+msgid ""
+"POT files are only templates and don’t contain any translations themselves.\n"
+"To make a translation, create a new PO file based on the template."
+msgstr ""
+
+msgid "Create New Translation"
+msgstr ""
+
+msgid "Create new translation"
+msgstr ""
+
 #. TRANSLATORS: %s is language name in its basic form (as you
 #. would see e.g. in a list of supported languages). You may need
 #. to rephrase it, e.g. to an equivalent of "for language %s".
@@ -437,9 +534,6 @@ msgstr ""
 msgid "Open catalog template"
 msgstr "فردی سانچہ کھولیں"
 
-msgid "POT Translation Templates"
-msgstr ""
-
 msgid "Updating catalog"
 msgstr ""
 
@@ -508,16 +602,18 @@ msgstr[1] ""
 msgid "The translation is ready for use."
 msgstr ""
 
-msgid "No references to this string found."
-msgstr "اس ڈورے کے کوئی حوالہ جات نہیں ملے۔"
-
-msgid "Please choose the reference you want to show:"
-msgstr "براہ کرم حوالہ منتخب کریں جو آپ دکھانا چاہتے ہیں:"
+msgid "Context:"
+msgstr ""
 
-msgid "References"
-msgstr "حوالہ جات"
+#, c-format
+msgid "Poedit automatically fixed invalid content in the file “%s”."
+msgstr ""
 
-msgid "Context:"
+msgid ""
+"The file contained duplicate items, which is not allowed in PO files and "
+"would prevent the file from being used. Poedit fixed the issue, but you "
+"should review translations of any items marked as fuzzy and correct them if "
+"necessary."
 msgstr ""
 
 msgid "Language of the translation isn't set."
@@ -529,6 +625,21 @@ msgstr ""
 msgid "Set language"
 msgstr ""
 
+#. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)."
+msgid ""
+"Suggestions are not available if the translation language is not set "
+"correctly. Other features, such as plural forms, may be affected as well."
+msgstr ""
+
+msgid "Language of the translation is the same as source language."
+msgstr ""
+
+msgid "Fix Language"
+msgstr ""
+
+msgid "Fix language"
+msgstr ""
+
 msgid ""
 "This catalog has entries with plural forms, but doesn't have Plural-Forms "
 "header configured."
@@ -559,6 +670,7 @@ msgstr ""
 msgid "Plural forms expression used by the catalog is unusual for %s."
 msgstr ""
 
+#. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the catalog is unusual for %s.")"
 msgid "Review"
 msgstr ""
 
@@ -580,6 +692,12 @@ msgid_plural "%d errors"
 msgstr[0] ""
 msgstr[1] ""
 
+#, c-format
+msgid "%d entry"
+msgid_plural "%d entries"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid " (unsaved)"
 msgstr ""
 
@@ -693,6 +811,9 @@ msgstr ""
 msgid "Form %i"
 msgstr ""
 
+msgid "Singular"
+msgstr ""
+
 msgid "Zero"
 msgstr ""
 
@@ -702,6 +823,9 @@ msgstr ""
 msgid "Two"
 msgstr ""
 
+msgid "Plural"
+msgstr ""
+
 msgid "Other"
 msgstr ""
 
@@ -730,6 +854,12 @@ msgstr ""
 msgid "Show Sidebar"
 msgstr ""
 
+msgid "Hide Status Bar"
+msgstr ""
+
+msgid "Show Status Bar"
+msgstr ""
+
 msgid "Source text"
 msgstr ""
 
@@ -739,6 +869,10 @@ msgstr "ترجمہ"
 msgid "ID"
 msgstr ""
 
+#, c-format
+msgid "Source text — %s"
+msgstr ""
+
 msgid "unknown language"
 msgstr ""
 
@@ -749,57 +883,73 @@ msgstr ""
 msgid "Error:"
 msgstr ""
 
-msgid "Project info"
-msgstr "منصوبہ جاتی معلومات"
+msgid "Source file"
+msgstr "ماخذی فائل"
 
-msgid "Project name and version:"
-msgstr "منصوبے کا نام اور  نسخہ(ورژن):"
+msgid "Source file occurrence:"
+msgstr ""
 
-msgid "Language:"
-msgstr "زبان:"
+msgid "Open in Editor"
+msgstr ""
 
-msgid "Team:"
-msgstr "ٹیم:"
+msgid "Open in editor"
+msgstr ""
 
-msgid "Team's email address:"
-msgstr "ٹیم کا برقی پتہ:"
+msgid "No references for the selected item."
+msgstr ""
 
-msgid "Charset:"
-msgstr "کیریکٹر سیٹ:"
+#, c-format
+msgid "Error opening file %s!"
+msgstr "فائل %s کھولنے میں غلطی!"
 
-msgid "Source"
+msgid "Find"
 msgstr ""
 
-msgid "Notes"
-msgstr "نوٹس"
+msgid "Replace"
+msgstr ""
 
-msgid "Automatic translation"
-msgstr "خودکار ترجمہ"
+#. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.)
+msgid "Options"
+msgstr ""
 
-msgid "Fuzzy translation"
-msgstr "غیر واضح ترجمہ"
+msgid "Ignore case"
+msgstr ""
 
-msgid "Notes for translators:"
+msgid "Wrap around"
 msgstr ""
 
-msgid "Comment:"
-msgstr "تبصرہ:"
+msgid "Whole words only"
+msgstr "صرف پورے الفاظ"
 
-msgid "Source file"
-msgstr "ماخذی فائل"
+msgid "Find in source texts"
+msgstr ""
 
-msgid "Source file occurrence:"
+msgid "Find in translations"
+msgstr "ترجموں میں ڈھونڈیں"
+
+msgid "Find in comments"
+msgstr "تبصروں میں ڈھونڈیں"
+
+msgid "Close"
 msgstr ""
 
-msgid "Open in Editor"
+msgid "Replace All"
 msgstr ""
 
-msgid "Open in editor"
+msgid "Replace all"
 msgstr ""
 
-#, c-format
-msgid "Error opening file %s!"
-msgstr "فائل %s کھولنے میں غلطی!"
+msgid "< &Previous"
+msgstr ""
+
+msgid "&Next >"
+msgstr ""
+
+msgid "String to find"
+msgstr ""
+
+msgid "Replacement string"
+msgstr ""
 
 #, c-format
 msgid "Cannot execute program: %s"
@@ -992,9 +1142,19 @@ msgstr "نیا"
 msgid "Edit"
 msgstr "تدوین"
 
+msgid "Delete extractor"
+msgstr ""
+
+#, c-format
+msgid "Are you sure you want to delete the “%s” extractor?"
+msgstr ""
+
 msgid "Extractors"
 msgstr ""
 
+msgid "Accounts"
+msgstr ""
+
 msgid "Automatically check for updates"
 msgstr ""
 
@@ -1033,7 +1193,34 @@ msgstr ""
 msgid "Advanced"
 msgstr ""
 
-msgid "Additional keywords"
+msgid ""
+"<big>Drag and Drop Folders Here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+
+msgid ""
+"<big>Drag and drop folders here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+
+msgid "Add Folders..."
+msgstr ""
+
+msgid "Add folders..."
+msgstr ""
+
+msgid "Add Files..."
+msgstr ""
+
+msgid "Add files..."
+msgstr ""
+
+msgid "Add Wildcard..."
+msgstr ""
+
+msgid "Add wildcard..."
 msgstr ""
 
 msgid "Paths"
@@ -1042,6 +1229,9 @@ msgstr "راہیں"
 msgid "Excluded paths"
 msgstr ""
 
+msgid "Additional keywords"
+msgstr ""
+
 msgid "Name of the project the translation is for"
 msgstr ""
 
@@ -1054,6 +1244,9 @@ msgstr ""
 msgid "Please save the file first. This section cannot be edited until then."
 msgstr ""
 
+msgid "Comment:"
+msgstr "تبصرہ:"
+
 msgid "OK"
 msgstr "ٹھیک ہے"
 
@@ -1063,42 +1256,6 @@ msgstr ""
 msgid "Clear the comment"
 msgstr "تبصرہ صاف کریں"
 
-msgid "Find..."
-msgstr "ڈھونڈیں۔۔۔"
-
-msgid "String to find:"
-msgstr "ڈورا جو ڈھونڈنا ہے:"
-
-msgid "Case sensitive"
-msgstr "معاملاتی حساس"
-
-msgid "Start from the first item"
-msgstr "پہلی آئیٹم سے آغاز کریں"
-
-msgid "Whole words only"
-msgstr "صرف پورے الفاظ"
-
-msgid "Find in original strings"
-msgstr "اصلی ڈوروں میں ڈھونڈیں"
-
-msgid "Find in translations"
-msgstr "ترجموں میں ڈھونڈیں"
-
-msgid "Find in comments"
-msgstr "تبصروں میں ڈھونڈیں"
-
-msgid "Find in automatic comments"
-msgstr "خودکار تبصروں میں ڈھونڈیں"
-
-msgid "Close"
-msgstr ""
-
-msgid "< &Previous"
-msgstr ""
-
-msgid "&Next >"
-msgstr ""
-
 msgid "Create new translations project"
 msgstr "نیا ترجمہ جاتی منصوبہ تخلیق کریں"
 
@@ -1153,6 +1310,12 @@ msgstr ""
 msgid "Open Recent"
 msgstr ""
 
+msgid "Open from Crowdin..."
+msgstr ""
+
+msgid "Open From Crowdin..."
+msgstr ""
+
 msgid "&Save"
 msgstr "&محفوظ"
 
@@ -1201,13 +1364,16 @@ msgstr ""
 msgid "&Find..."
 msgstr "&ڈھونڈیں۔۔۔"
 
+msgid "Replace..."
+msgstr ""
+
 msgid "Find next"
 msgstr ""
 
 msgid "Find previous"
 msgstr ""
 
-msgid "Find"
+msgid "Find and Replace..."
 msgstr ""
 
 msgid "Find Next"
@@ -1249,6 +1415,12 @@ msgstr ""
 msgid "&Group By Context"
 msgstr ""
 
+msgid "Entries with errors first"
+msgstr ""
+
+msgid "Entries with Errors First"
+msgstr ""
+
 msgid "&Untranslated entries first"
 msgstr ""
 
@@ -1258,6 +1430,9 @@ msgstr ""
 msgid "Show sidebar"
 msgstr ""
 
+msgid "Show status bar"
+msgstr ""
+
 msgid "C&atalog"
 msgstr "فر&د"
 
@@ -1273,6 +1448,9 @@ msgstr "&پی او ٹی فائل سے تازہ کریں۔۔۔"
 msgid "Update from &POT File..."
 msgstr ""
 
+msgid "Sync with Crowdin"
+msgstr ""
+
 msgid "Fill missing translations from &TM..."
 msgstr ""
 
@@ -1397,6 +1575,9 @@ msgstr ""
 msgid "Catalog properties"
 msgstr ""
 
+msgid "Project name and version:"
+msgstr "منصوبے کا نام اور  نسخہ(ورژن):"
+
 msgid "Plural Forms:"
 msgstr "جمعی حالتیں:"
 
@@ -1409,16 +1590,28 @@ msgstr ""
 msgid "Learn about plural forms"
 msgstr ""
 
+msgid "Charset:"
+msgstr "کیریکٹر سیٹ:"
+
+msgid "Team:"
+msgstr "ٹیم:"
+
+msgid "Team's email address:"
+msgstr "ٹیم کا برقی پتہ:"
+
 msgid "Translation properties"
 msgstr ""
 
+msgid "Sources paths"
+msgstr ""
+
 msgid "Extract text from source files in the following directories:"
 msgstr ""
 
 msgid "Base path:"
 msgstr "بنیادی راہ:"
 
-msgid "Sources paths"
+msgid "Sources keywords"
 msgstr ""
 
 msgid ""
@@ -1429,9 +1622,6 @@ msgstr ""
 msgid "Learn about gettext keywords"
 msgstr ""
 
-msgid "Sources keywords"
-msgstr ""
-
 msgid "Update summary"
 msgstr "تازہ کاری کا خلاصہ"
 
@@ -1479,7 +1669,7 @@ msgstr "فرد تازہ کریں۔اسے ماخذ کے ساتھ ہم آہنگ ک
 msgid "Toggled if selected string has fuzzy translation"
 msgstr "اگر منتخب ڈورے کا ترجمہ غیر واضح ہے تو الٹ دیا جائے گا۔"
 
-msgid "Show or hide the sidebar."
+msgid "Show or hide the sidebar"
 msgstr ""
 
 #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer.
@@ -1491,6 +1681,9 @@ msgid ""
 "translation corresponds to."
 msgstr ""
 
+msgid "Notes for translators:"
+msgstr ""
+
 msgid "Add comment"
 msgstr ""
 
@@ -1563,14 +1756,21 @@ msgstr ""
 msgid "Open an existing PO file and edit the translation."
 msgstr ""
 
-msgid "Create new translation"
-msgstr ""
-
 msgid ""
 "Take an existing PO file or POT template and create a new translation from "
 "it."
 msgstr ""
 
+msgid "Collaborate on a translation with Crowdin"
+msgstr ""
+
+msgid ""
+"Download a file from Crowdin project, translate and sync your changes back."
+msgstr ""
+
+msgid "What is Crowdin?"
+msgstr ""
+
 msgid "There are no translations. That’s unusual."
 msgstr ""
 
@@ -1603,3 +1803,9 @@ msgstr ""
 
 msgid "Configure source code extraction in Properties."
 msgstr ""
+
+msgid "Sync"
+msgstr ""
+
+msgid "Synchronize the translation with Crowdin"
+msgstr ""
diff --git a/locales/uz.mo b/locales/uz.mo
index 23fbaa4..d119917 100644
Binary files a/locales/uz.mo and b/locales/uz.mo differ
diff --git a/locales/uz.po b/locales/uz.po
index 2555d09..d70cb4b 100644
--- a/locales/uz.po
+++ b/locales/uz.po
@@ -2,8 +2,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: poedit\n"
 "Report-Msgid-Bugs-To: help at poedit.net\n"
-"POT-Creation-Date: 2015-01-10 16:00+0100\n"
-"PO-Revision-Date: 2015-03-10 12:34-0400\n"
+"POT-Creation-Date: 2015-05-27 11:31+0200\n"
+"PO-Revision-Date: 2015-05-27 05:18-0400\n"
 "Last-Translator: vslavik <vaclav at slavik.io>\n"
 "Language-Team: Uzbek\n"
 "Language: uz_UZ\n"
@@ -37,12 +37,12 @@ msgstr "%d-qator ('%s' fayldagi) buzilgan (to‘g‘ri %s ma’lumotlar emas)."
 
 #, c-format
 msgid "Malformed header: '%s'"
-msgstr "Sarlavhaning noto'g'ri formati: '%s'"
+msgstr "Noto‘g‘ri formatdagi bosh qator: '%s'"
 
 msgid ""
 "Broken catalog file: singular form msgstr used together with msgid_plural"
 msgstr ""
-"Katalog faylida xatolik: msgstr ning birlik shakli msgid_plural bilan "
+"Buzilgan katalog fayli: msgstr’ning birlik shakli msgid_plural bilan birga "
 "ishlatilgan"
 
 msgid "Broken catalog file: plural form msgstr used without msgid_plural"
@@ -54,20 +54,20 @@ msgid ""
 "There were errors when loading the catalog. Some data may be missing or "
 "corrupted as the result."
 msgstr ""
-"Katalogni yuklashda xatolik ro'y berdi. Natijada ba'zi ma'lumotlar "
-"bo'lmasligi yoki noto'g'ri bo'lishi mumkin."
+"Katalogni yuklashda xatolik ro‘y berdi. Ba’zi ma’lumotlar bo'lmasligi yoki "
+"natija sifatida buzilgan bo‘lishi mumkin."
 
 #, c-format
 msgid "Couldn't load file %s, it is probably corrupted."
-msgstr "%s faylini yuklash mumkin emas, balkim u shikastlangan."
+msgstr "%s faylini yuklab bo‘lmaydi, u buzilgan bo‘lishi mumkin."
 
 #, c-format
 msgid ""
 "File '%s' is read-only and cannot be saved.\n"
 "Please save it under different name."
 msgstr ""
-"'%s' fayli faqat o'qish uchun va uni saqlab bo'lmaydi.\n"
-"Iltimos uni boshqa nom bilan saqlang."
+"'%s' fayli faqat o‘qish uchun, shuning uchun uni saqlab bo‘lmaydi.\n"
+"Uni boshqa nom bilan saqlang."
 
 #, c-format
 msgid "Couldn't save file %s."
@@ -92,15 +92,24 @@ msgstr ""
 msgid "Error saving catalog"
 msgstr "Katalogni saqlashda xatolik"
 
+msgid "PO Translation Files"
+msgstr "PO tarjima fayllari"
+
+msgid "POT Translation Templates"
+msgstr "POT tarjima shablonlari"
+
+msgid "All Translation Files"
+msgstr "Barcha tarjima fayllari"
+
 msgid "Merging differences..."
-msgstr "Farqlani birlashtirish..."
+msgstr "Farqlar birlashtirilmoqda..."
 
 #, c-format
 msgid "'%s' is not a valid POT file."
-msgstr "'%s' noto'g'ri POT fayli."
+msgstr "'%s' noto‘g‘ri POT fayli."
 
 msgid "(Use default language)"
-msgstr "(Sukut bo'yicha tilni tanlash)"
+msgstr "(Standart tildan foydalanish)"
 
 msgid "Select your preferred language"
 msgstr "Siznig avfzal tilingizni tanlash"
@@ -109,7 +118,89 @@ msgid "Language selection"
 msgstr "Tilni tanlash"
 
 msgid "You must restart Poedit for this change to take effect."
-msgstr "Ushbu o'zgarish natijasini ko'rish uchun Poeditni qayta yuklash lozim."
+msgstr ""
+"O‘zgartirish amalga oshishi uchun Poedit’ni qayta ishga tushirishingiz kerak."
+
+msgid "Downloading translations is disabled in this project."
+msgstr "Tarjimalarni yuklab olish ushbu loyihada o‘chirib qo‘yilgan."
+
+msgid "Not authorized, please sign in again."
+msgstr "Tasdiqdan o‘tmagan, yana kiring."
+
+msgid "Sign in to Crowdin"
+msgstr "Crowdin saytiga kiring"
+
+msgid ""
+"Crowdin is an online localization management platform and collaborative "
+"translation tool. Poedit can seamlessly sync PO files managed at Crowdin."
+msgstr ""
+"Crowdin onlayn tarjimalarni boshqarish platformasi va hamkorlikda tarjima "
+"qilish vositasi hisoblanadi. Poedit PO fayllar bilan ishlash uchun Crowdin "
+"tarmog‘i bilan muammosiz sinxronlay oladi."
+
+msgid "Sign In"
+msgstr "Kirish"
+
+msgid "Sign in"
+msgstr "Kirish"
+
+msgid "Sign Out"
+msgstr "Chiqish"
+
+msgid "Sign out"
+msgstr "Chiqish"
+
+msgid "Waiting for authentication…"
+msgstr "Tasdiqdan o‘tkazilmoqda…"
+
+msgid "Updating user information…"
+msgstr "Foydalanuvchi ma’lumoti yangilanmoqda…"
+
+msgid "Signed in as:"
+msgstr "Foydalanuvchi:"
+
+msgid "Learn More About Crowdin"
+msgstr "Crowdin haqida ko‘proq ma’lumot olish"
+
+msgid "Learn more about Crowdin"
+msgstr "Crowdin haqida ko‘proq ma’lumot olish"
+
+msgid "Open Crowdin translation"
+msgstr "Crowdin tarjimasini ochish"
+
+msgid "Project:"
+msgstr "Loyiha:"
+
+msgid "Language:"
+msgstr "Til:"
+
+msgid "File:"
+msgstr "Fayl:"
+
+msgid "No translation projects listed in your Crowdin account."
+msgstr "Crowdin hisobingizda birorta ham tarjima loyihalari keltirilmagan."
+
+msgid "This project has no files that can be translated in Poedit."
+msgstr ""
+"Ushbu loyihada Poedit dasturida tarjima qilish uchun birorta ham fayl yo‘q."
+
+msgid "This file can only be edited in Crowdin’s web interface."
+msgstr "Ushbu faylni faqat Crowdin veb interfeysida tahrirlash mumkin."
+
+msgid "Downloading latest translations…"
+msgstr "So‘nggi tarjimalar yuklab olinmoqda…"
+
+msgid "Syncing with Crowdin"
+msgstr "Crowdin bilan sinxronlanmoqda"
+
+msgid "Syncing with Crowdin failed."
+msgstr "Crowdin bilan sinxronlash amalga oshmadi."
+
+msgid "Crowdin error"
+msgstr "Crowdin’da xatolik"
+
+msgid "Uploading translations…"
+msgstr "Tarjimalar yuklab qo‘yilmoqda…"
 
 msgid "&Copy"
 msgstr "&Nusxa olish"
@@ -122,21 +213,21 @@ msgstr "Batafsil ma’lumot"
 
 #, c-format
 msgid "Failed command: %s"
-msgstr "Buyrug'ida xatolik: %s"
+msgstr "Xato buyruq: %s"
 
 msgid "Failed to merge gettext catalogs."
 msgstr "Gettext kataloglarini birlashtirishda xatolik."
 
 msgid "Scanning files..."
-msgstr "Faylni skanerlash..."
+msgstr "Fayllar tekshirilmoqda..."
 
 #. TRANSLATORS: '%s' is replaced with the kind of the files (e.g. C++, PHP, ...)
 #, c-format
 msgid "Parsing %s files..."
-msgstr "%s fayllarni tahlil qilish..."
+msgstr "%s ta fayl ajratilmoqda..."
 
 msgid "Failed to load extracted catalog."
-msgstr "Ajratib olingan katalogni yuklash mumkin emas."
+msgstr "Ajratilgan katalog yuklanmadi."
 
 msgid "&Help"
 msgstr "&Yordam"
@@ -157,6 +248,12 @@ msgstr ""
 msgid "don't delete temporary files (for debugging)"
 msgstr "vaqtinchalik fayllarni o‘chirmang (nosozlikni hal qilish uchun)"
 
+msgid "handle a poedit:// URI"
+msgstr "poedit:// URI bilan ishlash"
+
+msgid "Failed to communicate with Poedit process."
+msgstr ""
+
 #, c-format
 msgid "Unhandled exception occurred: %s"
 msgstr "Qayta ishlab bo‘lmaydigan istisno yuz berdi: %s"
@@ -167,15 +264,9 @@ msgstr "Qayta ishlab bo‘lmaydigan istisno ro‘y berdi."
 msgid "Open catalog"
 msgstr "Katalogni ochish"
 
-msgid "All Files"
-msgstr "Barcha fayllar"
-
-msgid "PO Translation Files"
-msgstr "PO tarjima fayllari"
-
 #, c-format
 msgid "File '%s' doesn't exist."
-msgstr "'%s' fayl mavjud emas."
+msgstr "'%s' fayli mavjud emas."
 
 #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name
 #. ("Poedit" here, but please use "%s")
@@ -190,7 +281,7 @@ msgid "Version %s"
 msgstr "%s versiya"
 
 msgid "Poedit is an easy to use translations editor."
-msgstr "Poedit foydalanishda oson bo'lgan tarjima taxrirlagichidir."
+msgstr "Poedit qulay va oson tarjimalar tahrirlagichidir."
 
 msgid "Catalogs Manager"
 msgstr "Kataloglar menejeri"
@@ -199,10 +290,10 @@ msgid "Check for Updates..."
 msgstr "Yangilanishlar uchun tekshirish..."
 
 msgid "&Edit"
-msgstr "&Taxrirlash"
+msgstr "&Tahrirlash"
 
 msgid "Undo"
-msgstr "Orqaga"
+msgstr "Orqaga qaytarish"
 
 msgid "Redo"
 msgstr "Qayta bajarish"
@@ -211,7 +302,7 @@ msgid "Paste and Match Style"
 msgstr "Qo‘yish va uslubni topish"
 
 msgid "Delete"
-msgstr "O'chirish"
+msgstr "O‘chirish"
 
 msgid "Spelling and Grammar"
 msgstr "Imlo va grammatika"
@@ -274,7 +365,7 @@ msgid "Stop Speaking"
 msgstr "Gapirishni to‘xtatish"
 
 msgid "&View"
-msgstr "&Ko'rinish"
+msgstr "&Ko‘rinishi"
 
 msgid "Enter Full Screen"
 msgstr "\"Butun ekranda\" usuliga o‘tish"
@@ -374,7 +465,7 @@ msgid "shift"
 msgstr "shift"
 
 msgid "You can't drop more than one file on Poedit window."
-msgstr "Poedit darchasiga bittadan ortiq faylni olib tashlab bo'lmaydi."
+msgstr "Poedit oynasiga bittadan ortiq faylni tashlab bo‘lmaydi."
 
 #, c-format
 msgid "File '%s' is not a message catalog."
@@ -396,11 +487,22 @@ msgid "Singular:"
 msgstr "Birlik:"
 
 msgid "Plural:"
-msgstr "Ko'plik:"
+msgstr "Ko‘plik:"
 
 msgid "Translation:"
 msgstr "Tarjima:"
 
+msgid ""
+"POT files are only templates and don’t contain any translations themselves.\n"
+"To make a translation, create a new PO file based on the template."
+msgstr ""
+
+msgid "Create New Translation"
+msgstr ""
+
+msgid "Create new translation"
+msgstr "Yangi tarjima yaratish"
+
 #. TRANSLATORS: %s is language name in its basic form (as you
 #. would see e.g. in a list of supported languages). You may need
 #. to rephrase it, e.g. to an equivalent of "for language %s".
@@ -414,10 +516,10 @@ msgid "Install"
 msgstr "O‘rnatish"
 
 msgid "Catalog modified. Do you want to save changes?"
-msgstr "Katalog o'zgartirildi. O'zgarishlarni saqlashni xohlaysizmi?"
+msgstr "Katalog o‘zgartirildi. O‘zgarishlarni saqlashni xohlaysizmi?"
 
 msgid "Save changes"
-msgstr "O'zgarishlarni saqlash"
+msgstr "O‘zgarishlarni saqlash"
 
 msgid "Your changes will be lost if you don't save them."
 msgstr "Agar o‘zgarishlarni saqlamasangiz, ular yo‘qoladi."
@@ -432,7 +534,7 @@ msgid "Don't Save"
 msgstr "Saqlanmasin"
 
 msgid "Save as..."
-msgstr "Kabi saqlash..."
+msgstr "Boshqacha saqlash"
 
 msgid "Compile to..."
 msgstr "Quyidagiga kompilyatsiya qilish..."
@@ -441,16 +543,13 @@ msgid "Compiled Translation Files"
 msgstr "Kompilyatsiya qilingan tarjima fayllari"
 
 msgid "Export as..."
-msgstr "...kabi eksport qilish"
+msgstr "Eksport qilish"
 
 msgid "HTML Files"
 msgstr "HTML fayllar"
 
 msgid "Open catalog template"
-msgstr "Andoza katalogini ochish"
-
-msgid "POT Translation Templates"
-msgstr "POT tarjima shablonlari"
+msgstr "Andoza namunasini ochish"
 
 msgid "Updating catalog"
 msgstr "Katalogni yangilash"
@@ -469,7 +568,7 @@ msgstr ""
 "ko‘rsatilgan manzildan hech qanday kod topilmadi."
 
 msgid "Entries in the catalog are probably incorrect."
-msgstr "Katalog tarkibi ehtimol noto'g'ri."
+msgstr "Katalogga kiritilganlar noto‘g‘ri bo‘lishi mumkin."
 
 msgid "Updating the catalog failed. Click on 'Details >>' for details."
 msgstr ""
@@ -535,18 +634,20 @@ msgstr[1] ""
 msgid "The translation is ready for use."
 msgstr "Tarjima foydalanish uchun tayyor."
 
-msgid "No references to this string found."
-msgstr "Ushbu qator uchun bog'lanishlar topilmadi."
-
-msgid "Please choose the reference you want to show:"
-msgstr "Ko'rsatish lozim bo'lgan bog'lanishni tanlang:"
-
-msgid "References"
-msgstr "Sozlashlar"
-
 msgid "Context:"
 msgstr "Matn:"
 
+#, c-format
+msgid "Poedit automatically fixed invalid content in the file “%s”."
+msgstr ""
+
+msgid ""
+"The file contained duplicate items, which is not allowed in PO files and "
+"would prevent the file from being used. Poedit fixed the issue, but you "
+"should review translations of any items marked as fuzzy and correct them if "
+"necessary."
+msgstr ""
+
 msgid "Language of the translation isn't set."
 msgstr "Tarjima nomi kiritilmagan."
 
@@ -556,6 +657,23 @@ msgstr "Til o‘rnatish"
 msgid "Set language"
 msgstr "Tilni kiritish"
 
+#. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)."
+msgid ""
+"Suggestions are not available if the translation language is not set "
+"correctly. Other features, such as plural forms, may be affected as well."
+msgstr ""
+"Tarjima tili noto‘g‘ri bo‘lsa, tavsiyalar mavjud bo‘lmaydi. Boshqa "
+"xususiyatlar, masalan, ko‘plik shahkli yaxshi bo‘lishi mumkin."
+
+msgid "Language of the translation is the same as source language."
+msgstr "Til nomi manba tildagi bilan bir xil."
+
+msgid "Fix Language"
+msgstr "Tilni to‘g‘rilash"
+
+msgid "Fix language"
+msgstr "Tilni to‘g‘rilash"
+
 msgid ""
 "This catalog has entries with plural forms, but doesn't have Plural-Forms "
 "header configured."
@@ -590,12 +708,13 @@ msgstr "Bosh qatorni to‘g‘rilash"
 msgid "Plural forms expression used by the catalog is unusual for %s."
 msgstr "Katalogda foydalanilgan ko‘plik shakllari ifodasi %s uchun noodatiy."
 
+#. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the catalog is unusual for %s.")"
 msgid "Review"
 msgstr "Ko‘rib chiqish"
 
 #, c-format
 msgid "Error loading message catalog file '%s'."
-msgstr "'%s' xabarlar fayl katalogini yuklashda xatolik"
+msgstr "'%s' katalog fayli xabarini yuklashda xatolik yuz berdi."
 
 #, c-format
 msgid "Translated: %d of %d (%d %%)"
@@ -611,11 +730,17 @@ msgid_plural "%d errors"
 msgstr[0] "%d ta xato"
 msgstr[1] "%d ta xato"
 
+#, c-format
+msgid "%d entry"
+msgid_plural "%d entries"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid " (unsaved)"
 msgstr " (saqlanmagan)"
 
 msgid " (modified)"
-msgstr " (o'zgartirilgan)"
+msgstr " (o‘zgartirilgan)"
 
 msgid "Go"
 msgstr "O‘tish"
@@ -625,7 +750,7 @@ msgid "Failed to update translation memory: %s"
 msgstr "Tarjima xotirasi yangilanmadi: %s"
 
 msgid "Purge deleted translations"
-msgstr "O'chirilgan tarjimalarni yo'q qilish"
+msgstr "O‘chirilgan tarjimalarni tozalash"
 
 msgid "Do you want to remove all translations that are no longer used?"
 msgstr "Uzoq vaqt foydalanilmagan barcha tarjimalarni o‘chirishni xohlaysizmi?"
@@ -723,20 +848,23 @@ msgid "Clear Translation"
 msgstr "Tarjimani tozalash"
 
 msgid "Edit comment"
-msgstr "Izohni taxrirlash"
+msgstr "Sharhni tahrirlash"
 
 msgid "Edit Comment"
 msgstr "Sharhni tahrirlash"
 
 msgid "References:"
-msgstr "Sozlashlar:"
+msgstr "Bog‘lanishlar:"
 
 msgid "Everything"
 msgstr "Hammasi"
 
 #, c-format
 msgid "Form %i"
-msgstr "Shakl %i"
+msgstr "%i shakli "
+
+msgid "Singular"
+msgstr ""
 
 msgid "Zero"
 msgstr "Nol"
@@ -747,11 +875,14 @@ msgstr "Bir"
 msgid "Two"
 msgstr "Ikki"
 
+msgid "Plural"
+msgstr ""
+
 msgid "Other"
 msgstr "Boshqa"
 
 msgid "&Bookmarks"
-msgstr "&Xatcho'plar"
+msgstr "&Xatcho‘plar"
 
 #, c-format
 msgid "Set bookmark %i"
@@ -775,6 +906,12 @@ msgstr "Yon panelni yashirish"
 msgid "Show Sidebar"
 msgstr "Yon panelni ko‘rsatish"
 
+msgid "Hide Status Bar"
+msgstr ""
+
+msgid "Show Status Bar"
+msgstr ""
+
 msgid "Source text"
 msgstr "Manba matni"
 
@@ -784,6 +921,10 @@ msgstr "Tarjima"
 msgid "ID"
 msgstr "ID"
 
+#, c-format
+msgid "Source text — %s"
+msgstr "Manba matn — %s"
+
 msgid "unknown language"
 msgstr "noma’lum til"
 
@@ -794,57 +935,73 @@ msgstr "Tarjima — %s"
 msgid "Error:"
 msgstr "Xato:"
 
-msgid "Project info"
-msgstr "Loiha haqida ma'limot"
+msgid "Source file"
+msgstr "Manba fayl"
 
-msgid "Project name and version:"
-msgstr "Loiha nomi va versiyasi:"
+msgid "Source file occurrence:"
+msgstr "Manba fayli hodisalari:"
 
-msgid "Language:"
-msgstr "Til:"
+msgid "Open in Editor"
+msgstr "Tahrirlagichda ochish"
 
-msgid "Team:"
-msgstr "Guruh:"
+msgid "Open in editor"
+msgstr "Tahrirlagichda ochish"
 
-msgid "Team's email address:"
-msgstr "Guruh email manzillari:"
+msgid "No references for the selected item."
+msgstr "Tanlangan band uchun ma’lumotlar yo‘q."
 
-msgid "Charset:"
-msgstr "Kodirovka:"
+#, c-format
+msgid "Error opening file %s!"
+msgstr "%s faylini ochishda xatolik!"
 
-msgid "Source"
-msgstr "Manba"
+msgid "Find"
+msgstr "Topish"
 
-msgid "Notes"
-msgstr "Izohlar"
+msgid "Replace"
+msgstr "Almashtirish"
 
-msgid "Automatic translation"
-msgstr "Avtomatik tarjima"
+#. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.)
+msgid "Options"
+msgstr "Tanlamalar"
 
-msgid "Fuzzy translation"
-msgstr "Noaniq tarjimalar"
+msgid "Ignore case"
+msgstr "Katta-kichiklikni rad qilish"
 
-msgid "Notes for translators:"
-msgstr "Tarjimonlar uchun eslatmalar:"
+msgid "Wrap around"
+msgstr "Uzun qidiruv"
 
-msgid "Comment:"
-msgstr "Izoh:"
+msgid "Whole words only"
+msgstr "Faqat to‘liq so‘zlar"
 
-msgid "Source file"
-msgstr "Boshlang'ich fayl"
+msgid "Find in source texts"
+msgstr "Manba matnlaridan topish"
 
-msgid "Source file occurrence:"
-msgstr "Manba fayli hodisalari:"
+msgid "Find in translations"
+msgstr "Tarjimalardan topish"
 
-msgid "Open in Editor"
-msgstr "Tahrirlagichda ochish"
+msgid "Find in comments"
+msgstr "Sharhlardan qidirish"
 
-msgid "Open in editor"
-msgstr "Tahrirlagichda ochish"
+msgid "Close"
+msgstr "Yopish"
 
-#, c-format
-msgid "Error opening file %s!"
-msgstr "%s faylini ochishda xatolik!"
+msgid "Replace All"
+msgstr "Barchasini almashtirish"
+
+msgid "Replace all"
+msgstr "Barchasini almashtirish"
+
+msgid "< &Previous"
+msgstr "< &Oldingi"
+
+msgid "&Next >"
+msgstr "&Keyingi >"
+
+msgid "String to find"
+msgstr "Topish uchun qator"
+
+msgid "Replacement string"
+msgstr "Almashadigan qator"
 
 #, c-format
 msgid "Cannot execute program: %s"
@@ -866,7 +1023,7 @@ msgid "Catalog"
 msgstr "Katalog"
 
 msgid "Total"
-msgstr "Umumiy"
+msgstr "Jami"
 
 msgid "Untrans"
 msgstr "Tarjima qilinmagan"
@@ -875,22 +1032,22 @@ msgid "Fuzzy"
 msgstr "Noaniq"
 
 msgid "Bad Tokens"
-msgstr "Notog'ri belgilar"
+msgstr "Noto‘g‘ri belgilar"
 
 msgid "Last modified"
-msgstr "Oxirgi o'zgarish"
+msgstr "So‘nggi o‘zgartirish"
 
 msgid "Select directory"
-msgstr "Katalogni tanlash"
+msgstr "Direktoriyani tanlash"
 
 msgid "Directories:"
-msgstr "Kataloglar:"
+msgstr "Direktoriyalar:"
 
 msgid "<unnamed>"
 msgstr "<nomlanmagan>"
 
 msgid "Do you want to delete the project?"
-msgstr "Loihani haqiqatdan ham o'chirmoqchimisiz?"
+msgstr "Loyihani o‘chirishni xohlaysizmi?"
 
 msgid "Confirmation"
 msgstr "Tasdiqlash"
@@ -899,7 +1056,7 @@ msgid ""
 "Do you really want to do mass update of\n"
 "all catalogs in this project?"
 msgstr ""
-"Siz haqiqatdan ushbu loihadagi barcha\n"
+"Siz rostdan ushbu loyihadagi barcha\n"
 "kataloglarni yangilamoqchimisiz?"
 
 msgid "Information about the translator"
@@ -931,22 +1088,23 @@ msgid "Automatically compile MO file when saving"
 msgstr "Saylayotganda avtomatik tarzda MO fayl yaratilsin"
 
 msgid "Show summary after catalog update"
-msgstr "Katalog yangilangandan so'ng xulosani ko'rsatish"
+msgstr "Katalog yangilangandan so‘ng natijani ko‘rsatish"
 
 msgid "Check spelling"
 msgstr "Imloni tekshirish"
 
 msgid "Always change focus to text input field"
-msgstr "Matnni kiritish maydoniga doimo fokusni o'rnatish"
+msgstr "Fokusni doimo matnni kiritish maydoniga o‘zgartirish"
 
 msgid ""
 "Never let the list of strings take focus. If enabled, you must use Ctrl-"
 "arrows for keyboard navigation but you can also type text immediately, "
 "without having to press Tab to change focus."
 msgstr ""
-"Never let the list of strings take focus. If enabled, you must use Ctrl-"
-"arrows for keyboard navigation but you can also type text immediately, "
-"without having to press Tab to change focus."
+"Hech qachon qatorlar ro‘yxatiga fokusni olishiga yo‘l qo‘yilmasin. Agar u "
+"yoqib qo‘yilsa, klaviaturadan boshqarish uchun Ctrl-ko‘rsatkichlar’dan "
+"foydalanishingiz kerak, ammo siz, shuningdek, fokusni o‘zgartirish uchun Tab "
+"tugmasini bosmasdan ham matnni tez yozishingiz mumkin."
 
 msgid "Appearance"
 msgstr "Ko‘rinishi"
@@ -958,7 +1116,7 @@ msgid "Use custom text fields font:"
 msgstr "Matn maydonlari shriftini o‘zgartirish:"
 
 msgid "Change UI language"
-msgstr "UI tilini o'zgartirish"
+msgstr "Grafik interfeys tilini o‘zgartirish"
 
 #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions
 msgid "(requires Windows 8 or newer)"
@@ -1043,14 +1201,24 @@ msgstr ""
 "qatorlarni topishda foydalaniladi va ularni tarjima qilish uchun ajratadi."
 
 msgid "New"
-msgstr "Yaratish"
+msgstr "Yangi"
 
 msgid "Edit"
 msgstr "Tahrirlash"
 
+msgid "Delete extractor"
+msgstr "Ajratkichni o‘chirish"
+
+#, c-format
+msgid "Are you sure you want to delete the “%s” extractor?"
+msgstr "“%s” ajratkichni o‘chirmoqchimisiz?"
+
 msgid "Extractors"
 msgstr "Ajratgichlar"
 
+msgid "Accounts"
+msgstr "Hisoblar"
+
 msgid "Automatically check for updates"
 msgstr "Yangilanishlar avtomatik tekshirilsin"
 
@@ -1082,7 +1250,7 @@ msgid "Unix (recommended)"
 msgstr "Unix (tavsiya qilingan)"
 
 msgid "Windows"
-msgstr "Darchalar"
+msgstr "Oynalar"
 
 #. TRANSLATORS: Followed by text control for entering number; wraps text at given width
 msgid "Wrap at:"
@@ -1094,15 +1262,45 @@ msgstr "Mavjud fayllarni formatlashni saqlash"
 msgid "Advanced"
 msgstr "Qo‘shimcha"
 
-msgid "Additional keywords"
-msgstr "Qo‘shimcha kalit so‘zlar"
+msgid ""
+"<big>Drag and Drop Folders Here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+
+msgid ""
+"<big>Drag and drop folders here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+
+msgid "Add Folders..."
+msgstr ""
+
+msgid "Add folders..."
+msgstr ""
+
+msgid "Add Files..."
+msgstr ""
+
+msgid "Add files..."
+msgstr ""
+
+msgid "Add Wildcard..."
+msgstr ""
+
+msgid "Add wildcard..."
+msgstr ""
 
 msgid "Paths"
-msgstr "Yo'llar"
+msgstr "Yo‘llar"
 
 msgid "Excluded paths"
 msgstr "Qo‘shilmagan yo‘llar"
 
+msgid "Additional keywords"
+msgstr "Qo‘shimcha kalit so‘zlar"
+
 msgid "Name of the project the translation is for"
 msgstr "Tarjima loyihasi nomi"
 
@@ -1115,6 +1313,9 @@ msgstr "UTF-8 (tavsiya qilinadi)"
 msgid "Please save the file first. This section cannot be edited until then."
 msgstr "Avval faylni saqlang, Saqlamasangiz uchbu qismni tahrirlay olmaysiz."
 
+msgid "Comment:"
+msgstr "Sharh:"
+
 msgid "OK"
 msgstr "OK"
 
@@ -1122,73 +1323,37 @@ msgid "C&lear"
 msgstr "Toza&lash"
 
 msgid "Clear the comment"
-msgstr "Izohni tozalash"
-
-msgid "Find..."
-msgstr "Qidirish..."
-
-msgid "String to find:"
-msgstr "Qatorni topish:"
-
-msgid "Case sensitive"
-msgstr "Registrga ta'sirchan"
-
-msgid "Start from the first item"
-msgstr "Birinchi elementdan boshlash"
-
-msgid "Whole words only"
-msgstr "Faqat to'liq so'zlar"
-
-msgid "Find in original strings"
-msgstr "Original qatorlarda qidirish"
-
-msgid "Find in translations"
-msgstr "Tarjimalarda qidirish"
-
-msgid "Find in comments"
-msgstr "Izohlarda qidirish"
-
-msgid "Find in automatic comments"
-msgstr "Avtomatik izohlarda qidirish"
-
-msgid "Close"
-msgstr "Yopish"
-
-msgid "< &Previous"
-msgstr "< &Oldingi"
-
-msgid "&Next >"
-msgstr "&Keyingi >"
+msgstr "Sharhni tozalash"
 
 msgid "Create new translations project"
-msgstr "Yangi tarjimalar loihasini yararish"
+msgstr "Yangi tarjimalar loyihasini yaratish"
 
 msgid "Edit the project"
-msgstr "Loihani taxrirlash"
+msgstr "Loyihani tahrirlash"
 
 msgid "Delete the project"
-msgstr "Loihani o'chirish"
+msgstr "Loyihani o‘chirish"
 
 msgid "Update all"
 msgstr "Barchasini yangilash"
 
 msgid "Update all catalogs in the project"
-msgstr "Loihada barcha kataloglarni yangilash"
+msgstr "Loyihadagi barcha kataloglarni yangilash"
 
 msgid "Edit project"
-msgstr "Loihani taxrirlash"
+msgstr "Loyihani tahrirlash"
 
 msgid "Project name:"
-msgstr "Loiha nomi:"
+msgstr "Loyiha nomi:"
 
 msgid "Browse"
-msgstr "Ko'rib chiqish"
+msgstr "Ko‘rish"
 
 msgid "Add directory to the list"
-msgstr "Ro'yxatga katalog qo'shish"
+msgstr "Ro‘yxatga direktoriyani qo‘shish"
 
 msgid "&Preferences..."
-msgstr "&Sozlashlar..."
+msgstr "&Parametrlar..."
 
 msgid "&Close"
 msgstr "&Yopish"
@@ -1214,11 +1379,17 @@ msgstr "&Ochish..."
 msgid "Open Recent"
 msgstr "So‘nggisini ochish"
 
+msgid "Open from Crowdin..."
+msgstr "Crowdin saytidan ochish..."
+
+msgid "Open From Crowdin..."
+msgstr "Crowdin saytidan ochish..."
+
 msgid "&Save"
 msgstr "&Saqlash"
 
 msgid "Save &as..."
-msgstr "Kabi saqlash..."
+msgstr "Boshqa forma&tda saqlash..."
 
 msgid "Save &As..."
 msgstr "Boshqacha s&aqlash..."
@@ -1233,19 +1404,19 @@ msgid "Check for updates..."
 msgstr "Yangilanishlar uchun tekshirish..."
 
 msgid "Catalogs &manager"
-msgstr "Kataloglar &boshqaruvchisi"
+msgstr "Kataloglar &menejeri"
 
 msgid "Catalogs &Manager"
 msgstr "Kataloglar &menejeri"
 
 msgid "Translation is &fuzzy"
-msgstr "Noaniq tarjima"
+msgstr "Tarjima &noaniq"
 
 msgid "Translation Is &Fuzzy"
 msgstr "Tarjima &noaniq"
 
 msgid "Edit &comment"
-msgstr "&Izohni taxrirlash"
+msgstr "&Sharhni tahrirlash"
 
 msgid "Edit &Comment"
 msgstr "&Sharhni tahrirlash"
@@ -1254,13 +1425,16 @@ msgid "Suggestions"
 msgstr "Tavsiyalar"
 
 msgid "&Show references"
-msgstr "&Bog'lanishlarni ko'rsatish"
+msgstr "&Bog‘lanishlarni ko‘rsatish"
 
 msgid "&Show References"
 msgstr "Linklarni ko‘rsati&sh"
 
 msgid "&Find..."
-msgstr "&Qidirish..."
+msgstr "&Topish..."
+
+msgid "Replace..."
+msgstr "Almashtirish..."
 
 msgid "Find next"
 msgstr "Keyingisini topish"
@@ -1268,8 +1442,8 @@ msgstr "Keyingisini topish"
 msgid "Find previous"
 msgstr "Oldingisini topish"
 
-msgid "Find"
-msgstr "Topish"
+msgid "Find and Replace..."
+msgstr "Topish va almashtirish"
 
 msgid "Find Next"
 msgstr "Keyingisini topish"
@@ -1278,7 +1452,7 @@ msgid "Find Previous"
 msgstr "Oldingisini topish"
 
 msgid "&Preferences"
-msgstr "&Sozlashlar"
+msgstr "&Parametrlar"
 
 msgid "Display entry &IDs"
 msgstr "Kiritilganlarning ID’sini ko‘rsatish"
@@ -1310,6 +1484,12 @@ msgstr "Matn bo‘yicha &guruhlash"
 msgid "&Group By Context"
 msgstr "Matn bo‘yicha &guruhlash"
 
+msgid "Entries with errors first"
+msgstr "Xato kiritilganlar birinchi"
+
+msgid "Entries with Errors First"
+msgstr "Xato kiritilganlar birinchi"
+
 msgid "&Untranslated entries first"
 msgstr "Avval &tarjima qilinmaganlar"
 
@@ -1319,11 +1499,14 @@ msgstr "Avval &tarjima qilinmaganlar"
 msgid "Show sidebar"
 msgstr "Yon panelni ko‘rsatish"
 
+msgid "Show status bar"
+msgstr ""
+
 msgid "C&atalog"
 msgstr "K&atalog"
 
 msgid "&Update from sources"
-msgstr "&Manbadan yangilash"
+msgstr "&Manbalardan yangilash"
 
 msgid "&Update from Sources"
 msgstr "&Manbalardan yangilash"
@@ -1334,6 +1517,9 @@ msgstr "&POT faylidan yangilash..."
 msgid "Update from &POT File..."
 msgstr "&POT faylidan yangilash..."
 
+msgid "Sync with Crowdin"
+msgstr "Crowdin bilan sinxronlash"
+
 msgid "Fill missing translations from &TM..."
 msgstr "Kerakli tarjimalarni &TX’dan to‘ldirish"
 
@@ -1341,7 +1527,7 @@ msgid "Fill Missing Translations from &TM..."
 msgstr "Kerakli tarjimalarni &TX’dan to‘ldirish"
 
 msgid "&Purge deleted translations"
-msgstr "&O'chirilgan tarjimalarni yo'q qilish"
+msgstr "&O‘chirilgan tarjimalarni tozalash"
 
 msgid "&Purge Deleted Translations"
 msgstr "&O‘chirilgan tarjimalarni tozalash"
@@ -1407,7 +1593,8 @@ msgid "Extractor setup"
 msgstr "Ajratgichni o‘rnatish"
 
 msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):"
-msgstr "Nuqta vergul bilan ajratilgan kengaytmalar ro'yxati (m.u. *.cpp;*.h):"
+msgstr ""
+"Nuqtali vergul bilan ajratilgan kengaytmalar ro‘yxati (masalan: *.cpp;*.h):"
 
 msgid "Invocation:"
 msgstr "Chaqirish:"
@@ -1427,7 +1614,7 @@ msgstr ""
 "%C kodlash bayrog‘iga (quyidagini ko‘ring) ajratiladi."
 
 msgid "An item in keywords list:"
-msgstr "Kalitlar ro'yxatida element:"
+msgstr "Kalit so‘zlar ro‘yxatidagi band:"
 
 msgid ""
 "This will be attached to the command line once\n"
@@ -1444,25 +1631,28 @@ msgid ""
 "This will be attached to the command line once\n"
 "for each input file. %f expands to the filename."
 msgstr ""
-"Har bir kirish fayli uchun bir marta buyruq\n"
-"satriga ilova qilinadi. %f fayl nomi."
+"U har bir kiruvchi fayl uchun buyruq satriga qo‘shiladi. %f fayl nomini "
+"anglatadi."
 
 msgid "Source code charset:"
-msgstr "Boshlang'ich kod kodirovkasi:"
+msgstr "Manba kodi kodlash usuli:"
 
 #, c-format
 msgid ""
 "This will be attached to the command line\n"
 "only if source codecharset was given. %c expands to charset value."
 msgstr ""
-"Agar manba kodi berilgan bo'lsagina buyruq satriga\n"
-"ilova qilinadi. %c kodirovka qiymati."
+"Agar manba kodlash usuli berilgan bo‘lsa, u buyruq satriga\n"
+"ilova qilinadi. %c kodlash usuli qiymatini anglatadi."
 
 msgid "Catalog properties"
 msgstr "Katalog xossalari"
 
+msgid "Project name and version:"
+msgstr "Loyiha nomi va versiyasi:"
+
 msgid "Plural Forms:"
-msgstr "Ko'plik shakllar:"
+msgstr "Ko‘plik shakllari:"
 
 msgid "Use default rules for this language"
 msgstr "Ushbu til uchun standart qoidalardan foydalanish"
@@ -1473,17 +1663,29 @@ msgstr "Boshqa ifodadan foydalanish"
 msgid "Learn about plural forms"
 msgstr "Ko‘plik shakllari haqida o‘rganish"
 
+msgid "Charset:"
+msgstr "Kodlash usuli:"
+
+msgid "Team:"
+msgstr "Guruh:"
+
+msgid "Team's email address:"
+msgstr "Guruhning e-pochta manzili:"
+
 msgid "Translation properties"
 msgstr "Tarjima xossalari"
 
+msgid "Sources paths"
+msgstr "Manbalar yo‘llari"
+
 msgid "Extract text from source files in the following directories:"
 msgstr "Quyidagi direktoriyalardagi manba fayllaridan matnni ajratish:"
 
 msgid "Base path:"
-msgstr "Bazaga yo'l:"
+msgstr "Asosiy yo‘l:"
 
-msgid "Sources paths"
-msgstr "Manbalar yo‘llari"
+msgid "Sources keywords"
+msgstr "Manbalar kalit so‘zlari"
 
 msgid ""
 "Use these keywords (function names) to recognize translatable strings\n"
@@ -1495,11 +1697,8 @@ msgstr ""
 msgid "Learn about gettext keywords"
 msgstr "gettext kalit so‘lari haqida o‘rganish"
 
-msgid "Sources keywords"
-msgstr "Manbalar kalit so‘zlari"
-
 msgid "Update summary"
-msgstr "Yangilash haqida xisobot"
+msgstr "Yangilash hisoboti"
 
 msgid ""
 "These strings were found in the sources but were not in the catalog.\n"
@@ -1509,20 +1708,20 @@ msgstr ""
 "Poedit katalogka qo'shib qo'yadi."
 
 msgid "New strings"
-msgstr "Qatorlar yaratish"
+msgstr "Yangi qatorlar"
 
 msgid ""
 "These strings are no longer in the sources.\n"
 "Poedit will remove them from the catalog now."
 msgstr ""
-"Ushbu qatorlar manbalarda mavjud emas.\n"
-"Ular katalogdan o'chiriladi."
+"Ushbu qatorlar endi manbalarda mavjud emas.\n"
+"Poedit ularni hozir katalogdan o‘chiradi."
 
 msgid "Obsolete strings"
-msgstr "Mutlaq qatorlar"
+msgstr "Eski qatorlar"
 
 msgid "(0 new, 0 obsolete)"
-msgstr "(0 yangi, 0 mutlaq)"
+msgstr "(0 ta yangi, 0 ta eski)"
 
 msgid "Open"
 msgstr "Ochish"
@@ -1540,13 +1739,13 @@ msgid "Update"
 msgstr "Yangilash"
 
 msgid "Update catalog - synchronize it with sources"
-msgstr "Katalogni manbalar bilan sinxron ravishda yangilash"
+msgstr "Katalogni yangilash - uni manbalar bilan sinxronlash"
 
 msgid "Toggled if selected string has fuzzy translation"
-msgstr "Agar belgilangan qator noaniq tarjimaga ega bo'lsa yoqiladi."
+msgstr "Agar belgilangan qator noaniq tarjimaga ega bo‘lsa, yoqiladi"
 
-msgid "Show or hide the sidebar."
-msgstr "Yon panelni ko‘rsatish yoki yashirish."
+msgid "Show or hide the sidebar"
+msgstr "Yon panelni ko‘rsatish yoki yashirish"
 
 #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer.
 msgid "Previous source text:"
@@ -1559,6 +1758,9 @@ msgstr ""
 "Noaniq tarjima ham javob beradigan eski manba matni (yangilash davomida uni "
 "o‘zgartirishdan oldin)."
 
+msgid "Notes for translators:"
+msgstr "Tarjimonlar uchun eslatmalar:"
+
 msgid "Add comment"
 msgstr "Sharh qo‘shish"
 
@@ -1638,15 +1840,24 @@ msgstr "Tarjimani tahrirlash"
 msgid "Open an existing PO file and edit the translation."
 msgstr "Mavjud PO faylni oching va tarjimani tahrirlang."
 
-msgid "Create new translation"
-msgstr "Yangi tarjima yaratish"
-
 msgid ""
 "Take an existing PO file or POT template and create a new translation from "
 "it."
 msgstr ""
 "Mavjud PO fayl yoki POT namunani oling va undan yangi tarjima yarating."
 
+msgid "Collaborate on a translation with Crowdin"
+msgstr "Crowdin bilan tarjimalarda hamkorlik qilish"
+
+msgid ""
+"Download a file from Crowdin project, translate and sync your changes back."
+msgstr ""
+"Crowdin loyihasidan fayl import qilish, uni tarjima qilish va o‘zgarishlarni "
+"sinxronlash."
+
+msgid "What is Crowdin?"
+msgstr "Crowdin nima?"
+
 msgid "There are no translations. That’s unusual."
 msgstr "Tarjimalar yo‘q. Bu noodatiy."
 
@@ -1688,3 +1899,9 @@ msgstr "Manbalardan ajratish"
 
 msgid "Configure source code extraction in Properties."
 msgstr "Xossalardan manba kodini ajratishni moslang."
+
+msgid "Sync"
+msgstr "Sinxronlash"
+
+msgid "Synchronize the translation with Crowdin"
+msgstr "Tarjimani Crowdin bilan sinxronlash"
diff --git a/locales/vi.mo b/locales/vi.mo
index 72121cd..7df0da4 100644
Binary files a/locales/vi.mo and b/locales/vi.mo differ
diff --git a/locales/vi.po b/locales/vi.po
index 728269b..55ad238 100644
--- a/locales/vi.po
+++ b/locales/vi.po
@@ -2,8 +2,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: poedit\n"
 "Report-Msgid-Bugs-To: help at poedit.net\n"
-"POT-Creation-Date: 2015-01-10 16:00+0100\n"
-"PO-Revision-Date: 2015-03-10 12:34-0400\n"
+"POT-Creation-Date: 2015-05-27 11:31+0200\n"
+"PO-Revision-Date: 2015-05-27 05:17-0400\n"
 "Last-Translator: vslavik <vaclav at slavik.io>\n"
 "Language-Team: Vietnamese\n"
 "Language: vi_VN\n"
@@ -88,6 +88,15 @@ msgstr ""
 msgid "Error saving catalog"
 msgstr "Gặp lỗi khi đang ghi lại catalog"
 
+msgid "PO Translation Files"
+msgstr ""
+
+msgid "POT Translation Templates"
+msgstr ""
+
+msgid "All Translation Files"
+msgstr ""
+
 msgid "Merging differences..."
 msgstr "Đang trộn các khác biệt..."
 
@@ -107,6 +116,83 @@ msgstr "Lựa chọn ngôn ngữ"
 msgid "You must restart Poedit for this change to take effect."
 msgstr "Bạn phải khởi động lại Poedit để các thay đổi có tác dụng."
 
+msgid "Downloading translations is disabled in this project."
+msgstr ""
+
+msgid "Not authorized, please sign in again."
+msgstr ""
+
+msgid "Sign in to Crowdin"
+msgstr ""
+
+msgid ""
+"Crowdin is an online localization management platform and collaborative "
+"translation tool. Poedit can seamlessly sync PO files managed at Crowdin."
+msgstr ""
+
+msgid "Sign In"
+msgstr ""
+
+msgid "Sign in"
+msgstr ""
+
+msgid "Sign Out"
+msgstr ""
+
+msgid "Sign out"
+msgstr ""
+
+msgid "Waiting for authentication…"
+msgstr ""
+
+msgid "Updating user information…"
+msgstr ""
+
+msgid "Signed in as:"
+msgstr ""
+
+msgid "Learn More About Crowdin"
+msgstr ""
+
+msgid "Learn more about Crowdin"
+msgstr ""
+
+msgid "Open Crowdin translation"
+msgstr ""
+
+msgid "Project:"
+msgstr ""
+
+msgid "Language:"
+msgstr "Ngôn ngữ:"
+
+msgid "File:"
+msgstr ""
+
+msgid "No translation projects listed in your Crowdin account."
+msgstr ""
+
+msgid "This project has no files that can be translated in Poedit."
+msgstr ""
+
+msgid "This file can only be edited in Crowdin’s web interface."
+msgstr ""
+
+msgid "Downloading latest translations…"
+msgstr ""
+
+msgid "Syncing with Crowdin"
+msgstr ""
+
+msgid "Syncing with Crowdin failed."
+msgstr ""
+
+msgid "Crowdin error"
+msgstr ""
+
+msgid "Uploading translations…"
+msgstr ""
+
 msgid "&Copy"
 msgstr ""
 
@@ -151,6 +237,12 @@ msgstr ""
 msgid "don't delete temporary files (for debugging)"
 msgstr "không xóa tập tin tạm (để gỡ lỗi)"
 
+msgid "handle a poedit:// URI"
+msgstr ""
+
+msgid "Failed to communicate with Poedit process."
+msgstr ""
+
 #, c-format
 msgid "Unhandled exception occurred: %s"
 msgstr ""
@@ -161,12 +253,6 @@ msgstr ""
 msgid "Open catalog"
 msgstr "Mở catalog"
 
-msgid "All Files"
-msgstr ""
-
-msgid "PO Translation Files"
-msgstr ""
-
 #, c-format
 msgid "File '%s' doesn't exist."
 msgstr "Tập tin '%s' không tồn tại."
@@ -394,6 +480,17 @@ msgstr "Số nhiều:"
 msgid "Translation:"
 msgstr "Bản dịch:"
 
+msgid ""
+"POT files are only templates and don’t contain any translations themselves.\n"
+"To make a translation, create a new PO file based on the template."
+msgstr ""
+
+msgid "Create New Translation"
+msgstr ""
+
+msgid "Create new translation"
+msgstr "Tạo bản dịch mới"
+
 #. TRANSLATORS: %s is language name in its basic form (as you
 #. would see e.g. in a list of supported languages). You may need
 #. to rephrase it, e.g. to an equivalent of "for language %s".
@@ -441,9 +538,6 @@ msgstr ""
 msgid "Open catalog template"
 msgstr "Mở tập tin catalog mẫu"
 
-msgid "POT Translation Templates"
-msgstr ""
-
 msgid "Updating catalog"
 msgstr "Cập nhật catalog"
 
@@ -516,18 +610,20 @@ msgstr[0] ""
 msgid "The translation is ready for use."
 msgstr "Bản dịch đã sẵn sàng để dùng"
 
-msgid "No references to this string found."
-msgstr "Không tìm thấy chuỗi có liên quan."
-
-msgid "Please choose the reference you want to show:"
-msgstr "Xin hãy chọn tham chiếu bạn muốn hiển thị:"
-
-msgid "References"
-msgstr "Tham chiếu"
-
 msgid "Context:"
 msgstr "Ngữ cảnh:"
 
+#, c-format
+msgid "Poedit automatically fixed invalid content in the file “%s”."
+msgstr ""
+
+msgid ""
+"The file contained duplicate items, which is not allowed in PO files and "
+"would prevent the file from being used. Poedit fixed the issue, but you "
+"should review translations of any items marked as fuzzy and correct them if "
+"necessary."
+msgstr ""
+
 msgid "Language of the translation isn't set."
 msgstr "Ngôn ngữ của bản dịch chưa được đặt."
 
@@ -537,6 +633,21 @@ msgstr ""
 msgid "Set language"
 msgstr "Đặt ngôn ngữ"
 
+#. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)."
+msgid ""
+"Suggestions are not available if the translation language is not set "
+"correctly. Other features, such as plural forms, may be affected as well."
+msgstr ""
+
+msgid "Language of the translation is the same as source language."
+msgstr ""
+
+msgid "Fix Language"
+msgstr ""
+
+msgid "Fix language"
+msgstr ""
+
 msgid ""
 "This catalog has entries with plural forms, but doesn't have Plural-Forms "
 "header configured."
@@ -571,6 +682,7 @@ msgstr "Sửa phần đầu"
 msgid "Plural forms expression used by the catalog is unusual for %s."
 msgstr "Dạng thức số nhiều được dùng cho catalog là bất thường đối với %s."
 
+#. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the catalog is unusual for %s.")"
 msgid "Review"
 msgstr "Xem lại"
 
@@ -591,6 +703,11 @@ msgid "%d error"
 msgid_plural "%d errors"
 msgstr[0] ""
 
+#, c-format
+msgid "%d entry"
+msgid_plural "%d entries"
+msgstr[0] ""
+
 msgid " (unsaved)"
 msgstr " (chưa lưu)"
 
@@ -705,6 +822,9 @@ msgstr "Mọi thứ"
 msgid "Form %i"
 msgstr "Dạng %i"
 
+msgid "Singular"
+msgstr ""
+
 msgid "Zero"
 msgstr "Số không"
 
@@ -714,6 +834,9 @@ msgstr "Một"
 msgid "Two"
 msgstr "Hai"
 
+msgid "Plural"
+msgstr ""
+
 msgid "Other"
 msgstr "Khác"
 
@@ -742,6 +865,12 @@ msgstr ""
 msgid "Show Sidebar"
 msgstr ""
 
+msgid "Hide Status Bar"
+msgstr ""
+
+msgid "Show Status Bar"
+msgstr ""
+
 msgid "Source text"
 msgstr "Văn bản nguồn"
 
@@ -751,6 +880,10 @@ msgstr "Bản dịch"
 msgid "ID"
 msgstr "ID"
 
+#, c-format
+msgid "Source text — %s"
+msgstr ""
+
 msgid "unknown language"
 msgstr "không hiểu ngôn ngữ"
 
@@ -761,57 +894,73 @@ msgstr "Bản dịch — %s"
 msgid "Error:"
 msgstr "Lỗi:"
 
-msgid "Project info"
-msgstr "Thông tin về dự án"
+msgid "Source file"
+msgstr "Tập tin mã nguồn"
 
-msgid "Project name and version:"
-msgstr "Tên và phiên bản của dự án:"
+msgid "Source file occurrence:"
+msgstr "Xuất hiện trong tập tin nguồn:"
 
-msgid "Language:"
-msgstr "Ngôn ngữ:"
+msgid "Open in Editor"
+msgstr ""
 
-msgid "Team:"
-msgstr "Nhóm:"
+msgid "Open in editor"
+msgstr ""
 
-msgid "Team's email address:"
-msgstr "Địa chỉ thư điện tử của nhóm"
+msgid "No references for the selected item."
+msgstr ""
 
-msgid "Charset:"
-msgstr "Bảng mã ký tự:"
+#, c-format
+msgid "Error opening file %s!"
+msgstr "Gặp lỗi khi đang mở tập tin %s!"
 
-msgid "Source"
-msgstr "Nguồn"
+msgid "Find"
+msgstr "Tìm"
 
-msgid "Notes"
-msgstr "Chú ý"
+msgid "Replace"
+msgstr ""
 
-msgid "Automatic translation"
-msgstr "Chuỗi dịch tự động"
+#. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.)
+msgid "Options"
+msgstr ""
 
-msgid "Fuzzy translation"
-msgstr "Chuỗi tạm dịch"
+msgid "Ignore case"
+msgstr ""
 
-msgid "Notes for translators:"
-msgstr "Ghi chú dành cho người dịch:"
+msgid "Wrap around"
+msgstr ""
 
-msgid "Comment:"
-msgstr "Chú thích:"
+msgid "Whole words only"
+msgstr "Phải khớp toàn bộ các từ"
 
-msgid "Source file"
-msgstr "Tập tin mã nguồn"
+msgid "Find in source texts"
+msgstr ""
 
-msgid "Source file occurrence:"
-msgstr "Xuất hiện trong tập tin nguồn:"
+msgid "Find in translations"
+msgstr "Tìm trong phần dịch"
 
-msgid "Open in Editor"
+msgid "Find in comments"
+msgstr "Tìm trong chú thích"
+
+msgid "Close"
+msgstr "Đóng"
+
+msgid "Replace All"
 msgstr ""
 
-msgid "Open in editor"
+msgid "Replace all"
 msgstr ""
 
-#, c-format
-msgid "Error opening file %s!"
-msgstr "Gặp lỗi khi đang mở tập tin %s!"
+msgid "< &Previous"
+msgstr "< &Trước"
+
+msgid "&Next >"
+msgstr "&Tiếp theo >"
+
+msgid "String to find"
+msgstr ""
+
+msgid "Replacement string"
+msgstr ""
 
 #, c-format
 msgid "Cannot execute program: %s"
@@ -1004,9 +1153,19 @@ msgstr "Tạo mới"
 msgid "Edit"
 msgstr "Biên tập"
 
+msgid "Delete extractor"
+msgstr ""
+
+#, c-format
+msgid "Are you sure you want to delete the “%s” extractor?"
+msgstr ""
+
 msgid "Extractors"
 msgstr ""
 
+msgid "Accounts"
+msgstr ""
+
 msgid "Automatically check for updates"
 msgstr ""
 
@@ -1045,8 +1204,35 @@ msgstr ""
 msgid "Advanced"
 msgstr ""
 
-msgid "Additional keywords"
-msgstr "Từ khoá bổ xung"
+msgid ""
+"<big>Drag and Drop Folders Here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+
+msgid ""
+"<big>Drag and drop folders here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+
+msgid "Add Folders..."
+msgstr ""
+
+msgid "Add folders..."
+msgstr ""
+
+msgid "Add Files..."
+msgstr ""
+
+msgid "Add files..."
+msgstr ""
+
+msgid "Add Wildcard..."
+msgstr ""
+
+msgid "Add wildcard..."
+msgstr ""
 
 msgid "Paths"
 msgstr "Đường dẫn"
@@ -1054,6 +1240,9 @@ msgstr "Đường dẫn"
 msgid "Excluded paths"
 msgstr ""
 
+msgid "Additional keywords"
+msgstr "Từ khoá bổ xung"
+
 msgid "Name of the project the translation is for"
 msgstr "Tên của dự án của bản dịch"
 
@@ -1067,6 +1256,9 @@ msgid "Please save the file first. This section cannot be edited until then."
 msgstr ""
 "Hãy ghi lại tập tin trước. Phần này không thể được sửa chữa cho đến sau này."
 
+msgid "Comment:"
+msgstr "Chú thích:"
+
 msgid "OK"
 msgstr "Đồng ý"
 
@@ -1076,42 +1268,6 @@ msgstr "&Dọn dẹp"
 msgid "Clear the comment"
 msgstr "Xóa phần chú thích"
 
-msgid "Find..."
-msgstr "Tìm kiếm..."
-
-msgid "String to find:"
-msgstr "Chuỗi cần tìm:"
-
-msgid "Case sensitive"
-msgstr "Phân biệt HOA/thường"
-
-msgid "Start from the first item"
-msgstr "Bắt đầu từ mục tin đầu tiên"
-
-msgid "Whole words only"
-msgstr "Phải khớp toàn bộ các từ"
-
-msgid "Find in original strings"
-msgstr "Tìm trong nguyên bản"
-
-msgid "Find in translations"
-msgstr "Tìm trong phần dịch"
-
-msgid "Find in comments"
-msgstr "Tìm trong chú thích"
-
-msgid "Find in automatic comments"
-msgstr "Tìm trong chú thích tự động"
-
-msgid "Close"
-msgstr "Đóng"
-
-msgid "< &Previous"
-msgstr "< &Trước"
-
-msgid "&Next >"
-msgstr "&Tiếp theo >"
-
 msgid "Create new translations project"
 msgstr "Tạo một dự án dịch mới"
 
@@ -1166,6 +1322,12 @@ msgstr "&Mở..."
 msgid "Open Recent"
 msgstr ""
 
+msgid "Open from Crowdin..."
+msgstr ""
+
+msgid "Open From Crowdin..."
+msgstr ""
+
 msgid "&Save"
 msgstr "&Ghi lại"
 
@@ -1214,14 +1376,17 @@ msgstr "&Hiển thị tham chiếu"
 msgid "&Find..."
 msgstr "&Tìm kiếm..."
 
+msgid "Replace..."
+msgstr ""
+
 msgid "Find next"
 msgstr "Tìm tiếp"
 
 msgid "Find previous"
 msgstr "Tìm lùi"
 
-msgid "Find"
-msgstr "Tìm"
+msgid "Find and Replace..."
+msgstr ""
 
 msgid "Find Next"
 msgstr "Tìm tiếp"
@@ -1262,6 +1427,12 @@ msgstr ""
 msgid "&Group By Context"
 msgstr ""
 
+msgid "Entries with errors first"
+msgstr ""
+
+msgid "Entries with Errors First"
+msgstr ""
+
 msgid "&Untranslated entries first"
 msgstr "Mục &chưa dịch đầu tiên"
 
@@ -1271,6 +1442,9 @@ msgstr "Mục &chưa dịch đầu tiên"
 msgid "Show sidebar"
 msgstr ""
 
+msgid "Show status bar"
+msgstr ""
+
 msgid "C&atalog"
 msgstr "C&atalog"
 
@@ -1286,6 +1460,9 @@ msgstr "Cập nhật từ tập tin &POT..."
 msgid "Update from &POT File..."
 msgstr "Cập nhật từ tập tin &POT..."
 
+msgid "Sync with Crowdin"
+msgstr ""
+
 msgid "Fill missing translations from &TM..."
 msgstr ""
 
@@ -1409,6 +1586,9 @@ msgstr ""
 msgid "Catalog properties"
 msgstr "Các thuộc tính của catalog"
 
+msgid "Project name and version:"
+msgstr "Tên và phiên bản của dự án:"
+
 msgid "Plural Forms:"
 msgstr "Dạng số nhiều:"
 
@@ -1421,17 +1601,29 @@ msgstr "Dùng biểu thức tự chọn"
 msgid "Learn about plural forms"
 msgstr "Tìm hiểu dạng thức số nhiều"
 
+msgid "Charset:"
+msgstr "Bảng mã ký tự:"
+
+msgid "Team:"
+msgstr "Nhóm:"
+
+msgid "Team's email address:"
+msgstr "Địa chỉ thư điện tử của nhóm"
+
 msgid "Translation properties"
 msgstr "Thuộc tính bản dịch"
 
+msgid "Sources paths"
+msgstr "Đường dẫn mã nguồn"
+
 msgid "Extract text from source files in the following directories:"
 msgstr "Trích xuất văn bản từ mã nguồn trong những thư mục sau đây:"
 
 msgid "Base path:"
 msgstr "Đường dẫn cơ sở:"
 
-msgid "Sources paths"
-msgstr "Đường dẫn mã nguồn"
+msgid "Sources keywords"
+msgstr "Từ khóa dùng cho mã nguồn"
 
 msgid ""
 "Use these keywords (function names) to recognize translatable strings\n"
@@ -1443,9 +1635,6 @@ msgstr ""
 msgid "Learn about gettext keywords"
 msgstr "Học thêm về các từ khóa của GNU gettext"
 
-msgid "Sources keywords"
-msgstr "Từ khóa dùng cho mã nguồn"
-
 msgid "Update summary"
 msgstr "Tóm tắt sơ lược quá trình cập nhật"
 
@@ -1493,7 +1682,7 @@ msgstr "Cập nhật catalog - đồng bộ hóa nó với mã nguồn"
 msgid "Toggled if selected string has fuzzy translation"
 msgstr "Đặt/Tắt trạng thái của một chuỗi là tạm dịch"
 
-msgid "Show or hide the sidebar."
+msgid "Show or hide the sidebar"
 msgstr ""
 
 #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer.
@@ -1505,6 +1694,9 @@ msgid ""
 "translation corresponds to."
 msgstr ""
 
+msgid "Notes for translators:"
+msgstr "Ghi chú dành cho người dịch:"
+
 msgid "Add comment"
 msgstr ""
 
@@ -1579,14 +1771,21 @@ msgstr "Sửa một bản dịch"
 msgid "Open an existing PO file and edit the translation."
 msgstr "Mở một tập tin PO sẵn có và sửa bản dịch."
 
-msgid "Create new translation"
-msgstr "Tạo bản dịch mới"
-
 msgid ""
 "Take an existing PO file or POT template and create a new translation from "
 "it."
 msgstr "Lấy một tập tin PO hay mẫu POT và tạo bản dịch mới từ đó."
 
+msgid "Collaborate on a translation with Crowdin"
+msgstr ""
+
+msgid ""
+"Download a file from Crowdin project, translate and sync your changes back."
+msgstr ""
+
+msgid "What is Crowdin?"
+msgstr ""
+
 msgid "There are no translations. That’s unusual."
 msgstr "Ở đây không có bản dịch nào cả. Điều này là bất thường."
 
@@ -1629,3 +1828,9 @@ msgstr "Trích từ mã nguồn"
 
 msgid "Configure source code extraction in Properties."
 msgstr "Cấu hình việc rút trích mã nguồn trong `Thuộc tính'."
+
+msgid "Sync"
+msgstr ""
+
+msgid "Synchronize the translation with Crowdin"
+msgstr ""
diff --git a/locales/wa.mo b/locales/wa.mo
index 3153211..53f891a 100644
Binary files a/locales/wa.mo and b/locales/wa.mo differ
diff --git a/locales/wa.po b/locales/wa.po
index 0cab378..a5e936f 100644
--- a/locales/wa.po
+++ b/locales/wa.po
@@ -2,8 +2,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: poedit\n"
 "Report-Msgid-Bugs-To: help at poedit.net\n"
-"POT-Creation-Date: 2015-01-10 16:00+0100\n"
-"PO-Revision-Date: 2015-03-10 12:34-0400\n"
+"POT-Creation-Date: 2015-05-27 11:31+0200\n"
+"PO-Revision-Date: 2015-05-27 05:18-0400\n"
 "Last-Translator: vslavik <vaclav at slavik.io>\n"
 "Language-Team: Walloon\n"
 "Language: wa_BE\n"
@@ -80,6 +80,15 @@ msgstr ""
 msgid "Error saving catalog"
 msgstr "Åk n' a nén stî tot schapant l' catalogue"
 
+msgid "PO Translation Files"
+msgstr ""
+
+msgid "POT Translation Templates"
+msgstr ""
+
+msgid "All Translation Files"
+msgstr ""
+
 msgid "Merging differences..."
 msgstr "Maxhaedje des diferinces..."
 
@@ -99,6 +108,83 @@ msgstr "Tchoezixhaedje do lingaedje"
 msgid "You must restart Poedit for this change to take effect."
 msgstr "Vos dvoz renonder Poedit po k' ci candjmint ci soeye en alaedje."
 
+msgid "Downloading translations is disabled in this project."
+msgstr ""
+
+msgid "Not authorized, please sign in again."
+msgstr ""
+
+msgid "Sign in to Crowdin"
+msgstr ""
+
+msgid ""
+"Crowdin is an online localization management platform and collaborative "
+"translation tool. Poedit can seamlessly sync PO files managed at Crowdin."
+msgstr ""
+
+msgid "Sign In"
+msgstr ""
+
+msgid "Sign in"
+msgstr ""
+
+msgid "Sign Out"
+msgstr ""
+
+msgid "Sign out"
+msgstr ""
+
+msgid "Waiting for authentication…"
+msgstr ""
+
+msgid "Updating user information…"
+msgstr ""
+
+msgid "Signed in as:"
+msgstr ""
+
+msgid "Learn More About Crowdin"
+msgstr ""
+
+msgid "Learn more about Crowdin"
+msgstr ""
+
+msgid "Open Crowdin translation"
+msgstr ""
+
+msgid "Project:"
+msgstr ""
+
+msgid "Language:"
+msgstr "Lingaedje:"
+
+msgid "File:"
+msgstr ""
+
+msgid "No translation projects listed in your Crowdin account."
+msgstr ""
+
+msgid "This project has no files that can be translated in Poedit."
+msgstr ""
+
+msgid "This file can only be edited in Crowdin’s web interface."
+msgstr ""
+
+msgid "Downloading latest translations…"
+msgstr ""
+
+msgid "Syncing with Crowdin"
+msgstr ""
+
+msgid "Syncing with Crowdin failed."
+msgstr ""
+
+msgid "Crowdin error"
+msgstr ""
+
+msgid "Uploading translations…"
+msgstr ""
+
 msgid "&Copy"
 msgstr ""
 
@@ -143,6 +229,12 @@ msgstr ""
 msgid "don't delete temporary files (for debugging)"
 msgstr ""
 
+msgid "handle a poedit:// URI"
+msgstr ""
+
+msgid "Failed to communicate with Poedit process."
+msgstr ""
+
 #, c-format
 msgid "Unhandled exception occurred: %s"
 msgstr ""
@@ -153,12 +245,6 @@ msgstr ""
 msgid "Open catalog"
 msgstr "Drovi catalogue"
 
-msgid "All Files"
-msgstr ""
-
-msgid "PO Translation Files"
-msgstr ""
-
 #, c-format
 msgid "File '%s' doesn't exist."
 msgstr "Li fitchî «%s» n' egzistêye nén."
@@ -388,6 +474,17 @@ msgstr ""
 msgid "Translation:"
 msgstr ""
 
+msgid ""
+"POT files are only templates and don’t contain any translations themselves.\n"
+"To make a translation, create a new PO file based on the template."
+msgstr ""
+
+msgid "Create New Translation"
+msgstr ""
+
+msgid "Create new translation"
+msgstr ""
+
 #. TRANSLATORS: %s is language name in its basic form (as you
 #. would see e.g. in a list of supported languages). You may need
 #. to rephrase it, e.g. to an equivalent of "for language %s".
@@ -435,9 +532,6 @@ msgstr ""
 msgid "Open catalog template"
 msgstr "Drovi modele di catalogue"
 
-msgid "POT Translation Templates"
-msgstr ""
-
 msgid "Updating catalog"
 msgstr ""
 
@@ -506,16 +600,18 @@ msgstr[1] ""
 msgid "The translation is ready for use."
 msgstr ""
 
-msgid "No references to this string found."
-msgstr "Nole referince di trovêye po cisse tchinne ci."
-
-msgid "Please choose the reference you want to show:"
-msgstr "Tchoezixhoz l' referince ki vos vloz vey:"
+msgid "Context:"
+msgstr ""
 
-msgid "References"
-msgstr "Referinces"
+#, c-format
+msgid "Poedit automatically fixed invalid content in the file “%s”."
+msgstr ""
 
-msgid "Context:"
+msgid ""
+"The file contained duplicate items, which is not allowed in PO files and "
+"would prevent the file from being used. Poedit fixed the issue, but you "
+"should review translations of any items marked as fuzzy and correct them if "
+"necessary."
 msgstr ""
 
 msgid "Language of the translation isn't set."
@@ -527,6 +623,21 @@ msgstr ""
 msgid "Set language"
 msgstr ""
 
+#. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)."
+msgid ""
+"Suggestions are not available if the translation language is not set "
+"correctly. Other features, such as plural forms, may be affected as well."
+msgstr ""
+
+msgid "Language of the translation is the same as source language."
+msgstr ""
+
+msgid "Fix Language"
+msgstr ""
+
+msgid "Fix language"
+msgstr ""
+
 msgid ""
 "This catalog has entries with plural forms, but doesn't have Plural-Forms "
 "header configured."
@@ -557,6 +668,7 @@ msgstr ""
 msgid "Plural forms expression used by the catalog is unusual for %s."
 msgstr ""
 
+#. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the catalog is unusual for %s.")"
 msgid "Review"
 msgstr ""
 
@@ -578,6 +690,12 @@ msgid_plural "%d errors"
 msgstr[0] ""
 msgstr[1] ""
 
+#, c-format
+msgid "%d entry"
+msgid_plural "%d entries"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid " (unsaved)"
 msgstr ""
 
@@ -691,6 +809,9 @@ msgstr ""
 msgid "Form %i"
 msgstr ""
 
+msgid "Singular"
+msgstr ""
+
 msgid "Zero"
 msgstr ""
 
@@ -700,6 +821,9 @@ msgstr ""
 msgid "Two"
 msgstr ""
 
+msgid "Plural"
+msgstr ""
+
 msgid "Other"
 msgstr ""
 
@@ -728,6 +852,12 @@ msgstr ""
 msgid "Show Sidebar"
 msgstr ""
 
+msgid "Hide Status Bar"
+msgstr ""
+
+msgid "Show Status Bar"
+msgstr ""
+
 msgid "Source text"
 msgstr ""
 
@@ -737,6 +867,10 @@ msgstr "Ratournaedje"
 msgid "ID"
 msgstr ""
 
+#, c-format
+msgid "Source text — %s"
+msgstr ""
+
 msgid "unknown language"
 msgstr ""
 
@@ -747,57 +881,73 @@ msgstr ""
 msgid "Error:"
 msgstr ""
 
-msgid "Project info"
-msgstr "Informåcions do pordjet"
+msgid "Source file"
+msgstr "Fitchî sourdant"
 
-msgid "Project name and version:"
-msgstr "No eyet modêye do pordjet:"
+msgid "Source file occurrence:"
+msgstr ""
 
-msgid "Language:"
-msgstr "Lingaedje:"
+msgid "Open in Editor"
+msgstr ""
 
-msgid "Team:"
-msgstr "Ekipe:"
+msgid "Open in editor"
+msgstr ""
 
-msgid "Team's email address:"
-msgstr "Adresse emile di l' ekipe:"
+msgid "No references for the selected item."
+msgstr ""
 
-msgid "Charset:"
-msgstr "Ecôdaedje:"
+#, c-format
+msgid "Error opening file %s!"
+msgstr "Åk n' a nén stî tot drovant l' fitchî «%s»!"
 
-msgid "Source"
+msgid "Find"
 msgstr ""
 
-msgid "Notes"
-msgstr "Notes"
+msgid "Replace"
+msgstr ""
 
-msgid "Automatic translation"
-msgstr "Ratournaedje otomatike"
+#. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.)
+msgid "Options"
+msgstr ""
 
-msgid "Fuzzy translation"
-msgstr "Ratournaedje «fuzzy»"
+msgid "Ignore case"
+msgstr ""
 
-msgid "Notes for translators:"
+msgid "Wrap around"
 msgstr ""
 
-msgid "Comment:"
-msgstr "Rawete:"
+msgid "Whole words only"
+msgstr ""
 
-msgid "Source file"
-msgstr "Fitchî sourdant"
+msgid "Find in source texts"
+msgstr ""
 
-msgid "Source file occurrence:"
+msgid "Find in translations"
+msgstr "Trover ezès ratournaedjes"
+
+msgid "Find in comments"
 msgstr ""
 
-msgid "Open in Editor"
+msgid "Close"
 msgstr ""
 
-msgid "Open in editor"
+msgid "Replace All"
 msgstr ""
 
-#, c-format
-msgid "Error opening file %s!"
-msgstr "Åk n' a nén stî tot drovant l' fitchî «%s»!"
+msgid "Replace all"
+msgstr ""
+
+msgid "< &Previous"
+msgstr ""
+
+msgid "&Next >"
+msgstr ""
+
+msgid "String to find"
+msgstr ""
+
+msgid "Replacement string"
+msgstr ""
 
 #, c-format
 msgid "Cannot execute program: %s"
@@ -990,9 +1140,19 @@ msgstr "Novea"
 msgid "Edit"
 msgstr "Candjî"
 
+msgid "Delete extractor"
+msgstr ""
+
+#, c-format
+msgid "Are you sure you want to delete the “%s” extractor?"
+msgstr ""
+
 msgid "Extractors"
 msgstr ""
 
+msgid "Accounts"
+msgstr ""
+
 msgid "Automatically check for updates"
 msgstr ""
 
@@ -1031,72 +1191,69 @@ msgstr ""
 msgid "Advanced"
 msgstr ""
 
-msgid "Additional keywords"
+msgid ""
+"<big>Drag and Drop Folders Here</big>\n"
+"\n"
+"or use the + button"
 msgstr ""
 
-msgid "Paths"
-msgstr "Tchimins"
-
-msgid "Excluded paths"
+msgid ""
+"<big>Drag and drop folders here</big>\n"
+"\n"
+"or use the + button"
 msgstr ""
 
-msgid "Name of the project the translation is for"
+msgid "Add Folders..."
 msgstr ""
 
-msgid "e.g. nplurals=2; plural=(n > 1);"
+msgid "Add folders..."
 msgstr ""
 
-msgid "UTF-8 (recommended)"
+msgid "Add Files..."
 msgstr ""
 
-msgid "Please save the file first. This section cannot be edited until then."
+msgid "Add files..."
 msgstr ""
 
-msgid "OK"
-msgstr "'l est bon"
-
-msgid "C&lear"
+msgid "Add Wildcard..."
 msgstr ""
 
-msgid "Clear the comment"
-msgstr "Netyî l' rawete"
-
-msgid "Find..."
-msgstr "Trover..."
-
-msgid "String to find:"
-msgstr "Tchinne a trover:"
+msgid "Add wildcard..."
+msgstr ""
 
-msgid "Case sensitive"
-msgstr "Diferince po ptitès et grandès letes"
+msgid "Paths"
+msgstr "Tchimins"
 
-msgid "Start from the first item"
+msgid "Excluded paths"
 msgstr ""
 
-msgid "Whole words only"
+msgid "Additional keywords"
 msgstr ""
 
-msgid "Find in original strings"
-msgstr "Trover ezès tchinnes d' oridjinne"
-
-msgid "Find in translations"
-msgstr "Trover ezès ratournaedjes"
-
-msgid "Find in comments"
+msgid "Name of the project the translation is for"
 msgstr ""
 
-msgid "Find in automatic comments"
+msgid "e.g. nplurals=2; plural=(n > 1);"
 msgstr ""
 
-msgid "Close"
+msgid "UTF-8 (recommended)"
 msgstr ""
 
-msgid "< &Previous"
+msgid "Please save the file first. This section cannot be edited until then."
 msgstr ""
 
-msgid "&Next >"
+msgid "Comment:"
+msgstr "Rawete:"
+
+msgid "OK"
+msgstr "'l est bon"
+
+msgid "C&lear"
 msgstr ""
 
+msgid "Clear the comment"
+msgstr "Netyî l' rawete"
+
 msgid "Create new translations project"
 msgstr "Askepyî on novea pordjet d' ratournaedje"
 
@@ -1151,6 +1308,12 @@ msgstr ""
 msgid "Open Recent"
 msgstr ""
 
+msgid "Open from Crowdin..."
+msgstr ""
+
+msgid "Open From Crowdin..."
+msgstr ""
+
 msgid "&Save"
 msgstr "&Schaper"
 
@@ -1199,13 +1362,16 @@ msgstr ""
 msgid "&Find..."
 msgstr "&Trover..."
 
+msgid "Replace..."
+msgstr ""
+
 msgid "Find next"
 msgstr ""
 
 msgid "Find previous"
 msgstr ""
 
-msgid "Find"
+msgid "Find and Replace..."
 msgstr ""
 
 msgid "Find Next"
@@ -1247,6 +1413,12 @@ msgstr ""
 msgid "&Group By Context"
 msgstr ""
 
+msgid "Entries with errors first"
+msgstr ""
+
+msgid "Entries with Errors First"
+msgstr ""
+
 msgid "&Untranslated entries first"
 msgstr ""
 
@@ -1256,6 +1428,9 @@ msgstr ""
 msgid "Show sidebar"
 msgstr ""
 
+msgid "Show status bar"
+msgstr ""
+
 msgid "C&atalog"
 msgstr ""
 
@@ -1271,6 +1446,9 @@ msgstr "Mete a djoû a pårti d' on fitchî &POT..."
 msgid "Update from &POT File..."
 msgstr ""
 
+msgid "Sync with Crowdin"
+msgstr ""
+
 msgid "Fill missing translations from &TM..."
 msgstr ""
 
@@ -1394,6 +1572,9 @@ msgstr ""
 msgid "Catalog properties"
 msgstr ""
 
+msgid "Project name and version:"
+msgstr "No eyet modêye do pordjet:"
+
 msgid "Plural Forms:"
 msgstr ""
 
@@ -1406,16 +1587,28 @@ msgstr ""
 msgid "Learn about plural forms"
 msgstr ""
 
+msgid "Charset:"
+msgstr "Ecôdaedje:"
+
+msgid "Team:"
+msgstr "Ekipe:"
+
+msgid "Team's email address:"
+msgstr "Adresse emile di l' ekipe:"
+
 msgid "Translation properties"
 msgstr ""
 
+msgid "Sources paths"
+msgstr ""
+
 msgid "Extract text from source files in the following directories:"
 msgstr ""
 
 msgid "Base path:"
 msgstr "Tchimin d' båze:"
 
-msgid "Sources paths"
+msgid "Sources keywords"
 msgstr ""
 
 msgid ""
@@ -1426,9 +1619,6 @@ msgstr ""
 msgid "Learn about gettext keywords"
 msgstr ""
 
-msgid "Sources keywords"
-msgstr ""
-
 msgid "Update summary"
 msgstr "Mete a djoû l' rascourti"
 
@@ -1477,7 +1667,7 @@ msgstr "Mete a djoû l' catalogue - sincronijhî avou l' côde sourdant"
 msgid "Toggled if selected string has fuzzy translation"
 msgstr "Metou si l' tchinne di tchoezeye a-st on ratournaedje «fuzzy»"
 
-msgid "Show or hide the sidebar."
+msgid "Show or hide the sidebar"
 msgstr ""
 
 #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer.
@@ -1489,6 +1679,9 @@ msgid ""
 "translation corresponds to."
 msgstr ""
 
+msgid "Notes for translators:"
+msgstr ""
+
 msgid "Add comment"
 msgstr ""
 
@@ -1561,14 +1754,21 @@ msgstr ""
 msgid "Open an existing PO file and edit the translation."
 msgstr ""
 
-msgid "Create new translation"
-msgstr ""
-
 msgid ""
 "Take an existing PO file or POT template and create a new translation from "
 "it."
 msgstr ""
 
+msgid "Collaborate on a translation with Crowdin"
+msgstr ""
+
+msgid ""
+"Download a file from Crowdin project, translate and sync your changes back."
+msgstr ""
+
+msgid "What is Crowdin?"
+msgstr ""
+
 msgid "There are no translations. That’s unusual."
 msgstr ""
 
@@ -1601,3 +1801,9 @@ msgstr ""
 
 msgid "Configure source code extraction in Properties."
 msgstr ""
+
+msgid "Sync"
+msgstr ""
+
+msgid "Synchronize the translation with Crowdin"
+msgstr ""
diff --git a/locales/zh_CN.mo b/locales/zh_CN.mo
index 94f5f75..2042d9a 100644
Binary files a/locales/zh_CN.mo and b/locales/zh_CN.mo differ
diff --git a/locales/zh_CN.po b/locales/zh_CN.po
index 46b96da..7ae19ab 100644
--- a/locales/zh_CN.po
+++ b/locales/zh_CN.po
@@ -2,8 +2,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: poedit\n"
 "Report-Msgid-Bugs-To: help at poedit.net\n"
-"POT-Creation-Date: 2015-01-10 16:00+0100\n"
-"PO-Revision-Date: 2015-03-10 12:33-0400\n"
+"POT-Creation-Date: 2015-05-27 11:31+0200\n"
+"PO-Revision-Date: 2015-05-27 05:17-0400\n"
 "Last-Translator: vslavik <vaclav at slavik.io>\n"
 "Language-Team: Chinese Simplified\n"
 "Language: zh_CN\n"
@@ -36,7 +36,7 @@ msgstr "第 %d 行已损坏(文件“%s”中),不是有效的 %s 数据
 
 #, c-format
 msgid "Malformed header: '%s'"
-msgstr "错误的头: '%s'"
+msgstr "格式异常的头:“%s”"
 
 msgid ""
 "Broken catalog file: singular form msgstr used together with msgid_plural"
@@ -48,7 +48,7 @@ msgstr "已损坏的编目文件:在没有 msgid_plural 的情况下使用了
 msgid ""
 "There were errors when loading the catalog. Some data may be missing or "
 "corrupted as the result."
-msgstr "当加载编目时有错误。因此有些数据可能缺少或损坏。"
+msgstr "加载编目时遇到错误。有些数据可能缺失或损坏。"
 
 #, c-format
 msgid "Couldn't load file %s, it is probably corrupted."
@@ -59,8 +59,8 @@ msgid ""
 "File '%s' is read-only and cannot be saved.\n"
 "Please save it under different name."
 msgstr ""
-"文件 '%s' 为只读,不能保存。\n"
-"请使用不同的名称保存。"
+"文件“%s”为只读,不能保存。\n"
+"请使用其他名称保存。"
 
 #, c-format
 msgid "Couldn't save file %s."
@@ -84,12 +84,21 @@ msgstr ""
 msgid "Error saving catalog"
 msgstr "保存编目时出错"
 
+msgid "PO Translation Files"
+msgstr "PO 翻译文件"
+
+msgid "POT Translation Templates"
+msgstr "POT 翻译模板"
+
+msgid "All Translation Files"
+msgstr "所有翻译文件"
+
 msgid "Merging differences..."
 msgstr "合并差异..."
 
 #, c-format
 msgid "'%s' is not a valid POT file."
-msgstr "'%s' 不是有效的 POT 文件。"
+msgstr "“%s”不是一个有效的 POT 文件。"
 
 msgid "(Use default language)"
 msgstr "(使用默认语言)"
@@ -103,6 +112,85 @@ msgstr "语言选择"
 msgid "You must restart Poedit for this change to take effect."
 msgstr "您必须重新启动 Poedit 才能使这个更改生效。"
 
+msgid "Downloading translations is disabled in this project."
+msgstr "此项目禁用了下载翻译。"
+
+msgid "Not authorized, please sign in again."
+msgstr "未授权,请尝试重新登录。"
+
+msgid "Sign in to Crowdin"
+msgstr "登录到 Crowdin"
+
+msgid ""
+"Crowdin is an online localization management platform and collaborative "
+"translation tool. Poedit can seamlessly sync PO files managed at Crowdin."
+msgstr ""
+"Crowdin 是一个在线的本地化管理平台和协作翻译工具。Poedit 可以无缝同步在 "
+"Crowdin 上管理的 PO 文件。"
+
+msgid "Sign In"
+msgstr "登录"
+
+msgid "Sign in"
+msgstr "登录"
+
+msgid "Sign Out"
+msgstr "登出"
+
+msgid "Sign out"
+msgstr "登出"
+
+msgid "Waiting for authentication…"
+msgstr "正在等待身份验证…"
+
+msgid "Updating user information…"
+msgstr "正在更新用户信息…"
+
+msgid "Signed in as:"
+msgstr "已登录为:"
+
+msgid "Learn More About Crowdin"
+msgstr "了解更多有关 Crowdin"
+
+msgid "Learn more about Crowdin"
+msgstr "了解更多有关 Crowdin"
+
+msgid "Open Crowdin translation"
+msgstr "打开 Crowdin 翻译"
+
+msgid "Project:"
+msgstr "项目:"
+
+msgid "Language:"
+msgstr "语言:"
+
+msgid "File:"
+msgstr "文件:"
+
+msgid "No translation projects listed in your Crowdin account."
+msgstr "您的 Crowdin 账户中没有列出翻译项目。"
+
+msgid "This project has no files that can be translated in Poedit."
+msgstr "此项目没有可以在 Poedit 中翻译的文件。"
+
+msgid "This file can only be edited in Crowdin’s web interface."
+msgstr "只能在 Crowdin 的网页界面中编辑此文件。"
+
+msgid "Downloading latest translations…"
+msgstr "正在下载最新的翻译…"
+
+msgid "Syncing with Crowdin"
+msgstr "正在与 Crowdin 同步"
+
+msgid "Syncing with Crowdin failed."
+msgstr "与 Crowdin 同步失败。"
+
+msgid "Crowdin error"
+msgstr "Crowdin 错误"
+
+msgid "Uploading translations…"
+msgstr "正在上传翻译…"
+
 msgid "&Copy"
 msgstr "复制(&C)"
 
@@ -125,7 +213,7 @@ msgstr "正在扫描文件..."
 #. TRANSLATORS: '%s' is replaced with the kind of the files (e.g. C++, PHP, ...)
 #, c-format
 msgid "Parsing %s files..."
-msgstr "正在分析 %s 文件..."
+msgstr "正在解析 %s 文件..."
 
 msgid "Failed to load extracted catalog."
 msgstr "加载已提取的编目失败。"
@@ -147,6 +235,12 @@ msgstr "请打开并编辑对应的 PO 文件。当你保存它时,MO 文件
 msgid "don't delete temporary files (for debugging)"
 msgstr "不删除临时文件(供调试使用)"
 
+msgid "handle a poedit:// URI"
+msgstr "处理 poedit:// URI"
+
+msgid "Failed to communicate with Poedit process."
+msgstr "与 Poedit 进程的通信失败。"
+
 #, c-format
 msgid "Unhandled exception occurred: %s"
 msgstr "发生了不能处理的异常:%s"
@@ -157,15 +251,9 @@ msgstr "发生了不能处理的异常。"
 msgid "Open catalog"
 msgstr "打开编目"
 
-msgid "All Files"
-msgstr "所有文件"
-
-msgid "PO Translation Files"
-msgstr "PO 翻译文件"
-
 #, c-format
 msgid "File '%s' doesn't exist."
-msgstr "文件 '%s' 不存在。"
+msgstr "文件“%s”不存在。"
 
 #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name
 #. ("Poedit" here, but please use "%s")
@@ -367,7 +455,7 @@ msgstr "您不能在 Poedit 窗口上放下一个以上的文件。"
 
 #, c-format
 msgid "File '%s' is not a message catalog."
-msgstr "文件 '%s' 不是消息编目。"
+msgstr "文件“%s”不是一个消息编目。"
 
 msgid "Poedit"
 msgstr "Poedit"
@@ -390,6 +478,19 @@ msgstr "复数:"
 msgid "Translation:"
 msgstr "翻译:"
 
+msgid ""
+"POT files are only templates and don’t contain any translations themselves.\n"
+"To make a translation, create a new PO file based on the template."
+msgstr ""
+"POT 文件只是模板,不包含任何翻译内容。\n"
+"若要制作一个翻译,请基于模板创建一个新的 PO 文件。"
+
+msgid "Create New Translation"
+msgstr "创建新的翻译"
+
+msgid "Create new translation"
+msgstr "创建新的翻译"
+
 #. TRANSLATORS: %s is language name in its basic form (as you
 #. would see e.g. in a list of supported languages). You may need
 #. to rephrase it, e.g. to an equivalent of "for language %s".
@@ -402,7 +503,7 @@ msgid "Install"
 msgstr "安装"
 
 msgid "Catalog modified. Do you want to save changes?"
-msgstr "编目已修改。您想要保存更改吗?"
+msgstr "编目已修改。您想要保存更改吗?"
 
 msgid "Save changes"
 msgstr "保存更改"
@@ -437,9 +538,6 @@ msgstr "HTML 文件"
 msgid "Open catalog template"
 msgstr "打开编目模板"
 
-msgid "POT Translation Templates"
-msgstr "POT 翻译模板"
-
 msgid "Updating catalog"
 msgstr "更新编目"
 
@@ -472,7 +570,7 @@ msgid ""
 "Entries with errors were marked in red in the list. Details of the error "
 "will be shown when you select such an entry."
 msgstr ""
-"有错误的条目在列表中被标记为红色。当您选择这样的条目时将显示错误的详细信息。"
+"有错误的条目在列表中被标记为红色。您选择这样的条目时将显示错误的详细信息。"
 
 msgid "The file was saved safely."
 msgstr "文件已被安全地保存。"
@@ -502,23 +600,27 @@ msgstr "翻译中未发现问题。"
 msgid "The translation is ready for use, but %d entry is not translated yet."
 msgid_plural ""
 "The translation is ready for use, but %d entries are not translated yet."
-msgstr[0] "翻译已经可以被使用了,但是还有 %d 个条目没有被翻译呢。"
+msgstr[0] "翻译已经可以使用了,不过还有 %d 个条目没有被翻译。"
 
 msgid "The translation is ready for use."
 msgstr "翻译为使用准备就绪。"
 
-msgid "No references to this string found."
-msgstr "未找到对这个字串的引用。"
-
-msgid "Please choose the reference you want to show:"
-msgstr "请选择您想要显示的引用:"
-
-msgid "References"
-msgstr "引用"
-
 msgid "Context:"
 msgstr "上下文:"
 
+#, c-format
+msgid "Poedit automatically fixed invalid content in the file “%s”."
+msgstr "Poedit 自动修复了“%s”文件中的无效内容。"
+
+msgid ""
+"The file contained duplicate items, which is not allowed in PO files and "
+"would prevent the file from being used. Poedit fixed the issue, but you "
+"should review translations of any items marked as fuzzy and correct them if "
+"necessary."
+msgstr ""
+"该文件中包含重复的项目,这是不允许的,并且影响了该文件被使用。Poedit 修复了该"
+"问题,但您应该审阅任何已被标记为“模糊”的翻译和纠正它们(如有必要)。"
+
 msgid "Language of the translation isn't set."
 msgstr "翻译语言未设置。"
 
@@ -528,6 +630,23 @@ msgstr "设置语言"
 msgid "Set language"
 msgstr "选择语言"
 
+#. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)."
+msgid ""
+"Suggestions are not available if the translation language is not set "
+"correctly. Other features, such as plural forms, may be affected as well."
+msgstr ""
+"如果翻译语言设置不正确,建议将不可用。其他特性(例如复数形式)也可能受到影"
+"响。"
+
+msgid "Language of the translation is the same as source language."
+msgstr "翻译语言与源语言相同。"
+
+msgid "Fix Language"
+msgstr "修复语言"
+
+msgid "Fix language"
+msgstr "修复语言"
+
 msgid ""
 "This catalog has entries with plural forms, but doesn't have Plural-Forms "
 "header configured."
@@ -558,6 +677,7 @@ msgstr "修正头"
 msgid "Plural forms expression used by the catalog is unusual for %s."
 msgstr "该目录中所使用的复数形式对于 %s 是不同寻常的。"
 
+#. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the catalog is unusual for %s.")"
 msgid "Review"
 msgstr "检查"
 
@@ -578,6 +698,11 @@ msgid "%d error"
 msgid_plural "%d errors"
 msgstr[0] "%d 错误"
 
+#, c-format
+msgid "%d entry"
+msgid_plural "%d entries"
+msgstr[0] "%d 条目"
+
 msgid " (unsaved)"
 msgstr " (未保存)"
 
@@ -595,7 +720,7 @@ msgid "Purge deleted translations"
 msgstr "清除已删除的翻译"
 
 msgid "Do you want to remove all translations that are no longer used?"
-msgstr "您确定要移除不再使用的所有翻译吗?"
+msgstr "您确定要移除所有不再使用的翻译吗?"
 
 msgid ""
 "If you continue with purging, all translations marked as deleted will be "
@@ -669,10 +794,10 @@ msgid_plural "Translated %u strings"
 msgstr[0] "已翻译 %u 个字符串"
 
 msgid "Copy from source text"
-msgstr "从源文本中复制"
+msgstr "复制源文本"
 
 msgid "Copy from Source Text"
-msgstr "从源文本中复制"
+msgstr "复制源文本"
 
 msgid "Clear translation"
 msgstr "清除翻译"
@@ -696,6 +821,9 @@ msgstr "一切"
 msgid "Form %i"
 msgstr "表格 %i"
 
+msgid "Singular"
+msgstr "单数"
+
 msgid "Zero"
 msgstr "零"
 
@@ -705,6 +833,9 @@ msgstr "一"
 msgid "Two"
 msgstr "二"
 
+msgid "Plural"
+msgstr "复数"
+
 msgid "Other"
 msgstr "其他"
 
@@ -733,6 +864,12 @@ msgstr "隐藏侧边栏"
 msgid "Show Sidebar"
 msgstr "显示侧边栏"
 
+msgid "Hide Status Bar"
+msgstr "隐藏状态栏"
+
+msgid "Show Status Bar"
+msgstr "显示状态栏"
+
 msgid "Source text"
 msgstr "源文本"
 
@@ -742,6 +879,10 @@ msgstr "翻译"
 msgid "ID"
 msgstr "ID"
 
+#, c-format
+msgid "Source text — %s"
+msgstr "源文本 — %s"
+
 msgid "unknown language"
 msgstr "未知语言"
 
@@ -752,57 +893,73 @@ msgstr "翻译 — %s"
 msgid "Error:"
 msgstr "错误:"
 
-msgid "Project info"
-msgstr "项目信息"
+msgid "Source file"
+msgstr "源文件"
 
-msgid "Project name and version:"
-msgstr "项目名称和版本:"
+msgid "Source file occurrence:"
+msgstr "源文件出现:"
 
-msgid "Language:"
-msgstr "语言:"
+msgid "Open in Editor"
+msgstr "在编辑器中打开"
 
-msgid "Team:"
-msgstr "团队:"
+msgid "Open in editor"
+msgstr "在编辑器中打开"
 
-msgid "Team's email address:"
-msgstr "团队的电子邮件地址:"
+msgid "No references for the selected item."
+msgstr "没有对选定项的引用。"
 
-msgid "Charset:"
-msgstr "字符集:"
+#, c-format
+msgid "Error opening file %s!"
+msgstr "打开文件 %s 时出错!"
 
-msgid "Source"
-msgstr "源文"
+msgid "Find"
+msgstr "查找"
 
-msgid "Notes"
-msgstr "注释"
+msgid "Replace"
+msgstr "替换"
 
-msgid "Automatic translation"
-msgstr "自动翻译"
+#. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.)
+msgid "Options"
+msgstr "选项"
 
-msgid "Fuzzy translation"
-msgstr "模糊翻译"
+msgid "Ignore case"
+msgstr "忽略大小写"
 
-msgid "Notes for translators:"
-msgstr "给译员的注释:"
+msgid "Wrap around"
+msgstr "全字匹配"
 
-msgid "Comment:"
-msgstr "注释:"
+msgid "Whole words only"
+msgstr "仅整个单词"
 
-msgid "Source file"
-msgstr "源文件"
+msgid "Find in source texts"
+msgstr "在源文本中查找"
 
-msgid "Source file occurrence:"
-msgstr "源文件出现:"
+msgid "Find in translations"
+msgstr "在翻译中查找"
 
-msgid "Open in Editor"
-msgstr "在编辑器中打开"
+msgid "Find in comments"
+msgstr "在注释中查找"
 
-msgid "Open in editor"
-msgstr "在编辑器中打开"
+msgid "Close"
+msgstr "关闭"
 
-#, c-format
-msgid "Error opening file %s!"
-msgstr "打开文件 %s 时出错!"
+msgid "Replace All"
+msgstr "全部替换"
+
+msgid "Replace all"
+msgstr "全部替换"
+
+msgid "< &Previous"
+msgstr "< 上一个(&P)"
+
+msgid "&Next >"
+msgstr "下一个(&N) >"
+
+msgid "String to find"
+msgstr "要查找的字符串"
+
+msgid "Replacement string"
+msgstr "替换字符串"
 
 #, c-format
 msgid "Cannot execute program: %s"
@@ -848,7 +1005,7 @@ msgid "<unnamed>"
 msgstr "<未命名>"
 
 msgid "Do you want to delete the project?"
-msgstr "您确定要删除项目吗?"
+msgstr "您确定要删除此项目吗?"
 
 msgid "Confirmation"
 msgstr "确认"
@@ -857,8 +1014,8 @@ msgid ""
 "Do you really want to do mass update of\n"
 "all catalogs in this project?"
 msgstr ""
-"您确定想要执行这个项目中所有编目的\n"
-"大规模更新吗?"
+"您确定要对这个项目中的所有编目执行\n"
+"大规模更新吗?"
 
 msgid "Information about the translator"
 msgstr "关于翻译者的信息"
@@ -924,7 +1081,7 @@ msgid "General"
 msgstr "常规"
 
 msgid "Use translation memory"
-msgstr "使用翻译记忆库"
+msgstr "使用翻译记忆"
 
 msgid "Learn From Files..."
 msgstr "从文件中学习..."
@@ -945,7 +1102,7 @@ msgid ""
 "near-empty, it will not be very effective. The more translations\n"
 "you edit and the larger the TM grows, the better it gets."
 msgstr ""
-"如果启用, Poedit 会尝试使用你以前存储在翻译\n"
+"如果启用,Poedit 会尝试使用你以前存储在翻译\n"
 "记忆库中的翻译填补新的条目。如果翻译记忆库\n"
 "几乎是空的,这将不会非常有效。你翻译的越多,\n"
 "翻译记忆库就会成长得越大,自动填补的效果就会越好。"
@@ -1001,9 +1158,19 @@ msgstr "新建"
 msgid "Edit"
 msgstr "编辑"
 
+msgid "Delete extractor"
+msgstr "删除提取器"
+
+#, c-format
+msgid "Are you sure you want to delete the “%s” extractor?"
+msgstr "您确定要删除“%s”提取器吗?"
+
 msgid "Extractors"
 msgstr "提取器"
 
+msgid "Accounts"
+msgstr "账号"
+
 msgid "Automatically check for updates"
 msgstr "自动检查更新"
 
@@ -1044,8 +1211,41 @@ msgstr "保留现有文件的格式"
 msgid "Advanced"
 msgstr "高级"
 
-msgid "Additional keywords"
-msgstr "额外的关键字"
+msgid ""
+"<big>Drag and Drop Folders Here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+"<big>拖放文件夹到这里</big>\n"
+"\n"
+"或者使用 + 按钮"
+
+msgid ""
+"<big>Drag and drop folders here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+"<big>拖放文件夹到这里</big>\n"
+"\n"
+"或者使用 + 按钮"
+
+msgid "Add Folders..."
+msgstr "添加文件夹..."
+
+msgid "Add folders..."
+msgstr "添加文件夹..."
+
+msgid "Add Files..."
+msgstr "添加文件..."
+
+msgid "Add files..."
+msgstr "添加文件..."
+
+msgid "Add Wildcard..."
+msgstr "添加通配符..."
+
+msgid "Add wildcard..."
+msgstr "添加通配符..."
 
 msgid "Paths"
 msgstr "路径"
@@ -1053,6 +1253,9 @@ msgstr "路径"
 msgid "Excluded paths"
 msgstr "排除的路径"
 
+msgid "Additional keywords"
+msgstr "额外的关键字"
+
 msgid "Name of the project the translation is for"
 msgstr "翻译的项目名称"
 
@@ -1063,7 +1266,10 @@ msgid "UTF-8 (recommended)"
 msgstr "UTF-8 (推荐)"
 
 msgid "Please save the file first. This section cannot be edited until then."
-msgstr "请先保存文件。 以下内容在此之前不能被编辑。"
+msgstr "请先保存文件。以下内容在此之前不能被编辑。"
+
+msgid "Comment:"
+msgstr "注释:"
 
 msgid "OK"
 msgstr "确定"
@@ -1074,42 +1280,6 @@ msgstr "清除(&L)"
 msgid "Clear the comment"
 msgstr "清除注释"
 
-msgid "Find..."
-msgstr "查找..."
-
-msgid "String to find:"
-msgstr "要查找的字串:"
-
-msgid "Case sensitive"
-msgstr "区分大小写"
-
-msgid "Start from the first item"
-msgstr "从第一项开始"
-
-msgid "Whole words only"
-msgstr "仅整个单词"
-
-msgid "Find in original strings"
-msgstr "在原始字串中查找"
-
-msgid "Find in translations"
-msgstr "在翻译中查找"
-
-msgid "Find in comments"
-msgstr "在注释中查找"
-
-msgid "Find in automatic comments"
-msgstr "在自动注释中查找"
-
-msgid "Close"
-msgstr "关闭"
-
-msgid "< &Previous"
-msgstr "< 上一个(&P)"
-
-msgid "&Next >"
-msgstr "下一个(&N) >"
-
 msgid "Create new translations project"
 msgstr "创建新的翻译项目"
 
@@ -1164,6 +1334,12 @@ msgstr "打开(&O)..."
 msgid "Open Recent"
 msgstr "打开最近的"
 
+msgid "Open from Crowdin..."
+msgstr "从 Crowdin 打开..."
+
+msgid "Open From Crowdin..."
+msgstr "从 Crowdin 打开..."
+
 msgid "&Save"
 msgstr "保存(&S)"
 
@@ -1177,7 +1353,7 @@ msgid "Compile to MO..."
 msgstr "编译为 MO..."
 
 msgid "E&xport as HTML..."
-msgstr "导出为HTML格式...(&x)"
+msgstr "导出为HTML格式...(&X)"
 
 msgid "Check for updates..."
 msgstr "检查更新..."
@@ -1212,14 +1388,17 @@ msgstr "显示引用(&S)"
 msgid "&Find..."
 msgstr "查找(&F)..."
 
+msgid "Replace..."
+msgstr "替换..."
+
 msgid "Find next"
 msgstr "查找下一个"
 
 msgid "Find previous"
 msgstr "查找上一个"
 
-msgid "Find"
-msgstr "查找"
+msgid "Find and Replace..."
+msgstr "查找和替换..."
 
 msgid "Find Next"
 msgstr "查找下一个"
@@ -1260,6 +1439,12 @@ msgstr "按上下文分组(&G)"
 msgid "&Group By Context"
 msgstr "按上下文分组(&G)"
 
+msgid "Entries with errors first"
+msgstr "带有错误的条目优先"
+
+msgid "Entries with Errors First"
+msgstr "带有错误的条目优先"
+
 msgid "&Untranslated entries first"
 msgstr "未翻译条目优先(&U)"
 
@@ -1269,6 +1454,9 @@ msgstr "未翻译条目优先(&U)"
 msgid "Show sidebar"
 msgstr "显示侧边栏"
 
+msgid "Show status bar"
+msgstr "显示状态栏"
+
 msgid "C&atalog"
 msgstr "编目(&A)"
 
@@ -1284,6 +1472,9 @@ msgstr "从 POT 文件更新(&P)..."
 msgid "Update from &POT File..."
 msgstr "从 POT 文件更新(&P)..."
 
+msgid "Sync with Crowdin"
+msgstr "与 Crowdin 同步"
+
 msgid "Fill missing translations from &TM..."
 msgstr "从 TM 填补缺少的翻译...(&T)"
 
@@ -1399,7 +1590,7 @@ msgstr ""
 "%f 展开成文件名。"
 
 msgid "Source code charset:"
-msgstr "源代码字符集:"
+msgstr "源代码字符集:"
 
 #, c-format
 msgid ""
@@ -1412,6 +1603,9 @@ msgstr ""
 msgid "Catalog properties"
 msgstr "编目属性"
 
+msgid "Project name and version:"
+msgstr "项目名称和版本:"
+
 msgid "Plural Forms:"
 msgstr "复数形式:"
 
@@ -1422,19 +1616,31 @@ msgid "Use custom expression"
 msgstr "使用自定义表达式"
 
 msgid "Learn about plural forms"
-msgstr "学习复数形式"
+msgstr "了解复数形式"
+
+msgid "Charset:"
+msgstr "字符集:"
+
+msgid "Team:"
+msgstr "团队:"
+
+msgid "Team's email address:"
+msgstr "团队的电子邮件地址:"
 
 msgid "Translation properties"
 msgstr "翻译属性"
 
+msgid "Sources paths"
+msgstr "源路径"
+
 msgid "Extract text from source files in the following directories:"
 msgstr "从下列目录中的源文件提取文本:"
 
 msgid "Base path:"
 msgstr "基础路径:"
 
-msgid "Sources paths"
-msgstr "源路径"
+msgid "Sources keywords"
+msgstr "源关键字"
 
 msgid ""
 "Use these keywords (function names) to recognize translatable strings\n"
@@ -1444,9 +1650,6 @@ msgstr "使用这些关键字(函数名)来识别源文件中的可翻译字串:
 msgid "Learn about gettext keywords"
 msgstr "了解 gettext 关键字"
 
-msgid "Sources keywords"
-msgstr "源关键字"
-
 msgid "Update summary"
 msgstr "更新摘要"
 
@@ -1494,7 +1697,7 @@ msgstr "更新编目 - 将其与源文同步"
 msgid "Toggled if selected string has fuzzy translation"
 msgstr "切换是否选择的字串有模糊翻译"
 
-msgid "Show or hide the sidebar."
+msgid "Show or hide the sidebar"
 msgstr "显示或隐藏侧边栏"
 
 #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer.
@@ -1506,6 +1709,9 @@ msgid ""
 "translation corresponds to."
 msgstr "模糊翻译与相对应的旧的源文本 (在更新期间改变之前)。"
 
+msgid "Notes for translators:"
+msgstr "给译员的注释:"
+
 msgid "Add comment"
 msgstr "添加注释"
 
@@ -1551,8 +1757,8 @@ msgid ""
 "This must be done before Poedit can start. It may take a few minutes if you "
 "have lots of translations stored, but should normally be much faster."
 msgstr ""
-"完成这些之后 Poedit 就可以开始工作了。如果你有大量需要翻译的字符串,这可能需"
-"要几分钟的时间,但一般应很快。"
+"完成这些之后 Poedit 就可以开始工作了。如果你有大量可翻译的字符串,这可能需要"
+"几分钟的时间,但一般应很快。"
 
 msgid "Proceed"
 msgstr "继续进行"
@@ -1584,14 +1790,21 @@ msgstr "编辑翻译"
 msgid "Open an existing PO file and edit the translation."
 msgstr "打开一个现有的PO文件并编辑翻译。"
 
-msgid "Create new translation"
-msgstr "创建新的翻译"
-
 msgid ""
 "Take an existing PO file or POT template and create a new translation from "
 "it."
 msgstr "利用现有的PO文件或者POT模板,并从它创建一个新的翻译。"
 
+msgid "Collaborate on a translation with Crowdin"
+msgstr "在 Crowdin 上进行翻译协作"
+
+msgid ""
+"Download a file from Crowdin project, translate and sync your changes back."
+msgstr "从 Crowdin 项目下载一个文件、翻译,然后将您的更改同步回去。"
+
+msgid "What is Crowdin?"
+msgstr "Crowdin 是什么?"
+
 msgid "There are no translations. That’s unusual."
 msgstr "找不到翻译文件,这不正常"
 
@@ -1602,28 +1815,34 @@ msgid ""
 "Translators typically use PO template files (POTs) prepared for them by the "
 "developer."
 msgstr ""
-"翻译条目不会在Gettext系统中手动添加条目,但是会自动从源代码中提取。\n"
-"这样一来,我们可以掌握最新和最准确的需要翻译的条目。\n"
-"翻译人员通常使用由开发商为他们准备PO模板文件(POTS)。"
+"翻译条目不是在 Gettext 系统中手动添加的,而是自动从源代码中提取。\n"
+"这样一来,我们才可以掌握最新且最准确的需要翻译的条目。\n"
+"翻译人员通常使用开发商为他们准备的 PO 模板文件(.pot)。"
 
 msgid "(Learn more about GNU gettext)"
 msgstr "(了解更多关于 GNU gettext 的内容)"
 
 msgid "The simplest way to fill this catalog is to update it from a POT:"
-msgstr "填补这个条目的最简单的办法是从一个 POT 文件更新:"
+msgstr "填补这个编目的最简单的办法是从一个 POT 文件更新:"
 
 msgid "Update from POT"
 msgstr "从 POT 文件更新"
 
 msgid "Take translatable strings from an existing POT template."
-msgstr "从现有的 POT 模版中提取需要翻译的字符串。"
+msgstr "从现有的 POT 模板中提取可翻译的字符串。"
 
 msgid ""
 "You can also extract translatable strings directly from the source code:"
-msgstr "你也可以直接从源代码中提取需要翻译的字符串:"
+msgstr "你也可以直接从源代码中提取可翻译的字符串:"
 
 msgid "Extract from sources"
 msgstr "从源代码中提取"
 
 msgid "Configure source code extraction in Properties."
 msgstr "在属性中配置源代码提取。"
+
+msgid "Sync"
+msgstr "同步"
+
+msgid "Synchronize the translation with Crowdin"
+msgstr "与 Crowdin 同步翻译"
diff --git a/locales/zh_TW.mo b/locales/zh_TW.mo
index b7af56a..e4bf575 100644
Binary files a/locales/zh_TW.mo and b/locales/zh_TW.mo differ
diff --git a/locales/zh_TW.po b/locales/zh_TW.po
index ad61b0d..96d035f 100644
--- a/locales/zh_TW.po
+++ b/locales/zh_TW.po
@@ -2,8 +2,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: poedit\n"
 "Report-Msgid-Bugs-To: help at poedit.net\n"
-"POT-Creation-Date: 2015-01-10 16:00+0100\n"
-"PO-Revision-Date: 2015-03-10 12:33-0400\n"
+"POT-Creation-Date: 2015-05-27 11:31+0200\n"
+"PO-Revision-Date: 2015-05-27 05:17-0400\n"
 "Last-Translator: vslavik <vaclav at slavik.io>\n"
 "Language-Team: Chinese Traditional\n"
 "Language: zh_TW\n"
@@ -84,6 +84,15 @@ msgstr ""
 msgid "Error saving catalog"
 msgstr "儲存編目檔時發生錯誤"
 
+msgid "PO Translation Files"
+msgstr "PO 翻譯檔"
+
+msgid "POT Translation Templates"
+msgstr "POT 翻譯模板"
+
+msgid "All Translation Files"
+msgstr "所有翻譯檔"
+
 msgid "Merging differences..."
 msgstr "正合併差異..."
 
@@ -103,6 +112,85 @@ msgstr "語言選擇"
 msgid "You must restart Poedit for this change to take effect."
 msgstr "您得要重新啟動 Poedit 這項更動才會生效。"
 
+msgid "Downloading translations is disabled in this project."
+msgstr "此專案已停用翻譯下載。"
+
+msgid "Not authorized, please sign in again."
+msgstr "尚未獲得授權,請重新登入。"
+
+msgid "Sign in to Crowdin"
+msgstr "登入 Crowdin"
+
+msgid ""
+"Crowdin is an online localization management platform and collaborative "
+"translation tool. Poedit can seamlessly sync PO files managed at Crowdin."
+msgstr ""
+"Crowdin 是線上在地化管理平臺暨翻譯協作工具。Poedit 可以無縫同步 Crowdin 上管"
+"理的 PO 檔。"
+
+msgid "Sign In"
+msgstr "登入"
+
+msgid "Sign in"
+msgstr "登入"
+
+msgid "Sign Out"
+msgstr "登出"
+
+msgid "Sign out"
+msgstr "登出"
+
+msgid "Waiting for authentication…"
+msgstr "正在等候身分核對⋯"
+
+msgid "Updating user information…"
+msgstr "正在更新使用者資訊⋯"
+
+msgid "Signed in as:"
+msgstr "登入身分:"
+
+msgid "Learn More About Crowdin"
+msgstr "深入瞭解 Crowdin"
+
+msgid "Learn more about Crowdin"
+msgstr "深入瞭解 Crowdin"
+
+msgid "Open Crowdin translation"
+msgstr "開啟 Crowdin 翻譯"
+
+msgid "Project:"
+msgstr "專案:"
+
+msgid "Language:"
+msgstr "語言:"
+
+msgid "File:"
+msgstr "檔案:"
+
+msgid "No translation projects listed in your Crowdin account."
+msgstr "您的 Crowdin 帳號中尚無翻譯專案。"
+
+msgid "This project has no files that can be translated in Poedit."
+msgstr "這個專案沒有可在 Poedit 中翻譯的檔案。"
+
+msgid "This file can only be edited in Crowdin’s web interface."
+msgstr "這份檔案僅能在 Crowdin 的網頁介面中編輯。"
+
+msgid "Downloading latest translations…"
+msgstr "正在下載最新的翻譯⋯"
+
+msgid "Syncing with Crowdin"
+msgstr "正與 Crowdin 同步中"
+
+msgid "Syncing with Crowdin failed."
+msgstr "與 Crowdin 同步失敗。"
+
+msgid "Crowdin error"
+msgstr "Crowdin 錯誤"
+
+msgid "Uploading translations…"
+msgstr "正在上傳翻譯⋯"
+
 msgid "&Copy"
 msgstr "複製(&C)"
 
@@ -147,6 +235,12 @@ msgstr "請改開啟並編輯對應的 PO 檔。當您儲存時,MO 檔會同
 msgid "don't delete temporary files (for debugging)"
 msgstr "不要刪除暫存檔 (供除錯用)"
 
+msgid "handle a poedit:// URI"
+msgstr "處理 poedit:// URI"
+
+msgid "Failed to communicate with Poedit process."
+msgstr "無法與 Poedit 程序溝通。"
+
 #, c-format
 msgid "Unhandled exception occurred: %s"
 msgstr "遭遇未處理的例外:%s"
@@ -157,12 +251,6 @@ msgstr "遭遇未處理的例外。"
 msgid "Open catalog"
 msgstr "開啟編目檔"
 
-msgid "All Files"
-msgstr "所有檔案"
-
-msgid "PO Translation Files"
-msgstr "PO 翻譯檔"
-
 #, c-format
 msgid "File '%s' doesn't exist."
 msgstr "「%s」檔不存在。"
@@ -295,10 +383,10 @@ msgid ""
 msgstr "檔案可能損毀,或是採用 Poedit 無法辨認的格式。"
 
 msgid "&Undo"
-msgstr "取消動作(&U)"
+msgstr "復原(&U)"
 
 msgid "&Redo"
-msgstr "再次動作(&R)"
+msgstr "重做(&R)"
 
 msgid "Cu&t"
 msgstr "剪下(&T)"
@@ -390,6 +478,19 @@ msgstr "複數:"
 msgid "Translation:"
 msgstr "譯文:"
 
+msgid ""
+"POT files are only templates and don’t contain any translations themselves.\n"
+"To make a translation, create a new PO file based on the template."
+msgstr ""
+"POT 檔僅只是翻譯模板,檔案內並不包含任何翻譯。\n"
+"若要翻譯,請根據該模板建立新的 PO 檔。"
+
+msgid "Create New Translation"
+msgstr "建立新翻譯"
+
+msgid "Create new translation"
+msgstr "建立新翻譯"
+
 #. TRANSLATORS: %s is language name in its basic form (as you
 #. would see e.g. in a list of supported languages). You may need
 #. to rephrase it, e.g. to an equivalent of "for language %s".
@@ -437,9 +538,6 @@ msgstr "HTML 檔案"
 msgid "Open catalog template"
 msgstr "開啟編目模板檔"
 
-msgid "POT Translation Templates"
-msgstr "POT 翻譯模板"
-
 msgid "Updating catalog"
 msgstr "更新編目檔中"
 
@@ -507,18 +605,22 @@ msgstr[0] "譯文已準備好可供使用,但還有 %d 條尚未翻譯。"
 msgid "The translation is ready for use."
 msgstr "譯文已準備好可供使用。"
 
-msgid "No references to this string found."
-msgstr "找不到這條字串的參照。"
-
-msgid "Please choose the reference you want to show:"
-msgstr "請選擇您想要顯示的參照:"
-
-msgid "References"
-msgstr "參照"
-
 msgid "Context:"
 msgstr "情境:"
 
+#, c-format
+msgid "Poedit automatically fixed invalid content in the file “%s”."
+msgstr "Poedit 已自動修正「%s」檔中的無效內容。"
+
+msgid ""
+"The file contained duplicate items, which is not allowed in PO files and "
+"would prevent the file from being used. Poedit fixed the issue, but you "
+"should review translations of any items marked as fuzzy and correct them if "
+"necessary."
+msgstr ""
+"檔案包含重複項目,然而 PO 檔並不允許重複,進而使檔案無法使用。Poedit 已修正這"
+"個問題,但您應該校閱任何標記為模糊翻譯的項目,如有需要也請校正其內容。"
+
 msgid "Language of the translation isn't set."
 msgstr "尚未設定譯文的語言。"
 
@@ -528,6 +630,23 @@ msgstr "設定語言"
 msgid "Set language"
 msgstr "設定語言"
 
+#. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)."
+msgid ""
+"Suggestions are not available if the translation language is not set "
+"correctly. Other features, such as plural forms, may be affected as well."
+msgstr ""
+"如果未正確設定翻譯語言,則無法使用翻譯建議。其他功能,如複數型,也可能受到影"
+"響。"
+
+msgid "Language of the translation is the same as source language."
+msgstr "翻譯語言與來源語言相同。"
+
+msgid "Fix Language"
+msgstr "修正語言"
+
+msgid "Fix language"
+msgstr "修正語言"
+
 msgid ""
 "This catalog has entries with plural forms, but doesn't have Plural-Forms "
 "header configured."
@@ -558,6 +677,7 @@ msgstr "修正檔頭"
 msgid "Plural forms expression used by the catalog is unusual for %s."
 msgstr "這個編目檔所採用的複數形式表述式,對 %s 來說並不常見。"
 
+#. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the catalog is unusual for %s.")"
 msgid "Review"
 msgstr "校閱"
 
@@ -578,6 +698,11 @@ msgid "%d error"
 msgid_plural "%d errors"
 msgstr[0] "%d 項錯誤"
 
+#, c-format
+msgid "%d entry"
+msgid_plural "%d entries"
+msgstr[0] "%d 條"
+
 msgid " (unsaved)"
 msgstr " (未儲存)"
 
@@ -697,6 +822,9 @@ msgstr "每一項"
 msgid "Form %i"
 msgstr "形式 %i"
 
+msgid "Singular"
+msgstr "單數"
+
 msgid "Zero"
 msgstr "零"
 
@@ -706,6 +834,9 @@ msgstr "壹"
 msgid "Two"
 msgstr "貳"
 
+msgid "Plural"
+msgstr "複數"
+
 msgid "Other"
 msgstr "其他"
 
@@ -734,6 +865,12 @@ msgstr "隱藏側邊欄"
 msgid "Show Sidebar"
 msgstr "顯示側邊欄"
 
+msgid "Hide Status Bar"
+msgstr "隱藏狀態列"
+
+msgid "Show Status Bar"
+msgstr "顯示狀態列"
+
 msgid "Source text"
 msgstr "來源文字"
 
@@ -743,6 +880,10 @@ msgstr "譯文"
 msgid "ID"
 msgstr "ID"
 
+#, c-format
+msgid "Source text — %s"
+msgstr "來源文字 — %s"
+
 msgid "unknown language"
 msgstr "未知語言"
 
@@ -753,57 +894,73 @@ msgstr "譯文 — %s"
 msgid "Error:"
 msgstr "錯誤:"
 
-msgid "Project info"
-msgstr "專案資訊"
+msgid "Source file"
+msgstr "來源檔案"
 
-msgid "Project name and version:"
-msgstr "專案名稱及版本:"
+msgid "Source file occurrence:"
+msgstr "來源檔案出現處:"
 
-msgid "Language:"
-msgstr "語言:"
+msgid "Open in Editor"
+msgstr "以編輯器開啟"
 
-msgid "Team:"
-msgstr "團隊:"
+msgid "Open in editor"
+msgstr "以編輯器開啟"
 
-msgid "Team's email address:"
-msgstr "團隊的電子郵件地址:"
+msgid "No references for the selected item."
+msgstr "選取的項目沒有參照。"
 
-msgid "Charset:"
-msgstr "字集:"
+#, c-format
+msgid "Error opening file %s!"
+msgstr "開啟 %s 檔時發生錯誤!"
 
-msgid "Source"
-msgstr "來源"
+msgid "Find"
+msgstr "尋找"
 
-msgid "Notes"
-msgstr "備註"
+msgid "Replace"
+msgstr "取代"
 
-msgid "Automatic translation"
-msgstr "自動翻譯"
+#. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.)
+msgid "Options"
+msgstr "選項"
 
-msgid "Fuzzy translation"
-msgstr "模糊譯文"
+msgid "Ignore case"
+msgstr "忽略字母大小寫"
 
-msgid "Notes for translators:"
-msgstr "給譯者的備註:"
+msgid "Wrap around"
+msgstr "前後循環"
 
-msgid "Comment:"
-msgstr "註解:"
+msgid "Whole words only"
+msgstr "只針對整個單詞"
 
-msgid "Source file"
-msgstr "來源檔案"
+msgid "Find in source texts"
+msgstr "尋找來源文字"
 
-msgid "Source file occurrence:"
-msgstr "來源檔案出現處:"
+msgid "Find in translations"
+msgstr "從譯文中尋找"
 
-msgid "Open in Editor"
-msgstr "以編輯器開啟"
+msgid "Find in comments"
+msgstr "從註解中尋找"
 
-msgid "Open in editor"
-msgstr "以編輯器開啟"
+msgid "Close"
+msgstr "關閉"
 
-#, c-format
-msgid "Error opening file %s!"
-msgstr "開啟 %s 檔時發生錯誤!"
+msgid "Replace All"
+msgstr "全部取代"
+
+msgid "Replace all"
+msgstr "全部取代"
+
+msgid "< &Previous"
+msgstr "< 上一個(&P)"
+
+msgid "&Next >"
+msgstr "下一個(&N) >"
+
+msgid "String to find"
+msgstr "要尋找的字串"
+
+msgid "Replacement string"
+msgstr "取代用字串"
 
 #, c-format
 msgid "Cannot execute program: %s"
@@ -1000,9 +1157,19 @@ msgstr "新增"
 msgid "Edit"
 msgstr "編輯"
 
+msgid "Delete extractor"
+msgstr "刪除抽取器"
+
+#, c-format
+msgid "Are you sure you want to delete the “%s” extractor?"
+msgstr "您確定要刪除「%s」抽取器?"
+
 msgid "Extractors"
 msgstr "抽取器"
 
+msgid "Accounts"
+msgstr "帳號"
+
 msgid "Automatically check for updates"
 msgstr "自動檢查更新"
 
@@ -1043,8 +1210,41 @@ msgstr "保留既有檔案的格式化處理方式"
 msgid "Advanced"
 msgstr "進階"
 
-msgid "Additional keywords"
-msgstr "額外的關鍵字"
+msgid ""
+"<big>Drag and Drop Folders Here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+"<big>請將資料夾拖放到這裡</big>\n"
+"\n"
+"或是使用 + 鈕"
+
+msgid ""
+"<big>Drag and drop folders here</big>\n"
+"\n"
+"or use the + button"
+msgstr ""
+"<big>請將資料夾拖放到這裡</big>\n"
+"\n"
+"或是使用 + 鈕"
+
+msgid "Add Folders..."
+msgstr "加入資料夾..."
+
+msgid "Add folders..."
+msgstr "加入資料夾..."
+
+msgid "Add Files..."
+msgstr "加入檔案..."
+
+msgid "Add files..."
+msgstr "加入檔案..."
+
+msgid "Add Wildcard..."
+msgstr "加入萬用字符..."
+
+msgid "Add wildcard..."
+msgstr "加入萬用字符..."
 
 msgid "Paths"
 msgstr "路徑"
@@ -1052,6 +1252,9 @@ msgstr "路徑"
 msgid "Excluded paths"
 msgstr "排除的路徑"
 
+msgid "Additional keywords"
+msgstr "額外的關鍵字"
+
 msgid "Name of the project the translation is for"
 msgstr "翻譯的目標專案名稱"
 
@@ -1064,6 +1267,9 @@ msgstr "UTF-8 (建議採用)"
 msgid "Please save the file first. This section cannot be edited until then."
 msgstr "請先儲存檔案。直到儲存之後,此區段才能編輯。"
 
+msgid "Comment:"
+msgstr "註解:"
+
 msgid "OK"
 msgstr "確定"
 
@@ -1073,42 +1279,6 @@ msgstr "清除(&L)"
 msgid "Clear the comment"
 msgstr "清除註解"
 
-msgid "Find..."
-msgstr "尋找..."
-
-msgid "String to find:"
-msgstr "要尋找的字串:"
-
-msgid "Case sensitive"
-msgstr "區分大小寫"
-
-msgid "Start from the first item"
-msgstr "從第一個項目開始"
-
-msgid "Whole words only"
-msgstr "只針對整個單詞"
-
-msgid "Find in original strings"
-msgstr "從原文字串中尋找"
-
-msgid "Find in translations"
-msgstr "從譯文中尋找"
-
-msgid "Find in comments"
-msgstr "從註解中尋找"
-
-msgid "Find in automatic comments"
-msgstr "從自帶註解中尋找"
-
-msgid "Close"
-msgstr "關閉"
-
-msgid "< &Previous"
-msgstr "< 上一個(&P)"
-
-msgid "&Next >"
-msgstr "下一個(&N) >"
-
 msgid "Create new translations project"
 msgstr "建立新的翻譯專案"
 
@@ -1163,6 +1333,12 @@ msgstr "開啟(&O)..."
 msgid "Open Recent"
 msgstr "開啟最近檔案"
 
+msgid "Open from Crowdin..."
+msgstr "從 Crowdin 開啟⋯"
+
+msgid "Open From Crowdin..."
+msgstr "從 Crowdin 開啟⋯"
+
 msgid "&Save"
 msgstr "儲存(&S)"
 
@@ -1211,14 +1387,17 @@ msgstr "顯示參照(&S)"
 msgid "&Find..."
 msgstr "尋找(&F)..."
 
+msgid "Replace..."
+msgstr "取代⋯"
+
 msgid "Find next"
 msgstr "往後尋找"
 
 msgid "Find previous"
 msgstr "往前尋找"
 
-msgid "Find"
-msgstr "尋找"
+msgid "Find and Replace..."
+msgstr "尋找與取代⋯"
 
 msgid "Find Next"
 msgstr "往後尋找"
@@ -1259,6 +1438,12 @@ msgstr "依情境分組(&G)"
 msgid "&Group By Context"
 msgstr "依情境分組(&)"
 
+msgid "Entries with errors first"
+msgstr "錯誤條目優先"
+
+msgid "Entries with Errors First"
+msgstr "錯誤條目優先"
+
 msgid "&Untranslated entries first"
 msgstr "先顯示未翻譯的條目(&U)"
 
@@ -1268,6 +1453,9 @@ msgstr "先顯示未翻譯的條目(&U)"
 msgid "Show sidebar"
 msgstr "顯示側邊欄"
 
+msgid "Show status bar"
+msgstr "顯示狀態列"
+
 msgid "C&atalog"
 msgstr "編目檔(&A)"
 
@@ -1283,6 +1471,9 @@ msgstr "從 &POT 檔更新..."
 msgid "Update from &POT File..."
 msgstr "從 &POT 檔更新..."
 
+msgid "Sync with Crowdin"
+msgstr "與 Crowdin 同步"
+
 msgid "Fill missing translations from &TM..."
 msgstr "從翻譯記憶填入缺少的翻譯(&T)..."
 
@@ -1410,6 +1601,9 @@ msgstr ""
 msgid "Catalog properties"
 msgstr "編目檔屬性"
 
+msgid "Project name and version:"
+msgstr "專案名稱及版本:"
+
 msgid "Plural Forms:"
 msgstr "複數形式:"
 
@@ -1422,17 +1616,29 @@ msgstr "使用自訂表述式"
 msgid "Learn about plural forms"
 msgstr "瞭解複數型態"
 
+msgid "Charset:"
+msgstr "字集:"
+
+msgid "Team:"
+msgstr "團隊:"
+
+msgid "Team's email address:"
+msgstr "團隊的電子郵件地址:"
+
 msgid "Translation properties"
 msgstr "譯文屬性"
 
+msgid "Sources paths"
+msgstr "來源路徑"
+
 msgid "Extract text from source files in the following directories:"
 msgstr "從下列目錄中擷取源檔內的文字"
 
 msgid "Base path:"
 msgstr "基礎路徑:"
 
-msgid "Sources paths"
-msgstr "來源路徑"
+msgid "Sources keywords"
+msgstr "來源關鍵字"
 
 msgid ""
 "Use these keywords (function names) to recognize translatable strings\n"
@@ -1444,9 +1650,6 @@ msgstr ""
 msgid "Learn about gettext keywords"
 msgstr "學習 gettext 關鍵字"
 
-msgid "Sources keywords"
-msgstr "來源關鍵字"
-
 msgid "Update summary"
 msgstr "更新摘要"
 
@@ -1494,7 +1697,7 @@ msgstr "更新編目檔 - 與來源同步"
 msgid "Toggled if selected string has fuzzy translation"
 msgstr "切換所選字串是否包含模糊譯文"
 
-msgid "Show or hide the sidebar."
+msgid "Show or hide the sidebar"
 msgstr "顯示或隱藏側邊欄。"
 
 #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer.
@@ -1506,6 +1709,9 @@ msgid ""
 "translation corresponds to."
 msgstr "模糊翻譯所對應之舊的 (在更新並改動之前的) 來源文字。"
 
+msgid "Notes for translators:"
+msgstr "給譯者的備註:"
+
 msgid "Add comment"
 msgstr "加入評註"
 
@@ -1584,14 +1790,21 @@ msgstr "編輯譯文"
 msgid "Open an existing PO file and edit the translation."
 msgstr "開啟現有的 PO 檔並編輯譯文。"
 
-msgid "Create new translation"
-msgstr "建立新翻譯"
-
 msgid ""
 "Take an existing PO file or POT template and create a new translation from "
 "it."
 msgstr "從既有的 PO 檔或 POT 模板檔建立新翻譯。"
 
+msgid "Collaborate on a translation with Crowdin"
+msgstr "使用 Crowdin 協作翻譯"
+
+msgid ""
+"Download a file from Crowdin project, translate and sync your changes back."
+msgstr "從 Crowdin 下載檔案,翻譯,再將更動同步回去。"
+
+msgid "What is Crowdin?"
+msgstr "什麼是 Crowdin?"
+
 msgid "There are no translations. That’s unusual."
 msgstr "沒有譯文。這並不尋常。"
 
@@ -1627,3 +1840,9 @@ msgstr "從來源更新"
 
 msgid "Configure source code extraction in Properties."
 msgstr "在 [屬性] 中設定源碼抽出項目。"
+
+msgid "Sync"
+msgstr "同步"
+
+msgid "Synchronize the translation with Crowdin"
+msgstr "同步 Crowdin 翻譯"
diff --git a/poedit.desktop b/poedit.desktop
index 4428da2..2fb1d17 100644
--- a/poedit.desktop
+++ b/poedit.desktop
@@ -15,7 +15,7 @@ GenericName[ky]=Gettext каталогдор редактору
 GenericName[kk]=Gettext каталогтар түзетушісі
 GenericName[cs]=Editor katalogů Gettext
 GenericName[vi]=Phần mềm sửa bản dịch Gettext
-MimeType=application/x-po;application/x-gettext;text/x-gettext-translation;text/x-po;application/x-gettext-translation;
+MimeType=application/x-po;application/x-gettext;text/x-gettext-translation;text/x-po;application/x-gettext-translation;text/x-gettext-translation-template;
 Exec=poedit %F
 Icon=poedit
 Terminal=false
diff --git a/src/Makefile.am b/src/Makefile.am
index 93215f8..77ae6f7 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -1,12 +1,28 @@
 
 DB_LIBS = @DB_LIBS@
 LUCENE_LIBS = @LUCENE_LIBS@
-WINDRES = @WINDRES@
 WX_LIBS = @WX_LIBS@
-RC_WX_INCLUDES = @RC_WX_INCLUDES@
 
 bin_PROGRAMS = poedit
+
+if MIGRATE_LEGACY_TM
 libexec_PROGRAMS = poedit-dump-legacy-tm
+poedit_dump_legacy_tm_SOURCES = tm/dump_legacy_tm.cpp
+poedit_dump_legacy_tm_LDADD = $(DB_LIBS)
+endif
+
+WX_BACKPORT_SRC = wx_backports/wx_gtk_activityindicator.cpp \
+                  wx_backports/activityindicator.h \
+                  wx_backports/gtk_activityindicator.h
+
+if HAVE_CPPREST
+CROWDIN_SUPPORT_SRC = \
+                 http_client.h http_client.cpp http_client_casablanca.cpp \
+                 crowdin_client.h crowdin_client.cpp \
+                 crowdin_gui.h crowdin_gui.cpp \
+                 keychain/keytar_posix.cc keychain/keytar.h
+CROWDIN_SUPPORT_LIBS = $(CPPREST_LIBS) $(LIBSECRET_LIBS)
+endif
 
 poedit_SOURCES = attentionbar.cpp attentionbar.h \
                  errorbar.cpp errorbar.h \
@@ -19,15 +35,14 @@ poedit_SOURCES = attentionbar.cpp attentionbar.h \
                  spellchecking.h spellchecking.cpp \
                  findframe.cpp findframe.h commentdlg.h commentdlg.cpp \
                  tm/suggestions.cpp tm/suggestions.h tm/transmem.cpp tm/transmem.h tm/tm_migrate.cpp \
-                 tm/ThreadPool.h \
                  manager.h manager.cpp chooselang.cpp chooselang.h \
                  export_html.cpp icons.h icons.cpp \
                  pluralforms/pl_evaluate.cpp pluralforms/pl_evaluate.h \
                  edlistctrl.cpp edlistctrl.h digits.h \
                  cat_sorting.cpp cat_sorting.h \
-                 utility.cpp utility.h \
+                 utility.cpp utility.h ThreadPool.h concurrency.cpp concurrency.h \
                  version.h errors.h \
-                 icuhelpers.h logcapture.h \
+                 str_helpers.h logcapture.h \
                  language.cpp language.h language_impl_legacy.h language_impl_plurals.h \
                  languagectrl.cpp languagectrl.h \
                  welcomescreen.cpp welcomescreen.h \
@@ -36,15 +51,14 @@ poedit_SOURCES = attentionbar.cpp attentionbar.h \
                  text_control.h text_control.cpp \
                  customcontrols.cpp customcontrols.h \
                  hidpi.cpp hidpi.h \
-                 main_toolbar.h wx/main_toolbar.cpp
+                 main_toolbar.h wx/main_toolbar.cpp \
+                 $(CROWDIN_SUPPORT_SRC) \
+                 $(WX_BACKPORT_SRC)
 nodist_poedit_SOURCES = compiled_xrc.cpp
 
-poedit_LDADD = $(RESOURCE_FILES) $(WX_LIBS) $(LUCENE_LIBS) $(EXPAT_LIBS) \
+poedit_LDADD = $(WX_LIBS) $(LUCENE_LIBS) $(EXPAT_LIBS) $(CLD2_LIBS) $(CROWDIN_SUPPORT_LIBS) \
                -lboost_regex -lboost_system
 
-poedit_dump_legacy_tm_SOURCES = tm/dump_legacy_tm.cpp
-poedit_dump_legacy_tm_LDADD = $(DB_LIBS)
-
 XRC_RESOURCES = \
 		$(srcdir)/resources/menus.xrc \
 		$(srcdir)/resources/prefs.xrc \
@@ -52,7 +66,6 @@ XRC_RESOURCES = \
 		$(srcdir)/resources/properties.xrc \
         $(srcdir)/resources/summary.xrc \
 		$(srcdir)/resources/toolbar.xrc \
-		$(srcdir)/resources/find.xrc \
 		$(srcdir)/resources/comment.xrc \
         $(srcdir)/resources/manager.xrc
 
diff --git a/src/Makefile.in b/src/Makefile.in
index 4be2d36..d5c1d7f 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -35,7 +35,8 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 bin_PROGRAMS = poedit$(EXEEXT)
-libexec_PROGRAMS = poedit-dump-legacy-tm$(EXEEXT)
+ at MIGRATE_LEGACY_TM_TRUE@libexec_PROGRAMS =  \
+ at MIGRATE_LEGACY_TM_TRUE@	poedit-dump-legacy-tm$(EXEEXT)
 subdir = src
 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
@@ -50,7 +51,40 @@ CONFIG_CLEAN_FILES =
 CONFIG_CLEAN_VPATH_FILES =
 am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(libexecdir)"
 PROGRAMS = $(bin_PROGRAMS) $(libexec_PROGRAMS)
+am__poedit_SOURCES_DIST = attentionbar.cpp attentionbar.h errorbar.cpp \
+	errorbar.h catalog.cpp catalog.h edapp.cpp edapp.h edframe.cpp \
+	edframe.h fileviewer.cpp fileviewer.h extractor.cpp \
+	extractor.h prefsdlg.cpp prefsdlg.h propertiesdlg.cpp \
+	propertiesdlg.h progressinfo.h progressinfo.cpp digger.h \
+	digger.cpp gexecute.h gexecute.cpp summarydlg.h summarydlg.cpp \
+	spellchecking.h spellchecking.cpp findframe.cpp findframe.h \
+	commentdlg.h commentdlg.cpp tm/suggestions.cpp \
+	tm/suggestions.h tm/transmem.cpp tm/transmem.h \
+	tm/tm_migrate.cpp manager.h manager.cpp chooselang.cpp \
+	chooselang.h export_html.cpp icons.h icons.cpp \
+	pluralforms/pl_evaluate.cpp pluralforms/pl_evaluate.h \
+	edlistctrl.cpp edlistctrl.h digits.h cat_sorting.cpp \
+	cat_sorting.h utility.cpp utility.h ThreadPool.h \
+	concurrency.cpp concurrency.h version.h errors.h str_helpers.h \
+	logcapture.h language.cpp language.h language_impl_legacy.h \
+	language_impl_plurals.h languagectrl.cpp languagectrl.h \
+	welcomescreen.cpp welcomescreen.h syntaxhighlighter.cpp \
+	syntaxhighlighter.h sidebar.cpp sidebar.h text_control.h \
+	text_control.cpp customcontrols.cpp customcontrols.h hidpi.cpp \
+	hidpi.h main_toolbar.h wx/main_toolbar.cpp http_client.h \
+	http_client.cpp http_client_casablanca.cpp crowdin_client.h \
+	crowdin_client.cpp crowdin_gui.h crowdin_gui.cpp \
+	keychain/keytar_posix.cc keychain/keytar.h \
+	wx_backports/wx_gtk_activityindicator.cpp \
+	wx_backports/activityindicator.h \
+	wx_backports/gtk_activityindicator.h
 am__dirstamp = $(am__leading_dot)dirstamp
+ at HAVE_CPPREST_TRUE@am__objects_1 = http_client.$(OBJEXT) \
+ at HAVE_CPPREST_TRUE@	http_client_casablanca.$(OBJEXT) \
+ at HAVE_CPPREST_TRUE@	crowdin_client.$(OBJEXT) \
+ at HAVE_CPPREST_TRUE@	crowdin_gui.$(OBJEXT) \
+ at HAVE_CPPREST_TRUE@	keychain/keytar_posix.$(OBJEXT)
+am__objects_2 = wx_backports/wx_gtk_activityindicator.$(OBJEXT)
 am_poedit_OBJECTS = attentionbar.$(OBJEXT) errorbar.$(OBJEXT) \
 	catalog.$(OBJEXT) edapp.$(OBJEXT) edframe.$(OBJEXT) \
 	fileviewer.$(OBJEXT) extractor.$(OBJEXT) prefsdlg.$(OBJEXT) \
@@ -62,19 +96,26 @@ am_poedit_OBJECTS = attentionbar.$(OBJEXT) errorbar.$(OBJEXT) \
 	manager.$(OBJEXT) chooselang.$(OBJEXT) export_html.$(OBJEXT) \
 	icons.$(OBJEXT) pluralforms/pl_evaluate.$(OBJEXT) \
 	edlistctrl.$(OBJEXT) cat_sorting.$(OBJEXT) utility.$(OBJEXT) \
-	language.$(OBJEXT) languagectrl.$(OBJEXT) \
-	welcomescreen.$(OBJEXT) syntaxhighlighter.$(OBJEXT) \
-	sidebar.$(OBJEXT) text_control.$(OBJEXT) \
-	customcontrols.$(OBJEXT) hidpi.$(OBJEXT) \
-	wx/main_toolbar.$(OBJEXT)
+	concurrency.$(OBJEXT) language.$(OBJEXT) \
+	languagectrl.$(OBJEXT) welcomescreen.$(OBJEXT) \
+	syntaxhighlighter.$(OBJEXT) sidebar.$(OBJEXT) \
+	text_control.$(OBJEXT) customcontrols.$(OBJEXT) \
+	hidpi.$(OBJEXT) wx/main_toolbar.$(OBJEXT) $(am__objects_1) \
+	$(am__objects_2)
 nodist_poedit_OBJECTS = compiled_xrc.$(OBJEXT)
 poedit_OBJECTS = $(am_poedit_OBJECTS) $(nodist_poedit_OBJECTS)
 am__DEPENDENCIES_1 =
+ at HAVE_CPPREST_TRUE@am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1) \
+ at HAVE_CPPREST_TRUE@	$(am__DEPENDENCIES_1)
 poedit_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
-	$(am__DEPENDENCIES_1)
-am_poedit_dump_legacy_tm_OBJECTS = tm/dump_legacy_tm.$(OBJEXT)
+	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+	$(am__DEPENDENCIES_2)
+am__poedit_dump_legacy_tm_SOURCES_DIST = tm/dump_legacy_tm.cpp
+ at MIGRATE_LEGACY_TM_TRUE@am_poedit_dump_legacy_tm_OBJECTS =  \
+ at MIGRATE_LEGACY_TM_TRUE@	tm/dump_legacy_tm.$(OBJEXT)
 poedit_dump_legacy_tm_OBJECTS = $(am_poedit_dump_legacy_tm_OBJECTS)
-poedit_dump_legacy_tm_DEPENDENCIES = $(am__DEPENDENCIES_1)
+ at MIGRATE_LEGACY_TM_TRUE@poedit_dump_legacy_tm_DEPENDENCIES =  \
+ at MIGRATE_LEGACY_TM_TRUE@	$(am__DEPENDENCIES_1)
 DEFAULT_INCLUDES = -I. at am__isrc@
 depcomp = $(SHELL) $(top_srcdir)/admin/depcomp
 am__depfiles_maybe = depfiles
@@ -108,14 +149,14 @@ am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
 am__v_GEN_0 = @echo "  GEN   " $@;
 SOURCES = $(poedit_SOURCES) $(nodist_poedit_SOURCES) \
 	$(poedit_dump_legacy_tm_SOURCES)
-DIST_SOURCES = $(poedit_SOURCES) $(poedit_dump_legacy_tm_SOURCES)
+DIST_SOURCES = $(am__poedit_SOURCES_DIST) \
+	$(am__poedit_dump_legacy_tm_SOURCES_DIST)
 ETAGS = etags
 CTAGS = ctags
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 AMTAR = @AMTAR@
 AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-APPCAST_SUFFIX = @APPCAST_SUFFIX@
 AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
@@ -123,7 +164,9 @@ AWK = @AWK@
 CC = @CC@
 CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
+CLD2_LIBS = @CLD2_LIBS@
 CPPFLAGS = @CPPFLAGS@
+CPPREST_LIBS = @CPPREST_LIBS@
 CXX = @CXX@
 CXXCPP = @CXXCPP@
 CXXDEPMODE = @CXXDEPMODE@
@@ -135,9 +178,11 @@ DEPDIR = @DEPDIR@
 ECHO_C = @ECHO_C@
 ECHO_N = @ECHO_N@
 ECHO_T = @ECHO_T@
+EGREP = @EGREP@
 EXEEXT = @EXEEXT@
 EXPAT_CFLAGS = @EXPAT_CFLAGS@
 EXPAT_LIBS = @EXPAT_LIBS@
+GREP = @GREP@
 GTKSPELL_CFLAGS = @GTKSPELL_CFLAGS@
 GTKSPELL_LIBS = @GTKSPELL_LIBS@
 HAVE_CXX11 = @HAVE_CXX11@
@@ -151,6 +196,8 @@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
 LDFLAGS = @LDFLAGS@
 LIBOBJS = @LIBOBJS@
 LIBS = @LIBS@
+LIBSECRET_CFLAGS = @LIBSECRET_CFLAGS@
+LIBSECRET_LIBS = @LIBSECRET_LIBS@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
 LUCENE_CFLAGS = @LUCENE_CFLAGS@
@@ -243,8 +290,19 @@ target_alias = @target_alias@
 top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
-WINDRES = @WINDRES@
-RC_WX_INCLUDES = @RC_WX_INCLUDES@
+ at MIGRATE_LEGACY_TM_TRUE@poedit_dump_legacy_tm_SOURCES = tm/dump_legacy_tm.cpp
+ at MIGRATE_LEGACY_TM_TRUE@poedit_dump_legacy_tm_LDADD = $(DB_LIBS)
+WX_BACKPORT_SRC = wx_backports/wx_gtk_activityindicator.cpp \
+                  wx_backports/activityindicator.h \
+                  wx_backports/gtk_activityindicator.h
+
+ at HAVE_CPPREST_TRUE@CROWDIN_SUPPORT_SRC = \
+ at HAVE_CPPREST_TRUE@                 http_client.h http_client.cpp http_client_casablanca.cpp \
+ at HAVE_CPPREST_TRUE@                 crowdin_client.h crowdin_client.cpp \
+ at HAVE_CPPREST_TRUE@                 crowdin_gui.h crowdin_gui.cpp \
+ at HAVE_CPPREST_TRUE@                 keychain/keytar_posix.cc keychain/keytar.h
+
+ at HAVE_CPPREST_TRUE@CROWDIN_SUPPORT_LIBS = $(CPPREST_LIBS) $(LIBSECRET_LIBS)
 poedit_SOURCES = attentionbar.cpp attentionbar.h \
                  errorbar.cpp errorbar.h \
                  catalog.cpp catalog.h edapp.cpp edapp.h edframe.cpp \
@@ -256,15 +314,14 @@ poedit_SOURCES = attentionbar.cpp attentionbar.h \
                  spellchecking.h spellchecking.cpp \
                  findframe.cpp findframe.h commentdlg.h commentdlg.cpp \
                  tm/suggestions.cpp tm/suggestions.h tm/transmem.cpp tm/transmem.h tm/tm_migrate.cpp \
-                 tm/ThreadPool.h \
                  manager.h manager.cpp chooselang.cpp chooselang.h \
                  export_html.cpp icons.h icons.cpp \
                  pluralforms/pl_evaluate.cpp pluralforms/pl_evaluate.h \
                  edlistctrl.cpp edlistctrl.h digits.h \
                  cat_sorting.cpp cat_sorting.h \
-                 utility.cpp utility.h \
+                 utility.cpp utility.h ThreadPool.h concurrency.cpp concurrency.h \
                  version.h errors.h \
-                 icuhelpers.h logcapture.h \
+                 str_helpers.h logcapture.h \
                  language.cpp language.h language_impl_legacy.h language_impl_plurals.h \
                  languagectrl.cpp languagectrl.h \
                  welcomescreen.cpp welcomescreen.h \
@@ -273,14 +330,14 @@ poedit_SOURCES = attentionbar.cpp attentionbar.h \
                  text_control.h text_control.cpp \
                  customcontrols.cpp customcontrols.h \
                  hidpi.cpp hidpi.h \
-                 main_toolbar.h wx/main_toolbar.cpp
+                 main_toolbar.h wx/main_toolbar.cpp \
+                 $(CROWDIN_SUPPORT_SRC) \
+                 $(WX_BACKPORT_SRC)
 
 nodist_poedit_SOURCES = compiled_xrc.cpp
-poedit_LDADD = $(RESOURCE_FILES) $(WX_LIBS) $(LUCENE_LIBS) $(EXPAT_LIBS) \
+poedit_LDADD = $(WX_LIBS) $(LUCENE_LIBS) $(EXPAT_LIBS) $(CLD2_LIBS) $(CROWDIN_SUPPORT_LIBS) \
                -lboost_regex -lboost_system
 
-poedit_dump_legacy_tm_SOURCES = tm/dump_legacy_tm.cpp
-poedit_dump_legacy_tm_LDADD = $(DB_LIBS)
 XRC_RESOURCES = \
 		$(srcdir)/resources/menus.xrc \
 		$(srcdir)/resources/prefs.xrc \
@@ -288,7 +345,6 @@ XRC_RESOURCES = \
 		$(srcdir)/resources/properties.xrc \
         $(srcdir)/resources/summary.xrc \
 		$(srcdir)/resources/toolbar.xrc \
-		$(srcdir)/resources/find.xrc \
 		$(srcdir)/resources/comment.xrc \
         $(srcdir)/resources/manager.xrc
 
@@ -297,7 +353,7 @@ EXTRA_DIST = $(XRC_RESOURCES) pluralforms/COPYING
 all: all-am
 
 .SUFFIXES:
-.SUFFIXES: .cpp .o .obj
+.SUFFIXES: .cc .cpp .o .obj
 $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
@@ -429,6 +485,23 @@ wx/$(DEPDIR)/$(am__dirstamp):
 	@: > wx/$(DEPDIR)/$(am__dirstamp)
 wx/main_toolbar.$(OBJEXT): wx/$(am__dirstamp) \
 	wx/$(DEPDIR)/$(am__dirstamp)
+keychain/$(am__dirstamp):
+	@$(MKDIR_P) keychain
+	@: > keychain/$(am__dirstamp)
+keychain/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) keychain/$(DEPDIR)
+	@: > keychain/$(DEPDIR)/$(am__dirstamp)
+keychain/keytar_posix.$(OBJEXT): keychain/$(am__dirstamp) \
+	keychain/$(DEPDIR)/$(am__dirstamp)
+wx_backports/$(am__dirstamp):
+	@$(MKDIR_P) wx_backports
+	@: > wx_backports/$(am__dirstamp)
+wx_backports/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) wx_backports/$(DEPDIR)
+	@: > wx_backports/$(DEPDIR)/$(am__dirstamp)
+wx_backports/wx_gtk_activityindicator.$(OBJEXT):  \
+	wx_backports/$(am__dirstamp) \
+	wx_backports/$(DEPDIR)/$(am__dirstamp)
 poedit$(EXEEXT): $(poedit_OBJECTS) $(poedit_DEPENDENCIES) $(EXTRA_poedit_DEPENDENCIES) 
 	@rm -f poedit$(EXEEXT)
 	$(AM_V_CXXLD)$(CXXLINK) $(poedit_OBJECTS) $(poedit_LDADD) $(LIBS)
@@ -440,12 +513,14 @@ poedit-dump-legacy-tm$(EXEEXT): $(poedit_dump_legacy_tm_OBJECTS) $(poedit_dump_l
 
 mostlyclean-compile:
 	-rm -f *.$(OBJEXT)
+	-rm -f keychain/keytar_posix.$(OBJEXT)
 	-rm -f pluralforms/pl_evaluate.$(OBJEXT)
 	-rm -f tm/dump_legacy_tm.$(OBJEXT)
 	-rm -f tm/suggestions.$(OBJEXT)
 	-rm -f tm/tm_migrate.$(OBJEXT)
 	-rm -f tm/transmem.$(OBJEXT)
 	-rm -f wx/main_toolbar.$(OBJEXT)
+	-rm -f wx_backports/wx_gtk_activityindicator.$(OBJEXT)
 
 distclean-compile:
 	-rm -f *.tab.c
@@ -456,6 +531,9 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/chooselang.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/commentdlg.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/compiled_xrc.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/concurrency.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/crowdin_client.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/crowdin_gui.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/customcontrols.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/digger.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/edapp.Po at am__quote@
@@ -468,6 +546,8 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/findframe.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gexecute.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/hidpi.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/http_client.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/http_client_casablanca.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/icons.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/language.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/languagectrl.Po at am__quote@
@@ -482,12 +562,30 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/text_control.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/utility.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/welcomescreen.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at keychain/$(DEPDIR)/keytar_posix.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at pluralforms/$(DEPDIR)/pl_evaluate.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at tm/$(DEPDIR)/dump_legacy_tm.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at tm/$(DEPDIR)/suggestions.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at tm/$(DEPDIR)/tm_migrate.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at tm/$(DEPDIR)/transmem.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at wx/$(DEPDIR)/main_toolbar.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at wx_backports/$(DEPDIR)/wx_gtk_activityindicator.Po at am__quote@
+
+.cc.o:
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+ at am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ $<
+
+.cc.obj:
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+ at am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+ at am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .cpp.o:
 @am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
@@ -620,12 +718,16 @@ clean-generic:
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
 	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+	-rm -f keychain/$(DEPDIR)/$(am__dirstamp)
+	-rm -f keychain/$(am__dirstamp)
 	-rm -f pluralforms/$(DEPDIR)/$(am__dirstamp)
 	-rm -f pluralforms/$(am__dirstamp)
 	-rm -f tm/$(DEPDIR)/$(am__dirstamp)
 	-rm -f tm/$(am__dirstamp)
 	-rm -f wx/$(DEPDIR)/$(am__dirstamp)
 	-rm -f wx/$(am__dirstamp)
+	-rm -f wx_backports/$(DEPDIR)/$(am__dirstamp)
+	-rm -f wx_backports/$(am__dirstamp)
 	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
 
 maintainer-clean-generic:
@@ -637,7 +739,7 @@ clean-am: clean-binPROGRAMS clean-generic clean-libexecPROGRAMS \
 	mostlyclean-am
 
 distclean: distclean-am
-	-rm -rf ./$(DEPDIR) pluralforms/$(DEPDIR) tm/$(DEPDIR) wx/$(DEPDIR)
+	-rm -rf ./$(DEPDIR) keychain/$(DEPDIR) pluralforms/$(DEPDIR) tm/$(DEPDIR) wx/$(DEPDIR) wx_backports/$(DEPDIR)
 	-rm -f Makefile
 distclean-am: clean-am distclean-compile distclean-generic \
 	distclean-tags
@@ -683,7 +785,7 @@ install-ps-am:
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
-	-rm -rf ./$(DEPDIR) pluralforms/$(DEPDIR) tm/$(DEPDIR) wx/$(DEPDIR)
+	-rm -rf ./$(DEPDIR) keychain/$(DEPDIR) pluralforms/$(DEPDIR) tm/$(DEPDIR) wx/$(DEPDIR) wx_backports/$(DEPDIR)
 	-rm -f Makefile
 maintainer-clean-am: distclean-am maintainer-clean-generic
 
diff --git a/src/tm/ThreadPool.h b/src/ThreadPool.h
old mode 100755
new mode 100644
similarity index 73%
rename from src/tm/ThreadPool.h
rename to src/ThreadPool.h
index e49d364..002e8a6
--- a/src/tm/ThreadPool.h
+++ b/src/ThreadPool.h
@@ -45,6 +45,7 @@ public:
     template<class F, class... Args>
     auto enqueue(F&& f, Args&&... args)
         -> std::future<typename std::result_of<F(Args...)>::type>;
+    void enqueue_func(std::function<void()>&& f);
     ~ThreadPool();
 private:
     // need to keep track of threads so we can join them
@@ -68,14 +69,18 @@ inline ThreadPool::ThreadPool(size_t threads)
             {
                 for(;;)
                 {
-                    std::unique_lock<std::mutex> lock(this->queue_mutex);
-                    while(!this->stop && this->tasks.empty())
-                        this->condition.wait(lock);
-                    if(this->stop && this->tasks.empty())
-                        return;
-                    std::function<void()> task(this->tasks.front());
-                    this->tasks.pop();
-                    lock.unlock();
+                    std::function<void()> task;
+
+                    {
+                        std::unique_lock<std::mutex> lock(this->queue_mutex);
+                        this->condition.wait(lock,
+                            [this]{ return this->stop || !this->tasks.empty(); });
+                        if(this->stop && this->tasks.empty())
+                            return;
+                        task = std::move(this->tasks.front());
+                        this->tasks.pop();
+                    }
+
                     task();
                 }
             }
@@ -87,23 +92,29 @@ template<class F, class... Args>
 auto ThreadPool::enqueue(F&& f, Args&&... args)
     -> std::future<typename std::result_of<F(Args...)>::type>
 {
-    typedef typename std::result_of<F(Args...)>::type return_type;
-    
-    // don't allow enqueueing after stopping the pool
-    if(stop)
-        throw std::runtime_error("enqueue on stopped ThreadPool");
+    using return_type = typename std::result_of<F(Args...)>::type;
 
     auto task = std::make_shared< std::packaged_task<return_type()> >(
             std::bind(std::forward<F>(f), std::forward<Args>(args)...)
         );
         
     std::future<return_type> res = task->get_future();
+    enqueue_func([task](){ (*task)(); });
+    return res;
+}
+
+inline void ThreadPool::enqueue_func(std::function<void()>&& f)
+{
     {
         std::unique_lock<std::mutex> lock(queue_mutex);
-        tasks.push([task](){ (*task)(); });
+
+        // don't allow enqueueing after stopping the pool
+        if(stop)
+            throw std::runtime_error("enqueue on stopped ThreadPool");
+
+        tasks.emplace(f);
     }
     condition.notify_one();
-    return res;
 }
 
 // the destructor joins all threads
@@ -114,8 +125,8 @@ inline ThreadPool::~ThreadPool()
         stop = true;
     }
     condition.notify_all();
-    for(size_t i = 0;i<workers.size();++i)
-        workers[i].join();
+    for(std::thread &worker: workers)
+        worker.join();
 }
 
 #endif
diff --git a/src/cat_sorting.cpp b/src/cat_sorting.cpp
index d2c6d6e..d905095 100644
--- a/src/cat_sorting.cpp
+++ b/src/cat_sorting.cpp
@@ -26,7 +26,8 @@
 
 #include "cat_sorting.h"
 
-#include "icuhelpers.h"
+#include <unicode/unistr.h>
+#include "str_helpers.h"
 
 #include <wx/config.h>
 #include <wx/log.h>
@@ -38,6 +39,7 @@
     wxString by = wxConfig::Get()->Read("/sort_by", "file-order");
     long ctxt = wxConfig::Get()->Read("/sort_group_by_context", 0L);
     long untrans = wxConfig::Get()->Read("/sort_untrans_first", 0L);
+    long errors = wxConfig::Get()->Read("/sort_errors_first", 1L);
 
     if ( by == "source" )
         order.by = By_Source;
@@ -48,6 +50,7 @@
 
     order.groupByContext = (ctxt != 0);
     order.untransFirst = (untrans != 0);
+    order.errorsFirst = (errors != 0);
 
     return order;
 }
@@ -72,6 +75,7 @@ void SortOrder::Save()
     wxConfig::Get()->Write("/sort_by", bystr);
     wxConfig::Get()->Write("/sort_group_by_context", groupByContext);
     wxConfig::Get()->Write("/sort_untrans_first", untransFirst);
+    wxConfig::Get()->Write("/sort_errors_first", errorsFirst);
 }
 
 
@@ -83,7 +87,7 @@ CatalogItemsComparator::CatalogItemsComparator(const Catalog& catalog, const Sor
     {
         case SortOrder::By_Source:
             // TODO: allow non-English source languages too
-            m_collator.reset(icu::Collator::createInstance(icu::Locale::getEnglish(), err));
+            m_collator.reset(icu::Collator::createInstance(catalog.GetSourceLanguage().ToIcu(), err));
             break;
 
         case SortOrder::By_Translation:
@@ -113,13 +117,16 @@ bool CatalogItemsComparator::operator()(int i, int j) const
     const CatalogItem& a = Item(i);
     const CatalogItem& b = Item(j);
 
-    if ( m_order.untransFirst )
+    if ( m_order.errorsFirst )
     {
         if ( a.GetValidity() == CatalogItem::Val_Invalid && b.GetValidity() != CatalogItem::Val_Invalid )
             return true;
         else if ( a.GetValidity() != CatalogItem::Val_Invalid && b.GetValidity() == CatalogItem::Val_Invalid )
             return false;
+    }
 
+    if ( m_order.untransFirst )
+    {
         if ( !a.IsTranslated() && b.IsTranslated() )
             return true;
         else if ( a.IsTranslated() && !b.IsTranslated() )
@@ -192,7 +199,7 @@ int CatalogItemsComparator::CompareStrings(wxString a, wxString b) const
 #elif SIZEOF_WCHAR_T == 2
         return m_collator->compare(a.wx_str(), a.length(), b.wx_str(), b.length(), err);
 #else
-        return m_collator->compare(ToIcuStr(a), ToIcuStr(b), err);
+        return m_collator->compare(str::to_icu(a), str::to_icu(b), err);
 #endif
     }
     else
diff --git a/src/cat_sorting.h b/src/cat_sorting.h
index ecca9a4..b649b1c 100644
--- a/src/cat_sorting.h
+++ b/src/cat_sorting.h
@@ -41,7 +41,7 @@ struct SortOrder
         By_Translation
     };
 
-    SortOrder() : by(By_FileOrder), groupByContext(false), untransFirst(false) {}
+    SortOrder() : by(By_FileOrder), groupByContext(false), untransFirst(false), errorsFirst(true) {}
 
     /// Loads default sort order from config settings
     static SortOrder Default();
@@ -57,6 +57,9 @@ struct SortOrder
 
     /// Do untranslated entries go first?
     bool untransFirst;
+
+    /// Do entries with errors go first?
+    bool errorsFirst;
 };
 
 /**
@@ -76,7 +79,7 @@ public:
     bool operator()(int i, int j) const;
 
 protected:
-    const CatalogItem& Item(int i) const { return m_catalog[i]; }
+    const CatalogItem& Item(int i) const { return *m_catalog[i]; }
     int CompareStrings(wxString a, wxString b) const;
 
 private:
diff --git a/src/catalog.cpp b/src/catalog.cpp
index 657ac7e..e389aa0 100644
--- a/src/catalog.cpp
+++ b/src/catalog.cpp
@@ -31,8 +31,9 @@
 #include <wx/datetime.h>
 #include <wx/config.h>
 #include <wx/textfile.h>
+#include <wx/stdpaths.h>
 #include <wx/strconv.h>
-#include <wx/msgdlg.h>
+#include <wx/memtext.h>
 #include <wx/filename.h>
 
 #include <set>
@@ -42,14 +43,19 @@
 #include "digger.h"
 #include "gexecute.h"
 #include "progressinfo.h"
-#include "summarydlg.h"
+#include "str_helpers.h"
 #include "utility.h"
 #include "version.h"
 #include "language.h"
 
 #ifdef __WXOSX__
 #import <Foundation/Foundation.h>
-#include "osx_helpers.h"
+#endif
+
+// TODO: split into different file
+#if wxUSE_GUI
+    #include <wx/msgdlg.h>
+    #include "summarydlg.h"
 #endif
 
 // ----------------------------------------------------------------------
@@ -143,52 +149,6 @@ bool VerifyFileCharset(const wxTextFile& f, const wxString& filename,
 }
 
 
-// converts \n into newline character and \\ into \:
-wxString UnescapeCEscapes(const wxString& str)
-{
-    wxString out;
-    size_t len = str.size();
-    size_t i;
-
-    if ( len == 0 )
-        return str;
-
-    for (i = 0; i < len-1; i++)
-    {
-        if (str[i] == _T('\\'))
-        {
-            switch ((wxChar)str[i+1])
-            {
-                case _T('n'):
-                    out << _T('\n');
-                    i++;
-                    break;
-                case _T('\\'):
-                    out << _T('\\');
-                    i++;
-                    break;
-                case _T('"'):
-                    out << _T('"');
-                    i++;
-                    break;
-                default:
-                    out << _T('\\');
-            }
-        }
-        else
-        {
-            out << str[i];
-        }
-    }
-
-    // last character:
-    if (i < len)
-        out << str[i];
-
-    return out;
-}
-
-
 wxTextFileType GetFileCRLFFormat(wxTextFile& po_file)
 {
     wxLogNull null;
@@ -231,9 +191,7 @@ wxTextFileType GetDesiredCRLFFormat(wxTextFileType existingCRLF)
 
 void Catalog::HeaderData::FromString(const wxString& str)
 {
-    wxString hdr(str);
-    hdr = UnescapeCEscapes(hdr);
-    wxStringTokenizer tkn(hdr, "\n");
+    wxStringTokenizer tkn(str, "\n");
     wxString ln;
 
     m_entries.clear();
@@ -266,13 +224,9 @@ wxString Catalog::HeaderData::ToString(const wxString& line_delim)
     UpdateDict();
 
     wxString hdr;
-    for (std::vector<Entry>::const_iterator i = m_entries.begin();
-         i != m_entries.end(); i++)
+    for (auto& e: m_entries)
     {
-        wxString v(i->Value);
-        v.Replace("\\", "\\\\");
-        v.Replace(_T("\""), _T("\\\""));
-        hdr << i->Key << ": " << v << "\\n" << line_delim;
+        hdr << EscapeCString(e.Key) << ": " << EscapeCString(e.Value) << "\\n" << line_delim;
     }
     return hdr;
 }
@@ -298,10 +252,16 @@ void Catalog::HeaderData::UpdateDict()
     }
 
     if (TeamEmail.empty())
+    {
         SetHeader("Language-Team", Team);
+    }
     else
-        SetHeader("Language-Team",
-                  Team + " <" + TeamEmail + ">");
+    {
+        if (Team.empty())
+            SetHeader("Language-Team", TeamEmail);
+        else
+            SetHeader("Language-Team", Team + " <" + TeamEmail + ">");
+    }
 
     SetHeader("MIME-Version", "1.0");
     SetHeader("Content-Type", "text/plain; charset=" + Charset);
@@ -654,14 +614,14 @@ bool CatalogParser::Parse()
         else if (ReadParam(line, _T("msgctxt \""), dummy))
         {
             has_context = true;
-            msgctxt = dummy.RemoveLast();
+            msgctxt = UnescapeCString(dummy.RemoveLast());
             while (!(line = ReadTextLine()).empty())
             {
                 if (line[0u] == _T('\t'))
                     line.Remove(0, 1);
                 if (line[0u] == _T('"') && line.Last() == _T('"'))
                 {
-                    msgctxt += line.Mid(1, line.Length() - 2);
+                    msgctxt += UnescapeCString(line.Mid(1, line.Length() - 2));
                     PossibleWrappedLine();
                 }
                 else
@@ -672,7 +632,7 @@ bool CatalogParser::Parse()
         // msgid:
         else if (ReadParam(line, _T("msgid \""), dummy))
         {
-            mstr = dummy.RemoveLast();
+            mstr = UnescapeCString(dummy.RemoveLast());
             mlinenum = unsigned(m_textFile->GetCurrentLine() + 1);
             while (!(line = ReadTextLine()).empty())
             {
@@ -680,7 +640,7 @@ bool CatalogParser::Parse()
                     line.Remove(0, 1);
                 if (line[0u] == _T('"') && line.Last() == _T('"'))
                 {
-                    mstr += line.Mid(1, line.Length() - 2);
+                    mstr += UnescapeCString(line.Mid(1, line.Length() - 2));
                     PossibleWrappedLine();
                 }
                 else
@@ -691,7 +651,7 @@ bool CatalogParser::Parse()
         // msgid_plural:
         else if (ReadParam(line, _T("msgid_plural \""), dummy))
         {
-            msgid_plural = dummy.RemoveLast();
+            msgid_plural = UnescapeCString(dummy.RemoveLast());
             has_plural = true;
             mlinenum = unsigned(m_textFile->GetCurrentLine() + 1);
             while (!(line = ReadTextLine()).empty())
@@ -700,7 +660,7 @@ bool CatalogParser::Parse()
                     line.Remove(0, 1);
                 if (line[0u] == _T('"') && line.Last() == _T('"'))
                 {
-                    msgid_plural += line.Mid(1, line.Length() - 2);
+                    msgid_plural += UnescapeCString(line.Mid(1, line.Length() - 2));
                     PossibleWrappedLine();
                 }
                 else
@@ -717,14 +677,14 @@ bool CatalogParser::Parse()
                 return false;
             }
 
-            wxString str = dummy.RemoveLast();
+            wxString str = UnescapeCString(dummy.RemoveLast());
             while (!(line = ReadTextLine()).empty())
             {
                 if (line[0u] == _T('\t'))
                     line.Remove(0, 1);
                 if (line[0u] == _T('"') && line.Last() == _T('"'))
                 {
-                    str += line.Mid(1, line.Length() - 2);
+                    str += UnescapeCString(line.Mid(1, line.Length() - 2));
                     PossibleWrappedLine();
                 }
                 else
@@ -774,14 +734,14 @@ bool CatalogParser::Parse()
 
             while (ReadParam(line, label + _T(" \""), dummy))
             {
-                wxString str = dummy.RemoveLast();
+                wxString str = UnescapeCString(dummy.RemoveLast());
 
                 while (!(line=ReadTextLine()).empty())
                 {
                     line.Trim(/*fromRight=*/false);
                     if (line[0u] == _T('"') && line.Last() == _T('"'))
                     {
-                        str += line.Mid(1, line.Length() - 2);
+                        str += UnescapeCString(line.Mid(1, line.Length() - 2));
                         PossibleWrappedLine();
                     }
                     else
@@ -974,7 +934,7 @@ class CharsetInfoFinder : public CatalogParser
 class LoadParser : public CatalogParser
 {
     public:
-        LoadParser(Catalog *c, wxTextFile *f)
+        LoadParser(Catalog& c, wxTextFile *f)
               : CatalogParser(f),
                 FileIsValid(false),
                 m_catalog(c), m_nextId(1), m_seenHeaderAlready(false) {}
@@ -982,8 +942,14 @@ class LoadParser : public CatalogParser
         // true if the file is valid, i.e. has at least some data
         bool FileIsValid;
 
+        Language GetMsgidLanguage()
+        {
+            auto utf8 = m_allMsgidText.utf8_str();
+            return Language::TryDetectFromText(utf8.data(), utf8.length(), Language::English());
+        }
+
     protected:
-        Catalog *m_catalog;
+        Catalog& m_catalog;
 
         virtual bool OnEntry(const wxString& msgid,
                              const wxString& msgid_plural,
@@ -1010,6 +976,9 @@ class LoadParser : public CatalogParser
     private:
         int m_nextId;
         bool m_seenHeaderAlready;
+
+        // collected text of msgids, with newlines, for language detection
+        wxString m_allMsgidText;
 };
 
 
@@ -1035,28 +1004,28 @@ bool LoadParser::OnEntry(const wxString& msgid,
         if (!m_seenHeaderAlready)
         {
             // gettext header:
-            m_catalog->m_header.FromString(mtranslations[0]);
-            m_catalog->m_header.Comment = comment;
+            m_catalog.m_header.FromString(mtranslations[0]);
+            m_catalog.m_header.Comment = comment;
             m_seenHeaderAlready = true;
         }
         // else: ignore duplicate header in malformed files
     }
     else
     {
-        CatalogItem d;
-        d.SetId(m_nextId++);
+        CatalogItemPtr d = std::make_shared<CatalogItem>();
+        d->SetId(m_nextId++);
         if (!flags.empty())
-            d.SetFlags(flags);
-        d.SetString(msgid);
+            d->SetFlags(flags);
+        d->SetString(msgid);
         if (has_plural)
-            d.SetPluralString(msgid_plural);
+            d->SetPluralString(msgid_plural);
         if (has_context)
-            d.SetContext(context);
-        d.SetTranslations(mtranslations);
-        d.SetComment(comment);
-        d.SetLineNumber(lineNumber);
+            d->SetContext(context);
+        d->SetTranslations(mtranslations);
+        d->SetComment(comment);
+        d->SetLineNumber(lineNumber);
         for (size_t i = 0; i < references.GetCount(); i++)
-            d.AddReference(references[i]);
+            d->AddReference(references[i]);
 
         for (auto i: extractedComments)
         {
@@ -1066,10 +1035,19 @@ bool LoadParser::OnEntry(const wxString& msgid,
             // FIXME: Fix this properly... but not using msgcat in the first place
             if (i.StartsWith(MSGCAT_CONFLICT_MARKER) && i.EndsWith(MSGCAT_CONFLICT_MARKER))
                 continue;
-            d.AddExtractedComments(i);
+            d->AddExtractedComments(i);
+        }
+        d->SetOldMsgid(msgid_old);
+        m_catalog.AddItem(d);
+
+        // collect text for language detection:
+        m_allMsgidText.append(msgid);
+        m_allMsgidText.append('\n');
+        if (!msgid_plural.empty())
+        {
+            m_allMsgidText.append(msgid_plural);
+            m_allMsgidText.append('\n');
         }
-        d.SetOldMsgid(msgid_old);
-        m_catalog->AddItem(d);
     }
     return true;
 }
@@ -1090,7 +1068,7 @@ bool LoadParser::OnDeletedEntry(const wxArrayString& deletedLines,
     d.SetLineNumber(lineNumber);
     for (size_t i = 0; i < extractedComments.GetCount(); i++)
       d.AddExtractedComments(extractedComments[i]);
-    m_catalog->AddDeletedItem(d);
+    m_catalog.AddDeletedItem(d);
 
     return true;
 }
@@ -1101,8 +1079,11 @@ bool LoadParser::OnDeletedEntry(const wxArrayString& deletedLines,
 // Catalog class
 // ----------------------------------------------------------------------
 
-Catalog::Catalog()
+Catalog::Catalog(Type type)
 {
+    m_sourceLanguage = Language::English();
+    m_fileType = type;
+
     m_fileCRLF = wxTextFileType_None;
     m_fileWrappingWidth = DEFAULT_WRAPPING;
 
@@ -1114,6 +1095,16 @@ Catalog::Catalog()
     }
 }
 
+Catalog::Catalog(const wxString& po_file, int flags)
+{
+    m_sourceLanguage = Language::English();
+    m_fileType = Type::PO;
+
+    m_fileCRLF = wxTextFileType_None;
+    m_fileWrappingWidth = DEFAULT_WRAPPING;
+
+    m_isOk = Load(po_file, flags);
+}
 
 Catalog::~Catalog()
 {
@@ -1121,12 +1112,16 @@ Catalog::~Catalog()
 }
 
 
-Catalog::Catalog(const wxString& po_file, int flags)
+bool Catalog::HasCapability(Catalog::Cap cap) const
 {
-    m_fileCRLF = wxTextFileType_None;
-    m_fileWrappingWidth = DEFAULT_WRAPPING;
-
-    m_isOk = Load(po_file, flags);
+    switch (cap)
+    {
+        case Cap::Translations:
+        case Cap::LanguageSetting:
+        case Cap::UserComments:
+            return m_fileType == Type::PO;
+    }
+    return false; // silence VC++ warning
 }
 
 
@@ -1195,6 +1190,13 @@ bool Catalog::Load(const wxString& po_file, int flags)
     m_fileName = po_file;
     m_header.BasePath = wxEmptyString;
 
+    wxString ext;
+    wxFileName::SplitPath(po_file, nullptr, nullptr, &ext);
+    if (ext.CmpNoCase("pot") == 0)
+        m_fileType = Type::POT;
+    else
+        m_fileType = Type::PO;
+
     /* Load the .po file: */
 
     if (!f.Open(po_file, wxConvISO8859_1))
@@ -1217,7 +1219,7 @@ bool Catalog::Load(const wxString& po_file, int flags)
         wxLogError(_("There were errors when loading the catalog. Some data may be missing or corrupted as the result."));
     }
 
-    LoadParser parser(this, &f);
+    LoadParser parser(*this, &f);
     parser.IgnoreHeader(flags & CreationFlag_IgnoreHeader);
     parser.IgnoreTranslations(flags & CreationFlag_IgnoreTranslations);
     if (!parser.Parse())
@@ -1229,13 +1231,15 @@ bool Catalog::Load(const wxString& po_file, int flags)
         return false;
     }
 
+    m_sourceLanguage = parser.GetMsgidLanguage();
+
     // now that the catalog is loaded, update its items with the bookmarks
     for (unsigned i = BOOKMARK_0; i < BOOKMARK_LAST; i++)
     {
         if (m_header.Bookmarks[i] != -1 &&
             m_header.Bookmarks[i] < (int)m_items.size())
         {
-            m_items[m_header.Bookmarks[i]].SetBookmark(
+            m_items[m_header.Bookmarks[i]]->SetBookmark(
                     static_cast<Bookmark>(i));
         }
     }
@@ -1263,6 +1267,13 @@ bool Catalog::Load(const wxString& po_file, int flags)
 
 void Catalog::FixupCommonIssues()
 {
+    if (m_header.Project == "PACKAGE VERSION")
+        m_header.Project.clear();
+
+    // All the following fixups are specific to POs and should *not* be done in POTs:
+    if (m_fileType == Type::POT)
+        return;
+
     if (!m_header.Lang.IsValid())
     {
         if (!m_fileName.empty())
@@ -1270,13 +1281,31 @@ void Catalog::FixupCommonIssues()
             m_header.Lang = Language::TryGuessFromFilename(m_fileName);
             wxLogTrace("poedit", "guessed language from filename '%s': %s", m_fileName, m_header.Lang.Code());
         }
+
+        if (!m_header.Lang.IsValid())
+        {
+            // If all else fails, try to detect the language from content
+            wxString allText;
+            for (auto& i: items())
+            {
+                for (auto& s: i->GetTranslations())
+                {
+                    if (s.empty())
+                        continue;
+                    allText.append(s);
+                    allText.append('\n');
+                }
+            }
+            if (!allText.empty())
+            {
+                auto utf8 = allText.utf8_str();
+                m_header.Lang = Language::TryDetectFromText(utf8.data(), utf8.length());
+            }
+        }
     }
 
     wxLogTrace("poedit", "catalog lang is '%s'", GetLanguage().Code());
 
-    if (m_header.Project == "PACKAGE VERSION")
-        m_header.Project.clear();
-
     if (m_header.GetHeader("Language-Team") == "LANGUAGE <LL at li.org>")
     {
         m_header.DeleteHeader("Language-Team");
@@ -1318,7 +1347,7 @@ void Catalog::FixupCommonIssues()
     // TODO: mark catalog as modified if any changes were made
 }
 
-void Catalog::AddItem(const CatalogItem& data)
+void Catalog::AddItem(const CatalogItemPtr& data)
 {
     m_items.push_back(data);
 }
@@ -1338,16 +1367,15 @@ void Catalog::RemoveDeletedItems()
     m_deletedItems.clear();
 }
 
-CatalogItem *Catalog::FindItemByLine(int lineno)
+CatalogItemPtr Catalog::FindItemByLine(int lineno)
 {
-    CatalogItem *last = NULL;
+    CatalogItemPtr last;
 
-    for ( CatalogItemArray::iterator i = m_items.begin();
-          i != m_items.end(); ++i )
+    for (auto& i: m_items)
     {
         if ( i->GetLineNumber() > lineno )
             return last;
-        last = &(*i);
+        last = i;
     }
 
     return last;
@@ -1369,14 +1397,14 @@ int Catalog::SetBookmark(int id, Bookmark bookmark)
     int result = (bookmark==NO_BOOKMARK)?-1:m_header.Bookmarks[bookmark];
 
     // unset previous bookmarks, if any
-    Bookmark bk = m_items[id].GetBookmark();
+    Bookmark bk = m_items[id]->GetBookmark();
     if (bk != NO_BOOKMARK)
         m_header.Bookmarks[bk] = -1;
     if (result > -1)
-        m_items[result].SetBookmark(NO_BOOKMARK);
+        m_items[result]->SetBookmark(NO_BOOKMARK);
 
     // set new bookmark
-    m_items[id].SetBookmark(bookmark);
+    m_items[id]->SetBookmark(bookmark);
     if (bookmark != NO_BOOKMARK)
         m_header.Bookmarks[bookmark] = id;
 
@@ -1399,7 +1427,7 @@ inline bool CanEncodeStringToCharset(const wxString& s, wxMBConv& conv)
     return true;
 }
 
-bool CanEncodeToCharset(const wxTextFile& f, const wxString& charset)
+bool CanEncodeToCharset(const wxTextBuffer& f, const wxString& charset)
 {
     if (charset.Lower() == "utf-8" || charset.Lower() == "utf8")
         return true;
@@ -1417,7 +1445,7 @@ bool CanEncodeToCharset(const wxTextFile& f, const wxString& charset)
 }
 
 
-void SaveMultiLines(wxTextFile &f, const wxString& text)
+void SaveMultiLines(wxTextBuffer &f, const wxString& text)
 {
     wxStringTokenizer tkn(text, _T('\n'));
     while (tkn.HasMoreTokens())
@@ -1429,36 +1457,20 @@ void SaveMultiLines(wxTextFile &f, const wxString& text)
 wxString FormatStringForFile(const wxString& text)
 {
     wxString s;
-    unsigned n_cnt = 0;
-    int len = (int)text.length();
-
-    s.Alloc(len + 16);
-    // Scan the string up to len-2 because we don't want to account for the
-    // very last \n on the line:
-    //       "some\n string \n"
-    //                      ^
-    //                      |
-    //                      \--- = len-2
-    int i;
-    for (i = 0; i < len-2; i++)
+    s.reserve(text.length() + 16);
+
+    wxStringTokenizer tkn(text, wxS('\n'), wxTOKEN_RET_EMPTY_ALL);
+    while (tkn.HasMoreTokens())
     {
-        if (text[i] == _T('\\') && text[i+1] == _T('n'))
-        {
-            n_cnt++;
-            s << _T("\\n\"\n\"");
-            i++;
-        }
-        else
-            s << text[i];
+        if (!s.empty())
+            s += wxS("\"\n\"");
+        auto piece = tkn.GetNextToken();
+        if (tkn.GetLastDelimiter())
+            piece += tkn.GetLastDelimiter();
+        s += EscapeCString(piece);
     }
-    // ...and add not yet processed characters to the string...
-    for (; i < len; i++)
-        s << text[i];
 
-    if (n_cnt >= 1)
-        return _T("\"\n\"") + s;
-    else
-        return s;
+    return s;
 }
 
 } // anonymous namespace
@@ -1589,7 +1601,7 @@ bool Catalog::Save(const wxString& po_file, bool save_mo,
 
     /* If the user wants it, compile .mo file right now: */
 
-    if (save_mo && wxConfig::Get()->Read("compile_mo", (long)true))
+    if (m_fileType == Type::PO && save_mo && wxConfig::Get()->Read("compile_mo", (long)true))
     {
         const wxString mo_file = wxFileName::StripExtension(po_file) + ".mo";
         TempOutputFileFor mo_file_temp_obj(mo_file);
@@ -1630,15 +1642,15 @@ bool Catalog::Save(const wxString& po_file, bool save_mo,
         if (mo_compilation_status == CompilationStatus::Success)
         {
 #ifdef __WXOSX__
-            NSURL *mofileUrl = [NSURL fileURLWithPath:wxStringToNS(mo_file)];
-            NSURL *mofiletempUrl = [NSURL fileURLWithPath:wxStringToNS(mo_file_temp)];
+            NSURL *mofileUrl = [NSURL fileURLWithPath:str::to_NS(mo_file)];
+            NSURL *mofiletempUrl = [NSURL fileURLWithPath:str::to_NS(mo_file_temp)];
             bool sandboxed = (getenv("APP_SANDBOX_CONTAINER_ID") != NULL);
             CompiledMOFilePresenter *presenter = nil;
             if (sandboxed)
             {
                 presenter = [CompiledMOFilePresenter new];
                 presenter.presentedItemURL = mofileUrl;
-                presenter.primaryPresentedItemURL = [NSURL fileURLWithPath:wxStringToNS(po_file)];
+                presenter.primaryPresentedItemURL = [NSURL fileURLWithPath:str::to_NS(po_file)];
                 [NSFileCoordinator addFilePresenter:presenter];
                 [NSFileCoordinator filePresenters];
             }
@@ -1676,6 +1688,36 @@ bool Catalog::Save(const wxString& po_file, bool save_mo,
     return true;
 }
 
+
+std::string Catalog::SaveToBuffer()
+{
+    class StringSerializer : public wxMemoryText
+    {
+    public:
+        bool OnWrite(wxTextFileType typeNew, const wxMBConv& conv) override
+        {
+            size_t cnt = GetLineCount();
+            for (size_t n = 0; n < cnt; n++)
+            {
+                auto ln = GetLine(n) +
+                          GetEOL(typeNew == wxTextFileType_None ? GetLineType(n) : typeNew);
+                auto buf = ln.mb_str(conv);
+                buffer.append(buf.data(), buf.length());
+            }
+            return true;
+        }
+
+        std::string buffer;
+    };
+
+    StringSerializer f;
+
+    if (!DoSaveOnly(f, wxTextFileType_Unix))
+        return std::string();
+    return f.buffer;
+}
+
+
 bool Catalog::CompileToMO(const wxString& mo_file,
                           int& validation_errors,
                           CompilationStatus& mo_compilation_status)
@@ -1742,7 +1784,7 @@ bool Catalog::DoSaveOnly(const wxString& po_file, wxTextFileType crlf)
     return DoSaveOnly(f, crlf);
 }
 
-bool Catalog::DoSaveOnly(wxTextFile& f, wxTextFileType crlf)
+bool Catalog::DoSaveOnly(wxTextBuffer& f, wxTextFileType crlf)
 {
     /* Save .po file: */
     if (!m_header.Charset || m_header.Charset == "CHARSET")
@@ -1752,10 +1794,22 @@ bool Catalog::DoSaveOnly(wxTextFile& f, wxTextFileType crlf)
     // was empty previously, the author apparently doesn't want this header
     // set, so don't mess with it. See https://sourceforge.net/tracker/?func=detail&atid=389156&aid=1900298&group_id=27043
     // for motivation:
-    if ( !m_header.RevisionDate.empty() )
-        m_header.RevisionDate = GetCurrentTimeRFC822();
+    auto currentTime = GetCurrentTimeRFC822();
+    switch (m_fileType)
+    {
+        case Type::PO:
+            if ( !m_header.RevisionDate.empty() )
+                m_header.RevisionDate = currentTime;
+            break;
+        case Type::POT:
+            if ( m_fileType == Type::POT && !m_header.CreationDate.empty() )
+                m_header.CreationDate = currentTime;
+            break;
+    }
 
     SaveMultiLines(f, m_header.Comment);
+    if (m_fileType == Type::POT)
+        f.AddLine("#, fuzzy");
     f.AddLine(_T("msgid \"\""));
     f.AddLine(_T("msgstr \"\""));
     wxString pohdr = wxString(_T("\"")) + m_header.ToString(_T("\"\n\""));
@@ -1763,46 +1817,45 @@ bool Catalog::DoSaveOnly(wxTextFile& f, wxTextFileType crlf)
     SaveMultiLines(f, pohdr);
     f.AddLine(wxEmptyString);
 
-    for (unsigned itemIdx = 0; itemIdx < m_items.size(); itemIdx++)
+    for (auto& data: m_items)
     {
-        CatalogItem& data = m_items[itemIdx];
-        data.SetLineNumber(int(f.GetLineCount()+1));
-        SaveMultiLines(f, data.GetComment());
-        for (unsigned i = 0; i < data.GetExtractedComments().GetCount(); i++)
+        data->SetLineNumber(int(f.GetLineCount()+1));
+        SaveMultiLines(f, data->GetComment());
+        for (unsigned i = 0; i < data->GetExtractedComments().GetCount(); i++)
         {
-            if (data.GetExtractedComments()[i].empty())
+            if (data->GetExtractedComments()[i].empty())
               f.AddLine("#.");
             else
-              f.AddLine("#. " + data.GetExtractedComments()[i]);
+              f.AddLine("#. " + data->GetExtractedComments()[i]);
         }
-        for (unsigned i = 0; i < data.GetRawReferences().GetCount(); i++)
-            f.AddLine("#: " + data.GetRawReferences()[i]);
-        wxString dummy = data.GetFlags();
+        for (unsigned i = 0; i < data->GetRawReferences().GetCount(); i++)
+            f.AddLine("#: " + data->GetRawReferences()[i]);
+        wxString dummy = data->GetFlags();
         if (!dummy.empty())
             f.AddLine(dummy);
-        for (unsigned i = 0; i < data.GetOldMsgid().GetCount(); i++)
-            f.AddLine("#| " + data.GetOldMsgid()[i]);
-        if ( data.HasContext() )
+        for (unsigned i = 0; i < data->GetOldMsgid().GetCount(); i++)
+            f.AddLine("#| " + data->GetOldMsgid()[i]);
+        if ( data->HasContext() )
         {
-            SaveMultiLines(f, _T("msgctxt \"") + FormatStringForFile(data.GetContext()) + _T("\""));
+            SaveMultiLines(f, _T("msgctxt \"") + FormatStringForFile(data->GetContext()) + _T("\""));
         }
-        dummy = FormatStringForFile(data.GetString());
+        dummy = FormatStringForFile(data->GetString());
         SaveMultiLines(f, _T("msgid \"") + dummy + _T("\""));
-        if (data.HasPlural())
+        if (data->HasPlural())
         {
-            dummy = FormatStringForFile(data.GetPluralString());
+            dummy = FormatStringForFile(data->GetPluralString());
             SaveMultiLines(f, _T("msgid_plural \"") + dummy + _T("\""));
 
-            for (unsigned i = 0; i < data.GetNumberOfTranslations(); i++)
+            for (unsigned i = 0; i < data->GetNumberOfTranslations(); i++)
             {
-                dummy = FormatStringForFile(data.GetTranslation(i));
+                dummy = FormatStringForFile(data->GetTranslation(i));
                 wxString hdr = wxString::Format(_T("msgstr[%u] \""), i);
                 SaveMultiLines(f, hdr + dummy + _T("\""));
             }
         }
         else
         {
-            dummy = FormatStringForFile(data.GetTranslation());
+            dummy = FormatStringForFile(data->GetTranslation());
             SaveMultiLines(f, _T("msgstr \"") + dummy + _T("\""));
         }
         f.AddLine(wxEmptyString);
@@ -1831,11 +1884,13 @@ bool Catalog::DoSaveOnly(wxTextFile& f, wxTextFileType crlf)
 
     if (!CanEncodeToCharset(f, m_header.Charset))
     {
+#if wxUSE_GUI
         wxString msg;
         msg.Printf(_("The catalog couldn't be saved in '%s' charset as specified in catalog settings.\n\nIt was saved in UTF-8 instead and the setting was modified accordingly."),
                    m_header.Charset.c_str());
         wxMessageBox(msg, _("Error saving catalog"),
                      wxOK | wxICON_EXCLAMATION);
+#endif
         m_header.Charset = "UTF-8";
 
         // Re-do the save again because we modified a header:
@@ -1848,6 +1903,99 @@ bool Catalog::DoSaveOnly(wxTextFile& f, wxTextFileType crlf)
 }
 
 
+bool Catalog::HasDuplicateItems() const
+{
+    typedef std::pair<wxString, wxString> MsgId;
+    std::set<MsgId> ids;
+    for (auto& item: m_items)
+    {
+        if (!ids.emplace(std::make_pair(item->GetContext(), item->GetString())).second)
+            return true;
+    }
+    return false;
+}
+
+bool Catalog::FixDuplicateItems()
+{
+    auto oldname = m_fileName;
+
+    TempDirectory tmpdir;
+    if ( !tmpdir.IsOk() )
+        return false;
+
+    wxString po_file_temp = tmpdir.CreateFileName("catalog.po");
+    wxString po_file_fixed = tmpdir.CreateFileName("fixed.po");
+
+    if ( !DoSaveOnly(po_file_temp, wxTextFileType_Unix) )
+    {
+        wxLogError(_("Couldn't save file %s."), po_file_temp.c_str());
+        return false;
+    }
+
+    ExecuteGettext(wxString::Format("msguniq -o %s %s",
+                                    QuoteCmdlineArg(po_file_fixed),
+                                    QuoteCmdlineArg(po_file_temp)));
+
+    if (!wxFileName::FileExists(po_file_fixed))
+        return false;
+
+    bool ok = Load(po_file_fixed);
+    m_fileName = oldname;
+    return ok;
+}
+
+
+namespace
+{
+
+wxString MaskForType(const char *extensions, const wxString& description, bool showExt = true)
+{
+    (void)showExt;
+#ifdef __WXMSW__
+    if (showExt)
+        return wxString::Format("%s (%s)|%s", description, extensions, extensions);
+    else
+#endif
+        return wxString::Format("%s|%s", description, extensions);
+}
+
+wxString MaskForType(Catalog::Type t)
+{
+    switch (t)
+    {
+        case Catalog::Type::PO:
+            return MaskForType("*.po", _("PO Translation Files"));
+        case Catalog::Type::POT:
+            return MaskForType("*.pot", _("POT Translation Templates"));
+    }
+    return ""; // silence stupid warning
+}
+
+} // anonymous namespace
+
+wxString Catalog::GetTypesFileMask(std::initializer_list<Type> types)
+{
+    if (types.size() == 0)
+        return "";
+    wxString out;
+    auto t = types.begin();
+    out += MaskForType(*t);
+    for (++t; t != types.end(); ++t)
+    {
+        out += "|";
+        out += MaskForType(*t);
+    }
+    return out;
+}
+
+wxString Catalog::GetAllTypesFileMask()
+{
+    return MaskForType("*.po;*.pot", _("All Translation Files"), /*showExt=*/false) +
+           "|" +
+           GetTypesFileMask({Type::PO, Type::POT});
+}
+
+
 int Catalog::Validate()
 {
     TempDirectory tmpdir;
@@ -1870,8 +2018,7 @@ int Catalog::DoValidate(const wxString& po_file)
         err
     );
 
-    for ( CatalogItemArray::iterator i = m_items.begin();
-          i != m_items.end(); ++i )
+    for (auto& i: m_items)
     {
         i->SetValidity(CatalogItem::Val_Valid);
     }
@@ -1880,7 +2027,7 @@ int Catalog::DoValidate(const wxString& po_file)
     {
         if ( i->line != -1 )
         {
-            CatalogItem *item = FindItemByLine(i->line);
+            auto item = FindItemByLine(i->line);
             if ( item )
             {
                 item->SetValidity(CatalogItem::Val_Invalid);
@@ -1895,34 +2042,133 @@ int Catalog::DoValidate(const wxString& po_file)
     return (int)err.size();
 }
 
+void Catalog::SetFileName(const wxString& fn)
+{
+    wxFileName f(fn);
+    f.Normalize();
+    m_fileName = f.GetFullPath();
+}
 
-bool Catalog::Update(ProgressInfo *progress, bool summary, UpdateResultReason& reason)
+
+namespace
 {
-    reason = UpdateResultReason::Unspecified;
 
-    if (!m_isOk)
-        return false;
+enum class SourcesPath
+{
+    Base,
+    Root
+};
 
-    wxString cwd = wxGetCwd();
-    if (m_fileName != wxEmptyString)
+wxString GetSourcesPath(const wxString& fileName, const Catalog::HeaderData& header, SourcesPath kind)
+{
+    if (fileName.empty())
+        return wxString();
+
+    if (header.BasePath.empty())
+        return wxString();
+
+    wxString basepath;
+    if (wxIsAbsolutePath(header.BasePath))
     {
-        wxString path;
+        basepath = header.BasePath;
+    }
+    else
+    {
+        wxString path = wxPathOnly(fileName);
+        if (path.empty())
+            path = ".";
+        basepath = path + wxFILE_SEP_PATH + header.BasePath + wxFILE_SEP_PATH;
+    }
+
+    wxFileName root = wxFileName::DirName(basepath);
+    root.Normalize();
 
-        if (wxIsAbsolutePath(m_header.BasePath))
+    if (kind == SourcesPath::Root)
+    {
+        // Deal with misconfigured catalogs where the basepath isn't the root.
+        for (auto& p : header.SearchPaths)
         {
-            path = m_header.BasePath;
+            wxString path = (p == ".") ? basepath : basepath + wxFILE_SEP_PATH + p;
+            root = CommonDirectory(root, MakeFileName(path));
         }
-        else
+    }
+
+    return root.GetFullPath();
+}
+
+} // anonymous namespace
+
+wxString Catalog::GetSourcesBasePath() const
+{
+    return GetSourcesPath(m_fileName, m_header, SourcesPath::Base);
+}
+
+wxString Catalog::GetSourcesRootPath() const
+{
+    return GetSourcesPath(m_fileName, m_header, SourcesPath::Root);
+}
+
+bool Catalog::HasSourcesConfigured() const
+{
+    return !m_fileName.empty() &&
+           !m_header.BasePath.empty() &&
+           !m_header.SearchPaths.empty();
+}
+
+bool Catalog::HasSourcesAvailable() const
+{
+    if (!HasSourcesConfigured())
+        return false;
+
+    auto basepath = GetSourcesBasePath();
+    if (!wxFileName::DirExists(basepath))
+        return false;
+
+    for (auto& p: m_header.SearchPaths)
+    {
+        if (!wxFileName::DirExists(basepath + p))
+            return false;
+    }
+
+    auto wpfile = m_header.GetHeader("X-Poedit-WPHeader");
+    if (!wpfile.empty())
+    {
+        // The following tests in this function are heuristics, so don't run
+        // them in presence of X-Poedit-WPHeader and consider the existence
+        // of that file a confirmation of correct setup (even though strictly
+        // speaking only its absence proves anything).
+        return wxFileName::FileExists(basepath + wpfile);
+    }
+
+    if (m_header.SearchPaths.size() == 1)
+    {
+        // A single path doesn't give us much in terms of detection. About the
+        // only thing we can do is to check if it is is a well known directory
+        // that is unlikely to be the root.
+        auto root = GetSourcesRootPath();
+        if (root == wxGetUserHome() ||
+            root == wxStandardPaths::Get().GetDocumentsDir() ||
+            root.EndsWith(wxString(wxFILE_SEP_PATH) + "Desktop" + wxFILE_SEP_PATH))
         {
-            path = wxPathOnly(m_fileName);
-            if (path.empty())
-                path = ".";
-            path = path + "/" + m_header.BasePath;
+            return false;
         }
+    }
 
-        if (!wxIsAbsolutePath(path))
-            path = cwd + "/" + path;
+    return true;
+}
 
+#if wxUSE_GUI // TODO: better separation into another file
+bool Catalog::Update(ProgressInfo *progress, bool summary, UpdateResultReason& reason)
+{
+    reason = UpdateResultReason::Unspecified;
+
+    if (!m_isOk)
+        return false;
+
+    wxString cwd = wxGetCwd();
+    auto path = GetSourcesBasePath();
+    if (!path.empty())
+    {
         if (!wxFileName::DirExists(path))
         {
             reason = UpdateResultReason::NoSourcesFound;
@@ -1934,16 +2180,16 @@ bool Catalog::Update(ProgressInfo *progress, bool summary, UpdateResultReason& r
 
     SourceDigger dig(progress);
 
-    Catalog *newcat = dig.Dig(m_header.SearchPaths,
-                              m_header.SearchPathsExcluded,
-                              m_header.Keywords,
-                              m_header.SourceCodeCharset,
-                              reason);
+    auto newcat = dig.Dig(m_header.SearchPaths,
+                          m_header.SearchPathsExcluded,
+                          m_header.Keywords,
+                          m_header.SourceCodeCharset,
+                          reason);
 
     if (progress->Cancelled())
         reason = UpdateResultReason::CancelledByUser;
 
-    if (newcat != NULL)
+    if (newcat)
     {
         bool succ = false;
         if ( progress )
@@ -1951,11 +2197,21 @@ bool Catalog::Update(ProgressInfo *progress, bool summary, UpdateResultReason& r
 
         bool cancelledByUser = false;
         if (!summary || ShowMergeSummary(newcat, &cancelledByUser))
-            succ = Merge(newcat);
+        {
+            switch (m_fileType)
+            {
+                case Type::PO:
+                    succ = Merge(newcat);
+                    break;
+                case Type::POT:
+                    m_items = newcat->m_items;
+                    succ = true;
+                    break;
+            }
+        }
         if (!succ)
         {
-            delete newcat;
-            newcat = NULL;
+            newcat.reset();
         }
         if (cancelledByUser)
             reason = UpdateResultReason::CancelledByUser;
@@ -1963,12 +2219,9 @@ bool Catalog::Update(ProgressInfo *progress, bool summary, UpdateResultReason& r
 
     wxSetWorkingDirectory(cwd);
 
-    if (newcat == NULL) return false;
-
-    delete newcat;
-    return true;
+    return newcat != nullptr;
 }
-
+#endif
 
 bool Catalog::UpdateFromPOT(const wxString& pot_file,
                             bool summary,
@@ -1978,21 +2231,21 @@ bool Catalog::UpdateFromPOT(const wxString& pot_file,
     reason = UpdateResultReason::Unspecified;
     if (!m_isOk) return false;
 
-    Catalog newcat(pot_file, CreationFlag_IgnoreTranslations);
+    CatalogPtr newcat = std::make_shared<Catalog>(pot_file, CreationFlag_IgnoreTranslations);
 
-    if (!newcat.IsOk())
+    if (!newcat->IsOk())
     {
         wxLogError(_("'%s' is not a valid POT file."), pot_file.c_str());
         return false;
     }
 
     bool cancelledByUser = false;
-    if (!summary || ShowMergeSummary(&newcat, &cancelledByUser))
+    if (!summary || ShowMergeSummary(newcat, &cancelledByUser))
     {
-        if ( !Merge(&newcat) )
+        if ( !Merge(newcat) )
             return false;
         if ( replace_header )
-            CreateNewHeader(newcat.Header());
+            CreateNewHeader(newcat->Header());
         return true;
     }
     else
@@ -2004,7 +2257,7 @@ bool Catalog::UpdateFromPOT(const wxString& pot_file,
 }
 
 
-bool Catalog::Merge(Catalog *refcat)
+bool Catalog::Merge(const CatalogPtr& refcat)
 {
     wxString oldname = m_fileName;
 
@@ -2055,18 +2308,18 @@ bool Catalog::Merge(Catalog *refcat)
 }
 
 
-static inline wxString ItemMergeSummary(const CatalogItem& item)
+static inline wxString ItemMergeSummary(const CatalogItemPtr& item)
 {
-    wxString s = item.GetString();
-    if ( item.HasPlural() )
-        s += "|" + item.GetPluralString();
-    if ( item.HasContext() )
-        s += wxString::Format(" [%s]", item.GetContext());
+    wxString s = item->GetString();
+    if ( item->HasPlural() )
+        s += "|" + item->GetPluralString();
+    if ( item->HasContext() )
+        s += wxString::Format(" [%s]", item->GetContext());
 
     return s;
 }
 
-void Catalog::GetMergeSummary(Catalog *refcat,
+void Catalog::GetMergeSummary(const CatalogPtr& refcat,
                               wxArrayString& snew, wxArrayString& sobsolete)
 {
     wxASSERT( snew.empty() );
@@ -2074,26 +2327,27 @@ void Catalog::GetMergeSummary(Catalog *refcat,
 
     std::set<wxString> strsThis, strsRef;
 
-    for ( unsigned i = 0; i < GetCount(); i++ )
-        strsThis.insert(ItemMergeSummary((*this)[i]));
-    for ( unsigned i = 0; i < refcat->GetCount(); i++ )
-        strsRef.insert(ItemMergeSummary((*refcat)[i]));
+    for (auto& i: m_items)
+        strsThis.insert(ItemMergeSummary(i));
+    for (auto& i: refcat->m_items)
+        strsRef.insert(ItemMergeSummary(i));
 
-    for ( std::set<wxString>::const_iterator i = strsThis.begin(); i != strsThis.end(); ++i )
+    for (auto& i: strsThis)
     {
-        if (strsRef.find(*i) == strsRef.end())
-            sobsolete.Add(*i);
+        if (strsRef.find(i) == strsRef.end())
+            sobsolete.Add(i);
     }
 
-    for ( std::set<wxString>::const_iterator i = strsRef.begin(); i != strsRef.end(); ++i )
+    for (auto& i: strsRef)
     {
-        if (strsThis.find(*i) == strsThis.end())
-            snew.Add(*i);
+        if (strsThis.find(i) == strsThis.end())
+            snew.Add(i);
     }
 }
 
-bool Catalog::ShowMergeSummary(Catalog *refcat, bool *cancelledByUser)
+bool Catalog::ShowMergeSummary(const CatalogPtr& refcat, bool *cancelledByUser)
 {
+#if wxUSE_GUI
     if (cancelledByUser)
         *cancelledByUser = false;
     if (wxConfig::Get()->ReadBool("show_summary", false))
@@ -2109,6 +2363,11 @@ bool Catalog::ShowMergeSummary(Catalog *refcat, bool *cancelledByUser)
     }
     else
         return true;
+#else
+    (void)refcat;
+    (void)cancelledByUser;
+    return true;
+#endif
 }
 
 static unsigned GetCountFromPluralFormsHeader(const Catalog::HeaderData& header)
@@ -2135,8 +2394,7 @@ unsigned Catalog::GetPluralFormsCount() const
 {
     unsigned count = GetCountFromPluralFormsHeader(m_header);
 
-    for ( CatalogItemArray::const_iterator i = m_items.begin();
-          i != m_items.end(); ++i )
+    for (auto& i: m_items)
     {
         count = std::max(count, i->GetPluralFormsCount());
     }
@@ -2148,8 +2406,7 @@ bool Catalog::HasWrongPluralFormsCount() const
 {
     unsigned count = 0;
 
-    for ( CatalogItemArray::const_iterator i = m_items.begin();
-          i != m_items.end(); ++i )
+    for (auto& i: m_items)
     {
         count = std::max(count, i->GetPluralFormsCount());
     }
@@ -2167,16 +2424,19 @@ bool Catalog::HasWrongPluralFormsCount() const
 
 bool Catalog::HasPluralItems() const
 {
-    for ( CatalogItemArray::const_iterator i = m_items.begin();
-          i != m_items.end(); ++i )
+    for (auto& i: m_items)
     {
         if ( i->HasPlural() )
             return true;
     }
-
     return false;
 }
 
+void Catalog::SetLanguage(Language lang)
+{
+    m_header.Lang = lang;
+    m_header.SetHeaderNotEmpty("Plural-Forms", lang.DefaultPluralFormsExpr());
+}
 
 void Catalog::GetStatistics(int *all, int *fuzzy, int *badtokens,
                             int *untranslated, int *unfinished)
@@ -2187,27 +2447,26 @@ void Catalog::GetStatistics(int *all, int *fuzzy, int *badtokens,
     if (untranslated) *untranslated = 0;
     if (unfinished) *unfinished = 0;
 
-    int cnt = GetCount();
-    for (int i = 0; i < cnt; i++)
+    for (auto& i: m_items)
     {
         bool ok = true;
 
         if (all)
             (*all)++;
 
-        if ((*this)[i].IsFuzzy())
+        if (i->IsFuzzy())
         {
             if (fuzzy)
                 (*fuzzy)++;
             ok = false;
         }
-        if ((*this)[i].GetValidity() == CatalogItem::Val_Invalid)
+        if (i->GetValidity() == CatalogItem::Val_Invalid)
         {
             if (badtokens)
                 (*badtokens)++;
             ok = false;
         }
-        if (!(*this)[i].IsTranslated())
+        if (!i->IsTranslated())
         {
             if (untranslated)
                 (*untranslated)++;
diff --git a/src/catalog.h b/src/catalog.h
index 60345b6..e2edc9d 100644
--- a/src/catalog.h
+++ b/src/catalog.h
@@ -32,11 +32,20 @@
 #include <wx/arrstr.h>
 #include <wx/textfile.h>
 
-#include <vector>
+#include <initializer_list>
+#include <iostream>
 #include <map>
+#include <memory>
+#include <vector>
 
 class ProgressInfo;
 
+class Catalog;
+class CatalogItem;
+typedef std::shared_ptr<CatalogItem> CatalogItemPtr;
+typedef std::shared_ptr<Catalog> CatalogPtr;
+
+
 /// The possible bookmarks for a given item
 typedef enum
 {
@@ -141,8 +150,8 @@ class CatalogItem
         wxString GetTranslation(unsigned n = 0) const;
 
         /// Returns all translations.
-        const wxArrayString& GetTranslations() const
-            { return m_translations; }
+        const wxArrayString& GetTranslations() const { return m_translations; }
+        wxArrayString& GetTranslations() { return m_translations; }
 
         /// Returns references (#:) lines for the entry
         const wxArrayString& GetRawReferences() const { return m_references; }
@@ -309,6 +318,7 @@ class CatalogItem
         Bookmark m_bookmark;
 };
 
+
 /** This class holds information about one particular deleted item.
     This includes deleted lines, references, translation's status
     (fuzzy, non translated, translated) and optional comment(s).
@@ -404,7 +414,7 @@ class CatalogDeletedData
 };
 
 
-typedef std::vector<CatalogItem> CatalogItemArray;
+typedef std::vector<CatalogItemPtr> CatalogItemArray;
 typedef std::vector<CatalogDeletedData> CatalogDeletedDataArray;
 typedef std::map<wxString, unsigned> CatalogItemIndex;
 
@@ -416,6 +426,24 @@ typedef std::map<wxString, unsigned> CatalogItemIndex;
 class Catalog
 {
     public:
+        /// Type of the file loaded
+        enum class Type
+        {
+            PO,
+            POT
+        };
+
+        /// Capabilities of the file type
+        enum class Cap
+        {
+            Translations,    // Can translations be added (e.g. POTs can't)?
+            LanguageSetting, // Is language code saved in the file?
+            UserComments,    // Can users add comments?
+        };
+
+        /// Is this file capable of doing these things
+        bool HasCapability(Cap cap) const;
+
         /// PO file header information.
         class HeaderData
         {
@@ -496,7 +524,7 @@ class Catalog
         static const int DEFAULT_WRAPPING = -2;
 
         /// Default ctor. Creates empty catalog, you have to call Load.
-        Catalog();
+        Catalog(Type type = Type::PO);
 
         /// Ctor that loads the catalog from \a po_file with Load.
         /// \a flags is CreationFlags combination.
@@ -539,13 +567,63 @@ class Catalog
                   int& validation_errors,
                   CompilationStatus& mo_compilation_status);
 
+        /**
+            "Saves" the PO file into a memory buffer with content identical
+            to what Save() would save into a file.
+            
+            Returns empty string in case of failure.
+         */
+        std::string SaveToBuffer();
+
+        /// File mask for opening/saving this catalog's file type
+        wxString GetFileMask() const { return GetTypesFileMask({m_fileType}); }
+        /// File mask for opening/saving any supported file type
+        static wxString GetTypesFileMask(std::initializer_list<Type> types);
+        static wxString GetAllTypesFileMask();
+
         /// Compiles the catalog into binary MO file.
         bool CompileToMO(const wxString& mo_file,
                          int& validation_errors,
                          CompilationStatus& mo_compilation_status);
 
         /// Exports the catalog to HTML format
-        bool ExportToHTML(const wxString& filename);
+        void ExportToHTML(std::ostream& output);
+
+        /// Detect a particular common breakage of catalogs.
+        bool HasDuplicateItems() const;
+
+        /// Fixes a common invalid kind of entries, when msgids aren't unique.
+        bool FixDuplicateItems();
+
+        Type GetFileType() const { return m_fileType; }
+
+        wxString GetFileName() const { return m_fileName; }
+        void SetFileName(const wxString& fn);
+
+        /**
+            Return base path to source code for extraction, or empty string if not configured.
+            
+            This is the path that file references are relative to. It should be,
+            but may not be, the root of the source tree.
+         */
+        wxString GetSourcesBasePath() const;
+
+        /**
+            Returns top-most directory of the configured source tree.
+            
+            Returns empty string if not configured.
+         */
+        wxString GetSourcesRootPath() const;
+
+        /**
+            Returns true if the source code to update the PO from is available.
+         */
+        bool HasSourcesConfigured() const;
+
+        /**
+            Returns true if the source code to update the PO from is available.
+         */
+        bool HasSourcesAvailable() const;
 
         /** Updates the catalog from sources.
             \see SourceDigger, Parser, UpdateFromPOT.
@@ -563,6 +641,8 @@ class Catalog
         /// Returns the number of strings/translations in the catalog.
         unsigned GetCount() const { return (unsigned)m_items.size(); }
 
+        const CatalogItemArray& items() const { return m_items; }
+
         /// Is the catalog empty?
         bool empty() const { return m_items.empty(); }
 
@@ -577,10 +657,10 @@ class Catalog
                            int *untranslated, int *unfinished);
 
         /// Gets n-th item in the catalog (read-write access).
-        CatalogItem& operator[](unsigned n) { return m_items[n]; }
+        CatalogItemPtr operator[](unsigned n) { return m_items[n]; }
 
         /// Gets n-th item in the catalog (read-only access).
-        const CatalogItem& operator[](unsigned n) const { return m_items[n]; }
+        const CatalogItemPtr operator[](unsigned n) const { return m_items[n]; }
 
         /// Gets catalog header (read-write access).
         HeaderData& Header() { return m_header; }
@@ -602,12 +682,22 @@ class Catalog
          */
         bool IsOk() const { return m_isOk; }
 
-        /** Returns catalog's language (may be invalid). */
+        /// Returns catalog's source language (may be invalid, but usually English).
+        Language GetSourceLanguage() const { return m_sourceLanguage; }
+
+        /// Returns catalog's language (may be invalid).
         Language GetLanguage() const { return m_header.Lang; }
 
+        /// Change the catalog's language and update headers accordingly
+        void SetLanguage(Language lang);
+
+        /// Is the PO file from Crowdin, i.e. sync-able?
+        bool IsFromCrowdin() const
+            { return m_header.HasHeader("X-Crowdin-Project") && m_header.HasHeader("X-Crowdin-File"); }
+
         /// Adds entry to the catalog (the catalog will take ownership of
         /// the object).
-        void AddItem(const CatalogItem& data);
+        void AddItem(const CatalogItemPtr& data);
 
         /// Adds entry to the catalog (the catalog will take ownership of
         /// the object).
@@ -620,7 +710,7 @@ class Catalog
         void RemoveDeletedItems();
 
         /// Finds item by line number
-        CatalogItem *FindItemByLine(int lineno);
+        CatalogItemPtr FindItemByLine(int lineno);
 
         /// Sets the given item to have the given bookmark and returns the index
         /// of the item that previously had this bookmark (or -1)
@@ -637,16 +727,13 @@ class Catalog
         /// Returns number of errors (i.e. 0 if no errors).
         int Validate();
 
-        const wxString& GetFileName() const { return m_fileName; }
-        void SetFileName(const wxString& fn) { m_fileName = fn; }
-
     protected:
         /// Fix commonly encountered fixable problems with loaded files
         void FixupCommonIssues();
 
         int DoValidate(const wxString& po_file);
         bool DoSaveOnly(const wxString& po_file, wxTextFileType crlf);
-        bool DoSaveOnly(wxTextFile& f, wxTextFileType crlf);
+        bool DoSaveOnly(wxTextBuffer& f, wxTextFileType crlf);
 
         /** Merges the catalog with reference catalog
             (in the sense of msgmerge -- this catalog is old one with
@@ -656,7 +743,7 @@ class Catalog
                     Note that if it returns false, the catalog was
                     \em not modified!
          */
-        bool Merge(Catalog *refcat);
+        bool Merge(const CatalogPtr& refcat);
 
         /** Returns list of strings that are new in reference catalog
             (compared to this one) and that are not present in \a refcat
@@ -664,7 +751,7 @@ class Catalog
 
             \see ShowMergeSummary
          */
-        void GetMergeSummary(Catalog *refcat,
+        void GetMergeSummary(const CatalogPtr& refcat,
                              wxArrayString& snew, wxArrayString& sobsolete);
 
         /** Shows a dialog with merge summary.
@@ -672,15 +759,17 @@ class Catalog
 
             \return true if the merge was OK'ed by the user, false otherwise
          */
-        bool ShowMergeSummary(Catalog *refcat, bool *cancelledByUser);
+        bool ShowMergeSummary(const CatalogPtr& refcat, bool *cancelledByUser);
 
     private:
         CatalogItemArray m_items;
         CatalogDeletedDataArray m_deletedItems;
 
         bool m_isOk;
+        Type m_fileType;
         wxString m_fileName;
         HeaderData m_header;
+        Language m_sourceLanguage;
         wxTextFileType m_fileCRLF;
         int m_fileWrappingWidth;
 
diff --git a/src/chooselang.cpp b/src/chooselang.cpp
index 2ac43ac..dd1bc97 100644
--- a/src/chooselang.cpp
+++ b/src/chooselang.cpp
@@ -62,7 +62,7 @@ static bool ChooseLanguage(wxString *value)
         arr.push_back(_("(Use default language)"));
         for (auto i : langs)
         {
-            auto lang = Language::TryParse(i);
+            auto lang = Language::TryParse(i.ToStdWstring());
             arr.push_back(lang.DisplayNameInItself() + L"  —  " + lang.DisplayName());
         }
     }
diff --git a/src/concurrency.cpp b/src/concurrency.cpp
new file mode 100644
index 0000000..3a660d6
--- /dev/null
+++ b/src/concurrency.cpp
@@ -0,0 +1,110 @@
+/*
+ *  This file is part of Poedit (http://poedit.net)
+ *
+ *  Copyright (C) 2010-2015 Vaclav Slavik
+ *
+ *  Permission is hereby granted, free of charge, to any person obtaining a
+ *  copy of this software and associated documentation files (the "Software"),
+ *  to deal in the Software without restriction, including without limitation
+ *  the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ *  and/or sell copies of the Software, and to permit persons to whom the
+ *  Software is furnished to do so, subject to the following conditions:
+ *
+ *  The above copyright notice and this permission notice shall be included in
+ *  all copies or substantial portions of the Software.
+ *
+ *  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ *  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ *  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ *  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ *  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *  FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ *  DEALINGS IN THE SOFTWARE.
+ *
+ */
+
+#include "concurrency.h"
+
+#include "errors.h"
+#include <wx/log.h>
+
+#if defined(HAVE_DISPATCH)
+
+
+#include <dispatch/dispatch.h>
+
+void call_on_main_thread_impl(std::function<void()>&& f)
+{
+    std::function<void()> func(std::move(f));
+    dispatch_async(dispatch_get_main_queue(), [func]{
+        try
+        {
+            func();
+        }
+        catch (...)
+        {
+            // FIXME: This is gross. Should be reported better and properly, but this
+            //        is consistent with pplx/ConcurrencyRT/futures, so do it for now.
+            wxLogDebug("uncaught exception: %s", DescribeCurrentException());
+        }
+    });
+}
+
+void concurrency_queue::enqueue(std::function<void()>&& f)
+{
+    std::function<void()> func(std::move(f));
+    dispatch_queue_t q = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
+    dispatch_async(q, [func]{
+        try
+        {
+            func();
+        }
+        catch (...)
+        {
+            // FIXME: This is gross. Should be reported better and properly, but this
+            //        is consistent with pplx/ConcurrencyRT/futures, so do it for now.
+            wxLogDebug("uncaught exception: %s", DescribeCurrentException());
+        }
+    });
+}
+
+void concurrency_queue::cleanup()
+{
+}
+
+
+#elif !defined(HAVE_PPL) // generic implementation
+
+
+#include "ThreadPool.h"
+
+#include <thread>
+
+namespace
+{
+
+std::unique_ptr<ThreadPool> gs_pool;
+static std::once_flag initializationFlag;
+
+ThreadPool& pool()
+{
+    std::call_once(initializationFlag, []{
+        gs_pool.reset(new ThreadPool(std::thread::hardware_concurrency() + 1));
+    });
+    return *gs_pool;
+}
+
+} // anonymous namespace
+
+void concurrency_queue::enqueue(std::function<void()>&& f)
+{
+    pool().enqueue_func(std::move(f));
+}
+
+void concurrency_queue::cleanup()
+{
+    gs_pool.reset();
+}
+
+
+#endif // !HAVE_DISPATCH
diff --git a/src/concurrency.h b/src/concurrency.h
new file mode 100644
index 0000000..9911377
--- /dev/null
+++ b/src/concurrency.h
@@ -0,0 +1,238 @@
+/*
+ *  This file is part of Poedit (http://poedit.net)
+ *
+ *  Copyright (C) 2010-2015 Vaclav Slavik
+ *
+ *  Permission is hereby granted, free of charge, to any person obtaining a
+ *  copy of this software and associated documentation files (the "Software"),
+ *  to deal in the Software without restriction, including without limitation
+ *  the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ *  and/or sell copies of the Software, and to permit persons to whom the
+ *  Software is furnished to do so, subject to the following conditions:
+ *
+ *  The above copyright notice and this permission notice shall be included in
+ *  all copies or substantial portions of the Software.
+ *
+ *  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ *  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ *  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ *  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ *  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *  FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ *  DEALINGS IN THE SOFTWARE.
+ *
+ */
+
+#ifndef Poedit_concurrency_h
+#define Poedit_concurrency_h
+
+#include <functional>
+#include <future>
+#include <memory>
+
+#include <wx/app.h>
+#include <wx/weakref.h>
+
+#if defined(__WXOSX__) && defined(__clang__)
+    #define HAVE_DISPATCH
+    extern void call_on_main_thread_impl(std::function<void()>&& f);
+#endif
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1800)
+    #define HAVE_PPL
+    #include <concrt.h>
+#endif
+
+// ----------------------------------------------------------------------
+// Background operations
+// ----------------------------------------------------------------------
+
+#if defined(HAVE_PPL)
+
+class concurrency_queue
+{
+public:
+    /// Future type used by the queue.
+    template<typename T> using future = Concurrency::task<T>;
+
+    /**
+        Enqueue an operation for background processing.
+
+        Return future for it.
+     */
+    template<class F>
+    static auto add(F&& f) -> future<typename std::result_of<F()>::type>
+    {
+        return Concurrency::create_task(f);
+    }
+
+    /// @internal Call on shutdown to terminate the queue
+    static void cleanup() {}
+};
+
+template<typename T>
+inline bool is_future_valid(const concurrency_queue::future<T>& f)
+{
+    try
+    {
+        f.is_done();
+        return true;
+    }
+    catch (Concurrency::invalid_operation)
+    {
+        return false;
+    }
+}
+
+#else // generic version
+
+class concurrency_queue
+{
+public:
+    /// Future type used by the queue.
+    template<typename T> using future = std::future<T>;
+
+    /**
+        Enqueue an operation for background processing.
+
+        Return future for it.
+     */
+    template<class F>
+    static auto add(F&& f) -> future<typename std::result_of<F()>::type>
+    {
+        using return_type = typename std::result_of<F()>::type;
+        auto task = std::make_shared< std::packaged_task<return_type()> >(std::forward<F>(f));
+        future<return_type> res = task->get_future();
+        enqueue([task](){ (*task)(); });
+        return res;
+    }
+
+    /// @internal Call on shutdown to terminate the queue
+    static void cleanup();
+
+private:
+    static void enqueue(std::function<void()>&& f);
+};
+
+template<typename T>
+inline bool is_future_valid(const concurrency_queue::future<T>& f)
+{
+    return f.valid();
+}
+
+#endif // !HAVE_PPL
+
+
+// ----------------------------------------------------------------------
+// Helpers for running code on the main thread
+// ----------------------------------------------------------------------
+
+/**
+    Simply calls the callable @a func on the main thread, asynchronously.
+ */
+template<typename F>
+void call_on_main_thread(F&& func)
+{
+#ifdef HAVE_DISPATCH
+    call_on_main_thread_impl(func);
+#else
+    wxTheApp->CallAfter(func);
+#endif
+}
+
+#if defined(__clang__)
+
+template<typename... Args>
+auto on_main_thread_impl(std::function<void(Args...)> func) -> std::function<void(Args...)>
+{
+    return [func](Args... args){
+        call_on_main_thread([func,args...]{
+            func(args...);
+        });
+    };
+}
+
+#else // sigh... neither VS2013 nor GCC 4.8 can deal with the above
+
+// Visual Studio 2013 is broken and won't parse the above; 2015 fixes it.
+inline auto on_main_thread_impl(std::function<void()> func) -> std::function<void()>
+{
+    return [func](){ call_on_main_thread([=]{ func(); }); };
+}
+template<typename A1>
+auto on_main_thread_impl(std::function<void(A1)> func) -> std::function<void(A1)>
+{
+    return [func](A1 a1){ call_on_main_thread([=]{ func(a1); }); };
+}
+template<typename A1, typename A2>
+auto on_main_thread_impl(std::function<void(A1,A2)> func) -> std::function<void(A1,A2)>
+{
+    return [func](A1 a1, A2 a2){ call_on_main_thread([=]{ func(a1,a2); }); };
+}
+template<typename A1, typename A2, typename A3>
+auto on_main_thread_impl(std::function<void(A1, A2, A3)> func) -> std::function<void(A1, A2, A3)>
+{
+    return [func](A1 a1, A2 a2, A3 a3){ call_on_main_thread([=]{ func(a1, a2, a3); }); };
+}
+
+#endif
+
+/**
+    Wraps a callable into std::function called on the main thread.
+    
+    Returned function takes the same arguments as @a func and is called on the
+    main thread. I.e. the returned object may be called from any thread, but
+    @a func is guaranteed to execute on the main one.
+    
+    Notice that it is necessary to specify template parameters because they
+    cannot be deduced.
+    
+    Example usage:
+    
+        on_main_thread<int,std::string>(this, [=](int i, std::string s){
+            ...
+        })
+ */
+template<typename... Args, typename F>
+auto on_main_thread(F&& func) -> std::function<void(Args...)>
+{
+    return on_main_thread_impl(std::function<void(Args...)>(func));
+}
+
+/**
+    Like on_main_thread<> but is only called if @a window is still valid
+    (using a wxWeakRef<> to check).
+ */
+template<typename... Args, typename F, typename Class>
+auto on_main_thread_for_window(Class *self, F&& func) -> std::function<void(Args...)>
+{
+    wxWeakRef<Class> weak(self);
+    return on_main_thread<Args...>([=](Args... args){
+        if (weak)
+            func(args...);
+    });
+}
+
+
+/**
+    Wraps a method into function called on the main thread.
+    
+    Returned function takes the same arguments as the provided method @a func
+    and is called on the main thread. I.e. the returned object may be called
+    from any thread, but @a func is guaranteed to execute on the main one.
+    
+    Example usage:
+    
+        on_main_thread(this, &CrowdinOpenDialog::OnFetchedProjects)
+ */
+template<typename Class, typename... Args>
+auto on_main_thread(Class *self, void (Class::*func)(Args...)) -> std::function<void(Args...)>
+{
+    wxWeakRef<Class> weak(self);
+    return on_main_thread<Args...>([=](Args... args){
+        if (weak)
+            ((*weak.get()).*func)(args...);
+    });
+}
+
+#endif // Poedit_concurrency_h
diff --git a/src/crowdin_client.cpp b/src/crowdin_client.cpp
new file mode 100644
index 0000000..044f6b9
--- /dev/null
+++ b/src/crowdin_client.cpp
@@ -0,0 +1,367 @@
+/*
+ *  This file is part of Poedit (http://poedit.net)
+ *
+ *  Copyright (C) 2015 Vaclav Slavik
+ *
+ *  Permission is hereby granted, free of charge, to any person obtaining a
+ *  copy of this software and associated documentation files (the "Software"),
+ *  to deal in the Software without restriction, including without limitation
+ *  the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ *  and/or sell copies of the Software, and to permit persons to whom the
+ *  Software is furnished to do so, subject to the following conditions:
+ *
+ *  The above copyright notice and this permission notice shall be included in
+ *  all copies or substantial portions of the Software.
+ *
+ *  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ *  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ *  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ *  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ *  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *  FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ *  DEALINGS IN THE SOFTWARE.
+ *
+ */
+
+
+#include "crowdin_client.h"
+
+#include "http_client.h"
+#include "keychain/keytar.h"
+#include "str_helpers.h"
+
+#include <functional>
+#include <mutex>
+#include <boost/algorithm/string.hpp>
+
+#include <wx/translation.h>
+#include <wx/utils.h>
+
+#ifndef __WXOSX__
+    #define NEEDS_IN_APP_BROWSER
+    #include <wx/dialog.h>
+    #include <wx/webview.h>
+    #include "hidpi.h"
+#endif
+
+// GCC's libstdc++ didn't have functional std::regex implementation until 4.9
+#if (defined(__GNUC__) && !defined(__clang__) && !wxCHECK_GCC_VERSION(4,9))
+    #include <boost/regex.hpp>
+    using boost::regex;
+    using boost::regex_search;
+    using boost::smatch;
+#else
+    #include <regex>
+    using std::regex;
+    using std::regex_search;
+    using std::smatch;
+#endif
+
+// ----------------------------------------------------------------
+// Implementation
+// ----------------------------------------------------------------
+
+namespace
+{
+
+#define OAUTH_CLIENT_ID     "poedit-y1aBMmDbm3s164dtJ4Ur150e2"
+#define OAUTH_AUTHORIZE_URL "/oauth2/authorize?response_type=token&client_id=" OAUTH_CLIENT_ID
+#define OAUTH_URI_PREFIX    "poedit://auth/crowdin/"
+
+// Recursive extract files from /api/project/*/info response
+void ExtractFilesFromInfo(std::vector<std::wstring>& out, const json_dict& r, const std::wstring& prefix)
+{
+    r.iterate_array("files",[&out,prefix](const json_dict& i){
+        auto name = prefix + i.wstring("name");
+        auto node_type = i.utf8_string("node_type");
+        if (node_type == "file")
+        {
+            out.push_back(name);
+        }
+        else if (node_type == "directory")
+        {
+            ExtractFilesFromInfo(out, i, name + L"/");
+        }
+    });
+}
+
+} // anonymous namespace
+
+
+std::string CrowdinClient::WrapLink(const std::string& page)
+{
+    return "https://secure.payproglobal.com/r.ashx?s=12569&a=62761&u=" +
+            http_client::url_encode("https://crowdin.com" + page);
+}
+
+
+class CrowdinClient::crowdin_http_client : public http_client
+{
+public:
+    crowdin_http_client(CrowdinClient& owner)
+        : http_client("https://api.crowdin.com"), m_owner(owner)
+    {}
+
+protected:
+    std::string parse_json_error(const json_dict& response) const override
+    {
+        auto msg = response.subdict("error").utf8_string("message");
+
+        // Translate commonly encountered messages:
+        if (msg == "Translations download is forbidden by project owner")
+            msg = _("Downloading translations is disabled in this project.").utf8_str();
+
+        return msg;
+    }
+
+    void on_error_response(int& statusCode, std::string& message) override
+    {
+        if (statusCode == 401/*Unauthorized*/)
+        {
+            // message is e.g. "The access token provided is invalid"
+            message = _("Not authorized, please sign in again.").utf8_str();
+            m_owner.SignOut();
+        }
+    }
+
+    CrowdinClient& m_owner;
+};
+
+
+CrowdinClient::CrowdinClient() : m_api(new crowdin_http_client(*this))
+{
+    SignInIfAuthorized();
+}
+
+CrowdinClient::~CrowdinClient() {}
+
+
+void CrowdinClient::Authenticate(std::function<void()> callback)
+{
+    auto url = WrapLink(OAUTH_AUTHORIZE_URL);
+    m_authCallback = callback;
+
+#ifdef NEEDS_IN_APP_BROWSER
+  // Windows XP has broken wxWebViewHandler and it's not worth fixing. Use external browser
+  // on XP, even though its user experience is suboptimal. Use in-app browser on other
+  // platforms and Windows versions.
+  #ifdef __WXMSW__
+    if (wxPlatformInfo::Get().CheckOSVersion(6, 0))
+  #endif
+    {
+        auto win = new wxDialog(nullptr, wxID_ANY, _("Sign in to Crowdin"), wxDefaultPosition, wxSize(PX(800), PX(600)), wxDIALOG_NO_PARENT | wxDEFAULT_FRAME_STYLE);
+        auto web = wxWebView::New(win, wxID_ANY);
+
+        // Protocol handler that simply calls a callback and doesn't return any data.
+        // We have to use this hack, because wxEVT_WEBVIEW_NAVIGATING is unreliable
+        // with IE on Windows 8 and is not sent at all or sent one navigation event too
+        // late, possibly due to the custom protocol used, possibly not.
+        class PoeditURIHandler : public wxWebViewHandler
+        {
+        public:
+            PoeditURIHandler(std::function<void(std::string)> cb) : wxWebViewHandler("poedit"), m_cb(cb) {}
+            wxFSFile* GetFile(const wxString &uri) override
+            {
+                m_cb(uri.ToStdString());
+                return nullptr;
+            }
+            std::function<void(std::string)> m_cb;
+        };
+
+        std::string auth_uri;
+        web->RegisterHandler(wxSharedPtr<wxWebViewHandler>(new PoeditURIHandler([=, &auth_uri](std::string uri){
+            if (!this->IsOAuthCallback(uri))
+                return;
+            auth_uri = uri;
+            win->CallAfter([=]{ win->EndModal(wxID_OK); });
+        })));
+
+        win->CallAfter([=]{ web->LoadURL(url); });
+        win->ShowModal();
+        win->Destroy();
+        if (!auth_uri.empty())
+            HandleOAuthCallback(auth_uri);
+        return;
+    }
+    // else: fall through
+#endif
+    wxLaunchDefaultBrowser(url);
+}
+
+
+void CrowdinClient::HandleOAuthCallback(const std::string& uri)
+{
+    if (!m_authCallback)
+        return;
+
+    const regex re("access_token=([^&]+)&");
+    smatch m;
+    if (!regex_search(uri, m, re))
+        return;
+
+    SaveAndSetToken(m.str(1));
+
+    m_authCallback();
+    m_authCallback = nullptr;
+}
+
+
+bool CrowdinClient::IsOAuthCallback(const std::string& uri)
+{
+    return boost::starts_with(uri, OAUTH_URI_PREFIX);
+}
+
+
+void CrowdinClient::GetUserInfo(std::function<void(UserInfo)> callback)
+{
+    m_api->get("/api/account/profile?json=",
+            // OK:
+            [callback](const json_dict& r){
+                auto profile = r.subdict("profile");
+                UserInfo u;
+                u.name = profile.wstring("name");
+                u.login = profile.wstring("login");
+                callback(u);
+            },
+            // error:
+            [](std::exception_ptr) {}
+    );
+}
+
+
+void CrowdinClient::GetUserProjects(std::function<void(std::vector<ProjectListing>)> onResult,
+                                    error_func_t onError)
+{
+    m_api->get("/api/account/get-projects?json=&role=all",
+            // OK:
+            [onResult](const json_dict& r){
+                std::vector<ProjectListing> all;
+                r.iterate_array("projects",[&all](const json_dict& i){
+                    all.push_back({i.wstring("name"),
+                                   i.utf8_string("identifier"),
+                                   (bool)i.number("downloadable")});
+                });
+                onResult(all);
+            },
+            onError
+    );
+}
+
+
+void CrowdinClient::GetProjectInfo(const std::string& project_id,
+                                   std::function<void(ProjectInfo)> onResult,
+                                   error_func_t onError)
+{
+    auto url = "/api/project/" + project_id + "/info?json=&project-identifier=" + project_id;
+    m_api->get(url,
+            // OK:
+            [onResult](const json_dict& r){
+                ProjectInfo prj;
+                auto details = r.subdict("details");
+                prj.name = details.wstring("name");
+                prj.identifier = details.utf8_string("identifier");
+                r.iterate_array("languages",[&prj](const json_dict& i){
+                    if (i.number("can_translate") != 0)
+                        prj.languages.push_back(Language::TryParse(i.wstring("code")));
+                });
+                ExtractFilesFromInfo(prj.files, r, L"/");
+                onResult(prj);
+            },
+            onError
+    );
+}
+
+
+void CrowdinClient::DownloadFile(const std::string& project_id, const std::wstring& file, const Language& lang,
+                                 const std::wstring& output_file,
+                                 std::function<void()> onSuccess,
+                                 error_func_t onError)
+{
+    // NB: "export_translated_only" means the translation is not filled with the source string
+    //     if there's no translation, i.e. what Poedit wants.
+    auto url = "/api/project/" + project_id + "/export-file"
+                   "?json="
+                   "&export_translated_only=1"
+                   "&language=" + lang.RFC3066() +
+                   "&file=" + http_client::url_encode(file);
+    m_api->download(url, output_file, onSuccess, onError);
+}
+
+
+void CrowdinClient::UploadFile(const std::string& project_id, const std::wstring& file, const Language& lang,
+                                 const std::string& file_content,
+                                 std::function<void()> onSuccess,
+                                 error_func_t onError)
+{
+    auto url = "/api/project/" + project_id + "/upload-translation";
+
+    multipart_form_data data;
+    data.add_value("json", "");
+    data.add_value("language", lang.RFC3066());
+    data.add_value("import_duplicates", "0");
+    data.add_value("import_eq_suggestions", "0");
+    data.add_file("files[" + str::to_utf8(file) + "]", "upload.po", file_content);
+
+    m_api->post(url, data, onSuccess, onError);
+}
+
+
+bool CrowdinClient::IsSignedIn() const
+{
+    std::string token;
+    return keytar::GetPassword("Crowdin", &token);
+}
+
+
+void CrowdinClient::SignInIfAuthorized()
+{
+    std::string token;
+    if (keytar::GetPassword("Crowdin", &token))
+        SetToken(token);
+}
+
+
+void CrowdinClient::SetToken(const std::string& token)
+{
+    m_api->set_authorization(!token.empty() ? "Bearer " + token : "");
+}
+
+
+void CrowdinClient::SaveAndSetToken(const std::string& token)
+{
+    SetToken(token);
+    keytar::AddPassword("Crowdin", token);
+}
+
+
+void CrowdinClient::SignOut()
+{
+    m_api->set_authorization("");
+    keytar::DeletePassword("Crowdin");
+}
+
+
+// ----------------------------------------------------------------
+// Singleton management
+// ----------------------------------------------------------------
+
+static std::once_flag initializationFlag;
+CrowdinClient* CrowdinClient::ms_instance = nullptr;
+
+CrowdinClient& CrowdinClient::Get()
+{
+    std::call_once(initializationFlag, []() {
+        ms_instance = new CrowdinClient;
+    });
+    return *ms_instance;
+}
+
+void CrowdinClient::CleanUp()
+{
+    if (ms_instance)
+    {
+        delete ms_instance;
+        ms_instance = nullptr;
+    }
+}
+
diff --git a/src/crowdin_client.h b/src/crowdin_client.h
new file mode 100644
index 0000000..89e3e19
--- /dev/null
+++ b/src/crowdin_client.h
@@ -0,0 +1,137 @@
+/*
+ *  This file is part of Poedit (http://poedit.net)
+ *
+ *  Copyright (C) 2015 Vaclav Slavik
+ *
+ *  Permission is hereby granted, free of charge, to any person obtaining a
+ *  copy of this software and associated documentation files (the "Software"),
+ *  to deal in the Software without restriction, including without limitation
+ *  the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ *  and/or sell copies of the Software, and to permit persons to whom the
+ *  Software is furnished to do so, subject to the following conditions:
+ *
+ *  The above copyright notice and this permission notice shall be included in
+ *  all copies or substantial portions of the Software.
+ *
+ *  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ *  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ *  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ *  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ *  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *  FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ *  DEALINGS IN THE SOFTWARE.
+ *
+ */
+
+#ifndef Poedit_crowdin_client_h
+#define Poedit_crowdin_client_h
+
+#ifdef HAVE_HTTP_CLIENT
+
+#include <functional>
+#include <memory>
+
+#include "language.h"
+
+
+/**
+    Client to the Crowdin platform.
+ */
+class CrowdinClient
+{
+public:
+    /// Return singleton instance of the client.
+    static CrowdinClient& Get();
+
+    /// Destroys the singleton, must be called (omly) on app shutdown.
+    static void CleanUp();
+
+    /// Is the user currently signed into Crowdin?
+    bool IsSignedIn() const;
+
+    /// Wrap relative Crowdin link to absolute URL
+    static std::string WrapLink(const std::string& page);
+
+    typedef std::function<void(std::exception_ptr)> error_func_t;
+
+    /**
+        Authenticate with Crowdin.
+        
+        This opens the browser to authenticate the app. The app must handle
+        poedit:// URL and call HandleOAuthCallback. @a callback will be
+        called after receiving the OAuth token.
+     */
+    void Authenticate(std::function<void()> callback);
+    void HandleOAuthCallback(const std::string& uri);
+    bool IsOAuthCallback(const std::string& uri);
+
+    /// Sign out of Crowdin, forget the token
+    void SignOut();
+
+    /// Information about logged-in user
+    struct UserInfo
+    {
+        std::wstring name;
+        std::wstring login;
+    };
+
+    /// Retrieve information about the current user asynchronously
+    void GetUserInfo(std::function<void(UserInfo)> callback);
+
+    /// Project listing info
+    struct ProjectListing
+    {
+        std::wstring name;
+        std::string identifier;
+        bool downloadable;
+    };
+
+    /// Retrieve listing of projects accessible to the user
+    void GetUserProjects(std::function<void(std::vector<ProjectListing>)> onResult,
+                         error_func_t onError);
+
+    /// Project detailed information
+    struct ProjectInfo
+    {
+        std::wstring name;
+        std::string identifier;
+        std::vector<Language> languages;
+        std::vector<std::wstring> files;
+    };
+
+    /// Retrieve listing of projects accessible to the user
+    void GetProjectInfo(const std::string& project_id,
+                        std::function<void(ProjectInfo)> onResult,
+                        error_func_t onError);
+
+    /// Asynchronously download specific Crowdin file into @a output_file.
+    void DownloadFile(const std::string& project_id, const std::wstring& file, const Language& lang,
+                      const std::wstring& output_file,
+                      std::function<void()> onSuccess,
+                      error_func_t onError);
+
+    /// Asynchronously upload specific Crowdin file data.
+    void UploadFile(const std::string& project_id, const std::wstring& file, const Language& lang,
+                    const std::string& file_content,
+                    std::function<void()> onSuccess,
+                    error_func_t onError);
+
+private:
+    CrowdinClient();
+    ~CrowdinClient();
+
+    void SignInIfAuthorized();
+    void SetToken(const std::string& token);
+    void SaveAndSetToken(const std::string& token);
+
+    class crowdin_http_client;
+    std::unique_ptr<crowdin_http_client> m_api;
+
+    std::function<void()> m_authCallback;
+
+    static CrowdinClient *ms_instance;
+};
+
+#endif // HAVE_HTTP_CLIENT
+
+#endif // Poedit_crowdin_client_h
diff --git a/src/crowdin_gui.cpp b/src/crowdin_gui.cpp
new file mode 100644
index 0000000..d14da85
--- /dev/null
+++ b/src/crowdin_gui.cpp
@@ -0,0 +1,622 @@
+/*
+ *  This file is part of Poedit (http://poedit.net)
+ *
+ *  Copyright (C) 2015 Vaclav Slavik
+ *
+ *  Permission is hereby granted, free of charge, to any person obtaining a
+ *  copy of this software and associated documentation files (the "Software"),
+ *  to deal in the Software without restriction, including without limitation
+ *  the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ *  and/or sell copies of the Software, and to permit persons to whom the
+ *  Software is furnished to do so, subject to the following conditions:
+ *
+ *  The above copyright notice and this permission notice shall be included in
+ *  all copies or substantial portions of the Software.
+ *
+ *  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ *  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ *  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ *  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ *  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *  FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ *  DEALINGS IN THE SOFTWARE.
+ *
+ */
+
+
+#include "crowdin_gui.h"
+
+#include "crowdin_client.h"
+
+#include "catalog.h"
+#include "concurrency.h"
+#include "customcontrols.h"
+#include "errors.h"
+#include "hidpi.h"
+#include "str_helpers.h"
+#include "utility.h"
+
+#include <wx/app.h>
+#include <wx/artprov.h>
+#include <wx/button.h>
+#include <wx/choice.h>
+#include <wx/config.h>
+#include <wx/dialog.h>
+#include <wx/msgdlg.h>
+#include <wx/sizer.h>
+#include <wx/statbmp.h>
+#include <wx/stdpaths.h>
+#include <wx/weakref.h>
+#include <wx/windowptr.h>
+
+#include <boost/algorithm/string.hpp>
+
+CrowdinLoginPanel::CrowdinLoginPanel(wxWindow *parent, int flags)
+    : wxPanel(parent, wxID_ANY),
+      m_state(State::Uninitialized)
+{
+    wxBoxSizer *sizer = new wxBoxSizer(wxVERTICAL);
+    sizer->SetMinSize(PX(400), -1);
+    SetSizer(sizer);
+
+    sizer->AddSpacer(PX(10));
+    auto logo = new wxStaticBitmap(this, wxID_ANY, wxArtProvider::GetBitmap("CrowdinLogo"));
+    logo->SetCursor(wxCURSOR_HAND);
+    logo->Bind(wxEVT_LEFT_UP, [](wxMouseEvent&){ wxLaunchDefaultBrowser(CrowdinClient::WrapLink("/")); });
+    sizer->Add(logo, wxSizerFlags().PXDoubleBorder(wxBOTTOM));
+    auto explain = new ExplanationLabel(this, _("Crowdin is an online localization management platform and collaborative translation tool. Poedit can seamlessly sync PO files managed at Crowdin."));
+    sizer->Add(explain, wxSizerFlags().Expand());
+
+    m_loginInfo = new wxBoxSizer(wxHORIZONTAL);
+    auto loginInfoContainer = new wxBoxSizer(wxVERTICAL);
+    loginInfoContainer->SetMinSize(-1, PX(50));
+    loginInfoContainer->AddStretchSpacer();
+    loginInfoContainer->Add(m_loginInfo, wxSizerFlags().Center());
+    loginInfoContainer->AddStretchSpacer();
+
+    sizer->Add(loginInfoContainer, wxSizerFlags().Expand().ReserveSpaceEvenIfHidden().Border(wxTOP|wxBOTTOM, PX(10)));
+
+    m_signIn = new wxButton(this, wxID_ANY, MSW_OR_OTHER(_("Sign in"), _("Sign In")));
+    m_signIn->Bind(wxEVT_BUTTON, &CrowdinLoginPanel::OnSignIn, this);
+    m_signOut= new wxButton(this, wxID_ANY, MSW_OR_OTHER(_("Sign out"), _("Sign Out")));
+    m_signOut->Bind(wxEVT_BUTTON, &CrowdinLoginPanel::OnSignOut, this);
+
+    auto learnMore = new LearnAboutCrowdinLink(this);
+
+    auto buttons = new wxBoxSizer(wxHORIZONTAL);
+    sizer->Add(buttons, wxSizerFlags().Expand().Border(wxBOTTOM, 1));
+    buttons->Add(learnMore, wxSizerFlags().Center().Border(wxLEFT, PX(LearnMoreLink::EXTRA_INDENT)));
+    buttons->AddStretchSpacer();
+    buttons->Add(m_signIn, wxSizerFlags().Right());
+    buttons->Add(m_signOut, wxSizerFlags().Right());
+
+    if (flags & DialogButtons)
+    {
+        auto cancel = new wxButton(this, wxID_CANCEL);
+#ifdef __WXMSW__
+        buttons->Add(cancel, wxSizerFlags().Right().Border(wxLEFT, PX(3)));
+#else
+        buttons->Insert(2, cancel, wxSizerFlags().Right().Border(wxRIGHT, PX(6)));
+#endif
+        m_signIn->SetDefault();
+        m_signIn->SetFocus();
+    }
+
+    ChangeState(State::Uninitialized);
+}
+
+void CrowdinLoginPanel::EnsureInitialized()
+{
+    if (m_state != State::Uninitialized)
+        return;
+
+    if (CrowdinClient::Get().IsSignedIn())
+        UpdateUserInfo();
+    else
+        ChangeState(State::SignedOut);
+}
+
+void CrowdinLoginPanel::ChangeState(State state)
+{
+    m_state = state;
+
+    bool canSignIn = (state == State::SignedOut || state == State::Authenticating);
+    auto sizer = m_signIn->GetContainingSizer();
+    m_signIn->GetContainingSizer()->Show(m_signIn, canSignIn);
+    if (m_signOut)
+        m_signOut->GetContainingSizer()->Show(m_signOut, !canSignIn);
+    sizer->Layout();
+
+    CreateLoginInfoControls(state);
+}
+
+void CrowdinLoginPanel::CreateLoginInfoControls(State state)
+{
+    auto sizer = m_loginInfo;
+    sizer->Clear(/*delete_windows=*/true);
+
+    switch (state)
+    {
+        case State::Authenticating:
+        case State::UpdatingInfo:
+        {
+            auto text = (state == State::Authenticating)
+                      ? _(L"Waiting for authentication…")
+                      : _(L"Updating user information…");
+            auto waitingLabel = new ActivityIndicator(this);
+            sizer->Add(waitingLabel, wxSizerFlags().Center());
+            waitingLabel->Start(text);
+            break;
+        }
+
+        case State::Uninitialized:
+        case State::SignedOut:
+        {
+            // nothing to show in the UI except for "sign in" button
+            break;
+        };
+
+        case State::SignedIn:
+        {
+            auto account = new wxStaticText(this, wxID_ANY, _("Signed in as:"));
+            account->SetForegroundColour(SecondaryLabel::GetTextColor());
+            auto name = new wxStaticText(this, wxID_ANY, m_userName);
+            name->SetFont(name->GetFont().Bold());
+            auto username = new SecondaryLabel(this, m_userLogin);
+
+            sizer->Add(account, wxSizerFlags().PXBorder(wxRIGHT));
+            auto box = new wxBoxSizer(wxVERTICAL);
+            box->Add(name, wxSizerFlags().Left());
+            box->Add(username, wxSizerFlags().Left());
+            sizer->Add(box);
+            break;
+        }
+    }
+
+    Layout();
+}
+
+void CrowdinLoginPanel::UpdateUserInfo()
+{
+    ChangeState(State::UpdatingInfo);
+
+    CrowdinClient::Get().GetUserInfo(on_main_thread_for_window<CrowdinClient::UserInfo>(
+        this,
+        [=](CrowdinClient::UserInfo u) {
+            m_userName = u.name;
+            m_userLogin = u.login;
+            ChangeState(State::SignedIn);
+    }));
+}
+
+void CrowdinLoginPanel::OnSignIn(wxCommandEvent&)
+{
+    ChangeState(State::Authenticating);
+    CrowdinClient::Get().Authenticate(on_main_thread(this, &CrowdinLoginPanel::OnUserSignedIn));
+}
+
+void CrowdinLoginPanel::OnUserSignedIn()
+{
+    UpdateUserInfo();
+    Raise();
+}
+
+void CrowdinLoginPanel::OnSignOut(wxCommandEvent&)
+{
+    CrowdinClient::Get().SignOut();
+    ChangeState(State::SignedOut);
+}
+
+
+LearnAboutCrowdinLink::LearnAboutCrowdinLink(wxWindow *parent, const wxString& text)
+    : LearnMoreLink(parent,
+                    CrowdinClient::WrapLink("/"),
+                    text.empty() ? (MSW_OR_OTHER(_("Learn more about Crowdin"), _("Learn More About Crowdin"))) : text)
+{
+}
+
+
+
+namespace
+{
+
+class CrowdinLoginDialog : public wxDialog
+{
+public:
+    CrowdinLoginDialog(wxWindow *parent) : wxDialog(parent, wxID_ANY, _("Sign in to Crowdin"))
+    {
+        auto topsizer = new wxBoxSizer(wxHORIZONTAL);
+        auto panel = new Panel(this);
+        panel->SetClientSize(panel->GetBestSize());
+        topsizer->Add(panel, wxSizerFlags(1).Expand().Border(wxALL, PX(15)));
+        SetSizerAndFit(topsizer);
+        CenterOnParent();
+    }
+
+private:
+    class Panel : public CrowdinLoginPanel
+    {
+    public:
+        Panel(CrowdinLoginDialog *parent) : CrowdinLoginPanel(parent, DialogButtons), m_owner(parent)
+        {
+            EnsureInitialized();
+        }
+
+    protected:
+        void OnUserSignedIn() override
+        {
+            m_owner->Raise();
+            m_owner->EndModal(wxID_OK);
+        }
+
+        CrowdinLoginDialog *m_owner;
+    };
+};
+
+
+class CrowdinOpenDialog : public wxDialog
+{
+public:
+    CrowdinOpenDialog(wxWindow *parent) : wxDialog(parent, wxID_ANY, _("Open Crowdin translation"))
+    {
+        auto topsizer = new wxBoxSizer(wxVERTICAL);
+        topsizer->SetMinSize(PX(400), -1);
+
+        topsizer->AddSpacer(PX(10));
+
+        auto pickers = new wxFlexGridSizer(2, wxSize(PX(5),PX(6)));
+        pickers->AddGrowableCol(1);
+        topsizer->Add(pickers, wxSizerFlags().Expand().PXDoubleBorderAll());
+
+        pickers->Add(new wxStaticText(this, wxID_ANY, _("Project:")),
+                     wxSizerFlags().Center().Right().BORDER_OSX(wxTOP, 1));
+        m_project = new wxChoice(this, wxID_ANY);
+        pickers->Add(m_project, wxSizerFlags().Expand().Center());
+
+        pickers->Add(new wxStaticText(this, wxID_ANY, _("Language:")),
+                     wxSizerFlags().Center().Right().BORDER_OSX(wxTOP, 1));
+        m_language = new wxChoice(this, wxID_ANY);
+        pickers->Add(m_language, wxSizerFlags().Expand().Center());
+
+        pickers->AddSpacer(PX(5));
+        pickers->AddSpacer(PX(5));
+
+        pickers->Add(new wxStaticText(this, wxID_ANY, _("File:")),
+                     wxSizerFlags().Center().Right().BORDER_OSX(wxTOP, 1));
+        m_file = new wxChoice(this, wxID_ANY);
+        pickers->Add(m_file, wxSizerFlags().Expand().Center());
+
+        m_activity = new ActivityIndicator(this);
+        topsizer->AddSpacer(PX(5));
+        topsizer->Add(m_activity, wxSizerFlags().Expand().PXDoubleBorder(wxLEFT|wxRIGHT));
+        topsizer->AddSpacer(PX(5));
+
+        auto buttons = CreateButtonSizer(wxOK | wxCANCEL);
+        auto ok = static_cast<wxButton*>(FindWindow(wxID_OK));
+        ok->SetDefault();
+    #ifdef __WXOSX__
+        topsizer->Add(buttons, wxSizerFlags().Expand());
+    #else
+        topsizer->Add(buttons, wxSizerFlags().Expand().PXBorderAll());
+        topsizer->AddSpacer(PX(5));
+    #endif
+
+        SetSizerAndFit(topsizer);
+        CenterOnParent();
+
+        m_project->Bind(wxEVT_CHOICE, [=](wxCommandEvent&){ OnProjectSelected(); });
+        m_file->Bind(wxEVT_CHOICE, [=](wxCommandEvent&){ OnFileSelected(); });
+        ok->Bind(wxEVT_UPDATE_UI, &CrowdinOpenDialog::OnUpdateOK, this);
+        ok->Bind(wxEVT_BUTTON, &CrowdinOpenDialog::OnOK, this);
+
+        ok->Disable();
+        EnableAllChoices(false);
+
+        FetchProjects();
+    }
+
+    wxString OutLocalFilename;
+
+private:
+    void EnableAllChoices(bool enable = true)
+    {
+        m_project->Enable(enable);
+        m_file->Enable(enable);
+        m_language->Enable(enable);
+    }
+
+    void FetchProjects()
+    {
+        m_activity->Start();
+        CrowdinClient::Get().GetUserProjects(
+            on_main_thread(this, &CrowdinOpenDialog::OnFetchedProjects),
+            m_activity->HandleError
+        );
+    }
+
+    void OnFetchedProjects(const std::vector<CrowdinClient::ProjectListing>& prjs)
+    {
+        m_projects = prjs;
+        m_project->Append("");
+        for (auto& p: prjs)
+            m_project->Append(p.name);
+        m_project->Enable(!prjs.empty());
+
+        if (prjs.empty())
+            m_activity->StopWithError(_("No translation projects listed in your Crowdin account."));
+        else
+            m_activity->Stop();
+
+        if (prjs.size() == 1)
+        {
+            m_project->SetSelection(1);
+            OnProjectSelected();
+        }
+    }
+
+    void OnProjectSelected()
+    {
+        auto sel = m_project->GetSelection();
+        if (sel > 0)
+        {
+            m_activity->Start();
+            EnableAllChoices(false);
+            CrowdinClient::Get().GetProjectInfo(
+                m_projects[sel-1].identifier,
+                on_main_thread(this, &CrowdinOpenDialog::OnFetchedProjectInfo),
+                m_activity->HandleError
+            );
+        }
+    }
+
+    void OnFetchedProjectInfo(const CrowdinClient::ProjectInfo& prj)
+    {
+        m_info = prj;
+        // Put supported files first in the list:
+        std::vector<std::wstring> f_unsup;
+        m_info.files.clear();
+        m_supportedFilesCount = 0;
+        for (auto& i: prj.files)
+        {
+            if (IsFileSupported(i))
+            {
+                m_info.files.push_back(i);
+                m_supportedFilesCount++;
+            }
+            else
+            {
+                f_unsup.push_back(i);
+            }
+        }
+        std::move(f_unsup.begin(), f_unsup.end(), std::inserter(m_info.files, m_info.files.end()));
+
+        m_language->Clear();
+        m_language->Append("");
+        for (auto& i: m_info.languages)
+            m_language->Append(i.DisplayName());
+
+        m_file->Clear();
+        m_file->Append("");
+        for (auto& i: m_info.files)
+        {
+            if (IsFileSupported(i))
+            {
+                m_file->Append(i);
+            }
+            else
+            {
+                /// TRANSLATORS: This is a file selector list, %s is filename, and it is shown for Crowdin files not editable in Poedit
+                m_file->Append(wxString::Format(L"%s — not supported", i));
+            }
+        }
+
+        EnableAllChoices();
+        m_activity->Stop();
+
+        if (m_info.languages.size() == 1)
+            m_language->SetSelection(1);
+        if (m_supportedFilesCount == 1)
+            m_file->SetSelection(1);
+
+        if (m_supportedFilesCount == 0)
+        {
+            m_activity->StopWithError(_("This project has no files that can be translated in Poedit."));
+            m_file->Disable();
+            m_language->Disable();
+        }
+    }
+
+    void OnFileSelected()
+    {
+        auto filesel = m_file->GetSelection();
+        if (filesel - 1 < m_supportedFilesCount)
+            m_activity->Stop();
+        else
+            m_activity->StopWithError(_(L"This file can only be edited in Crowdin’s web interface."));
+    }
+
+    void OnUpdateOK(wxUpdateUIEvent& e)
+    {
+        auto filesel = m_file->GetSelection();
+        e.Enable(!m_activity->IsRunning() &&
+                 m_project->GetSelection() > 0 &&
+                 m_language->GetSelection() > 0 &&
+                 filesel > 0 && filesel - 1 < m_supportedFilesCount);
+    }
+
+    void OnOK(wxCommandEvent&)
+    {
+        auto crowdin_prj = m_info.identifier;
+        auto crowdin_file = m_info.files[m_file->GetSelection() - 1];
+        auto crowdin_lang = m_info.languages[m_language->GetSelection() - 1];
+        OutLocalFilename = CreateLocalFilename(crowdin_file, crowdin_lang);
+
+        m_activity->Start(_(L"Downloading latest translations…"));
+
+        auto outfile = std::make_shared<TempOutputFileFor>(OutLocalFilename);
+        CrowdinClient::Get().DownloadFile(
+            crowdin_prj, crowdin_file, crowdin_lang,
+            outfile->FileName().ToStdWstring(),
+            on_main_thread_for_window<>(this, [=]{
+                outfile->Commit();
+                AcceptAndClose();
+            }),
+            m_activity->HandleError
+        );
+    }
+
+    bool IsFileSupported(const wxString& name) const
+    {
+        return boost::ends_with(name, ".po") || boost::ends_with(name, ".pot");
+    }
+
+    wxString CreateLocalFilename(const wxString& name, const Language& lang)
+    {
+        wxString cache;
+    #if defined(__WXOSX__)
+        cache = wxGetHomeDir() + "/Library/Caches/net.poedit.Poedit";
+    #elif defined(__UNIX__)
+        if (!wxGetEnv("XDG_CACHE_HOME", &cache))
+            cache = wxGetHomeDir() + "/.cache";
+        cache += "/poedit";
+    #else
+        cache = wxStandardPaths::Get().GetUserDataDir() + wxFILE_SEP_PATH + "Cache";
+    #endif
+
+        cache += wxFILE_SEP_PATH;
+        cache += "Crowdin";
+
+        if (!wxFileName::DirExists(cache))
+            wxFileName::Mkdir(cache, wxS_DIR_DEFAULT, wxPATH_MKDIR_FULL);
+
+        auto basename = name.AfterLast('/').BeforeLast('.');
+
+        return wxString::Format("%s%c%s_%s_%s.po", cache, wxFILE_SEP_PATH, m_info.name, basename, lang.Code());
+    }
+
+private:
+    wxButton *m_ok;
+    wxChoice *m_project, *m_file, *m_language;
+    ActivityIndicator *m_activity;
+
+    std::vector<CrowdinClient::ProjectListing> m_projects;
+    CrowdinClient::ProjectInfo m_info;
+    int m_supportedFilesCount;
+};
+
+
+class SyncProgressDialog : public wxDialog
+{
+public:
+    SyncProgressDialog(wxWindow *parent)
+        : wxDialog(parent, wxID_ANY, _("Syncing with Crowdin"), wxDefaultPosition, wxDefaultSize, wxCAPTION | wxSYSTEM_MENU)
+    {
+        auto sizer = new wxBoxSizer(wxVERTICAL);
+        sizer->SetMinSize(PX(300), -1);
+        Activity = new ActivityIndicator(this);
+        sizer->AddStretchSpacer();
+        sizer->Add(Activity, wxSizerFlags().Expand().Border(wxALL, PX(25)));
+        sizer->AddStretchSpacer();
+        SetSizerAndFit(sizer);
+        CenterOnParent();
+    }
+
+    ActivityIndicator *Activity;
+};
+
+
+} // anonymous namespace
+
+
+void CrowdinOpenFile(wxWindow *parent, std::function<void(wxString)> onLoaded)
+{
+    if (!CrowdinClient::Get().IsSignedIn())
+    {
+        wxWindowPtr<CrowdinLoginDialog> login(new CrowdinLoginDialog(parent));
+        login->ShowWindowModalThenDo([login,parent,onLoaded](int retval){
+            if (retval == wxID_OK)
+                CrowdinOpenFile(parent, onLoaded);
+        });
+        return;
+    }
+
+    wxWindowPtr<CrowdinOpenDialog> dlg(new CrowdinOpenDialog(parent));
+
+    dlg->ShowWindowModalThenDo([dlg,onLoaded](int retval) {
+        dlg->Hide();
+        if (retval == wxID_OK)
+            onLoaded(dlg->OutLocalFilename);
+    });
+}
+
+
+void CrowdinSyncFile(wxWindow *parent, std::shared_ptr<Catalog> catalog,
+                     std::function<void(std::shared_ptr<Catalog>)> onDone)
+{
+    if (!CrowdinClient::Get().IsSignedIn())
+    {
+        wxWindowPtr<CrowdinLoginDialog> login(new CrowdinLoginDialog(parent));
+        login->ShowWindowModalThenDo([login,parent,catalog,onDone](int retval){
+            if (retval == wxID_OK)
+                CrowdinSyncFile(parent, catalog, onDone);
+        });
+        return;
+    }
+
+    const auto& header = catalog->Header();
+    auto crowdin_prj = header.GetHeader("X-Crowdin-Project");
+    auto crowdin_file = header.GetHeader("X-Crowdin-File");
+    auto crowdin_lang = header.HasHeader("X-Crowdin-Language")
+                        ? Language::TryParse(header.GetHeader("X-Crowdin-Language").ToStdWstring())
+                        : catalog->GetLanguage();
+
+    wxWindowPtr<SyncProgressDialog> dlg(new SyncProgressDialog(parent));
+
+    auto handle_error = on_main_thread<std::exception_ptr>([=](std::exception_ptr e){
+        dlg->EndModal(wxID_CANCEL);
+        wxWindowPtr<wxMessageDialog> err(new wxMessageDialog
+            (
+                parent,
+                _("Syncing with Crowdin failed."),
+                _("Crowdin error"),
+                wxOK | wxICON_ERROR
+            ));
+        err->SetExtendedMessage(DescribeException(e));
+        err->ShowWindowModalThenDo([err](int){});
+    });
+
+    dlg->Activity->Start(_(L"Uploading translations…"));
+
+    // TODO: nicer API for this.
+    // This must be done right after entering the modal loop (on non-OSX)
+    dlg->CallAfter([=]{
+        CrowdinClient::Get().UploadFile(
+            str::to_utf8(crowdin_prj), str::to_wstring(crowdin_file), crowdin_lang,
+            catalog->SaveToBuffer(),
+            [=]{
+                auto tmpdir = std::make_shared<TempDirectory>();
+                auto outfile = tmpdir->CreateFileName("crowdin.po");
+
+                call_on_main_thread([=]{
+                    dlg->Activity->Start(_(L"Downloading latest translations…"));
+                });
+
+                CrowdinClient::Get().DownloadFile(
+                    str::to_utf8(crowdin_prj), str::to_wstring(crowdin_file), crowdin_lang,
+                    outfile.ToStdWstring(),
+                    on_main_thread([=]{
+                        CatalogPtr newcat = std::make_shared<Catalog>(outfile);
+                        newcat->SetFileName(catalog->GetFileName());
+
+                        tmpdir->Clear();
+                        dlg->EndModal(wxID_OK);
+
+                        onDone(newcat);
+                    }),
+                    handle_error);
+            },
+            handle_error);
+    });
+
+    dlg->ShowWindowModal();
+}
diff --git a/src/crowdin_gui.h b/src/crowdin_gui.h
new file mode 100644
index 0000000..5d5c42b
--- /dev/null
+++ b/src/crowdin_gui.h
@@ -0,0 +1,109 @@
+/*
+ *  This file is part of Poedit (http://poedit.net)
+ *
+ *  Copyright (C) 2015 Vaclav Slavik
+ *
+ *  Permission is hereby granted, free of charge, to any person obtaining a
+ *  copy of this software and associated documentation files (the "Software"),
+ *  to deal in the Software without restriction, including without limitation
+ *  the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ *  and/or sell copies of the Software, and to permit persons to whom the
+ *  Software is furnished to do so, subject to the following conditions:
+ *
+ *  The above copyright notice and this permission notice shall be included in
+ *  all copies or substantial portions of the Software.
+ *
+ *  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ *  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ *  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ *  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ *  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *  FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ *  DEALINGS IN THE SOFTWARE.
+ *
+ */
+
+#ifndef Poedit_crowdin_gui_h
+#define Poedit_crowdin_gui_h
+
+#ifdef HAVE_HTTP_CLIENT
+
+#include "catalog.h"
+#include "customcontrols.h"
+
+#include <wx/panel.h>
+
+class WXDLLIMPEXP_FWD_CORE wxBoxSizer;
+class WXDLLIMPEXP_FWD_CORE wxButton;
+
+
+/**
+    Panel used to sign in into Crowdin.
+ */
+class CrowdinLoginPanel : public wxPanel
+{
+public:
+    enum Flags
+    {
+        DialogButtons = 1
+    };
+
+    CrowdinLoginPanel(wxWindow *parent, int flags = 0);
+
+    /// Call this when the window is first shown
+    void EnsureInitialized();
+
+protected:
+    enum class State
+    {
+        Uninitialized,
+        Authenticating,
+        SignedIn,
+        SignedOut,
+        UpdatingInfo
+    };
+
+    void ChangeState(State state);
+    void CreateLoginInfoControls(State state);
+    void UpdateUserInfo();
+
+    void OnSignIn(wxCommandEvent&);
+    void OnSignOut(wxCommandEvent&);
+    virtual void OnUserSignedIn();
+
+    State m_state;
+    wxBoxSizer *m_loginInfo;
+    wxButton *m_signIn, *m_signOut;
+    wxString m_userName, m_userLogin;
+};
+
+
+/// Link to learn about Crowdin
+class LearnAboutCrowdinLink : public LearnMoreLink
+{
+public:
+    LearnAboutCrowdinLink(wxWindow *parent, const wxString& text = "");
+};
+
+
+/**
+    Let the user choose a Crowdin file, download it and open in Poedit.
+    
+    @param parent    PoeditFrame the UI should be shown under.
+    @param onLoaded  Called with the name of loaded PO file.
+ */
+void CrowdinOpenFile(wxWindow *parent, std::function<void(wxString)> onLoaded);
+
+/**
+    Synces the catalog with Crowdin, uploading and downloading translations.
+
+    @param parent    PoeditFrame the UI should be shown under.
+    @param catalog   Catalog to sync.
+    @param onDone    Called with the (new) updated catalog instance.
+ */
+void CrowdinSyncFile(wxWindow *parent, std::shared_ptr<Catalog> catalog,
+                     std::function<void(std::shared_ptr<Catalog>)> onDone);
+
+#endif // HAVE_HTTP_CLIENT
+
+#endif // Poedit_crowdin_gui_h
diff --git a/src/customcontrols.cpp b/src/customcontrols.cpp
index 06cd9b3..aacb1c7 100644
--- a/src/customcontrols.cpp
+++ b/src/customcontrols.cpp
@@ -25,19 +25,31 @@
 
 #include "customcontrols.h"
 
+#include "concurrency.h"
+#include "errors.h"
 #include "hidpi.h"
-#include "icuhelpers.h"
 
+#include <wx/app.h>
 #include <wx/clipbrd.h>
 #include <wx/menu.h>
 #include <wx/settings.h>
+#include <wx/sizer.h>
+#include <wx/weakref.h>
 #include <wx/wupdlock.h>
 
+#if wxCHECK_VERSION(3,1,0)
+    #include <wx/activityindicator.h>
+#else
+    #include "wx_backports/activityindicator.h"
+#endif
+
 #include <unicode/brkiter.h>
 #ifdef __WXGTK__
 #include <gtk/gtk.h>
 #endif
 
+#include "str_helpers.h"
+
 #include <memory>
 
 namespace
@@ -47,7 +59,7 @@ wxString WrapTextAtWidth(const wxString& text_, int width, wxWindow *wnd)
 {
     if (text_.empty())
         return text_;
-    auto text = ToIcuStr(text_);
+    auto text = str::to_icu(text_);
 
     static std::unique_ptr<icu::BreakIterator> iter;
     if (!iter)
@@ -66,7 +78,7 @@ wxString WrapTextAtWidth(const wxString& text_, int width, wxWindow *wnd)
 
     for (int32_t pos = iter->next(); pos != icu::BreakIterator::DONE; pos = iter->next())
     {
-        auto substr = FromIcuStr(text.tempSubStringBetween(lineStart, pos));
+        auto substr = str::to_wx(text.tempSubStringBetween(lineStart, pos));
 
         if (wnd->GetTextExtent(substr).x > width)
         {
@@ -192,7 +204,6 @@ ExplanationLabel::ExplanationLabel(wxWindow *parent, const wxString& label)
 #if defined(__WXOSX__) || defined(__WXGTK__)
     SetWindowVariant(wxWINDOW_VARIANT_SMALL);
 #endif
-
 #ifndef __WXGTK__
     SetForegroundColour(GetTextColor());
 #endif
@@ -209,6 +220,17 @@ wxColour ExplanationLabel::GetTextColor()
 #endif
 }
 
+SecondaryLabel::SecondaryLabel(wxWindow *parent, const wxString& label)
+    : wxStaticText(parent, wxID_ANY, label)
+{
+#if defined(__WXOSX__) || defined(__WXGTK__)
+    SetWindowVariant(wxWINDOW_VARIANT_SMALL);
+#endif
+#ifndef __WXGTK__
+    SetForegroundColour(GetTextColor());
+#endif
+}
+
 
 LearnMoreLink::LearnMoreLink(wxWindow *parent, const wxString& url, wxString label)
 {
@@ -244,3 +266,67 @@ bool LearnMoreLinkXmlHandler::CanHandle(wxXmlNode *node)
 {
     return IsOfClass(node, "LearnMoreLink");
 }
+
+
+ActivityIndicator::ActivityIndicator(wxWindow *parent)
+    : wxWindow(parent, wxID_ANY), m_running(false)
+{
+    auto sizer = new wxBoxSizer(wxHORIZONTAL);
+    SetSizer(sizer);
+
+    m_spinner = new wxActivityIndicator(this, wxID_ANY);
+    m_spinner->SetWindowVariant(wxWINDOW_VARIANT_SMALL);
+    m_label = new wxStaticText(this, wxID_ANY, "");
+#ifdef __WXOSX__
+    m_label->SetWindowVariant(wxWINDOW_VARIANT_SMALL);
+#endif
+
+    sizer->Add(m_spinner, wxSizerFlags().Center().Border(wxRIGHT, PX(4)));
+    sizer->Add(m_label, wxSizerFlags(1).Center());
+
+    HandleError = on_main_thread_for_window<std::exception_ptr>(this, [=](std::exception_ptr e){
+        StopWithError(DescribeException(e));
+    });
+}
+
+void ActivityIndicator::Start(const wxString& msg)
+{
+    m_running = true;
+
+    m_label->SetForegroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOWTEXT));
+    m_label->SetLabel(msg);
+
+    auto sizer = GetSizer();
+    sizer->Show(m_spinner);
+    sizer->Show(m_label, !msg.empty());
+    Layout();
+
+    m_spinner->Start();
+}
+
+void ActivityIndicator::Stop()
+{
+    m_running = false;
+
+    m_spinner->Stop();
+    m_label->SetLabel("");
+
+    auto sizer = GetSizer();
+    sizer->Hide(m_spinner);
+    sizer->Hide(m_label);
+    Layout();
+}
+
+void ActivityIndicator::StopWithError(const wxString& msg)
+{
+    m_running = false;
+
+    m_spinner->Stop();
+    m_label->SetForegroundColour(*wxRED);
+    m_label->SetLabel(msg);
+
+    auto sizer = GetSizer();
+    sizer->Hide(m_spinner);
+    sizer->Show(m_label);
+    Layout();
+}
diff --git a/src/customcontrols.h b/src/customcontrols.h
index 27c5f7f..b10892b 100644
--- a/src/customcontrols.h
+++ b/src/customcontrols.h
@@ -30,6 +30,11 @@
 #include <wx/hyperlink.h>
 #include <wx/xrc/xmlres.h>
 
+class WXDLLIMPEXP_ADV wxActivityIndicator;
+
+#include <exception>
+#include <functional>
+
 
 // Label marking a subsection of a dialog:
 class HeadingLabel : public wxStaticText
@@ -68,10 +73,12 @@ public:
 };
 
 
-// Longer, often multiline, explanation label used to provide more information
-// about the effects of some less obvious settings. Typeset using smaller font
-// on OS X and grey appearence. Auto-wraps itself to fit surrounding control's
-// width.
+/** 
+    Longer, often multiline, explanation label used to provide more information
+    about the effects of some less obvious settings. Typeset using smaller font
+    on OS X and grey appearence. Auto-wraps itself to fit surrounding control's
+    width.
+ */
 class ExplanationLabel : public AutoWrappingText
 {
 public:
@@ -88,8 +95,17 @@ public:
     static wxColour GetTextColor();
 };
 
+/// Like ExplanationLabel, but nonwrapping
+class SecondaryLabel : public wxStaticText
+{
+public:
+    SecondaryLabel(wxWindow *parent, const wxString& label);
 
-// "Learn more" hyperlink for dialogs.
+    static wxColour GetTextColor() { return ExplanationLabel::GetTextColor(); }
+};
+
+
+/// "Learn more" hyperlink for dialogs.
 class LearnMoreLink : public wxHyperlinkCtrl
 {
 public:
@@ -102,7 +118,6 @@ public:
 #endif
 };
 
-
 class LearnMoreLinkXmlHandler : public wxXmlResourceHandler
 {
 public:
@@ -111,4 +126,34 @@ public:
     bool CanHandle(wxXmlNode *node) override;
 };
 
+
+/// Indicator of background activity, using spinners where appropriate.
+class ActivityIndicator : public wxWindow
+{
+public:
+    ActivityIndicator(wxWindow *parent);
+
+    /// Start indicating, with optional progress label.
+    void Start(const wxString& msg = "");
+
+    /// Stop the indicator.
+    void Stop();
+
+    /// Stop the indicator and report error in its place.
+    void StopWithError(const wxString& msg);
+
+    /// Is between Start() and Stop() calls?
+    bool IsRunning() const { return m_running; }
+
+    /// Convenience function for showing error message in the indicator
+    std::function<void(std::exception_ptr)> HandleError;
+
+    bool HasTransparentBackground() override { return true;  }
+
+private:
+    bool m_running;
+    wxActivityIndicator *m_spinner;
+    wxStaticText *m_label, *m_error;
+};
+
 #endif // Poedit_customcontrols_h
diff --git a/src/digger.cpp b/src/digger.cpp
index 895fa40..57562ce 100644
--- a/src/digger.cpp
+++ b/src/digger.cpp
@@ -77,11 +77,11 @@ bool ConcatCatalogs(const wxArrayString& files, TempDirectory& tmpdir, wxString
 
 } // anonymous namespace
 
-Catalog *SourceDigger::Dig(const wxArrayString& paths,
-                           const wxArrayString& excludePaths,
-                           const wxArrayString& keywords,
-                           const wxString& charset,
-                           UpdateResultReason& reason)
+CatalogPtr SourceDigger::Dig(const wxArrayString& paths,
+                             const wxArrayString& excludePaths,
+                             const wxArrayString& keywords,
+                             const wxString& charset,
+                             UpdateResultReason& reason)
 {
     ExtractorsDB db;
     db.Read(wxConfig::Get());
@@ -89,10 +89,10 @@ Catalog *SourceDigger::Dig(const wxArrayString& paths,
     m_progressInfo->UpdateMessage(_("Scanning files..."));
 
     wxArrayString *all_files = FindFiles(paths, PathsToMatch(excludePaths), db);
-    if (all_files == NULL)
+    if (all_files == nullptr)
     {
         reason = UpdateResultReason::NoSourcesFound;
-        return NULL;
+        return nullptr;
     }
 
     TempDirectory tmpdir;
@@ -109,7 +109,7 @@ Catalog *SourceDigger::Dig(const wxArrayString& paths,
         if (!DigFiles(tmpdir, partials, all_files[i], db.Data[i], keywords, charset))
         {
             delete[] all_files;
-            return NULL;
+            return nullptr;
         }
     }
 
@@ -117,15 +117,14 @@ Catalog *SourceDigger::Dig(const wxArrayString& paths,
 
     wxString mergedFile;
     if ( !ConcatCatalogs(partials, tmpdir, &mergedFile) )
-        return NULL; // couldn't parse any source files
+        return nullptr; // couldn't parse any source files
 
-    Catalog *c = new Catalog(mergedFile, Catalog::CreationFlag_IgnoreHeader);
+    CatalogPtr c = std::make_shared<Catalog>(mergedFile, Catalog::CreationFlag_IgnoreHeader);
 
     if ( !c->IsOk() )
     {
         wxLogError(_("Failed to load extracted catalog."));
-        delete c;
-        return NULL;
+        return nullptr;
     }
 
     return c;
diff --git a/src/digger.h b/src/digger.h
index d671e94..8dc8648 100644
--- a/src/digger.h
+++ b/src/digger.h
@@ -31,7 +31,6 @@
 
 #include "catalog.h"
 
-class Catalog;
 class wxArrayString;
 class ExtractorsDB;
 class Extractor;
@@ -60,11 +59,11 @@ class SourceDigger
                             prefixes for translatable strings in sources
             \param charset  source code charset (may be empty)
          */
-        Catalog *Dig(const wxArrayString& paths,
-                     const wxArrayString& excludePaths,
-                     const wxArrayString& keywords,
-                     const wxString& charset,
-                     UpdateResultReason& reason);
+        CatalogPtr Dig(const wxArrayString& paths,
+                       const wxArrayString& excludePaths,
+                       const wxArrayString& keywords,
+                       const wxString& charset,
+                       UpdateResultReason& reason);
 
     private:
         // Path matching with support for wildcards
diff --git a/src/edapp.cpp b/src/edapp.cpp
index 422ff04..ff7ca67 100644
--- a/src/edapp.cpp
+++ b/src/edapp.cpp
@@ -34,12 +34,14 @@
 #include <wx/stdpaths.h>
 #include <wx/filename.h>
 #include <wx/filedlg.h>
+#include <wx/snglinst.h>
 #include <wx/sysopt.h>
 #include <wx/stdpaths.h>
 #include <wx/aboutdlg.h>
 #include <wx/artprov.h>
 #include <wx/datetime.h>
 #include <wx/intl.h>
+#include <wx/ipc.h>
 #include <wx/translation.h>
 
 #ifdef __WXOSX__
@@ -62,6 +64,7 @@
 
 #include "edapp.h"
 #include "edframe.h"
+#include "concurrency.h"
 #include "manager.h"
 #include "prefsdlg.h"
 #include "extractor.h"
@@ -70,11 +73,13 @@
 #include "hidpi.h"
 #include "icons.h"
 #include "version.h"
+#include "str_helpers.h"
 #include "tm/transmem.h"
 #include "utility.h"
 #include "prefsdlg.h"
 #include "errors.h"
 #include "language.h"
+#include "crowdin_client.h"
 
 #ifdef __WXOSX__
 struct PoeditApp::RecentMenuData
@@ -85,7 +90,164 @@ struct PoeditApp::RecentMenuData
 };
 #endif
 
+#ifndef DONT_MIGRATE_LEGACY_TM
 extern bool MigrateLegacyTranslationMemory();
+#endif
+
+
+#ifndef __WXOSX__
+
+// IPC for ensuring that only one instance of Poedit runs at a time. This is
+// handled native on OS X and GtkApplication could do it under GTK+3, but wx
+// doesn't support that and we have to implement everything manually for both
+// Windows and GTK+ ports.
+
+namespace
+{
+
+#ifdef __UNIX__
+wxString GetRuntimeDir()
+{
+    wxString dir;
+    if (!wxGetEnv("XDG_RUNTIME_DIR", &dir))
+        dir = wxGetHomeDir();
+    if (dir.Last() != '/')
+        dir += '/';
+    return dir;
+}
+wxString RemoteService() { return GetRuntimeDir() + "poedit.ipc"; }
+#else
+wxString RemoteService() { return "Poedit"; }
+#endif
+
+const char *IPC_TOPIC = "cmdline";
+
+} // anonymous namespace
+
+class PoeditApp::RemoteServer
+{
+public:
+    RemoteServer(PoeditApp *app) : m_server(app)
+    {
+        m_server.Create(RemoteService());
+    }
+
+private:
+    class Connection : public wxConnection
+    {
+    public:
+        Connection(PoeditApp *app) : m_app(app) {}
+
+        bool OnExec(const wxString& topic, const wxString& data) override
+        {
+            if (topic != IPC_TOPIC)
+                return false;
+            wxString payload;
+            if (data == "Activate")
+            {
+                m_app->OpenNewFile();
+                return true;
+            }
+            if (data.StartsWith("OpenURI:", &payload))
+            {
+                m_app->HandleCustomURI(payload);
+                return true;
+            }
+            if (data.StartsWith("OpenFile:", &payload))
+            {
+                wxArrayString a;
+                a.push_back(payload);
+                m_app->OpenFiles(a);
+                return true;
+            }
+            return false;
+        }
+
+    private:
+        PoeditApp *m_app;
+    };
+
+    class Server : public wxServer
+    {
+    public:
+        Server(PoeditApp *app) : m_app(app) {}
+
+        wxConnectionBase *OnAcceptConnection(const wxString& topic) override
+        {
+            if (topic != IPC_TOPIC)
+                return nullptr;
+            return new Connection(m_app);
+        }
+
+    private:
+        PoeditApp *m_app;
+    };
+
+    Server m_server;
+};
+
+class PoeditApp::RemoteClient
+{
+public:
+    RemoteClient(wxSingleInstanceChecker *instCheck) : m_instCheck(instCheck), m_client()
+    {
+    }
+
+    enum ConnectionStatus
+    {
+        NoOtherInstance,
+        Connected,
+        Failure
+    };
+
+    ConnectionStatus ConnectIfNeeded()
+    {
+        // Try several times in case of a race condition where one instance
+        // is exiting and not communicating, while another one is just starting.
+        for (int attempt = 0; attempt < 3; attempt++)
+        {
+            if (!m_instCheck->IsAnotherRunning())
+                return NoOtherInstance;
+
+            m_conn.reset(m_client.MakeConnection("localhost", RemoteService(), IPC_TOPIC));
+            if (m_conn)
+                return Connected;
+
+            // else: Something went wrong, no connection despite other instance existing.
+            //       Try again in a little while.
+            wxMilliSleep(100);
+        }
+
+        return Failure;
+    }
+
+    void Activate()
+    {
+        Command("Activate");
+    }
+
+    void HandleCustomURI(const wxString& uri)
+    {
+        Command("OpenURI:" + uri);
+    }
+
+    void OpenFile(const wxString& filename)
+    {
+        wxFileName fn(filename);
+        fn.MakeAbsolute();
+        Command("OpenFile:" + fn.GetFullPath());
+    }
+
+private:
+    void Command(const wxString cmd) { m_conn->Execute(cmd); }
+
+    wxSingleInstanceChecker *m_instCheck;
+    wxClient m_client;
+    std::unique_ptr<wxConnectionBase> m_conn;
+};
+
+#endif // __WXOSX__
+
 
 IMPLEMENT_APP(PoeditApp);
 
@@ -105,6 +267,32 @@ wxString PoeditApp::GetAppVersion() const
     return wxString::FromAscii(POEDIT_VERSION);
 }
 
+wxString PoeditApp::GetAppBuildNumber() const
+{
+#if defined(__WXOSX__)
+    NSDictionary *infoDict = [[NSBundle mainBundle] infoDictionary];
+    NSString *ver = [infoDict objectForKey:@"CFBundleVersion"];
+    return str::to_wx(ver);
+#elif defined(__WXMSW__)
+    auto exe = wxStandardPaths::Get().GetExecutablePath();
+    DWORD unusedHandle;
+    DWORD fiSize = GetFileVersionInfoSize(exe.wx_str(), &unusedHandle);
+    if (fiSize == 0)
+        return "";
+    wxCharBuffer fi(fiSize);
+    if (!GetFileVersionInfo(exe.wx_str(), unusedHandle, fiSize, fi.data()))
+        return "";
+    void *ver;
+    UINT sizeInfo;
+    if (!VerQueryValue(fi.data(), L"\\", &ver, &sizeInfo))
+        return "";
+    VS_FIXEDFILEINFO *info = (VS_FIXEDFILEINFO*)ver;
+    return wxString::Format("%d", LOWORD(info->dwFileVersionLS));
+#else
+    return "";
+#endif
+}
+
 bool PoeditApp::IsBetaVersion() const
 {
     wxString v = GetAppVersion();
@@ -124,9 +312,26 @@ extern void InitXmlResource();
 
 bool PoeditApp::OnInit()
 {
+    SetVendorName("Vaclav Slavik");
+    SetAppName("Poedit");
+
+#ifndef __WXOSX__
+    // create early for use in cmd line parsing
+    m_instanceChecker.reset(new wxSingleInstanceChecker);
+  #ifdef __UNIX__
+    m_instanceChecker->Create("poedit.lock", GetRuntimeDir());
+  #else
+    m_instanceChecker->CreateDefault();
+  #endif
+#endif
+
     if (!wxApp::OnInit())
         return false;
 
+#ifndef __WXOSX__
+    m_remoteServer.reset(new RemoteServer(this));
+#endif
+
     InitHiDPIHandling();
 
 #ifdef __WXOSX__
@@ -179,9 +384,6 @@ bool PoeditApp::OnInit()
     }
 #endif // __UNIX__
 
-    SetVendorName("Vaclav Slavik");
-    SetAppName("Poedit");
-
 #if defined(__WXOSX__)
     #define CFG_FILE (wxStandardPaths::Get().GetUserConfigDir() + "/net.poedit.Poedit.cfg")
 #elif defined(__UNIX__)
@@ -245,9 +447,11 @@ bool PoeditApp::OnInit()
     FileHistory().Load(*wxConfig::Get());
 #endif
 
+#ifndef DONT_MIGRATE_LEGACY_TM
     // NB: It's important to do this before TM is used for the first time.
     if ( !MigrateLegacyTranslationMemory() )
         return false;
+#endif
 
 #ifdef __WXMSW__
     AssociateFileTypeIfNeeded();
@@ -286,6 +490,9 @@ bool PoeditApp::OnInit()
     win_sparkle_set_appcast_url(appcast.utf8_str());
     win_sparkle_set_can_shutdown_callback(&PoeditApp::WinSparkle_CanShutdown);
     win_sparkle_set_shutdown_request_callback(&PoeditApp::WinSparkle_Shutdown);
+    auto buildnum = GetAppBuildNumber();
+    if (!buildnum.empty())
+        win_sparkle_set_app_build_version(buildnum.wc_str());
     win_sparkle_init();
 #endif
 
@@ -303,12 +510,23 @@ bool PoeditApp::OnInit()
 
 int PoeditApp::OnExit()
 {
+#ifndef __WXOSX__
+    m_instanceChecker.reset();
+    m_remoteServer.reset();
+#endif
+
     // Make sure PoeditFrame instances schedules for deletion are deleted
     // early -- e.g. before wxConfig is destroyed, so they can save changes
     DeletePendingObjects();
 
     TranslationMemory::CleanUp();
 
+#ifdef HAVE_HTTP_CLIENT
+    CrowdinClient::CleanUp();
+#endif
+
+    concurrency_queue::cleanup();
+
 #ifdef USE_SPARKLE
     Sparkle_Cleanup();
 #endif // USE_SPARKLE
@@ -335,17 +553,38 @@ void PoeditApp::SetupLanguage()
     wxTranslations *trans = new wxTranslations();
     wxTranslations::Set(trans);
 
-#ifdef __WXGTK__
+    int language = wxLANGUAGE_DEFAULT;
+
+#if NEED_CHOOSELANG_UI
+    auto uilang = GetUILanguage();
+    if (!uilang.empty())
+    {
+        auto langinfo = wxLocale::FindLanguageInfo(uilang);
+        if (langinfo)
+        {
+            language = langinfo->Language;
+            uilang.clear(); // will go through locale
+        }
+    }
+#endif
+
     // Properly set locale is important for some aspects of GTK+ as well as
     // other things. It's also the common thing to do, so don't break
     // expectations needlessly:
-    m_locale.reset(new wxLocale());
-    m_locale->Init(wxLANGUAGE_DEFAULT, wxLOCALE_DONT_LOAD_DEFAULT);
-#endif
+    {
+        // supress error logging because setting locale may fail and we want to
+        // handle that gracefully and invisibly:
+        wxLogNull null;
+        m_locale.reset(new wxLocale());
+        if (!m_locale->Init(language, wxLOCALE_DONT_LOAD_DEFAULT))
+            m_locale.reset();
 
 #if NEED_CHOOSELANG_UI
-    trans->SetLanguage(GetUILanguage());
+        if (!uilang.empty())
+            trans->SetLanguage(uilang);
 #endif
+    }
+
     trans->AddStdCatalog();
     trans->AddCatalog("poedit");
 
@@ -366,7 +605,11 @@ wxLayoutDirection PoeditApp::GetLayoutDirection() const
 
 void PoeditApp::OpenNewFile()
 {
-    PoeditFrame::CreateWelcome();
+    PoeditFrame *unused = PoeditFrame::UnusedWindow(/*active=*/false);
+    if (unused)
+        unused->Raise();
+    else
+        PoeditFrame::CreateWelcome();
 }
 
 void PoeditApp::OpenFiles(const wxArrayString& names)
@@ -539,6 +782,7 @@ void PoeditApp::SetDefaultCfg(wxConfigBase *cfg)
 namespace
 {
 const char *CL_KEEP_TEMP_FILES = "keep-temp-files";
+const char *CL_HANDLE_POEDIT_URI = "handle-poedit-uri";
 }
 
 void PoeditApp::OnInitCmdLine(wxCmdLineParser& parser)
@@ -547,8 +791,9 @@ void PoeditApp::OnInitCmdLine(wxCmdLineParser& parser)
 
     parser.AddSwitch("", CL_KEEP_TEMP_FILES,
                      _("don't delete temporary files (for debugging)"));
-
-    parser.AddParam("catalog.po", wxCMD_LINE_VAL_STRING, 
+    parser.AddLongOption(CL_HANDLE_POEDIT_URI,
+                     _("handle a poedit:// URI"), wxCMD_LINE_VAL_STRING);
+    parser.AddParam("catalog.po", wxCMD_LINE_VAL_STRING,
                     wxCMD_LINE_PARAM_OPTIONAL | wxCMD_LINE_PARAM_MULTIPLE);
 }
 
@@ -560,6 +805,48 @@ bool PoeditApp::OnCmdLineParsed(wxCmdLineParser& parser)
     if ( parser.Found(CL_KEEP_TEMP_FILES) )
         TempDirectory::KeepFiles();
 
+#ifndef __WXOSX__
+    RemoteClient client(m_instanceChecker.get());
+    switch (client.ConnectIfNeeded())
+    {
+        case RemoteClient::Failure:
+        {
+            wxLogError(_("Failed to communicate with Poedit process."));
+            wxLog::FlushActive();
+            return false; // terminate program
+        }
+
+        case RemoteClient::Connected:
+        {
+            wxString poeditURI;
+            if (parser.Found(CL_HANDLE_POEDIT_URI, &poeditURI))
+                client.HandleCustomURI(poeditURI);
+
+            if (parser.GetParamCount() == 0)
+            {
+                client.Activate();
+            }
+            else
+            {
+                for (size_t i = 0; i < parser.GetParamCount(); i++)
+                    client.OpenFile(parser.GetParam(i));
+            }
+            return false; // terminate program
+        }
+
+        case RemoteClient::NoOtherInstance:
+            // fall through and handle normally
+            break;
+    }
+#endif
+
+    wxString poeditURI;
+    if (parser.Found(CL_HANDLE_POEDIT_URI, &poeditURI))
+    {
+        // handling the URI shows UI, so do it after OnInit() initialization:
+        CallAfter([=]{ HandleCustomURI(poeditURI); });
+    }
+
     for (size_t i = 0; i < parser.GetParamCount(); i++)
         gs_filesToOpen.Add(parser.GetParam(i));
 
@@ -567,6 +854,22 @@ bool PoeditApp::OnCmdLineParsed(wxCmdLineParser& parser)
 }
 
 
+void PoeditApp::HandleCustomURI(const wxString& uri)
+{
+    if (!uri.StartsWith("poedit://"))
+        return;
+
+#ifdef HAVE_HTTP_CLIENT
+    // nothing to do yet
+    if (CrowdinClient::Get().IsOAuthCallback(uri.ToStdString()))
+    {
+        CrowdinClient::Get().HandleOAuthCallback(uri.ToStdString());
+        return;
+    }
+#endif
+}
+
+
 // ---------------------------------------------------------------------------
 // exceptions handling
 // ---------------------------------------------------------------------------
@@ -584,7 +887,7 @@ bool PoeditApp::OnExceptionInMainLoop()
 #ifdef __WXOSX__
     catch ( NSException *e )
     {
-        wxLogError(_("Unhandled exception occurred: %s"), wxStringFromNS([e reason]));
+        wxLogError(_("Unhandled exception occurred: %s"), str::to_wx([e reason]));
     }
 #endif
     catch ( ... )
@@ -606,6 +909,9 @@ BEGIN_EVENT_TABLE(PoeditApp, wxApp)
    EVT_MENU           (wxID_NEW,                  PoeditApp::OnNew)
    EVT_MENU           (XRCID("menu_new_from_pot"),PoeditApp::OnNew)
    EVT_MENU           (wxID_OPEN,                 PoeditApp::OnOpen)
+ #ifdef HAVE_HTTP_CLIENT
+   EVT_MENU           (XRCID("menu_open_crowdin"),PoeditApp::OnOpenFromCrowdin)
+ #endif
  #ifndef __WXOSX__
    EVT_MENU_RANGE     (wxID_FILE1, wxID_FILE9,    PoeditApp::OnOpenHist)
  #endif
@@ -657,11 +963,10 @@ void PoeditApp::OnOpen(wxCommandEvent&)
     wxString path = wxConfig::Get()->Read("last_file_path", wxEmptyString);
 
     wxFileDialog dlg(nullptr,
-                     _("Open catalog"),
+                     OSX_OR_OTHER("", _("Open catalog")),
                      path,
                      wxEmptyString,
-                     wxString::Format("%s (*.po)|*.po|%s (*.*)|*.*",
-                         _("PO Translation Files"), _("All Files")),
+                     Catalog::GetAllTypesFileMask(),
                      wxFD_OPEN | wxFD_FILE_MUST_EXIST | wxFD_MULTIPLE);
 
     if (dlg.ShowModal() == wxID_OK)
@@ -681,6 +986,17 @@ void PoeditApp::OnOpen(wxCommandEvent&)
 }
 
 
+#ifdef HAVE_HTTP_CLIENT
+void PoeditApp::OnOpenFromCrowdin(wxCommandEvent& event)
+{
+    TRY_FORWARD_TO_ACTIVE_WINDOW( OnOpenFromCrowdin(event) );
+
+    PoeditFrame *f = PoeditFrame::CreateEmpty();
+    f->OnOpenFromCrowdin(event);
+}
+#endif
+
+
 #ifndef __WXOSX__
 void PoeditApp::OnOpenHist(wxCommandEvent& event)
 {
@@ -798,7 +1114,7 @@ void PoeditApp::OpenPoeditWeb(const wxString& path)
 
 static NSMenuItem *AddNativeItem(NSMenu *menu, int pos, const wxString&text, SEL ac, NSString *key)
 {
-    NSString *str = wxStringToNS(text);
+    NSString *str = str::to_NS(text);
     if (pos == -1)
         return [menu addItemWithTitle:str action:ac keyEquivalent:key];
     else
@@ -950,7 +1266,7 @@ void PoeditApp::InstallOpenRecentMenu(wxMenuBar *bar)
         return;
 
     NSMenu *native = fileMenu->GetHMenu();
-    NSMenuItem *nativeItem = [native itemWithTitle:wxStringToNS(item->GetItemLabelText())];
+    NSMenuItem *nativeItem = [native itemWithTitle:str::to_NS(item->GetItemLabelText())];
     if (!nativeItem)
         return;
 
diff --git a/src/edapp.h b/src/edapp.h
index 31d299d..2096175 100644
--- a/src/edapp.h
+++ b/src/edapp.h
@@ -35,6 +35,7 @@
 #include "prefsdlg.h"
 
 class WXDLLIMPEXP_FWD_BASE wxConfigBase;
+class WXDLLIMPEXP_FWD_BASE wxSingleInstanceChecker;
 class WXDLLIMPEXP_FWD_CORE wxMenuBar;
 
 
@@ -55,6 +56,7 @@ class PoeditApp : public wxApp
 
         /// Returns Poedit version string.
         wxString GetAppVersion() const;
+        wxString GetAppBuildNumber() const;
         bool IsBetaVersion() const;
         bool CheckForBetaUpdates() const;
 
@@ -70,6 +72,7 @@ class PoeditApp : public wxApp
 #ifdef __WXOSX__
         virtual void MacOpenFiles(const wxArrayString& names) { OpenFiles(names); }
         virtual void MacNewFile() { OpenNewFile(); }
+        virtual void MacOpenURL(const wxString &url) { HandleCustomURI(url); }
 #endif
 
         void EditPreferences();
@@ -102,11 +105,14 @@ class PoeditApp : public wxApp
         bool OnCmdLineParsed(wxCmdLineParser& parser);
         
     private:
+        void HandleCustomURI(const wxString& uri);
+
         void SetupLanguage();
 
         // App-global menu commands:
         void OnNew(wxCommandEvent& event);
         void OnOpen(wxCommandEvent& event);
+        void OnOpenFromCrowdin(wxCommandEvent& event);
 #ifndef __WXOSX__
         void OnOpenHist(wxCommandEvent& event);
 #endif
@@ -136,6 +142,13 @@ class PoeditApp : public wxApp
         std::unique_ptr<PoeditPreferencesEditor> m_preferences;
 
         std::unique_ptr<wxLocale> m_locale;
+
+#ifndef __WXOSX__
+        class RemoteServer;
+        class RemoteClient;
+        std::unique_ptr<RemoteServer> m_remoteServer;
+        std::unique_ptr<wxSingleInstanceChecker> m_instanceChecker;
+#endif
 };
 
 DECLARE_APP(PoeditApp);
diff --git a/src/edframe.cpp b/src/edframe.cpp
index d3d8950..c4b8ccb 100644
--- a/src/edframe.cpp
+++ b/src/edframe.cpp
@@ -31,7 +31,7 @@
 #include <wx/html/htmlwin.h>
 #include <wx/statline.h>
 #include <wx/sizer.h>
-#include <wx/fs_mem.h>
+#include <wx/filedlg.h>
 #include <wx/datetime.h>
 #include <wx/tokenzr.h>
 #include <wx/xrc/xmlres.h>
@@ -52,12 +52,14 @@
 #include "osx_helpers.h"
 #endif
 
-#include <map>
 #include <algorithm>
-#include <future>
+#include <map>
+#include <fstream>
 #include <boost/range/counting_range.hpp>
 
 #include "catalog.h"
+#include "concurrency.h"
+#include "crowdin_gui.h"
 #include "customcontrols.h"
 #include "edapp.h"
 #include "hidpi.h"
@@ -80,6 +82,7 @@
 #include "errors.h"
 #include "sidebar.h"
 #include "spellchecking.h"
+#include "str_helpers.h"
 #include "syntaxhighlighter.h"
 #include "text_control.h"
 
@@ -104,16 +107,6 @@ const wxWindowID ID_TEXTORIGPLURAL = wxNewId();
 const wxWindowID ID_TEXTTRANS = wxNewId();
 
 
-/// Flags for UpdateToTextCtrl()
-enum UpdateToTextCtrlFlags
-{
-    /// Change to textctrl should be undoable by the user
-    UndoableEdit = 0x01,
-    /// Change is due to item change, discard undo buffer
-    ItemChanged = 0x02
-};
-
-
 #ifdef __VISUALC__
 // Disabling the useless and annoying MSVC++'s
 // warning C4800: 'long' : forcing value to bool 'true' or 'false'
@@ -129,25 +122,22 @@ bool g_focusToText = false;
 {
     wxFileName fn(filename);
 
-    for (PoeditFramesList::const_iterator n = ms_instances.begin();
-         n != ms_instances.end(); ++n)
+    for (auto n: ms_instances)
     {
-        if (wxFileName((*n)->m_fileName) == fn)
-            return *n;
+        if (wxFileName(n->GetFileName()) == fn)
+            return n;
     }
     return NULL;
 }
 
-/*static*/ PoeditFrame *PoeditFrame::UnusedActiveWindow()
+/*static*/ PoeditFrame *PoeditFrame::UnusedWindow(bool active)
 {
-    for (PoeditFramesList::const_iterator n = ms_instances.begin();
-         n != ms_instances.end(); ++n)
+    for (auto win: ms_instances)
     {
-        PoeditFrame *win = *n;
-        if (win->IsActive() && win->m_catalog == NULL)
+        if ((!active || win->IsActive()) && win->m_catalog == nullptr)
             return win;
     }
-    return NULL;
+    return nullptr;
 }
 
 /*static*/ bool PoeditFrame::AnyWindowIsModified()
@@ -171,7 +161,7 @@ bool g_focusToText = false;
     else
     {
         // NB: duplicated in ReadCatalog()
-        Catalog *cat = new Catalog(filename);
+        CatalogPtr cat = std::make_shared<Catalog>(filename);
         if (!cat->IsOk())
         {
             wxMessageDialog dlg
@@ -185,7 +175,6 @@ bool g_focusToText = false;
                 _("The file may be either corrupted or in a format not recognized by Poedit.")
             );
             dlg.ShowModal();
-            delete cat;
             return nullptr;
         }
 
@@ -277,6 +266,9 @@ BEGIN_EVENT_TABLE(PoeditFrame, wxFrame)
    EVT_MENU           (wxID_NEW,                  PoeditFrame::OnNew)
    EVT_MENU           (XRCID("menu_new_from_pot"),PoeditFrame::OnNew)
    EVT_MENU           (wxID_OPEN,                 PoeditFrame::OnOpen)
+  #ifdef HAVE_HTTP_CLIENT
+   EVT_MENU           (XRCID("menu_open_crowdin"),PoeditFrame::OnOpenFromCrowdin)
+  #endif
 #endif // __WXMSW__
 #ifndef __WXOSX__
    EVT_MENU_RANGE     (wxID_FILE1, wxID_FILE9,    PoeditFrame::OnOpenHist)
@@ -287,8 +279,12 @@ BEGIN_EVENT_TABLE(PoeditFrame, wxFrame)
    EVT_MENU           (XRCID("menu_compile_mo"),  PoeditFrame::OnCompileMO)
    EVT_MENU           (XRCID("menu_export"),      PoeditFrame::OnExport)
    EVT_MENU           (XRCID("menu_catproperties"), PoeditFrame::OnProperties)
-   EVT_MENU           (XRCID("menu_update"),      PoeditFrame::OnUpdate)
-   EVT_MENU           (XRCID("menu_update_from_pot"),PoeditFrame::OnUpdate)
+   EVT_MENU           (XRCID("menu_update_from_src"), PoeditFrame::OnUpdateFromSources)
+   EVT_MENU           (XRCID("menu_update_from_pot"),PoeditFrame::OnUpdateFromPOT)
+  #ifdef HAVE_HTTP_CLIENT
+   EVT_MENU           (XRCID("menu_update_from_crowdin"),PoeditFrame::OnUpdateFromCrowdin)
+  #endif
+   EVT_MENU           (XRCID("toolbar_update"),PoeditFrame::OnUpdateSmart)
    EVT_MENU           (XRCID("menu_validate"),    PoeditFrame::OnValidate)
    EVT_MENU           (XRCID("menu_purge_deleted"), PoeditFrame::OnPurgeDeleted)
    EVT_MENU           (XRCID("menu_fuzzy"),       PoeditFrame::OnFuzzyFlag)
@@ -298,12 +294,16 @@ BEGIN_EVENT_TABLE(PoeditFrame, wxFrame)
    EVT_MENU           (XRCID("sort_by_translation"), PoeditFrame::OnSortByTranslation)
    EVT_MENU           (XRCID("sort_group_by_context"), PoeditFrame::OnSortGroupByContext)
    EVT_MENU           (XRCID("sort_untrans_first"), PoeditFrame::OnSortUntranslatedFirst)
+   EVT_MENU           (XRCID("sort_errors_first"), PoeditFrame::OnSortErrorsFirst)
    EVT_MENU           (XRCID("show_sidebar"),      PoeditFrame::OnShowHideSidebar)
    EVT_UPDATE_UI      (XRCID("show_sidebar"),      PoeditFrame::OnUpdateShowHideSidebar)
+   EVT_MENU           (XRCID("show_statusbar"),    PoeditFrame::OnShowHideStatusbar)
+   EVT_UPDATE_UI      (XRCID("show_statusbar"),    PoeditFrame::OnUpdateShowHideStatusbar)
    EVT_MENU           (XRCID("menu_copy_from_src"), PoeditFrame::OnCopyFromSource)
    EVT_MENU           (XRCID("menu_clear"),       PoeditFrame::OnClearTranslation)
    EVT_MENU           (XRCID("menu_references"),  PoeditFrame::OnReferencesMenu)
    EVT_MENU           (wxID_FIND,                 PoeditFrame::OnFind)
+   EVT_MENU           (wxID_REPLACE,              PoeditFrame::OnFindAndReplace)
    EVT_MENU           (XRCID("menu_find_next"),   PoeditFrame::OnFindNext)
    EVT_MENU           (XRCID("menu_find_prev"),   PoeditFrame::OnFindPrev)
    EVT_MENU           (XRCID("menu_comment"),     PoeditFrame::OnEditComment)
@@ -326,7 +326,7 @@ BEGIN_EVENT_TABLE(PoeditFrame, wxFrame)
    EVT_SIZE           (PoeditFrame::OnSize)
 
    // handling of selection:
-   EVT_UPDATE_UI(XRCID("menu_references"), PoeditFrame::OnSingleSelectionUpdate)
+   EVT_UPDATE_UI(XRCID("menu_references"), PoeditFrame::OnReferencesMenuUpdate)
    EVT_UPDATE_UI_RANGE(ID_BOOKMARK_SET, ID_BOOKMARK_SET + 9, PoeditFrame::OnSingleSelectionUpdate)
 
    EVT_UPDATE_UI(XRCID("go_done_and_next"),   PoeditFrame::OnSingleSelectionUpdate)
@@ -337,18 +337,22 @@ BEGIN_EVENT_TABLE(PoeditFrame, wxFrame)
    EVT_UPDATE_UI(XRCID("go_prev_unfinished"), PoeditFrame::OnSingleSelectionUpdate)
    EVT_UPDATE_UI(XRCID("go_next_unfinished"), PoeditFrame::OnSingleSelectionUpdate)
 
-   EVT_UPDATE_UI(XRCID("menu_fuzzy"),         PoeditFrame::OnSelectionUpdate)
-   EVT_UPDATE_UI(XRCID("menu_copy_from_src"), PoeditFrame::OnSelectionUpdate)
-   EVT_UPDATE_UI(XRCID("menu_clear"),         PoeditFrame::OnSelectionUpdate)
-   EVT_UPDATE_UI(XRCID("menu_comment"),       PoeditFrame::OnSelectionUpdate)
+   EVT_UPDATE_UI(XRCID("menu_fuzzy"),         PoeditFrame::OnSelectionUpdateEditable)
+   EVT_UPDATE_UI(XRCID("menu_copy_from_src"), PoeditFrame::OnSelectionUpdateEditable)
+   EVT_UPDATE_UI(XRCID("menu_clear"),         PoeditFrame::OnSelectionUpdateEditable)
+   EVT_UPDATE_UI(XRCID("menu_comment"),       PoeditFrame::OnEditCommentUpdate)
 
    // handling of open files:
    EVT_UPDATE_UI(wxID_SAVE,                   PoeditFrame::OnHasCatalogUpdate)
    EVT_UPDATE_UI(wxID_SAVEAS,                 PoeditFrame::OnHasCatalogUpdate)
    EVT_UPDATE_UI(XRCID("menu_statistics"),    PoeditFrame::OnHasCatalogUpdate)
    EVT_UPDATE_UI(XRCID("menu_validate"),      PoeditFrame::OnIsEditableUpdate)
-   EVT_UPDATE_UI(XRCID("menu_update"),        PoeditFrame::OnUpdateFromSourcesUpdate)
-   EVT_UPDATE_UI(XRCID("menu_update_from_pot"), PoeditFrame::OnHasCatalogUpdate)
+   EVT_UPDATE_UI(XRCID("menu_update_from_src"), PoeditFrame::OnUpdateFromSourcesUpdate)
+ #ifdef HAVE_HTTP_CLIENT
+   EVT_UPDATE_UI(XRCID("menu_update_from_crowdin"), PoeditFrame::OnUpdateFromCrowdinUpdate)
+ #endif
+   EVT_UPDATE_UI(XRCID("menu_update_from_pot"), PoeditFrame::OnUpdateFromPOTUpdate)
+   EVT_UPDATE_UI(XRCID("toolbar_update"), PoeditFrame::OnUpdateSmartUpdate)
 
 #if defined(__WXMSW__) || defined(__WXGTK__)
    EVT_MENU(wxID_UNDO,      PoeditFrame::OnTextEditingCommand)
@@ -466,6 +470,9 @@ PoeditFrame::PoeditFrame() :
     m_splitter = nullptr;
     m_sidebarSplitter = nullptr;
     m_sidebar = nullptr;
+    m_errorBar = nullptr;
+    m_labelContext = m_labelPlural = m_labelSingular = nullptr;
+    m_pluralNotebook = nullptr;
 
     // make sure that the [ID_POEDIT_FIRST,ID_POEDIT_LAST] range of IDs is not
     // used for anything else:
@@ -507,6 +514,14 @@ PoeditFrame::PoeditFrame() :
 #ifdef __WXOSX__
         wxGetApp().TweakOSXMenuBar(MenuBar);
 #endif
+#ifndef HAVE_HTTP_CLIENT
+        wxMenu *menu;
+        wxMenuItem *item;
+        item = MenuBar->FindItem(XRCID("menu_update_from_crowdin"), &menu);
+        menu->Destroy(item);
+        item = MenuBar->FindItem(XRCID("menu_open_crowdin"), &menu);
+        menu->Destroy(item);
+#endif
     }
     else
     {
@@ -519,7 +534,8 @@ PoeditFrame::PoeditFrame() :
 
     GetMenuBar()->Check(XRCID("menu_ids"), m_displayIDs);
 
-    CreateStatusBar(1, wxST_SIZEGRIP);
+    if (wxConfigBase::Get()->ReadBool("/statusbar_shown", true))
+        CreateStatusBar(1, wxST_SIZEGRIP);
 
     m_contentWrappingSizer = new wxBoxSizer(wxVERTICAL);
     SetSizer(m_contentWrappingSizer);
@@ -574,7 +590,8 @@ void PoeditFrame::EnsureContentView(Content type)
             break;
 
         case Content::PO:
-            m_contentView = CreateContentViewPO();
+        case Content::POT:
+            m_contentView = CreateContentViewPO(type);
             break;
     }
 
@@ -587,8 +604,30 @@ void PoeditFrame::EnsureContentView(Content type)
 #endif
 }
 
+void PoeditFrame::EnsureAppropriateContentView()
+{
+    wxCHECK_RET( m_catalog, "must have catalog here" );
 
-wxWindow* PoeditFrame::CreateContentViewPO()
+    if (m_catalog->empty())
+    {
+        EnsureContentView(Content::Empty_PO);
+    }
+    else
+    {
+        switch (m_catalog->GetFileType())
+        {
+            case Catalog::Type::PO:
+                EnsureContentView(Content::PO);
+                break;
+            case Catalog::Type::POT:
+                EnsureContentView(Content::POT);
+                break;
+        }
+    }
+}
+
+
+wxWindow* PoeditFrame::CreateContentViewPO(Content type)
 {
     auto main = new wxPanel(this, wxID_ANY);
     auto mainSizer = new wxBoxSizer(wxHORIZONTAL);
@@ -621,7 +660,6 @@ wxWindow* PoeditFrame::CreateContentViewPO()
                                 m_displayIDs);
 
     m_bottomPanel = new wxPanel(m_splitter);
-    m_bottomPanel->Bind(wxEVT_UPDATE_UI, &PoeditFrame::OnSingleSelectionUpdate, this);
 
     wxStaticText *labelSource =
         new wxStaticText(m_bottomPanel, -1, _("Source text:"));
@@ -638,22 +676,7 @@ wxWindow* PoeditFrame::CreateContentViewPO()
     m_labelPlural->SetFont(m_normalGuiFont);
     m_textOrigPlural = new SourceTextCtrl(m_bottomPanel, ID_TEXTORIGPLURAL);
 
-    wxStaticText *labelTrans = new wxStaticText(m_bottomPanel, -1, _("Translation:"));
-    labelTrans->SetFont(m_boldGuiFont);
-
-    m_textTrans = new TranslationTextCtrl(m_bottomPanel, ID_TEXTTRANS);
-    m_textTrans->PushEventHandler(new TransTextctrlHandler(this));
-
-    // in case of plurals form, this is the control for n=1:
-    m_textTransSingularForm = NULL;
-
-    m_pluralNotebook = new wxNotebook(m_bottomPanel, -1);
-
-    m_errorBar = new ErrorBar(m_bottomPanel);
-
-    SetCustomFonts();
-
-    wxSizer *panelSizer = new wxBoxSizer(wxVERTICAL);
+    auto *panelSizer = new wxBoxSizer(wxVERTICAL);
 
     wxFlexGridSizer *gridSizer = new wxFlexGridSizer(2);
     gridSizer->AddGrowableCol(1);
@@ -669,10 +692,13 @@ wxWindow* PoeditFrame::CreateContentViewPO()
     panelSizer->Add(m_labelContext, 0, wxEXPAND | wxALL, 3);
     panelSizer->Add(labelSource, 0, wxEXPAND | wxALL, 3);
     panelSizer->Add(gridSizer, 1, wxEXPAND);
-    panelSizer->Add(labelTrans, 0, wxEXPAND | wxALL, 3);
-    panelSizer->Add(m_textTrans, 1, wxEXPAND);
-    panelSizer->Add(m_pluralNotebook, 1, wxEXPAND);
-    panelSizer->Add(m_errorBar, 0, wxEXPAND | wxALL, 2);
+
+    if (type == Content::POT)
+        CreateContentViewTemplateControls(m_bottomPanel, panelSizer);
+    else
+        CreateContentViewEditControls(m_bottomPanel, panelSizer);
+
+    SetCustomFonts();
 
     m_bottomPanel->SetAutoLayout(true);
     m_bottomPanel->SetSizer(panelSizer);
@@ -704,6 +730,7 @@ wxWindow* PoeditFrame::CreateContentViewPO()
     }
     GetMenuBar()->Check(XRCID("sort_group_by_context"), m_list->sortOrder.groupByContext);
     GetMenuBar()->Check(XRCID("sort_untrans_first"), m_list->sortOrder.untransFirst);
+    GetMenuBar()->Check(XRCID("sort_errors_first"), m_list->sortOrder.errorsFirst);
 
     // Call splitter splitting later, when the window is layed out, otherwise
     // the sizes would get truncated immediately:
@@ -735,6 +762,61 @@ wxWindow* PoeditFrame::CreateContentViewPO()
     return main;
 }
 
+void PoeditFrame::CreateContentViewEditControls(wxWindow *p, wxBoxSizer *panelSizer)
+{
+    p->Bind(wxEVT_UPDATE_UI, &PoeditFrame::OnSingleSelectionUpdate, this);
+
+    wxStaticText *labelTrans = new wxStaticText(p, -1, _("Translation:"));
+    labelTrans->SetFont(m_boldGuiFont);
+
+    m_textTrans = new TranslationTextCtrl(p, ID_TEXTTRANS);
+    m_textTrans->PushEventHandler(new TransTextctrlHandler(this));
+
+    // in case of plurals form, this is the control for n=1:
+    m_textTransSingularForm = nullptr;
+
+    m_pluralNotebook = new wxNotebook(p, -1);
+
+    m_errorBar = new ErrorBar(p);
+
+    panelSizer->Add(labelTrans, 0, wxEXPAND | wxALL, 3);
+    panelSizer->Add(m_textTrans, 1, wxEXPAND);
+    panelSizer->Add(m_pluralNotebook, 1, wxEXPAND);
+    panelSizer->Add(m_errorBar, 0, wxEXPAND | wxALL, 2);
+}
+
+void PoeditFrame::CreateContentViewTemplateControls(wxWindow *p, wxBoxSizer *panelSizer)
+{
+    auto win = new wxPanel(p, wxID_ANY);
+    auto sizer = new wxBoxSizer(wxVERTICAL);
+
+    auto explain = new wxStaticText(win, wxID_ANY, _(L"POT files are only templates and don’t contain any translations themselves.\nTo make a translation, create a new PO file based on the template."), wxDefaultPosition, wxDefaultSize, wxALIGN_CENTRE_HORIZONTAL);
+#ifdef __WXOSX__
+    explain->SetWindowVariant(wxWINDOW_VARIANT_SMALL);
+#endif
+    explain->SetForegroundColour(ExplanationLabel::GetTextColor().ChangeLightness(160));
+    win->SetBackgroundColour(GetBackgroundColour().ChangeLightness(50));
+
+    auto button = new wxButton(win, wxID_ANY, MSW_OR_OTHER(_("Create new translation"), _("Create New Translation")));
+    button->Bind(wxEVT_BUTTON, [=](wxCommandEvent&)
+    {
+        wxWindowPtr<LanguageDialog> dlg(new LanguageDialog(this));
+        dlg->ShowWindowModalThenDo([=](int retcode){
+            if (retcode == wxID_OK)
+                NewFromPOT(m_catalog->GetFileName(), dlg->GetLang());
+        });
+    });
+
+    sizer->AddStretchSpacer();
+    sizer->Add(explain, wxSizerFlags().Center().Border(wxLEFT|wxRIGHT, PX(100)));
+    sizer->Add(button, wxSizerFlags().Center().Border(wxTOP|wxBOTTOM, PX(10)));
+    sizer->AddStretchSpacer();
+
+    win->SetSizerAndFit(sizer);
+
+    panelSizer->Add(win, 1, wxEXPAND);
+}
+
 
 wxWindow* PoeditFrame::CreateContentViewWelcome()
 {
@@ -773,12 +855,21 @@ void PoeditFrame::DestroyContentView()
     m_contentView = nullptr;
 
     m_list = nullptr;
-    m_textTrans = nullptr;
+    m_labelContext = m_labelSingular = m_labelPlural = nullptr;
+    m_textTrans = m_textTransSingularForm = nullptr;
     m_textOrig = nullptr;
     m_textOrigPlural = nullptr;
+    m_errorBar = nullptr;
     m_splitter = nullptr;
     m_sidebarSplitter = nullptr;
     m_sidebar = nullptr;
+    m_pluralNotebook = nullptr;
+
+    if (m_findWindow)
+    {
+        m_findWindow->Destroy();
+        m_findWindow.Release();
+    }
 }
 
 
@@ -786,8 +877,6 @@ PoeditFrame::~PoeditFrame()
 {
     ms_instances.erase(this);
 
-    FindFrame::NotifyParentDestroyed(m_list, m_catalog);
-
     DestroyContentView();
 
     wxConfigBase *cfg = wxConfig::Get();
@@ -805,8 +894,8 @@ PoeditFrame::~PoeditFrame()
     // write all changes:
     cfg->Flush();
 
-    delete m_catalog;
-    m_catalog = NULL;
+    m_catalog.reset();
+    m_pendingHumanEditedItem.reset();
 
     // shutdown the spellchecker:
     InitSpellchecker();
@@ -985,13 +1074,16 @@ void PoeditFrame::DoIfCanDiscardCurrentDoc(TFunctor completionHandler)
 
         if (retval == wxID_YES)
         {
-            if (!m_fileExistsOnDisk || m_fileName.empty())
-                m_fileName = GetSaveAsFilename(m_catalog, m_fileName);
-
-            WriteCatalog(m_fileName, [=](bool saved){
-                if (saved)
-                    completionHandler();
-            });
+            auto doSaveFile = [=](const wxString& fn){
+                WriteCatalog(fn, [=](bool saved){
+                    if (saved)
+                        completionHandler();
+                });
+            };
+            if (!m_fileExistsOnDisk || GetFileName().empty())
+                GetSaveAsFilenameThenDo(m_catalog, doSaveFile);
+            else
+                doSaveFile(GetFileName());
         }
         else if (retval == wxID_NO)
         {
@@ -1058,14 +1150,13 @@ void PoeditFrame::OnOpen(wxCommandEvent&)
 {
     DoIfCanDiscardCurrentDoc([=]{
 
-        wxString path = wxPathOnly(m_fileName);
+        wxString path = wxPathOnly(GetFileName());
         if (path.empty())
             path = wxConfig::Get()->Read("last_file_path", wxEmptyString);
 
-        wxString name = wxFileSelector(_("Open catalog"),
+        wxString name = wxFileSelector(OSX_OR_OTHER("", _("Open catalog")),
                         path, wxEmptyString, wxEmptyString,
-                        wxString::Format("%s (*.po)|*.po|%s (*.*)|*.*",
-                            _("PO Translation Files"), _("All Files")),
+                        Catalog::GetAllTypesFileMask(),
                         wxFD_OPEN | wxFD_FILE_MUST_EXIST, this);
 
         if (!name.empty())
@@ -1078,6 +1169,17 @@ void PoeditFrame::OnOpen(wxCommandEvent&)
 }
 
 
+#ifdef HAVE_HTTP_CLIENT
+void PoeditFrame::OnOpenFromCrowdin(wxCommandEvent&)
+{
+    DoIfCanDiscardCurrentDoc([=]{
+        CrowdinOpenFile(this, [=](wxString name){
+            DoOpenFile(name);
+        });
+    });
+}
+#endif
+
 
 #ifndef __WXOSX__
 void PoeditFrame::OnOpenHist(wxCommandEvent& event)
@@ -1098,10 +1200,10 @@ void PoeditFrame::OnSave(wxCommandEvent& event)
 {
     try
     {
-        if (!m_fileExistsOnDisk || m_fileName.empty())
+        if (!m_fileExistsOnDisk || GetFileName().empty())
             OnSaveAs(event);
         else
-            WriteCatalog(m_fileName);
+            WriteCatalog(GetFileName());
     }
     catch (Exception& e)
     {
@@ -1110,7 +1212,7 @@ void PoeditFrame::OnSave(wxCommandEvent& event)
 }
 
 
-static wxString SuggestFileName(const Catalog *catalog)
+static wxString SuggestFileName(const CatalogPtr& catalog)
 {
     wxString name;
     if (catalog)
@@ -1122,8 +1224,10 @@ static wxString SuggestFileName(const Catalog *catalog)
         return name;
 }
 
-wxString PoeditFrame::GetSaveAsFilename(Catalog *cat, const wxString& current)
+template<typename F>
+void PoeditFrame::GetSaveAsFilenameThenDo(const CatalogPtr& cat, F then)
 {
+    auto current = cat->GetFileName();
     wxString name(wxFileNameFromPath(current));
     wxString path(wxPathOnly(current));
 
@@ -1133,16 +1237,21 @@ wxString PoeditFrame::GetSaveAsFilename(Catalog *cat, const wxString& current)
         name = SuggestFileName(cat) + ".po";
     }
 
-    name = wxFileSelector(_("Save as..."), path, name, wxEmptyString,
-	                      wxString::Format("%s (*.po)|*.po",
-                              _("PO Translation Files")),
-                          wxFD_SAVE | wxFD_OVERWRITE_PROMPT, this);
-    if (!name.empty())
-    {
-        wxConfig::Get()->Write("last_file_path", wxPathOnly(name));
-    }
+    wxWindowPtr<wxFileDialog> dlg(
+        new wxFileDialog(this,
+                         OSX_OR_OTHER("", _("Save as...")),
+                         path,
+                         name,
+                         m_catalog->GetFileMask(),
+                         wxFD_SAVE | wxFD_OVERWRITE_PROMPT));
 
-    return name;
+    dlg->ShowWindowModalThenDo([=](int retcode){
+        if (retcode != wxID_OK)
+            return;
+        auto fn = dlg->GetPath();
+        wxConfig::Get()->Write("last_file_path", wxPathOnly(name));
+        then(fn);
+    });
 }
 
 void PoeditFrame::DoSaveAs(const wxString& filename)
@@ -1150,19 +1259,21 @@ void PoeditFrame::DoSaveAs(const wxString& filename)
     if (filename.empty())
         return;
 
-    m_fileName = filename;
     WriteCatalog(filename);
 }
 
 void PoeditFrame::OnSaveAs(wxCommandEvent&)
 {
-    DoSaveAs(GetSaveAsFilename(m_catalog, m_fileName));
+    GetSaveAsFilenameThenDo(m_catalog, [=](const wxString& fn){
+        DoSaveAs(fn);
+    });
 }
 
 void PoeditFrame::OnCompileMO(wxCommandEvent&)
 {
+    auto fileName = GetFileName();
     wxString name;
-    wxFileName::SplitPath(m_fileName, nullptr, &name, nullptr);
+    wxFileName::SplitPath(fileName, nullptr, &name, nullptr);
 
     if (name.empty())
     {
@@ -1171,36 +1282,43 @@ void PoeditFrame::OnCompileMO(wxCommandEvent&)
     else
         name += ".mo";
 
-    name = wxFileSelector(_("Compile to..."),
-                          wxPathOnly(m_fileName), name, wxEmptyString,
-                          wxString::Format("%s (*.mo)|*.mo", _("Compiled Translation Files")),
-                          wxFD_SAVE | wxFD_OVERWRITE_PROMPT, this);
-    if (name.empty())
-        return; // user cancelled
+    wxWindowPtr<wxFileDialog> dlg(
+        new wxFileDialog(this,
+                         OSX_OR_OTHER("", _("Compile to...")),
+                         wxPathOnly(fileName),
+                         name,
+                         wxString::Format("%s (*.mo)|*.mo", _("Compiled Translation Files")),
+                         wxFD_SAVE | wxFD_OVERWRITE_PROMPT));
 
-    wxBusyCursor bcur;
-    wxConfig::Get()->Write("last_file_path", wxPathOnly(name));
+    dlg->ShowWindowModalThenDo([=](int retcode){
+        if (retcode != wxID_OK)
+            return;
 
-    int validation_errors = 0;
-    Catalog::CompilationStatus compilation_status = Catalog::CompilationStatus::NotDone;
-    if (!m_catalog->CompileToMO(name, validation_errors, compilation_status))
-        return;
+        wxBusyCursor bcur;
+        auto fn = dlg->GetPath();
+        wxConfig::Get()->Write("last_file_path", wxPathOnly(fn));
+        int validation_errors = 0;
+        Catalog::CompilationStatus compilation_status = Catalog::CompilationStatus::NotDone;
+        if (!m_catalog->CompileToMO(fn, validation_errors, compilation_status))
+            return;
 
-    if (validation_errors)
-    {
-        // Note: this may show window-modal window and because we may
-        //       be called from such window too, run this in the next
-        //       event loop iteration.
-        CallAfter([=]{
-            ReportValidationErrors(validation_errors, compilation_status, /*from_save=*/true, /*other_file_saved=*/false, []{});
-        });
-    }
+        if (validation_errors)
+        {
+            // Note: this may show window-modal window and because we may
+            //       be called from such window too, run this in the next
+            //       event loop iteration.
+            CallAfter([=]{
+                ReportValidationErrors(validation_errors, compilation_status, /*from_save=*/true, /*other_file_saved=*/false, []{});
+            });
+        }
+    });
 }
 
 void PoeditFrame::OnExport(wxCommandEvent&)
 {
+    auto fileName = GetFileName();
     wxString name;
-    wxFileName::SplitPath(m_fileName, nullptr, &name, nullptr);
+    wxFileName::SplitPath(fileName, nullptr, &name, nullptr);
 
     if (name.empty())
     {
@@ -1209,22 +1327,37 @@ void PoeditFrame::OnExport(wxCommandEvent&)
     else
         name += ".html";
 
-    name = wxFileSelector(_("Export as..."),
-                          wxPathOnly(m_fileName), name, wxEmptyString,
-                          wxString::Format("%s (*.html)|*.html", _("HTML Files")),
-                          wxFD_SAVE | wxFD_OVERWRITE_PROMPT, this);
-    if (!name.empty())
-    {
-        wxConfig::Get()->Write("last_file_path", wxPathOnly(name));
-        ExportCatalog(name);
-    }
+    wxWindowPtr<wxFileDialog> dlg(
+        new wxFileDialog(this,
+                         OSX_OR_OTHER("", _("Export as...")),
+                         wxPathOnly(fileName),
+                         name,
+                         wxString::Format("%s (*.html)|*.html", _("HTML Files")),
+                         wxFD_SAVE | wxFD_OVERWRITE_PROMPT));
+
+    dlg->ShowWindowModalThenDo([=](int retcode){
+        if (retcode != wxID_OK)
+            return;
+        auto fn = dlg->GetPath();
+        wxConfig::Get()->Write("last_file_path", wxPathOnly(fn));
+        ExportCatalog(fn);
+    });
 }
 
 bool PoeditFrame::ExportCatalog(const wxString& filename)
 {
     wxBusyCursor bcur;
-    bool ok = m_catalog->ExportToHTML(filename);
-    return ok;
+
+    TempOutputFileFor tempfile(filename);
+    std::ofstream f;
+    f.open(tempfile.FileName().fn_str());
+    m_catalog->ExportToHTML(f);
+    if (!tempfile.Commit())
+    {
+        wxLogError(_("Couldn't save file %s."), filename);
+        return false;
+    }
+    return true;
 }
 
 
@@ -1243,69 +1376,52 @@ void PoeditFrame::OnNew(wxCommandEvent& event)
 
 void PoeditFrame::NewFromPOT()
 {
-    Catalog *catalog = new Catalog;
-
-    wxString path = wxPathOnly(m_fileName);
+    wxString path = wxPathOnly(GetFileName());
     if (path.empty())
         path = wxConfig::Get()->Read("last_file_path", wxEmptyString);
     wxString pot_file =
         wxFileSelector(_("Open catalog template"),
              path, wxEmptyString, wxEmptyString,
-             wxString::Format
-             (
-                 "%s (*.pot)|*.pot|%s (*.po)|*.po|%s (*.*)|*.*",
-                 _("POT Translation Templates"),
-                 _("PO Translation Files"),
-                 _("All Files")
-             ),
+             Catalog::GetTypesFileMask({Catalog::Type::POT, Catalog::Type::PO}),
              wxFD_OPEN | wxFD_FILE_MUST_EXIST, this);
-    bool ok = false;
     if (!pot_file.empty())
     {
         wxConfig::Get()->Write("last_file_path", wxPathOnly(pot_file));
-        UpdateResultReason reason;
-        ok = catalog->UpdateFromPOT(pot_file,
-                                    /*summary=*/false,
-                                    reason,
-                                    /*replace_header=*/true);
+        NewFromPOT(pot_file);
     }
-    if (!ok)
+}
+
+void PoeditFrame::NewFromPOT(const wxString& pot_file, Language language)
+{
+    UpdateResultReason reason;
+    CatalogPtr catalog = std::make_shared<Catalog>();
+    if (!catalog->UpdateFromPOT(pot_file,
+                                /*summary=*/false,
+                                reason,
+                                /*replace_header=*/true))
     {
-        delete catalog;
         return;
     }
 
-    delete m_catalog;
     m_catalog = catalog;
+    m_pendingHumanEditedItem.reset();
 
-    m_fileName.clear();
     m_fileExistsOnDisk = false;
     m_modified = true;
 
-    if (m_catalog->empty())
-    {
-        EnsureContentView(Content::Empty_PO);
-    }
-    else
-    {
-        EnsureContentView(Content::PO);
-        NotifyCatalogChanged(m_catalog);
-    }
+    EnsureAppropriateContentView();
+    NotifyCatalogChanged(m_catalog);
 
     UpdateTitle();
     UpdateMenu();
     UpdateStatusBar();
     UpdateTextLanguage();
 
-    // Choose the language:
-    wxWindowPtr<LanguageDialog> dlg(new LanguageDialog(this));
-
-    dlg->ShowWindowModalThenDo([=](int retcode){
-        if (retcode == wxID_OK)
+    auto setLanguageFunc = [=](Language lang)
+    {
+        if (lang.IsValid())
         {
-            Language lang = dlg->GetLang();
-            catalog->Header().Lang = lang;
-            catalog->Header().SetHeaderNotEmpty("Plural-Forms", lang.DefaultPluralFormsExpr());
+            catalog->SetLanguage(lang);
 
             // Derive save location for the file from the location of the POT
             // file (same directory, language-based name). This doesn't always
@@ -1313,10 +1429,7 @@ void PoeditFrame::NewFromPOT()
             // save the file just yet and let the user confirm the location when saving.
             wxFileName pot_fn(pot_file);
             pot_fn.SetFullName(lang.Code() + ".po");
-
-            m_fileName = pot_fn.GetFullPath();
-            m_fileExistsOnDisk = false;
-            m_modified = true;
+            m_catalog->SetFileName(pot_fn.GetFullPath());
         }
         else
         {
@@ -1331,19 +1444,35 @@ void PoeditFrame::NewFromPOT()
         UpdateStatusBar();
         UpdateTextLanguage();
         NotifyCatalogChanged(m_catalog); // refresh language column
-    });
+    };
+
+    if (language.IsValid())
+    {
+        setLanguageFunc(language);
+    }
+    else
+    {
+        // Choose the language:
+        wxWindowPtr<LanguageDialog> dlg(new LanguageDialog(this));
+
+        dlg->ShowWindowModalThenDo([=](int retcode){
+            if (retcode == wxID_OK)
+                setLanguageFunc(dlg->GetLang());
+            else
+                setLanguageFunc(Language());
+        });
+    }
 }
 
 
 void PoeditFrame::NewFromScratch()
 {
-    Catalog *catalog = new Catalog;
+    CatalogPtr catalog = std::make_shared<Catalog>();
     catalog->CreateNewHeader();
 
-    delete m_catalog;
     m_catalog = catalog;
+    m_pendingHumanEditedItem.reset();
 
-    m_fileName.clear();
     m_fileExistsOnDisk = false;
     m_modified = true;
 
@@ -1359,9 +1488,7 @@ void PoeditFrame::NewFromScratch()
     dlg->ShowWindowModalThenDo([=](int retcode){
         if (retcode == wxID_OK)
         {
-            Language lang = dlg->GetLang();
-            catalog->Header().Lang = lang;
-            catalog->Header().SetHeaderNotEmpty("Plural-Forms", lang.DefaultPluralFormsExpr());
+            catalog->SetLanguage(dlg->GetLang());
         }
     });
 }
@@ -1374,7 +1501,7 @@ void PoeditFrame::OnProperties(wxCommandEvent&)
 
 void PoeditFrame::EditCatalogProperties()
 {
-    wxWindowPtr<PropertiesDialog> dlg(new PropertiesDialog(this, m_fileExistsOnDisk));
+    wxWindowPtr<PropertiesDialog> dlg(new PropertiesDialog(this, m_catalog, m_fileExistsOnDisk));
 
     const Language prevLang = m_catalog->GetLanguage();
     dlg->TransferTo(m_catalog);
@@ -1400,7 +1527,7 @@ void PoeditFrame::EditCatalogPropertiesAndUpdateFromSources()
 {
     // TODO: share code with EditCatalogProperties()
 
-    wxWindowPtr<PropertiesDialog> dlg(new PropertiesDialog(this, m_fileExistsOnDisk, 1));
+    wxWindowPtr<PropertiesDialog> dlg(new PropertiesDialog(this, m_catalog, m_fileExistsOnDisk, 1));
 
     const Language prevLang = m_catalog->GetLanguage();
     dlg->TransferTo(m_catalog);
@@ -1422,7 +1549,7 @@ void PoeditFrame::EditCatalogPropertiesAndUpdateFromSources()
 
             if (!m_catalog->Header().SearchPaths.empty())
             {
-                EnsureContentView(Content::PO);
+                EnsureAppropriateContentView();
                 UpdateCatalog();
             }
         }
@@ -1466,14 +1593,27 @@ bool PoeditFrame::UpdateCatalog(const wxString& pot_file)
     UpdateResultReason reason = UpdateResultReason::Unspecified;
     bool succ;
 
+    if (pot_file.empty())
     {
-        ProgressInfo progress(this, _("Updating catalog"));
-        if (pot_file.empty())
+        if (m_catalog->HasSourcesAvailable())
+        {
+            ProgressInfo progress(this, _("Updating catalog"));
             succ = m_catalog->Update(&progress, true, reason);
+            locker.reset();
+            EnsureAppropriateContentView();
+            NotifyCatalogChanged(m_catalog);
+        }
         else
-            succ = m_catalog->UpdateFromPOT(pot_file, true, reason);
-
-        EnsureContentView(Content::PO);
+        {
+            reason = UpdateResultReason::NoSourcesFound;
+            succ = false;
+        }
+    }
+    else
+    {
+        succ = m_catalog->UpdateFromPOT(pot_file, true, reason);
+        locker.reset();
+        EnsureAppropriateContentView();
         NotifyCatalogChanged(m_catalog);
     }
 
@@ -1511,36 +1651,12 @@ bool PoeditFrame::UpdateCatalog(const wxString& pot_file)
     return succ;
 }
 
-void PoeditFrame::OnUpdate(wxCommandEvent& event)
+void PoeditFrame::OnUpdateFromSources(wxCommandEvent&)
 {
     DoIfCanDiscardCurrentDoc([=]{
-
-        wxString pot_file;
-
-        if (event.GetId() == XRCID("menu_update_from_pot"))
-        {
-            wxString path = wxPathOnly(m_fileName);
-            if (path.empty())
-                path = wxConfig::Get()->Read("last_file_path", wxEmptyString);
-            pot_file =
-                wxFileSelector(_("Open catalog template"),
-                     path, wxEmptyString, wxEmptyString,
-                     wxString::Format
-                     (
-                         "%s (*.pot)|*.pot|%s (*.po)|*.po|%s (*.*)|*.*",
-                         _("POT Translation Templates"),
-                         _("PO Translation Files"),
-                         _("All Files")
-                     ),
-                     wxFD_OPEN | wxFD_FILE_MUST_EXIST, this);
-            if (pot_file.empty())
-                return;
-            wxConfig::Get()->Write("last_file_path", wxPathOnly(pot_file));
-        }
-
         try
         {
-            if (UpdateCatalog(pot_file))
+            if (UpdateCatalog())
             {
                 if (wxConfig::Get()->ReadBool("use_tm", true) &&
                     wxConfig::Get()->ReadBool("use_tm_when_updating", false))
@@ -1549,16 +1665,117 @@ void PoeditFrame::OnUpdate(wxCommandEvent& event)
                 }
             }
         }
-        catch (Exception& e)
+        catch (...)
         {
-            wxLogError("%s", e.What());
+            wxLogError("%s", DescribeCurrentException());
         }
 
         RefreshControls();
+    });
+}
+
+void PoeditFrame::OnUpdateFromSourcesUpdate(wxUpdateUIEvent& event)
+{
+    event.Enable(m_catalog &&
+                 !m_catalog->IsFromCrowdin() &&
+                 m_catalog->HasSourcesConfigured());
+}
 
+void PoeditFrame::OnUpdateFromPOT(wxCommandEvent&)
+{
+    DoIfCanDiscardCurrentDoc([=]{
+        wxString path = wxPathOnly(GetFileName());
+        if (path.empty())
+            path = wxConfig::Get()->Read("last_file_path", wxEmptyString);
+
+        wxWindowPtr<wxFileDialog> dlg(
+            new wxFileDialog(this,
+                             _("Open catalog template"),
+                             path,
+                             wxEmptyString,
+                             Catalog::GetTypesFileMask({Catalog::Type::POT, Catalog::Type::PO}),
+                             wxFD_OPEN | wxFD_FILE_MUST_EXIST));
+
+        dlg->ShowWindowModalThenDo([=](int retcode){
+            if (retcode != wxID_OK)
+                return;
+            auto pot_file = dlg->GetPath();
+            wxConfig::Get()->Write("last_file_path", wxPathOnly(pot_file));
+            try
+            {
+                if (UpdateCatalog(pot_file))
+                {
+                    if (wxConfig::Get()->ReadBool("use_tm", true) &&
+                        wxConfig::Get()->ReadBool("use_tm_when_updating", false))
+                    {
+                        AutoTranslateCatalog(nullptr, AutoTranslate_OnlyGoodQuality);
+                    }
+                }
+            }
+            catch (...)
+            {
+                wxLogError("%s", DescribeCurrentException());
+            }
+        });
+
+        RefreshControls();
+    });
+}
+
+void PoeditFrame::OnUpdateFromPOTUpdate(wxUpdateUIEvent& event)
+{
+    if (!m_catalog || m_catalog->GetFileType() != Catalog::Type::PO)
+        event.Enable(false);
+    else
+        OnHasCatalogUpdate(event);
+}
+
+#ifdef HAVE_HTTP_CLIENT
+void PoeditFrame::OnUpdateFromCrowdin(wxCommandEvent&)
+{
+    DoIfCanDiscardCurrentDoc([=]{
+        CrowdinSyncFile(this, m_catalog, [=](std::shared_ptr<Catalog> cat){
+            m_catalog = cat;
+            EnsureAppropriateContentView();
+            NotifyCatalogChanged(m_catalog);
+            RefreshControls();
+        });
     });
 }
 
+void PoeditFrame::OnUpdateFromCrowdinUpdate(wxUpdateUIEvent& event)
+{
+    event.Enable(m_catalog && m_catalog->IsFromCrowdin() &&
+                 m_catalog->HasCapability(Catalog::Cap::Translations));
+}
+#endif
+
+void PoeditFrame::OnUpdateSmart(wxCommandEvent& event)
+{
+    if (!m_catalog)
+        return;
+#ifdef HAVE_HTTP_CLIENT
+    if (m_catalog->IsFromCrowdin())
+        OnUpdateFromCrowdin(event);
+    else
+#endif
+        OnUpdateFromSources(event);
+}
+
+void PoeditFrame::OnUpdateSmartUpdate(wxUpdateUIEvent& event)
+{
+    event.Enable(false);
+    if (m_catalog)
+    {
+#ifdef HAVE_HTTP_CLIENT
+       if (m_catalog->IsFromCrowdin())
+            OnUpdateFromCrowdinUpdate(event);
+        else
+#endif
+            OnUpdateFromSourcesUpdate(event);
+    }
+}
+
 
 void PoeditFrame::OnValidate(wxCommandEvent&)
 {
@@ -1679,6 +1896,12 @@ void PoeditFrame::OnListSel(wxListEvent& event)
 
     event.Skip();
 
+    if (m_pendingHumanEditedItem)
+    {
+        OnNewTranslationEntered(m_pendingHumanEditedItem);
+        m_pendingHumanEditedItem.reset();
+    }
+
     UpdateToTextCtrl(ItemChanged);
 
     if (m_sidebar && m_list)
@@ -1689,43 +1912,39 @@ void PoeditFrame::OnListSel(wxListEvent& event)
             m_sidebar->SetSelectedItem(m_catalog, GetCurrentItem()); // may be nullptr
     }
 
-    if (hasFocus)
+    if (hasFocus && m_textTrans)
     {
         if (m_textTrans->IsShown())
             m_textTrans->SetFocus();
         else if (!m_textTransPlural.empty())
             m_textTransPlural[0]->SetFocus();
     }
+
+    auto references = FileViewer::GetIfExists();
+    if (references)
+        references->ShowReferences(m_catalog, GetCurrentItem(), 0);
 }
 
 
 
 void PoeditFrame::OnReferencesMenu(wxCommandEvent&)
 {
-    CatalogItem *entry = GetCurrentItem();
+    auto entry = GetCurrentItem();
     if ( !entry )
         return;
+    ShowReference(0);
+}
 
-    const wxArrayString& refs = entry->GetReferences();
-
-    if (refs.GetCount() == 0)
-        wxMessageBox(_("No references to this string found."));
-    else if (refs.GetCount() == 1)
-        ShowReference(0);
-    else
+void PoeditFrame::OnReferencesMenuUpdate(wxUpdateUIEvent& event)
+{
+    OnSingleSelectionUpdate(event);
+    if (event.GetEnabled())
     {
-        wxString *table = new wxString[refs.GetCount()];
-        for (unsigned i = 0; i < refs.GetCount(); i++)
-            table[i] = refs[i];
-        int result = wxGetSingleChoiceIndex(_("Please choose the reference you want to show:"), _("References"),
-                          (int)refs.GetCount(), table);
-        delete[] table;
-        if (result != -1)
-            ShowReference(result);
+        auto item = GetCurrentItem();
+        event.Enable(item && !item->GetReferences().empty());
     }
 }
 
-
 void PoeditFrame::OnReference(wxCommandEvent& event)
 {
     ShowReference(event.GetId() - ID_POPUP_REFS);
@@ -1735,39 +1954,10 @@ void PoeditFrame::OnReference(wxCommandEvent& event)
 
 void PoeditFrame::ShowReference(int num)
 {
-    CatalogItem *entry = GetCurrentItem();
-    wxCHECK_RET( entry, "no entry selected" );
-
-    wxBusyCursor bcur;
-
-    wxString basepath;
-    wxString cwd = wxGetCwd();
-
-    if (!!m_fileName)
-    {
-        wxString path;
-
-        if (wxIsAbsolutePath(m_catalog->Header().BasePath))
-            path = m_catalog->Header().BasePath;
-        else
-            path = wxPathOnly(m_fileName) + "/" + m_catalog->Header().BasePath;
-
-        if (path.Last() == _T('/') || path.Last() == _T('\\'))
-            path.RemoveLast();
-
-        if (wxIsAbsolutePath(path))
-            basepath = path;
-        else
-            basepath = cwd + "/" + path;
-    }
-
-    FileViewer *w = new FileViewer(this, basepath,
-                                   entry->GetReferences(),
-                                   num);
-    if (w->FileOk())
-        w->Show(true);
-    else
-        w->Close();
+    auto entry = GetCurrentItem();
+    if (!entry)
+        return;
+    FileViewer::GetAndActivate()->ShowReferences(m_catalog, entry, num);
 }
 
 
@@ -1871,112 +2061,54 @@ void PoeditFrame::OnClearTranslation(wxCommandEvent&)
 
 void PoeditFrame::OnFind(wxCommandEvent&)
 {
-    FindFrame *f = FindFrame::Get(m_list, m_catalog);
+    if (!m_findWindow)
+        m_findWindow = new FindFrame(this, m_list, m_catalog, m_textOrig, m_textTrans, m_pluralNotebook);
 
-    if (!f)
-        f = new FindFrame(this, m_list, m_catalog, m_textOrig, m_textTrans);
-    f->Show(true);
-    f->Raise();
-    f->FocusSearchField();
+    m_findWindow->ShowForFind();
+}
+
+void PoeditFrame::OnFindAndReplace(wxCommandEvent&)
+{
+    if (!m_findWindow)
+        m_findWindow = new FindFrame(this, m_list, m_catalog, m_textOrig, m_textTrans, m_pluralNotebook);
+
+    m_findWindow->ShowForReplace();
 }
 
 void PoeditFrame::OnFindNext(wxCommandEvent&)
 {
-    FindFrame *f = FindFrame::Get(m_list, m_catalog);
-    if ( f )
-        f->FindNext();
+    if (m_findWindow)
+        m_findWindow->FindNext();
 }
 
 void PoeditFrame::OnFindPrev(wxCommandEvent&)
 {
-    FindFrame *f = FindFrame::Get(m_list, m_catalog);
-    if ( f )
-        f->FindPrev();
+    if (m_findWindow)
+        m_findWindow->FindPrev();
 }
 
 
-CatalogItem *PoeditFrame::GetCurrentItem() const
+CatalogItemPtr PoeditFrame::GetCurrentItem() const
 {
     if ( !m_catalog || !m_list )
-        return NULL;
+        return nullptr;
 
     int item = m_list->GetFirstSelectedCatalogItem();
     if ( item == -1 )
-        return NULL;
+        return nullptr;
 
     wxASSERT( item >= 0 && item < (int)m_catalog->GetCount() );
 
-    return &(*m_catalog)[item];
+    return (*m_catalog)[item];
 }
 
 
-static inline bool IsAnyQuote(wchar_t c)
-{
-    switch (c)
-    {
-        case 0x00BB: // »
-        case 0x00AB: // «
-        case 0x201C: // “
-        case 0x201D: // ”
-        case 0x201E: // „
-        case 0x201F: // ‟
-        case '"':
-            return true;
-        default:
-            return false;
-    }
-}
-
-static wxString TransformNewval(const wxString& val)
-{
-    wxString newval(val);
-
-#ifdef __WXOSX__
-    // Fix occurrences of smart quotes after \, e.g. \“ -- they shouldn't happen
-    // because we disabled smart quotes, but apparently some people either
-    // enable them back or something else interfered. So play it safe and filter
-    // them out:
-    for (wxString::iterator i = newval.begin(); i != newval.end(); ++i)
-    {
-        if (*i == '\\')
-        {
-            ++i;
-            if (i == newval.end())
-                break;
-            if (IsAnyQuote(*i))
-                *i = '"';
-        }
-    }
-#endif // __WXOSX__
-
-    newval.Replace("\n", "");
-
-    if (!newval.empty() && newval[0u] == _T('"'))
-        newval.Prepend("\\");
-    for (unsigned i = 1; i < newval.Len(); i++)
-        if (newval[i] == _T('"') && newval[i-1] != _T('\\'))
-        {
-            newval = newval.Mid(0, i) + _T("\\\"") + newval.Mid(i+1);
-            i++;
-        }
-
-    // string ending with [^\]\ is invalid:
-    if (newval.length() > 1 &&
-        newval[newval.length()-1] == _T('\\') &&
-        newval[newval.length()-2] != _T('\\'))
-    {
-        newval.RemoveLast();
-    }
-
-    return newval;
-}
-
 void PoeditFrame::UpdateFromTextCtrl()
 {
     if (!m_list || !m_list->HasSingleSelection())
         return;
 
-    CatalogItem *entry = GetCurrentItem();
+    auto entry = GetCurrentItem();
     if ( !entry )
         return;
 
@@ -1992,7 +2124,7 @@ void PoeditFrame::UpdateFromTextCtrl()
         wxArrayString str;
         for (unsigned i = 0; i < m_textTransPlural.size(); i++)
         {
-            wxString val = TransformNewval(m_textTransPlural[i]->GetValue());
+            auto val = m_textTransPlural[i]->GetPlainText();
             str.Add(val);
             if ( val.empty() )
                 allTranslated = false;
@@ -2006,8 +2138,7 @@ void PoeditFrame::UpdateFromTextCtrl()
     }
     else
     {
-        wxString newval =
-            TransformNewval(m_textTrans->GetValue());
+        auto newval = m_textTrans->GetPlainText();
 
         if ( newval.empty() )
             allTranslated = false;
@@ -2046,6 +2177,8 @@ void PoeditFrame::UpdateFromTextCtrl()
     entry->SetModified(true);
     entry->SetAutomatic(false);
 
+    m_pendingHumanEditedItem = entry;
+
     m_list->RefreshSelectedItems();
 
     if ( statisticsChanged )
@@ -2061,6 +2194,33 @@ void PoeditFrame::UpdateFromTextCtrl()
     }
 }
 
+
+void PoeditFrame::OnNewTranslationEntered(const CatalogItemPtr& item)
+{
+    if (wxConfig::Get()->ReadBool("use_tm", true))
+    {
+        auto srclang = m_catalog->GetSourceLanguage();
+        auto lang = m_catalog->GetLanguage();
+        concurrency_queue::add([=](){
+            try
+            {
+                auto tm = TranslationMemory::Get().GetWriter();
+                tm->Insert(srclang, lang, item);
+                // Note: do *not* call tm->Commit() here, because Lucene commit is
+                // expensive. Instead, wait until the file is saved with committing
+                // the changes. This way TM updates are available immediately for use
+                // in futher translations within the file, but per-item updates
+                // remain inexpensive.
+            }
+            catch (const Exception&)
+            {
+                // ignore failures here, they'll become apparent when saving the file
+            }
+        });
+    }
+}
+
+
 namespace
 {
 
@@ -2081,40 +2241,26 @@ void SetTranslationValue(TranslationTextCtrl *txt, const wxString& value, int fl
     // want UpdateFromTextCtrl() to be called from here
     EventHandlerDisabler disabler(txt->GetEventHandler());
 
-    if (flags & UndoableEdit)
-        txt->SetValueUserWritten(value);
+    if (flags & PoeditFrame::UndoableEdit)
+        txt->SetPlainTextUserWritten(value);
     else
-        txt->SetValue(value);
+        txt->SetPlainText(value);
 }
 
 } // anonymous namespace
 
 void PoeditFrame::UpdateToTextCtrl(int flags)
 {
-    CatalogItem *entry = GetCurrentItem();
+    m_pendingHumanEditedItem.reset();
+    auto entry = GetCurrentItem();
     if ( !entry )
         return;
 
-    wxString t_o, t_t, t_c, t_ac;
-    t_o = entry->GetString();
-    t_o.Replace("\\n", "\\n\n");
-    t_c = entry->GetComment();
-    t_c.Replace("\\n", "\\n\n");
-
-    for (unsigned i=0; i < entry->GetExtractedComments().GetCount(); i++)
-      t_ac += entry->GetExtractedComments()[i] + "\n";
-    t_ac.Replace("\\n", "\\n\n");
-
-    // remove "# " in front of every comment line
-    t_c = CommentDialog::RemoveStartHash(t_c);
-
-    m_textOrig->SetValue(t_o);
+    m_textOrig->SetPlainText(entry->GetString());
 
     if (entry->HasPlural())
     {
-        wxString t_op = entry->GetPluralString();
-        t_op.Replace("\\n", "\\n\n");
-        m_textOrigPlural->SetValue(t_op);
+        m_textOrigPlural->SetPlainText(entry->GetPluralString());
 
         unsigned formsCnt = (unsigned)m_textTransPlural.size();
         for (unsigned j = 0; j < formsCnt; j++)
@@ -2123,16 +2269,13 @@ void PoeditFrame::UpdateToTextCtrl(int flags)
         unsigned i = 0;
         for (i = 0; i < std::min(formsCnt, entry->GetNumberOfTranslations()); i++)
         {
-            t_t = entry->GetTranslation(i);
-            t_t.Replace("\\n", "\\n\n");
-            SetTranslationValue(m_textTransPlural[i], t_t, flags);
+            SetTranslationValue(m_textTransPlural[i], entry->GetTranslation(i), flags);
         }
     }
     else
     {
-        t_t = entry->GetTranslation();
-        t_t.Replace("\\n", "\\n\n");
-        SetTranslationValue(m_textTrans, t_t, flags);
+        if (m_textTrans)
+            SetTranslationValue(m_textTrans, entry->GetTranslation(), flags);
     }
 
     if ( entry->HasContext() )
@@ -2144,10 +2287,13 @@ void PoeditFrame::UpdateToTextCtrl(int flags)
     }
     m_labelContext->GetContainingSizer()->Show(m_labelContext, entry->HasContext());
 
-    if( entry->GetValidity() == CatalogItem::Val_Invalid )
-        m_errorBar->ShowError(entry->GetErrorString());
-    else
-        m_errorBar->HideError();
+    if (m_errorBar)
+    {
+        if( entry->GetValidity() == CatalogItem::Val_Invalid )
+            m_errorBar->ShowError(entry->GetErrorString());
+        else
+            m_errorBar->HideError();
+    }
 
     // by default, editing fuzzy item unfuzzies it
     m_dontAutoclearFuzzyStatus = false;
@@ -2165,7 +2311,7 @@ void PoeditFrame::ReadCatalog(const wxString& catalog)
     wxBusyCursor bcur;
 
     // NB: duplicated in PoeditFrame::Create()
-    Catalog *cat = new Catalog(catalog);
+    CatalogPtr cat = std::make_shared<Catalog>(catalog);
     if (cat->IsOk())
     {
         ReadCatalog(cat);
@@ -2183,47 +2329,90 @@ void PoeditFrame::ReadCatalog(const wxString& catalog)
             _("The file may be either corrupted or in a format not recognized by Poedit.")
         );
         dlg.ShowModal();
-        delete cat;
     }
 }
 
 
-void PoeditFrame::ReadCatalog(Catalog *cat)
+void PoeditFrame::ReadCatalog(const CatalogPtr& cat)
 {
     wxASSERT( cat && cat->IsOk() );
 
+    {
 #ifdef __WXMSW__
-    wxWindowUpdateLocker no_updates(this);
+        wxWindowUpdateLocker no_updates(this);
 #endif
 
-    delete m_catalog;
-    m_catalog = cat;
+        m_catalog = cat;
+        m_pendingHumanEditedItem.reset();
 
-    if (m_catalog->empty())
-    {
-        EnsureContentView(Content::Empty_PO);
-    }
-    else
-    {
-        EnsureContentView(Content::PO);
-        // This must be done as soon as possible, otherwise the list would be
-        // confused. GetCurrentItem() could return nullptr or something invalid,
-        // causing crash in UpdateToTextCtrl() called from
-        // RecreatePluralTextCtrls() just few lines below.
-        NotifyCatalogChanged(m_catalog);
+        if (m_catalog->empty())
+        {
+            EnsureContentView(Content::Empty_PO);
+        }
+        else
+        {
+            EnsureAppropriateContentView();
+            // This must be done as soon as possible, otherwise the list would be
+            // confused. GetCurrentItem() could return nullptr or something invalid,
+            // causing crash in UpdateToTextCtrl() called from
+            // RecreatePluralTextCtrls() just few lines below.
+            NotifyCatalogChanged(m_catalog);
+        }
+
+        m_fileExistsOnDisk = true;
+        m_modified = false;
+
+        RecreatePluralTextCtrls();
+        RefreshControls(Refresh_NoCatalogChanged /*done right above*/);
+        UpdateTitle();
+        UpdateTextLanguage();
+
+#ifdef HAVE_HTTP_CLIENT
+        m_toolbar->EnableSyncWithCrowdin(m_catalog->IsFromCrowdin());
+#endif
+
+        NoteAsRecentFile();
+
+        if (cat->HasCapability(Catalog::Cap::Translations))
+            WarnAboutLanguageIssues();
     }
 
-    m_fileName = cat->GetFileName();
-    m_fileExistsOnDisk = true;
-    m_modified = false;
+    FixDuplicatesIfPresent();
+}
 
-    RecreatePluralTextCtrls();
-    RefreshControls(Refresh_NoCatalogChanged /*done right above*/);
-    UpdateTitle();
-    UpdateTextLanguage();
+void PoeditFrame::FixDuplicatesIfPresent()
+{
+    // Poedit always produces good files, so don't bother:
+    if (m_catalog->Header().GetHeader("X-Generator").StartsWith("Poedit "))
+        return;
+
+    if (!m_catalog->HasDuplicateItems())
+        return; // good
+
+    // Fix duplicates and explain the changes to the user:
+    m_catalog->FixDuplicateItems();
+    NotifyCatalogChanged(m_catalog);
 
-    Language language = m_catalog->GetLanguage();
-    if (!language.IsValid())
+    wxWindowPtr<wxMessageDialog> dlg(
+        new wxMessageDialog
+            (
+                this,
+                wxString::Format(_(L"Poedit automatically fixed invalid content in the file “%s”."), wxFileName(GetFileName()).GetFullName()),
+                _("Invalid file"),
+                wxOK | wxICON_INFORMATION
+            )
+    );
+    dlg->SetExtendedMessage(_("The file contained duplicate items, which is not allowed in PO files and would prevent the file from being used. Poedit fixed the issue, but you should review translations of any items marked as fuzzy and correct them if necessary."));
+    dlg->ShowWindowModalThenDo([dlg](int){});
+
+}
+
+void PoeditFrame::WarnAboutLanguageIssues()
+{
+    Language srclang = m_catalog->GetSourceLanguage();
+    Language lang = m_catalog->GetLanguage();
+
+    if (!lang.IsValid())
     {
         AttentionMessage msg
             (
@@ -2233,13 +2422,29 @@ void PoeditFrame::ReadCatalog(Catalog *cat)
             );
         msg.AddAction(MSW_OR_OTHER(_("Set language"), _("Set Language")),
                       [=]{ EditCatalogProperties(); });
+        // TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)."
+        msg.SetExplanation(_("Suggestions are not available if the translation language is not set correctly. Other features, such as plural forms, may be affected as well."));
+        m_attentionBar->ShowMessage(msg);
+    }
+
+    if (lang.IsValid() && srclang.IsValid() && lang == srclang)
+    {
+        AttentionMessage msg
+            (
+                "same-language-as-source",
+                AttentionMessage::Warning,
+                _("Language of the translation is the same as source language.")
+            );
+        msg.SetExplanation(_("Suggestions are not available if the translation language is not set correctly. Other features, such as plural forms, may be affected as well."));
+        msg.AddAction(MSW_OR_OTHER(_("Fix language"), _("Fix Language")),
+                      [=]{ EditCatalogProperties(); });
 
         m_attentionBar->ShowMessage(msg);
     }
 
     // check if plural forms header is correct (only if the language is set,
     // otherwise setting the language will fix this issue too):
-    if ( language.IsValid() && m_catalog->HasPluralItems() )
+    if ( lang.IsValid() && m_catalog->HasPluralItems() )
     {
         wxString err;
 
@@ -2286,12 +2491,12 @@ void PoeditFrame::ReadCatalog(Catalog *cat)
         }
         else // no error, check for warning-worthy stuff
         {
-            if ( language.IsValid() )
+            if ( lang.IsValid() )
             {
                 // Check for unusual plural forms. Do some normalization to avoid unnecessary
                 // complains when the only differences are in whitespace for example.
                 wxString pl1 = plForms;
-                wxString pl2 = language.DefaultPluralFormsExpr();
+                wxString pl2 = lang.DefaultPluralFormsExpr();
                 if (!pl2.empty())
                 {
                     pl1.Replace(" ", "");
@@ -2318,9 +2523,10 @@ void PoeditFrame::ReadCatalog(Catalog *cat)
                                     // would see e.g. in a list of supported languages). You may need
                                     // to rephrase it, e.g. to an equivalent of "for language %s".
                                     _("Plural forms expression used by the catalog is unusual for %s."),
-                                    language.DisplayName()
+                                    lang.DisplayName()
                                 )
                             );
+                        // TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the catalog is unusual for %s.")"
                         msg.AddAction(_("Review"), [=]{ EditCatalogProperties(); });
                         msg.AddDontShowAgain();
 
@@ -2330,17 +2536,15 @@ void PoeditFrame::ReadCatalog(Catalog *cat)
             }
         }
     }
-
-    NoteAsRecentFile();
 }
 
 
 void PoeditFrame::NoteAsRecentFile()
 {
-    wxFileName fn(m_fileName);
+    wxFileName fn(GetFileName());
     fn.Normalize(wxPATH_NORM_DOTS | wxPATH_NORM_ABSOLUTE);
 #ifdef __WXOSX__
-    [[NSDocumentController sharedDocumentController] noteNewRecentDocumentURL:[NSURL fileURLWithPath:wxStringToNS(fn.GetFullPath())]];
+    [[NSDocumentController sharedDocumentController] noteNewRecentDocumentURL:[NSURL fileURLWithPath:str::to_NS(fn.GetFullPath())]];
 #else
     FileHistory().AddFileToHistory(fn.GetFullPath());
 #endif
@@ -2355,13 +2559,12 @@ void PoeditFrame::RefreshControls(int flags)
     m_hasObsoleteItems = false;
     if (!m_catalog->IsOk())
     {
-        wxLogError(_("Error loading message catalog file '%s'."), m_fileName.c_str());
-        m_fileName.clear();
+        wxLogError(_("Error loading message catalog file '%s'."), m_catalog->GetFileName());
         m_fileExistsOnDisk = false;
         UpdateMenu();
         UpdateTitle();
-        delete m_catalog;
-        m_catalog = nullptr;
+        m_catalog.reset();
+        m_pendingHumanEditedItem.reset();
         NotifyCatalogChanged(nullptr);
         return;
     }
@@ -2375,9 +2578,8 @@ void PoeditFrame::RefreshControls(int flags)
         if (!(flags & Refresh_NoCatalogChanged))
             m_list->CatalogChanged(m_catalog);
 
-        FindFrame *f = FindFrame::Get(m_list, m_catalog);
-        if (f)
-            f->Reset(m_catalog);
+        if (m_findWindow)
+            m_findWindow->Reset(m_catalog);
     }
 
     UpdateTitle();
@@ -2386,7 +2588,7 @@ void PoeditFrame::RefreshControls(int flags)
 }
 
 
-void PoeditFrame::NotifyCatalogChanged(Catalog *cat)
+void PoeditFrame::NotifyCatalogChanged(const CatalogPtr& cat)
 {
     if (m_sidebar)
         m_sidebar->ResetCatalog();
@@ -2397,27 +2599,35 @@ void PoeditFrame::NotifyCatalogChanged(Catalog *cat)
 
 void PoeditFrame::UpdateStatusBar()
 {
-    if (m_catalog)
+    auto bar = GetStatusBar();
+    if (m_catalog && bar)
     {
         int all, fuzzy, untranslated, errors, unfinished;
         m_catalog->GetStatistics(&all, &fuzzy, &errors, &untranslated, &unfinished);
 
-        int percent = (all == 0) ? 0 : (100 * (all - unfinished) / all);
-
         wxString text;
-        text.Printf(_("Translated: %d of %d (%d %%)"), all - unfinished, all, percent);
-        if (unfinished > 0)
+        if (m_catalog->HasCapability(Catalog::Cap::Translations))
         {
-            text += L"  •  ";
-            text += wxString::Format(_("Remaining: %d"), unfinished);
+            int percent = (all == 0) ? 0 : (100 * (all - unfinished) / all);
+
+            text.Printf(_("Translated: %d of %d (%d %%)"), all - unfinished, all, percent);
+            if (unfinished > 0)
+            {
+                text += L"  •  ";
+                text += wxString::Format(_("Remaining: %d"), unfinished);
+            }
+            if (errors > 0)
+            {
+                text += L"  •  ";
+                text += wxString::Format(wxPLURAL("%d error", "%d errors", errors), errors);
+            }
         }
-        if (errors > 0)
+        else
         {
-            text += L"  •  ";
-            text += wxString::Format(wxPLURAL("%d error", "%d errors", errors), errors);
+            text.Printf(wxPLURAL("%d entry", "%d entries", all), all);
         }
 
-        GetStatusBar()->SetStatusText(text);
+        bar->SetStatusText(text);
     }
 }
 
@@ -2437,13 +2647,14 @@ void PoeditFrame::UpdateTitle()
 #endif
 
     wxString title;
-    if ( !m_fileName.empty() )
+    auto fileName = GetFileName();
+    if ( !fileName.empty() )
     {
-        wxFileName fn(m_fileName);
+        wxFileName fn(GetFileName());
         wxString fpath = fn.GetFullName();
 
         if (m_fileExistsOnDisk)
-            SetRepresentedFilename(m_fileName);
+            SetRepresentedFilename(fileName);
         else
             fpath += _(" (unsaved)");
 
@@ -2482,36 +2693,36 @@ void PoeditFrame::UpdateMenu()
     wxMenuBar *menubar = GetMenuBar();
 
     const bool hasCatalog = m_catalog != nullptr;
-    const bool editable = hasCatalog && !m_catalog->empty();
+    const bool nonEmpty = hasCatalog && !m_catalog->empty();
+    const bool editable = nonEmpty && m_catalog->HasCapability(Catalog::Cap::Translations);
 
-    menubar->Enable(XRCID("menu_compile_mo"), hasCatalog);
+    menubar->Enable(XRCID("menu_compile_mo"), hasCatalog && m_catalog->GetFileType() == Catalog::Type::PO);
     menubar->Enable(XRCID("menu_export"), hasCatalog);
 
-    menubar->Enable(XRCID("menu_comment"), editable);
-    menubar->Enable(XRCID("menu_copy_from_src"), editable);
-    menubar->Enable(XRCID("menu_clear"), editable);
-    menubar->Enable(XRCID("menu_references"), editable);
-    menubar->Enable(wxID_FIND, editable);
-    menubar->Enable(XRCID("menu_find_next"), editable);
-    menubar->Enable(XRCID("menu_find_prev"), editable);
+    menubar->Enable(XRCID("menu_references"), nonEmpty);
+    menubar->Enable(wxID_FIND, nonEmpty);
+    menubar->Enable(wxID_REPLACE, nonEmpty);
+    menubar->Enable(XRCID("menu_find_next"), nonEmpty);
+    menubar->Enable(XRCID("menu_find_prev"), nonEmpty);
 
     menubar->Enable(XRCID("menu_auto_translate"), editable);
     menubar->Enable(XRCID("menu_purge_deleted"), editable);
     menubar->Enable(XRCID("menu_validate"), editable);
     menubar->Enable(XRCID("menu_catproperties"), hasCatalog);
 
-    menubar->Enable(XRCID("menu_ids"), editable);
+    menubar->Enable(XRCID("menu_ids"), nonEmpty);
 
-    menubar->Enable(XRCID("sort_by_order"), editable);
-    menubar->Enable(XRCID("sort_by_source"), editable);
+    menubar->Enable(XRCID("sort_by_order"), nonEmpty);
+    menubar->Enable(XRCID("sort_by_source"), nonEmpty);
     menubar->Enable(XRCID("sort_by_translation"), editable);
-    menubar->Enable(XRCID("sort_group_by_context"), editable);
+    menubar->Enable(XRCID("sort_group_by_context"), nonEmpty);
     menubar->Enable(XRCID("sort_untrans_first"), editable);
+    menubar->Enable(XRCID("sort_errors_first"), editable);
 
     if (m_textTrans)
         m_textTrans->Enable(editable);
     if (m_list)
-        m_list->Enable(editable);
+        m_list->Enable(nonEmpty);
 
     menubar->Enable(XRCID("menu_purge_deleted"),
                     editable && m_catalog->HasDeletedItems());
@@ -2551,14 +2762,15 @@ void PoeditFrame::WriteCatalog(const wxString& catalog, TFunctor completionHandl
 {
     wxBusyCursor bcur;
 
-    std::future<void> tmUpdateThread;
-    if (wxConfig::Get()->ReadBool("use_tm", true))
+    concurrency_queue::future<void> tmUpdateThread;
+    if (wxConfig::Get()->ReadBool("use_tm", true) &&
+        m_catalog->HasCapability(Catalog::Cap::Translations))
     {
-        tmUpdateThread = std::async(std::launch::async, [=](){
+        tmUpdateThread = concurrency_queue::add([=]{
             try
             {
-                auto tm = TranslationMemory::Get().CreateWriter();
-                tm->Insert(*m_catalog);
+                auto tm = TranslationMemory::Get().GetWriter();
+                tm->Insert(m_catalog);
                 tm->Commit();
             }
             catch ( const Exception& e )
@@ -2572,24 +2784,28 @@ void PoeditFrame::WriteCatalog(const wxString& catalog, TFunctor completionHandl
         });
     }
 
-    Catalog::HeaderData& dt = m_catalog->Header();
-    dt.Translator = wxConfig::Get()->Read("translator_name", dt.Translator);
-    dt.TranslatorEmail = wxConfig::Get()->Read("translator_email", dt.TranslatorEmail);
+    if (m_catalog->GetFileType() == Catalog::Type::PO)
+    {
+        Catalog::HeaderData& dt = m_catalog->Header();
+        dt.Translator = wxConfig::Get()->Read("translator_name", dt.Translator);
+        dt.TranslatorEmail = wxConfig::Get()->Read("translator_email", dt.TranslatorEmail);
+    }
 
     int validation_errors = 0;
     Catalog::CompilationStatus mo_compilation_status = Catalog::CompilationStatus::NotDone;
     if ( !m_catalog->Save(catalog, true, validation_errors, mo_compilation_status) )
     {
+        if (is_future_valid(tmUpdateThread))
+            tmUpdateThread.wait();
         completionHandler(false);
         return;
     }
 
-    m_fileName = catalog;
     m_modified = false;
     m_fileExistsOnDisk = true;
 
 #ifndef __WXOSX__
-    FileHistory().AddFileToHistory(m_fileName);
+    FileHistory().AddFileToHistory(GetFileName());
 #endif
 
     UpdateTitle();
@@ -2599,9 +2815,12 @@ void PoeditFrame::WriteCatalog(const wxString& catalog, TFunctor completionHandl
     NoteAsRecentFile();
 
     if (ManagerFrame::Get())
-        ManagerFrame::Get()->NotifyFileChanged(m_fileName);
+        ManagerFrame::Get()->NotifyFileChanged(GetFileName());
+
+    if (is_future_valid(tmUpdateThread))
+        tmUpdateThread.wait();
 
-    if ( validation_errors )
+    if (validation_errors)
     {
         // Note: this may show window-modal window and because we may
         //       be called from such window too, run this in the next
@@ -2621,7 +2840,7 @@ void PoeditFrame::WriteCatalog(const wxString& catalog, TFunctor completionHandl
 
 void PoeditFrame::OnEditComment(wxCommandEvent& event)
 {
-    CatalogItem *firstItem = GetCurrentItem();
+    auto firstItem = GetCurrentItem();
     wxCHECK_RET( firstItem, "no entry selected" );
 
     (void)event;
@@ -2690,7 +2909,7 @@ void PoeditFrame::OnPurgeDeleted(wxCommandEvent& WXUNUSED(event))
 
 void PoeditFrame::OnSuggestion(wxCommandEvent& event)
 {
-    CatalogItem *entry = GetCurrentItem();
+    auto entry = GetCurrentItem();
     if (!entry)
         return;
 
@@ -2722,8 +2941,10 @@ void PoeditFrame::OnAutoTranslateAll(wxCommandEvent&)
     sizer->Add(new HeadingLabel(dlg.get(), _("Fill missing translations from TM")), wxSizerFlags().Expand().PXDoubleBorder(wxBOTTOM));
 #endif
     sizer->Add(onlyExact, wxSizerFlags().PXBorder(wxTOP));
+    sizer->AddSpacer(PX(1));
     sizer->Add(onlyExactE, wxSizerFlags().Expand().Border(wxLEFT, ExplanationLabel::CHECKBOX_INDENT));
     sizer->Add(noFuzzy, wxSizerFlags().PXDoubleBorder(wxTOP));
+    sizer->AddSpacer(PX(1));
     sizer->Add(noFuzzyE, wxSizerFlags().Expand().Border(wxLEFT, ExplanationLabel::CHECKBOX_INDENT));
     topsizer->Add(sizer, wxSizerFlags(1).Expand().PXDoubleBorderAll());
 
@@ -2817,54 +3038,71 @@ bool PoeditFrame::AutoTranslateCatalog(int *matchesCount, const T& range, int fl
     wxBusyCursor bcur;
 
     TranslationMemory& tm = TranslationMemory::Get();
+    auto srclang = m_catalog->GetSourceLanguage();
     auto lang = m_catalog->GetLanguage();
 
-    int matches = 0;
-    wxString msg;
-
     // TODO: make this window-modal
     ProgressInfo progress(this, _("Translating"));
     progress.UpdateMessage(_("Filling missing translations from TM..."));
-    progress.SetGaugeMax((int)range.size());
-    for (int i: range)
-    {
-        progress.UpdateGauge();
 
-        CatalogItem& dt = (*m_catalog)[i];
-        if (dt.HasPlural())
-            continue; // can't handle yet (TODO?)
-        if (dt.IsFuzzy() || !dt.IsTranslated())
+    // Function to apply fetched suggestions to a catalog item:
+    auto process_results = [=](CatalogItemPtr dt, const SuggestionsList& results) -> bool
         {
-            auto results = tm.Search(lang, dt.GetString().ToStdWstring());
             if (results.empty())
-                continue;
-
+                return false;
             auto& res = results.front();
             if ((flags & AutoTranslate_OnlyExact) && !res.IsExactMatch())
-                continue;
+                return false;
 
-            if ((flags & AutoTranslate_OnlyGoodQuality) && res.score < 0.75)
-                continue;
+            if ((flags & AutoTranslate_OnlyGoodQuality) && res.score < 0.80)
+                return false;
 
-            dt.SetTranslation(res.text);
-            dt.SetAutomatic(true);
-            dt.SetFuzzy(!res.IsExactMatch() || (flags & AutoTranslate_ExactNotFuzzy) == 0);
+            dt->SetTranslation(res.text);
+            dt->SetAutomatic(true);
+            dt->SetFuzzy(!res.IsExactMatch() || (flags & AutoTranslate_ExactNotFuzzy) == 0);
+            return true;
+        };
 
-            matches++;
-            msg.Printf(wxPLURAL("Translated %u string", "Translated %u strings", matches), matches);
-            progress.UpdateMessage(msg);
+    std::vector<concurrency_queue::future<bool>> operations;
+    for (int i: range)
+    {
+        auto dt = (*m_catalog)[i];
+        if (dt->HasPlural())
+            continue; // can't handle yet (TODO?)
+        if (dt->IsTranslated() && !dt->IsFuzzy())
+            continue;
 
-            if (m_modified == false)
-            {
-                m_modified = true;
-                UpdateTitle();
-            }
+        operations.push_back(concurrency_queue::add([=,&tm]{
+            auto results = tm.Search(srclang, lang, dt->GetString().ToStdWstring());
+            bool ok = process_results(dt, results);
+            return ok;
+        }));
+    }
+
+    progress.SetGaugeMax((int)operations.size());
+
+    int matches = 0;
+    for (auto& op: operations)
+    {
+        if (!progress.UpdateGauge())
+            break; // TODO: cancel pending 'operations' futures
+
+        if (op.get())
+        {
+            matches++;
+            progress.UpdateMessage(wxString::Format(wxPLURAL("Translated %u string", "Translated %u strings", matches), matches));
         }
     }
 
     if (matchesCount)
         *matchesCount = matches;
 
+    if (matches && !m_modified)
+    {
+        m_modified = true;
+        UpdateTitle();
+    }
+
     RefreshControls();
 
     return true;
@@ -2876,7 +3114,7 @@ wxMenu *PoeditFrame::GetPopupMenu(int item)
     if (!m_catalog) return NULL;
     if (item < 0 || item >= (int)m_list->GetItemCount()) return NULL;
 
-    const wxArrayString& refs = (*m_catalog)[item].GetReferences();
+    const wxArrayString& refs = (*m_catalog)[item]->GetReferences();
     wxMenu *menu = new wxMenu;
 
     menu->Append(XRCID("menu_copy_from_src"),
@@ -2927,6 +3165,9 @@ wxMenu *PoeditFrame::GetPopupMenu(int item)
 
 static inline void SetCtrlFont(wxWindow *win, const wxFont& font)
 {
+    if (!win)
+        return;
+
 #ifdef __WXMSW__
     // Native wxMSW text control sends EN_CHANGE when the font changes,
     // producing a wxEVT_TEXT event as if the user changed the value.
@@ -3032,16 +3273,19 @@ void PoeditFrame::ShowPluralFormUI(bool show)
     origSizer->Show(m_textOrigPlural, show);
     origSizer->Layout();
 
-    wxSizer *textSizer = m_textTrans->GetContainingSizer();
-    textSizer->Show(m_textTrans, !show);
-    textSizer->Show(m_pluralNotebook, show);
-    textSizer->Layout();
+    if (m_textTrans && m_pluralNotebook)
+    {
+        wxSizer *textSizer = m_textTrans->GetContainingSizer();
+        textSizer->Show(m_textTrans, !show);
+        textSizer->Show(m_pluralNotebook, show);
+        textSizer->Layout();
+    }
 }
 
 
 void PoeditFrame::RecreatePluralTextCtrls()
 {
-    if (!m_catalog || !m_list)
+    if (!m_catalog || !m_list || !m_pluralNotebook)
         return;
 
     for (size_t i = 0; i < m_textTransPlural.size(); i++)
@@ -3090,17 +3334,33 @@ void PoeditFrame::RecreatePluralTextCtrls()
             desc.Printf(_("Form %i"), form);
         else if (examplesCnt == 1)
         {
-            if (firstExample == 0)
-                desc = _("Zero");
-            else if (firstExample == 1)
-                desc = _("One");
-            else if (firstExample == 2)
-                desc = _("Two");
+            if (formsCount == 2 && firstExample == 1) // English-like
+            {
+                desc = _("Singular");
+            }
             else
-                desc.Printf(L"n = %s", examples);
+            {
+                if (firstExample == 0)
+                    desc = _("Zero");
+                else if (firstExample == 1)
+                    desc = _("One");
+                else if (firstExample == 2)
+                    desc = _("Two");
+                else
+                    desc.Printf(L"n = %s", examples);
+            }
+        }
+        else if (formsCount == 2 && examplesCnt == 2 && firstExample == 0 && examples == "0, 1")
+        {
+            desc = _("Singular");
         }
         else if (formsCount == 2 && firstExample != 1 && examplesCnt == maxExamplesCnt)
-            desc = _("Other");
+        {
+            if (firstExample == 0 || firstExample == 2)
+                desc = _("Plural");
+            else
+                desc = _("Other");
+        }
         else
             desc.Printf(L"n → %s", examples);
 
@@ -3149,7 +3409,7 @@ void PoeditFrame::OnListRightClick(wxMouseEvent& event)
 
 void PoeditFrame::OnListFocus(wxFocusEvent& event)
 {
-    if (g_focusToText)
+    if (g_focusToText && m_textTrans != nullptr)
     {
         if (m_textTrans->IsShown())
             m_textTrans->SetFocus();
@@ -3295,6 +3555,12 @@ void PoeditFrame::OnSortUntranslatedFirst(wxCommandEvent& event)
     m_list->Sort();
 }
 
+void PoeditFrame::OnSortErrorsFirst(wxCommandEvent& event)
+{
+    m_list->sortOrder.errorsFirst = event.IsChecked();
+    m_list->Sort();
+}
+
 
 void PoeditFrame::OnShowHideSidebar(wxCommandEvent&)
 {
@@ -3314,6 +3580,7 @@ void PoeditFrame::OnShowHideSidebar(wxCommandEvent&)
     wxConfigBase::Get()->Write("/sidebar_shown", toShow);
 
 }
+
 void PoeditFrame::OnUpdateShowHideSidebar(wxUpdateUIEvent& event)
 {
     event.Enable(m_sidebar != nullptr);
@@ -3332,12 +3599,51 @@ void PoeditFrame::OnUpdateShowHideSidebar(wxUpdateUIEvent& event)
 #endif
 }
 
+void PoeditFrame::OnShowHideStatusbar(wxCommandEvent&)
+{
+    auto bar = GetStatusBar();
+    bool toShow = (bar == nullptr);
+
+    if (toShow)
+    {
+        CreateStatusBar(1, wxST_SIZEGRIP);
+        UpdateStatusBar();
+    }
+    else
+    {
+        SetStatusBar(nullptr);
+        bar->Destroy();
+    }
+
+    wxConfigBase::Get()->Write("/statusbar_shown", toShow);
+}
+
+void PoeditFrame::OnUpdateShowHideStatusbar(wxUpdateUIEvent& event)
+{
+    bool shown = GetStatusBar() != nullptr;
+#ifdef __WXOSX__
+    auto shortcut = "\tCtrl+/";
+    if (shown)
+        event.SetText(_("Hide Status Bar") + shortcut);
+    else
+        event.SetText(_("Show Status Bar") + shortcut);
+#else
+    event.Check(shown);
+#endif
+}
+
 
 void PoeditFrame::OnSelectionUpdate(wxUpdateUIEvent& event)
 {
     event.Enable(m_catalog && m_list && m_list->HasSelection());
 }
 
+void PoeditFrame::OnSelectionUpdateEditable(wxUpdateUIEvent& event)
+{
+    event.Enable(m_catalog && m_list && m_list->HasSelection() &&
+                 m_catalog->HasCapability(Catalog::Cap::Translations));
+}
+
 void PoeditFrame::OnSingleSelectionUpdate(wxUpdateUIEvent& event)
 {
     event.Enable(m_catalog && m_list && m_list->HasSingleSelection());
@@ -3345,17 +3651,19 @@ void PoeditFrame::OnSingleSelectionUpdate(wxUpdateUIEvent& event)
 
 void PoeditFrame::OnHasCatalogUpdate(wxUpdateUIEvent& event)
 {
-    event.Enable(m_catalog);
+    event.Enable(m_catalog != nullptr);
 }
 
 void PoeditFrame::OnIsEditableUpdate(wxUpdateUIEvent& event)
 {
-    event.Enable(m_catalog && !m_catalog->empty());
+    event.Enable(m_catalog && !m_catalog->empty() &&
+                 m_catalog->HasCapability(Catalog::Cap::Translations));
 }
 
-void PoeditFrame::OnUpdateFromSourcesUpdate(wxUpdateUIEvent& event)
+void PoeditFrame::OnEditCommentUpdate(wxUpdateUIEvent& event)
 {
-    event.Enable(m_catalog && !m_catalog->Header().SearchPaths.empty());
+    event.Enable(m_catalog && m_list && m_list->HasSelection() &&
+                 m_catalog->HasCapability(Catalog::Cap::UserComments));
 }
 
 #if defined(__WXMSW__) || defined(__WXGTK__)
@@ -3389,28 +3697,27 @@ void PoeditFrame::OnTextEditingCommandUpdate(wxUpdateUIEvent& event)
 namespace
 {
 
-bool Pred_AnyItem(const CatalogItem&)
+bool Pred_AnyItem(const CatalogItemPtr&)
 {
     return true;
 }
 
-bool Pred_UnfinishedItem(const CatalogItem& item)
+bool Pred_UnfinishedItem(const CatalogItemPtr& item)
 {
-    return !item.IsTranslated() ||
-           item.IsFuzzy() ||
-           item.GetValidity() == CatalogItem::Val_Invalid;
+    return !item->IsTranslated() ||
+           item->IsFuzzy() ||
+           item->GetValidity() == CatalogItem::Val_Invalid;
 }
 
 } // anonymous namespace
 
-
-void PoeditFrame::Navigate(int step, NavigatePredicate predicate, bool wrap)
+long PoeditFrame::NavigateGetNextItem(const long start,
+                                      int step, PoeditFrame::NavigatePredicate predicate, bool wrap,
+                                      CatalogItemPtr *out_item)
 {
     const int count = m_list ? m_list->GetItemCount() : 0;
     if ( !count )
-        return;
-
-    const long start = m_list->GetFirstSelected();
+        return -1;
 
     long i = start;
 
@@ -3423,28 +3730,38 @@ void PoeditFrame::Navigate(int step, NavigatePredicate predicate, bool wrap)
             if ( wrap )
                 i += count;
             else
-                return; // nowhere to go
+                return -1; // nowhere to go
         }
         else if ( i >= count )
         {
             if ( wrap )
                 i -= count;
             else
-                return; // nowhere to go
+                return -1; // nowhere to go
         }
 
         if ( i == start )
-            return; // nowhere to go
+            return -1; // nowhere to go
 
-        const CatalogItem& item = m_list->ListIndexToCatalogItem(i);
+        auto item = m_list->ListIndexToCatalogItem(i);
         if ( predicate(item) )
         {
-            m_list->SelectOnly(i);
-            return;
+            if (out_item)
+                *out_item = item;
+            return i;
         }
     }
 }
 
+void PoeditFrame::Navigate(int step, NavigatePredicate predicate, bool wrap)
+{
+    auto i = NavigateGetNextItem(m_list->GetFirstSelected(), step, predicate, wrap, nullptr);
+    if (i == -1)
+        return;
+
+    m_list->SelectOnly(i);
+}
+
 void PoeditFrame::OnPrev(wxCommandEvent&)
 {
     Navigate(-1, Pred_AnyItem, /*wrap=*/false);
@@ -3483,6 +3800,9 @@ void PoeditFrame::OnDoneAndNext(wxCommandEvent&)
             UpdateTitle();
             UpdateStatusBar();
         }
+
+        // do additional processing of finished translations, such as adding it to the TM:
+        m_pendingHumanEditedItem = item;
     }
 
     // like "next unfinished", but wraps
diff --git a/src/edframe.h b/src/edframe.h
index e71b0b8..76f6c0b 100644
--- a/src/edframe.h
+++ b/src/edframe.h
@@ -55,6 +55,7 @@ class TranslationTextCtrl;
 class PoeditFrame;
 class AttentionBar;
 class ErrorBar;
+class FindFrame;
 class MainToolbar;
 class Sidebar;
 
@@ -94,7 +95,9 @@ class PoeditFrame : public wxFrame
 
         /// Returns active PoeditFrame, if it is unused (i.e. not showing
         /// content, not having catalog loaded); NULL otherwise.
-        static PoeditFrame *UnusedActiveWindow();
+        static PoeditFrame *UnusedActiveWindow() { return UnusedWindow(true); }
+        /// Ditto, but not required to be active
+        static PoeditFrame *UnusedWindow(bool active);
 
         /// Returns true if at least one one window has unsaved changes
         static bool AnyWindowIsModified();
@@ -107,13 +110,16 @@ class PoeditFrame : public wxFrame
         /// Reads catalog, refreshes controls, takes ownership of catalog.
         void ReadCatalog(const wxString& catalog);
         /// Reads catalog, refreshes controls, takes ownership of catalog.
-        void ReadCatalog(Catalog *cat);
+        void ReadCatalog(const CatalogPtr& cat);
         /// Writes catalog.
         void WriteCatalog(const wxString& catalog);
 
         template<typename TFunctor>
         void WriteCatalog(const wxString& catalog, TFunctor completionHandler);
 
+        void FixDuplicatesIfPresent();
+        void WarnAboutLanguageIssues();
+
         /// Did the user modify the catalog?
         bool IsModified() const { return m_modified; }
         /** Updates catalog and sets m_modified flag. Updates from POT
@@ -130,6 +136,24 @@ class PoeditFrame : public wxFrame
         void EditCatalogProperties();
         void EditCatalogPropertiesAndUpdateFromSources();
 
+        /// Returns currently selected (edited) item
+        CatalogItemPtr GetCurrentItem() const;
+
+        /// Flags for UpdateToTextCtrl()
+        enum UpdateToTextCtrlFlags
+        {
+            /// Change to textctrl should be undoable by the user
+            UndoableEdit = 0x01,
+            /// Change is due to item change, discard undo buffer
+            ItemChanged = 0x02
+        };
+
+        /// Puts text from catalog & listctrl to textctrls.
+        void UpdateToTextCtrl(int flags);
+
+        /// Puts text from textctrls to catalog & listctrl.
+        void UpdateFromTextCtrl();
+
     private:
         /** Ctor.
             \param catalog filename of catalog to open. If empty, starts
@@ -143,6 +167,7 @@ class PoeditFrame : public wxFrame
             Invalid, // no content whatsoever
             Welcome,
             PO,
+            POT,
             Empty_PO
         };
         Content m_contentType;
@@ -153,7 +178,10 @@ class PoeditFrame : public wxFrame
         /// Ensures creation of specified content view, destroying the
         /// current content if necessary
         void EnsureContentView(Content type);
-        wxWindow* CreateContentViewPO();
+        void EnsureAppropriateContentView();
+        wxWindow* CreateContentViewPO(Content type);
+        void CreateContentViewEditControls(wxWindow *p, wxBoxSizer *panelSizer);
+        void CreateContentViewTemplateControls(wxWindow *p, wxBoxSizer *panelSizer);
         wxWindow* CreateContentViewWelcome();
         wxWindow* CreateContentViewEmptyPO();
         void DestroyContentView();
@@ -165,14 +193,12 @@ class PoeditFrame : public wxFrame
         /// Refreshes controls.
         enum { Refresh_NoCatalogChanged = 1 };
         void RefreshControls(int flags = 0);
-        void NotifyCatalogChanged(Catalog *cat);
+        void NotifyCatalogChanged(const CatalogPtr& cat);
 
         /// Sets controls custom fonts.
         void SetCustomFonts();
         void SetAccelerators();
 
-        CatalogItem *GetCurrentItem() const;
-
         // if there's modified catalog, ask user to save it; return true
         // if it's save to discard m_catalog and load new data
         template<typename TFunctor>
@@ -183,11 +209,6 @@ class PoeditFrame : public wxFrame
         // implements opening of files, without asking user
         void DoOpenFile(const wxString& filename);
 
-        /// Puts text from textctrls to catalog & listctrl.
-        void UpdateFromTextCtrl();
-        /// Puts text from catalog & listctrl to textctrls.
-        void UpdateToTextCtrl(int flags);
-
         /// Updates statistics in statusbar.
         void UpdateStatusBar();
         /// Updates frame title.
@@ -205,7 +226,8 @@ class PoeditFrame : public wxFrame
         void InitSpellchecker();
 
         // navigation to another item in the list
-        typedef bool (*NavigatePredicate)(const CatalogItem& item);
+        typedef bool (*NavigatePredicate)(const CatalogItemPtr& item);
+        long NavigateGetNextItem(const long start, int step, NavigatePredicate predicate, bool wrap, CatalogItemPtr *out_item);
         void Navigate(int step, NavigatePredicate predicate, bool wrap);
         void OnDoneAndNext(wxCommandEvent&);
         void OnPrev(wxCommandEvent&);
@@ -220,8 +242,10 @@ public: // for PoeditApp
         void OnNew(wxCommandEvent& event);
         void NewFromScratch();
         void NewFromPOT();
+        void NewFromPOT(const wxString& pot_file, Language language = Language());
 
         void OnOpen(wxCommandEvent& event);
+        void OnOpenFromCrowdin(wxCommandEvent& event);
 #ifndef __WXOSX__
         void OnOpenHist(wxCommandEvent& event);
         void OnCloseCmd(wxCommandEvent& event);
@@ -229,10 +253,20 @@ public: // for PoeditApp
 private:
         void OnSave(wxCommandEvent& event);
         void OnSaveAs(wxCommandEvent& event);
-        wxString GetSaveAsFilename(Catalog *cat, const wxString& current);
+        template<typename F>
+        void GetSaveAsFilenameThenDo(const CatalogPtr& cat, F then);
         void DoSaveAs(const wxString& filename);
         void OnProperties(wxCommandEvent& event);
-        void OnUpdate(wxCommandEvent& event);
+
+        void OnUpdateFromSources(wxCommandEvent& event);
+        void OnUpdateFromSourcesUpdate(wxUpdateUIEvent& event);
+        void OnUpdateFromPOT(wxCommandEvent& event);
+        void OnUpdateFromPOTUpdate(wxUpdateUIEvent& event);
+        void OnUpdateFromCrowdin(wxCommandEvent& event);
+        void OnUpdateFromCrowdinUpdate(wxUpdateUIEvent& event);
+        void OnUpdateSmart(wxCommandEvent& event);
+        void OnUpdateSmartUpdate(wxUpdateUIEvent& event);
+
         void OnValidate(wxCommandEvent& event);
         void OnListSel(wxListEvent& event);
         void OnListRightClick(wxMouseEvent& event);
@@ -242,6 +276,7 @@ private:
         void OnCloseWindow(wxCloseEvent& event);
         void OnReference(wxCommandEvent& event);
         void OnReferencesMenu(wxCommandEvent& event);
+        void OnReferencesMenuUpdate(wxUpdateUIEvent& event);
         void ShowReference(int num);
         void OnRightClick(wxCommandEvent& event);
         void OnFuzzyFlag(wxCommandEvent& event);
@@ -249,6 +284,7 @@ private:
         void OnCopyFromSource(wxCommandEvent& event);
         void OnClearTranslation(wxCommandEvent& event);
         void OnFind(wxCommandEvent& event);
+        void OnFindAndReplace(wxCommandEvent& event);
         void OnFindNext(wxCommandEvent& event);
         void OnFindPrev(wxCommandEvent& event);
         void OnEditComment(wxCommandEvent& event);
@@ -257,15 +293,19 @@ private:
         void OnSortByTranslation(wxCommandEvent&);
         void OnSortGroupByContext(wxCommandEvent&);
         void OnSortUntranslatedFirst(wxCommandEvent&);
+        void OnSortErrorsFirst(wxCommandEvent&);
 
         void OnShowHideSidebar(wxCommandEvent& event);
         void OnUpdateShowHideSidebar(wxUpdateUIEvent& event);
+        void OnShowHideStatusbar(wxCommandEvent& event);
+        void OnUpdateShowHideStatusbar(wxUpdateUIEvent& event);
 
         void OnSelectionUpdate(wxUpdateUIEvent& event);
+        void OnSelectionUpdateEditable(wxUpdateUIEvent& event);
         void OnSingleSelectionUpdate(wxUpdateUIEvent& event);
         void OnHasCatalogUpdate(wxUpdateUIEvent& event);
         void OnIsEditableUpdate(wxUpdateUIEvent& event);
-        void OnUpdateFromSourcesUpdate(wxUpdateUIEvent& event);
+        void OnEditCommentUpdate(wxUpdateUIEvent& event);
 
 #if defined(__WXMSW__) || defined(__WXGTK__)
         void OnTextEditingCommand(wxCommandEvent& event);
@@ -312,15 +352,21 @@ private:
 #endif
         void NoteAsRecentFile();
 
+        void OnNewTranslationEntered(const CatalogItemPtr& item);
+
         DECLARE_EVENT_TABLE()
 
     private:
-        Catalog *m_catalog;
-        wxString m_fileName;
+        CatalogPtr m_catalog;
+
+        wxString GetFileName() const
+            { return m_catalog ? m_catalog->GetFileName() : wxString(); }
         bool m_fileExistsOnDisk;
 
         std::unique_ptr<MainToolbar> m_toolbar;
 
+        CatalogItemPtr m_pendingHumanEditedItem;
+
         wxPanel *m_bottomPanel;
         wxSplitterWindow *m_splitter;
         wxSplitterWindow *m_sidebarSplitter;
@@ -341,6 +387,7 @@ private:
 
         AttentionBar *m_attentionBar;
         Sidebar *m_sidebar;
+        wxWeakRef<FindFrame> m_findWindow;
 
         bool m_modified;
         bool m_hasObsoleteItems;
diff --git a/src/edlistctrl.cpp b/src/edlistctrl.cpp
index 777c63a..f8ad921 100644
--- a/src/edlistctrl.cpp
+++ b/src/edlistctrl.cpp
@@ -147,7 +147,6 @@ PoeditListCtrl::PoeditListCtrl(wxWindow *parent,
                const wxString &name)
      : wxListView(parent, id, pos, size, style | wxLC_VIRTUAL, validator, name)
 {
-    m_catalog = NULL;
     m_displayIDs = dispIDs;
 
     m_isRTL = false;
@@ -273,10 +272,17 @@ void PoeditListCtrl::SetDisplayLines(bool dl)
 void PoeditListCtrl::CreateColumns()
 {
     DeleteAllColumns();
-    InsertColumn(0, _("Source text"));
-    InsertColumn(1, _("Translation"));
+
+    int curr = 0;
+    m_colSource = (int)InsertColumn(curr++, _("Source text"));
+    if (m_catalog && m_catalog->HasCapability(Catalog::Cap::Translations))
+        m_colTrans = (int)InsertColumn(curr++, _("Translation"));
+    else
+        m_colTrans = -1;
     if (m_displayIDs)
-        InsertColumn(2, _("ID"), wxLIST_FORMAT_RIGHT);
+        m_colId = (int)InsertColumn(curr++, _("ID"), wxLIST_FORMAT_RIGHT);
+    else
+        m_colId = -1;
 
 #ifdef __WXMSW__
     if (m_appIsRTL)
@@ -284,7 +290,7 @@ void PoeditListCtrl::CreateColumns()
         // another wx quirk: if we truly need left alignment, we must lie under RTL locales
         wxListItem colInfoOrig;
         colInfoOrig.SetAlign(wxLIST_FORMAT_RIGHT);
-        SetColumn(0, colInfoOrig);
+        SetColumn(m_colSource, colInfoOrig);
     }
 #endif
 
@@ -298,21 +304,30 @@ void PoeditListCtrl::SizeColumns()
     int w = GetSize().x
             - wxSystemSettings::GetMetric(wxSYS_VSCROLL_X) - 10
             - LINE_COL_SIZE;
-    SetColumnWidth(0, w / 2);
-    SetColumnWidth(1, w - w / 2);
-    if (m_displayIDs)
-        SetColumnWidth(2, LINE_COL_SIZE);
 
-    m_colWidth = (w/2) / GetCharWidth();
+    if (m_colTrans != -1)
+    {
+        SetColumnWidth(m_colSource, w / 2);
+        SetColumnWidth(m_colTrans, w - w / 2);
+        m_colWidth = (w/2) / GetCharWidth();
+    }
+    else
+    {
+        SetColumnWidth(m_colSource, w);
+        m_colWidth = w / GetCharWidth();
+    }
+
+    if (m_displayIDs)
+        SetColumnWidth(m_colId, LINE_COL_SIZE);
 }
 
 
-void PoeditListCtrl::CatalogChanged(Catalog* catalog)
+void PoeditListCtrl::CatalogChanged(const CatalogPtr& catalog)
 {
     wxWindowUpdateLocker no_updates(this);
 
     const bool isSameCatalog = (catalog == m_catalog);
-    const bool sizeChanged = (catalog && catalog->GetCount() != GetItemCount());
+    const bool sizeChanged = (catalog && (int)catalog->GetCount() != GetItemCount());
 
     SelectionPreserver preserve(isSameCatalog ? this : nullptr);
 
@@ -320,12 +335,13 @@ void PoeditListCtrl::CatalogChanged(Catalog* catalog)
     // listctrl when its scrolled to the bottom:
     if (sizeChanged)
     {
-        m_catalog = nullptr;
+        m_catalog.reset();
         SetItemCount(0);
     }
 
     // now read the new catalog:
     m_catalog = catalog;
+    CreateColumns();
     ReadCatalog(/*resetSizeAndSelection=*/sizeChanged);
 }
 
@@ -339,12 +355,13 @@ void PoeditListCtrl::ReadCatalog(bool resetSizeAndSelection)
     m_mapListToCatalog.clear();
     m_mapCatalogToList.clear();
 
-    if (m_catalog == NULL)
+    if (!m_catalog)
     {
         Refresh();
         return;
     }
 
+    auto srclang = m_catalog->GetSourceLanguage();
     auto lang = m_catalog->GetLanguage();
     auto isRTL = lang.IsRTL();
 #ifdef __WXMSW__
@@ -354,12 +371,22 @@ void PoeditListCtrl::ReadCatalog(bool resetSizeAndSelection)
 #endif
     m_isRTL = isRTL;
 
-    wxString langname = lang.IsValid() ? lang.DisplayName() : _("unknown language");
     wxListItem colInfo;
     colInfo.SetMask(wxLIST_MASK_TEXT);
-    colInfo.SetText(wxString::Format(_(L"Translation — %s"), langname));
-    colInfo.SetAlign(isRTL ? wxLIST_FORMAT_RIGHT : wxLIST_FORMAT_LEFT);
-    SetColumn(1, colInfo);
+
+    if (srclang.IsValid())
+        colInfo.SetText(wxString::Format(_(L"Source text — %s"), srclang.DisplayName()));
+    else
+        colInfo.SetText(_("Source text"));
+    SetColumn(m_colSource, colInfo);
+
+    if (m_colTrans != -1)
+    {
+        wxString langname = lang.IsValid() ? lang.DisplayName() : _("unknown language");
+        colInfo.SetText(wxString::Format(_(L"Translation — %s"), langname));
+        colInfo.SetAlign(isRTL ? wxLIST_FORMAT_RIGHT : wxLIST_FORMAT_LEFT);
+        SetColumn(m_colTrans, colInfo);
+    }
 
     // sort catalog items, create indexes mapping
     CreateSortMap();
@@ -428,41 +455,41 @@ void PoeditListCtrl::CreateSortMap()
 
 wxString PoeditListCtrl::OnGetItemText(long item, long column) const
 {
-    if (m_catalog == NULL)
+    if (!m_catalog)
         return wxEmptyString;
 
-    const CatalogItem& d = ListIndexToCatalogItem((int)item);
+    auto d = ListIndexToCatalogItem((int)item);
 
-    switch (column)
+    if (column == m_colSource)
     {
-        case 0:
-        {
-            wxString orig;
-            if ( d.HasContext() )
-                orig.Printf("%s  [ %s ]",
-                            d.GetString().c_str(), d.GetContext().c_str());
-            else
-                orig = d.GetString();
-
-            // Add RTL Unicode mark to render bidi texts correctly
-            if (m_appIsRTL)
-                return L"\u202a" + orig.substr(0,GetMaxColChars());
-            else
-                return orig.substr(0,GetMaxColChars());
-        }
-        case 1:
-        {
-            // Add RTL Unicode mark to render bidi texts correctly
-            if (m_isRTL && !m_appIsRTL)
-                return L"\u202b" + d.GetTranslation();
-            else
-                return d.GetTranslation();
-        }
-        case 2:
-            return wxString() << d.GetId();
-
-        default:
-            return wxEmptyString;
+        wxString orig;
+        if ( d->HasContext() )
+            orig.Printf("%s  [ %s ]",
+                        d->GetString().c_str(), d->GetContext().c_str());
+        else
+            orig = d->GetString();
+
+        // Add RTL Unicode mark to render bidi texts correctly
+        if (m_appIsRTL)
+            return L"\u202a" + orig.substr(0,GetMaxColChars());
+        else
+            return orig.substr(0,GetMaxColChars());
+    }
+    else if (column == m_colTrans)
+    {
+        // Add RTL Unicode mark to render bidi texts correctly
+        if (m_isRTL && !m_appIsRTL)
+            return L"\u202b" + d->GetTranslation();
+        else
+            return d->GetTranslation();
+    }
+    else if (column == m_colId)
+    {
+        return wxString() << d->GetId();
+    }
+    else
+    {
+        return wxEmptyString;
     }
 }
 
@@ -470,16 +497,16 @@ wxListItemAttr *PoeditListCtrl::OnGetItemAttr(long item) const
 {
     long idx = item % 2;
 
-    if (m_catalog == NULL)
+    if (!m_catalog)
         return (wxListItemAttr*)&m_attrNormal[idx];
 
-    const CatalogItem& d = ListIndexToCatalogItem((int)item);
+    auto d = ListIndexToCatalogItem((int)item);
 
-    if (d.GetValidity() == CatalogItem::Val_Invalid)
+    if (d->GetValidity() == CatalogItem::Val_Invalid)
         return (wxListItemAttr*)&m_attrInvalid[idx];
-    else if (!d.IsTranslated())
+    else if (!d->IsTranslated())
         return (wxListItemAttr*)&m_attrUntranslated[idx];
-    else if (d.IsFuzzy())
+    else if (d->IsFuzzy())
         return (wxListItemAttr*)&m_attrFuzzy[idx];
     else
         return (wxListItemAttr*)&m_attrNormal[idx];
@@ -487,7 +514,7 @@ wxListItemAttr *PoeditListCtrl::OnGetItemAttr(long item) const
 
 wxListItemAttr *PoeditListCtrl::OnGetItemColumnAttr(long item, long column) const
 {
-    if (column == 2)
+    if (column == m_colId)
     {
         return (wxListItemAttr*)&m_attrId;
     }
@@ -499,16 +526,16 @@ wxListItemAttr *PoeditListCtrl::OnGetItemColumnAttr(long item, long column) cons
 
 int PoeditListCtrl::OnGetItemImage(long item) const
 {
-    if (m_catalog == NULL)
+    if (!m_catalog)
         return IMG_NOTHING;
 
-    const CatalogItem& d = ListIndexToCatalogItem((int)item);
+    auto d = ListIndexToCatalogItem((int)item);
 
-    if (d.GetBookmark() != NO_BOOKMARK)
+    if (d->GetBookmark() != NO_BOOKMARK)
         return IMG_BOOKMARK;
-    else if (d.HasComment() || d.HasExtractedComments())
+    else if (d->HasComment() || d->HasExtractedComments())
         return IMG_COMMENT;
-    else if (d.IsAutomatic())
+    else if (d->IsAutomatic())
         return IMG_AUTOMATIC;
     else
         return IMG_NOTHING;
@@ -520,4 +547,4 @@ void PoeditListCtrl::OnSize(wxSizeEvent& event)
 
     SizeColumns();
     event.Skip();
-}
\ No newline at end of file
+}
diff --git a/src/edlistctrl.h b/src/edlistctrl.h
index 3c70a9c..6e852f7 100644
--- a/src/edlistctrl.h
+++ b/src/edlistctrl.h
@@ -60,7 +60,7 @@ class PoeditListCtrl : public wxListView
 
         void SetDisplayLines(bool dl);
 
-        void CatalogChanged(Catalog* catalog);
+        void CatalogChanged(const CatalogPtr& catalog);
 
         virtual wxString OnGetItemText(long item, long column) const;
         virtual wxListItemAttr *OnGetItemAttr(long item) const;
@@ -86,13 +86,15 @@ class PoeditListCtrl : public wxListView
         }
 
         /// Returns item from the catalog based on list index
-        const CatalogItem& ListIndexToCatalogItem(long index) const
+        CatalogItemPtr ListIndexToCatalogItem(long index) const
         {
-            return (*m_catalog)[ListIndexToCatalog(index)];
+            auto idx = ListIndexToCatalog(index);
+            return idx != -1 ? (*m_catalog)[idx] : nullptr;
         }
-        CatalogItem& ListIndexToCatalogItem(long index)
+        CatalogItemPtr ListIndexToCatalogItem(long index)
         {
-            return (*m_catalog)[ListIndexToCatalog(index)];
+            auto idx = ListIndexToCatalog(index);
+            return idx != -1 ? (*m_catalog)[idx] : nullptr;
         }
 
         /// Returns index of selected catalog item
@@ -128,7 +130,7 @@ class PoeditListCtrl : public wxListView
         {
             for (auto i = GetFirstSelected(); i != -1; i = GetNextSelected(i))
             {
-                func(ListIndexToCatalogItem(i));
+                func(*ListIndexToCatalogItem(i));
                 RefreshItem(i);
             }
         }
@@ -185,10 +187,11 @@ class PoeditListCtrl : public wxListView
         void OnSize(wxSizeEvent& event);
 
         bool m_displayIDs;
+        int m_colSource, m_colTrans, m_colId;
         unsigned m_colWidth;
         bool m_isRTL, m_appIsRTL;
 
-        Catalog* m_catalog;
+        CatalogPtr m_catalog;
 
         std::vector<int> m_mapListToCatalog;
         std::vector<int> m_mapCatalogToList;
diff --git a/src/export_html.cpp b/src/export_html.cpp
index 8546c77..ea630b2 100644
--- a/src/export_html.cpp
+++ b/src/export_html.cpp
@@ -1,4 +1,4 @@
-/*
+/*
  *  This file is part of Poedit (http://poedit.net)
  *
  *  Copyright (C) 2003 Christophe Hermier
@@ -24,242 +24,355 @@
  *
  */
 
-#include <wx/intl.h>
-#include <wx/colour.h>
-#include <wx/utils.h>
-#include <wx/textfile.h>
-#include <wx/log.h>
-
 #include "catalog.h"
 #include "utility.h"
+#include "str_helpers.h"
+
+#include <wx/intl.h>
 
 namespace
 {
 
-// colours used in the list:
-// (FIXME: this is duplicated with code in edframe.cpp, get rid of this
-// duplication, preferably by making the colours customizable and stored
-// in wxConfig)
-
-#define g_darkColourFactor 0.95
-#define DARKEN_COLOUR(r,g,b) (wxColour(int((r)*g_darkColourFactor),\
-                                       int((g)*g_darkColourFactor),\
-                                       int((b)*g_darkColourFactor)))
-#define LIST_COLOURS(r,g,b) { wxColour(r,g,b), DARKEN_COLOUR(r,g,b) }
-wxColour
-    g_ItemColourNormal[2] =       LIST_COLOURS(0xFF,0xFF,0xFF), // white
-    g_ItemColourUntranslated[2] = LIST_COLOURS(0xA5,0xEA,0xEF), // blue
-    g_ItemColourFuzzy[2] =        LIST_COLOURS(0xF4,0xF1,0xC1); // yellow
-
-wxString FormatTransString(const wxString& s)
+inline std::string fmt_trans(const wxString& s)
 {
     wxString out = EscapeMarkup(s);
-    out.Replace("\\n", "\\n<br>");
-    return out;
+    out.Replace("\n", "\n<br>");
+    return str::to_utf8(out);
 }
 
-} // anonymous namespace
-
-bool Catalog::ExportToHTML(const wxString& filename)
+template<typename T1, typename T2>
+inline void TableRow(std::ostream& f, const T1& col1, const T2& col2)
 {
-    size_t i;
-    wxTextFile f;
+    f << "<tr>"
+      << "<td>" << str::to_utf8(col1) << "</td>"
+      << "<td>" << str::to_utf8(col2) << "</td>"
+      << "</tr>\n";
+}
 
-    TempOutputFileFor tempfile_obj(filename);
-    const wxString tempfile = tempfile_obj.FileName();
+extern const char *CSS_STYLE;
 
-    if (!f.Create(tempfile))
-    {
-        return false;
-    }
+} // anonymous namespace
 
-    // TODO use some kind of HTML template system to allow different styles
-
-    wxString line;
-
-    // HTML HEADER
-    f.AddLine(_T("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">"));
-    f.AddLine("<html>");
-
-    f.AddLine("<head>");
-    line.Printf("<title> %s - %s - Poedit Export </title>",
-                EscapeMarkup(m_header.Project).c_str(),
-                EscapeMarkup(m_header.Lang.Code()).c_str());
-    f.AddLine(line);
-    f.AddLine(_T("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">" ) );
-    f.AddLine("</head>");
-    f.AddLine("<body bgcolor='#FFFFFF'>");
-
-    line.Printf("<h1> %s : %s</h1>",
-                EscapeMarkup(m_header.Project).c_str(),
-                EscapeMarkup(m_header.Lang.Code()).c_str());
-    f.AddLine(line);
-
-
-    // po file header information :
-
-    // String here are duplicates from the ones in setting.xrc
-    // TODO find a way if possible to synchronize them
-
-    f.AddLine("<table align=center border=1 cellspacing=2 cellpadding=4>");
-
-    line.Printf("<tr><th colspan=2>%s</th></tr>",
-                _("Project info"));
-    f.AddLine(line);
-    wxString line_format = "<tr><td>%s</td><td>%s</td></tr>";
-    line.Printf(line_format,
-                _("Project name and version:"),
-                EscapeMarkup(m_header.Project).c_str());
-    f.AddLine(line);
-    line.Printf(line_format, _("Language:"),
-                EscapeMarkup(m_header.Lang.Code()).c_str());
-    f.AddLine(line);
-    line.Printf(line_format, _("Team:"),
-                EscapeMarkup(m_header.Team).c_str());
-    f.AddLine(line);
-    line.Printf(_T("<tr><td>%s</td><td><a href=\"mailto:%s\">%s</a></td></tr>"),
-                _("Team's email address:"),
-                EscapeMarkup(m_header.TeamEmail).c_str(),
-                EscapeMarkup(m_header.TeamEmail).c_str());
-    f.AddLine(line);
-    line.Printf(line_format, _("Charset:"),
-                EscapeMarkup(m_header.Charset).c_str());
-    f.AddLine(line);
-
-    f.AddLine( "</table>" );
-    // statistics
-
-    int all = 0;
-    int fuzzy = 0;
-    int untranslated = 0;
-    int errors = 0;
-    int unfinished = 0;
-    GetStatistics(&all, &fuzzy, &errors, &untranslated, &unfinished);
-
-    int percent = (all == 0 ) ? 0 : (100 * (all - unfinished) / all);
-
-    line.Printf(_("Translated: %d of %d (%d %%)"), all - unfinished, all, percent);
-    if (unfinished > 0)
+void Catalog::ExportToHTML(std::ostream& f)
+{
+    const bool translated = HasCapability(Catalog::Cap::Translations);
+
+    f << "<!DOCTYPE html>\n"
+         "<html>\n"
+         "<head>\n"
+         "  <title>" << str::to_utf8(m_header.Project) << "</title>\n"
+         "  <meta http-equiv='Content-Type' content='text/html; charset=utf-8'>\n"
+         "  <style>\n" << CSS_STYLE << "\n"
+         "  </style>\n"
+         "</head>\n"
+         "<body>\n"
+         "<div class='container'>\n";
+
+    // Metadata section:
+
+    f << "<table class='metadata'>\n";
+    if (!m_header.Project.empty())
+        TableRow(f, _("Project:"), m_header.Project);
+    if (translated && m_header.Lang.IsValid())
+        TableRow(f, _("Language:"), m_header.Lang.DisplayName());
+    f << "</table>\n";
+
+
+    // Statistics:
+    if (translated)
     {
-        line += L"  •  ";
-        line += wxString::Format(_("Remaining: %d"), unfinished);
+        int all = 0;
+        int fuzzy = 0;
+        int untranslated = 0;
+        int unfinished = 0;
+        GetStatistics(&all, &fuzzy, nullptr, &untranslated, &unfinished);
+        int percent = (all == 0 ) ? 0 : (100 * (all - unfinished) / all);
+
+        f << "<div class='stats'>\n"
+          << "  <div class='graph'>\n";
+        if (all > unfinished)
+          f << "    <div class='percent-done' style='width: " << 100.0 * (all - unfinished) / all << "%'> </div>\n";
+        if (fuzzy > 0)
+          f << "    <div class='percent-fuzzy' style='width: " << 100.0 * fuzzy / all << "%'> </div>\n";
+        if (untranslated > 0)
+          f << "    <div class='percent-untrans' style='width: " << 100.0 * untranslated / all << "%'> </div>\n";
+        f << "  </div>\n"
+          << "  <div class='legend'>";
+        f << str::to_utf8(wxString::Format(_("Translated: %d of %d (%d %%)"), all - unfinished, all, percent));
+        if (unfinished > 0)
+            f << str::to_utf8(L"  •  ") << str::to_utf8(wxString::Format(_("Remaining: %d"), unfinished));
+        f << "  </div>\n"
+          << "</div>\n";
     }
-    if (errors > 0)
+    else
     {
-        line += L"  •  ";
-        line += wxString::Format(wxPLURAL("%d error", "%d errors", errors), errors);
+        int all = (int)items().size();
+        f << "<div class='stats'>\n"
+          << "  <div class='graph'>\n"
+          << "    <div class='percent-untrans' style='width: 100%'> </div>\n"
+          << "  </div>\n"
+          << "  <div class='legend'>"
+          << str::to_utf8(wxString::Format(wxPLURAL("%d entry", "%d entries", all), all))
+          << "  </div>\n"
+          << "</div>\n";
     }
 
-    f.AddLine(line);
-
-    // data printed in a table :
-    f.AddLine("<table border=1 cellspacing=2 cellpadding=4>");
-
-    f.AddLine("<tr>");
-    f.AddLine("<th>");
-    f.AddLine(_("Source"));
-    f.AddLine("</th>");
-    f.AddLine("<th>");
-    f.AddLine(_("Translation"));
-    f.AddLine("</th>");
-    f.AddLine("<th>");
-    f.AddLine(_("Notes"));
-    f.AddLine("</th>");
-    f.AddLine("</tr>");
+    // Translations:
 
-    for (i = 0; i < GetCount(); i++)
+    std::string lang_src, lang_tra;
+    if (m_sourceLanguage.IsValid())
+        lang_src = " lang='" + m_sourceLanguage.RFC3066() + "'";
+    if (m_header.Lang.IsValid())
     {
-        const CatalogItem& data = m_items[i];
-
-        wxColour bgcolor = g_ItemColourNormal[i % 2];
+        lang_tra = " lang='" + m_header.Lang.RFC3066() + "'";
+        if (m_header.Lang.IsRTL())
+            lang_tra += " dir='rtl'";
+    }
 
-        wxString source_string = FormatTransString(data.GetString());
-        if (data.HasContext())
-            source_string += FormatTransString(wxString::Format("  [ %s ]", data.GetContext()));
-        if (data.HasPlural())
-            source_string += "<br>~~~<br>\n" + FormatTransString(data.GetPluralString());
+    auto thead_src = m_sourceLanguage.IsValid()
+                     ? (wxString::Format(_(L"Source text — %s"), m_sourceLanguage.DisplayName()))
+                     : _("Source text");
+    auto thead_tra = wxString::Format(_(L"Translation — %s"),
+                                      m_header.Lang.IsValid() ? m_header.Lang.DisplayName() : _("unknown language"));
+
+    f << "<table class='translations'>\n"
+         "  <thead>\n"
+         "    <tr>\n"
+         "      <th>" << str::to_utf8(thead_src) << "</th>\n";
+    if (translated)
+    {
+        f << "      <th>" << str::to_utf8(thead_tra) << "</th>\n";
+    }
+    f << "    </tr>\n"
+         "  </thead>\n"
+         "  <tbody>\n";
 
-        wxString translation = FormatTransString(data.GetTranslation());
-        if (data.HasPlural())
+    for (auto& item: items())
+    {
+        bool hasComments = item->HasComment() || item->HasExtractedComments();
+
+        std::string klass("i");
+        if (!item->IsTranslated())
+            klass += " untrans";
+        if (item->IsFuzzy())
+            klass += " fuzzy";
+        if (hasComments)
+            klass += " with-comments";
+        f << "<tr class='" << klass << "'>\n";
+
+        // Source string:
+        f << "<td class='src' " << lang_src << ">\n";
+        if (item->HasPlural())
         {
-            for (unsigned int t = 1; t < data.GetNumberOfTranslations(); t++)
-                translation += "<br>~~~<br>\n" + FormatTransString(data.GetTranslation(t));
+            f << "<ol class='plurals'>\n"
+              << "  <li>" << fmt_trans(item->GetString()) << "</li>\n"
+              << "  <li>" << fmt_trans(item->GetPluralString()) << "</li>\n"
+              << "</ol>\n";
         }
-
-        if (translation.empty())
+        else
         {
-            translation = " ";
-            bgcolor = g_ItemColourUntranslated[i % 2];
+            f << fmt_trans(item->GetString());
         }
+        if (item->HasContext())
+            f << " <span class='msgctxt'>[" << fmt_trans(item->GetContext()) << "]</span>";
+        f << "</td>\n";
 
-        wxString notes;
-
-        if (data.IsAutomatic())
+        // Translation:
+        if (translated)
         {
-            notes += EscapeMarkup(_("Automatic translation"));
-            notes += "<BR>";
-        }
-        if (data.IsFuzzy())
-        {
-            bgcolor = g_ItemColourFuzzy[i % 2];
-            notes += EscapeMarkup(_("Fuzzy translation"));
-            notes += "<BR>";
+            f << "<td class='tra' " << lang_tra << ">\n";
+            if (item->HasPlural())
+            {
+                if (item->IsTranslated())
+                {
+                    f << "<ol class='plurals'>\n";
+                    for (auto t: item->GetTranslations())
+                        f << "  <li>" << fmt_trans(t) << "</li>\n";
+                    f << "</ol>\n";
+                }
+            }
+            else
+            {
+                f << fmt_trans(item->GetTranslation());
+            }
+            f << "</td>\n";
         }
 
-        if (data.HasExtractedComments())
-        {
-            notes += "<font color='#888'>";
-            notes += _("Notes for translators:");
-            notes += "</font>";
-            notes += "<br>";
-            for (auto n: data.GetExtractedComments())
-                notes += EscapeMarkup(n) + "<br>";
-        }
-        if (data.HasComment())
+        // Notes, if present:
+        if (hasComments)
         {
-            notes += "<font color='#888'>";
-            notes += _("Comment:");
-            notes += "</font>";
-            notes += "<br>";
-            notes += EscapeMarkup(data.GetComment());
-            notes += "<br>";
+            f << "</tr>\n"
+              << "<tr class='comments'>\n"
+              << "  <td colspan='" << (translated ? 2 : 1) << "'><div>";
+            if (item->HasExtractedComments())
+            {
+                f << "<p>\n";
+                for (auto& n: item->GetExtractedComments())
+                    f << fmt_trans(n) << "<br>\n";
+                f << "</p>\n";
+            }
+            if (item->HasComment())
+            {
+                f << "<p>\n"
+                  << fmt_trans(item->GetComment())
+                  << "</p>\n";
+            }
+            f << "</div></td>\n";
         }
 
-        if (notes.empty())
-            notes = " ";
-
-        wxString tr;
-        tr.Printf("<tr bgcolor='#%0X%0X%0X'>",
-                  bgcolor.Red(), bgcolor.Green(), bgcolor.Blue());
-        f.AddLine(tr);
-
-        f.AddLine("<td>");
-        f.AddLine(source_string);
-        f.AddLine("</td>");
-        f.AddLine("<td>");
-        f.AddLine(translation);
-        f.AddLine("</td>");
-        f.AddLine("<td>");
-        f.AddLine(_T("<font size=\"-1\">"));
-        f.AddLine(notes);
-        f.AddLine("</font>");
-        f.AddLine("</td>");
-        f.AddLine("</tr>");
+        f << "</tr>\n";
     }
 
-    f.AddLine("</table>");
-    f.AddLine("</body>");
-    f.AddLine("</html>");
+    f << "</tbody>\n"
+         "</table>\n"
+         "</div>\n"
+         "</body>\n"
+         "</html>\n";
+}
 
-    bool written = f.Write(wxTextFileType_None, wxConvUTF8);
 
-    f.Close();
+namespace
+{
 
-    if ( written && !wxRenameFile(tempfile, filename, /*overwrite=*/true) )
-    {
-        wxLogError(_("Couldn't save file %s."), filename.c_str());
-        written = false;
-    }
+const char *CSS_STYLE = R"(
+
+/*
+Based on Minimal CSS (minimalcss.com) under the MIT license.
+*/
+
+/* Reset */
+* { margin: 0; padding: 0; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; }
+
+/* Layout */
+body { background-color: #fff; color: #333;	font: 14px/20px "HelveticaNeue", "Helvetica Neue", Helvetica, Arial, sans-serif; }
+
+header { width: 100%; margin: 0 auto; position: relative; padding: 20px 0; margin-bottom: 20px; }
+
+nav ul { margin: 0; }
+nav ul li { display: inline; margin-right: 20px; font-size: 16px; line-height: 28px; color: #333; }
+nav ul li a { color: #333; }
+
+.container { position: relative; max-width: 90%; margin: 0 auto; }
+
+footer { border-top:1px solid #ccc; font-size:11px; line-height:26px; color:#999; }
+footer a { color:#999999; }
+footer a:hover { color:#105CB6; }
+footer ul li { display:inline; list-style:none; padding-left:20px; }
+
+/* Typography */
+a { color: #105CB6; text-decoration: none; }
+a:hover, a:focus { color: #105CB6; text-decoration: underline; }
+a:active { color: #105CB6; }
+
+h1 { font-size: 24px; line-height: 20px; margin: 10px 0; }
+h2 { font-size: 20px; line-height: 20px; margin: 10px 0; }
+h3 { font-size: 16px; line-height: 20px; margin: 10px 0; }
+h4 { font-size: 14px; line-height: 20px; margin: 10px 0; }
+h5 { font-size: 12px; line-height: 20px; margin: 10px 0; }
+h5 { font-size: 10px; line-height: 20px; margin: 10px 0; }
+h1,h2,h3,h4,h5,h6 { color: #333; }
+
+p { margin-bottom: 10px; }
+
+.float-left     { float: left; }
+.float-right    { float: right; }
+img.float-left  { float: left; margin: 0 20px 20px 0; }
+img.float-right { float: right; margin: 0 0 20px 20px; }
+img.center      { margin: 0 auto; display: block; }
+
+.text-left    { text-align: left; }
+.text-center  { text-align: center; }
+.text-right   { text-align: right; }
+.text-justify { text-align: justify; }
+
+/* Misc */
+hr { background-color: #ccc; border: 0px; color: #ccc; height: 1px; margin: 8px 0 20px 0; }
+pre, code { background:#E0ECF6; display:block; margin-bottom: 20px; padding:10px; }
+
+blockquote { margin: 10px 10px 20px; padding: 9px; background-color: #f8f8f8; color: #666; border-left: 5px solid #ddd; font: 14px/20px Georgia, Times, serif; quotes: "\201C" "\201D"; }
+blockquote p { margin: 0; }
+blockquote:before { content: open-quote; font-weight: bold; }
+blockquote:after  { content: close-quote; font-weight: bold; }
+
+/* List */
+ul { list-style-position:inside; }
+ol { list-style-position:inside; }
+
+/* Table */
+table {
+  border-collapse: collapse;
+  border-spacing: 0;
+}
+th { font-weight: bold; }
+tfoot { font-style: italic; }
+
+/* Metadata part */
+
+.metadata {
+  margin-top: 15px;
+  margin-bottom: 10px;
+  font-size: 90%;
+}
+table.metadata td {
+  padding-right: 20px;
+}
+
+.stats {
+  padding-top: 5px;
+  padding-bottom: 20px;
+}
+.graph {
+  width: 100%;
+}
+.graph div { float: left; }
+.graph div:first-child { border-radius: 3px 0 0 3px; }
+.graph div:last-child { border-radius: 0 3px 3px 0; }
+.percent-done    { background-color: #BFEE3F; height: 10px; }
+.percent-fuzzy   { background-color: #FEEE43; height: 10px; }
+.percent-untrans { background-color: #F1F5F5; height: 10px; }
+.legend {
+  font-size: smaller;
+  color: #aaa;
+  padding-top: 12px;
+  text-align: center;
+}
 
-    return written;
+/* Translations */
+table.translations {
+  width: 100%;
+  table-layout: fixed;
+}
+table.translations th, table.translations td {
+  padding: 5px 10px;
+  vertical-align: top;
+  border-bottom: 1px solid #E1E1E1;
 }
+table.translations th {
+  text-align: left;
+}
+table.translations th:first-child, table.translations td:first-child { padding-left: 0; }
+table.translations th:last-child, table.translations td:last-child { padding-right: 0; }
+
+.with-comments td {
+  border-bottom: none !important;
+}
+tr.comments div {
+  float: right;
+  max-width: 75%;
+  font-size: smaller;
+  color: #aaa;
+}
+tr.comments div p:last-child { margin-bottom: 0; }
+
+.fuzzy .tra {
+  color: #a9861b;
+}
+
+.msgctxt {
+  font-size: smaller;
+  color: #6d8e13;
+}
+
+)";
+
+} // anonymous namespace
diff --git a/src/fileviewer.cpp b/src/fileviewer.cpp
index d4700cd..4b6b3cd 100644
--- a/src/fileviewer.cpp
+++ b/src/fileviewer.cpp
@@ -23,6 +23,8 @@
  *
  */
 
+#include "fileviewer.h"
+
 #include <wx/filename.h>
 #include <wx/log.h>
 #include <wx/button.h>
@@ -38,24 +40,43 @@
 #include <wx/utils.h>
 #include <wx/stc/stc.h>
 
-#include "fileviewer.h"
+#include "customcontrols.h"
 #include "hidpi.h"
 #include "utility.h"
 
-FileViewer::FileViewer(wxWindow *parent,
-                       const wxString& basePath,
-                       const wxArrayString& references,
-                       int startAt)
-        : wxFrame(parent, -1, _("Source file")),
-          m_references(references)
+namespace
 {
-    m_basePath = basePath;
 
+#ifdef __WXOSX__
+const int FRAME_STYLE = wxDEFAULT_FRAME_STYLE | wxFRAME_TOOL_WINDOW;
+#else
+const int FRAME_STYLE = wxDEFAULT_FRAME_STYLE;
+#endif
+
+} // anonymous namespace
+
+FileViewer *FileViewer::ms_instance = nullptr;
+
+FileViewer *FileViewer::GetAndActivate()
+{
+    if (!ms_instance)
+        ms_instance = new FileViewer(nullptr);
+    ms_instance->Show();
+    ms_instance->Raise();
+    return ms_instance;
+}
+
+FileViewer::FileViewer(wxWindow*)
+        : wxFrame(nullptr, wxID_ANY, _("Source file"), wxDefaultPosition, wxDefaultSize, FRAME_STYLE)
+{
     SetName("fileviewer");
 
     wxPanel *panel = new wxPanel(this, -1);
     wxSizer *sizer = new wxBoxSizer(wxVERTICAL);
     panel->SetSizer(sizer);
+#ifdef __WXOSX__
+    panel->SetWindowVariant(wxWINDOW_VARIANT_SMALL);
+#endif
 
     wxSizer *barsizer = new wxBoxSizer(wxHORIZONTAL);
     sizer->Add(barsizer, wxSizerFlags().Expand().PXBorderAll());
@@ -64,15 +85,11 @@ FileViewer::FileViewer(wxWindow *parent,
                                    _("Source file occurrence:")),
                   wxSizerFlags().Center().PXBorder(wxRIGHT));
 
-    wxChoice *choice = new wxChoice(panel, wxID_ANY);
-    barsizer->Add(choice, wxSizerFlags(1).Center());
+    m_file = new wxChoice(panel, wxID_ANY);
+    barsizer->Add(m_file, wxSizerFlags(1).Center());
 
-    for (size_t i = 0; i < references.Count(); i++)
-        choice->Append(references[i]);
-    choice->SetSelection(startAt);
-
-    wxButton *edit = new wxButton(panel, wxID_ANY, MSW_OR_OTHER(_("Open in editor"), _("Open in Editor")));
-    barsizer->Add(edit, wxSizerFlags().Center().Border(wxLEFT, PX(10)));
+    m_openInEditor = new wxButton(panel, wxID_ANY, MSW_OR_OTHER(_("Open in editor"), _("Open in Editor")));
+    barsizer->Add(m_openInEditor, wxSizerFlags().Center().Border(wxLEFT, PX(10)));
 
     m_text = new wxStyledTextCtrl(panel, wxID_ANY,
                                   wxDefaultPosition, wxDefaultSize,
@@ -80,17 +97,26 @@ FileViewer::FileViewer(wxWindow *parent,
     SetupTextCtrl();
     sizer->Add(m_text, 1, wxEXPAND);
 
+    m_error = new wxStaticText(panel, wxID_ANY, "");
+    m_error->SetForegroundColour(ExplanationLabel::GetTextColor());
+    m_error->SetFont(m_error->GetFont().Larger().Larger());
+    sizer->Add(m_error, wxSizerFlags(1).Center().Border(wxTOP|wxBOTTOM, PX(80)));
+
     RestoreWindowState(this, wxSize(PX(600), PX(400)));
 
     wxSizer *topsizer = new wxBoxSizer(wxVERTICAL);
     topsizer->Add(panel, wxSizerFlags(1).Expand());
     SetSizer(topsizer);
-    Layout();
 
-    choice->Bind(wxEVT_CHOICE, &FileViewer::OnChoice, this);
-    edit->Bind(wxEVT_BUTTON, &FileViewer::OnEditFile, this);
+    // avoid flicker with these initial settings:
+    m_file->Disable();
+    sizer->Hide(m_error);
+    sizer->Hide(m_text);
+
+    Layout();
 
-    ShowReference(m_references[startAt]);
+    m_file->Bind(wxEVT_CHOICE, &FileViewer::OnChoice, this);
+    m_openInEditor->Bind(wxEVT_BUTTON, &FileViewer::OnEditFile, this);
 
 #ifdef __WXOSX__
     wxAcceleratorEntry entries[] = {
@@ -106,6 +132,7 @@ FileViewer::FileViewer(wxWindow *parent,
 
 FileViewer::~FileViewer()
 {
+    ms_instance = nullptr;
     SaveWindowState(this);
 }
 
@@ -144,7 +171,12 @@ void FileViewer::SetupTextCtrl()
     // style used:
     wxString fontspec = wxString::Format("face:%s,size:%d",
                                          font.GetFaceName().c_str(),
-                                         font.GetPointSize());
+                                      #ifdef __WXOSX__
+                                         font.GetPointSize() - 1
+                                      #else
+                                         font.GetPointSize()
+                                      #endif
+                                         );
     const wxString DEFAULT     = fontspec + ",fore:black,back:white";
     const wxString STRING      = fontspec + ",bold,fore:#882d21";
     const wxString COMMENT     = fontspec + ",fore:#487e18";
@@ -285,7 +317,28 @@ wxFileName FileViewer::GetFilename(wxString ref) const
 }
 
 
-void FileViewer::ShowReference(const wxString& ref)
+void FileViewer::ShowReferences(CatalogPtr catalog, CatalogItemPtr item, int defaultReference)
+{
+    m_basePath = catalog->GetSourcesBasePath();
+    m_references = item->GetReferences();
+
+    m_file->Clear();
+    m_file->Enable(m_references.size() > 1);
+
+    if (m_references.empty())
+    {
+        ShowError(_("No references for the selected item."));
+    }
+    else
+    {
+        for (auto& r: m_references)
+            m_file->Append(r);
+        m_file->SetSelection(defaultReference);
+        SelectReference(m_references[defaultReference]);
+    }
+}
+
+void FileViewer::SelectReference(const wxString& ref)
 {
     const wxFileName filename = GetFilename(ref);
     wxFFile file;
@@ -295,11 +348,16 @@ void FileViewer::ShowReference(const wxString& ref)
          !file.Open(filename.GetFullPath()) ||
          !file.ReadAll(&data, wxConvAuto()) )
     {
-        wxLogError(_("Error opening file %s!"), filename.GetFullPath().c_str());
+        ShowError(wxString::Format(_("Error opening file %s!"), filename.GetFullPath()));
+        m_openInEditor->Disable();
         return;
     }
 
-    m_current = ref;
+    m_openInEditor->Enable();
+
+    m_error->GetContainingSizer()->Hide(m_error);
+    m_text->GetContainingSizer()->Show(m_text);
+    Layout();
 
     // support GNOME's xml2po's extension to references in the form of
     // filename:line(xml_node):
@@ -320,16 +378,23 @@ void FileViewer::ShowReference(const wxString& ref)
     int lineHeight = m_text->TextHeight((int)linenum);
     int linesInWnd = m_text->GetSize().y / lineHeight;
     m_text->ScrollToLine(wxMax(0, (int)linenum - linesInWnd/2));
+}
 
+void FileViewer::ShowError(const wxString& msg)
+{
+    m_error->SetLabel(msg);
+    m_error->GetContainingSizer()->Show(m_error);
+    m_text->GetContainingSizer()->Hide(m_text);
+    Layout();
 }
 
 
 void FileViewer::OnChoice(wxCommandEvent &event)
 {
-    ShowReference(m_references[event.GetSelection()]);
+    SelectReference(m_references[event.GetSelection()]);
 }
 
 void FileViewer::OnEditFile(wxCommandEvent&)
 {
-    wxLaunchDefaultApplication(GetFilename(m_current).GetFullPath());
+    wxLaunchDefaultApplication(GetFilename(m_file->GetStringSelection()).GetFullPath());
 }
diff --git a/src/fileviewer.h b/src/fileviewer.h
index 130f8ff..03dc683 100644
--- a/src/fileviewer.h
+++ b/src/fileviewer.h
@@ -26,11 +26,15 @@
 #ifndef _FILEVIEWER_H_
 #define _FILEVIEWER_H_
 
+#include "catalog.h"
+
 #include <wx/frame.h>
 
-class WXDLLIMPEXP_FWD_CORE wxListCtrl;
-class WXDLLIMPEXP_FWD_CORE wxStyledTextCtrl;
+class WXDLLIMPEXP_FWD_CORE wxButton;
+class WXDLLIMPEXP_FWD_CORE wxChoice;
+class WXDLLIMPEXP_FWD_CORE wxStaticText;
 class WXDLLIMPEXP_FWD_CORE wxFileName;
+class WXDLLIMPEXP_FWD_STC wxStyledTextCtrl;
 
 
 /** This class implements frame that shows part of file
@@ -38,38 +42,38 @@ class WXDLLIMPEXP_FWD_CORE wxFileName;
  */
 class FileViewer : public wxFrame
 {
-public:
-    /** Ctor. 
-        \param basePath   base directory that all entries in 
-                          \i references are relative to
-        \param references array of strings in format \i filename:linenum
-                          that lists all occurences of given string
-        \param openAt     number of the \i references entry to show
-                          by default
-     */
-    FileViewer(wxWindow *parent, const wxString& basePath,
-               const wxArrayString& references, int openAt);
+protected:
+    FileViewer(wxWindow *parent);
     ~FileViewer();
 
-    /// Shows given reference, i.e. loads the file
-    void ShowReference(const wxString& ref);
+public:
+    static FileViewer *GetAndActivate();
+    static FileViewer *GetIfExists() { return ms_instance; }
 
-    bool FileOk() { return !m_current.empty(); }
+    /// Shows given reference, i.e. loads the file
+    void ShowReferences(CatalogPtr catalog, CatalogItemPtr item, int defaultReference = 0);
 
 private:
     void SetupTextCtrl();
     int GetLexer(const wxString& extension);
     wxFileName GetFilename(wxString ref) const;
 
+    void SelectReference(const wxString& ref);
+    void ShowError(const wxString& msg);
+
 private:
     wxString m_basePath;
     wxArrayString m_references;
-    wxString m_current;
 
+    wxChoice *m_file;
+    wxButton *m_openInEditor;
     wxStyledTextCtrl *m_text;
+    wxStaticText *m_error;
 
     void OnChoice(wxCommandEvent &event);
     void OnEditFile(wxCommandEvent &event);
+
+    static FileViewer *ms_instance;
 };
 
 #endif // _FILEVIEWER_H_
diff --git a/src/findframe.cpp b/src/findframe.cpp
index ff629c5..0462098 100644
--- a/src/findframe.cpp
+++ b/src/findframe.cpp
@@ -23,182 +23,306 @@
  *
  */
 
-#include <wx/xrc/xmlres.h>
 #include <wx/accel.h>
+#include <wx/choice.h>
+#include <wx/collpane.h>
 #include <wx/config.h>
 #include <wx/button.h>
+#include <wx/sizer.h>
+#include <wx/stattext.h>
 #include <wx/textctrl.h>
 #include <wx/checkbox.h>
+#include <wx/notebook.h>
+
+#ifdef __WXOSX__
+#include <AppKit/AppKit.h>
+#endif
+
+#ifdef __WXGTK__
+#include <gtk/gtk.h>
+#include <gdk/gdkkeysyms.h>
+#endif
 
 #include "catalog.h"
-#include "findframe.h"
+#include "text_control.h"
+#include "edframe.h"
 #include "edlistctrl.h"
+#include "findframe.h"
+#include "hidpi.h"
 #include "utility.h"
 
+namespace
+{
+
 // The word separators used when doing a "Whole words only" search
 // FIXME-ICU: use ICU to separate words
-static const wxString SEPARATORS = wxT(" \t\r\n\\/:;.,?!\"'_|-+=(){}[]<>&#@");
+const wxString SEPARATORS = wxT(" \t\r\n\\/:;.,?!\"'_|-+=(){}[]<>&#@");
 
-wxString FindFrame::ms_text;
-FindFrame *FindFrame::ms_singleton = nullptr;
+enum
+{
+    Mode_Find,
+    Mode_Replace
+};
+
+const int FRAME_STYLE = (wxDEFAULT_FRAME_STYLE | wxFRAME_TOOL_WINDOW | wxTAB_TRAVERSAL | wxFRAME_FLOAT_ON_PARENT)
+                        & ~(wxRESIZE_BORDER | wxMAXIMIZE_BOX);
 
-BEGIN_EVENT_TABLE(FindFrame, wxDialog)
-   EVT_BUTTON(XRCID("find_next"), FindFrame::OnNext)
-   EVT_BUTTON(XRCID("find_prev"), FindFrame::OnPrev)
-   EVT_BUTTON(wxID_CLOSE, FindFrame::OnClose)
-   EVT_TEXT(XRCID("string_to_find"), FindFrame::OnTextChange)
-   EVT_CHECKBOX(-1, FindFrame::OnCheckbox)
-END_EVENT_TABLE()
+} // anonymous namespace
 
-FindFrame::FindFrame(wxWindow *parent,
+
+wxString FindFrame::ms_text;
+
+FindFrame::FindFrame(PoeditFrame *owner,
                      PoeditListCtrl *list,
-                     Catalog *c,
-                     wxTextCtrl *textCtrlOrig,
-                     wxTextCtrl *textCtrlTrans)
-        : m_listCtrl(list),
+                     const CatalogPtr& c,
+                     CustomizedTextCtrl *textCtrlOrig,
+                     CustomizedTextCtrl *textCtrlTrans,
+                     wxNotebook *pluralNotebook)
+        : wxFrame(owner, wxID_ANY, _("Find"), wxDefaultPosition, wxDefaultSize, FRAME_STYLE),
+          m_owner(owner),
+          m_listCtrl(list),
           m_catalog(c),
           m_position(-1),
           m_textCtrlOrig(textCtrlOrig),
-          m_textCtrlTrans(textCtrlTrans)
+          m_textCtrlTrans(textCtrlTrans),
+          m_pluralNotebook(pluralNotebook)
 {
-    wxXmlResource::Get()->LoadDialog(this, parent, "find_frame");
+    auto panel = new wxPanel(this, wxID_ANY);
+    wxBoxSizer *panelsizer = new wxBoxSizer(wxVERTICAL);
+
+    wxBoxSizer *sizer = new wxBoxSizer(wxVERTICAL);
+    panelsizer->Add(sizer, wxSizerFlags(1).Expand().PXDoubleBorderAll());
+
+    auto entrySizer = new wxFlexGridSizer(2, wxSize(MSW_OR_OTHER(PX(5), PX(10)), PX(5)));
+    m_mode = new wxChoice(panel, wxID_ANY);
+#ifdef __WXOSX__
+    [(NSPopUpButton*)m_mode->GetHandle() setBordered:NO];
+#endif
+    m_mode->Append(_("Find"));
+    m_mode->Append(_("Replace"));
+    m_mode->SetSelection(Mode_Find);
+
+    m_searchField = new wxTextCtrl(panel, wxID_ANY, "", wxDefaultPosition, wxSize(PX(400), -1));
+    m_replaceField = new wxTextCtrl(panel, wxID_ANY);
+
+    entrySizer->Add(m_mode);
+    entrySizer->Add(m_searchField, wxSizerFlags(1).Expand());
+    entrySizer->AddSpacer(1);
+    entrySizer->Add(m_replaceField, wxSizerFlags(1).Expand());
+    sizer->Add(entrySizer, wxSizerFlags().Expand().PXBorderAll());
+
+#ifdef __WXMSW__
+    #define collPane panel
+#else
+    // TRANSLATORS: Expander in Find window for additional options (case sensitive etc.)
+    auto coll = new wxCollapsiblePane(panel, wxID_ANY, _("Options"));
+    auto collPane = coll->GetPane();
+#endif
 
-    m_textField = XRCCTRL(*this, "string_to_find", wxTextCtrl);
+    m_ignoreCase = new wxCheckBox(collPane, wxID_ANY, _("Ignore case"));
+    m_wrapAround = new wxCheckBox(collPane, wxID_ANY, _("Wrap around"));
+    m_wholeWords = new wxCheckBox(collPane, wxID_ANY, _("Whole words only"));
+    m_findInOrig = new wxCheckBox(collPane, wxID_ANY, _("Find in source texts"));
+    m_findInTrans = new wxCheckBox(collPane, wxID_ANY, _("Find in translations"));
+    m_findInComments = new wxCheckBox(collPane, wxID_ANY, _("Find in comments"));
+
+    wxBoxSizer *options = new wxBoxSizer(wxHORIZONTAL);
+    wxBoxSizer *optionsL = new wxBoxSizer(wxVERTICAL);
+    wxBoxSizer *optionsR = new wxBoxSizer(wxVERTICAL);
+    options->Add(optionsL, wxSizerFlags(1).Expand().PXBorder(wxRIGHT));
+    options->Add(optionsR, wxSizerFlags(1).Expand());
+    optionsL->Add(m_ignoreCase, wxSizerFlags().Expand());
+    optionsL->Add(m_wrapAround, wxSizerFlags().Expand().Border(wxTOP, PX(2)));
+    optionsL->Add(m_wholeWords, wxSizerFlags().Expand().Border(wxTOP, PX(2)));
+    optionsR->Add(m_findInOrig, wxSizerFlags().Expand().Border(wxTOP, PX(2)));
+    optionsR->Add(m_findInTrans, wxSizerFlags().Expand().Border(wxTOP, PX(2)));
+    optionsR->Add(m_findInComments, wxSizerFlags().Expand().Border(wxTOP, PX(2)));
+
+#ifdef __WXMSW__
+    sizer->Add(options, wxSizerFlags().Expand().PXBorderAll());
+#else
+    collPane->SetSizer(options);
+    sizer->Add(coll, wxSizerFlags().Expand().PXBorderAll());
+#endif
 
-    SetEscapeId(wxID_CLOSE);
+    m_btnClose = new wxButton(panel, wxID_CLOSE, _("Close"));
+    m_btnReplaceAll = new wxButton(panel, wxID_ANY, MSW_OR_OTHER(_("Replace all"), _("Replace All")));
+    m_btnReplace = new wxButton(panel, wxID_ANY, _("Replace"));
+    m_btnPrev = new wxButton(panel, wxID_ANY, _("< &Previous"));
+    m_btnNext = new wxButton(panel, wxID_ANY, _("&Next >"));
+    m_btnNext->SetDefault();
+
+    wxBoxSizer *buttons = new wxBoxSizer(wxHORIZONTAL);
+    sizer->Add(buttons, wxSizerFlags().Expand().PXBorderAll());
+    buttons->Add(m_btnClose, wxSizerFlags().PXBorder(wxRIGHT));
+    buttons->AddStretchSpacer();
+    buttons->Add(m_btnReplaceAll, wxSizerFlags().PXBorder(wxRIGHT));
+    buttons->Add(m_btnReplace, wxSizerFlags().PXBorder(wxRIGHT));
+    buttons->Add(m_btnPrev, wxSizerFlags().PXBorder(wxRIGHT));
+    buttons->Add(m_btnNext, wxSizerFlags());
+
+    panel->SetSizer(panelsizer);
+    auto topsizer = new wxBoxSizer(wxHORIZONTAL);
+    topsizer->Add(panel, wxSizerFlags(1).Expand());
+    SetSizerAndFit(topsizer);
 
     RestoreWindowState(this, wxDefaultSize, WinState_Pos);
 
-    m_btnNext = XRCCTRL(*this, "find_next", wxButton);
-    m_btnPrev = XRCCTRL(*this, "find_prev", wxButton);
-
     if ( !ms_text.empty() )
     {
-        m_textField->SetValue(ms_text);
-        m_textField->SelectAll();
+        m_searchField->SetValue(ms_text);
+        m_searchField->SelectAll();
     }
 
     Reset(c);
 
-    XRCCTRL(*this, "in_orig", wxCheckBox)->SetValue(
-        wxConfig::Get()->ReadBool("find_in_orig", true));
-    XRCCTRL(*this, "in_trans", wxCheckBox)->SetValue(
-        wxConfig::Get()->ReadBool("find_in_trans", true));
-    XRCCTRL(*this, "in_comments", wxCheckBox)->SetValue(
-        wxConfig::Get()->ReadBool("find_in_comments", true));
-    XRCCTRL(*this, "in_auto_comments", wxCheckBox)->SetValue(
-        wxConfig::Get()->ReadBool("find_in_auto_comments", true));
-    XRCCTRL(*this, "case_sensitive", wxCheckBox)->SetValue(
-        wxConfig::Get()->ReadBool("find_case_sensitive", false));
-    XRCCTRL(*this, "from_first", wxCheckBox)->SetValue(
-        wxConfig::Get()->ReadBool("find_from_first", true));
-    XRCCTRL(*this, "whole_words", wxCheckBox)->SetValue(
-        wxConfig::Get()->ReadBool("whole_words", false));
+    m_findInOrig->SetValue(wxConfig::Get()->ReadBool("find_in_orig", true));
+    m_findInTrans->SetValue(wxConfig::Get()->ReadBool("find_in_trans", true));
+    m_findInComments->SetValue(wxConfig::Get()->ReadBool("find_in_comments", true));
+    m_ignoreCase->SetValue(!wxConfig::Get()->ReadBool("find_case_sensitive", false));
+    m_wrapAround->SetValue(wxConfig::Get()->ReadBool("find_wrap_around", true));
+    m_wholeWords->SetValue(wxConfig::Get()->ReadBool("whole_words", false));
 
-#ifdef __WXOSX__
     wxAcceleratorEntry entries[] = {
-        { wxACCEL_CMD,  'W', wxID_CLOSE }
+#ifndef __WXGTK__
+        { wxACCEL_SHIFT,  WXK_RETURN, m_btnPrev->GetId() },
+#endif
+#ifdef __WXOSX__
+        { wxACCEL_CMD,  'W', wxID_CLOSE },
+#endif
+        { wxACCEL_NORMAL,  WXK_ESCAPE, wxID_CLOSE }
     };
     wxAcceleratorTable accel(WXSIZEOF(entries), entries);
     SetAcceleratorTable(accel);
-#endif
 
-    ms_singleton = this;
-}
+    m_searchField->Bind(wxEVT_TEXT, &FindFrame::OnTextChange, this);
+    m_btnPrev->Bind(wxEVT_BUTTON, &FindFrame::OnPrev, this);
+    m_btnNext->Bind(wxEVT_BUTTON, &FindFrame::OnNext, this);
+    Bind(wxEVT_BUTTON, &FindFrame::OnClose, this, wxID_CLOSE);
+    Bind(wxEVT_MENU, &FindFrame::OnClose, this, wxID_CLOSE);
+    Bind(wxEVT_CHECKBOX, &FindFrame::OnCheckbox, this);
+
+    // Set Shift+Return accelerator natively so that the button is animated.
+    // (Can't be done on Windows where wxAcceleratorEntry above is used.)
+#if defined(__WXGTK__)
+    GtkAccelGroup *accelGroup = gtk_accel_group_new();
+    gtk_window_add_accel_group(GTK_WINDOW(GetHandle()), accelGroup);
+    gtk_widget_add_accelerator(m_btnPrev->GetHandle(), "activate", accelGroup, GDK_KEY_Return, GDK_SHIFT_MASK, GTK_ACCEL_VISIBLE);
+#elif defined(__WXOSX__)
+    // wx's code interferes with normal processing of Shift-Return and
+    // setKeyEquivalent: @"\r" with setKeyEquivalentModifierMask: NSShiftKeyMask
+    // wouldn't work. Emulate it in custom code instead, by handling the
+    // event originating from the button and from the accelerator table above
+    // differently. More than a bit of a hack, but it works.
+    NSButton *osxPrev = (NSButton*)m_btnPrev->GetHandle();
+    Bind(wxEVT_MENU, [=](wxCommandEvent&){ [osxPrev performClick:nil]; }, m_btnPrev->GetId());
+#endif
 
+    OnModeChanged();
+    m_mode->Bind(wxEVT_CHOICE, [=](wxCommandEvent&){ OnModeChanged(); });
 
-FindFrame::~FindFrame()
-{
-    ms_singleton = nullptr;
+    m_btnReplace->Bind(wxEVT_BUTTON, &FindFrame::OnReplace, this);
+    m_btnReplaceAll->Bind(wxEVT_BUTTON, &FindFrame::OnReplaceAll, this);
+    m_btnReplace->Bind(wxEVT_UPDATE_UI, [=](wxUpdateUIEvent& e){ e.Enable((bool)m_lastItem); });
+    m_btnReplaceAll->Bind(wxEVT_UPDATE_UI, [=](wxUpdateUIEvent& e){ e.Enable(!ms_text.empty()); });
 
-    SaveWindowState(this, WinState_Pos);
+    // SetHint() needs to be called *after* binding any event handlers, for
+    // compatibility with its generic implementation:
+    m_searchField->SetHint(_("String to find"));
+    m_replaceField->SetHint(_("Replacement string"));
 
-    wxConfig::Get()->Write("find_in_orig",
-            XRCCTRL(*this, "in_orig", wxCheckBox)->GetValue());
-    wxConfig::Get()->Write("find_in_trans",
-                XRCCTRL(*this, "in_trans", wxCheckBox)->GetValue());
-    wxConfig::Get()->Write("find_in_comments",
-                XRCCTRL(*this, "in_comments", wxCheckBox)->GetValue());
-    wxConfig::Get()->Write("find_in_auto_comments",
-                XRCCTRL(*this, "in_auto_comments", wxCheckBox)->GetValue());
-    wxConfig::Get()->Write("find_case_sensitive",
-                XRCCTRL(*this, "case_sensitive", wxCheckBox)->GetValue());
-    wxConfig::Get()->Write("find_from_first",
-                XRCCTRL(*this, "from_first", wxCheckBox)->GetValue());
-    wxConfig::Get()->Write("whole_words",
-                XRCCTRL(*this, "whole_words", wxCheckBox)->GetValue());
-}
-
-FindFrame *FindFrame::Get(PoeditListCtrl *list, Catalog *forCatalog)
-{
-    if (!ms_singleton)
-        return nullptr;
-    if (ms_singleton->m_catalog != forCatalog)
-    {
-        ms_singleton->m_listCtrl = list;
-        ms_singleton->Reset(forCatalog);
-    }
-    return ms_singleton;
+    // Create hidden, will be shown after setting it up
+    Show(false);
 }
 
 
-void FindFrame::NotifyParentDestroyed(PoeditListCtrl *list, Catalog *forCatalog)
+FindFrame::~FindFrame()
 {
-    if (!ms_singleton)
-        return;
-    if (ms_singleton->m_catalog == forCatalog || ms_singleton->m_listCtrl == list)
-    {
-        ms_singleton->Destroy();
-        ms_singleton = nullptr;
-    }
+    SaveWindowState(this, WinState_Pos);
 }
 
 
-
-void FindFrame::Reset(Catalog *c)
+void FindFrame::Reset(const CatalogPtr& c)
 {
     if (!m_listCtrl)
         return;
 
-    bool fromFirst = XRCCTRL(*this, "from_first", wxCheckBox)->GetValue();
-
     m_catalog = c;
     m_position = -1;
-    if (!fromFirst)
-        m_position = (int)m_listCtrl->GetNextItem(-1,
-                                                  wxLIST_NEXT_ALL,
-                                                  wxLIST_STATE_SELECTED);
 
     m_btnPrev->Enable(!ms_text.empty());
     m_btnNext->Enable(!ms_text.empty());
 }
 
 
-void FindFrame::FocusSearchField()
+void FindFrame::ShowForFind()
 {
-    m_textField->SetFocus();
-    m_textField->SelectAll();
+    DoShowFor(Mode_Find);
+}
+
+void FindFrame::ShowForReplace()
+{
+    DoShowFor(Mode_Replace);
+}
+
+void FindFrame::DoShowFor(int mode)
+{
+    m_mode->SetSelection(mode);
+    OnModeChanged();
+
+    Show(true);
+    Raise();
+
+    m_searchField->SetFocus();
+    m_searchField->SelectAll();
 }
 
 
 void FindFrame::OnClose(wxCommandEvent&)
 {
     Destroy();
-    ms_singleton = nullptr;
 }
 
 
-void FindFrame::OnTextChange(wxCommandEvent&)
+void FindFrame::OnModeChanged()
 {
-    ms_text = m_textField->GetValue();
+    bool isReplace = m_mode->GetSelection() == Mode_Replace;
+
+    SetTitle(isReplace ? _("Replace") : _("Find"));
+
+    m_btnReplace->Show(isReplace);
+    m_btnReplaceAll->Show(isReplace);
+    m_replaceField->GetContainingSizer()->Show(m_replaceField, isReplace);
+
+    m_findInOrig->Enable(!isReplace);
+    m_findInTrans->Enable(!isReplace);
+    m_findInComments->Enable(!isReplace);
+    m_ignoreCase->Enable(!isReplace);
+
+    Layout();
+    GetSizer()->SetSizeHints(this);
+}
+
+
+void FindFrame::OnTextChange(wxCommandEvent& e)
+{
+    ms_text = m_searchField->GetValue();
+    m_lastItem.reset();
 
     Reset(m_catalog);
+
+    e.Skip();
 }
 
 
 void FindFrame::OnCheckbox(wxCommandEvent&)
 {
-    Reset(m_catalog);
+    wxConfig::Get()->Write("find_in_orig", m_findInOrig->GetValue());
+    wxConfig::Get()->Write("find_in_trans", m_findInTrans->GetValue());
+    wxConfig::Get()->Write("find_in_comments", m_findInComments->GetValue());
+    wxConfig::Get()->Write("find_case_sensitive", !m_ignoreCase->GetValue());
+    wxConfig::Get()->Write("find_wrap_around", m_wrapAround->GetValue());
+    wxConfig::Get()->Write("whole_words", m_wholeWords->GetValue());
 }
 
 
@@ -230,152 +354,203 @@ void FindFrame::FindNext()
 }
 
 
-enum FoundState
+namespace
 {
-    Found_Not = 0,
-    Found_InOrig,
-    Found_InTrans,
-    Found_InComments,
-    Found_InExtractedComments
-};
 
-bool TextInString(const wxString& str, const wxString& text, bool wholeWords)
+template<typename S, typename F>
+bool FindTextInStringAndDo(S& str, const wxString& text, bool wholeWords, F&& handler)
 {
-    int index = str.Find(text);
-    if (index >= 0)
+    auto textLen = text.Length();
+
+    bool found = false;
+    size_t start = 0;
+    while (start != wxString::npos)
     {
+        auto index = str.find(text, start);
+        if (index == wxString::npos)
+            break;
+
         if (wholeWords)
         {
-            size_t textLen = text.Length();
-
             bool result = true;
             if (index >0)
                 result = result && SEPARATORS.Contains(str[index-1]);
             if (index+textLen < str.Length())
                 result = result && SEPARATORS.Contains(str[index+textLen]);
 
-            return result;
-        }
-        else
-        {
-            return true;
+            if (!result)
+            {
+                start = index + textLen;
+                continue;
+            }
         }
+
+        found = true;
+        start = handler(str, index, textLen);
     }
-    else
+
+    return found;
+}
+
+bool IsTextInString(wxString str, const wxString& text,
+                    bool ignoreCase, bool wholeWords, bool ignoreAmp, bool ignoreUnderscore)
+{
+    if (ignoreCase)
+        str.MakeLower();
+    if (ignoreAmp)
+        str.Replace("&", "");
+    if (ignoreUnderscore)
+        str.Replace("_", "");
+
+    return FindTextInStringAndDo(str, text, wholeWords,
+                                 [=](const wxString&,size_t,size_t){ return wxString::npos;/*just 1 hit*/ });
+}
+
+size_t IsTextInStrings(const wxArrayString& strs, const wxString& text,
+                     bool ignoreCase, bool wholeWords, bool ignoreAmp, bool ignoreUnderscore)
+{
+    // loop through all strings and search for the substring in them
+    for (size_t i = 0; i < strs.GetCount(); i++)
     {
-        return false;
+        if (IsTextInString(strs[i], text, ignoreCase, wholeWords, ignoreAmp, ignoreUnderscore))
+            return i;
     }
+
+    return -1;
 }
 
+bool ReplaceTextInString(wxString& str, const wxString& text, bool wholeWords, const wxString& replacement)
+{
+    return FindTextInStringAndDo(str, text, wholeWords,
+                                 [=](wxString& s, size_t pos, size_t len){
+                                     s.replace(pos, len, replacement);
+                                     return pos + replacement.length();
+                                 });
+}
+
+enum FoundState
+{
+    Found_Not = 0,
+    Found_InOrig,
+    Found_InTrans,
+    Found_InComments,
+    Found_InExtractedComments
+};
+
+} // anonymous space
+
 bool FindFrame::DoFind(int dir)
 {
+    wxASSERT( dir == +1 || dir == -1 );
+
     if (!m_listCtrl)
         return false;
 
+    int mode = m_mode->GetSelection();
     int cnt = m_listCtrl->GetItemCount();
-    bool inStr = XRCCTRL(*this, "in_orig", wxCheckBox)->GetValue();
-    bool inTrans = XRCCTRL(*this, "in_trans", wxCheckBox)->GetValue();
-    bool inComments = XRCCTRL(*this, "in_comments", wxCheckBox)->GetValue();
-    bool inExtractedComments = XRCCTRL(*this, "in_auto_comments", wxCheckBox)->GetValue();
-    bool caseSens = XRCCTRL(*this, "case_sensitive", wxCheckBox)->GetValue();
-    bool wholeWords = XRCCTRL(*this, "whole_words", wxCheckBox)->GetValue();
+    bool inTrans = m_findInTrans->GetValue()  && (m_catalog->HasCapability(Catalog::Cap::Translations));
+    bool inSource = (mode == Mode_Find) && m_findInOrig->GetValue();
+    bool inComments = (mode == Mode_Find) && m_findInComments->GetValue();
+    bool ignoreCase = (mode == Mode_Find) && m_ignoreCase->GetValue();
+    bool wholeWords = m_wholeWords->GetValue();
+    bool wrapAround = m_wrapAround->GetValue();
     int posOrig = m_position;
+    size_t trans;
 
     FoundState found = Found_Not;
+    CatalogItemPtr lastItem;
+
     wxString textc;
     wxString text(ms_text);
 
-    if (!caseSens)
+    if (ignoreCase)
         text.MakeLower();
 
     // Only ignore mnemonics when searching if the text being searched for
     // doesn't contain them. That's a reasonable heuristics: most of the time,
     // ignoring them is the right thing to do and provides better results. But
     // sometimes, people want to search for them.
-    const bool ignoreMnemonicsAmp = (text.Find(_T('&')) == wxNOT_FOUND);
-    const bool ignoreMnemonicsUnderscore = (text.Find(_T('_')) == wxNOT_FOUND);
+    const bool ignoreAmp = (mode == Mode_Find) && (text.Find(_T('&')) == wxNOT_FOUND);
+    const bool ignoreUnderscore = (mode == Mode_Find) && (text.Find(_T('_')) == wxNOT_FOUND);
 
-    m_position += dir;
-    while (m_position >= 0 && m_position < cnt)
+    int oldPosition = m_position;
+    m_position = oldPosition + dir;
+    for (int tested = 0; tested < cnt; ++tested, m_position += dir)
     {
-        CatalogItem &dt = (*m_catalog)[m_listCtrl->ListIndexToCatalog(m_position)];
+        if (m_position < 0)
+        {
+            if (wrapAround)
+                m_position += cnt;
+            else
+                break;
+        }
+        else if (m_position >= cnt)
+        {
+            if (wrapAround)
+                m_position -= cnt;
+            else
+                break;
+        }
+
+        auto dt = lastItem = (*m_catalog)[m_listCtrl->ListIndexToCatalog(m_position)];
 
-        if (inStr)
+        if (inTrans)
         {
-            textc = dt.GetString();
-            if (!caseSens)
-                textc.MakeLower();
-            if (ignoreMnemonicsAmp)
-                textc.Replace("&", "");
-            if (ignoreMnemonicsUnderscore)
-                textc.Replace("_", "");
-            if (TextInString(textc, text, wholeWords))
+            trans = IsTextInStrings(dt->GetTranslations(), text, ignoreCase, wholeWords, ignoreAmp, ignoreUnderscore);
+            if (trans != (size_t)-1)
             {
-                found = Found_InOrig;
+                found = Found_InTrans;
                 break;
             }
         }
-        if (inTrans)
+        if (inSource)
         {
-            // concatenate all translations:
-            unsigned cntTrans = dt.GetNumberOfTranslations();
-            textc = wxEmptyString;
-            for (unsigned i = 0; i < cntTrans; i++)
+            if (IsTextInString(dt->GetString(), text, ignoreCase, wholeWords, ignoreAmp, ignoreUnderscore))
             {
-                textc += dt.GetTranslation(i);
+                found = Found_InOrig;
+                break;
             }
-            // and search for the substring in them:
-            if (!caseSens)
-                textc.MakeLower();
-            if (ignoreMnemonicsAmp)
-                textc.Replace("&", "");
-            if (ignoreMnemonicsUnderscore)
-                textc.Replace("_", "");
-
-            if (TextInString(textc, text, wholeWords)) { found = Found_InTrans; break; }
         }
         if (inComments)
         {
-            textc = dt.GetComment();
-            if (!caseSens)
-                textc.MakeLower();
-
-            if (TextInString(textc, text, wholeWords)) { found = Found_InComments; break; }
-        }
-        if (inExtractedComments)
-        {
-            wxArrayString extractedComments = dt.GetExtractedComments();
-            textc = wxEmptyString;
-            for (unsigned i = 0; i < extractedComments.GetCount(); i++)
-                textc += extractedComments[i];
-
-            if (!caseSens)
-                textc.MakeLower();
-
-            if (TextInString(textc, text, wholeWords)) { found = Found_InExtractedComments; break; }
+            if (IsTextInString(dt->GetComment(), text, ignoreCase, wholeWords, false, false))
+            {
+                found = Found_InComments;
+                break;
+            }
+            if (IsTextInStrings(dt->GetExtractedComments(), text, ignoreCase, wholeWords, false, false) != (size_t)-1)
+            {
+                found = Found_InExtractedComments;
+                break;
+            }
         }
-
-        m_position += dir;
     }
 
     if (found != Found_Not)
     {
+        m_lastItem = lastItem;
+
         m_listCtrl->EnsureVisible(m_position);
-#ifdef __WXOSX__
-        m_listCtrl->Refresh();
-#endif
         m_listCtrl->SelectAndFocus(m_position);
 
         // find the text on the control and select it:
 
-        wxTextCtrl* txt = NULL;
+        CustomizedTextCtrl* txt = nullptr;
         switch (found)
         {
             case Found_InOrig:
               txt = m_textCtrlOrig;
               break;
             case Found_InTrans:
-              txt = m_textCtrlTrans;
+              if (lastItem->GetNumberOfTranslations() == 1)
+              {
+                  txt = m_textCtrlTrans;
+              }
+              else
+              {
+                  m_pluralNotebook->SetSelection(trans);
+                  txt = (CustomizedTextCtrl*)m_pluralNotebook->GetCurrentPage();
+              }
               break;
             case Found_InComments:
             case Found_InExtractedComments:
@@ -386,11 +561,11 @@ bool FindFrame::DoFind(int dir)
         if (txt)
         {
             textc = txt->GetValue();
-            if (!caseSens)
+            if (ignoreCase)
                 textc.MakeLower();
             int pos = textc.Find(text);
             if (pos != wxNOT_FOUND)
-                txt->SetSelection(pos, pos + text.length());
+                txt->ShowFindIndicator(pos, (int)text.length());
         }
 
         return true;
@@ -399,3 +574,35 @@ bool FindFrame::DoFind(int dir)
     m_position = posOrig;
     return false;
 }
+
+bool FindFrame::DoReplaceInItem(CatalogItemPtr item)
+{
+    bool wholeWords = m_wholeWords->GetValue();
+    auto search = m_searchField->GetValue();
+    auto replace = m_replaceField->GetValue();
+
+    bool replaced = false;
+    for (auto& t: item->GetTranslations())
+    {
+        if (ReplaceTextInString(t, search, wholeWords, replace))
+            replaced = true;
+    }
+
+    if (replaced && item == m_owner->GetCurrentItem())
+        m_owner->UpdateToTextCtrl(PoeditFrame::UndoableEdit);
+
+    return replaced;
+}
+
+void FindFrame::OnReplace(wxCommandEvent&)
+{
+    DoReplaceInItem(m_lastItem);
+    m_listCtrl->Refresh();
+}
+
+void FindFrame::OnReplaceAll(wxCommandEvent&)
+{
+    for (auto& item: m_catalog->items())
+        DoReplaceInItem(item);
+    m_listCtrl->Refresh();
+}
diff --git a/src/findframe.h b/src/findframe.h
index df776c2..1309ff6 100644
--- a/src/findframe.h
+++ b/src/findframe.h
@@ -28,12 +28,17 @@
 
 #include "edlistctrl.h"
 
-#include <wx/dialog.h>
+#include <wx/frame.h>
 #include <wx/weakref.h>
 
 class WXDLLIMPEXP_FWD_CORE wxButton;
+class WXDLLIMPEXP_FWD_CORE wxCheckBox;
+class WXDLLIMPEXP_FWD_CORE wxChoice;
+class WXDLLIMPEXP_FWD_CORE wxTextCtrl;
 
 class Catalog;
+class CustomizedTextCtrl;
+class PoeditFrame;
 
 /** FindFrame is small dialog frame that contains controls for searching
     in content of EditorFrame's wxListCtrl object and associated Catalog
@@ -42,56 +47,60 @@ class Catalog;
     This class assumes that list control's user data contains index
     into the catalog.
  */
-class FindFrame : public wxDialog
+class FindFrame : public wxFrame
 {
     public:
         /** Ctor.
-            \param parent  Parent frame, FindFrame will float on it
+            \param owner  Parent frame, FindFrame will float on it
             \param list    List control to search in
             \param catalog Catalog to search in
          */
-        FindFrame(wxWindow *parent, PoeditListCtrl *list, Catalog *c,
-                  wxTextCtrl *textCtrlOrig, wxTextCtrl *textCtrlTrans);
+        FindFrame(PoeditFrame *owner, PoeditListCtrl *list, const CatalogPtr& c,
+                  CustomizedTextCtrl *textCtrlOrig, CustomizedTextCtrl *textCtrlTrans,
+                  wxNotebook *pluralNotebook);
         ~FindFrame();
 
-        /// Returns singleton instance if it exists. Updates the catalog
-        /// if it differs from the current one.
-        static FindFrame *Get(PoeditListCtrl *list, Catalog *forCatalog);
-
-        static void NotifyParentDestroyed(PoeditListCtrl *list, Catalog *forCatalog);
-
         /** Resets the search to starting position and changes
             the catalog in use. Called by EditorFrame when the user
             reloads catalog.
          */
-        void Reset(Catalog *c);
-
-        void FocusSearchField();
+        void Reset(const CatalogPtr& c);
 
         void FindPrev();
         void FindNext();
 
+        void ShowForFind();
+        void ShowForReplace();
+
     private:
+        void DoShowFor(int mode);
         void OnClose(wxCommandEvent &event);
+        void OnModeChanged();
         void OnPrev(wxCommandEvent &event);
         void OnNext(wxCommandEvent &event);
         void OnTextChange(wxCommandEvent &event);
         void OnCheckbox(wxCommandEvent &event);
+        void OnReplace(wxCommandEvent &event);
+        void OnReplaceAll(wxCommandEvent &event);
         bool DoFind(int dir);
-        DECLARE_EVENT_TABLE()
+        bool DoReplaceInItem(CatalogItemPtr item);
 
-        wxTextCtrl *m_textField;
+        PoeditFrame *m_owner;
+        wxChoice *m_mode;
+        wxTextCtrl *m_searchField, *m_replaceField;
+        wxCheckBox *m_ignoreCase, *m_wrapAround, *m_wholeWords,
+                   *m_findInOrig, *m_findInTrans, *m_findInComments;
 
         wxWeakRef<PoeditListCtrl> m_listCtrl;
-        Catalog *m_catalog;
+        CatalogPtr m_catalog;
         int m_position;
-        wxButton *m_btnPrev, *m_btnNext;
-        wxTextCtrl *m_textCtrlOrig, *m_textCtrlTrans;
+        CatalogItemPtr m_lastItem;
+        wxButton *m_btnClose, *m_btnReplaceAll, *m_btnReplace, *m_btnPrev, *m_btnNext;
+        CustomizedTextCtrl *m_textCtrlOrig, *m_textCtrlTrans;
+        wxNotebook *m_pluralNotebook;
 
         // NB: this is static so that last search term is remembered
         static wxString ms_text;
-
-        static FindFrame *ms_singleton;
 };
 
 
diff --git a/src/hidpi.h b/src/hidpi.h
index 5b2ab9b..4d7a387 100644
--- a/src/hidpi.h
+++ b/src/hidpi.h
@@ -27,8 +27,8 @@
 #define Poedit_hidpi_h
 
 #include <wx/defs.h>
-class WXDLLIMPEXP_BASE wxString;
-class WXDLLIMPEXP_CORE wxBitmap;
+class WXDLLIMPEXP_FWD_BASE wxString;
+class WXDLLIMPEXP_FWD_CORE wxBitmap;
 
 #ifdef __WXMSW__
     #define NEEDS_MANUAL_HIDPI 1
diff --git a/src/http_client.cpp b/src/http_client.cpp
new file mode 100644
index 0000000..d737717
--- /dev/null
+++ b/src/http_client.cpp
@@ -0,0 +1,101 @@
+/*
+ *  This file is part of Poedit (http://poedit.net)
+ *
+ *  Copyright (C) 2015 Vaclav Slavik
+ *
+ *  Permission is hereby granted, free of charge, to any person obtaining a
+ *  copy of this software and associated documentation files (the "Software"),
+ *  to deal in the Software without restriction, including without limitation
+ *  the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ *  and/or sell copies of the Software, and to permit persons to whom the
+ *  Software is furnished to do so, subject to the following conditions:
+ *
+ *  The above copyright notice and this permission notice shall be included in
+ *  all copies or substantial portions of the Software.
+ *
+ *  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ *  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ *  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ *  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ *  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *  FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ *  DEALINGS IN THE SOFTWARE.
+ *
+ */
+
+#include "http_client.h"
+
+#include "str_helpers.h"
+
+#include <iomanip>
+#include <sstream>
+
+#include <boost/uuid/uuid.hpp>
+#include <boost/uuid/uuid_io.hpp>
+#include <boost/uuid/uuid_generators.hpp>
+
+
+multipart_form_data::multipart_form_data()
+{
+    boost::uuids::random_generator gen;
+    m_boundary = boost::uuids::to_string(gen());
+}
+
+void multipart_form_data::add_value(const std::string& name, const std::string& value)
+{
+    m_body += "--" + m_boundary + "\r\n";
+    m_body += "Content-Disposition: form-data; name=\"" + name + "\"\r\n\r\n";
+    m_body += value;
+    m_body += "\r\n";
+}
+
+void multipart_form_data::add_file(const std::string& name, const std::string& filename, const std::string& file_content)
+{
+    m_body += "--" + m_boundary + "\r\n";
+    m_body += "Content-Disposition: form-data; name=\"" + name + "\"; filename=\"" + filename + "\"\r\n";
+    m_body += "Content-Type: application/octet-stream\r\n";
+    m_body += "Content-Transfer-Encoding: binary\r\n";
+    m_body += "\r\n";
+    m_body += file_content;
+    m_body += "\r\n";
+}
+
+std::string multipart_form_data::content_type() const
+{
+    return "multipart/form-data; boundary=" + m_boundary;
+}
+
+std::string multipart_form_data::body() const
+{
+    return m_body + "--" + m_boundary + "--\r\n\r\n";
+}
+
+
+std::string http_client::url_encode(const std::string& s)
+{
+    std::ostringstream escaped;
+    escaped.fill('0');
+    escaped << std::hex;
+
+    for (auto c: s)
+    {
+        if (c == '-' || c == '_' || c == '.' || c == '~' ||
+            (c >= 'a' && c <= 'z') ||
+            (c >= 'A' && c <= 'Z') ||
+            (c >= '0' && c <= '9'))
+        {
+            escaped << c;
+        }
+        else
+        {
+            escaped << '%' << std::setw(2) << int((unsigned char)c);
+        }
+    }
+
+    return escaped.str();
+}
+
+std::string http_client::url_encode(const std::wstring& s)
+{
+    return url_encode(str::to_utf8(s));
+}
diff --git a/src/http_client.h b/src/http_client.h
new file mode 100644
index 0000000..2868bad
--- /dev/null
+++ b/src/http_client.h
@@ -0,0 +1,243 @@
+/*
+ *  This file is part of Poedit (http://poedit.net)
+ *
+ *  Copyright (C) 2014-2015 Vaclav Slavik
+ *
+ *  Permission is hereby granted, free of charge, to any person obtaining a
+ *  copy of this software and associated documentation files (the "Software"),
+ *  to deal in the Software without restriction, including without limitation
+ *  the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ *  and/or sell copies of the Software, and to permit persons to whom the
+ *  Software is furnished to do so, subject to the following conditions:
+ *
+ *  The above copyright notice and this permission notice shall be included in
+ *  all copies or substantial portions of the Software.
+ *
+ *  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ *  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ *  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ *  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ *  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *  FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ *  DEALINGS IN THE SOFTWARE.
+ *
+ */
+
+#ifndef Poedit_http_client_h
+#define Poedit_http_client_h
+
+#ifdef HAVE_HTTP_CLIENT
+
+#include <exception>
+#include <functional>
+#include <map>
+#include <memory>
+#include <string>
+
+class http_client;
+
+class json_dict
+{
+public:
+    struct native;
+    json_dict() {}
+    json_dict(std::shared_ptr<native> value) : m_native(value) {}
+
+    bool is_null(const char *name) const;
+
+    json_dict subdict(const char *name) const;
+
+    std::string utf8_string(const char *name) const;
+    std::wstring wstring(const char *name) const;
+#ifdef __APPLE__
+    std::string native_string(const char *name) const { return utf8_string(name); }
+#else
+    std::wstring native_string(const char *name) const { return wstring(name); }
+#endif
+
+    int number(const char *name) const;
+    double double_number(const char *name) const;
+    void iterate_array(const char *name, std::function<void(const json_dict&)> on_item) const;
+
+private:
+    std::shared_ptr<native> m_native;
+};
+
+
+/// Stores POSTed data (RFC 1867)
+class multipart_form_data
+{
+public:
+    multipart_form_data();
+
+    /// Add a form value.
+    void add_value(const std::string& name, const std::string& value);
+
+    /// Add file upload.
+    void add_file(const std::string& name, const std::string& filename, const std::string& file_content);
+
+    /// Content-Type header to use with the data.
+    std::string content_type() const;
+
+    /// Returns generated body of the request.
+    std::string body() const;
+
+private:
+    std::string m_boundary;
+    std::string m_body;
+};
+
+
+/// Response to a HTTP request
+class http_response
+{
+public:
+    http_response(const json_dict& data) : m_ok(true), m_data(data) {}
+    http_response(std::exception_ptr e) : m_ok(false), m_error(e) {}
+
+    /// Is the response acceptable?
+    bool ok() const { return m_ok; }
+
+    /// Returns json data from the response. May throw if there was error.
+    const json_dict& json() const
+    {
+        if (m_error)
+            std::rethrow_exception(m_error);
+        return m_data;
+    }
+
+    /// Returns the stored exception, if any
+    std::exception_ptr exception() const { return m_error; }
+
+private:
+    bool m_ok;
+    std::exception_ptr m_error;
+    json_dict m_data;
+
+    friend class http_client;
+};
+
+
+/**
+    Client for accessing HTTP REST APIs.
+ */
+class http_client
+{
+public:
+    /// Connection flags for the client.
+    enum flags
+    {
+        /// The host uses SNI for SSL. Will use http instead of https on Windows XP.
+        uses_sni = 1
+    };
+
+    /**
+        Creates an instance of the client object.
+        
+        The client is good for accessing URLs with the provided prefix
+        (which may be any prefix, not just the hostname).
+        
+        @param flags OR-combination of http_client::flags values.
+     */
+    http_client(const std::string& url_prefix, int flags = 0);
+    virtual ~http_client();
+
+    /// Return true if the server is reachable, i.e. client is online
+    bool is_reachable() const;
+
+    /// Sets Authorization header to be used in all requests
+    void set_authorization(const std::string& auth);
+
+    typedef std::function<void(const http_response&)> response_func_t;
+
+    /// Perform a GET request at the given URL and call function to handle the result
+    void get(const std::string& url, response_func_t handler);
+
+    /// Perform a GET request at the given URL and ignore the response.
+    void get(const std::string& url)
+    {
+        get(url, [](const http_response&){});
+    }
+
+    /**
+        Perform a GET request and store the body in a file.
+        
+        Returned response's body won't be accessible in any way from @a handler.
+     */
+    void download(const std::string& url, const std::wstring& output_file, response_func_t handler);
+
+    /**
+        Perform a POST request with multipart/form-data formatted @a params.
+     */
+    void post(const std::string& url, const multipart_form_data& data, response_func_t handler);
+
+    // Variants that have separate error and success handlers:
+    template <typename T1, typename T2>
+    void get(const std::string& url, const T1& onResult, const T2& onError)
+    {
+        get(url, [onResult,onError](const http_response& r){
+            try
+            {
+                onResult(r.json());
+            }
+            catch (...)
+            {
+                onError(std::current_exception());
+            }
+        });
+    }
+
+    template <typename T1, typename T2>
+    void download(const std::string& url, const std::wstring& output_file, const T1& onSuccess, const T2& onError)
+    {
+        download(url, output_file, [onSuccess,onError](const http_response& r){
+            if (r.ok())
+                onSuccess();
+            else
+                onError(r.exception());
+        });
+    }
+
+    template <typename T1, typename T2>
+    void post(const std::string& url, const multipart_form_data& data, const T1& onSuccess, const T2& onError)
+    {
+        post(url, data, [onSuccess,onError](const http_response& r){
+            if (r.ok())
+                onSuccess();
+            else
+                onError(r.exception());
+        });
+    }
+
+    // Helper for encoding text as URL-encoded UTF-8
+    static std::string url_encode(const std::string& s);
+    static std::string url_encode(const std::wstring& s);
+
+protected:
+    /**
+        Extract more detailed, client specific error response from the
+        JSON body of error response, if available.
+        
+        Does nothing by default, but can be overriden in derived class.
+     */
+    virtual std::string parse_json_error(const json_dict& /*response*/) const
+        { return std::string(); }
+
+    /**
+         Called when an error response is returned, before calling error handler.
+
+         Can be used to react to specific errors, e.g. invalidate expired OAuth tokens,
+         or to modify the response.
+     */
+    virtual void on_error_response(int& /*statusCode*/, std::string& /*message*/) {};
+
+private:
+    class impl;
+    friend class http_response;
+
+    std::unique_ptr<impl> m_impl;
+};
+
+#endif // HAVE_HTTP_CLIENT
+
+#endif // Poedit_http_client_h
diff --git a/src/http_client_casablanca.cpp b/src/http_client_casablanca.cpp
new file mode 100644
index 0000000..3416950
--- /dev/null
+++ b/src/http_client_casablanca.cpp
@@ -0,0 +1,350 @@
+/*
+ *  This file is part of Poedit (http://poedit.net)
+ *
+ *  Copyright (C) 2014-2015 Vaclav Slavik
+ *
+ *  Permission is hereby granted, free of charge, to any person obtaining a
+ *  copy of this software and associated documentation files (the "Software"),
+ *  to deal in the Software without restriction, including without limitation
+ *  the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ *  and/or sell copies of the Software, and to permit persons to whom the
+ *  Software is furnished to do so, subject to the following conditions:
+ *
+ *  The above copyright notice and this permission notice shall be included in
+ *  all copies or substantial portions of the Software.
+ *
+ *  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ *  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ *  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ *  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ *  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *  FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ *  DEALINGS IN THE SOFTWARE.
+ *
+ */
+
+#include "http_client.h"
+
+#include "version.h"
+#include "str_helpers.h"
+
+#include <boost/algorithm/string/predicate.hpp>
+
+#include <cpprest/asyncrt_utils.h>
+#include <cpprest/http_client.h>
+#include <cpprest/http_msg.h>
+#include <cpprest/filestream.h>
+
+#ifdef _WIN32
+    #include <windows.h>
+    #include <wininet.h>
+#endif
+
+using namespace web;
+
+namespace
+{
+
+using utility::string_t;
+using utility::conversions::to_string_t;
+
+#ifndef _UTF16_STRINGS
+inline string_t to_string_t(const std::wstring& s) { return str::to_utf8(s); }
+#endif
+
+} // anonymous namespace
+
+struct json_dict::native
+{
+    native(const web::json::value& x) : val(x) {}
+
+    web::json::value val;
+
+    const web::json::value& get(const std::string& key)
+    {
+        return val.at(to_string_t(key));
+    }
+};
+
+static inline json_dict make_json_dict(const web::json::value& x)
+{
+    return std::make_shared<json_dict::native>(x);
+}
+
+bool json_dict::is_null(const char *name) const
+{
+    return m_native->get(name).is_null();
+}
+
+json_dict json_dict::subdict(const char *name) const
+{
+    return make_json_dict(m_native->get(name));
+}
+
+std::string json_dict::utf8_string(const char *name) const
+{
+    return str::to_utf8(m_native->get(name).as_string());
+}
+
+std::wstring json_dict::wstring(const char *name) const
+{
+    return str::to_wstring(m_native->get(name).as_string());
+}
+
+int json_dict::number(const char *name) const
+{
+    auto& val = m_native->get(name);
+    if (val.is_integer())
+    {
+        return val.as_integer();
+    }
+    else
+    {
+        // Some broken APIs may return strings instead of numbers, so lets try
+        // that too as a fallback
+        return std::stoi(val.as_string());
+    }
+}
+
+double json_dict::double_number(const char *name) const
+{
+    return m_native->get(name).as_double();
+}
+
+void json_dict::iterate_array(const char *name, std::function<void(const json_dict&)> on_item) const
+{
+    auto& val = m_native->get(name);
+    if (!val.is_array())
+        return;
+    auto size = val.size();
+    for (size_t i = 0; i < size; ++i)
+    {
+        on_item(make_json_dict(val.at(i)));
+    }
+}
+
+
+
+class http_client::impl
+{
+public:
+    impl(http_client& owner, const std::string& url_prefix, int flags)
+        : m_owner(owner), m_native(sanitize_url(url_prefix, flags))
+    {
+        #define make_wide_str(x) make_wide_str_(x)
+        #define make_wide_str_(x) L ## x
+
+        #if defined(_WIN32)
+            #define USER_AGENT_PLATFORM L" (Windows)"
+        #elif defined(__unix__)
+            #define USER_AGENT_PLATFORM L" (Unix)"
+        #else
+            #define USER_AGENT_PLATFORM
+        #endif
+        m_userAgent = L"Poedit/" make_wide_str(POEDIT_VERSION) USER_AGENT_PLATFORM;
+    }
+
+    ~impl()
+    {
+    }
+
+    bool is_reachable() const
+    {
+    #ifdef _WIN32
+        DWORD flags;
+        return ::InternetGetConnectedState(&flags, 0);
+    #else
+        return true; // TODO
+    #endif
+    }
+
+    void set_authorization(const std::string& auth)
+    {
+        m_auth = std::wstring(auth.begin(), auth.end());
+    }
+
+    void get(const std::string& url,
+             std::function<void(const http_response&)> handler)
+    {
+        http::http_request req(http::methods::GET);
+        req.headers().add(http::header_names::accept,     L"application/json");
+        req.headers().add(http::header_names::user_agent, m_userAgent);
+        if (!m_auth.empty())
+            req.headers().add(http::header_names::authorization, m_auth);
+        req.set_request_uri(to_string_t(url));
+
+        m_native.request(req)
+        .then([=](http::http_response response)
+        {
+            handle_error(response);
+            handler(make_json_dict(response.extract_json().get()));
+        })
+        .then([=](pplx::task<void> t)
+        {
+            try { t.get(); }
+            catch (...)
+            {
+                handler(std::current_exception());
+            }
+        });
+    }
+
+    void download(const std::string& url, const std::wstring& output_file, response_func_t handler)
+    {
+        using namespace concurrency::streams;
+        auto fileStream = std::make_shared<ostream>();
+
+        fstream::open_ostream(to_string_t(output_file)).then([=](ostream outFile)
+        {
+            *fileStream = outFile;
+            http::http_request req(http::methods::GET);
+            req.headers().add(http::header_names::user_agent, m_userAgent);
+            if (!m_auth.empty())
+                req.headers().add(http::header_names::authorization, m_auth);
+            req.set_request_uri(to_string_t(url));
+            return m_native.request(req);
+        })
+        .then([=](http::http_response response)
+        {
+            handle_error(response);
+            return response.body().read_to_end(fileStream->streambuf());
+        })
+        .then([=](size_t)
+        {
+            return fileStream->close();
+        })
+        .then([=](pplx::task<void> t)
+        {
+            try
+            {
+                t.get();
+                handler(json_dict());
+            }
+            catch (...)
+            {
+                handler(std::current_exception());
+            }
+        });
+    }
+
+    void post(const std::string& url, const multipart_form_data& data, response_func_t handler)
+    {
+        http::http_request req(http::methods::POST);
+        req.headers().add(http::header_names::accept,     L"application/json");
+        req.headers().add(http::header_names::user_agent, m_userAgent);
+        if (!m_auth.empty())
+            req.headers().add(http::header_names::authorization, m_auth);
+        req.set_request_uri(to_string_t(url));
+
+        auto body = data.body();
+        req.set_body(body, data.content_type());
+        req.headers().set_content_length(body.size());
+
+        m_native.request(req)
+        .then([=](http::http_response response)
+        {
+            handle_error(response);
+            handler(json_dict());
+        })
+        .then([=](pplx::task<void> t)
+        {
+            try { t.get(); }
+            catch (...)
+            {
+                handler(std::current_exception());
+            }
+        });
+    }
+
+private:
+    // handle non-OK responses:
+    void handle_error(http::http_response r)
+    {
+        if (r.status_code() == http::status_codes::OK)
+            return; // not an error
+
+        int status_code = r.status_code();
+        std::string msg;
+        if (r.headers().content_type() == L"application/json")
+        {
+            try
+            {
+                auto json = make_json_dict(r.extract_json().get());
+                msg = m_owner.parse_json_error(json);
+            }
+            catch (...) {} // report original error if parsing broken
+        }
+        if (msg.empty())
+            msg = str::to_utf8(r.reason_phrase());
+        m_owner.on_error_response(status_code, msg);
+        throw http::http_exception(status_code, msg);
+    }
+
+    // convert to wstring and make WinXP ready
+    static string_t sanitize_url(const std::string& url, int flags)
+    {
+        (void)flags;
+    #ifdef _WIN32
+        if (flags & http_client::uses_sni)
+        {
+            // Windows XP doesn't support SNI and so can't connect over SSL to
+            // hosts that use it. The use of SNI is increasingly common and some
+            // APIs Poedit needs to connect to use it. To keep things simple, just
+            // disable SSL on Windows XP.
+            OSVERSIONINFOEX info;
+            ZeroMemory(&info, sizeof(info));
+            info.dwOSVersionInfoSize = sizeof(info);
+            GetVersionEx(reinterpret_cast<OSVERSIONINFO*>(&info));
+            if (info.dwMajorVersion < 6) // XP
+            {
+                if (boost::starts_with(url, "https://"))
+                    return U("http://") + string_t(url.begin() + 8, url.end());
+            }
+        }
+    #endif
+        return to_string_t(url);
+    }
+
+private:
+    http_client& m_owner;
+    http::client::http_client m_native;
+    std::wstring m_userAgent;
+    std::wstring m_auth;
+};
+
+
+
+http_client::http_client(const std::string& url_prefix, int flags)
+    : m_impl(new impl(*this, url_prefix, flags))
+{
+}
+
+http_client::~http_client()
+{
+}
+
+bool http_client::is_reachable() const
+{
+    return m_impl->is_reachable();
+}
+
+void http_client::set_authorization(const std::string& auth)
+{
+    m_impl->set_authorization(auth);
+}
+
+void http_client::get(const std::string& url,
+                      std::function<void(const http_response&)> handler)
+{
+    m_impl->get(url, handler);
+}
+
+void http_client::download(const std::string& url, const std::wstring& output_file, response_func_t handler)
+{
+    m_impl->download(url, output_file, handler);
+}
+
+void http_client::post(const std::string& url, const multipart_form_data& data, response_func_t handler)
+{
+    m_impl->post(url, data, handler);
+}
diff --git a/src/icuhelpers.h b/src/icuhelpers.h
deleted file mode 100644
index 27d6390..0000000
--- a/src/icuhelpers.h
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- *  This file is part of Poedit (http://poedit.net)
- *
- *  Copyright (C) 2013-2015 Vaclav Slavik
- *
- *  Permission is hereby granted, free of charge, to any person obtaining a
- *  copy of this software and associated documentation files (the "Software"),
- *  to deal in the Software without restriction, including without limitation
- *  the rights to use, copy, modify, merge, publish, distribute, sublicense,
- *  and/or sell copies of the Software, and to permit persons to whom the
- *  Software is furnished to do so, subject to the following conditions:
- *
- *  The above copyright notice and this permission notice shall be included in
- *  all copies or substantial portions of the Software.
- *
- *  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- *  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- *  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- *  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- *  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- *  FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- *  DEALINGS IN THE SOFTWARE.
- *
- */
-
-#ifndef Poedit_icuhelpers_h
-#define Poedit_icuhelpers_h
-
-#include <unicode/unistr.h>
-#include <wx/string.h>
-#include <string>
-
-
-/**
-    Create read-only icu::UnicodeString from wxString efficiently.
-    
-    Notice that the resulting string is only valid for the input wxString's
-    lifetime duration, unless you make a copy.
- */
-inline icu::UnicodeString ToIcuStr(const wxString& str)
-{
-#if wxUSE_UNICODE_UTF8
-    return icu::UnicodeString::fromUTF8((const char*)str.utf8_str());
-#elif SIZEOF_WCHAR_T == 4
-    return icu::UnicodeString::fromUTF32((const UChar32*)str.wx_str(), (int32_t)str.length());
-#elif SIZEOF_WCHAR_T == 2
-    // read-only aliasing ctor, doesn't copy data
-    return icu::UnicodeString(true, str.wx_str(), str.length());
-#else
-    #error "WTF?!"
-#endif
-}
-
-/**
-Create read-only icu::UnicodeString from std::wstring efficiently.
-
-Notice that the resulting string is only valid for the input std::wstring's
-lifetime duration, unless you make a copy.
-*/
-inline icu::UnicodeString ToIcuStr(const std::wstring& str)
-{
-#if SIZEOF_WCHAR_T == 4
-    return icu::UnicodeString::fromUTF32((const UChar32*) str.c_str(), (int32_t) str.length());
-#elif SIZEOF_WCHAR_T == 2
-    // read-only aliasing ctor, doesn't copy data
-    return icu::UnicodeString(true, str.c_str(), str.length());
-#else
-    #error "WTF?!"
-#endif
-}
-
-/// Create wxString from icu::UnicodeString, making a copy.
-inline wxString FromIcuStr(const icu::UnicodeString& str)
-{
-#if wxUSE_UNICODE_WCHAR && SIZEOF_WCHAR_T == 2
-    return wxString(str.getBuffer(), str.length());
-#else
-    return wxString((const char*)str.getBuffer(), wxMBConvUTF16(), str.length() * 2);
-#endif
-}
-
-/// Create std::wstring from icu::UnicodeString, making a copy.
-inline std::wstring StdFromIcuStr(const icu::UnicodeString& str)
-{
-    return FromIcuStr(str).ToStdWstring();
-}
-
-
-#endif // Poedit_icuhelpers_h
diff --git a/src/keychain/keytar.h b/src/keychain/keytar.h
new file mode 100644
index 0000000..5ceda6a
--- /dev/null
+++ b/src/keychain/keytar.h
@@ -0,0 +1,42 @@
+/*
+ * Copyright (c) 2013 GitHub Inc.
+ * Copyright (c) 2015 Vaclav Slavik
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining
+ * a copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sublicense, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ */
+
+#ifndef SRC_KEYTAR_H_
+#define SRC_KEYTAR_H_
+
+#include <string>
+
+namespace keytar
+{
+
+bool AddPassword(const std::string& account, const std::string& password);
+
+bool GetPassword(const std::string& account, std::string* password);
+
+bool DeletePassword(const std::string& account);
+
+}  // namespace keytar
+
+#endif  // SRC_KEYTAR_H_
diff --git a/src/keychain/keytar_posix.cc b/src/keychain/keytar_posix.cc
new file mode 100644
index 0000000..5c4f655
--- /dev/null
+++ b/src/keychain/keytar_posix.cc
@@ -0,0 +1,111 @@
+/*
+ * Copyright (c) 2013 GitHub Inc.
+ * Copyright (c) 2015 Vaclav Slavik
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining
+ * a copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sublicense, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ */
+
+#include "keytar.h"
+
+#include <libsecret/secret.h>
+#include <stdio.h>
+#include <unistd.h>
+
+namespace keytar
+{
+
+namespace
+{
+
+#ifdef __GNUC__
+   #pragma GCC diagnostic ignored "-Wmissing-field-initializers"
+#endif
+
+const SecretSchema kSchema = {
+  "net.poedit.Credentials", SECRET_SCHEMA_NONE,
+  {
+    { "account", SECRET_SCHEMA_ATTRIBUTE_STRING },
+    { NULL, SecretSchemaAttributeType(0) },
+  }
+};
+
+}  // namespace
+
+bool AddPassword(const std::string& account, const std::string& password)
+{
+  GError *error = NULL;
+  gboolean result = secret_password_store_sync(
+      &kSchema,
+      SECRET_COLLECTION_DEFAULT,
+      account.c_str(),  // label
+      password.c_str(),
+      NULL,  // not cancellable
+      &error,
+      "account", account.c_str(),
+      NULL);
+  if (error != NULL) {
+    fprintf(stderr, "%s\n", error->message);
+    g_error_free(error);
+  }
+  return result;
+}
+
+bool GetPassword(const std::string& account, std::string* password)
+{
+  GError *error = NULL;
+  gchar* raw_passwords;
+  raw_passwords = secret_password_lookup_sync(
+      &kSchema,
+      NULL,  // not cancellable
+      &error,
+      "account", account.c_str(),
+      NULL);
+
+  if (error != NULL) {
+    fprintf(stderr, "%s\n", error->message);
+    g_error_free(error);
+    return false;
+  } else if (raw_passwords == NULL) {
+    return false;
+  } else {
+    *password = raw_passwords;
+  }
+  secret_password_free(raw_passwords);
+  return true;
+}
+
+bool DeletePassword(const std::string& account)
+{
+  GError *error = NULL;
+  gboolean result = secret_password_clear_sync(
+      &kSchema,
+      NULL,  // not cancellable
+      &error,
+      "account", account.c_str(),
+      NULL);
+  if (error != NULL) {
+    fprintf(stderr, "%s\n", error->message);
+    g_error_free(error);
+  }
+  return result;
+}
+
+}  // namespace keytar
diff --git a/src/language.cpp b/src/language.cpp
index d4496d2..336f149 100644
--- a/src/language.cpp
+++ b/src/language.cpp
@@ -25,8 +25,6 @@
 
 #include "language.h"
 
-#include "icuhelpers.h"
-
 #include <cctype>
 #include <algorithm>
 #include <unordered_map>
@@ -40,6 +38,18 @@
 
 #include <wx/filename.h>
 
+#include "str_helpers.h"
+
+#ifdef HAVE_CLD2
+    #ifdef HAVE_CLD2_PUBLIC_COMPACT_LANG_DET_H
+        #include <cld2/public/compact_lang_det.h>
+        #include <cld2/public/encodings.h>
+    #else
+        #include "public/compact_lang_det.h"
+        #include "public/encodings.h"
+    #endif
+#endif
+
 // GCC's libstdc++ didn't have functional std::regex implementation until 4.9
 #if (defined(__GNUC__) && !defined(__clang__) && !wxCHECK_GCC_VERSION(4,9))
     #include <boost/regex.hpp>
@@ -169,11 +179,11 @@ const DisplayNamesData& GetDisplayNamesData()
             }
             
             s.foldCase();
-            data.names[StdFromIcuStr(s)] = code;
+            data.names[str::to_wstring(s)] = code;
 
             loc->getDisplayName(locEng, s);
             s.foldCase();
-            data.namesEng[StdFromIcuStr(s)] = code;
+            data.namesEng[str::to_wstring(s)] = code;
         }
 
         // sort the names alphabetically for data.sortedNames:
@@ -197,7 +207,7 @@ const DisplayNamesData& GetDisplayNamesData()
         // convert into std::wstring
         data.sortedNames.reserve(names.size());
         for (auto s: names)
-            data.sortedNames.push_back(StdFromIcuStr(s));
+            data.sortedNames.push_back(str::to_wstring(s));
     });
 
     return data;
@@ -266,9 +276,9 @@ Language Language::TryParse(const std::wstring& s)
 
     // If not, perhaps it's a human-readable name (perhaps coming from the language control)?
     auto names = GetDisplayNamesData();
-    icu::UnicodeString s_icu = ToIcuStr(s);
+    icu::UnicodeString s_icu = str::to_icu(s);
     s_icu.foldCase();
-    std::wstring folded = StdFromIcuStr(s_icu);
+    std::wstring folded = str::to_wstring(s_icu);
     auto i = names.names.find(folded);
     if (i != names.names.end())
         return Language(i->second);
@@ -381,14 +391,14 @@ wxString Language::DisplayName() const
 {
     icu::UnicodeString s;
     ToIcu().getDisplayName(s);
-    return FromIcuStr(s);
+    return str::to_wx(s);
 }
 
 wxString Language::LanguageDisplayName() const
 {
     icu::UnicodeString s;
     ToIcu().getDisplayLanguage(s);
-    return FromIcuStr(s);
+    return str::to_wx(s);
 }
 
 wxString Language::DisplayNameInItself() const
@@ -396,7 +406,7 @@ wxString Language::DisplayNameInItself() const
     auto loc = ToIcu();
     icu::UnicodeString s;
     loc.getDisplayName(loc, s);
-    return FromIcuStr(s);
+    return str::to_wx(s);
 }
 
 wxString Language::FormatForRoundtrip() const
@@ -465,3 +475,46 @@ Language Language::TryGuessFromFilename(const wxString& filename)
 
     return Language(); // failed to match
 }
+
+
+Language Language::TryDetectFromText(const char *buffer, size_t len, Language probableLanguage)
+{
+#ifdef HAVE_CLD2
+    using namespace CLD2;
+
+    CLDHints hints = {NULL, NULL, UNKNOWN_ENCODING, UNKNOWN_LANGUAGE};
+    if (probableLanguage.IsValid())
+    {
+        if (probableLanguage.Lang() == "en")
+            hints.language_hint = ENGLISH;
+        else
+            hints.language_hint = GetLanguageFromName(probableLanguage.RFC3066().c_str());
+    }
+
+    // three best guesses; we don't care, but they must be passed in
+    CLD2::Language language3[3];
+    int percent3[3];
+    double normalized_score3[3];
+    // more result info:
+    int text_bytes;
+    bool is_reliable;
+
+    auto lang = CLD2::ExtDetectLanguageSummary(
+                        buffer, (int)len,
+                        /*is_plain_text=*/false, // may have embedded HTML markup
+                        &hints,
+                        /*flags=*/0,
+                        language3, percent3, normalized_score3,
+                        /*resultchunkvector=*/nullptr,
+                        &text_bytes,
+                        &is_reliable);
+    if (lang != UNKNOWN_LANGUAGE && is_reliable)
+        return Language::TryParse(LanguageCode(lang));
+    else
+        return Language();
+#else
+    (void)buffer;
+    (void)len;
+    return probableLanguage;
+#endif
+}
diff --git a/src/language.h b/src/language.h
index b6dd231..deee009 100644
--- a/src/language.h
+++ b/src/language.h
@@ -111,6 +111,8 @@ public:
         if you are not sure.
      */
     static Language TryParse(const std::wstring& s);
+    static Language TryParse(const std::string& s)
+        { return TryParse(std::wstring(s.begin(), s.end())); }
 
     /**
         Like TryParse(), but only accepts language codes if they are known
@@ -130,6 +132,17 @@ public:
      */
     static Language TryGuessFromFilename(const wxString& filename);
 
+    /**
+        Try to detect the language from UTF-8 text.
+        
+        Pass @a probableLanguage if the result is likely known, e.g. English
+        for source texts.
+     */
+    static Language TryDetectFromText(const char *buffer, size_t len,
+                                      Language probableLanguage = Language());
+
+    /// Returns object for English language
+    static Language English() { return Language("en"); }
 
     /**
         Checks if @a s has the form of language code.
diff --git a/src/logcapture.h b/src/logcapture.h
index 590ba53..b0e9929 100644
--- a/src/logcapture.h
+++ b/src/logcapture.h
@@ -29,7 +29,7 @@
 #include <wx/string.h>
 #include <wx/log.h>
 
-// Capture all wx log output into a text buffer and supress normal output:
+// Capture all wx log output into a text buffer and suppress normal output:
 class LogCapture : public wxLogInterposer
 {
 public:
diff --git a/src/main_toolbar.h b/src/main_toolbar.h
index 32fbb8e..a0bf57a 100644
--- a/src/main_toolbar.h
+++ b/src/main_toolbar.h
@@ -38,6 +38,8 @@ public:
     virtual bool IsFuzzy() const = 0;
     virtual void SetFuzzy(bool on) = 0;
 
+    virtual void EnableSyncWithCrowdin(bool on) = 0;
+
     static std::unique_ptr<MainToolbar> Create(wxFrame *parent);
 
 protected:
diff --git a/src/manager.cpp b/src/manager.cpp
index 978fe9e..46809a1 100644
--- a/src/manager.cpp
+++ b/src/manager.cpp
@@ -188,7 +188,7 @@ static void AddCatalogToList(wxListCtrl *list, int i, int id, const wxString& fi
     }
     else
     {
-        // supress error messages, we don't mind if the catalog is corrupted
+        // suppress error messages, we don't mind if the catalog is corrupted
         // FIXME: *do* indicate error somehow
         wxLogNull nullLog;
 
diff --git a/src/prefsdlg.cpp b/src/prefsdlg.cpp
index dfb5d28..242857f 100644
--- a/src/prefsdlg.cpp
+++ b/src/prefsdlg.cpp
@@ -33,6 +33,7 @@
 #include <wx/checkbox.h>
 #include <wx/choice.h>
 #include <wx/checklst.h>
+#include <wx/notebook.h>
 #include <wx/sizer.h>
 #include <wx/stattext.h>
 #include <wx/fontutil.h>
@@ -52,6 +53,7 @@
 #include "edapp.h"
 #include "edframe.h"
 #include "catalog.h"
+#include "crowdin_gui.h"
 #include "hidpi.h"
 #include "tm/transmem.h"
 #include "chooselang.h"
@@ -80,7 +82,7 @@ class PrefsPanel : public wxPanel
 {
 public:
     PrefsPanel(wxWindow *parent)
-        : wxPanel(parent), m_supressDataTransfer(0)
+        : wxPanel(parent), m_suppressDataTransfer(0)
     {
 #ifdef __WXOSX__
         // Refresh the content of prefs panels when re-opening it.
@@ -100,11 +102,11 @@ public:
 
     bool TransferDataToWindow() override
     {
-        if (m_supressDataTransfer)
+        if (m_suppressDataTransfer)
             return false;
-        m_supressDataTransfer++;
+        m_suppressDataTransfer++;
         InitValues(*wxConfig::Get());
-        m_supressDataTransfer--;
+        m_suppressDataTransfer--;
 
         // This is a "bit" of a hack: we take advantage of being in the last point before
         // showing the window and re-layout it on the off chance that some data transfered
@@ -119,11 +121,11 @@ public:
 
     bool TransferDataFromWindow() override
     {
-        if (m_supressDataTransfer)
+        if (m_suppressDataTransfer)
             return false;
-        m_supressDataTransfer++;
+        m_suppressDataTransfer++;
         SaveValues(*wxConfig::Get());
-        m_supressDataTransfer--;
+        m_suppressDataTransfer--;
         return true;
     }
 
@@ -137,18 +139,10 @@ protected:
     virtual void InitValues(const wxConfigBase& cfg) = 0;
     virtual void SaveValues(wxConfigBase& cfg) = 0;
 
-    int m_supressDataTransfer;
+    int m_suppressDataTransfer;
 };
 
 
-#ifdef __WXOSX__
-    #define BORDER_WIN(dir, n) Border(dir, 0)
-    #define BORDER_OSX(dir, n) Border(dir, n)
-#else
-    #define BORDER_WIN(dir, n) Border(dir, n)
-    #define BORDER_OSX(dir, n) Border(dir, 0)
-#endif
-
 
 class GeneralPageWindow : public PrefsPanel
 {
@@ -473,8 +467,7 @@ private:
             _("Select translation files to import"),
             wxEmptyString,
             wxEmptyString,
-			wxString::Format("%s (*.po)|*.po|%s (*.*)|*.*",
-                _("PO Translation Files"), _("All Files")),
+			Catalog::GetTypesFileMask({Catalog::Type::PO}),
 			wxFD_OPEN | wxFD_FILE_MUST_EXIST | wxFD_MULTIPLE));
 
         dlg->ShowWindowModalThenDo([=](int retcode){
@@ -489,15 +482,15 @@ private:
                                       (int)paths.size() * 2 + 1,
                                       this,
                                       wxPD_APP_MODAL|wxPD_AUTO_HIDE|wxPD_CAN_ABORT);
-            auto tm = TranslationMemory::Get().CreateWriter();
+            auto tm = TranslationMemory::Get().GetWriter();
             int step = 0;
             for (size_t i = 0; i < paths.size(); i++)
             {
-                std::unique_ptr<Catalog> cat(new Catalog(paths[i]));
+                CatalogPtr cat = std::make_shared<Catalog>(paths[i]);
                 if (!progress.Update(++step))
                     break;
                 if (cat->IsOk())
-                    tm->Insert(*cat);
+                    tm->Insert(cat);
                 if (!progress.Update(++step))
                     break;
             }
@@ -520,7 +513,7 @@ private:
         dlg->ShowWindowModalThenDo([this,dlg](int retcode){
             if (retcode == wxID_YES) {
                 wxBusyCursor bcur;
-                auto tm = TranslationMemory::Get().CreateWriter();
+                auto tm = TranslationMemory::Get().GetWriter();
                 tm->DeleteAll();
                 tm->Commit();
                 UpdateStats();
@@ -542,7 +535,7 @@ class TMPage : public wxPreferencesPage
 public:
     wxString GetName() const override
     {
-#ifdef __WXOSX__
+#if defined(__WXOSX__) || defined(__WXGTK__)
         // TRANSLATORS: This is abbreviation of "Translation Memory" used in Preferences on OS X.
         // Long text looks weird there, too short (like TM) too, but less so. "General" is about ideal
         // length there.
@@ -663,9 +656,9 @@ private:
             wxID_OK
         );
 
-        m_supressDataTransfer++;
+        m_suppressDataTransfer++;
         dlg->ShowWindowModalThenDo([=](int retcode){
-            m_supressDataTransfer--;
+            m_suppressDataTransfer--;
             (void)dlg; // force use
             if (retcode == wxID_OK)
             {
@@ -684,7 +677,7 @@ private:
 
     void OnNewExtractor(wxCommandEvent&)
     {
-        m_supressDataTransfer++;
+        m_suppressDataTransfer++;
 
         Extractor info;
         m_extractors.Data.push_back(info);
@@ -702,7 +695,7 @@ private:
                 m_extractors.Data.erase(m_extractors.Data.begin() + index);
             }
 
-            m_supressDataTransfer--;
+            m_suppressDataTransfer--;
 
             if (wxPreferencesEditor::ShouldApplyChangesImmediately())
                 TransferDataFromWindow();
@@ -720,11 +713,26 @@ private:
     void OnDeleteExtractor(wxCommandEvent&)
     {
         int index = m_list->GetSelection();
-        m_extractors.Data.erase(m_extractors.Data.begin() + index);
-        m_list->Delete(index);
 
-        if (wxPreferencesEditor::ShouldApplyChangesImmediately())
-            TransferDataFromWindow();
+        auto title = _("Delete extractor");
+        auto main = wxString::Format(_(L"Are you sure you want to delete the “%s” extractor?"), m_extractors.Data[index].Name);
+
+        wxWindowPtr<wxMessageDialog> dlg(new wxMessageDialog(this, main, title, wxYES_NO | wxNO_DEFAULT | wxICON_QUESTION));
+        #ifdef __WXOSX__
+        dlg->SetExtendedMessage(" "); // prevent wx from using the title stupidly
+        #endif
+        dlg->SetYesNoLabels(_("Delete"), _("Cancel"));
+
+        dlg->ShowWindowModalThenDo([this,index,dlg](int retcode){
+            if (retcode == wxID_YES)
+            {
+                m_extractors.Data.erase(m_extractors.Data.begin() + index);
+                m_list->Delete(index);
+
+                if (wxPreferencesEditor::ShouldApplyChangesImmediately())
+                    TransferDataFromWindow();
+            }
+        });
     }
 
     void OnEnableExtractor(wxCommandEvent& e)
@@ -752,6 +760,58 @@ public:
 
 
 
+#ifdef HAVE_HTTP_CLIENT
+class AccountsPageWindow : public PrefsPanel
+{
+public:
+    AccountsPageWindow(wxWindow *parent) : PrefsPanel(parent)
+    {
+        wxSizer *topsizer = new wxBoxSizer(wxVERTICAL);
+        m_login = new CrowdinLoginPanel(this);
+        topsizer->Add(m_login, wxSizerFlags(1).Expand().Border(wxALL, PX(15)));
+        SetSizer(topsizer);
+
+    #ifdef __WXOSX__
+        // This window was created on demand, init immediately:
+        m_login->EnsureInitialized();
+    #else
+        // On other platforms, notebook pages are all created at once. Don't do
+        // the expensive initialization until shown for the first time. This code
+        // is a hack that takes advantage of wxPreferencesEditor's implementation
+        // detail, but oh well:
+        auto notebook = dynamic_cast<wxNotebook*>(parent);
+        if (notebook)
+        {
+            notebook->Bind(wxEVT_NOTEBOOK_PAGE_CHANGED, [=](wxBookCtrlEvent& e){
+                e.Skip();
+                if (notebook->GetPage(e.GetSelection()) == this)
+                    m_login->EnsureInitialized();
+            });
+        }
+    #endif
+    }
+
+    void InitValues(const wxConfigBase&) override
+    {
+    }
+
+    void SaveValues(wxConfigBase&) override
+    {
+    }
+
+private:
+    CrowdinLoginPanel *m_login;
+};
+
+class AccountsPage : public wxPreferencesPage
+{
+public:
+    wxString GetName() const override { return PXNotebookTab(_("Accounts")); }
+    wxBitmap GetLargeIcon() const override { return wxArtProvider::GetBitmap("Prefs-Accounts"); }
+    wxWindow *CreateWindow(wxWindow *parent) override { return new AccountsPageWindow(parent); }
+};
+#endif // HAVE_HTTP_CLIENT
+
 
 #ifdef HAS_UPDATES_CHECK
 class UpdatesPageWindow : public PrefsPanel
@@ -918,6 +978,9 @@ std::unique_ptr<PoeditPreferencesEditor> PoeditPreferencesEditor::Create()
     p->AddPage(new GeneralPage);
     p->AddPage(new TMPage);
     p->AddPage(new ExtractorsPage);
+#ifdef HAVE_HTTP_CLIENT
+    p->AddPage(new AccountsPage);
+#endif
 #ifdef HAS_UPDATES_CHECK
     p->AddPage(new UpdatesPage);
 #endif
diff --git a/src/progressinfo.cpp b/src/progressinfo.cpp
index fca83e5..ba0689c 100644
--- a/src/progressinfo.cpp
+++ b/src/progressinfo.cpp
@@ -78,7 +78,7 @@ void ProgressInfo::SetGaugeMax(int limit)
     XRCCTRL(*m_dlg, "progress", wxGauge)->SetRange(limit);
 }
 
-void ProgressInfo::UpdateGauge(int increment)
+bool ProgressInfo::UpdateGauge(int increment)
 {
     wxGauge *g = XRCCTRL(*m_dlg, "progress", wxGauge);
     g->SetValue(g->GetValue() + increment);
@@ -89,6 +89,8 @@ void ProgressInfo::UpdateGauge(int increment)
     txt->SetLabel(txt->GetLabel());
     txt->Update();
 #endif
+
+    return !m_cancelled;
 }
 
 void ProgressInfo::ResetGauge(int value)
diff --git a/src/progressinfo.h b/src/progressinfo.h
index 308cfdc..c4f815d 100644
--- a/src/progressinfo.h
+++ b/src/progressinfo.h
@@ -46,7 +46,7 @@ class ProgressInfo
                 \param increment the delta
                 \return false if user cancelled operation, true otherwise
              */
-            void UpdateGauge(int increment = +1);
+            bool UpdateGauge(int increment = +1);
 
             /// Resets the gauge to given \a value.
             void ResetGauge(int value = 0);
diff --git a/src/propertiesdlg.cpp b/src/propertiesdlg.cpp
index 0e28baa..082b487 100644
--- a/src/propertiesdlg.cpp
+++ b/src/propertiesdlg.cpp
@@ -25,28 +25,346 @@
 
 #include <wx/sizer.h>
 #include <wx/statline.h>
+#include <wx/bmpbuttn.h>
 #include <wx/combobox.h>
+#include <wx/filedlg.h>
+#include <wx/dirdlg.h>
+#include <wx/dnd.h>
 #include <wx/radiobut.h>
 #include <wx/textctrl.h>
+#include <wx/textdlg.h>
 #include <wx/editlbox.h>
 #include <wx/xrc/xmlres.h>
-#include <wx/intl.h>
 #include <wx/config.h>
-#include <wx/tokenzr.h>
+#include <wx/intl.h>
+#include <wx/listbox.h>
+#include <wx/sizer.h>
 #include <wx/stattext.h>
+#include <wx/menu.h>
 #include <wx/notebook.h>
 
+#include <algorithm>
+#include <functional>
 #include <memory>
 
 #include "propertiesdlg.h"
 #include "hidpi.h"
 #include "language.h"
 #include "pluralforms/pl_evaluate.h"
+#include "utility.h"
+
+namespace
+{
+
+inline wxString NormalizedPath(const wxString& fn)
+{
+    auto f = MakeFileName(fn);
+    f.Normalize();
+    return f.GetFullPath();
+}
+
+inline wxString RelativePath(const wxString& fn, const wxString& to)
+{
+    if (fn == to)
+        return ".";
+    auto f = MakeFileName(fn);
+    f.MakeRelativeTo(to);
+    return f.GetFullPath();
+}
+
+} // anonymous namespace
+
+struct PropertiesDialog::PathsData
+{
+    PathsData() : Changed(false) {}
+
+    std::function<void()> RefreshView;
+
+    // Did the data change in any way?
+    bool Changed;
+
+    // all paths here are absolute, normalized paths
+
+    // directory where the PO(T) file is
+    wxString filedir;
+
+    // catalog settings
+    wxString basepath;
+    wxArrayString paths;
+    wxArrayString excluded;
+
+    void GetFromCatalog(CatalogPtr cat)
+    {
+        Changed = false;
+        auto& hdr = cat->Header();
+        filedir = wxFileName(cat->GetFileName()).GetPathWithSep();
+        basepath = cat->GetSourcesBasePath();
+        if (basepath.empty())
+            basepath = filedir;
+        paths.clear();
+        excluded.clear();
+        for (auto& p: hdr.SearchPaths)
+        {
+            if (p.empty())
+                continue;
+            paths.push_back(NormalizedPath(basepath + p));
+        }
+        for (auto& p: hdr.SearchPathsExcluded)
+        {
+            if (p.empty())
+                continue;
+            if (wxIsWild(p))
+                excluded.push_back(p);
+            else
+                excluded.push_back(NormalizedPath(basepath + p));
+        }
+    }
+
+    void SetToCatalog(CatalogPtr cat) const
+    {
+        auto& hdr = cat->Header();
+        hdr.BasePath = RelativePath(basepath, filedir);
+        hdr.SearchPaths.clear();
+        hdr.SearchPathsExcluded.clear();
+        for (auto& p: paths)
+        {
+            auto rel = RelativePath(p, basepath);
+            if (rel.Last() == wxFILE_SEP_PATH)
+                rel.RemoveLast();
+            hdr.SearchPaths.push_back(rel);
+        }
+        for (auto& p: excluded)
+        {
+            if (wxIsWild(p))
+            {
+                hdr.SearchPathsExcluded.push_back(p);
+            }
+            else
+            {
+                auto rel = RelativePath(p, basepath);
+                if (rel.Last() == wxFILE_SEP_PATH)
+                    rel.RemoveLast();
+                hdr.SearchPathsExcluded.push_back(rel);
+            }
+        }
+    }
+
+    void UpdateBasePath()
+    {
+        if (!paths.empty())
+            basepath = CommonDirectory(paths).GetFullPath();
+        else
+            basepath = filedir;
+    }
+};
+
+
+class PropertiesDialog::PathsList : public wxPanel
+{
+public:
+    PathsList(wxWindow *parent, const wxString& label, std::shared_ptr<PathsData> data)
+        : wxPanel(parent, wxID_ANY),
+          m_data(data)
+    {
+#if defined(__WXOSX__)
+        SetWindowVariant(wxWINDOW_VARIANT_SMALL);
+        // FIXME: gross hack to make inside-notebook color to match
+        SetBackgroundColour(parent->GetBackgroundColour().ChangeLightness(93));
+#elif defined(__WXMSW__)
+        SetBackgroundColour(*wxWHITE);
+#endif
+
+        auto sizer = new wxBoxSizer(wxVERTICAL);
+        SetSizer(sizer);
+
+        auto lbl = new wxStaticText(this, wxID_ANY, label);
+        sizer->Add(lbl, wxSizerFlags().Expand());
+        m_list = new wxListBox(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0, nullptr, wxLB_EXTENDED);
+        sizer->Add(m_list, wxSizerFlags(1).Expand());
+
+#if defined(__WXOSX__)
+        auto add = new wxBitmapButton(this, wxID_ANY, wxArtProvider::GetBitmap("NSAddTemplate"), wxDefaultPosition, wxSize(18, 18), wxBORDER_SUNKEN);
+        auto remove = new wxBitmapButton(this, wxID_ANY, wxArtProvider::GetBitmap("NSRemoveTemplate"), wxDefaultPosition, wxSize(18,18), wxBORDER_SUNKEN);
+#elif defined(__WXMSW__)
+        auto add = new wxBitmapButton(this, wxID_ANY, wxArtProvider::GetBitmap("list-add"), wxDefaultPosition, wxSize(19,19));
+        auto remove = new wxBitmapButton(this, wxID_ANY, wxArtProvider::GetBitmap("list-remove"), wxDefaultPosition, wxSize(19,19));
+#elif defined(__WXGTK__)
+        auto add = new wxBitmapButton(this, wxID_ANY, wxArtProvider::GetBitmap("list-add"), wxDefaultPosition, wxDefaultSize, wxNO_BORDER);
+        auto remove = new wxBitmapButton(this, wxID_ANY, wxArtProvider::GetBitmap("list-remove"), wxDefaultPosition, wxDefaultSize, wxNO_BORDER);
+#endif
+        auto buttonSizer = new wxBoxSizer(wxHORIZONTAL);
+        buttonSizer->Add(add);
+        buttonSizer->Add(remove);
+        sizer->Add(buttonSizer);
+
+        SetDropTarget(new DropTarget(this));
+
+        add->Bind(wxEVT_BUTTON, &PathsList::OnAddMenu, this);
+        remove->Bind(wxEVT_UPDATE_UI, [=](wxUpdateUIEvent& e){
+            wxArrayInt dummy;
+            e.Enable(m_list->GetSelections(dummy) > 0);
+        });
+        remove->Bind(wxEVT_BUTTON, [=](wxCommandEvent&){
+            wxArrayInt s;
+            m_list->GetSelections(s);
+            Remove(s);
+        });
+
+#if 0
+        // TODO: Add background overlay with instructions:
+        _("<big>Drag and Drop Folders Here</big>\n\nor use the + button")
+        _("<big>Drag and drop folders here</big>\n\nor use the + button")
+#endif
+    }
+
+    void UpdateFromData()
+    {
+        m_list->Clear();
+        for (auto& p: Array())
+        {
+            if (wxIsWild(p))
+                m_list->Append(p);
+            else
+                m_list->Append(RelativePath(p, m_data->basepath));
+        }
+    }
+
+    void Add(const wxArrayString& files)
+    {
+        auto& a = Array();
+        for (auto& f: files)
+        {
+            if (wxIsWild(f))
+                a.push_back(f);
+            else
+                a.push_back(NormalizedPath(f));
+        }
+        m_data->Changed = true;
+        m_data->UpdateBasePath();
+        m_data->RefreshView();
+    }
+
+    void Add(const wxString& f)
+    {
+        Add(wxArrayString(1, &f));
+    }
+
+    void Remove(wxArrayInt selection)
+    {
+        auto& a = Array();
+        std::sort(selection.begin(), selection.end());
+        for (auto i = selection.rbegin(); i != selection.rend(); ++i)
+            a.RemoveAt(*i);
+        m_data->Changed = true;
+        m_data->UpdateBasePath();
+        m_data->RefreshView();
+    }
+
+protected:
+    virtual wxArrayString& Array() = 0;
+    virtual bool AllowWildcards() const = 0;
+
+    class DropTarget : public wxFileDropTarget
+    {
+    public:
+        DropTarget(PathsList *parent) : m_parent(parent) {}
+
+        bool OnDropFiles(wxCoord, wxCoord, const wxArrayString& files) override
+        {
+            m_parent->Add(files);
+            return true;
+        }
+
+        wxDragResult OnDragOver(wxCoord, wxCoord, wxDragResult) override { return wxDragCopy; }
 
+        PathsList *m_parent;
+    };
 
-PropertiesDialog::PropertiesDialog(wxWindow *parent, bool fileExistsOnDisk, int initialPage)
+    void OnAddMenu(wxCommandEvent& e)
+    {
+        static const auto idFolder = wxNewId();
+        static const auto idFile = wxNewId();
+        static const auto idWild = wxNewId();
+
+        wxMenu *menu = new wxMenu();
+        menu->Append(idFolder, MSW_OR_OTHER(_("Add folders..."), _("Add Folders...")));
+        menu->Append(idFile, MSW_OR_OTHER(_("Add files..."), _("Add Files...")));
+        if (AllowWildcards())
+            menu->Append(idWild, MSW_OR_OTHER(_("Add wildcard..."), _("Add Wildcard...")));
+
+        menu->Bind(wxEVT_MENU, [=](wxCommandEvent&){
+            wxDirDialog dlg(this,
+                            OSX_OR_OTHER("", _("Select directory")),
+                            m_data->filedir,
+                            wxDD_DEFAULT_STYLE | wxDD_DIR_MUST_EXIST);
+            if (dlg.ShowModal() == wxID_OK)
+                Add(dlg.GetPath());
+        },
+        idFolder);
+
+        menu->Bind(wxEVT_MENU, [=](wxCommandEvent&){
+            wxFileDialog dlg(this,
+                             "",
+                             m_data->filedir,
+                             "",
+                             wxFileSelectorDefaultWildcardStr,
+                             wxFD_OPEN | wxFD_FILE_MUST_EXIST | wxFD_MULTIPLE);
+            if (dlg.ShowModal() != wxID_OK)
+                return;
+            wxArrayString files;
+            dlg.GetPaths(files);
+            Add(files);
+        },
+        idFile);
+
+        menu->Bind(wxEVT_MENU, [=](wxCommandEvent&){
+            wxTextEntryDialog dlg(this, "", "");
+            if (dlg.ShowModal() != wxID_OK)
+                return;
+            Add(dlg.GetValue());
+        },
+        idWild);
+
+        auto win = dynamic_cast<wxButton*>(e.GetEventObject());
+#ifdef __WXOSX__
+        win->PopupMenu(menu, 9, 29);
+#else
+        win->PopupMenu(menu, 0, win->GetSize().y);
+#endif
+    }
+
+    std::shared_ptr<PathsData> m_data;
+    wxListBox *m_list;
+};
+
+class PropertiesDialog::SourcePathsList : public PropertiesDialog::PathsList
+{
+public:
+    SourcePathsList(wxWindow *parent, std::shared_ptr<PathsData> data)
+        : PathsList(parent, _("Paths"), data) {}
+
+protected:
+    wxArrayString& Array() override { return m_data->paths; }
+    bool AllowWildcards() const override { return false; }
+};
+
+class PropertiesDialog::ExcludedPathsList : public PropertiesDialog::PathsList
+{
+public:
+    ExcludedPathsList(wxWindow *parent, std::shared_ptr<PathsData> data)
+        : PathsList(parent, _("Excluded paths"), data) {}
+
+protected:
+    wxArrayString& Array() override { return m_data->excluded; }
+    bool AllowWildcards() const override { return true; }
+};
+
+
+PropertiesDialog::PropertiesDialog(wxWindow *parent, CatalogPtr cat, bool fileExistsOnDisk, int initialPage)
     : m_validatedPlural(-1), m_validatedLang(-1)
 {
+    m_hasLang = cat->HasCapability(Catalog::Cap::LanguageSetting);
+
     wxXmlResource::Get()->LoadDialog(this, parent, "properties");
 
     m_team = XRCCTRL(*this, "team_name", wxTextCtrl);
@@ -54,7 +372,6 @@ PropertiesDialog::PropertiesDialog(wxWindow *parent, bool fileExistsOnDisk, int
     m_project = XRCCTRL(*this, "prj_name", wxTextCtrl);
     m_language = XRCCTRL(*this, "language", LanguageCtrl);
     m_charset = XRCCTRL(*this, "charset", wxComboBox);
-    m_basePath = XRCCTRL(*this, "basepath", wxTextCtrl);
     m_sourceCodeCharset = XRCCTRL(*this, "source_code_charset", wxComboBox);
 
     m_pluralFormsDefault = XRCCTRL(*this, "plural_forms_default", wxRadioButton);
@@ -65,24 +382,45 @@ PropertiesDialog::PropertiesDialog(wxWindow *parent, bool fileExistsOnDisk, int
 #else
     m_pluralFormsExpr->SetWindowVariant(wxWINDOW_VARIANT_SMALL);
 #endif
+    m_basePath = XRCCTRL(*this, "basepath", wxTextCtrl);
+
+    if (!m_hasLang)
+    {
+        for (auto w: { (wxWindow*)m_language,
+                       (wxWindow*)m_pluralFormsDefault,
+                       (wxWindow*)m_pluralFormsCustom,
+                       (wxWindow*)m_pluralFormsExpr,
+                       XRCCTRL(*this, "language_label", wxWindow),
+                       XRCCTRL(*this, "plural_forms_label", wxWindow) })
+        {
+            w->GetContainingSizer()->Hide(w);
+        }
+    }
 
     // my custom controls:
-    m_keywords = new wxEditableListBox(this, -1, _("Additional keywords"));
-    m_paths = new wxEditableListBox(this, -1, _("Paths"));
-    m_excludedPaths = new wxEditableListBox(this, -1, _("Excluded paths"));
+    auto page_paths = XRCCTRL(*this, "page_paths", wxWindow);
+    auto page_keywords = XRCCTRL(*this, "page_keywords", wxWindow);
+
+    m_keywords = new wxEditableListBox(page_keywords, -1, _("Additional keywords"));
+
+    m_pathsData.reset(new PathsData);
+    m_paths = new SourcePathsList(page_paths, m_pathsData);
+    m_excludedPaths = new ExcludedPathsList(page_paths, m_pathsData);
+    m_pathsData->RefreshView = [=]{
+        m_basePath->SetValue(RelativePath(m_pathsData->basepath, m_pathsData->filedir));
+        m_paths->UpdateFromData();
+        m_excludedPaths->UpdateFromData();
+    };
 
-    m_paths->SetMinSize(wxSize(-1, PX(90)));
+    m_paths->SetMinSize(wxSize(PX(450), PX(90)));
     m_excludedPaths->SetMinSize(wxSize(-1, PX(90)));
 
 #ifdef __WXOSX__
-    for (auto l: {m_keywords, m_paths, m_excludedPaths})
+    for (auto c: m_keywords->GetChildren())
     {
-        for (auto c: l->GetChildren())
-        {
-            c->SetWindowVariant(wxWINDOW_VARIANT_SMALL);
-            for (auto c2: c->GetChildren())
-                c2->SetWindowVariant(wxWINDOW_VARIANT_SMALL);
-        }
+        c->SetWindowVariant(wxWINDOW_VARIANT_SMALL);
+        for (auto c2: c->GetChildren())
+            c2->SetWindowVariant(wxWINDOW_VARIANT_SMALL);
     }
 #endif // __WXOSX__
 
@@ -179,20 +517,7 @@ wxString GetCharsetFromCombobox(wxComboBox *ctrl)
     return c;
 }
 
-void GetStringsFromControl(wxEditableListBox *box, wxArrayString& output)
-{
-    wxArrayString arr;
-    box->GetStrings(arr);
-
-    output.clear();
-    for (auto x: arr)
-    {
-        if (!x.empty())
-            output.push_back(x);
-    }
-}
-
-void GetPathsFromControl(wxEditableListBox *box, wxArrayString& output)
+void GetKeywordsFromControl(wxEditableListBox *box, wxArrayString& output)
 {
     wxArrayString arr;
     box->GetStrings(arr);
@@ -200,17 +525,19 @@ void GetPathsFromControl(wxEditableListBox *box, wxArrayString& output)
     output.clear();
     for (auto x: arr)
     {
-        if (!x.empty() && (x.Last() == '/' || x.Last() == '\\'))
-            x.RemoveLast();
-        if (!x.empty())
-            output.push_back(x);
+        if (x.empty())
+            continue;
+        wxString rest;
+        if (x.EndsWith(" ()", &rest) || x.EndsWith("()", &rest))
+            x = rest;
+        output.push_back(x);
     }
 }
 
 } // anonymous namespace
 
 
-void PropertiesDialog::TransferTo(Catalog *cat)
+void PropertiesDialog::TransferTo(const CatalogPtr& cat)
 {
     SetCharsetToCombobox(m_charset, cat->Header().Charset);
     SetCharsetToCombobox(m_sourceCodeCharset, cat->Header().SourceCodeCharset);
@@ -219,30 +546,33 @@ void PropertiesDialog::TransferTo(Catalog *cat)
     SET_VAL(Team, team);
     SET_VAL(TeamEmail, teamEmail);
     SET_VAL(Project, project);
-    SET_VAL(BasePath, basePath);
     #undef SET_VAL
 
-    m_language->SetLang(cat->Header().Lang);
-    OnLanguageValueChanged(m_language->GetValue());
+    if (m_hasLang)
+    {
+        m_language->SetLang(cat->Header().Lang);
+        OnLanguageValueChanged(m_language->GetValue());
 
-    wxString pf_def = cat->Header().Lang.DefaultPluralFormsExpr();
-    wxString pf_cat = cat->Header().GetHeader("Plural-Forms");
-    if (pf_cat == "nplurals=INTEGER; plural=EXPRESSION;")
-        pf_cat = pf_def;
+        wxString pf_def = cat->Header().Lang.DefaultPluralFormsExpr();
+        wxString pf_cat = cat->Header().GetHeader("Plural-Forms");
+        if (pf_cat == "nplurals=INTEGER; plural=EXPRESSION;")
+            pf_cat = pf_def;
 
-    m_pluralFormsExpr->SetValue(pf_cat);
-    if (!pf_cat.empty() && pf_cat == pf_def)
-        m_pluralFormsDefault->SetValue(true);
-    else
-        m_pluralFormsCustom->SetValue(true);
+        m_pluralFormsExpr->SetValue(pf_cat);
+        if (!pf_cat.empty() && pf_cat == pf_def)
+            m_pluralFormsDefault->SetValue(true);
+        else
+            m_pluralFormsCustom->SetValue(true);
+    }
 
-    m_paths->SetStrings(cat->Header().SearchPaths);
-    m_excludedPaths->SetStrings(cat->Header().SearchPathsExcluded);
     m_keywords->SetStrings(cat->Header().Keywords);
+
+    m_pathsData->GetFromCatalog(cat);
+    m_pathsData->RefreshView();
 }
 
 
-void PropertiesDialog::TransferFrom(Catalog *cat)
+void PropertiesDialog::TransferFrom(const CatalogPtr& cat)
 {
     cat->Header().Charset = GetCharsetFromCombobox(m_charset);
     cat->Header().SourceCodeCharset = GetCharsetFromCombobox(m_sourceCodeCharset);
@@ -251,35 +581,33 @@ void PropertiesDialog::TransferFrom(Catalog *cat)
     GET_VAL(Team, team);
     GET_VAL(TeamEmail, teamEmail);
     GET_VAL(Project, project);
-    GET_VAL(BasePath, basePath);
     #undef GET_VAL
 
-    Language lang = m_language->GetLang();
-    if (lang.IsValid())
-        cat->Header().Lang = lang;
-
-    GetStringsFromControl(m_keywords, cat->Header().Keywords);
-    GetPathsFromControl(m_paths, cat->Header().SearchPaths);
-    GetPathsFromControl(m_excludedPaths, cat->Header().SearchPathsExcluded);
-
-    if (!cat->Header().SearchPaths.empty() && cat->Header().BasePath.empty())
-        cat->Header().BasePath = ".";
+    if (m_hasLang)
+    {
+        Language lang = m_language->GetLang();
+        if (lang.IsValid())
+            cat->Header().Lang = lang;
 
-    m_keywords->GetStrings(cat->Header().Keywords);
+        wxString pluralForms;
+        if (m_pluralFormsDefault->GetValue() && cat->Header().Lang.IsValid())
+        {
+            pluralForms = cat->Header().Lang.DefaultPluralFormsExpr();
+        }
 
-    wxString pluralForms;
-    if (m_pluralFormsDefault->GetValue() && cat->Header().Lang.IsValid())
-    {
-        pluralForms = cat->Header().Lang.DefaultPluralFormsExpr();
+        if (pluralForms.empty())
+        {
+            pluralForms = m_pluralFormsExpr->GetValue().Strip(wxString::both);
+            if ( !pluralForms.empty() && !pluralForms.EndsWith(";") )
+                pluralForms += ";";
+        }
+        cat->Header().SetHeaderNotEmpty("Plural-Forms", pluralForms);
     }
 
-    if (pluralForms.empty())
-    {
-        pluralForms = m_pluralFormsExpr->GetValue().Strip(wxString::both);
-        if ( !pluralForms.empty() && !pluralForms.EndsWith(";") )
-            pluralForms += ";";
-    }
-    cat->Header().SetHeaderNotEmpty("Plural-Forms", pluralForms);
+    GetKeywordsFromControl(m_keywords, cat->Header().Keywords);
+
+    if (m_pathsData->Changed)
+        m_pathsData->SetToCatalog(cat);
 }
 
 
@@ -352,6 +680,9 @@ void PropertiesDialog::OnPluralFormsCustom(wxCommandEvent& event)
 
 bool PropertiesDialog::Validate()
 {
+    if (!m_hasLang)
+        return true;
+
     if (m_validatedPlural == -1)
     {
         m_validatedPlural = 1;
diff --git a/src/propertiesdlg.h b/src/propertiesdlg.h
index f049544..d798228 100644
--- a/src/propertiesdlg.h
+++ b/src/propertiesdlg.h
@@ -29,6 +29,8 @@
 #include <wx/dialog.h>
 #include <wx/notebook.h>
 
+#include <memory>
+
 #include "catalog.h"
 #include "languagectrl.h"
 
@@ -41,13 +43,13 @@ class WXDLLIMPEXP_FWD_CORE wxComboBox;
 class PropertiesDialog : public wxDialog
 {
     public:
-        PropertiesDialog(wxWindow *parent, bool fileExistsOnDisk, int initialPage = 0);
+        PropertiesDialog(wxWindow *parent, CatalogPtr cat, bool fileExistsOnDisk, int initialPage = 0);
 
         /// Reads data from the catalog and fill dialog's controls.
-        void TransferTo(Catalog *cat);
+        void TransferTo(const CatalogPtr& cat);
 
         /// Saves data from the dialog to the catalog.
-        void TransferFrom(Catalog *cat);
+        void TransferFrom(const CatalogPtr& cat);
 
         virtual bool Validate();
             
@@ -59,15 +61,23 @@ class PropertiesDialog : public wxDialog
         void OnPluralFormsDefault(wxCommandEvent& event);
         void OnPluralFormsCustom(wxCommandEvent& event);
 
+        struct PathsData;
+        class PathsList;
+        class SourcePathsList;
+        class ExcludedPathsList;
+
         wxTextCtrl *m_team, *m_teamEmail, *m_project;
         LanguageCtrl *m_language;
         wxComboBox *m_charset, *m_sourceCodeCharset;
         wxRadioButton *m_pluralFormsDefault, *m_pluralFormsCustom;
         wxTextCtrl *m_pluralFormsExpr;
         wxTextCtrl *m_basePath;
-        wxEditableListBox *m_paths, *m_excludedPaths, *m_keywords;
+        std::shared_ptr<PathsData> m_pathsData;
+        PathsList *m_paths, *m_excludedPaths;
+        wxEditableListBox *m_keywords;
         wxString m_rememberedPluralForm;
 
+        bool m_hasLang;
         int m_validatedPlural, m_validatedLang;
 };
 
diff --git a/src/resources/find.xrc b/src/resources/find.xrc
deleted file mode 100644
index f0e694e..0000000
--- a/src/resources/find.xrc
+++ /dev/null
@@ -1,120 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resource xmlns="http://www.wxwidgets.org/wxxrc" version="2.5.3.0">
-  <object class="wxDialog" name="find_frame">
-    <title>Find...</title>
-    <style>wxDEFAULT_DIALOG_STYLE</style>
-    <object class="wxBoxSizer">
-      <orient>wxVERTICAL</orient>
-      <object class="sizeritem">
-        <flag>wxEXPAND</flag>
-        <option>1</option>
-        <object class="wxPanel">
-          <object class="wxBoxSizer">
-            <orient>wxVERTICAL</orient>
-            <object class="sizeritem">
-              <flag>wxEXPAND</flag>
-              <option>1</option>
-              <object class="wxBoxSizer">
-                <orient>wxVERTICAL</orient>
-                <object class="sizeritem">
-                  <object class="wxStaticText">
-                    <label>String to find:</label>
-                  </object>
-                  <border>5d</border>
-                  <flag>wxLEFT|wxTOP|wxRIGHT</flag>
-                </object>
-                <object class="sizeritem">
-                  <object class="wxTextCtrl" name="string_to_find">
-                    <size>100,-1d</size>
-                    <focused>1</focused>
-                  </object>
-                  <flag>wxEXPAND|wxLEFT|wxRIGHT|wxBOTTOM</flag>
-                  <border>5d</border>
-                </object>
-                <object class="sizeritem">
-                  <object class="wxCheckBox" name="case_sensitive">
-                    <label>Case sensitive</label>
-                  </object>
-                  <border>5d</border>
-                  <flag>wxLEFT|wxRIGHT</flag>
-                </object>
-                <object class="sizeritem">
-                  <object class="wxCheckBox" name="from_first">
-                    <label>Start from the first item</label>
-                  </object>
-                  <border>5d</border>
-                  <flag>wxLEFT|wxRIGHT</flag>
-                </object>
-                <object class="sizeritem">
-                  <object class="wxCheckBox" name="whole_words">
-                    <label>Whole words only</label>
-                  </object>
-                  <border>5d</border>
-                  <flag>wxLEFT|wxRIGHT</flag>
-                </object>
-                <object class="sizeritem">
-                  <object class="wxCheckBox" name="in_orig">
-                    <label>Find in original strings</label>
-                  </object>
-                  <border>5d</border>
-                  <flag>wxLEFT|wxRIGHT</flag>
-                </object>
-                <object class="sizeritem">
-                  <object class="wxCheckBox" name="in_trans">
-                    <label>Find in translations</label>
-                  </object>
-                  <border>5d</border>
-                  <flag>wxLEFT|wxRIGHT</flag>
-                </object>
-                <object class="sizeritem">
-                  <object class="wxCheckBox" name="in_comments">
-                    <label>Find in comments</label>
-                  </object>
-                  <border>5d</border>
-                  <flag>wxLEFT|wxRIGHT</flag>
-                </object>
-                <object class="sizeritem">
-                  <object class="wxCheckBox" name="in_auto_comments">
-                    <label>Find in automatic comments</label>
-                  </object>
-                  <border>5d</border>
-                  <flag>wxLEFT|wxRIGHT</flag>
-                </object>
-                <object class="sizeritem">
-                  <object class="wxBoxSizer">
-                    <object class="sizeritem">
-                      <object class="wxButton" name="wxID_CLOSE">
-                        <label>Close</label>
-                      </object>
-                      <border>5d</border>
-                      <flag>wxLEFT|wxRIGHT|wxBOTTOM</flag>
-                    </object>
-                    <object class="sizeritem">
-                      <object class="wxButton" name="find_prev">
-                        <label>< _Previous</label>
-                        <enabled>0</enabled>
-                      </object>
-                      <flag>wxRIGHT|wxBOTTOM</flag>
-                      <border>5d</border>
-                    </object>
-                    <object class="sizeritem">
-                      <object class="wxButton" name="find_next">
-                        <label>_Next ></label>
-                        <default>1</default>
-                        <enabled>0</enabled>
-                      </object>
-                      <flag>wxRIGHT|wxBOTTOM</flag>
-                      <border>5d</border>
-                    </object>
-                  </object>
-                  <flag>wxTOP|wxALIGN_RIGHT</flag>
-                  <border>5d</border>
-                </object>
-                </object>
-              </object>
-          </object>
-        </object>
-      </object>
-    </object>
-  </object>
-</resource>
diff --git a/src/resources/manager.xrc b/src/resources/manager.xrc
index c2a1635..c77428a 100644
--- a/src/resources/manager.xrc
+++ b/src/resources/manager.xrc
@@ -11,6 +11,7 @@
             </object>
             <object class="wxListCtrl" name="prj_files">
               <style>wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER</style>
+              <variant platform="mac">small</variant>
             </object>
           </object>
         <option>1</option>
diff --git a/src/resources/menus.xrc b/src/resources/menus.xrc
index d956303..46c1a8c 100644
--- a/src/resources/menus.xrc
+++ b/src/resources/menus.xrc
@@ -20,6 +20,10 @@
       <object class="wxMenuItem" name="open_recent" platform="mac">
         <label>Open Recent</label>
       </object>
+      <object class="wxMenuItem" name="menu_open_crowdin">
+        <label platform="win">Open from Crowdin...</label>
+        <label platform="unix|mac">Open From Crowdin...</label>
+      </object>
       <object class="separator"/>
       <object class="wxMenuItem" name="wxID_CLOSE" platform="mac">
         <label>_Close</label>
@@ -65,9 +69,9 @@
     </object>
     <object class="wxMenu" name="menu_edit">
       <label>_Edit</label>
-      <object class="wxMenuItem" name="wxID_UNDO" platform="win"/>
-      <object class="wxMenuItem" name="wxID_REDO" platform="win"/>
-      <object class="separator" platform="win"/>
+      <object class="wxMenuItem" name="wxID_UNDO" platform="unix|win"/>
+      <object class="wxMenuItem" name="wxID_REDO" platform="unix|win"/>
+      <object class="separator" platform="unix|win"/>
       <object class="wxMenuItem" name="wxID_CUT"/>
       <object class="wxMenuItem" name="wxID_COPY"/>
       <object class="wxMenuItem" name="wxID_PASTE"/>
@@ -108,6 +112,10 @@
         <label>_Find...</label>
         <accel>Ctrl+F</accel>
       </object>
+      <object class="wxMenuItem" name="wxID_REPLACE" platform="unix|win">
+        <label>Replace...</label>
+        <accel>Ctrl+H</accel>
+      </object>
       <object class="wxMenuItem" name="menu_find_next" platform="unix|win">
         <label>Find next</label>
         <accel>Ctrl+G</accel>
@@ -122,6 +130,10 @@
           <label>_Find...</label>
           <accel>Ctrl+F</accel>
         </object>
+        <object class="wxMenuItem" name="wxID_REPLACE">
+          <label>Find and Replace...</label>
+          <accel>Ctrl+Alt+F</accel>
+        </object>
         <object class="wxMenuItem" name="menu_find_next">
           <label>Find Next</label>
           <accel>Ctrl+G</accel>
@@ -166,6 +178,11 @@
         <label platform="unix|mac">_Group By Context</label>
         <checkable>1</checkable>
       </object>
+      <object class="wxMenuItem" name="sort_errors_first">
+        <label platform="win">Entries with errors first</label>
+        <label platform="unix|mac">Entries with Errors First</label>
+        <checkable>1</checkable>
+      </object>
       <object class="wxMenuItem" name="sort_untrans_first">
         <label platform="win">_Untranslated entries first</label>
         <label platform="unix|mac">_Untranslated Entries First</label>
@@ -178,12 +195,18 @@
         <checkable platform="win|unix">1</checkable>
         <accel>Ctrl+Alt+S</accel>
       </object>
+      <object class="wxMenuItem" name="show_statusbar">
+        <label platform="win">Show status bar</label>
+        <label platform="mac|unix">Show Status Bar</label>
+        <checkable platform="win|unix">1</checkable>
+        <accel platform="mac">Ctrl+/</accel>
+      </object>
       <style>wxMENU_TEAROFF</style>
     </object>
     <object class="wxMenu" name="menu_catalog">
       <label>C_atalog</label>
       <style>wxMENU_TEAROFF</style>
-      <object class="wxMenuItem" name="menu_update">
+      <object class="wxMenuItem" name="menu_update_from_src">
         <label platform="win">_Update from sources</label>
         <label platform="unix|mac">_Update from Sources</label>
       </object>
@@ -191,6 +214,10 @@
         <label platform="win">Update from _POT file...</label>
         <label platform="unix|mac">Update from _POT File...</label>
       </object>
+      <object class="wxMenuItem" name="menu_update_from_crowdin">
+        <label>Sync with Crowdin</label>
+      </object>
+      <object class="separator"/>
       <object class="wxMenuItem" name="menu_auto_translate">
         <label platform="win">Fill missing translations from _TM...</label>
         <label platform="unix|mac">Fill Missing Translations from _TM...</label>
@@ -288,6 +315,10 @@
       <object class="wxMenuItem" name="open_recent" platform="mac">
         <label>Open Recent</label>
       </object>
+      <object class="wxMenuItem" name="menu_open_crowdin">
+        <label platform="win">Open from Crowdin...</label>
+        <label platform="unix|mac">Open From Crowdin...</label>
+      </object>
       <object class="separator"/>
       <object class="wxMenuItem" name="wxID_CLOSE" platform="mac">
         <label>_Close</label>
diff --git a/src/resources/prefs.xrc b/src/resources/prefs.xrc
index 099a59e..e0ea431 100644
--- a/src/resources/prefs.xrc
+++ b/src/resources/prefs.xrc
@@ -2,7 +2,9 @@
 <resource xmlns="http://www.wxwidgets.org/wxxrc" version="2.5.3.0">
   <object class="wxDialog" name="edit_extractor">
     <title>Extractor setup</title>
+    <variant platform="mac">small</variant>
     <object class="wxBoxSizer">
+      <minsize>300,-1d</minsize>
       <orient>wxVERTICAL</orient>
       <object class="sizeritem">
         <object class="wxStaticBoxSizer">
@@ -132,6 +134,7 @@
         <object class="wxBoxSizer">
           <object class="sizeritem">
             <object class="wxButton" name="wxID_OK">
+              <variant>normal</variant>
               <label>OK</label>
               <default>1</default>
             </object>
@@ -140,6 +143,7 @@
           </object>
           <object class="sizeritem">
             <object class="wxButton" name="wxID_CANCEL">
+              <variant>normal</variant>
               <label>Cancel</label>
             </object>
             <flag>wxRIGHT|wxTOP|wxBOTTOM</flag>
diff --git a/src/resources/properties.xrc b/src/resources/properties.xrc
index 8da2e3f..3cbe6fe 100644
--- a/src/resources/properties.xrc
+++ b/src/resources/properties.xrc
@@ -30,7 +30,7 @@
                   <flag>wxEXPAND|wxRIGHT|wxTOP|wxBOTTOM</flag>
                 </object>
                 <object class="sizeritem">
-                  <object class="wxStaticText">
+                  <object class="wxStaticText" name="language_label">
                     <label>Language:</label>
                   </object>
                   <flag>wxLEFT|wxRIGHT|wxBOTTOM|wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL</flag>
@@ -42,7 +42,7 @@
                   <flag>wxEXPAND|wxRIGHT|wxBOTTOM</flag>
                 </object>
                 <object class="sizeritem">
-                  <object class="wxStaticText">
+                  <object class="wxStaticText" name="plural_forms_label">
                     <label>Plural Forms:</label>
                   </object>
                   <flag>wxLEFT|wxRIGHT|wxBOTTOM|wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL</flag>
@@ -142,7 +142,8 @@
             <label>Translation properties</label>
           </object>
           <object class="notebookpage">
-            <object class="wxPanel">
+            <label>Sources paths</label>
+            <object class="wxPanel" name="page_paths">
               <object class="wxBoxSizer">
                 <orient>wxVERTICAL</orient>
                 <object class="sizeritem">
@@ -157,12 +158,16 @@
                     <object class="sizeritem">
                       <object class="wxStaticText">
                         <label>Base path:</label>
+                        <variant platform="mac">small</variant>
                       </object>
                       <border>5d</border>
                       <flag>wxLEFT|wxTOP|wxALIGN_CENTER_VERTICAL</flag>
                     </object>
                     <object class="sizeritem">
-                      <object class="wxTextCtrl" name="basepath"/>
+                      <object class="wxTextCtrl" name="basepath">
+                        <variant platform="mac">small</variant>
+                        <style>wxTE_READONLY</style>
+                      </object>
                       <flag>wxLEFT|wxRIGHT|wxTOP</flag>
                       <border>5d</border>
                       <option>1</option>
@@ -185,10 +190,10 @@
                 </object>
               </object>
             </object>
-            <label>Sources paths</label>
           </object>
           <object class="notebookpage">
-            <object class="wxPanel">
+            <label>Sources keywords</label>
+            <object class="wxPanel" name="page_keywords">
               <object class="wxBoxSizer">
                 <orient>wxVERTICAL</orient>
                 <object class="sizeritem">
@@ -217,7 +222,6 @@
                 </object>
               </object>
             </object>
-            <label>Sources keywords</label>
           </object>
         </object>
         <option>1</option>
diff --git a/src/resources/toolbar.xrc b/src/resources/toolbar.xrc
index 872fa8d..71a6b7b 100644
--- a/src/resources/toolbar.xrc
+++ b/src/resources/toolbar.xrc
@@ -37,7 +37,7 @@
       <tooltip>Check for errors in the translation</tooltip>
     </object>
 
-    <object class="tool" name="menu_update">
+    <object class="tool" name="toolbar_update">
       <bitmap stock_id="poedit-update"/>
       <label>Update</label>
       <tooltip>Update catalog - synchronize it with sources</tooltip>
@@ -55,7 +55,7 @@
     <object class="tool" name="show_sidebar">
       <bitmap stock_id="sidebar"/>
       <label></label>
-      <tooltip>Show or hide the sidebar.</tooltip>
+      <tooltip>Show or hide the sidebar</tooltip>
     </object>
 
   </object>
diff --git a/src/sidebar.cpp b/src/sidebar.cpp
index 2c1fdb0..3e2ceb9 100644
--- a/src/sidebar.cpp
+++ b/src/sidebar.cpp
@@ -28,6 +28,7 @@
 #include "catalog.h"
 #include "customcontrols.h"
 #include "commentdlg.h"
+#include "concurrency.h"
 #include "errors.h"
 #include "hidpi.h"
 
@@ -106,7 +107,7 @@ void SidebarBlock::Show(bool show)
     m_sizer->ShowItems(show);
 }
 
-void SidebarBlock::SetItem(CatalogItem *item)
+void SidebarBlock::SetItem(const CatalogItemPtr& item)
 {
     if (!item)
     {
@@ -136,12 +137,12 @@ public:
         m_innerSizer->Add(m_text, wxSizerFlags().Expand());
     }
 
-    bool ShouldShowForItem(CatalogItem *item) const override
+    bool ShouldShowForItem(const CatalogItemPtr& item) const override
     {
         return item->HasOldMsgid();
     }
 
-    void Update(CatalogItem *item) override
+    void Update(const CatalogItemPtr& item) override
     {
         auto txt = wxJoin(item->GetOldMsgid(), ' ', '\0');
         m_text->SetAndWrapLabel(txt);
@@ -163,12 +164,12 @@ public:
         m_innerSizer->Add(m_comment, wxSizerFlags().Expand());
     }
 
-    bool ShouldShowForItem(CatalogItem *item) const override
+    bool ShouldShowForItem(const CatalogItemPtr& item) const override
     {
         return item->HasExtractedComments();
     }
 
-    void Update(CatalogItem *item) override
+    void Update(const CatalogItemPtr& item) override
     {
         auto comment = wxJoin(item->GetExtractedComments(), '\n', '\0');
         if (comment.StartsWith("TRANSLATORS:") || comment.StartsWith("translators:"))
@@ -196,12 +197,12 @@ public:
         m_innerSizer->Add(m_comment, wxSizerFlags().Expand());
     }
 
-    bool ShouldShowForItem(CatalogItem *item) const override
+    bool ShouldShowForItem(const CatalogItemPtr& item) const override
     {
         return item->HasComment();
     }
 
-    void Update(CatalogItem *item) override
+    void Update(const CatalogItemPtr& item) override
     {
         auto text = CommentDialog::RemoveStartHash(item->GetComment());
         text.Trim();
@@ -230,9 +231,12 @@ public:
 
     bool IsGrowable() const override { return true; }
 
-    bool ShouldShowForItem(CatalogItem*) const override { return true; }
+    bool ShouldShowForItem(const CatalogItemPtr&) const override
+    {
+        return m_parent->FileHasCapability(Catalog::Cap::UserComments);
+    }
 
-    void Update(CatalogItem *item) override
+    void Update(const CatalogItemPtr& item) override
     {
     #ifdef __WXMSW__
         auto add = _("Add comment");
@@ -615,46 +619,53 @@ void SuggestionsSidebarBlock::Show(bool show)
     }
 }
 
-bool SuggestionsSidebarBlock::ShouldShowForItem(CatalogItem*) const
+bool SuggestionsSidebarBlock::ShouldShowForItem(const CatalogItemPtr&) const
 {
-    return wxConfig::Get()->ReadBool("use_tm", true);
+    return m_parent->FileHasCapability(Catalog::Cap::Translations) &&
+           wxConfig::Get()->ReadBool("use_tm", true);
 }
 
-void SuggestionsSidebarBlock::Update(CatalogItem *item)
+void SuggestionsSidebarBlock::Update(const CatalogItemPtr& item)
 {
     // FIXME: Cancel previous pending async operation if any
 
     ClearMessage();
     ClearSuggestions();
 
+    if (m_parent->GetCurrentSourceLanguage() == m_parent->GetCurrentLanguage())
+    {
+        OnQueriesFinished();
+        return;
+    }
+
     QueryAllProviders(item);
 }
 
-void SuggestionsSidebarBlock::QueryAllProviders(CatalogItem *item)
+void SuggestionsSidebarBlock::QueryAllProviders(const CatalogItemPtr& item)
 {
     auto thisQueryId = ++m_latestQueryId;
     QueryProvider(TranslationMemory::Get(), item, thisQueryId);
 }
 
-void SuggestionsSidebarBlock::QueryProvider(SuggestionsBackend& backend, CatalogItem *item, uint64_t queryId)
+void SuggestionsSidebarBlock::QueryProvider(SuggestionsBackend& backend, const CatalogItemPtr& item, uint64_t queryId)
 {
     m_pendingQueries++;
 
     // we need something to talk to GUI thread through that is guaranteed
     // to exist, and the app object is a good choice:
-    wxApp *app = wxTheApp;
     auto backendPtr = &backend;
     std::weak_ptr<SuggestionsSidebarBlock> weakSelf = std::dynamic_pointer_cast<SuggestionsSidebarBlock>(shared_from_this());
 
     m_provider->SuggestTranslation
     (
         backend,
+        m_parent->GetCurrentSourceLanguage(),
         m_parent->GetCurrentLanguage(),
         item->GetString().ToStdWstring(),
 
         // when receiving data
         [=](const SuggestionsList& hits){
-            app->CallAfter([weakSelf,queryId,hits]{
+            call_on_main_thread([weakSelf,queryId,hits]{
                 auto self = weakSelf.lock();
                 // maybe this call is already out of date:
                 if (!self || self->m_latestQueryId != queryId)
@@ -667,7 +678,7 @@ void SuggestionsSidebarBlock::QueryProvider(SuggestionsBackend& backend, Catalog
 
         // on error:
         [=](std::exception_ptr e){
-            app->CallAfter([weakSelf,queryId,backendPtr,e]{
+            call_on_main_thread([weakSelf,queryId,backendPtr,e]{
                 auto self = weakSelf.lock();
                 // maybe this call is already out of date:
                 if (!self || self->m_latestQueryId != queryId)
@@ -732,7 +743,7 @@ Sidebar::~Sidebar()
 }
 
 
-void Sidebar::SetSelectedItem(Catalog *catalog, CatalogItem *item)
+void Sidebar::SetSelectedItem(const CatalogPtr& catalog, const CatalogItemPtr& item)
 {
     m_catalog = catalog;
     m_selectedItem = item;
@@ -751,6 +762,18 @@ Language Sidebar::GetCurrentLanguage() const
     return m_catalog->GetLanguage();
 }
 
+Language Sidebar::GetCurrentSourceLanguage() const
+{
+    if (!m_catalog)
+        return Language::English();
+    return m_catalog->GetSourceLanguage();
+}
+
+bool Sidebar::FileHasCapability(Catalog::Cap cap) const
+{
+    return m_catalog && m_catalog->HasCapability(cap);
+}
+
 void Sidebar::RefreshContent()
 {
     if (!IsShown())
diff --git a/src/sidebar.h b/src/sidebar.h
index 4e38f54..317c5d6 100644
--- a/src/sidebar.h
+++ b/src/sidebar.h
@@ -33,6 +33,7 @@
 #include <wx/event.h>
 #include <wx/panel.h>
 
+#include "catalog.h"
 #include "language.h"
 #include "tm/suggestions.h"
 
@@ -42,8 +43,6 @@ class WXDLLIMPEXP_FWD_CORE wxSizer;
 class WXDLLIMPEXP_FWD_CORE wxStaticText;
 class WXDLLIMPEXP_FWD_CORE wxStaticBitmap;
 
-class Catalog;
-class CatalogItem;
 class ExplanationLabel;
 
 struct Suggestion;
@@ -62,11 +61,11 @@ public:
 
     virtual void Show(bool show);
 
-    void SetItem(CatalogItem *item);
+    void SetItem(const CatalogItemPtr& item);
 
-    virtual bool ShouldShowForItem(CatalogItem *item) const = 0;
+    virtual bool ShouldShowForItem(const CatalogItemPtr& item) const = 0;
 
-    virtual void Update(CatalogItem *item) = 0;
+    virtual void Update(const CatalogItemPtr& item) = 0;
 
     virtual bool IsGrowable() const { return false; }
 
@@ -98,8 +97,8 @@ public:
 
     void Show(bool show) override;
     bool IsGrowable() const override { return true; }
-    bool ShouldShowForItem(CatalogItem *item) const override;
-    void Update(CatalogItem *item) override;
+    bool ShouldShowForItem(const CatalogItemPtr& item) const override;
+    void Update(const CatalogItemPtr& item) override;
 
 protected:
     // How many entries can have shortcuts?
@@ -122,8 +121,8 @@ protected:
     virtual void UpdateSuggestionsMenu();
     virtual void ClearSuggestionsMenu();
 
-    virtual void QueryAllProviders(CatalogItem *item);
-    void QueryProvider(SuggestionsBackend& backend, CatalogItem *item, uint64_t queryId);
+    virtual void QueryAllProviders(const CatalogItemPtr& item);
+    void QueryProvider(SuggestionsBackend& backend, const CatalogItemPtr& item, uint64_t queryId);
 
 protected:
     std::unique_ptr<SuggestionsProvider> m_provider;
@@ -159,20 +158,21 @@ public:
     ~Sidebar();
 
     /// Update selected item, if there's a single one. May be nullptr.
-    void SetSelectedItem(Catalog *catalog, CatalogItem *item);
+    void SetSelectedItem(const CatalogPtr& catalog, const CatalogItemPtr& item);
 
     /// Tell the sidebar there's multiple selection.
     void SetMultipleSelection();
 
     /// Returns currently selected item
-    CatalogItem *GetSelectedItem() const { return m_selectedItem; }
+    CatalogItemPtr GetSelectedItem() const { return m_selectedItem; }
+    Language GetCurrentSourceLanguage() const;
     Language GetCurrentLanguage() const;
+    bool FileHasCapability(Catalog::Cap cap) const;
 
     /// Refreshes displayed content
     void RefreshContent();
 
     /// Call when catalog changes/is invalidated
-    /// TODO: use shared_ptr<CatalogItem> instead to be safe
     void ResetCatalog() { SetSelectedItem(nullptr, nullptr); }
 
     /// Set max height of the upper (not input-aligned) part.
@@ -188,8 +188,8 @@ private:
     void OnPaint(wxPaintEvent&);
 
 private:
-    Catalog *m_catalog;
-    CatalogItem *m_selectedItem;
+    CatalogPtr m_catalog;
+    CatalogItemPtr m_selectedItem;
 
     std::vector<std::shared_ptr<SidebarBlock>> m_blocks;
 
diff --git a/src/spellchecking.cpp b/src/spellchecking.cpp
index 6214b0e..f4f1cb2 100644
--- a/src/spellchecking.cpp
+++ b/src/spellchecking.cpp
@@ -25,6 +25,8 @@
 
 #include "spellchecking.h"
 
+#include "str_helpers.h"
+
 #ifdef __WXGTK__
     #include <gtk/gtk.h>
     extern "C" {
@@ -32,10 +34,6 @@
     }
 #endif
 
-#ifdef __WXOSX__
-    #include "osx_helpers.h"
-#endif
-
 #ifdef __WXMSW__
     #include <wx/msw/wrapwin.h>
     #include <Richedit.h>
@@ -136,7 +134,7 @@ bool InitTextCtrlSpellchecker(wxTextCtrl *text, bool enable, const Language& lan
 #ifdef __WXOSX__
 bool SetSpellcheckerLang(const wxString& lang)
 {
-    NSString *nslang = wxStringToNS(lang);
+    NSString *nslang = str::to_NS(lang);
     NSSpellChecker *sc = [NSSpellChecker sharedSpellChecker];
     [sc setAutomaticallyIdentifiesLanguages:NO];
     return [sc setLanguage: nslang];
diff --git a/src/str_helpers.h b/src/str_helpers.h
new file mode 100644
index 0000000..563ed63
--- /dev/null
+++ b/src/str_helpers.h
@@ -0,0 +1,211 @@
+/*
+ *  This file is part of Poedit (http://poedit.net)
+ *
+ *  Copyright (C) 2013-2015 Vaclav Slavik
+ *
+ *  Permission is hereby granted, free of charge, to any person obtaining a
+ *  copy of this software and associated documentation files (the "Software"),
+ *  to deal in the Software without restriction, including without limitation
+ *  the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ *  and/or sell copies of the Software, and to permit persons to whom the
+ *  Software is furnished to do so, subject to the following conditions:
+ *
+ *  The above copyright notice and this permission notice shall be included in
+ *  all copies or substantial portions of the Software.
+ *
+ *  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ *  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ *  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ *  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ *  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *  FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ *  DEALINGS IN THE SOFTWARE.
+ *
+ */
+
+#ifndef Poedit_str_helpers_h
+#define Poedit_str_helpers_h
+
+#include <string>
+
+#ifdef __OBJC__
+#include <Foundation/NSString.h>
+#endif
+
+// as of gcc-4.9, no functional <codecvt> support yet
+#if defined(__clang__) || defined(_MSC_VER)
+    #define HAVE_CODECVT
+#endif
+
+#ifdef HAVE_CODECVT
+    #include <locale>
+    #include <codecvt>
+#else
+    #include <boost/locale/encoding_utf.hpp>
+#endif
+
+#include <wx/string.h>
+
+/**
+    Defines conversions between various string types.
+    
+    Supported string classes are std::wstring, std::string (UTF-8 encoded),
+    wxString and icu::UnicodeString.
+    
+    Usage:
+        - to_wx(...)
+        - to_icu(...)
+        - to_wstring(...)
+        - to_utf8(...)
+        - to_NSString()
+ */
+namespace str
+{
+
+#ifdef HAVE_CODECVT
+
+inline std::string to_utf8(const std::wstring& str)
+{
+    std::wstring_convert<std::codecvt_utf8<wchar_t>, wchar_t> convert;
+    return convert.to_bytes(str.data());
+}
+
+inline std::string to_utf8(const wchar_t *str)
+{
+    std::wstring_convert<std::codecvt_utf8<wchar_t>, wchar_t> convert;
+    return convert.to_bytes(str);
+}
+
+inline std::wstring to_wstring(const std::string& utf8str)
+{
+    std::wstring_convert<std::codecvt_utf8<wchar_t>, wchar_t> convert;
+    return convert.from_bytes(utf8str.data());
+}
+
+#else
+
+inline std::string to_utf8(const std::wstring& str)
+{
+    return boost::locale::conv::utf_to_utf<char>(str);
+}
+
+inline std::string to_utf8(const wchar_t *str)
+{
+    return boost::locale::conv::utf_to_utf<char>(str);
+}
+
+inline std::wstring to_wstring(const std::string& utf8str)
+{
+    return boost::locale::conv::utf_to_utf<wchar_t>(utf8str);
+}
+
+#endif
+
+inline std::string to_utf8(const wxString& str)
+{
+    return std::string(str.utf8_str());
+}
+
+inline std::wstring to_wstring(const wxString& str)
+{
+    return str.ToStdWstring();
+}
+
+#if defined(__cplusplus) && defined(__OBJC__)
+
+inline NSString *to_NS(const wxString& str)
+{
+    return [NSString stringWithUTF8String:str.utf8_str()];
+}
+
+inline wxString to_wx(NSString *str)
+{
+    return wxString::FromUTF8Unchecked([str UTF8String]);
+}
+
+inline NSString *to_NS(const std::string& utf8str)
+{
+    return [NSString stringWithUTF8String:utf8str.c_str()];
+}
+
+inline std::string to_utf8(NSString *str)
+{
+    return std::string([str UTF8String]);
+}
+
+inline NSString *to_NS(const std::wstring& str)
+{
+    return to_NS(to_utf8(str));
+}
+
+inline std::wstring to_wstring(NSString *str)
+{
+    std::wstring_convert<std::codecvt_utf8<wchar_t>, wchar_t> convert;
+    return convert.from_bytes([str UTF8String]);
+}
+
+#endif // Objective-C++
+
+
+// ICU conversions; only included them if ICU is included
+#ifdef UNISTR_H
+
+/**
+    Create read-only icu::UnicodeString from wxString efficiently.
+    
+    Notice that the resulting string is only valid for the input wxString's
+    lifetime duration, unless you make a copy.
+ */
+inline icu::UnicodeString to_icu(const wxString& str)
+{
+#if wxUSE_UNICODE_UTF8
+    return icu::UnicodeString::fromUTF8((const char*)str.utf8_str());
+#elif SIZEOF_WCHAR_T == 4
+    return icu::UnicodeString::fromUTF32((const UChar32*)str.wx_str(), (int32_t)str.length());
+#elif SIZEOF_WCHAR_T == 2
+    // read-only aliasing ctor, doesn't copy data
+    return icu::UnicodeString(true, str.wx_str(), str.length());
+#else
+    #error "WTF?!"
+#endif
+}
+
+/**
+Create read-only icu::UnicodeString from std::wstring efficiently.
+
+Notice that the resulting string is only valid for the input std::wstring's
+lifetime duration, unless you make a copy.
+*/
+inline icu::UnicodeString to_icu(const std::wstring& str)
+{
+#if SIZEOF_WCHAR_T == 4
+    return icu::UnicodeString::fromUTF32((const UChar32*) str.c_str(), (int32_t) str.length());
+#elif SIZEOF_WCHAR_T == 2
+    // read-only aliasing ctor, doesn't copy data
+    return icu::UnicodeString(true, str.c_str(), str.length());
+#else
+    #error "WTF?!"
+#endif
+}
+
+/// Create wxString from icu::UnicodeString, making a copy.
+inline wxString to_wx(const icu::UnicodeString& str)
+{
+#if wxUSE_UNICODE_WCHAR && SIZEOF_WCHAR_T == 2
+    return wxString(str.getBuffer(), str.length());
+#else
+    return wxString((const char*)str.getBuffer(), wxMBConvUTF16(), str.length() * 2);
+#endif
+}
+
+/// Create std::wstring from icu::UnicodeString, making a copy.
+inline std::wstring to_wstring(const icu::UnicodeString& str)
+{
+    return to_wx(str).ToStdWstring();
+}
+
+#endif // UNISTR_H
+
+} // namespace str
+
+#endif // Poedit_str_helpers_h
diff --git a/src/syntaxhighlighter.cpp b/src/syntaxhighlighter.cpp
index 07f8b7d..b9a7791 100644
--- a/src/syntaxhighlighter.cpp
+++ b/src/syntaxhighlighter.cpp
@@ -63,14 +63,13 @@ void SyntaxHighlighter::Highlight(const std::wstring& s, SyntaxHighlighter::Call
             int pos = int(i - s.begin());
             if (++i == s.end())
                 break;
-            // TODO: highlight full syntax, incl. octals: http://en.cppreference.com/w/cpp/language/escape
+            // Note: this must match AnyTranslatableTextCtrl::EscapePlainText()
             switch (*i)
             {
                 case '0':
                 case 'n':
                 case 'r':
                 case 't':
-                case '"':
                 case '\\':
                     highlight(pos, pos + 2, Escape);
                     break;
diff --git a/src/text_control.cpp b/src/text_control.cpp
index 17f7031..16726c0 100644
--- a/src/text_control.cpp
+++ b/src/text_control.cpp
@@ -31,7 +31,6 @@
 #ifdef __WXOSX__
   #import <AppKit/NSTextView.h>
   #import <Foundation/NSUndoManager.h>
-  #include "osx_helpers.h"
 #endif
 
 #ifdef __WXMSW__
@@ -50,6 +49,7 @@
 #endif
 
 #include "spellchecking.h"
+#include "str_helpers.h"
 
 
 namespace
@@ -77,19 +77,19 @@ inline ITextDocumentPtr TextDocument(wxTextCtrl *ctrl)
     return doc;
 }
 
-// Temporarily supresses recording of changes for Undo/Redo functionality
+// Temporarily suppresses recording of changes for Undo/Redo functionality
 // See http://stackoverflow.com/questions/4138981/temporaily-disabling-the-c-sharp-rich-edit-undo-buffer-while-performing-syntax-h
 // and http://forums.codeguru.com/showthread.php?325068-Realizing-Undo-Redo-functionality-for-RichEdit-Syntax-Highlighter
-class UndoSupressor
+class UndoSuppressor
 {
 public:
-    UndoSupressor(CustomizedTextCtrl *ctrl) : m_doc(TextDocument(ctrl))
+    UndoSuppressor(CustomizedTextCtrl *ctrl) : m_doc(TextDocument(ctrl))
     {
         if (m_doc)
             m_doc->Undo(tomSuspend, NULL);
     }
 
-    ~UndoSupressor()
+    ~UndoSuppressor()
     {
         if (m_doc)
             m_doc->Undo(tomResume, NULL);
@@ -143,12 +143,23 @@ private:
     ITextDocumentPtr m_doc;
 };
 
-#else
+#elif defined(__WXGTK__)
 
 class UndoGroup
 {
 public:
-    UndoGroup(TranslationTextCtrl*) {}
+    UndoGroup(TranslationTextCtrl *ctrl) : m_ctrl(ctrl)
+    {
+        m_ctrl->BeginUndoGrouping();
+    }
+
+    ~UndoGroup()
+    {
+        m_ctrl->EndUndoGrouping();
+    }
+
+private:
+    TranslationTextCtrl *m_ctrl;
 };
 
 #endif
@@ -173,15 +184,17 @@ CustomizedTextCtrl::CustomizedTextCtrl(wxWindow *parent, wxWindowID winid, long
     [text setTextContainerInset:NSMakeSize(1,3)];
     [text setRichText:NO];
 
-    [text setAutomaticQuoteSubstitutionEnabled:NO];
-    [text setAutomaticDashSubstitutionEnabled:NO];
+    // TODO: This isn't implemented and doesn't work in OS X
+    //Bind(wxEVT_TEXT_COPY, &CustomizedTextCtrl::OnCopy, this);
+    //Bind(wxEVT_TEXT_CUT, &CustomizedTextCtrl::OnCut, this);
+    //Bind(wxEVT_TEXT_PASTE, &CustomizedTextCtrl::OnPaste, this);
 }
 
 void CustomizedTextCtrl::DoSetValue(const wxString& value, int flags)
 {
     wxEventBlocker block(this, (flags & SetValue_SendEvent) ? 0 : wxEVT_ANY);
 
-    [TextView(this) setString:wxStringToNS(value)];
+    [TextView(this) setString:str::to_NS(value)];
 
     SendTextUpdatedEventIfAllowed();
 }
@@ -221,16 +234,22 @@ CustomizedTextCtrl::CustomizedTextCtrl(wxWindow *parent, wxWindowID winid, long
     padding.SetRightIndent(5);
     SetDefaultStyle(padding);
 
-#ifdef __WXMSW__
+#if defined(__WXMSW__) || defined(__WXGTK__)
     Bind(wxEVT_TEXT_COPY, &CustomizedTextCtrl::OnCopy, this);
     Bind(wxEVT_TEXT_CUT, &CustomizedTextCtrl::OnCut, this);
     Bind(wxEVT_TEXT_PASTE, &CustomizedTextCtrl::OnPaste, this);
 #endif
+
+#ifdef __WXGTK__
+    m_historyLocks = 0;
+    if (!(style & wxTE_READONLY))
+        Bind(wxEVT_TEXT, &CustomizedTextCtrl::OnText, this);
+#endif
 }
 
 #endif // !__WXOSX__
 
-#ifdef __WXMSW__
+#if defined(__WXMSW__) || defined(__WXGTK__)
 // We use wxTE_RICH2 style, which allows for pasting rich-formatted
 // text into the control. We want to allow only plain text (all the
 // formatting done is Poedit's syntax highlighting), so we need to
@@ -240,6 +259,9 @@ CustomizedTextCtrl::CustomizedTextCtrl(wxWindow *parent, wxWindowID winid, long
 // content was programatically changed:
 // https://sourceforge.net/tracker/index.php?func=detail&aid=1910234&group_id=27043&atid=389153
 
+// Note that GTK has a very similar problem with pasting rich text,
+// which is why this code is enabled for GTK too.
+
 bool CustomizedTextCtrl::DoCopy()
 {
     long from, to;
@@ -247,23 +269,28 @@ bool CustomizedTextCtrl::DoCopy()
     if ( from == to )
         return false;
 
-    const wxString sel = GetRange(from, to);
-
     wxClipboardLocker lock;
     wxCHECK_MSG( !!lock, false, "failed to lock clipboard" );
 
-    wxClipboard::Get()->SetData(new wxTextDataObject(sel));
+    auto text = DoCopyText(from, to);
+    wxClipboard::Get()->SetData(new wxTextDataObject(text));
     return true;
 }
 
-void CustomizedTextCtrl::OnCopy(wxClipboardTextEvent& event)
+void CustomizedTextCtrl::OnCopy(wxClipboardTextEvent&)
 {
+    if (!CanCopy())
+        return;
+
     DoCopy();
 }
 
-void CustomizedTextCtrl::OnCut(wxClipboardTextEvent& event)
+void CustomizedTextCtrl::OnCut(wxClipboardTextEvent&)
 {
-    if ( !DoCopy() )
+    if (!CanCut())
+        return;
+
+    if (!DoCopy())
         return;
 
     long from, to;
@@ -271,8 +298,11 @@ void CustomizedTextCtrl::OnCut(wxClipboardTextEvent& event)
     Remove(from, to);
 }
 
-void CustomizedTextCtrl::OnPaste(wxClipboardTextEvent& event)
+void CustomizedTextCtrl::OnPaste(wxClipboardTextEvent&)
 {
+    if (!CanPaste())
+        return;
+
     wxClipboardLocker lock;
     wxCHECK_RET( !!lock, "failed to lock clipboard" );
 
@@ -281,9 +311,110 @@ void CustomizedTextCtrl::OnPaste(wxClipboardTextEvent& event)
 
     long from, to;
     GetSelection(&from, &to);
-    Replace(from, to, d.GetText());
+    DoPasteText(from, to, d.GetText());
+}
+
+wxString CustomizedTextCtrl::DoCopyText(long from, long to)
+{
+    return GetRange(from, to);
+}
+
+void CustomizedTextCtrl::DoPasteText(long from, long to, const wxString& s)
+{
+    Replace(from, to, s);
+}
+#endif // __WXMSW__/__WXGTK__
+
+#ifdef __WXGTK__
+void CustomizedTextCtrl::BeginUndoGrouping()
+{
+    m_historyLocks++;
+}
+
+void CustomizedTextCtrl::EndUndoGrouping()
+{
+    if (--m_historyLocks == 0)
+        SaveSnapshot();
+}
+
+void CustomizedTextCtrl::SaveSnapshot()
+{
+    // if we saved the snapshot in DoSetValue, OnText might still call this function again
+    // therefore, we make sure to filter out duplicate entries
+    if (m_historyIndex && m_history[m_historyIndex - 1].text == GetValue())
+        return;
+
+    m_history.resize(m_historyIndex); // truncate the list
+    m_history.push_back({GetValue(), GetInsertionPoint()});
+    m_historyIndex++;
+}
+
+void CustomizedTextCtrl::DoSetValue(const wxString& value, int flags)
+{
+    // SetValue_SendEvent is set if this function was called from SetValue
+    // SetValue_SendEvent is NOT set if this function was called from ChangeValue
+    if (flags & SetValue_SendEvent)
+    {
+        // clear the history
+        // m_history itself will be cleared when SaveSnapshot is called
+        m_historyIndex = 0;
+
+        // set the new value
+        wxTextCtrl::DoSetValue(value, flags);
+
+        // make sure to save a snapshot even if EVT_TEXT is blocked
+        SaveSnapshot();
+    }
+    else
+    {
+        // just set the new value, don't save a snapshot
+        // this is what happens when you click Undo or Redo
+        wxTextCtrl::DoSetValue(value, flags);
+    }
+}
+
+void CustomizedTextCtrl::OnText(wxCommandEvent& event)
+{
+    SaveSnapshot();
+    event.Skip();
+}
+
+bool CustomizedTextCtrl::CanUndo() const
+{
+    return (m_historyIndex > 1);
+}
+
+bool CustomizedTextCtrl::CanRedo() const
+{
+    return (m_historyIndex < m_history.size());
+}
+
+void CustomizedTextCtrl::Undo()
+{
+    // ChangeValue calls AnyTranslatableTextCtrl::DoSetValue, which calls CustomizedTextCtrl::DoSetValue
+    ChangeValue(m_history[m_historyIndex - 2].text);
+    SetInsertionPoint(m_history[m_historyIndex - 2].insertionPoint);
+    m_historyIndex--;
+}
+
+void CustomizedTextCtrl::Redo()
+{
+    // ChangeValue calls AnyTranslatableTextCtrl::DoSetValue, which calls CustomizedTextCtrl::DoSetValue
+    ChangeValue(m_history[m_historyIndex].text);
+    SetInsertionPoint(m_history[m_historyIndex].insertionPoint);
+    m_historyIndex++;
+}
+#endif // __WXGTK__
+
+void CustomizedTextCtrl::ShowFindIndicator(int from, int length)
+{
+    ShowPosition(from);
+#ifdef __WXOSX__
+    [TextView(this) showFindIndicatorForRange:NSMakeRange(from, length)];
+#else
+    SetSelection(from, from + length);
+#endif
 }
-#endif // __WXMSW__
 
 
 
@@ -370,6 +501,122 @@ void AnyTranslatableTextCtrl::SetLanguageRTL(bool isRTL)
 #endif
 }
 
+wxString AnyTranslatableTextCtrl::EscapePlainText(const wxString& s)
+{
+    // Note: the escapes used here should match with
+    //       SyntaxHighlighter::Highlight() ones
+    wxString s2;
+    s2.reserve(s.length());
+    for (auto i = s.begin(); i != s.end(); ++i)
+    {
+        wchar_t c = *i;
+        switch (c)
+        {
+            case '\n':
+                s2 += "\\n\n";
+                break;
+            case '\r':
+                s2 += "\\r";
+                break;
+            case '\t':
+                s2 += "\\t";
+                break;
+            case '\0':
+                s2 += "\\0";
+                break;
+            case '\\':
+            {
+                s2 += c;
+                auto peek = i + 1;
+                if ( peek != s.end() )
+                {
+                    switch ((wchar_t)*peek)
+                    {
+                        case 'n': case '\n':
+                        case 'r': case '\r':
+                        case 't': case '\t':
+                        case '0': case '\0':
+                        case '\\':
+                            s2 += c; // escape problematic backslash
+                            break;
+                    }
+                }
+                break;
+            }
+            default:
+                s2 += c;
+                break;
+        }
+    }
+    return s2;
+}
+
+wxString AnyTranslatableTextCtrl::UnescapePlainText(const wxString& s)
+{
+    wxString s2;
+    s2.reserve(s.length());
+    for (auto i = s.begin(); i != s.end(); ++i)
+    {
+        wchar_t c0 = *i;
+        if (c0 == '\\')
+        {
+            if ( ++i == s.end() )
+            {
+                s2 += '\\';
+                return s2;
+            }
+            wchar_t c = *i;
+            switch (c)
+            {
+                case 'r':
+                    s2 += '\r';
+                    break;
+                case 't':
+                    s2 += '\t';
+                    break;
+                case '0':
+                    s2 += '\0';
+                    break;
+                case 'n':
+                {
+                    s2 += '\n';
+                    auto peek = i + 1;
+                    if ( peek != s.end() && *peek == '\n' )
+                    {
+                        // "\\n\n" should be treated as single newline
+                        i = peek;
+                    }
+                    break;
+                }
+                case '\\':
+                    s2 += '\\';
+                    break;
+                default:
+                    s2 += '\\';
+                    s2 += c;
+                    break;
+            }
+        }
+        else
+        {
+            s2 += c0;
+        }
+    }
+    return s2;
+}
+
+#if defined(__WXMSW__) || defined(__WXGTK__)
+wxString AnyTranslatableTextCtrl::DoCopyText(long from, long to)
+{
+    return UnescapePlainText(GetRange(from, to));
+}
+
+void AnyTranslatableTextCtrl::DoPasteText(long from, long to, const wxString& s)
+{
+    Replace(from, to, EscapePlainText(s));
+}
+#endif
+
 #ifdef __WXMSW__
 void AnyTranslatableTextCtrl::DoSetValue(const wxString& value, int flags)
 {
@@ -381,7 +628,7 @@ void AnyTranslatableTextCtrl::DoSetValue(const wxString& value, int flags)
 void AnyTranslatableTextCtrl::UpdateRTLStyle()
 {
     wxEventBlocker block(this, wxEVT_TEXT);
-    UndoSupressor blockUndo(this);
+    UndoSuppressor blockUndo(this);
 
     PARAFORMAT2 pf;
     ::ZeroMemory(&pf, sizeof(pf));
@@ -432,7 +679,7 @@ void AnyTranslatableTextCtrl::HighlightText()
 
     wxEventBlocker block(this, wxEVT_TEXT);
   #ifdef __WXMSW__
-    UndoSupressor blockUndo(this);
+    UndoSuppressor blockUndo(this);
   #endif
 
     auto deflt = m_attrs->Default();
@@ -456,7 +703,8 @@ SourceTextCtrl::SourceTextCtrl(wxWindow *parent, wxWindowID winid)
 
 
 TranslationTextCtrl::TranslationTextCtrl(wxWindow *parent, wxWindowID winid)
-    : AnyTranslatableTextCtrl(parent, winid)
+    : AnyTranslatableTextCtrl(parent, winid),
+      m_lastKeyWasReturn(false)
 {
 #ifdef __WXMSW__
     PrepareTextCtrlForSpellchecker(this);
@@ -465,6 +713,30 @@ TranslationTextCtrl::TranslationTextCtrl(wxWindow *parent, wxWindowID winid)
 #ifdef __WXOSX__
     [TextView(this) setAllowsUndo:YES];
 #endif
+
+    Bind(wxEVT_KEY_DOWN, &TranslationTextCtrl::OnKeyDown, this);
+    Bind(wxEVT_TEXT, &TranslationTextCtrl::OnText, this);
+}
+
+void TranslationTextCtrl::OnKeyDown(wxKeyEvent& e)
+{
+    m_lastKeyWasReturn = (e.GetUnicodeKey() == WXK_RETURN);
+    e.Skip();
+}
+
+void TranslationTextCtrl::OnText(wxCommandEvent& e)
+{
+    if (m_lastKeyWasReturn)
+    {
+        // Insert \n markup in front of newlines:
+        m_lastKeyWasReturn = false;
+        long pos = GetInsertionPoint();
+        auto range = GetRange(std::max(0l, pos - 3), pos);
+        if (range.Last() == '\n' && range != "\\n\n")
+            Replace(pos - 1, pos, "\\n\n");
+    }
+
+    e.Skip();
 }
 
 #ifdef __WXOSX__
@@ -477,10 +749,10 @@ void TranslationTextCtrl::DoSetValue(const wxString& value, int flags)
 }
 #endif
 
-void TranslationTextCtrl::SetValueUserWritten(const wxString& value)
+void TranslationTextCtrl::SetPlainTextUserWritten(const wxString& value)
 {
     UndoGroup undo(this);
     SelectAll();
-    WriteText(value);
+    WriteText(EscapePlainText(value));
     SetInsertionPointEnd();
 }
diff --git a/src/text_control.h b/src/text_control.h
index ce3c924..39e5c23 100644
--- a/src/text_control.h
+++ b/src/text_control.h
@@ -28,6 +28,7 @@
 
 #include <wx/textctrl.h>
 #include <memory>
+#include <vector>
 
 #include "syntaxhighlighter.h"
 
@@ -38,6 +39,8 @@
     - Allow setting text programatically, without user-input processing (OS X)
     - Disable user-usable rich text support
     - Stylistic tweaks (padding and such)
+    - Generic undo/redo implementation for GTK
+    - Search highlighting
  */
 class CustomizedTextCtrl : public wxTextCtrl
 {
@@ -46,18 +49,50 @@ public:
 
     CustomizedTextCtrl(wxWindow *parent, wxWindowID winid, long style = 0);
 
+    /// Show find result indicator at given part of the text
+    void ShowFindIndicator(int from, int length);
+
+#ifdef __WXGTK__
+    // Undo/redo implementation:
+    void BeginUndoGrouping();
+    void EndUndoGrouping();
+    void SaveSnapshot();
+#endif
+
 protected:
 #ifdef __WXOSX__
     void DoSetValue(const wxString& value, int flags) override;
     wxString DoGetValue() const override;
 #endif
 
-#ifdef __WXMSW__
+#if defined(__WXMSW__) || defined(__WXGTK__)
     bool DoCopy();
     void OnCopy(wxClipboardTextEvent& event);
     void OnCut(wxClipboardTextEvent& event);
     void OnPaste(wxClipboardTextEvent& event);
-#endif // __WXMSW__
+
+    virtual wxString DoCopyText(long from, long to);
+    virtual void DoPasteText(long from, long to, const wxString& s);
+#endif // __WXMSW__/__WXGTK__
+
+#ifdef __WXGTK__
+    struct Snapshot
+    {
+        wxString text;
+        long insertionPoint;
+    };
+
+    void DoSetValue(const wxString& value, int flags) override;
+    void OnText(wxCommandEvent& event);
+    bool CanUndo() const override;
+    bool CanRedo() const override;
+    void Undo() override;
+    void Redo() override;
+
+    std::vector<Snapshot> m_history;
+    size_t m_historyIndex; // where in the vector to insert the next snapshot
+    int m_historyLocks;
+#endif // __WXGTK__
 };
 
 
@@ -69,7 +104,23 @@ public:
 
     void SetLanguageRTL(bool isRTL);
 
+    // Set and get control's text as plain/raw text, with no escaping or formatting.
+    // This is the "true" representation, with e.g newlines included. The version
+    // displayed to the user includes syntax highlighting and escaping of some characters
+    // (e.g. tabs shown as \t, newlines as \n followed by newline).
+    void SetPlainText(const wxString& s) { SetValue(EscapePlainText(s)); }
+    wxString GetPlainText() const { return UnescapePlainText(GetValue()); }
+
+    // Apply escaping as described in SetPlainText:
+    static wxString EscapePlainText(const wxString& s);
+    static wxString UnescapePlainText(const wxString& s);
+
 protected:
+#if defined(__WXMSW__) || defined(__WXGTK__)
+    wxString DoCopyText(long from, long to) override;
+    void DoPasteText(long from, long to, const wxString& s) override;
+#endif
+
 #ifdef __WXMSW__
     void DoSetValue(const wxString& value, int flags) override;
     void UpdateRTLStyle();
@@ -105,12 +156,17 @@ public:
     TranslationTextCtrl(wxWindow *parent, wxWindowID winid);
 
     /// Sets the value to something the user wrote
-    void SetValueUserWritten(const wxString& value);
+    void SetPlainTextUserWritten(const wxString& value);
 
 protected:
+    void OnKeyDown(wxKeyEvent& e);
+    void OnText(wxCommandEvent& e);
+
 #ifdef __WXOSX__
     void DoSetValue(const wxString& value, int flags) override;
 #endif
+
+    bool m_lastKeyWasReturn;
 };
 
 #endif // Poedit_text_control_h
diff --git a/src/tm/suggestions.cpp b/src/tm/suggestions.cpp
index 37a0c23..4679754 100644
--- a/src/tm/suggestions.cpp
+++ b/src/tm/suggestions.cpp
@@ -25,22 +25,23 @@
 
 #include "suggestions.h"
 
-#include "ThreadPool.h"
+#include "concurrency.h"
 
 
 class SuggestionsProviderImpl
 {
 public:
-    SuggestionsProviderImpl() : m_pool(2) {}
+    SuggestionsProviderImpl() {}
 
     void SuggestTranslation(SuggestionsBackend& backend,
+                            const Language& srclang,
                             const Language& lang,
                             const std::wstring& source,
                             SuggestionsProvider::success_func_type onSuccess,
                             SuggestionsProvider::error_func_type onError)
     {
         auto bck = &backend;
-        m_pool.enqueue([=](){
+        concurrency_queue::add([=](){
             // don't bother asking the backend if the language is invalid:
             if (!lang.IsValid())
             {
@@ -48,12 +49,28 @@ public:
                 return;
             }
             // query the backend:
-            bck->SuggestTranslation(lang, source, onSuccess, onError);
+            bck->SuggestTranslation(srclang, lang, source, onSuccess, onError);
         });
     }
 
-private:
-    ThreadPool m_pool;
+    std::future<SuggestionsList> SuggestTranslation(SuggestionsBackend& backend,
+                                                   const Language& srclang,
+                                                   const Language& lang,
+                                                   const std::wstring& source)
+    {
+        auto promise = std::make_shared<std::promise<SuggestionsList>>();
+
+        SuggestTranslation(backend, srclang, lang, source,
+            [=](const SuggestionsList& results) {
+                promise->set_value(results);
+            },
+            [=](std::exception_ptr e) {
+                promise->set_exception(e);
+            }
+        );
+
+        return promise->get_future();
+    }
 };
 
 
@@ -67,10 +84,20 @@ SuggestionsProvider::~SuggestionsProvider()
 }
 
 void SuggestionsProvider::SuggestTranslation(SuggestionsBackend& backend,
+                                             const Language& srclang,
                                              const Language& lang,
                                              const std::wstring& source,
                                              success_func_type onSuccess,
                                              error_func_type onError)
 {
-    m_impl->SuggestTranslation(backend, lang, source, onSuccess, onError);
+    m_impl->SuggestTranslation(backend, srclang, lang, source, onSuccess, onError);
+}
+
+std::future<SuggestionsList>
+SuggestionsProvider::SuggestTranslation(SuggestionsBackend& backend,
+                                        const Language& srclang,
+                                        const Language& lang,
+                                        const std::wstring& source)
+{
+    return m_impl->SuggestTranslation(backend, srclang, lang, source);
 }
diff --git a/src/tm/suggestions.h b/src/tm/suggestions.h
index 7aeecd4..8deb16e 100644
--- a/src/tm/suggestions.h
+++ b/src/tm/suggestions.h
@@ -28,6 +28,7 @@
 
 #include <cmath>
 #include <functional>
+#include <future>
 #include <limits>
 #include <memory>
 #include <string>
@@ -113,17 +114,26 @@ public:
 
         @param backend    Suggestions backend to use, e.g.
                           TranslationMemory::Get().
+        @param srclang    Language of the source text.
         @param lang       Language of the desired translation.
         @param source     Source text.
         @param onSuccess  Called with suggestions.
         @param onError    Called in case of error.
      */
     void SuggestTranslation(SuggestionsBackend& backend,
+                            const Language& srclang,
                             const Language& lang,
                             const std::wstring& source,
                             success_func_type onSuccess,
                             error_func_type onError);
 
+    /// Same as the other version but returns a future
+    std::future<SuggestionsList>
+    SuggestTranslation(SuggestionsBackend& backend,
+                       const Language& srclang,
+                       const Language& lang,
+                       const std::wstring& source);
+
 private:
     std::unique_ptr<SuggestionsProviderImpl> m_impl;
 };
@@ -161,12 +171,14 @@ public:
         If no suggestions are found, @a onSuccess is called with an empty
         list as its argument.
         
+        @param srclang    Language of the source text.
         @param lang       Language of the desired translation.
         @param source     Source text.
         @param onSuccess  Called with suggestions.
         @param onError    Called in case of error.
      */
-    virtual void SuggestTranslation(const Language& lang,
+    virtual void SuggestTranslation(const Language& srclang,
+                                    const Language& lang,
                                     const std::wstring& source,
                                     success_func_type onSuccess,
                                     error_func_type onError) = 0;
diff --git a/src/tm/tm_migrate.cpp b/src/tm/tm_migrate.cpp
index 6f75528..2ca1667 100644
--- a/src/tm/tm_migrate.cpp
+++ b/src/tm/tm_migrate.cpp
@@ -23,6 +23,8 @@
  *
  */
 
+#ifndef DONT_MIGRATE_LEGACY_TM
+
 #include "transmem.h"
 
 #include "logcapture.h"
@@ -147,7 +149,8 @@ void XMLCALL OnStartElement(void *data, const char *name, const char **attrs)
                 t = wxString::FromUTF8(attrs[i+1]);
             if (!s.empty() && !t.empty())
             {
-                ctxt.tm->Insert(ctxt.lang, s.ToStdWstring(), t.ToStdWstring());
+                static const auto srclang = Language::English();
+                ctxt.tm->Insert(srclang, ctxt.lang, s.ToStdWstring(), t.ToStdWstring());
                 if (ctxt.count++ % 47 == 0)
                     ctxt.progress->Pulse(wxString::Format(_("Importing translations: %d"), ctxt.count));
             }
@@ -187,7 +190,7 @@ void DoMigrate(const wxString& path, const wxString& languages)
     ExpatContext ctxt;
     ctxt.progress = &progress;
     ctxt.count = 0;
-    ctxt.tm = TranslationMemory::Get().CreateWriter();
+    ctxt.tm = TranslationMemory::Get().GetWriter();
 
     XML_Parser parser = XML_ParserCreate(NULL);
     XML_SetUserData(parser, &ctxt);
@@ -302,3 +305,5 @@ bool MigrateLegacyTranslationMemory()
 
     return true;
 }
+
+#endif // !DONT_MIGRATE_LEGACY_TM
diff --git a/src/tm/transmem.cpp b/src/tm/transmem.cpp
index 143f949..cc56b29 100644
--- a/src/tm/transmem.cpp
+++ b/src/tm/transmem.cpp
@@ -27,6 +27,7 @@
 
 #include "catalog.h"
 #include "errors.h"
+#include "utility.h"
 
 #include <wx/stdpaths.h>
 #include <wx/utils.h>
@@ -67,6 +68,9 @@
 
 using namespace Lucene;
 
+namespace
+{
+
 #define CATCH_AND_RETHROW_EXCEPTION                                 \
     catch (LuceneException& e)                                      \
     {                                                               \
@@ -78,6 +82,106 @@ using namespace Lucene;
         throw Exception(e.what());                                  \
     }
 
+
+// Manages IndexReader and Searcher instances in multi-threaded environment.
+// Curiously, Lucene uses shared_ptr-based refcounting *and* explicit one as
+// well, with a crucial part not well protected.
+//
+// See https://issues.apache.org/jira/browse/LUCENE-3567 for the exact issue
+// encountered by Poedit's use as well. For an explanation of the manager
+// class, see
+// http://blog.mikemccandless.com/2011/09/lucenes-searchermanager-simplifies.html
+// http://blog.mikemccandless.com/2011/11/near-real-time-readers-with-lucenes.html
+class SearcherManager
+{
+public:
+    SearcherManager(IndexWriterPtr writer)
+    {
+        m_reader = writer->getReader();
+        m_searcher = newLucene<IndexSearcher>(m_reader);
+    }
+
+    ~SearcherManager()
+    {
+        m_searcher.reset();
+        m_reader->decRef();
+    }
+
+    // Safe, properly ref-counting (in Lucene way, not just shared_ptr) holder.
+    template<typename T>
+    class SafeRef
+    {
+    public:
+        typedef boost::shared_ptr<T> TPtr;
+
+        SafeRef(SafeRef&& other) : m_mng(other.m_mng) { std::swap(m_ptr, other.m_ptr); }
+        ~SafeRef() { if (m_ptr) m_mng.DecRef(m_ptr); }
+
+        TPtr ptr() { return m_ptr; }
+        T* operator->() const { return m_ptr.get(); }
+
+        SafeRef(const SafeRef&) = delete;
+        SafeRef& operator=(const SafeRef&) = delete;
+
+    private:
+        friend class SearcherManager;
+        explicit SafeRef(SearcherManager& m, TPtr ptr) : m_mng(m), m_ptr(ptr) {}
+
+        boost::shared_ptr<T> m_ptr;
+        SearcherManager& m_mng;
+    };
+
+    SafeRef<IndexReader> Reader()
+    {
+        std::lock_guard<std::mutex> guard(m_mutex);
+        ReloadReaderIfNeeded();
+        m_reader->incRef();
+        return SafeRef<IndexReader>(*this, m_reader);
+    }
+
+    SafeRef<IndexSearcher> Searcher()
+    {
+        std::lock_guard<std::mutex> guard(m_mutex);
+        ReloadReaderIfNeeded();
+        m_searcher->getIndexReader()->incRef();
+        return SafeRef<IndexSearcher>(*this, m_searcher);
+    }
+
+private:
+    void ReloadReaderIfNeeded()
+    {
+        // contract: m_mutex is locked when this function is called
+        if (m_reader->isCurrent())
+            return; // nothing to do
+
+        auto newReader = m_reader->reopen();
+        auto newSearcher = newLucene<IndexSearcher>(newReader);
+
+        m_reader->decRef();
+
+        m_reader = newReader;
+        m_searcher = newSearcher;
+    }
+
+    void DecRef(IndexReaderPtr& r)
+    {
+        std::lock_guard<std::mutex> guard(m_mutex);
+        r->decRef();
+    }
+    void DecRef(IndexSearcherPtr& s)
+    {
+        std::lock_guard<std::mutex> guard(m_mutex);
+        s->getIndexReader()->decRef();
+    }
+
+    IndexReaderPtr   m_reader;
+    IndexSearcherPtr m_searcher;
+    std::mutex       m_mutex;
+};
+
+
+} // anonymous namespace
+
 // ----------------------------------------------------------------
 // TranslationMemoryImpl
 // ----------------------------------------------------------------
@@ -91,28 +195,32 @@ public:
     typedef MMapDirectory DirectoryType;
 #endif
 
-    TranslationMemoryImpl()
-        : m_dir(GetDatabaseDir()),
-          m_analyzer(newLucene<StandardAnalyzer>(LuceneVersion::LUCENE_CURRENT))
-    {}
+    TranslationMemoryImpl() { Init(); }
 
-    SuggestionsList Search(const Language& lang,
+    ~TranslationMemoryImpl()
+    {
+        m_mng.reset();
+        m_writer->close();
+    }
+
+    SuggestionsList Search(const Language& srclang, const Language& lang,
                            const std::wstring& source);
 
-    std::shared_ptr<TranslationMemory::Writer> CreateWriter();
+    std::shared_ptr<TranslationMemory::Writer> GetWriter() { return m_writerAPI; }
 
     void GetStats(long& numDocs, long& fileSize);
 
 private:
+    void Init();
+
     static std::wstring GetDatabaseDir();
-    IndexReaderPtr Reader();
-    SearcherPtr Searcher();
 
 private:
-    std::wstring     m_dir;
     AnalyzerPtr      m_analyzer;
-    IndexReaderPtr   m_reader;
-    std::mutex       m_readerMutex;
+    IndexWriterPtr   m_writer;
+    std::shared_ptr<SearcherManager> m_mng;
+
+    std::shared_ptr<TranslationMemory::Writer> m_writerAPI;
 };
 
 
@@ -137,17 +245,6 @@ std::wstring TranslationMemoryImpl::GetDatabaseDir()
 }
 
 
-IndexReaderPtr TranslationMemoryImpl::Reader()
-{
-    std::lock_guard<std::mutex> guard(m_readerMutex);
-    if ( m_reader )
-        m_reader = m_reader->reopen();
-    else
-        m_reader = IndexReader::open(newLucene<DirectoryType>(m_dir), true);
-    return m_reader;
-}
-
-
 namespace
 {
 
@@ -168,9 +265,28 @@ bool ContainsResult(const SuggestionsList& all, const std::wstring& r)
     return found != all.end();
 }
 
+// Return translation (or source) text field.
+//
+// Older versions of Poedit used to store C-like escaped text (e.g. "\n" instead
+// of newline), but starting with 1.8, the "true" form of the text is stored.
+// To preserve compatibility with older data, a version field is stored with
+// TM documents and this function decides whether to decode escapes or not.
+//
+// TODO: remove this a few years down the road.
+std::wstring get_text_field(DocumentPtr doc, const std::wstring& field)
+{
+    auto version = doc->get(L"v");
+    auto value = doc->get(field);
+    if (version.empty()) // pre-1.8 data
+        return UnescapeCString(value);
+    else
+        return value;
+}
+
+
 template<typename T>
 void PerformSearchWithBlock(IndexSearcherPtr searcher,
-                            QueryPtr lang,
+                            QueryPtr srclang, QueryPtr lang,
                             const std::wstring& exactSourceText,
                             QueryPtr query,
                             double scoreThreshold,
@@ -178,6 +294,7 @@ void PerformSearchWithBlock(IndexSearcherPtr searcher,
                             T callback)
 {
     auto fullQuery = newLucene<BooleanQuery>();
+    fullQuery->add(srclang, BooleanClause::MUST);
     fullQuery->add(lang, BooleanClause::MUST);
     fullQuery->add(query, BooleanClause::MUST);
 
@@ -191,7 +308,7 @@ void PerformSearchWithBlock(IndexSearcherPtr searcher,
             continue;
 
         auto doc = searcher->doc(scoreDoc->doc);
-        auto src = doc->get(L"source");
+        auto src = get_text_field(doc, L"source");
         if (src == exactSourceText)
         {
             score = 1.0;
@@ -217,7 +334,7 @@ void PerformSearchWithBlock(IndexSearcherPtr searcher,
 }
 
 void PerformSearch(IndexSearcherPtr searcher,
-                   QueryPtr lang,
+                   QueryPtr srclang, QueryPtr lang,
                    const std::wstring& exactSourceText,
                    QueryPtr query,
                    SuggestionsList& results,
@@ -226,11 +343,11 @@ void PerformSearch(IndexSearcherPtr searcher,
 {
     PerformSearchWithBlock
     (
-        searcher, lang, exactSourceText, query,
+        searcher, srclang, lang, exactSourceText, query,
         scoreThreshold, scoreScaling,
         [&results](DocumentPtr doc, double score)
         {
-            auto t = doc->get(L"trans");
+            auto t = get_text_field(doc, L"trans");
             if (!ContainsResult(results, t))
             {
                 time_t ts = DateField::stringToTime(doc->get(L"created"));
@@ -245,11 +362,15 @@ void PerformSearch(IndexSearcherPtr searcher,
 
 } // anonymous namespace
 
-SuggestionsList TranslationMemoryImpl::Search(const Language& lang,
+SuggestionsList TranslationMemoryImpl::Search(const Language& srclang,
+                                              const Language& lang,
                                               const std::wstring& source)
 {
     try
     {
+        // TODO: query by srclang too!
+        auto srclangQ = newLucene<TermQuery>(newLucene<Term>(L"srclang", srclang.WCode()));
+
         const Lucene::String fullLang = lang.WCode();
         const Lucene::String shortLang = StringUtils::toUnicode(lang.Lang());
 
@@ -287,17 +408,17 @@ SuggestionsList TranslationMemoryImpl::Search(const Language& lang,
             phraseQ->add(term);
         }
 
-        auto searcher = newLucene<IndexSearcher>(Reader());
+        auto searcher = m_mng->Searcher();
 
         // Try exact phrase first:
-        PerformSearch(searcher, langQ, source, phraseQ, results,
+        PerformSearch(searcher.ptr(), srclangQ, langQ, source, phraseQ, results,
                       QUALITY_THRESHOLD, /*scoreScaling=*/1.0);
         if (!results.empty())
             return results;
 
         // Then, if no matches were found, permit being a bit sloppy:
         phraseQ->setSlop(1);
-        PerformSearch(searcher, langQ, source, phraseQ, results,
+        PerformSearch(searcher.ptr(), srclangQ, langQ, source, phraseQ, results,
                       QUALITY_THRESHOLD, /*scoreScaling=*/0.9);
 
         if (!results.empty())
@@ -308,12 +429,12 @@ SuggestionsList TranslationMemoryImpl::Search(const Language& lang,
         boolQ->setMinimumNumberShouldMatch(std::max(1, boolQ->getClauses().size() - MAX_ALLOWED_LENGTH_DIFFERENCE));
         PerformSearchWithBlock
         (
-            searcher, langQ, source, boolQ,
+            searcher.ptr(), srclangQ, langQ, source, boolQ,
             QUALITY_THRESHOLD, /*scoreScaling=*/0.8,
             [=,&results](DocumentPtr doc, double score)
             {
-                auto s = doc->get(sourceField);
-                auto t = doc->get(L"trans");
+                auto s = get_text_field(doc, sourceField);
+                auto t = get_text_field(doc, L"trans");
                 auto stream2 = m_analyzer->tokenStream(sourceField, newLucene<StringReader>(s));
                 int tokensCount2 = 0;
                 while (stream2->incrementToken())
@@ -343,7 +464,7 @@ void TranslationMemoryImpl::GetStats(long& numDocs, long& fileSize)
 {
     try
     {
-        auto reader = Reader();
+        auto reader = m_mng->Reader();
         numDocs = reader->numDocs();
         fileSize = wxDir::GetTotalSize(GetDatabaseDir()).GetValue();
     }
@@ -357,33 +478,32 @@ void TranslationMemoryImpl::GetStats(long& numDocs, long& fileSize)
 class TranslationMemoryWriterImpl : public TranslationMemory::Writer
 {
 public:
-    TranslationMemoryWriterImpl(DirectoryPtr dir, AnalyzerPtr analyzer)
-    {
-        m_writer = newLucene<IndexWriter>(dir, analyzer, IndexWriter::MaxFieldLengthLIMITED);
-        m_writer->setMergeScheduler(newLucene<SerialMergeScheduler>());
-    }
+    TranslationMemoryWriterImpl(IndexWriterPtr writer) : m_writer(writer) {}
 
-    ~TranslationMemoryWriterImpl()
+    ~TranslationMemoryWriterImpl() {}
+
+    void Commit() override
     {
-        if (m_writer)
-            m_writer->rollback();
+        try
+        {
+            m_writer->commit();
+        }
+        CATCH_AND_RETHROW_EXCEPTION
     }
 
-    virtual void Commit()
+    void Rollback() override
     {
         try
         {
-            m_writer->close();
-            m_writer.reset();
+            m_writer->rollback();
         }
         CATCH_AND_RETHROW_EXCEPTION
     }
 
-    virtual void Insert(const Language& lang,
-                        const std::wstring& source,
-                        const std::wstring& trans)
+    void Insert(const Language& srclang, const Language& lang,
+                const std::wstring& source, const std::wstring& trans) override
     {
-        if (!lang.IsValid())
+        if (!lang.IsValid() || !srclang.IsValid() || lang == srclang)
             return;
 
         // Compute unique ID for the translation:
@@ -392,7 +512,7 @@ public:
           boost::uuids::string_generator()("6e3f73c5-333f-4171-9d43-954c372a8a02");
         boost::uuids::name_generator gen(s_namespace);
 
-        std::wstring itemId(L"en"); // TODO: srclang
+        std::wstring itemId(srclang.WCode());
         itemId += lang.WCode();
         itemId += source;
         itemId += trans;
@@ -406,9 +526,11 @@ public:
 
             doc->add(newLucene<Field>(L"uuid", itemUUID,
                                       Field::STORE_YES, Field::INDEX_NOT_ANALYZED));
+            doc->add(newLucene<Field>(L"v", L"1",
+                                      Field::STORE_YES, Field::INDEX_NO));
             doc->add(newLucene<Field>(L"created", DateField::timeToString(time(NULL)),
                                       Field::STORE_YES, Field::INDEX_NO));
-            doc->add(newLucene<Field>(L"srclang", L"en",
+            doc->add(newLucene<Field>(L"srclang", srclang.WCode(),
                                       Field::STORE_YES, Field::INDEX_NOT_ANALYZED));
             doc->add(newLucene<Field>(L"lang", lang.WCode(),
                                       Field::STORE_YES, Field::INDEX_NOT_ANALYZED));
@@ -422,38 +544,43 @@ public:
         CATCH_AND_RETHROW_EXCEPTION
     }
 
-    virtual void Insert(const Catalog &cat)
+    void Insert(const Language& srclang, const Language& lang, const CatalogItemPtr& item) override
     {
-        auto lang = cat.GetLanguage();
-        if (!lang.IsValid())
+        if (!lang.IsValid() || !srclang.IsValid())
             return;
 
-        int cnt = cat.GetCount();
-        for (int i = 0; i < cnt; i++)
-        {
-            const CatalogItem& item = cat[i];
+        // ignore translations with errors in them
+        if (item->GetValidity() == CatalogItem::Val_Invalid)
+            return;
 
-            // ignore translations with errors in them
-            if (item.GetValidity() == CatalogItem::Val_Invalid)
-                continue;
+        // can't handle plurals yet (TODO?)
+        if (item->HasPlural())
+            return;
 
-            // can't handle plurals yet (TODO?)
-            if (item.HasPlural())
-                continue;
+        // ignore untranslated or unfinished translations
+        if (item->IsFuzzy() || !item->IsTranslated())
+            return;
 
-            // ignore untranslated or unfinished translations
-            if (item.IsFuzzy() || !item.IsTranslated())
-                continue;
+        Insert(srclang, lang, item->GetString().ToStdWstring(), item->GetTranslation().ToStdWstring());
+    }
 
+    void Insert(const CatalogPtr& cat) override
+    {
+        auto srclang = cat->GetSourceLanguage();
+        auto lang = cat->GetLanguage();
+        if (!lang.IsValid() || !srclang.IsValid())
+            return;
+
+        for (auto& item: cat->items())
+        {
             // Note that dt.IsModified() is intentionally not checked - we
             // want to save old entries in the TM too, so that we harvest as
             // much useful translations as we can.
-
-            Insert(lang, item.GetString().ToStdWstring(), item.GetTranslation().ToStdWstring());
+            Insert(srclang, lang, item);
         }
     }
 
-    virtual void DeleteAll()
+    void DeleteAll() override
     {
         try
         {
@@ -466,11 +593,21 @@ private:
     IndexWriterPtr m_writer;
 };
 
-std::shared_ptr<TranslationMemory::Writer> TranslationMemoryImpl::CreateWriter()
+
+void TranslationMemoryImpl::Init()
 {
     try
     {
-        return std::make_shared<TranslationMemoryWriterImpl>(newLucene<DirectoryType>(m_dir), m_analyzer);
+        auto dir = newLucene<DirectoryType>(GetDatabaseDir());
+        m_analyzer = newLucene<StandardAnalyzer>(LuceneVersion::LUCENE_CURRENT);
+
+        m_writer = newLucene<IndexWriter>(dir, m_analyzer, IndexWriter::MaxFieldLengthLIMITED);
+        m_writer->setMergeScheduler(newLucene<SerialMergeScheduler>());
+
+        // get the associated realtime reader & searcher:
+        m_mng.reset(new SearcherManager(m_writer));
+
+        m_writerAPI = std::make_shared<TranslationMemoryWriterImpl>(m_writer);
     }
     CATCH_AND_RETHROW_EXCEPTION
 }
@@ -513,20 +650,22 @@ TranslationMemory::~TranslationMemory() { delete m_impl; }
 // public API
 // ----------------------------------------------------------------
 
-SuggestionsList TranslationMemory::Search(const Language& lang,
+SuggestionsList TranslationMemory::Search(const Language& srclang,
+                                          const Language& lang,
                                           const std::wstring& source)
 {
-    return m_impl->Search(lang, source);
+    return m_impl->Search(srclang, lang, source);
 }
 
-void TranslationMemory::SuggestTranslation(const Language& lang,
+void TranslationMemory::SuggestTranslation(const Language& srclang,
+                                           const Language& lang,
                                            const std::wstring& source,
                                            success_func_type onSuccess,
                                            error_func_type onError)
 {
     try
     {
-        onSuccess(Search(lang, source));
+        onSuccess(Search(srclang, lang, source));
     }
     catch (...)
     {
@@ -534,9 +673,9 @@ void TranslationMemory::SuggestTranslation(const Language& lang,
     }
 }
 
-std::shared_ptr<TranslationMemory::Writer> TranslationMemory::CreateWriter()
+std::shared_ptr<TranslationMemory::Writer> TranslationMemory::GetWriter()
 {
-    return m_impl->CreateWriter();
+    return m_impl->GetWriter();
 }
 
 void TranslationMemory::GetStats(long& numDocs, long& fileSize)
diff --git a/src/tm/transmem.h b/src/tm/transmem.h
index 67b7dc9..4c5ddc5 100644
--- a/src/tm/transmem.h
+++ b/src/tm/transmem.h
@@ -30,9 +30,9 @@
 #include <vector>
 #include <memory>
 
+#include "catalog.h"
 #include "suggestions.h"
 
-class Catalog;
 class TranslationMemoryImpl;
 
 /** 
@@ -52,16 +52,19 @@ public:
     /**
         Search translation memory for similar strings.
         
+        @param srclang Language of the source text.
         @param lang    Language of the desired translation.
         @param source  Source text.
 
         @return List of hits that were found, possibly empty.
      */
-    SuggestionsList Search(const Language& lang,
+    SuggestionsList Search(const Language& srclang,
+                           const Language& lang,
                            const std::wstring& source);
 
     /// SuggestionsBackend API implementation:
-    void SuggestTranslation(const Language& lang,
+    void SuggestTranslation(const Language& srclang,
+                            const Language& lang,
                             const std::wstring& source,
                             success_func_type onSuccess,
                             error_func_type onError) override;
@@ -69,8 +72,16 @@ public:
     /**
         Performs updates to the translation memory.
         
-        You must call Commit() for them to be written.
-    
+        Call Commit() to commit changes since the last commit to disk.
+        Call Rollback() to undo all changes since the last commit.
+        
+        Committing shouldn't be done too often, as it is expensive.
+        The writer is shared and can be used by multiple threads.
+        
+        Note that closing the writer on shutdown, if it has uncommitted
+        changes, will result in them being committed. You must to explicitly
+        Rollback() them if you don't want that behavior.
+
         All methods may throw Exception.
       */
     class Writer
@@ -80,33 +91,48 @@ public:
 
         /**
             Insert translation into the TM.
-            
-            @param lang    Language code (e.g. pt_BR or cs).
+
+            @param srclang Source text language.
+            @param lang    Translation language.
             @param source  Source text.
             @param trans   Translation text.
          */
-        virtual void Insert(const Language& lang,
+        virtual void Insert(const Language& srclang,
+                            const Language& lang,
                             const std::wstring& source,
                             const std::wstring& trans) = 0;
 
         /**
+            Inserts a single catalog item.
+
+            @note
+            Not everything is included: fuzzy or untranslated entries are skipped.
+         */
+        virtual void Insert(const Language& srclang,
+                            const Language& lang,
+                            const CatalogItemPtr& item) = 0;
+
+        /**
             Inserts entire content of the catalog.
             
             @note
             Not everything is included: fuzzy or untranslated entries are omitted.
             If the catalog doesn't have language header, it is not included either.
          */
-        virtual void Insert(const Catalog& cat) = 0;
+        virtual void Insert(const CatalogPtr& cat) = 0;
 
         /// Deletes everything from the TM.
         virtual void DeleteAll() = 0;
 
         /// Commits changes written so far.
         virtual void Commit() = 0;
+
+        /// Rolls back changes written so far.
+        virtual void Rollback() = 0;
     };
 
-    /// Creates a writer for updating the TM
-    std::shared_ptr<Writer> CreateWriter();
+    /// Returns the shared writer instance
+    std::shared_ptr<Writer> GetWriter();
 
     /// Returns statistics about the TM
     void GetStats(long& numDocs, long& fileSize);
diff --git a/src/utility.cpp b/src/utility.cpp
index c74c280..b6dd08f 100644
--- a/src/utility.cpp
+++ b/src/utility.cpp
@@ -29,12 +29,17 @@
 #include <wx/filename.h>
 #include <wx/log.h>
 #include <wx/config.h>
-#include <wx/display.h>
+
+#if wxUSE_GUI
+    #include <wx/display.h>
+#endif
 
 #ifdef __WXOSX__
-#include "osx_helpers.h"
+    #include <Foundation/Foundation.h>
 #endif
 
+#include "str_helpers.h"
+
 wxString EscapeMarkup(const wxString& str)
 {
     wxString s(str);
@@ -44,6 +49,43 @@ wxString EscapeMarkup(const wxString& str)
     return s;
 }
 
+
+wxFileName CommonDirectory(const wxFileName& a, const wxFileName& b)
+{
+    if (!a.IsOk())
+        return wxFileName::DirName(b.GetPath());;
+    if (!b.IsOk())
+        return wxFileName::DirName(a.GetPath());;
+
+    const auto& dirs_a = a.GetDirs();
+    const auto& dirs_b = b.GetDirs();
+
+    wxFileName d = wxFileName::DirName(a.GetPath());
+    const auto count = std::min(dirs_a.size(), dirs_b.size());
+    size_t i = 0;
+    for (i = 0; i < count; i++)
+    {
+        if (dirs_a[i] != dirs_b[i])
+            break;
+    }
+    while (d.GetDirCount() != i)
+        d.RemoveLastDir();
+    return d;
+}
+
+wxFileName MakeFileName(const wxString& path)
+{
+    wxFileName fn;
+    if (path.empty())
+        return fn;
+    if (wxFileName::DirExists(path) || path.Last() == wxFILE_SEP_PATH)
+        fn.AssignDir(path);
+    else
+        fn.Assign(path);
+    fn.Normalize();
+    return fn;
+}
+
 // ----------------------------------------------------------------------
 // TempDirectory
 // ----------------------------------------------------------------------
@@ -96,6 +138,14 @@ TempDirectory::~TempDirectory()
     if ( m_dir.empty() )
         return;
 
+    Clear();
+
+    wxLogTrace("poedit.tmp", "removing temp dir %s", m_dir.c_str());
+    wxFileName::Rmdir(m_dir);
+}
+
+void TempDirectory::Clear()
+{
     if ( ms_keepFiles )
     {
         wxLogTrace("poedit.tmp", "keeping temp files in %s", m_dir.c_str());
@@ -110,12 +160,8 @@ TempDirectory::~TempDirectory()
             wxRemoveFile(*i);
         }
     }
-
-    wxLogTrace("poedit.tmp", "removing temp dir %s", m_dir.c_str());
-    wxFileName::Rmdir(m_dir);
 }
 
-
 wxString TempDirectory::CreateFileName(const wxString& suffix)
 {
     wxString s = wxString::Format("%s%c%d%s",
@@ -132,7 +178,7 @@ wxString TempDirectory::CreateFileName(const wxString& suffix)
 // TempOutputFile
 // ----------------------------------------------------------------------
 
-TempOutputFileFor::TempOutputFileFor(const wxString& filename)
+TempOutputFileFor::TempOutputFileFor(const wxString& filename) : m_filenameFinal(filename)
 {
     wxString path, name, ext;
     wxFileName::SplitPath(filename, &path, &name, &ext);
@@ -140,7 +186,7 @@ TempOutputFileFor::TempOutputFileFor(const wxString& filename)
         ext = "." + ext;
 
 #ifdef __WXOSX__
-    NSURL *fileUrl = [NSURL fileURLWithPath:wxStringToNS(filename)];
+    NSURL *fileUrl = [NSURL fileURLWithPath:str::to_NS(filename)];
     NSURL *tempdirUrl =
         [[NSFileManager defaultManager] URLForDirectory:NSItemReplacementDirectory
                                                inDomain:NSUserDomainMask
@@ -148,7 +194,7 @@ TempOutputFileFor::TempOutputFileFor(const wxString& filename)
                                                  create:YES
                                                   error:nil];
     if (tempdirUrl)
-        m_tempDir = wxStringFromNS([tempdirUrl path]);
+        m_tempDir = str::to_wx([tempdirUrl path]);
 #endif
 
     wxString counter;
@@ -182,12 +228,19 @@ TempOutputFileFor::TempOutputFileFor(const wxString& filename)
     }
 }
 
+bool TempOutputFileFor::Commit()
+{
+    return wxRenameFile(m_filenameTmp, m_filenameFinal, /*overwrite=*/true);
+}
 
 TempOutputFileFor::~TempOutputFileFor()
 {
 #ifdef __WXOSX__
     if (!m_tempDir.empty())
         wxFileName::Rmdir(m_tempDir, wxPATH_RMDIR_RECURSIVE);
+#else
+    if (wxFileExists(m_filenameTmp))
+        wxRemoveFile(m_filenameTmp);
 #endif
 }
 
@@ -223,6 +276,8 @@ wxString CliSafeFileName(const wxString& fn)
 // Helpers for persisting windows' state
 // ----------------------------------------------------------------------
 
+#if wxUSE_GUI
+
 void SaveWindowState(const wxTopLevelWindow *win, int flags)
 {
 #ifdef __WXOSX__
@@ -345,3 +400,5 @@ void RestoreWindowState(wxTopLevelWindow *win, const wxSize& defaultSize, int fl
         win->Maximize();
     }
 }
+
+#endif // wxUSE_GUI
diff --git a/src/utility.h b/src/utility.h
index f3f35a6..63feb93 100644
--- a/src/utility.h
+++ b/src/utility.h
@@ -23,8 +23,8 @@
  *
  */
 
-#ifndef _UTILITY_H_
-#define _UTILITY_H_
+#ifndef Poedit_utility_h
+#define Poedit_utility_h
 
 #ifndef HAVE_MKDTEMP
     #ifdef __WXOSX__
@@ -32,9 +32,14 @@
     #endif
 #endif
 
-#include <wx/string.h>
 #include <wx/arrstr.h>
-#include <wx/toplevel.h>
+#include <wx/filename.h>
+#include <wx/string.h>
+
+#if wxUSE_GUI
+    #include <wx/toplevel.h>
+#endif
+
 
 // ----------------------------------------------------------------------
 // Misc platform differences
@@ -46,6 +51,19 @@
     #define MSW_OR_OTHER(msw, other) other
 #endif
 
+#ifdef __WXOSX__
+    #define OSX_OR_OTHER(msw, other) msw
+#else
+    #define OSX_OR_OTHER(msw, other) other
+#endif
+
+#ifdef __WXOSX__
+    #define BORDER_WIN(dir, n) Border(dir, 0)
+    #define BORDER_OSX(dir, n) Border(dir, n)
+#else
+    #define BORDER_WIN(dir, n) Border(dir, n)
+    #define BORDER_OSX(dir, n) Border(dir, 0)
+#endif
 
 // ----------------------------------------------------------------------
 // Misc helpers
@@ -53,6 +71,102 @@
 
 wxString EscapeMarkup(const wxString& str);
 
+// Encoding and decoding a string with C escape sequences:
+
+template<typename T>
+inline T EscapeCString(const T& str)
+{
+    T out;
+    out.reserve(str.length());
+    for (wchar_t c: str)
+    {
+        switch (c)
+        {
+            case '"' : out += L"\\\"";  break;
+            case '\a': out += L"\\a";   break;
+            case '\b': out += L"\\b";   break;
+            case '\f': out += L"\\f";   break;
+            case '\n': out += L"\\n";   break;
+            case '\r': out += L"\\r";   break;
+            case '\t': out += L"\\t";   break;
+            case '\v': out += L"\\v";   break;
+            case '\\': out += L"\\\\";  break;
+            default:
+                out += c;
+                break;
+        }
+    }
+    return out;
+}
+
+template<typename T>
+inline T UnescapeCString(const T& str)
+{
+    T out;
+    out.reserve(str.length());
+    for (auto i = str.begin(); i != str.end(); ++i)
+    {
+        wchar_t c = *i;
+        if (c == '\\')
+        {
+            if (++i != str.end())
+            {
+                switch ((wchar_t)*i)
+                {
+                    case 'a': out += '\a'; break;
+                    case 'b': out += '\b'; break;
+                    case 'f': out += '\f'; break;
+                    case 'n': out += '\n'; break;
+                    case 'r': out += '\r'; break;
+                    case 't': out += '\t'; break;
+                    case 'v': out += '\v'; break;
+                    case '\\':
+                    case '"':
+                    case '\'':
+                    case '?':
+                        out += *i;
+                        break;
+                    default:
+                        out += c;
+                        out += *i;
+                        break;
+                }
+            }
+            else
+            {
+                out += c;
+                break;
+            }
+        }
+        else
+        {
+            out += c;
+        }
+    }
+    return out;
+}
+
+
+wxFileName MakeFileName(const wxString& path);
+
+inline wxFileName MakeFileName(wxFileName fn)
+{
+    fn.Normalize();
+    return fn;
+}
+
+wxFileName CommonDirectory(const wxFileName& a, const wxFileName& b);
+
+template<typename T>
+inline wxFileName CommonDirectory(const T& a)
+{
+    wxFileName root;
+    for (auto& i: a)
+        root = CommonDirectory(root, MakeFileName(i));
+    return root;
+}
+
+
 
 // ----------------------------------------------------------------------
 // TempDirectory
@@ -72,6 +186,9 @@ public:
     // creates new file name in that directory
     wxString CreateFileName(const wxString& suffix);
 
+    /// Clears the temp directory (only safe if none of the files are open). Called by dtor.
+    void Clear();
+
     // whether to keep temporary files
     static void KeepFiles(bool keep = true) { ms_keepFiles = keep; }
 
@@ -83,19 +200,26 @@ private:
     static bool ms_keepFiles;
 };
 
-// Holder of temporary file for creating the output.
+/// Holder of temporary file for creating the output.
+/// Use Commit() to move the written file to its final location.
+/// Destructor deletes the temp file if it still exists.
 class TempOutputFileFor
 {
 public:
     explicit TempOutputFileFor(const wxString& filename);
     ~TempOutputFileFor();
 
+    /// Name of the temporary placeholder
     const wxString& FileName() const { return m_filenameTmp; }
 
+    /// Renames temp file to the final one (passed to ctor).
+    bool Commit();
+
 #ifdef __WXOSX__
     wxString m_tempDir;
 #endif
     wxString m_filenameTmp;
+    wxString m_filenameFinal;
 };
 
 
@@ -112,6 +236,8 @@ inline wxString CliSafeFileName(const wxString& fn) { return fn; }
 // Helpers for persisting windows' state
 // ----------------------------------------------------------------------
 
+#if wxUSE_GUI
+
 enum WinStateFlags
 {
     WinState_Pos  = 1,
@@ -128,4 +254,6 @@ inline wxString WindowStatePath(const wxWindow *win)
     return wxString::Format("/windows/%s/", win->GetName().c_str());
 }
 
-#endif // _UTILITY_H_
+#endif // wxUSE_GUI
+
+#endif // Poedit_utility_h
diff --git a/src/version.h b/src/version.h
index 6712232..75956e0 100644
--- a/src/version.h
+++ b/src/version.h
@@ -26,7 +26,7 @@
 #ifndef _VERSION_H_
 #define _VERSION_H_
 
-#define POEDIT_VERSION           "1.7.7"
-#define POEDIT_VERSION_WIN        1,7,7,0
+#define POEDIT_VERSION           "1.8.1"
+#define POEDIT_VERSION_WIN        1,8,1
 
 #endif // _VERSION_H_
diff --git a/src/welcomescreen.cpp b/src/welcomescreen.cpp
index c111e9e..bb0ed03 100644
--- a/src/welcomescreen.cpp
+++ b/src/welcomescreen.cpp
@@ -25,9 +25,11 @@
 
 #include "welcomescreen.h"
 
+#include "crowdin_gui.h"
 #include "edapp.h"
 #include "edframe.h"
 #include "hidpi.h"
+#include "str_helpers.h"
 
 #include <wx/dcbuffer.h>
 #include <wx/statbmp.h>
@@ -40,9 +42,7 @@
 #include <wx/hyperlink.h>
 #include <wx/xrc/xmlres.h>
 
-#ifdef __WXOSX__
-#include "osx_helpers.h"
-#else
+#ifndef __WXOSX__
 #include <wx/commandlinkbutton.h>
 #endif
 
@@ -64,7 +64,7 @@ public:
 
         NSButton *btn = (NSButton*)m_button->GetHandle();
 
-        NSString *str = wxStringToNS(label + "\n" + note);
+        NSString *str = str::to_NS(label + "\n" + note);
         NSRange topLine = NSMakeRange(0, label.length() + 1);
         NSRange bottomLine = NSMakeRange(label.length() + 1, note.length());
 
@@ -227,6 +227,15 @@ WelcomeScreenPanel::WelcomeScreenPanel(wxWindow *parent)
                        _("Take an existing PO file or POT template and create a new translation from it.")),
                wxSizerFlags().PXBorderAll().Expand());
 
+#ifdef HAVE_HTTP_CLIENT
+    sizer->Add(new ActionButton(
+                       this, XRCID("menu_open_crowdin"),
+                       _("Collaborate on a translation with Crowdin"),
+                       _("Download a file from Crowdin project, translate and sync your changes back.")),
+               wxSizerFlags().PXBorderAll().Expand());
+    sizer->Add(new LearnAboutCrowdinLink(this, _("What is Crowdin?")), wxSizerFlags().Right().Border(wxRIGHT, PX(8)));
+#endif // HAVE_HTTP_CLIENT
+
     sizer->AddSpacer(PX(50));
 }
 
diff --git a/src/wx/main_toolbar.cpp b/src/wx/main_toolbar.cpp
index 6e32a79..c1cdc6e 100644
--- a/src/wx/main_toolbar.cpp
+++ b/src/wx/main_toolbar.cpp
@@ -25,6 +25,7 @@
 
 #include "main_toolbar.h"
 
+#include <wx/intl.h>
 #include <wx/toolbar.h>
 #include <wx/xrc/xmlres.h>
 
@@ -36,6 +37,7 @@ public:
     {
         m_tb = wxXmlResource::Get()->LoadToolBar(parent, "toolbar");
         m_idFuzzy = XRCID("menu_fuzzy");
+        m_idUpdate = XRCID("toolbar_update");
     }
 
     bool IsFuzzy() const override
@@ -48,9 +50,27 @@ public:
         m_tb->ToggleTool(m_idFuzzy, on);
     }
 
+    void EnableSyncWithCrowdin(bool on) override
+    {
+        auto tool = m_tb->FindById(m_idUpdate);
+
+        if (on)
+        {
+            tool->SetLabel(_("Sync"));
+            tool->SetShortHelp(_("Synchronize the translation with Crowdin"));
+            m_tb->SetToolNormalBitmap(m_idUpdate, wxArtProvider::GetBitmap("poedit-sync"));
+        }
+        else
+        {
+            tool->SetLabel(_("Update"));
+            tool->SetShortHelp(_("Update catalog - synchronize it with sources"));
+            m_tb->SetToolNormalBitmap(m_idUpdate, wxArtProvider::GetBitmap("poedit-update"));
+        }
+    }
+
 private:
     wxToolBar *m_tb;
-    int m_idFuzzy;
+    int m_idFuzzy, m_idUpdate;
 };
 
 
diff --git a/src/wx_backports/activityindicator.h b/src/wx_backports/activityindicator.h
new file mode 100644
index 0000000..35bdfc2
--- /dev/null
+++ b/src/wx_backports/activityindicator.h
@@ -0,0 +1,56 @@
+///////////////////////////////////////////////////////////////////////////////
+// Name:        wx/activityindicator.h
+// Purpose:     wxActivityIndicator declaration.
+// Author:      Vadim Zeitlin
+// Created:     2015-03-05
+// Copyright:   (c) 2015 Vadim Zeitlin <vadim at wxwidgets.org>
+// Licence:     wxWindows licence
+///////////////////////////////////////////////////////////////////////////////
+
+#ifndef _WX_ACTIVITYINDICATOR_H_
+#define _WX_ACTIVITYINDICATOR_H_
+
+#include "wx/defs.h"
+
+#include "wx/control.h"
+
+#define wxActivityIndicatorNameStr wxS("activityindicator")
+
+// ----------------------------------------------------------------------------
+// wxActivityIndicator: small animated indicator of some application activity.
+// ----------------------------------------------------------------------------
+
+class wxActivityIndicatorBase : public wxControl
+{
+public:
+    // Start or stop the activity animation (it is stopped initially).
+    virtual void Start() = 0;
+    virtual void Stop() = 0;
+
+    // Return true if the control is currently showing activity.
+    virtual bool IsRunning() const = 0;
+
+    // Override some base class virtual methods.
+    virtual bool AcceptsFocus() const { return false; }
+    virtual bool HasTransparentBackground() { return true; }
+
+protected:
+    // choose the default border for this window
+    virtual wxBorder GetDefaultBorder() const { return wxBORDER_NONE; }
+};
+
+#ifndef __WXUNIVERSAL__
+#if defined(__WXGTK20__)
+    #define wxHAS_NATIVE_ACTIVITYINDICATOR
+    #include "gtk_activityindicator.h"
+#elif defined(__WXOSX_COCOA__)
+    #define wxHAS_NATIVE_ACTIVITYINDICATOR
+    #include "osx_activityindicator.h"
+#endif
+#endif // !__WXUNIVERSAL__
+
+#ifndef wxHAS_NATIVE_ACTIVITYINDICATOR
+    #include "generic_activityindicator.h"
+#endif
+
+#endif // _WX_ACTIVITYINDICATOR_H_
diff --git a/src/wx_backports/gtk_activityindicator.h b/src/wx_backports/gtk_activityindicator.h
new file mode 100644
index 0000000..addd7f6
--- /dev/null
+++ b/src/wx_backports/gtk_activityindicator.h
@@ -0,0 +1,60 @@
+///////////////////////////////////////////////////////////////////////////////
+// Name:        wx/gtk/activityindicator.h
+// Purpose:     Declaration of wxActivityIndicator for wxGTK.
+// Author:      Vadim Zeitlin
+// Created:     2015-03-05
+// Copyright:   (c) 2015 Vadim Zeitlin <vadim at wxwidgets.org>
+// Licence:     wxWindows licence
+///////////////////////////////////////////////////////////////////////////////
+
+#ifndef _WX_GTK_ACTIVITYINDICATOR_H_
+#define _WX_GTK_ACTIVITYINDICATOR_H_
+
+// With GTK+ 3 we can always be certain that this control is available, so use
+// the normal base class. With GTK+ 2 however, we may determine during run-time
+// that we need to fall back to the generic implementation because the GTK+
+// version is earlier than 2.20, so we need to inherit from the generic class.
+#define wxActivityIndicatorGtkBase wxActivityIndicatorBase
+
+// ----------------------------------------------------------------------------
+// wxActivityIndicator: implementation using GtkSpinner.
+// ----------------------------------------------------------------------------
+
+class wxActivityIndicator : public wxActivityIndicatorGtkBase
+{
+public:
+    wxActivityIndicator()
+    {
+    }
+
+    explicit
+    wxActivityIndicator(wxWindow* parent,
+                        wxWindowID winid = wxID_ANY,
+                        const wxPoint& pos = wxDefaultPosition,
+                        const wxSize& size = wxDefaultSize,
+                        long style = 0,
+                        const wxString& name = wxActivityIndicatorNameStr)
+    {
+        Create(parent, winid, pos, size, style, name);
+    }
+
+    bool Create(wxWindow* parent,
+                wxWindowID winid = wxID_ANY,
+                const wxPoint& pos = wxDefaultPosition,
+                const wxSize& size = wxDefaultSize,
+                long style = 0,
+                const wxString& name = wxActivityIndicatorNameStr);
+
+    virtual void Start();
+    virtual void Stop();
+    virtual bool IsRunning() const;
+
+protected:
+    virtual wxSize DoGetBestClientSize() const;
+
+private:
+    wxDECLARE_DYNAMIC_CLASS(wxActivityIndicator);
+    wxDECLARE_NO_COPY_CLASS(wxActivityIndicator);
+};
+
+#endif // _WX_GTK_ACTIVITYINDICATOR_H_
diff --git a/src/wx_backports/wx_gtk_activityindicator.cpp b/src/wx_backports/wx_gtk_activityindicator.cpp
new file mode 100644
index 0000000..c483936
--- /dev/null
+++ b/src/wx_backports/wx_gtk_activityindicator.cpp
@@ -0,0 +1,163 @@
+///////////////////////////////////////////////////////////////////////////////
+// Name:        src/gtk/activityindicator.cpp
+// Purpose:     wxActivityIndicator implementation for wxGTK.
+// Author:      Vadim Zeitlin
+// Created:     2015-03-05
+// Copyright:   (c) 2015 Vadim Zeitlin <vadim at wxwidgets.org>
+// Licence:     wxWindows licence
+///////////////////////////////////////////////////////////////////////////////
+
+// ============================================================================
+// declarations
+// ============================================================================
+
+// ----------------------------------------------------------------------------
+// headers
+// ----------------------------------------------------------------------------
+
+// for compilers that support precompilation, includes "wx.h".
+#include "wx/wxprec.h"
+
+#ifdef __BORLANDC__
+    #pragma hdrstop
+#endif
+
+#if !wxCHECK_VERSION(3,1,0)
+
+#include "activityindicator.h"
+
+#include "wx/math.h"
+
+#include <gtk/gtk.h>
+
+// Macro return the specified expression only if GTK+ run time version is less
+// than 2.20 and compiling it only if it is less than 3.0 (which is why this
+// has to be a macro and not a function).
+#define RETURN_IF_NO_GTK_SPINNER(expr)
+
+// ============================================================================
+// implementation
+// ============================================================================
+
+wxIMPLEMENT_DYNAMIC_CLASS(wxActivityIndicator, wxControl);
+
+bool
+wxActivityIndicator::Create(wxWindow* parent,
+                            wxWindowID winid,
+                            const wxPoint& pos,
+                            const wxSize& size,
+                            long style,
+                            const wxString& name)
+{
+    RETURN_IF_NO_GTK_SPINNER(
+        wxActivityIndicatorGeneric::Create(parent, winid, pos, size, style, name)
+    )
+
+    if ( !PreCreation(parent, pos, size) ||
+             !CreateBase(parent, winid, pos, size, style, name) )
+        return false;
+
+    m_widget = gtk_spinner_new();
+    g_object_ref(m_widget);
+
+    m_parent->DoAddChild(this);
+
+    PostCreation(size);
+
+    return true;
+}
+
+void wxActivityIndicator::Start()
+{
+    RETURN_IF_NO_GTK_SPINNER( wxActivityIndicatorGeneric::Start() )
+
+    wxCHECK_RET( m_widget, wxS("Must be created first") );
+
+    gtk_spinner_start(GTK_SPINNER(m_widget));
+}
+
+void wxActivityIndicator::Stop()
+{
+    RETURN_IF_NO_GTK_SPINNER( wxActivityIndicatorGeneric::Stop() )
+
+    wxCHECK_RET( m_widget, wxS("Must be created first") );
+
+    gtk_spinner_stop(GTK_SPINNER(m_widget));
+}
+
+bool wxActivityIndicator::IsRunning() const
+{
+    RETURN_IF_NO_GTK_SPINNER( wxActivityIndicatorGeneric::IsRunning() )
+
+    if ( !m_widget )
+        return false;
+
+    gboolean b;
+    g_object_get(m_widget, "active", &b, NULL);
+
+    return b != 0;
+}
+
+wxSize wxActivityIndicator::DoGetBestClientSize() const
+{
+    RETURN_IF_NO_GTK_SPINNER( wxActivityIndicatorGeneric::DoGetBestClientSize() )
+
+    if ( !m_widget )
+        return wxDefaultSize;
+
+    gint w, h;
+
+#ifdef __WXGTK3__
+    // gtk_widget_get_preferred_size() seems to return the size based on the
+    // current size of the widget and also always returns 0 if it is hidden,
+    // so ask GtkSpinner for its preferred size directly instead of using it.
+    GtkWidgetClass* const wc = GTK_WIDGET_GET_CLASS(m_widget);
+
+    // We're not interested in the natural size (and it's the same as minimal
+    // one anyhow currently), but we still need a non-NULL pointer for it.
+    gint dummy;
+    wc->get_preferred_width(m_widget, &w, &dummy);
+    wc->get_preferred_height(m_widget, &h, &dummy);
+#else // GTK+ 2
+    // GTK+ 2 doesn't return any valid preferred size for this control, so we
+    // use the size of something roughly equivalent to it.
+    gtk_icon_size_lookup(GTK_ICON_SIZE_MENU, &w, &h);
+#endif // GTK+ 3/2
+
+    // Adjust for the window variant: note that the default size in GTK+ 3 is
+    // really small (12px until ~3.10, 16px since then), so we use this size as
+    // the small size and double it for the normal size.
+    double factor = 0.;
+    switch ( GetWindowVariant() )
+    {
+        case wxWINDOW_VARIANT_MAX:
+            wxFAIL_MSG(wxS("Invalid window variant"));
+            // wxFALLTHROUGH;
+
+        case wxWINDOW_VARIANT_NORMAL:
+            factor = 2.;
+            break;
+
+        case wxWINDOW_VARIANT_SMALL:
+            factor = 1.;
+            break;
+
+        case wxWINDOW_VARIANT_MINI:
+            factor = 0.75;
+            break;
+
+        case wxWINDOW_VARIANT_LARGE:
+            // GTK+ 3.11+ limits GtkSpinner size to twice its minimal size, so
+            // the effective factor here is actually just 2, i.e. the same as
+            // for the normal size, but use something larger just in case GTK+
+            // changes its mind again later.
+            factor = 2.5;
+            break;
+    }
+
+    wxASSERT_MSG( !wxIsSameDouble(factor, 0), wxS("Unknown window variant") );
+
+    return wxSize(wxRound(w*factor), wxRound(h*factor));
+}
+
+#endif // !wxCHECK_VERSION(3,1,0)
-----------------------------------------------------------------------


hooks/post-receive
-- 
poedit



More information about the Debian-l10n-commits mailing list